yyb
2 天以前 0c130536545f66d2acb8ec65df388fb8e84abbd9
添加发货状态列并优化发货逻辑
已修改1个文件
68 ■■■■■ 文件已修改
src/views/salesManagement/salesLedger/index.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue
@@ -116,13 +116,13 @@
                                    <el-tag v-else type="danger">不足</el-tag>
                </template>
              </el-table-column>
                            <el-table-column label="发货状态" width="140" align="center">
                            <!-- <el-table-column label="发货状态" width="140" align="center">
                                <template #default="scope">
                                    <el-tag :type="getShippingStatusType(scope.row)" size="small">
                                        {{ getShippingStatusText(scope.row) }}
                                    </el-tag>
                                </template>
                            </el-table-column>
                            </el-table-column> -->
                            <el-table-column label="快递公司" prop="expressCompany" show-overflow-tooltip />
                            <el-table-column label="快递单号" prop="expressNumber" show-overflow-tooltip />
              <el-table-column label="发货车牌" minWidth="100px" align="center">
@@ -172,6 +172,12 @@
        <el-table-column label="付款方式" prop="paymentMethod" show-overflow-tooltip />
        <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="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 />
        <el-table-column label="签订日期" prop="executionDate" width="120" show-overflow-tooltip />
@@ -2516,11 +2522,23 @@
 * @param row 行数据
 */
const canShip = (row) => {
    // 产品状态必须是充足(approveStatus === 1)
    if (row.approveStatus !== 1) {
        return false;
    }
    // if (row.approveStatus !== 1) {
    //     return false;
    // }
    
    // 如果后端返回了台账级发货状态(deliveryStatus)
    // 1=已发货,则禁止再次发货
    const deliveryStatus = row.deliveryStatus;
    if (
        deliveryStatus !== null &&
        deliveryStatus !== undefined &&
        String(deliveryStatus).trim() !== ""
    ) {
        if (Number(deliveryStatus) === 1) return false;
    }
    // 获取发货状态
    const shippingStatus = row.shippingStatus;
    
@@ -2538,6 +2556,34 @@
    if (selectedRows.value.length === 0) {
        proxy.$modal.msgWarning("请选择数据");
        return;
    }
    // 已发货台账:弹窗提醒,不能再次发货
    const shippedLedgers = selectedRows.value.filter((r) => Number(r.deliveryStatus) === 1);
    if (shippedLedgers.length === selectedRows.value.length) {
        try {
            await ElMessageBox.alert("所选销售台账均已发货,不能再次发货。", "提示", {
                type: "warning",
                confirmButtonText: "知道了",
            });
        } catch {
            /* 关闭弹窗 */
        }
        return;
    }
    if (shippedLedgers.length > 0) {
        try {
            await ElMessageBox.alert(
                "选中的销售台账中包含已发货记录,已发货的不能再次发货,系统将仅为未发货台账处理。",
                "提示",
                {
                    type: "warning",
                    confirmButtonText: "知道了",
                }
            );
        } catch {
            return;
        }
    }
    const customerNames = selectedRows.value.map((r) => String(r.customerName || "").trim());
@@ -2567,6 +2613,8 @@
    try {
        const targets = [];
        for (const ledger of selectedRows.value) {
            // 台账已发货:不允许再次发货
            if (Number(ledger.deliveryStatus) === 1) continue;
            let products = [];
            try {
                const res = await productList({ salesLedgerId: ledger.id, type: 1 });
@@ -2574,7 +2622,6 @@
            } catch {
                products = [];
            }
            for (const product of products) {
                if (!canShip(product)) continue;
                targets.push({
@@ -2617,6 +2664,15 @@
// 打开发货弹框
const openDeliveryForm = (row) => {
    // 如果该行已经发货(deliveryStatus=1),禁止再次发货
    if (Number(row.deliveryStatus) === 1) {
        ElMessageBox.alert("该记录已发货,不能再次发货。", "提示", {
            type: "warning",
            confirmButtonText: "知道了",
        });
        return;
    }
    // 检查是否可以发货
    if (!canShip(row)) {
        proxy.$modal.msgWarning("只有在产品状态是充足,发货状态是待发货或审核拒绝的时候才可以发货");