Skip to content

Commit eeda821

Browse files
committed
fix: 区分兼容bpmn设计器与simple设计器不同传参与不同处理方式
1 parent 3ba5cb4 commit eeda821

File tree

2 files changed

+76
-67
lines changed

2 files changed

+76
-67
lines changed

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

Lines changed: 42 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -49,57 +49,23 @@ const modelData = computed({
4949
set: (val) => emit('update:modelValue', val)
5050
})
5151
52-
/** 表单校验 */
53-
const validate = async () => {
54-
try {
55-
// 根据流程类型获取对应的编辑器引用
56-
const editorRef =
57-
modelData.value.type === BpmModelType.BPMN ? bpmnEditorRef.value : simpleEditorRef.value
58-
if (!editorRef) {
59-
throw new Error('流程设计器未初始化')
60-
}
61-
62-
// 获取最新的XML数据
63-
const bpmnXml = await getXmlString()
64-
console.warn(bpmnXml, 'bpmnXml')
65-
if (!bpmnXml) {
66-
throw new Error('请设计流程')
67-
}
68-
69-
return true
70-
} catch (error) {
71-
throw error
72-
}
73-
}
74-
75-
/** 获取当前XML字符串 */
76-
const getXmlString = async () => {
52+
/** 获取当前流程数据 */
53+
const getProcessData = async () => {
7754
try {
7855
if (modelData.value.type === BpmModelType.BPMN) {
7956
// BPMN设计器
8057
if (bpmnEditorRef.value) {
8158
const { xml } = await bpmnEditorRef.value.saveXML()
8259
if (xml) {
83-
// 更新本地数据
84-
modelData.value = {
85-
...modelData.value,
86-
bpmnXml: xml
87-
}
60+
return xml
8861
}
89-
return xml
9062
}
9163
} else {
9264
// Simple设计器
9365
if (simpleEditorRef.value) {
9466
const flowData = await simpleEditorRef.value.getCurrentFlowData()
9567
if (flowData) {
96-
const jsonData = JSON.stringify(flowData)
97-
// 更新本地数据
98-
modelData.value = {
99-
...modelData.value,
100-
bpmnXml: jsonData
101-
}
102-
return jsonData
68+
return flowData // 直接返回流程数据对象,不需要转换为字符串
10369
}
10470
}
10571
}
@@ -110,14 +76,45 @@ const getXmlString = async () => {
11076
}
11177
}
11278
79+
/** 表单校验 */
80+
const validate = async () => {
81+
try {
82+
// 根据流程类型获取对应的编辑器引用
83+
const editorRef =
84+
modelData.value.type === BpmModelType.BPMN ? bpmnEditorRef.value : simpleEditorRef.value
85+
if (!editorRef) {
86+
throw new Error('流程设计器未初始化')
87+
}
88+
89+
// 获取最新的流程数据
90+
const processData = await getProcessData()
91+
if (!processData) {
92+
throw new Error('请设计流程')
93+
}
94+
95+
return true
96+
} catch (error) {
97+
throw error
98+
}
99+
}
100+
113101
/** 处理设计器保存成功 */
114-
const handleDesignSuccess = (bpmnXml?: string) => {
115-
if (bpmnXml) {
116-
modelData.value = {
117-
...modelData.value,
118-
bpmnXml
102+
const handleDesignSuccess = (data?: any) => {
103+
if (data) {
104+
if (modelData.value.type === BpmModelType.BPMN) {
105+
modelData.value = {
106+
...modelData.value,
107+
bpmnXml: data,
108+
simpleModel: null
109+
}
110+
} else {
111+
modelData.value = {
112+
...modelData.value,
113+
bpmnXml: null,
114+
simpleModel: data
115+
}
119116
}
120-
emit('success', bpmnXml)
117+
emit('success', data)
121118
}
122119
}
123120
@@ -128,6 +125,6 @@ const showDesigner = computed(() => {
128125
129126
defineExpose({
130127
validate,
131-
getXmlString
128+
getProcessData
132129
})
133130
</script>

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

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ const validateAllSteps = async () => {
177177
currentStep.value = 0
178178
throw new Error('请完善基本信息')
179179
}
180-
180+
181181
// 表单设计校验
182182
await formDesignRef.value?.validate()
183183
if (formData.value.formType === 10 && !formData.value.formId) {
@@ -191,15 +191,15 @@ const validateAllSteps = async () => {
191191
currentStep.value = 1
192192
throw new Error('请完善自定义表单信息')
193193
}
194-
194+
195195
// 流程设计校验
196196
await processDesignRef.value?.validate()
197-
const bpmnXml = processDesignRef.value?.getXmlString()
198-
if (!bpmnXml) {
197+
const processData = await processDesignRef.value?.getProcessData()
198+
if (!processData) {
199199
currentStep.value = 2
200200
throw new Error('请设计流程')
201201
}
202-
202+
203203
return true
204204
} catch (error) {
205205
throw error
@@ -211,22 +211,28 @@ const handleSave = async () => {
211211
try {
212212
// 保存前校验所有步骤的数据
213213
await validateAllSteps()
214-
214+
215215
// 获取最新的流程设计数据
216-
const bpmnXml = await processDesignRef.value?.getXmlString()
217-
if (!bpmnXml) {
216+
const processData = await processDesignRef.value?.getProcessData()
217+
if (!processData) {
218218
throw new Error('获取流程数据失败')
219219
}
220220
221221
// 更新表单数据
222-
formData.value = {
223-
...formData.value,
224-
bpmnXml: bpmnXml
222+
const modelData = {
223+
...formData.value
225224
}
226-
225+
if (formData.value.type === BpmModelType.BPMN) {
226+
modelData.bpmnXml = processData
227+
modelData.simpleModel = null
228+
} else {
229+
modelData.bpmnXml = null
230+
modelData.simpleModel = processData // 直接使用流程数据对象
231+
}
232+
227233
if (formData.value.id) {
228234
// 修改场景
229-
await ModelApi.updateModel(formData.value)
235+
await ModelApi.updateModel(modelData)
230236
message.success('修改成功')
231237
// 询问是否发布流程
232238
try {
@@ -238,7 +244,7 @@ const handleSave = async () => {
238244
}
239245
} else {
240246
// 新增场景
241-
const result = await ModelApi.createModel(formData.value)
247+
const result = await ModelApi.createModel(modelData)
242248
formData.value.id = result
243249
message.success('新增成功')
244250
try {
@@ -275,24 +281,30 @@ const handleDeploy = async () => {
275281
276282
// 校验所有步骤
277283
await validateAllSteps()
278-
284+
279285
// 获取最新的流程设计数据
280-
const bpmnXml = await processDesignRef.value?.getXmlString()
281-
if (!bpmnXml) {
286+
const processData = await processDesignRef.value?.getProcessData()
287+
if (!processData) {
282288
throw new Error('获取流程数据失败')
283289
}
284290
285291
// 更新表单数据
286-
formData.value = {
287-
...formData.value,
288-
bpmnXml: bpmnXml
292+
const modelData = {
293+
...formData.value
294+
}
295+
if (formData.value.type === BpmModelType.BPMN) {
296+
modelData.bpmnXml = processData
297+
modelData.simpleModel = null
298+
} else {
299+
modelData.bpmnXml = null
300+
modelData.simpleModel = processData // 直接使用流程数据对象
289301
}
290302
291303
// 先保存所有数据
292304
if (formData.value.id) {
293-
await ModelApi.updateModel(formData.value)
305+
await ModelApi.updateModel(modelData)
294306
} else {
295-
const result = await ModelApi.createModel(formData.value)
307+
const result = await ModelApi.createModel(modelData)
296308
formData.value.id = result.id
297309
}
298310

0 commit comments

Comments
 (0)