流程退回可选审批人

流程图显示更多流程信息(节点审批人/当前审批节点)
流程配置过滤不存在的元素的配置
支持子流程多实例的审批(传参isEnd)
This commit is contained in:
yaoyn
2024-12-28 11:46:51 +08:00
parent 2c65b09833
commit ac31c31fe1
6 changed files with 91 additions and 10 deletions

View File

@ -52,7 +52,10 @@
<opinion-dialog ref="opinionDlg" />
<transfer-dialog ref="transferDlg" />
<a-modal :closable="false" :visible="showFlowChart" centered class="geg" title="流程图" width="1200px" @cancel="closeFlowChart">
<process-information :process-id="processId" :xml="data.xml" :currentTaskAssignee="data.currentTaskAssignee"/>
<process-information :process-id="processId" :xml="data.xml"
:currentTaskInfo="data.currentTaskInfo"
:currentTaskAssigneeNames="data.currentTaskAssigneeNames"
:currentTaskAssignees="data.currentTaskAssignees"/>
<template #footer>
<a-button type="primary" @click="closeFlowChart">关闭</a-button>
</template>
@ -112,6 +115,7 @@
let approvalData = reactive({
isCountersign: false,
isAddOrSubSign: false,
isEnd: false,
stampInfo: {
stampId: '',
password: ''
@ -198,6 +202,7 @@
callback: (args) => {
approvalData.approvedContent = args.opinion;
approvalData.nextTaskUser = args.nextTaskUser;
approvalData.isEnd=args.isEnd;
onFinish('approve');
}
});
@ -408,6 +413,7 @@
/*stampId: values.stampId,
stampPassword: values.password,*/
isOldSystem: system,
isEnd:approvalData.isEnd,
nextTaskUser: approvalData.nextTaskUser
};
}

View File

@ -482,6 +482,11 @@
const rootElementsJson = bpmnModeler.getDefinitions().rootElements;
const rootElementsFlowElementsArr = rootElementsJson[0].flowElements;
//过滤不存在元素的配置
const exitsElements=bpmnModeler.get('elementRegistry').getAll();
const exitsElementIds=exitsElements.map(x=>x.id);
json.childNodeConfig=json.childNodeConfig.filter(x=>exitsElementIds.indexOf(x.id)>-1);
if (validateProcessConfig(rootElementsFlowElementsArr, json)) {
try {
const { svg } = await bpmnModeler.saveSVG({ format: true });

View File

@ -1,6 +1,15 @@
<template>
<div style="margin:20px;">
当前流程审批人{{currentTaskAssignee.replaceAll(",","、")}}
当前流程审批人{{currentTaskAssigneeNames.replaceAll(",","、")}}
</div>
<div style="margin:20px;">
节点审批人
<div v-for="(assignees,taskKey) in currentTaskAssignees" :key="taskKey">
<span>{{assignees[0].taskName}}{{currentTaskInfo?.taskDefinitionKey==taskKey?'(当前审批节点)':''}}</span>
<span v-for="(assignee,index) in assignees" :key="index">
{{assignee.assigneeNameStr?(assignee.assigneeNameStr?.replaceAll(",","/") + (index<assignees.length-1?'':'')):('')}}
</span>
</div>
</div>
<!-- 流程信息 -->
<div class="flow-record-box">
@ -21,12 +30,16 @@
defineProps<{
xml: string;
processId: string;
currentTaskAssignee: string;
currentTaskAssignees: any;
currentTaskAssigneeNames: string;
currentTaskInfo:any;
}>(),
{
xml: '',
processId: '',
currentTaskAssignee:'无'
currentTaskAssigneeNames:'无',
currentTaskAssignees: {},
currentTaskInfo:{}
},
);
const bpmnCanvas = ref();

View File

@ -31,7 +31,9 @@ export default function () {
hasStampPassword: false,
submitLoading: false,
formAssignmentData: null,
currentTaskAssignee: '',
currentTaskAssigneeNames: '',
currentTaskAssignees:{},
currentTaskInfo:{}
});
function initProcessData(res: FlowInfo) {
data.item.id = res.schemaInfo.id;
@ -45,10 +47,12 @@ export default function () {
data.hasStamp = false;
data.hasStampPassword = false;
data.submitLoading = false;
data.currentTaskAssignee = '无';
data.currentTaskAssigneeNames = '无';
if (res.currentTaskAssigneeNames) {
data.currentTaskAssignee = res.currentTaskAssigneeNames;
data.currentTaskAssigneeNames = res.currentTaskAssigneeNames;
}
data.currentTaskAssignees=res.currentTaskAssignees;
data.currentTaskInfo=res.taskInfo;
data.xml = '';
if (res.schemaInfo.xmlContent) {
data.xml = res.schemaInfo.xmlContent;