gongchunyi
2026-09-23 54cdbd70fb672fd3ef4622fda1ce8179f8ac0798
fix: 供应商往来金额计算修改
已修改1个文件
64 ■■■■■ 文件已修改
src/views/procurementManagement/paymentLedger/index.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/paymentLedger/index.vue
@@ -79,7 +79,7 @@
                    @pagination="sonPaginationSearch">
            <template #payableAmountSlot="{ row }">
              <el-text type="danger">
                {{ formatDecimal(row.unshippedAmount) }}
                {{ formatAmount(row.unshippedAmount) }}
              </el-text>
            </template>
          </PIMTable>
@@ -97,7 +97,12 @@
    paymentRecordList,
  } from "@/api/procurementManagement/paymentLedger.js";
  import Pagination from "../../../components/PIMTable/Pagination.vue";
  import { tableAmountFormatter, formatDecimal, buildAmountSummaryFormat } from "@/utils/numberFormat";
  const AMOUNT_SCALE = 2;
  const formatAmount = value => {
    const num = Number(value);
    return Number.isNaN(num) ? "0.00" : num.toFixed(AMOUNT_SCALE);
  };
  const tableData = ref([]);
  const tableLoading = ref(false);
@@ -141,13 +146,13 @@
      label: "合同金额(元)",
      prop: "contractAmount",
      width: 200,
      formatData: params => formatDecimal(params),
      formatData: params => formatAmount(params),
    },
    {
      label: "已入库金额(元)",
      prop: "shippedAmount",
      width: 200,
      formatData: params => formatDecimal(params),
      formatData: params => formatAmount(params),
    },
    {
      label: "未入库金额(元)",
@@ -163,34 +168,23 @@
  const isShowSummarySon = ref(true);
  const { proxy } = getCurrentInstance();
  // 合计行按两位小数固定展示
  const summarizeAmounts = (param, amountProps) => {
    const sums = proxy.summarizeTable(param, amountProps);
    param.columns.forEach((column, index) => {
      if (amountProps.includes(column.property) && sums[index] !== "") {
        sums[index] = formatAmount(sums[index]);
      }
    });
    return sums;
  };
  // 主表合计方法
  const summarizeMainTable = param => {
    return proxy.summarizeTable(
      param,
      ["contractAmounts", "shippedAmount", "unshippedAmount"],
      buildAmountSummaryFormat(
        ["contractAmounts", "shippedAmount", "unshippedAmount"],
        {
          ticketsNum: { noDecimal: true },
          futureTickets: { noDecimal: true },
        }
      )
    );
    return summarizeAmounts(param, ["contractAmounts", "shippedAmount", "unshippedAmount"]);
  };
  // 子表合计方法
  const summarizeMainTable1 = param => {
    let summarizeTable = proxy.summarizeTable(
      param,
      ["contractAmount", "shippedAmount", "unshippedAmount"],
      buildAmountSummaryFormat(
        ["contractAmount", "shippedAmount", "unshippedAmount"],
        {
          ticketsNum: { noDecimal: true },
          futureTickets: { noDecimal: true },
        }
      )
    );
    return summarizeTable;
    return summarizeAmounts(param, ["contractAmount", "shippedAmount", "unshippedAmount"]);
  };
  /** 搜索按钮操作 */
  const handleQuery = () => {
@@ -202,14 +196,6 @@
    page.size = obj.limit;
    getList();
  };
  // 将未入库金额并入已入库金额,未入库金额置0
  const mergeUnshippedAmount = row => {
    if (row && row.unshippedAmount) {
      row.shippedAmount = (Number(row.shippedAmount) || 0) + (Number(row.unshippedAmount) || 0);
      row.unshippedAmount = 0;
    }
    return row;
  };
  const getList = () => {
    tableLoading.value = true;
    paymentLedgerList({
@@ -218,7 +204,7 @@
    }).then(res => {
      let result = res.data;
      tableLoading.value = false;
      tableData.value = (result.records || []).map(mergeUnshippedAmount);
      tableData.value = result.records || [];
      total.value = result.total || 0;
      if (tableData.value.length > 0) {
        currentSupplierId.value = tableData.value[0].supplierId;
@@ -239,11 +225,11 @@
        tableLoadingSon.value = false;
        let result = res.data;
        if (Array.isArray(result)) {
          tableDataSon.value = result.map(mergeUnshippedAmount);
          tableDataSon.value = result;
          sonPage.total = result.length;
          handlePagination({ page: sonPage.current, limit: sonPage.size });
        } else {
          originalTableDataSon.value = (result.records || []).map(mergeUnshippedAmount);
          originalTableDataSon.value = result.records || [];
          sonPage.total = result.total || 0;
        }
      })
@@ -268,7 +254,7 @@
    sonPage.size = pagination.limit;
    getPaymenRecordtList(currentSupplierId.value);
  };
  const formattedNumber = tableAmountFormatter;
  const formattedNumber = (row, column, cellValue) => formatAmount(cellValue);
  getList();
</script>