From ee42bf1badae06026efa79dc17d2a541297ab49b Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 03 九月 2025 17:43:31 +0800
Subject: [PATCH] 采购管理整体样式优化,搜索条件修改

---
 src/pages/equipmentManagement/upkeep/index.vue                     |   16 
 src/pages/procurementManagement/procurementLedger/index.vue        |  201 -----
 src/pages/procurementManagement/receiptPaymentHistory/index.vue    |  234 ------
 src/pages/procurementManagement/paymentEntry/index.vue             |  220 -----
 src/pages/cooperativeOffice/collaborativeApproval/index.vue        |   17 
 src/pages/equipmentManagement/ledger/index.vue                     |   16 
 src/pages/procurementManagement/paymentLedger/index.vue            |  188 -----
 src/pages/procurementManagement/invoiceEntry/index.vue             |  210 -----
 src/pages/sales/invoicingRegistration/index.vue                    |   17 
 src/pages/sales/invoiceLedger/index.vue                            |   18 
 src/pages/sales/receiptPaymentLedger/index.vue                     |   14 
 src/pages/procurementManagement/paymentLedger/detail.vue           |   16 
 src/styles/procurement-common.scss                                 |  420 ++++++++++++
 src/pages/procurementManagement/procurementInvoiceLedger/index.vue |  281 -------
 src/pages/sales/receiptPaymentLedger/detail.vue                    |   16 
 src/pages/equipmentManagement/repair/index.vue                     |   16 
 src/config.js                                                      |    2 
 src/pages/cooperativeOffice/clientVisit/index.vue                  |   16 
 src/pages/sales/receiptPaymentHistory/index.vue                    |   16 
 19 files changed, 743 insertions(+), 1,191 deletions(-)

diff --git a/src/config.js b/src/config.js
index 6840f86..05dff3c 100644
--- a/src/config.js
+++ b/src/config.js
@@ -2,7 +2,7 @@
 const config = {
   //  baseUrl: 'https://vue.ruoyi.vip/prod-api',
   // baseUrl: 'http://localhost/prod-api',
-  baseUrl: 'http://114.132.189.42:8089',
+  baseUrl: 'http://114.132.189.42:9036',
    //cloud鍚庡彴缃戝叧鍦板潃
   //  baseUrl: 'http://192.168.10.3:8080',
    // 搴旂敤淇℃伅
diff --git a/src/pages/cooperativeOffice/clientVisit/index.vue b/src/pages/cooperativeOffice/clientVisit/index.vue
index c701e3d..4f37a94 100644
--- a/src/pages/cooperativeOffice/clientVisit/index.vue
+++ b/src/pages/cooperativeOffice/clientVisit/index.vue
@@ -165,6 +165,7 @@
 
 // 鏌ヨ鍒楄〃
 const getList = () => {
+  showLoadingToast('鍔犺浇涓�...')
   const params = {
     current: -1,
     size: -1,
@@ -173,12 +174,27 @@
   getVisitRecords(params)
     .then((res) => {
       visitList.value = res.records || res.data?.records || []
+      closeToast()
     })
     .catch(() => {
+      closeToast()
       showToast('鑾峰彇鏁版嵁澶辫触')
     })
 }
 
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+  uni.showLoading({
+    title: message,
+    mask: true
+  });
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+  uni.hideLoading();
+};
+
 // 鏂板鎷滆 - 璺宠浆鍒扮櫥璁伴〉闈�
 const addVisit = () => {
   uni.navigateTo({
diff --git a/src/pages/cooperativeOffice/collaborativeApproval/index.vue b/src/pages/cooperativeOffice/collaborativeApproval/index.vue
index b81583e..a3e3293 100644
--- a/src/pages/cooperativeOffice/collaborativeApproval/index.vue
+++ b/src/pages/cooperativeOffice/collaborativeApproval/index.vue
@@ -133,6 +133,7 @@
 	};
 	// 鏌ヨ鍒楄〃
 	const getList = () => {
+		showLoadingToast('鍔犺浇涓�...')
 		const page = {
 			current: -1,
 			size: -1,
@@ -142,11 +143,25 @@
 			})
 			.then((res) => {
 				ledgerList.value = res.data.records;
+				closeToast()
 			})
 			.catch(() => {
-				// tableLoading.value = false;
+				closeToast()
 			});
 	};
+	// 鏄剧ず鍔犺浇鎻愮ず
+	const showLoadingToast = (message) => {
+		uni.showLoading({
+			title: message,
+			mask: true
+		});
+	};
+
+	// 鍏抽棴鎻愮ず
+	const closeToast = () => {
+		uni.hideLoading();
+	};
+
 	// 鏄剧ず绛涢�夐�夐」
 	const showFilterOptions = () => {
 		uni.showActionSheet({
diff --git a/src/pages/equipmentManagement/ledger/index.vue b/src/pages/equipmentManagement/ledger/index.vue
index 0feb86f..712de1e 100644
--- a/src/pages/equipmentManagement/ledger/index.vue
+++ b/src/pages/equipmentManagement/ledger/index.vue
@@ -143,6 +143,7 @@
 
 // 鏌ヨ鍒楄〃锛坈urrent/size 鍥哄畾浼� -1锛�
 const getList = () => {
+  showLoadingToast('鍔犺浇涓�...')
   const params = {
     current: -1,
     size: -1,
@@ -151,12 +152,27 @@
   getLedgerPage(params)
     .then((res) => {
       ledgerList.value = res.data.records
+      closeToast()
     })
     .catch(() => {
+      closeToast()
       showToast('鑾峰彇鏁版嵁澶辫触')
     })
 }
 
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+  uni.showLoading({
+    title: message,
+    mask: true
+  });
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+  uni.hideLoading();
+};
+
 // 鏂板 - 璺宠浆鍒拌鎯呴〉闈�
 const add = () => {
   uni.navigateTo({
diff --git a/src/pages/equipmentManagement/repair/index.vue b/src/pages/equipmentManagement/repair/index.vue
index 804d8dd..c844d4b 100644
--- a/src/pages/equipmentManagement/repair/index.vue
+++ b/src/pages/equipmentManagement/repair/index.vue
@@ -152,6 +152,7 @@
 
 // 鏌ヨ鍒楄〃
 const getList = () => {
+  showLoadingToast('鍔犺浇涓�...')
   const params = {
     current: -1,
     size: -1,
@@ -160,12 +161,27 @@
   getRepairPage(params)
     .then((res) => {
       repairList.value = res.records || res.data?.records || []
+      closeToast()
     })
     .catch(() => {
+      closeToast()
       showToast('鑾峰彇鏁版嵁澶辫触')
     })
 }
 
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+  uni.showLoading({
+    title: message,
+    mask: true
+  });
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+  uni.hideLoading();
+};
+
 // 鏂板缁翠慨 - 璺宠浆鍒扮淮淇〉闈�
 const addMaintain = (id) => {
   if (!id) {
diff --git a/src/pages/equipmentManagement/upkeep/index.vue b/src/pages/equipmentManagement/upkeep/index.vue
index c879f52..35c00de 100644
--- a/src/pages/equipmentManagement/upkeep/index.vue
+++ b/src/pages/equipmentManagement/upkeep/index.vue
@@ -168,6 +168,7 @@
 
 // 鏌ヨ鍒楄〃
 const getList = () => {
+  showLoadingToast('鍔犺浇涓�...')
   const params = {
     current: -1,
     size: -1,
@@ -177,12 +178,27 @@
     .then((res) => {
       // 濡傛灉res.data涓嶆槸鏁扮粍锛岃缃负绌烘暟缁�
       upkeepList.value = res.records || res.data?.records || []
+      closeToast()
     })
     .catch(() => {
+      closeToast()
       showToast('鑾峰彇鏁版嵁澶辫触')
     })
 }
 
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+  uni.showLoading({
+    title: message,
+    mask: true
+  });
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+  uni.hideLoading();
+};
+
 // 鍒囨崲閫夋嫨鐘舵��
 const toggleSelection = (item) => {
   const index = multipleList.value.findIndex(selected => selected.id === item.id)
diff --git a/src/pages/procurementManagement/invoiceEntry/index.vue b/src/pages/procurementManagement/invoiceEntry/index.vue
index 05940b0..6d50f85 100644
--- a/src/pages/procurementManagement/invoiceEntry/index.vue
+++ b/src/pages/procurementManagement/invoiceEntry/index.vue
@@ -4,13 +4,15 @@
 		<PageHeader title="鏉ョエ鐧昏" @back="goBack" />
 		
 		<!-- 鎼滅储鍜岀瓫閫夊尯鍩� -->
-		<view class="search-filter-section">
+		<view class="search-section">
 			<view class="search-bar">
 				<view class="search-input">
-					<input
+					<up-input
 						class="search-text"
 						placeholder="璇疯緭鍏ラ噰璐悎鍚屽彿/渚涘簲鍟嗗悕绉�"
-						v-model="searchKeyword"
+						v-model="supplierName"
+						@change="getList"
+						clearable
 					/>
 				</view>
 				<view class="filter-button" @click="getList">
@@ -96,7 +98,7 @@
 const userStore = useUserStore()
 
 // 鎼滅储鍏抽敭璇�
-const searchKeyword = ref('');
+const supplierName = ref('');
 
 // 閲囪喘鍙拌处鏁版嵁
 const ledgerList = ref([]);
@@ -107,15 +109,30 @@
 };
 // 鏌ヨ鍒楄〃
 const getList = () => {
+	showLoadingToast('鍔犺浇涓�...')
 	const page = {
 		current: -1,
 		size: -1
 	}
-	gePurchaseListPage({...page}).then((res) => {
+	gePurchaseListPage({...page, supplierName: supplierName.value}).then((res) => {
 		ledgerList.value = res.data.records;
+		closeToast()
 	}).catch(() => {
-		// tableLoading.value = false;
+		closeToast()
 	});
+};
+
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+	uni.showLoading({
+		title: message,
+		mask: true
+	});
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+	uni.hideLoading();
 };
 
 // 澶勭悊鏂板鏉ョエ
@@ -162,15 +179,9 @@
 </script>
 
 <style scoped lang="scss">
-.u-divider {
-	margin: 0 !important;
-}
-.sales-account {
-	min-height: 100vh;
-	background: #f8f9fa;
-	position: relative;
-}
+@import '@/styles/procurement-common.scss';
 
+// 鏉ョエ鐧昏鐗规湁鏍峰紡
 .nav-icon {
 	width: 24px;
 	height: 24px;
@@ -223,176 +234,7 @@
 	border-radius: 2px;
 }
 
-.search-filter-section {
-	padding: 10px 20px;
-	background: #ffffff;
-}
-
-.search-bar {
-	display: flex;
-	align-items: center;
-	gap: 12px;
-}
-
-.search-input {
-	flex: 1;
-	background: #f5f5f5;
-	border-radius: 24px;
-	padding: 10px 16px;
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
-
-.search-text {
-	flex: 1;
-	font-size: 14px;
-	color: #333;
-	background: transparent;
-	border: none;
-	outline: none;
-}
-
-.search-text::placeholder {
-	color: #999;
-}
-
-.filter-button {
-	width: 40px;
-	height: 40px;
-	border-radius: 8px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.ledger-list {
-	padding: 20px;
-}
-
-.ledger-item {
-	background: #ffffff;
-	border-radius: 12px;
-	margin-bottom: 16px;
-	overflow: hidden;
-	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-	padding: 0 16px;
-}
-
-.item-header {
-	padding: 16px 0;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-}
-
-.item-left {
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
-
-.document-icon {
-	width: 24px;
-	height: 24px;
-	background: #2979ff;
-	border-radius: 4px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.item-id {
-	font-size: 14px;
-	color: #333;
-	font-weight: 500;
-}
-
-.item-tag {
-	background: #4caf50;
-	border-radius: 4px;
-	padding: 2px 4px;
-}
-
-.tag-text {
-	font-size: 11px;
-	color: #ffffff;
-	font-weight: 500;
-}
-
-.item-details {
-	padding: 16px 0;
-}
-
-.detail-row {
-	display: flex;
-	align-items: flex-end;
-	justify-content: space-between;
-	margin-bottom: 8px;
-	
-	&:last-child {
-		margin-bottom: 0;
-	}
-}
-.detail-info {
-	margin-top: 10px;
-	display: flex;
-	align-items: flex-start;
-	justify-content: space-between;
-}
-
-.detail-label {
-	font-size: 12px;
-	color: #777777;
-	min-width: 60px;
-}
-
-.detail-value {
-	font-size: 12px;
-	color: #000000;
-	text-align: right;
-	flex: 1;
-	margin-left: 16px;
-}
-
-.detail-value.highlight {
-	color: #2979ff;
-	font-weight: 500;
-}
-.detail-value.redlight {
-	color: red;
-	font-weight: 500;
-}
-
-.action-buttons {
-	display: flex;
-	gap: 12px;
-	padding: 0 0 16px 0;
-	justify-content: space-between;
-}
-
-.action-btn {
-	flex: 1;
-}
-
-.no-data {
-	padding: 40px 0;
-	text-align: center;
-	color: #999;
-}
-
 .fab-button {
-	position: fixed;
-	bottom: 30px;
-	right: 30px;
-	width: 56px;
-	height: 56px;
-	background: #2979ff;
-	border-radius: 50%;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3);
-	z-index: 1000;
+	bottom: 30px; // 涓庡叾浠栭〉闈㈢殑 calc(30px + env(safe-area-inset-bottom)) 涓嶅悓
 }
 </style>
diff --git a/src/pages/procurementManagement/paymentEntry/index.vue b/src/pages/procurementManagement/paymentEntry/index.vue
index 11bf5ca..39cd559 100644
--- a/src/pages/procurementManagement/paymentEntry/index.vue
+++ b/src/pages/procurementManagement/paymentEntry/index.vue
@@ -1,17 +1,18 @@
 <template>
-	<view class="receipt-payment">
+	<view class="sales-account">
 		<!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
 		<PageHeader title="浠樻鐧昏" @back="goBack" />
 
 		<!-- 鎼滅储鍜岀瓫閫夊尯鍩� -->
-		<view class="search-filter-section">
+		<view class="search-section">
 			<view class="search-bar">
 				<view class="search-input">
-					<input
+					<up-input
 						class="search-text"
-						placeholder="渚涘簲鍟嗗悕绉�/鍚堝悓鍙�"
+						placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О/鍚堝悓鍙锋悳绱�"
 						v-model="searchForm.supplierNameOrContractNo"
-						confirm-type="search"
+						@change="getList"
+						clearable
 					/>
 				</view>
 				<view class="filter-button" @click="getList">
@@ -135,14 +136,30 @@
 
 // 鑾峰彇鍒楄〃鏁版嵁
 const getList = () => {
+	showLoadingToast('鍔犺浇涓�...')
 	tableLoading.value = true
 	invoiceListPage({ ...searchForm.value, ...page.value }).then((res) => {
 		tableLoading.value = false
 		tableData.value = res.records || []
+		closeToast()
 	}).catch(() => {
 		tableLoading.value = false
+		closeToast()
 	})
 }
+
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+	uni.showLoading({
+		title: message,
+		mask: true
+	});
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+	uni.hideLoading();
+};
 
 // 鎵撳紑鏂板琛ㄥ崟
 const openForm = (type, item) => {
@@ -161,201 +178,12 @@
 </script>
 
 <style scoped lang="scss">
-.u-divider {
-	margin: 0 !important;
-}
+@import '@/styles/procurement-common.scss';
 
-.receipt-payment {
-	min-height: 100vh;
-	background: #f8f9fa;
-	position: relative;
-}
-
-.search-filter-section {
-	padding: 10px 20px;
-	background: #ffffff;
-}
-
-.search-bar {
-	display: flex;
-	align-items: center;
-	gap: 12px;
-}
-
-.search-input {
-	flex: 1;
-	background: #f5f5f5;
-	border-radius: 24px;
-	padding: 10px 16px;
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
-
-.search-text {
-	flex: 1;
-	font-size: 14px;
-	color: #333;
-	background: transparent;
-	border: none;
-	outline: none;
-}
-
-.search-text::placeholder {
-	color: #999;
-}
-
-.filter-button {
-	width: 40px;
-	height: 40px;
-	border-radius: 8px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.switch-row {
-	padding: 8px;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	margin-top: 8px;
-}
-
-.switch-label {
-	font-size: 14px;
-	color: #333;
-}
-
-
-
-.ledger-list {
-	padding: 20px;
-}
-
-.ledger-item {
-	background: #ffffff;
-	border-radius: 12px;
-	margin-bottom: 16px;
-	overflow: hidden;
-	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-	padding: 0 16px;
-}
-
-.item-header {
-	padding: 16px 0;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-}
-
-.item-left {
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
-
-.document-icon {
-	width: 24px;
-	height: 24px;
-	background: #2979ff;
-	border-radius: 4px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.item-id {
-	font-size: 14px;
-	color: #333;
-	font-weight: 500;
-}
-
-
-
-.item-details {
-	padding: 16px 0;
-}
-
-.detail-row {
-	display: flex;
-	align-items: flex-end;
-	justify-content: space-between;
-	margin-bottom: 8px;
-
-	&:last-child {
-		margin-bottom: 0;
-	}
-}
-
-.detail-label {
-	font-size: 12px;
-	color: #777777;
-	min-width: 60px;
-}
-
+// 浠樻鐧昏鐗规湁鏍峰紡
 .detail-value {
-	font-size: 12px;
-	color: #000000;
-	text-align: right;
-	flex: 1;
-	margin-left: 16px;
 	display: flex;
 	align-items: center;
 	justify-content: flex-end;
-}
-
-.detail-value.highlight {
-	color: #2979ff;
-	font-weight: 500;
-}
-
-.detail-value.danger {
-	color: #ee0a24;
-	font-weight: 500;
-}
-
-.children-list {
-	.children-title {
-		font-size: 14px;
-		font-weight: 500;
-		color: #333;
-		padding: 12px 0 8px 0;
-		border-top: 1px solid #f0f0f0;
-	}
-}
-
-.child-item {
-	.child-details {
-		padding: 12px 0;
-	}
-	
-	.child-actions {
-		display: flex;
-		gap: 8px;
-		padding: 8px 0 16px 0;
-		justify-content: flex-end;
-	}
-}
-
-.action-buttons {
-	display: flex;
-	gap: 12px;
-	padding: 0 0 16px 0;
-	justify-content: space-between;
-}
-
-.action-btn {
-	flex: 1;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	gap: 8px;
-}
-
-.no-data {
-	padding: 40px 0;
-	text-align: center;
-	color: #999;
 }
 </style>
\ No newline at end of file
diff --git a/src/pages/procurementManagement/paymentLedger/detail.vue b/src/pages/procurementManagement/paymentLedger/detail.vue
index dfe4752..595aee3 100644
--- a/src/pages/procurementManagement/paymentLedger/detail.vue
+++ b/src/pages/procurementManagement/paymentLedger/detail.vue
@@ -111,6 +111,7 @@
 		});
 		return;
 	}
+	showLoadingToast('鍔犺浇涓�...')
 	const param = {
 		supplierId: supplierId.value,
 		current: -1,
@@ -118,7 +119,9 @@
 	};
 	paymentLedgerList(param).then((res) => {
 		tableData.value = res.data.records;
+		closeToast()
 	}).catch(() => {
+		closeToast()
 		uni.showToast({
 			title: '鏌ヨ澶辫触',
 			icon: 'error'
@@ -131,6 +134,19 @@
 	return amount ? parseFloat(amount).toFixed(2) : '0.00';
 };
 
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+	uni.showLoading({
+		title: message,
+		mask: true
+	});
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+	uni.hideLoading();
+};
+
 onMounted(() => {
 	// 椤甸潰鍔犺浇鏃惰幏鍙栧弬鏁板苟鍒锋柊鍒楄〃
 	getPageParams();
diff --git a/src/pages/procurementManagement/paymentLedger/index.vue b/src/pages/procurementManagement/paymentLedger/index.vue
index 1d15da4..f3e2771 100644
--- a/src/pages/procurementManagement/paymentLedger/index.vue
+++ b/src/pages/procurementManagement/paymentLedger/index.vue
@@ -1,5 +1,5 @@
 <template>
-  <view class="receipt-payment-ledger">
+  <view class="sales-account">
     <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
     <PageHeader title="渚涘簲鍟嗗線鏉�" @back="goBack" />
     
@@ -7,11 +7,12 @@
     <view class="search-section">
       <view class="search-bar">
         <view class="search-input">
-          <input
+          <up-input
             class="search-text"
             placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О"
-            v-model="searchForm.searchText"
-            @input="handleQuery"
+            v-model="searchForm.supplierName"
+            @change="handleQuery"
+						clearable
           />
         </view>
         <view class="search-button" @click="handleQuery">
@@ -81,7 +82,7 @@
 
 const data = reactive({
   searchForm: {
-    searchText: "",
+    supplierName: "",
     invoiceDate: "",
   },
 });
@@ -99,9 +100,12 @@
 };
 
 const getList = () => {
+	showLoadingToast('鍔犺浇涓�...')
 	paymentLedgerList({ ...searchForm.value, ...page }).then((res) => {
     tableData.value = res.data.records;
+    closeToast()
   }).catch(() => {
+    closeToast()
     uni.showToast({
       title: '鏌ヨ澶辫触',
       icon: 'error'
@@ -113,7 +117,18 @@
   return parseFloat(value || 0).toFixed(2);
 };
 
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+	uni.showLoading({
+		title: message,
+		mask: true
+	});
+};
 
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+	uni.hideLoading();
+};
 
 const rowClickMethod = (row) => {
   // 浣跨敤 uni.setStorageSync 瀛樺偍渚涘簲鍟嗕俊鎭�
@@ -130,168 +145,11 @@
 </script>
 
 <style scoped lang="scss">
-.u-divider {
-  margin: 0 !important;
-}
+@import '@/styles/procurement-common.scss';
 
-.receipt-payment-ledger {
-  min-height: 100vh;
-  background: #f8f9fa;
-  position: relative;
-}
-
-.search-section {
-  padding: 10px 20px;
-  background: #ffffff;
-}
-
-.search-bar {
-  display: flex;
-  align-items: center;
-  gap: 12px;
-}
-
-.search-input {
-  flex: 1;
-  background: #f5f5f5;
-  border-radius: 24px;
-  padding: 10px 16px;
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.search-text {
-  flex: 1;
-  font-size: 14px;
-  color: #333;
-  background: transparent;
-  border: none;
-  outline: none;
-}
-
-.search-text::placeholder {
-  color: #999;
-}
-
-.search-button {
-  width: 40px;
-  height: 40px;
-  border-radius: 8px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.customer-list-container {
-  padding: 20px;
-}
-
-.customer-list {
-  display: flex;
-  flex-direction: column;
-  gap: 16px;
-}
-
-.customer-item {
-  background: #ffffff;
-  border-radius: 12px;
-  overflow: hidden;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-  padding: 0 16px;
-  transition: all 0.3s ease;
-  
-  &:active {
-    transform: scale(0.98);
-    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
-  }
-}
-
-.item-header {
-  padding: 16px 0;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.item-left {
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.item-right {
-  display: flex;
-  align-items: center;
-  gap: 8px;
-}
-
-.customer-icon {
-  width: 24px;
-  height: 24px;
-  background: #2979ff;
-  border-radius: 4px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.customer-name {
-  font-size: 14px;
-  color: #333;
-  font-weight: 500;
-}
-
-.item-index {
-  font-size: 12px;
-  color: #999;
-  background: #f5f5f5;
-  padding: 2px 8px;
-  border-radius: 12px;
-}
-
-.item-details {
-  padding: 16px 0;
-}
-
-.detail-row {
-  display: flex;
-  align-items: flex-end;
-  justify-content: space-between;
-  margin-bottom: 8px;
-  
-  &:last-child {
-    margin-bottom: 0;
-  }
-}
-
-.detail-label {
-  font-size: 12px;
-  color: #777777;
-  min-width: 60px;
-}
-
-.detail-value {
-  font-size: 12px;
-  color: #000000;
-  text-align: right;
-  flex: 1;
-  margin-left: 16px;
-}
-
-.detail-value.highlight {
-  color: #2979ff;
-  font-weight: 500;
-}
-
+// 渚涘簲鍟嗗線鏉ョ壒鏈夋牱寮�
 .detail-value.danger {
-  color: #ff4757;
+  color: #ff4757; // 涓庡叕鍏辨牱寮忎腑鐨� #ee0a24 涓嶅悓
   font-weight: 500;
-}
-
-.no-data {
-  padding: 40px 0;
-  text-align: center;
-  color: #999;
 }
 </style>
\ No newline at end of file
diff --git a/src/pages/procurementManagement/procurementInvoiceLedger/index.vue b/src/pages/procurementManagement/procurementInvoiceLedger/index.vue
index 3517776..4934371 100644
--- a/src/pages/procurementManagement/procurementInvoiceLedger/index.vue
+++ b/src/pages/procurementManagement/procurementInvoiceLedger/index.vue
@@ -4,15 +4,15 @@
 		<PageHeader title="鏉ョエ鍙拌处" @back="goBack" />
 		
 		<!-- 鎼滅储鍖哄煙 -->
-		<view class="search-filter-section">
+		<view class="search-section">
 			<view class="search-bar">
 				<view class="search-input">
-					<input
+					<up-input
 						class="search-text"
-						placeholder="渚涘簲鍟嗗悕绉�/閲囪喘鍚堝悓鍙�"
-						v-model="searchForm.searchText"
-						confirm-type="search"
-						@confirm="handleQuery"
+						placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О鎼滅储"
+						v-model="searchForm.supplierName"
+						@change="handleQuery"
+						clearable
 					/>
 				</view>
 				<view class="filter-button" @click="handleQuery">
@@ -108,26 +108,26 @@
 						>
 							鍒犻櫎
 						</u-button>
-						<u-button
-							type="default"
-							size="small"
-							plain
-							class="action-btn"
-							v-if="item.invoiceFileName"
-							@click="openFileActions(item.commonFiles || [])"
-						>
-							鏌ョ湅闄勪欢
-						</u-button>
-						<u-button
-							type="primary"
-							size="small"
-							class="action-btn"
-							v-else
-							:disabled="item.issUer !== userStore.nickName"
-							@click="openUpload(item)"
-						>
-							涓婁紶
-						</u-button>
+<!--						<u-button-->
+<!--							type="default"-->
+<!--							size="small"-->
+<!--							plain-->
+<!--							class="action-btn"-->
+<!--							v-if="item.invoiceFileName"-->
+<!--							@click="openFileActions(item.commonFiles || [])"-->
+<!--						>-->
+<!--							鏌ョ湅闄勪欢-->
+<!--						</u-button>-->
+<!--						<u-button-->
+<!--							type="primary"-->
+<!--							size="small"-->
+<!--							class="action-btn"-->
+<!--							v-else-->
+<!--							:disabled="item.issUer !== userStore.nickName"-->
+<!--							@click="openUpload(item)"-->
+<!--						>-->
+<!--							涓婁紶-->
+<!--						</u-button>-->
 					</view>
 				</view>
 			</view>
@@ -203,7 +203,7 @@
 const total = ref(0)
 const page = reactive({ current: -1, size: -1 })
 const searchForm = reactive({
-	searchText: '',
+	supplierName: '',
 })
 
 const currentId = ref('')
@@ -413,230 +413,7 @@
 </script>
 
 <style scoped lang="scss">
-.u-divider {
-	margin: 0 !important;
-}
-.sales-account {
-	min-height: 100vh;
-	background: #f8f9fa;
-	position: relative;
-}
+@import '@/styles/procurement-common.scss';
 
-.search-filter-section {
-	padding: 10px 20px;
-	background: #ffffff;
-}
-
-.search-bar {
-	display: flex;
-	align-items: center;
-	gap: 12px;
-}
-
-.search-input {
-	flex: 1;
-	background: #f5f5f5;
-	border-radius: 24px;
-	padding: 10px 16px;
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
-
-.search-text {
-	flex: 1;
-	font-size: 14px;
-	color: #333;
-	background: transparent;
-	border: none;
-	outline: none;
-}
-
-.search-text::placeholder {
-	color: #999;
-}
-
-.filter-button {
-	width: 40px;
-	height: 40px;
-	border-radius: 8px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.ledger-list {
-	padding: 20px;
-}
-
-.ledger-item {
-	background: #ffffff;
-	border-radius: 12px;
-	margin-bottom: 16px;
-	overflow: hidden;
-	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-	padding: 0 16px;
-}
-
-.item-header {
-	padding: 16px 0;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-}
-
-.item-left {
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
-
-.document-icon {
-	width: 24px;
-	height: 24px;
-	background: #2979ff;
-	border-radius: 4px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.item-id {
-	font-size: 14px;
-	color: #333;
-	font-weight: 500;
-}
-
-.item-details {
-	padding: 16px 0;
-}
-
-.detail-row {
-	display: flex;
-	align-items: flex-end;
-	justify-content: space-between;
-	margin-bottom: 8px;
-	
-	&:last-child {
-		margin-bottom: 0;
-	}
-}
-
-.detail-label {
-	font-size: 12px;
-	color: #777777;
-	min-width: 60px;
-}
-
-.detail-value {
-	font-size: 12px;
-	color: #000000;
-	text-align: right;
-	flex: 1;
-	margin-left: 16px;
-}
-
-.detail-value.highlight {
-	color: #2979ff;
-	font-weight: 500;
-}
-
-.no-data {
-	padding: 40px 0;
-	text-align: center;
-	color: #999;
-}
-
-.action-buttons {
-	display: flex;
-	gap: 12px;
-	padding: 0 0 16px 0;
-	justify-content: space-between;
-}
-
-.action-btn {
-	flex: 1;
-}
-
-.filter-popup {
-	padding: 12px 12px 20px;
-}
-
-.popup-header {
-	padding: 10px 16px;
-	border-bottom: 1px solid #f5f5f5;
-}
-
-.popup-title {
-	font-size: 16px;
-	font-weight: 500;
-	color: #333;
-}
-
-.uploaded-list {
-	padding: 8px 16px 0 16px;
-}
-
-.uploaded-item {
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	padding: 8px 0;
-	border-bottom: 1px solid #f5f5f5;
-}
-
-.file-name {
-	font-size: 12px;
-	color: #333;
-	margin-right: 8px;
-	flex: 1;
-	overflow: hidden;
-	text-overflow: ellipsis;
-	white-space: nowrap;
-}
-
-.tip-text {
-	padding: 4px 16px 0 16px;
-	font-size: 12px;
-	color: #888;
-}
-
-.filter-actions {
-	display: flex;
-	gap: 12px;
-	padding: 12px 16px 16px;
-	justify-content: center;
-}
-
-.footer-btns {
-	position: fixed;
-	left: 0;
-	right: 0;
-	bottom: 0;
-	background: #fff;
-	display: flex;
-	justify-content: space-around;
-	align-items: center;
-	padding: 0.75rem 0;
-	box-shadow: 0 -0.125rem 0.5rem rgba(0,0,0,0.05);
-	z-index: 1000;
-}
-.cancel-btn {
-	font-weight: 400;
-	font-size: 1rem;
-	color: #FFFFFF;
-	width: 6.375rem;
-	background: #C7C9CC;
-	box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2);
-	border-radius: 2.5rem 2.5rem 2.5rem 2.5rem;
-}
-.save-btn {
-	font-weight: 400;
-	font-size: 1rem;
-	color: #FFFFFF;
-	width: 14rem;
-	background: linear-gradient( 140deg, #00BAFF 0%, #006CFB 100%);
-	box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2);
-	border-radius: 2.5rem 2.5rem 2.5rem 2.5rem;
-}
+// 鏉ョエ鍙拌处鐗规湁鏍峰紡锛堟墍鏈夋牱寮忛兘宸插寘鍚湪鍏叡鏍峰紡涓級
 </style>
\ No newline at end of file
diff --git a/src/pages/procurementManagement/procurementLedger/index.vue b/src/pages/procurementManagement/procurementLedger/index.vue
index 495f250..458eac2 100644
--- a/src/pages/procurementManagement/procurementLedger/index.vue
+++ b/src/pages/procurementManagement/procurementLedger/index.vue
@@ -4,13 +4,15 @@
 		<PageHeader title="閲囪喘鍙拌处" @back="goBack" />
 		
 		<!-- 鎼滅储鍜岀瓫閫夊尯鍩� -->
-		<view class="search-filter-section">
+		<view class="search-section">
 			<view class="search-bar">
 				<view class="search-input">
-					<input
+					<up-input
 						class="search-text"
-						placeholder="璇疯緭鍏ラ噰璐悎鍚屽彿/瀹㈡埛鍚嶇О"
-						v-model="searchKeyword"
+						placeholder="璇疯緭鍏ラ噰璐悎鍚屽彿鎼滅储"
+						v-model="purchaseContractNumber"
+						@change="getList"
+						clearable
 					/>
 				</view>
 				<view class="filter-button" @click="getList">
@@ -92,7 +94,7 @@
 const userStore = useUserStore()
 
 // 鎼滅储鍏抽敭璇�
-const searchKeyword = ref('');
+const purchaseContractNumber = ref('');
 
 // 閲囪喘鍙拌处鏁版嵁
 const ledgerList = ref([]);
@@ -103,15 +105,30 @@
 };
 // 鏌ヨ鍒楄〃
 const getList = () => {
+	showLoadingToast('鍔犺浇涓�...')
 	const page = {
 		current: -1,
 		size: -1
 	}
-	purchaseListPage({...page}).then((res) => {
+	purchaseListPage({...page, purchaseContractNumber: purchaseContractNumber.value}).then((res) => {
 		ledgerList.value = res.data.records;
+		closeToast()
 	}).catch(() => {
-			// tableLoading.value = false;
+		closeToast()
 	});
+};
+
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+	uni.showLoading({
+		title: message,
+		mask: true
+	});
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+	uni.hideLoading();
 };
 
 // 澶勭悊鍙拌处淇℃伅鎿嶄綔锛堟煡鐪�/缂栬緫/鏂板锛�
@@ -170,173 +187,7 @@
 </script>
 
 <style scoped lang="scss">
-.u-divider {
-	margin: 0 !important;
-}
-.sales-account {
-	min-height: 100vh;
-	background: #f8f9fa;
-	position: relative;
-}
+@import '@/styles/procurement-common.scss';
 
-
-
-.search-filter-section {
-	padding: 10px 20px;
-	background: #ffffff;
-}
-
-.search-bar {
-	display: flex;
-	align-items: center;
-	gap: 12px;
-}
-
-.search-input {
-	flex: 1;
-	background: #f5f5f5;
-	border-radius: 24px;
-	padding: 10px 16px;
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
-
-.search-text {
-	flex: 1;
-	font-size: 14px;
-	color: #333;
-	background: transparent;
-	border: none;
-	outline: none;
-}
-
-.search-text::placeholder {
-	color: #999;
-}
-
-.filter-button {
-	width: 40px;
-	height: 40px;
-	border-radius: 8px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.ledger-list {
-	padding: 20px;
-}
-
-.ledger-item {
-	background: #ffffff;
-	border-radius: 12px;
-	margin-bottom: 16px;
-	overflow: hidden;
-	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-	padding: 0 16px;
-}
-
-.item-header {
-	padding: 16px 0;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-}
-
-.item-left {
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
-
-.document-icon {
-	width: 24px;
-	height: 24px;
-	background: #2979ff;
-	border-radius: 4px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.item-id {
-	font-size: 14px;
-	color: #333;
-	font-weight: 500;
-}
-
-.item-tag {
-	background: #4caf50;
-	border-radius: 4px;
-	padding: 2px 4px;
-}
-
-.tag-text {
-	font-size: 11px;
-	color: #ffffff;
-	font-weight: 500;
-}
-
-.item-details {
-	padding: 16px 0;
-}
-
-.detail-row {
-	display: flex;
-	align-items: flex-end;
-	justify-content: space-between;
-	margin-bottom: 8px;
-	
-	&:last-child {
-		margin-bottom: 0;
-	}
-}
-.detail-info {
-	margin-top: 10px;
-	display: flex;
-	align-items: flex-start;
-	justify-content: space-between;
-}
-
-.detail-label {
-	font-size: 12px;
-	color: #777777;
-	min-width: 60px;
-}
-
-.detail-value {
-	font-size: 12px;
-	color: #000000;
-	text-align: right;
-	flex: 1;
-	margin-left: 16px;
-}
-
-.detail-value.highlight {
-	color: #2979ff;
-	font-weight: 500;
-}
-
-.no-data {
-	padding: 40px 0;
-	text-align: center;
-	color: #999;
-}
-
-.fab-button {
-	position: fixed;
-	bottom: calc(30px + env(safe-area-inset-bottom));
-	right: 30px;
-	width: 56px;
-	height: 56px;
-	background: #2979ff;
-	border-radius: 50%;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3);
-	z-index: 1000;
-	/* 纭繚娴姩鎸夐挳涓嶈搴曢儴瀹夊叏鍖哄煙閬尅 */
-}
+// 閲囪喘鍙拌处鐗规湁鏍峰紡锛堝鏈夐渶瑕佸彲鍦ㄦ娣诲姞锛�
 </style>
diff --git a/src/pages/procurementManagement/receiptPaymentHistory/index.vue b/src/pages/procurementManagement/receiptPaymentHistory/index.vue
index f2347e7..340f3b2 100644
--- a/src/pages/procurementManagement/receiptPaymentHistory/index.vue
+++ b/src/pages/procurementManagement/receiptPaymentHistory/index.vue
@@ -1,5 +1,5 @@
 <template>
-	<view class="receipt-payment-history">
+	<view class="sales-account">
 		<!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
 		<PageHeader title="浠樻娴佹按" @back="goBack" />
 		
@@ -7,11 +7,12 @@
 		<view class="search-section">
 			<view class="search-bar">
 				<view class="search-input">
-					<input
+					<up-input
 						class="search-text"
 						placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О"
 						v-model="searchForm.searchText"
-						@input="getList"
+						@change="getList"
+						clearable
 					/>
 				</view>
 				<view class="search-button" @click="getList">
@@ -126,13 +127,16 @@
 
 // 鏌ヨ鍒楄〃
 const getList = () => {
+	showLoadingToast('鍔犺浇涓�...')
 	const params = {
 		...searchForm.value,
 		...page.value
 	};
 	paymentHistoryListPage(params).then((res) => {
 		tableData.value = res.records;
+		closeToast()
 	}).catch(() => {
+		closeToast()
 		uni.showToast({
 			title: '鏌ヨ澶辫触',
 			icon: 'error'
@@ -155,6 +159,20 @@
 const formatAmount = (amount) => {
 	return amount ? parseFloat(amount).toFixed(2) : '0.00';
 };
+
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+	uni.showLoading({
+		title: message,
+		mask: true
+	});
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+	uni.hideLoading();
+};
+
 // 鎵撳紑缂栬緫琛ㄥ崟
 const openForm = (item) => {
 	uni.setStorageSync('invoiceLedgerEditRow', JSON.stringify(item))
@@ -167,218 +185,20 @@
 </script>
 
 <style scoped lang="scss">
-.u-divider {
-	margin: 0 !important;
-}
+@import '@/styles/procurement-common.scss';
 
-.receipt-payment-history {
-	min-height: 100vh;
-	background: #f8f9fa;
-	position: relative;
-}
-
-
-
-.search-section {
-	padding: 10px 20px;
-	background: #ffffff;
-}
-
-.search-bar {
-	display: flex;
-	align-items: center;
-	gap: 12px;
-}
-
-.search-input {
-	flex: 1;
-	background: #f5f5f5;
-	border-radius: 24px;
-	padding: 10px 16px;
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
-
-.search-text {
-	flex: 1;
-	font-size: 14px;
-	color: #333;
-	background: transparent;
-	border: none;
-	outline: none;
-}
-
-.search-text::placeholder {
-	color: #999;
-}
-
-.search-button {
-	width: 40px;
-	height: 40px;
-	border-radius: 8px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.history-list {
-	padding: 20px;
-}
-
-.history-item {
-	background: #ffffff;
-	border-radius: 12px;
-	margin-bottom: 16px;
-	overflow: hidden;
-	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-	padding: 0 16px;
-}
-
-.item-header {
-	padding: 16px 0;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-}
-
-.item-left {
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
-
-.document-icon {
-	width: 24px;
-	height: 24px;
-	background: #2979ff;
-	border-radius: 4px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.item-id {
-	font-size: 14px;
-	color: #333;
-	font-weight: 500;
+// 浠樻娴佹按鐗规湁鏍峰紡
+.action-buttons {
+	padding: 12px 0 0 0; // 涓庡叕鍏辨牱寮忎腑鐨� 0 0 16px 0 涓嶅悓
 }
 
 .item-tag {
-	border-radius: 4px;
-	padding:  2px 8px;
-}
-
-.tag-electric {
-	background: #4caf50;
-}
-
-.tag-acceptance {
-	background: #ff9800;
-}
-
-.tag-unknown {
-	background: #9e9e9e;
+	padding: 2px 8px; // 涓庡叕鍏辨牱寮忎腑鐨� 2px 4px 涓嶅悓
 }
 
 .tag-text {
-	font-size: 14px;
+	font-size: 14px; // 涓庡叕鍏辨牱寮忎腑鐨� 11px 涓嶅悓
 	color: #ffffff;
 	font-weight: 500;
-}
-
-.item-details {
-	padding: 16px 0;
-}
-
-.detail-row {
-	display: flex;
-	align-items: flex-end;
-	justify-content: space-between;
-	margin-bottom: 8px;
-	
-	&:last-child {
-		margin-bottom: 0;
-	}
-}
-
-.detail-info {
-	margin-top: 10px;
-	display: flex;
-	align-items: flex-start;
-	justify-content: space-between;
-}
-.action-buttons {
-	display: flex;
-	gap: 12px;
-	padding: 12px 0 0 0;
-	justify-content: space-between;
-}
-.action-btn {
-	flex: 1;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	gap: 8px;
-}
-
-.detail-label {
-	font-size: 12px;
-	color: #777777;
-	min-width: 60px;
-}
-
-.detail-value {
-	font-size: 12px;
-	color: #000000;
-	text-align: right;
-	flex: 1;
-	margin-left: 16px;
-}
-
-.detail-value.highlight {
-	color: #2979ff;
-	font-weight: 500;
-}
-
-.no-data {
-	padding: 40px 0;
-	text-align: center;
-	color: #999;
-}
-
-.summary-info {
-	background: #ffffff;
-	margin: 20px 20px 0 20px;
-	border-radius: 12px;
-	padding: 16px;
-	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
-}
-
-.summary-item {
-	display: flex;
-	justify-content: space-between;
-	align-items: center;
-	margin-bottom: 8px;
-	
-	&:last-child {
-		margin-bottom: 0;
-	}
-}
-
-.summary-label {
-	font-size: 14px;
-	color: #666;
-}
-
-.summary-value {
-	font-size: 14px;
-	color: #333;
-	font-weight: 500;
-}
-
-.summary-value.highlight {
-	color: #2979ff;
-	font-weight: 600;
 }
 </style>
\ No newline at end of file
diff --git a/src/pages/sales/invoiceLedger/index.vue b/src/pages/sales/invoiceLedger/index.vue
index 82c0b80..f4cf5c2 100644
--- a/src/pages/sales/invoiceLedger/index.vue
+++ b/src/pages/sales/invoiceLedger/index.vue
@@ -103,15 +103,15 @@
 						>
 							鍒犻櫎
 						</up-button>
-						<up-button
-							size="small"
-							plain
-							class="action-btn"
-							v-if="item.invoiceFileName"
-							@click="openFileActions(item.commonFiles || [])"
-						>
-							鏌ョ湅闄勪欢
-						</up-button>
+<!--						<up-button-->
+<!--							size="small"-->
+<!--							plain-->
+<!--							class="action-btn"-->
+<!--							v-if="item.invoiceFileName"-->
+<!--							@click="openFileActions(item.commonFiles || [])"-->
+<!--						>-->
+<!--							鏌ョ湅闄勪欢-->
+<!--						</up-button>-->
 <!--						<up-button-->
 <!--							type="primary"-->
 <!--							size="small"-->
diff --git a/src/pages/sales/invoicingRegistration/index.vue b/src/pages/sales/invoicingRegistration/index.vue
index 0b5d6a6..132da11 100644
--- a/src/pages/sales/invoicingRegistration/index.vue
+++ b/src/pages/sales/invoicingRegistration/index.vue
@@ -114,6 +114,7 @@
 };
 // 鏌ヨ鍒楄〃
 const getList = () => {
+	showLoadingToast('鍔犺浇涓�...')
 	const page = {
 		current: -1,
 		size: -1
@@ -121,11 +122,25 @@
 	ledgerListPage({...page, customerName: customerName.value}).then((res) => {
 		ledgerList.value = res.records;
 		total.value = res.total;
+		closeToast()
 	}).catch(() => {
-		// tableLoading.value = false;
+		closeToast()
 	});
 };
 
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+	uni.showLoading({
+		title: message,
+		mask: true
+	});
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+	uni.hideLoading();
+};
+
 // 澶勭悊鏂板寮�绁�
 const handleAddInvoice = (item) => {
 	try {
diff --git a/src/pages/sales/receiptPaymentHistory/index.vue b/src/pages/sales/receiptPaymentHistory/index.vue
index 159bae5..a25e98d 100644
--- a/src/pages/sales/receiptPaymentHistory/index.vue
+++ b/src/pages/sales/receiptPaymentHistory/index.vue
@@ -135,13 +135,16 @@
 
 // 鏌ヨ鍒楄〃
 const getList = () => {
+	showLoadingToast('鍔犺浇涓�...')
 	const params = {
 		...searchForm.value,
 		...page.value
 	};
 	receiptPaymentHistoryListPage(params).then((res) => {
 		tableData.value = res.records;
+		closeToast()
 	}).catch(() => {
+		closeToast()
 		uni.showToast({
 			title: '鏌ヨ澶辫触',
 			icon: 'error'
@@ -149,6 +152,19 @@
 	});
 };
 
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+	uni.showLoading({
+		title: message,
+		mask: true
+	});
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+	uni.hideLoading();
+};
+
 // 鏍煎紡鍖栧洖娆炬柟寮�
 const formatReceiptType = (type) => {
 	if (type == 0) {
diff --git a/src/pages/sales/receiptPaymentLedger/detail.vue b/src/pages/sales/receiptPaymentLedger/detail.vue
index d549311..041be44 100644
--- a/src/pages/sales/receiptPaymentLedger/detail.vue
+++ b/src/pages/sales/receiptPaymentLedger/detail.vue
@@ -112,6 +112,7 @@
 		return;
 	}
 	
+	showLoadingToast('鍔犺浇涓�...')
 	const param = {
 		customerId: customerId.value,
 		current: -1,
@@ -120,7 +121,9 @@
 	
 	customerInteractions(param).then((res) => {
 		tableData.value = res.data;
+		closeToast()
 	}).catch(() => {
+		closeToast()
 		uni.showToast({
 			title: '鏌ヨ澶辫触',
 			icon: 'error'
@@ -133,6 +136,19 @@
 	return amount ? parseFloat(amount).toFixed(2) : '0.00';
 };
 
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+	uni.showLoading({
+		title: message,
+		mask: true
+	});
+};
+
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+	uni.hideLoading();
+};
+
 onShow(() => {
 	// 椤甸潰鏄剧ず鏃惰幏鍙栧弬鏁板苟鍒锋柊鍒楄〃
 	getPageParams();
diff --git a/src/pages/sales/receiptPaymentLedger/index.vue b/src/pages/sales/receiptPaymentLedger/index.vue
index d913f34..5dd054f 100644
--- a/src/pages/sales/receiptPaymentLedger/index.vue
+++ b/src/pages/sales/receiptPaymentLedger/index.vue
@@ -100,9 +100,12 @@
 };
 
 const getList = () => {
+	showLoadingToast('鍔犺浇涓�...')
 	invoiceLedgerSalesAccount({ ...searchForm.value, ...page }).then((res) => {
 		tableData.value = res.data.records;
+		closeToast()
 	}).catch(() => {
+		closeToast()
 		uni.showToast({
 			title: '鏌ヨ澶辫触',
 			icon: 'error'
@@ -114,7 +117,18 @@
 	return parseFloat(value || 0).toFixed(2);
 };
 
+// 鏄剧ず鍔犺浇鎻愮ず
+const showLoadingToast = (message) => {
+	uni.showLoading({
+		title: message,
+		mask: true
+	});
+};
 
+// 鍏抽棴鎻愮ず
+const closeToast = () => {
+	uni.hideLoading();
+};
 
 const rowClickMethod = (row) => {
 	// 浣跨敤 uni.setStorageSync 瀛樺偍瀹㈡埛淇℃伅
diff --git a/src/styles/procurement-common.scss b/src/styles/procurement-common.scss
new file mode 100644
index 0000000..4ea652b
--- /dev/null
+++ b/src/styles/procurement-common.scss
@@ -0,0 +1,420 @@
+// 閲囪喘绠$悊妯″潡鍏叡鏍峰紡
+// 鐢ㄤ簬缁熶竴閲囪喘鐩稿叧椤甸潰鐨勬牱寮忛鏍�
+
+// 椤甸潰瀹瑰櫒鏍峰紡
+.sales-account {
+	min-height: 100vh;
+	background: #f8f9fa;
+	position: relative;
+}
+
+// 鎼滅储鍜岀瓫閫夊尯鍩熸牱寮�
+.search-section {
+	padding: 10px 20px;
+	background: #ffffff;
+}
+
+.search-bar {
+	display: flex;
+	align-items: center;
+	gap: 12px;
+}
+
+.search-input {
+	flex: 1;
+	background: #f5f5f5;
+	border-radius: 24px;
+	padding: 0 16px;
+	display: flex;
+	align-items: center;
+	gap: 8px;
+}
+
+.search-text {
+	flex: 1;
+	font-size: 14px;
+	color: #333;
+	background: transparent;
+	border: none;
+	outline: none;
+
+	&::placeholder {
+		color: #999;
+	}
+}
+
+.filter-button,
+.search-button {
+	width: 40px;
+	height: 40px;
+	border-radius: 8px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+
+// 寮�鍏宠鏍峰紡
+.switch-row {
+	padding: 8px;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	margin-top: 8px;
+}
+
+.switch-label {
+	font-size: 14px;
+	color: #333;
+}
+
+// 鍒楄〃瀹瑰櫒鏍峰紡
+.ledger-list,
+.history-list,
+.customer-list-container {
+	padding: 20px;
+}
+
+.customer-list {
+	display: flex;
+	flex-direction: column;
+	gap: 16px;
+}
+
+// 鍒楄〃椤规牱寮�
+.ledger-item,
+.history-item,
+.customer-item {
+	background: #ffffff;
+	border-radius: 12px;
+	margin-bottom: 16px;
+	overflow: hidden;
+	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
+	padding: 0 16px;
+
+	&:active {
+		transform: scale(0.98);
+		box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
+	}
+}
+
+.customer-item {
+	transition: all 0.3s ease;
+	margin-bottom: 0;
+}
+
+// 椤圭洰澶撮儴鏍峰紡
+.item-header {
+	padding: 16px 0;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+}
+
+.item-left {
+	display: flex;
+	align-items: center;
+	gap: 8px;
+}
+
+.item-right {
+	display: flex;
+	align-items: center;
+	gap: 8px;
+}
+
+// 鍥炬爣鏍峰紡
+.document-icon,
+.customer-icon {
+	width: 24px;
+	height: 24px;
+	background: #2979ff;
+	border-radius: 4px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+
+// 鏂囨湰鏍峰紡
+.item-id,
+.customer-name {
+	font-size: 14px;
+	color: #333;
+	font-weight: 500;
+}
+
+.item-index {
+	font-size: 12px;
+	color: #999;
+	background: #f5f5f5;
+	padding: 2px 8px;
+	border-radius: 12px;
+}
+
+// 鏍囩鏍峰紡
+.item-tag {
+	border-radius: 4px;
+	padding: 2px 4px;
+
+	&.tag-electric {
+		background: #4caf50;
+	}
+
+	&.tag-acceptance {
+		background: #ff9800;
+	}
+
+	&.tag-unknown {
+		background: #9e9e9e;
+	}
+}
+
+.tag-text {
+	font-size: 11px;
+	color: #ffffff;
+	font-weight: 500;
+}
+
+// 璇︽儏鍖哄煙鏍峰紡
+.item-details {
+	padding: 16px 0;
+}
+
+.detail-row {
+	display: flex;
+	align-items: flex-end;
+	justify-content: space-between;
+	margin-bottom: 8px;
+
+	&:last-child {
+		margin-bottom: 0;
+	}
+}
+
+.detail-info {
+	margin-top: 10px;
+	display: flex;
+	align-items: flex-start;
+	justify-content: space-between;
+}
+
+.detail-label {
+	font-size: 12px;
+	color: #777777;
+	min-width: 60px;
+}
+
+.detail-value {
+	font-size: 12px;
+	color: #000000;
+	text-align: right;
+	flex: 1;
+	margin-left: 16px;
+
+	&.highlight {
+		color: #2979ff;
+		font-weight: 500;
+	}
+
+	&.danger {
+		color: #ee0a24;
+		font-weight: 500;
+	}
+
+	&.redlight {
+		color: red;
+		font-weight: 500;
+	}
+}
+
+// 瀛愬垪琛ㄦ牱寮�
+.children-list {
+	.children-title {
+		font-size: 14px;
+		font-weight: 500;
+		color: #333;
+		padding: 12px 0 8px 0;
+		border-top: 1px solid #f0f0f0;
+	}
+}
+
+.child-item {
+	.child-details {
+		padding: 12px 0;
+	}
+
+	.child-actions {
+		display: flex;
+		gap: 8px;
+		padding: 8px 0 16px 0;
+		justify-content: flex-end;
+	}
+}
+
+// 鎿嶄綔鎸夐挳鏍峰紡
+.action-buttons {
+	display: flex;
+	gap: 12px;
+	padding: 0 0 16px 0;
+	justify-content: space-between;
+
+	&.action-buttons-top {
+		padding: 12px 0 0 0;
+	}
+}
+
+.action-btn {
+	flex: 1;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	gap: 8px;
+}
+
+// 娴姩鎸夐挳鏍峰紡
+.fab-button {
+	position: fixed;
+	bottom: calc(30px + env(safe-area-inset-bottom));
+	right: 30px;
+	width: 56px;
+	height: 56px;
+	background: #2979ff;
+	border-radius: 50%;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	box-shadow: 0 4px 16px rgba(41, 121, 255, 0.3);
+	z-index: 1000;
+}
+
+// 鏃犳暟鎹彁绀烘牱寮�
+.no-data {
+	padding: 40px 0;
+	text-align: center;
+	color: #999;
+}
+
+// 姹囨�讳俊鎭牱寮�
+.summary-info {
+	background: #ffffff;
+	margin: 20px 20px 0 20px;
+	border-radius: 12px;
+	padding: 16px;
+	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
+}
+
+.summary-item {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	margin-bottom: 8px;
+
+	&:last-child {
+		margin-bottom: 0;
+	}
+}
+
+.summary-label {
+	font-size: 14px;
+	color: #666;
+}
+
+.summary-value {
+	font-size: 14px;
+	color: #333;
+	font-weight: 500;
+
+	&.highlight {
+		color: #2979ff;
+		font-weight: 600;
+	}
+}
+
+// 寮圭獥鏍峰紡
+.filter-popup {
+	padding: 12px 12px 20px;
+}
+
+.popup-header {
+	padding: 10px 16px;
+	border-bottom: 1px solid #f5f5f5;
+}
+
+.popup-title {
+	font-size: 16px;
+	font-weight: 500;
+	color: #333;
+}
+
+.uploaded-list {
+	padding: 8px 16px 0 16px;
+}
+
+.uploaded-item {
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	padding: 8px 0;
+	border-bottom: 1px solid #f5f5f5;
+}
+
+.file-name {
+	font-size: 12px;
+	color: #333;
+	margin-right: 8px;
+	flex: 1;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+}
+
+.tip-text {
+	padding: 4px 16px 0 16px;
+	font-size: 12px;
+	color: #888;
+}
+
+.filter-actions {
+	display: flex;
+	gap: 12px;
+	padding: 12px 16px 16px;
+	justify-content: center;
+}
+
+.footer-btns {
+	position: fixed;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	background: #fff;
+	display: flex;
+	justify-content: space-around;
+	align-items: center;
+	padding: 0.75rem 0;
+	box-shadow: 0 -0.125rem 0.5rem rgba(0,0,0,0.05);
+	z-index: 1000;
+}
+
+.cancel-btn {
+	font-weight: 400;
+	font-size: 1rem;
+	color: #FFFFFF;
+	width: 6.375rem;
+	background: #C7C9CC;
+	box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2);
+	border-radius: 2.5rem 2.5rem 2.5rem 2.5rem;
+}
+
+.save-btn {
+	font-weight: 400;
+	font-size: 1rem;
+	color: #FFFFFF;
+	width: 14rem;
+	background: linear-gradient( 140deg, #00BAFF 0%, #006CFB 100%);
+	box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2);
+	border-radius: 2.5rem 2.5rem 2.5rem 2.5rem;
+}
+
+// uView缁勪欢鏍峰紡閲嶇疆
+.u-divider {
+	margin: 0 !important;
+}
\ No newline at end of file

--
Gitblit v1.9.3