优化
This commit is contained in:
@@ -200,8 +200,7 @@ async function submitManualEntry() {
|
||||
await loadMeasurement()
|
||||
emit('updated')
|
||||
} catch (error) {
|
||||
const details = setOperationError(error, '手动箱规录入失败,请检查后重试')
|
||||
ElMessage.error(details.message)
|
||||
setOperationError(error, '手动箱规录入失败,请检查后重试')
|
||||
} finally {
|
||||
manualEntrySubmitting.value = false
|
||||
}
|
||||
@@ -311,14 +310,26 @@ function validateDraft() {
|
||||
})
|
||||
if (general.length) errors.general = general
|
||||
validationErrors.value = errors
|
||||
const messages = Object.values(errors).flat()
|
||||
if (messages.length) {
|
||||
ElMessage.warning({
|
||||
message: messages.length === 1 ? messages[0] : `${messages[0]}(另有 ${messages.length - 1} 项)`,
|
||||
showClose: true,
|
||||
duration: 4500,
|
||||
})
|
||||
}
|
||||
return Object.keys(errors).length === 0
|
||||
}
|
||||
|
||||
function setOperationError(error: unknown, fallback: string) {
|
||||
const details = getApiErrorDetails(error, fallback)
|
||||
operationError.value = details
|
||||
conflictDetected.value = details.message.includes('版本已变化')
|
||||
const conflict = details.message.includes('版本已变化')
|
||||
|| details.message.includes('并发修改')
|
||||
conflictDetected.value = conflict
|
||||
operationError.value = conflict ? details : null
|
||||
if (!conflict) {
|
||||
ElMessage.error({ message: details.message, showClose: true, duration: 4500 })
|
||||
}
|
||||
return details
|
||||
}
|
||||
|
||||
@@ -365,8 +376,7 @@ async function saveDraft() {
|
||||
emit('saved')
|
||||
emit('changed')
|
||||
} catch (error) {
|
||||
const details = setOperationError(error, '测量草稿保存失败,请检查后重试')
|
||||
if (!conflictDetected.value) ElMessage.error(details.message)
|
||||
setOperationError(error, '测量草稿保存失败,请检查后重试')
|
||||
} finally {
|
||||
saving.value = false
|
||||
}
|
||||
@@ -400,8 +410,7 @@ async function submitForReview() {
|
||||
emit('submitted')
|
||||
emit('changed')
|
||||
} catch (error) {
|
||||
const details = setOperationError(error, '测量数据提交失败,请检查图片和称重结果后重试')
|
||||
if (!conflictDetected.value) ElMessage.error(details.message)
|
||||
setOperationError(error, '测量数据提交失败,请检查图片和称重结果后重试')
|
||||
} finally {
|
||||
submitting.value = false
|
||||
}
|
||||
@@ -505,18 +514,9 @@ defineExpose({ saveDraft, submitForReview, updateActualGrossWeight, mayMaintain,
|
||||
<ApiErrorMeta v-if="operationError" :details="operationError" />
|
||||
<el-button size="small" @click="reloadLatest">加载最新版本</el-button>
|
||||
</el-alert>
|
||||
<el-alert v-else-if="operationError" type="error" :closable="false" show-icon class="measurement-alert">
|
||||
<template #title>操作未完成</template>
|
||||
<p>{{ operationError.message }}</p>
|
||||
<ApiErrorMeta :details="operationError" />
|
||||
</el-alert>
|
||||
|
||||
<el-alert v-if="Object.keys(validationErrors).length" type="error" :closable="false" show-icon class="measurement-alert">
|
||||
<template #title>请修正测量草稿中的问题</template>
|
||||
<ul>
|
||||
<li v-for="message in Object.values(validationErrors).flat()" :key="message">{{ message }}</li>
|
||||
</ul>
|
||||
</el-alert>
|
||||
<p v-if="Object.keys(validationErrors).length" class="sr-only" role="alert">
|
||||
{{ Object.values(validationErrors).flat().join(';') }}
|
||||
</p>
|
||||
|
||||
<form class="measurement-form" @submit.prevent="saveDraft">
|
||||
<fieldset :disabled="!mayMaintain || saving">
|
||||
|
||||
Reference in New Issue
Block a user