From 563640b16778af6a281ed9417e2dcbed0ba5aa54 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期三, 08 五月 2024 10:51:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
web/public/modelImg/bridgeConnection.svg | 33
web/src/views/modules/taskReliability/RBD-edit-img.vue | 2109 ++++++++++++++++++++++++++++++--------------------------
web/public/modelImg/switch.svg | 10
web/src/views/modules/taskReliability/ConfigNode/index.vue | 4
web/public/modelImg/dashedBox.svg | 15
web/public/modelImg/parallel.svg | 22
6 files changed, 1,199 insertions(+), 994 deletions(-)
diff --git a/web/public/modelImg/bridgeConnection.svg b/web/public/modelImg/bridgeConnection.svg
new file mode 100644
index 0000000..fb9b35c
--- /dev/null
+++ b/web/public/modelImg/bridgeConnection.svg
@@ -0,0 +1,33 @@
+<svg width="150.000000" height="150.000000" viewBox="0 0 150 150" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <desc>
+ Created with Pixso.
+ </desc>
+ <defs>
+ <clipPath id="clip18_6">
+ <rect id="鐢绘澘 1" width="150.000000" height="150.000000" fill="white" fill-opacity="0"/>
+ </clipPath>
+ </defs>
+ <rect id="鐢绘澘 1" width="150.000000" height="150.000000" fill="#FFFFFF" fill-opacity="0"/>
+ <g clip-path="url(#clip18_6)">
+ <circle id="妞渾 1" cx="75.000000" cy="75.000000" r="75.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <circle id="妞渾 1" cx="75.000000" cy="75.000000" r="72.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 1" x1="25.000000" y1="112.500000" x2="125.000000" y2="112.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 2" x1="127.000000" y1="115.000000" x2="127.000000" y2="35.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 2" x1="25.000000" y1="115.000000" x2="25.000000" y2="35.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 3" x1="26.000000" y1="37.500000" x2="126.000000" y2="37.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 7" x1="129.000000" y1="75.000000" x2="149.000000" y2="75.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 7" x1="77.000000" y1="63.000000" x2="77.000000" y2="37.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 7" x1="77.000000" y1="111.000000" x2="77.000000" y2="86.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 7" x1="3.000000" y1="75.000000" x2="23.000000" y2="75.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <rect id="鐭╁舰 1" x="37.000000" y="31.000000" width="25.000000" height="14.000000" fill="#FFFFFF" fill-opacity="1.000000"/>
+ <rect id="鐭╁舰 1" x="39.500000" y="33.500000" width="20.000000" height="9.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <rect id="鐭╁舰 1" x="89.000000" y="30.000000" width="25.000000" height="14.000000" fill="#FFFFFF" fill-opacity="1.000000"/>
+ <rect id="鐭╁舰 1" x="91.500000" y="32.500000" width="20.000000" height="9.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <rect id="鐭╁舰 1" x="37.000000" y="104.000000" width="25.000000" height="14.000000" fill="#FFFFFF" fill-opacity="1.000000"/>
+ <rect id="鐭╁舰 1" x="39.500000" y="106.500000" width="20.000000" height="9.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <rect id="鐭╁舰 1" x="92.000000" y="105.000000" width="25.000000" height="14.000000" fill="#FFFFFF" fill-opacity="1.000000"/>
+ <rect id="鐭╁舰 1" x="94.500000" y="107.500000" width="20.000000" height="9.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <rect id="鐭╁舰 1" x="70.500000" y="87.500000" width="25.000000" height="14.000000" transform="rotate(-90 70.500000 87.500000)" fill="#FFFFFF" fill-opacity="1.000000"/>
+ <rect id="鐭╁舰 1" x="73.000000" y="85.000000" width="20.000000" height="9.000000" transform="rotate(-90 73.000000 85.000000)" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ </g>
+</svg>
diff --git a/web/public/modelImg/dashedBox.svg b/web/public/modelImg/dashedBox.svg
new file mode 100644
index 0000000..ddc2cc4
--- /dev/null
+++ b/web/public/modelImg/dashedBox.svg
@@ -0,0 +1,15 @@
+<svg width="170.000000" height="90.000000" viewBox="0 0 170 90" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <desc>
+ Created with Pixso.
+ </desc>
+ <defs>
+ <clipPath id="clip17_2">
+ <rect id="鐢绘澘 1" width="170.000000" height="90.000000" fill="white" fill-opacity="0"/>
+ </clipPath>
+ </defs>
+ <rect id="鐢绘澘 1" width="170.000000" height="90.000000" fill="#FFFFFF" fill-opacity="0"/>
+ <g clip-path="url(#clip17_2)">
+ <rect id="鐭╁舰 1" width="170.000000" height="90.000000" fill="#FFFFFF" fill-opacity="1.000000"/>
+ <rect id="鐭╁舰 1" x="1.000000" y="1.000000" width="168.000000" height="88.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="2.000000" stroke-dasharray="4 8 12 16"/>
+ </g>
+</svg>
diff --git a/web/public/modelImg/parallel.svg b/web/public/modelImg/parallel.svg
new file mode 100644
index 0000000..feec674
--- /dev/null
+++ b/web/public/modelImg/parallel.svg
@@ -0,0 +1,22 @@
+<svg width="150.000000" height="150.000000" viewBox="0 0 150 150" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <desc>
+ Created with Pixso.
+ </desc>
+ <defs>
+ <clipPath id="clip15_2">
+ <rect id="鐢绘澘 1" width="150.000000" height="150.000000" fill="white" fill-opacity="0"/>
+ </clipPath>
+ </defs>
+ <rect id="鐢绘澘 1" width="150.000000" height="150.000000" fill="#FFFFFF" fill-opacity="0"/>
+ <g clip-path="url(#clip15_2)">
+ <circle id="妞渾 1" cx="75.000000" cy="75.000000" r="75.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <circle id="妞渾 1" cx="75.000000" cy="75.000000" r="72.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 1" x1="11.000000" y1="111.000000" x2="103.000000" y2="111.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 2" x1="104.000000" y1="113.500000" x2="104.000000" y2="33.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 3" x1="14.000000" y1="36.000000" x2="103.000000" y2="36.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 4" x1="5.000000" y1="55.000000" x2="103.000000" y2="55.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 5" x1="2.000000" y1="75.000000" x2="103.000000" y2="75.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 6" x1="4.000000" y1="93.000000" x2="103.000000" y2="93.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 7" x1="106.000000" y1="75.000000" x2="146.000000" y2="75.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ </g>
+</svg>
diff --git a/web/public/modelImg/switch.svg b/web/public/modelImg/switch.svg
index 91e4162..4da813f 100644
--- a/web/public/modelImg/switch.svg
+++ b/web/public/modelImg/switch.svg
@@ -11,12 +11,10 @@
<g clip-path="url(#clip9_15)">
<circle id="妞渾 1" cx="75.000000" cy="75.000000" r="75.000000" fill="#C4C4C4" fill-opacity="0"/>
<circle id="妞渾 1" cx="75.000000" cy="75.000000" r="72.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
- <line id="鐩寸嚎 1" x1="0.000000" y1="72.000000" x2="30.000000" y2="72.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
- <line id="鐩寸嚎 2" x1="31.500000" y1="113.002548" x2="31.500000" y2="33.002548" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
- <line id="鐩寸嚎 3" x1="29.000000" y1="35.000000" x2="79.000000" y2="35.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
- <line id="鐩寸嚎 4" x1="30.000000" y1="58.000000" x2="80.000000" y2="58.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
- <line id="鐩寸嚎 5" x1="30.000000" y1="85.000000" x2="80.000000" y2="85.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
- <line id="鐩寸嚎 6" x1="30.000000" y1="110.500000" x2="80.000000" y2="110.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 3" x1="14.000000" y1="35.000000" x2="79.000000" y2="35.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 4" x1="4.000000" y1="58.000000" x2="80.000000" y2="58.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 5" x1="4.000000" y1="85.000000" x2="81.000000" y2="85.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 6" x1="12.000000" y1="110.500000" x2="80.000000" y2="110.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
<line id="鐩寸嚎 7" x1="118.000000" y1="76.000000" x2="148.000000" y2="76.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
<line id="鐩寸嚎 8" x1="85.896255" y1="37.340614" x2="111.483505" y2="73.882980" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
<circle id="妞渾 2" cx="114.000000" cy="76.000000" r="5.000000" fill="#C4C4C4" fill-opacity="0"/>
diff --git a/web/src/views/modules/taskReliability/ConfigNode/index.vue b/web/src/views/modules/taskReliability/ConfigNode/index.vue
index a825732..af74726 100644
--- a/web/src/views/modules/taskReliability/ConfigNode/index.vue
+++ b/web/src/views/modules/taskReliability/ConfigNode/index.vue
@@ -464,12 +464,12 @@
globalGridAttr.isRepair = cell.getData().isRepair
globalGridAttr.voteNum = cell.getData().voteNum
globalGridAttr.productType= cell.getData().productType
- console.log(cell.getData().voteNum,'cell.getData().voteNum')
+ // console.log(cell.getData().voteNum,'cell.getData().voteNum')
if(this.nodeType==='vote' || this.globalGridAttr.nodeTypeExt === 'vote' || (cell.getData().voteNum!==undefined && cell.getData().voteNum!=='')){
console.log(cell.getData().voteNum,'cell.getData().voteNum')
this.showNumberInput = true
}
- console.log(this.showNumberInput,'this.showNumberInput')
+ // console.log(this.showNumberInput,'this.showNumberInput')
this.showRepairInput = cell.getData().isRepair
cell.removeTools()
cell.addTools([
diff --git a/web/src/views/modules/taskReliability/RBD-edit-img.vue b/web/src/views/modules/taskReliability/RBD-edit-img.vue
index 1beb7ca..0878f72 100644
--- a/web/src/views/modules/taskReliability/RBD-edit-img.vue
+++ b/web/src/views/modules/taskReliability/RBD-edit-img.vue
@@ -54,486 +54,503 @@
</template>
<script>
-import {Graph, Shape, Addon, Cell} from '@antv/x6'
-import ConfigNode from './ConfigNode/index.vue'
-import ConfigEdge from './ConfigEdge/index.vue'
-import {removeCurrentTabHandle} from '@/commonJS/common'
-import {setHartBeat} from '@/commonJS/common';
-import Cookies from 'js-cookie'
+ import {Graph, Shape, Addon, Cell} from '@antv/x6'
+ import ConfigNode from './ConfigNode/index.vue'
+ 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',
- /*props: {
+ export default {
+ name: 'RBD-edit-img',
+ /*props: {
- },*/
- props: {
- projectId: {
- type: String
- },
- diagarmId: {
- type: String
- },
- pageCode: {
- default: 'wlt_pz'
- },
- flowCode: {
- type: String,
- default: 'wltFlow'
- },
- },
- components: {
- ConfigNode,
- ConfigEdge
- },
- data() {
- return {
- nodeAdded: false,
- connectNode: {},
- modelId: '',
- modelName: '',
- 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: 30,
- imgHeight: 30,
- imgId: '3',
- data: {}
- },
- {
- imgPath: 'switch',
- imgName: 'switch',
- nodeType: 'switch',
- imgWidth: 60,
- imgHeight: 60,
- imgId: '5',
- data: {}
- },
- {imgPath: 'vote', 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'},
- ],
- combiningImages: [
- {
- imgPath: 'switch',
- imgName: 'switch',
- nodeType: 'switch',
- imgWidth: 60,
- imgHeight: 60,
- imgId: '5',
- data: {}
- },
- {imgPath: 'vote', imgName: 'vote', nodeType: 'vote', imgWidth: 60, imgHeight: 60, imgId: '6', data: {}}
- ],
- nodeType: '',
- first: true,
- shape: '',
- projectList: [],
- diagramList: [],
- diagramId: '',
- projectId: '',
- diagramJson: '',
- diagramIdDisabled: false,
- dataForm: {
- id: null,
- content: null,
- publishContent: null,
- hasPublish: 0,
- urlPref: '',
+ },*/
+ props: {
+ projectId: {
+ type: String
},
- // emptyJson: {
- // // 鑺傜偣
- // nodes: [
- // {
- // id: 'node1', // String锛屽彲閫夛紝鑺傜偣鐨勫敮涓�鏍囪瘑
- // width: 500, // Number锛屽彲閫夛紝鑺傜偣澶у皬鐨� width 鍊�
- // height: 300, // Number锛屽彲閫夛紝鑺傜偣澶у皬鐨� height 鍊�
- // label: '璇ラ」鐩繕鏈厤缃巶瀹剁綉缁滃浘',
- // attrs: {
- // body: {
- // strokeWidth: 0
- // },
- // }
- // // text: {
- // // text: '璇ラ」鐩繕鏈紪鍒剁綉缁滃浘',
- // // // fontSize: 56,
- // // fill: 'rgba(0,0,0,0.7)'
- // // },
- // // },
- // }
- // ],
- // },
- type: '',
- id: '',
- graph: null,
- globalGridAttr: {
- productType: '',
- voteNum: '',
- repairMttcr: '',
- repairMttcrOther: '',
- repairDistribType: '',
- reliabDistribType: '',
- taskMtbcfOther: '',
- isRepair: 0,
- taskMtbcf: '',
- numberInputValue: '',
- statusImg: '',
- nodeTypeExt: '',
- type: 'mesh',
- size: 10,
- color: '#e5e5e5',
- thickness: 1,
- colorSecond: '#d0d0d0',
- thicknessSecond: 1,
- factor: 4,
- bgColor: '#e5e5e5',
- showImage: true,
- repeat: 'watermark',
- position: 'center',
- bgSize: JSON.stringify({width: 150, height: 150}),
- opacity: 0.1,
-
- stroke: '#5F95FF',
- strokeWidth: 1,
- connector: 'rounded',
- router: 'manhattan',
- label: '',
- nodeStroke: '#5F95FF',
- nodeStrokeWidth: 1,
- nodeFill: '#ffffff',
- nodeFontSize: 12,
- nodeColor: '#080808',
- nodeText: '',
- nodeDate: '',
- nodeUsers: '',
- nodeDataDate: '',
- nodeDataText: '',
- dataId: '',
- inspectName: '',
- distance: 0.5,
- angle: 0,
+ diagarmId: {
+ type: String
},
- isReady: false,
- curCel: Cell,
- left_p: document.documentElement.clientHeight - 100,
- ports: {
- groups: {
- top: {
- position: {name: 'top'},
- attrs: {
- circle: {
- r: 4,
- magnet: true,
- stroke: '#5F95FF',
- strokeWidth: 1,
- fill: '#fff',
- style: {
- visibility: 'hidden',
- },
- },
- },
- },
- right: {
- position: {name: 'right'},
- attrs: {
- circle: {
- r: 4,
- magnet: true,
- stroke: '#5F95FF',
- strokeWidth: 1,
- fill: '#fff',
- style: {
- visibility: 'hidden',
- },
- },
- },
- },
- bottom: {
- position: {name: 'bottom'},
- attrs: {
- circle: {
- r: 4,
- magnet: true,
- stroke: '#5F95FF',
- strokeWidth: 1,
- fill: '#fff',
- style: {
- visibility: 'hidden',
- },
- },
- },
- },
- left: {
- position: {name: 'left'},
- attrs: {
- circle: {
- r: 4,
- magnet: true,
- stroke: '#5F95FF',
- strokeWidth: 1,
- fill: '#fff',
- style: {
- visibility: 'hidden',
- },
- },
- },
- },
- },
- items: [
+ pageCode: {
+ default: 'wlt_pz'
+ },
+ flowCode: {
+ type: String,
+ default: 'wltFlow'
+ },
+ },
+ components: {
+ ConfigNode,
+ ConfigEdge
+ },
+ data() {
+ return {
+ hasMoveNode: false,
+ hasMoveSingleNode: null,
+ nodeAdded: false,
+ connectNode: {},
+ modelId: '',
+ modelName: '',
+ modelType: '',
+ timer: null,
+ imagesList: [
+ {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: {}},
{
- id: 'top1',
- group: 'top',
+ imgPath: 'connect',
+ imgName: 'connect',
+ nodeType: 'connect',
+ imgWidth: 30,
+ imgHeight: 30,
+ imgId: '3',
+ data: {}
},
{
- id: 'right1',
- group: 'right',
+ imgPath: 'switch',
+ imgName: 'switch',
+ nodeType: 'switch',
+ imgWidth: 60,
+ imgHeight: 60,
+ imgId: '5',
+ data: {}
},
{
- id: 'bottom1',
- group: 'bottom',
+ imgPath: 'parallel',
+ imgName: 'parallel',
+ nodeType: 'parallel',
+ imgWidth: 60,
+ imgHeight: 60,
+ imgId: '9',
+ data: {}
+ },
+ {imgPath: 'vote', imgName: 'vote', nodeType: 'vote', imgWidth: 60, imgHeight: 60, imgId: '6', data: {}},
+ {
+ imgPath: 'dashedBox',
+ imgName: 'dashedBox',
+ nodeType: 'dashedBox',
+ imgWidth: 60,
+ imgHeight: 60,
+ imgId: '9',
+ data: {}
},
{
- id: 'left1',
- group: 'left',
+ imgPath: 'bridgeConnection',
+ imgName: 'bridgeConnection',
+ nodeType: 'bridgeConnection',
+ imgWidth: 60,
+ imgHeight: 60,
+ imgId: '9',
+ data: {}
},
],
- }
- }
- },
- watch: {
- '$route.params.configId'() {
- // alert('$route.params.projectId change')
- this.projectId = this.$route.params.projectId
- //this.diagramId = this.$route.params.diagramId
- console.log(this.$route.params.projectId, 'this.$route.params.projectId')
- console.log(this.$route.params.diagramId, 'this.$route.params.diagramId')
- }
- },
- mounted() {
- //this.initDigram()
- this.type = 'grid'
- },
- methods: {
- 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){')
- },
- async getDiagram(modelId) {
- let params = {
- modelId: modelId,
- urlPref: window.SITE_CONFIG['apiURL'],
- token: Cookies.get('token'),
- }
- 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')
- if (this.dataForm.content != '') {
- this.diagramJson = JSON.parse(this.dataForm.content)
+ imagesList2: [
+ // {imgPath:'logo',imgName:'logo',nodeType:'node',,nodeTypeExt:'',productType:'',statusImg:'',imgWidth:60,imgHeight:60,imgId:'100',dataId:'123456'},
+ ],
+ nodeType: '',
+ first: true,
+ shape: '',
+ projectList: [],
+ diagramList: [],
+ diagramId: '',
+ projectId: '',
+ diagramJson: '',
+ diagramIdDisabled: false,
+ dataForm: {
+ id: null,
+ content: null,
+ publishContent: null,
+ hasPublish: 0,
+ urlPref: '',
+ },
+ // emptyJson: {
+ // // 鑺傜偣
+ // nodes: [
+ // {
+ // id: 'node1', // String锛屽彲閫夛紝鑺傜偣鐨勫敮涓�鏍囪瘑
+ // width: 500, // Number锛屽彲閫夛紝鑺傜偣澶у皬鐨� width 鍊�
+ // height: 300, // Number锛屽彲閫夛紝鑺傜偣澶у皬鐨� height 鍊�
+ // label: '璇ラ」鐩繕鏈厤缃巶瀹剁綉缁滃浘',
+ // attrs: {
+ // body: {
+ // strokeWidth: 0
+ // },
+ // }
+ // // text: {
+ // // text: '璇ラ」鐩繕鏈紪鍒剁綉缁滃浘',
+ // // // fontSize: 56,
+ // // fill: 'rgba(0,0,0,0.7)'
+ // // },
+ // // },
+ // }
+ // ],
+ // },
+ type: '',
+ id: '',
+ graph: null,
+ globalGridAttr: {
+ productType: '',
+ voteNum: '',
+ repairMttcr: '',
+ repairMttcrOther: '',
+ repairDistribType: '',
+ reliabDistribType: '',
+ taskMtbcfOther: '',
+ isRepair: 0,
+ taskMtbcf: '',
+ numberInputValue: '',
+ statusImg: '',
+ nodeTypeExt: '',
+ type: 'mesh',
+ size: 10,
+ color: '#e5e5e5',
+ thickness: 1,
+ colorSecond: '#d0d0d0',
+ thicknessSecond: 1,
+ factor: 4,
+ bgColor: '#e5e5e5',
+ showImage: true,
+ repeat: 'watermark',
+ position: 'center',
+ bgSize: JSON.stringify({width: 150, height: 150}),
+ opacity: 0.1,
+
+ stroke: '#5F95FF',
+ strokeWidth: 1,
+ connector: 'rounded',
+ router: 'manhattan',
+ label: '',
+ nodeStroke: '#5F95FF',
+ nodeStrokeWidth: 1,
+ nodeFill: '#ffffff',
+ nodeFontSize: 12,
+ nodeColor: '#080808',
+ nodeText: '',
+ nodeDate: '',
+ nodeUsers: '',
+ nodeDataDate: '',
+ nodeDataText: '',
+ dataId: '',
+ inspectName: '',
+ distance: 0.5,
+ angle: 0,
+ },
+ isReady: false,
+ curCel: Cell,
+ left_p: document.documentElement.clientHeight - 100,
+ ports: {
+ groups: {
+ top: {
+ position: {name: 'top'},
+ attrs: {
+ circle: {
+ r: 4,
+ magnet: true,
+ stroke: '#5F95FF',
+ strokeWidth: 1,
+ fill: '#fff',
+ style: {
+ visibility: 'hidden',
+ },
+ },
+ },
+ },
+ right: {
+ position: {name: 'right'},
+ attrs: {
+ circle: {
+ r: 4,
+ magnet: true,
+ stroke: '#5F95FF',
+ strokeWidth: 1,
+ fill: '#fff',
+ style: {
+ visibility: 'hidden',
+ },
+ },
+ },
+ },
+ bottom: {
+ position: {name: 'bottom'},
+ attrs: {
+ circle: {
+ r: 4,
+ magnet: true,
+ stroke: '#5F95FF',
+ strokeWidth: 1,
+ fill: '#fff',
+ style: {
+ visibility: 'hidden',
+ },
+ },
+ },
+ },
+ left: {
+ position: {name: 'left'},
+ attrs: {
+ circle: {
+ r: 4,
+ magnet: true,
+ stroke: '#5F95FF',
+ strokeWidth: 1,
+ fill: '#fff',
+ style: {
+ visibility: 'hidden',
+ },
+ },
+ },
+ },
+ },
+ items: [
+ {
+ id: 'top1',
+ group: 'top',
+ },
+ {
+ id: 'right1',
+ group: 'right',
+ },
+ {
+ id: 'bottom1',
+ group: 'bottom',
+ },
+ {
+ id: 'left1',
+ group: 'left',
+ },
+ ],
}
- // console.log(this.dataForm.content,'this.Diagram content')
- console.log(this.diagramJson, 'this.Diagram json')
- this.graph.fromJSON(this.diagramJson)
- this.graph.positionContent('left')
+ }
+ },
+ watch: {
+ '$route.params.configId'() {
+ // alert('$route.params.projectId change')
+ this.projectId = this.$route.params.projectId
+ //this.diagramId = this.$route.params.diagramId
+ console.log(this.$route.params.projectId, 'this.$route.params.projectId')
+ console.log(this.$route.params.diagramId, 'this.$route.params.diagramId')
+ }
+ },
+ mounted() {
+ //this.initDigram()
+ this.type = 'grid'
+ },
+ methods: {
+ 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){')
+ },
+ async getDiagram(modelId) {
+ let params = {
+ modelId: modelId,
+ urlPref: window.SITE_CONFIG['apiURL'],
+ token: Cookies.get('token'),
+ }
+ let res = await this.$http.get(`/taskReliability/ModelLine/getDiagram`, {params: params})
+ if (res.data !== null && (res.data.content != null)) {
+ this.dataForm = res.data
+ this.diagramJson = JSON.parse(this.dataForm.content)
+ if(this.diagramJson.cells.length!==0){
+ this.graph.fromJSON(this.diagramJson)
+ }else {
+ this.initCells()
+ }
+ console.log(this.diagramJson.cells.length, 'this.diagramJson.cells.length')
+
+ this.graph.positionContent('left')
+ // this.graph.centerContent()
+ // this.graph.zoomToFit()
+ } else {
+ await this.clearDiagram()
+ }
+ },
+ async clearDiagram() {
+ this.dataForm.id = null
+ // this.graph.fromJSON(this.emptyJson)
+ this.graph.fromJSON('')
// this.graph.centerContent()
// this.graph.zoomToFit()
- } else {
- await this.clearDiagram()
- }
- },
- async clearDiagram() {
- this.dataForm.id = null
- // this.graph.fromJSON(this.emptyJson)
- this.graph.fromJSON('')
- // this.graph.centerContent()
- // this.graph.zoomToFit()
- // this.graph.freeze()
- },
- async initDigram(productId) {
- this.timer = setHartBeat(10, 240);
- console.log(document.documentElement.clientWidth, 'document.documentElement.clientWidth')
- console.log(document.documentElement.clientHeight, 'document.documentElement.clientHeight')
- this.graph = new Graph({
- container: document.getElementById('containerImg'),
- width: document.documentElement.clientWidth,
- height: document.documentElement.clientHeight - 200,
- // async: true,
- grid: {
- visible: true,
- },
- autoResize: true,
- history: {
- enabled: true,
- beforeAddCommand(event, args) {
- if (args.key === 'tools') {
- console.log(args.key, 'event, args')
- return false
- }
+ // this.graph.freeze()
+ },
+ async initDigram(productId) {
+ this.timer = setHartBeat(10, 240);
+ console.log(document.documentElement.clientWidth, 'document.documentElement.clientWidth')
+ console.log(document.documentElement.clientHeight, 'document.documentElement.clientHeight')
+ this.graph = new Graph({
+ container: document.getElementById('containerImg'),
+ width: document.documentElement.clientWidth,
+ height: document.documentElement.clientHeight - 200,
+ // async: true,
+ grid: {
+ visible: true,
},
- },
- // panning: {
- // enabled: true,
- // },
- scroller: {
- enabled: true,
- pageVisible: true,
autoResize: true,
- pageBreak: true,
- pannable: true,
- minVisibleWidth: 200,
- minVisibleHeight: 200,
- modifiers: 'shift',
- },
- mousewheel: {
- enabled: true,
- zoomAtMousePosition: true,
- modifiers: 'ctrl',
- minScale: 0.5,
- maxScale: 3,
- },
- connecting: {
- router: {
- name: 'manhattan',
- // args: {
- // padding: 1,
- // },
- },
- connector: {
- name: 'rounded',
- args: {
- radius: 5,
+ history: {
+ enabled: true,
+ beforeAddCommand(event, args) {
+ if (args.key === 'tools') {
+ // console.log(args.key, 'event, args')
+ return false
+ }
},
},
- anchor: 'center',
- connectionPoint: 'anchor',
- allowBlank: false,
- snap: {
- radius: 20,
+ // panning: {
+ // enabled: true,
+ // },
+ scroller: {
+ enabled: true,
+ pageVisible: true,
+ autoResize: true,
+ pageBreak: true,
+ pannable: true,
+ minVisibleWidth: 200,
+ minVisibleHeight: 200,
+ modifiers: 'shift',
},
- createEdge() {
- return new Shape.Edge({
- attrs: {
- line: {
- stroke: '#A2B1C3',
- strokeWidth: 2,
- targetMarker: 'classic'
- }
+ mousewheel: {
+ enabled: true,
+ zoomAtMousePosition: true,
+ modifiers: 'ctrl',
+ minScale: 0.5,
+ maxScale: 3,
+ },
+ connecting: {
+ router: {
+ name: 'manhattan',
+ // args: {
+ // padding: 1,
+ // },
+ },
+ connector: {
+ name: 'rounded',
+ args: {
+ radius: 5,
},
- labels: [{
+ },
+ anchor: 'center',
+ connectionPoint: 'anchor',
+ allowBlank: false,
+ snap: {
+ radius: 20,
+ },
+ createEdge() {
+ return new Shape.Edge({
attrs: {
- body: {
- stroke: '#5F95FF',
+ line: {
+ stroke: '#A2B1C3',
+ strokeWidth: 2,
+ targetMarker: 'classic'
+ }
+ },
+ labels: [{
+ attrs: {
+ body: {
+ stroke: '#5F95FF',
+ },
+ text: {
+ text: ''
+ }
},
- text: {
- text: ''
+ position: {
+ distance: 0.5,
+ angle: 180,
+ options: {
+ keepGradient: true,
+ ensureLegibility: true
+ }
}
+ }],
+ tools: {
+ name: 'segments',
+ args: {
+ attrs: {fill: '#666'},
+ },
},
- position: {
- distance: 0.5,
- angle: 180,
- options: {
- keepGradient: true,
- ensureLegibility: true
- }
- }
- }],
- tools: {
- name: 'segments',
- args: {
- attrs: {fill: '#666'},
+ zIndex: 0,
+ })
+ },
+ validateConnection({targetMagnet}) {
+ return !!targetMagnet
+ },
+ },
+ highlighting: {
+ magnetAdsorbed: {
+ name: 'stroke',
+ args: {
+ attrs: {
+ fill: '#5F95FF',
+ stroke: '#5F95FF',
},
- },
- zIndex: 0,
- })
- },
- validateConnection({targetMagnet}) {
- return !!targetMagnet
- },
- },
- highlighting: {
- magnetAdsorbed: {
- name: 'stroke',
- args: {
- attrs: {
- fill: '#5F95FF',
- stroke: '#5F95FF',
},
},
},
- },
- resizing: true,
- rotating: true,
- selecting: {
- enabled: true,
- rubberband: true,
- rubberEdge: true,
- // showNodeSelectionBox: true,
- },
- snapline: true,
- keyboard: true,
- clipboard: true,
- })
- this.graph.centerContent()
- const stencil = new Addon.Stencil({
- getDragNode: (node) => node.clone({keepId: true}),
- getDropNode: (node) => {
- 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; // 鍙栨秷娣诲姞鑺傜偣鎿嶄綔
+ resizing: true,
+ rotating: true,
+ selecting: {
+ enabled: true,
+ rubberband: true,
+ rubberEdge: true,
+ showNodeSelectionBox: true,
+ },
+ snapline: true,
+ keyboard: true,
+ clipboard: true,
+ })
+ this.graph.centerContent()
+ const stencil = new Addon.Stencil({
+ getDragNode: (node) => node.clone({keepId: true}),
+ getDropNode: (node) => {
+ const { width, height } = node.size()
+ if(node.getData().type && node.getData().nodeType === 'dashedBox'){
+ return node.clone().size(170, 90)
}
- }
- },
- title: '',
- target: this.graph,
- stencilGraphWidth: 200,
- stencilGraphHeight: 280,
- collapsable: true,
- groups: [
- {
- title: '杩愮畻绗﹀彿',
- name: 'group1',
+ if (node.getData().type && node.getData().type === 'imageNodes2') {
+ return node.clone({keepId: true})
+ } else {
+ return node.clone()
+ }
},
- {
- title: '缁勫悎鍥�',
- name: 'combiningImages',
- graphHeight: 100,
+ validateNode: (node) => {
+ const existingNodes = this.graph.getNodes(); // 鑾峰彇鐢诲竷涓婃墍鏈夎妭鐐�
+ for (const existingNode of existingNodes) {
+ if (existingNode.id === node.id) {
+ this.$message({message: '璇ヨ澶囪妭鐐瑰凡鍦ㄧ敾甯冧笂锛屾棤娉曞啀娆$粯鍒�', type: 'warning'})
+ return false; // 鍙栨秷娣诲姞鑺傜偣鎿嶄綔
+ }
+ }
},
- {
- title: '璁惧鑺傜偣',
- name: 'group2',
- graphHeight: '',
- layoutOptions: {
- rowHeight: 90,
+ title: '',
+ target: this.graph,
+ stencilGraphWidth: 200,
+ stencilGraphHeight: 280,
+ collapsable: true,
+ groups: [
+ {
+ title: '杩愮畻绗﹀彿',
+ name: 'group1',
+ graphHeight: 360,
},
- }
- ],
- layoutOptions: {
- columns: 2,
- columnWidth: 105,
- },
- })
- document.getElementById('stencilImg').appendChild(stencil.container)
- const imageNodes = this.imgsList.map((item) =>
+ {
+ title: '璁惧鑺傜偣',
+ name: 'group2',
+ graphHeight: '',
+ layoutOptions: {
+ rowHeight: 90,
+ },
+ }
+ ],
+ layoutOptions: {
+ columns: 2,
+ columnWidth: 105,
+ },
+ })
+ document.getElementById('stencilImg').appendChild(stencil.container)
+ const imageNodes = this.imagesList.map((item) =>
this.graph.createNode({
shape: 'image',
// imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
@@ -565,47 +582,14 @@
},
ports: {...this.ports},
}),
- )
- const combiningImages = this.combiningImages.map((item) =>
- this.graph.createNode({
- shape: 'image',
- // imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
- width: item.imgWidth,
- height: item.imgHeight,
- data: {
- type: 'imageNodes',
- dataId: '',
- nodeType: item.nodeType,
- nodeTypeExt: '',
- voteNum: ''
- },
- attrs: {
- image: {
- 'xlink:href': '/modelImg/' + item.imgPath + '.svg',
- },
- 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},
- }),
- )
- let params = {
- productId: productId
- }
- let res = await this.$http.get(`/basicInfo/XhProductModel/getProduct`, {params: params})
- this.imgsList2 = res.data
- console.log(this.imgsList2, 'getProduct(productId)234567890')
- const imageNodes2 = this.imgsList2.map((item) =>
+ )
+ let params = {
+ productId: productId
+ }
+ let res = await this.$http.get(`/basicInfo/XhProductModel/getProduct`, {params: params})
+ this.imagesList2 = res.data
+ console.log(this.imagesList2, 'getProduct(productId)234567890')
+ const imageNodes2 = this.imagesList2.map((item) =>
this.graph.createNode({
shape: 'image',
imageUrl: `${window.SITE_CONFIG['apiURL']}/sysPictureBase/getProductImg?token=${Cookies.get('token')}&id=${item.imgPath}`,
@@ -667,562 +651,715 @@
],
ports: {...this.ports},
}),
- )
- stencil.load(imageNodes, 'group1')
- stencil.load(imageNodes2, 'group2')
- stencil.load(combiningImages, 'combiningImages')
+ )
+ stencil.load(imageNodes, 'group1')
+ stencil.load(imageNodes2, 'group2')
- this.graph.bindKey(['meta+c', 'ctrl+c'], () => {
- const cells = this.graph.getSelectedCells()
- if (cells.length) {
- this.graph.copy(cells)
- }
- return false
- })
+ this.graph.bindKey(['meta+c', 'ctrl+c'], () => {
+ const cells = this.graph.getSelectedCells()
+ if (cells.length) {
+ this.graph.copy(cells)
+ }
+ return false
+ })
- this.graph.bindKey(['meta+x', 'ctrl+x'], () => {
- const cells = this.graph.getSelectedCells()
- if (cells.length) {
- this.graph.cut(cells)
- }
- return false
- })
- this.graph.bindKey(['meta+v', 'ctrl+v'], () => {
- if (!this.graph.isClipboardEmpty()) {
- const cells = this.graph.paste({offset: 32})
- this.graph.cleanSelection()
- this.graph.select(cells)
- }
- return false
- })
+ this.graph.bindKey(['meta+x', 'ctrl+x'], () => {
+ const cells = this.graph.getSelectedCells()
+ if (cells.length) {
+ this.graph.cut(cells)
+ }
+ return false
+ })
+ this.graph.bindKey(['meta+v', 'ctrl+v'], () => {
+ if (!this.graph.isClipboardEmpty()) {
+ const cells = this.graph.paste({offset: 32})
+ this.graph.cleanSelection()
+ this.graph.select(cells)
+ }
+ return false
+ })
//undo redo
- this.graph.bindKey(['meta+z', 'ctrl+z'], () => {
- if (this.graph.history.canUndo()) {
- this.graph.history.undo()
- }
- return false
- })
+ this.graph.bindKey(['meta+z', 'ctrl+z'], () => {
+ if (this.graph.history.canUndo()) {
+ this.graph.history.undo()
+ }
+ return false
+ })
- this.graph.bindKey(['meta+shift+z', 'ctrl+shift+z'], () => {
- if (this.graph.history.canRedo()) {
- this.graph.history.redo()
- }
- return false
- })
+ this.graph.bindKey(['meta+shift+z', 'ctrl+shift+z'], () => {
+ if (this.graph.history.canRedo()) {
+ this.graph.history.redo()
+ }
+ return false
+ })
// select all
- this.graph.bindKey(['meta+a', 'ctrl+a'], () => {
- const nodes = this.graph.getNodes()
- if (nodes) {
- this.graph.select(nodes)
- }
- })
-//delete
- this.graph.bindKey('delete', () => {
- const cells = this.graph.getSelectedCells()
- if (cells.length) {
- this.$confirm('鏄惁鍒犻櫎璇ヨ妭鐐�?', '鎻愮ず', {
- confirmButtonText: '纭畾',
- cancelButtonText: '鍙栨秷',
- type: 'warning'
- }).then(() => {
- this.$message({
- type: 'success',
- message: '鍒犻櫎鎴愬姛!'
- })
- this.graph.removeCells(cells)
- }).catch(() => {
- this.$message({
- type: 'info',
- message: '宸插彇娑堝垹闄�'
- })
- })
- }
- })
-// zoom
- this.graph.bindKey(['ctrl+1', 'meta+1'], () => {
- const zoom = this.graph.zoom()
- if (zoom < 1.5) {
- this.graph.zoom(0.1)
- }
- })
-
- this.graph.bindKey(['ctrl+2', 'meta+2'], () => {
- const zoom = this.graph.zoom()
- if (zoom > 0.5) {
- this.graph.zoom(-0.1)
- }
- })
-
- this.graph.on('blank:click', ({cell}) => {
- this.reset()
- // this.type.value = "grid"
- this.type = 'grid'
- // this.id = cell.id
- })
- // 鐩戝惉鑺傜偣娣诲姞浜嬩欢
- this.graph.on('node:added', ({node}) => {
- const nodeId = node.id; // 鑾峰彇鑺傜偣鐨勫敮涓� ID
- const nodeObj = node
- const intersectNodes = [];
- // 妫�鏌ラ櫎褰撳墠鑺傜偣涔嬪鐨勬墍鏈夎妭鐐圭殑鍖呭洿妗嗘槸鍚︾浉浜�
- for (const otherNode of this.graph.getNodes()) {
- if (otherNode === node) continue;
- const bbox1 = node.getBBox();
- const bbox2 = otherNode.getBBox();
- if (this.isIntersect(bbox1, bbox2)) {
- intersectNodes.push(otherNode);
+ this.graph.bindKey(['meta+a', 'ctrl+a'], () => {
+ const nodes = this.graph.getNodes()
+ if (nodes) {
+ this.graph.select(nodes)
}
- }
- if (intersectNodes.length > 0) {
- // console.log('Nodes intersect with node:', node.id);
- console.log('Intersecting nodes:', intersectNodes.map(n => n)); // 鐩镐氦鑺傜偣鐨勫璞�
- intersectNodes.map(node => {
- this.addNodeAndConnect(node, nodeObj);
- })
- }
- });
- this.graph.on('cell:click', ({cell}) => {
- // this.type.value = cell.isNode() ? "node" : "edge"
- this.type = cell.isNode() ? 'node' : 'edge'
- this.shape = cell.shape
- this.id = cell.id
- if (this.type === 'node') {
- this.nodeType = cell.getData().nodeType
- console.log(this.nodeType, cell.id, 'this.nodeType')
- }
- console.log(this.shape, 'this.shape')
- // this.nodeOpt(this.id, this.globalGridAttr)
- })
- //鍗曞嚮杈硅妭鐐�
- this.graph.on('edge:click', ({edge}) => {
- this.reset()
- edge.attr('line/stroke', 'orange')
- edge.prop('labels/0', {
- attrs: {
- body: {
- stroke: 'orange',
- },
- },
-
})
- })
- // 鍗曞嚮node鑺傜偣
- this.graph.on('node:click', ({node}) => {
- })
- // 鎺у埗杩炴帴妗╂樉绀�/闅愯棌
- this.graph.on('node:delete', ({view, e}) => {
- e.stopPropagation()
- view.cell.remove()
- })
+//delete
+ this.graph.bindKey('delete', () => {
+ const cells = this.graph.getSelectedCells()
+ if (cells.length) {
+ this.$confirm('鏄惁鍒犻櫎璇ヨ妭鐐�?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ this.$message({
+ type: 'success',
+ message: '鍒犻櫎鎴愬姛!'
+ })
+ this.graph.removeCells(cells)
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ })
+ })
+ }
+ })
+// zoom
+ this.graph.bindKey(['ctrl+1', 'meta+1'], () => {
+ const zoom = this.graph.zoom()
+ if (zoom < 1.5) {
+ this.graph.zoom(0.1)
+ }
+ })
- this.graph.on('node:customevent', ({name, view, e}) => {
- if (name === 'node:delete') {
+ this.graph.bindKey(['ctrl+2', 'meta+2'], () => {
+ const zoom = this.graph.zoom()
+ if (zoom > 0.5) {
+ this.graph.zoom(-0.1)
+ }
+ })
+
+ this.graph.on('blank:click', ({cell}) => {
+ this.reset()
+ // this.type.value = "grid"
+ this.type = 'grid'
+ // this.id = cell.id
+ })
+ // 鐩戝惉鑺傜偣娣诲姞浜嬩欢
+ this.graph.on('node:added', ({node}) => {
+ const nodeId = node.id; // 鑾峰彇鑺傜偣鐨勫敮涓� ID
+ const nodeObj = node
+ const intersectNodes = [];
+ // 妫�鏌ラ櫎褰撳墠鑺傜偣涔嬪鐨勬墍鏈夎妭鐐圭殑鍖呭洿妗嗘槸鍚︾浉浜�
+ for (const otherNode of this.graph.getNodes()) {
+ if (otherNode === node) continue;
+ const bbox1 = node.getBBox();
+ const bbox2 = otherNode.getBBox();
+ if (this.isIntersect(bbox1, bbox2)) {
+ intersectNodes.push(otherNode);
+ }
+ }
+ if (intersectNodes.length > 0) {
+ // console.log('Nodes intersect with node:', node.id);
+ console.log('Intersecting nodes:', intersectNodes.map(n => n)); // 鐩镐氦鑺傜偣鐨勫璞�
+ intersectNodes.map(node => {
+ this.addNodeAndConnect(node, nodeObj);
+ })
+ }
+ });
+ // 鐩戝惉鑺傜偣浣嶇疆鏀瑰彉浜嬩欢
+ this.graph.on('node:change:position', ({node}) => {
+ this.hasMoveNode = true
+ this.hasMoveSingleNode = node
+ });
+ // 鎶捣
+ this.graph.on('node:mouseup', ({e,x,y,node}) => {
+
+ if (this.hasMoveNode) {
+ const selectionNodes = this.graph.getSelectedCells().filter(node => node.isNode() )
+ if (selectionNodes.length == 0){
+ selectionNodes.push(this.hasMoveSingleNode)
+ }
+ //let selectionNodes = []
+ console.log('妯潗鏍囷細',x,'绾靛潗鏍囷細'+y)
+ // let allNodes = this.graph.getNodes()
+ //
+ // for(let node of allNodes){
+ // if (this.graph.isSelected(node)){
+ // selectionNodes.push(node)
+ // }
+ //
+ // }
+ // 鑾峰彇鍖呭惈鎸囧畾鍧愭爣鐐圭殑鑺傜偣
+ const nodes = this.graph.getNodes();
+ let hasNodes = []
+ for (let i = 0; i < nodes.length; i++) {
+ const node = nodes[i];
+ const bbox = node.getBBox();
+ if (x>=bbox.x && x <= bbox.x + bbox.width && y>=bbox.y && y <= bbox.y + bbox.height) {
+ if ( selectionNodes.indexOf(node)===-1) {
+ hasNodes.push(node);
+ }
+ }
+ }
+ if(hasNodes){}
+ console.log('鑾峰彇鍖呭惈鎸囧畾鍧愭爣鐐圭殑鑺傜偣闆嗗悎',hasNodes)
+ console.log('閫変腑鐨勮妭鐐归泦鍚堬細',selectionNodes)
+
+ // if (selectionNodes.length>2)
+ // this.graph.addEdge({
+ // source: {cell: selectionNodes[0], port: 'left1'},
+ // target: {cell: selectionNodes[selectionNodes.length-1], port: 'right1'},
+ // router: {name: 'manhattan'},
+ // connector: {name: 'rounded'}
+ // })
+ this.hasMoveNode = false
+ this.hasMoveSingleNode = null
+
+
+ // console.log('绉诲姩杩囪妭鐐癸紙澶氫釜锛夊啀鎶捣榧犳爣鍚庡緱鍒扮殑鑺傜偣',selectedNodes);
+ }
+ });
+ this.graph.on('cell:click', ({cell}) => {
+ // this.type.value = cell.isNode() ? "node" : "edge"
+ this.type = cell.isNode() ? 'node' : 'edge'
+ this.shape = cell.shape
+ this.id = cell.id
+ if (this.type === 'node') {
+ this.nodeType = cell.getData().nodeType
+ // console.log(this.nodeType, cell.id, 'this.nodeType')
+ }
+ // console.log(this.shape, 'this.shape')
+ // this.nodeOpt(this.id, this.globalGridAttr)
+ })
+ //鍗曞嚮杈硅妭鐐�
+ this.graph.on('edge:click', ({edge}) => {
+ this.reset()
+ edge.attr('line/stroke', 'orange')
+ edge.prop('labels/0', {
+ attrs: {
+ body: {
+ stroke: 'orange',
+ },
+ },
+
+ })
+ })
+ // 鍗曞嚮node鑺傜偣
+ this.graph.on('node:click', ({node}) => {
+ })
+ // 鎺у埗杩炴帴妗╂樉绀�/闅愯棌
+ this.graph.on('node:delete', ({view, e}) => {
e.stopPropagation()
view.cell.remove()
- }
- })
- // 鍙屽嚮缂栬緫
- this.graph.on('cell:dblclick', ({cell, e}) => {
- const isNode = cell.isNode()
- const name = cell.isNode() ? 'node-editor' : 'edge-editor'
- cell.removeTool(name)
- cell.addTools({
- name,
- args: {
- event: e,
- attrs: {
- backgroundColor: isNode ? '#EFF4FF' : '#FFF',
- text: {
- fontSize: 16,
- fill: '#262626',
- },
- },
- },
})
- })
- this.graph.on('node:mouseenter', ({node}) => {
- const container = document.getElementById('containerImg')
- const ports = container.querySelectorAll(
- '.x6-port-body',
- )
- this.showPorts(ports, true)
- })
-
- this.graph.on('node:mouseleave', ({node}) => {
- // if (node.hasTool('button-remove')) {
- // node.removeTool('button-remove')
- // }
- const container = document.getElementById('containerImg')
- const ports = container.querySelectorAll(
- '.x6-port-body',
- )
- this.showPorts(ports, false)
- })
-
- this.graph.on('edge:mouseenter', ({cell}) => {
- // alert(123)
- cell.addTools([
- {
- name: 'source-arrowhead',
- },
- {
- name: 'target-arrowhead',
+ this.graph.on('node:customevent', ({name, view, e}) => {
+ if (name === 'node:delete') {
+ e.stopPropagation()
+ view.cell.remove()
+ }
+ })
+ // 鍙屽嚮缂栬緫
+ this.graph.on('cell:dblclick', ({cell, e}) => {
+ const isNode = cell.isNode()
+ const name = cell.isNode() ? 'node-editor' : 'edge-editor'
+ cell.removeTool(name)
+ cell.addTools({
+ name,
args: {
+ event: e,
attrs: {
- fill: 'red',
+ backgroundColor: isNode ? '#EFF4FF' : '#FFF',
+ text: {
+ fontSize: 16,
+ fill: '#262626',
+ },
},
},
- },
- {
- name: 'segments',
- args: {snapRadius: 20, attrs: {fill: '#444'}}
- },
- ])
- })
-
- this.graph.on('edge:mouseleave', ({cell}) => {
- cell.removeTools()
- })
-
- await this.getDiagram(this.dataForm.id)
- },
- showPorts(ports, show) {
- for (let i = 0, len = ports.length; i < len; i = i + 1) {
- ports[i].style.visibility = show ? 'visible' : 'hidden'
- }
- },
- reset() {
- this.graph.drawBackground({color: '#fff'})
- const nodes = this.graph.getNodes()
- const edges = this.graph.getEdges()
- nodes.forEach((node) => {
- node.attr('body/stroke', '#5F95FF')
- })
- edges.forEach((edge) => {
- edge.attr('line/stroke', '#5F95FF')
- edge.prop('labels/0', {
- attrs: {
- body: {
- stroke: '#5F95FF',
- },
- },
+ })
})
- })
- },
- async search() {
- await this.getDiagram();
- },
- async saveDiagram() {
- console.log(JSON.stringify(this.graph.toJSON()), 'graph.toJSON()')
- this.dataForm.content = JSON.stringify(this.graph.toJSON())
- this.dataForm.urlPref = window.SITE_CONFIG['apiURL']
- console.log(this.dataForm, 'dataFrom')
- await this.$http[this.dataForm.id === null ? 'post' : 'put'](`/taskReliability/ModelLine/`, this.dataForm).then(async res => {
- if (res.msg === 'success') {
- this.$alert('淇濆瓨鎴愬姛', '鎻愮ず', {
- confirmButtonText: '纭畾'
+
+ this.graph.on('node:mouseenter', ({node}) => {
+ const container = document.getElementById('containerImg')
+ const ports = container.querySelectorAll(
+ '.x6-port-body',
+ )
+ this.showPorts(ports, true)
+ })
+
+ this.graph.on('node:mouseleave', ({node}) => {
+ // if (node.hasTool('button-remove')) {
+ // node.removeTool('button-remove')
+ // }
+ const container = document.getElementById('containerImg')
+ const ports = container.querySelectorAll(
+ '.x6-port-body',
+ )
+ this.showPorts(ports, false)
+ })
+
+ this.graph.on('edge:mouseenter', ({cell}) => {
+ // alert(123)
+ cell.addTools([
+ {
+ name: 'source-arrowhead',
+ },
+ {
+ name: 'target-arrowhead',
+ args: {
+ attrs: {
+ fill: 'red',
+ },
+ },
+ },
+ {
+ name: 'segments',
+ args: {snapRadius: 20, attrs: {fill: '#444'}}
+ },
+ ])
+ })
+
+ this.graph.on('edge:mouseleave', ({cell}) => {
+ cell.removeTools()
+ })
+
+ await this.getDiagram(this.dataForm.id)
+ },
+ showPorts(ports, show) {
+ for (let i = 0, len = ports.length; i < len; i = i + 1) {
+ ports[i].style.visibility = show ? 'visible' : 'hidden'
+ }
+ },
+ reset() {
+ this.graph.drawBackground({color: '#fff'})
+ const nodes = this.graph.getNodes()
+ const edges = this.graph.getEdges()
+ nodes.forEach((node) => {
+ node.attr('body/stroke', '#5F95FF')
+ })
+ edges.forEach((edge) => {
+ edge.attr('line/stroke', '#5F95FF')
+ edge.prop('labels/0', {
+ attrs: {
+ body: {
+ stroke: '#5F95FF',
+ },
+ },
})
+ })
+ },
+ async search() {
+ await this.getDiagram();
+ },
+ async saveDiagram() {
+ console.log(JSON.stringify(this.graph.toJSON()), 'graph.toJSON()')
+ this.dataForm.content = JSON.stringify(this.graph.toJSON())
+ this.dataForm.urlPref = window.SITE_CONFIG['apiURL']
+ console.log(this.dataForm, 'dataFrom')
+ await this.$http[this.dataForm.id === null ? 'post' : 'put'](`/taskReliability/ModelLine/`, this.dataForm).then(async res => {
+ if (res.msg === 'success') {
+ this.$alert('淇濆瓨鎴愬姛', '鎻愮ず', {
+ confirmButtonText: '纭畾'
+ })
+ }
+ })
+ },
+ async analyzeDiagram() {
+ console.log(JSON.stringify(this.graph.toJSON()), 'graph.toJSON()')
+ this.dataForm.content = JSON.stringify(this.graph.toJSON())
+ this.dataForm.urlPref = window.SITE_CONFIG['apiURL']
+ await this.$http['post'](`/taskReliability/ModelLine/analyze`, this.dataForm).then(async res => {
+ if (res.msg === 'success') {
+ this.$alert('瑙f瀽鎴愬姛', '鎻愮ず', {
+ confirmButtonText: '纭畾'
+ })
+ }
+ })
+ },
+ leftAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let leftX = null
+ for (let a of NODE) {
+ if (leftX == null || a.getBBox().x < leftX) {
+ leftX = a.getBBox().x
+ }
}
- })
- },
- async analyzeDiagram() {
- console.log(JSON.stringify(this.graph.toJSON()), 'graph.toJSON()')
- this.dataForm.content = JSON.stringify(this.graph.toJSON())
- this.dataForm.urlPref = window.SITE_CONFIG['apiURL']
- await this.$http['post'](`/taskReliability/ModelLine/analyze`, this.dataForm).then(async res => {
- if (res.msg === 'success') {
- this.$alert('瑙f瀽鎴愬姛', '鎻愮ず', {
- confirmButtonText: '纭畾'
- })
+ for (let a of NODE) {
+ let y = a.getBBox().y
+ a.position(leftX, y)
+ // console.log(leftX, ':', y, ' x:y')
}
- })
- },
- leftAlign() {
- const NODE = this.graph.getSelectedCells()
- let leftX = null
- for (let a of NODE) {
- if (leftX == null || a.getBBox().x < leftX) {
- leftX = a.getBBox().x
+ },
+ topAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let topY = null
+ for (let a of NODE) {
+ console.log(a.getBBox(), 'a.getBBox()')
+ if (topY == null || a.getBBox().y < topY) {
+ topY = a.getBBox().y
+ }
}
- }
- for (let a of NODE) {
- let y = a.getBBox().y
- a.position(leftX, y)
- // console.log(leftX, ':', y, ' x:y')
- }
- },
- topAlign() {
- const NODE = this.graph.getSelectedCells()
- let topY = null
- for (let a of NODE) {
- console.log(a.getBBox(), 'a.getBBox()')
- if (topY == null || a.getBBox().y < topY) {
- topY = a.getBBox().y
+ for (let a of NODE) {
+ let x = a.getBBox().x
+ a.position(x, topY)
}
- }
- for (let a of NODE) {
- let x = a.getBBox().x
- a.position(x, topY)
- // console.log(leftX, ':', y, ' x:y')
- }
- },
- centerAlign() {
- const NODE = this.graph.getSelectedCells()
- let rightX = null
- let leftX = null
- for (let a of NODE) {
- if (leftX == null || a.getBBox().x < leftX) {
- leftX = a.getBBox().x
+ },
+ centerAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let rightX = null
+ let leftX = null
+ for (let a of NODE) {
+ if (leftX == null || a.getBBox().x < leftX) {
+ leftX = a.getBBox().x
+ }
}
- }
- for (let a of NODE) {
- if (rightX == null || a.getBBox().x + a.getBBox().width > rightX) {
- rightX = a.getBBox().x + a.getBBox().width
+ for (let a of NODE) {
+ if (rightX == null || a.getBBox().x + a.getBBox().width > rightX) {
+ rightX = a.getBBox().x + a.getBBox().width
+ }
}
- }
- let centerX = leftX + (rightX - leftX) / 2
+ let centerX = leftX + (rightX - leftX) / 2
- for (let a of NODE) {
- let y = a.getBBox().y
- a.position(centerX - a.getBBox().width / 2, y)
- // console.log(leftX, ':', y, ' x:y')
- }
- },
- shuipingAlign() {
- const NODE = this.graph.getSelectedCells()
- let bottomY = null
- let topY = null
- for (let a of NODE) {
- if (topY == null || a.getBBox().y || 0 < topY) {
- topY = a.getBBox().y
+ for (let a of NODE) {
+ let y = a.getBBox().y
+ a.position(centerX - a.getBBox().width / 2, y)
}
- }
- for (let a of NODE) {
- if (bottomY == null || a.getBBox().y + a.getBBox().height > bottomY) {
- bottomY = a.getBBox().y + a.getBBox().height
+ },
+ shuipingAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let bottomY = null
+ let topY = null
+ for (let a of NODE) {
+ if (topY == null || a.getBBox().y || 0 < topY) {
+ topY = a.getBBox().y
+ }
}
- }
+ for (let a of NODE) {
+ if (bottomY == null || a.getBBox().y + a.getBBox().height > bottomY) {
+ bottomY = a.getBBox().y + a.getBBox().height
+ }
+ }
- let centerY = topY + (bottomY - topY) / 2
- for (let a of NODE) {
- let x = a.getBBox().x
- let centerHei = a.getBBox().height / 2
- a.position(x, centerY - centerHei)
- }
- },
- rightAlign() {
- const NODE = this.graph.getSelectedCells()
- let rightX = null
- for (let a of NODE) {
- if (rightX == null || a.getBBox().x + a.getBBox().width > rightX) {
- rightX = a.getBBox().x + a.getBBox().width
+ let centerY = topY + (bottomY - topY) / 2
+ for (let a of NODE) {
+ let x = a.getBBox().x
+ let centerHei = a.getBBox().height / 2
+ a.position(x, centerY - centerHei)
}
- }
- for (let a of NODE) {
- let y = a.getBBox().y
- a.position(rightX - a.getBBox().width, y)
- }
- },
- bottomAlign() {
- const NODE = this.graph.getSelectedCells()
- let bottomY = null
- for (let a of NODE) {
- if (bottomY == null || (a.getBBox().y + a.getBBox().height) > bottomY) {
- bottomY = a.getBBox().y + a.getBBox().height
+ },
+ rightAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let rightX = null
+ for (let a of NODE) {
+ if (rightX == null || a.getBBox().x + a.getBBox().width > rightX) {
+ rightX = a.getBBox().x + a.getBBox().width
+ }
}
- }
+ for (let a of NODE) {
+ let y = a.getBBox().y
+ a.position(rightX - a.getBBox().width, y)
+ }
+ },
+ bottomAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let bottomY = null
+ for (let a of NODE) {
+ if (bottomY == null || (a.getBBox().y + a.getBBox().height) > bottomY) {
+ bottomY = a.getBBox().y + a.getBBox().height
+ }
+ }
- for (let a of NODE) {
- let x = a.getBBox().x
- a.position(x, bottomY - a.getBBox().height)
- }
- },
- close() {
- if (this.timer) {
- window.clearInterval(this.timer)
- }
- },
- // 瀹氫箟鍑芥暟鏉ユ鏌ヤ袱涓寘鍥存鏄惁鐩镐氦
- isIntersect(bbox1, bbox2) {
- return (
+ for (let a of NODE) {
+ let x = a.getBBox().x
+ a.position(x, bottomY - a.getBBox().height)
+ }
+ },
+ close() {
+ if (this.timer) {
+ window.clearInterval(this.timer)
+ }
+ },
+ // 瀹氫箟鍑芥暟鏉ユ鏌ヤ袱涓寘鍥存鏄惁鐩镐氦
+ isIntersect(bbox1, bbox2) {
+ return (
bbox1.x < bbox2.x + bbox2.width &&
bbox1.x + bbox1.width > bbox2.x &&
bbox1.y < bbox2.y + bbox2.height &&
bbox1.y + bbox1.height > bbox2.y
- )
- },
- addNodeAndConnect(node, nodeObj) { // node鏄敾甯冨師鏈夌殑鑺傜偣銆俷odeObj鏄綋鍓嶆嫋鎷界殑鑺傜偣
- const nodeType = node.getData().nodeType // 鑾峰彇鑺傜偣绫诲瀷
- const edges = this.graph.getConnectedEdges(node); // 鑾峰彇涓庡師鑺傜偣鐩稿叧鑱旂殑鎵�鏈夎繛鎺ョ嚎
- let TopSum = 0 // 鍦ㄥ師鑺傜偣涓婃柟
- let BottomSum = 0 // 鍦ㄥ師鑺傜偣涓嬫柟
- const edgesSum = edges.length
- if (nodeType !== 'node') {
- if (edges.length === 0) {
- if (!this.nodeAdded) {
- // 娣诲姞鑺傜偣鐨勬搷浣�
- this.connectNode = this.graph.addNode({
- shape: 'image',
- // imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
- width: 30,
- height: 30,
- data: {
- type: 'imageNodes',
- dataId: '',
- nodeType: 'connect',
- nodeTypeExt: '',
- voteNum: ''
- },
- attrs: {
- image: {
- 'xlink:href': '/modelImg/connect.svg',
+ )
+ },
+ addNodeAndConnect(node, nodeObj) { // node鏄敾甯冨師鏈夌殑鑺傜偣銆俷odeObj鏄綋鍓嶆嫋鎷界殑鑺傜偣
+ const nodeType = node.getData().nodeType // 鑾峰彇鐢诲竷鍘熸湁鐨勮妭鐐圭被鍨�
+ const nodeObjType = nodeObj.getData().nodeType // 鑾峰彇褰撳墠鎷栨嫿鐨勮妭鐐圭被鍨�
+ const edges = this.graph.getConnectedEdges(node); // 鑾峰彇涓庡師鑺傜偣鐩稿叧鑱旂殑鎵�鏈夎繛鎺ョ嚎
+ let TopSum = 0 // 鍦ㄥ師鑺傜偣涓婃柟
+ let BottomSum = 0 // 鍦ㄥ師鑺傜偣涓嬫柟
+ const edgesSum = edges.length
+ if ((nodeType === 'end'|| nodeType === 'vote' || nodeType === 'switch' || nodeType === 'parallel') && nodeObjType === 'node') {
+ if (edges.length === 0) {
+ if (!this.nodeAdded) {
+ // 娣诲姞鑺傜偣鐨勬搷浣�
+ this.connectNode = this.graph.addNode({
+ shape: 'image',
+ // imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
+ width: 30,
+ height: 30,
+ data: {
+ type: 'imageNodes',
+ dataId: '',
+ signId:node.id,
+ nodeType: 'connect',
+ nodeTypeExt: '',
+ voteNum: ''
},
- text: {
- text: 'connect',
- fontSize: 14,
- refX: 0.5,
- refY: '100%',
- refY2: 4,
- textAnchor: 'middle',
- textVerticalAnchor: 'top',
+ attrs: {
+ image: {
+ 'xlink:href': '/modelImg/connect.svg',
+ },
+ text: {
+ text: 'connect',
+ fontSize: 14,
+ refX: 0.5,
+ refY: '100%',
+ refY2: 4,
+ textAnchor: 'middle',
+ textVerticalAnchor: 'top',
+ },
},
- },
- ports: {...this.ports},
- })
- // 璁剧疆鏍囪涓� true锛岃〃绀哄凡缁忔坊鍔犺繃鑺傜偣
- this.nodeAdded = true;
- }
- nodeObj.position(node.position().x - 240, node.position().y - (120 * edgesSum));
- this.connectNode.position(node.position().x - 480, node.position().y + (node.size().height - this.connectNode.size().height) / 2);
- } else if (edges.length === 1) {
- // 灏嗚妭鐐圭Щ鍔ㄥ埌鎸囧畾鐨勪綅缃�
- nodeObj.position(node.position().x - 240, node.position().y - (120 * edgesSum));
- } else {
- for (const edge of edges) {
- const sourcePointY = edge.getSourcePoint().y; // 鑾峰彇杩炴帴绾跨殑璧峰鐐箉鍧愭爣
- const targetPointY = edge.getTargetPoint().y; // 鑾峰彇杩炴帴绾跨殑缁撴潫鐐箉鍧愭爣
- console.log('鍘熻妭鐐筜鍧愭爣' + node.position().y, '杩炴帴绾胯捣濮媃鍧愭爣' + sourcePointY)
- if (targetPointY > sourcePointY) {
- TopSum++
- } else if (targetPointY < sourcePointY) {
- BottomSum++
+ ports: {...this.ports},
+ })
+ // 璁剧疆鏍囪涓� true锛岃〃绀哄凡缁忔坊鍔犺繃鑺傜偣
+ this.nodeAdded = true;
+ }
+ nodeObj.position(node.position().x - 120, node.position().y - (120 * edgesSum));
+ this.connectNode.position(node.position().x - 240, node.position().y + (node.size().height - this.connectNode.size().height) / 2);
+ } else if (edges.length === 1) {
+ // 灏嗚妭鐐圭Щ鍔ㄥ埌鎸囧畾鐨勪綅缃�
+ nodeObj.position(node.position().x - 120, node.position().y - (120 * edgesSum));
+ } else {
+ for (const edge of edges) {
+ const sourcePointY = edge.getSourcePoint().y; // 鑾峰彇杩炴帴绾跨殑璧峰鐐箉鍧愭爣
+ const targetPointY = edge.getTargetPoint().y; // 鑾峰彇杩炴帴绾跨殑缁撴潫鐐箉鍧愭爣
+ console.log('鍘熻妭鐐筜鍧愭爣' + node.position().y, '杩炴帴绾胯捣濮媃鍧愭爣' + sourcePointY)
+ if (targetPointY > sourcePointY) {
+ TopSum++
+ } else if (targetPointY < sourcePointY) {
+ BottomSum++
+ }
+ }
+ console.log('鍦ㄥ師鑺傜偣涓婃柟鐨勮繛鎺ョ嚎鏁伴噺:' + TopSum, '鍦ㄥ師鑺傜偣涓嬫柟鐨勮繛鎺ョ嚎鏁伴噺:' + BottomSum)
+ if (TopSum > BottomSum) {
+ nodeObj.position(node.position().x - 120, node.position().y + (120 + (120 * BottomSum)))
+ } else {
+ nodeObj.position(node.position().x - 120, node.position().y - (120 + (120 * TopSum)));
}
}
- console.log('鍦ㄥ師鑺傜偣涓婃柟鐨勮繛鎺ョ嚎鏁伴噺:' + TopSum, '鍦ㄥ師鑺傜偣涓嬫柟鐨勮繛鎺ョ嚎鏁伴噺:' + BottomSum)
- if (TopSum > BottomSum) {
- nodeObj.position(node.position().x - 240, node.position().y + (120 + (120 * BottomSum)))
- } else {
- nodeObj.position(node.position().x - 240, node.position().y - (120 + (120 * TopSum)));
+ this.graph.addEdge({
+ source: {cell: nodeObj, port: 'right1'},
+ target: {cell: node, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
+ if (this.nodeAdded) {
+ console.log(this.connectNode, 'connectNode')
+ this.graph.addEdge({
+ source: {cell: this.connectNode, port: 'right1'},
+ target: {cell: nodeObj, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
}
}
+ if (nodeType === 'node' || (nodeType === 'dashedBox' && nodeObjType === 'dashedBox')) {
+ // 閬嶅巻鎵�鏈夎繛鎺ョ嚎骞跺垹闄や笌缁欏畾鑺傜偣瀵硅薄鐩稿叧鐨勮繛鎺ョ嚎
+ console.log(edges, '鎵�鏈夋湁鍏宠仈鐨勮繛鎺ョ嚎 edge')
+ if (edges.length === 0) {
+ this.graph.addEdge({
+ source: {cell: node, port: 'right1'},
+ target: {cell: nodeObj, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
+ return nodeObj.position(node.position().x + node.getBBox().width + 50, node.position().y);
+ } else {
+ for (const edge of edges) {
+ console.log(edge, '鎵�鏈夋湁鍏宠仈鐨勮繛鎺ョ嚎 edge')
+ if (edge.source.cell === node.id) { // 濡傛灉杩炴帴绾跨殑璧峰鑺傜偣绛変簬褰撳墠鐢诲竷鐩爣鑺傜偣鐨処D
+ const sourceNode = this.graph.getCellById(edge.source.cell); // 鑾峰彇杩炴帴绾跨殑婧愯妭鐐瑰璞�
+ const targetNode = this.graph.getCellById(edge.target.cell) // 鑾峰彇杩炴帴绾跨殑鐩爣鑺傜偣瀵硅薄
+ console.log(sourceNode, targetNode, 'targetNode 鐩爣鑺傜偣瀵硅薄')
+ // edge.remove(); // 浠庡浘涓垹闄よ杩炴帴绾�
+ nodeObj.position(node.position().x + node.getBBox().width + 50, node.position().y + (node.size().height - nodeObj.size().height) / 2);
+ // edge.source = {cell: node, port: 'right1'}
+ edge.target = {cell: nodeObj, port: 'left1'}
+ // targetNode.position(nodeObj.position().x +nodeObj.getBBox().width+50, node.position().y);
+ // this.graph.addEdge({
+ // source: {cell: node, port: 'right1'},
+ // target: {cell: nodeObj, port: 'left1'},
+ // router: {name: 'manhattan'},
+ // connector: {name: 'rounded'}
+ // })
+ this.graph.addEdge({
+ source: {cell: nodeObj, port: 'right1'},
+ target: {cell: targetNode, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
+ } else {
+ this.graph.addEdge({
+ source: {cell: node, port: 'right1'},
+ target: {cell: nodeObj, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
+ nodeObj.position(node.position().x + node.getBBox().width + 50, node.position().y);
+ }
+ }
+ }
+
+
+ }
+ },
+ initCells(){
+ const startNode = this.graph.addNode({
+ shape: 'image',
+ // imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
+ width: 60,
+ height: 60,
+ data: {
+ type: 'imageNodes',
+ dataId: '',
+ nodeType: 'start',
+ nodeTypeExt: '',
+ voteNum: ''
+ },
+ attrs: {
+ image: {
+ 'xlink:href': '/modelImg/start.svg',
+ },
+ text: {
+ text: 'start',
+ fontSize: 14,
+ refX: 0.5,
+ refY: '100%',
+ refY2: 4,
+ textAnchor: 'middle',
+ textVerticalAnchor: 'top',
+ },
+ },
+ ports: {...this.ports},
+ })
+ const dashedBox = this.graph.addNode({
+ shape: 'image',
+ // imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
+ width: 170,
+ height: 90,
+ data: {
+ type: 'imageNodes',
+ dataId: '',
+ nodeType: 'dashedBox',
+ nodeTypeExt: '',
+ voteNum: ''
+ },
+ attrs: {
+ image: {
+ 'xlink:href': '/modelImg/dashedBox.svg',
+ },
+ text: {
+ text: 'dashedBox',
+ fontSize: 14,
+ refX: 0.5,
+ refY: '100%',
+ refY2: 4,
+ textAnchor: 'middle',
+ textVerticalAnchor: 'top',
+ },
+ },
+ ports: {...this.ports},
+ })
+ const endNode = this.graph.addNode({
+ shape: 'image',
+ width: 60,
+ height: 60,
+ data: {
+ type: 'imageNodes',
+ dataId: '',
+ nodeType: 'end',
+ nodeTypeExt: '',
+ voteNum: ''
+ },
+ attrs: {
+ image: {
+ 'xlink:href': '/modelImg/end.svg',
+ },
+ text: {
+ text: 'end',
+ fontSize: 14,
+ refX: 0.5,
+ refY: '100%',
+ refY2: 4,
+ textAnchor: 'middle',
+ textVerticalAnchor: 'top',
+ },
+ },
+ ports: {...this.ports},
+ })
+ startNode.position(-600, 0);
+ dashedBox.position(0, (startNode.size().height - dashedBox.size().height) / 2);
+ endNode.position(600, 0);
this.graph.addEdge({
- source: {cell: nodeObj, port: 'right1'},
- target: {cell: node, port: 'left1'},
+ source: {cell: startNode, port: 'right1'},
+ target: {cell: dashedBox, port: 'left1'},
router: {name: 'manhattan'},
connector: {name: 'rounded'}
})
- if (this.nodeAdded) {
- console.log(this.connectNode, 'connectNode')
- this.graph.addEdge({
- source: {cell: this.connectNode, port: 'right1'},
- target: {cell: nodeObj, port: 'left1'},
- router: {name: 'manhattan'},
- connector: {name: 'rounded'}
- })
- }
- } else {
- // 閬嶅巻鎵�鏈夎繛鎺ョ嚎骞跺垹闄や笌缁欏畾鑺傜偣瀵硅薄鐩稿叧鐨勮繛鎺ョ嚎
- console.log(edges, '鎵�鏈夋湁鍏宠仈鐨勮繛鎺ョ嚎 edge')
- if(edges.length === 0){
- this.graph.addEdge({
- source: {cell: node, port: 'right1'},
- target: {cell: nodeObj, port: 'left1'},
- router: {name: 'manhattan'},
- connector: {name: 'rounded'}
- })
- return nodeObj.position(node.position().x +node.getBBox().width+50, node.position().y);
- }else {
- for (const edge of edges) {
- console.log(edge, '鎵�鏈夋湁鍏宠仈鐨勮繛鎺ョ嚎 edge')
- if (edge.source.cell === node.id) { // 濡傛灉杩炴帴绾跨殑璧峰鑺傜偣绛変簬褰撳墠鐢诲竷鐩爣鑺傜偣鐨処D
- const sourceNode = this.graph.getCellById(edge.source.cell); // 鑾峰彇杩炴帴绾跨殑婧愯妭鐐瑰璞�
- const targetNode = this.graph.getCellById(edge.target.cell) // 鑾峰彇杩炴帴绾跨殑鐩爣鑺傜偣瀵硅薄
- console.log(sourceNode, targetNode, 'targetNode 鐩爣鑺傜偣瀵硅薄')
- // edge.remove(); // 浠庡浘涓垹闄よ杩炴帴绾�
- nodeObj.position(node.position().x +node.getBBox().width+50, node.position().y);
- // edge.source = {cell: node, port: 'right1'}
- edge.target = {cell: nodeObj, port: 'left1'}
- // targetNode.position(nodeObj.position().x +nodeObj.getBBox().width+50, node.position().y);
- // this.graph.addEdge({
- // source: {cell: node, port: 'right1'},
- // target: {cell: nodeObj, port: 'left1'},
- // router: {name: 'manhattan'},
- // connector: {name: 'rounded'}
- // })
- this.graph.addEdge({
- source: {cell: nodeObj, port: 'right1'},
- target: {cell: targetNode, port: 'left1'},
- router: {name: 'manhattan'},
- connector: {name: 'rounded'}
- })
- }else {
- this.graph.addEdge({
- source: {cell: node, port: 'right1'},
- target: {cell: nodeObj, port: 'left1'},
- router: {name: 'manhattan'},
- connector: {name: 'rounded'}
- })
- nodeObj.position(node.position().x +node.getBBox().width+50, node.position().y);
- }
- }
- }
-
-
- }
+ this.graph.addEdge({
+ source: {cell: dashedBox, port: 'right1'},
+ target: {cell: endNode, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
+ },
},
- },
-}
+ }
</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%;
-}
+ #stencilImg .x6-graph-svg-viewport {
+ height: 100%;
+ }
-.x6-widget-stencil-content {
- position: relative;
- height: calc(100% - 32px);
-}
+ .x6-widget-stencil-content {
+ position: relative;
+ height: calc(100% - 32px);
+ }
-#stencilImg .x6-widget-stencil.collapsable > .x6-widget-stencil-content {
- top: 0
-}
+ #stencilImg .x6-widget-stencil.collapsable > .x6-widget-stencil-content {
+ top: 0
+ }
</style>
--
Gitblit v1.9.1