From 42a4ef4c9672d5cd24061ba3422295d550615032 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sat, 26 Oct 2024 17:44:36 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=B7=BB=E5=8A=A0warm-ui=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8,=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=20update=20=E8=B0=83=E6=95=B4=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=9B=BE=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 +- src/api/workflow/processInstance/index.ts | 20 +- src/components/Process/approvalRecord.vue | 37 +- .../WarmFlow/PropertySetting/between.vue | 267 ------------- .../WarmFlow/PropertySetting/end.vue | 52 --- .../WarmFlow/PropertySetting/index.vue | 246 ------------ .../WarmFlow/PropertySetting/parallel.vue | 52 --- .../WarmFlow/PropertySetting/serial.vue | 52 --- .../WarmFlow/PropertySetting/skip.vue | 93 ----- .../WarmFlow/PropertySetting/start.vue | 75 ---- src/components/WarmFlow/js/between.js | 23 -- src/components/WarmFlow/js/data.js | 139 ------- src/components/WarmFlow/js/end.js | 17 - src/components/WarmFlow/js/parallel.js | 57 --- src/components/WarmFlow/js/serial.js | 57 --- src/components/WarmFlow/js/skip.js | 33 -- src/components/WarmFlow/js/start.js | 17 - src/components/WarmFlow/js/tool.js | 356 ------------------ src/router/index.ts | 6 +- src/views/workflow/leave/index.vue | 6 +- src/views/workflow/leave/leaveEdit.vue | 14 +- .../workflow/processDefinition/design.vue | 52 +++ .../workflow/processDefinition/index.vue | 15 +- .../processDefinition/modelDesign.vue | 287 -------------- src/views/workflow/processInstance/index.vue | 17 - src/views/workflow/task/allTaskWaiting.vue | 2 +- 26 files changed, 93 insertions(+), 1903 deletions(-) delete mode 100644 src/components/WarmFlow/PropertySetting/between.vue delete mode 100644 src/components/WarmFlow/PropertySetting/end.vue delete mode 100644 src/components/WarmFlow/PropertySetting/index.vue delete mode 100644 src/components/WarmFlow/PropertySetting/parallel.vue delete mode 100644 src/components/WarmFlow/PropertySetting/serial.vue delete mode 100644 src/components/WarmFlow/PropertySetting/skip.vue delete mode 100644 src/components/WarmFlow/PropertySetting/start.vue delete mode 100644 src/components/WarmFlow/js/between.js delete mode 100644 src/components/WarmFlow/js/data.js delete mode 100644 src/components/WarmFlow/js/end.js delete mode 100644 src/components/WarmFlow/js/parallel.js delete mode 100644 src/components/WarmFlow/js/serial.js delete mode 100644 src/components/WarmFlow/js/skip.js delete mode 100644 src/components/WarmFlow/js/start.js delete mode 100644 src/components/WarmFlow/js/tool.js create mode 100644 src/views/workflow/processDefinition/design.vue delete mode 100644 src/views/workflow/processDefinition/modelDesign.vue diff --git a/package.json b/package.json index fbc9c5b..48b1571 100644 --- a/package.json +++ b/package.json @@ -45,9 +45,7 @@ "vue-i18n": "9.10.2", "vue-router": "4.3.2", "vue-types": "5.1.1", - "vxe-table": "4.5.22", - "@logicflow/core": "^1.2.15", - "@logicflow/extension": "^1.2.16" + "vxe-table": "4.5.22" }, "devDependencies": { "@iconify/json": "2.2.201", diff --git a/src/api/workflow/processInstance/index.ts b/src/api/workflow/processInstance/index.ts index 784185e..8b3f8d9 100644 --- a/src/api/workflow/processInstance/index.ts +++ b/src/api/workflow/processInstance/index.ts @@ -1,6 +1,7 @@ import request from '@/utils/request'; import { ProcessInstanceQuery, ProcessInstanceVO } from '@/api/workflow/processInstance/types'; import { AxiosPromise } from 'axios'; +import { number } from 'vue-types'; /** * 查询运行中实例列表 @@ -31,9 +32,9 @@ export const getPageByFinish = (query: ProcessInstanceQuery): AxiosPromise { +export const getFlowImage = (businessKey: string | number) => { return request({ - url: `/workflow/processInstance/getHistoryImage/${businessKey}` + '?t' + Math.random(), + url: `/workflow/processInstance/getFlowImage/${businessKey}` + '?t' + Math.random(), method: 'get' }); }; @@ -48,18 +49,6 @@ export const getHistoryList = (businessKey: string): AxiosPromise { - return request({ - url: `/workflow/processInstance/getHistoryRecord/${businessKey}`, - method: 'get' - }); -}; - /** * 作废 * @param data 参数 @@ -125,9 +114,8 @@ export const cancelProcessApply = (businessKey: string) => { export default { getPageByRunning, getPageByFinish, - getHistoryImage, + getFlowImage, getHistoryList, - getHistoryRecord, deleteRunInstance, deleteRunAndHisInstance, deleteFinishAndHisInstance, diff --git a/src/components/Process/approvalRecord.vue b/src/components/Process/approvalRecord.vue index bb4ed91..d2417f2 100644 --- a/src/components/Process/approvalRecord.vue +++ b/src/components/Process/approvalRecord.vue @@ -2,27 +2,22 @@
- - + +
- - + + - - - - - - + + + - - diff --git a/src/components/WarmFlow/PropertySetting/end.vue b/src/components/WarmFlow/PropertySetting/end.vue deleted file mode 100644 index 823f030..0000000 --- a/src/components/WarmFlow/PropertySetting/end.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - - - diff --git a/src/components/WarmFlow/PropertySetting/index.vue b/src/components/WarmFlow/PropertySetting/index.vue deleted file mode 100644 index f61856d..0000000 --- a/src/components/WarmFlow/PropertySetting/index.vue +++ /dev/null @@ -1,246 +0,0 @@ - - - - - diff --git a/src/components/WarmFlow/PropertySetting/parallel.vue b/src/components/WarmFlow/PropertySetting/parallel.vue deleted file mode 100644 index 7ef7a92..0000000 --- a/src/components/WarmFlow/PropertySetting/parallel.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - - - diff --git a/src/components/WarmFlow/PropertySetting/serial.vue b/src/components/WarmFlow/PropertySetting/serial.vue deleted file mode 100644 index 592a00a..0000000 --- a/src/components/WarmFlow/PropertySetting/serial.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - - - diff --git a/src/components/WarmFlow/PropertySetting/skip.vue b/src/components/WarmFlow/PropertySetting/skip.vue deleted file mode 100644 index 08000cc..0000000 --- a/src/components/WarmFlow/PropertySetting/skip.vue +++ /dev/null @@ -1,93 +0,0 @@ - - - - - diff --git a/src/components/WarmFlow/PropertySetting/start.vue b/src/components/WarmFlow/PropertySetting/start.vue deleted file mode 100644 index 74be79e..0000000 --- a/src/components/WarmFlow/PropertySetting/start.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - - - diff --git a/src/components/WarmFlow/js/between.js b/src/components/WarmFlow/js/between.js deleted file mode 100644 index 472b4ec..0000000 --- a/src/components/WarmFlow/js/between.js +++ /dev/null @@ -1,23 +0,0 @@ -import { RectNode, RectNodeModel } from "@logicflow/core"; - -class BetweenModel extends RectNodeModel { - - initNodeData(data) { - super.initNodeData(data); - this.width = 100; - this.height = 80; - this.radius = 5; - } - getNodeStyle() { - const style = super.getNodeStyle(); - return style - } -} - -class BetweenView extends RectNode {} - -export default { - type: "between", - model: BetweenModel, - view: BetweenView, -}; diff --git a/src/components/WarmFlow/js/data.js b/src/components/WarmFlow/js/data.js deleted file mode 100644 index e0cd79f..0000000 --- a/src/components/WarmFlow/js/data.js +++ /dev/null @@ -1,139 +0,0 @@ -// 测试数据 -const graphData = { - flowName: "请假流程-串行1", - flowCode: "leaveFlow-serial1", - version: "1.0", - formCustom: "N", - formPath: "test/leave/approve", - nodes: [ - { - id: "node_id_1", - type: "start", - x: 200, - y: 200, - text: { x: 200, y: 200, value: "开始" }, - properties: { - status: "approval" - }, - }, - { - id: "node_id_2", - type: "between", - x: 400, - y: 200, - text: { x: 400, y: 200, value: "待提交" }, - properties: { - status: "pass" - }, - }, - { - id: "node_id_3", - type: "between", - x: 600, - y: 200, - text: { x: 600, y: 200, value: "组长审批" }, - properties: { - status: "approval" - }, - }, - { - id: "node_id_4", - type: "between", - x: 800, - y: 200, - text: { x: 800, y: 200, value: "部门审批" }, - properties: { - status: "approval" - }, - }, - { - id: "node_id_5", - type: "between", - x: 1000, - y: 200, - text: { x: 1000, y: 200, value: "hr审批" }, - properties: { - status: "approval" - }, - }, - { - id: "node_id_6", - type: "end", - x: 1200, - y: 200, - text: { x: 1200, y: 200, value: "结束" }, - properties: {}, - }, - ], - edges: [ - { - id: "edge_id", - type: "skip", - sourceNodeId: "node_id_1", - targetNodeId: "node_id_2", - text: { x: 280, y: 200, value: "通过" }, - startPoint: { x: 220, y: 200 }, - endPoint: { x: 350, y: 200 }, - properties: {}, - }, - { - id: "edge_id", - type: "skip", - sourceNodeId: "node_id_2", - targetNodeId: "node_id_3", - text: { x: 500, y: 200, value: "通过" }, - startPoint: { x: 450, y: 200 }, - endPoint: { x: 550, y: 200 }, - properties: {}, - }, - { - id: "edge_id", - type: "skip", - sourceNodeId: "node_id_3", - targetNodeId: "node_id_4", - text: { x: 700, y: 200, value: "通过" }, - startPoint: { x: 650, y: 200 }, - endPoint: { x: 750, y: 200 }, - properties: {}, - }, - { - id: "edge_id", - type: "skip", - sourceNodeId: "node_id_4", - targetNodeId: "node_id_5", - text: { x: 900, y: 200, value: "通过" }, - startPoint: { x: 850, y: 200 }, - endPoint: { x: 950, y: 200 }, - properties: {}, - }, - { - id: "edge_id", - type: "skip", - sourceNodeId: "node_id_5", - targetNodeId: "node_id_6", - text: { x: 1120, y: 200, value: "通过" }, - startPoint: { x: 1050, y: 200 }, - endPoint: { x: 1180, y: 200 }, - properties: {}, - }, - - { - id: "edge_id", - type: "skip", - sourceNodeId: "node_id_4", - targetNodeId: "node_id_2", - text: { x: 600, y: 100, value: "退回" }, - startPoint: { x: 800, y: 160 }, - endPoint: { x: 400, y: 160 }, - pointsList: [ - { x: 800, y: 160 }, - { x: 800, y: 100 }, - { x: 400, y: 100 }, - { x: 400, y: 160 }, - ], - properties: {}, - }, - ], -}; - -export default graphData diff --git a/src/components/WarmFlow/js/end.js b/src/components/WarmFlow/js/end.js deleted file mode 100644 index 3ac6a1a..0000000 --- a/src/components/WarmFlow/js/end.js +++ /dev/null @@ -1,17 +0,0 @@ -import { CircleNode, CircleNodeModel } from "@logicflow/core"; - -class endModel extends CircleNodeModel { - - initNodeData(data) { - super.initNodeData(data); - this.r = 20 - } -} - -class endView extends CircleNode {} - -export default { - type: "end", - model: endModel, - view: endView, -}; diff --git a/src/components/WarmFlow/js/parallel.js b/src/components/WarmFlow/js/parallel.js deleted file mode 100644 index 8ebc88d..0000000 --- a/src/components/WarmFlow/js/parallel.js +++ /dev/null @@ -1,57 +0,0 @@ -import { h, PolygonNode, PolygonNodeModel } from '@logicflow/core' - -class ParallelModel extends PolygonNodeModel { - static extendKey = 'ParallelModel'; - constructor (data, graphModel) { - if (!data.text) { - data.text = '' - } - if (data.text && typeof data.text === 'string') { - data.text = { - value: data.text, - x: data.x, - y: data.y + 40 - } - } - super(data, graphModel) - this.points = [ - [25, 0], - [50, 25], - [25, 50], - [0, 25] - ] - } - -} - -class ParallelView extends PolygonNode { - static extendKey = 'ParallelNode'; - getShape () { - const { model } = this.props - const { x, y, width, height, points } = model - const style = model.getNodeStyle() - return h( - 'g', - { - transform: `matrix(1 0 0 1 ${x - width / 2} ${y - height / 2})` - }, - h('polygon', { - ...style, - x, - y, - points - }), - h('path', { - d: - 'm 23,10 0,12.5 -12.5,0 0,5 12.5,0 0,12.5 5,0 0,-12.5 12.5,0 0,-5 -12.5,0 0,-12.5 -5,0 z', - ...style - }) - ) - } -} - -export default { - type: 'parallel', - view: ParallelView, - model: ParallelModel -}; diff --git a/src/components/WarmFlow/js/serial.js b/src/components/WarmFlow/js/serial.js deleted file mode 100644 index 7a9012c..0000000 --- a/src/components/WarmFlow/js/serial.js +++ /dev/null @@ -1,57 +0,0 @@ -import { h, PolygonNode, PolygonNodeModel } from '@logicflow/core' - -class SerialModel extends PolygonNodeModel { - static extendKey = 'SerialModel'; - constructor (data, graphModel) { - if (!data.text) { - data.text = '' - } - if (data.text && typeof data.text === 'string') { - data.text = { - value: data.text, - x: data.x, - y: data.y + 40 - } - } - super(data, graphModel) - this.points = [ - [25, 0], - [50, 25], - [25, 50], - [0, 25] - ] - } - -} - -class SerialView extends PolygonNode { - static extendKey = 'SerialNode'; - getShape () { - const { model } = this.props - const { x, y, width, height, points } = model - const style = model.getNodeStyle() - return h( - 'g', - { - transform: `matrix(1 0 0 1 ${x - width / 2} ${y - height / 2})` - }, - h('polygon', { - ...style, - x, - y, - points - }), - h('path', { - d: - 'm 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z', - ...style - }) - ) - } -} - -export default { - type: 'serial', - view: SerialView, - model: SerialModel -}; diff --git a/src/components/WarmFlow/js/skip.js b/src/components/WarmFlow/js/skip.js deleted file mode 100644 index 4167f1b..0000000 --- a/src/components/WarmFlow/js/skip.js +++ /dev/null @@ -1,33 +0,0 @@ -import { PolylineEdge, PolylineEdgeModel } from "@logicflow/core"; - -class SkipModel extends PolylineEdgeModel { - setAttributes() { - this.offset = 20; - } - - getEdgeStyle() { - const style = super.getEdgeStyle(); - const { properties } = this; - if (properties.isActived) { - style.strokeDasharray = "4 4"; - } - return style; - } - - /** - * 重写此方法,使保存数据是能带上锚点数据。 - */ - getData() { - const data = super.getData(); - data.sourceAnchorId = this.sourceAnchorId; - data.targetAnchorId = this.targetAnchorId; - return data; - } - -} - -export default { - type: "skip", - view: PolylineEdge, - model: SkipModel, -}; diff --git a/src/components/WarmFlow/js/start.js b/src/components/WarmFlow/js/start.js deleted file mode 100644 index 71fc66e..0000000 --- a/src/components/WarmFlow/js/start.js +++ /dev/null @@ -1,17 +0,0 @@ -import { CircleNode, CircleNodeModel } from "@logicflow/core"; - -class StartModel extends CircleNodeModel { - - initNodeData(data) { - super.initNodeData(data); - this.r = 20 - } -} - -class StartView extends CircleNode {} - -export default { - type: "start", - model: StartModel, - view: StartView, -}; diff --git a/src/components/WarmFlow/js/tool.js b/src/components/WarmFlow/js/tool.js deleted file mode 100644 index 91d840e..0000000 --- a/src/components/WarmFlow/js/tool.js +++ /dev/null @@ -1,356 +0,0 @@ -/** - * 节点样式处理方法 - * @param _this - * @param style - * @returns {*} - */ -export const nodeStyleHandle = (_this, style) => { - if (_this.properties.status === "pass") { - style.stroke = "green"; - } else if (_this.properties.status === "reject") { - style.stroke = "#ffba00"; - } else if (_this.properties.status === "approval") { - style.stroke = "red"; - } else { - style.stroke = "#909399"; - } - return style -} - -/** - * 节点大小处理方法 - * @param _this - * @param style - * @returns {*} - */ -export const nodeSizeHandle = (_this) => { - _this.width = 120; - _this.height = 80; - _this.radius = 5; -} - -/** - * 节点大小处理方法 - * @param _this - * @param style - * @returns {*} - */ -export const skipText = (skipType) => { - let text = '' - if (skipType && skipType === 'PASS') { - text = '审批通过' - } else if (skipType && skipType === 'REJECT') { - text = '退回' - } - return text -} - - -/** - * 解析xml成Dom对象 - * @param {} xml - * @returns - */ -export const parseXml2Dom = (xml) => { - let xmlDoc = null - if (window.DOMParser) { - const parser = new DOMParser() - xmlDoc = parser.parseFromString(xml, 'text/xml') - } else { // Internet Explorer - // eslint-disable-next-line no-undef - xmlDoc = new ActiveXObject('Microsoft.XMLDOM') - xmlDoc.async = false - xmlDoc.loadXML(xml) - } - return xmlDoc -} - -// 节点标签 -const NODE_NAMES = ['start', 'between', 'serial', 'parallel', 'end'] -// 流程节点属性 -const DEFINITION_KEYS = ['flowCode', 'flowName', 'version', 'formCustom', 'formPath'] -// 节点属性 -const NODE_ATTR_KEYS = ['nodeType', 'nodeCode', 'nodeName', 'coordinate', 'nodeRatio', 'permissionFlag', "skipAnyNode" - , "listenerType", "listenerPath", "formCustom", "formPath"] -// 变迁节点属性 -const SKIP_ATTR_KEYS = ['skipName', 'skipType', 'coordinate', 'skipCondition'] - -/** - * 将warm-flow的定义文件转成LogicFlow支持的数据格式 - * @param {*} xml - * @returns - */ -export const snakerXml2LogicFlowJson = (xml) => { - const graphData = { - nodes: [], - edges: [] - } - const xmlDoc = parseXml2Dom(xml) - const definitionDom = xmlDoc.getElementsByTagName('definition') - if (!definitionDom.length) { - return graphData - } - let value = null - // 解析definition属性 - DEFINITION_KEYS.forEach(key => { - value = definitionDom[0].getAttribute(key) - if (value) { - graphData[key] = value - } - }) - let nodeEles = null - let node = null - let lfNode = {} - // 解析节点 - nodeEles = definitionDom[0].getElementsByTagName("node") - if (nodeEles.length) { - for (var i = 0, len = nodeEles.length; i < len; i++) { - node = nodeEles[i] - lfNode = { - text:{}, - properties: {} - } - // 处理节点 - NODE_ATTR_KEYS.forEach(attrKey => { - value = node.getAttribute(attrKey) - if (value) { - if (attrKey === 'nodeType') { - lfNode.type = value - } else if (attrKey === 'nodeCode') { - lfNode.id = value - } else if (attrKey === 'coordinate') { - const attr = value.split('|') - const nodeXy = attr[0].split(',') - lfNode.x = parseInt(nodeXy[0]) - lfNode.y = parseInt(nodeXy[1]) - if (attr.length === 2) { - const textXy = attr[1].split(',') - lfNode.text.x = parseInt(textXy[0]) - lfNode.text.y = parseInt(textXy[1]) - } - } else if (attrKey === 'nodeName') { - lfNode.text.value = value - } else { - lfNode.properties[attrKey] = value - } - } - }) - graphData.nodes.push(lfNode) - // 处理边 - let skipEles = null - let skipEle = null - let edge = {} - skipEles = node.getElementsByTagName('skip') - for (var j = 0, lenn = skipEles.length; j < lenn; j++) { - skipEle = skipEles[j] - edge = { - text: {}, - properties: {}, - } - edge.id = skipEle.getAttribute('id') - edge.type = 'skip' - edge.sourceNodeId = lfNode.id - edge.targetNodeId = skipEle.textContent - edge.text = { - value: skipEle.getAttribute('skipName') - } - edge.properties.skipCondition = skipEle.getAttribute('skipCondition') - edge.properties.skipName = skipEle.getAttribute('skipName') - edge.properties.skipType = skipEle.getAttribute('skipType') - const expr = skipEle.getAttribute('expr') - if (expr) { - edge.properties.expr = expr - } - const coordinate = skipEle.getAttribute('coordinate') - if (coordinate) { - const coordinateXy = coordinate.split('|') - edge.pointsList = [] - coordinateXy[0].split(';').forEach((item) => { - const pointArr = item.split(',') - edge.pointsList.push({ - x: parseInt(pointArr[0]), - y: parseInt(pointArr[1]) - }) - }) - edge.startPoint = edge.pointsList[0] - edge.endPoint = edge.pointsList[edge.pointsList.length - 1] - if (coordinateXy.length > 1) { - let textXy = coordinateXy[1].split(","); - edge.text.x = parseInt(textXy[0]) - edge.text.y = parseInt(textXy[1]) - } - } - graphData.edges.push(edge) - } - } - } - - return graphData -} - -/** - * 将LogicFlow的数据转成warm-flow的定义文件 - * @param {*} data(...definitionInfo,nodes,edges) - * @returns - */ -export const logicFlowJsonToFlowXml = (data) => { - let xml = '' - // data的数据由流程定义文件信息+logicFlow数据构成 - // 先构建成流程对象 - const definitionObj = { - flowCode: data.flowCode, // 流程定义编码 - flowName: data.flowName, // 流程定义名称 - version: data.version, // 流程定义版本号 - formCustom: data.formCustom, // 表单自定义 - formPath: data.formPath, // 表单自定义路径 - } - /** - * 获取开始节点 - * @returns - */ - const getStartNode = () => { - return data.nodes.find((node) => { - return node.type === 'start' - }) - } - /** - * 获取当前节点的所有下一个节点集合 - * @param {*} id 当前节点名称 - * @returns - */ - const getNextNodes = (id) => { - return data.edges.filter(edge => { - return edge.sourceNodeId === id - }).map(edge => { - return data.nodes.find((node) => { - return node.id === edge.targetNodeId - }) - }) - } - /** - * 获取节点所有跳转 - * @param {*} id - * @returns - */ - const getSkip = (id) => { - return data.edges.filter((edge) => { - return edge.sourceNodeId === id - }).map(edge => { - let coordinate = '' - for (let i = 0; i < edge.pointsList.length; i++) { - coordinate = coordinate + parseInt(edge.pointsList[i].x) + ',' + parseInt(edge.pointsList[i].y) - if (i !== edge.pointsList.length - 1) { - coordinate = coordinate + ';' - } - } - if (edge.text) { - coordinate = coordinate + '|' + parseInt(edge.text.x) + ',' + parseInt(edge.text.y) - } - return { - skipType: edge.properties.skipType, - skipCondition: edge.properties.skipCondition, - skipName: edge.properties.skipName, - textContent: edge.targetNodeId, // 目地节点id - coordinate: coordinate, - } - }) - } - /** - * 构建节点属性 - * @param {} node - * @returns - */ - const buildNode = (node) => { - let textXy = ''; - if (node.text) { - textXy = '|' + node.text.x + ',' + node.text.y; - } - return { - nodeType: node.type, - nodeCode: node.id, - nodeName: (node.text instanceof String || node.text === undefined) ? node.text : node.text.value, - permissionFlag: node.properties.permissionFlag, - nodeRatio: node.properties.nodeRatio, - skipAnyNode: node.properties.skipAnyNode, - listenerType: node.properties.listenerType, - listenerPath: node.properties.listenerPath, - coordinate: node.x + ',' + node.y + textXy, - skip: getSkip(node.id), - formCustom: node.properties.formCustom, - formPath: node.properties.formPath, - } - } - /** - * 特殊字符转义 - * @param {*} text - * @returns - */ - const textEncode = (text) => { - text = text.replace(/&/g, '&') - .replace(/"/g, '"') - .replace(//g, '>') - return text - } - /** - * 递归构建节点属性 - * @param {} node - */ - const recursionBuildNode = (node) => { - const nodeName = node.type - if (!definitionObj[nodeName + '_' + node.id]) { - definitionObj[nodeName + '_' + node.id] = buildNode(node) - const nextNodes = getNextNodes(node.id) - nextNodes.forEach(nextNode => { - recursionBuildNode(nextNode) - }) - } - } - const startNode = getStartNode() - if (!startNode) { - // 开始节点不存在,xml不合法 - return '' - } - recursionBuildNode(startNode) - xml = '\n' - xml += ' { - const value = definitionObj[key] - if (DEFINITION_KEYS.includes(key) && value) { - xml += ' ' + key + '=' + '"' + textEncode(value) + '"' - } - }) - xml += '>\n' - // 生成节点xml - Object.keys(definitionObj).forEach(key => { - const value = definitionObj[key] - let nodeName = key.split('_')[0] - if (NODE_NAMES.includes(nodeName)) { - xml += '\t { - if (NODE_ATTR_KEYS.includes(nodeAttrKey) && value[nodeAttrKey]) { - xml += ' ' + nodeAttrKey + '=' + '"' + textEncode(value[nodeAttrKey]) + '"' - } - }) - xml += '>\n\t' - // 构建skip - if (value.skip) { - value.skip.forEach(skip => { - xml += '\t { - if (SKIP_ATTR_KEYS.includes(skipAttrKey) && skip[skipAttrKey]) { - xml += ' ' + skipAttrKey + '=' + '"' + textEncode(skip[skipAttrKey]) + '"' - } - }) - xml += '>' - xml += skip['textContent'] + '\n' - }) - } - xml += '\t\n' - } - }) - xml += '' - return xml -} diff --git a/src/router/index.ts b/src/router/index.ts index 1d784f7..831b9b7 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -178,15 +178,15 @@ export const dynamicRoutes: RouteRecordRaw[] = [ ] }, { - path: '/workflow/modelDesign', + path: '/workflow/design', component: Layout, hidden: true, permissions: ['workflow:leave:edit'], children: [ { path: 'index', - component: () => import('@/views/workflow/processDefinition/modelDesign.vue'), - name: 'modelDesign', + component: () => import('@/views/workflow/processDefinition/design.vue'), + name: 'design', meta: { title: '请假申请', activeMenu: '/workflow/processDefinition', noCache: true } } ] diff --git a/src/views/workflow/leave/index.vue b/src/views/workflow/leave/index.vue index f413136..49c4d6a 100644 --- a/src/views/workflow/leave/index.vue +++ b/src/views/workflow/leave/index.vue @@ -59,7 +59,7 @@ @@ -261,11 +261,9 @@ - - - diff --git a/src/views/workflow/processInstance/index.vue b/src/views/workflow/processInstance/index.vue index ff23b7c..806ed60 100644 --- a/src/views/workflow/processInstance/index.vue +++ b/src/views/workflow/processInstance/index.vue @@ -133,11 +133,6 @@ - - -
@@ -151,7 +146,6 @@ import { deleteFinishAndHisInstance, deleteRunInstance } from '@/api/workflow/processInstance'; -import { migrationDefinition } from '@/api/workflow/definition'; import { listCategory } from '@/api/workflow/category'; import { CategoryVO } from '@/api/workflow/category/types'; import { ProcessInstanceQuery, ProcessInstanceVO } from '@/api/workflow/processInstance/types'; @@ -321,17 +315,6 @@ const handleInvalid = async (row: ProcessInstanceVO) => { const cancelPopover = async (index: any) => { (proxy?.$refs[`popoverRef${index}`] as any).hide(); //关闭弹窗 }; -//切换流程版本 -const handleChange = async (id: string) => { - await proxy?.$modal.confirm('是否确认切换?'); - loading.value = true; - migrationDefinition(processDefinitionId.value, id).then((resp) => { - proxy?.$modal.msgSuccess('操作成功'); - getProcessInstanceRunningList(); - processDefinitionDialog.visible = false; - loading.value = false; - }); -}; /** 查看按钮操作 */ const handleView = (row) => { const routerJumpVo = reactive({ diff --git a/src/views/workflow/task/allTaskWaiting.vue b/src/views/workflow/task/allTaskWaiting.vue index 01d4a06..89c5207 100644 --- a/src/views/workflow/task/allTaskWaiting.vue +++ b/src/views/workflow/task/allTaskWaiting.vue @@ -262,7 +262,7 @@ const handleView = (row) => { const routerJumpVo = reactive({ wfDefinitionConfigVo: row.wfDefinitionConfigVo, wfNodeConfigVo: row.wfNodeConfigVo, - businessKey: row.businessKey, + businessKey: row.businessId, taskId: row.id, type: 'view' });