From 7d83122dba56d6beeaf3772c72005344baf5fd3d Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期一, 26 一月 2026 10:56:29 +0800
Subject: [PATCH] 客户往来详情,接口字段变更

---
 src/pages/index.vue                             |  140 +-
 src/pages/sales/receiptPaymentLedger/detail.vue |  538 +++++++------
 src/pages/sales/invoicingRegistration/index.vue |  458 +++++-----
 src/pages/sales/invoiceLedger/index.vue         | 1161 +++++++++++++++--------------
 4 files changed, 1,161 insertions(+), 1,136 deletions(-)

diff --git a/src/pages/index.vue b/src/pages/index.vue
index f39559a..339676b 100644
--- a/src/pages/index.vue
+++ b/src/pages/index.vue
@@ -38,54 +38,54 @@
     <!--			</view>-->
     <!--		</view>-->
     <!-- 钀ラ攢绠$悊妯″潡 -->
-    <!--    <view class="common-module marketing-module">-->
-    <!--      <view class="module-header">-->
-    <!--        <view class="module-title-container">-->
-    <!--          <text class="module-title">钀ラ攢绠$悊</text>-->
-    <!--        </view>-->
-    <!--      </view>-->
-    <!--      <view class="module-content">-->
-    <!--        <up-grid :border="false"-->
-    <!--                 col="4">-->
-    <!--          <up-grid-item v-for="(item, index) in marketingItems"-->
-    <!--                        :key="index"-->
-    <!--                        @click="handleCommonItemClick(item)">-->
-    <!--            <view class="icon-container"-->
-    <!--                  :style="{ background: item.bgColor }">-->
-    <!--              <up-icon :name="item.icon"-->
-    <!--                       :size="58"-->
-    <!--                       color="#ffffff"></up-icon>-->
-    <!--            </view>-->
-    <!--            <text class="item-label">{{item.label}}</text>-->
-    <!--          </up-grid-item>-->
-    <!--        </up-grid>-->
-    <!--      </view>-->
-    <!--    </view>-->
+    <view class="common-module marketing-module">
+      <view class="module-header">
+        <view class="module-title-container">
+          <text class="module-title">钀ラ攢绠$悊</text>
+        </view>
+      </view>
+      <view class="module-content">
+        <up-grid :border="false"
+                 col="4">
+          <up-grid-item v-for="(item, index) in marketingItems"
+                        :key="index"
+                        @click="handleCommonItemClick(item)">
+            <view class="icon-container"
+                  :style="{ background: item.bgColor }">
+              <up-icon :name="item.icon"
+                       :size="58"
+                       color="#ffffff"></up-icon>
+            </view>
+            <text class="item-label">{{item.label}}</text>
+          </up-grid-item>
+        </up-grid>
+      </view>
+    </view>
     <!--    &lt;!&ndash; 閲囪喘绠$悊妯″潡 &ndash;&gt;-->
-    <!--    <view class="common-module purchase-module">-->
-    <!--      <view class="module-header">-->
-    <!--        <view class="module-title-container">-->
-    <!--          <text class="module-title">閲囪喘绠$悊</text>-->
-    <!--        </view>-->
-    <!--      </view>-->
-    <!--      <view class="module-content">-->
-    <!--        <up-grid :border="false"-->
-    <!--                 col="4">-->
-    <!--          <up-grid-item v-for="(item, index) in purchaseItems"-->
-    <!--                        :key="index"-->
-    <!--                        @click="handleCommonItemClick(item)">-->
-    <!--            <view class="icon-container"-->
-    <!--                  :style="{ background: item.bgColor }">-->
-    <!--              <up-icon :name="item.icon"-->
-    <!--                       :size="58"-->
-    <!--                       color="#ffffff"></up-icon>-->
-    <!--            </view>-->
-    <!--            <text class="item-label">{{item.label}}</text>-->
-    <!--          </up-grid-item>-->
-    <!--        </up-grid>-->
-    <!--      </view>-->
-    <!--    </view>-->
-    <!--    &lt;!&ndash; 鍗忓悓鍔炲叕妯″潡 &ndash;&gt;-->
+    <view class="common-module purchase-module">
+      <view class="module-header">
+        <view class="module-title-container">
+          <text class="module-title">閲囪喘绠$悊</text>
+        </view>
+      </view>
+      <view class="module-content">
+        <up-grid :border="false"
+                 col="4">
+          <up-grid-item v-for="(item, index) in purchaseItems"
+                        :key="index"
+                        @click="handleCommonItemClick(item)">
+            <view class="icon-container"
+                  :style="{ background: item.bgColor }">
+              <up-icon :name="item.icon"
+                       :size="58"
+                       color="#ffffff"></up-icon>
+            </view>
+            <text class="item-label">{{item.label}}</text>
+          </up-grid-item>
+        </up-grid>
+      </view>
+    </view>
+    <!-- &lt;!&ndash; 鍗忓悓鍔炲叕妯″潡 &ndash;&gt; -->
     <view class="common-module collaboration-module">
       <view class="module-header">
         <view class="module-title-container">
@@ -163,29 +163,29 @@
       </view>
     </view>
     <!-- 璁惧绠$悊妯″潡 -->
-    <!--    <view class="common-module equipment-module">-->
-    <!--      <view class="module-header">-->
-    <!--        <view class="module-title-container">-->
-    <!--          <text class="module-title">璁惧绠$悊</text>-->
-    <!--        </view>-->
-    <!--      </view>-->
-    <!--      <view class="module-content">-->
-    <!--        <up-grid :border="false"-->
-    <!--                 col="4">-->
-    <!--          <up-grid-item v-for="(item, index) in equipmentItems"-->
-    <!--                        :key="index"-->
-    <!--                        @click="handleCommonItemClick(item)">-->
-    <!--            <view class="icon-container"-->
-    <!--                  :style="{ background: item.bgColor }">-->
-    <!--              <up-icon :name="item.icon"-->
-    <!--                       :size="58"-->
-    <!--                       color="#ffffff"></up-icon>-->
-    <!--            </view>-->
-    <!--            <text class="item-label">{{item.label}}</text>-->
-    <!--          </up-grid-item>-->
-    <!--        </up-grid>-->
-    <!--      </view>-->
-    <!--    </view>-->
+    <view class="common-module equipment-module">
+      <view class="module-header">
+        <view class="module-title-container">
+          <text class="module-title">璁惧绠$悊</text>
+        </view>
+      </view>
+      <view class="module-content">
+        <up-grid :border="false"
+                 col="4">
+          <up-grid-item v-for="(item, index) in equipmentItems"
+                        :key="index"
+                        @click="handleCommonItemClick(item)">
+            <view class="icon-container"
+                  :style="{ background: item.bgColor }">
+              <up-icon :name="item.icon"
+                       :size="58"
+                       color="#ffffff"></up-icon>
+            </view>
+            <text class="item-label">{{item.label}}</text>
+          </up-grid-item>
+        </up-grid>
+      </view>
+    </view>
   </view>
 </template>
 
diff --git a/src/pages/sales/invoiceLedger/index.vue b/src/pages/sales/invoiceLedger/index.vue
index f4cf5c2..ab7b5c0 100644
--- a/src/pages/sales/invoiceLedger/index.vue
+++ b/src/pages/sales/invoiceLedger/index.vue
@@ -1,616 +1,629 @@
 <template>
-	<view class="sales-account">
-		<!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
-		<PageHeader title="寮�绁ㄥ彴璐�" @back="goBack" />
-		
-		<!-- 鎼滅储鍜岀瓫閫夊尯鍩燂紙淇濇寔涓庨攢鍞彴璐﹂鏍间竴鑷达級 -->
-		<view class="search-section">
-			<view class="search-bar">
-				<view class="search-input">
-					<up-input
-						class="search-text"
-						placeholder="璇疯緭鍏ュ鎴峰悕绉�/鍚堝悓鍙锋悳绱�"
-						v-model="searchForm.searchText"
-						@change="handleQuery"
-						clearable
-					/>
-				</view>
-				<!--				<view class="filter-button" @click="showFilter = true">-->
-				<!--					<up-icon name="list" size="24" color="#999"></up-icon>-->
-				<!--				</view>-->
-				<view class="filter-button" @click="handleQuery">
-					<up-icon name="search" size="24" color="#999"></up-icon>
-				</view>
-			</view>
-		</view>
-		
-		<!-- 鍒楄〃鍖哄煙 -->
-		<view class="ledger-list" v-if="ledgerList.length > 0">
-			<view v-for="(item, index) in ledgerList" :key="index">
-				<view class="ledger-item">
-					<view class="item-header">
-						<view class="item-left">
-							<view class="document-icon">
-								<up-icon name="file-text" size="16" color="#ffffff"></up-icon>
-							</view>
-							<text class="item-id">{{ item.salesContractNo }}</text>
-						</view>
-					</view>
-					<up-divider></up-divider>
-					<view class="item-details">
-						<view class="detail-row">
-							<text class="detail-label">瀹㈡埛鍚嶇О</text>
-							<text class="detail-value">{{ item.customerName }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">瀹㈡埛鍚堝悓鍙�</text>
-							<text class="detail-value">{{ item.customerContractNo }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">椤圭洰</text>
-							<text class="detail-value">{{ item.projectName }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">浜у搧澶х被</text>
-							<text class="detail-value">{{ item.productCategory }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">瑙勬牸鍨嬪彿</text>
-							<text class="detail-value">{{ item.specificationModel }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">鍙戠エ鍙�</text>
-							<text class="detail-value">{{ item.invoiceNo || '-' }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">鍙戠エ閲戦(鍏�)</text>
-							<text class="detail-value highlight">{{ formatAmount(item.invoiceTotal) }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">绋庣巼(%)</text>
-							<text class="detail-value">{{ item.taxRate }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">褰曞叆浜�</text>
-							<text class="detail-value">{{ item.invoicePerson }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">褰曞叆鏃ユ湡</text>
-							<text class="detail-value">{{ formatDateTime(item.createTime) }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">寮�绁ㄦ棩鏈�</text>
-							<text class="detail-value">{{ item.invoiceDate || '-' }}</text>
-						</view>
-					</view>
-					<view class="action-buttons">
-						<up-button
-							type="primary"
-							size="small"
-							class="action-btn"
-							:disabled="item.invoicePerson !== userStore.nickName"
-							@click="openEdit(item)"
-						>
-							缂栬緫
-						</up-button>
-						<up-button
-							type="error"
-							size="small"
-							plain
-							class="action-btn"
-							:disabled="item.invoicePerson !== userStore.nickName"
-							@click="handleDelete(item)"
-						>
-							鍒犻櫎
-						</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"-->
-<!--							class="action-btn"-->
-<!--							v-else-->
-<!--							:disabled="item.invoicePerson !== userStore.nickName"-->
-<!--							@click="openUpload(item)"-->
-<!--						>-->
-<!--							涓婁紶-->
-<!--						</up-button>-->
-					</view>
-				</view>
-			</view>
-		</view>
-		<view v-else class="no-data">
-			<text>鏆傛棤寮�绁ㄥ彴璐︽暟鎹�</text>
-		</view>
-		
-		<!-- 绛涢�夊脊绐� -->
-		<up-popup v-model="showFilter" mode="bottom" round><up-transition>
-			<view class="filter-popup">
-				<up-cell-group title="绛涢�夋潯浠�" inset>
-					<up-input
-						label="寮�绁ㄦ棩鏈�"
-						readonly
-						placeholder="璇烽�夋嫨鏃ユ湡鑼冨洿"
-						@click="showInvoiceRange = true"
-						v-model="invoiceRangeLabel"
-					/>
-					<up-input
-						label="褰曞叆鏃ユ湡"
-						readonly
-						@click="showCreateDatePicker = true"
-						v-model="searchForm.createTimeStart"
-					/>
-					<view class="switch-row">
-						<text class="switch-label">涓嶆樉绀烘湁鍙戠エ琛�</text>
-						<up-switch v-model="searchForm.status" size="20" />
-					</view>
-				</up-cell-group>
-				<view class="filter-actions">
-					<up-button @click="resetFilter">閲嶇疆</up-button>
-					<up-button type="primary" @click="confirmFilter">纭畾</up-button>
-				</view>
-			</view>
-		</up-transition></up-popup>
-		
-		<!-- 鏃ュ巻锛氬紑绁ㄦ棩鏈熻寖鍥� -->
-		<up-popup v-model="showInvoiceRange" mode="bottom"><up-transition>
-			<up-datetime-picker
-				mode="date"
-				type="range"
-				title="閫夋嫨寮�绁ㄦ棩鏈熻寖鍥�"
-				@confirm="onInvoiceRangeConfirm"
-				@cancel="showInvoiceRange = false"
-			/>
-		</up-transition></up-popup>
-		
-		<!-- 鏃ユ湡锛氬綍鍏ユ棩鏈� -->
-		<up-popup v-model="showCreateDatePicker" mode="bottom"><up-transition>
-			<up-datetime-picker
-				mode="date"
-				type="selector"
-				v-model="currentCreateDate"
-				title="閫夋嫨褰曞叆鏃ユ湡"
-				@confirm="onCreateDateConfirm"
-				@cancel="showCreateDatePicker = false"
-			/>
-		</up-transition></up-popup>
-		
-		
-		
-		<!-- 鍗曡涓婁紶寮圭獥锛堟棤琛ㄥ崟锛� -->
-		<up-popup v-model="showUpload" mode="bottom" round><up-transition>
-			<view class="upload-container">
-				<up-cell-group title="涓婁紶闄勪欢锛堜粎鏀寔 pdf锛屾渶澶�10MB锛屾渶澶�10涓級" inset>
-					<up-upload
-						accept="pdf"
-						multiple
-						:maxCount="10"
-						:afterRead="afterReadRowUpload"
-						:beforeRead="beforeReadPdf"
-					>
-						<up-button type="primary">鐐瑰嚮涓婁紶</up-button>
-					</up-upload>
-					<view class="uploaded-list" v-if="fileList.length">
-						<view class="uploaded-item" v-for="(f, idx) in fileList" :key="idx">
-							<text class="file-name">{{ f.name || getFileNameFromUrl(f.url) }}</text>
-							<up-button size="mini" type="error" plain @click="removeUploaded(idx)">绉婚櫎</up-button>
-						</view>
-					</view>
-				</up-cell-group>
-				<view class="filter-actions">
-					<up-button @click="showUpload = false">鍙栨秷</up-button>
-					<up-button type="primary" @click="confirmUpload">纭</up-button>
-				</view>
-			</view>
-		</up-transition></up-popup>
-		
-		<!-- 闄勪欢鍒楄〃閫夋嫨 -->
-		<up-action-sheet v-model="showFileSheet" :actions="fileActions" cancel-text="鍙栨秷" close-on-click-action @select="onSelectFile">
-			<view class="up-action-sheet__cancel" @click="showFileSheet = false">
-				鍙栨秷
-			</view>
-		</up-action-sheet>
-	</view>
+  <view class="sales-account">
+    <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
+    <PageHeader title="寮�绁ㄥ彴璐�"
+                @back="goBack" />
+    <!-- 鎼滅储鍜岀瓫閫夊尯鍩燂紙淇濇寔涓庨攢鍞彴璐﹂鏍间竴鑷达級 -->
+    <view class="search-section">
+      <view class="search-bar">
+        <view class="search-input">
+          <up-input class="search-text"
+                    placeholder="璇疯緭鍏ュ鎴峰悕绉�/鍚堝悓鍙锋悳绱�"
+                    v-model="searchForm.searchText"
+                    @change="handleQuery"
+                    clearable />
+        </view>
+        <!--				<view class="filter-button" @click="showFilter = true">-->
+        <!--					<up-icon name="list" size="24" color="#999"></up-icon>-->
+        <!--				</view>-->
+        <view class="filter-button"
+              @click="handleQuery">
+          <up-icon name="search"
+                   size="24"
+                   color="#999"></up-icon>
+        </view>
+      </view>
+    </view>
+    <!-- 鍒楄〃鍖哄煙 -->
+    <view class="ledger-list"
+          v-if="ledgerList.length > 0">
+      <view v-for="(item, index) in ledgerList"
+            :key="index">
+        <view class="ledger-item">
+          <view class="item-header">
+            <view class="item-left">
+              <view class="document-icon">
+                <up-icon name="file-text"
+                         size="16"
+                         color="#ffffff"></up-icon>
+              </view>
+              <text class="item-id">{{ item.salesContractNo }}</text>
+            </view>
+          </view>
+          <up-divider></up-divider>
+          <view class="item-details">
+            <view class="detail-row">
+              <text class="detail-label">瀹㈡埛鍚嶇О</text>
+              <text class="detail-value">{{ item.customerName }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">瀹㈡埛鍚堝悓鍙�</text>
+              <text class="detail-value">{{ item.customerContractNo }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">椤圭洰</text>
+              <text class="detail-value">{{ item.projectName }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">浜у搧澶х被</text>
+              <text class="detail-value">{{ item.productCategory }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">瑙勬牸鍨嬪彿</text>
+              <text class="detail-value">{{ item.specificationModel }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">鍙戠エ鍙�</text>
+              <text class="detail-value">{{ item.invoiceNo || '-' }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">鍙戠エ閲戦(鍏�)</text>
+              <text class="detail-value highlight">{{ formatAmount(item.invoiceTotal) }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">绋庣巼(%)</text>
+              <text class="detail-value">{{ item.taxRate }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">褰曞叆浜�</text>
+              <text class="detail-value">{{ item.invoicePerson }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">褰曞叆鏃ユ湡</text>
+              <text class="detail-value">{{ formatDateTime(item.createTime) }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">寮�绁ㄦ棩鏈�</text>
+              <text class="detail-value">{{ item.invoiceDate || '-' }}</text>
+            </view>
+          </view>
+          <view class="action-buttons">
+            <up-button type="primary"
+                       size="small"
+                       class="action-btn"
+                       :disabled="item.invoicePerson !== userStore.nickName"
+                       @click="openEdit(item)">
+              缂栬緫
+            </up-button>
+            <up-button type="error"
+                       size="small"
+                       plain
+                       class="action-btn"
+                       :disabled="item.invoicePerson !== userStore.nickName"
+                       @click="handleDelete(item)">
+              鍒犻櫎
+            </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"-->
+            <!--							class="action-btn"-->
+            <!--							v-else-->
+            <!--							:disabled="item.invoicePerson !== userStore.nickName"-->
+            <!--							@click="openUpload(item)"-->
+            <!--						>-->
+            <!--							涓婁紶-->
+            <!--						</up-button>-->
+          </view>
+        </view>
+      </view>
+    </view>
+    <view v-else
+          class="no-data">
+      <text>鏆傛棤寮�绁ㄥ彴璐︽暟鎹�</text>
+    </view>
+    <!-- 绛涢�夊脊绐� -->
+    <up-popup v-model="showFilter"
+              mode="bottom"
+              round><up-transition>
+        <view class="filter-popup">
+          <up-cell-group title="绛涢�夋潯浠�"
+                         inset>
+            <up-input label="寮�绁ㄦ棩鏈�"
+                      readonly
+                      placeholder="璇烽�夋嫨鏃ユ湡鑼冨洿"
+                      @click="showInvoiceRange = true"
+                      v-model="invoiceRangeLabel" />
+            <up-input label="褰曞叆鏃ユ湡"
+                      readonly
+                      @click="showCreateDatePicker = true"
+                      v-model="searchForm.createTimeStart" />
+            <view class="switch-row">
+              <text class="switch-label">涓嶆樉绀烘湁鍙戠エ琛�</text>
+              <up-switch v-model="searchForm.status"
+                         size="20" />
+            </view>
+          </up-cell-group>
+          <view class="filter-actions">
+            <up-button @click="resetFilter">閲嶇疆</up-button>
+            <up-button type="primary"
+                       @click="confirmFilter">纭畾</up-button>
+          </view>
+        </view>
+      </up-transition></up-popup>
+    <!-- 鏃ュ巻锛氬紑绁ㄦ棩鏈熻寖鍥� -->
+    <up-popup v-model="showInvoiceRange"
+              mode="bottom"><up-transition>
+        <up-datetime-picker mode="date"
+                            type="range"
+                            title="閫夋嫨寮�绁ㄦ棩鏈熻寖鍥�"
+                            @confirm="onInvoiceRangeConfirm"
+                            @cancel="showInvoiceRange = false" />
+      </up-transition></up-popup>
+    <!-- 鏃ユ湡锛氬綍鍏ユ棩鏈� -->
+    <up-popup v-model="showCreateDatePicker"
+              mode="bottom"><up-transition>
+        <up-datetime-picker mode="date"
+                            type="selector"
+                            v-model="currentCreateDate"
+                            title="閫夋嫨褰曞叆鏃ユ湡"
+                            @confirm="onCreateDateConfirm"
+                            @cancel="showCreateDatePicker = false" />
+      </up-transition></up-popup>
+    <!-- 鍗曡涓婁紶寮圭獥锛堟棤琛ㄥ崟锛� -->
+    <up-popup v-model="showUpload"
+              mode="bottom"
+              round><up-transition>
+        <view class="upload-container">
+          <up-cell-group title="涓婁紶闄勪欢锛堜粎鏀寔 pdf锛屾渶澶�10MB锛屾渶澶�10涓級"
+                         inset>
+            <up-upload accept="pdf"
+                       multiple
+                       :maxCount="10"
+                       :afterRead="afterReadRowUpload"
+                       :beforeRead="beforeReadPdf">
+              <up-button type="primary">鐐瑰嚮涓婁紶</up-button>
+            </up-upload>
+            <view class="uploaded-list"
+                  v-if="fileList.length">
+              <view class="uploaded-item"
+                    v-for="(f, idx) in fileList"
+                    :key="idx">
+                <text class="file-name">{{ f.name || getFileNameFromUrl(f.url) }}</text>
+                <up-button size="mini"
+                           type="error"
+                           plain
+                           @click="removeUploaded(idx)">绉婚櫎</up-button>
+              </view>
+            </view>
+          </up-cell-group>
+          <view class="filter-actions">
+            <up-button @click="showUpload = false">鍙栨秷</up-button>
+            <up-button type="primary"
+                       @click="confirmUpload">纭</up-button>
+          </view>
+        </view>
+      </up-transition></up-popup>
+    <!-- 闄勪欢鍒楄〃閫夋嫨 -->
+    <up-action-sheet v-model="showFileSheet"
+                     :actions="fileActions"
+                     cancel-text="鍙栨秷"
+                     close-on-click-action
+                     @select="onSelectFile">
+      <view class="up-action-sheet__cancel"
+            @click="showFileSheet = false">
+        鍙栨秷
+      </view>
+    </up-action-sheet>
+  </view>
 </template>
 
 <script setup>
-import {reactive, ref} from 'vue'
-import dayjs from 'dayjs'
-import PageHeader from '@/components/PageHeader.vue'
-import useUserStore from '@/store/modules/user'
-import {getToken} from '@/utils/auth'
-import config from '@/config.js'
-import {
-	commitFile,
-	delInvoiceLedgerByRegProductId,
-	registrationProductPage
-} from '@/api/salesManagement/invoiceLedger.js'
-import {onShow} from "@dcloudio/uni-app";
+  import { reactive, ref } from "vue";
+  import dayjs from "dayjs";
+  import PageHeader from "@/components/PageHeader.vue";
+  import useUserStore from "@/store/modules/user";
+  import { getToken } from "@/utils/auth";
+  import config from "@/config.js";
+  import {
+    commitFile,
+    delInvoiceLedgerByRegProductId,
+    registrationProductPage,
+  } from "@/api/salesManagement/invoiceLedger.js";
+  import { onShow } from "@dcloudio/uni-app";
 
-const showToast = (message) => {
-	uni.showToast({
-		title: message,
-		icon: 'none'
-	})
-}
-const showLoadingToast = (message) => {
-	uni.showLoading({
-		title: message,
-		mask: true
-	})
-}
-const closeToast = () => {
-	uni.hideLoading()
-}
+  const showToast = message => {
+    uni.showToast({
+      title: message,
+      icon: "none",
+    });
+  };
+  const showLoadingToast = message => {
+    uni.showLoading({
+      title: message,
+      mask: true,
+    });
+  };
+  const closeToast = () => {
+    uni.hideLoading();
+  };
 
-const userStore = useUserStore()
+  const userStore = useUserStore();
 
-// 鍒楄〃涓庢煡璇�
-const ledgerList = ref([])
-const page = reactive({ current: -1, size: -1 })
-const searchForm = reactive({
-	searchText: '',
-	status: false,
-	createTimeStart: ''
-})
+  // 鍒楄〃涓庢煡璇�
+  const ledgerList = ref([]);
+  const page = reactive({ current: -1, size: -1 });
+  const searchForm = reactive({
+    searchText: "",
+    status: false,
+    createTimeStart: "",
+  });
 
-// 椤堕儴浜や簰
-const showFilter = ref(false)
-const showInvoiceRange = ref(false)
-const showCreateDatePicker = ref(false)
-const invoiceRangeLabel = ref('')
-const currentCreateDate = ref([new Date().getFullYear(), new Date().getMonth() + 1, new Date().getDate()])
+  // 椤堕儴浜や簰
+  const showFilter = ref(false);
+  const showInvoiceRange = ref(false);
+  const showCreateDatePicker = ref(false);
+  const invoiceRangeLabel = ref("");
+  const currentCreateDate = ref([
+    new Date().getFullYear(),
+    new Date().getMonth() + 1,
+    new Date().getDate(),
+  ]);
 
-const currentId = ref('')
-const fileList = ref([]) // 琛屼笂浼犳垨閫氱敤涓婁紶鍒楄〃
+  const currentId = ref("");
+  const fileList = ref([]); // 琛屼笂浼犳垨閫氱敤涓婁紶鍒楄〃
 
-// 琛屼笂浼犲脊绐�
-const showUpload = ref(false)
+  // 琛屼笂浼犲脊绐�
+  const showUpload = ref(false);
 
-// 闄勪欢鏌ョ湅
-const showFileSheet = ref(false)
-const fileActions = ref([])
-let currentFilesToOpen = []
+  // 闄勪欢鏌ョ湅
+  const showFileSheet = ref(false);
+  const fileActions = ref([]);
+  let currentFilesToOpen = [];
 
-const formatAmount = (val) => {
-	if (val === undefined || val === null || val === '') return '0.00'
-	const num = Number(val)
-	if (Number.isNaN(num)) return '0.00'
-	return num.toFixed(2)
-}
-const formatDateTime = (val) => {
-	if (!val) return ''
-	return dayjs(val).format('YYYY-MM-DD HH:mm:ss')
-}
+  const formatAmount = val => {
+    if (val === undefined || val === null || val === "") return "0.00";
+    const num = Number(val);
+    if (Number.isNaN(num)) return "0.00";
+    return num.toFixed(2);
+  };
+  const formatDateTime = val => {
+    if (!val) return "";
+    return dayjs(val).format("YYYY-MM-DD HH:mm:ss");
+  };
 
-const goBack = () => {
-	uni.navigateBack()
-}
+  const goBack = () => {
+    uni.navigateBack();
+  };
 
-const handleQuery = () => {
-	getList()
-}
+  const handleQuery = () => {
+    getList();
+  };
 
-const getList = async () => {
-	try {
-		showLoadingToast('鍔犺浇涓�...')
-		const { invoiceDate, ...rest } = searchForm
-		const res = await registrationProductPage({ ...rest, ...page })
-		// 鍏煎涓嶅悓杩斿洖缁撴瀯
-		ledgerList.value = res?.data?.records || res?.records || res?.data || []
-		closeToast()
-	} catch (e) {
-		closeToast()
-		showToast('鑾峰彇鍒楄〃澶辫触')
-	}
-}
+  const getList = async () => {
+    try {
+      showLoadingToast("鍔犺浇涓�...");
+      const { invoiceDate, ...rest } = searchForm;
+      const res = await registrationProductPage({ ...rest, ...page });
+      // 鍏煎涓嶅悓杩斿洖缁撴瀯
+      ledgerList.value = res?.data?.records || res?.records || res?.data || [];
+      closeToast();
+    } catch (e) {
+      closeToast();
+      showToast("鑾峰彇鍒楄〃澶辫触");
+    }
+  };
 
-// 绛涢�夐�昏緫
-const resetFilter = () => {
-	searchForm.searchText = ''
-	searchForm.status = false
-	const start = dayjs().startOf('month').format('YYYY-MM-DD')
-	const end = dayjs().endOf('month').format('YYYY-MM-DD')
-	searchForm.invoiceDate = [start, end]
-	searchForm.invoiceDateStart = start
-	searchForm.invoiceDateEnd = end
-	searchForm.createTimeStart = ''
-	invoiceRangeLabel.value = ''
-}
-const confirmFilter = () => {
-	showFilter.value = false
-	getList()
-}
-const onInvoiceRangeConfirm = ({ selectedValues }) => {
-	try {
-		const start = dayjs(selectedValues[0]).format('YYYY-MM-DD')
-		const end = dayjs(selectedValues[1]).format('YYYY-MM-DD')
-		searchForm.invoiceDateStart = start
-		searchForm.invoiceDateEnd = end
-		invoiceRangeLabel.value = `${start} 鑷� ${end}`
-		showInvoiceRange.value = false
-	} catch (err) {
-		showInvoiceRange.value = false
-	}
-}
-const onCreateDateConfirm = ({ selectedValues }) => {
-	try {
-		searchForm.createTimeStart = selectedValues.join('-')
-		currentCreateDate.value = selectedValues
-		showCreateDatePicker.value = false
-	} catch (err) {
-		showCreateDatePicker.value = false
-	}
-}
+  // 绛涢�夐�昏緫
+  const resetFilter = () => {
+    searchForm.searchText = "";
+    searchForm.status = false;
+    const start = dayjs().startOf("month").format("YYYY-MM-DD");
+    const end = dayjs().endOf("month").format("YYYY-MM-DD");
+    searchForm.invoiceDate = [start, end];
+    searchForm.invoiceDateStart = start;
+    searchForm.invoiceDateEnd = end;
+    searchForm.createTimeStart = "";
+    invoiceRangeLabel.value = "";
+  };
+  const confirmFilter = () => {
+    showFilter.value = false;
+    getList();
+  };
+  const onInvoiceRangeConfirm = ({ selectedValues }) => {
+    try {
+      const start = dayjs(selectedValues[0]).format("YYYY-MM-DD");
+      const end = dayjs(selectedValues[1]).format("YYYY-MM-DD");
+      searchForm.invoiceDateStart = start;
+      searchForm.invoiceDateEnd = end;
+      invoiceRangeLabel.value = `${start} 鑷� ${end}`;
+      showInvoiceRange.value = false;
+    } catch (err) {
+      showInvoiceRange.value = false;
+    }
+  };
+  const onCreateDateConfirm = ({ selectedValues }) => {
+    try {
+      searchForm.createTimeStart = selectedValues.join("-");
+      currentCreateDate.value = selectedValues;
+      showCreateDatePicker.value = false;
+    } catch (err) {
+      showCreateDatePicker.value = false;
+    }
+  };
 
-// 缂栬緫閫昏緫鏀逛负璺宠浆鏂伴〉闈�
-const openEdit = (row) => {
-	try {
-		uni.setStorageSync('invoiceLedgerEditRow', JSON.stringify(row))
-		uni.navigateTo({ url: '/pages/sales/invoiceLedger/detail' })
-	} catch (e) {
-		showToast('璺宠浆澶辫触')
-	}
-}
+  // 缂栬緫閫昏緫鏀逛负璺宠浆鏂伴〉闈�
+  const openEdit = row => {
+    try {
+      uni.setStorageSync("invoiceLedgerEditRow", JSON.stringify(row));
+      uni.navigateTo({ url: "/pages/sales/invoiceLedger/detail" });
+    } catch (e) {
+      showToast("璺宠浆澶辫触");
+    }
+  };
 
-// 鍒犻櫎
-const handleDelete = (row) => {
-	uni.showModal({
-		title: '鍒犻櫎纭',
-		content: '璇ュ彂绁ㄥ彴璐﹀皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�',
-		success: async (res) => {
-			if (res.confirm) {
-				try {
-					showLoadingToast('澶勭悊涓�...')
-					await delInvoiceLedgerByRegProductId(row.id)
-					closeToast()
-					showToast('鍒犻櫎鎴愬姛')
-					getList()
-				} catch (e) {
-					closeToast()
-					showToast('鍒犻櫎澶辫触锛岃閲嶈瘯')
-				}
-			}
-		}
-	})
-}
+  // 鍒犻櫎
+  const handleDelete = row => {
+    uni.showModal({
+      title: "鍒犻櫎纭",
+      content: "璇ュ彂绁ㄥ彴璐﹀皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�",
+      success: async res => {
+        if (res.confirm) {
+          try {
+            showLoadingToast("澶勭悊涓�...");
+            await delInvoiceLedgerByRegProductId(row.id);
+            closeToast();
+            showToast("鍒犻櫎鎴愬姛");
+            getList();
+          } catch (e) {
+            closeToast();
+            showToast("鍒犻櫎澶辫触锛岃閲嶈瘯");
+          }
+        }
+      },
+    });
+  };
 
-// 琛屼笂浼�
-const openUpload = (row) => {
-	currentId.value = row.id
-	fileList.value = []
-	showUpload.value = true
-}
-const confirmUpload = async () => {
-	try {
-		const payload = { fileList: fileList.value, id: currentId.value }
-		showLoadingToast('鎻愪氦涓�...')
-		await commitFile(payload)
-		closeToast()
-		showToast('鎻愪氦鎴愬姛')
-		showUpload.value = false
-		fileList.value = []
-		currentId.value = ''
-		getList()
-	} catch (e) {
-		closeToast()
-		showToast('鎻愪氦澶辫触锛岃閲嶈瘯')
-	}
-}
+  // 琛屼笂浼�
+  const openUpload = row => {
+    currentId.value = row.id;
+    fileList.value = [];
+    showUpload.value = true;
+  };
+  const confirmUpload = async () => {
+    try {
+      const payload = { fileList: fileList.value, id: currentId.value };
+      showLoadingToast("鎻愪氦涓�...");
+      await commitFile(payload);
+      closeToast();
+      showToast("鎻愪氦鎴愬姛");
+      showUpload.value = false;
+      fileList.value = [];
+      currentId.value = "";
+      getList();
+    } catch (e) {
+      closeToast();
+      showToast("鎻愪氦澶辫触锛岃閲嶈瘯");
+    }
+  };
 
-// 涓婁紶鐩稿叧
-const beforeReadPdf = (file) => {
-	// 鍏煎澶氭枃浠�
-	const files = Array.isArray(file) ? file : [file]
-	for (const f of files) {
-		const sizeOk = f.size <= 10 * 1024 * 1024
-		const ext = (f.name || '').split('.').pop()?.toLowerCase()
-		if (ext !== 'pdf') {
-			showToast('浠呮敮鎸乸df鏂囦欢')
-			return false
-		}
-		if (!sizeOk) {
-			showToast('涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃10MB')
-			return false
-		}
-	}
-	return true
-}
+  // 涓婁紶鐩稿叧
+  const beforeReadPdf = file => {
+    // 鍏煎澶氭枃浠�
+    const files = Array.isArray(file) ? file : [file];
+    for (const f of files) {
+      const sizeOk = f.size <= 10 * 1024 * 1024;
+      const ext = (f.name || "").split(".").pop()?.toLowerCase();
+      if (ext !== "pdf") {
+        showToast("浠呮敮鎸乸df鏂囦欢");
+        return false;
+      }
+      if (!sizeOk) {
+        showToast("涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃10MB");
+        return false;
+      }
+    }
+    return true;
+  };
 
-const uploadSingleFile = async (fileObj) => {
-	return new Promise((resolve, reject) => {
-		showLoadingToast('姝e湪涓婁紶...')
-		uni.uploadFile({
-			url: config.baseUrl + '/invoiceLedger/uploadFile',
-			filePath: fileObj.url || fileObj.file?.path || fileObj.tempFilePath,
-			name: 'file',
-			header: { Authorization: 'Bearer ' + getToken() },
-			success: (res) => {
-				closeToast()
-				try {
-					const data = JSON.parse(res.data || '{}')
-					if (data.code === 200) {
-						resolve(data.data)
-					} else {
-						reject(new Error(data.msg || '涓婁紶澶辫触'))
-					}
-				} catch (err) {
-					reject(err)
-				}
-			},
-			fail: (err) => {
-				closeToast()
-				reject(err)
-			}
-		})
-	})
-}
+  const uploadSingleFile = async fileObj => {
+    return new Promise((resolve, reject) => {
+      showLoadingToast("姝e湪涓婁紶...");
+      uni.uploadFile({
+        url: config.baseUrl + "/invoiceLedger/uploadFile",
+        filePath: fileObj.url || fileObj.file?.path || fileObj.tempFilePath,
+        name: "file",
+        header: { Authorization: "Bearer " + getToken() },
+        success: res => {
+          closeToast();
+          try {
+            const data = JSON.parse(res.data || "{}");
+            if (data.code === 200) {
+              resolve(data.data);
+            } else {
+              reject(new Error(data.msg || "涓婁紶澶辫触"));
+            }
+          } catch (err) {
+            reject(err);
+          }
+        },
+        fail: err => {
+          closeToast();
+          reject(err);
+        },
+      });
+    });
+  };
 
-const afterReadEditUpload = async (file) => {
-	try {
-		const files = Array.isArray(file) ? file : file?.file ? [file] : [file]
-		for (const f of files) {
-			const uploaded = await uploadSingleFile(f)
-			fileList.value.push(uploaded)
-		}
-		showToast('涓婁紶鎴愬姛')
-	} catch (e) {
-		showToast('涓婁紶澶辫触')
-	}
-}
+  const afterReadEditUpload = async file => {
+    try {
+      const files = Array.isArray(file) ? file : file?.file ? [file] : [file];
+      for (const f of files) {
+        const uploaded = await uploadSingleFile(f);
+        fileList.value.push(uploaded);
+      }
+      showToast("涓婁紶鎴愬姛");
+    } catch (e) {
+      showToast("涓婁紶澶辫触");
+    }
+  };
 
-const afterReadRowUpload = async (file) => {
-	try {
-		const files = Array.isArray(file) ? file : file?.file ? [file] : [file]
-		for (const f of files) {
-			const uploaded = await uploadSingleFile(f)
-			fileList.value.push(uploaded)
-		}
-		showToast('涓婁紶鎴愬姛')
-	} catch (e) {
-		showToast('涓婁紶澶辫触')
-	}
-}
+  const afterReadRowUpload = async file => {
+    try {
+      const files = Array.isArray(file) ? file : file?.file ? [file] : [file];
+      for (const f of files) {
+        const uploaded = await uploadSingleFile(f);
+        fileList.value.push(uploaded);
+      }
+      showToast("涓婁紶鎴愬姛");
+    } catch (e) {
+      showToast("涓婁紶澶辫触");
+    }
+  };
 
-const removeUploaded = (index) => {
-	fileList.value.splice(index, 1)
-}
+  const removeUploaded = index => {
+    fileList.value.splice(index, 1);
+  };
 
-const getFileNameFromUrl = (url) => {
-	try {
-		if (!url) return ''
-		return decodeURIComponent(url.split('/').pop())
-	} catch (e) {
-		return url
-	}
-}
+  const getFileNameFromUrl = url => {
+    try {
+      if (!url) return "";
+      return decodeURIComponent(url.split("/").pop());
+    } catch (e) {
+      return url;
+    }
+  };
 
-// 闄勪欢鏌ョ湅
-const openFileActions = (commonFiles) => {
-	currentFilesToOpen = commonFiles || []
-	fileActions.value = (commonFiles || []).map((f, idx) => ({ name: getFileNameFromUrl(f.url || ''), index: idx }))
-	showFileSheet.value = true
-}
-const onSelectFile = async (action) => {
-	try {
-		const item = currentFilesToOpen[action.index]
-		if (!item || !item.url) return
-		showLoadingToast('涓嬭浇涓�...')
-		uni.downloadFile({
-			url: item.url,
-			success: (res) => {
-				closeToast()
-				if (res.statusCode === 200) {
-					uni.openDocument({ filePath: res.tempFilePath })
-				} else {
-					showToast('涓嬭浇澶辫触')
-				}
-			},
-			fail: () => {
-				closeToast()
-				showToast('涓嬭浇澶辫触')
-			}
-		})
-	} catch (e) {
-		closeToast()
-		showToast('鎵撳紑澶辫触')
-	}
-}
+  // 闄勪欢鏌ョ湅
+  const openFileActions = commonFiles => {
+    currentFilesToOpen = commonFiles || [];
+    fileActions.value = (commonFiles || []).map((f, idx) => ({
+      name: getFileNameFromUrl(f.url || ""),
+      index: idx,
+    }));
+    showFileSheet.value = true;
+  };
+  const onSelectFile = async action => {
+    try {
+      const item = currentFilesToOpen[action.index];
+      if (!item || !item.url) return;
+      showLoadingToast("涓嬭浇涓�...");
+      uni.downloadFile({
+        url: item.url,
+        success: res => {
+          closeToast();
+          if (res.statusCode === 200) {
+            uni.openDocument({ filePath: res.tempFilePath });
+          } else {
+            showToast("涓嬭浇澶辫触");
+          }
+        },
+        fail: () => {
+          closeToast();
+          showToast("涓嬭浇澶辫触");
+        },
+      });
+    } catch (e) {
+      closeToast();
+      showToast("鎵撳紑澶辫触");
+    }
+  };
 
-onShow(() => {
-	getList()
-})
+  onShow(() => {
+    getList();
+  });
 </script>
 
 <style scoped lang="scss">
-@import '@/styles/sales-common.scss';
+  @import "@/styles/sales-common.scss";
 
-// 寮�绁ㄥ彴璐︾壒鏈夋牱寮�
-.filter-popup {
-	padding: 12px 12px 20px;
-}
+  // 寮�绁ㄥ彴璐︾壒鏈夋牱寮�
+  .filter-popup {
+    padding: 12px 12px 20px;
+  }
 
-.switch-row {
-	padding: 12px 16px;
-}
+  .switch-row {
+    padding: 12px 16px;
+  }
 
-.filter-actions {
-	display: flex;
-	gap: 12px;
-	padding: 12px 16px 16px;
-	justify-content: space-between;
-}
+  .filter-actions {
+    display: flex;
+    gap: 12px;
+    padding: 12px 16px 16px;
+    justify-content: space-between;
+  }
 
-.edit-container {
-	padding-bottom: 5rem;
-}
+  .edit-container {
+    padding-bottom: 5rem;
+  }
 
-.uploaded-list {
-	padding: 8px 16px 0 16px;
-}
+  .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;
-}
+  .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;
-}
+  .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;
-}
+  .tip-text {
+    padding: 4px 16px 0 16px;
+    font-size: 12px;
+    color: #888;
+  }
 
-.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;
-}
+  .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;
-}
+  .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;
-}
+  .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/sales/invoicingRegistration/index.vue b/src/pages/sales/invoicingRegistration/index.vue
index 132da11..b30d1ad 100644
--- a/src/pages/sales/invoicingRegistration/index.vue
+++ b/src/pages/sales/invoicingRegistration/index.vue
@@ -1,252 +1,256 @@
 <template>
-	<view class="sales-account">
-		<!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
-		<PageHeader title="寮�绁ㄧ櫥璁�" @back="goBack" />
-		
-		<!-- 鎼滅储鍜岀瓫閫夊尯鍩� -->
-		<view class="search-section">
-			<view class="search-bar">
-				<view class="search-input">
-					<up-input
-						class="search-text"
-						placeholder="璇疯緭鍏ュ鎴峰悕绉版悳绱�"
-						v-model="customerName"
-						clearable
-						@change="getList"
-					/>
-				</view>
-				<view class="filter-button" @click="getList">
-					<up-icon name="search" size="24" color="#999"></up-icon>
-				</view>
-			</view>
-		</view>
-		
-		<!-- 閿�鍞彴璐︾�戝竷娴� -->
-		<view class="ledger-list" v-if="total > 0">
-			<view v-for="(item, index) in ledgerList" :key="index">
-				<view class="ledger-item">
-					<view class="item-header">
-						<view class="item-left">
-							<view class="document-icon">
-								<up-icon name="file-text" size="16" color="#ffffff"></up-icon>
-							</view>
-							<text class="item-id">{{ item.salesContractNo }}</text>
-						</view>
-					</view>
-					<up-divider></up-divider>
-					
-					<view class="item-details">
-						<view class="detail-row">
-							<text class="detail-label">瀹㈡埛鍚嶇О</text>
-							<text class="detail-value">{{ item.customerName }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">瀹㈡埛鍚堝悓鍙�</text>
-							<text class="detail-value">{{ item.customerContractNo }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">涓氬姟鍛�</text>
-							<text class="detail-value">{{ item.salesman }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">椤圭洰鍚嶇О</text>
-							<text class="detail-value">{{ item.projectName }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">鍚堝悓閲戦(鍏�)</text>
-							<text class="detail-value highlight">{{ item.contractAmount }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">宸插紑绁ㄩ噾棰�(鍏�)</text>
-							<text class="detail-value highlight">{{ item.invoiceTotal }}</text>
-						</view>
-						<view class="detail-row">
-							<text class="detail-label">鏈紑绁ㄩ噾棰�(鍏�)</text>
-							<text class="detail-value redlight">{{ item.noInvoiceAmountTotal }}</text>
-						</view>
-					</view>
-					
-					<!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
-					<view class="action-buttons">
-						<up-button
-							type="primary"
-							size="small"
-							@click="handleAddInvoice(item)"
-							class="action-btn"
-							:disabled="item.noInvoiceAmountTotal == 0"
-						>
-							鏂板寮�绁�
-						</up-button>
-						<up-button
-							size="small"
-							@click="handleViewDetail(item)"
-							class="action-btn"
-						>
-							鏌ョ湅璇︽儏
-						</up-button>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view v-else class="no-data">
-			<text>鏆傛棤閿�鍞彴璐︽暟鎹�</text>
-		</view>
-	</view>
+  <view class="sales-account">
+    <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
+    <PageHeader title="寮�绁ㄧ櫥璁�"
+                @back="goBack" />
+    <!-- 鎼滅储鍜岀瓫閫夊尯鍩� -->
+    <view class="search-section">
+      <view class="search-bar">
+        <view class="search-input">
+          <up-input class="search-text"
+                    placeholder="璇疯緭鍏ュ鎴峰悕绉版悳绱�"
+                    v-model="customerName"
+                    clearable
+                    @change="getList" />
+        </view>
+        <view class="filter-button"
+              @click="getList">
+          <up-icon name="search"
+                   size="24"
+                   color="#999"></up-icon>
+        </view>
+      </view>
+    </view>
+    <!-- 閿�鍞彴璐︾�戝竷娴� -->
+    <view class="ledger-list"
+          v-if="total > 0">
+      <view v-for="(item, index) in ledgerList"
+            :key="index">
+        <view class="ledger-item">
+          <view class="item-header">
+            <view class="item-left">
+              <view class="document-icon">
+                <up-icon name="file-text"
+                         size="16"
+                         color="#ffffff"></up-icon>
+              </view>
+              <text class="item-id">{{ item.salesContractNo }}</text>
+            </view>
+          </view>
+          <up-divider></up-divider>
+          <view class="item-details">
+            <view class="detail-row">
+              <text class="detail-label">瀹㈡埛鍚嶇О</text>
+              <text class="detail-value">{{ item.customerName }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">瀹㈡埛鍚堝悓鍙�</text>
+              <text class="detail-value">{{ item.customerContractNo }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">涓氬姟鍛�</text>
+              <text class="detail-value">{{ item.salesman }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">椤圭洰鍚嶇О</text>
+              <text class="detail-value">{{ item.projectName }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">鍚堝悓閲戦(鍏�)</text>
+              <text class="detail-value highlight">{{ item.contractAmount }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">宸插紑绁ㄩ噾棰�(鍏�)</text>
+              <text class="detail-value highlight">{{ item.invoiceTotal }}</text>
+            </view>
+            <view class="detail-row">
+              <text class="detail-label">鏈紑绁ㄩ噾棰�(鍏�)</text>
+              <text class="detail-value redlight">{{ item.noInvoiceAmountTotal }}</text>
+            </view>
+          </view>
+          <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+          <view class="action-buttons">
+            <up-button type="primary"
+                       size="small"
+                       @click="handleAddInvoice(item)"
+                       class="action-btn"
+                       :disabled="item.noInvoiceAmountTotal == 0">
+              鏂板寮�绁�
+            </up-button>
+            <up-button size="small"
+                       @click="handleViewDetail(item)"
+                       class="action-btn">
+              鏌ョ湅璇︽儏
+            </up-button>
+          </view>
+        </view>
+      </view>
+    </view>
+    <view v-else
+          class="no-data">
+      <text>鏆傛棤閿�鍞彴璐︽暟鎹�</text>
+    </view>
+  </view>
 </template>
 
 <script setup>
-import { ref } from 'vue';
-import { onShow } from '@dcloudio/uni-app';
-import {ledgerListPage} from "@/api/salesManagement/salesLedger";
-import useUserStore from "@/store/modules/user";
-const userStore = useUserStore()
+  import { ref } from "vue";
+  import { onShow } from "@dcloudio/uni-app";
+  import { ledgerListPage } from "@/api/salesManagement/salesLedger";
+  import useUserStore from "@/store/modules/user";
+  const userStore = useUserStore();
 
-// 鎼滅储鍏抽敭璇�
-const customerName = ref('');
+  // 鎼滅储鍏抽敭璇�
+  const customerName = ref("");
 
-// 閿�鍞彴璐︽暟鎹�
-const ledgerList = ref([]);
-const total = ref(0);
+  // 閿�鍞彴璐︽暟鎹�
+  const ledgerList = ref([]);
+  const total = ref(0);
 
-// 杩斿洖涓婁竴椤�
-const goBack = () => {
-	uni.navigateBack();
-};
-// 鏌ヨ鍒楄〃
-const getList = () => {
-	showLoadingToast('鍔犺浇涓�...')
-	const page = {
-		current: -1,
-		size: -1
-	}
-	ledgerListPage({...page, customerName: customerName.value}).then((res) => {
-		ledgerList.value = res.records;
-		total.value = res.total;
-		closeToast()
-	}).catch(() => {
-		closeToast()
-	});
-};
+  // 杩斿洖涓婁竴椤�
+  const goBack = () => {
+    uni.navigateBack();
+  };
+  // 鏌ヨ鍒楄〃
+  const getList = () => {
+    showLoadingToast("鍔犺浇涓�...");
+    const page = {
+      current: -1,
+      size: -1,
+    };
+    ledgerListPage({ ...page, customerName: customerName.value })
+      .then(res => {
+        ledgerList.value = res.records;
+        // total.value = res.total;
+        total.value = 100;
+        closeToast();
+      })
+      .catch(() => {
+        closeToast();
+      });
+  };
 
-// 鏄剧ず鍔犺浇鎻愮ず
-const showLoadingToast = (message) => {
-	uni.showLoading({
-		title: message,
-		mask: true
-	});
-};
+  // 鏄剧ず鍔犺浇鎻愮ず
+  const showLoadingToast = message => {
+    uni.showLoading({
+      title: message,
+      mask: true,
+    });
+  };
 
-// 鍏抽棴鎻愮ず
-const closeToast = () => {
-	uni.hideLoading();
-};
+  // 鍏抽棴鎻愮ず
+  const closeToast = () => {
+    uni.hideLoading();
+  };
 
-// 澶勭悊鏂板寮�绁�
-const handleAddInvoice = (item) => {
-	try {
-		// 瀛樺偍閫変腑鐨勫悎鍚屼俊鎭�
-		uni.setStorageSync('editData', JSON.stringify(item));
-		
-		// 璺宠浆鍒版柊澧炲紑绁ㄩ〉闈�
-		uni.navigateTo({
-			url: '/pages/sales/invoicingRegistration/add'
-		});
-	} catch (error) {
-		console.error('澶勭悊鏂板寮�绁ㄥけ璐�:', error);
-		uni.showToast({
-			title: '鎿嶄綔澶辫触锛岃閲嶈瘯',
-			icon: 'error'
-		});
-	}
-};
+  // 澶勭悊鏂板寮�绁�
+  const handleAddInvoice = item => {
+    try {
+      // 瀛樺偍閫変腑鐨勫悎鍚屼俊鎭�
+      uni.setStorageSync("editData", JSON.stringify(item));
 
-// 澶勭悊鏌ョ湅璇︽儏
-const handleViewDetail = (item) => {
-	try {
-		// 瀛樺偍鏁版嵁
-		uni.setStorageSync('editData', JSON.stringify(item));
-		
-		// 璺宠浆鍒拌鎯呴〉闈�
-		uni.navigateTo({
-			url: '/pages/sales/invoicingRegistration/view'
-		});
-	} catch (error) {
-		console.error('澶勭悊鏌ョ湅璇︽儏澶辫触:', error);
-		uni.showToast({
-			title: '鎿嶄綔澶辫触锛岃閲嶈瘯',
-			icon: 'error'
-		});
-	}
-};
+      // 璺宠浆鍒版柊澧炲紑绁ㄩ〉闈�
+      uni.navigateTo({
+        url: "/pages/sales/invoicingRegistration/add",
+      });
+    } catch (error) {
+      console.error("澶勭悊鏂板寮�绁ㄥけ璐�:", error);
+      uni.showToast({
+        title: "鎿嶄綔澶辫触锛岃閲嶈瘯",
+        icon: "error",
+      });
+    }
+  };
 
-onShow(() => {
-	// 椤甸潰鏄剧ず鏃跺埛鏂板垪琛�
-	getList();
-});
+  // 澶勭悊鏌ョ湅璇︽儏
+  const handleViewDetail = item => {
+    try {
+      // 瀛樺偍鏁版嵁
+      uni.setStorageSync("editData", JSON.stringify(item));
+
+      // 璺宠浆鍒拌鎯呴〉闈�
+      uni.navigateTo({
+        url: "/pages/sales/invoicingRegistration/view",
+      });
+    } catch (error) {
+      console.error("澶勭悊鏌ョ湅璇︽儏澶辫触:", error);
+      uni.showToast({
+        title: "鎿嶄綔澶辫触锛岃閲嶈瘯",
+        icon: "error",
+      });
+    }
+  };
+
+  onShow(() => {
+    // 椤甸潰鏄剧ず鏃跺埛鏂板垪琛�
+    getList();
+  });
 </script>
 
 <style scoped lang="scss">
-@import '@/styles/sales-common.scss';
+  @import "@/styles/sales-common.scss";
 
-// 寮�绁ㄧ櫥璁扮壒鏈夋牱寮�
-.nav-icon {
-	width: 24px;
-	height: 24px;
-	background: #2979ff;
-	border-radius: 4px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
+  // 寮�绁ㄧ櫥璁扮壒鏈夋牱寮�
+  .nav-icon {
+    width: 24px;
+    height: 24px;
+    background: #2979ff;
+    border-radius: 4px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
 
-.nav-text {
-	font-size: 14px;
-	color: #2979ff;
-	font-weight: 500;
-}
+  .nav-text {
+    font-size: 14px;
+    color: #2979ff;
+    font-weight: 500;
+  }
 
-.header-center {
-	flex: 1;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	position: absolute;
-	left: 0;
-	right: 0;
-	pointer-events: none;
-}
+  .header-center {
+    flex: 1;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    position: absolute;
+    left: 0;
+    right: 0;
+    pointer-events: none;
+  }
 
-.page-title {
-	font-size: 18px;
-	font-weight: 600;
-	color: #333;
-	pointer-events: auto;
-}
+  .page-title {
+    font-size: 18px;
+    font-weight: 600;
+    color: #333;
+    pointer-events: auto;
+  }
 
-.header-right {
-	display: flex;
-	align-items: center;
-}
+  .header-right {
+    display: flex;
+    align-items: center;
+  }
 
-.status-bar {
-	display: flex;
-	align-items: center;
-	gap: 4px;
-}
+  .status-bar {
+    display: flex;
+    align-items: center;
+    gap: 4px;
+  }
 
-.signal, .wifi, .battery {
-	width: 16px;
-	height: 8px;
-	background: #333;
-	border-radius: 2px;
-}
+  .signal,
+  .wifi,
+  .battery {
+    width: 16px;
+    height: 8px;
+    background: #333;
+    border-radius: 2px;
+  }
 
-.detail-value.redlight {
-	color: red;
-	font-weight: 500;
-}
+  .detail-value.redlight {
+    color: red;
+    font-weight: 500;
+  }
 
-.fab-button {
-	bottom: 30px; // 涓庡叾浠栭〉闈㈢殑 calc(30px + env(safe-area-inset-bottom)) 涓嶅悓
-}
+  .fab-button {
+    bottom: 30px; // 涓庡叾浠栭〉闈㈢殑 calc(30px + env(safe-area-inset-bottom)) 涓嶅悓
+  }
 </style>
diff --git a/src/pages/sales/receiptPaymentLedger/detail.vue b/src/pages/sales/receiptPaymentLedger/detail.vue
index 041be44..5786eea 100644
--- a/src/pages/sales/receiptPaymentLedger/detail.vue
+++ b/src/pages/sales/receiptPaymentLedger/detail.vue
@@ -1,307 +1,315 @@
 <template>
-	<view class="receipt-payment-detail">
-		<!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
-		<PageHeader title="瀹㈡埛寰�鏉ヨ鎯�" @back="goBack" />
-		
-		<!-- 缁熻淇℃伅 -->
-		<view class="summary-info" v-if="tableData.length > 0">
-			<view class="summary-item">
-				<text class="summary-label">鎬昏褰曟暟</text>
-				<text class="summary-value">{{ tableData.length }}</text>
-			</view>
-			<view class="summary-item">
-				<text class="summary-label">寮�绁ㄦ�婚噾棰�</text>
-				<text class="summary-value">{{ formatAmount(invoiceTotal) }}</text>
-			</view>
-			<view class="summary-item">
-				<text class="summary-label">鍥炴鎬婚噾棰�</text>
-				<text class="summary-value highlight">{{ formatAmount(receiptTotal) }}</text>
-			</view>
-			<view class="summary-item">
-				<text class="summary-label">搴旀敹鎬婚噾棰�</text>
-				<text class="summary-value danger">{{ formatAmount(unReceiptTotal) }}</text>
-			</view>
-		</view>
-		
-		<!-- 鍥炴璁板綍鏄庣粏鍒楄〃 -->
-		<view class="detail-list" v-if="tableData.length > 0">
-			<view v-for="(item, index) in tableData" :key="index" class="detail-item">
-				<view class="item-header">
-					<view class="item-left">
-						<view class="record-icon">
-							<up-icon name="file-text" size="16" color="#ffffff"></up-icon>
-						</view>
-						<text class="item-index">{{ index + 1 }}</text>
-					</view>
-					<view class="item-date">{{ item.happenTime }}</view>
-				</view>
-				<up-divider></up-divider>
-				<view class="item-details">
-					<view class="detail-row">
-						<text class="detail-label">寮�绁ㄩ噾棰�(鍏�)</text>
-						<text class="detail-value">{{ formatAmount(item.invoiceAmount) }}</text>
-					</view>
-					<view class="detail-row">
-						<text class="detail-label">鍥炴閲戦(鍏�)</text>
-						<text class="detail-value highlight">{{ formatAmount(item.receiptAmount) }}</text>
-					</view>
-					<view class="detail-row">
-						<text class="detail-label">搴旀敹閲戦(鍏�)</text>
-						<text class="detail-value danger">{{ formatAmount(item.unReceiptAmount) }}</text>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view v-else class="no-data">
-			<text>鏆傛棤鍥炴璁板綍</text>
-		</view>
-	</view>
+  <view class="receipt-payment-detail">
+    <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
+    <PageHeader title="瀹㈡埛寰�鏉ヨ鎯�"
+                @back="goBack" />
+    <!-- 缁熻淇℃伅 -->
+    <view class="summary-info"
+          v-if="tableData.length > 0">
+      <view class="summary-item">
+        <text class="summary-label">鎬昏褰曟暟</text>
+        <text class="summary-value">{{ tableData.length }}</text>
+      </view>
+      <view class="summary-item">
+        <text class="summary-label">寮�绁ㄦ�婚噾棰�</text>
+        <text class="summary-value">{{ formatAmount(invoiceTotal) }}</text>
+      </view>
+      <view class="summary-item">
+        <text class="summary-label">鍥炴鎬婚噾棰�</text>
+        <text class="summary-value highlight">{{ formatAmount(receiptTotal) }}</text>
+      </view>
+      <view class="summary-item">
+        <text class="summary-label">搴旀敹鎬婚噾棰�</text>
+        <text class="summary-value danger">{{ formatAmount(unReceiptTotal) }}</text>
+      </view>
+    </view>
+    <!-- 鍥炴璁板綍鏄庣粏鍒楄〃 -->
+    <view class="detail-list"
+          v-if="tableData.length > 0">
+      <view v-for="(item, index) in tableData"
+            :key="index"
+            class="detail-item">
+        <view class="item-header">
+          <view class="item-left">
+            <view class="record-icon">
+              <up-icon name="file-text"
+                       size="16"
+                       color="#ffffff"></up-icon>
+            </view>
+            <text class="item-index">{{ index + 1 }}</text>
+          </view>
+          <view class="item-date">{{ item.happenTime }}</view>
+        </view>
+        <up-divider></up-divider>
+        <view class="item-details">
+          <view class="detail-row">
+            <text class="detail-label">寮�绁ㄩ噾棰�(鍏�)</text>
+            <text class="detail-value">{{ formatAmount(item.invoiceTotal) }}</text>
+          </view>
+          <view class="detail-row">
+            <text class="detail-label">鍥炴閲戦(鍏�)</text>
+            <text class="detail-value highlight">{{ formatAmount(item.receiptPaymentAmount) }}</text>
+          </view>
+          <view class="detail-row">
+            <text class="detail-label">搴旀敹閲戦(鍏�)</text>
+            <text class="detail-value danger">{{ formatAmount(item.unReceiptPaymentAmount) }}</text>
+          </view>
+        </view>
+      </view>
+    </view>
+    <view v-else
+          class="no-data">
+      <text>鏆傛棤鍥炴璁板綍</text>
+    </view>
+  </view>
 </template>
 
 <script setup>
-import { ref, computed, onMounted } from 'vue';
-import { onShow } from '@dcloudio/uni-app';
-import { customerInteractions } from "@/api/salesManagement/receiptPayment.js";
+  import { ref, computed, onMounted } from "vue";
+  import { onShow } from "@dcloudio/uni-app";
+  import { customerInteractions } from "@/api/salesManagement/receiptPayment.js";
 
-// 瀹㈡埛淇℃伅
-const customerId = ref('');
+  // 瀹㈡埛淇℃伅
+  const customerId = ref("");
 
-// 琛ㄦ牸鏁版嵁
-const tableData = ref([]);
+  // 琛ㄦ牸鏁版嵁
+  const tableData = ref([]);
 
-const invoiceTotal = computed(() => {
-	return tableData.value.reduce((sum, item) => {
-		return sum + (parseFloat(item.invoiceAmount) || 0);
-	}, 0);
-});
+  const invoiceTotal = computed(() => {
+    return tableData.value.reduce((sum, item) => {
+      return sum + (parseFloat(item.invoiceTotal) || 0);
+    }, 0);
+  });
 
-const receiptTotal = computed(() => {
-	return tableData.value.reduce((sum, item) => {
-		return sum + (parseFloat(item.receiptAmount) || 0);
-	}, 0);
-});
+  const receiptTotal = computed(() => {
+    return tableData.value.reduce((sum, item) => {
+      return sum + (parseFloat(item.receiptPaymentAmount) || 0);
+    }, 0);
+  });
 
-const unReceiptTotal = computed(() => {
-	return tableData.value.reduce((sum, item) => {
-		return sum + (parseFloat(item.unReceiptAmount) || 0);
-	}, 0);
-});
+  const unReceiptTotal = computed(() => {
+    return tableData.value.reduce((sum, item) => {
+      return sum + (parseFloat(item.unReceiptPaymentAmount) || 0);
+    }, 0);
+  });
 
-// 杩斿洖涓婁竴椤�
-const goBack = () => {
-	uni.removeStorageSync('customerId')
-	uni.navigateBack();
-};
+  // 杩斿洖涓婁竴椤�
+  const goBack = () => {
+    uni.removeStorageSync("customerId");
+    uni.navigateBack();
+  };
 
-// 鑾峰彇椤甸潰鍙傛暟
-const getPageParams = () => {
-	// 浠庢湰鍦板瓨鍌ㄨ幏鍙栧鎴稩D
-	const storedCustomerId = uni.getStorageSync('customerId');
-	if (storedCustomerId) {
-		customerId.value = storedCustomerId;
-	}
-};
+  // 鑾峰彇椤甸潰鍙傛暟
+  const getPageParams = () => {
+    // 浠庢湰鍦板瓨鍌ㄨ幏鍙栧鎴稩D
+    const storedCustomerId = uni.getStorageSync("customerId");
+    if (storedCustomerId) {
+      customerId.value = storedCustomerId;
+    }
+  };
 
-// 鏌ヨ鍒楄〃
-const getList = () => {
-	if (!customerId.value) {
-		uni.showToast({
-			title: '瀹㈡埛淇℃伅缂哄け',
-			icon: 'error'
-		});
-		return;
-	}
-	
-	showLoadingToast('鍔犺浇涓�...')
-	const param = {
-		customerId: customerId.value,
-		current: -1,
-		size: -1
-	};
-	
-	customerInteractions(param).then((res) => {
-		tableData.value = res.data;
-		closeToast()
-	}).catch(() => {
-		closeToast()
-		uni.showToast({
-			title: '鏌ヨ澶辫触',
-			icon: 'error'
-		});
-	});
-};
+  // 鏌ヨ鍒楄〃
+  const getList = () => {
+    if (!customerId.value) {
+      uni.showToast({
+        title: "瀹㈡埛淇℃伅缂哄け",
+        icon: "error",
+      });
+      return;
+    }
 
-// 鏍煎紡鍖栭噾棰�
-const formatAmount = (amount) => {
-	return amount ? parseFloat(amount).toFixed(2) : '0.00';
-};
+    showLoadingToast("鍔犺浇涓�...");
+    const param = {
+      customerId: customerId.value,
+      current: -1,
+      size: -1,
+    };
 
-// 鏄剧ず鍔犺浇鎻愮ず
-const showLoadingToast = (message) => {
-	uni.showLoading({
-		title: message,
-		mask: true
-	});
-};
+    customerInteractions(param)
+      .then(res => {
+        tableData.value = res.data;
+        closeToast();
+      })
+      .catch(() => {
+        closeToast();
+        uni.showToast({
+          title: "鏌ヨ澶辫触",
+          icon: "error",
+        });
+      });
+  };
 
-// 鍏抽棴鎻愮ず
-const closeToast = () => {
-	uni.hideLoading();
-};
+  // 鏍煎紡鍖栭噾棰�
+  const formatAmount = amount => {
+    return amount ? parseFloat(amount).toFixed(2) : "0.00";
+  };
 
-onShow(() => {
-	// 椤甸潰鏄剧ず鏃惰幏鍙栧弬鏁板苟鍒锋柊鍒楄〃
-	getPageParams();
-	getList();
-});
+  // 鏄剧ず鍔犺浇鎻愮ず
+  const showLoadingToast = message => {
+    uni.showLoading({
+      title: message,
+      mask: true,
+    });
+  };
 
-onMounted(() => {
-	// 椤甸潰鍔犺浇鏃惰幏鍙栧弬鏁板苟鍒锋柊鍒楄〃
-	getPageParams();
-	getList();
-});
+  // 鍏抽棴鎻愮ず
+  const closeToast = () => {
+    uni.hideLoading();
+  };
+
+  onShow(() => {
+    // 椤甸潰鏄剧ず鏃惰幏鍙栧弬鏁板苟鍒锋柊鍒楄〃
+    getPageParams();
+    getList();
+  });
+
+  onMounted(() => {
+    // 椤甸潰鍔犺浇鏃惰幏鍙栧弬鏁板苟鍒锋柊鍒楄〃
+    getPageParams();
+    getList();
+  });
 </script>
 
 <style scoped lang="scss">
-.receipt-payment-detail {
-	min-height: 100vh;
-	background: #f8f9fa;
-	position: relative;
-}
+  .receipt-payment-detail {
+    min-height: 100vh;
+    background: #f8f9fa;
+    position: relative;
+  }
 
-.u-divider {
-	margin: 0 !important;
-}
+  .u-divider {
+    margin: 0 !important;
+  }
 
-.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-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-item {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-bottom: 8px;
 
-.summary-label {
-	font-size: 14px;
-	color: #666;
-}
+    &:last-child {
+      margin-bottom: 0;
+    }
+  }
 
-.summary-value {
-	font-size: 14px;
-	color: #333;
-	font-weight: 500;
-}
+  .summary-label {
+    font-size: 14px;
+    color: #666;
+  }
 
-.summary-value.highlight {
-	color: #2979ff;
-	font-weight: 600;
-}
+  .summary-value {
+    font-size: 14px;
+    color: #333;
+    font-weight: 500;
+  }
 
-.summary-value.danger {
-	color: #ff4757;
-	font-weight: 600;
-}
+  .summary-value.highlight {
+    color: #2979ff;
+    font-weight: 600;
+  }
 
-.detail-list {
-	padding: 20px;
-}
+  .summary-value.danger {
+    color: #ff4757;
+    font-weight: 600;
+  }
 
-.detail-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;
-}
+  .detail-list {
+    padding: 20px;
+  }
 
-.item-header {
-	padding: 10px 0;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-}
+  .detail-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-left {
-	display: flex;
-	align-items: center;
-	gap: 8px;
-}
+  .item-header {
+    padding: 10px 0;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+  }
 
-.record-icon {
-	width: 24px;
-	height: 24px;
-	background: #2979ff;
-	border-radius: 4px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
+  .item-left {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+  }
 
-.item-index {
-	font-size: 14px;
-	color: #333;
-	font-weight: 500;
-}
+  .record-icon {
+    width: 24px;
+    height: 24px;
+    background: #2979ff;
+    border-radius: 4px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
 
-.item-date {
-	font-size: 12px;
-	color: #666;
-}
+  .item-index {
+    font-size: 14px;
+    color: #333;
+    font-weight: 500;
+  }
 
-.item-details {
-	padding: 16px 0;
-}
+  .item-date {
+    font-size: 12px;
+    color: #666;
+  }
 
-.detail-row {
-	display: flex;
-	align-items: flex-end;
-	justify-content: space-between;
-	margin-bottom: 8px;
-	
-	&:last-child {
-		margin-bottom: 0;
-	}
-}
+  .item-details {
+    padding: 16px 0;
+  }
 
-.detail-label {
-	font-size: 12px;
-	color: #777777;
-	min-width: 60px;
-}
+  .detail-row {
+    display: flex;
+    align-items: flex-end;
+    justify-content: space-between;
+    margin-bottom: 8px;
 
-.detail-value {
-	font-size: 12px;
-	color: #000000;
-	text-align: right;
-	flex: 1;
-	margin-left: 16px;
-}
+    &:last-child {
+      margin-bottom: 0;
+    }
+  }
 
-.detail-value.highlight {
-	color: #2979ff;
-	font-weight: 500;
-}
+  .detail-label {
+    font-size: 12px;
+    color: #777777;
+    min-width: 60px;
+  }
 
-.detail-value.danger {
-	color: #ff4757;
-	font-weight: 500;
-}
+  .detail-value {
+    font-size: 12px;
+    color: #000000;
+    text-align: right;
+    flex: 1;
+    margin-left: 16px;
+  }
 
-.no-data {
-	padding: 40px 0;
-	text-align: center;
-	color: #999;
-}
+  .detail-value.highlight {
+    color: #2979ff;
+    font-weight: 500;
+  }
+
+  .detail-value.danger {
+    color: #ff4757;
+    font-weight: 500;
+  }
+
+  .no-data {
+    padding: 40px 0;
+    text-align: center;
+    color: #999;
+  }
 </style>

--
Gitblit v1.9.3