From e8a5718ef4c9d0e3031b555659c9ff5f61ab96ca Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期五, 16 五月 2025 14:26:50 +0800
Subject: [PATCH] 回款台账前后端联调

---
 src/api/salesManagement/invoiceLedger.js                 |    9 +++
 src/views/salesManagement/receiptPaymentLedger/index.vue |  159 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 168 insertions(+), 0 deletions(-)

diff --git a/src/api/salesManagement/invoiceLedger.js b/src/api/salesManagement/invoiceLedger.js
index a55730e..78d978f 100644
--- a/src/api/salesManagement/invoiceLedger.js
+++ b/src/api/salesManagement/invoiceLedger.js
@@ -55,3 +55,12 @@
     })
 }
 
+// 鍒嗛〉鏌ヨ
+export function invoiceLedgerSalesAccount(query) {
+    return request({
+        url: '/invoiceLedger/salesAccount',
+        method: 'get',
+        params: query
+    })
+}
+
diff --git a/src/views/salesManagement/receiptPaymentLedger/index.vue b/src/views/salesManagement/receiptPaymentLedger/index.vue
new file mode 100644
index 0000000..0fbd7ff
--- /dev/null
+++ b/src/views/salesManagement/receiptPaymentLedger/index.vue
@@ -0,0 +1,159 @@
+<template>
+  <div class="app-container">
+    <div class="search_form">
+      <div>
+        <span class="search_title">鍥炴鍙拌处</span>
+        <el-input
+            v-model="searchForm.searchText"
+            style="width: 240px"
+            placeholder="杈撳叆瀹㈡埛鍚嶇О鎼滅储"
+            @change="handleQuery"
+            clearable
+            :prefix-icon="Search"
+        />
+        <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
+      </div>
+    </div>
+    <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"
+                  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>
+        <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current"
+                    :limit="page.size" @pagination="paginationChange" />
+      </div>
+      <div class="table_list">
+        <el-table :data="receiptRecord" border
+                  :row-key="row => row.id"
+                  show-summary
+                  :summary-method="summarizeMainTable"
+                  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>
+        <pagination v-show="recordTotal > 0" :total="recordTotal" layout="total, sizes, prev, pager, next, jumper" :page="recordPage.current"
+                    :limit="recordPage.size" @pagination="paginationChange" />
+      </div>
+    </div>
+
+  </div>
+</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";
+
+const tableData = ref([])
+const receiptRecord = ref([])
+const selectedRows = ref([])
+const tableLoading = ref(false)
+const page = reactive({
+  current: 1,
+  size: 10,
+})
+const recordPage = reactive({
+  current: 1,
+  size: 10,
+})
+const total = ref(0)
+const recordTotal = ref(0)
+const data = reactive({
+  searchForm: {
+    searchText: '',
+    invoiceDate:''
+  }
+})
+const { searchForm } = toRefs(data)
+// 鏌ヨ鍒楄〃
+/** 鎼滅储鎸夐挳鎿嶄綔 */
+const handleQuery = () => {
+  page.current = 1
+  getList()
+}
+const paginationChange = ({ current, limit }) => {
+  page.current = current;
+  page.size = limit;
+  getList()
+}
+const getList = () => {
+  tableLoading.value = true
+  invoiceLedgerSalesAccount({...searchForm.value, ...page}).then(res => {
+    tableLoading.value = false
+    tableData.value = res.data.records;
+    total.value = res.data.total;
+    if(tableData.value.length > 0) {
+      receiptPaymentList(recordPage,tableData.value[0].customerId);
+    }
+  })
+}
+// 琛ㄦ牸閫夋嫨鏁版嵁
+const handleSelectionChange = (selection) => {
+  selectedRows.value = selection
+}
+// 涓昏〃鍚堣鏂规硶
+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;
+};
+
+const receiptPaymentList = (page,id) => {
+  const param = {
+    customerId:id,
+    current: page.current,
+    size: page.size,
+  }
+  receiptPaymentListPage(param).then(res => {
+    receiptRecord.value = res.data.records;
+    receiptRecord.total = res.data.total;
+  })
+}
+
+
+getList()
+</script>
+
+<style scoped lang="scss">
+
+.table_list {
+  width: 50%;
+}
+
+</style>

--
Gitblit v1.9.3