fix: 修复第三步骤流程设计中点击保存模型xml保存无效问题

This commit is contained in:
GoldenZqqqq
2024-12-24 22:24:54 +08:00
parent ab11818ce2
commit 53841a598f
3 changed files with 59 additions and 16 deletions

View File

@ -6,6 +6,7 @@
:model-id="modelData.id"
:model-key="modelData.key"
:model-name="modelData.name"
:value="modelData.bpmnXml"
@success="handleDesignSuccess"
/>
</template>
@ -17,6 +18,7 @@
:model-id="modelData.id"
:model-key="modelData.key"
:model-name="modelData.name"
:value="modelData.bpmnXml"
@success="handleDesignSuccess"
/>
</template>
@ -44,6 +46,13 @@ const modelData = computed({
set: (val) => emit('update:modelValue', val)
})
// 监听modelValue变化,确保XML数据同步
watch(() => props.modelValue, (newVal) => {
if (newVal.bpmnXml) {
xmlString.value = newVal.bpmnXml
}
}, { immediate: true, deep: true })
/** 处理设计器保存成功 */
const handleDesignSuccess = (bpmnXml?: string) => {
if (bpmnXml) {
@ -52,8 +61,8 @@ const handleDesignSuccess = (bpmnXml?: string) => {
...modelData.value,
bpmnXml
})
emit('success', bpmnXml)
}
emit('success', bpmnXml)
}
/** 表单校验 */
@ -61,14 +70,16 @@ const validate = async () => {
if (!xmlString.value) {
throw new Error('请设计流程')
}
return true
}
/** 是否显示设计器 */
const showDesigner = computed(() => {
return Boolean(modelData.value.id || (modelData.value.key && modelData.value.name))
return Boolean(modelData.value.key && modelData.value.name)
})
defineExpose({
validate
validate,
getXmlString: () => xmlString.value
})
</script>

View File

@ -173,6 +173,19 @@ const initData = async () => {
/** 保存操作 */
const handleSave = async () => {
try {
// 保存前确保当前步骤的数据已经验证通过
if (typeof steps[currentStep.value].validator === 'function') {
await steps[currentStep.value].validator()
}
// 如果是第三步,需要先获取最新的流程设计数据
if (currentStep.value === 2) {
const bpmnXml = processDesignRef.value?.getXmlString()
if (bpmnXml) {
formData.value.bpmnXml = bpmnXml
}
}
if (formData.value.id) {
await ModelApi.updateModel(formData.value)
message.success('修改成功')
@ -183,6 +196,7 @@ const handleSave = async () => {
}
} catch (error) {
console.error('保存失败:', error)
message.error(error.message || '保存失败')
}
}
@ -196,6 +210,13 @@ const handleDeploy = async () => {
await step.validator()
}
}
// 如果是第三步,需要先获取最新的流程设计数据
if (currentStep.value === 2) {
const bpmnXml = processDesignRef.value?.getXmlString()
if (bpmnXml) {
formData.value.bpmnXml = bpmnXml
}
}
await handleSave()
await ModelApi.deployModel(formData.value.id)
message.success('发布成功')
@ -250,8 +271,6 @@ const handleDesignSuccess = (bpmnXml?: string) => {
if (bpmnXml) {
formData.value.bpmnXml = bpmnXml
}
handleSave() // 自动保存
message.success('保存成功')
}
/** 初始化 */