Skip to content

Commit eefabf3

Browse files
committed
feat: bpmn设计器添加assignStartUserHandlerType适配Simple模式
1 parent 6ac0ee5 commit eefabf3

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
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>

0 commit comments

Comments
 (0)