| | |
| | | return statusStr === "待发货" || statusStr === "审核拒绝"; |
| | | }; |
| | | |
| | | const getLedgerDisplayName = ledger => |
| | | String(ledger?.salesContractNo || "").trim() || |
| | | String(ledger?.projectName || "").trim() || |
| | | `ID:${ledger?.id ?? "-"}`; |
| | | |
| | | const validateLedgersStockedBeforeDelivery = async ledgers => { |
| | | const invalidLedgers = []; |
| | | for (const ledger of ledgers || []) { |
| | | const ledgerId = ledger?.id; |
| | | const ledgerName = getLedgerDisplayName(ledger); |
| | | if (!ledgerId) { |
| | | invalidLedgers.push(`${ledgerName}(缺少台账ID)`); |
| | | continue; |
| | | } |
| | | let products = []; |
| | | try { |
| | | const res = await productList({ salesLedgerId: ledgerId, type: 1 }); |
| | | products = Array.isArray(res?.data) ? res.data : []; |
| | | } catch (e) { |
| | | invalidLedgers.push(`${ledgerName}(明细加载失败)`); |
| | | continue; |
| | | } |
| | | const unstockedProducts = products.filter( |
| | | item => Number(item?.productStockStatus) !== 2 |
| | | ); |
| | | if (unstockedProducts.length > 0) { |
| | | invalidLedgers.push( |
| | | `${ledgerName}(未全部入库${unstockedProducts.length}条)` |
| | | ); |
| | | } |
| | | } |
| | | return invalidLedgers; |
| | | }; |
| | | |
| | | const handleBulkDelivery = async () => { |
| | | if (selectedRows.value.length === 0) { |
| | | proxy.$modal.msgWarning("请选择数据"); |
| | |
| | | |
| | | // 只允许【未发货/审批失败】进入发货流程 |
| | | const statusItem = selectedRows.value[0].deliveryStatus; |
| | | const isTrue = true; |
| | | let isTrue = true; |
| | | selectedRows.value.forEach(row => { |
| | | if (row.deliveryStatus != 1 && row.deliveryStatus != 3) { |
| | | proxy.$modal.msgWarning("仅未发货或审批失败的台账可以发货"); |
| | |
| | | } |
| | | }); |
| | | if (!isTrue) { |
| | | return; |
| | | } |
| | | |
| | | proxy.$modal.loading("正在校验明细入库状态,请稍候..."); |
| | | const invalidLedgers = await validateLedgersStockedBeforeDelivery( |
| | | selectedRows.value |
| | | ); |
| | | proxy.$modal.closeLoading(); |
| | | if (invalidLedgers.length > 0) { |
| | | try { |
| | | await ElMessageBox.alert( |
| | | `以下销售台账存在未全部入库的明细,暂不可发货:\n${invalidLedgers.join( |
| | | "\n" |
| | | )}`, |
| | | "提示", |
| | | { |
| | | type: "warning", |
| | | confirmButtonText: "知道了", |
| | | } |
| | | ); |
| | | } catch { |
| | | /* 关闭弹窗 */ |
| | | } |
| | | return; |
| | | } |
| | | |
| | |
| | | }; |
| | | |
| | | // 打开发货弹框(单条) |
| | | const openDeliveryForm = row => { |
| | | const openDeliveryForm = async row => { |
| | | // 只允许【未发货/审批失败】发货;已发货/审批中不允许 |
| | | const status = Number(row.deliveryStatus); |
| | | if (status !== 1 && status !== 3) { |
| | |
| | | return; |
| | | } |
| | | |
| | | proxy.$modal.loading("正在校验明细入库状态,请稍候..."); |
| | | const invalidLedgers = await validateLedgersStockedBeforeDelivery([row]); |
| | | proxy.$modal.closeLoading(); |
| | | if (invalidLedgers.length > 0) { |
| | | try { |
| | | await ElMessageBox.alert( |
| | | `当前销售台账存在未全部入库的明细,暂不可发货:\n${invalidLedgers[0]}`, |
| | | "提示", |
| | | { |
| | | type: "warning", |
| | | confirmButtonText: "知道了", |
| | | } |
| | | ); |
| | | } catch { |
| | | /* 关闭弹窗 */ |
| | | } |
| | | return; |
| | | } |
| | | |
| | | currentDeliveryRows.value = [row]; |
| | | deliveryForm.value = { |
| | | type: "货车", |