From 6e30fb16e72db22a119285cb5b757b7a5e1b2206 Mon Sep 17 00:00:00 2001 From: 曹睿 <360930172@qq.com> Date: 星期三, 18 六月 2025 16:35:14 +0800 Subject: [PATCH] fix: 修复之前剩下的要求 --- src/views/procurementManagement/procurementInvoiceLedger/index.vue | 401 +++++++++++++++++++++----------------------------------- 1 files changed, 151 insertions(+), 250 deletions(-) diff --git a/src/views/procurementManagement/procurementInvoiceLedger/index.vue b/src/views/procurementManagement/procurementInvoiceLedger/index.vue index 6ae4766..4d5e139 100644 --- a/src/views/procurementManagement/procurementInvoiceLedger/index.vue +++ b/src/views/procurementManagement/procurementInvoiceLedger/index.vue @@ -1,274 +1,184 @@ <template> <div class="app-container"> - <div class="search_form"> - <div> - <span class="search_title">閲囪喘鍚堝悓鍙凤細</span> + <el-form :model="filters" :inline="true"> + <el-form-item label="閲囪喘鍚堝悓鍙�"> <el-input - v-model="searchForm.purchaseContractNumber" + v-model="filters.purchaseContractNumber" style="width: 240px" placeholder="璇疯緭鍏�" - @change="handleQuery" clearable :prefix-icon="Search" + @change="getTableData" /> - <span class="search_title" style="margin-left: 10px">渚涘簲鍟嗭細</span> + </el-form-item> + <el-form-item label="渚涘簲鍟�"> <el-input - v-model="searchForm.supplierName" + v-model="filters.supplierName" style="width: 240px" placeholder="璇疯緭鍏�" - @change="handleQuery" clearable :prefix-icon="Search" + @change="getTableData" /> - <span class="search_title" style="margin-left: 10px">鏉ョエ鏃ユ湡锛�</span> + </el-form-item> + <el-form-item label="鏉ョエ鏃ユ湡"> <el-date-picker style="width: 240px" - v-model="searchForm.issueDate" + v-model="filters.createdAt" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange" start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" clearable - @change="changeDateRange" - @clear="clearRange" + @change="getTableData" /> - <el-button type="primary" @click="handleQuery" style="margin-left: 10px" - >鎼滅储</el-button - > - </div> - <div> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="getTableData">鎼滅储</el-button> + <el-button @click="resetFilters"> 閲嶇疆 </el-button> <el-button @click="handleOut">瀵煎嚭</el-button> - </div> - </div> + </el-form-item> + </el-form> <div class="table_list"> - <el-table - :data="tableData" - border - v-loading="tableLoading" - :expand-row-keys="expandedRowKeys" - :row-key="(row) => row.id" - show-summary - :summary-method="summarizeMainTable" - @expand-change="expandChange" - height="calc(100vh - 18.5em)" + <PIMTable + :column="columns" + :tableLoading="loading" + :tableData="dataList" + :isSelection="true" + :page="{ + current: pagination.currentPage, + size: pagination.pageSize, + total: pagination.total, + }" + :handleSelectionChange="handleSelectionChange" + @pagination="onCurrentChange" > - <el-table-column align="center" label="搴忓彿" type="index" width="55" /> - <el-table-column type="expand"> - <template #default="props"> - <el-table - :data="props.row.children" - border - show-summary - :summary-method="summarizeChildrenTable" - > - <el-table-column - align="center" - label="搴忓彿" - type="index" - width="60" - /> - <el-table-column label="浜у搧澶х被" prop="productCategory" /> - <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" /> - <el-table-column label="鍗曚綅" prop="unit" /> - <el-table-column label="鏁伴噺" prop="quantity" /> - <el-table-column label="绋庣巼(%)" prop="taxRate" /> - <el-table-column - label="鍚◣鍗曚环(鍏�)" - prop="taxInclusiveUnitPrice" - :formatter="formattedNumber" - /> - <el-table-column - label="鍚◣鎬讳环(鍏�)" - prop="taxInclusiveTotalPrice" - :formatter="formattedNumber" - /> - <el-table-column - label="涓嶅惈绋庢�讳环(鍏�)" - prop="taxExclusiveTotalPrice" - :formatter="formattedNumber" - /> - <el-table-column label="鏈鏉ョエ鏁�" prop="ticketsNum" /> - <el-table-column - label="鏈鏉ョエ閲戦(鍏�)" - prop="ticketsAmount" - :formatter="formattedNumber" - /> - <el-table-column label="鏈潵绁ㄦ暟" prop="futureTickets" /> - <el-table-column - label="鏈潵绁ㄩ噾棰�(鍏�)" - prop="futureTicketsAmount" - :formatter="formattedNumber" - /> - </el-table> - </template> - </el-table-column> - <el-table-column - label="閲囪喘鍚堝悓鍙�" - prop="purchaseContractNumber" - show-overflow-tooltip - /> - <el-table-column - label="閿�鍞悎鍚屽彿" - prop="salesContractNo" - show-overflow-tooltip - /> - <el-table-column - label="渚涘簲鍟嗗悕绉�" - prop="supplierName" - show-overflow-tooltip - /> - <el-table-column - label="鍙戠エ鍙�" - prop="invoiceNumber" - show-overflow-tooltip - /> - <el-table-column - label="鍚堝悓閲戦(鍏�)" - prop="invoiceAmount" - show-overflow-tooltip - :formatter="formattedNumber" - /> - <el-table-column label="寮�绁ㄤ汉" prop="issUer" show-overflow-tooltip /> - <el-table-column - label="寮�绁ㄦ棩鏈�" - prop="issueDate" - 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" - /> + <!-- <template #operation> + <el-button type="primary" text @click="handleEdit" size="small"> + 缂栬緫 + </el-button> + </template> --> + </PIMTable> </div> </div> </template> <script setup> -import pagination from "@/components/PIMTable/Pagination.vue"; -import { ref } from "vue"; +import { ref, getCurrentInstance } from "vue"; +import { usePaginationApi } from "@/hooks/usePaginationApi"; import { Search } from "@element-plus/icons-vue"; +import { productRecordPage } from "@/api/procurementManagement/procurementInvoiceLedger.js"; +import { onMounted } from "vue"; import { ElMessageBox } from "element-plus"; -import { productRecordList } from "@/api/procurementManagement/procurementInvoiceLedger.js"; -import { invoiceListPage } from "@/api/procurementManagement/procurementInvoiceLedger.js"; -import dayjs from "dayjs"; + +defineOptions({ + name: "鏉ョエ鍙拌处", +}); const { proxy } = getCurrentInstance(); -const tableData = ref([]); -const tableLoading = ref(false); -const page = reactive({ - current: 1, - size: 100, -}); -const total = ref(0); -// 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁 -const data = reactive({ - searchForm: { - purchaseContractNumber: "", - supplierName: "", - issueDate: [ - dayjs().startOf("month").format("YYYY-MM-DD"), - dayjs().endOf("month").format("YYYY-MM-DD"), - ], - issueDateStart: dayjs().startOf("month").format("YYYY-MM-DD"), - issueDateEnd: dayjs().endOf("month").format("YYYY-MM-DD"), +const multipleVal = ref([]); +const { + loading, + filters, + columns, + dataList, + pagination, + getTableData, + resetFilters, + onCurrentChange, +} = usePaginationApi( + productRecordPage, + { + purchaseContractNumber: undefined, // 閲囪喘鍚堝悓鍙� + supplierName: undefined, // 渚涘簲鍟� + createdAt: [], // 鏉ョエ鏃ユ湡 }, - form: { - issueDate: "", // 寮�绁ㄦ棩鏈� - purchaseLedgerId: "", - purchaseLedgerNo: "", - issUerId: "", // 寮�绁ㄤ汉id - issUer: "", // 寮�绁ㄤ汉濮撳悕 - }, - rules: { - purchaseLedgerId: [ - { required: true, message: "璇烽�夋嫨", trigger: "change" }, - ], - }, -}); -const { searchForm } = toRefs(data); - -// 鏌ヨ鍒楄〃 -/** 鎼滅储鎸夐挳鎿嶄綔 */ -const handleQuery = () => { - page.current = 1; - getList(); -}; -const paginationChange = (obj) => { - page.current = obj.page; - page.size = obj.limit; - getList(); -}; -const getList = () => { - tableLoading.value = true; - const { issueDate, ...rest } = searchForm.value; - invoiceListPage({ ...rest, ...page }) - .then((res) => { - tableLoading.value = false; - tableData.value = res.records; - tableData.value.map((item) => { - item.children = []; - }); - total.value = res.total; - expandedRowKeys.value = []; - }) - .catch(() => { - tableLoading.value = false; - }); -}; -const formattedNumber = (row, column, cellValue) => { - return parseFloat(cellValue).toFixed(2); -}; -// 琛ㄦ牸閫夋嫨鏁版嵁 -const expandedRowKeys = ref([]); -// 灞曞紑琛� -const expandChange = (row, expandedRows) => { - if (expandedRows.length > 0) { - expandedRowKeys.value = []; - try { - productRecordList({ id: row.id }).then((res) => { - const index = tableData.value.findIndex((item) => item.id === row.id); - if (index > -1) { - tableData.value[index].children = res; - } - expandedRowKeys.value.push(row.id); - }); - } catch (error) { - console.log(error); - } - } else { - expandedRowKeys.value = []; - } -}; -// 涓昏〃鍚堣鏂规硶 -const summarizeMainTable = (param) => { - return proxy.summarizeTable(param, ["invoiceAmount"], { - ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� - futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� - }); -}; -// 瀛愯〃鍚堣鏂规硶 -const summarizeChildrenTable = (param) => { - return proxy.summarizeTable( - param, - [ - "taxInclusiveUnitPrice", - "taxInclusiveTotalPrice", - "taxExclusiveTotalPrice", - "ticketsNum", - "ticketsAmount", - "futureTickets", - "futureTicketsAmount", - ], + [ { - ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� - futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� - } - ); + label: "閲囪喘鍚堝悓鍙�", + prop: "purchaseContractNumber", + align: "center", + }, + { + label: "閿�鍞悎鍚屽彿", + prop: "salesContractNo", + align: "center", + }, + { + label: "瀹㈡埛鍚嶇О", + prop: "customerName", + align: "center", + }, + { + label: "渚涘簲鍟嗗悕绉�", + prop: "supplierName", + align: "center", + }, + { + label: "瑙勬牸鍨嬪彿", + prop: "specificationModel", + align: "center", + }, + { + label: "鍙戠エ鍙�", + prop: "invoiceNumber", + align: "center", + }, + { + label: "鍚堝悓閲戦(鍏�)", + prop: "taxInclusiveTotalPrice", + align: "center", + formatData: (cell) => { + return parseFloat(cell).toFixed(2); + }, + }, + { + label: "寮�绁ㄦ棩鏈�", + prop: "createdAt", + align: "center", + }, + { + label: "寮�绁ㄩ噾棰�", + prop: "ticketsAmount", + align: "center", + formatData: (cell) => { + return parseFloat(cell).toFixed(2); + }, + }, + { + label: "涓嶅惈绋庨噾棰�", + prop: "unTicketsPrice", + align: "center", + formatData: (cell) => { + return parseFloat(cell).toFixed(2); + }, + }, + { + label: "澧炲�肩◣", + prop: "invoiceAmount", + align: "center", + }, + // { + // fixed: "right", + // width: 120, + // label: "鎿嶄綔", + // dataType: "slot", + // slot: "operation", + // align: "center", + // }, + ], + {}, + { + createdAt: (aim) => ({ + createdAtStart: aim[0], + createdAtEnd: aim[1], + }), + } +); + +const handleSelectionChange = (val) => { + multipleVal.value = val; }; // 瀵煎嚭 @@ -286,24 +196,15 @@ }); }; -const changeDateRange = (date) => { - if (date) { - searchForm.receiptPaymentDateStart = date[0]; - searchForm.receiptPaymentDateEnd = date[1]; - getList(); - } -}; - -const clearRange = () => { - searchForm.value.issueDate = []; - searchForm.value.issueDateStart = undefined; - searchForm.value.issueDateEnd = undefined; - getList(); -}; +// const handleEdit = () => {}; onMounted(() => { - getList(); + getTableData(); }); </script> -<style scoped lang="scss"></style> +<style lang="scss" scoped> +.table_list { + margin-top: unset; +} +</style> -- Gitblit v1.9.3