From 3ca8ce266bf5b06556d80c78b31405e7a54aa4e5 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期一, 24 六月 2024 11:01:13 +0800
Subject: [PATCH] 修改

---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/OperatCondit.java                 |    4 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/service/SysPictureBaseService.java       |    3 
 web/src/views/modules/taskReliability/OperatCondit.vue                                                              |   26 +
 web/src/views/modules/basicInfo/ParamData.vue                                                                       |    4 
 web/src/views/modules/taskReliability/Task.vue                                                                      |   62 +++
 web/src/views/modules/taskReliability/OperatConditModel.vue                                                         |    9 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/OperatConditModelService.java   |    5 
 zt/common/src/main/java/com/zt/common/utils/TreeUtils2.java                                                         |   32 +-
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java               |   23 +
 modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdDao.xml                                          |    4 
 web/src/views/modules/taskReliability/TaskPhaseModel.vue                                                            |   60 +++-
 modules/mainPart/src/main/resources/mapper/taskReliability/TaskPhaseModelDao.xml                                    |    4 
 web/src/views/modules/taskReliability/TaskBinoParam.vue                                                             |  108 ++++++++
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskBinoParamService.java       |   40 +++
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskBinoParamController.java |  111 ++++++++
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/controller/SysPictureBaseController.java |    2 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/model/SysPictureBase.java                |    6 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java        |    1 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelRbdNodeDao.java                |    1 
 zt/common/src/main/java/com/zt/common/entity/TreeNode2.java                                                         |    8 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhase.java                    |    4 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/OperatConditModel.java            |   11 
 modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdNodeDao.xml                                      |   10 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/ProductImg.java                         |    4 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskBinoParam.java                |   66 +++++
 modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml                                     |   65 +++++
 web/src/views/modules/taskReliability/TaskPhase.vue                                                                 |   53 +++
 modules/mainPart/src/main/resources/mapper/taskReliability/OperatConditModelDao.xml                                 |    9 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java               |    4 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/Task.java                         |    4 
 zt/common/src/main/java/com/zt/common/utils/TreeUtils.java                                                          |    1 
 web/src/views/modules/taskReliability/SimulatAssess.vue                                                             |    8 
 32 files changed, 646 insertions(+), 106 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/ProductImg.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/ProductImg.java
index 29b8691..accd905 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/ProductImg.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/ProductImg.java
@@ -30,11 +30,11 @@
 	@TableField(exist = false)
 	private String nodeTypeExt;
 
-	@TableField(exist = false)
+/*	@TableField(exist = false)
 	private int imgWidth;
 
 	@TableField(exist = false)
-	private int imgHeight;
+	private int imgHeight;*/
 	@TableField(exist = false)
 	private String dataId;
 	@TableField(exist = false)
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/controller/SysPictureBaseController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/controller/SysPictureBaseController.java
index 29551dc..34a8351 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/controller/SysPictureBaseController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/controller/SysPictureBaseController.java
@@ -73,7 +73,7 @@
         } else {
             sysPictureBaseService.insert(sysPictureBase);
         }
-        if (sysPictureBase.getIsDefault() == 1) {
+        if (sysPictureBase.getIsDefault() == 1 && sysPictureBase.getProductType()!=20) {
             sysPictureBaseService.updateByDefault(sysPictureBase.getId(), sysPictureBase.getProductType());
             sysPictureBaseService.updateProdeuctImg(sysPictureBase.getId(), sysPictureBase.getProductType(), null);
         }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/model/SysPictureBase.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/model/SysPictureBase.java
index 5781190..ae561b6 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/model/SysPictureBase.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/model/SysPictureBase.java
@@ -24,12 +24,6 @@
 	@ApiModelProperty(value = "鍥剧墖鍚嶇О")
 	private String name;
 
-	@ApiModelProperty(value = "鍥剧墖瀹藉害")
-	private Integer width;
-
-	@ApiModelProperty(value = "鍥剧墖楂樺害")
-	private Integer height;
-
 	@ApiModelProperty(value = "svg鍥剧墖")
 	private String svgContent;
 
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/service/SysPictureBaseService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/service/SysPictureBaseService.java
index 4d1a738..0dfc771 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/service/SysPictureBaseService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/sysPictureBase/service/SysPictureBaseService.java
@@ -21,9 +21,6 @@
  */
 @Service
 public class SysPictureBaseService  extends BaseService<SysPictureBaseDao, SysPictureBase> {
-
-    @Autowired
-    private SysOssService sysOssService;
     /**
      * 鍒嗛〉鏌ヨ
      *
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskBinoParamController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskBinoParamController.java
new file mode 100644
index 0000000..57cec2c
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskBinoParamController.java
@@ -0,0 +1,111 @@
+package com.zt.life.modules.mainPart.taskReliability.controller;
+
+
+import com.zt.common.annotation.LogOperation;
+import com.zt.common.constant.Constant;
+import com.zt.common.annotation.QueryParam;
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.servlet.Result;
+import com.zt.common.servlet.PageResult;
+import com.zt.common.validator.AssertUtils;
+import com.zt.common.validator.ValidatorUtils;
+import com.zt.common.validator.group.AddGroup;
+import com.zt.common.validator.group.DefaultGroup;
+import com.zt.common.validator.group.UpdateGroup;
+import com.zt.life.modules.mainPart.taskReliability.model.TaskBinoParam;
+import com.zt.life.modules.mainPart.taskReliability.model.TaskPhaseModel;
+import com.zt.life.modules.mainPart.taskReliability.service.TaskBinoParamService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+
+/**
+ * task_bino_param
+ *
+ * @author zt generator 
+ * @since 1.0.0 2024-06-19
+ */
+@RestController
+@RequestMapping("/taskReliability/TaskBinoParam/")
+@Api(tags="task_bino_param")
+public class TaskBinoParamController {
+    @Autowired
+    private TaskBinoParamService taskBinoParamService;
+
+    @GetMapping("page")
+    @ApiOperation("鍒嗛〉")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
+        @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
+        @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
+        @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
+        @ApiImplicitParam(name = "taskId", value = "浠诲姟Id", dataType = Constant.QT.STRING),
+    })
+    public PageResult<TaskBinoParam> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
+
+        return PageResult.ok(taskBinoParamService.page(queryFilter));
+    }
+
+    @GetMapping("{id}")
+    @ApiOperation("淇℃伅")
+    public Result<TaskBinoParam> get(@PathVariable("id") Long id){
+        TaskBinoParam data = taskBinoParamService.get(id);
+
+        return Result.ok(data);
+    }
+
+    @PostMapping("save")
+    public Result save(@RequestBody TaskBinoParam taskBinoParam) {
+        //鏁堥獙鏁版嵁
+        for (TaskBinoParam param : taskBinoParam.getDataThreeList()) {
+            if (param.getId()!=null){
+                taskBinoParamService.update(param);
+            }else{
+                taskBinoParamService.insert(param);
+            }
+        }
+        return Result.ok();
+    }
+
+    @PostMapping
+    @ApiOperation("鏂板")
+    @LogOperation("鏂板")
+    public Result insert(@RequestBody TaskBinoParam taskBinoParam){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(taskBinoParam, AddGroup.class, DefaultGroup.class);
+        taskBinoParamService.insert(taskBinoParam);
+
+        return Result.ok();
+    }
+
+    @PutMapping
+    @ApiOperation("淇敼")
+    @LogOperation("淇敼")
+    public Result update(@RequestBody TaskBinoParam taskBinoParam){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(taskBinoParam, UpdateGroup.class, DefaultGroup.class);
+        taskBinoParamService.update(taskBinoParam);
+
+        return Result.ok();
+    }
+
+    @DeleteMapping
+    @ApiOperation("鍒犻櫎")
+    @LogOperation("鍒犻櫎")
+    public Result delete(@RequestBody Long[] ids){
+        //鏁堥獙鏁版嵁
+        AssertUtils.isArrayEmpty(ids, "id");
+        taskBinoParamService.delete(ids);
+
+        return Result.ok();
+    }
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelRbdNodeDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelRbdNodeDao.java
index d7f6811..f255b3f 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelRbdNodeDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelRbdNodeDao.java
@@ -13,4 +13,5 @@
 @Mapper
 public interface ModelRbdNodeDao extends BaseDao<ModelRbdNode> {
 
+    void deteleModelRbdNode(Long modelId);
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java
new file mode 100644
index 0000000..075412c
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java
@@ -0,0 +1,23 @@
+package com.zt.life.modules.mainPart.taskReliability.dao;
+
+import com.zt.common.dao.BaseDao;
+import com.zt.life.modules.mainPart.taskReliability.model.TaskBinoParam;
+import org.apache.ibatis.annotations.Mapper;
+
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * task_bino_param
+ *
+ * @author zt generator 
+ * @since 1.0.0 2024-06-19
+ */
+@Mapper
+public interface TaskBinoParamDao extends BaseDao<TaskBinoParam> {
+
+    List<TaskBinoParam> getList(Map<String, Object> params);
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/OperatCondit.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/OperatCondit.java
index 421c7d7..bf9d077 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/OperatCondit.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/OperatCondit.java
@@ -29,8 +29,4 @@
 
 	@ApiModelProperty(value = "澶囨敞")
 	private String remark;
-
-	@ApiModelProperty(value = "")
-	private Integer status;
-
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/OperatConditModel.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/OperatConditModel.java
index 1ff22cb..f06ca16 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/OperatConditModel.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/OperatConditModel.java
@@ -5,6 +5,7 @@
 import com.zt.common.constant.Constant;
 import com.zt.common.entity.BusiEntity;
 import com.zt.common.entity.TreeNode;
+import com.zt.common.entity.TreeNode2;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -23,7 +24,7 @@
 @Data
 @EqualsAndHashCode(callSuper=false)
 @TableName("operat_condit_model")
-public class OperatConditModel extends BusiEntity implements TreeNode<OperatConditModel> {
+public class OperatConditModel extends BusiEntity implements TreeNode2<OperatConditModel> {
 	private static final long serialVersionUID = 1L;
 
 	@ApiModelProperty(value = "宸ュ喌ID")
@@ -35,11 +36,8 @@
 	@ApiModelProperty(value = "妯″瀷ID")
 	private Long modelId;
 
-	@ApiModelProperty(value = "澶囨敞")
-	private String remark;
-
 	@TableField(exist = false)
-	private String product;
+	private String productName;
 
 	@TableField(exist = false)
 	private String modelName;
@@ -60,4 +58,7 @@
 	@TableField(exist = false)
 	private Long pid;
 
+	@TableField(exist = false)
+	private Long iid;
+
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/Task.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/Task.java
index 2314a30..5ef6553 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/Task.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/Task.java
@@ -28,8 +28,8 @@
 	@ApiModelProperty(value = "浠诲姟鍚嶇О")
 	private String taskName;
 
-	@ApiModelProperty(value = "浠诲姟椤哄簭")
-	private Integer taskSort;
+/*	@ApiModelProperty(value = "浠诲姟椤哄簭")
+	private Integer taskSort;*/
 
 	@ApiModelProperty(value = "澶囨敞")
 	private String remark;
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskBinoParam.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskBinoParam.java
new file mode 100644
index 0000000..cb65bb9
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskBinoParam.java
@@ -0,0 +1,66 @@
+package com.zt.life.modules.mainPart.taskReliability.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.zt.common.entity.BusiEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * task_bino_param
+ *
+ * @author zt generator 
+ * @since 1.0.0 2024-06-19
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("task_bino_param")
+public class TaskBinoParam extends BusiEntity {
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "浠诲姟ID")
+	private Long taskId;
+
+
+	@ApiModelProperty(value = "闃舵id")
+	private Long phaseId;
+
+	@TableField(exist = false)
+	private String phaseName;
+
+	@ApiModelProperty(value = "宸ュ喌ID")
+	private Long operatConditId;
+
+	@TableField(exist = false)
+	private String operatConditName;
+
+	@TableField(exist = false)
+	private String productName;
+
+	@ApiModelProperty(value = "妯″瀷Id")
+	private Long modelId;
+
+	@ApiModelProperty(value = "浜у搧鑺傜偣ID")
+	private Long productId;
+
+	@ApiModelProperty(value = "鎴愬姛鐜�")
+	private Double successRate;
+
+	@ApiModelProperty(value = "浠跨湡娆℃暟")
+	private Integer simulatTimes;
+
+	@ApiModelProperty(value = "鎴愬姛娆℃暟")
+	private Integer successTimes;
+
+	@ApiModelProperty(value = "澶囨敞")
+	private String remark;
+
+	@TableField(exist = false)
+	private List<TaskBinoParam> dataThreeList;
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhase.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhase.java
index 7ec9ee3..e16bd9f 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhase.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhase.java
@@ -28,17 +28,17 @@
 	@ApiModelProperty(value = "闃舵鏃堕暱姣�")
 	private Double phaseDurationRate;
 
+/*
 	@ApiModelProperty(value = "闃舵鏃堕��")
 	private Double phaseSpeed;
 
 	@ApiModelProperty(value = "闃舵椤哄簭")
 	private Integer phaseSort;
+*/
 
 	@ApiModelProperty(value = "澶囨敞")
 	private String remark;
 
-	@ApiModelProperty(value = "")
-	private Integer status;
 
 	@TableField(exist = false)
 	private Long productId;
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java
index cb6afb6..323c781 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/TaskPhaseModel.java
@@ -37,7 +37,7 @@
 	private String operatConditName;
 
 	@ApiModelProperty(value = "宸ュ喌杩愯姣�")
-	private Double operatConditDurationRate;
+	private String operatConditDurationRate;
 
 	@ApiModelProperty(value = "澶囨敞")
 	private String remark;
@@ -47,4 +47,6 @@
 
 	@TableField(exist = false)
 	private String isCheck;
+
+
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java
index 52f4b0e..d9ff88a 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelRbdNodeService.java
@@ -39,6 +39,7 @@
 public class ModelRbdNodeService extends BaseService<ModelRbdNodeDao, ModelRbdNode> {
     public void saveNodeArr(ModelRbd modelRbd) {
 //
+        baseDao.deteleModelRbdNode(modelRbd.getId());
         ModelRbdNode node = new ModelRbdNode();
         node.setProductId(modelRbd.getProductId());
         node.setModelId(modelRbd.getId());
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/OperatConditModelService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/OperatConditModelService.java
index 06eda77..1ac7413 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/OperatConditModelService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/OperatConditModelService.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.zt.common.service.BaseService;
 import com.zt.common.utils.TreeUtils;
+import com.zt.common.utils.TreeUtils2;
 import com.zt.life.modules.mainPart.taskReliability.dao.OperatConditModelDao;
 import com.zt.life.modules.mainPart.taskReliability.model.ModelNodes;
 import com.zt.life.modules.mainPart.taskReliability.model.ModelRbd;
@@ -34,10 +35,10 @@
     public List<OperatConditModel> page(QueryFilter queryFilter) {
         List<OperatConditModel> list = baseDao.getList(queryFilter.getQueryParams());
         for (OperatConditModel conditModel : list) {
-            List<ModelRbd> modelList = baseDao.getModelList(conditModel.getId());
+            List<ModelRbd> modelList = baseDao.getModelList(conditModel.getProductId());
             conditModel.setModelList(modelList);
         }
-        return TreeUtils.build(list);
+        return TreeUtils2.build(list);
     }
 
 
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskBinoParamService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskBinoParamService.java
new file mode 100644
index 0000000..7beb8dc
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskBinoParamService.java
@@ -0,0 +1,40 @@
+package com.zt.life.modules.mainPart.taskReliability.service;
+
+import com.zt.common.service.BaseService;
+import com.zt.life.modules.mainPart.taskReliability.dao.TaskBinoParamDao;
+import com.zt.life.modules.mainPart.taskReliability.model.TaskBinoParam;
+import org.springframework.stereotype.Service;
+import com.zt.common.db.query.QueryFilter;
+import javax.annotation.Resource;
+import java.util.List;
+
+
+/**
+ * task_bino_param
+ *
+ * @author zt generator 
+ * @since 1.0.0 2024-06-19
+ */
+@Service
+public class TaskBinoParamService  extends BaseService<TaskBinoParamDao, TaskBinoParam> {
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param queryFilter
+     * @return
+     */
+    public List<TaskBinoParam> page(QueryFilter queryFilter) {
+        return baseDao.getList(queryFilter.getQueryParams());
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param ids
+     */
+    public void delete(Long[] ids) {
+        super.deleteLogic(ids);
+    }
+
+}
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdDao.xml
index 63fc4fa..5a1a366 100644
--- a/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdDao.xml
@@ -7,14 +7,12 @@
         select a.*,
         CASE
         WHEN b.end =1 THEN '宸插畬鎴�'
-        WHEN c.num >0 THEN '姝e湪缂栬緫'
+        WHEN a.content is not null THEN '姝e湪缂栬緫'
         ELSE '鏈紪杈�' END AS modelState,
         d.num as quoteNum
         from model_rbd a
         left join (select model_id,1 as end from algorithm where model_type = 'end' and is_delete=0 ) b on b.model_id =
         a.id
-        left join (select id, count(1) as num from model_rbd where is_delete=0 group by id ) c on c.id
-        = a.id
         left join (select model_id,count(1) as num from operat_condit_model where is_delete=0 group by model_id ) d on
         d.model_id = a.id
         <where>
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdNodeDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdNodeDao.xml
new file mode 100644
index 0000000..c8b08a4
--- /dev/null
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/ModelRbdNodeDao.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.zt.life.modules.mainPart.taskReliability.dao.ModelRbdNodeDao">
+    <delete id="deteleModelRbdNode">
+        delete
+        from model_rbd_node
+        where model_id = ${modelId}
+    </delete>
+</mapper>
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/OperatConditModelDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/OperatConditModelDao.xml
index e6bc4e2..e2c4543 100644
--- a/modules/mainPart/src/main/resources/mapper/taskReliability/OperatConditModelDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/OperatConditModelDao.xml
@@ -9,11 +9,12 @@
     </delete>
 
     <select id="getList" resultType="com.zt.life.modules.mainPart.taskReliability.model.OperatConditModel">
-        SELECT a.id,
-               a.pid,
-               a.`NAME`                                                               as product,
-               c.model_name,
+        SELECT b.id,
+               a.id                                                                   as iid,
                a.id                                                                   as product_id,
+               a.pid,
+               a.`NAME`                                                               as productName,
+               c.model_name,
                b.model_id,
                case when b.is_disabled is null or b.is_disabled = 1 then 1 else 0 end as is_disabled,
                ${operatConditId}                                                      as operatConditId
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml
new file mode 100644
index 0000000..94eee5f
--- /dev/null
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.zt.life.modules.mainPart.taskReliability.dao.TaskBinoParamDao">
+
+    <select id="getList" resultType="com.zt.life.modules.mainPart.taskReliability.model.TaskBinoParam">
+        select a.task_id
+             , a.phase_id
+             , a.phase_name
+             , a.phase_sort
+             , a.operat_condit_id
+             , a.operat_condit_name
+             , a.model_id
+             , a.product_name
+             , a.product_id
+             , case
+                   when b.success_rate is not null then b.success_rate
+                   else a.task_mtbcf_regul_succ_rate end as success_rate
+             , b.id
+             , b.simulat_times
+             , b.success_times
+        from (
+                 SELECT a.task_id
+                      , a.id   as phase_id
+                      , a.phase_name
+                      , a.phase_sort
+                      , b.operat_condit_id
+                      , c.name as operat_condit_name
+                      , d.model_id
+                      , f.name as product_name
+                      , f.id   as product_id
+                      , g.task_mtbcf_regul_succ_rate
+                 FROM `task_phase` a
+                    , task_phase_model b
+                    , operat_condit c
+                    , operat_condit_model d
+                    , model_rbd_node e
+                    , product_model f
+                    , param_data g
+                 where a.task_id = ${taskId}
+                   and a.is_delete = 0
+                   and b.phase_id = a.id
+                   and b.is_delete = 0
+                   and c.id = b.operat_condit_id
+                   and c.is_delete = 0
+                   and d.operat_condit_id = c.id
+                   and d.is_delete = 0
+                   and e.model_id = d.model_id
+                   and e.is_delete = 0
+                   and f.id = e.node_id
+                   and f.is_delete = 0
+                   and g.product_id = f.id
+                   and g.is_delete = 0
+                   and g.reliab_distrib_type = 2
+             ) a
+                 left join task_bino_param b on
+                b.task_id = ${taskId}
+                and b.phase_id = a.phase_id
+                and b.operat_condit_id = a.operat_condit_id
+                and b.model_id = a.model_id
+                and b.product_id = a.product_id
+        order by a.phase_id, a.operat_condit_id, a.product_id
+    </select>
+
+</mapper>
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskPhaseModelDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskPhaseModelDao.xml
index ebf1303..d38b55a 100644
--- a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskPhaseModelDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskPhaseModelDao.xml
@@ -9,8 +9,8 @@
              , a.NAME         as operatConditName
              , a.id           as operatConditId
              , case
-                   when b.id is null then 0
-                   else 1 end as isCheck
+                   when b.operat_condit_duration_rate &gt;'0' then 1
+                   else 0 end as isCheck
         FROM operat_condit a
                  left join task_phase_model b
                            on a.id = b.operat_condit_id and b.is_delete = 0 and b.phase_id = ${phaseId}
diff --git a/web/src/views/modules/basicInfo/ParamData.vue b/web/src/views/modules/basicInfo/ParamData.vue
index ecf9669..052c79d 100644
--- a/web/src/views/modules/basicInfo/ParamData.vue
+++ b/web/src/views/modules/basicInfo/ParamData.vue
@@ -219,7 +219,7 @@
                       </template>
                     </el-table-column>
                     <!--                <zt-table-column-dict prop="repairDistribType" :keys="24" label="缁翠慨鍒嗗竷绫诲瀷" width="140" dict="RepairDistribType"/>-->
-                    <el-table-column prop="repairDistribType" label="缁翠慨鍒嗗竷绫诲瀷" :key="24" width="140">
+                    <el-table-column prop="repairDistribType" label="缁翠慨鍒嗗竷绫诲瀷" :key="24" width="100">
                       <template v-slot="{ row }">
                         <el-select v-if="row.isEdit" v-model="row.repairDistribType"
                                    placeholder="璇烽�夋嫨">
@@ -240,7 +240,7 @@
                         <span v-else v-text="scope.row.repairMttcr"></span>
                       </template>
                     </el-table-column>
-                    <el-table-column prop="repairMttcrOtherParams" :key="26" label="MTTCR鍏朵粬鍙傛暟" width="180">
+                    <el-table-column prop="repairMttcrOtherParams" :key="26" label="MTTCR鍏朵粬鍙傛暟" width="120">
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.repairMttcrOtherParams"></el-input>
                         <span v-else v-text="scope.row.repairMttcrOtherParams"></span>
diff --git a/web/src/views/modules/taskReliability/OperatCondit.vue b/web/src/views/modules/taskReliability/OperatCondit.vue
index 4bd53e3..9004898 100644
--- a/web/src/views/modules/taskReliability/OperatCondit.vue
+++ b/web/src/views/modules/taskReliability/OperatCondit.vue
@@ -19,13 +19,13 @@
                 </el-form-item>
               </el-form>
               <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px"
-                        :highlight-current-row="isSelect"
+                        :row-class-name="tableRowClassName"
                         v-adaptive="{bottomOffset:70}"
                         border @row-click="selectOperatCondit" @selection-change="table.selectionChangeHandle">
                 <el-table-column type="selection" width="40" align="center"/>
                 <el-table-column prop="name" label="宸ュ喌鍚嶇О"/>
                 <el-table-column prop="remark" label="澶囨敞"
-                /
+                />
                 <zt-table-column-handle :table="table"
                                         delete-perm="taskReliability::delete"/>
               </el-table>
@@ -56,6 +56,7 @@
           productId: '',
         },
         isSelect: false,
+        currentId: ''
       }
     },
     mounted() {
@@ -80,6 +81,11 @@
         console.log(this.productList, ' async getTaskProductList()')
       },
       selectOperatCondit(row) {
+        if (this.$refs.model.isChange) {
+          this.$alert("鏈夋湭淇濆瓨鐨勫伐鍐垫ā鍨�")
+          return;
+        }
+        this.currentId = row.id
         this.$emit('selectOperatCondit', row)
         let param = {
           row: row,
@@ -87,6 +93,22 @@
         }
         this.$refs.model.init(param)
       },
+      tableRowClassName(
+        {
+          row,
+          rowIndex
+        }) {
+        if (row.id == this.currentId) {
+          return 'select-row';
+        } else {
+          return 'not-select-row';
+        }
+      }
     }
   }
 </script>
+<style>
+  .el-table .select-row {
+    background: rgba(23, 179, 163, 0.2) !important;
+  }
+</style>
diff --git a/web/src/views/modules/taskReliability/OperatConditModel.vue b/web/src/views/modules/taskReliability/OperatConditModel.vue
index a14565b..af60490 100644
--- a/web/src/views/modules/taskReliability/OperatConditModel.vue
+++ b/web/src/views/modules/taskReliability/OperatConditModel.vue
@@ -10,10 +10,10 @@
       </el-form>
       <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px"
                 v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle"
-                row-key="id"
+                row-key="iid"
                 :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
                 :default-expand-all="true">
-        <el-table-column prop="product" label="浜у搧鑺傜偣"/>
+        <el-table-column prop="productName" label="浜у搧鑺傜偣"/>
         <el-table-column prop="modelId" label="浜у搧妯″瀷">
           <template slot-scope="scope">
             <el-select v-model="scope.row.modelId" :disabled="scope.row.isDisabled == 1" placeholder="璇烽�夋嫨"
@@ -42,16 +42,19 @@
 
 <script>
   import RBDEditImg from './RBD-edit-img'
+  import cloneDeep from 'lodash/cloneDeep'
 
   export default {
     name: 'OperaConditModel',
     data() {
       return {
         dataForm: {
+          id: '',
           operatConditId: '',
           productId: '',
         },
         mapModelNodes: {},
+        modelList: [],
         dialogVisible2: false,
         isChange: false,
       }
@@ -94,7 +97,7 @@
 
         }
       },
-      modelChanged(row){
+      modelChanged(row) {
         this.isChange = true
         this.modelChangedProess(row)
       },
diff --git a/web/src/views/modules/taskReliability/SimulatAssess.vue b/web/src/views/modules/taskReliability/SimulatAssess.vue
index 071c3f7..327cb12 100644
--- a/web/src/views/modules/taskReliability/SimulatAssess.vue
+++ b/web/src/views/modules/taskReliability/SimulatAssess.vue
@@ -11,11 +11,11 @@
               <zt-form-item label="鎬讳綋浠诲姟" prop="task">
                 <zt-select v-model="dataForm.task" :datas="taskList" @change="onTaskSelected"/>
               </zt-form-item>
-              <zt-form-item label="浠诲姟鏃堕暱" prop="simulatTime">
+             <!-- <zt-form-item label="浠诲姟鏃堕暱" prop="simulatTime">
                 <el-input type="number" :min="1" v-model="dataForm.simulatTime">
                   <template slot="append">灏忔椂</template>
                 </el-input>
-              </zt-form-item>
+              </zt-form-item>-->
               <zt-form-item label="鏁版嵁绫诲瀷" prop="dataType">
                 <zt-dict v-model="dataForm.dataType" dict="dataType"></zt-dict>
               </zt-form-item>
@@ -143,11 +143,11 @@
   }
 
   .mod-taskReliability-simulatAssess .el-form-item__label {
-    line-height: calc((100vh - 175px) / 8);
+    line-height: calc((100vh - 175px) / 7);
   }
 
   .mod-taskReliability-simulatAssess .el-form-item__content {
-    line-height: calc((100vh - 175px) / 8);
+    line-height: calc((100vh - 175px) / 7);
   }
 
   .mod-taskReliability-simulatAssess .el-form-item__content > .el-input-group--append {
diff --git a/web/src/views/modules/taskReliability/Task.vue b/web/src/views/modules/taskReliability/Task.vue
index 634b2ce..fb627c9 100644
--- a/web/src/views/modules/taskReliability/Task.vue
+++ b/web/src/views/modules/taskReliability/Task.vue
@@ -3,32 +3,38 @@
     <div style="margin: 10px 0">
       <zt-select v-model="dataForm.productId" placeholder="璇烽�夋嫨浜у搧鑺傜偣" :datas="productList" @change="onProductSelected"/>
     </div>
-    <zt-table-wraper ref="tableObj" query-url="/taskReliability/Task/page" defaultNotQuery="true"  :paging='false' delete-url="/taskReliability/Task/"
+    <zt-table-wraper ref="tableObj" query-url="/taskReliability/Task/page" defaultNotQuery="true" :paging='false'
+                     delete-url="/taskReliability/Task/"
                      v-slot="{ table }">
       <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
         <el-form-item>
-          <zt-button v-if="dataForm.productId" type="add" @click="add()" />
+          <zt-button v-if="dataForm.productId" type="add" @click="add()"/>
           <zt-button v-if="dataForm.productId" type="delete" @click="table.deleteHandle()"/>
+          <el-button v-if="dataForm.productId" type="primary" @click="openDialog()">浜岄」鍒嗗竷鍙傛暟</el-button>
         </el-form-item>
       </el-form>
       <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:30}"
+                border
+                :row-class-name="tableRowClassName"
                 @row-click="selectTask"
                 @selection-change="table.selectionChangeHandle">
         <el-table-column type="selection" width="40" align="center"/>
-        <el-table-column prop="taskName" label="浠诲姟鍚嶇О"/>
+        <el-table-column prop="taskName" label="浠诲姟鍚嶇О" align="center"/>
         <!--<el-table-column prop="taskSort" label="浠诲姟椤哄簭" align="center"/>-->
-        <el-table-column prop="taskDuration" label="浠诲姟鎬绘椂闀�" align="right"/>
+        <el-table-column prop="taskDuration" label="浠诲姟鎬绘椂闀�" align="right" width="120"/>
         <zt-table-column-handle :table="table"
                                 delete-perm="taskReliability::delete"/>
       </el-table>
       <!-- 寮圭獥, 鏂板 / 淇敼 -->
       <add-or-update @refreshDataList="table.query" ref="AddOrUpdate"/>
+      <task-bino-param  ref="taskBinoParam"></task-bino-param>
     </zt-table-wraper>
   </div>
 </template>
 
 <script>
   import AddOrUpdate from './Task-AddOrUpdate'
+  import TaskBinoParam from "./TaskBinoParam";
 
   export default {
     name: 'Task',
@@ -36,37 +42,69 @@
       return {
         productList: [],
         dataForm: {
-          id:'',
+          id: '',
           productId: ''
-        }
+        },
+        currentId: '',
+        isChange: ''
       }
     },
     components: {
+      TaskBinoParam,
       AddOrUpdate
     },
     mounted() {
       this.getTaskProductList()
     },
     methods: {
-      init() {
-
+      init(isChange) {
+        this.isChange = isChange
       },
       add() {
-        this.$refs.AddOrUpdate.$refs.dialog.init(null,{productId: this.dataForm.productId})
+        this.$refs.AddOrUpdate.$refs.dialog.init(null, {productId: this.dataForm.productId})
       },
-      selectTask(row){
-        this.$emit('onTaskSelected',row)
+      openDialog() {
+        if (this.dataForm.id) {
+          this.$refs.taskBinoParam.$refs.dialog.init(null, {taskId: this.dataForm.id})
+        } else {
+          this.$alert("璇烽�夋嫨鍏蜂綋浠诲姟")
+        }
+      },
+      selectTask(row) {
+        this.dataForm.id = row.id
+        this.$emit('onTaskSelected', row)
+        console.log(this.isChange, 'isChange')
+        if (this.isChange) {
+        } else {
+          this.currentId = row.id
+        }
       },
       async getTaskProductList() {
         let res = await this.$http.get('/basicInfo/XhProductModel/getTaskProductList')
         this.productList = res.data
         console.log(this.productList, ' async getTaskProductList()')
       },
-      onProductSelected(data){
+      onProductSelected(data) {
         console.log(data, ' onProductSelected(data)')
         this.dataForm.productId = data.id
         this.$refs.tableObj.query()
+      },
+      tableRowClassName(
+        {
+          row,
+          rowIndex
+        }) {
+        if (row.id == this.currentId) {
+          return 'select-row';
+        } else {
+          return 'not-select-row';
+        }
       }
     }
   }
 </script>
+<style>
+  .el-table .select-row {
+    background: rgba(23, 179, 163, 0.2) !important;
+  }
+</style>
diff --git a/web/src/views/modules/taskReliability/TaskBinoParam.vue b/web/src/views/modules/taskReliability/TaskBinoParam.vue
new file mode 100644
index 0000000..95b49a5
--- /dev/null
+++ b/web/src/views/modules/taskReliability/TaskBinoParam.vue
@@ -0,0 +1,108 @@
+<template>
+  <zt-dialog ref="dialog" column="1" title="浜岄」鍙傛暟" append-to-body :editAble="false" :hasConfirm="false">
+    <zt-table-wraper ref="tableObj" query-url="/taskReliability/TaskBinoParam/page" delete-url="/taskReliability/TaskBinoParam"
+                     v-slot="{ table }">
+      <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
+        <el-form-item>
+          <!--  <zt-button type="query" @click="table.query()"/>
+            <zt-button type="add" perm="taskReliability:add" @click="table.editHandle()"/>
+            <zt-button type="delete" perm="taskReliability:delete" @click="table.deleteHandle()"/>-->
+          <zt-button type="primary" @click="handleSaveRows">淇濆瓨</zt-button>
+        </el-form-item>
+      </el-form>
+      <el-table v-loading="table.dataLoading" :data="table.dataList" height="300"
+                border @selection-change="table.selectionChangeHandle" @cell-click="handleCellClick">
+        <!--        <el-table-column type="selection" width="40"/>-->
+        <el-table-column prop="phaseName" label="闃舵" align="center"/>
+        <el-table-column prop="operatConditName" label="宸ュ喌" align="center"/>
+        <el-table-column prop="productName" label="浜岄」鍒嗗竷璁惧" align="center"/>
+        <el-table-column prop="successRate" label="鎴愬姛鐜�" align="right">
+          <template slot-scope="scope">
+                    <span
+                      v-if="editingCell && editingCell.row === scope.row && editingCell.column.property === scope.column.property">
+                       <el-input ref="editInput"
+                                 autosize v-model="scope.row.successRate"
+                                 placeholder="鎴愬姛鐜�"></el-input>
+                    </span>
+            <span v-else>{{scope.row.successRate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="simulatTimes" label="浠跨湡娆℃暟" align="center">
+          <template slot-scope="scope">
+                    <span
+                      v-if="editingCell && editingCell.row === scope.row && editingCell.column.property === scope.column.property">
+                       <el-input ref="editInput"
+                                 autosize v-model="scope.row.simulatTimes"
+                                 placeholder="浠跨湡娆℃暟"></el-input>
+                    </span>
+            <span v-else>{{scope.row.simulatTimes}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="successTimes" label="鎴愬姛娆℃暟" align="center">
+          <template slot-scope="scope">
+                    <span
+                      v-if="editingCell && editingCell.row === scope.row && editingCell.column.property === scope.column.property">
+                       <el-input ref="editInput"
+                                 autosize v-model="scope.row.successTimes"
+                                 placeholder="鎴愬姛娆℃暟"></el-input>
+                    </span>
+            <span v-else>{{scope.row.successTimes}}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+    </zt-table-wraper>
+  </zt-dialog>
+</template>
+
+<script>
+  import cloneDeep from "lodash/cloneDeep";
+
+  export default {
+    name: 'taskBinoParam',
+    data() {
+      return {
+        dataForm: {
+          id: '',
+          taskId: '',
+          successRate: '',
+          simulatTimes: '',
+          successTimes: '',
+          dataThreeList:[]
+        },
+        editingCell: null,
+        dataList: [],
+        originalTableData: [],
+        originalData: null,
+      }
+    },
+    components: {},
+    methods: {
+      init(id, row) {
+        this.dataForm.taskId = row.taskId
+      },
+      async handleSaveRows() {
+        this.dataForm.dataThreeList = this.$refs.tableObj.dataList
+        console.log(this.dataForm, 'this.dataForm this.dataForm')
+        let res = await this.$http.post('/taskReliability/TaskBinoParam/save', this.dataForm)
+        if (res.success) {
+          console.log(res.data)
+          await this.$tip.success()
+          this.originalData = null
+          this.dataForm.dataThreeList = null
+          this.$refs.tableObj.query()
+          this.originalTableData = JSON.parse(JSON.stringify(this.dataList)); // 鏇存柊鍒濆鏁版嵁涓哄綋鍓嶆暟鎹�
+          console.log(this.originalTableData, 'this.originalTableData 褰撳墠琛ㄦ牸json鏁版嵁')
+        }
+      },
+      handleCellClick(row, column) {
+        this.editingCell = {row, column}
+        this.$nextTick(() => {
+          if (this.$refs.editInput) {
+            this.$refs.editInput.focus()
+          }
+        })
+        console.log(this.editingCell, 'this.editingCell')
+      },
+    }
+  }
+</script>
diff --git a/web/src/views/modules/taskReliability/TaskPhase.vue b/web/src/views/modules/taskReliability/TaskPhase.vue
index 2b5692f..b2915f7 100644
--- a/web/src/views/modules/taskReliability/TaskPhase.vue
+++ b/web/src/views/modules/taskReliability/TaskPhase.vue
@@ -18,19 +18,20 @@
                 <zt-button v-if="dataForm.taskId" type="delete" @click="table.deleteHandle()"/>
               </el-form-item>
             </el-form>
-            <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:30}"
-
+            <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:30}" border
+                      :row-class-name="tableRowClassName"
                       @row-click="selectPhase" @selection-change="table.selectionChangeHandle">
               <el-table-column type="selection" width="40" align="center"/>
               <el-table-column prop="phaseName" label="闃舵鍚嶇О" align="center"/>
-              <el-table-column prop="phaseDurationRate" label="闃舵鏃堕暱姣�" align="right"/>
-            <!--  <el-table-column prop="phaseSpeed" label="闃舵鏃堕��" align="right"/>-->
+              <el-table-column prop="phaseDurationRate" label="闃舵鏃堕暱姣�" align="right" width="120"/>
+                <el-table-column prop="remark" label="澶囨敞" align="right" width="200"/>
+              <!--  <el-table-column prop="phaseSpeed" label="闃舵鏃堕��" align="right"/>-->
               <!--<el-table-column prop="phaseSort" label="闃舵椤哄簭" align="center"/>-->
               <!--<el-table-column prop="operatConditDuration" label="宸ュ喌鏃堕暱鍒嗛厤" align="center"/>-->
               <zt-table-column-handle :table="table" edit-perm="testReviewComment:update"
                                       delete-perm="taskReliability::delete">
                 <template v-slot="{row}">
-                  <zt-table-button type="primary"  @click="openEditWin(row)">淇敼</zt-table-button>
+                  <zt-table-button type="primary" @click="openEditWin(row)">淇敼</zt-table-button>
                 </template>
               </zt-table-column-handle>
             </el-table>
@@ -55,12 +56,14 @@
     data() {
       return {
         dataForm: {
-          id:'',
+          id: '',
           taskId: '',
           productId: ''
         },
         dataList: [],
-        time: null
+        time: null,
+        currentId: '',
+        isChange: ''
       }
     },
     components: {
@@ -69,7 +72,7 @@
       AddOrUpdate
     },
     methods: {
-      refreshData(){
+      refreshData() {
         this.$refs.tableObj.query()
         this.$refs.task.$refs.tableObj.query()
       },
@@ -89,7 +92,7 @@
           time: this.time
         })
       },
-      openEditWin(row){
+      openEditWin(row) {
         console.log(row)
         this.$refs.AddOrUpdate.$refs.dialog.init(row.id, {
           taskId: this.dataForm.taskId,
@@ -98,11 +101,27 @@
         })
       },
       onTaskSelected(row) {
+        this.isChange = this.$refs.model.isChange
+        this.$refs.task.init(this.isChange)
+        if (this.isChange) {
+          this.$alert("鏈夋湭淇濆瓨鐨勫伐鍐垫ā鍨�")
+          return;
+        }
         this.dataForm.taskId = row.id
         this.dataForm.productId = row.productId
         this.$refs.tableObj.query()
+        let param = {
+          row: {id: 0},
+          productId: 0
+        }
+        this.$refs.model.init(param)
       },
       selectPhase(row) {
+        if (this.$refs.model.isChange) {
+          this.$alert("鏈夋湭淇濆瓨鐨勫伐鍐垫ā鍨�")
+          return;
+        }
+        this.currentId = row.id
         this.$emit('selectPhase', row)
         let param = {
           row: row,
@@ -110,6 +129,22 @@
         }
         this.$refs.model.init(param)
       },
+      tableRowClassName(
+        {
+          row,
+          rowIndex
+        }) {
+        if (row.id == this.currentId) {
+          return 'select-row';
+        } else {
+          return 'not-select-row';
+        }
+      }
     }
   }
 </script>
+<style>
+  .el-table .select-row {
+    background: rgba(23, 179, 163, 0.2) !important;
+  }
+</style>
diff --git a/web/src/views/modules/taskReliability/TaskPhaseModel.vue b/web/src/views/modules/taskReliability/TaskPhaseModel.vue
index 516193a..19dfd04 100644
--- a/web/src/views/modules/taskReliability/TaskPhaseModel.vue
+++ b/web/src/views/modules/taskReliability/TaskPhaseModel.vue
@@ -13,21 +13,21 @@
                 v-adaptive="{bottomOffset:30}" border
                 @cell-click="handleCellClick"
                 @selection-change="table.selectionChangeHandle">
-        <el-table-column prop="operatConditName" label="宸ュ喌鍚嶇О" width="100"/>
-        <el-table-column prop="operatConditDurationRate" label="宸ュ喌鏃堕暱姣�" align="right" width="160">
+        <el-table-column prop="operatConditName" label="宸ュ喌鍚嶇О" width="140" align="center"/>
+        <el-table-column prop="operatConditDurationRate" label="宸ュ喌鏃堕暱姣�" align="right" width="120">
           <template slot-scope="scope">
                     <span
                       v-if="editingCell && editingCell.row === scope.row && editingCell.column.property === scope.column.property">
                        <el-input ref="editInput"
                                  autosize v-model="scope.row.operatConditDurationRate"
-                                 placeholder="宸ュ喌鏃堕暱姣�"></el-input>
+                                 placeholder="宸ュ喌鏃堕暱姣�" @input="change()"></el-input>
                     </span>
             <span v-else>{{scope.row.operatConditDurationRate}}</span>
           </template>
         </el-table-column>
         <el-table-column align="center" label="閫夌敤">
           <template v-slot="{ row }">
-            <el-checkbox true-label="1" false-label="0" v-model="row.isCheck"></el-checkbox>
+            <el-checkbox true-label="1" false-label="0" v-model="row.isCheck" @change="change"></el-checkbox>
           </template>
         </el-table-column>
       </el-table>
@@ -36,6 +36,7 @@
 </template>
 
 <script>
+  import cloneDeep from 'lodash/cloneDeep'
 
   export default {
     name: 'TaskPhaseModel',
@@ -48,8 +49,11 @@
           operatConditId: '',
           operatConditDurationRate: '',
           dataList: [],
-          isCheck: ''
+          isCheck: '',
+          dataThreeList:[]
         },
+        lastSaveData: [],
+        isChange: false,
         editingCell: null,
         dataList: [],
         originalTableData: [],
@@ -66,7 +70,6 @@
       },
       //鎵归噺淇濆瓨
       async handleSaveRows() {
-        let time = null
         let operatConditDurationRate = null
         let flag = true
         let list = []
@@ -75,21 +78,20 @@
         for (let i = 0; i < this.dataForm.dataThreeList.length; i++) {
           operatConditDurationRate = this.dataForm.dataThreeList[i].operatConditDurationRate
           console.log(operatConditDurationRate)
+          if (this.dataForm.dataThreeList[i].operatConditDurationRate == null)
+            this.dataForm.dataThreeList[i].operatConditDurationRate = '0'
+          if (this.dataForm.dataThreeList[i].isCheck === '0')
+            this.dataForm.dataThreeList[i].operatConditDurationRate = '0'
           if (String(operatConditDurationRate).match(reg) == null && operatConditDurationRate !== null) {
             this.$alert("杈撳叆鐨勬暟鎹牸寮忔湁璇�")
             flag = false
           }
-          time = time + Number(this.dataForm.dataThreeList[i].operatConditDurationRate)
-          if (this.dataForm.dataThreeList[i].isCheck === '0' && this.dataForm.dataThreeList[i].operatConditDurationRate != null) {
-            this.$alert("鏈夋湭鍕鹃�夌殑宸ュ喌")
-            flag = false
-          } else if (this.dataForm.dataThreeList[i].isCheck === '1' && this.dataForm.dataThreeList[i].operatConditDurationRate == null) {
+          // time = time + Number(this.dataForm.dataThreeList[i].operatConditDurationRate)
+          if (this.dataForm.dataThreeList[i].isCheck === '1' && (this.dataForm.dataThreeList[i].operatConditDurationRate == null || this.dataForm.dataThreeList[i].operatConditDurationRate == 0)) {
             this.$alert("鏈夋湭濉啓鐨勫伐鍐垫椂闀�")
             flag = false
           }
-          if (this.dataForm.dataThreeList[i].isCheck === '1') {
-            list.push(this.dataForm.dataThreeList[i])
-          }
+          list.push(this.dataForm.dataThreeList[i])
         }
         this.dataForm.dataThreeList = list
         /*console.log(time, 'async handleSaveRows')
@@ -102,6 +104,8 @@
         }
         let res = await this.$http.post('/taskReliability/TaskPhaseModel/save', this.dataForm)
         if (res.success) {
+          this.isChange = false;
+          this.lastSaveData = cloneDeep(list)
           console.log(res.data)
           await this.$tip.success()
           this.originalData = null
@@ -118,6 +122,8 @@
           this.dataList[i].productId = this.dataForm.productId
           this.dataList[i].phaseId = this.dataForm.phaseId
         }
+        this.lastSaveData = cloneDeep(this.$refs.tableObj.dataList)
+        console.log(this.lastSaveData)
       },
       handleCellClick(row, column) {
         this.editingCell = {row, column}
@@ -127,8 +133,30 @@
           }
         })
         console.log(this.editingCell, 'this.editingCell')
-      }
-      ,
+      },
+      change() {
+        console.log(this.$refs.tableObj.dataList, "this.$refs.tableObj.dataList")
+        console.log(this.lastSaveData, "this.lastSaveData")
+
+        let r = JSON.stringify(this.$refs.tableObj.dataList);
+        let l = JSON.stringify(this.lastSaveData);
+        console.log(r,'this.$refs.tableObj.dataList[i]')
+        console.log(l,'this.lastSaveData[i]')
+        if (r!==l){
+          this.isChange = true
+          return
+        }
+          /* for (let i = 0; i < this.$refs.tableObj.dataList.length; i++) {
+             if (this.$refs.tableObj.dataList[i] != this.lastSaveData[i]) {
+               console.log(i,'no')
+               console.log(this.$refs.tableObj.dataList[i],'this.$refs.tableObj.dataList[i]')
+               console.log(this.lastSaveData[i],'this.lastSaveData[i]')
+               this.isChange = true
+               return
+             }
+           }*/
+          this.isChange = false
+      },
 
     }
   }
diff --git a/zt/common/src/main/java/com/zt/common/entity/TreeNode2.java b/zt/common/src/main/java/com/zt/common/entity/TreeNode2.java
index d7652f1..6539cac 100644
--- a/zt/common/src/main/java/com/zt/common/entity/TreeNode2.java
+++ b/zt/common/src/main/java/com/zt/common/entity/TreeNode2.java
@@ -19,13 +19,13 @@
  */
 public interface TreeNode2<T> extends Serializable {
 
-    String getId();
+    Long getIid();
 
-    void setId(String id);
+    void setIid(Long iid);
 
-    String getPid();
+    Long getPid();
 
-    void setPid(String pid);
+    void setPid(Long pid);
 
     List<T> getChildren();
 
diff --git a/zt/common/src/main/java/com/zt/common/utils/TreeUtils.java b/zt/common/src/main/java/com/zt/common/utils/TreeUtils.java
index 3c93e95..a75bf5a 100644
--- a/zt/common/src/main/java/com/zt/common/utils/TreeUtils.java
+++ b/zt/common/src/main/java/com/zt/common/utils/TreeUtils.java
@@ -5,7 +5,6 @@
 import com.zt.common.exception.ErrorCode;
 import com.zt.common.exception.RenException;
 import com.zt.common.validator.AssertUtils;
-import com.zt.core.sys.model.SysDept;
 
 import java.lang.reflect.Field;
 import java.util.ArrayList;
diff --git a/zt/common/src/main/java/com/zt/common/utils/TreeUtils2.java b/zt/common/src/main/java/com/zt/common/utils/TreeUtils2.java
index 64a8f34..b277660 100644
--- a/zt/common/src/main/java/com/zt/common/utils/TreeUtils2.java
+++ b/zt/common/src/main/java/com/zt/common/utils/TreeUtils2.java
@@ -43,7 +43,7 @@
      */
     private static <T extends TreeNode2> T findChildren(List<T> treeNodes, T rootNode) {
         for (T treeNode : treeNodes) {
-            if (rootNode.getId().equals(treeNode.getPid())) {
+            if (rootNode.getIid().equals(treeNode.getPid())) {
                 rootNode.getChildren().add(findChildren(treeNodes, treeNode));
             }
         }
@@ -57,14 +57,14 @@
         List<T> result = new ArrayList<>();
 
         // list杞琺ap
-        Map<String, T> nodeMap = new LinkedHashMap<>(treeNodes.size());
+        Map<Long, T> nodeMap = new LinkedHashMap<>(treeNodes.size());
         for (T treeNode : treeNodes) {
-            nodeMap.put(treeNode.getId(), treeNode);
+            nodeMap.put(treeNode.getIid(), treeNode);
         }
 
         for (T node : nodeMap.values()) {
             T parent = nodeMap.get(node.getPid());
-            if (parent != null && !(node.getId().equals(parent.getId()))) {
+            if (parent != null && !(node.getIid().equals(parent.getIid()))) {
                 parent.getChildren().add(node);
                 continue;
             }
@@ -153,7 +153,7 @@
      * @return
      */
     public static <T extends TreeNode2> List<T> getAncestor(List<T> allNodes, Long id) {
-        Map<String, T> map = allNodes.stream().collect(Collectors.toMap(dept -> dept.getId(), dept -> dept));
+        Map<Long, T> map = allNodes.stream().collect(Collectors.toMap(item -> item.getIid(), item -> item));
         List<T> list = new ArrayList<>();
         TreeNode2 node = map.get(id);
         if (node != null) {
@@ -167,7 +167,7 @@
     }
 
     public static <T extends TreeNode2> T getTreeRoot(List<T> allNodes, Long id, Long rootParentId) {
-        Map<String, T> map = allNodes.stream().collect(Collectors.toMap(type -> type.getId(), type -> type));
+        Map<Long, T> map = allNodes.stream().collect(Collectors.toMap(type -> type.getIid(), type -> type));
         T parent = map.get(id);
         while (parent != null) {
             if (rootParentId.equals(parent.getPid())) {
@@ -191,10 +191,10 @@
         if (id == 0) {
             list.addAll(allNodes);
         } else {
-            if (allNodes.stream().filter(n -> n.getId().equals(id)).count() > 0) {
-                T node = allNodes.stream().filter(n -> n.getId().equals(id)).findFirst().get();
+            if (allNodes.stream().filter(n -> n.getIid().equals(id)).count() > 0) {
+                T node = allNodes.stream().filter(n -> n.getIid().equals(id)).findFirst().get();
                 list.add(node);
-                queryChildrenDepartmentRecursion((List<TreeNode2>) list, (List<TreeNode2>) allNodes, node.getId());
+                queryChildrenDepartmentRecursion((List<TreeNode2>) list, (List<TreeNode2>) allNodes, node.getIid());
             }
         }
         return list;
@@ -207,7 +207,7 @@
      * @param id
      * @return
      */
-    public static <T extends TreeNode2> List<T> getDescendant(List<T> allNodes, String id) {
+    public static <T extends TreeNode2> List<T> getDescendant(List<T> allNodes, Long id) {
         List<T> list = new ArrayList<>();
         queryChildrenDepartmentRecursion((List<TreeNode2>) list, (List<TreeNode2>) allNodes, id);
         return list;
@@ -216,10 +216,10 @@
     /**
      * 閫掑綊鏌ヨ瀛愯妭鐐�
      */
-    private static void queryChildrenDepartmentRecursion(List<TreeNode2> list, List<TreeNode2> allNodes, String id) {
+    private static void queryChildrenDepartmentRecursion(List<TreeNode2> list, List<TreeNode2> allNodes, Long id) {
         for (TreeNode2 node : allNodes.stream().filter(n -> n.getPid().equals(id)).collect(Collectors.toList())) {
             list.add(node);
-            queryChildrenDepartmentRecursion(list, allNodes, node.getId());
+            queryChildrenDepartmentRecursion(list, allNodes, node.getIid());
         }
     }
 
@@ -235,18 +235,18 @@
             throw new RenException("鏌ヨ淇℃伅澶辫触");
         }
         // 涓婄骇鑿滃崟涓嶈兘涓鸿嚜韬�
-        if (node.getId().equals(node.getPid())) {
+        if (node.getIid().equals(node.getPid())) {
             throw new RenException(ErrorCode.SUPERIOR_MENU_ERROR);
         }
         // 涓婄骇涓嶈兘涓轰笅绾�
         if (!dbNode.getPid().equals(node.getPid())) {// 灞傜骇鏀瑰彉浜�
-            if (node.getId().equals(node.getPid())) {
+            if (node.getIid().equals(node.getPid())) {
                 throw new RenException("涓婄骇涓嶈兘璁剧疆涓哄叾鏈韩锛�");
             }
 
-            List<T> list = TreeUtils2.getDescendant(allNodes, node.getId());
+            List<T> list = TreeUtils2.getDescendant(allNodes, node.getIid());
             for (T d : list) {
-                if (d.getId().equals(node.getPid())) {
+                if (d.getIid().equals(node.getPid())) {
                     throw new RenException("涓婄骇涓嶈兘璁剧疆涓哄叾涓嬬骇锛�");
                 }
             }

--
Gitblit v1.9.1