Commit eeda821b by GoldenZqqq

fix: 区分兼容bpmn设计器与simple设计器不同传参与不同处理方式

parent 3ba5cb46
...@@ -49,6 +49,33 @@ const modelData = computed({ ...@@ -49,6 +49,33 @@ const modelData = computed({
set: (val) => emit('update:modelValue', val) set: (val) => emit('update:modelValue', val)
}) })
/** 获取当前流程数据 */
const getProcessData = async () => {
try {
if (modelData.value.type === BpmModelType.BPMN) {
// BPMN设计器
if (bpmnEditorRef.value) {
const { xml } = await bpmnEditorRef.value.saveXML()
if (xml) {
return xml
}
}
} else {
// Simple设计器
if (simpleEditorRef.value) {
const flowData = await simpleEditorRef.value.getCurrentFlowData()
if (flowData) {
return flowData // 直接返回流程数据对象,不需要转换为字符串
}
}
}
return undefined
} catch (error) {
console.error('获取流程数据失败:', error)
return undefined
}
}
/** 表单校验 */ /** 表单校验 */
const validate = async () => { const validate = async () => {
try { try {
...@@ -59,10 +86,9 @@ const validate = async () => { ...@@ -59,10 +86,9 @@ const validate = async () => {
throw new Error('流程设计器未初始化') throw new Error('流程设计器未初始化')
} }
// 获取最新的XML数据 // 获取最新的流程数据
const bpmnXml = await getXmlString() const processData = await getProcessData()
console.warn(bpmnXml, 'bpmnXml') if (!processData) {
if (!bpmnXml) {
throw new Error('请设计流程') throw new Error('请设计流程')
} }
...@@ -72,52 +98,23 @@ const validate = async () => { ...@@ -72,52 +98,23 @@ const validate = async () => {
} }
} }
/** 获取当前XML字符串 */ /** 处理设计器保存成功 */
const getXmlString = async () => { const handleDesignSuccess = (data?: any) => {
try { if (data) {
if (modelData.value.type === BpmModelType.BPMN) { if (modelData.value.type === BpmModelType.BPMN) {
// BPMN设计器
if (bpmnEditorRef.value) {
const { xml } = await bpmnEditorRef.value.saveXML()
if (xml) {
// 更新本地数据
modelData.value = { modelData.value = {
...modelData.value, ...modelData.value,
bpmnXml: xml bpmnXml: data,
} simpleModel: null
}
return xml
} }
} else { } else {
// Simple设计器
if (simpleEditorRef.value) {
const flowData = await simpleEditorRef.value.getCurrentFlowData()
if (flowData) {
const jsonData = JSON.stringify(flowData)
// 更新本地数据
modelData.value = { modelData.value = {
...modelData.value, ...modelData.value,
bpmnXml: jsonData bpmnXml: null,
} simpleModel: data
return jsonData
} }
} }
} emit('success', data)
return undefined
} catch (error) {
console.error('获取流程数据失败:', error)
return undefined
}
}
/** 处理设计器保存成功 */
const handleDesignSuccess = (bpmnXml?: string) => {
if (bpmnXml) {
modelData.value = {
...modelData.value,
bpmnXml
}
emit('success', bpmnXml)
} }
} }
...@@ -128,6 +125,6 @@ const showDesigner = computed(() => { ...@@ -128,6 +125,6 @@ const showDesigner = computed(() => {
defineExpose({ defineExpose({
validate, validate,
getXmlString getProcessData
}) })
</script> </script>
...@@ -194,8 +194,8 @@ const validateAllSteps = async () => { ...@@ -194,8 +194,8 @@ const validateAllSteps = async () => {
// 流程设计校验 // 流程设计校验
await processDesignRef.value?.validate() await processDesignRef.value?.validate()
const bpmnXml = processDesignRef.value?.getXmlString() const processData = await processDesignRef.value?.getProcessData()
if (!bpmnXml) { if (!processData) {
currentStep.value = 2 currentStep.value = 2
throw new Error('请设计流程') throw new Error('请设计流程')
} }
...@@ -213,20 +213,26 @@ const handleSave = async () => { ...@@ -213,20 +213,26 @@ const handleSave = async () => {
await validateAllSteps() await validateAllSteps()
// 获取最新的流程设计数据 // 获取最新的流程设计数据
const bpmnXml = await processDesignRef.value?.getXmlString() const processData = await processDesignRef.value?.getProcessData()
if (!bpmnXml) { if (!processData) {
throw new Error('获取流程数据失败') throw new Error('获取流程数据失败')
} }
// 更新表单数据 // 更新表单数据
formData.value = { const modelData = {
...formData.value, ...formData.value
bpmnXml: bpmnXml }
if (formData.value.type === BpmModelType.BPMN) {
modelData.bpmnXml = processData
modelData.simpleModel = null
} else {
modelData.bpmnXml = null
modelData.simpleModel = processData // 直接使用流程数据对象
} }
if (formData.value.id) { if (formData.value.id) {
// 修改场景 // 修改场景
await ModelApi.updateModel(formData.value) await ModelApi.updateModel(modelData)
message.success('修改成功') message.success('修改成功')
// 询问是否发布流程 // 询问是否发布流程
try { try {
...@@ -238,7 +244,7 @@ const handleSave = async () => { ...@@ -238,7 +244,7 @@ const handleSave = async () => {
} }
} else { } else {
// 新增场景 // 新增场景
const result = await ModelApi.createModel(formData.value) const result = await ModelApi.createModel(modelData)
formData.value.id = result formData.value.id = result
message.success('新增成功') message.success('新增成功')
try { try {
...@@ -277,22 +283,28 @@ const handleDeploy = async () => { ...@@ -277,22 +283,28 @@ const handleDeploy = async () => {
await validateAllSteps() await validateAllSteps()
// 获取最新的流程设计数据 // 获取最新的流程设计数据
const bpmnXml = await processDesignRef.value?.getXmlString() const processData = await processDesignRef.value?.getProcessData()
if (!bpmnXml) { if (!processData) {
throw new Error('获取流程数据失败') throw new Error('获取流程数据失败')
} }
// 更新表单数据 // 更新表单数据
formData.value = { const modelData = {
...formData.value, ...formData.value
bpmnXml: bpmnXml }
if (formData.value.type === BpmModelType.BPMN) {
modelData.bpmnXml = processData
modelData.simpleModel = null
} else {
modelData.bpmnXml = null
modelData.simpleModel = processData // 直接使用流程数据对象
} }
// 先保存所有数据 // 先保存所有数据
if (formData.value.id) { if (formData.value.id) {
await ModelApi.updateModel(formData.value) await ModelApi.updateModel(modelData)
} else { } else {
const result = await ModelApi.createModel(formData.value) const result = await ModelApi.createModel(modelData)
formData.value.id = result.id formData.value.id = result.id
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment