提交
This commit is contained in:
@@ -35,6 +35,7 @@ test('新建退货预报使用独立路由页面,编辑仍保留加宽弹框',
|
|||||||
assert.match(view, /<h2>新建退货预报<\/h2>/)
|
assert.match(view, /<h2>新建退货预报<\/h2>/)
|
||||||
assert.match(view, /:title="editingReturnNo \? '编辑退货预报' : '新建退货预报'" width="1120px"/)
|
assert.match(view, /:title="editingReturnNo \? '编辑退货预报' : '新建退货预报'" width="1120px"/)
|
||||||
assert.match(view, /return-create-form \{ display:grid; grid-template-columns:repeat\(2,minmax\(0,1fr\)\)/)
|
assert.match(view, /return-create-form \{ display:grid; grid-template-columns:repeat\(2,minmax\(0,1fr\)\)/)
|
||||||
|
assert.match(view, /class="return-create-actions"[\s\S]*?<el-button type="primary" :loading="creating" @click="submit">提交预报<\/el-button>/)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('退货列表和详情使用客户可读仓库、状态与时间', () => {
|
test('退货列表和详情使用客户可读仓库、状态与时间', () => {
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ onBeforeUnmount(clearPhotoUrls)
|
|||||||
<el-table-column label="预报数量" width="180"><template #default="{ row }"><el-input-number v-model="row.expectedQuantity" :min="1" controls-position="right" placeholder="数量" /></template></el-table-column>
|
<el-table-column label="预报数量" width="180"><template #default="{ row }"><el-input-number v-model="row.expectedQuantity" :min="1" controls-position="right" placeholder="数量" /></template></el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<footer class="return-create-actions"><el-button @click="cancelCreate">取消</el-button><el-button v-if="canCreate" type="primary" :loading="creating" @click="submit">提交预报</el-button></footer>
|
<footer class="return-create-actions"><el-button @click="cancelCreate">取消</el-button><el-button type="primary" :loading="creating" @click="submit">提交预报</el-button></footer>
|
||||||
</article>
|
</article>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
getTransferCartonLabel, submitTransfer, updateTransfer,
|
getTransferCartonLabel, submitTransfer, updateTransfer,
|
||||||
confirmRelabelCompletion, confirmTransferMeasurement, downloadRelabelCompletionPhoto, downloadTransferMeasurementPhoto, uploadRelabelShippingLabel,
|
confirmRelabelCompletion, confirmTransferMeasurement, downloadRelabelCompletionPhoto, downloadTransferMeasurementPhoto, uploadRelabelShippingLabel,
|
||||||
uploadRelabelFile,
|
uploadRelabelFile,
|
||||||
listDiscardCandidates, listDiscards, listRelabelInventoryCandidates, listRelabelHistoricalOrders, listRelabels, listTransfers, cancelDiscard,
|
listDiscards, listRelabelInventoryCandidates, listRelabelHistoricalOrders, listRelabels, listTransfers, cancelDiscard,
|
||||||
type RelabelInventoryCandidate,
|
type RelabelInventoryCandidate,
|
||||||
type RelabelCreate,
|
type RelabelCreate,
|
||||||
type RelabelDetail,
|
type RelabelDetail,
|
||||||
@@ -369,8 +369,23 @@ async function selectDiscardWarehouse() {
|
|||||||
if (!form.warehouse) return
|
if (!form.warehouse) return
|
||||||
discardCandidatesLoading.value = true
|
discardCandidatesLoading.value = true
|
||||||
try {
|
try {
|
||||||
const candidates = await listDiscardCandidates()
|
const inventory = await listRelabelInventoryCandidates(form.warehouse)
|
||||||
discardCandidates.value = candidates.filter((candidate) => String(candidate.overseasWarehouseId) === form.warehouse)
|
const grouped = new Map<string, import('../api/warehouseServices').DiscardCandidate>()
|
||||||
|
for (const candidate of inventory) {
|
||||||
|
const orderId = String(candidate.inboundOrderId || '')
|
||||||
|
if (!orderId) continue
|
||||||
|
const current = grouped.get(orderId) || { orderId, inboundCode: candidate.inboundCode || '', inboundOrderNo: candidate.inboundOrderNo || '', overseasWarehouseId: String(candidate.overseasWarehouseId || form.warehouse), overseasWarehouseName: candidate.overseasWarehouseName || '', availablePackages: 0, skus: [] }
|
||||||
|
const packages = inventoryQuantity(candidate.availablePackages)
|
||||||
|
current.availablePackages += packages
|
||||||
|
const skuCode = String(candidate.skuCode || '').trim()
|
||||||
|
if (skuCode) {
|
||||||
|
const sku = current.skus.find((item) => item.skuCode === skuCode)
|
||||||
|
if (sku) sku.availablePackages += packages
|
||||||
|
else current.skus.push({ skuCode, productName: candidate.productNameZh || '', availablePackages: packages })
|
||||||
|
}
|
||||||
|
grouped.set(orderId, current)
|
||||||
|
}
|
||||||
|
discardCandidates.value = [...grouped.values()].filter((candidate) => String(candidate.overseasWarehouseId) === form.warehouse)
|
||||||
} catch (error) { ElMessage.error(error instanceof Error ? error.message : '可废弃入库单加载失败') }
|
} catch (error) { ElMessage.error(error instanceof Error ? error.message : '可废弃入库单加载失败') }
|
||||||
finally { discardCandidatesLoading.value = false }
|
finally { discardCandidatesLoading.value = false }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ const view = readFileSync(new URL('./WarehouseServiceView.vue', import.meta.url)
|
|||||||
test('货物废弃先选择海外操作仓,再加载并选择该仓入库单', () => {
|
test('货物废弃先选择海外操作仓,再加载并选择该仓入库单', () => {
|
||||||
assert.match(view, /props\.service === 'disposal'.*操作仓.*v-model="form\.warehouse".*请选择海外仓.*@change="selectDiscardWarehouse"/s)
|
assert.match(view, /props\.service === 'disposal'.*操作仓.*v-model="form\.warehouse".*请选择海外仓.*@change="selectDiscardWarehouse"/s)
|
||||||
assert.match(view, /props\.service === 'disposal'.*选择入库单.*:disabled="!form\.warehouse".*请先选择操作仓/s)
|
assert.match(view, /props\.service === 'disposal'.*选择入库单.*:disabled="!form\.warehouse".*请先选择操作仓/s)
|
||||||
assert.match(view, /async function selectDiscardWarehouse\(\).*selectedDiscardOrderId\.value = ''.*cargoRows\.value = \[\].*listDiscardCandidates\(\).*candidate\.overseasWarehouseId.*form\.warehouse/s)
|
assert.match(view, /async function selectDiscardWarehouse\(\).*selectedDiscardOrderId\.value = ''.*cargoRows\.value = \[\].*listRelabelInventoryCandidates\(form\.warehouse\).*grouped/s)
|
||||||
assert.match(view, /\|\| !primaryWarehouse \|\| invalidCargo/)
|
assert.match(view, /\|\| !primaryWarehouse \|\| invalidCargo/)
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user