From a1a73e25593d2914ea58cd84ec2540bc56bd6934 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期一, 26 一月 2026 17:43:25 +0800
Subject: [PATCH] 来票台账接口更改

---
 src/pages/sales/invoiceLedger/index.vue | 1161 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 587 insertions(+), 574 deletions(-)

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

--
Gitblit v1.9.3