From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/views/bpm/model/form/editor/index.vue | 124 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 124 insertions(+), 0 deletions(-)
diff --git a/src/views/bpm/model/form/editor/index.vue b/src/views/bpm/model/form/editor/index.vue
new file mode 100644
index 0000000..93c7261
--- /dev/null
+++ b/src/views/bpm/model/form/editor/index.vue
@@ -0,0 +1,124 @@
+<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"
+ />
+ <!-- 娴佺▼灞炴�у櫒锛岃礋璐g紪杈戞瘡涓祦绋嬭妭鐐圭殑灞炴�� -->
+ <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'
+import { BpmModelFormType } from '@/utils/constants'
+import * as FormApi from '@/api/bpm/form'
+
+defineOptions({ name: 'BpmModelEditor' })
+
+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(BpmModelFormType.NORMAL)
+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 */
+const initModeler = async (item: any) => {
+ // 鍏堝垵濮嬪寲妯″瀷鏁版嵁
+ 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('淇濆瓨澶辫触')
+ }
+}
+
+/** 鐩戝惉琛ㄥ崟 ID 鍙樺寲锛屽姞杞借〃鍗曟暟鎹� */
+watch(
+ () => modelData.value.formId,
+ async (newFormId) => {
+ if (newFormId && modelData.value.formType === BpmModelFormType.NORMAL) {
+ const data = await FormApi.getForm(newFormId)
+ formFields.value = data.fields
+ } else {
+ formFields.value = []
+ }
+ },
+ { immediate: true }
+)
+
+// 鍦ㄧ粍浠跺嵏杞芥椂娓呯悊
+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>
--
Gitblit v1.8.0