| | |
| | | <template> |
| | | <div> |
| | | <el-row :gutter="[8,8]"> |
| | | <el-col :span="3"> |
| | | <el-col :span="4"> |
| | | <div :style="'height:' +left_p+'px'"> |
| | | <div style="height: 100%"> |
| | | <div id="stencilImg"></div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="21"> |
| | | <el-col :span="20"> |
| | | <div class="fa-card-a"> |
| | | <el-form :inline="true"> |
| | | <el-form-item> |
| | |
| | | }) |
| | | this.graph.centerContent() |
| | | const stencil = new Addon.Stencil({ |
| | | //getDragNode: (node) => node.clone({keepId: true}), |
| | | // getDragNode: (node) => { |
| | | // node.removeAttrs('title') |
| | | // }, |
| | | getDropNode: (node) => { |
| | | this.canAdd = true |
| | | const {width, height} = node.size() |
| | | if (node.getData().type && node.getData().type === 'imageNodes2') { |
| | | 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) { |
| | |
| | | }, |
| | | title: '', |
| | | target: this.graph, |
| | | stencilGraphWidth: 200, |
| | | stencilGraphWidth: 240, |
| | | stencilGraphHeight: 280, |
| | | collapsable: true, |
| | | groups: [ |
| | |
| | | name: 'group2', |
| | | graphHeight: '', |
| | | layoutOptions: { |
| | | rowHeight: 90, |
| | | rowHeight: 100, |
| | | }, |
| | | } |
| | | ], |
| | | layoutOptions: { |
| | | columns: 2, |
| | | columnWidth: 105, |
| | | columnWidth: 130, |
| | | }, |
| | | }) |
| | | document.getElementById('stencilImg').appendChild(stencil.container) |
| | |
| | | this.graph.createNode({ |
| | | shape: 'image', |
| | | //imageUrl: `${window.SITE_CONFIG['apiURL']}/sysPictureBase/getProductImg?token=${Cookies.get('token')}&id=${item.imgPath}`, |
| | | width: 60, |
| | | height: 60, |
| | | width: 100, |
| | | height: 70, |
| | | //id: item.dataId, // 手动设置节点的 ID |
| | | data: { |
| | | type: 'imageNodes2', |
| | |
| | | 'xlink:href': `${window.SITE_CONFIG['apiURL']}/sysPictureBase/getSvgImage?token=${Cookies.get('token')}&id=${item.imgPath}`, |
| | | //'xlink:href': urlObject.createObjectURL(new Blob([item.svgContent])), |
| | | }, |
| | | title: { |
| | | text: item.basicUnitNum>=1?item.basicUnitNum:'', |
| | | refX: 15, |
| | | refY: 10, |
| | | fill: '#748be7', |
| | | fontSize: 14, |
| | | fontWeight:'bold', |
| | | 'text-anchor': 'start', |
| | | }, |
| | | text: { |
| | | text: item.imgName, |
| | | fontSize: 14, |
| | | style: { |
| | | color: this.globalGridAttr.nodeColor |
| | | }, |
| | | refX: 0.5, |
| | | refY: '100%', |
| | | refY: '85%', |
| | | refY2: 4, |
| | | textAnchor: 'middle', |
| | | textVerticalAnchor: 'top', |
| | | textWrap: { |
| | | width: 120, // 宽度为 120px换行 |
| | | ellipsis: false, // 文本超出显示范围时,自动添加省略号 |
| | | breakWord: true, // 是否截断单词 |
| | | } |
| | | }, |
| | | }, |
| | | 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 |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | selector: 'image', |
| | | }, |
| | | { |
| | | tagName: 'text', |
| | | selector: 'title', |
| | | }, |
| | | { |
| | | tagName: 'text', |
| | | selector: 'text', |
| | | }, |
| | | ], |
| | | // 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}, |
| | | }), |
| | | ) |
| | |
| | | }) |
| | | // 监听节点添加事件 |
| | | this.graph.on('node:added', ({node}) => { |
| | | node.setAttrs({ |
| | | title: { text: '' }, |
| | | }) |
| | | if (this.isFirstLoad) { |
| | | return |
| | | } |