chenrui
2025-06-06 0805c8f58834e70b2a654cfa9f54fdaeaa0ddda1
src/views/salesManagement/receiptPaymentLedger/index.vue
@@ -17,17 +17,16 @@
    <div style="display: flex">
      <div class="table_list">
        <el-table :data="tableData" border v-loading="tableLoading"
                  @selection-change="handleSelectionChange"
                  :row-key="row => row.id"
                  show-summary
                  :summary-method="summarizeMainTable"
                  @row-click = "rowClickMethod"
                  height="calc(100vh - 18.5em)">
          <el-table-column align="center" type="selection" width="55" />
          <el-table-column align="center" label="序号" type="index" width="60" />
          <el-table-column label="客户名称" prop="customerName" show-overflow-tooltip/>
          <el-table-column label="开票金额" prop="invoiceAmount" show-overflow-tooltip/>
          <el-table-column label="回款金额" prop="receiptPaymentAmount" show-overflow-tooltip/>
          <el-table-column label="未回款金额" prop="unReceiptPaymentAmount" show-overflow-tooltip/>
          <el-table-column label="开票金额(元)" prop="invoiceTotal" show-overflow-tooltip :formatter="formattedNumber"/>
          <el-table-column label="回款金额(元)" prop="receiptPaymentAmount" show-overflow-tooltip :formatter="formattedNumber"/>
          <el-table-column label="未回款金额(元)" prop="unReceiptPaymentAmount" show-overflow-tooltip :formatter="formattedNumber"/>
        </el-table>
        <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current"
                    :limit="page.size" @pagination="paginationChange" />
@@ -36,16 +35,16 @@
        <el-table :data="receiptRecord" border
                  :row-key="row => row.id"
                  show-summary
                  :summary-method="summarizeMainTable"
                  :summary-method="summarizeMainTable1"
                  height="calc(100vh - 18.5em)">
          <el-table-column align="center" type="selection" width="55" />
          <el-table-column align="center" label="序号" type="index" width="60" />
          <el-table-column label="发生日期" prop="receiptPaymentDate" show-overflow-tooltip/>
          <el-table-column label="回款金额" prop="receiptPaymentAmount" show-overflow-tooltip/>
          <el-table-column label="应收金额" prop="invoiceAmount" show-overflow-tooltip/>
          <el-table-column label="回款金额(元)" prop="receiptPaymentAmount" show-overflow-tooltip :formatter="formattedNumber"/>
          <el-table-column label="待收金额(元)" prop="noReceiptAmount" show-overflow-tooltip :formatter="formattedNumber"/>
          <el-table-column label="应收金额(元)" prop="invoiceTotal" show-overflow-tooltip :formatter="formattedNumber"/>
        </el-table>
        <pagination v-show="recordTotal > 0" :total="recordTotal" layout="total, sizes, prev, pager, next, jumper" :page="recordPage.current"
                    :limit="recordPage.size" @pagination="paginationChange" />
                    :limit="recordPage.size" @pagination="recordPaginationChange" />
      </div>
    </div>
@@ -53,19 +52,17 @@
</template>
<script setup>
import pagination from '@/components/PIMTable/Pagination.vue'
import { ref } from 'vue'
import {Search} from "@element-plus/icons-vue";
import {
  invoiceLedgerSalesAccount,
} from "../../../api/salesManagement/invoiceLedger.js";
import {
  receiptPaymentListPage
} from "../../../api/salesManagement/receiptPayment.js";
import Pagination from "../../../components/PIMTable/Pagination.vue";
const { proxy } = getCurrentInstance()
const tableData = ref([])
const receiptRecord = ref([])
const selectedRows = ref([])
const tableLoading = ref(false)
const page = reactive({
  current: 1,
@@ -83,6 +80,7 @@
    invoiceDate:''
  }
})
const customerId = ref('')
const { searchForm } = toRefs(data)
// 查询列表
/** 搜索按钮操作 */
@@ -90,9 +88,10 @@
  page.current = 1
  getList()
}
const paginationChange = ({ current, limit }) => {
  page.current = current;
  page.size = limit;
const paginationChange = (obj) => {
  console.log('paginationChange', current,limit)
  page.current = obj.page;
  page.size = obj.limit;
  getList()
}
const getList = () => {
@@ -102,50 +101,58 @@
    tableData.value = res.data.records;
    total.value = res.data.total;
    if(tableData.value.length > 0) {
      receiptPaymentList(recordPage,tableData.value[0].customerId);
      recordPage.current = 1
      customerId.value = tableData.value[0].id
      receiptPaymentList(customerId.value);
    }
  })
}
// 表格选择数据
const handleSelectionChange = (selection) => {
  selectedRows.value = selection
}
const formattedNumber = (row, column, cellValue) => {
  return parseFloat(cellValue).toFixed(2);
};
// 主表合计方法
const summarizeMainTable = (param) => {
  const { columns, data } = param;
  const sums = [];
  columns.forEach((column, index) => {
    if (index === 0) {
      sums[index] = '合计';
      return;
    }
    const prop = column.property;
    if (['invoiceAmount','receiptPaymentAmount','unReceiptPaymentAmount'].includes(prop)) {
      const values = data.map(item => Number(item[prop]));
      if (!values.every(value => isNaN(value))) {
        sums[index] = values.reduce((acc, val) => (!isNaN(val) ? acc + val : acc), 0);
      } else {
        sums[index] = '';
      }
    } else {
      sums[index] = '';
    }
  })
  return sums;
  return proxy.summarizeTable(param, ['invoiceTotal', 'receiptPaymentAmount', 'unReceiptPaymentAmount'], {
    ticketsNum: { noDecimal: true }, // 不保留小数
    futureTickets: { noDecimal: true }, // 不保留小数
  });
};
// 子表合计方法
const summarizeMainTable1 = (param) => {
  return proxy.summarizeTable(param, ['receiptPaymentAmount', 'noReceiptAmount', 'invoiceTotal'], {
    ticketsNum: { noDecimal: true }, // 不保留小数
    futureTickets: { noDecimal: true }, // 不保留小数
  });
};
const receiptPaymentList = (page,id) => {
const receiptPaymentList = (id) => {
  const param = {
    customerId:id,
    current: page.current,
    size: page.size,
    current: recordPage.current,
    size: recordPage.size,
  }
  console.log('param', param)
  receiptPaymentListPage(param).then(res => {
    receiptRecord.value = res.data.records;
    receiptRecord.total = res.data.total;
    recordTotal.value = res.data.total;
  })
}
// 汇款记录列表分页
const recordPaginationChange = (obj) => {
  console.log('recordPaginationChange', obj );
  recordPage.current = obj.page;
  recordPage.size = obj.limit;
  console.log('recordPage',recordPage)
  receiptPaymentList(customerId.value);
}
const rowClickMethod = (row) => {
  customerId.value = row.id;
  receiptPaymentList(customerId.value);
}
getList()
</script>