123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <template>
- <ContentWrap>
- <!-- 流程设计器,负责绘制流程等 -->
- <MyProcessDesigner
- key="designer"
- v-model="xmlString"
- :value="xmlString"
- v-bind="controlForm"
- keyboard
- ref="processDesigner"
- @init-finished="initModeler"
- :additionalModel="controlForm.additionalModel"
- :model="model"
- @save="save"
- :process-id="modelKey"
- :process-name="modelName"
- />
- <!-- 流程属性器,负责编辑每个流程节点的属性 -->
- <MyProcessPenal
- v-if="modeler"
- key="penal"
- :bpmnModeler="modeler"
- :prefix="controlForm.prefix"
- class="process-panel"
- :model="model"
- />
- </ContentWrap>
- </template>
- <script lang="ts" setup>
- import { MyProcessDesigner, MyProcessPenal } from '@/components/bpmnProcessDesigner/package'
- // 自定义元素选中时的弹出菜单(修改 默认任务 为 用户任务)
- import CustomContentPadProvider from '@/components/bpmnProcessDesigner/package/designer/plugins/content-pad'
- // 自定义左侧菜单(修改 默认任务 为 用户任务)
- import CustomPaletteProvider from '@/components/bpmnProcessDesigner/package/designer/plugins/palette'
- import * as ModelApi from '@/api/bpm/model'
- defineOptions({ name: 'BpmModelEditor' })
- const props = defineProps<{
- modelId?: string
- modelKey: string
- modelName: string
- value?: string
- }>()
- const emit = defineEmits(['success', 'init-finished'])
- const message = useMessage() // 国际化
- // 表单信息
- const formFields = ref<string[]>([])
- const formType = ref(20)
- provide('formFields', formFields)
- provide('formType', formType)
- // 注入流程数据
- const xmlString = inject('processData') as Ref
- // 注入模型数据
- const modelData = inject('modelData') as Ref
- const modeler = shallowRef() // BPMN Modeler
- const processDesigner = ref()
- const controlForm = ref({
- simulation: true,
- labelEditing: false,
- labelVisible: false,
- prefix: 'flowable',
- headerButtonSize: 'mini',
- additionalModel: [CustomContentPadProvider, CustomPaletteProvider]
- })
- const model = ref<ModelApi.ModelVO>() // 流程模型的信息
- /** 初始化 modeler */
- // TODO @zws:需要初始化,不然首次创建后,无法发布!相当于说,key、name 要去赋值下
- const initModeler = async (item) => {
- //先初始化模型数据
- model.value = modelData.value
- modeler.value = item
- }
- /** 添加/修改模型 */
- const save = async (bpmnXml: string) => {
- try {
- xmlString.value = bpmnXml
- emit('success', bpmnXml)
- } catch (error) {
- console.error('保存失败:', error)
- message.error('保存失败')
- }
- }
- // 在组件卸载时清理
- onBeforeUnmount(() => {
- modeler.value = null
- // 清理全局实例
- const w = window as any
- if (w.bpmnInstances) {
- w.bpmnInstances = null
- }
- })
- </script>
- <style lang="scss">
- .process-panel__container {
- position: absolute;
- top: 172px;
- right: 70px;
- }
- </style>
|