From f3ad14f8af7fb651426d1ee617e7ecb9d3fc9aab Mon Sep 17 00:00:00 2001 From: xyc <jc_xiong@hotmail.com> Date: 星期四, 28 三月 2024 11:15:52 +0800 Subject: [PATCH] 新增产品节点上设置关系,可设置项为“无/旁联/表决” --- web/src/views/modules/taskReliability/RBD-edit-img.vue | 853 +++++++++++++++++++------------------------------------- 1 files changed, 297 insertions(+), 556 deletions(-) diff --git a/web/src/views/modules/taskReliability/RBD-edit-img.vue b/web/src/views/modules/taskReliability/RBD-edit-img.vue index df2d1ef..7db0238 100644 --- a/web/src/views/modules/taskReliability/RBD-edit-img.vue +++ b/web/src/views/modules/taskReliability/RBD-edit-img.vue @@ -1,66 +1,65 @@ <template> <div> <el-row :gutter="[8,8]"> - <el-col :span="5"> + <el-col :span="4"> <div :style="'height:' +left_p+'px'"> - <div class="fa-card-a" style="height: 100%"> + <div style="height: 100%"> <div id="stencilImg"></div> </div> </div> </el-col> - <el-col :span="19"> + <el-col :span="20"> <div class="fa-card-a"> <el-form :inline="true"> <el-form-item> - modelId - <el-input placeholder="鎼滅储鏂藉伐鍐呭" v-model="dataForm.modelId" clearable class="input-with-select"> - <el-button slot="append" icon="el-icon-search" @click="search()"></el-button> - </el-input> - - <el-button type="primary" @click="saveDiagram()">淇濆瓨</el-button> - <el-button type="primary" @click="analyzeDiagram()">瑙f瀽</el-button> + 妯″瀷鍚嶇О锛歿{modelName}} </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; @@ -84,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', @@ -111,19 +111,39 @@ }, data() { return { + 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:{}}, + 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:'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: {}}, ], - imgsList2:[ - {imgPath:'logo',imgName:'logo',nodeType:'node',imgWidth:60,imgHeight:60,imgId:'100',data:{dataId:'123456',nodeTypeExt:''}}, + imgsList2: [ + // {imgPath:'logo',imgName:'logo',nodeType:'node',,nodeTypeExt:'',productType:'',statusImg:'',imgWidth:60,imgHeight:60,imgId:'100',dataId:'123456'}, ], - nodeType:'', + nodeType: '', first: true, shape: '', projectList: [], @@ -134,20 +154,10 @@ diagramIdDisabled: false, dataForm: { id: null, - projectId: null, - diagramId: null, content: null, publishContent: null, hasPublish: 0, - modelId: '1', - }, - flowInfo: { - bizId: '', - bizGroupId: '', - flowCode: '', - flowStepMark: '', - status: 0, - myStatus: 0 + urlPref: '', }, // emptyJson: { // // 鑺傜偣 @@ -175,6 +185,18 @@ id: '', graph: null, globalGridAttr: { + productType:'', + voteNum: '', + repairMttcr: '', + repairMttcrOther: '', + repairDistribType: '', + reliabDistribType: '', + taskMtbcfOther: '', + isRepair: 0, + taskMtbcf: '', + numberInputValue: '', + statusImg: '', + nodeTypeExt: '', type: 'mesh', size: 10, color: '#e5e5e5', @@ -210,7 +232,7 @@ }, isReady: false, curCel: Cell, - left_p: document.documentElement.clientHeight-100, + left_p: document.documentElement.clientHeight - 100, ports: { groups: { top: { @@ -298,145 +320,75 @@ //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') - this.projectChange2(this.$route.params.diagramId) } }, mounted() { - this.getProject() - this.init() + //this.initDigram() this.type = 'grid' }, methods: { - async finish() { - if (await this.$tip.confirm('纭畾瑕佽繘琛屾彁浜ゆ搷绾靛悧?')) { - let submitForm = { - params: { - wfIdCode: 'wltFlow', - bizId: this.dataForm.projectId, - stepIdMark: this.pageCode - } - } - let res = await this.$http.get('/wf/approvePass', submitForm) - if (res.success) { - await this.$alert('鎻愪氦鎴愬姛', '鍙嬫儏鎻愮ず') - removeCurrentTabHandle(this) - this.$EventBus.$emit('taskRefeshEvent', '缃戠粶鍥�') - } - } + 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 getProject() { - //let res = await this.$http.get(`/maintain/projectNetworkDiagram/getProjectList`) - let res = await this.$http.get(`/homeFunction/projectSelect`) - - this.projectList = res.data - if (this.$store.state.user.isAdmin || this.$store.state.user.isAssistant) { - this.projectList.push({id: '10000', name: '鏍峰紡妯℃澘'}) - } - if (this.$route.params.projectId) { - this.projectId = this.$route.params.projectId - this.diagramId = this.$route.params.diagramId - } else { - if (this.projectList.length > 0) { - this.projectId = this.projectList[0].id - this.diagramId = this.projectId - console.log(this.diagramId, '123456789') - } - } - await this.projectChange2(this.diagramId) - }, - - /* projectChange() { - // alert(555) - this.projectChange2(this.projectId) - }, - - async projectChange2(diagramId) { - // alert(1) + async getDiagram(modelId) { let params = { - wfIdCodes: 'wltFlow', - bizId: this.projectId, - stepIdMark: 'wlt_pz' + modelId: modelId, + urlPref: window.SITE_CONFIG['apiURL'], + token: Cookies.get('token'), } - this.$http.get(`/wf/getFlowStepStatus`, {params: params}).then(res => { - console.log(res, 'getFlowStepStatus res') - if (res.data) { - this.flowInfo = res.data - } - }) - - this.diagramName = '' - this.dataForm.projectId = this.projectId - this.dataForm.diagramId = diagramId - this.diagramId = diagramId - if (!this.$store.state.user.isZcRole && !this.$store.state.user.isAdmin) { - this.diagramIdDisabled = true - console.log(this.$store.state.user.deptId, 'this.$store.state.user.deptId') - this.diagramId = this.$store.state.user.deptId - this.dataForm.diagramId = this.diagramId - } else { - this.diagramIdDisabled = false - } - //this.getDiagramIdList(this.projectId) - let res = await this.$http.get(`/maintain/projectNetworkDiagram/getDiagramCjList?projectId=${this.projectId}`) - this.diagramList = res.data - console.log(this.diagramList, 'this.diagramId asdfgh') - if (this.diagramList.length > 0) { - this.diagramId = this.diagramList[0].diagramId - console.log(this.dataForm.diagramId, 'this.dataForm.diagramId.........................') - } - await this.getDiagram() - },*/ - -/* diagramIdChanges() { - this.dataForm.diagramId = this.diagramId - // this.diagramIdChange(this.diagramId) - this.getDiagram() - },*/ - async getDiagram() { - let params = { - modelId : this.dataForm.modelId - } - let res = await this.$http.get(`/taskReliability/ModelLine/getDiagram`, {params: params}) - if (res.data !== null && res.data.content != null) { - this.dataForm = res.data - console.log(this.dataForm, 'this.dataForm in getDiagram') + 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) - // 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 { - this.dataForm.id = null - // this.graph.fromJSON(this.emptyJson) - this.graph.centerContent() - this.graph.zoomToFit() - // this.graph.freeze() } - + // console.log(this.dataForm.content,'this.Diagram content') + console.log(this.diagramJson, 'this.Diagram json') + this.graph.fromJSON(this.diagramJson) + this.graph.positionContent('left') + // this.graph.centerContent() + // this.graph.zoomToFit() + } else { + await this.clearDiagram() + } }, - init() { + 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 - 100, + height: document.documentElement.clientHeight - 200, // async: true, grid: { visible: true, }, - onToolItemCreated({tool}) { - const handle = tool - const options = handle.options - if (options && options.index % 2 === 1) { - tool.setAttrs({fill: 'red'}) - } - }, autoResize: true, - history: true, + history: { + enabled: true, + beforeAddCommand(event, args) { + if (args.key==='tools') { + console.log(args.key,'event, args') + return false + } + }, + }, // panning: { // enabled: true, // }, @@ -445,7 +397,14 @@ pageVisible: true, pageBreak: true, pannable: true, + minVisibleWidth: 200, + minVisibleHeight: 200, + modifiers: 'shift', }, + // panning: { + // enabled: true, + // modifiers: 'shift', + // }, mousewheel: { enabled: true, zoomAtMousePosition: true, @@ -499,6 +458,12 @@ } } }], + tools: { + name: 'segments', + args: { + attrs: { fill: '#666' }, + }, + }, zIndex: 0, }) }, @@ -526,7 +491,7 @@ enabled: true, rubberband: true, rubberEdge: true, - showNodeSelectionBox: true, + // showNodeSelectionBox: true, }, snapline: true, keyboard: true, @@ -534,375 +499,147 @@ }) this.graph.centerContent() const stencil = new Addon.Stencil({ + getDragNode: (node) => node.clone({ keepId: true }), + getDropNode(node) { + let {width, height} = node.size() + if (node.getData().imgWidth) { + width = node.getData().imgWidth + } + if (node.getData().imgHeight) { + height = node.getData().imgHeight + } + return node.clone({ keepId: true }).size(width, height) + }, + validateNode(node){ + console.log(node.id) + }, 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) - - Graph.registerNode( - 'custom-rect', - { - inherit: 'rect', - width: 86, - height: 26, - zIndex: 10, - data: { - dataId: '', - finishDate: '', - inspectName: '' - }, - attrs: { - body: { - strokeWidth: 1, - stroke: 'none', - fill: 'none', - }, - text: { - // fontFamily: '浠垮畫', - fontSize: 20, - fill: '#000', - }, - label: { - refX: 0, - refY: 0.5, - textAnchor: 'start', - textVerticalAnchor: 'middle', - textWrap: { - text: '鏂囧瓧妯℃澘', - width: -10, // 瀹藉害鍑忓皯 10px - ellipsis: false, // 鏂囨湰瓒呭嚭鏄剧ず鑼冨洿鏃讹紝鑷姩娣诲姞鐪佺暐鍙� - breakWord: true, // 鏄惁鎴柇鍗曡瘝 - } - }, - }, - ports: {...this.ports}, - }, - true, - ) - - Graph.registerNode( - 'custom-polygon', - { - inherit: 'polygon', - width: 86, - height: 56, - attrs: { - body: { - strokeWidth: 1, - stroke: '#5F95FF', - fill: '#EFF4FF', - }, - // title:{ - // text:'', - // refX: 40, - // refY: 38, - // fontSize: 20, - // fill: '#262626', - // 'text-anchor': 'start', - // }, - text: { - // refX: 40, - // refY: 20, - fontSize: 20, - fill: '#262626', - // 'text-anchor': 'start', - }, - }, - // markup: [ - // { - // tagName: 'polygon', - // selector: 'body', - // }, - // { - // tagName: 'text', - // selector: 'title', - // }, - // { - // tagName: 'text', - // selector: 'text', - // }, - // ], - ports: { - ...this.ports - // items: [ - // { - // group: 'top', - // }, - // { - // group: 'bottom', - // }, - // ], - }, - }, - true, - ) - // - Graph.registerNode( - 'custom-circle', - { - inherit: 'ellipse', - width: 120, - height: 120, - data: { - dataId: '', - finishDate: '' - }, - attrs: { - body: { - strokeWidth: 1, - stroke: '#5F95FF', - fill: '#EFF4FF', - }, - //鏃ユ湡 - title: { - text: '', - fontSize: 12, - fill: '#262626', - refX: 0.5, - refY: '100%', - refY2: -10, - textAnchor: 'middle', - textVerticalAnchor: 'bottom', - }, - // 鍚嶇О - text: { - // fontFamily: '浠垮畫', - fontSize: 20, - fill: '#262626', - textWrap: { - width: 80, // 瀹藉害涓� 80px鎹㈣ - ellipsis: false, // 鏂囨湰瓒呭嚭鏄剧ず鑼冨洿鏃讹紝鑷姩娣诲姞鐪佺暐鍙� - breakWord: true, // 鏄惁鎴柇鍗曡瘝 - } - }, - }, - markup: [ - { - tagName: 'ellipse', - selector: 'body', - }, - { - tagName: 'text', - selector: 'title', - }, - { - tagName: 'text', - selector: 'text', - }, - ], - ports: {...this.ports}, - }, - true, - ) - Graph.registerNode( - 'custom-circle1', - { - inherit: 'ellipse', - width: 65, - height: 65, - data: { - dataId: '', - finishDate: '' - }, - attrs: { - body: { - strokeWidth: 1, - stroke: '#5F95FF', - fill: '#EFF4FF', - }, - //鏃ユ湡 - text: { - // fontFamily: '浠垮畫', - fontSize: 12, - text: '鏃ユ湡鑺傜偣', - fill: '#262626', - }, - }, - ports: {...this.ports}, - }, - true, - ) - Graph.registerNode( - 'custom-text', - { - inherit: 'text-block', - width: 86, - height: 56, - attrs: { - body: { - strokeWidth: 1, - stroke: '#5F95FF', - fill: '#EFF4FF', - }, - text: { - text: '涓撲笟', - fontSize: 20, - style: { - color: this.globalGridAttr.nodeColor - }, - refX: '0', - refY: -0.5, - refY2: 1, - textAnchor: 'middle', - textVerticalAnchor: 'middle', - }, - }, - markup: [ - { - tagName: 'rect', - selector: 'body', - }, - { - tagName: 'text', - selector: 'text', - }, - ], - ports: {...this.ports}, - }, - true, - ) - Graph.registerNode( - 'rectangle', - { - width: 86, - height: 56, - attrs: { - body: { - fill: '#FFF', - stroke: '#000', - strokeWidth: 1, - }, - icon: { - class: 'el-icon-refresh', // Element UI鍥炬爣鐨刢lass鍚嶇О - 'xlink:href': '', // 濡傛灉闇�瑕佷娇鐢⊿VG鍥炬爣锛岃璁剧疆xlink:href灞炴�ф潵寮曞叆SVG鏂囦欢 - refX: '50%', - refY: '50%', - yAlignment: 'middle', - xAlignment: 'middle', - }, - }, - markup: [ - { - tagName: 'rect', - selector: 'body', - }, - { - tagName: 'i', - selector: 'icon', - }, - ], - ports: {...this.ports}, - }, - true - ) - // 涓�绾х綉缁滃浘鐨勬棩鏈熸枃瀛楄妭鐐� - const r5 = this.graph.createNode({ - shape: 'custom-circle', - data: { - dataId: '', - finishDate: '', - inspectName: '' - }, - label: '闃舵', - }) - - // 浜岀骇缃戠粶鍥炬棩鏈熻妭鐐� - const r6 = this.graph.createNode({ - shape: 'custom-circle1', - data: { - dataId: '', - finishDate: '', - inspectName: '' - }, - }) - // 浜岀骇缃戠粶鍥炬枃瀛楄妭鐐� - const r9 = this.graph.createNode({ - shape: 'custom-rect' - }) 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: '', + voteNum:'' + }, + 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 + } + 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) => - 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: item.data.dataId, - nodeType: item.nodeType, - nodeTypeExt: item.data.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: `${window.SITE_CONFIG['apiURL']}/sysPictureBase/getProductImg?token=${Cookies.get('token')}&id=${item.imgPath}`, + width: 60, + height: 60, + id: item.dataId, // 鎵嬪姩璁剧疆鑺傜偣鐨� ID + data: { + isRepair: item.isRepair, + 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, + imgHeight: item.imgHeight, + imgWidth: item.imgWidth, + voteNum:'', + }, + 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}, - }), + }, + 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}, + }), ) - // r1.push(r5,r6,r9) - console.log(imageNodes,'group1') stencil.load(imageNodes, 'group1') stencil.load(imageNodes2, 'group2') + this.graph.bindKey(['meta+c', 'ctrl+c'], () => { const cells = this.graph.getSelectedCells() @@ -998,8 +735,10 @@ this.type = cell.isNode() ? 'node' : 'edge' this.shape = cell.shape this.id = cell.id - this.nodeType = cell.getData().nodeType - console.log(this.nodeType, 'this.nodeType') + 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) }) @@ -1079,7 +818,7 @@ this.showPorts(ports, false) }) - this.graph.on('edge:mouseenter', ({cell, view}) => { + this.graph.on('edge:mouseenter', ({cell}) => { // alert(123) cell.addTools([ { @@ -1093,22 +832,18 @@ }, }, }, - ]) - cell.addTools( - [ { - name: 'segments', - args: {snapRadius: 20, attrs: {fill: '#444'}} - } - ] - ) + name: 'segments', + args: {snapRadius: 20, attrs: {fill: '#444'}} + }, + ]) }) this.graph.on('edge:mouseleave', ({cell}) => { cell.removeTools() }) - this.getDiagram() + await this.getDiagram(this.dataForm.id) }, showPorts(ports, show) { for (let i = 0, len = ports.length; i < len; i = i + 1) { @@ -1169,6 +904,7 @@ 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') { @@ -1181,7 +917,7 @@ async analyzeDiagram() { console.log(JSON.stringify(this.graph.toJSON()), 'graph.toJSON()') this.dataForm.content = JSON.stringify(this.graph.toJSON()) - console.log(this.dataForm, 'dataFrom') + 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瀽鎴愬姛', '鎻愮ず', { @@ -1303,7 +1039,7 @@ } }, close() { - if (this.timer){ + if (this.timer) { window.clearInterval(this.timer) } }, @@ -1313,32 +1049,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