优化
This commit is contained in:
@@ -339,7 +339,7 @@ describe('UnifiedOrdersView contract', () => {
|
||||
expect(source).toContain("updateMeasurementSectionMode('outer', $event)")
|
||||
expect(source).toContain("updateMeasurementSectionMode('actual', $event)")
|
||||
expect(source).toContain('calculatedMeasurementRow(row, measurementSectionModes.customer, true)')
|
||||
expect(source).toContain('}, measurementSectionModes.outer)')
|
||||
expect(source).toContain('calculatedMeasurementRow(source, measurementSectionModes.outer)')
|
||||
expect(source).toContain('calculatedMeasurementRow(row as unknown as Record<string, unknown>, measurementSectionModes.actual)')
|
||||
expect(source).toContain('rawDimensions.map((value) => value + rule.edgeAdditionCm)')
|
||||
expect(source).toContain('matchedSpecificationCoefficient(chargeRule, calculationSource)')
|
||||
|
||||
@@ -323,14 +323,7 @@ function calculatedMeasurementRow(
|
||||
mode: MeasurementCalculationMode,
|
||||
customerSource = false,
|
||||
) {
|
||||
const calculationSource = !customerSource && mode !== 'ACTUAL'
|
||||
? {
|
||||
...source,
|
||||
lengthCm: source.outerLengthCm ?? source.lengthCm,
|
||||
widthCm: source.outerWidthCm ?? source.widthCm,
|
||||
heightCm: source.outerHeightCm ?? source.heightCm,
|
||||
}
|
||||
: source
|
||||
const calculationSource = source
|
||||
const rule = matchingDimensionRule(calculationSource)
|
||||
const rawDimensions = [Number(calculationSource.lengthCm), Number(calculationSource.widthCm), Number(calculationSource.heightCm)]
|
||||
if (!rawDimensions.every((value) => Number.isFinite(value) && value > 0)) return { ...source }
|
||||
@@ -342,9 +335,16 @@ function calculatedMeasurementRow(
|
||||
const specificationCoefficient = mode === 'MULTIPLY' && chargeRule
|
||||
? matchedSpecificationCoefficient(chargeRule, calculationSource)
|
||||
: 1
|
||||
const [lengthCm, widthCm, heightCm] = matchedDimensions.map((value) => roundedUp(value * specificationCoefficient, 3))
|
||||
const strategyDimensions = matchedDimensions.map((value) => roundedUp(value * specificationCoefficient, 3))
|
||||
const outerOverrides = [source.outerLengthCm, source.outerWidthCm, source.outerHeightCm]
|
||||
const hasOuterOverride = !customerSource && mode !== 'ACTUAL'
|
||||
&& outerOverrides.some((value) => value != null && value !== '')
|
||||
const [lengthCm, widthCm, heightCm] = strategyDimensions.map((value, index) => {
|
||||
const override = outerOverrides[index]
|
||||
return hasOuterOverride && override != null && override !== '' ? Number(override) : value
|
||||
})
|
||||
const packageCount = Number(source.packageCount)
|
||||
const unitVolumeCbm = mode === 'ADD' && rule
|
||||
const unitVolumeCbm = mode === 'ADD' && rule && !hasOuterOverride
|
||||
? Math.round((lengthCm * widthCm * heightCm / 1_000_000) * 1000) / 1000
|
||||
: roundedUp(lengthCm * widthCm * heightCm / 1_000_000, 4)
|
||||
const totalVolumeCbm = Number.isFinite(packageCount) ? roundedUp(unitVolumeCbm * packageCount, 4) : null
|
||||
@@ -367,12 +367,7 @@ const customerMeasurementRows = computed(() => (detail.value?.order.cargoes || [
|
||||
)))
|
||||
const outerMeasurementRows = computed(() => (measurementDetail.value?.items || []).map((row) => {
|
||||
const source = row as unknown as Record<string, unknown>
|
||||
return calculatedMeasurementRow({
|
||||
...source,
|
||||
lengthCm: source.outerLengthCm ?? source.lengthCm,
|
||||
widthCm: source.outerWidthCm ?? source.widthCm,
|
||||
heightCm: source.outerHeightCm ?? source.heightCm,
|
||||
}, measurementSectionModes.outer)
|
||||
return calculatedMeasurementRow(source, measurementSectionModes.outer)
|
||||
}))
|
||||
const actualMeasurementRows = computed(() => (measurementDetail.value?.items || []).map((row) => (
|
||||
calculatedMeasurementRow(row as unknown as Record<string, unknown>, measurementSectionModes.actual)
|
||||
@@ -815,9 +810,14 @@ async function saveWarehouseOuterDimensions(row: Record<string, unknown>) {
|
||||
}
|
||||
if (!summary?.inboundId || !measurement?.measurementId || measurement.version == null
|
||||
|| !can('platform:firstleg:inbound:measure:edit')) return
|
||||
const dimensions = [row.outerLengthCm, row.outerWidthCm, row.outerHeightCm].map(Number)
|
||||
if (dimensions.some((value) => !Number.isFinite(value) || value <= 0)) {
|
||||
ElMessage.warning('仓库修改外箱长、宽、高必须同时填写且大于 0')
|
||||
const dimensions = [row.outerLengthCm, row.outerWidthCm, row.outerHeightCm]
|
||||
.map((value) => value == null || value === '' ? null : Number(value))
|
||||
if (dimensions.every((value) => value == null)) {
|
||||
ElMessage.warning('请至少输入一项需要修改的外箱尺寸')
|
||||
return
|
||||
}
|
||||
if (dimensions.some((value) => value != null && (!Number.isFinite(value) || value <= 0))) {
|
||||
ElMessage.warning('仓库修改外箱尺寸必须大于 0')
|
||||
return
|
||||
}
|
||||
measurementOuterSavingId.value = String(row.id)
|
||||
@@ -1926,13 +1926,13 @@ onBeforeUnmount(() => {
|
||||
</el-table-column>
|
||||
<el-table-column label="#" prop="itemNo" min-width="70" fixed="left" />
|
||||
<el-table-column label="仓库修改外箱(长)" min-width="160">
|
||||
<template #default="{ row }"><el-input-number v-if="can('platform:firstleg:inbound:measure:edit')" v-model="row.outerLengthCm" aria-label="仓库修改外箱长" :min="0.001" :precision="3" :controls="false" placeholder="请输入" /><template v-else>{{ formatNumber(row.outerLengthCm) }}</template></template>
|
||||
<template #default="{ row }"><el-input-number v-if="can('platform:firstleg:inbound:measure:edit')" v-model="row.outerLengthCm" aria-label="仓库修改外箱长" :min="0.001" :precision="3" :controls="false" placeholder="不修改" /><template v-else>{{ formatNumber(row.outerLengthCm) }}</template></template>
|
||||
</el-table-column>
|
||||
<el-table-column label="仓库修改外箱(宽)" min-width="160">
|
||||
<template #default="{ row }"><el-input-number v-if="can('platform:firstleg:inbound:measure:edit')" v-model="row.outerWidthCm" aria-label="仓库修改外箱宽" :min="0.001" :precision="3" :controls="false" placeholder="请输入" /><template v-else>{{ formatNumber(row.outerWidthCm) }}</template></template>
|
||||
<template #default="{ row }"><el-input-number v-if="can('platform:firstleg:inbound:measure:edit')" v-model="row.outerWidthCm" aria-label="仓库修改外箱宽" :min="0.001" :precision="3" :controls="false" placeholder="不修改" /><template v-else>{{ formatNumber(row.outerWidthCm) }}</template></template>
|
||||
</el-table-column>
|
||||
<el-table-column label="仓库修改外箱(高)" min-width="160">
|
||||
<template #default="{ row }"><el-input-number v-if="can('platform:firstleg:inbound:measure:edit')" v-model="row.outerHeightCm" aria-label="仓库修改外箱高" :min="0.001" :precision="3" :controls="false" placeholder="请输入" /><template v-else>{{ formatNumber(row.outerHeightCm) }}</template></template>
|
||||
<template #default="{ row }"><el-input-number v-if="can('platform:firstleg:inbound:measure:edit')" v-model="row.outerHeightCm" aria-label="仓库修改外箱高" :min="0.001" :precision="3" :controls="false" placeholder="不修改" /><template v-else>{{ formatNumber(row.outerHeightCm) }}</template></template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="can('platform:firstleg:inbound:measure:edit')" label="仓库外箱操作" min-width="120">
|
||||
<template #default="{ row }"><el-button type="primary" plain size="small" :loading="measurementOuterSavingId === String(row.id)" :disabled="Boolean(measurementOuterSavingId)" @click="saveWarehouseOuterDimensions(row as Record<string, unknown>)">保存外箱</el-button></template>
|
||||
|
||||
Reference in New Issue
Block a user