From b42429445c22164e951d514348115ee593379026 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期六, 02 十一月 2024 18:44:54 +0800
Subject: [PATCH] 增加下载xml,禁止一键排版以及修改型号节点上级节点

---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ReliabilityAssessDao.java               |    2 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java           |   84 ++++++++++++++
 modules/mainPart/src/main/resources/mapper/taskReliability/ReliabilityAssessDao.xml                                     |    9 +
 web/src/views/modules/taskReliability/RBD-edit-img.vue                                                                  |   23 ++-
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java       |   62 +++++++--
 web/src/views/modules/taskReliability/ReliabilityAssess.vue                                                             |   28 ++++
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java     |    7 +
 web/src/views/modules/taskReliability/TimeDiagram.vue                                                                   |   27 ++++
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/ModelRbd.java                         |    3 
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/controller/XhProductModelController.java          |    7 +
 web/src/views/modules/taskReliability/SimulatAssess.vue                                                                 |   67 ++++++++---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ReliabilityAssessController.java |    7 +
 12 files changed, 278 insertions(+), 48 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 f515f52..7f07865 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
@@ -105,7 +105,14 @@
 
     @GetMapping("getProductList")
     public Result<List<XhProductModel>> getProductList(Long shipId, Integer productType) {
+        if(productType==2){
+            shipId =null;
+        }
         List<XhProductModel> list = xhProductModelService.getProductList(shipId, productType - 1);
+        if(productType == 5){
+            List<XhProductModel> list2 =  xhProductModelService.getProductList(shipId, productType - 2);
+            list.addAll(list2);
+        }
         return Result.ok(list);
     }
 
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ReliabilityAssessController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ReliabilityAssessController.java
index d37f069..85be829 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ReliabilityAssessController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ReliabilityAssessController.java
@@ -30,6 +30,8 @@
 import org.springframework.web.multipart.MultipartFile;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -64,6 +66,11 @@
         return result;
     }
 
+    @GetMapping("downloadXml")
+    public void downloadXml(HttpServletRequest request, HttpServletResponse response, Long productId, Long taskId, Long itemId,Integer xml) {
+        reliabilityAssessService.downloadXml(request,response,productId,taskId,itemId,xml);
+    }
+
     @PostMapping("add")
     @ApiOperation("鏂板")
     @LogOperation("鏂板")
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java
index f0cc214..5486365 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java
@@ -36,6 +36,8 @@
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -269,6 +271,11 @@
         return Result.ok();
     }
 
+    @GetMapping("downloadXml")
+    public void downloadXml(HttpServletRequest request, HttpServletResponse response, String type,Long id,Integer xml) {
+        simulatAssessService.downloadXml(request, response,type,id,xml);
+    }
+
     @PutMapping
     @ApiOperation("淇敼")
     @LogOperation("淇敼")
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ReliabilityAssessDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ReliabilityAssessDao.java
index 4d60009..278a700 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ReliabilityAssessDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ReliabilityAssessDao.java
@@ -25,4 +25,6 @@
     List<ReliabilityAssess> getProductList(Long productId, Long itemId);
 
     Long getAssessId(Long itemId, Long productId, Long taskId);
+
+    String getxml(Long assessId);
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/ModelRbd.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/ModelRbd.java
index f5a3b36..04d1228 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/ModelRbd.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/ModelRbd.java
@@ -34,6 +34,9 @@
 	@ApiModelProperty(value = "")
 	private Long productId;
 
+	@ApiModelProperty(value = "鏄惁鑷姩鎺掔増")
+	private Integer autoLayout;
+
 	@TableField(exist = false)
 	@ApiModelProperty(value = "")
 	private Long[] nodeArr;
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
index b93cfba..2212a70 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ReliabilityAssessService.java
@@ -38,6 +38,8 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -157,9 +159,9 @@
                     String nameValue = jsonArray.getJSONObject(i).get("name").toString();
                     if (nameValue.contains(assess.getId().toString())) {
                         // 鑾峰彇瀵瑰簲鐨勫��
-                        if (jsonArray.getJSONObject(i).get("value") instanceof Double){
-                            result1 = (Double)  jsonArray.getJSONObject(i).get("value");
-                        }else{
+                        if (jsonArray.getJSONObject(i).get("value") instanceof Double) {
+                            result1 = (Double) jsonArray.getJSONObject(i).get("value");
+                        } else {
                             String[] values = jsonArray.getJSONObject(i).get("value").toString().split(",");
                             result1 = Double.valueOf(values[1]);
                         }
@@ -377,16 +379,16 @@
             String ToEStr = "";
             String FStr = "";
 //            for (ModelNode node : nodeList) {
-                List<ReliabilityAssess> assessDatas = assessDataList.stream().filter(item ->
-                        dataId.equals(item.getId())).collect(Collectors.toList());
-                NoEStr += ",";
-                ToEStr += ",";
-                FStr += ",";
-                if (assessDatas.size() > 0) {
-                    NoEStr += assessDatas.get(0).getRunNum() != null ? assessDatas.get(0).getRunNum().toString() : "0";
-                    ToEStr += assessDatas.get(0).getRunTimes() != null ? assessDatas.get(0).getRunTimes().toString() : "0";
-                    FStr += assessDatas.get(0).getFailNum() != null ? assessDatas.get(0).getFailNum().toString() : "0";
-                }
+            List<ReliabilityAssess> assessDatas = assessDataList.stream().filter(item ->
+                    dataId.equals(item.getId())).collect(Collectors.toList());
+            NoEStr += ",";
+            ToEStr += ",";
+            FStr += ",";
+            if (assessDatas.size() > 0) {
+                NoEStr += assessDatas.get(0).getRunNum() != null ? assessDatas.get(0).getRunNum().toString() : "0";
+                ToEStr += assessDatas.get(0).getRunTimes() != null ? assessDatas.get(0).getRunTimes().toString() : "0";
+                FStr += assessDatas.get(0).getFailNum() != null ? assessDatas.get(0).getFailNum().toString() : "0";
+            }
 //            }
             NoEStr = NoEStr.substring(1);
             ToEStr = ToEStr.substring(1);
@@ -397,7 +399,7 @@
             vCounter.put("v", counter);
             Element sameNameGroupTag = parent.addElement("logic");
             sameNameGroupTag.addAttribute("name",
-                    "v"+counter);
+                    "v" + counter);
             if ("parallel".equals(sameNameGroupAlgorithmType)) {
                 sameNameGroupTag.addAttribute("type", "parallel");
             } else {
@@ -406,7 +408,7 @@
             sameNameGroupTag.addAttribute("nums", String.valueOf(nodeList.size()));
             Element nodeTag = sameNameGroupTag.addElement("node");
             nodeTag.addAttribute("name",
-                    nodeList.stream().map(item -> item.getDataId().toString()+"-"+item.getDeviceNo().toString()).
+                    nodeList.stream().map(item -> item.getDataId().toString() + "-" + item.getDeviceNo().toString()).
                             collect(Collectors.joining(",")));
             nodeTag.addAttribute("real_name", product.getSameSbName());
             nodeTag.addAttribute("name_path", product.getNamePath());
@@ -690,7 +692,7 @@
         FStr = FStr.substring(1);
 
         nodeTag.addAttribute("name",
-                nodes.stream().map(item -> item.getDataId().toString()+"-"+item.getDeviceNo().toString()).
+                nodes.stream().map(item -> item.getDataId().toString() + "-" + item.getDeviceNo().toString()).
                         collect(Collectors.joining(",")));
         if (distTypes.get(0) == 3) {
             // 浜岄」鍒嗗竷
@@ -746,7 +748,7 @@
                 ReliaSimLibResult rtn = com.alibaba.fastjson.JSONObject.parseObject(line, ReliaSimLibResult.class);
                 if ("0".equals(rtn.getCode())) {
                     logger.info("鍚姩鍙潬鎬ц瘎瀹氱畻娉曞簱鎴愬姛銆�");
-                    if (exitCode ==0) {
+                    if (exitCode == 0) {
                         deleteAssessInfoInRedis(assessResult.getId());
                         result = Result.ok();
                     } else {
@@ -936,4 +938,30 @@
         return baseDao.getAssessDataList(productId);
     }
 
+    public void downloadXml(HttpServletRequest request, HttpServletResponse response, Long productId, Long taskId, Long itemId, Integer xml) {
+        Long assessId = baseDao.getAssessId(itemId, productId, taskId);
+        String json="";
+        if (xml == 1) {
+            json = baseDao.getxml(assessId);
+        } else {
+            String filePath = path + "/" + assessId + "/" + "result.xml";
+            InputStream in = null;
+            File file = new File(filePath);
+            if (file.exists()) {
+                try {
+                    in = new FileInputStream(filePath);
+                    json = IOUtils.toString(in);
+                } catch (IOException e) {
+                    throw new RenException("鏂囦欢涓嶅瓨鍦ㄦ垨鑰呮枃浠舵墦涓嶅紑");
+                } finally {
+                    try {
+                        in.close();
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }
+        simulatAssessService.writeToTxt(request, response, json, "璇勫畾");
+    }
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
index ae1baa0..93e99b1 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java
@@ -11,6 +11,7 @@
 import com.zt.common.servlet.Result;
 import com.zt.common.utils.TreeUtils;
 import com.zt.common.utils.UUIDUtil;
+import com.zt.life.export.service.DownloadService;
 import com.zt.life.modules.mainPart.basicInfo.dao.ParamDataDao;
 import com.zt.life.modules.mainPart.basicInfo.dao.XhProductModelDao;
 import com.zt.life.modules.mainPart.basicInfo.model.ParamData;
@@ -46,6 +47,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.nio.file.FileAlreadyExistsException;
 import java.util.*;
@@ -1607,4 +1611,84 @@
         dto.setCurveList(curveList);
         return dto;
     }
+
+    public void downloadXml(HttpServletRequest request, HttpServletResponse response, String type, Long id, Integer xml) {
+        if (type.equals("fz")) {
+            if (xml == 1) {
+                SimulatAssess simulatAssess = this.get(id);
+                String xml1 = simulatAssess.getXml();
+                writeToTxt(request, response, xml1, "浠跨湡杈撳叆");
+            } else {
+                String filePath = path + "/" + id + "/" + "result.xml";
+                String xml1;
+                InputStream in = null;
+
+                try {
+                    in = new FileInputStream(filePath);
+                    xml1 = IOUtils.toString(in);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                    throw new RenException("鏂囦欢涓嶅瓨鍦ㄦ垨鑰呮枃浠舵墦涓嶅紑");
+                } finally {
+                    try {
+                        if (in != null) {
+                            in.close();
+                        }
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+                writeToTxt(request, response, xml1, "浠跨湡杈撳嚭");
+            }
+        } else if (type.equals("sxt")) {
+            if (xml == 1) {
+                String filePath = path + "/" + id + "/" + "status.json";
+                ObjectMapper mapper = new ObjectMapper();
+                String jsonStr = null;
+                try {
+                    // 浣跨敤 ObjectMapper 鐨� readValue 鏂规硶锛屽皢鏂囦欢涓殑 JSON 鏁版嵁杞崲涓轰竴涓� Java 瀵硅薄
+                    // 杩欓噷浣跨敤 Object 绫讳綔涓烘硾鍨嬪弬鏁帮紝琛ㄧず浠绘剰绫诲瀷鐨勫璞�
+                    Object obj = mapper.readValue(new File(filePath), Object.class);
+                    // 浣跨敤 ObjectMapper 鐨� writeValueAsString 鏂规硶锛屽皢 Java 瀵硅薄杞崲涓� JSON 瀛楃涓�
+                    jsonStr = mapper.writeValueAsString(obj);
+
+                } catch (IOException e) {
+                    // 澶勭悊寮傚父
+                    e.printStackTrace();
+                    throw new RenException("鏂囦欢涓嶅瓨鍦ㄦ垨鑰呮枃浠舵墦涓嶅紑");
+                }
+                writeToTxt(request, response, jsonStr, "鏃跺簭鍥捐緭鍏�");
+            } else {
+                SimulatAssess simulatAssess = this.get(id);
+                TimeDiagramDto timeDiagram = getTimeDiagram(simulatAssess.getProductId(), simulatAssess.getTaskModelId(), simulatAssess.getId(), 1200, 5);
+                String xml2 = timeDiagram.getDiagramJson();
+                writeToTxt(request, response, xml2, "鏃跺簭鍥捐緭鍑�");
+            }
+        }
+    }
+
+    public void writeToTxt(HttpServletRequest request, HttpServletResponse response, String jsonString, String name) {//璁剧疆鍝嶅簲鐨勫瓧绗﹂泦
+        //璁剧疆鍝嶅簲鍐呭鐨勭被鍨�
+        BufferedOutputStream buff = null;
+        ServletOutputStream outStr = null;
+        try {
+            response.setContentType("text/plain;charset=UTF-8");
+            String encodedFilename = DownloadService.getNameEncoder(request, name + "xml.txt");
+            response.addHeader("Content-Disposition", "attachment;filename=" + encodedFilename);
+            outStr = response.getOutputStream();
+            buff = new BufferedOutputStream(outStr);
+            buff.write(jsonString.getBytes("UTF-8"));
+            buff.flush();
+            buff.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                buff.close();
+                outStr.close();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
 }
diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/ReliabilityAssessDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/ReliabilityAssessDao.xml
index 3e2d6ac..ec76ca8 100644
--- a/modules/mainPart/src/main/resources/mapper/taskReliability/ReliabilityAssessDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/taskReliability/ReliabilityAssessDao.xml
@@ -52,4 +52,13 @@
             UPDATE_DATE DESC
         LIMIT 1
     </select>
+    <select id="getxml" resultType="java.lang.String">
+        SELECT
+            xml
+        FROM
+            assess_result
+        WHERE
+            is_delete = 0
+          AND id = ${assessId}
+    </select>
 </mapper>
diff --git a/web/src/views/modules/taskReliability/RBD-edit-img.vue b/web/src/views/modules/taskReliability/RBD-edit-img.vue
index 58fa825..90d93d2 100644
--- a/web/src/views/modules/taskReliability/RBD-edit-img.vue
+++ b/web/src/views/modules/taskReliability/RBD-edit-img.vue
@@ -18,7 +18,9 @@
               <el-button type="primary" @click="saveDiagram()">鏆傚瓨</el-button>
               <el-button type="primary" @click="analyzeDiagram()">鎻愪氦</el-button>
               <el-button type="primary" @click="clearDiagram()">娓呯┖鍥惧舰</el-button>
-              <el-checkbox style="margin: 0 10px 0 10px" v-model="dataForm.autoLayout">鏄惁寮�鍚竴閿帓鐗�</el-checkbox>
+              <el-checkbox style="margin: 0 10px 0 10px" v-model="dataForm.autoLayout" true-label="1" false-label="0">
+                鏄惁寮�鍚竴閿帓鐗�
+              </el-checkbox>
               <el-button type="primary" @click="layoutDiagram()" :disabled="!dataForm.autoLayout">涓�閿帓鐗�</el-button>
               <el-button @click="leftAlign()">
                 <i style="font-size: 1rem;" class="wt-iconfont icon-zuoduiqi"></i>
@@ -578,7 +580,7 @@
           hasPublish: 0,
           urlPref: '',
           nodeArr: [],
-          autoLayout:true,
+          autoLayout: 1,
         },
         type: '',
         id: '',
@@ -756,6 +758,7 @@
         }
         let res = await this.$http.get(`/taskReliability/ModelLine/getDiagram`, {params: params})
         this.dataForm = res.data
+        this.dataForm.autoLayout = parseInt(this.dataForm.autoLayout) == 1
         if (res.data.content != null) {
           console.log(this.dataForm, 'getDiagram datafrom')
           console.log(res.data, 'getDiagram res.data')
@@ -932,7 +935,7 @@
               for (let i = 1; i <= node.getData().basicUnitNum; i++) {
                 if (deviceNoArr.findIndex(item => item === i) === -1) {
                   no = i
-                  if (node.getData().basicUnitNum>1){
+                  if (node.getData().basicUnitNum > 1) {
                     node.getData().deviceNo = i
                     node.attr('text/text', node.attr('text/text') + '-' + i)
                   }
@@ -1063,12 +1066,12 @@
                 //'xlink:href': urlObject.createObjectURL(new Blob([item.svgContent])),
               },
               title: {
-                text: item.basicUnitNum>1?item.basicUnitNum:'',
+                text: item.basicUnitNum > 1 ? item.basicUnitNum : '',
                 refX: 15,
                 refY: 10,
                 fill: '#748be7',
                 fontSize: 14,
-                fontWeight:'bold',
+                fontWeight: 'bold',
                 'text-anchor': 'start',
               },
               text: {
@@ -1221,7 +1224,7 @@
         // 鐩戝惉鑺傜偣娣诲姞浜嬩欢
         this.graph.on('node:added', ({node}) => {
           node.setAttrs({
-            title: { text: '' },
+            title: {text: ''},
           })
           if (this.isFirstLoad) {
             return
@@ -1582,7 +1585,7 @@
         })
       },
       async layoutDiagram() {
-        if(this.dataForm.autoLayout){
+        if (this.dataForm.autoLayout == 1) {
           console.log(JSON.stringify(this.graph.toJSON()), 'graph.toJSON()')
           this.dataForm.content = JSON.stringify(this.graph.toJSON())
           this.dataForm.urlPref = window.SITE_CONFIG['apiURL']
@@ -1780,7 +1783,7 @@
             inEdges[0].target = {cell: result.newStartNode.id}
             outEdges[0].source = {cell: result.newEndNode.id}
             graphNode.remove()
-            if(this.dataForm.autoLayout){
+            if (this.dataForm.autoLayout == 1) {
               if (!result.canPlace) {
                 //璋冪敤鑷姩鎺掔増
                 this.layoutDiagram()
@@ -1837,7 +1840,7 @@
             connector: {name: 'rounded'},
             zIndex: -1
           })
-          if(this.dataForm.autoLayout){
+          if (this.dataForm.autoLayout == 1) {
             if (!result.canPlace) {
               //璋冪敤鑷姩鎺掔増
               this.layoutDiagram()
@@ -1971,7 +1974,7 @@
             })
             graphEdge.source = {cell: result.newEndNode.id}
           }
-          if(this.dataForm.autoLayout){
+          if (this.dataForm.autoLayout == 1) {
             if (!result.canPlace) {
               //璋冪敤鑷姩鎺掔増
               this.layoutDiagram()
diff --git a/web/src/views/modules/taskReliability/ReliabilityAssess.vue b/web/src/views/modules/taskReliability/ReliabilityAssess.vue
index 49562fe..6516b3e 100644
--- a/web/src/views/modules/taskReliability/ReliabilityAssess.vue
+++ b/web/src/views/modules/taskReliability/ReliabilityAssess.vue
@@ -19,6 +19,15 @@
           <el-button type="primary" @click="assess()">璇勫畾</el-button>
           <el-button type="primary" @click="add()">鏂板璇勫畾鏁版嵁</el-button>
           <el-button type="primary" @click="handleExpand()">{{expandText}}</el-button>
+          <el-dropdown style="margin-left: 10px" @command="download">
+            <el-button type="primary">
+              涓嬭浇xml<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item command="1">杈撳叆xml</el-dropdown-item>
+              <el-dropdown-item command="2">杈撳嚭xml</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
         </el-form>
         <el-table ref="multipleTable" v-loading="table.dataLoading" :data="dataList" height="100px" v-adaptive="{bottomOffset:70}"
                   row-key="id"
@@ -43,6 +52,8 @@
 </template>
 <script>
   import AddOrUpdate from './RelisbilityAssess-AddOrUpdate'
+  import qs from "qs";
+  import Cookies from "js-cookie";
 
   export default {
     data() {
@@ -189,6 +200,21 @@
           }
         })
       },
-    }
+      async download(selsect) {
+        if (!this.dataForm.productId || !this.dataForm.taskId || !this.dataForm.itemId ) {
+          this.$tip.alert("鏈夋湭濉啓鐨勬暟鎹�")
+          return
+        }
+          let param = qs.stringify({
+            'token': Cookies.get('token'),
+            productId: this.dataForm.productId,
+            taskId: this.dataForm.taskId,
+            itemId: this.dataForm.itemId,
+            xml:selsect
+          })
+          let apiURL = `/taskReliability/ReliabilityAssess/downloadXml`
+          window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${param}`
+        }
+      },
   }
 </script>
diff --git a/web/src/views/modules/taskReliability/SimulatAssess.vue b/web/src/views/modules/taskReliability/SimulatAssess.vue
index 0f58eec..7b59686 100644
--- a/web/src/views/modules/taskReliability/SimulatAssess.vue
+++ b/web/src/views/modules/taskReliability/SimulatAssess.vue
@@ -8,38 +8,50 @@
         <zt-form-item label="鎬讳綋浠诲姟" prop="taskModelId">
           <zt-select v-model="dataForm.taskModelId" :datas="taskList" @change="onTaskSelected"/>
         </zt-form-item>
-        <zt-form-item label="鏃堕棿鍒嗙墖" prop="samplPeriod" >
-          <el-input type="number" :min="1" v-model="dataForm.samplPeriod" style="width: 150px;vertical-align: baseline;">
+        <zt-form-item label="鏃堕棿鍒嗙墖" prop="samplPeriod">
+          <el-input type="number" :min="1" v-model="dataForm.samplPeriod"
+                    style="width: 150px;vertical-align: baseline;">
             <template slot="append">鍒嗛挓</template>
           </el-input>
         </zt-form-item>
-        <zt-form-item label="浠跨湡娆℃暟" prop="simulatFrequency" >
-          <el-input type="number" :min="1" v-model="dataForm.simulatFrequency" style="width: 150px;vertical-align: baseline;">
+        <zt-form-item label="浠跨湡娆℃暟" prop="simulatFrequency">
+          <el-input type="number" :min="1" v-model="dataForm.simulatFrequency"
+                    style="width: 150px;vertical-align: baseline;">
             <template slot="append">娆℃暟</template>
           </el-input>
         </zt-form-item>
         <el-form-item prop="repairDiracFlag" label-width="150px" style="margin-left: 20px">
           <el-checkbox v-model="dataForm.repairDiracFlag">鍙慨璁惧鍙潬搴︿负1</el-checkbox>
         </el-form-item>
-        <zt-form-item style="margin-left: 20px">
+        <zt-form-item style="margin-left: 10px">
           <zt-button @click="analyze()">浠跨湡鍒嗘瀽</zt-button>
-          <zt-button @click="displayProcess()">鏌ョ湅绠楁硶搴撹繘绋�</zt-button>
+          <zt-button @click="displayProcess()">绠楁硶搴撹繘绋�</zt-button>
+          <el-dropdown style="margin-left: 10px" @command="download">
+            <el-button type="primary">
+              涓嬭浇xml<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item command="1">杈撳叆xml</el-dropdown-item>
+              <el-dropdown-item command="2">杈撳嚭xml</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
         </zt-form-item>
       </el-form>
       <el-progress v-if="isShow" :percentage="percentage"></el-progress>
-          <el-col :span="4">
-            <div style="margin-right: 5px;height: calc(100vh - 230px)" v-if="isSelect">
-              <product-model-tree @on-selected="onTreeSelected" showXdy="false"
-                                  ref="ProductModelTree" :isShow="false" basic="4" :productId="dataForm.productId"/>
-            </div>
-          </el-col>
-          <el-col :span="20">
-            <div  class="fa-card-a" style="height: calc(100vh - 230px)">
-                <SimulatCurve ref="SimulatCurve"></SimulatCurve>
-            </div>
-          </el-col>
+      <el-col :span="4">
+        <div style="margin-right: 5px;height: calc(100vh - 230px)" v-if="isSelect">
+          <product-model-tree @on-selected="onTreeSelected" showXdy="false"
+                              ref="ProductModelTree" :isShow="false" basic="4" :productId="dataForm.productId"/>
+        </div>
+      </el-col>
+      <el-col :span="20">
+        <div class="fa-card-a" style="height: calc(100vh - 230px)">
+          <SimulatCurve ref="SimulatCurve"></SimulatCurve>
+        </div>
+      </el-col>
     </el-row>
-    <el-dialog v-dialogDrag :close-on-click-modal="false" top="8vh" :visible.sync="dialogVisible" title="妯″瀷妫�鏌�" width="60%" @close="dialogVisible = false">
+    <el-dialog v-dialogDrag :close-on-click-modal="false" top="8vh" :visible.sync="dialogVisible" title="妯″瀷妫�鏌�"
+               width="60%" @close="dialogVisible = false">
       <el-tag type="danger" style="margin-bottom: 10px">妯″瀷瀹氫箟/鍙傛暟閰嶇疆閲屽瓨鍦ㄤ互涓嬮棶棰橈細</el-tag>
       <el-table :data="modelCheckResult" height="350"
                 :header-cell-style="{'text-align':'center'}">
@@ -64,6 +76,8 @@
   import SimulatCurve from "./SimulatCurve";
   import ProductModelTree from "../basicInfo/ProductModelTree";
   import Process from "./Process";
+  import qs from "qs";
+  import Cookies from "js-cookie";
 
 
   export default {
@@ -111,7 +125,7 @@
 
     methods: {
       onTreeSelected(data) {
-        if (this.dataForm.id){
+        if (this.dataForm.id) {
           console.log(data, 'onProductSelected')
           this.dataForm.showProductId = data.id
           this.$refs.SimulatCurve.getProductEcharts(this.dataForm);
@@ -182,6 +196,21 @@
           }
         }
       },
+      async download(selsect) {
+        if(this.dataForm.id){
+          let param = qs.stringify({
+            'token': Cookies.get('token'),
+            type: 'fz',
+            xml:selsect,
+            id: this.dataForm.id
+          })
+          let apiURL = `/taskReliability/SimulatAssess/downloadXml`
+          window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${param}`
+        }else{
+          this.$alert('杩樻湭杩涜浠跨湡鎿嶄綔')
+        }
+
+      },
       displayProcess() {
         this.$refs.process.$refs.dialog.init()
       }
diff --git a/web/src/views/modules/taskReliability/TimeDiagram.vue b/web/src/views/modules/taskReliability/TimeDiagram.vue
index cf48ad0..15c0973 100644
--- a/web/src/views/modules/taskReliability/TimeDiagram.vue
+++ b/web/src/views/modules/taskReliability/TimeDiagram.vue
@@ -23,6 +23,15 @@
           </zt-form-item>
           <zt-form-item>
             <zt-button @click="getDiagram(null)">鏌ョ湅鏃跺簭鍥�</zt-button>
+            <el-dropdown style="margin-left: 10px" @command="download">
+              <el-button type="primary">
+                涓嬭浇xml<i class="el-icon-arrow-down el-icon--right"></i>
+              </el-button>
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="1">杈撳叆xml</el-dropdown-item>
+                <el-dropdown-item command="2">杈撳嚭xml</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
           </zt-form-item>
         </el-form>
         <div style="display: flex">
@@ -59,6 +68,8 @@
   import ModelView from "./ModelView";
   import textDiagram from "./textDiagram";
   import timeDiagramThumbnail from "./timeDiagramThumbnail"
+  import qs from "qs";
+  import Cookies from "js-cookie";
 
 
   export default {
@@ -439,7 +450,21 @@
       getPoint(x,smallWidth){
         let pointX = Number((x * (this.bigWidth / smallWidth )).toFixed(0))
         this.graph.setScrollbarPosition(pointX, null)
-      }
+      },
+      async download(selsect) {
+        if(this.dataForm.id){
+          let param = qs.stringify({
+            'token': Cookies.get('token'),
+            type: 'sxt',
+            xml:selsect,
+            id: this.dataForm.id
+          })
+          let apiURL = `/taskReliability/SimulatAssess/downloadXml`
+          window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${param}`
+        }else{
+          this.$alert('杩樻湭閫夋嫨浠跨湡璁板綍')
+        }
+      },
     }
   }
 </script>

--
Gitblit v1.9.1