fix: 修复新增流程时无法通过第三步的bpm必填校验问题

This commit is contained in:
GoldenZqqq
2024-12-25 14:33:21 +08:00
parent a82862be47
commit 36157a8f24
2 changed files with 35 additions and 33 deletions

View File

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