|
@@ -169,19 +169,24 @@ const initData = async () => {
|
|
/** 保存操作 */
|
|
/** 保存操作 */
|
|
const handleSave = async () => {
|
|
const handleSave = async () => {
|
|
try {
|
|
try {
|
|
- // 保存前确保当前步骤的数据已经验证通过
|
|
|
|
- if (typeof steps[currentStep.value].validator === 'function') {
|
|
|
|
- await steps[currentStep.value].validator()
|
|
|
|
|
|
+ // 保存前确保所有步骤的数据都已经验证通过
|
|
|
|
+ for (const step of steps) {
|
|
|
|
+ if (step.validator) {
|
|
|
|
+ await step.validator()
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-
|
|
|
|
- // 如果是第三步,需要先获取最新的流程设计数据
|
|
|
|
|
|
+
|
|
|
|
+ // 如果是在第三步,需要先获取最新的流程设计数据
|
|
if (currentStep.value === 2) {
|
|
if (currentStep.value === 2) {
|
|
|
|
+ await nextTick()
|
|
const bpmnXml = processDesignRef.value?.getXmlString()
|
|
const bpmnXml = processDesignRef.value?.getXmlString()
|
|
- if (bpmnXml) {
|
|
|
|
- formData.value.bpmnXml = bpmnXml
|
|
|
|
|
|
+ // 确保有XML数据
|
|
|
|
+ if (!bpmnXml) {
|
|
|
|
+ throw new Error('请设计流程')
|
|
}
|
|
}
|
|
|
|
+ formData.value.bpmnXml = bpmnXml
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
if (formData.value.id) {
|
|
if (formData.value.id) {
|
|
await ModelApi.updateModel(formData.value)
|
|
await ModelApi.updateModel(formData.value)
|
|
message.success('修改成功')
|
|
message.success('修改成功')
|
|
@@ -193,6 +198,7 @@ const handleSave = async () => {
|
|
} catch (error) {
|
|
} catch (error) {
|
|
console.error('保存失败:', error)
|
|
console.error('保存失败:', error)
|
|
message.error(error.message || '保存失败')
|
|
message.error(error.message || '保存失败')
|
|
|
|
+ throw error
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -200,24 +206,14 @@ const handleSave = async () => {
|
|
const handleDeploy = async () => {
|
|
const handleDeploy = async () => {
|
|
try {
|
|
try {
|
|
await message.confirm('是否确认发布该流程?')
|
|
await message.confirm('是否确认发布该流程?')
|
|
- // 发布时才进行全部校验
|
|
|
|
- for (const step of steps) {
|
|
|
|
- if (step.validator) {
|
|
|
|
- await step.validator()
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- // 如果是第三步,需要先获取最新的流程设计数据
|
|
|
|
- if (currentStep.value === 2) {
|
|
|
|
- const bpmnXml = processDesignRef.value?.getXmlString()
|
|
|
|
- if (bpmnXml) {
|
|
|
|
- formData.value.bpmnXml = bpmnXml
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ // 先保存所有数据
|
|
await handleSave()
|
|
await handleSave()
|
|
|
|
+ // 发布
|
|
await ModelApi.deployModel(formData.value.id)
|
|
await ModelApi.deployModel(formData.value.id)
|
|
message.success('发布成功')
|
|
message.success('发布成功')
|
|
router.push({ name: 'BpmModel' })
|
|
router.push({ name: 'BpmModel' })
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
|
+ console.error('发布失败:', error)
|
|
if (error instanceof Error) {
|
|
if (error instanceof Error) {
|
|
// 校验失败时,跳转到对应步骤
|
|
// 校验失败时,跳转到对应步骤
|
|
const failedStep = steps.findIndex((step) => {
|
|
const failedStep = steps.findIndex((step) => {
|
|
@@ -231,6 +227,8 @@ const handleDeploy = async () => {
|
|
if (failedStep !== -1) {
|
|
if (failedStep !== -1) {
|
|
currentStep.value = failedStep
|
|
currentStep.value = failedStep
|
|
message.warning('请完善必填信息')
|
|
message.warning('请完善必填信息')
|
|
|
|
+ } else {
|
|
|
|
+ message.error(error.message || '发布失败')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|