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