diff --git a/src/api/plugin/workflow/process.js b/src/api/plugin/workflow/process.js index c5dfd8d..75e87a7 100644 --- a/src/api/plugin/workflow/process.js +++ b/src/api/plugin/workflow/process.js @@ -118,6 +118,17 @@ export const getFormByProcessId = (params) => { }) } +/** + * 根据流程定义key获取表单 + */ + export const getFormByProcessDefKey = (params) => { + return request({ + url: `${prefix}/getFormByProcessDefKey`, + method: 'get', + params + }) +} + /** * 流程详情 */ diff --git a/src/views/plugin/workflow/mixins/ex-form.js b/src/views/plugin/workflow/mixins/ex-form.js index 5b3372d..d68a329 100644 --- a/src/views/plugin/workflow/mixins/ex-form.js +++ b/src/views/plugin/workflow/mixins/ex-form.js @@ -1,4 +1,4 @@ -import { getFormByProcessId, startProcess, detail, completeTask, transferTask, delegateTask, rollbackTask, terminateProcess, addMultiInstance, withdrawTask } from '@/api/plugin/workflow/process' +import { getFormByProcessId, getFormByProcessDefKey, startProcess, detail, completeTask, transferTask, delegateTask, rollbackTask, terminateProcess, addMultiInstance, withdrawTask } from '@/api/plugin/workflow/process' import Layout from '@/page/index/' import defaultValues from './default-values' @@ -29,11 +29,12 @@ export default { methods: { // 动态路由跳转 dynamicRoute(row, type, async = false) { - const { id, taskId, processInstanceId, processId, formKey, formUrl } = row + const { id, taskId, processInstanceId, processId, formKey, formUrl, processDefKey } = row let param = Buffer.from(JSON.stringify({ processId: id, taskId, - processInsId: processInstanceId || processId + processInsId: processInstanceId || processId, + processDefKey })).toString('base64') if (formKey && formKey.startsWith('wf_ex_')) { @@ -135,6 +136,24 @@ export default { }) }) }, + /** + * 获取流程发起表单 + * @param processDefKey 流程定义key + * @returns Promise({"process": "流程定义信息", "startForm": "开始节点表单"}) + */ + getStartFormByProcessDefKey(processDefKey) { + return new Promise((resolve, reject) => { + getFormByProcessDefKey({ processDefKey }).then(res => { + const { process } = res.data.data + process.hideComment = true + this.process = process + this.tag.label = '发起流程 - ' + process.name + resolve(res.data.data) + }).catch(() => { + reject() + }) + }) + }, /** * 发起流程 * @param form {"processId": "流程定义id", ...表单自定义字段变量} diff --git a/src/views/plugin/workflow/ops/detail.vue b/src/views/plugin/workflow/ops/detail.vue index 2091146..080853e 100644 --- a/src/views/plugin/workflow/ops/detail.vue +++ b/src/views/plugin/workflow/ops/detail.vue @@ -51,7 +51,7 @@ export default { processInstanceId: { handler() { const { taskId, processInstanceId } = this - if (taskId && processInstanceId) this.getDetail(taskId, processInstanceId) + if ((taskId && processInstanceId) || processInstanceId) this.getDetail(taskId, processInstanceId) }, immediate: true } diff --git a/src/views/plugin/workflow/process/components/form.vue b/src/views/plugin/workflow/process/components/form.vue index 1868800..0e21c3f 100644 --- a/src/views/plugin/workflow/process/components/form.vue +++ b/src/views/plugin/workflow/process/components/form.vue @@ -64,8 +64,8 @@ export default { handler(val) { if (val) { const param = JSON.parse(Buffer.from(val, 'base64').toString()) - const { processId } = param - if (processId) this.getForm(processId) + const { processId, processDefKey } = param + if (processId || processDefKey) this.getForm(processId, processDefKey) } }, immediate: true @@ -87,8 +87,17 @@ export default { } }, methods: { - getForm(processId) { - this.getStartForm(processId).then(res => { + getForm(processId, processDefKey) { + let param + let method + if (processId) { + param = processId + method = 'getStartForm' + } else if (processDefKey) { + param = processDefKey + method = 'getStartFormByProcessDefKey' + } + this[method](param).then(res => { let { process, form, startForm } = res this.form.processId = process.id if (form) {