diff --git a/src/api/bpm/task/index.ts b/src/api/bpm/task/index.ts index f6763720..126f01eb 100644 --- a/src/api/bpm/task/index.ts +++ b/src/api/bpm/task/index.ts @@ -41,3 +41,19 @@ export const getTaskListByProcessInstanceId = async (processInstanceId) => { export const exportTask = async (params) => { return await request.download({ url: '/bpm/task/export', params }) } + +/** + * 获取所有可回退的节点 + * @param params + */ +export const getReturnList = async (params) => { + return await request.get({ url: '/bpm/task/get-return-list', params }) +} + +/** + * 确认回退 + * @param params + */ +export const okRollback = async (data) => { + return await request.put({ url: '/bpm/task/rollback', data }) +} diff --git a/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue b/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue index 856fb2d7..dd4c8456 100644 --- a/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue +++ b/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue @@ -229,6 +229,9 @@ const getResultCss = (result) => { } else if (result === 4) { // 已取消 return 'highlight-cancel' + } else if (result === 5) { + // 退回 + return 'highlight-rollback' } return '' } @@ -564,6 +567,45 @@ watch( stroke: grey !important; } +/** 回退 */ +.highlight-rollback.djs-shape .djs-visual > :nth-child(1) { + fill: #e6a23c !important; + stroke: #e6a23c !important; + fill-opacity: 0.2 !important; +} +.highlight-rollback.djs-shape .djs-visual > :nth-child(2) { + fill: #e6a23c !important; +} +.highlight-rollback.djs-shape .djs-visual > path { + fill: #e6a23c !important; + fill-opacity: 0.2 !important; + stroke: #e6a23c !important; +} +.highlight-rollback.djs-connection > .djs-visual > path { + stroke: #e6a23c !important; +} + +.highlight-rollback:not(.djs-connection) .djs-visual > :nth-child(1) { + fill: #e6a23c !important; /* color elements as green */ +} + +:deep(.highlight-rollback.djs-shape .djs-visual > :nth-child(1)) { + fill: #e6a23c !important; + stroke: #e6a23c !important; + fill-opacity: 0.2 !important; +} +:deep(.highlight-rollback.djs-shape .djs-visual > :nth-child(2)) { + fill: #e6a23c !important; +} +:deep(.highlight-rollback.djs-shape .djs-visual > path) { + fill: #e6a23c !important; + fill-opacity: 0.2 !important; + stroke: #e6a23c !important; +} +:deep(.highlight-rollback.djs-connection > .djs-visual > path) { + stroke: #e6a23c !important; +} + .element-overlays { width: 200px; padding: 8px; diff --git a/src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue b/src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue index f45846d9..ec87104d 100644 --- a/src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue +++ b/src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue @@ -69,6 +69,9 @@ const getTimelineItemIcon = (item) => { if (item.result === 4) { return 'el-icon-remove-outline' } + if (item.result === 5) { + return 'el-icon-back' + } return '' } @@ -86,6 +89,9 @@ const getTimelineItemType = (item) => { if (item.result === 4) { return 'info' } + if (item.result === 5) { + return 'warning' + } return '' } diff --git a/src/views/bpm/processInstance/detail/TaskRollbackDialogForm.vue b/src/views/bpm/processInstance/detail/TaskRollbackDialogForm.vue new file mode 100644 index 00000000..168fd1a8 --- /dev/null +++ b/src/views/bpm/processInstance/detail/TaskRollbackDialogForm.vue @@ -0,0 +1,90 @@ + + diff --git a/src/views/bpm/processInstance/detail/index.vue b/src/views/bpm/processInstance/detail/index.vue index 64369181..6b57242d 100644 --- a/src/views/bpm/processInstance/detail/index.vue +++ b/src/views/bpm/processInstance/detail/index.vue @@ -91,6 +91,8 @@ + +