From f1e31cf5af3cc9648ba3f33bd99ddd40a3027d08 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期四, 21 五月 2026 09:46:11 +0800
Subject: [PATCH] fix: 删除旧财务代码

---
 /dev/null |  279 -------------------------------------------------------
 1 files changed, 0 insertions(+), 279 deletions(-)

diff --git a/src/api/financialManagement/salesRefund.js b/src/api/financialManagement/salesRefund.js
deleted file mode 100644
index 84b87fb..0000000
--- a/src/api/financialManagement/salesRefund.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import request from "@/utils/request";
-
-// 鏌ヨ鍒楄〃
-// /salesRefundAmountOrder/page
-export const listPage = (params) => {
-  return request({
-    url: "/salesRefundAmountOrder/page",
-    method: "get",
-    params,
-  });
-};
-
-// 鏂板 
-// /salesRefundAmountOrder/add
-export function add(data) {
-  return request({
-    url: "/salesRefundAmountOrder/add",
-    method: "post",
-    data: data,
-  });
-}
-
-// 淇敼
-// /salesRefundAmountOrder/update
-export function update(data) {
-  return request({
-    url: "/salesRefundAmountOrder/update",
-    method: "put",
-    data: data,
-  });
-}
-
-// 鍒犻櫎
-// /salesRefundAmountOrder/deleteByIds
-export function del(data) {
-  return request({
-    url: "/salesRefundAmountOrder/deleteByIds",
-    method: "delete",
-    data: data,
-  });
-}
\ No newline at end of file
diff --git a/src/api/procurementManagement/invoiceEntry.js b/src/api/procurementManagement/invoiceEntry.js
deleted file mode 100644
index 8325aa7..0000000
--- a/src/api/procurementManagement/invoiceEntry.js
+++ /dev/null
@@ -1,69 +0,0 @@
-// 閲囪喘-鏉ョエ鐧昏鎺ュ彛
-import request from "@/utils/request";
-
-// 鏌ヨ閲囪喘鍚堝悓鍙�
-export function getProduct(query) {
-  return request({
-    url: "/purchase/ledger/getProduct",
-    method: "get",
-    params: query,
-  });
-}
-
-// 鏌ヨid閲囪喘鍚堝悓鍙�
-export function getPurchaseNoById(query) {
-  return request({
-    url: "/purchase/ledger/getPurchaseNoById",
-    method: "get",
-    params: query,
-  });
-}
-// 鏍规嵁閲囪喘鍚堝悓鍙锋煡璇㈣缁嗕俊鎭�
-export function getInfo(query) {
-  return request({
-    url: "/purchase/ledger/getInfo",
-    method: "get",
-    params: query,
-  });
-}
-// 涓诲垪琛ㄦ煡璇�
-export function gePurchaseList(query) {
-  return request({
-    url: "/purchase/ledger/list",
-    method: "get",
-    params: query,
-  });
-}
-// 涓诲垪琛ㄦ煡璇�
-export function getRegistrationById(query) {
-  return request({
-    url: "/purchase/registration/getRegistrationById",
-    method: "get",
-    params: query,
-  });
-}
-// 鏂板缂栬緫鏉ョエ鐧昏
-export function addOrUpdateRegistration(query) {
-  return request({
-    url: "/purchase/registration/addOrUpdateRegistration",
-    method: "post",
-    data: query,
-  });
-}
-// 鍒犻櫎鏉ョエ鐧昏
-export function delRegistration(query) {
-  return request({
-    url: "/purchase/registration/delRegistration",
-    method: "delete",
-    data: query,
-  });
-}
-
-// 涓诲垪琛ㄦ煡璇�
-export function gePurchaseListPage(query) {
-  return request({
-    url: "/purchase/ledger/listPage",
-    method: "get",
-    params: query,
-  });
-}
diff --git a/src/api/procurementManagement/paymentEntry.js b/src/api/procurementManagement/paymentEntry.js
deleted file mode 100644
index 6ef0eb9..0000000
--- a/src/api/procurementManagement/paymentEntry.js
+++ /dev/null
@@ -1,81 +0,0 @@
-// 閲囪喘浠樻鐧昏椤甸潰鎺ュ彛
-import request from "@/utils/request";
-
-// 鍒嗛〉鏌ヨ
-export function registrationList(query) {
-  return request({
-    url: "/purchase/paymentRegistration/list",
-    method: "get",
-    params: query,
-  });
-}
-// 鏌ヨ璇︽儏
-export function registrationInfo(query) {
-  return request({
-    url: "/purchase/paymentRegistration/" + query,
-    method: "get",
-  });
-}
-// 鏍规嵁閲囪喘鍚堝悓鍙锋煡璇㈣鎯�
-export function byPurchaseId(query) {
-  return request({
-    url: "/purchase/paymentRegistration/byPurchaseId/" + query,
-    method: "get",
-  });
-}
-// 鏌ヨ閲囪喘鍚堝悓鍙�
-export function getPurchaseNo() {
-  return request({
-    url: "/purchase/ledger/getPurchaseNo",
-    method: "get",
-  });
-}
-// 鏂板
-export function paymentRegistrationAdd(query) {
-  return request({
-    url: "/purchase/paymentRegistration",
-    method: "post",
-    data: query,
-  });
-}
-// 淇敼
-export function paymentRegistrationEdit(query) {
-  return request({
-    url: "/purchase/paymentRegistration",
-    method: "put",
-    data: query,
-  });
-}
-// 鍒犻櫎
-export function paymentRegistrationDel(query) {
-  return request({
-    url: "/purchase/paymentRegistration/delete",
-    method: "delete",
-    data: query,
-  });
-}
-// 鑾峰彇鍙戠エ鍙峰拰鍙戠エ閲戦
-export function getTicketNo(query) {
-  return request({
-    url: "/purchase/registration/getTicketNo",
-    method: "get",
-    params: query,
-  });
-}
-// 鍒嗛〉鏌ヨ
-export function paymentHistoryList(query) {
-  return request({
-    url: "/purchase/paymentRegistration/paymentHistoryList",
-    method: "get",
-    params: query,
-  });
-}
-
-// 鍒嗛〉鏌ヨ
-export function paymentHistoryListPage(query) {
-  return request({
-    url: "/purchase/paymentRegistration/paymentHistoryListPage",
-    method: "get",
-    params: query,
-  });
-}
diff --git a/src/api/procurementManagement/procurementInvoiceLedger.js b/src/api/procurementManagement/procurementInvoiceLedger.js
deleted file mode 100644
index d0716f9..0000000
--- a/src/api/procurementManagement/procurementInvoiceLedger.js
+++ /dev/null
@@ -1,124 +0,0 @@
-// 閲囪喘-鏉ョエ鍙拌处鎺ュ彛
-import request from "@/utils/request";
-
-// 鏌ヨ鍒楄〃
-export function invoiceList(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,
-//   });
-// }
-// 鏂板銆佺紪杈�
-export function addOrUpdateInvoice(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,
-  });
-}
-// 鍒犻櫎鏉ョエ鍙拌处
-export function delRegistration(query) {
-  return request({
-    url: "/purchase/registration/delRegistration",
-    method: "delete",
-    data: query,
-  });
-}
-// 鍒犻櫎闄勪欢
-export function delCommonFile(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 invoiceListPage(query) {
-  return request({
-    url: "/sales/product/listPagePurchaseLedger",
-    method: "get",
-    params: query,
-  });
-}
-
-export function productRecordPage(query) {
-  return request({
-    url: "/purchase/registration/productRecordPage",
-    method: "get",
-    params: query,
-  });
-}
-
-// export function getProductRecordById(params) {
-//   return request({
-//     url: "/purchase/registration/getProductRecordById",
-//     method: "get",
-//     params: params,
-//   });
-// }
-export function getProductRecordById(data) {
-  return request({
-    url: "/purchase/registration/getProductRecordById",
-     method: "post",
-    data: data,
-  });
-}
-
-export function updateRegistration(data) {
-  return request({
-    url: "/purchase/registration/updateRegistration",
-    method: "post",
-    data: data,
-  });
-}
-
-// 鏌ヨ浠樻鐧昏瀛愬垪琛�
-export function registrationListPageGetById(query) {
-  return request({
-    url: "/purchase/registration/getById",
-    method: "get",
-    params: query,
-  });
-}
-// 淇敼浠樻娴佹按
-export function updatePaymentRegistration(query) {
-  return request({
-    url: "/purchase/registration/updatePaymentRegistration",
-    method: "put",
-    data: query,
-  });
-}
-// 鍒犻櫎浠樻娴佹按
-export function delPaymentRegistration(query) {
-  return request({
-    url: "/purchase/registration/delPaymentRegistration",
-    method: "delete",
-    data: query,
-  });
-}
diff --git a/src/api/salesManagement/invoiceLedger.js b/src/api/salesManagement/invoiceLedger.js
deleted file mode 100644
index 6a54493..0000000
--- a/src/api/salesManagement/invoiceLedger.js
+++ /dev/null
@@ -1,92 +0,0 @@
-// 寮�绁ㄥ彴璐﹂〉闈㈡帴鍙�
-import request from '@/utils/request'
-
-// 鍒嗛〉鏌ヨ
-export function invoiceLedgerList(query) {
-    return request({
-        url: '/invoiceLedger/page',
-        method: 'get',
-        params: query
-    })
-}
-
-// 鏂板
-export function invoiceLedgerSaveOrUpdate(query) {
-    return request({
-        url: '/invoiceLedger/saveOrUpdate',
-        method: 'post',
-        data: query
-    })
-}
-
-// 寮�绁ㄥ彴璐﹀垹闄�
-export function invoiceLedgerDel(query) {
-    return request({
-        url: '/invoiceLedger/del',
-        method: 'delete',
-        data: query
-    })
-}
-
-// 璇︽儏鏌ヨ
-export function invoiceLedgerDetail(query) {
-    return request({
-        url: '/invoiceLedger/info',
-        method: 'get',
-        params: query
-    })
-}
-
-// 闄勪欢鎻愪氦
-export function commitFile(query) {
-    return request({
-        url: '/invoiceLedger/commitFile',
-        method: 'post',
-        data: query
-    })
-}
-
-// 寮�绁ㄥ彴璐﹂儴鍒嗕篃鏌ヨ
-export function invoiceLedgerListNoPage(query) {
-    return request({
-        url: '/invoiceLedger/list',
-        method: 'get',
-        data: query
-    })
-}
-
-// 鍒嗛〉鏌ヨ
-export function invoiceLedgerSalesAccount(query) {
-    return request({
-        url: '/invoiceLedger/salesAccount',
-        method: 'get',
-        params: query
-    })
-}
-
-// 浜у搧寮�绁ㄨ褰曞垎椤垫煡璇�
-export function registrationProductPage(query) {
-    return request({
-        url: '/invoiceLedger/registrationProductPage',
-        method: 'get',
-        params: query
-    })
-}
-
-// 浜у搧寮�绁ㄨ鎯呮煡璇�
-export function invoiceLedgerProductInfo(query) {
-    return request({
-        url: '/invoiceLedger/invoiceLedgerProductInfo',
-        method: 'get',
-        params: query
-    })
-}
-
-export function delInvoiceLedgerByRegProductId(invoiceRegistrationProductId) {
-    return request({
-        url: '/invoiceLedger/delInvoiceLedger/'+ invoiceRegistrationProductId,
-        method: 'delete'
-    })
-}
-
-
diff --git a/src/api/salesManagement/invoiceRegistration.js b/src/api/salesManagement/invoiceRegistration.js
deleted file mode 100644
index 4bc33ce..0000000
--- a/src/api/salesManagement/invoiceRegistration.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// 閿�鍞彴璐﹂〉闈㈡帴鍙�
-import request from '@/utils/request'
-
-// 鍒嗛〉鏌ヨ
-export function invoiceRegistrationList(query) {
-    return request({
-        url: '/invoiceRegistration/listPage',
-        method: 'get',
-        params: query
-    })
-}
-// 寮�绁ㄧ櫥璁版柊澧�
-export function invoiceRegistrationSave(query) {
-    return request({
-        url: '/invoiceRegistration/save',
-        method: 'post',
-        data: query
-    })
-}
-// 寮�绁ㄧ櫥璁板垹闄�
-export function invoiceRegistrationDel(query) {
-    return request({
-        url: '/invoiceRegistration/del',
-        method: 'delete',
-        data: query
-    })
-}
-// 瀛愯〃鏍兼煡璇�
-export function productList(query) {
-    return request({
-        url: '/invoiceRegistration/productList',
-        method: 'get',
-        params: query
-    })
-}
-
-// 寮�绁ㄧ櫥璁拌鎯�
-export function invoiceRegistrationDetail(query) {
-    return request({
-        url: '/invoiceRegistration/detail',
-        method: 'get',
-        params: query
-    })
-}
-
-// 瀵煎嚭寮�绁ㄧ櫥璁�
-export function invoiceRegistrationExport(query) {
-    return request({
-        url: '/invoiceRegistration/export',
-        method: 'get',
-        params: query,
-        responseType: 'blob'
-    })
-}
diff --git a/src/api/salesManagement/receiptPayment.js b/src/api/salesManagement/receiptPayment.js
deleted file mode 100644
index 0f0529d..0000000
--- a/src/api/salesManagement/receiptPayment.js
+++ /dev/null
@@ -1,84 +0,0 @@
-// 寮�绁ㄧ櫥璁伴〉闈㈡帴鍙�
-import request from '@/utils/request'
-
-// 鏂板/淇敼
-export function receiptPaymentSaveOrUpdate(query) {
-    return request({
-        url: '/receiptPayment/saveOrUpdate',
-        method: 'post',
-        data: query
-    })
-}
-
-// 瀹㈡埛寰�鏉ヨ褰曟煡璇�
-export function customerInteractions(query) {
-    return request({
-        url: '/receiptPayment/customerInteractions',
-        method: 'get',
-        params: query
-    })
-}
-
-// 璇︽儏
-export function receiptPaymentInfo(query) {
-    return request({
-        url: '/receiptPayment/info',
-        method: 'get',
-        params: query
-    })
-}
-
-// 鍒犻櫎
-export function receiptPaymentDel(query) {
-    return request({
-        url: '/receiptPayment/del',
-        method: 'delete',
-        data: query
-    })
-}
-
-// 鏌ヨ宸茬粡缁戝畾鍙戠エ鐨勫紑绁ㄥ彴璐�
-export function bindInvoiceNoRegPage(query) {
-    return request({
-        url: '/sales/product/listPageSalesLedger',
-        method: 'get',
-        params: query
-    })
-}
-
-// 寮�绁ㄥ彴璐﹁鎯�
-export function invoiceInfo(query) {
-    return request({
-        url: '/receiptPayment/invoiceInfo',
-        method: 'get',
-        params: query
-    })
-}
-
-// 璇㈠洖娆捐褰�
-export function receiptPaymentHistoryList(query) {
-    return request({
-        url: '/receiptPayment/receiptPaymentHistoryList',
-        method: 'get',
-        params: query
-    })
-}
-
-/**
- * 鏌ヨ鍥炴璁板綍鍒嗛〉鏌ヨ
- */
-export function receiptPaymentHistoryListPage(query) {
-    return request({
-        url: '/receiptPayment/receiptPaymentHistoryListPage',
-        method: 'get',
-        params: query
-    })
-}
-
-export function receiptPaymentHistoryListNoPage(query) {
-    return request({
-        url: '/receiptPayment/receiptPaymentHistoryListNoPage',
-        method: 'get',
-        params: query
-    })
-}
diff --git a/src/views/financialManagement/salesRefund/components/ReceiptandRefundPopupWindow.vue b/src/views/financialManagement/salesRefund/components/ReceiptandRefundPopupWindow.vue
deleted file mode 100644
index 35215a5..0000000
--- a/src/views/financialManagement/salesRefund/components/ReceiptandRefundPopupWindow.vue
+++ /dev/null
@@ -1,227 +0,0 @@
-<template>
-  <FormDialog v-model="visible" title="鏀舵/閫�娆�" width="90%" @confirm="submit" @cancel="visible=false">
-    <div class="section">
-      <div class="section-title descriptions">鍩虹璧勬枡</div>
-      <el-form :model="form" label-width="100px">
-        <el-row :gutter="20">
-          <el-col :span="6">
-            <el-form-item label="鍗曟嵁缂栧彿">
-              <el-input v-model="form.billNo" placeholder="浣跨敤绯荤粺缂栧彿" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="瀹㈡埛">
-              <el-select v-model="form.customerId" placeholder="璇烽�夋嫨">
-                <el-option v-for="c in customerOptions" :key="c.value" :label="c.label" :value="c.value" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="鍒跺崟浜�">
-              <el-select v-model="form.makerId" placeholder="璇烽�夋嫨">
-                <el-option v-for="u in userOptions" :key="u.value" :label="u.label" :value="u.value" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="鍒跺崟鏃ユ湡">
-              <el-date-picker v-model="form.makeDate" type="date" value-format="YYYY-MM-DD" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="鐢宠閮ㄩ棬">
-              <el-select v-model="form.applyDeptId" placeholder="璇烽�夋嫨">
-                <el-option v-for="d in deptOptions" :key="d.value" :label="d.label" :value="d.value" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="澶囨敞">
-              <el-input v-model="form.remark" maxlength="100" show-word-limit placeholder="璇疯緭鍏�" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="6">
-            <el-form-item label="闄勪欢">
-              <el-upload :action="uploadUrl" :headers="uploadHeaders" name="files" :on-success="onUploadSuccess">
-                <el-button>涓婁紶鏂囦欢</el-button>
-              </el-upload>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </div>
-
-    <div class="section">
-      <div class="toolbar">
-      <div class="section-title descriptions">浠樻鍒楄〃</div>
-        <el-input v-model="form.discountAmount" placeholder="浼樻儬閲戦" style="width:240px" />
-      </div>
-      <el-table :data="form.paymentList" border>
-        <el-table-column label="浠樻璐﹀彿" minWidth="160">
-          <template #default="scope">
-            <el-input v-model="scope.row.accountNo" placeholder="璇疯緭鍏�" />
-          </template>
-        </el-table-column>
-        <el-table-column label="浠樻璐﹀彿鍚嶇О" minWidth="180">
-          <template #default="scope">
-            <el-select v-model="scope.row.accountName" placeholder="璇烽�夋嫨">
-              <el-option v-for="a in accountOptions" :key="a.value" :label="a.label" :value="a.label" />
-            </el-select>
-          </template>
-        </el-table-column>
-        <el-table-column label="浠樻鏂瑰紡" minWidth="140">
-          <template #default="scope">
-            <el-select v-model="scope.row.payMethod" placeholder="璇烽�夋嫨">
-              <el-option v-for="m in payMethodOptions" :key="m.value" :label="m.label" :value="m.value" />
-            </el-select>
-          </template>
-        </el-table-column>
-        <el-table-column label="瀹為檯浠樻閲戦" minWidth="160">
-          <template #default="scope">
-            <el-input v-model="scope.row.amount" placeholder="璇疯緭鍏�" />
-          </template>
-        </el-table-column>
-        <el-table-column label="鎵嬬画璐�" minWidth="140">
-          <template #default="scope">
-            <el-input v-model="scope.row.fee" placeholder="璇疯緭鍏�" />
-          </template>
-        </el-table-column>
-        <el-table-column label="浜ゆ槗鍙�/绁ㄦ嵁鍙�" minWidth="180">
-          <template #default="scope">
-            <el-input v-model="scope.row.txNo" placeholder="璇疯緭鍏�" />
-          </template>
-        </el-table-column>
-        <el-table-column label="澶囨敞" minWidth="200">
-          <template #default="scope">
-            <el-input v-model="scope.row.remark" maxlength="30" show-word-limit placeholder="璇疯緭鍏�" />
-          </template>
-        </el-table-column>
-        <el-table-column label="鎿嶄綔" minWidth="120" fixed="right">
-          <template #default="scope">
-            <el-button link type="primary" @click="addPayment">鏂板涓�琛�</el-button>
-            <el-button link type="danger" @click="removePayment(scope.$index)">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="summary">鍚堣</div>
-    </div>
-
-    <div class="section">
-      <div class="section-container">
-        <div class="section-title descriptions">婧愬崟淇℃伅</div>
-      <div class="source-toolbar">
-        <el-button @click="clearSource">娓呯┖</el-button>
-        <el-button @click="selectSource">閫夋嫨婧愬崟</el-button>
-        <el-button type="primary" @click="autoWriteOff">鑷姩鏍搁攢</el-button>
-      </div>
-      </div>
-      <el-table :data="form.sourceList" border>
-        <el-table-column label="鍗曟嵁鏃ユ湡" minWidth="160" prop="billDate" />
-        <el-table-column label="鍗曟嵁绫诲瀷" minWidth="160" prop="billType" />
-        <el-table-column label="鍗曟嵁缂栧彿" minWidth="200" prop="billNo" />
-        <el-table-column label="鍗曟嵁閲戦" minWidth="120" prop="billAmount" />
-        <el-table-column label="宸叉牳閿�閲戦" minWidth="120" prop="wroteAmount" />
-        <el-table-column label="鏈牳閿�閲戦" minWidth="120" prop="unWroteAmount" />
-        <el-table-column label="鏈鏍搁攢閲戦" minWidth="160">
-          <template #default="scope">
-            <el-input v-model="scope.row.thisWriteOffAmount" />
-          </template>
-        </el-table-column>
-        <el-table-column label="鎿嶄綔" width="100" fixed="right">
-          <template #default="scope">
-            <el-button link type="danger" @click="removeSource(scope.$index)">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="summary">鍚堣</div>
-    </div>
-
-    <template #footer>
-      <el-button type="primary" @click="submit">纭</el-button>
-      <el-button @click="visible=false">鍙栨秷</el-button>
-    </template>
-  </FormDialog>
-</template>
-
-<script setup>
-import { ref } from 'vue';
-import { getToken } from '@/utils/auth';
-import FormDialog from "@/components/Dialog/FormDialog.vue";
-
-const visible = ref(false);
-const form = ref({
-  billNo: '',
-  customerId: undefined,
-  makerId: undefined,
-  makeDate: '',
-  applyDeptId: undefined,
-  remark: '',
-  discountAmount: '',
-  paymentList: [{ accountNo: '', accountName: '', payMethod: '', amount: '', fee: '', txNo: '', remark: '' }],
-  sourceList: [{ billDate: '', billType: '', billNo: '', billAmount: 0, wroteAmount: 0, unWroteAmount: 0, thisWriteOffAmount: '' }]
-});
-
-const customerOptions = ref([]);
-const userOptions = ref([]);
-const deptOptions = ref([]);
-const accountOptions = ref([]);
-const payMethodOptions = ref([]);
-
-const uploadUrl = import.meta.env.VITE_APP_BASE_API + '/basic/customer-follow/upload';
-const uploadHeaders = { Authorization: 'Bearer ' + getToken() };
-
-function addPayment() {
-  form.value.paymentList.push({ accountNo: '', accountName: '', payMethod: '', amount: '', fee: '', txNo: '', remark: '' });
-}
-function removePayment(i) {
-  form.value.paymentList.splice(i, 1);
-}
-function removeSource(i) {
-  form.value.sourceList.splice(i, 1);
-}
-function clearSource() {
-  form.value.sourceList = [];
-}
-function selectSource() {}
-function autoWriteOff() {}
-function onUploadSuccess() {}
-
-function open(payload) {
-  visible.value = true;
-}
-function submit() {
-  visible.value = false;
-  emit('submitted');
-}
-
-defineExpose({ open });
-</script>
-
-<style scoped>
-.section { background: #fff; border-radius: 8px; box-shadow: 0 2px 12px 0 rgba(0,0,0,0.05); padding: 16px; margin-bottom: 16px; }
-.section-title { font-weight: 600; margin-bottom: 12px; }
-.descriptions {
-  margin-bottom: 20px;
-  display: inline-block;
-  font-size: 1rem;
-  font-weight: 600;
-  padding-left: 12px;
-  position: relative;
-}
-.descriptions::before {
-  content: "";
-  position: absolute;
-  left: 0;
-  top: 50%;
-  transform: translateY(-50%);
-  width: 4px;
-  height: 1rem;
-  background-color: #002FA7;
-  border-radius: 2px;
-}
-.toolbar { margin-bottom: 10px; display: flex;     justify-content: space-between;
-    align-items: center; }
-.source-toolbar { margin-bottom: 10px; display: flex; gap: 8px; }
-.summary { padding: 8px 12px; background: #fff7e6; color: #ad6800; }
-.section-container{display: flex;align-items: center;justify-content: space-between; }
-</style>
diff --git a/src/views/financialManagement/salesRefund/index.vue b/src/views/financialManagement/salesRefund/index.vue
deleted file mode 100644
index ccb775f..0000000
--- a/src/views/financialManagement/salesRefund/index.vue
+++ /dev/null
@@ -1,134 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 浣跨敤鍏叡鎼滅储缁勪欢 -->
-    <SearchPanel
-      v-model="queryParams"
-      :schema="searchSchema"
-      @search="handleQuery"
-      @reset="resetQuery"
-    />
-
-    <!-- 琛ㄦ牸鍖哄煙 -->
-    <el-card class="table-card">
-      <el-table :data="refundList" v-loading="loading" border>
-        <el-table-column label="閫�璐у崟鍙�" prop="returnManagementNo" align="center" />
-        <el-table-column label="瀹㈡埛鍚嶇О" prop="customerName" align="center" />
-        <el-table-column label="閿�鍞崟鍙�" prop="salesContractNo" align="center" />
-        <el-table-column label="搴旈��娆鹃噾棰�" prop="refundAmount" align="center" />
-        <el-table-column label="宸查��娆鹃噾棰�" prop="refundedAmount" align="center" />
-        <el-table-column label="鏈��娆鹃噾棰�" prop="notRefundedAmount" align="center" />
-        <el-table-column label="鐘舵��" prop="status" align="center">
-          <template #default="scope">
-            <dict-tag :options="dictRef.sales_refund_status.value" :value="scope.row.status" />
-          </template>
-        </el-table-column>
-        <el-table-column label="鍒涘缓浜�" prop="createUserName" align="center" />
-        <el-table-column label="鍒涘缓鏃堕棿" prop="createTime" align="center" />
-        <el-table-column label="鎿嶄綔" align="center" width="150">
-          <template #default="scope">
-            <el-button link type="primary" @click="openDetail(scope.row)" style="color: #67C23A">璇︽儏</el-button>
-            <el-button link type="primary" @click="openConfirm(scope.row)">纭</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-
-      <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-      />
-    </el-card>
-<ReceiptandRefundPopupWindow ref="popupRef" @submitted="getList" />
-  </div>
-</template>
-
-<script setup name="SalesRefund">
-import { ref, reactive, onMounted, computed, getCurrentInstance } from 'vue';
-const { proxy } = getCurrentInstance();
-import { listPage, add, update, del } from '@/api/financialManagement/salesRefund';
-import SearchPanel from '@/components/SearchPanel/index.vue';
-import ReceiptandRefundPopupWindow from './components/ReceiptandRefundPopupWindow.vue';
-
-// 鏌ヨ鍙傛暟
-const queryParams = reactive({
-  pageNum: 1,
-  pageSize: 10,
-  returnManagementNo: undefined,
-  customerName: undefined,
-  salesContractNo: undefined,
-  createUserName: undefined,
-  status: undefined
-});
-
-const dictRef = proxy.useDict('sales_refund_status');
-const salesRefundStatusOptions = computed(() => dictRef.sales_refund_status.value || []);
-
-// 鎼滅储鏍忛厤缃�
-const searchSchema = [
-  { type: 'input', prop: 'returnManagementNo', placeholder: '閫�璐у崟鍙�' },
-  { type: 'input', prop: 'customerName', placeholder: '瀹㈡埛鍚嶇О' },
-  { type: 'input', prop: 'salesContractNo', placeholder: '閿�鍞崟鍙�' },
-  { type: 'input', prop: 'createUserName', placeholder: '鍒涘缓浜哄悕绉�' },
-  { type: 'select', prop: 'status', placeholder: '鐘舵��', options: salesRefundStatusOptions }
-];
-
-const loading = ref(false);
-const total = ref(0);
-const refundList = ref([]);
-const popupRef = ref(null);
-
-/** 鏌ヨ鍒楄〃 */
-function getList() {
-  loading.value = true;
-  const { pageNum, pageSize, ...filters } = queryParams;
-  listPage({
-    current: pageNum,
-    size: pageSize,
-    ...filters
-  })
-    .then(res => {
-      refundList.value = res?.data?.records || res?.rows || [];
-      total.value = res?.data?.total || res?.total || 0;
-    })
-    .finally(() => {
-      loading.value = false;
-    });
-}
-
-/** 鎼滅储鎸夐挳鎿嶄綔 */
-function handleQuery() {
-  queryParams.pageNum = 1;
-  getList();
-}
-
-/** 閲嶇疆鎸夐挳鎿嶄綔 */
-function resetQuery() {
-  handleQuery();
-}
-
-function openDetail(row) {
-  if (popupRef.value) {
-    popupRef.value.open({ mode: 'detail', row });
-  }
-}
-function openConfirm(row) {
-  if (popupRef.value) {
-    popupRef.value.open({ mode: 'confirm', row });
-  }
-}
-
-onMounted(() => {
-  getList();
-});
-</script>
-
-<style scoped lang="scss">
-.table-card {
-  border-radius: 8px;
-  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
-}
-</style>
-
-<!-- keep-alive child -->
diff --git a/src/views/procurementManagement/invoiceEntry/components/ExpandTable.vue b/src/views/procurementManagement/invoiceEntry/components/ExpandTable.vue
deleted file mode 100644
index d329768..0000000
--- a/src/views/procurementManagement/invoiceEntry/components/ExpandTable.vue
+++ /dev/null
@@ -1,144 +0,0 @@
-<template>
-  <PIMTable
-    rowKey="id"
-    :column="columns"
-    :tableData="dataList"
-    :tableLoading="loading"
-		:summaryMethod="summarizeChildrenTable"
-		:isShowSummary="true"
-    :isShowPagination="false"
-    height="auto"
-  >
-  </PIMTable>
-</template>
-
-<script setup>
-import { usePaginationApi } from "@/hooks/usePaginationApi";
-import { productList } from "@/api/procurementManagement/procurementLedger.js";
-import { nextTick } from "vue";
-const { proxy } = getCurrentInstance();
-
-defineOptions({
-  name: "鏉ョエ鐧昏鎶樺彔琛�",
-});
-
-const {
-  loading,
-  filters,
-  columns,
-  dataList,
-  pagination,
-  getTableData,
-  resetFilters,
-} = usePaginationApi(
-  productList,
-  {
-    salesLedgerId: undefined,
-    type: 2,
-  },
-  [
-    {
-      label: "浜у搧澶х被",
-      prop: "productCategory",
-    },
-    {
-      label: "瑙勬牸鍨嬪彿",
-      prop: "specificationModel",
-    },
-    {
-      label: "鍗曚綅",
-      prop: "unit",
-    },
-    {
-      label: "鏁伴噺",
-      prop: "quantity",
-    },
-    {
-      label: "绋庣巼(%)",
-      prop: "taxRate",
-    },
-    {
-      label: "鍚◣鍗曚环(鍏�)",
-      prop: "taxInclusiveUnitPrice",
-			width:200,
-      formatData: (val) => {
-        return val ? parseFloat(val).toFixed(2) : "-";
-      },
-    },
-    {
-      label: "鍚◣鎬讳环(鍏�)",
-      prop: "taxInclusiveTotalPrice",
-			width:200,
-      formatData: (val) => {
-        return val ? parseFloat(val).toFixed(2) : "-";
-      },
-    },
-    {
-      label: "涓嶅惈绋庢�讳环(鍏�)",
-      prop: "taxExclusiveTotalPrice",
-			width:200,
-      formatData: (val) => {
-        return val ? parseFloat(val).toFixed(2) : "-";
-      },
-    },
-    {
-      label: "鏈鏉ョエ閲戦(鍏�)",
-      prop: "ticketsAmount",
-			width:200,
-      formatData: (val) => {
-        return val ? parseFloat(val).toFixed(2) : "-";
-      },
-    },
-    {
-      label: "鏈潵绁ㄦ暟",
-      prop: "futureTickets",
-    },
-    {
-      label: "鏈潵绁ㄩ噾棰�(鍏�)",
-      prop: "futureTicketsAmount",
-			width:200,
-      formatData: (val) => {
-        return val ? parseFloat(val).toFixed(2) : "-";
-      },
-    },
-  ],
-  {},
-  {},
-  (data) => {
-    dataList.value = data;
-  }
-);
-
-const getList = async (id) => {
-  await nextTick();
-  filters.salesLedgerId = id;
-  // 璁剧疆涓�涓緢澶х殑 pageSize 浠ヨ幏鍙栨墍鏈夋暟鎹�
-  pagination.pageSize = 10000;
-  pagination.currentPage = 1;
-  getTableData();
-};
-// 瀛愯〃鍚堣鏂规硶
-const summarizeChildrenTable = (param) => {
-	return proxy.summarizeTable(
-		param,
-		[
-			"taxInclusiveUnitPrice",
-			"taxInclusiveTotalPrice",
-			"taxExclusiveTotalPrice",
-			"ticketsNum",
-			"ticketsAmount",
-			"futureTickets",
-			"futureTicketsAmount",
-		],
-		{
-			ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-			futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-		}
-	);
-};
-defineExpose({
-  getList,
-});
-</script>
-
-<style lang="scss" scoped></style>
diff --git a/src/views/procurementManagement/invoiceEntry/components/Modal.vue b/src/views/procurementManagement/invoiceEntry/components/Modal.vue
deleted file mode 100644
index 33d5144..0000000
--- a/src/views/procurementManagement/invoiceEntry/components/Modal.vue
+++ /dev/null
@@ -1,718 +0,0 @@
-<template>
-	<el-dialog :title="modalOptions.title" v-model="visible" width="70%" draggable>
-		<el-form
-			ref="formRef"
-			:model="form"
-			:rules="rules"
-			label-width="120px"
-			label-position="top"
-		>
-			<el-row :gutter="30">
-				<el-col :span="12">
-					<el-form-item label="閲囪喘鍚堝悓鍙凤細" prop="purchaseLedgerNo">
-						<el-input v-model="form.purchaseLedgerNo" disabled placeholder="澶氬悎鍚屾壒閲忓鐞嗭紙鍏蜂綋鍚堝悓鍙疯浜у搧鍒楄〃锛�" />
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="閿�鍞悎鍚屽彿锛�" prop="salesContractNo">
-						<el-input
-							v-model="form.salesContractNo"
-							placeholder="鑷姩濉厖"
-							clearable
-							disabled
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="渚涘簲鍟嗗悕绉帮細" prop="supplierName">
-						<el-input
-							v-model="form.supplierName"
-							placeholder="鑷姩濉厖"
-							clearable
-							disabled
-						/>
-					</el-form-item>
-				</el-col>
-<!--				<el-col :span="12">-->
-<!--					<el-form-item label="椤圭洰鍚嶇О锛�" prop="projectName">-->
-<!--						<el-input-->
-<!--							v-model="form.projectName"-->
-<!--							placeholder="鑷姩濉厖"-->
-<!--							clearable-->
-<!--							disabled-->
-<!--						/>-->
-<!--					</el-form-item>-->
-<!--				</el-col>-->
-				<el-col :span="12">
-					<el-form-item label="鍙戠エ鍙凤細" prop="invoiceNumber">
-						<el-input
-							v-model="form.invoiceNumber"
-							placeholder="璇疯緭鍏�"
-							clearable
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="鍙戠エ閲戦(鍏�)锛�" prop="invoiceAmount">
-						<el-input-number :step="0.01" :min="0" style="width: 100%"
-														 v-model="form.invoiceAmount"
-														 placeholder="璇疯緭鍏ュ彂绁ㄩ噾棰�"
-														 clearable
-                             disabled
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="褰曞叆浜猴細" prop="issUer">
-						<el-input
-							v-model="form.issUer"
-							placeholder="璇疯緭鍏�"
-							clearable
-							disabled
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="寮�绁ㄦ棩鏈燂細" prop="entryDate">
-						<el-date-picker
-							style="width: 100%"
-							v-model="form.entryDate"
-							type="date"
-							value-format="YYYY-MM-DD"
-							format="YYYY-MM-DD"
-							clearable
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="褰曞叆鏃ユ湡锛�" prop="enterDate">
-						<el-date-picker
-							style="width: 100%"
-							v-model="form.enterDate"
-							type="date"
-							value-format="YYYY-MM-DD"
-							format="YYYY-MM-DD"
-							clearable
-						/>
-					</el-form-item>
-				</el-col>
-			
-			</el-row>
-			<el-form-item label="浜у搧淇℃伅锛�"> </el-form-item>
-			<el-table
-				:data="form.productData"
-				border
-				show-summary
-				:summary-method="summarizeChildrenTable"
-			>
-				<el-table-column align="center" label="搴忓彿" type="index" width="60" />
-				<el-table-column label="鎵�灞炲悎鍚�" prop="purchaseLedgerNo" width="200">
-					<template #default="{ row }">
-						<el-tag type="primary">{{ row.purchaseLedgerNo }}</el-tag>
-					</template>
-				</el-table-column>
-				<el-table-column label="浜у搧澶х被" prop="productCategory" />
-				<el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="150" />
-				<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="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" width="180">
-					<template #default="scope">
-						<el-input-number 
-							:step="0.1" 
-							:min="0" 
-							:max="scope.row.tempFutureTickets || 0" 
-							style="width: 100%"
-							:precision="2"
-							v-model="scope.row.ticketsNum"
-							:disabled="isProductDisabled(scope.row)"
-							@change="invoiceNumBlur(scope.row)"
-						/>
-					</template>
-				</el-table-column>
-				<el-table-column
-					label="鏈寮�绁ㄩ噾棰�(鍏�)"
-					prop="ticketsAmount"
-					width="180"
-				>
-					<template #default="scope">
-						<el-input-number 
-							:step="0.01" 
-							:min="0" 
-							style="width: 100%"
-							:precision="2"
-							v-model="scope.row.ticketsAmount"
-							:disabled="isProductDisabled(scope.row)"
-							@change="invoiceAmountBlur(scope.row)"
-						/>
-					</template>
-				</el-table-column>
-				<el-table-column
-					label="鏈潵绁ㄦ暟"
-					prop="futureTickets"
-					:formatter="formattedNumber"
-				/>
-				<el-table-column
-					label="鏈鏉ョエ閲戦(鍏�)"
-					prop="ticketsAmount"
-					:formatter="formattedNumber"
-				/>
-				<el-table-column
-					label="鏈潵绁ㄦ暟"
-					prop="futureTickets"
-					:formatter="formattedNumber"
-				/>
-				<el-table-column
-					label="鏈潵绁ㄩ噾棰�(鍏�)"
-					prop="futureTicketsAmount"
-					:formatter="formattedNumber"
-				/>
-			</el-table>
-		</el-form>
-		<template #footer>
-			<el-button type="primary" :loading="modalLoading" @click="submitForm">
-				纭
-			</el-button>
-			<el-button @click="closeModal">鍙栨秷</el-button>
-		</template>
-	</el-dialog>
-</template>
-
-<script setup>
-import { ref, getCurrentInstance } from "vue";
-import { defineEmits } from 'vue';
-import { useModal } from "@/hooks/useModal";
-import useFormData from "@/hooks/useFormData";
-import {
-	getPurchaseNoById,
-	getInfo,
-	addOrUpdateRegistration,
-} from "@/api/procurementManagement/invoiceEntry.js";
-import { getPurchaseById } from "@/api/procurementManagement/procurementLedger.js";
-import useUserStore from "@/store/modules/user";
-import dayjs from "dayjs";
-
-defineOptions({
-	name: "鏉ョエ鐧昏妯℃�佹",
-});
-
-const userStore = useUserStore();
-const formRef = ref();
-const { proxy } = getCurrentInstance();
-const { form } = useFormData({
-	purchaseLedgerNo: undefined, // 閲囪喘鍚堝悓鍙�
-	salesContractNo: undefined, // 閿�鍞悎鍚屽彿
-	supplierName: undefined, // 渚涘簲鍟嗗悕绉�
-	projectName: undefined, // 椤圭洰鍚嶇О
-	invoiceNumber: undefined, // 鍙戠エ鍙�
-	invoiceAmount: undefined, // 鍙戠エ閲戦(鍏�)
-	issUerId: userStore.id, // 褰曞叆浜�
-	issUer: userStore.nickName, // 褰曞叆浜�
-	entryDate: undefined, // 寮�绁ㄦ棩鏈�
-	salesContractNoId: undefined, // 寮�绁ㄦ棩鏈�
-	enterDate: dayjs().format("YYYY-MM-DD"),
-	productData: [], // 琛ㄦ牸
-});
-
-const selectedContracts = ref([]); // 瀛樺偍閫変腑鐨勫悎鍚屾暟鎹�
-
-const rules = ref({
-	invoiceNumber: [
-		{ required: true, message: "璇疯緭鍏ュ彂绁ㄥ彿", trigger: "blur" },
-		{ type: "string" },
-	],
-	invoiceAmount: [
-		{ required: true, message: "璇疯緭鍏ュ彂绁ㄩ噾棰�", trigger: "blur" },
-	],
-	entryDate: [{ required: true, message: "璇烽�夋嫨寮�绁ㄦ棩鏈�", trigger: "change" }],
-	enterDate: [{ required: true, message: "璇烽�夋嫨褰曞叆鏃ユ湡", trigger: "change" }],
-});
-
-const {
-	id,
-	visible,
-	loading: modalLoading,
-	openModal,
-	modalOptions,
-	handleConfirm,
-	closeModal,
-} = useModal({
-	title: "鏉ョエ鐧昏",
-});
-
-const emit = defineEmits(['refreshList']);
-
-const columns = [
-	{
-		label: "浜у搧澶х被",
-		prop: "productCategory",
-		width: 120,
-	},
-	{
-		label: "瑙勬牸鍨嬪彿",
-		prop: "specificationModel",
-		width: 120,
-	},
-	{
-		label: "鍗曚綅",
-		prop: "unit",
-		width: 80,
-	},
-	{
-		label: "鏁伴噺",
-		prop: "quantity",
-		width: 80,
-	},
-	{
-		label: "绋庣巼(%)",
-		prop: "taxRate",
-		width: 80,
-	},
-	{
-		label: "褰曞叆鏃ユ湡",
-		prop: "registerDate",
-		width: 120,
-	},
-	{
-		label: "鍚◣鍗曚环(鍏�)",
-		prop: "taxInclusiveUnitPrice",
-		width: 150,
-		formatData: (val) => {
-			return val ? parseFloat(val).toFixed(2) : 0;
-		},
-	},
-	{
-		label: "鍚◣鎬讳环(鍏�)",
-		prop: "taxInclusiveTotalPrice",
-		width: 150,
-		formatData: (val) => {
-			return parseFloat(val).toFixed(2) ?? 0;
-		},
-	},
-	{
-		label: "涓嶅惈绋庢�讳环(鍏�)",
-		prop: "taxExclusiveTotalPrice",
-		width: 150,
-		formatData: (val) => {
-			return parseFloat(val).toFixed(2) ?? 0;
-		},
-	},
-	{
-		label: "鏈鏉ョエ鏁�",
-		prop: "ticketsNum",
-		dataType: "slot",
-		slot: "ticketsNumRef",
-		width: 180,
-		align: "center",
-	},
-	{
-		label: "鏈鏉ョエ閲戦(鍏�)",
-		prop: "ticketsAmount",
-		dataType: "slot",
-		slot: "ticketsAmountRef",
-		width: 180,
-		align: "center",
-	},
-	{
-		label: "鏈潵绁ㄦ暟",
-		prop: "futureTickets",
-		width: 100,
-	},
-	{
-		label: "鏈潵绁ㄩ噾棰�(鍏�)",
-		prop: "futureTicketsAmount",
-		width: 200,
-	},
-];
-const formattedNumber = (row, column, cellValue) => {
-	if (cellValue == 0) {
-		return parseFloat(cellValue).toFixed(2);
-	}
-	if (cellValue) {
-		return parseFloat(cellValue).toFixed(2);
-	} else {
-		return cellValue;
-	}
-};
-const getTableData = async (type, selectedRows) => {
-	if (type == "add") {
-		// 妫�鏌ユ墍鏈夐�夋嫨鐨勫悎鍚屾槸鍚﹀叿鏈夌浉鍚岀殑渚涘簲鍟嗗悕绉�
-		const firstRow = selectedRows[0];
-		const isSameSupplier = selectedRows.every(row =>
-			row.supplierName === firstRow.supplierName
-		);
-		
-		if (!isSameSupplier) {
-			proxy.$modal.msgError("璇烽�夋嫨鐩稿悓渚涘簲鍟嗗悕绉扮殑鍚堝悓");
-			return;
-		}
-		
-		// 鍏佽涓嶅悓鐨勯噰璐悎鍚屽彿鎵归噺澶勭悊锛屾棤闇�妫�鏌ラ噸澶�
-		
-		// 娓呯┖琛ㄥ崟鏁版嵁
-		Object.keys(form).forEach(key => {
-			if (key !== 'productData') {
-				form[key] = undefined;
-			}
-		});
-		form.productData = [];
-		
-		// 鍔犺浇鎵�鏈夐�変腑鍚堝悓鐨勪骇鍝佹暟鎹�
-		const promises = selectedRows.map(row =>
-			getInfo({ id: row.id })
-		);
-		
-		Promise.all(promises).then(results => {
-			// 鍚堝苟鎵�鏈夊悎鍚岀殑浜у搧鏁版嵁锛屽苟涓烘瘡涓骇鍝佹坊鍔犲搴旂殑鍚堝悓淇℃伅
-			const allProductData = [];
-			results.forEach((result, index) => {
-				const contract = selectedRows[index];
-				const contractId = contract.id;
-				if (result.data && result.data.productData) {
-					result.data.productData.forEach(item => {
-						allProductData.push({
-							...item,
-							purchaseLedgerId: contractId, // 娣诲姞鍚堝悓ID鐢ㄤ簬绛涢��
-							purchaseLedgerNo: contract.purchaseContractNumber, // 娣诲姞閲囪喘鍚堝悓鍙�
-							supplierName: contract.supplierName, // 娣诲姞渚涘簲鍟嗗悕绉�
-							projectName: contract.projectName // 娣诲姞椤圭洰鍚嶇О
-							// 淇濈暀浜у搧鏈韩鐨刬d锛屼笉瑕嗙洊
-						});
-					});
-				}
-			});
-			
-			// 璁剧疆琛ㄥ崟鏁版嵁锛堜娇鐢ㄧ涓�涓悎鍚岀殑鍩烘湰淇℃伅锛岄噰璐悎鍚屽彿鐣欑┖锛�
-			form.purchaseLedgerNo = ""; // 閲囪喘鍚堝悓鍙风暀绌猴紝鍥犱负浼氬湪浜у搧琛ㄦ牸涓垎鍒樉绀�
-			form.invoiceNumber = "";
-			form.entryDate = dayjs().format("YYYY-MM-DD");
-			form.enterDate = dayjs().format("YYYY-MM-DD");
-			form.salesContractNo = results[0].data.salesContractNo;
-			form.projectName = results[0].data.projectName;
-			form.supplierName = results[0].data.supplierName;
-			// 淇濈暀褰曞叆浜轰俊鎭�
-			form.issUerId = userStore.id;
-			form.issUer = userStore.nickName;
-			
-			// 璁剧疆浜у搧鏁版嵁锛屽苟鍒濆鍖栧紑绁ㄦ暟閲忓拰閲戦
-			allProductData.forEach(item => {
-				// 淇濆瓨"鍘熷鏈潵绁ㄦ暟/閲戦"锛堢敤浜庢牎楠屼笌璁$畻锛�
-				// 浼樺厛浣跨敤鍚庣杩斿洖鐨� futureTickets/futureTicketsAmount锛涙病鏈夊垯鍥為��鍒� quantity/taxInclusiveTotalPrice
-				item.tempFutureTickets = Number(
-					item.futureTickets !== undefined ? item.futureTickets : (item.quantity || 0)
-				);
-				item.tempFutureTicketsAmount = Number(
-					item.futureTicketsAmount !== undefined ? item.futureTicketsAmount : (item.taxInclusiveTotalPrice || 0)
-				);
-
-				// 濡傛灉鏈潵绁ㄩ噾棰濅负0锛屽垯鏈寮�绁ㄦ暟鍜岄噾棰濋兘璁剧疆涓�0
-				if (item.tempFutureTicketsAmount <= 0) {
-					item.ticketsNum = 0;
-					item.ticketsAmount = 0;
-					item.futureTickets = Number(item.tempFutureTickets || 0);
-					item.futureTicketsAmount = 0;
-				} else {
-					// 鏂板鏃讹細鏈寮�绁ㄦ暟榛樿 = 鏈潵绁ㄦ暟锛堜笖涓嶈兘澶т簬鏈潵绁ㄦ暟锛�
-					item.ticketsNum = Number(item.tempFutureTickets || 0);
-					// 鑱斿姩璁$畻鏈寮�绁ㄩ噾棰濄�佹湭鏉ョエ鏁般�佹湭鏉ョエ閲戦
-					const unitPrice = Number(item.taxInclusiveUnitPrice || 0);
-					item.ticketsAmount = Number((item.ticketsNum * unitPrice).toFixed(2));
-					item.futureTickets = Number((item.tempFutureTickets - item.ticketsNum).toFixed(2));
-					item.futureTicketsAmount = Number(
-						(item.tempFutureTicketsAmount - item.ticketsAmount).toFixed(2)
-					);
-				}
-			});
-			
-			form.productData = allProductData;
-			
-			// 璁$畻鍙戠エ閲戦锛氭墍鏈変骇鍝佺殑鏈寮�绁ㄩ噾棰濅箣鍜岋紙鏂板榛樿 0锛�
-			const totalAmount = allProductData.reduce((sum, item) => {
-				return sum + (Number(item.ticketsAmount) || 0);
-			}, 0);
-			form.invoiceAmount = Number(totalAmount.toFixed(2));
-			
-			// 瀛樺偍閫変腑鐨勫悎鍚屾暟鎹�
-			selectedContracts.value = selectedRows;
-		});
-	} else if (type == "edit") {
-		const id = Array.isArray(selectedRows) ? selectedRows[0].id : selectedRows;
-		const response = await getPurchaseById({ id, type: 2 });
-		// 鍏煎涓嶅悓鐨勮繑鍥炴牸寮忥細鍙兘鏄� { code, data } 鎴栫洿鎺ヨ繑鍥炴暟鎹�
-		const data = response.data || response;
-		
-		// 鍏煎涓嶅悓鐨勫瓧娈靛悕锛歱urchaseContractNumber 鎴� purchaseLedgerNo
-		form.purchaseLedgerNo = data.purchaseContractNumber || data.purchaseLedgerNo || "";
-		form.invoiceAmount = data.invoiceAmount;
-		form.invoiceNumber = data.invoiceNumber;
-		form.salesContractNo = data.salesContractNo;
-		form.projectName = data.projectName;
-		form.supplierName = data.supplierName;
-		form.entryDate = data.entryDate;
-		form.enterDate = data.enterDate || dayjs().format("YYYY-MM-DD");
-		
-		// 缂栬緫鏃朵篃闇�瑕佸垵濮嬪寲浜у搧鏁版嵁鐨� tempFutureTickets 鍜� tempFutureTicketsAmount
-		// 鍚屾椂涓烘瘡涓骇鍝佹坊鍔犲悎鍚屽彿绛変俊鎭�
-		const contractNumber = data.purchaseContractNumber || data.purchaseLedgerNo || "";
-		if (data.productData && Array.isArray(data.productData)) {
-			data.productData.forEach(item => {
-				// 淇濆瓨"鍘熷鏈潵绁ㄦ暟/閲戦"锛堢敤浜庢牎楠屼笌璁$畻锛�
-				// 浼樺厛浣跨敤鍚庣杩斿洖鐨� futureTickets/futureTicketsAmount锛涙病鏈夊垯鍥為��鍒� quantity/taxInclusiveTotalPrice
-				item.tempFutureTickets = Number(
-					item.futureTickets !== undefined ? item.futureTickets : (item.quantity || 0)
-				);
-				item.tempFutureTicketsAmount = Number(
-					item.futureTicketsAmount !== undefined ? item.futureTicketsAmount : (item.taxInclusiveTotalPrice || 0)
-				);
-				
-				// 纭繚姣忎釜浜у搧閮芥湁鍚堝悓鍙凤紝鐢ㄤ簬鏄剧ず鍦�"鎵�灞炲悎鍚�"鍒�
-				if (!item.purchaseLedgerNo) {
-					item.purchaseLedgerNo = contractNumber;
-				}
-			});
-		}
-		
-		form.productData = data.productData || [];
-		
-		// 缂栬緫妯″紡涓嬶紝鏍规嵁浜у搧鏁版嵁涓殑鏈寮�绁ㄩ噾棰濊嚜鍔ㄨ绠楀彂绁ㄩ噾棰�
-		calculateinvoiceAmount();
-	}
-};
-// 瀛愯〃鍚堣鏂规硶
-const summarizeChildrenTable = (param) => {
-	return proxy.summarizeTable(param, [
-		"taxInclusiveUnitPrice",
-		"taxInclusiveTotalPrice",
-		"taxExclusiveTotalPrice",
-		"ticketsNum",
-		"ticketsAmount",
-		"ticketsAmountRef",
-		"futureTickets",
-		"futureTicketsAmount",
-	]);
-};
-//鏈鏉ョエ鏁板け鐒︽搷浣�
-const invoiceNumBlur = (row) => {
-	if (!row.ticketsNum || row.ticketsNum === "") {
-		row.ticketsNum = 0;
-	}
-	if (Number(row.ticketsNum) > Number(row.tempFutureTickets)) {
-		proxy.$modal.msgWarning("鏈寮�绁ㄦ暟涓嶈兘澶т簬鏈潵绁ㄦ暟");
-		row.ticketsNum = Number(row.tempFutureTickets || 0);
-	}
-	// 璁$畻鏈鏉ョエ閲戦
-	row.ticketsAmount = Number((Number(row.ticketsNum) * Number(row.taxInclusiveUnitPrice || 0)).toFixed(2));
-	// 璁$畻鏈潵绁ㄦ暟
-	row.futureTickets = Number((Number(row.tempFutureTickets || 0) - Number(row.ticketsNum || 0)).toFixed(2));
-	// 璁$畻鏈潵绁ㄩ噾棰�
-	row.futureTicketsAmount = Number((Number(row.tempFutureTicketsAmount || 0) - Number(row.ticketsAmount || 0)).toFixed(2));
-	calculateinvoiceAmount();
-};
-
-// 鏈鏉ョエ閲戦澶辩劍鎿嶄綔
-const invoiceAmountBlur = (row) => {
-	if (!row.ticketsAmount) {
-		row.ticketsAmount = 0;
-	}
-	// 璁$畻鏄惁瓒呰繃鏉ョエ鎬婚噾棰�
-	if (row.ticketsAmount > row.tempFutureTicketsAmount) {
-		proxy.$modal.msgWarning("鏈鏉ョエ閲戦涓嶅緱澶т簬鏈潵绁ㄩ噾棰�");
-		row.ticketsAmount = Number(row.tempFutureTicketsAmount || 0);
-	}
-	// 璁$畻鏈鏉ョエ鏁�
-	row.ticketsNum = Number(
-		(row.ticketsAmount / row.taxInclusiveUnitPrice).toFixed(2)
-	);
-	// 妫�鏌ユ湰娆″紑绁ㄦ暟鏄惁澶т簬鏈潵绁ㄦ暟
-	if (Number(row.ticketsNum) > Number(row.tempFutureTickets)) {
-		proxy.$modal.msgWarning("鏈寮�绁ㄦ暟涓嶈兘澶т簬鏈潵绁ㄦ暟");
-		row.ticketsNum = Number(row.tempFutureTickets || 0);
-		// 閲嶆柊璁$畻鏈鏉ョエ閲戦
-		row.ticketsAmount = Number((Number(row.ticketsNum) * Number(row.taxInclusiveUnitPrice || 0)).toFixed(2));
-	}
-	// 璁$畻鏈潵绁ㄦ暟
-	row.futureTickets = Number((Number(row.tempFutureTickets || 0) - Number(row.ticketsNum || 0)).toFixed(2));
-	// 璁$畻鏈潵绁ㄩ噾棰�
-	row.futureTicketsAmount = Number((Number(row.tempFutureTicketsAmount || 0) - Number(row.ticketsAmount || 0)).toFixed(2));
-	calculateinvoiceAmount();
-};
-
-const calculateinvoiceAmount = () => {
-	let invoiceAmountTotal = 0;
-	form.productData.forEach((item) => {
-		if (item.ticketsAmount) {
-			invoiceAmountTotal += Number(item.ticketsAmount);
-		}
-	});
-	form.invoiceAmount = Number(invoiceAmountTotal.toFixed(2));
-};
-
-// 鍒ゆ柇浜у搧鏄惁鍙互缁х画鏉ョエ鎿嶄綔锛氬鏋滄湭鏉ョエ鏁板拰鏈潵绁ㄩ噾棰濋兘涓�0鎴栧皬浜庣瓑浜�0锛屽垯绂佺敤
-const isProductDisabled = (row) => {
-	// 浼樺厛浣跨敤 tempFutureTickets锛堝師濮嬫湭鏉ョエ鏁帮級锛屽鏋滄病鏈夊垯浣跨敤 futureTickets
-	const futureTickets = Number(row.tempFutureTickets !== undefined 
-		? row.tempFutureTickets 
-		: (row.futureTickets !== undefined ? row.futureTickets : 0));
-	
-	// 浼樺厛浣跨敤 tempFutureTicketsAmount锛堝師濮嬫湭鏉ョエ閲戦锛夛紝濡傛灉娌℃湁鍒欎娇鐢� futureTicketsAmount
-	const futureAmount = Number(row.tempFutureTicketsAmount !== undefined 
-		? row.tempFutureTicketsAmount 
-		: (row.futureTicketsAmount !== undefined ? row.futureTicketsAmount : 0));
-	
-	// 鍙湁褰撴湭鏉ョエ鏁板拰鏈潵绁ㄩ噾棰濋兘涓�0鎴栧皬浜庣瓑浜�0鏃讹紝鎵嶇鐢�
-	return futureTickets <= 0 && futureAmount <= 0;
-};
-
-const open = async (type, selectedRows) => {
-	// 纭繚 modalOptions.value 鏄璞�
-	if (!modalOptions.value || typeof modalOptions.value !== 'object') {
-		modalOptions.value = {};
-	}
-	
-	// 鏍规嵁鎿嶄綔绫诲瀷鍜岄�変腑鏁版嵁璁剧疆鏍囬
-	if (Array.isArray(selectedRows) && selectedRows.length > 1) {
-		// 鎵归噺鎿嶄綔
-		modalOptions.value.title = type === "add" ? `鎵归噺鏂板 (${selectedRows.length}鏉�)` : `鎵归噺缂栬緫 (${selectedRows.length}鏉�)`;
-	} else {
-		// 鍗曚釜鎿嶄綔 - 鏄庣‘鍒ゆ柇 type 鐨勫��
-		if (type === "add" || type === "鏂板") {
-			modalOptions.value.title = "鏂板";
-		} else if (type === "edit" || type === "缂栬緫") {
-			modalOptions.value.title = "缂栬緫";
-		} else {
-			modalOptions.value.title = "鏉ョエ鐧昏"; // 榛樿鏍囬
-		}
-	}
-	
-	visible.value = true;
-	
-	// 濡傛灉鏄崟涓搷浣滐紝鑾峰彇id
-	if (!Array.isArray(selectedRows) || selectedRows.length === 1) {
-		const idValue = Array.isArray(selectedRows) ? selectedRows[0].id : selectedRows;
-		id.value = idValue;
-	}
-	
-	await getTableData(type, selectedRows);
-};
-
-
-const closeAndRefresh = () => {
-	closeModal();
-	emit('refreshList');
-};
-
-const submitForm = () => {
-	proxy.$refs["formRef"].validate((valid) => {
-		if (valid) {
-			// 濡傛灉鏄壒閲忔搷浣滐紝灏嗘墍鏈夊悎鍚岀殑鏁版嵁鏀惧湪涓�涓暟缁勯噷锛屽彧璋冪敤涓�娆℃帴鍙�
-			if (selectedContracts.value.length > 1) {
-				// 鍒涘缓鍖呭惈鎵�鏈夊悎鍚屾暟鎹殑鏁扮粍
-				const batchData = selectedContracts.value.map(contract => {
-					// 绛涢�夊嚭灞炰簬褰撳墠鍚堝悓鐨勪骇鍝佹暟鎹�
-					const contractProductData = form.productData.filter(item =>
-						item.purchaseLedgerId === contract.id
-					);
-					
-					// 涓烘瘡涓噰璐悎鍚屽垱寤虹嫭绔嬬殑瀵硅薄
-					return {
-					// 鍩虹琛ㄥ崟鏁版嵁
-					invoiceNumber: form.invoiceNumber,
-					invoiceAmount: form.invoiceAmount,
-					entryDate: form.entryDate,
-					enterDate: form.enterDate,
-					issUerId: form.issUerId, // 褰曞叆浜篿d
-					issUer: form.issUer, // 褰曞叆浜�
-					
-					// 鍚堝悓瀹為檯淇℃伅
-					purchaseLedgerId: contract.id, // 浣跨敤id浣滀负瀛楁鍚嶏紝鍊间负purchaseLedgerId
-						purchaseContractNumber: contract.purchaseContractNumber, // 浣跨敤瀹為檯鐨勯噰璐悎鍚屽彿
-						salesContractNo: contract.salesContractNo, // 浣跨敤瀹為檯鐨勯攢鍞悎鍚屽彿
-						supplierName: contract.supplierName, // 浣跨敤瀹為檯鐨勪緵搴斿晢鍚嶇О
-						projectName: contract.projectName, // 浣跨敤瀹為檯鐨勯」鐩悕绉�
-						
-						// 浜у搧鏁版嵁
-						productData: proxy.HaveJson(contractProductData),
-						
-						// 鎵归噺鏍囪瘑
-						isBatch: true,
-						type: 4
-					};
-				});
-				
-				// 鍙皟鐢ㄤ竴娆℃帴鍙o紝浼犻�掑寘鍚墍鏈夊悎鍚屾暟鎹殑鏁扮粍
-				modalLoading.value = true;
-				addOrUpdateRegistration(batchData).then((res) => {
-					modalLoading.value = false;
-					if (res.code === 200) {
-						proxy.$modal.msgSuccess("鎵归噺鐧昏鎴愬姛");
-						closeAndRefresh();
-					}
-				}).catch(() => {
-					modalLoading.value = false;
-					proxy.$modal.msgError("鎵归噺鐧昏澶辫触");
-				});
-			} else {
-					// 鍗曚釜鍚堝悓鎻愪氦閫昏緫 - 浠ユ暟缁勬牸寮忎紶閫�
-					const singleContract = selectedContracts.value[0];
-					const singleFormArray = [{
-					// 鍩虹琛ㄥ崟鏁版嵁
-					invoiceNumber: form.invoiceNumber,
-					invoiceAmount: form.invoiceAmount,
-					entryDate: form.entryDate,
-					enterDate: form.enterDate,
-					issUerId: form.issUerId, // 褰曞叆浜篿d
-					issUer: form.issUer, // 褰曞叆浜�
-					
-					// 鍚堝悓瀹為檯淇℃伅
-					purchaseLedgerId: singleContract.id, // 浣跨敤id浣滀负瀛楁鍚嶏紝鍊间负purchaseLedgerId
-						purchaseContractNumber: singleContract.purchaseContractNumber, // 浣跨敤瀹為檯鐨勯噰璐悎鍚屽彿
-						salesContractNo: singleContract.salesContractNo, // 浣跨敤瀹為檯鐨勯攢鍞悎鍚屽彿
-						supplierName: singleContract.supplierName, // 浣跨敤瀹為檯鐨勪緵搴斿晢鍚嶇О
-						projectName: singleContract.projectName, // 浣跨敤瀹為檯鐨勯」鐩悕绉�
-						
-						// 浜у搧鏁版嵁
-						productData: proxy.HaveJson(form.productData),
-						
-						// 鎵归噺鏍囪瘑
-						isBatch: false,
-						type: 4
-					}];
-					
-					modalLoading.value = true;
-					addOrUpdateRegistration(singleFormArray).then((res) => {
-						modalLoading.value = false;
-						if (res.code === 200) {
-							proxy.$modal.msgSuccess("鐧昏鎴愬姛");
-							closeAndRefresh();
-						}
-					}).catch(() => {
-						modalLoading.value = false;
-						proxy.$modal.msgError("鐧昏澶辫触");
-					});
-				}
-		}
-	});
-};
-
-defineExpose({
-	open,
-	closeAndRefresh,
-});
-</script>
-
-<style lang="scss" scoped></style>
diff --git a/src/views/procurementManagement/invoiceEntry/index.vue b/src/views/procurementManagement/invoiceEntry/index.vue
deleted file mode 100644
index 8c435e0..0000000
--- a/src/views/procurementManagement/invoiceEntry/index.vue
+++ /dev/null
@@ -1,311 +0,0 @@
-<template>
-  <div class="app-container">
-    <div class="search_form">
-      <el-form :model="filters" :inline="true">
-        <el-form-item label="渚涘簲鍟嗗悕绉�">
-          <el-input
-              v-model="filters.supplierName"
-              placeholder="璇疯緭鍏ュ悕绉版悳绱�"
-              clearable
-              prefix-icon="Search"
-              @change="getTableData"
-          />
-        </el-form-item>
-        <el-form-item label="閲囪喘璁㈠崟鍙凤細">
-          <el-input
-            v-model="filters.purchaseContractNumber"
-            placeholder="璇疯緭鍏�"
-            clearable
-            prefix-icon="Search"
-            @change="getTableData"
-          />
-        </el-form-item>
-
-        <el-form-item label="閿�鍞悎鍚屽彿">
-          <el-input
-              v-model="filters.salesContractNo"
-              placeholder="璇疯緭鍏ラ攢鍞悎鍚屽彿"
-              clearable
-          />
-        </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>
-    <div class="table_list">
-      <div class="actions">
-        <div></div>
-        <div>
-          <el-button @click="handleExport" style="margin-right: 10px">瀵煎嚭</el-button>
-          <el-button type="primary" @click="handleAdd('add')" :disabled="isInvoiceDisabled">
-            鏉ョエ鐧昏
-          </el-button>
-<!--          <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>-->
-        </div>
-      </div>
-      <PIMTable
-        rowKey="id"
-        :column="columns"
-        :tableData="dataList"
-        :tableLoading="loading"
-        :isSelection="true"
-        :page="{
-          current: pagination.currentPage,
-          size: pagination.pageSize,
-          total: pagination.total,
-        }"
-        :expand-row-keys="expandRowKeys"
-        :summaryMethod="summarizeMainTable"
-        :isShowSummary="true"
-        @expand-change="expandChange"
-        @selection-change="handleSelectionChange"
-        @pagination="changePage"
-      >
-        <template #expand="{ row }">
-          <ExpandTable ref="expandTableRef" />
-        </template>
-        <template #operation="{ row }">
-          <el-button
-            link
-            type="primary"
-            @click="handleEdit('edit', row.id)"
-          >
-            缂栬緫
-          </el-button>
-        </template>
-      </PIMTable>
-    </div>
-    <Modal ref="modalRef" @refreshList="getTableData"></Modal>
-  </div>
-</template>
-
-<script setup>
-import { usePaginationApi } from "@/hooks/usePaginationApi";
-import {delRegistration, gePurchaseListPage} from "@/api/procurementManagement/invoiceEntry.js";
-import { nextTick, onMounted, getCurrentInstance, ref, computed } from "vue";
-import ExpandTable from "./components/ExpandTable.vue";
-import Modal from "./components/Modal.vue";
-import {ElMessageBox} from "element-plus";
-
-defineOptions({
-  name: "鏉ョエ鐧昏",
-});
-
-const { proxy } = getCurrentInstance();
-const expandRowKeys = ref([]);
-const expandTableRef = ref();
-const modalRef = ref();
-const selectedRows = ref([]);
-
-const {
-  loading,
-  filters,
-  columns,
-  dataList,
-  pagination,
-  getTableData,
-  resetFilters,
-  onCurrentChange,
-} = usePaginationApi(
-  gePurchaseListPage,
-  {
-    purchaseContractNumber: undefined,
-    // 鍙煡璇㈠凡瀹℃壒閫氳繃锛堟垨鎸囧畾鐘舵�佷负 3锛夌殑璁板綍
-    approvalStatus: 3,
-  },
-  [
-    {
-      type: "expand",
-      dataType: "slot",
-      slot: "expand",
-    },
-    {
-      label: "閲囪喘璁㈠崟鍙�",
-      prop: "purchaseContractNumber",
-      width:150
-    },
-    {
-      label: "閿�鍞悎鍚屽彿",
-      prop: "salesContractNo",
-      width:150
-    },
-    {
-      label: "渚涘簲鍟嗗悕绉�",
-      prop: "supplierName",
-      width:300
-    },
-    {
-      label: "褰曞叆浜�",
-      prop: "recorderName",
-    },
-    {
-      label: "褰曞叆鏃ユ湡",
-      prop: "entryDate",
-      width:110
-    },
-    {
-      label: "鍚堝悓閲戦(鍏�)",
-      prop: "contractAmount",
-      width:200,
-      formatData: (val) => {
-        return val ? parseFloat(val).toFixed(2) : 0;
-      },
-    },
-    {
-      label: "宸叉潵绁ㄩ噾棰�(鍏�)",
-      prop: "receiptPaymentAmount",
-      width:200,
-      formatData: (val) => {
-        return val ? parseFloat(val).toFixed(2) : 0;
-      },
-    },
-    {
-      label: "寰呮潵绁ㄩ噾棰�(鍏�)",
-      prop: "unReceiptPaymentAmount",
-      width:200,
-      formatData: (val) => {
-        return val ? parseFloat(val).toFixed(2) : 0;
-      },
-    },
-    {
-      fixed: "right",
-      label: "鎿嶄綔",
-      dataType: "slot",
-      slot: "operation",
-      align: "center",
-      width: 100,
-    },
-  ]
-);
-
-const handleSelectionChange = (selection) => {
-  selectedRows.value = selection.filter(
-    (item) => item.purchaseContractNumber !== undefined
-  );
-};
-
-// 璁$畻鏄惁鍙互鏉ョエ鐧昏锛氬鏋滄墍鏈夐�変腑琛岀殑寰呮潵绁ㄩ噾棰濋兘涓�0锛屽垯绂佺敤鎸夐挳
-const isInvoiceDisabled = computed(() => {
-  if (selectedRows.value.length === 0) {
-    return true;
-  }
-  // 濡傛灉鎵�鏈夐�変腑琛岀殑寰呮潵绁ㄩ噾棰濋兘涓�0鎴栧皬浜庣瓑浜�0锛屽垯绂佺敤
-  return selectedRows.value.every(row => {
-    const amount = parseFloat(row.unReceiptPaymentAmount || 0);
-    return amount <= 0;
-  });
-});
-
-const handleAdd = (type) => {
-	if (selectedRows.value.length < 1) {
-		proxy.$modal.msgWarning("璇疯嚦灏戦�変腑涓�鏉℃暟鎹�");
-		return;
-	}
-	modalRef.value.open(type, selectedRows.value);
-};
-
-const handleEdit = (type, id) => {
-  modalRef.value.open(type, id);
-};
-
-// 瀵煎嚭
-const handleOut = () => {
-	ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-		confirmButtonText: "纭",
-		cancelButtonText: "鍙栨秷",
-		type: "warning",
-	})
-		.then(() => {
-			proxy.download("/purchase/registration/export", {}, "鏉ョエ鐧昏.xlsx");
-		})
-		.catch(() => {
-			proxy.$modal.msg("宸插彇娑�");
-		});
-};
-
-// 瀵煎嚭閲囪喘鍙拌处
-const handleExport = () => {
-	ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-		confirmButtonText: "纭",
-		cancelButtonText: "鍙栨秷",
-		type: "warning",
-	})
-		.then(() => {
-			proxy.download("/purchase/ledger/exportOne", {}, "鏉ョエ鐧昏.xlsx");
-		})
-		.catch(() => {
-			proxy.$modal.msg("宸插彇娑�");
-		});
-};
-
-// 鍒犻櫎
-const handleDelete = () => {
-	let ids = [];
-	if (selectedRows.value.length > 0) {
-    // 鏂板鍒ゆ柇锛氬鏋滄湁閫変腑鐨勬暟鎹病鏈塼icketRegistrationId锛屾彁绀哄苟缁堟
-    const noTicket = selectedRows.value.some(item => !item.ticketRegistrationId);
-    if (noTicket) {
-      proxy.$modal.msgWarning("閲囪喘鍙拌处杩樻湭杩涜鏉ョエ鐧昏,鏃犳硶杩涜鍒犻櫎鎿嶄綔");
-      return;
-    }
-		ids = selectedRows.value.map((item) => item.ticketRegistrationId);
-	} else {
-		proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
-		return;
-	}
-	ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "瀵煎嚭", {
-		confirmButtonText: "纭",
-		cancelButtonText: "鍙栨秷",
-		type: "warning",
-	})
-		.then(() => {
-			delRegistration(ids).then((res) => {
-				proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-				getList();
-			});
-		})
-		.catch(() => {
-			proxy.$modal.msg("宸插彇娑�");
-		});
-};
-
-const expandChange = async (row, expandedRows) => {
-  if (expandedRows.length > 0) {
-    await nextTick();
-    expandTableRef.value.getList(row.id);
-  }
-};
-
-const changePage = ({ page, limit }) => {
-  pagination.currentPage = page;
-  pagination.pageSize = limit;
-  onCurrentChange(page);
-};
-// 涓昏〃鍚堣鏂规硶
-const summarizeMainTable = (param) => {
-	return proxy.summarizeTable(
-		param,
-		["contractAmount", "receiptPaymentAmount", "unReceiptPaymentAmount"],
-		{
-			ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-			futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-		}
-	);
-};
-onMounted(() => {
-  getTableData();
-});
-</script>
-
-<style lang="scss" scoped>
-.table_list {
-  margin-top: unset;
-}
-.actions {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 10px;
-}
-</style>
diff --git a/src/views/procurementManagement/paymentEntry/index.vue b/src/views/procurementManagement/paymentEntry/index.vue
deleted file mode 100644
index 9ce59ad..0000000
--- a/src/views/procurementManagement/paymentEntry/index.vue
+++ /dev/null
@@ -1,597 +0,0 @@
-<template>
-  <div class="app-container">
-    <div class="search_form">
-      <el-form :inline="true" :model="searchForm" style="width: 100%">
-        <el-row justify="space-between">
-          <el-col :span="20">
-            <el-form-item label="渚涘簲鍟嗗悕绉�/鍚堝悓鍙�">
-              <el-input
-                v-model="searchForm.supplierNameOrContractNo"
-                style="width: 240px"
-                placeholder="杈撳叆渚涘簲鍟嗗悕绉�/鍚堝悓鍙锋悳绱�"
-                clearable
-                prefix-icon="Search"
-                @change="handleQuery"
-              />
-            </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-form-item>
-          </el-col>
-          <el-col :span="4">
-            <el-form-item style="float: right; margin-right: unset">
-              <el-button type="primary" @click="openForm('add')">
-                鏂板浠樻
-              </el-button>
-              <el-button @click="handleExport" style="margin-right: 10px">瀵煎嚭</el-button>
-<!--              <el-button type="danger" plain @click="handleDelete">-->
-<!--                鍒犻櫎-->
-<!--              </el-button>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </div>
-    <div class="table_list">
-      <PIMTable
-        rowKey="id"
-        :column="tableColumn"
-        :tableData="tableData"
-        :page="page"
-        :expandRowKeys="expandedRowKeys"
-        :isSelection="true"
-        :isShowSummary="isShowSummarySon"
-        :summaryMethod="summarizeMainTable1"
-        @selection-change="handleSelectionChange"
-        @expand-change="expandChange"
-        :tableLoading="tableLoading"
-        @pagination="pagination"
-        :total="page.total"
-      >
-				<template #expand="{ row }">
-					<el-table
-						:data="expandData"
-						border
-						show-summary
-						v-loading="childrenLoading"
-						:summary-method="summarizeMainTable2"
-					>
-						<el-table-column
-							align="center"
-							label="搴忓彿"
-							type="index"
-							width="60"
-						/>
-						<el-table-column label="浠樻鏃ユ湡" prop="paymentDate" />
-						<el-table-column label="浠樻閲戦" prop="currentPaymentAmount">
-							<template #default="scope">
-								<el-input-number :step="0.01" :min="0" style="width: 100%"
-																 v-model="scope.row.currentPaymentAmount"
-																 :disabled="!scope.row.editType"
-																 :precision="2"
-																 placeholder="璇疯緭鍏�"
-																 clearable
-								/>
-							</template>
-						</el-table-column>
-						<el-table-column label="浠樻鏂瑰紡" prop="paymentMethod">
-							<template #default="scope">
-								<el-select
-									:disabled="!scope.row.editType"
-									v-model="scope.row.paymentMethod"
-									placeholder="璇烽�夋嫨"
-									clearable
-								>
-									<el-option
-										v-for="item in checkout_payment"
-										:key="item.value"
-										:label="item.label"
-										:value="item.value"
-									/>
-								</el-select>
-							</template>
-						</el-table-column>
-						<el-table-column label="鐧昏浜�" prop="registrant" />
-						<el-table-column label="鐧昏鏃ユ湡" prop="registrationtDate" />
-						<el-table-column label="鎿嶄綔" width="150">
-							<template #default="scope">
-								<el-button
-									link
-									type="primary"
-									@click="changeEditType(scope.row)"
-									v-if="!scope.row.editType"
-								>缂栬緫</el-button
-								>
-								<el-button
-									link
-									type="primary"
-									@click="saveReceiptPayment(scope.row)"
-									v-if="scope.row.editType"
-								>淇濆瓨</el-button
-								>
-								<el-button
-									link
-									type="primary"
-									@click="handleDelete(scope.row)"
-								>鍒犻櫎</el-button
-								>
-							</template>
-						</el-table-column>
-					</el-table>
-				</template>
-			</PIMTable>
-    </div>
-    <FormDialog
-      v-model="dialogFormVisible"
-      title="鏂板浠樻椤甸潰"
-      :width="'90%'"
-      @close="closeDia"
-      @confirm="submitForm"
-      @cancel="closeDia"
-    >
-      <el-table
-        v-if="forms.length"
-        :data="forms"
-        border
-        style="width: 100%"
-        size="small"
-      >
-        <el-table-column type="index" label="搴忓彿" width="50" align="center"/>
-        <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="productCategory"
-          show-overflow-tooltip
-          width="100"
-        />
-        <el-table-column
-          label="瑙勬牸鍨嬪彿"
-          prop="specificationModel"
-          show-overflow-tooltip
-          width="150"
-        />
-        <el-table-column
-          label="寰呬粯娆鹃噾棰�(鍏�)"
-          prop="pendingTicketsTotal"
-          show-overflow-tooltip
-          width="170"
-        >
-          <template #default="{ row, column }">
-            <el-text type="danger">
-              {{ formattedNumber(row, column, row.pendingTicketsTotal) }}
-            </el-text>
-          </template>
-        </el-table-column>
-        <el-table-column label="鏈浠樻閲戦(鍏�)" width="180">
-          <template #default="{ row }">
-            <el-input-number
-              v-model="row.currentPaymentAmount"
-              :step="0.01"
-              :min="0"
-              :max="Number(row.pendingTicketsTotal || 0)"
-              :precision="2"
-              style="width: 100%"
-              placeholder="璇疯緭鍏�"
-            />
-          </template>
-        </el-table-column>
-        <el-table-column label="浠樻鏂瑰紡" width="160">
-          <template #default="{ row }">
-            <el-select v-model="row.paymentMethod" placeholder="璇烽�夋嫨" clearable>
-              <el-option
-                v-for="item in checkout_payment"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-              />
-            </el-select>
-          </template>
-        </el-table-column>
-        <el-table-column label="浠樻鏃ユ湡" width="170">
-          <template #default="{ row }">
-            <el-date-picker
-              v-model="row.paymentDate"
-              value-format="YYYY-MM-DD"
-              format="YYYY-MM-DD"
-              type="date"
-              placeholder="璇烽�夋嫨"
-              style="width: 100%"
-            />
-          </template>
-        </el-table-column>
-        <el-table-column label="鐧昏浜�" width="140">
-          <template #default="{ row }">
-            <el-input v-model="row.registrant" disabled />
-          </template>
-        </el-table-column>
-        <el-table-column label="鐧昏鏃ユ湡" width="170">
-          <template #default="{ row }">
-            <el-input v-model="row.registrationtDate" />
-          </template>
-        </el-table-column>
-      </el-table>
-      <div v-else class="empty-tip">璇烽�夋嫨闇�瑕佷粯娆剧殑璁板綍</div>
-    </FormDialog>
-  </div>
-</template>
-
-<script setup>
-import FormDialog from '@/components/Dialog/FormDialog.vue';
-import { ref, reactive, toRefs, getCurrentInstance, nextTick, onMounted } from "vue";
-import { Search } from "@element-plus/icons-vue";
-import { ElMessageBox } from "element-plus";
-import useUserStore from "@/store/modules/user.js";
-import {
-  byPurchaseId,
-  paymentRegistrationAdd,
-  paymentRegistrationDel,
-  paymentRegistrationEdit,
-  getTicketNo,
-} from "@/api/procurementManagement/paymentEntry.js";
-import {
-	delPaymentRegistration,
-	invoiceListPage,
-	registrationListPageGetById,
-	updatePaymentRegistration
-} from "@/api/procurementManagement/procurementInvoiceLedger.js";
-import useFormData from "@/hooks/useFormData";
-import { getCurrentDate } from "@/utils/index.js";
-
-const { proxy } = getCurrentInstance();
-const { checkout_payment } = proxy.useDict("checkout_payment");
-const tableColumn = ref([
-	{
-		type: "expand",
-		dataType: "slot",
-		slot: "expand",
-	},
-  {
-    label: "閲囪喘鍚堝悓鍙�",
-    prop: "purchaseContractNumber",
-    width:160
-  },
-  {
-    label: "閿�鍞悎鍚屽彿",
-    prop: "salesContractNo",
-    width:160
-  },
-  {
-    label: "渚涘簲鍟嗗悕绉�",
-    prop: "supplierName",
-  },
-	{
-		label: "浠樻鐘舵��",
-		prop: "statusName",
-    width:110,
-		dataType: "tag",
-		formatType: (params) => {
-			if (params == '鏈畬鎴愪粯娆�') {
-				return "danger";
-			} else if (params == '宸插畬鎴愪粯娆�') {
-				return "success";
-			} else {
-				return null;
-			}
-		},
-	},
-	{
-		label: "浜у搧澶х被",
-		prop: "productCategory",
-		showOverflowTooltip: true,
-	},
-	{
-		label: "瑙勬牸鍨嬪彿",
-		prop: "specificationModel",
-		showOverflowTooltip: true,
-		width: 150
-	},
-  {
-    label: "宸蹭粯娆鹃噾棰�(鍏�)",
-    prop: "ticketsTotal",
-    formatData: (params) => {
-      return params ? parseFloat(params).toFixed(2) : 0;
-    },
-  },
-  {
-    label: "寰呬粯娆鹃噾棰�(鍏�)",
-    prop: "pendingTicketsTotal",
-    formatData: (params) => {
-      return params ? parseFloat(params).toFixed(2) : 0;
-    },
-  },
-]);
-const tableData = ref([]);
-const expandData = ref([]);
-const selectedRows = ref([]);
-const tableLoading = ref(false);
-const childrenLoading = ref(false);
-const forms = ref([]);
-const userStore = useUserStore();
-const page = reactive({
-  current: 1,
-  size: 100,
-	total: 0,
-});
-
-// 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
-const operationType = ref("");
-const dialogFormVisible = ref(false);
-const data = reactive({
-  searchForm: {
-    supplierNameOrContractNo: "",
-    status: false,
-    // 鍙煡璇㈠鎵圭姸鎬佷负 3 鐨勮褰�
-    approvalStatus: 3,
-  },
-  form: {
-    purchaseContractNumber: "",
-    purchaseLedgerId: "",
-    salesContractNo: "",
-    supplierName: "",
-    taxRate: "",
-    currentPaymentAmount: "",
-    paymentMethod: "",
-    registrant: "",
-    registrantId: "",
-    paymentDate: "",
-    registrationtDate: "",
-  },
-  rules: {
-    purchaseLedgerId: [
-      { required: true, message: "璇烽�夋嫨", trigger: "change" },
-    ],
-    currentPaymentAmount: [
-      { required: true, message: "璇疯緭鍏�", trigger: "blur" },
-    ],
-    paymentMethod: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-  },
-});
-const { form, rules } = toRefs(data);
-const { form: searchForm, resetForm } = useFormData(data.searchForm);
-const isShowSummarySon = ref(true);
-const expandedRowKeys = ref([]);
-
-const getStatusTagType = (statusName = '') => {
-	const normalized = statusName.trim();
-	if (!normalized) return 'info';
-	return normalized === '鏈畬鎴愪粯娆�' ? 'danger' : 'success';
-};
-
-const formattedNumber = (row, column, cellValue) => {
-  const val = Number(cellValue ?? 0);
-  return Number.isFinite(val) ? val.toFixed(2) : "0.00";
-};
-// 瀛愯〃鍚堣鏂规硶
-const summarizeMainTable1 = (param) => {
-  return proxy.summarizeTable(
-    param,
-    ["ticketsTotal", "pendingTicketsTotal"],
-    {
-      ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-      futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-    }
-  );
-};
-// 瀛愯〃鍚堣鏂规硶
-const summarizeMainTable2 = (param) => {
-	return proxy.summarizeTable(param, ["currentPaymentAmount"], {
-		ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-		futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-	});
-};
-// 鏌ヨ鍒楄〃
-/** 鎼滅储鎸夐挳鎿嶄綔 */
-const handleQuery = () => {
-  page.current = 1;
-  getList();
-};
-const pagination = (obj) => {
-  page.current = obj.page;
-  page.size = obj.limit;
-  getList();
-};
-const getList = () => {
-  tableLoading.value = true;
-  invoiceListPage({ ...searchForm, ...page }).then((res) => {
-    tableLoading.value = false;
-    tableData.value = res.data.records;
-		page.total = res.data.total;
-		if (expandedRowKeys.value.length > 0) {
-			const arr = []
-			const index = tableData.value.findIndex(item => item.id === expandedRowKeys.value[0]);
-			if (index > -1) {
-				arr.push(tableData.value[index]);
-				expandChange(tableData.value[index], arr)
-			}
-		}
-  });
-};
-// 灞曞紑琛�
-const expandChange = (row, expandedRows) => {
-	if (expandedRows.length > 0) {
-		nextTick(() => {
-			expandedRowKeys.value = [];
-			try {
-				childrenLoading.value = true;
-				registrationListPageGetById({ id: row.id }).then((res) => {
-					childrenLoading.value = false;
-					const index = tableData.value.findIndex((item) => item.id === row.id);
-					if (index > -1) {
-						expandData.value = res;
-					}
-					expandedRowKeys.value.push(row.id);
-				});
-			} catch (error) {
-				childrenLoading.value = false;
-				console.log(error);
-			}
-		})
-	} else {
-		expandedRowKeys.value = [];
-	}
-};
-// 缂栬緫淇敼鐘舵��
-const changeEditType = (row) => {
-	row.editType = !row.editType;
-};
-// 淇濆瓨鍥炴璁板綍
-const saveReceiptPayment = (row) => {
-	let updateData = {
-		id: row.id,
-		currentPaymentAmount: row.currentPaymentAmount,
-		paymentMethod: row.paymentMethod,
-	};
-	updatePaymentRegistration(updateData).then((res) => {
-		row.editType = !row.editType;
-		getList();
-		proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
-	});
-};
-// 琛ㄦ牸閫夋嫨鏁版嵁
-const handleSelectionChange = (selection) => {
-  selectedRows.value = selection;
-};
-// 鎵撳紑寮规
-const openForm = (type, row) => {
-  if (selectedRows.value.length === 0) {
-    proxy.$modal.msgError("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
-    return;
-  }
-  const validRows = selectedRows.value.filter((item) => Number(item.pendingTicketsTotal || 0) !== 0);
-  if (validRows.length === 0) {
-    proxy.$modal.msgWarning("鎵�閫夎褰曞潎鏃犻渶浠樻");
-    return;
-  }
-  forms.value = validRows.map((row) => ({
-    purchaseContractNumber: row.purchaseContractNumber || "",
-    salesContractNo: row.salesContractNo || "",
-    supplierName: row.supplierName || "",
-    supplierId: row.supplierId,
-    productCategory: row.productCategory || "",
-    specificationModel: row.specificationModel || "",
-    pendingTicketsTotal: Number(row.pendingTicketsTotal || 0),
-    currentPaymentAmount: "",
-    paymentMethod: "",
-    paymentDate: "",
-    registrant: userStore.nickName,
-    registrationtDate: getCurrentDate(),
-    ticketRegistrationId: row.id,
-    purchaseLedgerId: row.salesLedgerId,
-    salesLedgerProductId: row.id,
-  }));
-  dialogFormVisible.value = true;
-};
-// 鎻愪氦琛ㄥ崟
-const submitForm = () => {
-  if (forms.value.length === 0) {
-    proxy.$modal.msgError("璇烽�夋嫨浠樻璁板綍");
-    return;
-  }
-  for (let i = 0; i < forms.value.length; i++) {
-    const item = forms.value[i];
-    const pendingAmount = Number(item.pendingTicketsTotal || 0);
-    const currentAmount = Number(item.currentPaymentAmount);
-    if (!item.currentPaymentAmount && item.currentPaymentAmount !== 0) {
-      proxy.$modal.msgError(`绗� ${i + 1} 鏉★細璇峰~鍐欎粯娆鹃噾棰漙);
-      return;
-    }
-    if (currentAmount > pendingAmount) {
-      proxy.$modal.msgError(
-        `绗� ${i + 1} 鏉★細浠樻閲戦涓嶈兘瓒呰繃寰呬粯娆鹃噾棰濓紙寰呬粯娆撅細${pendingAmount.toFixed(
-          2
-        )}锛塦
-      );
-      return;
-    }
-    if (!item.paymentMethod) {
-      proxy.$modal.msgError(`绗� ${i + 1} 鏉★細璇烽�夋嫨浠樻鏂瑰紡`);
-      return;
-    }
-    if (!item.paymentDate) {
-      proxy.$modal.msgError(`绗� ${i + 1} 鏉★細璇烽�夋嫨浠樻鏃ユ湡`);
-      return;
-    }
-  }
-  const normalizePaymentMethodValue = (method) => {
-    const hit = checkout_payment.value.find((item) => item.value == method || item.label == method);
-    return hit ? hit.value : method;
-  };
-  const submitRows = forms.value.map((item) => ({
-    ...item,
-    paymentMethod: normalizePaymentMethodValue(item.paymentMethod),
-  }));
-  paymentRegistrationAdd(submitRows).then(() => {
-    proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
-    closeDia();
-    getList();
-  });
-};
-// 鍏抽棴寮规
-const closeDia = () => {
-  forms.value = [];
-  dialogFormVisible.value = false;
-};
-// 鍒犻櫎
-const handleDelete = (row) => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "鍒犻櫎鎻愮ず", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(() => {
-      tableLoading.value = true;
-			delPaymentRegistration([row.id])
-        .then((res) => {
-          proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-          getList();
-        })
-        .finally(() => {
-          tableLoading.value = false;
-        });
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-// 瀵煎嚭
-const handleExport = () => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(() => {
-      proxy.download("/purchase/registration/exportOne", { ...searchForm, ...page }, "浠樻鐧昏.xlsx");
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-
-onMounted(() => {
-  getList();
-});
-</script>
-
-<style scoped lang="scss">
-.table_list {
-  margin-top: unset;
-}
-:deep(.el-checkbox__label) {
-  font-weight: bold;
-}
-.empty-tip {
-  text-align: center;
-  padding: 20px 0;
-  color: #909399;
-}
-</style>
diff --git a/src/views/procurementManagement/paymentHistory/index.vue b/src/views/procurementManagement/paymentHistory/index.vue
deleted file mode 100644
index c9e9836..0000000
--- a/src/views/procurementManagement/paymentHistory/index.vue
+++ /dev/null
@@ -1,270 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="searchForm" :inline="true">
-      <el-form-item label="閲囪喘鍚堝悓鍙�">
-        <el-input
-          v-model="searchForm.purchaseContractNumber"
-          style="width: 240px"
-          placeholder="杈撳叆閲囪喘鍚堝悓鍙锋悳绱�"
-          @change="handleQuery"
-          clearable
-          :prefix-icon="Search"
-        />
-      </el-form-item>
-      <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-button @click="handleExport">瀵煎嚭</el-button>
-        <el-button
-          type="danger"
-          :disabled="selectedRows.length === 0"
-          @click="handleBatchDelete"
-        >
-          鎵归噺鍒犻櫎 ({{ selectedRows.length }})
-        </el-button>
-      </el-form-item>
-    </el-form>
-    <div class="table_list">
-      <PIMTable
-        rowKey="id"
-        :column="tableColumn"
-        :tableData="tableData"
-        :page="page"
-        :isSelection="true"
-        :isShowSummary="isShowSummarySon"
-        :summaryMethod="summarizeMainTable1"
-        @selection-change="handleSelectionChange"
-        :tableLoading="tableLoading"
-        @pagination="pagination"
-        :total="page.total"
-      >
-        <template #operation="{ row }">
-          <el-button
-            type="primary"
-            link
-            @click="handleDelete(row)"
-          >
-            鍒犻櫎
-          </el-button>
-        </template>
-      </PIMTable>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import { ref, reactive, getCurrentInstance, onMounted } from "vue";
-import { Search } from "@element-plus/icons-vue";
-import { ElMessageBox } from "element-plus";
-import { paymentHistoryListPage} from "@/api/procurementManagement/paymentEntry.js";
-import {delPaymentRegistration } from "@/api/procurementManagement/procurementInvoiceLedger.js";
-import useFormData from "@/hooks/useFormData";
-import dayjs from "dayjs";
-
-const { proxy } = getCurrentInstance();
-const isShowSummarySon = ref(true);
-const tableColumn = ref([
-  {
-    label: "閲囪喘鍚堝悓鍙�",
-    prop: "purchaseContractNumber",
-  },
-  {
-    label: "浠樻鏃ユ湡",
-    prop: "paymentDate",
-  },
-  {
-    label: "渚涘簲鍟嗗悕绉�",
-    prop: "supplierName",
-    width:240
-  },
-  {
-    label: "浠樻閲戦",
-    prop: "currentPaymentAmount",
-    formatData: (params) => {
-      return params ? parseFloat(params).toFixed(2) : 0;
-    },
-  },
-  {
-    label: "浠樻鏂瑰紡",
-    prop: "paymentMethod",
-  },
-  {
-    label: "鐧昏浜�",
-    prop: "registrant",
-  },
-  {
-    label: "鐧昏鏃ユ湡",
-    prop: "registrationtDate",
-  },
-  {
-    label: "鎿嶄綔",
-    dataType: "slot",
-    slot: "operation",
-    width: 100,
-    align: "center",
-  },
-]);
-const tableData = ref([]);
-const selectedRows = ref([]);
-const tableLoading = ref(false);
-const page = reactive({
-  current: 1,
-  size: 100,
-  total: 0,
-});
-const total = ref(0);
-const { form: searchForm } = useFormData({
-  searchText: undefined,
-	purchaseContractNumber: undefined,
-  paymentDate: [],
-  paymentDateStart: undefined,
-  paymentDateEnd: undefined,
-});
-
-// 鏌ヨ鍒楄〃
-/** 鎼滅储鎸夐挳鎿嶄綔 */
-const handleQuery = () => {
-  page.current = 1;
-  getList();
-};
-const pagination = (obj) => {
-  page.current = obj.page;
-  page.size = obj.limit;
-  getList();
-};
-const getList = () => {
-  tableLoading.value = true;
-  const { paymentDate, ...rest } = searchForm;
-  paymentHistoryListPage({ ...rest, ...page }).then((res) => {
-    tableLoading.value = false;
-    tableData.value = res.records;
-		page.total = res.total;
-  });
-};
-// 瀛愯〃鍚堣鏂规硶
-const summarizeMainTable1 = (param) => {
-  return proxy.summarizeTable(param, ["currentPaymentAmount"], {
-    ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-    futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-  });
-};
-// 琛ㄦ牸閫夋嫨鏁版嵁
-const handleSelectionChange = (selection) => {
-  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();
-};
-
-// 鍒犻櫎
-const handleDelete = (row) => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "鍒犻櫎鎻愮ず", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(() => {
-      tableLoading.value = true;
-      delPaymentRegistration([row.id])
-        .then((res) => {
-          proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-          getList();
-        })
-        .finally(() => {
-          tableLoading.value = false;
-        });
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-
-// 鎵归噺鍒犻櫎
-const handleBatchDelete = () => {
-  if (selectedRows.value.length === 0) {
-    proxy.$modal.msgWarning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
-    return;
-  }
-  ElMessageBox.confirm(
-    `纭畾瑕佸垹闄ら�変腑鐨� ${selectedRows.value.length} 鏉℃暟鎹悧锛焋,
-    "鍒犻櫎鎻愮ず",
-    {
-      confirmButtonText: "纭",
-      cancelButtonText: "鍙栨秷",
-      type: "warning",
-    }
-  )
-    .then(() => {
-      tableLoading.value = true;
-      const ids = selectedRows.value.map((item) => item.id);
-      delPaymentRegistration(ids)
-        .then((res) => {
-          proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-          selectedRows.value = [];
-          getList();
-        })
-        .finally(() => {
-          tableLoading.value = false;
-        });
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-
-// 瀵煎嚭
-const handleExport = () => {
-  const { paymentDate, ...rest } = searchForm;
-  proxy.download("/purchase/paymentRegistration/export", { ...rest, ...page }, "浠樻娴佹按.xlsx");
-};
-
-onMounted(() => {
-  getList();
-});
-</script>
-
-<style scoped lang="scss">
-.table_list {
-  margin-top: unset;
-}
-</style>
diff --git a/src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue b/src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue
deleted file mode 100644
index 4e461dc..0000000
--- a/src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue
+++ /dev/null
@@ -1,238 +0,0 @@
-<template>
-  <el-dialog :title="modalOptions.title"
-             v-model="visible"
-             @close="close">
-    <el-form :model="form">
-      <el-row :gutter="20">
-        <el-col :span="12">
-          <el-form-item label="閲囪喘鍚堝悓鍙凤細">
-            <el-tag size="large">{{ form.purchaseContractNumber }}</el-tag>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="閿�鍞悎鍚屽彿锛�">
-            <el-text>{{ form.salesContractNo }}</el-text>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="鍚◣鍗曚环(鍏�)锛�">
-            <el-text type="primary">{{ form.taxInclusiveUnitPrice }}</el-text>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="鍒涘缓鏃堕棿锛�">
-            <el-text>{{ form.createdAt }}</el-text>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="鍙戠エ鍙凤細">
-            <el-input disabled
-                      v-model="form.invoiceNumber" />
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="鏉ョエ鏁帮細">
-            <el-input-number :step="0.1"
-                             :min="0"
-                             :max="maxTicketsNum"
-                             style="width: 100%"
-                             v-model="form.ticketsNum"
-                             @change="inputTicketsNum"
-                             :precision="2" />
-            <div style="font-size: 12px; color: #909399; margin-top: 4px;">
-              鍙~鍐欐暟閲忥細{{ maxTicketsNum }}
-            </div>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="鏈鏉ョエ閲戦(鍏�)锛�">
-            <el-input-number :step="0.1"
-                             :min="0"
-                             style="width: 100%"
-                             v-model="form.ticketsAmount"
-                             @change="inputTicketsAmount"
-                             :precision="2" />
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="鏈潵绁ㄦ暟锛�">
-            <el-text type="success">{{ form.futureTickets }}</el-text>
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
-    <template #footer>
-      <el-button type="primary"
-                 :loading="loading"
-                 @click="sendForm">
-        {{ modalOptions.confirmText }}
-      </el-button>
-      <el-button @click="closeModal">{{ modalOptions.cancelText }}</el-button>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { useModal } from "@/hooks/useModal";
-import useFormData from "@/hooks/useFormData";
-import { updateRegistration, getProductRecordById } from "@/api/procurementManagement/procurementInvoiceLedger";
-import { ElMessage } from "element-plus";
-import { getCurrentInstance, ref, nextTick, computed } from "vue";
-
-defineOptions({
-  name: "鏉ョエ鍙拌处缂栬緫",
-});
-const emits = defineEmits(["success"]);
-
-const saleLedgerProjectId = ref("");
-const temFutureTickets = ref(0);
-const originalTicketsNum = ref(0); // 鍘熷宸叉潵绁ㄦ暟
-const { proxy } = getCurrentInstance();
-
-// 璁$畻鏈�澶у彲濉啓鏁伴噺 = 鍘熷宸叉潵绁ㄦ暟 + 鏈潵绁ㄦ暟
-const maxTicketsNum = computed(() => {
-  return Number(originalTicketsNum.value) + Number(temFutureTickets.value);
-});
-
-const {
-  id,
-  visible,
-  loading,
-  openModal,
-  modalOptions,
-  handleConfirm,
-  closeModal,
-} = useModal({ title: "鏉ョエ鍙拌处" });
-
-const { form, resetForm } = useFormData({
-  id: undefined,
-  purchaseContractNumber: undefined, // 閲囪喘鍚堝悓鍙�
-  salesContractNo: undefined, // 閿�鍞悎鍚屽彿
-  createdAt: undefined, // 鍒涘缓鏃堕棿
-  invoiceNumber: undefined, // 鍙戠エ鍙�
-  ticketsNum: undefined, // 鏉ョエ鏁�
-  ticketsAmount: undefined, // 鏉ョエ閲戦
-  taxInclusiveUnitPrice: undefined, // 鍚◣鍗曚环
-  futureTickets: undefined, // 鏈潵绁ㄦ暟
-});
-
-const load = async (id, purchaseLedgerId, productModelId) => {
-  const { code, data } = await getProductRecordById({
-    id: id,
-    purchaseLedgerId: purchaseLedgerId,
-    productModelId: productModelId,
-  });
-  if (code === 200) {
-    form.id = data.id;
-    form.purchaseContractNumber = data.purchaseContractNumber;
-    form.salesContractNo = data.salesContractNo;
-    form.createdAt = data.createdAt;
-    form.invoiceNumber = data.invoiceNumber;
-    form.ticketsNum = data.ticketsNum;
-    form.ticketsAmount = data.ticketsAmount.toFixed(2);
-    form.taxInclusiveUnitPrice = data.taxInclusiveUnitPrice;
-    form.futureTickets = data.futureTickets;
-    temFutureTickets.value = data.futureTickets;
-    // 淇濆瓨鍘熷宸叉潵绁ㄦ暟
-    originalTicketsNum.value = data.ticketsNum || 0;
-  }
-};
-
-const inputTicketsNum = val => {
-  // 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
-  if (!form.taxInclusiveUnitPrice || Number(form.taxInclusiveUnitPrice) === 0) {
-    proxy.$modal.msgWarning("鍚◣鍗曚环涓嶈兘涓洪浂鎴栨湭瀹氫箟");
-    return;
-  }
-  
-  // 妫�鏌ユ潵绁ㄦ暟涓嶈兘澶т簬锛堝師濮嬪凡鏉ョエ鏁� + 鏈潵绁ㄦ暟锛�
-  const maxNum = maxTicketsNum.value;
-  if (Number(form.ticketsNum) > maxNum) {
-    proxy.$modal.msgWarning(`鏉ョエ鏁颁笉鑳藉ぇ浜�${maxNum}锛堝凡鏉ョエ鏁�${originalTicketsNum.value} + 鏈潵绁ㄦ暟${temFutureTickets.value}锛塦);
-    form.ticketsNum = maxNum;
-    return;
-  }
-  
-  // 璁$畻鏈鏂板鐨勬潵绁ㄦ暟锛堝綋鍓嶆潵绁ㄦ暟 - 鍘熷宸叉潵绁ㄦ暟锛�
-  const newTicketsNum = Number(form.ticketsNum) - Number(originalTicketsNum.value);
-  
-  // 濡傛灉鏂板鐨勬潵绁ㄦ暟澶т簬鏈潵绁ㄦ暟锛屽垯闄愬埗
-  if (newTicketsNum > Number(temFutureTickets.value)) {
-    proxy.$modal.msgWarning("鏈鏂板鏉ョエ鏁颁笉寰楀ぇ浜庢湭鏉ョエ鏁�");
-    form.ticketsNum = Number(originalTicketsNum.value) + Number(temFutureTickets.value);
-    return;
-  }
-
-  // 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
-  const ticketsAmount =
-    Number(form.ticketsNum) * Number(form.taxInclusiveUnitPrice);
-  const futureTickets =
-    Number(temFutureTickets.value) - newTicketsNum;
-  form.futureTickets = Number(futureTickets.toFixed(2));
-  form.ticketsAmount = Number(ticketsAmount.toFixed(2));
-};
-
-const inputTicketsAmount = val => {
-  // 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
-  if (!form.taxInclusiveUnitPrice || Number(form.taxInclusiveUnitPrice) === 0) {
-    proxy.$modal.msgWarning("鍚◣鍗曚环涓嶈兘涓洪浂鎴栨湭瀹氫箟");
-    return;
-  }
-
-  // 璁$畻鏈�澶у彲濉啓閲戦 = 锛堝師濮嬪凡鏉ョエ鏁� + 鏈潵绁ㄦ暟锛�* 鍚◣鍗曚环
-  const maxAmount = maxTicketsNum.value * Number(form.taxInclusiveUnitPrice);
-  
-  if (Number(val) > maxAmount) {
-    proxy.$modal.msgWarning(`鏈鏉ョエ閲戦涓嶅緱澶т簬${maxAmount.toFixed(2)}鍏僠);
-    form.ticketsAmount = maxAmount.toFixed(2);
-    form.ticketsNum = maxTicketsNum.value;
-    return;
-  }
-
-  // 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
-  const ticketsNum = Number(val) / Number(form.taxInclusiveUnitPrice);
-  
-  // 妫�鏌ユ潵绁ㄦ暟涓嶈兘澶т簬鏈�澶у��
-  if (ticketsNum > maxTicketsNum.value) {
-    proxy.$modal.msgWarning(`鏉ョエ鏁颁笉鑳藉ぇ浜�${maxTicketsNum.value}`);
-    form.ticketsNum = maxTicketsNum.value;
-    form.ticketsAmount = maxAmount.toFixed(2);
-    return;
-  }
-  
-  form.ticketsNum = Number(ticketsNum.toFixed(2));
-  
-  // 璁$畻鏈潵绁ㄦ暟
-  const newTicketsNum = form.ticketsNum - originalTicketsNum.value;
-  const futureTickets = Number(temFutureTickets.value) - newTicketsNum;
-  form.futureTickets = Number(futureTickets.toFixed(2));
-};
-
-const open = async row => {
-  openModal(row.id);
-  saleLedgerProjectId.value = row.saleLedgerProjectId;
-  await nextTick();
-  load(row.id, row.purchaseLedgerId, row.productModelId);
-};
-
-const close = () => {
-  resetForm();
-  closeModal();
-};
-
-const sendForm = async () => {
-  form.saleLedgerProjectId = saleLedgerProjectId.value;
-  const { code } = await updateRegistration(form);
-  if (code === 200) {
-    emits("success");
-    ElMessage({ message: "鎿嶄綔鎴愬姛", type: "success" });
-    close();
-  }
-};
-
-defineExpose({
-  open,
-});
-</script>
-
-<style lang="scss" scoped></style>
diff --git a/src/views/procurementManagement/procurementInvoiceLedger/Modal/UploadModal.vue b/src/views/procurementManagement/procurementInvoiceLedger/Modal/UploadModal.vue
deleted file mode 100644
index b82bd10..0000000
--- a/src/views/procurementManagement/procurementInvoiceLedger/Modal/UploadModal.vue
+++ /dev/null
@@ -1,87 +0,0 @@
-<template>
-  <el-dialog v-model="upload.open" :title="upload.title" :width="500">
-    <FileUpload
-      ref="fileUploadRef"
-      accept=".xlsx, .xls, .pdf"
-      :headers="upload.headers"
-      :autoUpload="true"
-      :action="upload.url"
-      :disabled="upload.isUploading"
-      :showTip="false"
-      :limit="10"
-      @success="handleFileSuccess"
-      @remove="removeFile"
-    />
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button>
-        <el-button @click="upload.open = false">鍙� 娑�</el-button>
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { reactive } from "vue";
-import { getToken } from "@/utils/auth.js";
-import { FileUpload } from "@/components/Upload";
-import { ElMessage } from "element-plus";
-import { ref } from "vue";
-import useFormData from "@/hooks/useFormData";
-
-defineOptions({
-  name: "鏉ョエ鍙拌处闄勪欢琛ュ厖",
-});
-
-const { form, resetForm } = useFormData({
-  id: undefined,
-  tempFileIds: [],
-});
-const emits = defineEmits(["uploadSuccess"]);
-const fileUploadRef = ref();
-const upload = reactive({
-  // 鏄惁鏄剧ず寮瑰嚭灞傦紙渚涘簲鍟嗗鍏ワ級
-  open: false,
-  // 寮瑰嚭灞傛爣棰橈紙渚涘簲鍟嗗鍏ワ級
-  title: "",
-  // 鏄惁绂佺敤涓婁紶
-  isUploading: false,
-  // 璁剧疆涓婁紶鐨勮姹傚ご閮�
-  headers: { Authorization: "Bearer " + getToken() },
-  // 涓婁紶鐨勫湴鍧�
-  url: import.meta.env.VITE_APP_BASE_API + "/file/upload",
-});
-// 鐐瑰嚮瀵煎叆
-const handleImport = (id) => {
-  form.id = id;
-  upload.open = true;
-  upload.title = "鏉ョエ鍙拌处闄勪欢琛ュ厖";
-};
-
-const submitFileForm = () => {
-  emits("uploadSuccess", form);
-  resetForm();
-  upload.open = false;
-  // 娓呯┖鏂囦欢鍒楄〃
-  fileUploadRef.value.fileList = [];
-};
-
-const handleFileSuccess = (response) => {
-  if (response.code == 200) {
-		form.tempFileIds.push(response.data.tempId);
-		console.log('form',form);
-    ElMessage({ message: "瀵煎叆鎴愬姛", type: "success" });
-  } else {
-    ElMessage({ message: response.msg, type: "error" });
-  }
-};
-
-const removeFile = (file) => {
-  const { tempId } = file.response.data;
-  form.tempFileIds = form.tempFileIds.filter((item) => item !== tempId);
-};
-
-defineExpose({
-  handleImport,
-});
-</script>
diff --git a/src/views/procurementManagement/procurementInvoiceLedger/index.vue b/src/views/procurementManagement/procurementInvoiceLedger/index.vue
deleted file mode 100644
index c94d8c2..0000000
--- a/src/views/procurementManagement/procurementInvoiceLedger/index.vue
+++ /dev/null
@@ -1,330 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="filters" :inline="true">
-      <el-form-item label="閲囪喘鍚堝悓鍙�">
-        <el-input
-          v-model="filters.purchaseContractNumber"
-          style="width: 240px"
-          placeholder="璇疯緭鍏�"
-          clearable
-          :prefix-icon="Search"
-          @change="getTableData"
-        />
-      </el-form-item>
-      <el-form-item label="渚涘簲鍟�">
-        <el-input
-          v-model="filters.supplierName"
-          style="width: 240px"
-          placeholder="璇疯緭鍏�"
-          clearable
-          :prefix-icon="Search"
-          @change="getTableData"
-        />
-      </el-form-item>
-      <el-form-item label="鏉ョエ鏃ユ湡">
-        <el-date-picker
-          style="width: 240px"
-          v-model="filters.createdAt"
-          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-button @click="handleOut">瀵煎嚭</el-button>
-      </el-form-item>
-    </el-form>
-    <div class="table_list">
-      <PIMTable
-        rowKey="id"
-        :column="columns"
-        :tableLoading="loading"
-        :tableData="dataList"
-        :isSelection="true"
-        height="calc(100vh - 19.5em)"
-        :isShowSummary="true"
-        :summaryMethod="summarizeMainTable"
-        :page="{
-          current: pagination.currentPage,
-          size: pagination.pageSize,
-          total: pagination.total,
-        }"
-        @selection-change="handleSelectionChange"
-        @pagination="changePage"
-      >
-        <template #operation="{ row }">
-          <el-button
-            type="primary"
-            link
-            @click="openEdit(row)"
-          >
-            缂栬緫
-          </el-button>
-          <el-button
-            type="primary"
-            link
-            @click="openFileDialog(row)"
-          >
-            闄勪欢
-          </el-button>
-          <el-button
-            type="primary"
-            link
-            @click="handleDelete(row)"
-          >
-            鍒犻櫎
-          </el-button>
-        </template>
-      </PIMTable>
-    </div>
-    <FileList v-if="fileDialogVisible"  v-model:visible="fileDialogVisible" record-type="ticket_registration" :record-id="recordId"  />
-    <EditModal ref="editmodalRef" @success="getTableData"></EditModal>
-  </div>
-</template>
-
-<script setup>
-import { ref, getCurrentInstance } from "vue";
-import { usePaginationApi } from "@/hooks/usePaginationApi";
-import {
-	Search,
-} from "@element-plus/icons-vue";
-import {
-	delRegistration,
-	productRecordPage,
-	delCommonFile,
-} from "@/api/procurementManagement/procurementInvoiceLedger.js";
-import request from "@/utils/request";
-import { getToken } from "@/utils/auth";
-import { onMounted } from "vue";
-import { ElMessageBox } from "element-plus";
-import EditModal from "./Modal/EditModal.vue";
-import useUserStore from "@/store/modules/user.js";
-const userStore = useUserStore();
-const FileList = defineAsyncComponent(() => import("@/components/Dialog/FileList.vue"));
-
-defineOptions({
-  name: "鏉ョエ鍙拌处",
-});
-
-const editmodalRef = ref();
-const fileListRef = ref(null);
-const fileListDialogVisible = ref(false);
-const currentRowId = ref(null); // 褰撳墠鏌ョ湅闄勪欢鐨勮ID
-
-const { proxy } = getCurrentInstance();
-const multipleVal = ref([]);
-const {
-  loading,
-  filters,
-  columns,
-  dataList,
-  pagination,
-  getTableData,
-  resetFilters,
-  onCurrentChange,
-} = usePaginationApi(
-  productRecordPage,
-  {
-    purchaseContractNumber: undefined, // 閲囪喘鍚堝悓鍙�
-    supplierName: undefined, // 渚涘簲鍟�
-    createdAt: [], // 鏉ョエ鏃ユ湡
-  },
-  [
-    {
-      label: "閲囪喘鍚堝悓鍙�",
-      prop: "purchaseContractNumber",
-      width: 150,
-    },
-    {
-      label: "閿�鍞悎鍚屽彿",
-      prop: "salesContractNo",
-      width: 150,
-    },
-    {
-      label: "椤圭洰鍚嶇О",
-      prop: "projectName",
-      width: 240,
-    },
-    {
-      label: "渚涘簲鍟嗗悕绉�",
-      prop: "supplierName",
-      width: 240,
-    },
-    {
-      label: "浜у搧澶х被",
-      prop: "productCategory",
-      width: 150,
-    },
-    {
-      label: "瑙勬牸鍨嬪彿",
-      prop: "specificationModel",
-      width: 150,
-    },
-    {
-      label: "鍙戠エ鍙�",
-      prop: "invoiceNumber",
-      width: 200,
-    },
-    {
-      label: "鍚堝悓閲戦(鍏�)",
-      prop: "taxInclusiveTotalPrice",
-      width: 200,
-      formatData: (cell) => {
-        return cell ? parseFloat(cell).toFixed(2) : 0;
-      },
-    },
-    {
-      label: "寮�绁ㄦ棩鏈�",
-      prop: "createdAt",
-      width: 110,
-    },
-    {
-      label: "寮�绁ㄩ噾棰�",
-      prop: "ticketsAmount",
-      width: 200,
-      formatData: (cell) => {
-        return cell ? parseFloat(cell).toFixed(2) : 0;
-      },
-    },
-    {
-      label: "涓嶅惈绋庨噾棰�",
-      prop: "unTicketsPrice",
-      width: 200,
-      formatData: (cell) => {
-        return cell ? parseFloat(cell).toFixed(2) : 0;
-      },
-    },
-    {
-      label: "澧炲�肩◣",
-      prop: "invoiceAmount",
-      width: 200,
-    },
-    {
-      label: "褰曞叆浜�",
-      prop: "issUer",
-      width: 200,
-    },
-    {
-      fixed: "right",
-      width: 200,
-      label: "鎿嶄綔",
-      dataType: "slot",
-      slot: "operation",
-      align: "center",
-    },
-  ],
-  {},
-  {
-    createdAt: (aim) => ({
-      createdAtStart: aim ? aim[0] : undefined,
-      createdAtEnd: aim ? aim[1] : undefined,
-    }),
-  }
-);
-
-const summarizeMainTable = (param) => {
-  const sums = proxy.summarizeTable(
-    param,
-    ["ticketsAmount", "unTicketsPrice", "invoiceAmount"],
-    {
-      ticketsNum: { noDecimal: true },
-      futureTickets: { noDecimal: true },
-    }
-  );
-
-  const keySet = new Set();
-  let taxInclusiveSum = 0;
-  (param.data || []).forEach((row) => {
-    const key = `${row.purchaseContractNumber ?? ""}\n${row.salesContractNo ?? ""}\n${row.productCategory ?? ""}\n${row.specificationModel ?? ""}`;
-    if (keySet.has(key)) return;
-    keySet.add(key);
-    const val = Number(row.taxInclusiveTotalPrice);
-    if (!isNaN(val)) taxInclusiveSum += val;
-  });
-  const taxInclusiveIndex = (param.columns || []).findIndex(
-    (c) => c.property === "taxInclusiveTotalPrice"
-  );
-  if (taxInclusiveIndex !== -1) {
-    sums[taxInclusiveIndex] = taxInclusiveSum.toFixed(2);
-  }
-  return sums;
-};
-
-const handleSelectionChange = (val) => {
-  multipleVal.value = val;
-};
-
-// 瀵煎嚭
-const handleOut = () => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(() => {
-      proxy.download("/purchase/registration/export", {}, "鏉ョエ鐧昏.xlsx");
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-
-const changePage = ({ page, limit }) => {
-  pagination.currentPage = page;
-	pagination.pageSize = limit;
-  onCurrentChange(page);
-};
-
-// 鎵撳紑闄勪欢寮圭獥
-const recordId =ref(0)
-const fileDialogVisible = ref(false)
-
-// 鎵撳紑闄勪欢寮规
-const openFileDialog = async (row) => {
-  recordId.value = row.id
-  fileDialogVisible.value = true
-}
-
-const openEdit = (row) => {
-  editmodalRef.value.open(row);
-};
-// 鍒犻櫎
-const handleDelete = (row) => {
-	let ids = [];
-	ids.push(row.id);
-	ElMessageBox.confirm("璇ュ紑绁ㄥ彴璐﹀皢琚垹闄�,鏄惁纭鍒犻櫎", {
-		confirmButtonText: "纭",
-		cancelButtonText: "鍙栨秷",
-		type: "warning",
-	})
-		.then(() => {
-			loading.value = true;
-			delRegistration(ids).then((res) => {
-				getTableData();
-			});
-			loading.value = false;
-		})
-		.catch(() => {
-			proxy.$modal.msg("宸插彇娑�");
-		});
-};
-
-onMounted(() => {
-  getTableData();
-});
-</script>
-
-<style lang="scss" scoped>
-.table_list {
-  margin-top: unset;
-}
-.tagBox {
-  margin-top: 4px;
-}
-</style>
diff --git a/src/views/salesManagement/invoiceLedger/index.vue b/src/views/salesManagement/invoiceLedger/index.vue
deleted file mode 100644
index e52ea47..0000000
--- a/src/views/salesManagement/invoiceLedger/index.vue
+++ /dev/null
@@ -1,438 +0,0 @@
-<template>
-  <div class="app-container">
-    <div class="search_form">
-      <el-form :inline="true" :model="searchForm">
-        <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 style="width: 240px" v-model="searchForm.invoiceDate" 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 label="褰曞叆鏃ユ湡">
-          <el-date-picker style="width: 100%" v-model="searchForm.createTimeStart" value-format="YYYY-MM-DD HH:mm:ss"
-            format="YYYY-MM-DD" type="date" placeholder="璇烽�夋嫨" clearable @change="handleQuery" />
-        </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>
-          <el-button @click="handleOut" type="primary">瀵煎嚭</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <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="salesContractNo" show-overflow-tooltip width="180" />
-        <el-table-column label="瀹㈡埛鍚嶇О" prop="customerName" show-overflow-tooltip width="240" />
-        <el-table-column label="浜у搧澶х被" prop="productCategory" width="200" />
-        <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="160" show-overflow-tooltip />
-        <el-table-column label="鍙戠エ鍙�" prop="invoiceNo" width="200" show-overflow-tooltip />
-        <el-table-column label="鍙戠エ閲戦(鍏�)" prop="invoiceTotal" show-overflow-tooltip :formatter="formattedNumber"
-          width="200" />
-        <el-table-column label="绋庣巼(%)" prop="taxRate" show-overflow-tooltip />
-        <el-table-column label="褰曞叆浜�" prop="invoicePerson" show-overflow-tooltip />
-        <el-table-column label="褰曞叆鏃ユ湡" prop="createTime" show-overflow-tooltip :formatter="formatDate" width="180" />
-        <el-table-column label="寮�绁ㄦ棩鏈�" prop="invoiceDate" show-overflow-tooltip width="120" />
-        <el-table-column fixed="right" label="鎿嶄綔" width="150" align="center">
-          <template #default="scope">
-            <el-button link type="primary" @click="openForm(scope.row)">缂栬緫</el-button>
-            <el-button link type="primary" @click="openFileDialog(scope.row)">闄勪欢</el-button>
-            <el-button link type="primary" @click="delInvoiceLedger(scope.row)">鍒犻櫎</el-button>
-          </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" />
-    </div>
-    <FormDialog v-model="dialogFormVisible" title="寮�绁ㄥ彴璐﹂〉闈�" :width="'70%'" @close="closeDia" @confirm="submitForm" @cancel="closeDia">
-      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="閿�鍞悎鍚屽彿锛�" prop="salesContractNo">
-              <el-input v-model="form.salesContractNo" disabled></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="瀹㈡埛鍚嶇О锛�" prop="customerName">
-              <el-input v-model="form.customerName" placeholder="鑷姩濉厖" clearable disabled />
-            </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-col :span="12">
-            <el-form-item :label="`鍙戠エ閲戦(鍏�)锛� `" prop="invoiceTotal">
-              <el-input-number :step="0.01" :min="0" :max="maxInvoiceAmount || form.taxInclusiveTotalPrice" style="width: 100%" v-model="form.invoiceTotal" placeholder="璇疯緭鍏�" clearable :precision="2"/>
-              <div v-if="maxInvoiceAmount > 0" style="color: #909399; font-size: 12px; margin-top: 5px;">
-                鍙~鏈�澶ч噾棰濅负锛毬{ maxInvoiceAmount.toFixed(2) }}鍏�
-              </div>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="寮�绁ㄤ汉锛�" prop="invoicePerson">
-              <el-input v-model="form.invoicePerson" placeholder="璇疯緭鍏�" clearable disabled />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="寮�绁ㄦ棩鏈燂細" prop="invoiceDate">
-              <el-date-picker style="width: 100%" v-model="form.invoiceDate" value-format="YYYY-MM-DD"
-                format="YYYY-MM-DD" type="date" placeholder="璇烽�夋嫨" clearable />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="30">
-          <el-col :span="24">
-            <el-form-item label="闄勪欢鏉愭枡锛�" prop="remark">
-              <el-upload v-model:file-list="fileList" :action="upload.url" multiple ref="fileUpload" auto-upload
-                :headers="upload.headers" accept=".pdf" :limit="10" :before-upload="handleBeforeUpload"
-                :on-error="handleUploadError" :on-success="handleUploadSuccess">
-                <el-button type="primary">涓婁紶</el-button>
-                <template #tip>
-                  <!--                  鏂囦欢鏍煎紡鏀寔 doc锛宒ocx锛寈ls锛寈lsx锛宲pt锛宲ptx锛宲df锛宼xt锛寈ml锛宩pg锛宩peg锛宲ng锛実if锛宐mp锛宺ar锛寊ip锛�7z-->
-                  <div class="el-upload__tip">鏂囦欢鏍煎紡鏀寔 pdf</div>
-                </template>
-              </el-upload>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </FormDialog>
-    <el-dialog title="涓婁紶寮圭獥" width="50%" v-model="uploadModal">
-      <el-row :gutter="30">
-        <el-col :span="24">
-          <el-form-item label="闄勪欢鏉愭枡锛�" prop="remark">
-            <el-upload v-model:file-list="fileList" :action="upload.url" multiple ref="fileUpload" auto-upload
-              :headers="upload.headers" accept=".pdf" :limit="10" style="width: 100%" :on-exceed="handleExceed"
-              :before-upload="handleBeforeUpload" :on-error="handleUploadError" :on-success="handleUploadSuccess"
-              :on-remove="handleRemove">
-              <el-button type="primary">涓婁紶</el-button>
-              <template #tip>
-                <div class="el-upload__tip">鏂囦欢鏍煎紡浠呮敮鎸� pdf</div>
-              </template>
-            </el-upload>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button @click="commiInvoicetFile" type="primary">纭</el-button>
-          <el-button @click="uploadModal = false">鍙栨秷</el-button>
-        </div>
-      </template>
-    </el-dialog>
-    <FileList v-if="fileDialogVisible"  v-model:visible="fileDialogVisible" record-type="invoice_registration_product" :record-id="recordId"  />
-  </div>
-</template>
-
-<script setup>
-import pagination from "@/components/PIMTable/Pagination.vue";
-import FormDialog from '@/components/Dialog/FormDialog.vue';
-import { ref } from "vue";
-import { Search } from "@element-plus/icons-vue";
-import { ElMessageBox } from "element-plus";
-import { getToken } from "@/utils/auth";
-import {
-  invoiceLedgerSaveOrUpdate,
-  invoiceLedgerProductInfo,
-  commitFile,
-  registrationProductPage,
-  delInvoiceLedgerByRegProductId,
-} from "@/api/salesManagement/invoiceLedger.js";
-import useUserStore from "@/store/modules/user.js";
-import useFormData from "@/hooks/useFormData";
-import dayjs from "dayjs";
-import { getCurrentDate } from "@/utils/index.js";
-const FileList = defineAsyncComponent(() => import("@/components/Dialog/FileList.vue"));
-
-const { proxy } = getCurrentInstance();
-const tableData = ref([]);
-const productData = ref([]);
-const selectedRows = ref([]);
-const tableLoading = ref(false);
-const page = reactive({
-  current: 1,
-  size: 100,
-});
-const total = ref(0);
-const fileList = ref([]);
-const dialogFormVisible = ref(false);
-const data = reactive({
-  searchForm: {
-    searchText: "",
-    status: false,
-    invoiceDate: null,
-    invoiceDateStart: undefined,
-    invoiceDateEnd: undefined,
-    createTimeStart: "", // 褰曞叆鏃ユ湡
-  },
-  form: {
-    salesLedgerId: "",
-    customerId: "",
-    invoiceNo: "",
-    invoiceTotal: "",
-    taxRate: "",
-    invoicePerson: "",
-    invoiceDate: "",
-    customerName: "",
-    fileList: [],
-    createTime: "", // 褰曞叆鏃ユ湡
-  },
-  rules: {
-    salesLedgerId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-    customerId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    invoiceNo: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-    invoiceAmount: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    taxRate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-    invoicePerson: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-    invoiceDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-    customerName: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-  },
-});
-const { form, rules } = toRefs(data);
-const { form: searchForm, resetForm } = useFormData(data.searchForm);
-const currentId = ref("");
-const userStore = useUserStore();
-const maxInvoiceAmount = ref(0); // 鍙戠エ閲戦鏈�澶у��
-const upload = reactive({
-  // 涓婁紶鐨勫湴鍧�
-  url: import.meta.env.VITE_APP_BASE_API + "/invoiceLedger/uploadFile",
-  // 璁剧疆涓婁紶鐨勮姹傚ご閮�
-  headers: { Authorization: "Bearer " + getToken() },
-});
-const matchFileType = ref(["pdf"]);
-const uploadModal = ref(false);
-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 = () => {
-  page.current = 1;
-  getList();
-};
-const paginationChange = (obj) => {
-  page.current = obj.page;
-  page.size = obj.limit;
-  getList();
-};
-const getList = () => {
-  tableLoading.value = true;
-  const { invoiceDate, ...rest } = searchForm;
-  // 灏嗚寖鍥存棩鏈熷瓧娈典紶閫掔粰鍚庣
-  const params = { ...rest, ...page };
-  // 绉婚櫎寮�绁ㄦ棩鏈熺殑榛樿鍊艰缃紝鍙繚鐣欒寖鍥存棩鏈熷瓧娈�
-  delete params.invoiceDate;
-  registrationProductPage(params).then((res) => {
-    tableLoading.value = false;
-    tableData.value = res.data.records;
-    total.value = res.data.total;
-  });
-};
-// 琛ㄦ牸閫夋嫨鏁版嵁
-const handleSelectionChange = (selection) => {
-  selectedRows.value = selection;
-};
-// 涓昏〃鍚堣鏂规硶
-const summarizeMainTable = (param) => {
-  return proxy.summarizeTable(param, ["invoiceTotal"], {
-    ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-    futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-  });
-};
-// 鎵撳紑寮规
-const openForm = (row) => {
-  form.value = {};
-  productData.value = [];
-  fileList.value = [];
-  currentId.value = row.id;
-
-  invoiceLedgerProductInfo({ id: row.id }).then((res) => {
-    form.value = { ...res.data };
-    fileList.value = res.data.fileList;
-    // 淇濆瓨ticketRegistrationId鍒拌〃鍗曟暟鎹腑
-    if (row.ticketRegistrationId) {
-      form.value.ticketRegistrationId = row.ticketRegistrationId;
-    }
-    if (!form.value.invoicePerson) {
-      form.value.invoicePerson = userStore.nickName;
-    }
-    
-    // 璁$畻鍙戠エ閲戦鏈�澶у�硷細noInvoiceAmount + invoiceAmount
-    const noInvoiceAmount = parseFloat(res.data.noInvoiceAmount || 0);
-    const invoiceAmount = parseFloat(res.data.invoiceAmount || 0);
-    maxInvoiceAmount.value = noInvoiceAmount + invoiceAmount;
-  });
-  dialogFormVisible.value = true;
-};
-// 涓婁紶澶氫釜鏂囦欢灏辫鐩栧師鏉ョ殑
-const handleExceed = (files) => {
-  proxy.$refs["fileUpload"].clearFiles();
-  const file = files[0];
-  file.uid = genFileId();
-  proxy.$refs["fileUpload"].handleStart(file);
-};
-// 涓婁紶鍓嶆牎妫�
-function handleBeforeUpload(file) {
-  // 鏍℃鏂囦欢澶у皬
-  if (file.size > 1024 * 1024 * 10) {
-    proxy.$modal.msgError("涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃10MB!");
-    return false;
-  }
-  // 鍒ゆ柇鏂囦欢鏍煎紡鏄惁绗﹀悎
-  const fileType = file.name.split(".").pop().toLowerCase();
-  if (!matchFileType.value.includes(fileType)) {
-    proxy.$modal.msgError("鏂囦欢鏍煎紡涓嶅尮閰�");
-    return false;
-  }
-  proxy.$modal.loading("姝e湪涓婁紶鏂囦欢锛岃绋嶅��...");
-  return true;
-}
-// 涓婁紶澶辫触
-function handleUploadError(err) {
-  proxy.$modal.msgError("涓婁紶鏂囦欢澶辫触");
-  proxy.$modal.closeLoading();
-}
-// 涓婁紶鎴愬姛鍥炶皟
-function handleUploadSuccess(res, file, uploadFiles) {
-  proxy.$modal.closeLoading();
-  if (res.code === 200) {
-    proxy.$modal.msgSuccess("涓婁紶鎴愬姛");
-    // 灏嗕笂浼犳垚鍔熺殑鏂囦欢淇℃伅娣诲姞鍒癴ileList涓�
-    const fileInfo = {
-      name: file.name,
-      url: res.data.url || file.response?.data?.url || file.url,
-      response: file.response
-    };
-    // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鏂囦欢锛岄伩鍏嶉噸澶嶆坊鍔�
-    const existingFileIndex = fileList.value.findIndex(f => f.name === fileInfo.name);
-    if (existingFileIndex === -1) {
-      fileList.value.push(fileInfo);
-    } else {
-      fileList.value[existingFileIndex] = fileInfo;
-    }
-    // 纭繚琛ㄥ崟鏁版嵁涓殑fileList涔熸洿鏂�
-    form.value.fileList = fileList.value;
-  } else {
-    proxy.$modal.msgError(res.msg);
-    proxy.$refs.fileUpload.handleRemove(file);
-  }
-}
-// 鎻愪氦琛ㄥ崟
-const submitForm = () => {
-  proxy.$refs["formRef"].validate((valid) => {
-    if (valid) {
-      form.value.fileList = fileList.value;
-      invoiceLedgerSaveOrUpdate(form.value).then((res) => {
-        proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
-        closeDia();
-        getList();
-      });
-    }
-  });
-};
-// 鍏抽棴寮规
-const closeDia = () => {
-  proxy.resetForm("formRef");
-  dialogFormVisible.value = false;
-};
-// 瀵煎嚭
-const handleOut = () => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(() => {
-      proxy.download("/invoiceLedger/export", {}, "寮�绁ㄥ彴璐�.xlsx");
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-
-// 纭鏂囦欢涓婁紶
-const commiInvoicetFile = () => {
-  const object = {
-    fileList: fileList.value,
-    id: currentId.value,
-  };
-  commitFile(object).then((res) => {
-    if (res.code === 200) {
-      proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
-      uploadModal.value = false;
-    }
-    getList();
-    currentId.value = "";
-    fileList.value = [];
-  });
-};
-// 鍒犻櫎寮�绁ㄥ彴璐�
-const delInvoiceLedger = (row) => {
-  ElMessageBox.confirm("璇ュ彂绁ㄥ彴璐﹀皢琚垹闄�,鏄惁纭鍒犻櫎", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(() => {
-      delInvoiceLedgerByRegProductId(row.id).then((res) => {
-				proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-        getList();
-      });
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-
-const changeDateRange = (date) => {
-  if (date) {
-    searchForm.invoiceDateStart = date[0];
-    searchForm.invoiceDateEnd = date[1];
-    getList();
-  }
-};
-
-const clearRange = () => {
-  searchForm.invoiceDate = [];
-  searchForm.invoiceDateStart = undefined;
-  searchForm.invoiceDateEnd = undefined;
-  getList();
-};
-
-// 鎵撳紑闄勪欢寮圭獥
-const recordId =ref(0)
-const fileDialogVisible = ref(false)
-
-// 鎵撳紑闄勪欢寮规
-const openFileDialog = async (row) => {
-  recordId.value = row.id
-  fileDialogVisible.value = true
-}
-
-onMounted(() => {
-  getList();
-});
-</script>
-
-<style scoped lang="scss">
-.table_list {
-  margin-top: unset;
-}
-</style>
diff --git a/src/views/salesManagement/invoiceRegistration/index.vue b/src/views/salesManagement/invoiceRegistration/index.vue
deleted file mode 100644
index 44e1c4e..0000000
--- a/src/views/salesManagement/invoiceRegistration/index.vue
+++ /dev/null
@@ -1,814 +0,0 @@
-<template>
-	<div class="app-container">
-		<div class="search_form">
-			<el-form :inline="true" :model="searchForm">
-				<el-form-item label="瀹㈡埛鍚嶇О">
-					<el-input
-						v-model="searchForm.customerName"
-						style="width: 240px"
-						placeholder="璇疯緭鍏ュ悕绉版悳绱�"
-						clearable
-						:prefix-icon="Search"
-						@change="handleQuery"
-					/>
-				</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-button @click="handleExport" style="margin-right: 10px">瀵煎嚭</el-button>
-				</el-form-item>
-			</el-form>
-		</div>
-		<div class="table_list">
-			<div class="flex justify-between">
-				<div></div>
-				<div>
-					<el-button 
-						type="primary" 
-						@click="openForm" 
-						style="margin-bottom: 8px"
-						:disabled="!canInvoice"
-					>
-						寮�绁ㄧ櫥璁�
-					</el-button>
-				</div>
-			</div>
-			<el-table
-				:data="tableData"
-				:border="true"
-				height="calc(100vh - 21em)"
-				v-loading="tableLoading"
-				:expand-row-keys="expandedRowKeys"
-				:row-key="(row) => row.id"
-				show-summary
-				:summary-method="summarizeMainTable"
-				@expand-change="expandChange"
-				@selection-change="handleSelectionChange"
-			>
-				<el-table-column align="center" type="selection" 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"
-								width="150"
-							/>
-							<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="taxInclusiveUnitPrice"
-								:formatter="formattedNumber"
-							/>
-							<el-table-column
-								label="鍚◣鎬讳环(鍏�)"
-								prop="taxInclusiveTotalPrice"
-								:formatter="formattedNumber"
-							/>
-							<el-table-column
-								label="涓嶅惈绋庢�讳环(鍏�)"
-								prop="taxExclusiveTotalPrice"
-								:formatter="formattedNumber"
-							/>
-							<el-table-column
-								label="寮�绁ㄦ暟"
-								prop="invoiceNum"
-								:formatter="formattedNumber"
-							/>
-							<el-table-column
-								label="寮�绁ㄩ噾棰�(鍏�)"
-								prop="invoiceAmount"
-								:formatter="formattedNumber"
-							/>
-							<el-table-column
-								label="鏈紑绁ㄦ暟"
-								prop="noInvoiceNum"
-								:formatter="formattedNumber"
-							/>
-							<el-table-column
-								label="鏈紑绁ㄩ噾棰�(鍏�)"
-								prop="noInvoiceAmount"
-								:formatter="formattedNumber"
-							/>
-						</el-table>
-					</template>
-				</el-table-column>
-				<el-table-column align="center" label="搴忓彿" type="index" width="60" />
-				<el-table-column
-					label="閿�鍞悎鍚屽彿"
-					prop="salesContractNo"
-					show-overflow-tooltip
-				/>
-<!--				<el-table-column-->
-<!--					label="瀹㈡埛鍚堝悓鍙�"-->
-<!--					prop="customerContractNo"-->
-<!--					width="200"-->
-<!--					show-overflow-tooltip-->
-<!--				/>-->
-				<el-table-column
-					label="瀹㈡埛鍚嶇О"
-					prop="customerName"
-					show-overflow-tooltip
-				/>
-				<el-table-column label="涓氬姟鍛�" prop="salesman" show-overflow-tooltip/>
-				<el-table-column
-					label="鍚堝悓閲戦(鍏�)"
-					prop="contractAmount"
-					show-overflow-tooltip
-					:formatter="formattedNumber"
-				
-				/>
-				<el-table-column
-					label="宸插紑绁ㄩ噾棰�(鍏�)"
-					prop="invoiceTotal"
-					show-overflow-tooltip
-					:formatter="formattedNumber"
-				/>
-				<el-table-column
-					label="鏈紑绁ㄩ噾棰�(鍏�)"
-					prop="noInvoiceAmountTotal"
-					show-overflow-tooltip
-					width="120"
-				>
-					<template #default="{ row, column }">
-						<el-text type="danger">
-							{{ formattedNumber(row, column, row.noInvoiceAmountTotal) }}
-						</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"
-			/>
-		</div>
-		<FormDialog
-			v-model="dialogFormVisible"
-			title="鏂板寮�绁ㄧ櫥璁伴〉闈�"
-			:width="'85%'"
-			@close="closeDia"
-			@confirm="submitForm"
-			@cancel="closeDia"
-		>
-			<el-form
-				:model="form"
-				label-width="140px"
-				label-position="top"
-				:rules="rules"
-				ref="formRef"
-			>
-				<el-row :gutter="30">
-					<el-col :span="12">
-						<el-form-item label="閿�鍞悎鍚屽彿锛�" prop="salesContractNo">
-							<el-input v-model="form.salesContractNo" disabled placeholder="澶氬悎鍚屾壒閲忓鐞嗭紙鍏蜂綋鍚堝悓鍙疯浜у搧鍒楄〃锛�"></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :span="12">
-						<el-form-item label="瀹㈡埛鍚嶇О锛�" prop="customerName">
-							<el-input
-								v-model="form.customerName"
-								placeholder="鑷姩濉厖"
-								disabled
-							></el-input>
-						</el-form-item>
-					</el-col>
-				</el-row>
-				<el-row :gutter="30">
-					<el-col :span="12">
-						<el-form-item label="涓氬姟鍛橈細" prop="salesman">
-							<el-input
-								v-model="form.salesman"
-								placeholder="鑷姩濉厖"
-								disabled
-							/>
-						</el-form-item>
-					</el-col>
-					<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 :gutter="30">
-					<el-col :span="12">
-						<el-form-item label="寮�绁ㄦ棩鏈�" prop="issueDate">
-							<el-date-picker
-								style="width: 100%"
-								v-model="form.issueDate"
-								type="date"
-								placeholder="璇烽�夋嫨"
-								clearable
-								format="YYYY-MM-DD"
-								value-format="YYYY-MM-DD"
-							/>
-						</el-form-item>
-					</el-col>
-				</el-row>
-				<el-row :gutter="30">
-					<el-col :span="12">
-						<el-form-item label="褰曞叆浜�" prop="createUer">
-							<el-input v-model="form.createUer" placeholder="璇疯緭鍏ュ綍鍏ヤ汉" />
-						</el-form-item>
-					</el-col>
-					<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-form-item label="浜у搧淇℃伅锛�" prop="entryDate"> </el-form-item>
-				</el-row>
-				<el-table
-					:data="productData"
-					border
-					show-summary
-					:summary-method="summarizeChildrenTable"
-				>
-					<el-table-column
-						align="center"
-						label="搴忓彿"
-						type="index"
-						width="60"
-					/>
-					<el-table-column label="鎵�灞炲悎鍚�" prop="salesContractNo" width="200">
-						<template #default="{ row }">
-							<el-tag type="primary">{{ row.salesContractNo }}</el-tag>
-						</template>
-					</el-table-column>
-					<el-table-column label="浜у搧澶х被" prop="productCategory" />
-					<el-table-column
-						label="瑙勬牸鍨嬪彿"
-						prop="specificationModel"
-						width="150"
-					/>
-					<el-table-column label="鍗曚綅" prop="unit" />
-					<el-table-column label="鏁伴噺" prop="quantity" width="70" />
-					<el-table-column label="绋庣巼(%)" prop="taxRate" width="80" />
-					<el-table-column
-						label="鍚◣鍗曚环(鍏�)"
-						prop="taxInclusiveUnitPrice"
-						:formatter="formattedNumber"
-						width="200"
-					/>
-					<el-table-column
-						label="鍚◣鎬讳环(鍏�)"
-						prop="taxInclusiveTotalPrice"
-						:formatter="formattedNumber"
-						width="200"
-					/>
-					<el-table-column
-						label="涓嶅惈绋庢�讳环(鍏�)"
-						prop="taxExclusiveTotalPrice"
-						:formatter="formattedNumber"
-						width="150"
-					/>
-					<el-table-column label="鏈寮�绁ㄦ暟" prop="currentInvoiceNum" width="180">
-						<template #default="scope">
-							<el-input-number 
-								:step="0.1" 
-								:min="0" 
-								style="width: 100%"
-								:precision="2"
-								v-model="scope.row.currentInvoiceNum"
-								@change="invoiceNumBlur(scope.row)"
-								:disabled="isProductInvoiceDisabled(scope.row)"
-							></el-input-number>
-						</template>
-					</el-table-column>
-					<el-table-column
-						label="鏈寮�绁ㄩ噾棰�(鍏�)"
-						prop="currentInvoiceAmount"
-						width="180"
-					>
-						<template #default="scope">
-							<el-input-number 
-								:step="0.01" 
-								:min="0" 
-								style="width: 100%"
-								:precision="2"
-								v-model="scope.row.currentInvoiceAmount"
-								@change="invoiceAmountBlur(scope.row)"
-								:disabled="isProductInvoiceDisabled(scope.row)"
-							></el-input-number>
-						</template>
-					</el-table-column>
-					<el-table-column label="鏈紑绁ㄦ暟" prop="noInvoiceNum" width="120">
-						<template #default="scope">
-							<el-input
-								type="number"
-								min="0"
-								disabled
-								v-model="scope.row.noInvoiceNum"
-							></el-input>
-						</template>
-					</el-table-column>
-					<el-table-column
-						label="鏈紑绁ㄩ噾棰�(鍏�)"
-						prop="noInvoiceAmount"
-						width="200"
-					>
-						<template #default="scope">
-							<el-input
-								type="number"
-								min="0"
-								disabled
-								v-model="scope.row.noInvoiceAmount"
-								:formatter="formattedInputNumber"
-								:precision="2"
-								:step="0.01"
-							></el-input>
-						</template>
-					</el-table-column>
-					<el-table-column label="鐧昏浜�" prop="register" width="100">
-						<!-- <template #default="{ row }">
-							<el-input
-								v-model="row.register"
-								placeholder="璇疯緭鍏ョ櫥璁颁汉"
-								disabled
-							/>
-						</template> -->
-					</el-table-column>
-					<el-table-column label="鐧昏鏃ユ湡" prop="registerDate" width="150">
-						<!-- <template #default="{ row }">
-							<el-date-picker
-								style="width: 100%"
-								v-model="row.registerDate"
-								value-format="YYYY-MM-DD"
-								format="YYYY-MM-DD"
-								type="date"
-								placeholder="璇烽�夋嫨"
-								clearable
-								disabled
-							/>
-						</template> -->
-					</el-table-column>
-				</el-table>
-			</el-form>
-		</FormDialog>
-	</div>
-</template>
-
-<script setup>
-import pagination from "@/components/PIMTable/Pagination.vue";
-import FormDialog from '@/components/Dialog/FormDialog.vue';
-import { onMounted, ref, computed } from "vue";
-import { Search } from "@element-plus/icons-vue";
-import { ElMessageBox } from "element-plus";
-// import {userListNoPage} from "@/api/system/user.js";
-import {
-	getSalesLedgerWithProducts,
-	ledgerListPage,
-	productList,
-} from "@/api/salesManagement/salesLedger.js";
-import { invoiceRegistrationSave } from "@/api/salesManagement/invoiceRegistration.js";
-import useFormData from "@/hooks/useFormData";
-import useUserStore from "@/store/modules/user";
-import dayjs from "dayjs";
-
-const { proxy } = getCurrentInstance();
-const userStore = useUserStore();
-const tableData = ref([]);
-const productData = ref([]);
-const selectedRows = ref([]);
-const tableLoading = ref(false);
-const page = reactive({
-	current: 1,
-	size: 100,
-});
-const total = ref(0);
-// 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
-const operationType = ref("");
-const dialogFormVisible = ref(false);
-const data = reactive({
-	searchForm: {
-		customerName: "",
-		status: false,
-		customerContractNo: undefined, // 瀹㈡埛鍚堝悓鍙�
-		projectName: undefined, // 椤圭洰鍚嶇О
-		createUer: undefined, // 鐧昏浜�
-		issueDate: undefined, // 寮�绁ㄦ棩鏈�
-		createTime: undefined, // 褰曞叆鏃ユ湡锛�
-		productCategory: "",
-		isInvoice: 1
-	},
-	form: {
-		salesLedgerId: "",
-		customerName: "",
-		salesman: "",
-		projectName: "",
-		productData: [],
-		invoiceNo: "",
-		createUer: userStore.nickName,
-		issueDate: dayjs().format("YYYY-MM-DD"),
-		selectedContractIds: [], // 鏂板锛氬瓨鍌ㄦ墍鏈夐�変腑鐨勫悎鍚孖D
-		isBatch: false // 鏂板锛氭爣璇嗘槸鍚︿负鎵归噺鎿嶄綔
-	},
-	rules: {
-		createUer: [{ required: true, message: "璇烽�夋嫨", trigger: "blur" }],
-		issueDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-		invoiceNo: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }],
-		createTime: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-	},
-});
-const { form, rules } = toRefs(data);
-const { form: searchForm, resetForm } = useFormData(data.searchForm);
-
-const formattedNumber = (row, column, cellValue) => {
-	if (cellValue == 0) {
-		return parseFloat(cellValue).toFixed(2);
-	}
-	if (cellValue) {
-		return parseFloat(cellValue).toFixed(2);
-	} else {
-		return cellValue;
-	}
-};
-
-const formattedInputNumber = (value) => {
-	return value ? parseFloat(value).toFixed(2) : 0;
-};
-
-// 鍒ゆ柇鏄惁鍙互寮�绁紙鍩轰簬閫変腑鐨勫彴璐︽暟鎹級
-const canInvoice = computed(() => {
-	if (selectedRows.value.length === 0) {
-		return false;
-	}
-	// 妫�鏌ユ墍鏈夐�変腑鐨勫彴璐︼紝鍙鏈変竴涓湭寮�绁ㄩ噾棰濆ぇ浜�0锛屽氨鍙互寮�绁�
-	return selectedRows.value.some(row => {
-		const noInvoiceAmount = parseFloat(row.noInvoiceAmountTotal || 0);
-		return noInvoiceAmount > 0;
-	});
-});
-
-// 鍒ゆ柇鍗曚釜浜у搧鏄惁鍙互寮�绁�
-const isProductInvoiceDisabled = (row) => {
-	// 妫�鏌ユ湭寮�绁ㄩ噾棰濆拰鏈紑绁ㄦ暟锛屽鏋滈兘涓�0鎴栧皬浜庣瓑浜�0锛屽垯绂佺敤
-	// 浼樺厛浣跨敤 tempnoInvoiceAmount 鍜� tempNoInvoiceNum锛堝垵濮嬪�硷級锛屽鏋滄病鏈夊垯浣跨敤 noInvoiceAmount 鍜� originalNoInvoiceNum
-	const noInvoiceAmount = parseFloat(row.tempnoInvoiceAmount || row.noInvoiceAmount || 0);
-	const noInvoiceNum = parseFloat(row.tempNoInvoiceNum || row.originalNoInvoiceNum || row.noInvoiceNum || 0);
-	return noInvoiceAmount <= 0 || noInvoiceNum <= 0;
-};
-
-// 鏌ヨ鍒楄〃
-/** 鎼滅储鎸夐挳鎿嶄綔 */
-const handleQuery = () => {
-	page.current = 1;
-	getList();
-};
-const paginationChange = (obj) => {
-	page.current = obj.page;
-	page.size = obj.limit;
-	getList();
-};
-const getList = () => {
-	tableLoading.value = true;
-	ledgerListPage({ ...searchForm, ...page }).then((res) => {
-		tableLoading.value = false;
-		tableData.value = res.records;
-		total.value = res.total;
-		expandedRowKeys.value = [];
-	});
-};
-// 琛ㄦ牸閫夋嫨鏁版嵁
-const handleSelectionChange = (selection) => {
-	console.log("selection", selection);
-	selectedRows.value = selection.filter(
-		(item) => item.salesContractNo !== undefined
-	);
-};
-const expandedRowKeys = ref([]);
-// 灞曞紑琛�
-const expandChange = (row, expandedRows) => {
-	if (expandedRows.length > 0) {
-		expandedRowKeys.value = [];
-		try {
-			productList({ salesLedgerId: row.id, type: 1 }).then((res) => {
-				const index = tableData.value.findIndex((item) => item.id === row.id);
-				if (index > -1) {
-					tableData.value[index].children = res.data;
-				}
-				expandedRowKeys.value.push(row.id);
-			});
-		} catch (error) {
-			console.log(error);
-		}
-	} else {
-		expandedRowKeys.value = [];
-	}
-};
-// 涓昏〃鍚堣鏂规硶
-const summarizeMainTable = (param) => {
-	return proxy.summarizeTable(param, [
-		"contractAmount",
-		"invoiceTotal",
-		"noInvoiceAmountTotal",
-	]);
-};
-// 瀛愯〃鍚堣鏂规硶
-const summarizeChildrenTable = (param) => {
-	return proxy.summarizeTable(param, [
-		"taxInclusiveUnitPrice",
-		"taxInclusiveTotalPrice",
-		"taxExclusiveTotalPrice",
-		"invoiceNum",
-		"invoiceAmount",
-		"currentInvoiceAmount",
-		"noInvoiceNum",
-		"noInvoiceAmount",
-		"currentInvoiceNum",
-	]);
-};
-// 鎵撳紑寮规
-const openForm = () => {
-	// 鍒ゆ柇鏄惁閫夋嫨浜嗗悎鍚�
-	if (selectedRows.value.length === 0) {
-		proxy.$modal.msgError("璇疯嚦灏戦�夋嫨涓�鏉″悎鍚�");
-		return;
-	}
-	
-	// 妫�鏌ユ墍鏈夐�夋嫨鐨勫悎鍚屾槸鍚﹀叿鏈夌浉鍚岀殑瀹㈡埛鍚嶇О
-	const firstRow = selectedRows.value[0];
-	const isSameCustomer = selectedRows.value.every(row =>
-		row.customerName === firstRow.customerName
-	);
-	
-	if (!isSameCustomer) {
-		proxy.$modal.msgError("璇烽�夋嫨鐩稿悓瀹㈡埛鍚嶇О鐨勫悎鍚�");
-		return;
-	}
-	
-	// 鍏佽涓嶅悓鐨勯攢鍞悎鍚屽彿鎵归噺澶勭悊锛屾棤闇�妫�鏌ラ噸澶�
-	
-	form.value = {};
-	productData.value = [];
-	
-	// 鍔犺浇鎵�鏈夐�変腑鍚堝悓鐨勪骇鍝佹暟鎹�
-	const promises = selectedRows.value.map(row =>
-		getSalesLedgerWithProducts({ id: row.id })
-	);
-	
-	Promise.all(promises).then(results => {
-		// 鍚堝苟鎵�鏈夊悎鍚岀殑浜у搧鏁版嵁锛屽苟涓烘瘡涓骇鍝佹坊鍔犲搴旂殑鍚堝悓淇℃伅
-		const allProductData = [];
-		results.forEach((result, index) => {
-			const contract = selectedRows.value[index];
-			// const contractId = contract.id;
-			if (result.productData) {
-				result.productData.forEach(item => {
-					allProductData.push({
-						...item,
-						// id: contractId, // 鏄庣‘璁剧疆鍚堝悓ID
-						salesContractNo: contract.salesContractNo, // 娣诲姞閿�鍞悎鍚屽彿
-						customerName: contract.customerName, // 娣诲姞瀹㈡埛鍚嶇О
-						customerContractNo: contract.customerContractNo // 娣诲姞瀹㈡埛鍚堝悓鍙�
-					});
-				});
-			}
-		});
-		
-		// 璁剧疆琛ㄥ崟鏁版嵁锛堜娇鐢ㄧ涓�涓悎鍚岀殑鍩烘湰淇℃伅锛岄攢鍞悎鍚屽彿鐣欑┖锛�
-		form.value = { ...results[0] };
-		form.value.createTime = dayjs().format("YYYY-MM-DD");
-		form.value.issueDate = dayjs().format("YYYY-MM-DD");
-		form.value.createUer = userStore.nickName;
-		form.value.selectedContractIds = selectedRows.value.map(row => row.id); // 瀛樺偍鎵�鏈夐�変腑鐨勫悎鍚孖D
-		form.value.salesContractNo = ""; // 閿�鍞悎鍚屽彿鐣欑┖锛屽洜涓轰細鍦ㄤ骇鍝佽〃鏍间腑鍒嗗埆鏄剧ず
-		
-		productData.value = allProductData;
-		
-		// 瀵逛簬涓嶈兘寮�绁ㄧ殑浜у搧锛屽皢寮�绁ㄦ暟鍜屽紑绁ㄩ噾棰濊缃负0
-		productData.value.forEach(item => {
-			if (isProductInvoiceDisabled(item)) {
-				item.currentInvoiceNum = 0;
-				item.currentInvoiceAmount = 0;
-			}
-		});
-		
-		dialogFormVisible.value = true;
-		console.log("productData.value ", productData.value);
-	});
-};
-// 鎻愪氦琛ㄥ崟
-const submitForm = () => {
-	proxy.$refs["formRef"].validate((valid) => {
-		if (valid) {
-			// 濡傛灉鏄壒閲忔搷浣滐紝灏嗘墍鏈夊悎鍚岀殑鏁版嵁鏀惧湪涓�涓暟缁勯噷锛屽彧璋冪敤涓�娆℃帴鍙�
-			if (selectedRows.value.length > 1) {
-				// 鍒涘缓鍖呭惈鎵�鏈夊悎鍚屾暟鎹殑鏁扮粍
-				const batchData = selectedRows.value.map(contract => {
-					// 绛涢�夊嚭灞炰簬褰撳墠鍚堝悓鐨勪骇鍝佹暟鎹�
-					const contractProductData = productData.value.filter(item =>
-						item.salesLedgerId === contract.id
-					);
-					
-					// 涓烘瘡涓攢鍞悎鍚屽彿鍒涘缓鐙珛鐨勫璞�
-					return {
-						// 鍩虹琛ㄥ崟鏁版嵁
-						issueDate: form.value.issueDate,
-						createTime: form.value.createTime,
-						createUer: form.value.createUer,
-						invoiceNo: form.value.invoiceNo,
-						
-						// 鍚堝悓瀹為檯淇℃伅
-						id: contract.id, // 浣跨敤id浣滀负瀛楁鍚嶏紝鍊间负salesLedgerId
-						salesContractNo: contract.salesContractNo, // 浣跨敤瀹為檯鐨勯攢鍞悎鍚屽彿
-						customerName: contract.customerName, // 浣跨敤瀹為檯鐨勫鎴峰悕绉�
-						customerId: contract.customerId, // 娣诲姞瀹㈡埛ID
-						customerContractNo: contract.customerContractNo, // 浣跨敤瀹為檯鐨勫鎴峰悎鍚屽彿
-						projectName: contract.projectName, // 浣跨敤瀹為檯鐨勯」鐩悕绉�
-						salesman: contract.salesman, // 浣跨敤瀹為檯鐨勪笟鍔″憳
-						
-						// 浜у搧鏁版嵁
-						productData: proxy.HaveJson(contractProductData),
-						
-						// 鎵归噺鏍囪瘑
-						isBatch: true
-					};
-				});
-				
-				// 鍙皟鐢ㄤ竴娆℃帴鍙o紝浼犻�掑寘鍚墍鏈夊悎鍚屾暟鎹殑鏁扮粍
-				invoiceRegistrationSave(batchData).then(() => {
-					proxy.$modal.msgSuccess("鎵归噺鏂板鎴愬姛");
-					closeDia();
-					getList();
-				});
-			} else {
-				// 鍗曚釜鍚堝悓鎻愪氦閫昏緫 - 涔熶互鏁扮粍褰㈠紡浼犻��
-				const singleContract = selectedRows.value[0];
-				const singleFormArray = [
-					{
-						// 鍩虹琛ㄥ崟鏁版嵁
-						issueDate: form.value.issueDate,
-						createTime: form.value.createTime,
-						createUer: form.value.createUer,
-						invoiceNo: form.value.invoiceNo,
-						
-						// 鍚堝悓瀹為檯淇℃伅
-						id: singleContract.id, // 浣跨敤id浣滀负瀛楁鍚嶏紝鍊间负salesLedgerId
-						salesContractNo: singleContract.salesContractNo, // 浣跨敤瀹為檯鐨勯攢鍞悎鍚屽彿
-						customerName: singleContract.customerName, // 浣跨敤瀹為檯鐨勫鎴峰悕绉�
-						customerId: singleContract.customerId, // 娣诲姞瀹㈡埛ID
-						customerContractNo: singleContract.customerContractNo, // 浣跨敤瀹為檯鐨勫鎴峰悎鍚屽彿
-						projectName: singleContract.projectName, // 浣跨敤瀹為檯鐨勯」鐩悕绉�
-						salesman: singleContract.salesman, // 浣跨敤瀹為檯鐨勪笟鍔″憳
-						
-						// 浜у搧鏁版嵁
-						productData: proxy.HaveJson(productData.value),
-						
-						// 鎵归噺鏍囪瘑
-						isBatch: false
-					}
-				];
-				invoiceRegistrationSave(singleFormArray).then((res) => {
-					proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
-					closeDia();
-					getList();
-				});
-			}
-		}
-	});
-};
-// 鍏抽棴寮规
-const closeDia = () => {
-	proxy.resetForm("formRef");
-	dialogFormVisible.value = false;
-};
-// 瀵煎嚭
-const handleOut = () => {
-	ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-		confirmButtonText: "纭",
-		cancelButtonText: "鍙栨秷",
-		type: "warning",
-	})
-		.then(() => {
-			proxy.download("/invoiceRegistration/export", {}, "寮�绁ㄧ櫥璁颁俊鎭�.xlsx");
-		})
-		.catch(() => {
-			proxy.$modal.msg("宸插彇娑�");
-		});
-};
-
-// 瀵煎嚭閿�鍞彴璐�
-const handleExport = () => {
-	ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-		confirmButtonText: "纭",
-		cancelButtonText: "鍙栨秷",
-		type: "warning",
-	})
-		.then(() => {
-			proxy.download("/sales/ledger/exportOne", { ...searchForm, ...page }, "寮�绁ㄧ櫥璁�.xlsx");
-		})
-		.catch(() => {
-			proxy.$modal.msg("宸插彇娑�");
-		});
-};
-
-//鏈寮�绁ㄥけ鐒︽搷浣�
-const invoiceNumBlur = (row) => {
-	if (!row.currentInvoiceNum) {
-		row.currentInvoiceNum = 0;
-	}
-	if (row.currentInvoiceNum > row.tempNoInvoiceNum) {
-		proxy.$modal.msgWarning("鏈寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟");
-		row.currentInvoiceNum = 0;
-	}
-	// 璁$畻鏈寮�绁ㄩ噾棰�
-	row.currentInvoiceAmount = (
-		row.currentInvoiceNum * row.taxInclusiveUnitPrice
-	).toFixed(2);
-	// 璁$畻鏈紑绁ㄦ暟
-	row.noInvoiceNum = (row.originalNoInvoiceNum - row.currentInvoiceNum).toFixed(
-		2
-	);
-	// 璁$畻鏈紑绁ㄩ噾棰�
-	row.noInvoiceAmount = (
-		row.tempnoInvoiceAmount - row.currentInvoiceAmount
-	).toFixed(2);
-};
-// 鏈寮�绁ㄩ噾棰濆け鐒︽搷浣�
-const invoiceAmountBlur = (row) => {
-	if (!row.currentInvoiceAmount) {
-		row.currentInvoiceAmount = 0;
-	}
-	// 璁$畻鏄惁瓒呰繃寮�绁ㄦ�婚噾棰�
-	if (row.currentInvoiceAmount > row.tempnoInvoiceAmount) {
-		proxy.$modal.msgWarning("鏈寮�绁ㄩ噾棰濅笉寰楀ぇ浜庢湭寮�绁ㄩ噾棰�");
-		row.currentInvoiceAmount = 0;
-	}
-	// 璁$畻鏈寮�绁ㄦ暟
-	row.currentInvoiceNum = (
-		row.currentInvoiceAmount / row.taxInclusiveUnitPrice
-	).toFixed(2);
-	console.log("row.currentInvoiceNum ", row.currentInvoiceNum);
-	console.log(" row.originalNoInvoiceNum  ", row.originalNoInvoiceNum);
-	// 璁$畻鏈紑绁ㄦ暟
-	row.noInvoiceNum = (row.originalNoInvoiceNum - row.currentInvoiceNum).toFixed(
-		2
-	);
-	// 璁$畻鏈紑绁ㄩ噾棰�
-	row.noInvoiceAmount = (
-		row.tempnoInvoiceAmount - row.currentInvoiceAmount
-	).toFixed(2);
-};
-
-onMounted(() => {
-	getList();
-});
-</script>
-
-<style scoped lang="scss">
-.table_list {
-	margin-top: unset;
-}
-.flex {
-	display: flex;
-}
-.justify-between {
-	justify-content: space-between;
-}
-:deep(.el-checkbox__label) {
-	font-weight: bold;
-}
-</style>
-
-
-
-
-
diff --git a/src/views/salesManagement/receiptPayment/index.vue b/src/views/salesManagement/receiptPayment/index.vue
deleted file mode 100644
index 25bd280..0000000
--- a/src/views/salesManagement/receiptPayment/index.vue
+++ /dev/null
@@ -1,605 +0,0 @@
-<template>
-  <div class="app-container">
-    <div class="search_form">
-      <el-form :inline="true" :model="searchForm" style="width: 100%">
-        <el-row justify="space-between">
-          <el-col :span="24">
-            <el-form-item label="瀹㈡埛鍚嶇О">
-              <el-input
-                v-model="searchForm.customerName"
-                placeholder="璇疯緭鍏�"
-                @change="handleQuery"
-                clearable
-                prefix-icon="Search"
-              />
-            </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-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </div>
-    <div class="table_list">
-      <div class="actions">
-        <div></div>
-        <div>
-          <el-button type="primary" @click="openForm('add')">
-            鏂板鍥炴
-          </el-button>
-          <el-button icon="Download" @click="handleOut"> 瀵煎嚭 </el-button>
-        </div>
-      </div>
-      <el-table
-        :data="tableData"
-        border
-        ref="tableRef"
-        v-loading="tableLoading"
-        @selection-change="handleSelectionChange"
-        :row-key="(row) => row.id"
-        show-summary
-        :summary-method="summarizeMainTable"
-        :expand-row-keys="expandedRowKeys"
-        @expand-change="expandChange"
-
-        height="calc(100vh - 21.5em)"
-      >
-        <el-table-column align="center" type="selection" 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="receiptPaymentDate"  width="130"/>
-              <el-table-column label="鍥炴閲戦" prop="receiptPaymentAmount">
-                <template #default="scope">
-									<el-input-number :step="0.01" :min="0" style="width: 100%"
-																	 v-model="scope.row.receiptPaymentAmount"
-																	 :disabled="!scope.row.editType"
-																	 :precision="2"
-																	 placeholder="璇疯緭鍏�"
-																	 clearable
-									/>
-                </template>
-              </el-table-column>
-              <el-table-column label="鍥炴鏂瑰紡" prop="receiptPaymentType">
-                <template #default="scope">
-                  <el-select
-                    v-model="scope.row.receiptPaymentType"
-                    placeholder="璇烽�夋嫨"
-                    clearable
-                    :disabled="!scope.row.editType"
-                  >
-                    <el-option
-                      v-for="item in receipt_payment_type"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    />
-                  </el-select>
-                </template>
-              </el-table-column>
-              <el-table-column label="鐧昏浜�" prop="registrant" width="90"/>
-              <el-table-column label="鐧昏鏃ユ湡" prop="createTime"   width="130"/>
-              <el-table-column label="鎿嶄綔" width="150" align="center">
-                <template #default="scope">
-                  <el-button
-                    link
-                    type="primary"
-                    @click="changeEditType(scope.row)"
-                    v-if="!scope.row.editType"
-                    >缂栬緫</el-button
-                  >
-                  <el-button
-                    link
-                    type="primary"
-                    @click="saveReceiptPayment(scope.row)"
-                    v-if="scope.row.editType"
-                    >淇濆瓨</el-button
-                  >
-                  <el-button
-                    link
-                    type="primary"
-                    @click="delReceiptRecord(scope.row)"
-                    >鍒犻櫎</el-button
-                  >
-                </template>
-              </el-table-column>
-            </el-table>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="搴忓彿" type="index" width="60" />
-        <el-table-column
-          label="閿�鍞悎鍚屽彿"
-          prop="salesContractNo"
-          show-overflow-tooltip
-          width="240"
-        />
-        <el-table-column
-          label="瀹㈡埛鍚嶇О"
-          prop="customerName"
-          show-overflow-tooltip
-          width="240"
-        />
-        <el-table-column
-          label="鍥炴鐘舵��"
-          prop="statusName"
-          width="120"
-        >
-          <template #default="{ row }">
-            <el-tag :type="getStatusTagType(row.statusName)" disable-transitions>
-              {{ row.statusName || "--" }}
-            </el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="浜у搧澶х被"
-          prop="productCategory"
-          show-overflow-tooltip
-          width="100"
-        />
-        <el-table-column
-          label="瑙勬牸鍨嬪彿"
-          prop="specificationModel"
-          show-overflow-tooltip
-          width="200"
-        />
-        <el-table-column label="绋庣巼(%)" prop="taxRate" show-overflow-tooltip />
-        <el-table-column
-          label="宸插洖娆鹃噾棰�(鍏�)"
-          prop="invoiceTotal"
-          show-overflow-tooltip
-          :formatter="formattedNumber"
-          width="200"
-        />
-        <el-table-column
-          label="寰呭洖娆鹃噾棰�(鍏�)"
-          prop="pendingInvoiceTotal"
-          show-overflow-tooltip
-          width="200"
-        >
-          <template #default="{ row, column }">
-            <el-text type="danger">
-              {{ formattedNumber(row, column, row.pendingInvoiceTotal) }}
-            </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"
-      />
-    </div>
-    <FormDialog
-      v-model="dialogFormVisible"
-      title="鏂板鍥炴椤甸潰"
-      :width="'90%'"
-      @close="closeDia"
-      @confirm="submitForm"
-      @cancel="closeDia"
-    >
-      <el-table
-        v-if="forms.length"
-        :data="forms"
-        border
-        style="width: 100%"
-        size="small"
-      >
-        <el-table-column type="index" label="搴忓彿" width="50" align="center"/>
-        <el-table-column label="閿�鍞悎鍚屽彿" prop="salesContractNo" show-overflow-tooltip />
-        <el-table-column label="瀹㈡埛鍚嶇О" prop="customerName" show-overflow-tooltip />
-				<el-table-column
-					label="浜у搧澶х被"
-					prop="productCategory"
-					show-overflow-tooltip
-					width="100"
-				/>
-				<el-table-column
-					label="瑙勬牸鍨嬪彿"
-					prop="specificationModel"
-					show-overflow-tooltip
-					width="200"
-				/>
-        <el-table-column label="绋庣巼(%)" width="110">
-          <template #default="{ row }">
-            <el-input v-model="row.taxRate" disabled />
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="寰呭洖娆鹃噾棰�(鍏�)"
-          prop="pendingInvoiceTotal"
-          show-overflow-tooltip
-          width="170"
-        >
-          <template #default="{ row, column }">
-            <el-text type="danger">
-              {{ formattedNumber(row, column, row.pendingInvoiceTotal) }}
-            </el-text>
-          </template>
-        </el-table-column>
-        <el-table-column label="鏈鍥炴閲戦(鍏�)" width="180">
-          <template #default="{ row }">
-            <el-input-number
-              v-model="row.receiptPaymentAmount"
-              :step="0.01"
-              :min="0"
-              :max="Number(row.pendingInvoiceTotal || 0)"
-              :precision="2"
-              style="width: 100%"
-              placeholder="璇疯緭鍏�"
-            />
-          </template>
-        </el-table-column>
-        <el-table-column label="鍥炴褰㈠紡" width="160">
-          <template #default="{ row }">
-            <el-select v-model="row.receiptPaymentType" placeholder="璇烽�夋嫨" clearable>
-              <el-option
-                v-for="opt in receipt_payment_type"
-                :key="opt.value"
-                :label="opt.label"
-                :value="opt.value"
-              />
-            </el-select>
-          </template>
-        </el-table-column>
-        <el-table-column label="鍥炴鏃ユ湡" width="170">
-          <template #default="{ row }">
-            <el-date-picker
-              v-model="row.receiptPaymentDate"
-              value-format="YYYY-MM-DD"
-              format="YYYY-MM-DD"
-              type="date"
-              placeholder="璇烽�夋嫨"
-              style="width: 100%"
-            />
-          </template>
-        </el-table-column>
-        <el-table-column label="鐧昏浜�" width="140">
-          <template #default="{ row }">
-            <el-input v-model="row.registrant" />
-          </template>
-        </el-table-column>
-      </el-table>
-      <div v-else class="empty-tip">璇烽�夋嫨闇�瑕佸洖娆剧殑璁板綍</div>
-    </FormDialog>
-  </div>
-</template>
-
-<script setup>
-import pagination from "@/components/PIMTable/Pagination.vue";
-import FormDialog from '@/components/Dialog/FormDialog.vue';
-import { onMounted, ref, reactive, getCurrentInstance } from "vue";
-import {
-  receiptPaymentSaveOrUpdate,
-  bindInvoiceNoRegPage,
-  receiptPaymentHistoryListNoPage,
-  receiptPaymentDel,
-} from "../../../api/salesManagement/receiptPayment.js";
-import useUserStore from "@/store/modules/user";
-import { ElMessage, ElMessageBox } from "element-plus";
-import useFormData from "@/hooks/useFormData";
-
-const userStore = useUserStore();
-const { proxy } = getCurrentInstance();
-const tableData = ref([]);
-const selectedRows = ref([]);
-const tableLoading = ref(false);
-const forms = ref([]);
-const page = reactive({
-  current: 1,
-  size: 100,
-});
-const total = ref(0);
-const expandedRowKeys = ref([]);
-const tableRef = ref(null);
-
-// 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
-const dialogFormVisible = ref(false);
-const data = reactive({
-  searchForm: {
-    searchText: "",
-    status: true,
-    customerName: "",
-    specificationModel: "",
-  },
-});
-const { form: searchForm } = useFormData(data.searchForm);
-const { receipt_payment_type } = proxy.useDict("receipt_payment_type");
-
-const formattedNumber = (row, column, cellValue) => {
-  const val = Number(cellValue ?? 0);
-  return Number.isFinite(val) ? val.toFixed(2) : "0.00";
-};
-
-const getStatusTagType = (statusName = '') => {
-  const normalized = statusName.trim();
-  if (!normalized) return 'info';
-  return normalized === '鏈畬鎴愪粯娆�' ? 'danger' : 'success';
-};
-// 鏌ヨ鍒楄〃
-/** 鎼滅储鎸夐挳鎿嶄綔 */
-const handleQuery = () => {
-  page.current = 1;
-  getList();
-};
-const paginationChange = (obj) => {
-  page.current = obj.page;
-  page.size = obj.limit;
-  getList();
-};
-const getList = () => {
-  tableLoading.value = true;
-  bindInvoiceNoRegPage({ ...searchForm, ...page })
-    .then((res) => {
-      tableLoading.value = false;
-      tableData.value = res.data.records;
-      total.value = res.data.total;
-			if (expandedRowKeys.value.length > 0) {
-				const arr = []
-				const index = tableData.value.findIndex(item => item.id === expandedRowKeys.value[0]);
-				if (index > -1) {
-					arr.push(tableData.value[index]);
-					expandChange(tableData.value[index], arr)
-				}
-			}
-    })
-    .catch(() => {
-      tableLoading.value = false;
-    });
-};
-// 灞曞紑琛�
-const expandChange = (row, expandedRows) => {
-  if (expandedRows.length > 0) {
-    expandedRowKeys.value = [];
-    try {
-      receiptPaymentHistoryListNoPage({
-        invoiceLedgerId: row.id,
-        type: 1,
-      }).then((res) => {
-        const index = tableData.value.findIndex((item) => item.id === row.id);
-        if (index > -1) {
-          if (res?.length > 0) {
-            res.forEach((item) => {
-              item.editType = false;
-            });
-          }
-          tableData.value[index].children = res;
-        }
-        expandedRowKeys.value.push(row.id);
-      });
-    } catch (error) {
-      console.log(error);
-    }
-  } else {
-    expandedRowKeys.value = [];
-  }
-};
-// 琛ㄦ牸閫夋嫨鏁版嵁
-const handleSelectionChange = (selection) => {
-  console.log("selection", selection);
-  selectedRows.value = selection;
-};
-// 涓昏〃鍚堣鏂规硶
-const summarizeMainTable = (param) => {
-  return proxy.summarizeTable(
-    param,
-    ["receiptPaymentAmountTotal", "noReceiptAmount"],
-    {
-      ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-      futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-    }
-  );
-};
-// 瀛愯〃鍚堣鏂规硶
-const summarizeChildrenTable = (param) => {
-  return proxy.summarizeTable(param, ["receiptPaymentAmount"]);
-};
-// 鎵撳紑寮规
-const openForm = () => {
-  if (selectedRows.value.length === 0) {
-    proxy.$modal.msgError("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
-    return;
-  }
-  // 浠呭厑璁糕�滃緟鍥炴閲戦 > 0鈥濈殑璁板綍杩涘叆鏂板鍥炴寮圭獥锛屽苟杩囨护鎺夊彲鑳芥贩鍏ョ殑绌哄璞�
-  const validRows = selectedRows.value.filter((item) => {
-    if (!item || !item.id) return false;
-    return Number(item.pendingInvoiceTotal ?? 0) > 0;
-  });
-  if (validRows.length === 0) {
-    proxy.$modal.msgWarning("鎵�閫夎褰曞潎鏃犻渶鍥炴");
-    return;
-  }
-  forms.value = validRows.map((row) => ({
-    salesContractNo: row.salesContractNo || "",
-    customerName: row.customerName || "",
-    productCategory: row.productCategory || "",
-    specificationModel: row.specificationModel || "",
-    pendingInvoiceTotal: Number(row.pendingInvoiceTotal || 0),
-    taxRate: row.taxRate ?? "",
-    // 榛樿鏈鍥炴閲戦 = 寰呭洖娆鹃噾棰�
-    receiptPaymentAmount: Number(row.pendingInvoiceTotal || 0),
-    receiptPaymentType: "",
-    registrant: userStore.nickName,
-    receiptPaymentDate: "",
-    invoiceLedgerId: row.id,
-    salesLedgerId: row.salesLedgerId,
-    salesLedgerProductId: row.id,
-  }));
-  dialogFormVisible.value = true;
-};
-// 鎻愪氦琛ㄥ崟
-const submitForm = () => {
-  if (forms.value.length === 0) {
-    proxy.$modal.msgError("璇烽�夋嫨鍥炴璁板綍");
-    return;
-  }
-  for (let i = 0; i < forms.value.length; i++) {
-    const item = forms.value[i];
-    const pendingAmount = Number(item.pendingInvoiceTotal || 0);
-    const currentAmount = Number(item.receiptPaymentAmount);
-    if (!item.receiptPaymentAmount && item.receiptPaymentAmount !== 0) {
-      proxy.$modal.msgError(`绗� ${i + 1} 鏉★細璇峰~鍐欏洖娆鹃噾棰漙);
-      return;
-    }
-    if (currentAmount > pendingAmount) {
-      proxy.$modal.msgError(
-        `绗� ${i + 1} 鏉★細鍥炴閲戦涓嶈兘瓒呰繃寰呭洖娆鹃噾棰濓紙寰呭洖娆撅細${pendingAmount.toFixed(
-          2
-        )}锛塦
-      );
-      return;
-    }
-    if (!item.receiptPaymentType) {
-      proxy.$modal.msgError(`绗� ${i + 1} 鏉★細璇烽�夋嫨鍥炴褰㈠紡`);
-      return;
-    }
-    if (!item.receiptPaymentDate) {
-      proxy.$modal.msgError(`绗� ${i + 1} 鏉★細璇烽�夋嫨鍥炴鏃ユ湡`);
-      return;
-    }
-  }
-  receiptPaymentSaveOrUpdate(forms.value).then(() => {
-    proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
-    closeDia();
-    getList();
-  });
-};
-// 鍏抽棴寮规
-const closeDia = () => {
-  forms.value = [];
-  dialogFormVisible.value = false;
-  // 閬垮厤浜屾鎵撳紑寮圭獥鏃朵粛鎼哄甫涓婁竴娆$殑閫夋嫨瀵艰嚧鈥滃鍑轰竴琛�/鑴忔暟鎹��
-  selectedRows.value = [];
-  tableRef.value?.clearSelection();
-};
-
-// 鍒犻櫎鍥炴璁板綍
-const delReceiptRecord = (row) => {
-  console.log("row", row);
-  ElMessageBox.confirm("纭鍒犻櫎璇ヨ褰曞悧锛�", "鎻愮ず", {
-    confirmButtonText: "纭畾",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(async () => {
-      try {
-        let ids = [];
-        ids.push(row.id);
-        await receiptPaymentDel(ids);
-        ElMessage.success("鍒犻櫎鎴愬姛");
-        getList();
-      } catch (error) {
-        console.error("鍒犻櫎澶辫触:", error);
-        ElMessage.error("鍒犻櫎澶辫触");
-      }
-    })
-    .catch(() => {
-      ElMessage.info("宸插彇娑堝垹闄�");
-    });
-};
-
-// 缂栬緫淇敼鐘舵��
-const changeEditType = (row) => {
-  row.editType = !row.editType;
-};
-
-// 淇濆瓨鍥炴璁板綍
-const saveReceiptPayment = (row) => {
-  // 瀛愯〃鍥炴閲戦鍚堣鏍¢獙锛氭墍鏈夊洖娆捐褰曢噾棰濅箣鍜屼笉鑳藉ぇ浜庣埗鏁版嵁鍚堝悓閲戦
-  // 杩欓噷鐖舵暟鎹�滃悎鍚岄噾棰濃�濇寜锛氬凡鍥炴閲戦( invoiceTotal ) + 寰呭洖娆鹃噾棰�( pendingInvoiceTotal ) 璁$畻
-  const findParentRowByChildId = (childId) => {
-    return tableData.value.find((p) =>
-      Array.isArray(p.children) && p.children.some((c) => c.id === childId)
-    );
-  };
-  const parentRow = findParentRowByChildId(row.id);
-  if (parentRow) {
-    const contractAmount =
-      Number(parentRow.invoiceTotal || 0) + Number(parentRow.pendingInvoiceTotal || 0);
-    const sumReceipt = (parentRow.children || []).reduce((sum, item) => {
-      const val = Number(item?.receiptPaymentAmount ?? 0);
-      return sum + (Number.isFinite(val) ? val : 0);
-    }, 0);
-    if (sumReceipt > contractAmount) {
-      proxy.$modal.msgError(
-        `鍥炴閲戦鍚堣(${sumReceipt.toFixed(2)})涓嶈兘澶т簬鍚堝悓閲戦(${contractAmount.toFixed(2)})`
-      );
-      return;
-    }
-  }
-
-  let updateData = {
-    id: row.id,
-    receiptPaymentType: row.receiptPaymentType,
-    receiptPaymentAmount: row.receiptPaymentAmount,
-  };
-  receiptPaymentSaveOrUpdate([updateData]).then((res) => {
-    row.editType = !row.editType;
-		getList();
-		proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
-  });
-};
-
-// 瀵煎嚭
-const handleOut = () => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(() => {
-      const ids = selectedRows.value.map((item) => item.id);
-      proxy.download(
-        `/receiptPayment/export`,
-        { ids: `${ids}` },
-        "鍥炴鐧昏妗f.xlsx"
-      );
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-
-onMounted(() => {
-  getList();
-});
-</script>
-
-<style scoped lang="scss">
-.table_list {
-  margin-top: unset;
-}
-:deep(.el-checkbox__label) {
-  font-weight: bold;
-}
-.actions {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 10px;
-}
-.empty-tip {
-  text-align: center;
-  padding: 20px 0;
-  color: #909399;
-}
-</style>
diff --git a/src/views/salesManagement/receiptPaymentHistory/index.vue b/src/views/salesManagement/receiptPaymentHistory/index.vue
deleted file mode 100644
index 11a59a6..0000000
--- a/src/views/salesManagement/receiptPaymentHistory/index.vue
+++ /dev/null
@@ -1,279 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="searchForm" :inline="true">
-      <el-form-item label="瀹㈡埛鍚嶇О">
-        <el-input
-          v-model="searchForm.searchText"
-          placeholder="杈撳叆瀹㈡埛鍚嶇О鎼滅储"
-          @change="handleQuery"
-          clearable
-          :prefix-icon="Search"
-        />
-      </el-form-item>
-      <el-form-item label="鍥炴鏃ユ湡">
-        <el-date-picker
-          v-model="searchForm.receiptPaymentDate"
-          value-format="YYYY-MM-DD"
-          format="YYYY-MM-DD"
-          type="daterange"
-          start-placeholder="寮�濮嬫椂闂�"
-          end-placeholder="缁撴潫鏃堕棿"
-          clearable
-          style="width: 300px"
-          @change="changeDateRange"
-          @clear="clearRange"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="handleQuery"> 鎼滅储 </el-button>
-        <el-button @click="handleExport">瀵煎嚭</el-button>
-        <el-button
-          type="danger"
-          :disabled="selectedRows.length === 0"
-          @click="handleBatchDelete"
-        >
-          鎵归噺鍒犻櫎 ({{ selectedRows.length }})
-        </el-button>
-      </el-form-item>
-    </el-form>
-    <div class="table_list">
-      <PIMTable
-        rowKey="id"
-        :column="tableColumn"
-        :tableData="tableData"
-        :page="page"
-        :isSelection="true"
-        :isShowSummary="isShowSummarySon"
-        :summaryMethod="summarizeMainTable1"
-        :tableLoading="tableLoading"
-        :total="page.total"
-        @pagination="pagination"
-        @selection-change="handleSelectionChange"
-      >
-        <template #operation="{ row }">
-          <el-button
-            type="primary"
-            link
-            @click="handleDelete(row)"
-          >
-            鍒犻櫎
-          </el-button>
-        </template>
-      </PIMTable>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import { ref, reactive, getCurrentInstance, onMounted } from "vue";
-import { Search } from "@element-plus/icons-vue";
-import { ElMessageBox } from "element-plus";
-import { receiptPaymentHistoryListPage, receiptPaymentDel } from "@/api/salesManagement/receiptPayment.js";
-import useFormData from "@/hooks/useFormData";
-import dayjs from "dayjs";
-
-const { proxy } = getCurrentInstance();
-const tableColumn = ref([
-  {
-    label: "閿�鍞悎鍚屽彿",
-    prop: "salesContractNo",
-    width:240
-  },
-  {
-    label: "鍥炴鏃ユ湡",
-    prop: "receiptPaymentDate",
-    width:100
-  },
-  {
-    label: "瀹㈡埛鍚嶇О",
-    prop: "customerName",
-    width:240
-  },
-  {
-    label: "鍥炴閲戦锛堝厓锛�",
-    prop: "receiptPaymentAmount",
-    width:200,
-    formatData: (params) => {
-      return params ? parseFloat(params).toFixed(2) : 0;
-    },
-  },
-  {
-    label: "鍥炴鏂瑰紡",
-    prop: "receiptPaymentType",
-    dataType: "tag",
-    formatData: (params) => {
-      if (params == 0) {
-        return "鐢垫眹";
-      } else if (params == 1) {
-        return "鎵垮厬";
-      } else {
-        return null;
-      }
-    },
-    formatType: (params) => {
-      return "info";
-    },
-  },
-  {
-    label: "鐧昏浜�",
-    prop: "registrant",
-  },
-  {
-    label: "鐧昏鏃ユ湡",
-    prop: "createTime",
-    width:100
-  },
-  {
-    label: "鎿嶄綔",
-    dataType: "slot",
-    fixed: "right",
-    slot: "operation",
-    width: 100,
-    align: "center",
-  },
-]);
-const tableData = ref([]);
-const selectedRows = ref([]);
-const tableLoading = ref(false);
-const page = reactive({
-  current: 1,
-  size: 100,
-	total: 0,
-});
-const total = ref(0);
-
-const { form: searchForm } = useFormData({
-  searchText: undefined,
-  receiptPaymentDate: [],
-  receiptPaymentDateStart: undefined,
-  receiptPaymentDateEnd: undefined,
-});
-const { receipt_payment_type } = proxy.useDict("receipt_payment_type");
-const isShowSummarySon = ref(true);
-// 鏌ヨ鍒楄〃
-/** 鎼滅储鎸夐挳鎿嶄綔 */
-const handleQuery = () => {
-  page.current = 1;
-  getList();
-};
-const pagination = (obj) => {
-  page.current = obj.page;
-  page.size = obj.limit;
-  getList();
-};
-const getList = () => {
-  tableLoading.value = true;
-  const { receiptPaymentDate, ...rest } = searchForm;
-  receiptPaymentHistoryListPage({ ...rest, ...page }).then((res) => {
-    tableLoading.value = false;
-    tableData.value = res.records;
-		page.total = res.total;
-  });
-};
-// 瀛愯〃鍚堣鏂规硶
-const summarizeMainTable1 = (param) => {
-  return proxy.summarizeTable(param, ["receiptPaymentAmount"], {
-    ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-    futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-  });
-};
-// 琛ㄦ牸閫夋嫨鏁版嵁
-const handleSelectionChange = (selection) => {
-  selectedRows.value = selection;
-};
-
-const changeDateRange = (date) => {
-  if (date) {
-    searchForm.receiptPaymentDateStart = dayjs(date[0]).format(
-      "YYYY-MM-DD 00:00:00"
-    );
-    searchForm.receiptPaymentDateEnd = dayjs(date[1]).format(
-      "YYYY-MM-DD 23:59:59"
-    );
-    getList();
-  }
-};
-
-const clearRange = () => {
-  searchForm.receiptPaymentDate = [];
-  searchForm.receiptPaymentDateStart = undefined;
-  searchForm.receiptPaymentDateEnd = undefined;
-  getList();
-};
-
-// 鍒犻櫎
-const handleDelete = (row) => {
-  ElMessageBox.confirm("纭鍒犻櫎璇ヨ褰曞悧锛�", "鎻愮ず", {
-    confirmButtonText: "纭畾",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
-    .then(async () => {
-      try {
-        tableLoading.value = true;
-        await receiptPaymentDel([row.id]);
-        proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-        getList();
-      } catch (error) {
-        console.error("鍒犻櫎澶辫触:", error);
-        proxy.$modal.msgError("鍒犻櫎澶辫触");
-      } finally {
-        tableLoading.value = false;
-      }
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑堝垹闄�");
-    });
-};
-
-// 鎵归噺鍒犻櫎
-const handleBatchDelete = () => {
-  if (selectedRows.value.length === 0) {
-    proxy.$modal.msgWarning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
-    return;
-  }
-  ElMessageBox.confirm(
-    `纭畾瑕佸垹闄ら�変腑鐨� ${selectedRows.value.length} 鏉℃暟鎹悧锛焋,
-    "鍒犻櫎鎻愮ず",
-    {
-      confirmButtonText: "纭",
-      cancelButtonText: "鍙栨秷",
-      type: "warning",
-    }
-  )
-    .then(async () => {
-      try {
-        tableLoading.value = true;
-        const ids = selectedRows.value.map((item) => item.id);
-        await receiptPaymentDel(ids);
-        proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-        selectedRows.value = [];
-        getList();
-      } catch (error) {
-        console.error("鍒犻櫎澶辫触:", error);
-        proxy.$modal.msgError("鍒犻櫎澶辫触");
-      } finally {
-        tableLoading.value = false;
-      }
-    })
-    .catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
-};
-
-// 瀵煎嚭
-const handleExport = () => {
-  const { receiptPaymentDate, ...rest } = searchForm;
-  proxy.download("/receiptPayment/exportOne", { ...rest, ...page }, "鍥炴娴佹按.xlsx");
-};
-
-onMounted(() => {
-  getList();
-});
-</script>
-
-<style scoped lang="scss">
-.table_list {
-  margin-top: unset;
-}
-</style>

--
Gitblit v1.9.3