1
This commit is contained in:
@@ -294,6 +294,16 @@ function validateDraft() {
|
||||
form.items.forEach((item, index) => {
|
||||
const itemErrors: string[] = []
|
||||
if (!Number.isInteger(item.packageCount) || item.packageCount < 1 || item.packageCount > 1_000_000) itemErrors.push('箱数必须是 1 至 1,000,000 的整数')
|
||||
const dimensions = [
|
||||
['长', item.lengthCm],
|
||||
['宽', item.widthCm],
|
||||
['高', item.heightCm],
|
||||
] as const
|
||||
for (const [label, value] of dimensions) {
|
||||
if (!Number.isFinite(value) || value <= 0) itemErrors.push(`${label}必须是大于 0 的有效数值`)
|
||||
else if (value > 999_999_999.999) itemErrors.push(`${label}超出系统允许上限 999,999,999.999 cm`)
|
||||
else if (Math.abs(value * 1000 - Math.round(value * 1000)) > 1e-6) itemErrors.push(`${label}最多保留 3 位小数`)
|
||||
}
|
||||
if (itemErrors.length) errors[item.clientKey] = itemErrors.map((message) => `第 ${index + 1} 条:${message}`)
|
||||
})
|
||||
if (general.length) errors.general = general
|
||||
@@ -310,7 +320,17 @@ function validateDraft() {
|
||||
}
|
||||
|
||||
function setOperationError(error: unknown, fallback: string) {
|
||||
const details = getApiErrorDetails(error, fallback)
|
||||
const source = getApiErrorDetails(error, fallback)
|
||||
const numericOverflow = /data truncation|out of range|numeric value|decimal|数值.*(过大|超出)|尺寸.*(过大|超限)/i.test(source.message)
|
||||
const largestItem = numericOverflow
|
||||
? [...form.items].sort((left, right) => Math.max(right.lengthCm, right.widthCm, right.heightCm) - Math.max(left.lengthCm, left.widthCm, left.heightCm))[0]
|
||||
: undefined
|
||||
const details = numericOverflow ? {
|
||||
...source,
|
||||
message: largestItem
|
||||
? `箱规尺寸或箱数超出系统允许范围,请检查箱号 ${largestItem.boxCode || largestItem.itemNo}(${formatNumber(largestItem.lengthCm)} × ${formatNumber(largestItem.widthCm)} × ${formatNumber(largestItem.heightCm)} cm)后重试`
|
||||
: '箱规尺寸或箱数超出系统允许范围,请检查长、宽、高和箱数后重试',
|
||||
} : source
|
||||
const conflict = details.message.includes('版本已变化')
|
||||
|| details.message.includes('并发修改')
|
||||
conflictDetected.value = conflict
|
||||
@@ -361,6 +381,7 @@ async function saveDraft() {
|
||||
|
||||
async function submitForReview() {
|
||||
if (!maySubmit.value || !form.measurementId) return
|
||||
if (!validateDraft()) return
|
||||
if (isDirty.value) {
|
||||
ElMessage.warning('请先保存当前修改,再提交审核')
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user