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