From f0963c3941c34a510933c80759b0154d7d7696fd Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 16 Jan 2022 22:16:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E8=AF=A6=E6=83=85=E9=A1=B5?= =?UTF-8?q?=2030%=20-=20=E8=A1=A8=E5=8D=95=E4=BF=A1=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/task/BpmTaskController.java | 6 +- .../task/BpmProcessInstanceConvert.java | 1 + .../bpm/service/task/BpmTaskService.java | 2 +- .../service/task/impl/BpmTaskServiceImpl.java | 2 +- yudao-admin-ui/src/api/bpm/processInstance.js | 2 +- yudao-admin-ui/src/api/bpm/task.js | 6 + yudao-admin-ui/src/router/index.js | 6 + .../src/views/bpm/processInstance/create.vue | 2 - .../src/views/bpm/processInstance/detail.vue | 146 +++++++++--------- yudao-admin-ui/src/views/bpm/task/todo.vue | 6 +- 10 files changed, 100 insertions(+), 79 deletions(-) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/BpmTaskController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/BpmTaskController.java index 56b232ea6..67fc48b60 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/BpmTaskController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/BpmTaskController.java @@ -57,12 +57,12 @@ public class BpmTaskController { return success(true); } - @GetMapping("/list-by-process-instance-id") + @GetMapping("/historic-list-by-process-instance-id") @ApiOperation(value = "获得指定流程实例的任务列表", notes = "包括完成的、未完成的") @ApiImplicitParam(name = "processInstanceId", value = "流程实例的编号", required = true, dataTypeClass = String.class) - public CommonResult> getTaskListByProcessInstanceId( + public CommonResult> getHistoricTaskListByProcessInstanceId( @RequestParam("processInstanceId") String processInstanceId) { - return success(taskService.getTaskListByProcessInstanceId(processInstanceId)); + return success(taskService.getHistoricTaskListByProcessInstanceId(processInstanceId)); } /** diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/task/BpmProcessInstanceConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/task/BpmProcessInstanceConvert.java index 9f59be342..8e1d2293f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/task/BpmProcessInstanceConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/task/BpmProcessInstanceConvert.java @@ -64,6 +64,7 @@ public interface BpmProcessInstanceConvert { @Mappings({ @Mapping(source = "id", target = "processInstanceId"), + @Mapping(source = "id", target = "id", ignore = true), @Mapping(source = "startDate", target = "createTime"), @Mapping(source = "initiator", target = "startUserId"), @Mapping(source = "status", target = "status", ignore = true) diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/BpmTaskService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/BpmTaskService.java index b46bf065a..99df5dde7 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/BpmTaskService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/BpmTaskService.java @@ -31,7 +31,7 @@ public interface BpmTaskService { * @param processInstanceId 流程实例的编号 * @return 流程任务列表 */ - List getTaskListByProcessInstanceId(String processInstanceId); + List getHistoricTaskListByProcessInstanceId(String processInstanceId); /** * 获得流程任务列表 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmTaskServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmTaskServiceImpl.java index b15ef39ce..21b9903a1 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmTaskServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmTaskServiceImpl.java @@ -91,7 +91,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { } @Override - public List getTaskListByProcessInstanceId(String processInstanceId) { + public List getHistoricTaskListByProcessInstanceId(String processInstanceId) { // 获得任务列表 List tasks = historyService.createHistoricTaskInstanceQuery() .processInstanceId(processInstanceId) diff --git a/yudao-admin-ui/src/api/bpm/processInstance.js b/yudao-admin-ui/src/api/bpm/processInstance.js index 54feaedea..58c456f71 100644 --- a/yudao-admin-ui/src/api/bpm/processInstance.js +++ b/yudao-admin-ui/src/api/bpm/processInstance.js @@ -27,7 +27,7 @@ export function cancelProcessInstance(id, reason) { }) } -export function getMyProcessInstance(id) { +export function getProcessInstance(id) { return request({ url: '/bpm/process-instance/get?id=' + id, method: 'get', diff --git a/yudao-admin-ui/src/api/bpm/task.js b/yudao-admin-ui/src/api/bpm/task.js index 8a5704884..650186e96 100644 --- a/yudao-admin-ui/src/api/bpm/task.js +++ b/yudao-admin-ui/src/api/bpm/task.js @@ -40,3 +40,9 @@ export function rejectTask(data) { }) } +export function getHistoricTaskListByProcessInstanceId(processInstanceId) { + return request({ + url: '/bpm/task/historic-list-by-process-instance-id?processInstanceId=' + processInstanceId, + method: 'get', + }) +} diff --git a/yudao-admin-ui/src/router/index.js b/yudao-admin-ui/src/router/index.js index 35a9deac8..810b63a0f 100644 --- a/yudao-admin-ui/src/router/index.js +++ b/yudao-admin-ui/src/router/index.js @@ -198,6 +198,12 @@ export const constantRoutes = [ component: (resolve) => require(['@/views/bpm/processInstance/create'], resolve), name: '发起流程', meta: { title: '发起流程' } + }, + { + path: 'process-instance/detail', + component: (resolve) => require(['@/views/bpm/processInstance/detail'], resolve), + name: '流程详情', + meta: { title: '流程详情' } } ] }, diff --git a/yudao-admin-ui/src/views/bpm/processInstance/create.vue b/yudao-admin-ui/src/views/bpm/processInstance/create.vue index 1d3c09651..1cdee0bcf 100644 --- a/yudao-admin-ui/src/views/bpm/processInstance/create.vue +++ b/yudao-admin-ui/src/views/bpm/processInstance/create.vue @@ -70,8 +70,6 @@ export default { return { // 遮罩层 loading: true, - // 总条数 - total: 0, // 表格数据 list: [], diff --git a/yudao-admin-ui/src/views/bpm/processInstance/detail.vue b/yudao-admin-ui/src/views/bpm/processInstance/detail.vue index 1365e57c4..7b11a4145 100644 --- a/yudao-admin-ui/src/views/bpm/processInstance/detail.vue +++ b/yudao-admin-ui/src/views/bpm/processInstance/detail.vue @@ -1,54 +1,25 @@ @@ -58,7 +29,8 @@ import {DICT_TYPE, getDictDatas} from "@/utils/dict"; import {getForm} from "@/api/bpm/form"; import {decodeFields} from "@/utils/formGenerator"; import Parser from '@/components/parser/Parser' -import {createProcessInstance, getMyProcessInstancePage} from "@/api/bpm/processInstance"; +import {createProcessInstance, getMyProcessInstancePage, getProcessInstance} from "@/api/bpm/processInstance"; +import {getHistoricTaskListByProcessInstanceId} from "@/api/bpm/task"; // 流程实例的详情页,可用于审批 export default { @@ -69,11 +41,10 @@ export default { data() { return { // 遮罩层 - loading: true, - // 总条数 - total: 0, - // 表格数据 - list: [], + processInstanceLoading: true, + // 流程实例 + id: undefined, // 流程实例的编号 + processInstance: {}, // 流程表单详情 detailForm: { @@ -86,27 +57,65 @@ export default { prefix: "activiti" }, - // 流程表单 - selectProcessInstance: undefined, // 选择的流程实例 + // 审批记录 + historicTasksLoad: true, + historicTasks: [], // 数据字典 categoryDictDatas: getDictDatas(DICT_TYPE.BPM_MODEL_CATEGORY), }; }, created() { - this.getList(); + this.id = this.$route.query.id; + if (!this.id) { + this.$message.error('未传递 id 参数,无法查看流程信息'); + return; + } + this.getDetail(); }, methods: { - /** 查询流程定义列表 */ - getList() { - this.loading = true; - getProcessDefinitionList({ - suspensionState: 1 - }).then(response => { - this.list = response.data - this.loading = false + /** 获得流程实例 */ + getDetail() { + // 获得流程实例相关 + this.processInstanceLoading = true; + getProcessInstance(this.id).then(response => { + if (!response.data) { + this.$message.error('查询不到流程信息!'); + return; } - ); + // 设置流程信息 + this.processInstance = response.data; + + // 设置表单信息 + this.detailForm = { + ...JSON.parse(this.processInstance.processDefinition.formConf), + disabled: true, // 表单禁用 + formBtns: false, // 按钮隐藏 + fields: decodeFields(this.processInstance.processDefinition.formFields) + } + // 设置表单的值 + this.detailForm.fields.forEach(item => { + const val = this.processInstance.formVariables[item.__vModel__] + if (val) { + item.__config__.defaultValue = val + } + }) + + // 加载流程图 + getProcessDefinitionBpmnXML(this.processInstance.processDefinition.id).then(response => { + this.bpmnXML = response.data + }) + + // 取消加载中 + this.processInstanceLoading = false; + }); + + // 获得流程任务列表(审批记录) + this.historicTasksLoad = true; + getHistoricTaskListByProcessInstanceId(this.id).then(response => { + this.historicTasks = response.data; + this.historicTasksLoad = true; + }); }, /** 处理选择流程的按钮操作 **/ handleSelect(row) { @@ -121,10 +130,7 @@ export default { fields: decodeFields(row.formFields) } - // 加载流程图 - getProcessDefinitionBpmnXML(row.id).then(response => { - this.bpmnXML = response.data - }) + } else if (row.formCustomCreatePath) { this.$router.push({ path: row.formCustomCreatePath}); // 这里暂时无需加载流程图,因为跳出到另外个 Tab; diff --git a/yudao-admin-ui/src/views/bpm/task/todo.vue b/yudao-admin-ui/src/views/bpm/task/todo.vue index 2e919cb6f..9ea2bebde 100644 --- a/yudao-admin-ui/src/views/bpm/task/todo.vue +++ b/yudao-admin-ui/src/views/bpm/task/todo.vue @@ -36,7 +36,7 @@