From 46773828b8c46e450a67eb1fc5e6124d87d97ab6 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期六, 23 九月 2023 19:51:11 +0800 Subject: [PATCH] 2023-09-23 --- src/tabviews/custom/components/chart/antv-X6/index.jsx | 266 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 235 insertions(+), 31 deletions(-) diff --git a/src/tabviews/custom/components/chart/antv-X6/index.jsx b/src/tabviews/custom/components/chart/antv-X6/index.jsx index a035fe9..97525bc 100644 --- a/src/tabviews/custom/components/chart/antv-X6/index.jsx +++ b/src/tabviews/custom/components/chart/antv-X6/index.jsx @@ -386,7 +386,9 @@ node: null, loading: false, status: 0, - rolelist: [] + flowname: '', + flowcode: '', + orgs: [] } selectNode = null @@ -424,7 +426,7 @@ this.loadData() if (_config.plot.function === 'edit') { - this.getrolelist() + this.getorganizations() } }) } @@ -469,8 +471,8 @@ } } - getrolelist = () => { - Api.getSystemConfig({func: 's_get_rolelist', OrderCol: 'RoleID desc', PageIndex: 1, PageSize: 1000}).then(res => { + getorganizations = () => { + Api.genericInterface({func: 's_get_organizations_v1'}).then(res => { if (!res.status) { notification.error({ top: 92, @@ -480,7 +482,107 @@ return } - this.setState({rolelist: res.data || []}) + let orgs = [] + res.organizations && res.organizations.forEach(com => { + let _com = { + key: com.OrgCode, + title: com.OrgName, + shortName: com.ShortName, + checkable: false, + selectable: false, + children: [] + } + let _works = [] + + com.departments.forEach(dep => { + let _dep = { + key: dep.co_pro_code, + title: dep.co_pro_name, + checkable: false, + selectable: false, + children: [] + } + + dep.jobs.forEach(job => { + let _job = { + key: job.jobcode, + title: job.jobname, + checkable: false, + selectable: false, + children: [] + } + + job.work_group.forEach(group => { + if (group.work_group === 'normal') { + group.workers.forEach(work => { + let _work = { + key: work.worker_id, + title: work.workername, + email: work.email || '', + images: work.images || '', + mob: work.mob || '', + sex: work.sex || '', + work_grade: work.work_grade || '', + worker_id: work.worker_id || '', + workercode: work.workercode || '', + workername: work.workername || '', + parentIds: [com.OrgCode, dep.co_pro_code, job.jobcode], + parentNames: [com.OrgName, dep.co_pro_name, job.jobname] + } + + _job.children.push(_work) + }) + } else { + let _group = { + key: group.work_group, + title: group.work_group, + checkable: false, + selectable: false, + children: [] + } + + group.workers.forEach(work => { + let _work = { + key: work.worker_id, + title: work.workername, + email: work.email || '', + images: work.images || '', + mob: work.mob || '', + sex: work.sex || '', + work_grade: work.work_grade || '', + worker_id: work.worker_id || '', + workercode: work.workercode || '', + workername: work.workername || '', + parentIds: [com.OrgCode, dep.co_pro_code, job.jobcode, group.work_group], + parentNames: [com.OrgName, dep.co_pro_name, job.jobname, group.work_group] + } + + _group.children.push(_work) + }) + + if (_group.children.length > 0) { + _job.children.push(_group) + } + } + }) + + if (_job.children.length > 0) { + _dep.children.push(_job) + } + }) + + if (_dep.children.length > 0) { + _com.children.push(_dep) + } + }) + + if (_com.children.length > 0) { + _com.works = _works + orgs.push(_com) + } + }) + + this.setState({orgs: orgs}) }) } @@ -520,6 +622,8 @@ this.setState({ status: item.status || 0, + flowname: item.works_flow_name || '', + flowcode: item.works_flow_code || '', loading: false }) @@ -895,11 +999,29 @@ this.setState({node: null}) }) + graph.on('edge:connected', ({ isNew, edge }) => { + if (!isNew) return + + let target = edge.getTargetCell() + + if (!target) return + + let mkdata = target.prop('mkdata') + + if (target.prop('mknode') === 'end') { + edge.prop('mknode', 'endEdge') + } else if (target.prop('mknode') === 'start') { + edge.prop('mknode', 'startEdge') + } + if (mkdata) { + edge.prop('mkdata', {status: mkdata.status, statusName: mkdata.statusName}) + } + }) const r1 = graph.createNode({ shape: 'mk-rect', mknode: 'start', - mkdata: {status: 0, statusName: '寮�濮�'}, + mkdata: {status: 0, statusName: '鏈彁浜�'}, attrs: { body: { rx: 20, @@ -997,7 +1119,7 @@ const r8 = graph.createNode({ shape: 'mk-rect', mknode: 'end', - mkdata: {status: '', statusName: '缁撴潫'}, + mkdata: {status: 888, statusName: '宸插畬鎴�'}, attrs: { body: { rx: 20, @@ -1423,7 +1545,7 @@ } save = () => { - const { BID, plot, status } = this.state + const { BID, plot, status, flowname, flowcode } = this.state if (!BID) { Modal.error({ @@ -1436,10 +1558,23 @@ let _status = status if (plot.subtype === 'xflow' && status === 10) { - let start_num = nodes.cells.filter(cell => cell.mknode === 'start').length - let end_num = nodes.cells.filter(cell => cell.mknode === 'end').length + let start_num = 0 + let end_num = 0 + let unvalid = false - if (start_num !== 1 || end_num !== 1) { + nodes.cells.forEach(item => { + if (item.mknode === 'start') { + start_num++ + } else if (item.mknode === 'end') { + end_num++ + } else if (item.shape === 'edge' && item.mknode !== 'endEdge' && item.mknode !== 'startEdge') { + if (!item.mkdata.members || item.mkdata.members.length === 0) { + unvalid = true + } + } + + }) + if (start_num !== 1 || end_num !== 1 || unvalid) { _status = 0 } } @@ -1457,18 +1592,52 @@ ID: BID, BID: '' } + + let ssoParam = { + func: 's_works_flow_param_sso_upt_v6', + status: status, + ID: BID, + works_flow_code: flowcode, + works_flow_name: flowname, + long_param: window.btoa(window.encodeURIComponent(JSON.stringify(nodes))) + } Api.genericInterface(param).then(res => { if (res.status) { - notification.success({ - top: 92, - message: '淇濆瓨鎴愬姛锛�', - duration: 2 - }) - this.setState({ - loading: false, - status: _status - }) + if (plot.subtype === 'xflow') { + Api.getSystemConfig(ssoParam).then(result => { + if (result.status) { + notification.success({ + top: 92, + message: '淇濆瓨鎴愬姛锛�', + duration: 2 + }) + this.setState({ + loading: false, + status: _status + }) + } else { + notification.error({ + top: 92, + message: result.message, + duration: 10 + }) + this.setState({ + loading: false + }) + } + }) + } else { + notification.success({ + top: 92, + message: '淇濆瓨鎴愬姛锛�', + duration: 2 + }) + this.setState({ + loading: false, + status: _status + }) + } } else { notification.error({ top: 92, @@ -1791,20 +1960,23 @@ MKEmitter.emit('modifyTabs', newtab, true) } else if (plot.click === 'menu') { let menuId = plot.menu.slice(-1)[0] - let newtab = window.GLOB.mkThdMenus.filter(m => m.MenuID === menuId)[0] + let menu = null - if (!newtab && plot.MenuID) { - newtab = { + if (window.GLOB.mkThdMenus.has(menuId)) { + menu = {...window.GLOB.mkThdMenus.get(menuId)} + } else if (plot.MenuID) { + menu = { MenuID: plot.MenuID, MenuName: plot.MenuName, - MenuNo: plot.MenuNo, type: plot.tabType } - } else if (!newtab) { - return } - MKEmitter.emit('modifyTabs', {...newtab, param: {$BID: sign}}, true) + if (!menu) return + + menu.param = {$BID: sign} + + MKEmitter.emit('modifyTabs', menu, true) } else { MKEmitter.emit('resetSelectLine', config.uuid, sign, {}) } @@ -1817,8 +1989,22 @@ if (plot.subtype === 'xflow' && _status === 10) { let nodes = this.mkGraph.toJSON() - let start_num = nodes.cells.filter(cell => cell.mknode === 'start').length - let end_num = nodes.cells.filter(cell => cell.mknode === 'end').length + + let start_num = 0 + let end_num = 0 + let unvalidId = '' + + nodes.cells.forEach(item => { + if (item.mknode === 'start') { + start_num++ + } else if (item.mknode === 'end') { + end_num++ + } else if (item.shape === 'edge' && item.mknode !== 'endEdge' && item.mknode !== 'startEdge') { + if (!item.mkdata.members || item.mkdata.members.length === 0) { + unvalidId = item.id + } + } + }) if (start_num === 0) { notification.warning({ @@ -1844,6 +2030,23 @@ message: '缁撴潫鑺傜偣涓嶅彲娣诲姞澶氫釜锛�', duration: 2 }) + } else if (unvalidId) { + let edge = this.mkGraph.getCellById(unvalidId) + + let node = edge.getTargetCell() + + let title = '' + if (node.attrs && node.attrs.text) { + title = node.attrs.text.text + '' + } else if (node.mkdata) { + title = '鐘舵�侊細' + node.mkdata.status + ' - ' + node.mkdata.statusName + } + + notification.warning({ + top: 92, + message: '杩炴帴锛�' + title + '锛夌殑绾挎湭璁剧疆瀹℃壒浜猴紒', + duration: 2 + }) } else { this.setState({status: _status}) } @@ -1867,7 +2070,7 @@ } render() { - const { loading, config, node, rolelist, status } = this.state + const { loading, config, node, orgs, status, flowname } = this.state let style = {...config.style} @@ -1933,6 +2136,7 @@ <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} /> @@ -1947,7 +2151,7 @@ <div id={config.uuid + 'container'} className="mk-container"></div> <div className="mk-node-edit"> <div className="header">璁剧疆</div> - {!node ? <div className="empty">鏈�変腑</div> : <NodeUpdate node={node} rolelist={rolelist} onChange={this.changeProps}/>} + {!node ? <div className="empty">鏈�変腑</div> : <NodeUpdate node={node} orgs={orgs} onChange={this.changeProps}/>} </div> </div> </div> -- Gitblit v1.8.0