From 9ad8b94e643ea2a996a10aca7bf5948643e3571d Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期四, 14 三月 2024 09:19:46 +0800
Subject: [PATCH] 修改

---
 web/src/views/modules/taskReliability/RBD-edit-img.vue |  412 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 223 insertions(+), 189 deletions(-)

diff --git a/web/src/views/modules/taskReliability/RBD-edit-img.vue b/web/src/views/modules/taskReliability/RBD-edit-img.vue
index e0698fb..b9acbcf 100644
--- a/web/src/views/modules/taskReliability/RBD-edit-img.vue
+++ b/web/src/views/modules/taskReliability/RBD-edit-img.vue
@@ -14,52 +14,52 @@
             <el-form-item>
               妯″瀷鍚嶇О锛歿{modelName}}
             </el-form-item>
-              <el-form-item>
-                  <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-form-item>
             <el-form-item>
-                <el-tooltip class="item" effect="dark" content="宸﹀榻�" placement="left">
-                  <el-button class="" style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF;"
-                             @click="leftAlign()"><i style="font-size: 2rem;"
-                                                     class="wt-iconfont icon-zuoduiqi"></i></el-button>
-                </el-tooltip>
+              <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-form-item>
             <el-form-item>
-                <el-tooltip class="item" effect="dark" content="灞呬腑瀵归綈" placement="left">
-                  <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"
-                             @click="centerAlign()"><i style="font-size: 2rem;"
-                                                       class="wt-iconfont icon-chuizhiduiqi"></i></el-button>
-                </el-tooltip>
+              <el-tooltip class="item" effect="dark" content="宸﹀榻�" placement="left">
+                <el-button class="" style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF;"
+                           @click="leftAlign()"><i style="font-size: 2rem;"
+                                                   class="wt-iconfont icon-zuoduiqi"></i></el-button>
+              </el-tooltip>
             </el-form-item>
             <el-form-item>
-                <el-tooltip class="item" effect="dark" content="鍙冲榻�" placement="left">
-                  <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"
-                             @click="rightAlign()"><i style="font-size: 2rem;"
-                                                      class="wt-iconfont icon-youduiqi"></i></el-button>
-                </el-tooltip>
+              <el-tooltip class="item" effect="dark" content="灞呬腑瀵归綈" placement="left">
+                <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"
+                           @click="centerAlign()"><i style="font-size: 2rem;"
+                                                     class="wt-iconfont icon-chuizhiduiqi"></i></el-button>
+              </el-tooltip>
             </el-form-item>
             <el-form-item>
-                <el-tooltip class="item" effect="dark" content="椤堕儴瀵归綈" placement="left">
-                  <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"
-                             @click="topAlign()"><i style="font-size: 2rem;"
-                                                    class="wt-iconfont icon-dingduiqi"></i></el-button>
-                </el-tooltip>
+              <el-tooltip class="item" effect="dark" content="鍙冲榻�" placement="left">
+                <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"
+                           @click="rightAlign()"><i style="font-size: 2rem;"
+                                                    class="wt-iconfont icon-youduiqi"></i></el-button>
+              </el-tooltip>
             </el-form-item>
             <el-form-item>
-                <el-tooltip class="item" effect="dark" content="姘村钩瀵归綈" placement="left">
-                  <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"
-                             @click="shuipingAlign()"><i style="font-size: 2rem;"
-                                                         class="wt-iconfont icon-shuipingduiqi"></i></el-button>
-                </el-tooltip>
+              <el-tooltip class="item" effect="dark" content="椤堕儴瀵归綈" placement="left">
+                <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"
+                           @click="topAlign()"><i style="font-size: 2rem;"
+                                                  class="wt-iconfont icon-dingduiqi"></i></el-button>
+              </el-tooltip>
             </el-form-item>
             <el-form-item>
-                <el-tooltip class="item" effect="dark" content="搴曢儴瀵归綈" placement="left">
-                  <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"
-                             @click="bottomAlign()"><i style="font-size: 2rem;"
-                                                       class="wt-iconfont icon-diduiqi"></i></el-button>
-                </el-tooltip>
+              <el-tooltip class="item" effect="dark" content="姘村钩瀵归綈" placement="left">
+                <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"
+                           @click="shuipingAlign()"><i style="font-size: 2rem;"
+                                                       class="wt-iconfont icon-shuipingduiqi"></i></el-button>
+              </el-tooltip>
+            </el-form-item>
+            <el-form-item>
+              <el-tooltip class="item" effect="dark" content="搴曢儴瀵归綈" placement="left">
+                <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"
+                           @click="bottomAlign()"><i style="font-size: 2rem;"
+                                                     class="wt-iconfont icon-diduiqi"></i></el-button>
+              </el-tooltip>
             </el-form-item>
           </el-form>
           <div id="containerImg" style="border: 1px solid #EAEBEE;border-radius: 6px;
@@ -83,6 +83,7 @@
   import ConfigEdge from './ConfigEdge/index.vue'
   import {removeCurrentTabHandle} from '@/commonJS/common'
   import {setHartBeat} from '@/commonJS/common';
+  import Cookies from 'js-cookie'
 
   export default {
     name: 'RBD-edit-img',
@@ -112,21 +113,37 @@
       return {
         modelId: '',
         modelName: '',
-        modelType:'',
+        modelType: '',
         timer: null,
-        imgsList:[
-          {imgPath:'start',imgName:'start',nodeType:'start',imgWidth:60,imgHeight:60,imgId:'1',data:{}},
-          {imgPath:'end',imgName:'end',nodeType:'end',imgWidth:60,imgHeight:60,imgId:'2',data:{}},
-          {imgPath:'connect',imgName:'connect',nodeType:'connect',imgWidth:20,imgHeight:20,imgId:'3',data:{}},
+        imgsList: [
+          {imgPath: 'start', imgName: 'start', nodeType: 'start', imgWidth: 60, imgHeight: 60, imgId: '1', data: {}},
+          {imgPath: 'end', imgName: 'end', nodeType: 'end', imgWidth: 60, imgHeight: 60, imgId: '2', data: {}},
+          {
+            imgPath: 'connect',
+            imgName: 'connect',
+            nodeType: 'connect',
+            imgWidth: 20,
+            imgHeight: 20,
+            imgId: '3',
+            data: {}
+          },
           // {imgPath:'parallelLeft',imgName:'parallelLeft',nodeType:'parallelLeft',imgWidth:60,imgHeight:60,imgId:'3',data:{}},
           // {imgPath:'parallelRight',imgName:'parallel',nodeType:'parallel',imgWidth:60,imgHeight:60,imgId:'4',data:{}},
-          {imgPath:'switchRight',imgName:'switch',nodeType:'switch',imgWidth:60,imgHeight:60,imgId:'5',data:{}},
-          {imgPath:'voteRight',imgName:'vote',nodeType:'vote',imgWidth:60,imgHeight:60,imgId:'6',data:{}},
+          {
+            imgPath: 'switchRight',
+            imgName: 'switch',
+            nodeType: 'switch',
+            imgWidth: 60,
+            imgHeight: 60,
+            imgId: '5',
+            data: {}
+          },
+          {imgPath: 'voteRight', imgName: 'vote', nodeType: 'vote', imgWidth: 60, imgHeight: 60, imgId: '6', data: {}},
         ],
-        imgsList2:[
-         // {imgPath:'logo',imgName:'logo',nodeType:'node',,nodeTypeExt:'',productType:'',statusImg:'',imgWidth:60,imgHeight:60,imgId:'100',dataId:'123456'},
+        imgsList2: [
+          // {imgPath:'logo',imgName:'logo',nodeType:'node',,nodeTypeExt:'',productType:'',statusImg:'',imgWidth:60,imgHeight:60,imgId:'100',dataId:'123456'},
         ],
-        nodeType:'',
+        nodeType: '',
         first: true,
         shape: '',
         projectList: [],
@@ -167,17 +184,17 @@
         id: '',
         graph: null,
         globalGridAttr: {
-          voteSum:'',
-          repairMttcr:'',
-          repairMttcrOther:'',
-          repairDistribType:'',
-          reliabDistribType:'',
-          taskMtbcfOther:'',
-          isRepair:0,
-          taskMtbcf:'',
-          numberInputValue:'',
-          statusImg:'',
-          nodeTypeExt:'',
+          voteSum: '',
+          repairMttcr: '',
+          repairMttcrOther: '',
+          repairDistribType: '',
+          reliabDistribType: '',
+          taskMtbcfOther: '',
+          isRepair: 0,
+          taskMtbcf: '',
+          numberInputValue: '',
+          statusImg: '',
+          nodeTypeExt: '',
           type: 'mesh',
           size: 10,
           color: '#e5e5e5',
@@ -213,7 +230,7 @@
         },
         isReady: false,
         curCel: Cell,
-        left_p: document.documentElement.clientHeight-100,
+        left_p: document.documentElement.clientHeight - 100,
         ports: {
           groups: {
             top: {
@@ -308,32 +325,32 @@
       this.type = 'grid'
     },
     methods: {
-      init(row){
+      init(row) {
         this.modelName = row.modelName
         this.dataForm.id = row.id
         // this.productId = row.productId
         // this.getProduct(row.productId)
         this.initDigram(row.productId)
-        console.log(this.dataForm,'init(row){')
+        console.log(this.dataForm, 'init(row){')
       },
       async getDiagram(modelId) {
         let params = {
-          modelId : modelId
+          modelId: modelId
         }
-          let res = await this.$http.get(`/taskReliability/ModelLine/getDiagram`, {params: params})
-        console.log(res,'async getDiagram( res')
+        let res = await this.$http.get(`/taskReliability/ModelLine/getDiagram`, {params: params})
+        console.log(res, 'async getDiagram( res')
         if (res.data !== null && res.data.content != null) {
-            this.dataForm = res.data
-            console.log(this.dataForm, 'this.dataForm in getDiagram')
-            this.diagramJson = JSON.parse(this.dataForm.content)
-            // console.log(this.dataForm.content,'this.Diagram content')
-            console.log(this.diagramJson, 'this.Diagram json')
-            this.graph.fromJSON(this.diagramJson)
-            this.graph.centerContent()
-            this.graph.zoomToFit()
-          } else {
-            await this.clearDiagram()
-          }
+          this.dataForm = res.data
+          console.log(this.dataForm, 'this.dataForm in getDiagram')
+          this.diagramJson = JSON.parse(this.dataForm.content)
+          // console.log(this.dataForm.content,'this.Diagram content')
+          console.log(this.diagramJson, 'this.Diagram json')
+          this.graph.fromJSON(this.diagramJson)
+          this.graph.centerContent()
+          this.graph.zoomToFit()
+        } else {
+          await this.clearDiagram()
+        }
       },
       async clearDiagram() {
         this.dataForm.id = null
@@ -372,8 +389,8 @@
             pageVisible: true,
             pageBreak: true,
             pannable: true,
-            minVisibleWidth:200,
-            minVisibleHeight:200,
+            minVisibleWidth: 200,
+            minVisibleHeight: 200,
             modifiers: 'shift',
           },
           // panning: {
@@ -468,126 +485,138 @@
         })
         this.graph.centerContent()
         const stencil = new Addon.Stencil({
+          getDropNode(node) {
+            let {width, height} = node.size()
+            if (node.getData().imgWidth) {
+              width = node.getData().imgWidth
+            }
+            if (node.getData().imgHeight) {
+              height = node.getData().imgHeight
+            }
+            console.log(node.getData().imgWidth, node.getData().imgHeight, 'node.size()')
+            return node.clone().size(width, height)
+          },
           title: '',
           target: this.graph,
-          stencilGraphWidth: 230,
-          stencilGraphHeight: 300,
-          collapsable: false,
+            stencilGraphWidth: 200,
+            stencilGraphHeight: 280,
+            collapsable: true,
           groups: [
             {
               title: '杩愮畻绗﹀彿',
               name: 'group1',
-              collapsable: false
             },
             {
               title: '璁惧鑺傜偣',
               name: 'group2',
-              collapsable: false
+                graphHeight: '',
+                layoutOptions: {
+                    rowHeight: 90,
+                },
             }
           ],
           layoutOptions: {
             columns: 2,
-            columnWidth: 110,
-            // rowHeight: 75,
+            columnWidth: 105,
           },
         })
         document.getElementById('stencilImg').appendChild(stencil.container)
         const imageNodes = this.imgsList.map((item) =>
-            this.graph.createNode({
-              shape: 'image',
-              imageUrl: require('/public/modelImg/'+item.imgPath+'.png'),
-              width: item.imgWidth,
-              height: item.imgHeight,
-              x: item.imgWidth,
-              y: item.imgHeight,
-              data: {
-                dataId: '',
-                nodeType: item.nodeType,
-                nodeTypeExt: ''
-              },
-              attrs: {
-                text:{
-                  text: item.imgName,
-                  fontSize: 14,
-                  style: {
-                    color: this.globalGridAttr.nodeColor
-                  },
-                  refX: 0.5,
-                  refY: '100%',
-                  refY2: 4,
-                  textAnchor: 'middle',
-                  textVerticalAnchor: 'top',
+          this.graph.createNode({
+            shape: 'image',
+            imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
+            width: item.imgWidth,
+            height: item.imgHeight,
+            x: item.imgWidth,
+            y: item.imgHeight,
+            data: {
+              dataId: '',
+              nodeType: item.nodeType,
+              nodeTypeExt: ''
+            },
+            attrs: {
+              text: {
+                text: item.imgName,
+                fontSize: 14,
+                style: {
+                  color: this.globalGridAttr.nodeColor
                 },
+                refX: 0.5,
+                refY: '100%',
+                refY2: 4,
+                textAnchor: 'middle',
+                textVerticalAnchor: 'top',
               },
-              ports: {...this.ports},
-            }),
+            },
+            ports: {...this.ports},
+          }),
         )
         let params = {
-          productId : productId
+          productId: productId
         }
         let res = await this.$http.get(`/basicInfo/XhProductModel/getProduct`, {params: params})
         this.imgsList2 = res.data
-        console.log(this.imgsList2 ,'getProduct(productId)234567890')
+        console.log(this.imgsList2, 'getProduct(productId)234567890')
         const imageNodes2 = this.imgsList2.map((item) =>
-            this.graph.createNode({
-              shape: 'image',
-              imageUrl: `${window.SITE_CONFIG['apiURL']}/sys/oss/content2?fileId=${item.imgPath}`,
-              width:item.imgWidth,
-              height:item.imgHeight,
-              x:item.imgWidth,
-              y:item.imgHeight,
-              data: {
-                isRepair:false,
-                dataId: item.dataId,
-                nodeType: item.nodeType,
-                nodeTypeExt: item.nodeTypeExt,
-                productType: item.productType,
-                statusImg:item.statusImg,
-                reliabDistribType:item.reliabDistribType,
-                repairDistribType:item.repairDistribType,
-                repairMttcr:item.repairMttcr,
-                repairMttcrOther:item.repairMttcrOther,
-                taskMtbcf:item.taskMtbcf,
-                taskMtbcfOther:item.taskMtbcfOther,
-                voteSum:'',
-              },
-              attrs: {
-                text:{
-                  text: item.imgName,
-                  fontSize: 14,
-                  style: {
-                    color: this.globalGridAttr.nodeColor
-                  },
-                  refX: 0.5,
-                  refY: '100%',
-                  refY2: 4,
-                  textAnchor: 'middle',
-                  textVerticalAnchor: 'top',
+          this.graph.createNode({
+            shape: 'image',
+            imageUrl: `${window.SITE_CONFIG['apiURL']}/sysPictureBase/getProductImg?token=${Cookies.get('token')}&id=${item.imgPath}`,
+            width: 60,
+            height: 60,
+            data: {
+              isRepair: false,
+              dataId: item.dataId,
+              nodeType: item.nodeType,
+              nodeTypeExt: item.nodeTypeExt,
+              productType: item.productType,
+              statusImg: item.statusImg,
+              reliabDistribType: item.reliabDistribType,
+              repairDistribType: item.repairDistribType,
+              repairMttcr: item.repairMttcr,
+              repairMttcrOther: item.repairMttcrOther,
+              taskMtbcf: item.taskMtbcf,
+              taskMtbcfOther: item.taskMtbcfOther,
+              voteSum: '',
+              imgHeight: item.imgHeight,
+              imgWidth: item.imgWidth
+            },
+            attrs: {
+              text: {
+                text: item.imgName,
+                fontSize: 14,
+                style: {
+                  color: this.globalGridAttr.nodeColor
                 },
+                refX: 0.5,
+                refY: '100%',
+                refY2: 4,
+                textAnchor: 'middle',
+                textVerticalAnchor: 'top',
               },
-              tools: [
-                {
-                  name: 'button',
-                  args: {
-                    markup: [
-                      {
-                        tagName: 'image',
-                        selector: 'icon',
-                        attrs: {
-                          // 'xlink:href': 'https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*evDjT5vjkX0AAAAAAAAAAAAAARQnAQ',
-                          'xlink:href':item.statusImg,
-                          width: 30,
-                          height: 30,
-                          x: 0,
-                          y: 0
-                        }
+            },
+            tools: [
+              {
+                name: 'button',
+                args: {
+                  markup: [
+                    {
+                      tagName: 'image',
+                      selector: 'icon',
+                      attrs: {
+                        // 'xlink:href': 'https://gw.alipayobjects.com/mdn/rms_43231b/afts/img/A*evDjT5vjkX0AAAAAAAAAAAAAARQnAQ',
+                        'xlink:href': item.statusImg,
+                        width: 30,
+                        height: 30,
+                        x: 0,
+                        y: 0
                       }
-                    ]
-                  }
+                    }
+                  ]
                 }
-              ],
-              ports: {...this.ports},
-            }),
+              }
+            ],
+            ports: {...this.ports},
+          }),
         )
         stencil.load(imageNodes, 'group1')
         stencil.load(imageNodes2, 'group2')
@@ -687,7 +716,7 @@
           this.type = cell.isNode() ? 'node' : 'edge'
           this.shape = cell.shape
           this.id = cell.id
-          if(this.type==='node'){
+          if (this.type === 'node') {
             this.nodeType = cell.getData().nodeType
             console.log(this.nodeType, 'this.nodeType')
           }
@@ -994,7 +1023,7 @@
         }
       },
       close() {
-        if (this.timer){
+        if (this.timer) {
           window.clearInterval(this.timer)
         }
       },
@@ -1004,32 +1033,37 @@
 </script>
 
 <style>
-#containerImg {
-  display: flex;
-  border: 1px solid #dfe3e8;
-  height:400px ;
-  width: 100% !important;
-}
+  #containerImg {
+    display: flex;
+    border: 1px solid #dfe3e8;
+    height: 400px;
+    width: 100% !important;
+  }
 
-.x6-graph-scroller.x6-graph-scroller-pannable {
-  width: 100% !important;
-}
+  .x6-graph-scroller.x6-graph-scroller-pannable {
+    width: 100% !important;
+  }
 
-#stencilImg {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  border-right: 1px solid #dfe3e8;
-}
+  #stencilImg {
+    width: 100%;
+    height: 100%;
+    position: relative;
+    border-right: 1px solid #dfe3e8;
+  }
 
-.x6-widget-stencil {
-  position: relative;
-  height: 100%;
+  .x6-widget-stencil {
+    position: relative;
+    height: 100%;
+  }
+#stencilImg .x6-graph-svg-viewport{
+    height: 100%;
 }
-
-.x6-widget-stencil-content {
-  position: relative;
-  height: 100%;
+  .x6-widget-stencil-content {
+    position: relative;
+  height: calc(100% - 32px);
 }
+#stencilImg .x6-widget-stencil.collapsable > .x6-widget-stencil-content{
+    top:0
+  }
 
 </style>

--
Gitblit v1.9.1