From 8bf8713da9f9ebf844af7ceefd462c2966070128 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期一, 15 七月 2024 08:34:37 +0800
Subject: [PATCH] 修改

---
 web/src/views/modules/basicInfo/ProductModelTree.vue                                                           |   37 +++-
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java       |  174 +++++++++++++++++++++++-
 web/src/views/modules/basicInfo/XhProductModel.vue                                                             |   55 ++++---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/controller/XhProductModelController.java |   31 +++
 web/src/views/modules/basicInfo/XhProductModel-AddOrUpdate.vue                                                 |   22 +-
 web/src/views/modules/taskReliability/TaskPhase.vue                                                            |    4 
 web/src/views/modules/basicInfo/ParamData.vue                                                                  |   42 +++---
 web/src/views/modules/taskReliability/Task.vue                                                                 |    7 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/XhProductModel.java                |    2 
 9 files changed, 289 insertions(+), 85 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/controller/XhProductModelController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/controller/XhProductModelController.java
index 989116c..f2df87c 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/controller/XhProductModelController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/controller/XhProductModelController.java
@@ -11,10 +11,13 @@
 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.core.service.ZtProductService;
+import com.zt.life.dto.ImportErrDto;
 import com.zt.life.modules.mainPart.basicInfo.model.ProductImg;
 import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel;
 import com.zt.life.modules.mainPart.basicInfo.service.XhProductModelService;
 import com.zt.life.modules.mainPart.sysPictureBase.service.SysPictureBaseService;
+import com.zt.life.util.ImportUtil;
 import com.zt.modules.oss.service.SysOssService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -22,9 +25,12 @@
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -40,9 +46,6 @@
     @Autowired
     private XhProductModelService xhProductModelService;
 
-
-    @Autowired
-    private SysOssService sysOssService;
     @Autowired
     private SysPictureBaseService sysPictureBaseService;
 
@@ -60,8 +63,8 @@
     }
 
     @GetMapping("tree")
-    public Result<List<XhProductModel>> getTreeList(Boolean showXdy) {
-        List<XhProductModel> list = xhProductModelService.getAllTree(showXdy);
+    public Result<List<XhProductModel>> getTreeList(Boolean showXdy,Integer ztShow) {
+        List<XhProductModel> list = xhProductModelService.getAllTree(showXdy,ztShow);
 
         return Result.ok(list);
     }
@@ -94,6 +97,24 @@
         return Result.ok(list);
     }
 
+    @PostMapping("importProductExcel")
+    @ApiOperation("瀵煎叆浜у搧妯″瀷")
+    @LogOperation("瀵煎叆浜у搧妯″瀷")
+    public Result importProductExcel(MultipartFile file, String progressId,Long pid) {
+        Result<List<ImportErrDto>> result = Result.ok();
+        try {
+            List<Map<String, Object>> importResults = xhProductModelService.importProductExcel(file,progressId,pid);
+            StringBuilder str = new StringBuilder();
+            ImportUtil.importResult(result, importResults, str);
+            ImportUtil.ImportErrResult(result, importResults, str);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+
     @PostMapping
     @ApiOperation("鏂板")
     @LogOperation("鏂板")
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/XhProductModel.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/XhProductModel.java
index 1dcbd36..2f9e5d9 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/XhProductModel.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/model/XhProductModel.java
@@ -27,6 +27,8 @@
 
 	@ApiModelProperty(value = "涓婄骇ID")
 	private Long pid;
+	@ApiModelProperty(value = "鎬讳綋ID")
+	private Long shipId;
 	@ApiModelProperty(value = "婧怚D")
 	private Long srcId;
 	@ApiModelProperty(value = "鍚嶇О")
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java
index 5bb44b6..ad9d5a7 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/service/XhProductModelService.java
@@ -3,14 +3,35 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.zt.common.constant.Constant;
 import com.zt.common.service.BaseService;
+import com.zt.common.utils.CacheUtils;
+import com.zt.common.utils.CommonUtils;
 import com.zt.common.utils.TreeUtils;
+import com.zt.common.utils.UUIDUtil;
+import com.zt.core.shiro.ImportUtil;
+import com.zt.life.core.model.ZtProduct;
 import com.zt.life.modules.mainPart.basicInfo.dao.XhProductModelDao;
+import com.zt.life.modules.mainPart.basicInfo.model.ParamData;
 import com.zt.life.modules.mainPart.basicInfo.model.ProductImg;
 import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel;
+import com.zt.modules.sys.dto.DictTypeDto;
+import com.zt.modules.sys.model.SysDictData;
+import com.zt.modules.sys.model.SysDictType;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.zt.common.db.query.QueryFilter;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.List;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 
 /**
@@ -21,7 +42,7 @@
  */
 @Service
 public class XhProductModelService extends BaseService<XhProductModelDao, XhProductModel> {
-
+      @Autowired ParamDataService paramDataService;
     /**
      * 鍒嗛〉鏌ヨ
      *
@@ -42,14 +63,22 @@
         super.deleteLogic(ids);
     }
 
-    public List<XhProductModel> getAllTree(Boolean showXdy) {
-        List<XhProductModel> productList;
+    public List<XhProductModel> getAllTree(Boolean showXdy, Integer ztShow) {
+        List<XhProductModel> productList = null;
         if (showXdy) {
             productList = baseDao.selectList(new QueryWrapper<XhProductModel>().eq(Constant.TableColumn.IS_DELETE,
                     Constant.Bool.NO).gt("product_type", 1).orderByAsc(Constant.TableColumn.SORT));
         } else {
-            productList = baseDao.selectList(new QueryWrapper<XhProductModel>().eq(Constant.TableColumn.IS_DELETE,
-                    Constant.Bool.NO).gt("product_type", 1).ne("product_type", 10).orderByAsc(Constant.TableColumn.SORT));
+            if (ztShow == 1) {
+                productList = baseDao.selectList(new QueryWrapper<XhProductModel>().eq(Constant.TableColumn.IS_DELETE,
+                        Constant.Bool.NO).gt("product_type", 1).ne("product_type", 10).orderByAsc(Constant.TableColumn.SORT));
+            } else if (ztShow == 2) {
+                productList = baseDao.selectList(new QueryWrapper<XhProductModel>().eq(Constant.TableColumn.IS_DELETE,
+                        Constant.Bool.NO).gt("product_type", 2).ne("product_type", 10).orderByAsc(Constant.TableColumn.SORT));
+            } else if (ztShow == 3) {
+                productList = baseDao.selectList(new QueryWrapper<XhProductModel>().eq(Constant.TableColumn.IS_DELETE,
+                        Constant.Bool.NO).gt("product_type", 3).ne("product_type", 10).orderByAsc(Constant.TableColumn.SORT));
+            }
 
         }
         return TreeUtils.build(productList);
@@ -59,7 +88,7 @@
         if (baseDao.getNo(pid, productType) == null) {
             return 0;
         }
-        return baseDao.getNo(pid,productType);
+        return baseDao.getNo(pid, productType);
     }
 
     public List<XhProductModel> getProductList() {
@@ -68,12 +97,139 @@
     }
 
     public List<ProductImg> getProduct(Long productId) {
-        XhProductModel model =this.get(productId);
+        XhProductModel model = this.get(productId);
         Long parentId = model.getPid();
-        return baseDao.getProduct(productId,parentId);
+        return baseDao.getProduct(productId, parentId);
     }
 
     public List<XhProductModel> getTaskProductList() {
         return baseDao.getTaskProductList();
     }
+
+    public List<Map<String, Object>> importProductExcel(MultipartFile mutFile, String progressId, Long shipId) {
+        int count = 0;
+        Date beginDate = new Date();
+        List<Map<String, Object>> list = new ArrayList<>();//瀛樺偍鎵�鏈夌殑瀵煎叆鐘舵��
+        Map<String, Object> map;//瀛樺偍姣忎竴琛岀殑鐘舵��
+        Integer sum = 0; // 鎬诲叡鐨勬潯鏁�
+        Integer suc = 0; // 鎴愬姛鐨勬潯鏁�
+        Integer err = 0; // 澶辫触鐨勬潯鏁�
+        int row1 = 0;
+        Map<String, Object> errMap = new HashMap<>();
+        Map<String, Integer> reliabType = new HashMap<>();
+        reliabType.put("鎸囨暟鍒嗗竷", 1);
+        reliabType.put("浜岄」鍒嗗竷", 2);
+        reliabType.put("濞佸竷灏斿垎甯�", 3);
+        Map<String, Integer> repairType = new HashMap<>();
+        repairType.put("鎸囨暟鍒嗗竷", 1);
+        repairType.put("濞佸竷灏斿垎甯�", 2);
+        Map<String, Integer> isOrNot = new HashMap<>();
+        isOrNot.put("鏄�", 1);
+        isOrNot.put("鍚�", 2);
+        try {
+            // 鑾峰彇瀵煎叆鏂囦欢鐨勫悗缂�鍚�
+            String fileName = mutFile.getOriginalFilename();
+            Workbook workbook = null;
+            //瑙e喅excel鐗堟湰闂
+            if (fileName != null && fileName.endsWith(".xls")) {
+                workbook = new HSSFWorkbook(mutFile.getInputStream());
+            } else if (fileName != null && fileName.endsWith(".xlsx")) {
+                workbook = new XSSFWorkbook(mutFile.getInputStream());
+            }
+            assert workbook != null; //鏂█濡傛灉[boolean琛ㄨ揪寮廬涓簍rue锛屽垯绋嬪簭缁х画鎵ц銆� 濡傛灉涓篺alse锛屽垯绋嬪簭鎶涘嚭AssertionError锛屽苟缁堟鎵ц銆�
+            int sheets = workbook.getNumberOfSheets();
+
+            //List<LifeManagement> lifeManagementList = new ArrayList<LifeManagement>();
+            String xt = null;
+            String fxt = null;
+            if (sheets == 1) {
+                for (int i = 0; i < sheets; i++) {
+                    Sheet sheet = workbook.getSheetAt(i);
+                    int num = sheet.getLastRowNum(); // 涓�鍏辨湁澶氬皯琛�
+                    for (int j = 1; j <= num; j++) {
+                        CacheUtils.put(progressId, "speed", CommonUtils.getPercent(j, num));
+                        CacheUtils.put(progressId, "msg", "鍏�" + num + "琛岋紝宸插畬鎴愮" + j + "琛�");
+                        DictTypeDto lifeManagement = new DictTypeDto();
+                        boolean isErr = false;
+                        row1 = j + 1;
+                        String pattern = "yyyy-MM-dd";
+                        Row row = sheet.getRow(row1);
+                        String sort = com.zt.core.shiro.ImportUtil.getCellValue(row, 0, pattern); //搴忓彿
+                        if (com.zt.core.shiro.ImportUtil.getCellValue(row, 1, pattern) != null) {
+                            xt = com.zt.core.shiro.ImportUtil.getCellValue(row, 1, pattern); //绯荤粺
+                        }
+                        if (com.zt.core.shiro.ImportUtil.getCellValue(row, 2, pattern) != null) {
+                            fxt = com.zt.core.shiro.ImportUtil.getCellValue(row, 2, pattern); //鍒嗙郴缁�
+                        }
+                        String sb = com.zt.core.shiro.ImportUtil.getCellValue(row, 3, pattern); //璁惧
+                        String reliabDistribType = com.zt.core.shiro.ImportUtil.getCellValue(row, 4, pattern); //鍙潬鎬у垎甯冪被鍨�
+                        String basicJoinCompute = com.zt.core.shiro.ImportUtil.getCellValue(row, 5, pattern); //鍙傚姞璁$畻
+                        String basicMtbfRegulate = com.zt.core.shiro.ImportUtil.getCellValue(row, 6, pattern); //mtbf
+                        String basicMtbfRegulSuccRate = com.zt.core.shiro.ImportUtil.getCellValue(row, 7, pattern); //鎴愬姛鐜�
+                        String basicMtbfOperatingRatio = com.zt.core.shiro.ImportUtil.getCellValue(row, 8, pattern); //杩愯姣�
+                        String taskMtbcfRegulate = com.zt.core.shiro.ImportUtil.getCellValue(row, 9, pattern); //mtbcf
+                        String taskMtbcfOtherParams2 = com.zt.core.shiro.ImportUtil.getCellValue(row, 10, pattern); //mtbcf鍏朵粬鍙傛暟2
+                        String taskMtbcfOtherParams3 = com.zt.core.shiro.ImportUtil.getCellValue(row, 11, pattern); //mtbcf鍏朵粬鍙傛暟3
+                        String taskMtbcfRegulSuccRate = com.zt.core.shiro.ImportUtil.getCellValue(row, 12, pattern); //mtbcf鎴愬姛鐜�
+                        String taskMtbcfOperatingRatio = com.zt.core.shiro.ImportUtil.getCellValue(row, 13, pattern); //mtbcf杩愯姣�
+                        String repairable = com.zt.core.shiro.ImportUtil.getCellValue(row, 14, pattern); //鏄惁鍙淮淇�
+                        String repairDistribType = com.zt.core.shiro.ImportUtil.getCellValue(row, 15, pattern); //缁翠慨鍙戝竷绫诲瀷
+                        String repairMttcr = com.zt.core.shiro.ImportUtil.getCellValue(row, 16, pattern); //mttcr
+                        String repairMttcrOtherParams2 = com.zt.core.shiro.ImportUtil.getCellValue(row, 17, pattern); //mttcr鍏朵粬鍙傛暟2
+                        String repairMttcrOtherParams3 = com.zt.core.shiro.ImportUtil.getCellValue(row, 18, pattern); //mttcr鍏朵粬鍙傛暟3
+
+                        XhProductModel xhProductModel = new XhProductModel();
+                        xhProductModel.setShipId(shipId);
+                        Long id =UUIDUtil.generateId();
+                        xhProductModel.setId(id);
+                        xhProductModel.setName(xt);
+                        xhProductModel.setProductType("3");
+                        this.insert(xhProductModel);
+
+                        //瀵煎叆棰勮鍙傛暟
+                        ParamData itemEntity = new ParamData();
+                        //缁戝畾璁惧ID
+                        itemEntity.setProductId(id);
+                        itemEntity.setName(sb);
+                        itemEntity.setReliabDistribType(reliabType.get(reliabDistribType));
+                        itemEntity.setBasicJoinCompute(isOrNot.get(basicJoinCompute));
+                        itemEntity.setBasicMtbfRegulate(basicMtbfRegulate);
+                        itemEntity.setBasicMtbfRegulSuccRate(basicMtbfRegulSuccRate);
+                        itemEntity.setBasicMtbfOperatingRatio(basicMtbfOperatingRatio);
+                        itemEntity.setTaskMtbcfRegulate(taskMtbcfRegulate);
+                        itemEntity.setTaskMtbcfOtherParams(taskMtbcfOtherParams2 + "," + taskMtbcfOtherParams3);
+                        itemEntity.setTaskMtbcfRegulSuccRate(taskMtbcfRegulSuccRate);
+                        itemEntity.setTaskMtbcfOperatingRatio(taskMtbcfOperatingRatio);
+                        itemEntity.setRepairable(isOrNot.get(repairable));
+                        itemEntity.setRepairDistribType(repairType.get(repairDistribType));
+                        itemEntity.setRepairMttcr(repairMttcr);
+                        itemEntity.setRepairMttcrOtherParams(repairMttcrOtherParams2 + "," + repairMttcrOtherParams3);
+                        paramDataService.insert(itemEntity);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            ImportUtil.updateErrMap(errMap, "瀵煎叆寮傚父" + e.getMessage(), "", row1);
+            //err++;
+        }
+      /*  if (batchList.size() > 0 && err == 0) {
+            super.insertBatch(batchList, 100);
+            baseDao.updateOldId();
+        }
+        if (batchUpdateList.size() > 0) {
+            super.updateBatch(batchUpdateList, 100);
+        }*/
+        Date nowDate = new Date();
+        String msg = "浜у搧妯″瀷瀵煎叆鏃堕棿锛�" + CommonUtils.getDatePoor(nowDate, beginDate) + "\r\n";
+        System.out.println(msg);
+        suc = sum - err;
+        map = new HashMap<>();
+        map.put("sum", sum + ""); // 鎵�鏈夊鍏ョ殑鏉℃暟
+        map.put("suc", suc + ""); // 鎴愬姛鐨勬潯鏁�
+        map.put("err", err + ""); // 澶辫触鐨勬潯鏁�
+        list.add(map);
+        list.add(errMap);
+        return list;
+    }
 }
diff --git a/web/src/views/modules/basicInfo/ParamData.vue b/web/src/views/modules/basicInfo/ParamData.vue
index 052c79d..f90d815 100644
--- a/web/src/views/modules/basicInfo/ParamData.vue
+++ b/web/src/views/modules/basicInfo/ParamData.vue
@@ -46,7 +46,7 @@
                   <el-table-column v-if="dataForm.productType==='3'||dataForm.productType==='2'"
                                    prop="reliabDistribType"
                                    label="鍙潬鎬у垎甯冪被鍨�" :key="27"
-                                   width="100">
+                                   >
                     <template v-slot="{ row }">
                       <el-select v-if="row.isEdit" v-model="row.reliabDistribType"
                                  placeholder="璇烽�夋嫨">
@@ -78,7 +78,7 @@
                   <el-table-column v-if="dataForm.productType==='3'||dataForm.productType==='2'" :key="5"
                                    label="鍩烘湰鍙潬鎬ц绠�">
                     <!--                <zt-table-column-dict prop="joinCompute" :keys="6" label="鍙傚姞璁$畻" width="100" dict="is_or_not"/>-->
-                    <el-table-column prop="basicJoinCompute" label="鍙傚姞璁$畻" :key="6">
+                    <el-table-column prop="basicJoinCompute" label="鍙傚姞璁$畻" :key="6"  width="100">
                       <template v-slot="{ row }">
                         <el-select v-if="row.isEdit" v-model="row.basicJoinCompute"
                                    placeholder="鍙傚姞璁$畻">
@@ -93,30 +93,30 @@
                                      :typeColor="typeColor" :size="size" :effect="effect" :hit="hit"/>
                       </template>
                     </el-table-column>
-                    <el-table-column prop="basicMtbfRegulate" :key="7" label="瑙勫畾MTBF">
+                    <el-table-column prop="basicMtbfRegulate" :key="7" label="MTBF">
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.basicMtbfRegulate"></el-input>
                         <span v-else v-text="scope.row.basicMtbfRegulate"></span>
                       </template>
                     </el-table-column>
-                    <el-table-column prop="basicMtbfAccept" :key="8" label="鍙帴鍙楃殑MTBF" width="100">
+                    <!--<el-table-column prop="basicMtbfAccept" :key="8" label="鍙帴鍙楃殑MTBF" width="100">
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.basicMtbfAccept"></el-input>
                         <span v-else v-text="scope.row.basicMtbfAccept"></span>
                       </template>
-                    </el-table-column>
-                    <el-table-column prop="basicMtbfRegulSuccRate" :key="9" label="MTBF瑙勫畾鎴愬姛鐜�">
+                    </el-table-column>-->
+                    <el-table-column prop="basicMtbfRegulSuccRate" :key="9" label="MTBF鎴愬姛鐜�" >
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.basicMtbfRegulSuccRate"></el-input>
                         <span v-else v-text="scope.row.basicMtbfRegulSuccRate"></span>
                       </template>
                     </el-table-column>
-                    <el-table-column prop="basicMtbfAcceptSuccRate" :key="10" label="MTBF鍙帴鍙楁垚鍔熺巼" width="140">
+                   <!-- <el-table-column prop="basicMtbfAcceptSuccRate" :key="10" label="MTBF鍙帴鍙楁垚鍔熺巼" width="120">
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.basicMtbfAcceptSuccRate"></el-input>
                         <span v-else v-text="scope.row.basicMtbfAcceptSuccRate"></span>
                       </template>
-                    </el-table-column>
+                    </el-table-column>-->
                     <el-table-column prop="basicUnitNum" label="鍗曞厓鏁伴噺" :key="11" width="100">
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.basicUnitNum"></el-input>
@@ -129,13 +129,13 @@
                         <span v-else v-text="scope.row.basicRunsNum"></span>
                       </template>
                     </el-table-column>
-                    <el-table-column prop="basicMtbfOperatingRatio" :key="13" label="MTBF杩愯姣�" width="80">
+                    <el-table-column prop="basicMtbfOperatingRatio" :key="13" label="MTBF杩愯姣�" >
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.basicMtbfOperatingRatio"></el-input>
                         <span v-else v-text="scope.row.basicMtbfOperatingRatio"></span>
                       </template>
                     </el-table-column>
-                    <el-table-column prop="basicSingleRunTime" :key="14" label="杩愯鏃堕棿" width="100">
+                    <el-table-column prop="basicSingleRunTime" :key="14" label="杩愯鏃堕棿" >
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.basicSingleRunTime"></el-input>
                         <span v-else v-text="scope.row.basicSingleRunTime"></span>
@@ -164,37 +164,37 @@
 
                   <el-table-column v-if="dataForm.productType==='3'||dataForm.productType==='2'" :key="15"
                                    label="浠诲姟鍙潬鎬ц绠�">
-                    <el-table-column prop="taskMtbcfRegulate" :key="16" label="瑙勫畾MTBCF" width="100">
+                    <el-table-column prop="taskMtbcfRegulate" :key="16" label="MTBCF" width="100">
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.taskMtbcfRegulate"></el-input>
                         <span v-else v-text="scope.row.taskMtbcfRegulate"></span>
                       </template>
                     </el-table-column>
-                    <el-table-column prop="taskMtbcfAccept" :key="17" label="鍙帴鍙楃殑MTBCF" width="100">
+                    <!--<el-table-column prop="taskMtbcfAccept" :key="17" label="鍙帴鍙楃殑MTBCF" width="100">
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.taskMtbcfAccept"></el-input>
                         <span v-else v-text="scope.row.taskMtbcfAccept"></span>
                       </template>
-                    </el-table-column>
-                    <el-table-column prop="taskMtbcfRegulSuccRate" :key="18" label="MTBCF瑙勫畾鎴愬姛鐜�" width="120">
+                    </el-table-column>-->
+                    <el-table-column prop="taskMtbcfRegulSuccRate" :key="18" label="MTBCF鎴愬姛鐜�" >
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.taskMtbcfRegulSuccRate"></el-input>
                         <span v-else v-text="scope.row.taskMtbcfRegulSuccRate"></span>
                       </template>
                     </el-table-column>
-                    <el-table-column prop="taskMtbcfAcceptSuccRate" :key="19" label="MTBCF鍙帴鍙楁垚鍔熺巼" width="140">
+                   <!-- <el-table-column prop="taskMtbcfAcceptSuccRate" :key="19" label="MTBCF鍙帴鍙楁垚鍔熺巼" width="100">
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.taskMtbcfAcceptSuccRate"></el-input>
                         <span v-else v-text="scope.row.taskMtbcfAcceptSuccRate"></span>
                       </template>
-                    </el-table-column>
-                    <el-table-column prop="taskMtbcfOperatingRatio" :key="20" label="MTBCF杩愯姣�" width="100">
+                    </el-table-column>-->
+                    <el-table-column prop="taskMtbcfOperatingRatio" :key="20" label="MTBCF杩愯姣�">
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.taskMtbcfOperatingRatio"></el-input>
                         <span v-else v-text="scope.row.taskMtbcfOperatingRatio"></span>
                       </template>
                     </el-table-column>
-                    <el-table-column prop="taskMtbcfOtherParams" :key="21" label="MTBCF鍏朵粬鍙傛暟">
+                    <el-table-column prop="taskMtbcfOtherParams" :key="21" label="MTBCF鍏朵粬鍙傛暟" >
                       <template slot-scope="scope">
                         <el-input v-if="scope.row.isEdit" v-model="scope.row.taskMtbcfOtherParams"></el-input>
                         <span v-else v-text="scope.row.taskMtbcfOtherParams"></span>
@@ -203,7 +203,7 @@
                   </el-table-column>
                   <el-table-column v-if="dataForm.productType==='3'||dataForm.productType==='2'" :key="22" label="缁翠慨鍒嗗竷">
                     <!--                <zt-table-column-dict prop="repairable" :keys="23" label="鍙淮淇�" dict="is_or_not"/>-->
-                    <el-table-column prop="repairable" label="鍙淮淇�" :key="23">
+                    <el-table-column prop="repairable" label="鍙淮淇�" :key="23" width="80">
                       <template v-slot="{ row }">
                         <el-select v-if="row.isEdit" v-model="row.repairable"
                                    placeholder="璇烽�夋嫨">
@@ -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="100">
+                    <el-table-column prop="repairDistribType" label="缁翠慨鍒嗗竷绫诲瀷" :key="24" width="130">
                       <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="120">
+                    <el-table-column prop="repairMttcrOtherParams" :key="26" label="MTTCR鍏朵粬鍙傛暟" >
                       <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/basicInfo/ProductModelTree.vue b/web/src/views/modules/basicInfo/ProductModelTree.vue
index a8edb11..5949b1d 100644
--- a/web/src/views/modules/basicInfo/ProductModelTree.vue
+++ b/web/src/views/modules/basicInfo/ProductModelTree.vue
@@ -7,7 +7,7 @@
       size="small"
       clearable
     ></el-input>
-    <el-button type="primary" @click="add()" style="margin: 10px 0 0 10px;padding: 9px 18px !important;">鏂板</el-button>
+    <el-button type="primary" @click="add()" style="margin: 10px 0 0 10px;padding: 9px 18px !important;">鏂板鍨嬪彿</el-button>
     <el-divider></el-divider>
     <el-tree
       style="height: 90%;overflow: auto"
@@ -15,6 +15,8 @@
       :data="productList"
       :props="defaultProps"
       default-expand-all
+      node-key="id"
+      :current-node-key="defaultId"
       :expand-on-click-node="false"
       :highlight-current="true"
       @node-click="handleNodeClick"
@@ -35,12 +37,17 @@
         type: Boolean,
         default: true
       },
+      basic: {
+        type: Number,
+        default: 1
+      },
     },
 
     data() {
       return {
         filterText: '',
         productList: [],
+        defaultId: '',
         defaultProps: {
           children: 'children',
           label: 'name'
@@ -60,30 +67,38 @@
     ,
     mounted() {
       this.getProductList()
-    }
-    ,
+    },
     methods: {
       // 鑾峰彇绯荤粺鍒楄〃
       async getProductList() {
         let params = {
-          showXdy:this.showXdy
+          showXdy: this.showXdy,
+          ztShow: this.basic
         }
-        let res = await this.$http.get('/basicInfo/XhProductModel/tree',{params:params})
+        let res = await this.$http.get('/basicInfo/XhProductModel/tree', {params: params})
         this.productList = res.data
+        if (this.basic) {
+          if (this.productList && this.productList[0].children) {
+            this.defaultId = this.productList[0].children[0].id
+            console.log(this.defaultId, 'this.defaultID')
+            this.$nextTick(() => {
+              this.$refs.tree.setCurrentKey(this.defaultId); //涓�瀹氳鍔犺繖涓�変腑浜嗗惁鍒欐牱寮忔病鏈夊嚭鏉�
+            });
+            this.$emit('on-default', this.defaultId)
+          }
+        }
         console.log(res.data, 'async getProductList()')
-      }
-      ,
+      },
       add() {
-        this.$refs.AddOrUpdate.$refs.dialog.init(null, {id: null, type: 'tree'})
-      }
-      ,
+        this.$refs.AddOrUpdate.$refs.dialog.init(null, {id: null, type: 'xh'})
+      },
       filterNode(value, data) {
         if (!value) return true
         return data.name.indexOf(value) !== -1
       },
       handleNodeClick(data) {
         this.$emit('on-selected', data)
-      }
+      },
     }
   }
 </script>
diff --git a/web/src/views/modules/basicInfo/XhProductModel-AddOrUpdate.vue b/web/src/views/modules/basicInfo/XhProductModel-AddOrUpdate.vue
index 361ed3c..f48641b 100644
--- a/web/src/views/modules/basicInfo/XhProductModel-AddOrUpdate.vue
+++ b/web/src/views/modules/basicInfo/XhProductModel-AddOrUpdate.vue
@@ -1,7 +1,7 @@
 <template>
   <zt-dialog ref="dialog" @confirm="formSubmit">
     <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
-      <zt-form-item label="涓婄骇绯荤粺" prop="pid" v-if="isTree">
+      <zt-form-item label="涓婄骇绯荤粺" prop="pid" v-if="isShow">
         <zt-combo-tree v-model="dataForm.pid" :datas="productList"/>
       </zt-form-item>
       <zt-form-item label="鍚嶇О" prop="name" rules="required">
@@ -33,7 +33,6 @@
       return {
         disabled: false,
         url: `${window.SITE_CONFIG['apiURL']}/sysPictureBase/getSvgImage?token=${Cookies.get('token')}&id=`,
-        isTree: false,
         isShow: true,
         fileId: '',
         productList: [],
@@ -54,9 +53,13 @@
     },
     methods: {
       init(id, params) {
-        if (params.type === 'tree') {
-          this.isTree = true
+        if (params.type === 'xh') {
           this.isShow = false
+          this.dataForm.pid = null
+          this.dataForm.productType = 5
+        } else if (params.type === 'zt') {
+          this.dataForm.pid = params.pid
+          this.dataForm.productType = 4
           this.getProductList()
         } else {
           this.dataForm.pid = params.pid
@@ -65,7 +68,6 @@
         if (this.dataForm.productType === 10 && id == null) {
           this.getDefaultImg(this.dataForm.productType)
         }
-        this.disabled = !!id;
       },
       // 鑾峰彇绯荤粺鍒楄〃
       async getProductList() {
@@ -101,18 +103,12 @@
       // 琛ㄥ崟鎻愪氦
       async formSubmit() {
         let flag = true
-        if (this.isTree) {
-          if (this.dataForm.productType !== '5' || this.dataForm.productType !== '4') {
-            this.$alert("涓嶆敮鎸佹柊澧炴鑺傜偣")
-            flag = false
-          }
-        } else {
-          if (this.dataForm.productType === '5' || this.dataForm.productType === '4') {
+        if (this.isShow) {
+          if (this.dataForm.productType === '5') {
             this.$alert("涓嶆敮鎸佹柊澧炴鑺傜偣")
             flag = false
           }
         }
-
         if (!flag) {
           return
         }
diff --git a/web/src/views/modules/basicInfo/XhProductModel.vue b/web/src/views/modules/basicInfo/XhProductModel.vue
index b1444f6..640b5b5 100644
--- a/web/src/views/modules/basicInfo/XhProductModel.vue
+++ b/web/src/views/modules/basicInfo/XhProductModel.vue
@@ -8,7 +8,7 @@
       </el-col>
       <el-col :span="19">
         <div class="mod-basicInfo-xhProductModel fa-card-a" style="margin-left: 5px;">
-          <zt-table-wraper ref="tableObj"  defaultNotQuery="true" query-url="/basicInfo/XhProductModel/page"
+          <zt-table-wraper ref="tableObj" defaultNotQuery="true" query-url="/basicInfo/XhProductModel/page"
                            delete-url="/basicInfo/XhProductModel/ "
                            :paging='false'
                            v-slot="{ table }">
@@ -35,11 +35,18 @@
                 </template>
               </el-table-column>
               <el-table-column prop="sort" label="鎺掑簭" width="100px"/>
-              <zt-table-column-handle :table="table" width="150px"/>
+              <zt-table-column-handle :table="table" width="180px">
+                <template v-slot="{ row }">
+                  <zt-table-button v-if="productType==='5'" size="small" type="primary"
+                                   @click="importData(row)">瀵煎叆
+                  </zt-table-button>
+                </template>
+              </zt-table-column-handle>
             </el-table>
             <!-- 寮圭獥, 鏂板 / 淇敼 -->
             <add-or-update @refreshDataList="refreshData" ref="AddOrUpdate"/>
             <select-ty-model @refreshDataList="refreshData" ref="SelectTyModel"/>
+            <product-import @refreshDataList="refreshData" ref="ProductImport" />
           </zt-table-wraper>
         </div>
       </el-col>
@@ -53,6 +60,7 @@
   import ProductModelTree from "./ProductModelTree";
   import Cookies from "js-cookie";
   import TyProductModel from "./TyProductModel-AddOrUpdate";
+  import ProductImport from "./ProductImport";
 
   export default {
     data() {
@@ -61,13 +69,14 @@
         productType: '',
         dataForm: {
           name: '',
-          type:'',
+          type: '',
           pid: '',
-          srcId:'',
+          srcId: '',
         }
       }
     },
     components: {
+      ProductImport,
       TyProductModel,
       ProductModelTree,
       AddOrUpdate,
@@ -75,31 +84,30 @@
     },
     methods: {
       add() {
-        this.dataForm.type=this.productType
-        if (this.dataForm.type !== '3') {
-          console.log(1111)
-          console.log(this.dataForm.type,'add() {')
-          this.dataForm.type = this.dataForm.type - 1
-        } else if (this.dataForm.type === '3') {
-          console.log(2222)
-          console.log(this.dataForm.type,'add() {')
-          this.dataForm.type = this.dataForm.type - 2
-        }else if (this.dataForm.type === '0'){
-          console.log(this.dataForm.type,'add() {')
-          this.$alert("褰撳墠鑺傜偣涓嶅彲鏂板瀛愯妭鐐癸紝璇烽噸鏂拌缃�")
-          return
+        this.dataForm.type = this.productType
+        if (this.dataForm.type !== '5') {
+          if (this.dataForm.type !== '3') {
+            this.dataForm.type = this.dataForm.type - 1
+          } else if (this.dataForm.type === '3') {
+            this.dataForm.type = this.dataForm.type - 2
+          } else if (this.dataForm.type === '0') {
+            this.$alert("褰撳墠鑺傜偣涓嶅彲鏂板瀛愯妭鐐癸紝璇烽噸鏂拌缃�")
+            return
+          }
+          this.$refs.SelectTyModel.$refs.dialog.init(null, {type: this.dataForm.type, id: this.dataForm.pid})
+        } else {
+          this.$refs.AddOrUpdate.$refs.dialog.init(null, {id: null, type: 'zt', pid: this.dataForm.pid})
         }
-        this.$refs.SelectTyModel.$refs.dialog.init(null,{type:this.dataForm.type,id:this.dataForm.pid})
       },
-      addCell(){
-        this.$refs.AddOrUpdate.$refs.dialog.init(null,{type:10,pid:this.dataForm.pid})
+      addCell() {
+        this.$refs.AddOrUpdate.$refs.dialog.init(null, {type: 10, pid: this.dataForm.pid})
       },
       cellStyle({column}) {
         if (column.label === '鍚嶇О') {
           return 'text-align: left !important;'
         }
       },
-      refreshData(){
+      refreshData() {
         this.$refs.tableObj.query()
         this.$refs.ProductModelTree.getProductList()
       },
@@ -108,9 +116,12 @@
         this.dataForm.pid = data.id
         this.dataForm.type = data.productType
         this.productType = data.productType
-        if(data.productType!=='10'){
+        if (data.productType !== '10') {
           this.$refs.tableObj.query()
         }
+      },
+      importData(row) {
+        this.$refs.ProductImport.$refs.dialog.init(row.id)
       }
     }
   }
diff --git a/web/src/views/modules/taskReliability/Task.vue b/web/src/views/modules/taskReliability/Task.vue
index fb627c9..c539733 100644
--- a/web/src/views/modules/taskReliability/Task.vue
+++ b/web/src/views/modules/taskReliability/Task.vue
@@ -19,15 +19,18 @@
                 @row-click="selectTask"
                 @selection-change="table.selectionChangeHandle">
         <el-table-column type="selection" width="40" align="center"/>
-        <el-table-column prop="taskName" label="浠诲姟鍚嶇О" align="center"/>
+        <el-table-column prop="taskName" label="浠诲姟鍚嶇О" align="center" width="120"/>
         <!--<el-table-column prop="taskSort" label="浠诲姟椤哄簭" align="center"/>-->
         <el-table-column prop="taskDuration" label="浠诲姟鎬绘椂闀�" align="right" width="120"/>
+        <el-table-column prop="taskStaus" label="鐘舵��" align="center" width="75">
+
+        </el-table-column>
         <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>
+      <task-bino-param ref="taskBinoParam"></task-bino-param>
     </zt-table-wraper>
   </div>
 </template>
diff --git a/web/src/views/modules/taskReliability/TaskPhase.vue b/web/src/views/modules/taskReliability/TaskPhase.vue
index b2915f7..f28e47f 100644
--- a/web/src/views/modules/taskReliability/TaskPhase.vue
+++ b/web/src/views/modules/taskReliability/TaskPhase.vue
@@ -1,12 +1,12 @@
 <template>
   <div>
     <el-row :gutter="5">
-      <el-col :span="7">
+      <el-col :span="8">
         <div class="fa-card-a" style="margin-right: 5px;">
           <task @onTaskSelected="onTaskSelected" ref="task"/>
         </div>
       </el-col>
-      <el-col :span="11">
+      <el-col :span="10">
         <div class="mod-taskReliability-taskPhase fa-card-a" style="margin-left: 5px;margin-right: 5px;">
           <zt-table-wraper ref="tableObj" defaultNotQuery="true" query-url="/taskReliability/TaskPhase/page"
                            delete-url="/taskReliability/TaskPhase/"

--
Gitblit v1.9.1