From f9816a4078fdba44115c69025d9982997f23b484 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期一, 29 四月 2024 16:00:49 +0800 Subject: [PATCH] Merge branch 'develop' --- src/tabviews/custom/components/chart/antv-X6/index.jsx | 92 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 70 insertions(+), 22 deletions(-) diff --git a/src/tabviews/custom/components/chart/antv-X6/index.jsx b/src/tabviews/custom/components/chart/antv-X6/index.jsx index faedfd9..08990ce 100644 --- a/src/tabviews/custom/components/chart/antv-X6/index.jsx +++ b/src/tabviews/custom/components/chart/antv-X6/index.jsx @@ -1,8 +1,8 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { Spin, Tooltip, message, Modal, notification, Switch } from 'antd' -import { UndoOutlined, RedoOutlined, VerticalAlignTopOutlined, VerticalAlignBottomOutlined, SaveOutlined, ZoomInOutlined, ZoomOutOutlined, OneToOneOutlined, QuestionCircleOutlined, ClearOutlined } from '@ant-design/icons' +import { Spin, Tooltip, message, Modal, notification, Switch, Button } from 'antd' +import { UndoOutlined, RedoOutlined, VerticalAlignTopOutlined, VerticalAlignBottomOutlined, ZoomInOutlined, ZoomOutOutlined, OneToOneOutlined, QuestionCircleOutlined, ClearOutlined } from '@ant-design/icons' import { Graph, Shape } from '@antv/x6' import { Stencil } from '@antv/x6-plugin-stencil' import { Transform } from '@antv/x6-plugin-transform' @@ -388,7 +388,8 @@ status: 0, flowname: '', flowcode: '', - orgs: [] + orgs: [], + empty: true } selectNode = null @@ -526,6 +527,7 @@ worker_id: work.worker_id || '', workercode: work.workercode || '', workername: work.workername || '', + job_type: job.job_type || '', parentIds: [com.OrgCode, dep.co_pro_code, job.jobcode], parentNames: [com.OrgName, dep.co_pro_name, job.jobname] } @@ -553,6 +555,7 @@ worker_id: work.worker_id || '', workercode: work.workercode || '', workername: work.workername || '', + job_type: job.job_type || '', parentIds: [com.OrgCode, dep.co_pro_code, job.jobcode, group.work_group], parentNames: [com.OrgName, dep.co_pro_name, job.jobname, group.work_group] } @@ -590,8 +593,8 @@ const { BID } = this.state if (!BID) { + this.cells = [] if (!is(fromJS(this.data), fromJS([]))) { - this.cells = [] this.handleData() } this.setState({empty: true}) @@ -624,7 +627,8 @@ status: item.status || 0, flowname: item.works_flow_name || '', flowcode: item.works_flow_code || '', - loading: false + loading: false, + empty: cells.length === 0 }) if (result.message) { @@ -994,6 +998,18 @@ graph.clearTransformWidgets() }) + + graph.on('node:dblclick', () => { + setTimeout(() => { + MKEmitter.emit('mk-x6-dbclick') + }, 100) + }) + graph.on('edge:dblclick', () => { + setTimeout(() => { + MKEmitter.emit('mk-x6-dbclick') + }, 100) + }) + graph.on('blank:click', () => { this.selectNode = null @@ -1003,8 +1019,19 @@ if (!isNew) return let target = edge.getTargetCell() + let source = edge.getSourceCell() - if (!target) return + if (!target || !source) return + + if (source.prop('mknode') === 'end') { + notification.warning({ + top: 92, + message: '缁撴潫鑺傜偣涓嶅彲娣诲姞鍒嗘敮锛�', + duration: 2 + }) + graph.removeCells([edge]) + return + } let mkdata = target.prop('mkdata') @@ -1012,6 +1039,8 @@ edge.prop('mknode', 'endEdge') } else if (target.prop('mknode') === 'start') { edge.prop('mknode', 'startEdge') + } else if (source.prop('mknode') === 'start') { + edge.prop('mknode', 'firstEdge') } if (mkdata) { edge.prop('mkdata', {status: mkdata.status, statusName: mkdata.statusName}) @@ -1544,6 +1573,26 @@ this.mkGraph.zoomTo(1) } + close = () => { + const { config } = this.state + + let nodes = this.mkGraph.toJSON() + + if (!is(fromJS(nodes.cells), fromJS(this.cells))) { + confirm({ + title: '娴佺▼鍥惧凡淇敼锛岀‘瀹氬叧闂悧?', + okText: '纭畾', + cancelText: '鍙栨秷', + onOk() { + MKEmitter.emit('closeTabView', config.$pageId) + }, + onCancel() {} + }) + } else { + MKEmitter.emit('closeTabView', config.$pageId) + } + } + save = () => { const { BID, plot, status, flowname, flowcode } = this.state @@ -1596,7 +1645,7 @@ } }) - if (start_num !== 1 || end_num !== 1 || unvalid) { + if (start_num !== 1 || end_num === 0 || unvalid) { _status = 0 } } @@ -1638,6 +1687,7 @@ loading: false, status: _status }) + this.cells = nodes.cells } else { notification.error({ top: 92, @@ -1659,6 +1709,7 @@ loading: false, status: _status }) + this.cells = nodes.cells } } else { notification.error({ @@ -2080,12 +2131,12 @@ message: '璇锋坊鍔犵粨鏉熻妭鐐癸紒', duration: 2 }) - } else if (end_num > 1) { - notification.warning({ - top: 92, - message: '缁撴潫鑺傜偣涓嶅彲娣诲姞澶氫釜锛�', - duration: 2 - }) + // } else if (end_num > 1) { + // notification.warning({ + // top: 92, + // message: '缁撴潫鑺傜偣涓嶅彲娣诲姞澶氫釜锛�', + // duration: 2 + // }) } else if (emptyNode) { let errmsg = '閮ㄥ垎鑺傜偣鏈缃熀鏈俊鎭��' if (emptyNode.attrs && emptyNode.attrs.text && emptyNode.attrs.text.text) { @@ -2202,12 +2253,12 @@ } render() { - const { loading, config, node, orgs, status, flowname } = this.state + const { loading, config, node, orgs, status, flowname, empty } = this.state let style = {...config.style} if (config.plot.function === 'show') { - if (config.plot.empty === 'hidden' && this.cells.length === 0) { + if (config.plot.empty === 'hidden' && empty) { style.position = 'absolute' style.width = '100%' style.zIndex = -1 @@ -2264,18 +2315,15 @@ <Tooltip title="娓呯┖"> <ClearOutlined onClick={this.clearNode}/> </Tooltip> - <Tooltip overlayStyle={{maxWidth: 260}} title="蹇嵎閿細澶嶅埗锛坈trl+c锛夈�佸壀鍒囷紙ctrl+x锛夈�佺矘璐达紙ctrl+v锛夈�佸悗閫�锛坈trl+z锛夈�佸墠杩涳紙ctrl+shift+z锛夈�佸垹闄わ紙backspace 鎴� delete锛�"> + <Tooltip overlayStyle={{maxWidth: 310}} title="蹇嵎閿細澶嶅埗锛坈trl+c锛夈�佸壀鍒囷紙ctrl+x锛夈�佺矘璐达紙ctrl+v锛夈�佸悗閫�锛坈trl+z锛夈�佸墠杩涳紙ctrl+shift+z锛夈�佸垹闄わ紙backspace 鎴� delete锛夛紱鍙屽嚮鑺傜偣鎴栬繛绾垮彲缂栬緫鑷畾涔変俊鎭��"> <QuestionCircleOutlined /> </Tooltip> </div> <div className="flow-name">{flowname}</div> <div className="right-tool"> - <Tooltip title="鍚敤/鍋滅敤"> - <Switch size="small" style={{marginRight: '10px'}} checked={status === 10} onChange={this.changeStatus} /> - </Tooltip> - <Tooltip title="淇濆瓨"> - <SaveOutlined style={{marginRight: '10px'}} onClick={this.save}/> - </Tooltip> + <Switch size="large" checked={status === 10} checkedChildren="鍚�" unCheckedChildren="鍋�" onChange={this.changeStatus} /> + <Button className="save" onClick={this.save}>淇濆瓨</Button> + <Button className="close" onClick={this.close}>鍏抽棴</Button> </div> </div> <div className="canvas" style={{width: '100%', minHeight: config.plot.height, height: config.plot.height}} id={config.uuid + 'canvas'}> -- Gitblit v1.8.0