优化
This commit is contained in:
@@ -332,6 +332,7 @@ const availableBoxesCollapsed = ref(false)
|
||||
const availableSkusCollapsed = ref(false)
|
||||
const relabelCandidatesLoading = ref(false)
|
||||
const transferInventoryCandidates = ref<RelabelInventoryCandidate[]>([])
|
||||
const transferAvailableSourceCounts = ref<Record<string, number>>({})
|
||||
const selectedTransferInventory = ref('')
|
||||
const inventoryTransfer = computed(() => props.service === 'transfer' && Boolean(selectedTransferInventory.value))
|
||||
// 来源库存发往FBA时默认贴标,私人仓和外来货保留原有选择。
|
||||
@@ -1179,6 +1180,10 @@ function printForecastCartons() {
|
||||
}
|
||||
async function submit(action: 'draft' | 'submit' = 'submit') {
|
||||
if (saving.value) return
|
||||
if (props.service === 'transfer' && inventoryTransfer.value && action === 'draft') {
|
||||
ElMessage.warning('选择库存来源后不能保存草稿,请直接提交订单')
|
||||
return
|
||||
}
|
||||
if (transferRelabelRequired.value) form.relabel = true
|
||||
const primaryWarehouse = props.service === 'relabel' ? form.sourceWarehouse : form.warehouse
|
||||
const relabelRows = labelingMode.value === 'carton' ? cartonDetailRows.value : skuRelabelRows.value
|
||||
@@ -1475,6 +1480,7 @@ async function loadWarehouses() {
|
||||
function warehouseLabel(value: MerchantWarehouse) { return `${value.warehouseName} · ${value.warehouseCode}` }
|
||||
async function loadTransferInventoryCandidates(warehouseId: string) {
|
||||
transferInventoryCandidates.value = []
|
||||
transferAvailableSourceCounts.value = {}
|
||||
if (!warehouseId) return
|
||||
relabelCandidatesLoading.value = true
|
||||
try {
|
||||
@@ -1483,6 +1489,18 @@ async function loadTransferInventoryCandidates(warehouseId: string) {
|
||||
item.sourceType === 'RETURN_CARTON' || item.sourceType === 'RETURN_PARCEL'
|
||||
? Number(item.cartonAvailablePackages || 0) > 0
|
||||
: Number(item.availablePackages || 0) > 0)
|
||||
const sourceValues = [...new Set(transferInventoryCandidates.value.map(item => {
|
||||
const returnNo = String(item.inboundOrderNo || '').trim()
|
||||
return item.sourceType === 'RETURN_CARTON' || item.sourceType === 'RETURN_PARCEL'
|
||||
? (returnNo ? `RETURN_ORDER:${returnNo}` : '') : String(item.inboundCode || '')
|
||||
}).filter(Boolean))]
|
||||
const results = await Promise.all(sourceValues.map(async (value) => {
|
||||
try {
|
||||
const cartons = await getTransferSourceCartons(warehouseId, value)
|
||||
return [value, cartons.length] as const
|
||||
} catch { return [value, 0] as const }
|
||||
}))
|
||||
transferAvailableSourceCounts.value = Object.fromEntries(results)
|
||||
} catch (error) {
|
||||
ElMessage.error(error instanceof Error ? error.message : '当前海外仓库存来源加载失败')
|
||||
} finally { relabelCandidatesLoading.value = false }
|
||||
@@ -1544,7 +1562,7 @@ const transferInventoryOptions = computed(() => {
|
||||
: inventoryQuantity(item.availablePackages)
|
||||
const current = grouped.get(value)
|
||||
if (current) current.packages += packages
|
||||
else grouped.set(value, { value, label: value.startsWith('RETURN_ORDER:') ? `退货单|${returnNo}` : `${item.inboundOrderNo || value}|${value}`, packages })
|
||||
else if ((transferAvailableSourceCounts.value[value] ?? 1) > 0) grouped.set(value, { value, label: value.startsWith('RETURN_ORDER:') ? `退货单|${returnNo}` : `${item.inboundOrderNo || value}|${value}`, packages })
|
||||
}
|
||||
return [...grouped.values()]
|
||||
})
|
||||
@@ -1850,7 +1868,7 @@ function addReturnBoxBinding(source: RelabelInventoryCandidate) {
|
||||
<div v-else-if="labelingMode === 'sku'" class="warehouse-table-scroll"><table class="warehouse-edit-table warehouse-transfer-mark-table"><thead><tr><th>仓库唛头 *</th><th>旧 SKU *</th><th>新 SKU *</th><th>换标数量(件)*</th><th>备注</th><th>操作</th></tr></thead><tbody><tr v-for="row in transferRelabelRows" :key="row.id"><td><el-input v-model="row.customerCartonMarks" placeholder="请输入仓库唛头" /></td><td><el-input :model-value="row.sku" readonly /></td><td><el-input v-model="row.newSkuCode" placeholder="请输入新 SKU" /></td><td><el-input-number v-model="row.quantity" :min="1" :precision="0" controls-position="right" placeholder="请输入箱数" /></td><td><el-input v-model="row.remark" type="textarea" :rows="2" placeholder="请输入备注" /></td><td><button type="button" class="warehouse-delete" title="删除该明细" @click="transferRelabelRows = transferRelabelRows.filter((item) => item.id !== row.id)"><Trash2 :size="16" />删除</button></td></tr><tr v-if="transferRelabelRows.length === 0"><td colspan="6"><div class="warehouse-empty">暂无绑定明细,请点击“添加 SKU 明细”</div></td></tr></tbody></table></div>
|
||||
<div v-else class="warehouse-table-scroll"><table class="warehouse-edit-table warehouse-transfer-mark-table"><thead><tr><th>仓库唛头 *</th><th>旧 SKU *</th><th>新 SKU *</th><th>换标数量(件)*</th><th>新 FBA 箱唛 *</th><th>备注</th><th>操作</th></tr></thead><tbody><tr v-for="row in transferRelabelRows" :key="row.id"><td><el-input v-model="row.customerCartonMarks" placeholder="请输入仓库唛头" /></td><td><el-input :model-value="row.sku" readonly /></td><td><el-input v-model="row.newSkuCode" placeholder="请输入新 SKU" /></td><td><el-input-number v-model="row.quantity" :min="1" :precision="0" controls-position="right" placeholder="请输入数量" /></td><td><el-input v-model="row.fbaCartonMark" placeholder="请输入新的 FBA 箱唛" /></td><td><el-input v-model="row.remark" type="textarea" :rows="2" placeholder="请输入备注" /></td><td><button type="button" class="warehouse-delete" title="删除该明细" @click="transferRelabelRows = transferRelabelRows.filter((item) => item.id !== row.id)"><Trash2 :size="16" />删除</button></td></tr><tr v-if="transferRelabelRows.length === 0"><td colspan="7"><div class="warehouse-empty">暂无绑定明细,请点击“添加 SKU 明细”</div></td></tr></tbody></table></div>
|
||||
</div>
|
||||
<div class="warehouse-submit-bar warehouse-transfer-submit-bar"><el-button v-if="mode === 'create'" native-type="button" @click="resetForm">重置</el-button><el-button v-if="props.service === 'transfer'" native-type="button" :loading="saving" @click="submit('draft')">保存草稿</el-button><el-button v-if="props.service === 'transfer'" type="primary" native-type="submit" :loading="saving">提交订单</el-button><el-button v-if="props.service !== 'transfer'" type="primary" native-type="submit" :loading="saving">提交{{ config.title }}</el-button></div>
|
||||
<div class="warehouse-submit-bar warehouse-transfer-submit-bar"><el-button v-if="mode === 'create'" native-type="button" @click="resetForm">重置</el-button><el-button v-if="props.service === 'transfer' && !inventoryTransfer" native-type="button" :loading="saving" @click="submit('draft')">保存草稿</el-button><el-button v-if="props.service === 'transfer'" type="primary" native-type="submit" :loading="saving">提交订单</el-button><el-button v-if="props.service !== 'transfer'" type="primary" native-type="submit" :loading="saving">提交{{ config.title }}</el-button></div>
|
||||
</form>
|
||||
</template>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user