From 26ebef24f023a80f5be5ff27c93585f70688f6ee Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期二, 22 十月 2024 14:45:39 +0800
Subject: [PATCH] 关于修改可靠性产品重复

---
 web/src/views/modules/taskReliability/RBD-edit-img.vue |  164 ++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 102 insertions(+), 62 deletions(-)

diff --git a/web/src/views/modules/taskReliability/RBD-edit-img.vue b/web/src/views/modules/taskReliability/RBD-edit-img.vue
index 925aada..accfeeb 100644
--- a/web/src/views/modules/taskReliability/RBD-edit-img.vue
+++ b/web/src/views/modules/taskReliability/RBD-edit-img.vue
@@ -260,7 +260,7 @@
                         "r": 4,
                         "magnet": true,
                         "stroke": "#5F95FF",
-                        "strokeWidth": 1,
+
                         "fill": "#fff",
                         "style": {
                           "visibility": "hidden"
@@ -514,6 +514,7 @@
     },
     data() {
       return {
+        canAdd: true,
         nodeX: '',
         nodeY: '',
         isFirstLoad: true,
@@ -905,26 +906,48 @@
         })
         this.graph.centerContent()
         const stencil = new Addon.Stencil({
-          getDragNode: (node) => node.clone({keepId: true}),
+          //getDragNode: (node) => node.clone({keepId: true}),
           getDropNode: (node) => {
+            this.canAdd = true
             const {width, height} = node.size()
-            if (node.getData().type && node.getData().nodeType === 'dashedBox') {
-              return node.clone().size(60, 40)
-            }
             if (node.getData().type && node.getData().type === 'imageNodes2') {
-              return node.clone({keepId: true})
-            } else {
-              return node.clone()
-            }
-          },
-          validateNode: (node) => {
-            const existingNodes = this.graph.getNodes(); // 鑾峰彇鐢诲竷涓婃墍鏈夎妭鐐�
-            for (const existingNode of existingNodes) {
-              if (existingNode.id === node.id) {
-                this.$message({message: '璇ヨ澶囪妭鐐瑰凡鍦ㄧ敾甯冧笂锛屾棤娉曞啀娆$粯鍒�', type: 'warning'})
-                return false; // 鍙栨秷娣诲姞鑺傜偣鎿嶄綔
+              const nodes = this.graph.getNodes()
+              let deviceNoArr = []
+              // 妫�鏌ラ櫎褰撳墠鑺傜偣涔嬪鐨勬墍鏈夎妭鐐圭殑鍖呭洿妗嗘槸鍚︾浉浜�
+              for (const node2 of nodes) {
+                console.log(node2, 'saveDiagram node')
+                if (node2.getData().nodeType == 'node' && node2.getData().dataId) {
+                  if (node2.getData().dataId == node.getData().dataId) {
+                    deviceNoArr.push(node2.getData().deviceNo)
+                  }
+                }
+              }
+              let no = 0
+              console.log(node, 'node')
+              console.log(deviceNoArr, 'deviceNoArr')
+              for (let i = 1; i <= node.getData().basicUnitNum; i++) {
+                if (deviceNoArr.findIndex(item => item === i) === -1) {
+                  no = i
+                  node.getData().deviceNo = i
+                  if (node.getData().basicUnitNum>1){
+                    node.attr('text/text', node.attr('text/text') + '-' + i)
+                  }
+                  break
+                }
+              }
+              if (no === 0) {
+                this.canAdd = false
               }
             }
+            return node.clone()
+
+          },
+          validateNode: (node) => {
+            if (!this.canAdd) {
+              this.$message({message: '璇ヨ澶囪妭鐐瑰凡鍦ㄧ敾甯冧笂锛屾棤娉曞啀娆$粯鍒�', type: 'warning'})
+              return false
+            }
+
           },
           title: '',
           target: this.graph,
@@ -1003,10 +1026,12 @@
             //imageUrl: `${window.SITE_CONFIG['apiURL']}/sysPictureBase/getProductImg?token=${Cookies.get('token')}&id=${item.imgPath}`,
             width: 60,
             height: 60,
-            id: item.dataId, // 鎵嬪姩璁剧疆鑺傜偣鐨� ID
+            //id: item.dataId, // 鎵嬪姩璁剧疆鑺傜偣鐨� ID
             data: {
               type: 'imageNodes2',
               dataId: item.dataId,
+              basicUnitNum: item.basicUnitNum,
+              deviceNo: 0,
               nodeType: item.nodeType,
               nodeTypeExt: item.nodeTypeExt,
               productType: item.productType,
@@ -1174,7 +1199,7 @@
           }
           const nodeType = node.getData().nodeType; // 鑾峰彇鑺傜偣鐨勭被鍨�
           const nodeObj = node
-          console.log(123)
+          console.log(node.id, 'node.id')
           let intersectNode = this.findIntersectsNode(node)
           if (intersectNode) { // 褰撴湁鑺傜偣鐩镐氦 ==>骞惰
             this.addBranch(intersectNode, nodeObj)
@@ -1487,14 +1512,29 @@
         const nodes = this.graph.getNodes()
         for (const node of nodes) {
           if (node.getData().nodeType === 'dashedBox') {
-            this.$message({message: '璇ユā鍨嬩腑瀛樺湪铏氭锛屾棤娉曚繚瀛�', type: 'warning'})
-            return false; // 鍙栨秷娣诲姞鑺傜偣鎿嶄綔
+            this.$message({message: '璇ユā鍨嬩腑瀛樺湪铏氭锛屾棤娉曟彁浜�', type: 'warning'})
+            return false;
           }
           if (node.getData().nodeType === 'vote') {
-            const edges = this.graph.getConnectedEdges(node);
+            if (node.getData().voteNum === null || node.getData().voteNum === '') {
+              this.$message({message: '琛ㄥ喅鑺傜偣鐨勮〃鍐虫暟閲忔湭璁剧疆', type: 'warning'})
+              return false;
+            }
+            const edges = this.graph.getIncomingEdges(node);
             if (node.getData().voteNum >= edges.length) {
-              this.$message({message: '琛ㄥ喅鏁伴噺涓嶈兘楂樹簬璇ヨ妭鐐圭殑杩涚嚎鏁伴噺', type: 'warning'})
-              return false; // 鍙栨秷娣诲姞鑺傜偣鎿嶄綔
+              this.$message({message: '琛ㄥ喅鑺傜偣鐨勮〃鍐虫暟閲忓繀椤诲皬浜庤鑺傜偣鐨勮繘绾挎暟閲�', type: 'warning'})
+              return false;
+            }
+          }
+          if (node.getData().nodeType === 'switch') {
+            if (node.getData().voteNum === null || node.getData().voteNum === '') {
+              this.$message({message: '鏃佽仈鑺傜偣鐨勫浠芥暟閲忔湭璁剧疆', type: 'warning'})
+              return false;
+            }
+            const edges = this.graph.getIncomingEdges(node);
+            if (node.getData().voteNum >= edges.length) {
+              this.$message({message: '鏃佽仈鑺傜偣鐨勫浠芥暟閲忓繀椤诲皬浜庤鑺傜偣鐨勮繘绾挎暟閲�', type: 'warning'})
+              return false;
             }
           }
         }
@@ -1503,7 +1543,7 @@
         await this.$http['post'](`/taskReliability/ModelLine/analyze`, this.dataForm).then(async res => {
           if (res.msg === 'success') {
             this.$emit('refreshDataList')
-            this.$alert('瑙f瀽鎴愬姛', '鎻愮ず', {
+            this.$alert('鎻愪氦鎴愬姛', '鎻愮ず', {
               confirmButtonText: '纭畾'
             })
           }
@@ -1926,12 +1966,12 @@
       createParallelBrach(x, y, dragNode) {
         dragNode.position(x + 320, y - dragNode.size().height / 2)
         const connectNode = this.createConnectNode(x + 50, y)
-        this.createBrach(dragNode,connectNode,x,y-50)
-        this.createBrach(dragNode,connectNode,x,y+50)
+        this.createBrach(dragNode, connectNode, x, y - 50)
+        this.createBrach(dragNode, connectNode, x, y + 50)
 
         return {newStartNode: connectNode, newEndNode: dragNode}
       },
-      createBrach(dragNode,connectNode,x,y){
+      createBrach(dragNode, connectNode, x, y) {
         const dashedBox = this.createDashedBox(x + 150, y)
         dragNode.setData({startNodeId: connectNode.id})
 
@@ -1941,7 +1981,7 @@
           router: {
             name: 'manhattan',
             args: {
-              startDirections: ['top','bottom'], // 浠庝笅鏂瑰紑濮�
+              startDirections: ['top', 'bottom'], // 浠庝笅鏂瑰紑濮�
               endDirections: ['left'],      // 鍚戝乏鏂圭粨鏉�
             },
           },
@@ -1955,7 +1995,7 @@
             name: 'manhattan',
             args: {
               startDirections: ['right'], // 浠庝笅鏂瑰紑濮�
-              endDirections: ['top','bottom'],      // 鍚戝乏鏂圭粨鏉�
+              endDirections: ['top', 'bottom'],      // 鍚戝乏鏂圭粨鏉�
             },
           },
           connector: {name: 'rounded'},
@@ -1969,10 +2009,36 @@
 
         const leftConnectNode = this.createConnectNode(x, y + 87)
         const alignCenterDashedBox = this.createDashedBox(x + 209, y + 87)
-        const rightConnectNode = this.createBridgeNode(x + 530, y + 87)
-
         const leftBottomDashedBox = this.createDashedBox(x + 40, y + 160)
         const rightBottomDashedBox = this.createDashedBox(x + 380, y + 160)
+        let edgeTop = this.graph.addEdge({
+          source: {cell: leftTopDashedBox},
+          target: {cell: rightTopDashedBox},
+          router: {
+            name: 'manhattan',
+            args: {
+              startDirections: ['right'], // 浠庝笅鏂瑰紑濮�
+              endDirections: ['left'],      // 鍚戝乏鏂圭粨鏉�
+            },
+          },
+          connector: {name: 'rounded'},
+          zIndex: -1
+        })
+        let edgeBottom = this.graph.addEdge({
+          source: {cell: leftBottomDashedBox},
+          target: {cell: rightBottomDashedBox},
+          router: {
+            name: 'manhattan',
+            args: {
+              startDirections: ['right'], // 浠庝笅鏂瑰紑濮�
+              endDirections: ['left'],      // 鍚戝乏鏂圭粨鏉�
+            },
+          },
+          connector: {name: 'rounded'},
+          zIndex: -1
+        })
+
+        const rightConnectNode = this.createBridgeNode(x + 530, y + 87, leftConnectNode.id, edgeTop.id, edgeBottom.id)
 
         rightConnectNode.setData({startNodeId: leftConnectNode.id})
         leftConnectNode.setData({endNodeId: rightConnectNode.id})
@@ -2008,33 +2074,6 @@
             name: 'manhattan',
             args: {
               startDirections: ['top', 'bottom'], // 浠庝笅鏂瑰紑濮�
-              endDirections: ['left'],      // 鍚戝乏鏂圭粨鏉�
-            },
-          },
-          connector: {name: 'rounded'},
-          zIndex: -1
-        })
-
-        let edgeTop = this.graph.addEdge({
-          source: {cell: leftTopDashedBox},
-          target: {cell: rightTopDashedBox},
-          router: {
-            name: 'manhattan',
-            args: {
-              startDirections: ['right'], // 浠庝笅鏂瑰紑濮�
-              endDirections: ['left'],      // 鍚戝乏鏂圭粨鏉�
-            },
-          },
-          connector: {name: 'rounded'},
-          zIndex: -1
-        })
-        let edgeBottom = this.graph.addEdge({
-          source: {cell: leftBottomDashedBox},
-          target: {cell: rightBottomDashedBox},
-          router: {
-            name: 'manhattan',
-            args: {
-              startDirections: ['right'], // 浠庝笅鏂瑰紑濮�
               endDirections: ['left'],      // 鍚戝乏鏂圭粨鏉�
             },
           },
@@ -2169,18 +2208,19 @@
         connectNode.position(x, y - connectNode.size().height / 2)
         return connectNode
       },
-      createBridgeNode(x, y) {
-        const connectId = getUUID().toString()
+      createBridgeNode(x, y, connectId, edgeTopId, edgeBottomId) {
         const dragNodeId = getUUID().toString()
         let bridgeNode = this.graph.addNode({
           shape: 'image',
           width: 30,
           height: 30,
-          id: connectId,
+          id: dragNodeId,
           data: {
             isSelfCreated: true,
             type: 'imageNodes',
-            endNodeId: dragNodeId,
+            startNodeId: connectId,
+            edgeTopId: edgeTopId,
+            edgeBottomId: edgeBottomId,
             dataId: '',
             nodeType: 'bridge',
             nodeTypeExt: '',

--
Gitblit v1.9.1