Skip to content

Commit 2cc9652

Browse files
YunaiVgitee-org
authored andcommitted
!586 BPM模块的一些优化
Merge pull request !586 from Lesan/feature/bpm
2 parents 12bd71e + eefabf3 commit 2cc9652

File tree

6 files changed

+105
-5
lines changed

6 files changed

+105
-5
lines changed

src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,6 +1211,20 @@
12111211
"isAttr": true
12121212
}
12131213
]
1214+
},
1215+
{
1216+
"name": "AssignStartUserHandlerType",
1217+
"superClass": ["Element"],
1218+
"meta": {
1219+
"allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"]
1220+
},
1221+
"properties": [
1222+
{
1223+
"name": "value",
1224+
"type": "Integer",
1225+
"isBody": true
1226+
}
1227+
]
12141228
}
12151229
],
12161230
"emumerations": []

src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@
5454
<template #title><Icon icon="ep:promotion" />其他</template>
5555
<element-other-config :id="elementId" />
5656
</el-collapse-item>
57+
<el-collapse-item name="customConfig" v-if="elementType.indexOf('Task') !== -1" key="customConfig">
58+
<template #title><Icon icon="ep:circle-plus-filled" />自定义配置</template>
59+
<element-custom-config :id="elementId" :type="elementType" />
60+
</el-collapse-item>
5761
</el-collapse>
5862
</div>
5963
</template>
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<template>
2+
<div class="panel-tab__content">
3+
<el-divider content-position="left">审批人与提交人为同一人时</el-divider>
4+
<el-radio-group v-model="assignStartUserHandlerType" @change="updateAssignStartUserHandlerType">
5+
<div class="flex-col">
6+
<div v-for="(item, index) in ASSIGN_START_USER_HANDLER_TYPES" :key="index">
7+
<el-radio :key="item.value" :value="item.value" :label="item.label" />
8+
</div>
9+
</div>
10+
</el-radio-group>
11+
</div>
12+
</template>
13+
14+
<script lang="ts" setup>
15+
import { ASSIGN_START_USER_HANDLER_TYPES } from '../../../../SimpleProcessDesignerV2/src/consts'
16+
17+
defineOptions({ name: 'ElementCustomConfig' })
18+
const props = defineProps({
19+
id: String,
20+
type: String
21+
})
22+
const prefix = inject('prefix')
23+
24+
const elExtensionElements = ref()
25+
const assignStartUserHandlerTypeEl = ref()
26+
const assignStartUserHandlerType = ref()
27+
const otherExtensions = ref()
28+
const bpmnElement = ref()
29+
const bpmnInstances = () => (window as any)?.bpmnInstances
30+
31+
const resetAttributesList = () => {
32+
bpmnElement.value = bpmnInstances().bpmnElement
33+
34+
// 获取元素扩展属性 或者 创建扩展属性
35+
elExtensionElements.value =
36+
bpmnElement.value.businessObject?.extensionElements ??
37+
bpmnInstances().moddle.create('bpmn:ExtensionElements', { values: [] })
38+
39+
assignStartUserHandlerTypeEl.value =
40+
elExtensionElements.value.values?.filter(
41+
(ex) => ex.$type === `${prefix}:AssignStartUserHandlerType`
42+
)?.[0] || bpmnInstances().moddle.create(`${prefix}:AssignStartUserHandlerType`, { value: 1 })
43+
assignStartUserHandlerType.value = assignStartUserHandlerTypeEl.value.value
44+
45+
// 保留剩余扩展元素,便于后面更新该元素对应属性
46+
otherExtensions.value =
47+
elExtensionElements.value.values?.filter(
48+
(ex) => ex.$type !== `${prefix}:AssignStartUserHandlerType`
49+
) ?? []
50+
51+
// 更新元素扩展属性,避免后续报错
52+
updateElementExtensions()
53+
}
54+
55+
const updateAssignStartUserHandlerType = () => {
56+
assignStartUserHandlerTypeEl.value.value = assignStartUserHandlerType.value
57+
58+
updateElementExtensions()
59+
}
60+
61+
const updateElementExtensions = (properties) => {
62+
const extensions = bpmnInstances().moddle.create('bpmn:ExtensionElements', {
63+
values: otherExtensions.value.concat([assignStartUserHandlerTypeEl.value])
64+
})
65+
bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
66+
extensionElements: extensions
67+
})
68+
}
69+
70+
watch(
71+
() => props.id,
72+
(val) => {
73+
val &&
74+
val.length &&
75+
nextTick(() => {
76+
resetAttributesList()
77+
})
78+
},
79+
{ immediate: true }
80+
)
81+
</script>

src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,9 @@ const bpmnInstances = () => (window as any)?.bpmnInstances
268268
const resetFormList = () => {
269269
bpmnELement.value = bpmnInstances().bpmnElement
270270
formKey.value = bpmnELement.value.businessObject.formKey
271-
if (formKey.value?.length > 0) {
272-
formKey.value = parseInt(formKey.value)
273-
}
271+
// if (formKey.value?.length > 0) {
272+
// formKey.value = parseInt(formKey.value)
273+
// }
274274
// 获取元素扩展属性 或者 创建扩展属性
275275
elExtensionElements.value =
276276
bpmnELement.value.businessObject.get('extensionElements') ||

src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ const resetAttributesList = () => {
8080
otherExtensionList.value = [] // 其他扩展配置
8181
bpmnElementProperties.value =
8282
// bpmnElement.value.businessObject?.extensionElements?.filter((ex) => {
83-
bpmnElement.value.businessObject?.extensionElements?.values.filter((ex) => {
83+
bpmnElement.value.businessObject?.extensionElements?.values?.filter((ex) => {
8484
if (ex.$type !== `${prefix}:Properties`) {
8585
otherExtensionList.value.push(ex)
8686
}

src/views/bpm/form/index.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,9 @@ const openForm = (id?: number) => {
143143
const toRouter: { name: string; query?: { id: number } } = {
144144
name: 'BpmFormEditor'
145145
}
146+
console.log(typeof id)
146147
// 表单新建的时候id传的是event需要排除
147-
if (typeof id === 'number') {
148+
if (typeof id === 'number' || typeof id === 'string') {
148149
toRouter.query = {
149150
id
150151
}

0 commit comments

Comments
 (0)