| | |
| | | <el-table-column label="合同金额(元)" prop="contractAmount" width="220" show-overflow-tooltip |
| | | :formatter="formattedNumber" /> |
| | | <el-table-column label="发货状态" width="140" align="center"> |
| | | <template #default="scope"> |
| | | <el-tag v-if="Number(scope.row.deliveryStatus) === 1" type="info">未发货</el-tag> |
| | | <el-tag v-else-if="Number(scope.row.deliveryStatus) === 2" type="warning">审批中</el-tag> |
| | | <el-tag v-else-if="Number(scope.row.deliveryStatus) === 3" type="danger">审批失败</el-tag> |
| | | <el-tag v-else-if="Number(scope.row.deliveryStatus) === 4" type="success">已发货</el-tag> |
| | | <el-tag v-else type="info">-</el-tag> |
| | | </template> |
| | | <template #default="scope"> |
| | | <el-tag v-if="Number(scope.row.deliveryStatus) === 1" type="info">未发货</el-tag> |
| | | <el-tag v-else-if="Number(scope.row.deliveryStatus) === 2" type="warning">审批中</el-tag> |
| | | <el-tag v-else-if="Number(scope.row.deliveryStatus) === 3" type="danger">审批不通过</el-tag> |
| | | <el-tag v-else-if="Number(scope.row.deliveryStatus) === 4" type="primary">审批通过</el-tag> |
| | | <el-tag v-else-if="Number(scope.row.deliveryStatus) === 5" type="success">已发货</el-tag> |
| | | <el-tag v-else type="info">-</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="录入人" prop="entryPersonName" width="100" show-overflow-tooltip /> |
| | | <el-table-column label="录入日期" prop="entryDate" width="120" show-overflow-tooltip /> |
| | |
| | | try { |
| | | const targets = []; |
| | | for (const ledger of selectedRows.value) { |
| | | // 台账已发货:不允许再次发货 |
| | | if (Number(ledger.deliveryStatus) === 1) continue; |
| | | |
| | | //如果已经是“审批中(2)”或“已发货(4)”,则跳过,不允许重复操作 |
| | | const status = Number(ledger.deliveryStatus); |
| | | if (status === 2 || status === 4) { |
| | | console.warn(`台账编号 ${ledger.salesContractNo} 状态为 ${status},跳过发货`); |
| | | continue; |
| | | } |
| | | |
| | | let products = []; |
| | | try { |
| | | const res = await productList({ salesLedgerId: ledger.id, type: 1 }); |
| | | products = res?.data || []; |
| | | } catch { |
| | | } catch (error) { |
| | | products = []; |
| | | console.error('请求发生异常', error); |
| | | } |
| | | for (const product of products) { |
| | | if (!canShip(product)) continue; |
| | |
| | | }); |
| | | } |
| | | } |
| | | |
| | | if (targets.length === 0) { |
| | | proxy.$modal.msgWarning("没有可发货的数据"); |
| | | return; |
| | |
| | | return; |
| | | } |
| | | |
| | | // 依次发货(避免并发下库存扣减/状态更新互相影响) |
| | | const run = async () => { |
| | | for (const item of targets) { |
| | | const salesLedgerId = item.salesLedgerId; |
| | | if (!salesLedgerId) continue; |
| | | await addShippingInfo({ |
| | | salesLedgerId, |
| | | salesLedgerProductId: item.id, |
| | | type: deliveryForm.value.type, |
| | | approveUserIds, |
| | | }); |
| | | } |
| | | }; |
| | | // 按台账维度去重,每个 salesLedgerId 只调用一次发货接口 |
| | | const uniqueLedgerIds = [...new Set(targets.map((item) => item.salesLedgerId).filter(Boolean))]; |
| | | |
| | | const run = async () => { |
| | | for (const salesLedgerId of uniqueLedgerIds) { |
| | | await addShippingInfo({ |
| | | salesLedgerId, |
| | | type: deliveryForm.value.type, |
| | | approveUserIds, |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | run() |
| | | .then(() => { |