gaoluyang
16 小时以前 8bb204ea6b9c73727ba50e9697a6940b53e5963d
进销存升级
1.已进行发货和发货完成的销售订单限制不能删除
已修改1个文件
44 ■■■■ 文件已修改
src/views/salesManagement/salesLedger/index.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue
@@ -1362,15 +1362,47 @@
            proxy.$modal.msg("已取消");
        });
};
/** 判断销售订单下是否存在已发货/发货完成的产品(不可删除) */
const hasShippedProducts = (products) => {
    if (!products || !products.length) return false;
    return products.some((p) => {
        const status = String(p.shippingStatus || "").trim();
        // 有发货日期或车牌号视为已发货
        if (p.shippingDate || p.shippingCarNumber) return true;
        // 已进行发货、发货完成、已发货 均不可删除
        return status === "已进行发货" || status === "发货完成" || status === "已发货";
    });
};
// 删除
const handleDelete = () => {
    let ids = [];
    if (selectedRows.value.length > 0) {
        ids = selectedRows.value.map((item) => item.id);
    } else {
const handleDelete = async () => {
    if (selectedRows.value.length === 0) {
        proxy.$modal.msgWarning("请选择数据");
        return;
    }
    const ids = selectedRows.value.map((item) => item.id);
    // 检查是否有已进行发货或发货完成的销售订单,若有则不允许删除
    const cannotDeleteNames = [];
    for (const row of selectedRows.value) {
        let products = row.children && row.children.length > 0 ? row.children : null;
        if (!products) {
            try {
                const res = await productList({ salesLedgerId: row.id, type: 1 });
                products = res.data || [];
            } catch {
                products = [];
            }
        }
        if (hasShippedProducts(products)) {
            cannotDeleteNames.push(row.salesContractNo || `ID:${row.id}`);
        }
    }
    if (cannotDeleteNames.length > 0) {
        proxy.$modal.msgWarning("已进行发货或发货完成的销售订单不能删除:" + cannotDeleteNames.join("、"));
        return;
    }
    ElMessageBox.confirm("选中的内容将被删除,是否确认删除?", "导出", {
        confirmButtonText: "确认",
        cancelButtonText: "取消",
@@ -2119,7 +2151,7 @@
}
::v-deep .red {
  background-color: #f80202;
  background-color: #FAE1DE;
}
::v-deep .purple{