2024-12-16 17:23:27 +08:00
|
|
|
<template>
|
|
|
|
<!-- BPMN设计器 -->
|
|
|
|
<template v-if="modelData.type === BpmModelType.BPMN">
|
|
|
|
<BpmModelEditor
|
|
|
|
v-if="showDesigner"
|
|
|
|
:model-id="modelData.id"
|
|
|
|
:model-key="modelData.key"
|
|
|
|
:model-name="modelData.name"
|
|
|
|
@success="handleDesignSuccess"
|
|
|
|
/>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<!-- Simple设计器 -->
|
|
|
|
<template v-else>
|
|
|
|
<SimpleModelDesign
|
|
|
|
v-if="showDesigner"
|
|
|
|
:model-id="modelData.id"
|
|
|
|
:model-key="modelData.key"
|
|
|
|
:model-name="modelData.name"
|
2024-12-30 23:43:20 +08:00
|
|
|
:start-user-ids="modelData.startUserIds"
|
2024-12-16 17:23:27 +08:00
|
|
|
@success="handleDesignSuccess"
|
|
|
|
/>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
import { BpmModelType } from '@/utils/constants'
|
|
|
|
import BpmModelEditor from '../editor/index.vue'
|
|
|
|
import SimpleModelDesign from '../../simple/SimpleModelDesign.vue'
|
|
|
|
|
|
|
|
// 创建本地数据副本
|
2025-01-14 08:46:08 +08:00
|
|
|
const modelData = defineModel<any>()
|
2024-12-16 17:23:27 +08:00
|
|
|
|
2025-01-14 08:46:08 +08:00
|
|
|
const processData = inject('processData') as Ref
|
2024-12-24 22:24:54 +08:00
|
|
|
|
2024-12-27 15:22:02 +08:00
|
|
|
/** 表单校验 */
|
|
|
|
const validate = async () => {
|
|
|
|
try {
|
|
|
|
// 获取最新的流程数据
|
2025-01-14 08:46:08 +08:00
|
|
|
if (!processData.value) {
|
2024-12-27 15:22:02 +08:00
|
|
|
throw new Error('请设计流程')
|
|
|
|
}
|
|
|
|
return true
|
|
|
|
} catch (error) {
|
|
|
|
throw error
|
|
|
|
}
|
|
|
|
}
|
2024-12-16 17:23:27 +08:00
|
|
|
/** 处理设计器保存成功 */
|
2024-12-30 15:19:30 +08:00
|
|
|
const handleDesignSuccess = async (data?: any) => {
|
2024-12-27 15:22:02 +08:00
|
|
|
if (data) {
|
2024-12-30 15:19:30 +08:00
|
|
|
// 创建新的对象以触发响应式更新
|
|
|
|
const newModelData = {
|
|
|
|
...modelData.value,
|
|
|
|
bpmnXml: modelData.value.type === BpmModelType.BPMN ? data : null,
|
|
|
|
simpleModel: modelData.value.type === BpmModelType.BPMN ? null : data
|
|
|
|
}
|
|
|
|
// 使用emit更新父组件的数据
|
|
|
|
await nextTick()
|
2025-01-14 08:46:08 +08:00
|
|
|
//更新表单的模型数据部分
|
|
|
|
modelData.value = newModelData
|
2024-12-16 17:23:27 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 是否显示设计器 */
|
|
|
|
const showDesigner = computed(() => {
|
2024-12-25 14:10:16 +08:00
|
|
|
return Boolean(modelData.value?.key && modelData.value?.name)
|
2024-12-16 17:23:27 +08:00
|
|
|
})
|
|
|
|
defineExpose({
|
2025-01-14 08:46:08 +08:00
|
|
|
validate
|
2024-12-16 17:23:27 +08:00
|
|
|
})
|
2024-12-25 14:10:16 +08:00
|
|
|
</script>
|