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

This commit is contained in:
GoldenZqqq 2024-12-27 15:22:02 +08:00
parent 3ba5cb460c
commit eeda821b74
2 changed files with 77 additions and 68 deletions

View File

@ -49,57 +49,23 @@ const modelData = computed({
set: (val) => emit('update:modelValue', val) set: (val) => emit('update:modelValue', val)
}) })
/** 表单校验 */ /** 获取当前流程数据 */
const validate = async () => { const getProcessData = async () => {
try {
//
const editorRef =
modelData.value.type === BpmModelType.BPMN ? bpmnEditorRef.value : simpleEditorRef.value
if (!editorRef) {
throw new Error('流程设计器未初始化')
}
// XML
const bpmnXml = await getXmlString()
console.warn(bpmnXml, 'bpmnXml')
if (!bpmnXml) {
throw new Error('请设计流程')
}
return true
} catch (error) {
throw error
}
}
/** 获取当前XML字符串 */
const getXmlString = async () => {
try { try {
if (modelData.value.type === BpmModelType.BPMN) { if (modelData.value.type === BpmModelType.BPMN) {
// BPMN // BPMN
if (bpmnEditorRef.value) { if (bpmnEditorRef.value) {
const { xml } = await bpmnEditorRef.value.saveXML() const { xml } = await bpmnEditorRef.value.saveXML()
if (xml) { if (xml) {
//
modelData.value = {
...modelData.value,
bpmnXml: xml
}
}
return xml return xml
} }
}
} else { } else {
// Simple // Simple
if (simpleEditorRef.value) { if (simpleEditorRef.value) {
const flowData = await simpleEditorRef.value.getCurrentFlowData() const flowData = await simpleEditorRef.value.getCurrentFlowData()
if (flowData) { if (flowData) {
const jsonData = JSON.stringify(flowData) return flowData //
//
modelData.value = {
...modelData.value,
bpmnXml: jsonData
}
return jsonData
} }
} }
} }
@ -110,14 +76,45 @@ const getXmlString = async () => {
} }
} }
/** 表单校验 */
const validate = async () => {
try {
//
const editorRef =
modelData.value.type === BpmModelType.BPMN ? bpmnEditorRef.value : simpleEditorRef.value
if (!editorRef) {
throw new Error('流程设计器未初始化')
}
//
const processData = await getProcessData()
if (!processData) {
throw new Error('请设计流程')
}
return true
} catch (error) {
throw error
}
}
/** 处理设计器保存成功 */ /** 处理设计器保存成功 */
const handleDesignSuccess = (bpmnXml?: string) => { const handleDesignSuccess = (data?: any) => {
if (bpmnXml) { if (data) {
if (modelData.value.type === BpmModelType.BPMN) {
modelData.value = { modelData.value = {
...modelData.value, ...modelData.value,
bpmnXml bpmnXml: data,
simpleModel: null
} }
emit('success', bpmnXml) } else {
modelData.value = {
...modelData.value,
bpmnXml: null,
simpleModel: data
}
}
emit('success', data)
} }
} }
@ -128,6 +125,6 @@ const showDesigner = computed(() => {
defineExpose({ defineExpose({
validate, validate,
getXmlString getProcessData
}) })
</script> </script>

View File

@ -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 () => {
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 () => {
} }
} 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 () => {
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
} }