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/paymentHistory/index.vue               |  182 +++++--
 src/views/procurementManagement/procurementInvoiceLedger/index.vue     |  401 ++++++-----------
 src/views/salesManagement/receiptPayment/index.vue                     |    9 
 src/api/procurementManagement/procurementInvoiceLedger.js              |   82 ++-
 src/api/procurementManagement/procurementLedger.js                     |   89 ++-
 src/views/procurementManagement/invoiceEntry/index.vue                 |    6 
 src/views/salesManagement/receiptPaymentLedger/index.vue               |   20 
 src/views/procurementManagement/reportAnalysis/projectProfit/index.vue |    3 
 src/views/procurementManagement/paymentEntry/index.vue                 |    7 
 src/views/salesManagement/invoiceRegistration/index.vue                |   90 +++
 src/views/procurementManagement/procurementLedger/index.vue            |    8 
 src/views/salesManagement/invoiceLedger/index.vue                      |   15 
 src/views/procurementManagement/procurementInvoiceLedger/indexOld.vue  |  311 ++++++++++++++
 src/views/procurementManagement/reportAnalysis/taxComparison/index.vue |   91 ++++
 src/views/salesManagement/receiptPaymentHistory/index.vue              |    4 
 15 files changed, 897 insertions(+), 421 deletions(-)

diff --git a/src/api/procurementManagement/procurementInvoiceLedger.js b/src/api/procurementManagement/procurementInvoiceLedger.js
index 793c946..fb73655 100644
--- a/src/api/procurementManagement/procurementInvoiceLedger.js
+++ b/src/api/procurementManagement/procurementInvoiceLedger.js
@@ -1,60 +1,68 @@
 // 閲囪喘-鏉ョエ鍙拌处鎺ュ彛
-import request from '@/utils/request'
+import request from "@/utils/request";
 
 // 鏌ヨ鍒楄〃
 export function invoiceList(query) {
-    return request({
-        url: '/purchase/registration/list',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: "/purchase/registration/list",
+    method: "get",
+    params: query,
+  });
 }
 // 鏌ヨ璇︽儏
 export function getInvoiceById(query) {
-    return request({
-        url: '/purchase/registration/getRegistrationById',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: "/purchase/registration/getRegistrationById",
+    method: "get",
+    params: query,
+  });
 }
 // 鏂板銆佺紪杈�
 export function addOrUpdateInvoice(query) {
-    return request({
-        url: '/purchase/invoice/addOrUpdateInvoice',
-        method: 'post',
-        data: query
-    })
+  return request({
+    url: "/purchase/invoice/addOrUpdateInvoice",
+    method: "post",
+    data: query,
+  });
 }
 // 鍒犻櫎
 export function delInvoice(query) {
-    return request({
-        url: '/purchase/invoice/delInvoice',
-        method: 'delete',
-        data: query
-    })
+  return request({
+    url: "/purchase/invoice/delInvoice",
+    method: "delete",
+    data: query,
+  });
 }
 // 鍒犻櫎闄勪欢
 export function delCommonFile(query) {
-    return request({
-        url: '/commonFile/delCommonFile',
-        method: 'delete',
-        data: query
-    })
+  return request({
+    url: "/commonFile/delCommonFile",
+    method: "delete",
+    data: query,
+  });
 }
 // 瀛愯〃鏍兼煡璇�
-export function productRecordList(query){
-    return request({
-        url: '/purchase/registration/productRecordList',
-        method: 'get',
-        params: query
-    })
+export function productRecordList(query) {
+  return request({
+    url: "/purchase/registration/productRecordList",
+    method: "get",
+    params: query,
+  });
 }
 
 // 鏌ヨ鍒楄〃
 export function invoiceListPage(query) {
-    return request({
-        url: '/purchase/registration/listPage',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: "/purchase/registration/listPage",
+    method: "get",
+    params: query,
+  });
+}
+
+export function productRecordPage(query) {
+  return request({
+    url: "/purchase/registration/productRecordPage",
+    method: "get",
+    params: query,
+  });
 }
diff --git a/src/api/procurementManagement/procurementLedger.js b/src/api/procurementManagement/procurementLedger.js
index 5b2d9db..9fb284e 100644
--- a/src/api/procurementManagement/procurementLedger.js
+++ b/src/api/procurementManagement/procurementLedger.js
@@ -1,67 +1,74 @@
 // 閲囪喘鍙拌处椤甸潰鎺ュ彛
-import request from '@/utils/request'
+import request from "@/utils/request";
 
 // 鍒嗛〉鏌ヨ
 export function purchaseList(query) {
-    return request({
-        url: '/purchase/ledger/list',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: "/purchase/ledger/list",
+    method: "get",
+    params: query,
+  });
 }
 // 鏌ヨ鍚堝悓鍙�
 export function getSalesNo(query) {
-    return request({
-        url: '/purchase/ledger/getSalesNo',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: "/purchase/ledger/getSalesNo",
+    method: "get",
+    params: query,
+  });
 }
 // 瀛愯〃鏍兼煡璇�
 export function productList(query) {
-    return request({
-        url: '/sales/product/list',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: "/sales/product/list",
+    method: "get",
+    params: query,
+  });
 }
 // 鏂板銆佺紪杈�
 export function addOrEditPurchase(query) {
-    return request({
-        url: '/purchase/ledger/addOrEditPurchase',
-        method: 'post',
-        data: query
-    })
+  return request({
+    url: "/purchase/ledger/addOrEditPurchase",
+    method: "post",
+    data: query,
+  });
 }
 // 鍒犻櫎
 export function delPurchase(query) {
-    return request({
-        url: '/purchase/ledger/delPurchase',
-        method: 'delete',
-        data: query
-    })
+  return request({
+    url: "/purchase/ledger/delPurchase",
+    method: "delete",
+    data: query,
+  });
 }
 // 鏌ヨ璇︽儏
 export function getPurchaseById(query) {
-    return request({
-        url: '/purchase/ledger/getPurchaseById',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: "/purchase/ledger/getPurchaseById",
+    method: "get",
+    params: query,
+  });
 }
 // 鏌ヨ璇︽儏
 export function getOptions(query) {
-    return request({
-        url: '/system/supplier/getOptions',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: "/system/supplier/getOptions",
+    method: "get",
+    params: query,
+  });
 }
 
 export function purchaseListPage(query) {
-    return request({
-        url: '/purchase/ledger/listPage',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: "/purchase/ledger/listPage",
+    method: "get",
+    params: query,
+  });
+}
+
+export function createPurchaseNo() {
+  return request({
+    url: "/purchase/ledger/createPurchaseNo",
+    method: "get",
+  });
 }
diff --git a/src/views/procurementManagement/invoiceEntry/index.vue b/src/views/procurementManagement/invoiceEntry/index.vue
index 89628e6..d30d2d0 100644
--- a/src/views/procurementManagement/invoiceEntry/index.vue
+++ b/src/views/procurementManagement/invoiceEntry/index.vue
@@ -222,18 +222,19 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row :gutter="30">
+        <!-- <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="褰曞叆鏃ユ湡锛�" prop="createTime">
               <el-date-picker
                 style="width: 100%"
                 v-model="form.createTime"
                 type="date"
+                placeholder="璇烽�夋嫨"
                 clearable
               />
             </el-form-item>
           </el-col>
-        </el-row>
+        </el-row> -->
         <el-row>
           <el-form-item label="浜у搧淇℃伅锛�" prop="entryDate"> </el-form-item>
         </el-row>
@@ -256,6 +257,7 @@
           <el-table-column label="鍗曚綅" prop="unit" width="70" />
           <el-table-column label="鏁伴噺" prop="quantity" width="70" />
           <el-table-column label="绋庣巼(%)" prop="taxRate" width="80" />
+          <el-table-column label="褰曞叆鏃ユ湡" prop="createTime" width="120" />
           <el-table-column
             label="鍚◣鍗曚环(鍏�)"
             width="150"
diff --git a/src/views/procurementManagement/paymentEntry/index.vue b/src/views/procurementManagement/paymentEntry/index.vue
index 8c64037..38a305e 100644
--- a/src/views/procurementManagement/paymentEntry/index.vue
+++ b/src/views/procurementManagement/paymentEntry/index.vue
@@ -14,10 +14,10 @@
                 @change="handleQuery"
               />
             </el-form-item>
-            <el-form-item label="涓嶆樉绀哄緟鍥炴">
+            <el-form-item>
               <el-checkbox
                 v-model="searchForm.status"
-                :label="0"
+                label="涓嶆樉绀哄緟浠樻涓�0"
                 @change="handleQuery"
               />
             </el-form-item>
@@ -483,4 +483,7 @@
 .table_list {
   margin-top: unset;
 }
+::v-deep(.el-checkbox__label) {
+  font-weight: bold;
+}
 </style>
diff --git a/src/views/procurementManagement/paymentHistory/index.vue b/src/views/procurementManagement/paymentHistory/index.vue
index 13b5100..aa64726 100644
--- a/src/views/procurementManagement/paymentHistory/index.vue
+++ b/src/views/procurementManagement/paymentHistory/index.vue
@@ -1,106 +1,166 @@
 <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>
+    <el-form :model="searchForm" :inline="true">
+      <el-form-item label="渚涘簲鍟嗗悕绉�">
+        <el-input
+          v-model="searchForm.searchText"
+          style="width: 240px"
+          placeholder="杈撳叆渚涘簲鍟嗗悕绉版悳绱�"
+          @change="handleQuery"
+          clearable
+          :prefix-icon="Search"
+        />
+      </el-form-item>
+      <el-form-item label="浠樻鏃ユ湡">
+        <el-date-picker
+          v-model="searchForm.paymentDate"
+          value-format="YYYY-MM-DD"
+          format="YYYY-MM-DD"
+          type="daterange"
+          start-placeholder="寮�濮嬫椂闂�"
+          end-placeholder="缁撴潫鏃堕棿"
+          clearable
+          @change="changeDateRange"
+          @clear="clearRange"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          @click="handleQuery"
+          style="margin-left: 10px"
+        >
+          鎼滅储
+        </el-button>
+      </el-form-item>
+    </el-form>
     <div class="table_list">
-      <PIMTable :column="tableColumn" :tableData="tableData" :page="page" :isSelection="true"
-                :isShowSummary="isShowSummarySon"
-                :summaryMethod="summarizeMainTable1"
-        :handleSelectionChange="handleSelectionChange" :tableLoading="tableLoading" @pagination="pagination"
-        :total="total"></PIMTable>
+      <PIMTable
+        :column="tableColumn"
+        :tableData="tableData"
+        :page="page"
+        :isSelection="true"
+        :isShowSummary="isShowSummarySon"
+        :summaryMethod="summarizeMainTable1"
+        :handleSelectionChange="handleSelectionChange"
+        :tableLoading="tableLoading"
+        @pagination="pagination"
+        :total="total"
+      ></PIMTable>
     </div>
   </div>
 </template>
 
 <script setup>
-import { ref } from 'vue'
+import { ref } from "vue";
 import { Search } from "@element-plus/icons-vue";
-import {
-  paymentHistoryListPage
-} from "@/api/procurementManagement/paymentEntry.js";
-const { proxy } = getCurrentInstance()
+import { paymentHistoryListPage } from "@/api/procurementManagement/paymentEntry.js";
+import useFormData from "@/hooks/useFormData";
+import dayjs from "dayjs";
+
+const { proxy } = getCurrentInstance();
 const isShowSummarySon = ref(true);
 const tableColumn = ref([
   {
-    label: '浠樻鏃ユ湡',
-    prop: 'paymentDate',
+    label: "浠樻鏃ユ湡",
+    prop: "paymentDate",
   },
   {
-    label: '渚涘簲鍟嗗悕绉�',
-    prop: 'supplierName',
+    label: "渚涘簲鍟嗗悕绉�",
+    prop: "supplierName",
   },
   {
-    label: '浠樻閲戦',
-    prop: 'currentPaymentAmount',
+    label: "浠樻閲戦",
+    prop: "currentPaymentAmount",
     formatData: (params) => {
       return parseFloat(params).toFixed(2);
-    }
+    },
   },
   {
-    label: '浠樻鏂瑰紡',
-    prop: 'paymentMethod'
+    label: "浠樻鏂瑰紡",
+    prop: "paymentMethod",
   },
   {
-    label: '鐧昏浜�',
-    prop: 'registrant'
+    label: "鐧昏浜�",
+    prop: "registrant",
   },
   {
-    label: '鐧昏鏃ユ湡',
-    prop: 'registrationtDate'
-  }
-])
-const tableData = ref([])
-const selectedRows = ref([])
-const tableLoading = ref(false)
+    label: "鐧昏鏃ユ湡",
+    prop: "registrationtDate",
+  },
+]);
+const tableData = ref([]);
+const selectedRows = ref([]);
+const tableLoading = ref(false);
 const page = reactive({
   current: 1,
   size: 100,
-})
-const total = ref(0)
-const data = reactive({
-  searchForm: {
-    searchText: '',
-  },
-})
-const { searchForm } = toRefs(data)
+});
+const total = ref(0);
+const { form: searchForm } = useFormData({
+  searchText: undefined,
+  paymentDate: [
+    dayjs().startOf("month").format("YYYY-MM-DD"),
+    dayjs().endOf("month").format("YYYY-MM-DD"),
+  ],
+  paymentDateStart: dayjs().startOf("month").format("YYYY-MM-DD"),
+  paymentDateEnd: dayjs().endOf("month").format("YYYY-MM-DD"),
+});
 
 // 鏌ヨ鍒楄〃
 /** 鎼滅储鎸夐挳鎿嶄綔 */
 const handleQuery = () => {
-  page.current = 1
-  getList()
-}
+  page.current = 1;
+  getList();
+};
 const pagination = (obj) => {
   page.current = obj.page;
   page.size = obj.limit;
-  getList()
-}
+  getList();
+};
 const getList = () => {
-  tableLoading.value = true
-  paymentHistoryListPage({ ...searchForm.value, ...page }).then(res => {
-    tableLoading.value = false
-    tableData.value = res.records
-    total.value = res.total
-  })
-}
+  tableLoading.value = true;
+  const { paymentDate, ...rest } = searchForm;
+  paymentHistoryListPage({ ...rest, ...page }).then((res) => {
+    tableLoading.value = false;
+    tableData.value = res.records;
+    total.value = res.total;
+  });
+};
 // 瀛愯〃鍚堣鏂规硶
 const summarizeMainTable1 = (param) => {
-  return proxy.summarizeTable(param, ['currentPaymentAmount'], {
+  return proxy.summarizeTable(param, ["currentPaymentAmount"], {
     ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
     futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
   });
 };
 // 琛ㄦ牸閫夋嫨鏁版嵁
 const handleSelectionChange = (selection) => {
-  selectedRows.value = selection
-}
-getList()
+  selectedRows.value = selection;
+};
+
+const changeDateRange = (date) => {
+  if (date) {
+    searchForm.paymentDateStart = date[0];
+    searchForm.paymentDateEnd = date[1];
+    getList();
+  }
+};
+
+const clearRange = () => {
+  searchForm.paymentDate = [];
+  searchForm.paymentDateStart = undefined;
+  searchForm.paymentDateEnd = undefined;
+  getList();
+};
+
+onMounted(() => {
+  getList();
+});
 </script>
 
-<style scoped lang="scss"></style>
+<style scoped lang="scss">
+.table_list {
+  margin-top: unset;
+}
+</style>
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>
diff --git a/src/views/procurementManagement/procurementInvoiceLedger/indexOld.vue b/src/views/procurementManagement/procurementInvoiceLedger/indexOld.vue
new file mode 100644
index 0000000..987e6a4
--- /dev/null
+++ b/src/views/procurementManagement/procurementInvoiceLedger/indexOld.vue
@@ -0,0 +1,311 @@
+<template>
+  <div class="app-container">
+    <div class="search_form">
+      <div>
+        <span class="search_title">閲囪喘鍚堝悓鍙凤細</span>
+        <el-input
+          v-model="searchForm.purchaseContractNumber"
+          style="width: 240px"
+          placeholder="璇疯緭鍏�"
+          @change="handleQuery"
+          clearable
+          :prefix-icon="Search"
+        />
+        <span class="search_title" style="margin-left: 10px">渚涘簲鍟嗭細</span>
+        <el-input
+          v-model="searchForm.supplierName"
+          style="width: 240px"
+          placeholder="璇疯緭鍏�"
+          @change="handleQuery"
+          clearable
+          :prefix-icon="Search"
+        />
+        <span class="search_title" style="margin-left: 10px">鏉ョエ鏃ユ湡锛�</span>
+        <el-date-picker
+          style="width: 240px"
+          v-model="searchForm.issueDate"
+          value-format="YYYY-MM-DD"
+          format="YYYY-MM-DD"
+          type="daterange"
+          start-placeholder="寮�濮嬫椂闂�"
+          end-placeholder="缁撴潫鏃堕棿"
+          clearable
+          @change="changeDateRange"
+          @clear="clearRange"
+        />
+        <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
+          >鎼滅储</el-button
+        >
+      </div>
+      <div>
+        <el-button @click="handleOut">瀵煎嚭</el-button>
+      </div>
+    </div>
+    <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)"
+      >
+        <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"
+      />
+    </div>
+  </div>
+</template>
+
+<script setup>
+import pagination from "@/components/PIMTable/Pagination.vue";
+import { ref } from "vue";
+import { Search } from "@element-plus/icons-vue";
+import { ElMessageBox } from "element-plus";
+import {
+  invoiceListPage,
+  productRecordList,
+} from "@/api/procurementManagement/procurementInvoiceLedger.js";
+import dayjs from "dayjs";
+
+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"),
+  },
+  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 }, // 涓嶄繚鐣欏皬鏁�
+    }
+  );
+};
+
+// 瀵煎嚭
+const handleOut = () => {
+  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(() => {
+      proxy.download("/purchase/registration/export", {}, "鏉ョエ鐧昏.xlsx");
+    })
+    .catch(() => {
+      proxy.$modal.msg("宸插彇娑�");
+    });
+};
+
+const changeDateRange = (date) => {
+  if (date) {
+    searchForm.value.receiptPaymentDateStart = date[0];
+    searchForm.value.receiptPaymentDateEnd = date[1];
+    getList();
+  }
+};
+
+const clearRange = () => {
+  searchForm.value.issueDate = [];
+  searchForm.value.issueDateStart = undefined;
+  searchForm.value.issueDateEnd = undefined;
+  getList();
+};
+
+onMounted(() => {
+  getList();
+});
+</script>
+
+<style scoped lang="scss"></style>
diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue
index d360763..1086c81 100644
--- a/src/views/procurementManagement/procurementLedger/index.vue
+++ b/src/views/procurementManagement/procurementLedger/index.vue
@@ -9,7 +9,7 @@
           placeholder="璇疯緭鍏�"
           @change="handleQuery"
           clearable
-          prefix-icon="Search"
+          :prefix-icon="Search"
         />
         <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
           >鎼滅储</el-button
@@ -513,6 +513,7 @@
   productList,
   getPurchaseById,
   getOptions,
+  createPurchaseNo,
 } from "@/api/procurementManagement/procurementLedger.js";
 const { proxy } = getCurrentInstance();
 const tableData = ref([]);
@@ -701,6 +702,11 @@
   form.value = {};
   productData.value = [];
   fileList.value = [];
+  if (operationType.value == "add") {
+    createPurchaseNo().then((res) => {
+      form.value.purchaseContractNumber = res.data;
+    });
+  }
   userListNoPage().then((res) => {
     userList.value = res.data;
   });
diff --git a/src/views/procurementManagement/reportAnalysis/projectProfit/index.vue b/src/views/procurementManagement/reportAnalysis/projectProfit/index.vue
index 0f10543..82031bb 100644
--- a/src/views/procurementManagement/reportAnalysis/projectProfit/index.vue
+++ b/src/views/procurementManagement/reportAnalysis/projectProfit/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form class="search_form" :inline="true" label-width="80px">
+    <el-form :model="filters" :inline="true" label-width="80px">
       <el-form-item label="瀹㈡埛鍚嶇О">
         <el-input v-model="filters.customerName" placeholder="璇疯緭鍏ュ鎴峰悕绉�" />
       </el-form-item>
@@ -17,6 +17,7 @@
         :page="{
           current: pagination.currentPage,
           size: pagination.pageSize,
+          total: pagination.total,
         }"
         @pagination="onCurrentChange"
       ></PIMTable>
diff --git a/src/views/procurementManagement/reportAnalysis/taxComparison/index.vue b/src/views/procurementManagement/reportAnalysis/taxComparison/index.vue
new file mode 100644
index 0000000..eae0bca
--- /dev/null
+++ b/src/views/procurementManagement/reportAnalysis/taxComparison/index.vue
@@ -0,0 +1,91 @@
+<template>
+  <div class="app-container">
+    <el-form :model="filters" :inline="true">
+      <el-form-item label="鏃ユ湡">
+        <el-date-picker
+          style="width: 240px"
+          v-model="filters.dateRange"
+          value-format="YYYY-MM-DD"
+          format="YYYY-MM-DD"
+          type="daterange"
+          start-placeholder="寮�濮嬫椂闂�"
+          end-placeholder="缁撴潫鏃堕棿"
+          clearable
+          @change="getTableData"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="getTableData"> 鎼滅储 </el-button>
+        <el-button @click="resetFilters"> 閲嶇疆 </el-button>
+      </el-form-item>
+    </el-form>
+    <div class="table_list">
+      <PIMTable
+        :column="columns"
+        :tableData="dataList"
+        :page="{
+          current: pagination.currentPage,
+          size: pagination.pageSize,
+          total: pagination.total,
+        }"
+        @pagination="onCurrentChange"
+      />
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { usePaginationApi } from "@/hooks/usePaginationApi";
+import { onMounted } from "vue";
+
+defineOptions({
+  name: "澧炲�肩◣姣斿",
+});
+
+const {
+  loading,
+  filters,
+  columns,
+  dataList,
+  pagination,
+  getTableData,
+  resetFilters,
+  onCurrentChange,
+} = usePaginationApi(
+  () => {},
+  {
+    dateRange: [], // 鏉ョエ鏃ユ湡
+  },
+  [
+    {
+      label: "鏈堜唤",
+    },
+    {
+      label: "閿�椤圭◣棰�",
+    },
+    {
+      label: "杩涢」绋庨",
+    },
+    {
+      label: "閿�-杩�",
+    },
+  ],
+  {},
+  {
+    dateRange: (aim) => ({
+      dateRangeStart: aim[0],
+      dateRangeEnd: aim[1],
+    }),
+  }
+);
+
+onMounted(() => {
+  getTableData();
+});
+</script>
+
+<style lang="scss" scoped>
+.table_list {
+  margin-top: unset;
+}
+</style>
diff --git a/src/views/salesManagement/invoiceLedger/index.vue b/src/views/salesManagement/invoiceLedger/index.vue
index fe2ca15..4ee4854 100644
--- a/src/views/salesManagement/invoiceLedger/index.vue
+++ b/src/views/salesManagement/invoiceLedger/index.vue
@@ -26,6 +26,9 @@
             @clear="clearRange"
           />
         </el-form-item>
+        <el-form-item label="涓嶆樉绀烘湁鍙戠エ琛�">
+          <el-checkbox v-model="searchForm.status" @change="handleQuery" />
+        </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="handleQuery"> 鎼滅储 </el-button>
           <el-button @click="resetForm"> 閲嶇疆 </el-button>
@@ -76,9 +79,15 @@
         />
         <el-table-column label="绋庣巼" prop="taxRate" show-overflow-tooltip />
         <el-table-column
-          label="寮�绁ㄤ汉"
+          label="褰曞叆浜�"
           prop="invoicePerson"
           show-overflow-tooltip
+        />
+        <el-table-column
+          label="褰曞叆鏃ユ湡"
+          prop="createTime"
+          show-overflow-tooltip
+          :formatter="formatDate"
         />
         <el-table-column
           label="寮�绁ㄦ棩鏈�"
@@ -312,6 +321,7 @@
 const data = reactive({
   searchForm: {
     searchText: "",
+    status: false,
     invoiceDate: [
       dayjs().startOf("month").format("YYYY-MM-DD"),
       dayjs().endOf("month").format("YYYY-MM-DD"),
@@ -356,6 +366,9 @@
 const formattedNumber = (row, column, cellValue) => {
   return parseFloat(cellValue).toFixed(2);
 };
+const formatDate = (row, column, cellValue) => {
+  return dayjs(cellValue).format("YYYY-MM-DD HH:mm:ss");
+};
 // 鏌ヨ鍒楄〃
 /** 鎼滅储鎸夐挳鎿嶄綔 */
 const handleQuery = () => {
diff --git a/src/views/salesManagement/invoiceRegistration/index.vue b/src/views/salesManagement/invoiceRegistration/index.vue
index 8f1005c..917eb47 100644
--- a/src/views/salesManagement/invoiceRegistration/index.vue
+++ b/src/views/salesManagement/invoiceRegistration/index.vue
@@ -12,12 +12,6 @@
             @change="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="鏈紑绁ㄩ噾棰濇槸鍚︿负0">
-          <el-select v-model="searchForm.status" style="width: 90px" clearable>
-            <el-option label="鍚�" :value="0" />
-            <el-option label="鏄�" :value="1" />
-          </el-select>
-        </el-form-item>
         <el-form-item label="瀹㈡埛鍚堝悓鍙�">
           <el-input
             v-model="searchForm.customerContractNo"
@@ -33,15 +27,25 @@
           />
         </el-form-item>
         <el-form-item>
+          <el-checkbox
+            v-model="searchForm.status"
+            label="涓嶆樉绀烘湭寮�绁ㄩ噾棰濅负0"
+            @change="handleQuery"
+          />
+        </el-form-item>
+        <el-form-item>
           <el-button type="primary" @click="handleQuery"> 鎼滅储 </el-button>
           <el-button @click="resetForm"> 閲嶇疆 </el-button>
         </el-form-item>
       </el-form>
     </div>
     <div class="table_list">
-      <el-button type="primary" @click="openForm" style="margin-bottom: 8px">
-        鏂板鐧昏
-      </el-button>
+      <div class="flex justify-between">
+        <div></div>
+        <el-button type="primary" @click="openForm" style="margin-bottom: 8px">
+          鏂板鐧昏
+        </el-button>
+      </div>
       <el-table
         :data="tableData"
         :border="true"
@@ -212,6 +216,48 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="褰曞叆浜�">
+              <el-input v-model="form.createUer" placeholder="璇疯緭鍏ュ綍鍏ヤ汉" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="寮�绁ㄦ棩鏈�" prop="issueDate">
+              <el-date-picker
+                style="width: 100%"
+                v-model="form.issueDate"
+                type="date"
+                placeholder="璇烽�夋嫨"
+                clearable
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="褰曞叆鏃ユ湡锛�" prop="createTime">
+              <el-date-picker
+                style="width: 100%"
+                v-model="form.createTime"
+                type="date"
+                placeholder="璇烽�夋嫨"
+                clearable
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鍙戠エ鍙风爜锛�" prop="invoiceNo">
+              <el-input
+                v-model="form.invoiceNo"
+                placeholder="璇疯緭鍏�"
+                clearable
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row>
           <el-form-item label="浜у搧淇℃伅锛�" prop="entryDate"> </el-form-item>
         </el-row>
@@ -295,6 +341,7 @@
                 min="0"
                 disabled
                 v-model="scope.row.noInvoiceAmount"
+                :formatter="formattedInputNumber"
                 :precision="2"
                 :step="0.01"
               ></el-input>
@@ -314,7 +361,7 @@
 
 <script setup>
 import pagination from "@/components/PIMTable/Pagination.vue";
-import { ref } from "vue";
+import { onMounted, ref } from "vue";
 import { Search } from "@element-plus/icons-vue";
 import { ElMessageBox } from "element-plus";
 // import {userListNoPage} from "@/api/system/user.js";
@@ -342,9 +389,12 @@
 const data = reactive({
   searchForm: {
     customerName: "",
-    status: 0,
+    status: false,
     customerContractNo: undefined, // 瀹㈡埛鍚堝悓鍙�
     projectName: undefined, // 椤圭洰鍚嶇О
+    createUer: undefined, // 褰曞叆浜�
+    issueDate: undefined, // 寮�绁ㄦ棩鏈�
+    createTime: undefined, // 褰曞叆鏃ユ湡锛�
   },
   form: {
     salesLedgerId: "",
@@ -370,6 +420,11 @@
     return cellValue;
   }
 };
+
+const formattedInputNumber = (value) => {
+  return parseFloat(value).toFixed(2);
+};
+
 // 鏌ヨ鍒楄〃
 /** 鎼滅储鎸夐挳鎿嶄綔 */
 const handleQuery = () => {
@@ -537,11 +592,22 @@
   ).toFixed(2);
 };
 
-getList();
+onMounted(() => {
+  getList();
+});
 </script>
 
 <style scoped lang="scss">
 .table_list {
   margin-top: unset;
 }
+.flex {
+  display: flex;
+}
+.justify-between {
+  justify-content: space-between;
+}
+::v-deep(.el-checkbox__label) {
+  font-weight: bold;
+}
 </style>
diff --git a/src/views/salesManagement/receiptPayment/index.vue b/src/views/salesManagement/receiptPayment/index.vue
index 4c6fd8d..0525c8b 100644
--- a/src/views/salesManagement/receiptPayment/index.vue
+++ b/src/views/salesManagement/receiptPayment/index.vue
@@ -14,10 +14,10 @@
                 @change="handleQuery"
               />
             </el-form-item>
-            <el-form-item label="涓嶆樉绀哄緟鍥炴">
+            <el-form-item>
               <el-checkbox
                 v-model="searchForm.status"
-                :label="0"
+                label="涓嶆樉绀哄緟鍥炴涓�0"
                 @change="handleQuery"
               />
             </el-form-item>
@@ -139,7 +139,7 @@
         />
         <el-table-column
           label="椤圭洰鍚嶇О"
-          prop="customerName"
+          prop="projectName"
           show-overflow-tooltip
         />
         <el-table-column
@@ -550,4 +550,7 @@
 .table_list {
   margin-top: unset;
 }
+::v-deep(.el-checkbox__label) {
+  font-weight: bold;
+}
 </style>
diff --git a/src/views/salesManagement/receiptPaymentHistory/index.vue b/src/views/salesManagement/receiptPaymentHistory/index.vue
index 5dd4e7a..7f2e139 100644
--- a/src/views/salesManagement/receiptPaymentHistory/index.vue
+++ b/src/views/salesManagement/receiptPaymentHistory/index.vue
@@ -63,6 +63,10 @@
     prop: "customerName",
   },
   {
+    label: "椤圭洰鍚嶇О",
+    prop: "projectName",
+  },
+  {
     label: "鍥炴閲戦锛堝厓锛�",
     prop: "receiptPaymentAmount",
     formatData: (params) => {
diff --git a/src/views/salesManagement/receiptPaymentLedger/index.vue b/src/views/salesManagement/receiptPaymentLedger/index.vue
index aa6ffb3..220594b 100644
--- a/src/views/salesManagement/receiptPaymentLedger/index.vue
+++ b/src/views/salesManagement/receiptPaymentLedger/index.vue
@@ -200,22 +200,22 @@
 const summarizeMainTable1 = (param) => {
   var summarizeTable = proxy.summarizeTable(
     param,
-    ["invoiceAmount", "receiptAmount"],
+    ["invoiceAmount", "receiptAmount", "unReceiptAmount"],
     {
       ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
       futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
     }
   );
   // 鍙栨渶鍚庝竴琛屾暟鎹�;
-  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;
-  }
+  // 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;

--
Gitblit v1.9.3