From 761f38e975bc4f4d6973eb92996504928e1b30b0 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期五, 16 五月 2025 16:31:40 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- 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