mirror of
https://gitee.com/hhyykk/ipms-sjy-ui.git
synced 2025-02-08 14:44:58 +08:00
fix: 区分兼容bpmn设计器与simple设计器不同传参与不同处理方式
This commit is contained in:
parent
3ba5cb460c
commit
eeda821b74
@ -49,57 +49,23 @@ const modelData = computed({
|
||||
set: (val) => emit('update:modelValue', val)
|
||||
})
|
||||
|
||||
/** 表单校验 */
|
||||
const validate = 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 () => {
|
||||
/** 获取当前流程数据 */
|
||||
const getProcessData = async () => {
|
||||
try {
|
||||
if (modelData.value.type === BpmModelType.BPMN) {
|
||||
// BPMN设计器
|
||||
if (bpmnEditorRef.value) {
|
||||
const { xml } = await bpmnEditorRef.value.saveXML()
|
||||
if (xml) {
|
||||
// 更新本地数据
|
||||
modelData.value = {
|
||||
...modelData.value,
|
||||
bpmnXml: xml
|
||||
}
|
||||
}
|
||||
return xml
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Simple设计器
|
||||
if (simpleEditorRef.value) {
|
||||
const flowData = await simpleEditorRef.value.getCurrentFlowData()
|
||||
if (flowData) {
|
||||
const jsonData = JSON.stringify(flowData)
|
||||
// 更新本地数据
|
||||
modelData.value = {
|
||||
...modelData.value,
|
||||
bpmnXml: jsonData
|
||||
}
|
||||
return jsonData
|
||||
return flowData // 直接返回流程数据对象,不需要转换为字符串
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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) => {
|
||||
if (bpmnXml) {
|
||||
const handleDesignSuccess = (data?: any) => {
|
||||
if (data) {
|
||||
if (modelData.value.type === BpmModelType.BPMN) {
|
||||
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({
|
||||
validate,
|
||||
getXmlString
|
||||
getProcessData
|
||||
})
|
||||
</script>
|
||||
|
@ -194,8 +194,8 @@ const validateAllSteps = async () => {
|
||||
|
||||
// 流程设计校验
|
||||
await processDesignRef.value?.validate()
|
||||
const bpmnXml = processDesignRef.value?.getXmlString()
|
||||
if (!bpmnXml) {
|
||||
const processData = await processDesignRef.value?.getProcessData()
|
||||
if (!processData) {
|
||||
currentStep.value = 2
|
||||
throw new Error('请设计流程')
|
||||
}
|
||||
@ -213,20 +213,26 @@ const handleSave = async () => {
|
||||
await validateAllSteps()
|
||||
|
||||
// 获取最新的流程设计数据
|
||||
const bpmnXml = await processDesignRef.value?.getXmlString()
|
||||
if (!bpmnXml) {
|
||||
const processData = await processDesignRef.value?.getProcessData()
|
||||
if (!processData) {
|
||||
throw new Error('获取流程数据失败')
|
||||
}
|
||||
|
||||
// 更新表单数据
|
||||
formData.value = {
|
||||
...formData.value,
|
||||
bpmnXml: bpmnXml
|
||||
const modelData = {
|
||||
...formData.value
|
||||
}
|
||||
if (formData.value.type === BpmModelType.BPMN) {
|
||||
modelData.bpmnXml = processData
|
||||
modelData.simpleModel = null
|
||||
} else {
|
||||
modelData.bpmnXml = null
|
||||
modelData.simpleModel = processData // 直接使用流程数据对象
|
||||
}
|
||||
|
||||
if (formData.value.id) {
|
||||
// 修改场景
|
||||
await ModelApi.updateModel(formData.value)
|
||||
await ModelApi.updateModel(modelData)
|
||||
message.success('修改成功')
|
||||
// 询问是否发布流程
|
||||
try {
|
||||
@ -238,7 +244,7 @@ const handleSave = async () => {
|
||||
}
|
||||
} else {
|
||||
// 新增场景
|
||||
const result = await ModelApi.createModel(formData.value)
|
||||
const result = await ModelApi.createModel(modelData)
|
||||
formData.value.id = result
|
||||
message.success('新增成功')
|
||||
try {
|
||||
@ -277,22 +283,28 @@ const handleDeploy = async () => {
|
||||
await validateAllSteps()
|
||||
|
||||
// 获取最新的流程设计数据
|
||||
const bpmnXml = await processDesignRef.value?.getXmlString()
|
||||
if (!bpmnXml) {
|
||||
const processData = await processDesignRef.value?.getProcessData()
|
||||
if (!processData) {
|
||||
throw new Error('获取流程数据失败')
|
||||
}
|
||||
|
||||
// 更新表单数据
|
||||
formData.value = {
|
||||
...formData.value,
|
||||
bpmnXml: bpmnXml
|
||||
const modelData = {
|
||||
...formData.value
|
||||
}
|
||||
if (formData.value.type === BpmModelType.BPMN) {
|
||||
modelData.bpmnXml = processData
|
||||
modelData.simpleModel = null
|
||||
} else {
|
||||
modelData.bpmnXml = null
|
||||
modelData.simpleModel = processData // 直接使用流程数据对象
|
||||
}
|
||||
|
||||
// 先保存所有数据
|
||||
if (formData.value.id) {
|
||||
await ModelApi.updateModel(formData.value)
|
||||
await ModelApi.updateModel(modelData)
|
||||
} else {
|
||||
const result = await ModelApi.createModel(formData.value)
|
||||
const result = await ModelApi.createModel(modelData)
|
||||
formData.value.id = result.id
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user