refactor: 重构 bpmnProcessDesigner 组件 ele => antd

This commit is contained in:
puhui999
2025-09-14 18:16:02 +08:00
parent a277f0fa03
commit 71dd9f2d88
24 changed files with 3852 additions and 4451 deletions

View File

@@ -3,112 +3,135 @@
class="process-panel__container"
:style="{ width: `${width}px`, maxHeight: '600px' }"
>
<el-collapse v-model="activeTab" v-if="isReady">
<el-collapse-item name="base">
<!-- class="panel-tab__title" -->
<Collapse v-model:activeKey="activeTab" v-if="isReady">
<CollapsePanel key="base" header="常规">
<template #title>
<Icon icon="ep:info-filled" />
常规</template
>
<Icon icon="ant-design:info-circle-filled" />
常规
</template>
<ElementBaseInfo
:id-edit-disabled="idEditDisabled"
:business-object="elementBusinessObject"
:type="elementType"
:model="model"
/>
</el-collapse-item>
<el-collapse-item
name="condition"
v-if="elementType === 'Process'"
</CollapsePanel>
<CollapsePanel
key="message"
v-if="elementType === 'Process'"
>
<template #title><Icon icon="ep:comment" />消息与信号</template>
<template #title>
<Icon icon="ant-design:message-filled" />
消息与信号
</template>
<signal-and-massage />
</el-collapse-item>
<el-collapse-item
name="condition"
v-if="conditionFormVisible"
</CollapsePanel>
<CollapsePanel
key="condition"
v-if="conditionFormVisible"
>
<template #title><Icon icon="ep:promotion" />流转条件</template>
<template #title>
<Icon icon="ant-design:swap-right" />
流转条件
</template>
<flow-condition
:business-object="elementBusinessObject"
:type="elementType"
/>
</el-collapse-item>
<el-collapse-item name="condition" v-if="formVisible" key="form">
<template #title><Icon icon="ep:list" />表单</template>
</CollapsePanel>
<CollapsePanel key="form" v-if="formVisible">
<template #title>
<Icon icon="ant-design:unordered-list-outlined" />
表单
</template>
<element-form :id="elementId" :type="elementType" />
</el-collapse-item>
<el-collapse-item
name="task"
v-if="isTaskCollapseItemShow(elementType)"
</CollapsePanel>
<CollapsePanel
key="task"
v-if="isTaskCollapseItemShow(elementType)"
>
<template #title
><Icon icon="ep:checked" />{{
getTaskCollapseItemName(elementType)
}}</template
>
<template #title>
<Icon icon="ant-design:check-circle-filled" />
{{ getTaskCollapseItemName(elementType) }}
</template>
<element-task :id="elementId" :type="elementType" />
</el-collapse-item>
<el-collapse-item
name="multiInstance"
v-if="elementType.indexOf('Task') !== -1"
</CollapsePanel>
<CollapsePanel
key="multiInstance"
v-if="elementType.indexOf('Task') !== -1"
>
<template #title><Icon icon="ep:help-filled" />多人审批方式</template>
<template #title>
<Icon icon="ant-design:question-circle-filled" />
多人审批方式
</template>
<element-multi-instance
:id="elementId"
:business-object="elementBusinessObject"
:type="elementType"
/>
</el-collapse-item>
<el-collapse-item name="listeners" key="listeners">
<template #title><Icon icon="ep:bell-filled" />执行监听器</template>
</CollapsePanel>
<CollapsePanel key="listeners">
<template #title>
<Icon icon="ant-design:bell-filled" />
执行监听器
</template>
<element-listeners :id="elementId" :type="elementType" />
</el-collapse-item>
<el-collapse-item
name="taskListeners"
v-if="elementType === 'UserTask'"
</CollapsePanel>
<CollapsePanel
key="taskListeners"
v-if="elementType === 'UserTask'"
>
<template #title><Icon icon="ep:bell-filled" />任务监听器</template>
<template #title>
<Icon icon="ant-design:bell-filled" />
任务监听器
</template>
<user-task-listeners :id="elementId" :type="elementType" />
</el-collapse-item>
<el-collapse-item name="extensions" key="extensions">
<template #title
><Icon icon="ep:circle-plus-filled" />扩展属性</template
>
</CollapsePanel>
<CollapsePanel key="extensions">
<template #title>
<Icon icon="ant-design:plus-circle-filled" />
扩展属性
</template>
<element-properties :id="elementId" :type="elementType" />
</el-collapse-item>
<el-collapse-item name="other" key="other">
<template #title><Icon icon="ep:promotion" />其他</template>
</CollapsePanel>
<CollapsePanel key="other">
<template #title>
<Icon icon="ant-design:swap-right" />
其他
</template>
<element-other-config :id="elementId" />
</el-collapse-item>
<el-collapse-item name="customConfig" key="customConfig">
<template #title><Icon icon="ep:tools" />自定义配置</template>
</CollapsePanel>
<CollapsePanel key="customConfig">
<template #title>
<Icon icon="ant-design:tool-filled" />
自定义配置
</template>
<element-custom-config
:id="elementId"
:type="elementType"
:business-object="elementBusinessObject"
/>
</el-collapse-item>
</CollapsePanel>
<!-- 新增的时间事件配置项 -->
<el-collapse-item
<CollapsePanel
key="timeEvent"
v-if="elementType === 'IntermediateCatchEvent'"
name="timeEvent"
>
<template #title><Icon icon="ep:timer" />时间事件</template>
<template #title>
<Icon icon="ant-design:clock-circle-filled" />
时间事件
</template>
<TimeEventConfig
:businessObject="bpmnElement.value?.businessObject"
:key="elementId"
/>
</el-collapse-item>
</el-collapse>
</CollapsePanel>
</Collapse>
</div>
</template>
<script lang="ts" setup>
import { Collapse, CollapsePanel } from 'ant-design-vue';
import { Icon } from '@vben/icons';
import ElementBaseInfo from './base/ElementBaseInfo.vue';
import ElementOtherConfig from './other/ElementOtherConfig.vue';
import ElementTask from './task/ElementTask.vue';
@@ -121,7 +144,7 @@ import ElementProperties from './properties/ElementProperties.vue';
import UserTaskListeners from './listeners/UserTaskListeners.vue';
import { getTaskCollapseItemName, isTaskCollapseItemShow } from './task/data';
import TimeEventConfig from './time-event-config/TimeEventConfig.vue';
import { ref, watch, onMounted } from 'vue';
import { ref, watch, onMounted, onBeforeUnmount, provide, nextTick } from 'vue';
defineOptions({ name: 'MyPropertiesPanel' });