Skip to content

Commit 53841a5

Browse files
committed
fix: 修复第三步骤流程设计中点击保存模型xml保存无效问题
1 parent ab11818 commit 53841a5

File tree

3 files changed

+59
-16
lines changed

3 files changed

+59
-16
lines changed

src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,20 @@ const props = defineProps({
315315
}
316316
})
317317
318+
// 监听value变化,重新加载流程图
319+
watch(() => props.value, (newValue) => {
320+
if (newValue && bpmnModeler) {
321+
createNewDiagram(newValue)
322+
}
323+
}, { immediate: true })
324+
325+
// 监听processId和processName变化
326+
watch([() => props.processId, () => props.processName], ([newId, newName]) => {
327+
if (newId && newName && !props.value) {
328+
createNewDiagram(null)
329+
}
330+
}, { immediate: true })
331+
318332
provide('configGlobal', props)
319333
let bpmnModeler: any = null
320334
const defaultZoom = ref(1)
@@ -666,18 +680,17 @@ const previewProcessJson = () => {
666680
}
667681
/* ------------------------------------------------ 芋道源码 methods ------------------------------------------------------ */
668682
const processSave = async () => {
669-
// console.log(bpmnModeler, 'bpmnModelerbpmnModelerbpmnModelerbpmnModeler')
670-
const { err, xml } = await bpmnModeler.saveXML()
671-
// console.log(err, 'errerrerrerrerr')
672-
// console.log(xml, 'xmlxmlxmlxmlxml')
673-
// 读取异常时抛出异常
674-
if (err) {
675-
// this.$modal.msgError('保存模型失败,请重试!')
676-
alert('保存模型失败,请重试!')
677-
return
683+
try {
684+
const { err, xml } = await bpmnModeler.saveXML()
685+
if (err) {
686+
ElMessage.error('保存流程设计失败,请重试!')
687+
return
688+
}
689+
emit('save', xml)
690+
} catch (error) {
691+
console.error(error)
692+
ElMessage.error('保存流程设计失败,请重试!')
678693
}
679-
// 触发 save 事件
680-
emit('save', xml)
681694
}
682695
/** 高亮显示 */
683696
// const highlightedCode = (previewType, previewResult) => {

src/views/bpm/model/form/ProcessDesign.vue

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
:model-id="modelData.id"
77
:model-key="modelData.key"
88
:model-name="modelData.name"
9+
:value="modelData.bpmnXml"
910
@success="handleDesignSuccess"
1011
/>
1112
</template>
@@ -17,6 +18,7 @@
1718
:model-id="modelData.id"
1819
:model-key="modelData.key"
1920
:model-name="modelData.name"
21+
:value="modelData.bpmnXml"
2022
@success="handleDesignSuccess"
2123
/>
2224
</template>
@@ -44,6 +46,13 @@ const modelData = computed({
4446
set: (val) => emit('update:modelValue', val)
4547
})
4648
49+
// 监听modelValue变化,确保XML数据同步
50+
watch(() => props.modelValue, (newVal) => {
51+
if (newVal.bpmnXml) {
52+
xmlString.value = newVal.bpmnXml
53+
}
54+
}, { immediate: true, deep: true })
55+
4756
/** 处理设计器保存成功 */
4857
const handleDesignSuccess = (bpmnXml?: string) => {
4958
if (bpmnXml) {
@@ -52,23 +61,25 @@ const handleDesignSuccess = (bpmnXml?: string) => {
5261
...modelData.value,
5362
bpmnXml
5463
})
64+
emit('success', bpmnXml)
5565
}
56-
emit('success', bpmnXml)
5766
}
5867
5968
/** 表单校验 */
6069
const validate = async () => {
6170
if (!xmlString.value) {
6271
throw new Error('请设计流程')
6372
}
73+
return true
6474
}
6575
6676
/** 是否显示设计器 */
6777
const showDesigner = computed(() => {
68-
return Boolean(modelData.value.id || (modelData.value.key && modelData.value.name))
78+
return Boolean(modelData.value.key && modelData.value.name)
6979
})
7080
7181
defineExpose({
72-
validate
82+
validate,
83+
getXmlString: () => xmlString.value
7384
})
7485
</script>

src/views/bpm/model/form/index.vue

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,19 @@ const initData = async () => {
173173
/** 保存操作 */
174174
const handleSave = async () => {
175175
try {
176+
// 保存前确保当前步骤的数据已经验证通过
177+
if (typeof steps[currentStep.value].validator === 'function') {
178+
await steps[currentStep.value].validator()
179+
}
180+
181+
// 如果是第三步,需要先获取最新的流程设计数据
182+
if (currentStep.value === 2) {
183+
const bpmnXml = processDesignRef.value?.getXmlString()
184+
if (bpmnXml) {
185+
formData.value.bpmnXml = bpmnXml
186+
}
187+
}
188+
176189
if (formData.value.id) {
177190
await ModelApi.updateModel(formData.value)
178191
message.success('修改成功')
@@ -183,6 +196,7 @@ const handleSave = async () => {
183196
}
184197
} catch (error) {
185198
console.error('保存失败:', error)
199+
message.error(error.message || '保存失败')
186200
}
187201
}
188202
@@ -196,6 +210,13 @@ const handleDeploy = async () => {
196210
await step.validator()
197211
}
198212
}
213+
// 如果是第三步,需要先获取最新的流程设计数据
214+
if (currentStep.value === 2) {
215+
const bpmnXml = processDesignRef.value?.getXmlString()
216+
if (bpmnXml) {
217+
formData.value.bpmnXml = bpmnXml
218+
}
219+
}
199220
await handleSave()
200221
await ModelApi.deployModel(formData.value.id)
201222
message.success('发布成功')
@@ -250,8 +271,6 @@ const handleDesignSuccess = (bpmnXml?: string) => {
250271
if (bpmnXml) {
251272
formData.value.bpmnXml = bpmnXml
252273
}
253-
handleSave() // 自动保存
254-
message.success('保存成功')
255274
}
256275
257276
/** 初始化 */

0 commit comments

Comments
 (0)