refactor: 优化任务折叠面板处理逻辑

This commit is contained in:
Lesan 2024-11-28 11:32:33 +08:00
parent 70c3a09f76
commit d017ab55db
3 changed files with 40 additions and 29 deletions

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="process-panel__container" :style="{ width: `${width}px`,maxHeight: '700px' }"> <div class="process-panel__container" :style="{ width: `${width}px`, maxHeight: '700px' }">
<el-collapse v-model="activeTab"> <el-collapse v-model="activeTab">
<el-collapse-item name="base"> <el-collapse-item name="base">
<!-- class="panel-tab__title" --> <!-- class="panel-tab__title" -->
@ -26,13 +26,13 @@
<template #title><Icon icon="ep:list" />表单</template> <template #title><Icon icon="ep:list" />表单</template>
<element-form :id="elementId" :type="elementType" /> <element-form :id="elementId" :type="elementType" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item name="task" v-if="elementType.indexOf('Task') !== -1" key="task"> <el-collapse-item name="task" v-if="isTaskCollapseItemShow(elementType)" key="task">
<template #title><Icon icon="ep:checked" />任务</template> <template #title><Icon icon="ep:checked" />{{ getTaskCollapseItemName(elementType) }}</template>
<element-task :id="elementId" :type="elementType" /> <element-task :id="elementId" :type="elementType" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item <el-collapse-item
name="multiInstance" name="multiInstance"
v-if="elementType.indexOf('Task') !== -1 && elementType !== 'UserTask'" v-if="elementType.indexOf('Task') !== -1"
key="multiInstance" key="multiInstance"
> >
<template #title><Icon icon="ep:help-filled" />多实例会签配置</template> <template #title><Icon icon="ep:help-filled" />多实例会签配置</template>
@ -72,6 +72,7 @@ import ElementListeners from './listeners/ElementListeners.vue'
import ElementProperties from './properties/ElementProperties.vue' import ElementProperties from './properties/ElementProperties.vue'
// import ElementForm from './form/ElementForm.vue' // import ElementForm from './form/ElementForm.vue'
import UserTaskListeners from './listeners/UserTaskListeners.vue' import UserTaskListeners from './listeners/UserTaskListeners.vue'
import { getTaskCollapseItemName,isTaskCollapseItemShow } from './task/data'
defineOptions({ name: 'MyPropertiesPanel' }) defineOptions({ name: 'MyPropertiesPanel' })

View File

@ -29,10 +29,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import UserTask from './task-components/UserTask.vue' import { installedComponent } from './data'
import ServiceTask from './task-components/ServiceTask.vue'
import ScriptTask from './task-components/ScriptTask.vue'
import ReceiveTask from './task-components/ReceiveTask.vue'
defineOptions({ name: 'ElementTaskConfig' }) defineOptions({ name: 'ElementTaskConfig' })
@ -46,15 +43,7 @@ const taskConfigForm = ref({
exclusive: false exclusive: false
}) })
const witchTaskComponent = ref() const witchTaskComponent = ref()
const installedComponent = ref({
//
// messageRef
//
UserTask: 'UserTask', //
ServiceTask: 'ServiceTask', //
ScriptTask: 'ScriptTask', //
ReceiveTask: 'ReceiveTask' //
})
const bpmnElement = ref() const bpmnElement = ref()
const bpmnInstances = () => (window as any).bpmnInstances const bpmnInstances = () => (window as any).bpmnInstances
@ -80,18 +69,8 @@ watch(
watch( watch(
() => props.type, () => props.type,
() => { () => {
// witchTaskComponent.value = installedComponent.value[props.type] if (props.type) {
if (props.type == installedComponent.value.UserTask) { witchTaskComponent.value = installedComponent[props.type].componet
witchTaskComponent.value = UserTask
}
if (props.type == installedComponent.value.ServiceTask) {
witchTaskComponent.value = ServiceTask
}
if (props.type == installedComponent.value.ScriptTask) {
witchTaskComponent.value = ScriptTask
}
if (props.type == installedComponent.value.ReceiveTask) {
witchTaskComponent.value = ReceiveTask
} }
}, },
{ immediate: true } { immediate: true }

View File

@ -0,0 +1,31 @@
import UserTask from './task-components/UserTask.vue'
import ServiceTask from './task-components/ServiceTask.vue'
import ScriptTask from './task-components/ScriptTask.vue'
import ReceiveTask from './task-components/ReceiveTask.vue'
export const installedComponent = {
UserTask: {
name: '用户任务',
componet: UserTask
},
ServiceTask: {
name: '服务任务',
componet: ServiceTask
},
ScriptTask: {
name: '脚本任务',
componet: ScriptTask
},
ReceiveTask: {
name: '接收任务',
componet: ReceiveTask
}
}
export const getTaskCollapseItemName = (elementType) => {
return installedComponent[elementType].name
}
export const isTaskCollapseItemShow = (elementType) => {
return installedComponent[elementType]
}