1
yyb
2026-03-27 53e0b9466d3fdd3e5caf7c42e476fffdb468bc2a
src/views/salesManagement/salesLedger/index.vue
@@ -53,9 +53,11 @@
              <el-dropdown-menu>
                <el-dropdown-item command="finishedProcessCard">生产流程卡(成品)</el-dropdown-item>
                <el-dropdown-item command="salesOrder">销售订单</el-dropdown-item>
                <el-dropdown-item command="salesDeliveryNote">销售发货单</el-dropdown-item>
              </el-dropdown-menu>
            </template>
          </el-dropdown>
          <el-button type="primary" plain @click="handlePrintLabel">打印标签</el-button>
        </div>
      </div>
      <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"
@@ -891,6 +893,9 @@
   saleProcessBind,
   getSaleProcessBindInfo,
   getProcessCard,
   getSalesOrder,
   getSalesInvoices,
   getSalesLabel,
} from "@/api/salesManagement/salesLedger.js";
import { modelList, productTreeList } from "@/api/basicData/product.js";
import useFormData from "@/hooks/useFormData.js";
@@ -898,6 +903,8 @@
import { getCurrentDate } from "@/utils/index.js";
import { printFinishedProcessCard } from "./components/processCardPrint.js";
import { printSalesOrder } from "./components/salesOrderPrint.js";
import { printSalesDeliveryNote } from "./components/salesDeliveryPrint.js";
import { printSalesLabel } from "./components/salesLabelPrint.js";
// import { salesLedgerProductSetProcessFlowConfig } from "@/api/salesManagement/salesProcessFlowConfig.js";
const userStore = useUserStore();
@@ -2025,14 +2032,53 @@
};
const handlePrintCommand = async (command) => {
   if (command !== "finishedProcessCard" && command !== "salesOrder") return;
   if (selectedRows.value.length !== 1) {
   if (command !== "finishedProcessCard" && command !== "salesOrder" && command !== "salesDeliveryNote") return;
   if (command === "salesDeliveryNote") {
      if (selectedRows.value.length === 0) {
         proxy.$modal.msgWarning("请至少选择一条销售台账数据进行打印");
         return;
      }
      const customerNames = Array.from(
         new Set(selectedRows.value.map((item) => String(item?.customerName ?? "").trim()))
      );
      if (customerNames.length > 1) {
         proxy.$modal.msgWarning("仅支持相同客户名称的销售台账合并发货打印");
         return;
      }
   } else if (selectedRows.value.length !== 1) {
      proxy.$modal.msgWarning("请选择一条销售台账数据进行打印");
      return;
   }
   const selectedRow = selectedRows.value[0];
   const selectedId = selectedRow?.id;
   if (command === "salesDeliveryNote") {
      const selectedIds = selectedRows.value
         .map((item) => item?.id)
         .filter((id) => id !== null && id !== undefined && id !== "");
      if (selectedIds.length !== selectedRows.value.length) {
         proxy.$modal.msgWarning("当前选择数据存在缺少ID的记录,无法打印");
         return;
      }
      const loadingText =
         command === "salesOrder"
            ? "正在获取销售订单数据,请稍候..."
            : command === "salesDeliveryNote"
               ? "正在获取销售发货单数据,请稍候..."
               : "正在获取生产流程卡数据,请稍候...";
      proxy.$modal.loading(loadingText);
      try {
         const res = await getSalesInvoices(selectedIds);
         const salesInvoiceData = res?.data ?? {};
         printSalesDeliveryNote(salesInvoiceData, selectedRow);
      } catch (error) {
         console.error("打印销售发货单失败:", error);
         proxy.$modal.msgError("打印失败,请稍后重试");
      } finally {
         proxy.$modal.closeLoading();
      }
      return;
   }
   if (!selectedId) {
      proxy.$modal.msgWarning("当前选择数据缺少ID,无法打印");
      return;
@@ -2041,24 +2087,64 @@
   const loadingText =
      command === "salesOrder"
         ? "正在获取销售订单数据,请稍候..."
         : "正在获取生产流程卡数据,请稍候...";
         : command === "salesDeliveryNote"
            ? "正在获取销售发货单数据,请稍候..."
            : "正在获取生产流程卡数据,请稍候...";
   proxy.$modal.loading(loadingText);
   try {
      const res = await getProcessCard(selectedId);
      const processCardData = res?.data ?? {};
      if (command === "salesOrder") {
         printSalesOrder(processCardData);
         const res = await getSalesOrder(selectedId);
         const salesOrderData = res?.data ?? {};
         printSalesOrder(salesOrderData);
      } else {
         const res = await getProcessCard(selectedId);
         const processCardData = res?.data ?? {};
         printFinishedProcessCard(processCardData);
      }
   } catch (error) {
      console.error(command === "salesOrder" ? "打印销售订单失败:" : "打印生产流程卡失败:", error);
      console.error(
         command === "salesOrder"
            ? "打印销售订单失败:"
            : command === "salesDeliveryNote"
               ? "打印销售发货单失败:"
               : "打印生产流程卡失败:",
         error
      );
      proxy.$modal.msgError("打印失败,请稍后重试");
   } finally {
      proxy.$modal.closeLoading();
   }
};
const handlePrintLabel = async () => {
   if (selectedRows.value.length !== 1) {
      proxy.$modal.msgWarning("请选择一条销售台账数据进行标签打印");
      return;
   }
   const selectedId = selectedRows.value[0]?.id;
   if (!selectedId) {
      proxy.$modal.msgWarning("当前选择数据缺少ID,无法打印标签");
      return;
   }
   proxy.$modal.loading("正在获取标签数据,请稍候...");
   try {
      const res = await getSalesLabel(selectedId);
      const labelList = res?.data ?? [];
      if (!Array.isArray(labelList) || labelList.length === 0) {
         proxy.$modal.msgWarning("暂无可打印标签数据");
         return;
      }
      printSalesLabel(labelList);
   } catch (error) {
      console.error("打印标签失败:", error);
      proxy.$modal.msgError("打印标签失败,请稍后重试");
   } finally {
      proxy.$modal.closeLoading();
   }
};
const mathNum = () => {
   console.log("productForm.value", productForm.value);
   if (!productForm.value.taxInclusiveUnitPrice) {