提交代码
parent
f7213542c0
commit
3604154c1c
|
@ -18,7 +18,7 @@ public class ProPlan extends BaseEntity
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/** $column.columnComment */
|
/** 主键 */
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/** 公司ID */
|
/** 公司ID */
|
||||||
|
@ -120,8 +120,12 @@ public class ProPlan extends BaseEntity
|
||||||
}
|
}
|
||||||
|
|
||||||
private String projectName;
|
private String projectName;
|
||||||
/** $column.columnComment */
|
|
||||||
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
|
/** 进度节点 */
|
||||||
|
private String scheduleNode;
|
||||||
|
|
||||||
|
/** 是否有效 */
|
||||||
|
@Excel(name = "是否有效")
|
||||||
private Long isDel;
|
private Long isDel;
|
||||||
|
|
||||||
public void setId(Long id)
|
public void setId(Long id)
|
||||||
|
@ -304,6 +308,15 @@ public class ProPlan extends BaseEntity
|
||||||
{
|
{
|
||||||
return groupName;
|
return groupName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getScheduleNode() {
|
||||||
|
return scheduleNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setScheduleNode(String scheduleNode) {
|
||||||
|
this.scheduleNode = scheduleNode;
|
||||||
|
}
|
||||||
|
|
||||||
public void setIsDel(Long isDel)
|
public void setIsDel(Long isDel)
|
||||||
{
|
{
|
||||||
this.isDel = isDel;
|
this.isDel = isDel;
|
||||||
|
@ -337,6 +350,7 @@ public class ProPlan extends BaseEntity
|
||||||
.append("operatorId", getOperatorId())
|
.append("operatorId", getOperatorId())
|
||||||
.append("groupId", getGroupId())
|
.append("groupId", getGroupId())
|
||||||
.append("groupName", getGroupName())
|
.append("groupName", getGroupName())
|
||||||
|
.append("scheduleNode", getScheduleNode())
|
||||||
.append("isDel", getIsDel())
|
.append("isDel", getIsDel())
|
||||||
.append("createBy", getCreateBy())
|
.append("createBy", getCreateBy())
|
||||||
.append("createTime", getCreateTime())
|
.append("createTime", getCreateTime())
|
||||||
|
|
|
@ -21,14 +21,24 @@ public class ProPlanSchedule extends BaseEntity
|
||||||
/** 主键 */
|
/** 主键 */
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
/** 主键 */
|
||||||
|
private Long maxId;
|
||||||
|
|
||||||
/** 公司主键 */
|
/** 公司主键 */
|
||||||
@Excel(name = "公司主键")
|
|
||||||
private Long comId;
|
private Long comId;
|
||||||
|
|
||||||
|
/** 公司名称 */
|
||||||
|
@Excel(name = "公司名称")
|
||||||
|
private String comName;
|
||||||
|
|
||||||
/** 项目主键 */
|
/** 项目主键 */
|
||||||
@Excel(name = "项目主键")
|
@Excel(name = "项目主键")
|
||||||
private Long projectId;
|
private Long projectId;
|
||||||
|
|
||||||
|
/** 项目名称 */
|
||||||
|
@Excel(name = "项目名称")
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
/** 计划主键 */
|
/** 计划主键 */
|
||||||
@Excel(name = "计划主键")
|
@Excel(name = "计划主键")
|
||||||
private Long planId;
|
private Long planId;
|
||||||
|
@ -53,6 +63,20 @@ public class ProPlanSchedule extends BaseEntity
|
||||||
@Excel(name = "进度百分比")
|
@Excel(name = "进度百分比")
|
||||||
private Long schedulePercent;
|
private Long schedulePercent;
|
||||||
|
|
||||||
|
/** 任务工期 */
|
||||||
|
@Excel(name = "任务工期")
|
||||||
|
private Double taskDuation;
|
||||||
|
|
||||||
|
/** 计划开始时间 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
private Date planStartDate;
|
||||||
|
|
||||||
|
/** 计划结束时间 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
private Date planFinishDate;
|
||||||
|
|
||||||
/** 完成时间 */
|
/** 完成时间 */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
|
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ -93,6 +117,15 @@ public class ProPlanSchedule extends BaseEntity
|
||||||
{
|
{
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Long getMaxId() {
|
||||||
|
return maxId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMaxId(Long maxId) {
|
||||||
|
this.maxId = maxId;
|
||||||
|
}
|
||||||
|
|
||||||
public void setComId(Long comId)
|
public void setComId(Long comId)
|
||||||
{
|
{
|
||||||
this.comId = comId;
|
this.comId = comId;
|
||||||
|
@ -156,6 +189,31 @@ public class ProPlanSchedule extends BaseEntity
|
||||||
{
|
{
|
||||||
return bimId;
|
return bimId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Double getTaskDuation() {
|
||||||
|
return taskDuation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTaskDuation(Double taskDuation) {
|
||||||
|
this.taskDuation = taskDuation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getPlanStartDate() {
|
||||||
|
return planStartDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPlanStartDate(Date planStartDate) {
|
||||||
|
this.planStartDate = planStartDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getPlanFinishDate() {
|
||||||
|
return planFinishDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPlanFinishDate(Date planFinishDate) {
|
||||||
|
this.planFinishDate = planFinishDate;
|
||||||
|
}
|
||||||
|
|
||||||
public void setSchedulePercent(Long schedulePercent)
|
public void setSchedulePercent(Long schedulePercent)
|
||||||
{
|
{
|
||||||
this.schedulePercent = schedulePercent;
|
this.schedulePercent = schedulePercent;
|
||||||
|
@ -229,6 +287,22 @@ public class ProPlanSchedule extends BaseEntity
|
||||||
return updateDate;
|
return updateDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getComName() {
|
||||||
|
return comName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setComName(String comName) {
|
||||||
|
this.comName = comName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProjectName() {
|
||||||
|
return projectName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProjectName(String projectName) {
|
||||||
|
this.projectName = projectName;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.yanzhu.manage.mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.yanzhu.manage.domain.ProPlan;
|
import com.yanzhu.manage.domain.ProPlan;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计划管理Mapper接口
|
* 计划管理Mapper接口
|
||||||
|
@ -19,6 +20,15 @@ public interface ProPlanMapper
|
||||||
*/
|
*/
|
||||||
public ProPlan selectProPlanById(Long id);
|
public ProPlan selectProPlanById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询计划管理
|
||||||
|
*
|
||||||
|
* @param proId 项目主键
|
||||||
|
* @param taskId 任务主键
|
||||||
|
* @return 计划管理
|
||||||
|
*/
|
||||||
|
public ProPlan selectProPlanByParams(@Param("proId") Long proId, @Param("taskId") Long taskId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询计划管理列表
|
* 查询计划管理列表
|
||||||
*
|
*
|
||||||
|
@ -27,6 +37,32 @@ public interface ProPlanMapper
|
||||||
*/
|
*/
|
||||||
public List<ProPlan> selectProPlanList(ProPlan proPlan);
|
public List<ProPlan> selectProPlanList(ProPlan proPlan);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询计划管理列表
|
||||||
|
*
|
||||||
|
* @param proPlan 计划管理
|
||||||
|
* @return 计划管理集合
|
||||||
|
*/
|
||||||
|
public List<ProPlan> selectProPlanListView(ProPlan proPlan);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询计划管理列表
|
||||||
|
*
|
||||||
|
* @param proId 项目主键
|
||||||
|
* @param taskId 任务主键
|
||||||
|
* @return 计划管理集合
|
||||||
|
*/
|
||||||
|
public List<ProPlan> selectProPlanBrothers(@Param("proId") Long proId, @Param("taskId") Long taskId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询计划子节点
|
||||||
|
*
|
||||||
|
* @param proId 项目主键
|
||||||
|
* @param taskId 任务主键
|
||||||
|
* @return 计划管理集合
|
||||||
|
*/
|
||||||
|
public List<ProPlan> selectProPlanBelows(@Param("proId") Long proId, @Param("taskId") Long taskId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增计划管理
|
* 新增计划管理
|
||||||
*
|
*
|
||||||
|
@ -43,6 +79,22 @@ public interface ProPlanMapper
|
||||||
*/
|
*/
|
||||||
public int updateProPlan(ProPlan proPlan);
|
public int updateProPlan(ProPlan proPlan);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改计划管理
|
||||||
|
*
|
||||||
|
* @param proPlan 计划管理
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateProPlanStartDate(ProPlan proPlan);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改计划管理
|
||||||
|
*
|
||||||
|
* @param proPlan 计划管理
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateProPlanFinishDate(ProPlan proPlan);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除计划管理
|
* 删除计划管理
|
||||||
*
|
*
|
||||||
|
@ -58,4 +110,10 @@ public interface ProPlanMapper
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteProPlanByIds(Long[] ids);
|
public int deleteProPlanByIds(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询唯一计划
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ProPlan findOnlyPlan(ProPlan proPlan);
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,4 +58,11 @@ public interface ProPlanScheduleMapper
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteProPlanScheduleByIds(Long[] ids);
|
public int deleteProPlanScheduleByIds(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询上次任务计划
|
||||||
|
* @param taskId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ProPlanSchedule findPreviousScheduleByTaskId(Long taskId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<result property="operatorId" column="operator_id" />
|
<result property="operatorId" column="operator_id" />
|
||||||
<result property="groupId" column="group_id" />
|
<result property="groupId" column="group_id" />
|
||||||
<result property="groupName" column="group_name" />
|
<result property="groupName" column="group_name" />
|
||||||
|
<result property="scheduleNode" column="schedule_node" />
|
||||||
<result property="isDel" column="is_del" />
|
<result property="isDel" column="is_del" />
|
||||||
<result property="createBy" column="create_by" />
|
<result property="createBy" column="create_by" />
|
||||||
<result property="createTime" column="create_time" />
|
<result property="createTime" column="create_time" />
|
||||||
|
@ -39,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
select pp.id, pp.comid, pp.project_id, pp.task_id, pp.task_unique_id, pp.parent_id, pp.task_type,
|
select pp.id, pp.comid, pp.project_id, pp.task_id, pp.task_unique_id, pp.parent_id, pp.task_type,
|
||||||
pp.task_outline_level, pp.task_name, pp.task_duation, pp.start_date, pp.finish_date,
|
pp.task_outline_level, pp.task_name, pp.task_duation, pp.start_date, pp.finish_date,
|
||||||
pp.predecessors, pp.plan_start_date, pp.plan_finish_date, pp.bim_id, pp.operator, pp.operator_id,
|
pp.predecessors, pp.plan_start_date, pp.plan_finish_date, pp.bim_id, pp.operator, pp.operator_id,
|
||||||
pp.group_id, pp.group_name, pp.is_del, pp.create_by, pp.create_time, pp.update_by, pp.update_time, pp.remark,
|
pp.group_id, pp.group_name, pp.schedule_node, pp.is_del, pp.create_by, pp.create_time, pp.update_by, pp.update_time, pp.remark,
|
||||||
dp.`dept_name` comp_name,pi.`project_name`
|
dp.`dept_name` comp_name,pi.`project_name`
|
||||||
from pro_plan pp
|
from pro_plan pp
|
||||||
LEFT JOIN sys_dept dp ON pp.`comid`=dp.`dept_id`
|
LEFT JOIN sys_dept dp ON pp.`comid`=dp.`dept_id`
|
||||||
|
@ -72,11 +73,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectProPlanListView" parameterType="ProPlan" resultMap="ProPlanResult">
|
||||||
|
<include refid="selectProPlanVo"/>
|
||||||
|
<where>
|
||||||
|
<if test="comid != null "> and pp.comid = #{comid}</if>
|
||||||
|
<if test="projectId != null "> and pp.project_id = #{projectId}</if>
|
||||||
|
<if test="taskId != null "> and pp.task_id = #{taskId}</if>
|
||||||
|
<if test="taskUniqueId != null "> and pp.task_unique_id = #{taskUniqueId}</if>
|
||||||
|
<if test="parentId != null "> and pp.parent_id = #{parentId}</if>
|
||||||
|
<if test="taskType != null and taskType != ''"> and pp.task_type = #{taskType}</if>
|
||||||
|
<if test="taskOutlineLevel != null "> and pp.task_outline_level = #{taskOutlineLevel}</if>
|
||||||
|
<if test="taskName != null and taskName != ''"> and pp.task_name like concat('%', #{taskName}, '%')</if>
|
||||||
|
<if test="taskDuation != null "> and pp.task_duation = #{taskDuation}</if>
|
||||||
|
<if test="startDate != null "> and pp.start_date = #{startDate}</if>
|
||||||
|
<if test="finishDate != null "> and pp.finish_date = #{finishDate}</if>
|
||||||
|
<if test="predecessors != null and predecessors != ''"> and pp.predecessors = #{predecessors}</if>
|
||||||
|
<if test="planStartDate != null "> and pp.plan_start_date = #{planStartDate}</if>
|
||||||
|
<if test="planFinishDate != null "> and pp.plan_finish_date = #{planFinishDate}</if>
|
||||||
|
<if test="bimId != null and bimId != ''"> and pp.bim_id = #{bimId}</if>
|
||||||
|
<if test="operator != null and operator != ''"> and pp.operator = #{operator}</if>
|
||||||
|
<if test="operatorId != null "> and pp.operator_id = #{operatorId}</if>
|
||||||
|
<if test="groupId != null "> and pp.group_id = #{groupId}</if>
|
||||||
|
<if test="groupName != null and groupName != ''"> and pp.group_name like concat('%', #{groupName}, '%')</if>
|
||||||
|
<if test="isDel != null "> and pp.is_del = #{isDel}</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="selectProPlanById" parameterType="Long" resultMap="ProPlanResult">
|
<select id="selectProPlanById" parameterType="Long" resultMap="ProPlanResult">
|
||||||
<include refid="selectProPlanVo"/>
|
<include refid="selectProPlanVo"/>
|
||||||
where pp.id = #{id}
|
where pp.id = #{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectProPlanByParams" resultMap="ProPlanResult">
|
||||||
|
<include refid="selectProPlanVo"/>
|
||||||
|
where pp.project_id = #{proId} and pp.task_id = #{taskId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectProPlanBrothers" resultMap="ProPlanResult">
|
||||||
|
<include refid="selectProPlanVo"/>
|
||||||
|
where pp.project_id = #{proId} and pp.parent_id = #{taskId} and finish_date is null
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectProPlanBelows" resultMap="ProPlanResult">
|
||||||
|
<include refid="selectProPlanVo"/>
|
||||||
|
where pp.project_id = #{proId} and pp.parent_id = #{taskId}
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertProPlan" parameterType="ProPlan" useGeneratedKeys="true" keyProperty="id">
|
<insert id="insertProPlan" parameterType="ProPlan" useGeneratedKeys="true" keyProperty="id">
|
||||||
insert into pro_plan
|
insert into pro_plan
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
@ -99,6 +141,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="operatorId != null">operator_id,</if>
|
<if test="operatorId != null">operator_id,</if>
|
||||||
<if test="groupId != null">group_id,</if>
|
<if test="groupId != null">group_id,</if>
|
||||||
<if test="groupName != null">group_name,</if>
|
<if test="groupName != null">group_name,</if>
|
||||||
|
<if test="scheduleNode != null">schedule_node,</if>
|
||||||
<if test="isDel != null">is_del,</if>
|
<if test="isDel != null">is_del,</if>
|
||||||
<if test="createBy != null">create_by,</if>
|
<if test="createBy != null">create_by,</if>
|
||||||
<if test="createTime != null">create_time,</if>
|
<if test="createTime != null">create_time,</if>
|
||||||
|
@ -126,6 +169,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="operatorId != null">#{operatorId},</if>
|
<if test="operatorId != null">#{operatorId},</if>
|
||||||
<if test="groupId != null">#{groupId},</if>
|
<if test="groupId != null">#{groupId},</if>
|
||||||
<if test="groupName != null">#{groupName},</if>
|
<if test="groupName != null">#{groupName},</if>
|
||||||
|
<if test="scheduleNode != null">#{scheduleNode},</if>
|
||||||
<if test="isDel != null">#{isDel},</if>
|
<if test="isDel != null">#{isDel},</if>
|
||||||
<if test="createBy != null">#{createBy},</if>
|
<if test="createBy != null">#{createBy},</if>
|
||||||
<if test="createTime != null">#{createTime},</if>
|
<if test="createTime != null">#{createTime},</if>
|
||||||
|
@ -157,6 +201,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="operatorId != null">operator_id = #{operatorId},</if>
|
<if test="operatorId != null">operator_id = #{operatorId},</if>
|
||||||
<if test="groupId != null">group_id = #{groupId},</if>
|
<if test="groupId != null">group_id = #{groupId},</if>
|
||||||
<if test="groupName != null">group_name = #{groupName},</if>
|
<if test="groupName != null">group_name = #{groupName},</if>
|
||||||
|
<if test="scheduleNode != null">schedule_node = #{scheduleNode},</if>
|
||||||
<if test="isDel != null">is_del = #{isDel},</if>
|
<if test="isDel != null">is_del = #{isDel},</if>
|
||||||
<if test="createBy != null">create_by = #{createBy},</if>
|
<if test="createBy != null">create_by = #{createBy},</if>
|
||||||
<if test="createTime != null">create_time = #{createTime},</if>
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
|
@ -167,6 +212,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<update id="updateProPlanStartDate" parameterType="ProPlan">
|
||||||
|
update pro_plan set start_date = #{startDate}
|
||||||
|
<if test="scheduleNode != null">,schedule_node = #{scheduleNode}</if>
|
||||||
|
where id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<update id="updateProPlanFinishDate" parameterType="ProPlan">
|
||||||
|
update pro_plan set finish_date = #{finishDate}
|
||||||
|
<if test="scheduleNode != null">,schedule_node = #{scheduleNode}</if>
|
||||||
|
where id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
<delete id="deleteProPlanById" parameterType="Long">
|
<delete id="deleteProPlanById" parameterType="Long">
|
||||||
delete from pro_plan where id = #{id}
|
delete from pro_plan where id = #{id}
|
||||||
</delete>
|
</delete>
|
||||||
|
@ -177,4 +234,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
#{id}
|
#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<select id="findOnlyPlan" parameterType="ProPlan" resultMap="ProPlanResult">
|
||||||
|
select id, comid, project_id, task_id, task_unique_id, parent_id, task_type,
|
||||||
|
task_outline_level,
|
||||||
|
<if test="taskName != null and taskName != ''"> concat(#{taskName}, ' / ', task_name) as task_name,</if>
|
||||||
|
<if test="taskName == null or taskName == ''"> task_name,</if>
|
||||||
|
task_duation, start_date, finish_date,
|
||||||
|
predecessors, plan_start_date, plan_finish_date, bim_id, operator, operator_id,
|
||||||
|
group_id, group_name, schedule_node, is_del from pro_plan
|
||||||
|
<where>
|
||||||
|
<if test="projectId != null "> and project_id = #{projectId}</if>
|
||||||
|
<if test="taskId != null "> and parent_id = #{taskId}</if>
|
||||||
|
and is_del = 0 and task_outline_level <![CDATA[ > ]]> 1 and finish_date is null
|
||||||
|
</where>
|
||||||
|
order by id limit 1
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
|
@ -6,14 +6,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
|
||||||
<resultMap type="ProPlanSchedule" id="ProPlanScheduleResult">
|
<resultMap type="ProPlanSchedule" id="ProPlanScheduleResult">
|
||||||
<result property="id" column="id" />
|
<result property="id" column="id" />
|
||||||
|
<result property="maxId" column="max_id" />
|
||||||
<result property="comId" column="com_id" />
|
<result property="comId" column="com_id" />
|
||||||
|
<result property="comName" column="com_name" />
|
||||||
<result property="projectId" column="project_id" />
|
<result property="projectId" column="project_id" />
|
||||||
|
<result property="projectName" column="project_name" />
|
||||||
<result property="planId" column="plan_id" />
|
<result property="planId" column="plan_id" />
|
||||||
<result property="taskId" column="task_id" />
|
<result property="taskId" column="task_id" />
|
||||||
<result property="taskUniqueId" column="task_unique_id" />
|
<result property="taskUniqueId" column="task_unique_id" />
|
||||||
<result property="taskName" column="task_name" />
|
<result property="taskName" column="task_name" />
|
||||||
<result property="bimId" column="bim_id" />
|
<result property="bimId" column="bim_id" />
|
||||||
<result property="schedulePercent" column="schedule_percent" />
|
<result property="schedulePercent" column="schedule_percent" />
|
||||||
|
<result property="taskDuation" column="task_duation" />
|
||||||
|
<result property="planStartDate" column="plan_start_date" />
|
||||||
|
<result property="planFinishDate" column="plan_finish_date" />
|
||||||
<result property="finishDate" column="finish_date" />
|
<result property="finishDate" column="finish_date" />
|
||||||
<result property="description" column="description" />
|
<result property="description" column="description" />
|
||||||
<result property="images" column="images" />
|
<result property="images" column="images" />
|
||||||
|
@ -26,27 +32,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectProPlanScheduleVo">
|
<sql id="selectProPlanScheduleVo">
|
||||||
select id, com_id, project_id, plan_id, task_id, task_unique_id, task_name, bim_id, schedule_percent, finish_date, description, images, is_del, create_by, create_user_id, create_date, update_by, update_date from pro_plan_schedule
|
select pps.id, (select max(mp.id) from pro_plan_schedule mp where mp.project_id = pps.project_id and mp.is_del=0) as max_id, pps.com_id, sd.dept_name as com_name, pps.project_id, pi.project_name, pps.plan_id, pps.task_id, pps.task_unique_id, pps.task_name, pps.bim_id, pps.schedule_percent, pp.task_duation, pp.plan_start_date, pp.plan_finish_date, pps.finish_date, pps.description, pps.images, pps.is_del, pps.create_by, pps.create_user_id, pps.create_date, pps.update_by, pps.update_date
|
||||||
|
from pro_plan_schedule pps
|
||||||
|
left join pro_project_info pi on pi.id = pps.project_id
|
||||||
|
left join sys_dept sd on sd.dept_id = pps.com_id
|
||||||
|
left join pro_plan pp on pp.id = pps.plan_id
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectProPlanScheduleList" parameterType="ProPlanSchedule" resultMap="ProPlanScheduleResult">
|
<select id="selectProPlanScheduleList" parameterType="ProPlanSchedule" resultMap="ProPlanScheduleResult">
|
||||||
<include refid="selectProPlanScheduleVo"/>
|
<include refid="selectProPlanScheduleVo"/>
|
||||||
<where>
|
<where>
|
||||||
<if test="comId != null "> and com_id = #{comId}</if>
|
<if test="comId != null "> and pps.com_id = #{comId}</if>
|
||||||
<if test="projectId != null "> and project_id = #{projectId}</if>
|
<if test="projectId != null "> and pps.project_id = #{projectId}</if>
|
||||||
<if test="planId != null "> and plan_id = #{planId}</if>
|
<if test="activeComId != null "> and pps.com_id = #{activeComId}</if>
|
||||||
<if test="taskId != null "> and task_id = #{taskId}</if>
|
<if test="activeProjectId != null "> and pps.project_id = #{activeProjectId}</if>
|
||||||
<if test="taskUniqueId != null and taskUniqueId != ''"> and task_unique_id = #{taskUniqueId}</if>
|
<if test="projectName != null and projectName != ''"> and pi.project_name like concat('%', #{projectName}, '%')</if>
|
||||||
<if test="taskName != null and taskName != ''"> and task_name like concat('%', #{taskName}, '%')</if>
|
<if test="planId != null "> and pps.plan_id = #{planId}</if>
|
||||||
<if test="bimId != null and bimId != ''"> and bim_id = #{bimId}</if>
|
<if test="taskId != null "> and pps.task_id = #{taskId}</if>
|
||||||
<if test="isDel != null "> and is_del = #{isDel}</if>
|
<if test="taskUniqueId != null and taskUniqueId != ''"> and pps.task_unique_id = #{taskUniqueId}</if>
|
||||||
<if test="createUserId != null "> and create_user_id = #{createUserId}</if>
|
<if test="taskName != null and taskName != ''"> and pps.task_name like concat('%', #{taskName}, '%')</if>
|
||||||
|
<if test="bimId != null and bimId != ''"> and pps.bim_id = #{bimId}</if>
|
||||||
|
<if test="isDel != null "> and pps.is_del = #{isDel}</if>
|
||||||
|
<if test="createUserId != null "> and pps.create_user_id = #{createUserId}</if>
|
||||||
|
and pps.is_del != 2
|
||||||
</where>
|
</where>
|
||||||
|
order by pps.id desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectProPlanScheduleById" parameterType="Long" resultMap="ProPlanScheduleResult">
|
<select id="selectProPlanScheduleById" parameterType="Long" resultMap="ProPlanScheduleResult">
|
||||||
<include refid="selectProPlanScheduleVo"/>
|
<include refid="selectProPlanScheduleVo"/>
|
||||||
where id = #{id}
|
where pps.id = #{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<insert id="insertProPlanSchedule" parameterType="ProPlanSchedule" useGeneratedKeys="true" keyProperty="id">
|
<insert id="insertProPlanSchedule" parameterType="ProPlanSchedule" useGeneratedKeys="true" keyProperty="id">
|
||||||
|
@ -115,14 +130,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<delete id="deleteProPlanScheduleById" parameterType="Long">
|
<update id="deleteProPlanScheduleById" parameterType="Long">
|
||||||
delete from pro_plan_schedule where id = #{id}
|
update pro_plan_schedule set is_del = 2 where id = #{id}
|
||||||
</delete>
|
</update>
|
||||||
|
|
||||||
<delete id="deleteProPlanScheduleByIds" parameterType="String">
|
<update id="deleteProPlanScheduleByIds" parameterType="String">
|
||||||
delete from pro_plan_schedule where id in
|
update pro_plan_schedule set is_del = 2 where id in
|
||||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||||
#{id}
|
#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</update>
|
||||||
|
|
||||||
|
<select id="findPreviousScheduleByTaskId" parameterType="Long" resultMap="ProPlanScheduleResult">
|
||||||
|
<include refid="selectProPlanScheduleVo"/>
|
||||||
|
where pps.plan_id = #{taskId} and pps.is_del = 0 order by pps.id desc limit 1
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
|
@ -39,11 +39,20 @@ public class ProPlanController extends BaseController
|
||||||
*/
|
*/
|
||||||
@RequiresPermissions("manage:plan:list")
|
@RequiresPermissions("manage:plan:list")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public TableDataInfo list(ProPlan proPlan)
|
public AjaxResult list(ProPlan proPlan)
|
||||||
{
|
{
|
||||||
startPage();
|
|
||||||
List<ProPlan> list = proPlanService.selectProPlanList(proPlan);
|
List<ProPlan> list = proPlanService.selectProPlanList(proPlan);
|
||||||
return getDataTable(list);
|
return success(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询计划管理列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/listView")
|
||||||
|
public AjaxResult listView(ProPlan proPlan)
|
||||||
|
{
|
||||||
|
List<ProPlan> list = proPlanService.selectProPlanListView(proPlan);
|
||||||
|
return success(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -123,8 +132,8 @@ public class ProPlanController extends BaseController
|
||||||
plan.setTaskUniqueId(task.getGuid());
|
plan.setTaskUniqueId(task.getGuid());
|
||||||
plan.setParentId(task.getParentTask().getId()*1l);
|
plan.setParentId(task.getParentTask().getId()*1l);
|
||||||
plan.setTaskDuation(task.getDuration().toDouble());
|
plan.setTaskDuation(task.getDuration().toDouble());
|
||||||
plan.setStartDate(task.getStart());
|
plan.setPlanStartDate(task.getStart());
|
||||||
plan.setFinishDate(task.getFinish());
|
plan.setPlanFinishDate(task.getFinish());
|
||||||
TaskCollection task_predecessors = task.getPredecessors();
|
TaskCollection task_predecessors = task.getPredecessors();
|
||||||
//4. 获取前置任务(任务流)
|
//4. 获取前置任务(任务流)
|
||||||
StringBuilder beforeTaskId = new StringBuilder();
|
StringBuilder beforeTaskId = new StringBuilder();
|
||||||
|
@ -194,4 +203,16 @@ public class ProPlanController extends BaseController
|
||||||
{
|
{
|
||||||
return toAjax(proPlanService.deleteProPlanByIds(ids));
|
return toAjax(proPlanService.deleteProPlanByIds(ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取计划管理详细信息
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "/findOnlyPlan/{proId}")
|
||||||
|
public AjaxResult findOnlyPlan(@PathVariable("proId") Long proId)
|
||||||
|
{
|
||||||
|
ProPlan planQuery = new ProPlan();
|
||||||
|
planQuery.setProjectId(proId);
|
||||||
|
ProPlan proPlan = proPlanService.findOnlyPlan(planQuery);
|
||||||
|
return success(proPlan);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,4 +95,13 @@ public class ProPlanScheduleController extends BaseController
|
||||||
{
|
{
|
||||||
return toAjax(proPlanScheduleService.deleteProPlanScheduleByIds(ids));
|
return toAjax(proPlanScheduleService.deleteProPlanScheduleByIds(ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目进度详细信息
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "/findPreviousSchedule/{taskId}")
|
||||||
|
public AjaxResult findPreviousSchedule(@PathVariable("taskId") Long taskId)
|
||||||
|
{
|
||||||
|
return success(proPlanScheduleService.findPreviousScheduleByTaskId(taskId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,4 +58,11 @@ public interface IProPlanScheduleService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteProPlanScheduleById(Long id);
|
public int deleteProPlanScheduleById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询上次任务计划
|
||||||
|
* @param taskId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ProPlanSchedule findPreviousScheduleByTaskId(Long taskId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ public interface IProPlanService
|
||||||
* @return 计划管理
|
* @return 计划管理
|
||||||
*/
|
*/
|
||||||
public ProPlan selectProPlanById(Long id);
|
public ProPlan selectProPlanById(Long id);
|
||||||
public ProPlan selectProPlanByUniqueId(String UniqueId);
|
public ProPlan selectProPlanByUniqueId(String UniqueId);
|
||||||
/**
|
/**
|
||||||
* 查询计划管理列表
|
* 查询计划管理列表
|
||||||
*
|
*
|
||||||
|
@ -27,6 +27,14 @@ public interface IProPlanService
|
||||||
*/
|
*/
|
||||||
public List<ProPlan> selectProPlanList(ProPlan proPlan);
|
public List<ProPlan> selectProPlanList(ProPlan proPlan);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询计划管理列表
|
||||||
|
*
|
||||||
|
* @param proPlan 计划管理
|
||||||
|
* @return 计划管理集合
|
||||||
|
*/
|
||||||
|
public List<ProPlan> selectProPlanListView(ProPlan proPlan);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增计划管理
|
* 新增计划管理
|
||||||
*
|
*
|
||||||
|
@ -65,4 +73,9 @@ public interface IProPlanService
|
||||||
*/
|
*/
|
||||||
public void addTasks(List<ProPlan> proPlans);
|
public void addTasks(List<ProPlan> proPlans);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询唯一计划
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ProPlan findOnlyPlan(ProPlan proPlan);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,18 @@
|
||||||
package com.yanzhu.manage.service.impl;
|
package com.yanzhu.manage.service.impl;
|
||||||
|
|
||||||
import com.yanzhu.common.core.context.SecurityContextHolder;
|
import com.yanzhu.common.core.context.SecurityContextHolder;
|
||||||
|
import com.yanzhu.common.core.text.Convert;
|
||||||
|
import com.yanzhu.common.core.utils.DateUtils;
|
||||||
|
import com.yanzhu.manage.domain.ProPlan;
|
||||||
import com.yanzhu.manage.domain.ProPlanSchedule;
|
import com.yanzhu.manage.domain.ProPlanSchedule;
|
||||||
|
import com.yanzhu.manage.mapper.ProPlanMapper;
|
||||||
import com.yanzhu.manage.mapper.ProPlanScheduleMapper;
|
import com.yanzhu.manage.mapper.ProPlanScheduleMapper;
|
||||||
import com.yanzhu.manage.service.IProPlanScheduleService;
|
import com.yanzhu.manage.service.IProPlanScheduleService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,6 +24,9 @@ import java.util.List;
|
||||||
@Service
|
@Service
|
||||||
public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
||||||
{
|
{
|
||||||
|
@Autowired
|
||||||
|
private ProPlanMapper proPlanMapper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProPlanScheduleMapper proPlanScheduleMapper;
|
private ProPlanScheduleMapper proPlanScheduleMapper;
|
||||||
|
|
||||||
|
@ -52,10 +61,31 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public int insertProPlanSchedule(ProPlanSchedule proPlanSchedule)
|
public int insertProPlanSchedule(ProPlanSchedule proPlanSchedule)
|
||||||
{
|
{
|
||||||
proPlanSchedule.setCreateBy(SecurityContextHolder.getUserName());
|
proPlanSchedule.setCreateBy(SecurityContextHolder.getUserName());
|
||||||
return proPlanScheduleMapper.insertProPlanSchedule(proPlanSchedule);
|
proPlanSchedule.setCreateDate(DateUtils.getNowDate());
|
||||||
|
int res = proPlanScheduleMapper.insertProPlanSchedule(proPlanSchedule);
|
||||||
|
if(res>0){
|
||||||
|
ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId());
|
||||||
|
plan.setScheduleNode(proPlanSchedule.getSchedulePercent().toString());
|
||||||
|
if(proPlanSchedule.getSchedulePercent()>=100){
|
||||||
|
if(plan.getStartDate()==null){
|
||||||
|
plan.setStartDate(DateUtils.getNowDate());
|
||||||
|
}
|
||||||
|
plan.setFinishDate(proPlanSchedule.getFinishDate());
|
||||||
|
RecursionEditFinishDate(plan);
|
||||||
|
}else{
|
||||||
|
if(plan.getStartDate()==null){
|
||||||
|
plan.setStartDate(DateUtils.getNowDate());
|
||||||
|
RecursionEditStartDate(plan);
|
||||||
|
}else{
|
||||||
|
RecursionEditFinishDate(plan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -65,10 +95,28 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public int updateProPlanSchedule(ProPlanSchedule proPlanSchedule)
|
public int updateProPlanSchedule(ProPlanSchedule proPlanSchedule)
|
||||||
{
|
{
|
||||||
proPlanSchedule.setUpdateBy(SecurityContextHolder.getUserName());
|
proPlanSchedule.setUpdateBy(SecurityContextHolder.getUserName());
|
||||||
return proPlanScheduleMapper.updateProPlanSchedule(proPlanSchedule);
|
int res = proPlanScheduleMapper.updateProPlanSchedule(proPlanSchedule);
|
||||||
|
if(res>0){
|
||||||
|
ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId());
|
||||||
|
plan.setScheduleNode(proPlanSchedule.getSchedulePercent().toString());
|
||||||
|
if(proPlanSchedule.getSchedulePercent()>=100){
|
||||||
|
plan.setFinishDate(proPlanSchedule.getFinishDate());
|
||||||
|
plan.setScheduleNode("100");
|
||||||
|
RecursionEditFinishDate(plan);
|
||||||
|
}else{
|
||||||
|
if(plan.getFinishDate()!=null){
|
||||||
|
plan.setFinishDate(null);
|
||||||
|
RecursionEditFinishDate(plan);
|
||||||
|
}else{
|
||||||
|
RecursionEditFinishDate(plan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,7 +128,22 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
||||||
@Override
|
@Override
|
||||||
public int deleteProPlanScheduleByIds(Long[] ids)
|
public int deleteProPlanScheduleByIds(Long[] ids)
|
||||||
{
|
{
|
||||||
return proPlanScheduleMapper.deleteProPlanScheduleByIds(ids);
|
int res = proPlanScheduleMapper.deleteProPlanScheduleByIds(ids);
|
||||||
|
if(res>0){
|
||||||
|
for(Long id:ids){
|
||||||
|
ProPlanSchedule proPlanSchedule = proPlanScheduleMapper.selectProPlanScheduleById(id);
|
||||||
|
ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId());
|
||||||
|
ProPlanSchedule Previous = proPlanScheduleMapper.findPreviousScheduleByTaskId(plan.getId());
|
||||||
|
if(Previous!=null){
|
||||||
|
plan.setScheduleNode(Previous.getSchedulePercent().toString());
|
||||||
|
}else{
|
||||||
|
plan.setScheduleNode("0");
|
||||||
|
}
|
||||||
|
plan.setFinishDate(null);
|
||||||
|
RecursionEditFinishDate(plan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -92,6 +155,211 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
||||||
@Override
|
@Override
|
||||||
public int deleteProPlanScheduleById(Long id)
|
public int deleteProPlanScheduleById(Long id)
|
||||||
{
|
{
|
||||||
return proPlanScheduleMapper.deleteProPlanScheduleById(id);
|
int res = proPlanScheduleMapper.deleteProPlanScheduleById(id);
|
||||||
|
if(res>0){
|
||||||
|
ProPlanSchedule proPlanSchedule = proPlanScheduleMapper.selectProPlanScheduleById(id);
|
||||||
|
ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId());
|
||||||
|
ProPlanSchedule Previous = proPlanScheduleMapper.findPreviousScheduleByTaskId(plan.getId());
|
||||||
|
if(Previous!=null){
|
||||||
|
plan.setScheduleNode(Previous.getSchedulePercent().toString());
|
||||||
|
}else{
|
||||||
|
plan.setScheduleNode("0");
|
||||||
|
}
|
||||||
|
plan.setFinishDate(null);
|
||||||
|
RecursionEditFinishDate(plan);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归设置项目计划
|
||||||
|
* @param plan
|
||||||
|
*/
|
||||||
|
private void RecursionEditStartDate(ProPlan plan){
|
||||||
|
if(plan.getStartDate()!=null){
|
||||||
|
int res = proPlanMapper.updateProPlan(plan);
|
||||||
|
if(res>0 && plan.getTaskOutlineLevel()>1){
|
||||||
|
ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId());
|
||||||
|
if(entity!=null){
|
||||||
|
List<ProPlan> belows = proPlanMapper.selectProPlanBelows(entity.getProjectId(),entity.getTaskId());
|
||||||
|
int Finished = 0;
|
||||||
|
try {
|
||||||
|
if(belows.size()>0){
|
||||||
|
for(ProPlan item:belows){
|
||||||
|
Float sNode = Convert.toFloat(item.getScheduleNode(),0.0F);
|
||||||
|
if(sNode>0){
|
||||||
|
if(sNode==100){
|
||||||
|
Finished += Convert.toFloat(item.getTaskDuation(),0.0F);
|
||||||
|
}else{
|
||||||
|
Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if(Finished==0){
|
||||||
|
entity.setScheduleNode("0");
|
||||||
|
}else{
|
||||||
|
Double _cn = Convert.toDouble(Finished/entity.getTaskDuation())*100;
|
||||||
|
if(_cn>100){
|
||||||
|
entity.setScheduleNode("100");
|
||||||
|
}else{
|
||||||
|
entity.setScheduleNode(String.format("%.2f", _cn));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("RecursionEditStartDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
||||||
|
entity.setStartDate(plan.getStartDate());
|
||||||
|
RecursionEditStartDate(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
int res = proPlanMapper.updateProPlanStartDate(plan);
|
||||||
|
if(res>0 && plan.getTaskOutlineLevel()>1){
|
||||||
|
ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId());
|
||||||
|
if(entity!=null){
|
||||||
|
List<ProPlan> belows = proPlanMapper.selectProPlanBelows(entity.getProjectId(),entity.getTaskId());
|
||||||
|
Float Finished = 0.0F;
|
||||||
|
try {
|
||||||
|
if(belows.size()>0){
|
||||||
|
for(ProPlan item:belows){
|
||||||
|
Float sNode = Convert.toFloat(item.getScheduleNode(),0.0F);
|
||||||
|
if(sNode>0){
|
||||||
|
if(sNode==100){
|
||||||
|
Finished += Convert.toFloat(item.getTaskDuation(),0.0F);
|
||||||
|
}else{
|
||||||
|
Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if(Finished==0){
|
||||||
|
entity.setScheduleNode("0");
|
||||||
|
}else{
|
||||||
|
Double _cn = Convert.toDouble(Finished/entity.getTaskDuation())*100;
|
||||||
|
if(_cn>100){
|
||||||
|
entity.setScheduleNode("100");
|
||||||
|
}else{
|
||||||
|
entity.setScheduleNode(String.format("%.2f", _cn));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("RecursionEditStartDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
||||||
|
entity.setStartDate(plan.getStartDate());
|
||||||
|
RecursionEditStartDate(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归设置项目计划
|
||||||
|
* @param plan
|
||||||
|
*/
|
||||||
|
private void RecursionEditFinishDate(ProPlan plan){
|
||||||
|
if(plan.getFinishDate()!=null){
|
||||||
|
int res = proPlanMapper.updateProPlan(plan);
|
||||||
|
if(res>0 && plan.getTaskOutlineLevel()>1){
|
||||||
|
// 判断当前结构其它部位是否已全部完成
|
||||||
|
List<ProPlan> brothers = proPlanMapper.selectProPlanBrothers(plan.getProjectId(),plan.getParentId());
|
||||||
|
if(brothers.size()==0){
|
||||||
|
ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId());
|
||||||
|
if(entity!=null){
|
||||||
|
if(entity.getStartDate()==null){
|
||||||
|
entity.setStartDate(DateUtils.getNowDate());
|
||||||
|
}
|
||||||
|
List<ProPlan> belows = proPlanMapper.selectProPlanBelows(entity.getProjectId(),entity.getTaskId());
|
||||||
|
Float Finished = 0.0F;
|
||||||
|
try {
|
||||||
|
if(belows.size()>0){
|
||||||
|
for(ProPlan item:belows){
|
||||||
|
Float sNode = Convert.toFloat(item.getScheduleNode(),0.0F);
|
||||||
|
if(sNode>0){
|
||||||
|
System.out.println("RecursionEditFinishDate.sNodesNode==>"+sNode);
|
||||||
|
if(sNode==100){
|
||||||
|
Finished += Convert.toFloat(item.getTaskDuation(),0.0F);
|
||||||
|
System.out.println("RecursionEditFinishDate.FinishedFinished1==>"+Finished);
|
||||||
|
}else{
|
||||||
|
Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100));
|
||||||
|
System.out.println("RecursionEditFinishDate.FinishedFinished2==>"+Finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if(Finished==0){
|
||||||
|
entity.setScheduleNode("0");
|
||||||
|
}else{
|
||||||
|
Double _cn = Convert.toDouble(Finished/entity.getTaskDuation())*100;
|
||||||
|
if(_cn>100){
|
||||||
|
entity.setScheduleNode("100");
|
||||||
|
}else{
|
||||||
|
entity.setScheduleNode(String.format("%.2f", _cn));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
||||||
|
entity.setFinishDate(plan.getFinishDate());
|
||||||
|
RecursionEditFinishDate(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
int res = proPlanMapper.updateProPlanFinishDate(plan);
|
||||||
|
if(res>0 && plan.getTaskOutlineLevel()>1){
|
||||||
|
ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId());
|
||||||
|
if(entity!=null){
|
||||||
|
List<ProPlan> belows = proPlanMapper.selectProPlanBelows(entity.getProjectId(),entity.getTaskId());
|
||||||
|
Float Finished = 0.0F;
|
||||||
|
try {
|
||||||
|
if(belows.size()>0){
|
||||||
|
for(ProPlan item:belows){
|
||||||
|
Float sNode = Convert.toFloat(item.getScheduleNode(),0.0F);
|
||||||
|
if(sNode>0){
|
||||||
|
System.out.println("RecursionEditFinishDate.sNodesNode==>"+sNode);
|
||||||
|
if(sNode==100){
|
||||||
|
Finished += Convert.toFloat(item.getTaskDuation(),0.0F);
|
||||||
|
System.out.println("RecursionEditFinishDate.FinishedFinished1==>"+Finished);
|
||||||
|
}else{
|
||||||
|
Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100));
|
||||||
|
System.out.println("RecursionEditFinishDate.FinishedFinished1==>"+Finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if(Finished==0){
|
||||||
|
entity.setScheduleNode("0");
|
||||||
|
}else{
|
||||||
|
Double _cn = Convert.toDouble(Finished/entity.getTaskDuation())*100;
|
||||||
|
if(_cn>100){
|
||||||
|
entity.setScheduleNode("100");
|
||||||
|
}else{
|
||||||
|
entity.setScheduleNode(String.format("%.2f", _cn));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
||||||
|
entity.setFinishDate(plan.getFinishDate());
|
||||||
|
RecursionEditFinishDate(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询上次任务计划
|
||||||
|
* @param taskId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ProPlanSchedule findPreviousScheduleByTaskId(Long taskId){
|
||||||
|
return proPlanScheduleMapper.findPreviousScheduleByTaskId(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,16 @@ public class ProPlanServiceImpl implements IProPlanService
|
||||||
return proPlanMapper.selectProPlanList(proPlan);
|
return proPlanMapper.selectProPlanList(proPlan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询计划管理列表
|
||||||
|
*
|
||||||
|
* @param proPlan 计划管理
|
||||||
|
* @return 计划管理集合
|
||||||
|
*/
|
||||||
|
public List<ProPlan> selectProPlanListView(ProPlan proPlan){
|
||||||
|
return proPlanMapper.selectProPlanListView(proPlan);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增计划管理
|
* 新增计划管理
|
||||||
*
|
*
|
||||||
|
@ -133,10 +143,8 @@ public class ProPlanServiceImpl implements IProPlanService
|
||||||
old.setTaskOutlineLevel(proPlan.getTaskOutlineLevel());
|
old.setTaskOutlineLevel(proPlan.getTaskOutlineLevel());
|
||||||
old.setTaskDuation(proPlan.getTaskDuation());
|
old.setTaskDuation(proPlan.getTaskDuation());
|
||||||
old.setPredecessors(proPlan.getPredecessors());
|
old.setPredecessors(proPlan.getPredecessors());
|
||||||
old.setStartDate(proPlan.getStartDate());
|
old.setPlanStartDate(proPlan.getStartDate());
|
||||||
old.setFinishDate(proPlan.getFinishDate());
|
old.setPlanFinishDate(proPlan.getFinishDate());
|
||||||
old.setPlanStartDate(proPlan.getPlanStartDate());
|
|
||||||
old.setPlanFinishDate(proPlan.getPlanFinishDate());
|
|
||||||
updateProPlan(old);
|
updateProPlan(old);
|
||||||
}else{
|
}else{
|
||||||
//没有原数据进行插入
|
//没有原数据进行插入
|
||||||
|
@ -159,4 +167,18 @@ public class ProPlanServiceImpl implements IProPlanService
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询唯一计划
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ProPlan findOnlyPlan(ProPlan proPlan){
|
||||||
|
ProPlan plan = proPlanMapper.findOnlyPlan(proPlan);
|
||||||
|
if(plan!=null){
|
||||||
|
return findOnlyPlan(plan);
|
||||||
|
}else{
|
||||||
|
return proPlan;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,3 +42,11 @@ export function delPlan(id) {
|
||||||
method: 'delete'
|
method: 'delete'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询项目进度
|
||||||
|
export function findOnlyPlan(proId) {
|
||||||
|
return request({
|
||||||
|
url: '/manage/plan/findOnlyPlan/' + proId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 查询项目进度列表
|
||||||
|
export function listSchedule(query) {
|
||||||
|
return request({
|
||||||
|
url: '/manage/schedule/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询项目进度详细
|
||||||
|
export function getSchedule(id) {
|
||||||
|
return request({
|
||||||
|
url: '/manage/schedule/' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增项目进度
|
||||||
|
export function addSchedule(data) {
|
||||||
|
return request({
|
||||||
|
url: '/manage/schedule',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改项目进度
|
||||||
|
export function updateSchedule(data) {
|
||||||
|
return request({
|
||||||
|
url: '/manage/schedule',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目进度
|
||||||
|
export function delSchedule(id) {
|
||||||
|
return request({
|
||||||
|
url: '/manage/schedule/' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询之前项目进度
|
||||||
|
export function findPreviousSchedule(taskId) {
|
||||||
|
return request({
|
||||||
|
url: '/manage/schedule/findPreviousSchedule/' + taskId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
|
@ -46,6 +46,26 @@ export function parseTime(time, pattern) {
|
||||||
return time_str
|
return time_str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 时间比较
|
||||||
|
export function compareDate(planFinishDate,finishDate) {
|
||||||
|
let _planFinishDate = new Date(planFinishDate).getTime();
|
||||||
|
let _finishDate = new Date(finishDate).getTime();
|
||||||
|
if(planFinishDate && !finishDate){
|
||||||
|
let date = new Date().getTime();
|
||||||
|
if(_planFinishDate>date){
|
||||||
|
return -2;
|
||||||
|
}else{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(_planFinishDate>_finishDate){
|
||||||
|
return 1;
|
||||||
|
}else{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 表单重置
|
// 表单重置
|
||||||
export function resetForm(refName) {
|
export function resetForm(refName) {
|
||||||
if (this.$refs[refName]) {
|
if (this.$refs[refName]) {
|
||||||
|
|
|
@ -3,14 +3,14 @@
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
|
|
||||||
<el-form-item label="项目" prop="projectId">
|
<el-form-item label="项目" prop="projectId">
|
||||||
<el-select :disabled="data.currentPrjId != ''" style="width:150px;" v-model="queryParams.projectId" placeholder="请选择项目" clearable
|
<el-select :disabled="data.currentPrjId != ''" style="width:192px;" v-model="queryParams.projectId" placeholder="请选择项目" clearable
|
||||||
@change="()=>{handleQuery();projectChange();}">
|
@change="()=>{handleQuery();projectChange();}">
|
||||||
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所属单位" prop="subDeptId">
|
<el-form-item label="所属单位" prop="subDeptId">
|
||||||
<el-select v-model="queryParams.subDeptId" style="width:150px;" placeholder="请选择所属单位" clearable @change="()=>{handleQuery();subDeptChange();}">
|
<el-select v-model="queryParams.subDeptId" style="width:192px;" placeholder="请选择所属单位" clearable @change="()=>{handleQuery();subDeptChange();}">
|
||||||
<el-option v-for="(it, idx) in data.subdepts" :key="it.id" :label="it.subDeptName" :value="it.id" />
|
<el-option v-for="(it, idx) in data.subdepts" :key="it.id" :label="it.subDeptName" :value="it.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
|
@ -2,20 +2,20 @@
|
||||||
<div class="app-container attendance-ubi-data-statistics">
|
<div class="app-container attendance-ubi-data-statistics">
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="90px">
|
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="90px">
|
||||||
<el-form-item label="项目" prop="projectId">
|
<el-form-item label="项目" prop="projectId">
|
||||||
<el-select :disabled="data.currentPrjId != ''" style="width:150px;" v-model="queryParams.projectId"
|
<el-select :disabled="data.currentPrjId != ''" style="width:192px;" v-model="queryParams.projectId"
|
||||||
placeholder="请选择项目" clearable @change="() => { handleQuery(); projectChange(); }">
|
placeholder="请选择项目" clearable @change="() => { handleQuery(); projectChange(); }">
|
||||||
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所属单位" prop="subDeptId">
|
<el-form-item label="所属单位" prop="subDeptId">
|
||||||
<el-select v-model="queryParams.subDeptId" style="width:150px;" placeholder="请选择所属单位" clearable
|
<el-select v-model="queryParams.subDeptId" style="width:192px;" placeholder="请选择所属单位" clearable
|
||||||
@change="() => { handleQuery(); }">
|
@change="() => { handleQuery(); }">
|
||||||
<el-option v-for="(it, idx) in data.subdepts" :key="it.id" :label="it.subDeptName" :value="it.id" />
|
<el-option v-for="(it, idx) in data.subdepts" :key="it.id" :label="it.subDeptName" :value="it.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="显示方式" prop="showType">
|
<el-form-item label="显示方式" prop="showType">
|
||||||
<el-select v-model="queryParams.showType" style="width:150px;" placeholder="请选择显示方式">
|
<el-select v-model="queryParams.showType" style="width:192px;" placeholder="请选择显示方式">
|
||||||
<el-option label="按考勤时间显示" value="0" />
|
<el-option label="按考勤时间显示" value="0" />
|
||||||
<el-option label="按是否考勤显示" value="1" />
|
<el-option label="按是否考勤显示" value="1" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="公司" prop="comId" v-if="1 == 2">
|
<el-form-item label="所属公司" prop="comId" v-if="1 == 2">
|
||||||
<el-input v-model="queryParams.comId" placeholder="请输入公司主键" clearable @keyup.enter="handleQuery"/>
|
<el-input v-model="queryParams.comId" placeholder="请输入所属公司" clearable @keyup.enter="handleQuery"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目" prop="projectId">
|
<el-form-item label="所属项目" prop="projectId">
|
||||||
<el-select :disabled="data.currentPrjId != ''" v-model="queryParams.projectId" placeholder="请选择项目" clearable style="width:150px;"
|
<el-select :disabled="data.currentPrjId != ''" v-model="queryParams.projectId" placeholder="请选择所属项目" clearable style="width:192px;"
|
||||||
@change="handleQuery">
|
@change="handleQuery">
|
||||||
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="考勤厂商" prop="vendorsCode">
|
<el-form-item label="考勤厂商" prop="vendorsCode">
|
||||||
<el-select v-model="queryParams.vendorsCode" placeholder="请选择厂商" clearable @change="handleQuery" style="width:150px;">
|
<el-select v-model="queryParams.vendorsCode" placeholder="请选择厂商" clearable @change="handleQuery" style="width:192px;">
|
||||||
<el-option v-for="dict in attendance_vendors" :key="dict.value" :label="dict.label" :value="dict.value">
|
<el-option v-for="dict in attendance_vendors" :key="dict.value" :label="dict.label" :value="dict.value">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="启停状态" prop="enabled">
|
<el-form-item label="启停状态" prop="enabled">
|
||||||
<el-select v-model="queryParams.enabled" clearable style="width:100px;">
|
<el-select v-model="queryParams.enabled" clearable style="width:192px;">
|
||||||
<el-option label="启用" :value="1"></el-option>
|
<el-option label="启用" :value="1"></el-option>
|
||||||
<el-option label="停用" :value="0"></el-option>
|
<el-option label="停用" :value="0"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
|
@ -546,7 +546,7 @@ getList();
|
||||||
.bus-training-video-index{
|
.bus-training-video-index{
|
||||||
.fitem-craft-type{
|
.fitem-craft-type{
|
||||||
.el-select{
|
.el-select{
|
||||||
width:150px;
|
width:192px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,14 +3,14 @@
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="100px">
|
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="100px">
|
||||||
|
|
||||||
<el-form-item label="项目" prop="projectId">
|
<el-form-item label="项目" prop="projectId">
|
||||||
<el-select :disabled="data.currentPrjId != ''" v-model="queryParams.projectId" placeholder="请选择项目" clearable style="width:150px;"
|
<el-select :disabled="data.currentPrjId != ''" v-model="queryParams.projectId" placeholder="请选择项目" clearable style="width:192px;"
|
||||||
@change="handleQuery">
|
@change="handleQuery">
|
||||||
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="碳因子类型" prop="carbonFactorType">
|
<el-form-item label="碳因子类型" prop="carbonFactorType">
|
||||||
<el-select v-model="queryParams.carbonFactorType" style="width: 120px;" clearable>
|
<el-select v-model="queryParams.carbonFactorType" style="width: 192px;" clearable>
|
||||||
<el-option v-for="(it,idx) in data.types" :key="idx" :label="it.text" :value="it.value"></el-option>
|
<el-option v-for="(it,idx) in data.types" :key="idx" :label="it.text" :value="it.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="项目" prop="projectId">
|
<el-form-item label="项目" prop="projectId">
|
||||||
<el-select :disabled="data.projectId" v-model="queryParams.projectId" placeholder="请选择项目" style="width: 120px;" clearable
|
<el-select :disabled="data.projectId" v-model="queryParams.projectId" placeholder="请选择项目" style="width: 192px;" clearable
|
||||||
@change="handleQuery">
|
@change="handleQuery">
|
||||||
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
|
@ -152,7 +152,7 @@ function getList() {
|
||||||
}
|
}
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
listPlan(queryParams.value).then(response => {
|
listPlan(queryParams.value).then(response => {
|
||||||
let tmps= response.rows||[];
|
let tmps= response.data||[];
|
||||||
let objs= buildTree(tmps,0)
|
let objs= buildTree(tmps,0)
|
||||||
planList.value =objs;
|
planList.value =objs;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
|
|
|
@ -1033,7 +1033,7 @@ getList()
|
||||||
|
|
||||||
.fi-certificate {
|
.fi-certificate {
|
||||||
.el-select {
|
.el-select {
|
||||||
width: 120px;
|
width: 192px;
|
||||||
|
|
||||||
.el-input {
|
.el-input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
|
@ -0,0 +1,461 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form
|
||||||
|
:model="queryParams"
|
||||||
|
ref="queryRef"
|
||||||
|
:inline="true"
|
||||||
|
v-show="showSearch"
|
||||||
|
label-width="68px"
|
||||||
|
>
|
||||||
|
<el-form-item label="项目名称" prop="projectName" v-if="!userStore.currentPrjId">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.projectName"
|
||||||
|
placeholder="请输入项目名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划名称" prop="taskName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.taskName"
|
||||||
|
placeholder="请输入计划名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
plain
|
||||||
|
icon="Plus"
|
||||||
|
@click="handleAdd"
|
||||||
|
v-hasPermi="['manage:schedule:add']"
|
||||||
|
>新增</el-button
|
||||||
|
>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
plain
|
||||||
|
icon="Download"
|
||||||
|
@click="handleExport"
|
||||||
|
v-hasPermi="['manage:schedule:export']"
|
||||||
|
>导出</el-button
|
||||||
|
>
|
||||||
|
</el-col>
|
||||||
|
<right-toolbar
|
||||||
|
v-model:showSearch="showSearch"
|
||||||
|
@queryTable="getList"
|
||||||
|
></right-toolbar>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-table v-loading="loading" :data="scheduleList">
|
||||||
|
<el-table-column label="序号" type="index" width="66" align="center" />
|
||||||
|
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||||
|
<el-table-column label="工程计划名称" align="center" prop="taskName" />
|
||||||
|
<el-table-column label="工期" align="center" prop="taskDuation" width="88">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-tag effect="plain">{{ scope.row.taskDuation + " 天" }}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="计划开始时间"
|
||||||
|
align="center"
|
||||||
|
prop="planStartDate"
|
||||||
|
width="120"
|
||||||
|
>
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ parseTime(scope.row.planStartDate, "{y}-{m}-{d}") }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="计划结束时间"
|
||||||
|
align="center"
|
||||||
|
prop="planFinishDate"
|
||||||
|
width="120"
|
||||||
|
>
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ parseTime(scope.row.planFinishDate, "{y}-{m}-{d}") }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="填报时间" align="center" prop="createDate" width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ parseTime(scope.row.createDate, "{y}-{m}-{d}") }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="完成进度" align="center" prop="schedulePercent" width="88">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-tag v-if="scope.row.schedulePercent != 100" effect="dark" type="info">{{
|
||||||
|
scope.row.schedulePercent + " %"
|
||||||
|
}}</el-tag>
|
||||||
|
<el-tag v-else effect="dark" type="success">{{
|
||||||
|
scope.row.schedulePercent + " %"
|
||||||
|
}}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="实际完成时间" align="center" prop="finishDate" width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ parseTime(scope.row.finishDate, "{y}-{m}-{d}") }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="施工作业图" align="center" prop="images" width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
<div v-if="scope.row.images != null">
|
||||||
|
<image-preview
|
||||||
|
v-if="scope.row.images.split(',').length == 1"
|
||||||
|
:src="scope.row.images"
|
||||||
|
:width="50"
|
||||||
|
:height="50"
|
||||||
|
/>
|
||||||
|
<el-badge
|
||||||
|
v-if="scope.row.images.split(',').length > 1"
|
||||||
|
:value="scope.row.images.split(',').length"
|
||||||
|
type="primary"
|
||||||
|
class="item"
|
||||||
|
>
|
||||||
|
<image-preview :src="scope.row.images" :width="50" :height="50" />
|
||||||
|
</el-badge>
|
||||||
|
</div>
|
||||||
|
<div v-else style="color: var(--el-color-info-light-3)">暂无图片</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="操作"
|
||||||
|
align="center"
|
||||||
|
width="200"
|
||||||
|
fixed="right"
|
||||||
|
class-name="small-padding fixed-width"
|
||||||
|
>
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
v-if="scope.row.id == scope.row.maxId"
|
||||||
|
link
|
||||||
|
type="primary"
|
||||||
|
icon="Edit"
|
||||||
|
@click="handleUpdate(scope.row)"
|
||||||
|
v-hasPermi="['manage:schedule:edit']"
|
||||||
|
>修改</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
v-if="scope.row.id == scope.row.maxId"
|
||||||
|
link
|
||||||
|
type="primary"
|
||||||
|
icon="Delete"
|
||||||
|
@click="handleDelete(scope.row)"
|
||||||
|
v-hasPermi="['manage:schedule:remove']"
|
||||||
|
>删除</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
v-model:limit="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 添加或修改项目进度对话框 -->
|
||||||
|
<el-dialog :title="title" v-model="open" width="798px" append-to-body>
|
||||||
|
<el-form ref="scheduleRef" :model="form" :rules="rules" label-width="108px">
|
||||||
|
<el-form-item label="项目名称" v-if="form.projectId">
|
||||||
|
<el-tag effect="plain">{{ form.projectName }}</el-tag>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工程计划名称" prop="taskName">
|
||||||
|
<el-input v-model="form.taskName" placeholder="请输入工程计划名称" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="当前完成进度" prop="schedulePercent">
|
||||||
|
<el-input-number
|
||||||
|
v-model="form.schedulePercent"
|
||||||
|
placeholder="请输入当前完成进度"
|
||||||
|
:min="
|
||||||
|
previousSchedule.schedulePercent ? previousSchedule.schedulePercent : 1
|
||||||
|
"
|
||||||
|
:max="100"
|
||||||
|
:step="1"
|
||||||
|
:precision="0"
|
||||||
|
controls-position="right"
|
||||||
|
style="width: 220px"
|
||||||
|
>
|
||||||
|
<template #suffix>
|
||||||
|
<span>%</span>
|
||||||
|
</template>
|
||||||
|
</el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-alert
|
||||||
|
v-if="previousSchedule.schedulePercent"
|
||||||
|
:title="'上次完成进度 ' + previousSchedule.schedulePercent + '%'"
|
||||||
|
type="warning"
|
||||||
|
show-icon
|
||||||
|
:closable="false"
|
||||||
|
/>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item
|
||||||
|
label="完成时间"
|
||||||
|
prop="finishDate"
|
||||||
|
v-if="form.schedulePercent == 100"
|
||||||
|
>
|
||||||
|
<el-date-picker
|
||||||
|
clearable
|
||||||
|
v-model="form.finishDate"
|
||||||
|
type="date"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
placeholder="请选择完成时间"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="施工进度描述" prop="description">
|
||||||
|
<el-input
|
||||||
|
v-model="form.description"
|
||||||
|
type="textarea"
|
||||||
|
placeholder="请输入施工进度描述"
|
||||||
|
:autosize="{ minRows: 3, maxRows: 6 }"
|
||||||
|
maxlength="999"
|
||||||
|
show-word-limit
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="施工作业图" prop="images">
|
||||||
|
<image-upload v-model="form.images" :limit="5" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup name="Schedule">
|
||||||
|
import { findOnlyPlan } from "@/api/manage/plan";
|
||||||
|
import {
|
||||||
|
listSchedule,
|
||||||
|
getSchedule,
|
||||||
|
delSchedule,
|
||||||
|
addSchedule,
|
||||||
|
updateSchedule,
|
||||||
|
findPreviousSchedule,
|
||||||
|
} from "@/api/manage/schedule";
|
||||||
|
import useUserStore from "@/store/modules/user";
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
|
const userStore = useUserStore();
|
||||||
|
const scheduleList = ref([]);
|
||||||
|
const open = ref(false);
|
||||||
|
const loading = ref(true);
|
||||||
|
const showSearch = ref(true);
|
||||||
|
const ids = ref([]);
|
||||||
|
const single = ref(true);
|
||||||
|
const multiple = ref(true);
|
||||||
|
const total = ref(0);
|
||||||
|
const title = ref("");
|
||||||
|
const planNode = ref({});
|
||||||
|
const previousSchedule = ref({});
|
||||||
|
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
comId: null,
|
||||||
|
projectId: null,
|
||||||
|
planId: null,
|
||||||
|
taskId: null,
|
||||||
|
taskUniqueId: null,
|
||||||
|
taskName: null,
|
||||||
|
bimId: null,
|
||||||
|
isDel: null,
|
||||||
|
createUserId: null,
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
projectId: [{ required: true, message: "项目名称不能为空", trigger: "blur" }],
|
||||||
|
taskName: [{ required: true, message: "工程计划不能为空", trigger: "blur" }],
|
||||||
|
schedulePercent: [{ required: true, message: "当前完成进度不能为空", trigger: "blur" }],
|
||||||
|
finishDate: [{ required: true, message: "完成时间不能为空", trigger: "change" }],
|
||||||
|
description: [{ required: true, message: "施工进度描述不能为空", trigger: "blur" }],
|
||||||
|
images1: [{ required: true, message: "施工作业图不能为空", trigger: "change" }],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const { queryParams, form, rules } = toRefs(data);
|
||||||
|
|
||||||
|
/** 查询项目进度列表 */
|
||||||
|
function getList() {
|
||||||
|
loading.value = true;
|
||||||
|
listSchedule(queryParams.value).then((response) => {
|
||||||
|
scheduleList.value = response.rows;
|
||||||
|
total.value = response.total;
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 取消按钮
|
||||||
|
function cancel() {
|
||||||
|
open.value = false;
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 表单重置
|
||||||
|
function reset() {
|
||||||
|
form.value = {
|
||||||
|
id: null,
|
||||||
|
comId: null,
|
||||||
|
projectId: null,
|
||||||
|
planId: null,
|
||||||
|
taskId: null,
|
||||||
|
taskUniqueId: null,
|
||||||
|
taskName: null,
|
||||||
|
bimId: null,
|
||||||
|
schedulePercent: null,
|
||||||
|
finishDate: null,
|
||||||
|
description: null,
|
||||||
|
images: null,
|
||||||
|
isDel: null,
|
||||||
|
createBy: null,
|
||||||
|
createUserId: null,
|
||||||
|
createDate: null,
|
||||||
|
updateBy: null,
|
||||||
|
updateDate: null,
|
||||||
|
};
|
||||||
|
proxy.resetForm("scheduleRef");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
function handleQuery() {
|
||||||
|
queryParams.value.pageNum = 1;
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
function resetQuery() {
|
||||||
|
proxy.resetForm("queryRef");
|
||||||
|
handleQuery();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 多选框选中数据
|
||||||
|
function handleSelectionChange(selection) {
|
||||||
|
ids.value = selection.map((item) => item.id);
|
||||||
|
single.value = selection.length != 1;
|
||||||
|
multiple.value = !selection.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
function handleAdd() {
|
||||||
|
if (!userStore.currentComId) {
|
||||||
|
proxy.$modal.msgWarning("请切换到项目数据!!!");
|
||||||
|
open.value = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
reset();
|
||||||
|
open.value = true;
|
||||||
|
form.value.comId = userStore.currentComId;
|
||||||
|
form.value.comName = userStore.currentComName;
|
||||||
|
form.value.projectId = userStore.currentPrjId;
|
||||||
|
form.value.projectName = userStore.currentProName;
|
||||||
|
initPlan(userStore.currentPrjId);
|
||||||
|
title.value = "添加项目进度";
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 修改按钮操作 */
|
||||||
|
function handleUpdate(row) {
|
||||||
|
reset();
|
||||||
|
const _id = row.id || ids.value;
|
||||||
|
getSchedule(_id).then((response) => {
|
||||||
|
form.value = response.data;
|
||||||
|
open.value = true;
|
||||||
|
title.value = "修改项目进度";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 提交按钮 */
|
||||||
|
function submitForm() {
|
||||||
|
proxy.$refs["scheduleRef"].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
if (form.value.id != null) {
|
||||||
|
updateSchedule(form.value).then((response) => {
|
||||||
|
proxy.$modal.msgSuccess("修改成功");
|
||||||
|
open.value = false;
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
addSchedule(form.value).then((response) => {
|
||||||
|
proxy.$modal.msgSuccess("新增成功");
|
||||||
|
open.value = false;
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
function handleDelete(row) {
|
||||||
|
const _ids = row.id || ids.value;
|
||||||
|
proxy.$modal
|
||||||
|
.confirm('是否确认删除项目进度编号为"' + _ids + '"的数据项?')
|
||||||
|
.then(function () {
|
||||||
|
return delSchedule(_ids);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
getList();
|
||||||
|
proxy.$modal.msgSuccess("删除成功");
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
function handleExport() {
|
||||||
|
proxy.download(
|
||||||
|
"manage/schedule/export",
|
||||||
|
{
|
||||||
|
...queryParams.value,
|
||||||
|
},
|
||||||
|
`schedule_${new Date().getTime()}.xlsx`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 初始化计划管理 */
|
||||||
|
function initPlan(proId) {
|
||||||
|
findOnlyPlan(proId).then((res) => {
|
||||||
|
planNode.value = res.data;
|
||||||
|
form.value.planId = res.data.id;
|
||||||
|
form.value.taskId = res.data.taskId;
|
||||||
|
form.value.taskUniqueId = res.data.taskUniqueId;
|
||||||
|
form.value.taskName = res.data.taskName;
|
||||||
|
form.value.bimId = res.data.bimId;
|
||||||
|
initPreviousSchedule(res.data.id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 查询上次计划进度 */
|
||||||
|
function initPreviousSchedule(taskId) {
|
||||||
|
findPreviousSchedule(taskId).then((res) => {
|
||||||
|
if (res.data) {
|
||||||
|
previousSchedule.value = res.data;
|
||||||
|
form.value.schedulePercent = res.data.schedulePercent;
|
||||||
|
}else{
|
||||||
|
previousSchedule.value = 1;
|
||||||
|
form.value.schedulePercent = {};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getList();
|
||||||
|
</script>
|
|
@ -0,0 +1,230 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form
|
||||||
|
:model="queryParams"
|
||||||
|
ref="queryRef"
|
||||||
|
:inline="true"
|
||||||
|
v-show="showSearch"
|
||||||
|
label-width="68px"
|
||||||
|
>
|
||||||
|
<el-form-item label="项目名称" prop="projectName" v-if="!userStore.currentPrjId">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.projectName"
|
||||||
|
placeholder="请输入项目名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划名称" prop="taskName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.taskName"
|
||||||
|
placeholder="请输入计划名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划状态" prop="activeTags">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.activeTags"
|
||||||
|
placeholder="请选择计划状态"
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-row>
|
||||||
|
<div class="flex gap-2">
|
||||||
|
<el-tag type="success" effect="dark">正常完工</el-tag>
|
||||||
|
<el-tag type="warning" effect="dark">延期完工</el-tag>
|
||||||
|
<el-tag type="primary" effect="dark">正在进行</el-tag>
|
||||||
|
</div>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="planList"
|
||||||
|
row-key="taskId"
|
||||||
|
default-expand-all
|
||||||
|
>
|
||||||
|
<el-table-column label="任务名称" align="left" prop="taskName" />
|
||||||
|
<el-table-column label="任务工期" align="center" prop="taskDuation" width="120">
|
||||||
|
<template #default="scope">{{ scope.row.taskDuation }}d</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="计划开始时间"
|
||||||
|
align="center"
|
||||||
|
prop="planStartDate"
|
||||||
|
width="120"
|
||||||
|
>
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ scope.row.planStartDate }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="计划结束时间"
|
||||||
|
align="center"
|
||||||
|
prop="planFinishDate"
|
||||||
|
width="120"
|
||||||
|
>
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ scope.row.planFinishDate }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="进度开始时间" align="center" prop="startDate" width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ scope.row.startDate }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="进度结束时间" align="center" prop="finishDate" width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ scope.row.finishDate }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="延期天数" align="center" width="120" />
|
||||||
|
<el-table-column label="完成进度" align="center" prop="operator" width="250">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-progress
|
||||||
|
v-if="scope.row.Progress==0"
|
||||||
|
:percentage="Number(scope.row.scheduleNode)"
|
||||||
|
:stroke-width="15"
|
||||||
|
:text-inside="true"
|
||||||
|
/>
|
||||||
|
<el-progress
|
||||||
|
v-if="scope.row.Progress==-2"
|
||||||
|
:percentage="Number(scope.row.scheduleNode)"
|
||||||
|
:stroke-width="15"
|
||||||
|
status="exception"
|
||||||
|
:text-inside="true"
|
||||||
|
:indeterminate="true"
|
||||||
|
/>
|
||||||
|
<el-progress
|
||||||
|
v-if="scope.row.Progress==-1"
|
||||||
|
:percentage="Number(scope.row.scheduleNode)"
|
||||||
|
:stroke-width="15"
|
||||||
|
status="warning"
|
||||||
|
:text-inside="true"
|
||||||
|
/>
|
||||||
|
<el-progress
|
||||||
|
v-if="scope.row.Progress==1"
|
||||||
|
:percentage="Number(scope.row.scheduleNode)"
|
||||||
|
:stroke-width="15"
|
||||||
|
status="success"
|
||||||
|
:text-inside="true"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup name="Plan">
|
||||||
|
import { listPlan } from "@/api/manage/plan";
|
||||||
|
import useUserStore from "@/store/modules/user";
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
|
const userStore = useUserStore();
|
||||||
|
const planList = ref([]);
|
||||||
|
const loading = ref(true);
|
||||||
|
const showSearch = ref(true);
|
||||||
|
|
||||||
|
const data = reactive({
|
||||||
|
queryParams: {
|
||||||
|
comid: null,
|
||||||
|
projectId: null,
|
||||||
|
activeTags: "",
|
||||||
|
},
|
||||||
|
compId: "",
|
||||||
|
projectId: "",
|
||||||
|
});
|
||||||
|
|
||||||
|
const { queryParams } = toRefs(data);
|
||||||
|
|
||||||
|
function buildTree(all, id) {
|
||||||
|
let tmps = all.filter((d) => d.parentId == id);
|
||||||
|
if (tmps.length > 0) {
|
||||||
|
tmps.forEach((it) => {
|
||||||
|
it.children = buildTree(all, it.taskId);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return tmps;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 查询计划管理列表 */
|
||||||
|
function getList() {
|
||||||
|
if (!queryParams.value.projectId) {
|
||||||
|
planList.value = [];
|
||||||
|
proxy.$modal.msgWarning("请切换到项目数据!!!");
|
||||||
|
loading.value = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
loading.value = true;
|
||||||
|
listPlan(queryParams.value).then((response) => {
|
||||||
|
let tmps = response.data || [];
|
||||||
|
tmps.forEach(tmp => {
|
||||||
|
tmp.Progress = compareDate(tmp.planFinishDate,tmp.finishDate);
|
||||||
|
})
|
||||||
|
let objs = buildTree(tmps, 0);
|
||||||
|
planList.value = objs;
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
function handleQuery() {
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
function resetQuery() {
|
||||||
|
proxy.resetForm("queryRef");
|
||||||
|
handleQuery();
|
||||||
|
}
|
||||||
|
|
||||||
|
function compareDate(planFinishDate,finishDate) {
|
||||||
|
let _planFinishDate = new Date(planFinishDate).getTime();
|
||||||
|
let _finishDate = new Date(finishDate).getTime();
|
||||||
|
if(planFinishDate && !finishDate){
|
||||||
|
let date = new Date().getTime();
|
||||||
|
if(_planFinishDate>date){
|
||||||
|
return -2;
|
||||||
|
}else{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(_planFinishDate>_finishDate){
|
||||||
|
return 1;
|
||||||
|
}else{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data.compId = userStore.currentComId;
|
||||||
|
data.projectId = userStore.currentPrjId;
|
||||||
|
queryParams.value.projectId = data.projectId;
|
||||||
|
getList();
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scope>
|
||||||
|
.gap-2 {
|
||||||
|
position: absolute;
|
||||||
|
right: 0px;
|
||||||
|
z-index: 99;
|
||||||
|
margin-top: -33px;
|
||||||
|
.el-tag--default {
|
||||||
|
margin: 2px 10px;
|
||||||
|
.el-tag__content {
|
||||||
|
font-weight: 800;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-progress-bar__outer{
|
||||||
|
background-color: #453838 !important;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -3,7 +3,7 @@
|
||||||
<el-form ref="videoMonitorRef" label-width="120px" v-if="!data.currentPrjId">
|
<el-form ref="videoMonitorRef" label-width="120px" v-if="!data.currentPrjId">
|
||||||
<el-form-item label="项目名称">
|
<el-form-item label="项目名称">
|
||||||
<el-select :disabled="data.currentPrjId != '' || data.type == 'edit'" v-model="data.selPrjId"
|
<el-select :disabled="data.currentPrjId != '' || data.type == 'edit'" v-model="data.selPrjId"
|
||||||
placeholder="请选择项目" clearable style="width:150px;" @change="loadData()">
|
placeholder="请选择项目" clearable style="width:192px;" @change="loadData()">
|
||||||
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<el-form ref="videoMonitorRef" :model="form" :rules="rules" label-width="120px">
|
<el-form ref="videoMonitorRef" :model="form" :rules="rules" label-width="120px">
|
||||||
<el-form-item label="项目名称" prop="projectId">
|
<el-form-item label="项目名称" prop="projectId">
|
||||||
<el-select :disabled="data.currentPrjId != ''||data.type=='edit'" v-model="form.projectId" placeholder="请选择项目" clearable
|
<el-select :disabled="data.currentPrjId != ''||data.type=='edit'" v-model="form.projectId" placeholder="请选择项目" clearable
|
||||||
style="width:150px;">
|
style="width:192px;">
|
||||||
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
Loading…
Reference in New Issue