From eb1bbfb7e6f3a1895b606d1a9a261928ac841f33 Mon Sep 17 00:00:00 2001 From: 曹睿 <360930172@qq.com> Date: 星期三, 18 六月 2025 17:06:43 +0800 Subject: [PATCH] feat: 添加设备台账页面 --- src/views/salesManagement/receiptPaymentLedger/index.vue | 316 ++++++++++++++++++++++++++++++++++------------------ 1 files changed, 207 insertions(+), 109 deletions(-) diff --git a/src/views/salesManagement/receiptPaymentLedger/index.vue b/src/views/salesManagement/receiptPaymentLedger/index.vue index 603e734..220594b 100644 --- a/src/views/salesManagement/receiptPaymentLedger/index.vue +++ b/src/views/salesManagement/receiptPaymentLedger/index.vue @@ -2,164 +2,262 @@ <div class="app-container"> <div class="search_form"> <div> - <span class="search_title">鍥炴鍙拌处</span> + <span class="search_title">瀹㈡埛鍚嶇О锛�</span> <el-input - v-model="searchForm.searchText" - style="width: 240px" - placeholder="杈撳叆瀹㈡埛鍚嶇О鎼滅储" - @change="handleQuery" - clearable - :prefix-icon="Search" + 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> + <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" - :row-key="row => row.id" - show-summary - :summary-method="summarizeMainTable" - @row-click = "rowClickMethod" - height="calc(100vh - 18.5em)"> - <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 + :data="tableData" + border + v-loading="tableLoading" + :row-key="(row) => row.id" + show-summary + :summary-method="summarizeMainTable" + @row-click="rowClickMethod" + height="calc(100vh - 18.5em)" + > + <el-table-column + align="center" + label="搴忓彿" + type="index" + width="60" + /> + <el-table-column + label="瀹㈡埛鍚嶇О" + prop="customerName" + 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 + > + <template #default="{ row, column }"> + <el-text type="danger"> + {{ formattedNumber(row, column, row.unReceiptPaymentAmount) }} + </el-text> + </template> + </el-table-column> </el-table> - <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current" - :limit="page.size" @pagination="paginationChange" /> + <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" 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 + :data="receiptRecord" + border + :row-key="(row) => row.id" + show-summary + :summary-method="summarizeMainTable1" + height="calc(100vh - 18.5em)" + > + <el-table-column + align="center" + label="搴忓彿" + type="index" + width="60" + /> + <el-table-column + label="鍙戠敓鏃ユ湡" + prop="happenTime" + show-overflow-tooltip + /> + <el-table-column + label="寮�绁ㄩ噾棰�(鍏�)" + prop="invoiceAmount" + show-overflow-tooltip + :formatter="formattedNumber" + /> + <el-table-column + label="鍥炴閲戦(鍏�)" + prop="receiptAmount" + show-overflow-tooltip + :formatter="formattedNumber" + /> + <el-table-column + label="搴旀敹閲戦(鍏�)" + prop="unReceiptAmount" + show-overflow-tooltip + > + <template #default="{ row, column }"> + <el-text type="danger"> + {{ formattedNumber(row, column, row.unReceiptAmount) }} + </el-text> + </template> + </el-table-column> </el-table> - <pagination v-show="recordTotal > 0" :total="recordTotal" layout="total, sizes, prev, pager, next, jumper" :page="recordPage.current" - :limit="recordPage.size" @pagination="recordPaginationChange" /> + <pagination + v-show="recordTotal > 0" + :total="recordTotal" + layout="total, sizes, prev, pager, next, jumper" + :page="recordPage.current" + :limit="recordPage.size" + @pagination="recordPaginationChange" + /> </div> </div> - </div> </template> <script setup> -import { ref } from 'vue' -import { - invoiceLedgerSalesAccount, -} from "../../../api/salesManagement/invoiceLedger.js"; -import { - receiptPaymentListPage -} from "../../../api/salesManagement/receiptPayment.js"; - -const tableData = ref([]) -const receiptRecord = ref([]) -const tableLoading = ref(false) +import { ref } from "vue"; +import { invoiceLedgerSalesAccount } from "../../../api/salesManagement/invoiceLedger.js"; +import { customerInteractions } from "../../../api/salesManagement/receiptPayment.js"; +import Pagination from "../../../components/PIMTable/Pagination.vue"; +const { proxy } = getCurrentInstance(); +const tableData = ref([]); +const receiptRecord = ref([]); +const tableLoading = ref(false); const page = reactive({ current: 1, - size: 10, -}) + size: 100, +}); const recordPage = reactive({ current: 1, - size: 10, -}) -const total = ref(0) -const recordTotal = ref(0) + size: 100, +}); +const total = ref(0); +const recordTotal = ref(0); const data = reactive({ searchForm: { - searchText: '', - invoiceDate:'' - } -}) -const customerId = ref('') -const { searchForm } = toRefs(data) + searchText: "", + invoiceDate: "", + }, +}); +const customerId = ref(""); +const { searchForm } = toRefs(data); +const originReceiptRecord = ref([]); // 鏌ヨ鍒楄〃 /** 鎼滅储鎸夐挳鎿嶄綔 */ const handleQuery = () => { - page.current = 1 - getList() -} -const paginationChange = ({ current, limit }) => { - page.current = current; - page.size = limit; - getList() -} + page.current = 1; + getList(); +}; +const paginationChange = (obj) => { + console.log("paginationChange", current, limit); + page.current = obj.page; + page.size = obj.limit; + getList(); +}; const getList = () => { - tableLoading.value = true - invoiceLedgerSalesAccount({...searchForm.value, ...page}).then(res => { - tableLoading.value = false + 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) { - recordPage.current = 1 - customerId.value = tableData.value[0].customerId + if (tableData.value.length > 0) { + recordPage.current = 1; + customerId.value = tableData.value[0].id; receiptPaymentList(customerId.value); } - }) -} + }); +}; +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; + return proxy.summarizeTable( + param, + ["invoiceTotal", "receiptPaymentAmount", "unReceiptPaymentAmount"], + { + ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� + futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� } - 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] = ''; + ); +}; +// 瀛愯〃鍚堣鏂规硶 +const summarizeMainTable1 = (param) => { + var summarizeTable = proxy.summarizeTable( + param, + ["invoiceAmount", "receiptAmount", "unReceiptAmount"], + { + ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� + futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� } - }) - return sums; + ); + // 鍙栨渶鍚庝竴琛屾暟鎹�; + // if (receiptRecord.value?.length > 0) { + // const index = tableData.value.findIndex( + // (item) => item.id == customerId.value + // ); + // summarizeTable[summarizeTable.length - 1] = + // tableData.value[index].unReceiptPaymentAmount.toFixed(2); + // } else { + // summarizeTable[summarizeTable.length - 1] = 0.0; + // } + // const sb = tableData.findIndex((item) => item.id == customerId.value); + // console.log(sb); + return summarizeTable; }; const receiptPaymentList = (id) => { const param = { - customerId:id, - current: page.current, - size: page.size, - } - receiptPaymentListPage(param).then(res => { - receiptRecord.value = res.data.records; - recordTotal.value = res.data.total; - }) -} + customerId: id, + }; + console.log("param", param); + customerInteractions(param).then((res) => { + originReceiptRecord.value = res.data; + handlePagination({ page: 1, limit: recordPage.size }); + recordTotal.value = res.data.length; + }); +}; // 姹囨璁板綍鍒楄〃鍒嗛〉 -const recordPaginationChange = (currentPage, pageSize) => { - recordPage.current = currentPage; - recordPage.size = pageSize; - receiptPaymentList(customerId.value); -} +const recordPaginationChange = (pagination) => { + handlePagination(pagination); +}; const rowClickMethod = (row) => { - customerId.value = row.customerId; + customerId.value = row.id; receiptPaymentList(customerId.value); -} +}; +const handlePagination = ({ page, limit }) => { + recordPage.current = page; + recordPage.size = limit; -getList() + const start = (page - 1) * limit; + const end = start + limit; + + receiptRecord.value = originReceiptRecord.value.slice(start, end); +}; + +getList(); </script> <style scoped lang="scss"> - .table_list { width: 50%; } - </style> -- Gitblit v1.9.3