新增入库功能至销售台账页面,支持选择入库状态并执行入库操作,提升用户交互体验
已修改2个文件
63 ■■■■■ 文件已修改
src/api/salesManagement/salesLedger.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/salesManagement/salesLedger.js
@@ -203,4 +203,14 @@
    url: `/sales/ledger/salesLabel/${salesLedgerId}`,
    method: "get",
  });
}
// 销售台账-入库
export function salesStock(id) {
  const data = id && typeof id === "object" ? id : { id };
  return request({
    url: "/sales/ledger/salesStock",
    method: "post",
    data,
  });
}
src/views/salesManagement/salesLedger/index.vue
@@ -41,6 +41,12 @@
            <el-option label="已发货" :value="4" />
          </el-select>
        </el-form-item>
        <el-form-item label="入库状态:">
          <el-select v-model="searchForm.stockStatus" placeholder="请选择" clearable style="width: 140px">
            <el-option label="未入库" :value="0" />
            <el-option label="已入库" :value="1" />
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="handleQuery"> 搜索 </el-button>
        </el-form-item>
@@ -59,6 +65,7 @@
          @confirm="handleProcessFlowSelectConfirm"
        />
            <el-space wrap>
                    <el-button type="primary" @click="handleSalesStock">入库</el-button>
                    <el-button type="primary" @click="openForm('add')">新增台账</el-button>
                    <el-button type="primary" @click="handleBulkDelivery">发货</el-button>
                    <el-button type="primary" plain @click="handleImport">导入</el-button>
@@ -201,6 +208,13 @@
                        <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="入库状态" width="120" align="center">
                <template #default="scope">
                        <el-tag v-if="Number(scope.row.stockStatus) === 0" type="info">未入库</el-tag>
                        <el-tag v-else-if="Number(scope.row.stockStatus) === 1" type="success">已入库</el-tag>
                        <el-tag v-else type="info">-</el-tag>
                    </template>
          </el-table-column>
@@ -1395,6 +1409,7 @@
    getSalesOrder,
    getSalesInvoices,
    getSalesLabel,
    salesStock,
} from "@/api/salesManagement/salesLedger.js";
import { modelList, productTreeList } from "@/api/basicData/product.js";
import useFormData from "@/hooks/useFormData.js";
@@ -1443,6 +1458,7 @@
        entryDateStart: undefined,
        entryDateEnd: undefined,
        deliveryStatus: undefined, // 发货状态:1未发货 2审批中 3审批失败 4已发货
        stockStatus: undefined, // 入库状态:0未入库 1已入库
    },
    form: {
        salesContractNo: "",
@@ -2254,6 +2270,43 @@
        });
};
// 入库(销售台账 -> 入库状态)
const handleSalesStock = async () => {
    if (selectedRows.value.length !== 1) {
        ElMessage.warning("请勾选一条台账数据进行入库");
        return;
    }
    const row = selectedRows.value[0] || {};
    const id = row?.id;
    if (!id) {
        ElMessage.warning("所选数据缺少id,无法入库");
        return;
    }
    if (Number(row.stockStatus) === 1) {
        ElMessage.info("该台账已入库,无需重复操作");
        return;
    }
    try {
        await ElMessageBox.confirm("确认对所选台账执行入库?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
        });
    } catch {
        return;
    }
    proxy?.$modal?.loading?.("正在入库,请稍候...");
    try {
        await salesStock({ id });
        proxy?.$modal?.msgSuccess?.("入库成功");
        await getList();
    } catch (e) {
        proxy?.$modal?.msgError?.("入库失败,请稍后重试");
    } finally {
        proxy?.$modal?.closeLoading?.();
    }
};
// 打开“工艺路线配置”选择弹窗(必须显式选择)
const openProcessFlowSelect = async (ledgerRow) => {
    if (!ledgerRow) return;