3dd81aba by lttnew

接口修改

1 parent 58412f8a
...@@ -747,7 +747,7 @@ export function delPayment(payIds) { ...@@ -747,7 +747,7 @@ export function delPayment(payIds) {
747 } 747 }
748 export function paymentDel(payIds) { 748 export function paymentDel(payIds) {
749 return request({ 749 return request({
750 url: `/person/paymentRange/${payIds}`, 750 url: `/person/paymentRangeNew/${payIds}`,
751 method: 'DELETE' 751 method: 'DELETE'
752 }) 752 })
753 } 753 }
...@@ -1303,7 +1303,14 @@ export function certifiedNew(params) { ...@@ -1303,7 +1303,14 @@ export function certifiedNew(params) {
1303 // 模拟回调 1303 // 模拟回调
1304 export function callBack2(orderId) { 1304 export function callBack2(orderId) {
1305 return request({ 1305 return request({
1306 url: `/system/certifiedNew/callBack2/${orderId}` 1306 url: `/system/certifiedNew/callBack2/${orderId}`,
1307 method: 'get',
1308 })
1309 }
1310 export function pcallBack2(orderId) {
1311 return request({
1312 url: `/person/paymentRangeNew/callBack2/${orderId}`,
1313 method: 'get',
1307 }) 1314 })
1308 } 1315 }
1309 // 优惠政策回显 1316 // 优惠政策回显
......
...@@ -195,10 +195,11 @@ async function confirmAddExpireExaminer() { ...@@ -195,10 +195,11 @@ async function confirmAddExpireExaminer() {
195 .search-buttons { 195 .search-buttons {
196 display: flex; 196 display: flex;
197 justify-content: space-between; 197 justify-content: space-between;
198 margin-top: 10rpx; 198 margin-top: 30rpx;
199 margin-left: 80px;
199 } 200 }
200 .search-btn, .reset-btn { 201 .search-btn, .reset-btn {
201 width: 200rpx; 202 width: 220rpx;
202 height: 70rpx; 203 height: 70rpx;
203 line-height: 70rpx; 204 line-height: 70rpx;
204 border-radius: 8rpx; 205 border-radius: 8rpx;
......
1 <template> 1 <template>
2 <view class="container"> 2 <view class="container">
3 <!-- 主内容区域 -->
4 <view class="content"> 3 <view class="content">
5 <!-- 缴费年限 + 费用卡片 -->
6 <view class="card"> 4 <view class="card">
7 <!-- 缴费年限 -->
8 <view class="yearRow"> 5 <view class="yearRow">
9 <view class="label">缴费年限</view> 6 <view class="label">缴费年限</view>
10 <view class="control"> 7 <view class="control">
...@@ -112,9 +109,9 @@ const handelPay = async () => { ...@@ -112,9 +109,9 @@ const handelPay = async () => {
112 }) 109 })
113 } else { 110 } else {
114 if (data.orderId) { 111 if (data.orderId) {
115 await callBack2(data.orderId) 112 api.callBack2(data.orderId)
116 uni.navigateTo({ 113 uni.navigateTo({
117 url: `/myCenter/goPay` 114 url: `/myCenter/sucPay`
118 }) 115 })
119 116
120 } 117 }
......
...@@ -93,18 +93,18 @@ async function handlePay() { ...@@ -93,18 +93,18 @@ async function handlePay() {
93 payLoading.value = true 93 payLoading.value = true
94 const res = await api.goPay(rangeId.value) 94 const res = await api.goPay(rangeId.value)
95 95
96 // 订单ID存在则调用回调接口
97 if (res.data?.orderId) { 96 if (res.data?.orderId) {
98 await api.callBack2(res.data.orderId) 97 api.pcallBack2(res.data.orderId)
98 uni.navigateTo({
99 url: `/myCenter/sucPay?rangeId=${rangeId.value}from=payOrder`
100 })
99 } 101 }
100 102
101 // 跳转到支付成功页 103 // 跳转到支付成功页
102 uni.navigateTo({ 104
103 url: `/pages/payOk/payOk?rangeId=${rangeId.value}`
104 })
105 } catch (err) { 105 } catch (err) {
106 console.error('支付失败:', err) 106 const errMsg = err?.data?.msg || err?.message || '支付失败,请稍后重试'
107 uni.showToast({ title: err.data.msg, icon: 'none' }) 107 uni.showToast({ title: errMsg, icon: 'none' })
108 } finally { 108 } finally {
109 payLoading.value = false 109 payLoading.value = false
110 } 110 }
......
...@@ -41,23 +41,30 @@ ...@@ -41,23 +41,30 @@
41 41
42 <!-- 确定按钮(渐变+动效) --> 42 <!-- 确定按钮(渐变+动效) -->
43 <view class="confirm-btn-area"> 43 <view class="confirm-btn-area">
44 <button class="confirm-btn" @click="handleConfirm">确定</button> 44 <button class="confirm-btn" @click="goBack">确定</button>
45 </view> 45 </view>
46 </view> 46 </view>
47 </template> 47 </template>
48 48
49 <script setup> 49 <script setup>
50 import { onLoad } from '@dcloudio/uni-app' 50 import { onLoad } from '@dcloudio/uni-app'
51 const goBack = () => {
52 const pages = getCurrentPages()
53 const currentPage = pages[pages.length - 1]
54 const { from } = currentPage.options || {}
51 55
52 // 确定按钮点击事件 56 let delta = 1
53 const handleConfirm = () => { 57
54 uni.navigateBack({ delta: 1 }) 58 if (from === 'payOrder') {
55 // 也可跳转首页:uni.redirectTo({ url: '/pages/index/index' }) 59 delta = 2 // 来自添加会员 / 订单页 → 返回 2 级
60 }else{
61 delta = 3
62 }
63
64 uni.navigateBack({ delta })
56 } 65 }
57 66
58 onLoad((option) => { 67 onLoad((option) => {
59 // 可接收订单参数动态渲染,示例:
60 // if (option.amount) { /* 赋值给金额变量 */ }
61 }) 68 })
62 </script> 69 </script>
63 70
......
...@@ -67,11 +67,7 @@ ...@@ -67,11 +67,7 @@
67 <image mode="aspectFill" v-if="baseFormData.photo2" style="height:200rpx;width:200rpx;" :src="config.baseUrl_api + baseFormData.photo2"/> 67 <image mode="aspectFill" v-if="baseFormData.photo2" style="height:200rpx;width:200rpx;" :src="config.baseUrl_api + baseFormData.photo2"/>
68 </uni-forms-item> 68 </uni-forms-item>
69 </view> 69 </view>
70
71
72
73 </uni-forms> 70 </uni-forms>
74
75 </view> 71 </view>
76 <view class="agreeline"> 72 <view class="agreeline">
77 <image @click="changeAgree(agree)" v-if="agree" 73 <image @click="changeAgree(agree)" v-if="agree"
...@@ -84,7 +80,7 @@ ...@@ -84,7 +80,7 @@
84 <view class="fixedBottom"><button class="btn-red" @click="goSubmit">确 定</button></view> 80 <view class="fixedBottom"><button class="btn-red" @click="goSubmit">确 定</button></view>
85 81
86 <!-- 会员须知 --> 82 <!-- 会员须知 -->
87 <uni-popup ref="popup" type="bottom" background-color="#fff" animation> 83 <uni-popup ref="popup" type="bottom" background-color="#fff" animation :disable-scroll="true" :mask-click="false">
88 <view class="tt">入会须知</view> 84 <view class="tt">入会须知</view>
89 <view class="popBody"> 85 <view class="popBody">
90 _{{baseFormData.name}}_欢迎您申请成为中国跆拳道协会(以下简称中国跆协)会员,请确保本次申请是经过您本人或监护人授权同意后的自愿行为,请您务必仔细阅读本入会须知。 86 _{{baseFormData.name}}_欢迎您申请成为中国跆拳道协会(以下简称中国跆协)会员,请确保本次申请是经过您本人或监护人授权同意后的自愿行为,请您务必仔细阅读本入会须知。
...@@ -106,7 +102,7 @@ ...@@ -106,7 +102,7 @@
106 </view> 102 </view>
107 </uni-popup> 103 </uni-popup>
108 104
109 <uni-popup ref="infoConfirm" type="center"> 105 <uni-popup ref="infoConfirm" type="center" :disable-scroll="true" :mask-click="false">
110 <view class="tt">确认信息</view> 106 <view class="tt">确认信息</view>
111 <view class="popBody"> 107 <view class="popBody">
112 <view> 108 <view>
...@@ -504,7 +500,6 @@ ...@@ -504,7 +500,6 @@
504 const time = new Date().valueOf() + '' 500 const time = new Date().valueOf() + ''
505 baseFormData.value.t = time + Math.floor(Math.random() * 10) 501 baseFormData.value.t = time + Math.floor(Math.random() * 10)
506 baseFormData.value.signT = aes2.AESEncrypt(baseFormData.value.idcType + time) 502 baseFormData.value.signT = aes2.AESEncrypt(baseFormData.value.idcType + time)
507 console.log(baseFormData.value)
508 api.addPersonToMyDept(baseFormData.value).then(Response => { 503 api.addPersonToMyDept(baseFormData.value).then(Response => {
509 if (Response.data == 0) { 504 if (Response.data == 0) {
510 let msg = '该成员,实名认证未通过,注册失败!' 505 let msg = '该成员,实名认证未通过,注册失败!'
...@@ -573,6 +568,7 @@ ...@@ -573,6 +568,7 @@
573 align-items: center !important; 568 align-items: center !important;
574 justify-content: flex-end !important; 569 justify-content: flex-end !important;
575 text-align: right !important; 570 text-align: right !important;
571 flex-wrap: nowrap !important;
576 } 572 }
577 573
578 /* 输入框内容右对齐 */ 574 /* 输入框内容右对齐 */
...@@ -587,18 +583,24 @@ ...@@ -587,18 +583,24 @@
587 /* 文本内容右对齐 */ 583 /* 文本内容右对齐 */
588 .uni-forms-item .uni-forms-item__content text, 584 .uni-forms-item .uni-forms-item__content text,
589 .uni-forms-item .uni-forms-item__content > text { 585 .uni-forms-item .uni-forms-item__content > text {
590 text-align: right !important; 586 display: inline-block !important;
591 width: 100%; 587 white-space: nowrap !important;
592 display: block;
593 } 588 }
594 589
595 /* 覆盖原有样式 */
596 :deep(.uni-forms-item__content) {
597 justify-content: flex-end !important;
598 }
599 </style> 590 </style>
600 591
601 <style lang="scss" scoped> 592 <style lang="scss" scoped>
593 :deep(.uni-popup__mask) {
594 overflow: hidden !important;
595 position: fixed !important;
596 top: 0;
597 left: 0;
598 right: 0;
599 bottom: 0;
600 }
601 :deep(.uni-popup) {
602 overflow: hidden !important;
603 }
602 :deep(.segmented-control) { 604 :deep(.segmented-control) {
603 height: 100rpx; 605 height: 100rpx;
604 } 606 }
...@@ -617,6 +619,8 @@ ...@@ -617,6 +619,8 @@
617 .popBody { 619 .popBody {
618 font-size: 28rpx; 620 font-size: 28rpx;
619 line-height: 1.5; 621 line-height: 1.5;
622 height: 70vh;
623 overflow-y: auto;
620 font-family: 华文仿宋; 624 font-family: 华文仿宋;
621 height: 80vh; 625 height: 80vh;
622 overflow: auto; 626 overflow: auto;
...@@ -633,6 +637,7 @@ ...@@ -633,6 +637,7 @@
633 display: flex; 637 display: flex;
634 font-size: 30rpx; 638 font-size: 30rpx;
635 639
640
636 text { 641 text {
637 color: #014A9F; 642 color: #014A9F;
638 } 643 }
...@@ -671,4 +676,13 @@ ...@@ -671,4 +676,13 @@
671 :deep(.item-text-overflow) { 676 :deep(.item-text-overflow) {
672 text-align: left; 677 text-align: left;
673 } 678 }
679 :deep(.fixUniFormItemStyle .uni-data-picker__input-box) {
680 justify-content: flex-start !important;
681 text-align: left !important;
682 }
683
684 /* 让地区选择器的文本左对齐 */
685 :deep(.fixUniFormItemStyle .uni-data-picker__text) {
686 text-align: left !important;
687 }
674 </style> 688 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template> 1 <template>
2 <!-- 根容器:弹窗时强制固定定位,彻底锁死滚动 --> 2 <!-- 根容器:弹窗时强制固定定位,彻底锁死滚动 -->
3 <view class="container" :class="{ 'lock-scroll': showModal }"> 3 <view class="container" :class="{ 'lock-scroll': showModal }">
4
5 <!-- 固定顶部:搜索栏 + 状态Tab -->
6 <view class="fixed-header-wrapper">
4 <!-- 搜索栏 --> 7 <!-- 搜索栏 -->
5 <view class="search-bar"> 8 <view class="search-bar">
6 <uni-easyinput 9 <uni-easyinput
...@@ -19,7 +22,7 @@ ...@@ -19,7 +22,7 @@
19 </view> 22 </view>
20 </view> 23 </view>
21 24
22 <!-- 1. 新增:审核状态筛选 Tab --> 25 <!-- 审核状态筛选 Tab -->
23 <view class="status-tabs"> 26 <view class="status-tabs">
24 <view class="tab-item" :class="{ active: activeTab === '' }" @click="switchTab('')">全部</view> 27 <view class="tab-item" :class="{ active: activeTab === '' }" @click="switchTab('')">全部</view>
25 <view class="tab-item" :class="{ active: activeTab === 0 }" @click="switchTab(0)">待提交</view> 28 <view class="tab-item" :class="{ active: activeTab === 0 }" @click="switchTab(0)">待提交</view>
...@@ -27,7 +30,10 @@ ...@@ -27,7 +30,10 @@
27 <view class="tab-item" :class="{ active: activeTab === 2 }" @click="switchTab(2)">审核通过</view> 30 <view class="tab-item" :class="{ active: activeTab === 2 }" @click="switchTab(2)">审核通过</view>
28 <view class="tab-item" :class="{ active: activeTab === 3 }" @click="switchTab(3)">审核拒绝</view> 31 <view class="tab-item" :class="{ active: activeTab === 3 }" @click="switchTab(3)">审核拒绝</view>
29 </view> 32 </view>
33 </view>
30 34
35 <!-- 内容区域:自动滚动(顶部留出固定栏高度) -->
36 <view class="scroll-content">
31 <!-- 会员缴费列表 --> 37 <!-- 会员缴费列表 -->
32 <view class="list-container" v-if="list.length > 0"> 38 <view class="list-container" v-if="list.length > 0">
33 <view class="list-item" v-for="(item, index) in list" :key="index" @click="goDetail(item)"> 39 <view class="list-item" v-for="(item, index) in list" :key="index" @click="goDetail(item)">
...@@ -82,6 +88,13 @@ ...@@ -82,6 +88,13 @@
82 </button> 88 </button>
83 </view> 89 </view>
84 </view> 90 </view>
91
92 <view class="load-more" v-if="hasMore">
93 <text class="load-text">加载中...</text>
94 </view>
95 <view class="load-more" v-else-if="list.length > 0">
96 <text class="load-text">没有更多数据了</text>
97 </view>
85 </view> 98 </view>
86 99
87 <!-- 空数据状态 --> 100 <!-- 空数据状态 -->
...@@ -89,7 +102,9 @@ ...@@ -89,7 +102,9 @@
89 <image mode="aspectFit" src="/static/nodata.png" class="empty-icon"></image> 102 <image mode="aspectFit" src="/static/nodata.png" class="empty-icon"></image>
90 <text class="empty-text">暂无数据</text> 103 <text class="empty-text">暂无数据</text>
91 </view> 104 </view>
105 </view>
92 106
107 <!-- 弹窗 -->
93 <view 108 <view
94 class="modal-mask" 109 class="modal-mask"
95 v-show="showModal" 110 v-show="showModal"
...@@ -117,18 +132,27 @@ ...@@ -117,18 +132,27 @@
117 import * as api from '@/common/api.js' 132 import * as api from '@/common/api.js'
118 import config from '@/config.js' 133 import config from '@/config.js'
119 import { ref, onUnmounted } from 'vue' 134 import { ref, onUnmounted } from 'vue'
120 import { onLoad, onShow, onReady } from '@dcloudio/uni-app' 135 import { onLoad, onShow, onReady, onReachBottom } from '@dcloudio/uni-app'
121 136
122 const queryParams = ref({}) 137 const queryParams = ref({})
123 const list = ref([]) 138 const list = ref([])
124 const total = ref(0) 139 const total = ref(0)
125 // 新增:状态 Tab 激活项
126 const activeTab = ref('') 140 const activeTab = ref('')
127 141
128 // ========== 1. 彻底解决弹窗默认显示 ========== 142 // ========== 分页参数 ==========
129 let showModal = ref(false) 143 const pageNum = ref(1)
144 const pageSize = ref(10)
145 const hasMore = ref(true)
146 const loading = ref(false)
147
148 // ========== 弹窗 ==========
149 const showModal = ref(false)
150 const modalTitle = ref('')
151 let confirmCallback = null
152
130 onLoad(() => { 153 onLoad(() => {
131 showModal.value = false 154 showModal.value = false
155 resetList()
132 }) 156 })
133 onReady(() => { 157 onReady(() => {
134 showModal.value = false 158 showModal.value = false
...@@ -138,15 +162,15 @@ onShow(() => { ...@@ -138,15 +162,15 @@ onShow(() => {
138 getList() 162 getList()
139 }) 163 })
140 164
141 const modalTitle = ref('') 165 // 上拉加载更多
142 let confirmCallback = null 166 onReachBottom(() => {
143 167 if (hasMore.value && !loading.value) {
144 // ========== 2. 移除所有 uni.setPageScrollEnabled 调用 ========== 168 pageNum.value++
145 onUnmounted(() => { 169 getList()
146 showModal.value = false 170 }
147 }) 171 })
148 172
149 // 新增:状态 Tab 切换 173 // 切换Tab时重置分页
150 function switchTab(status) { 174 function switchTab(status) {
151 activeTab.value = status 175 activeTab.value = status
152 if (status === '') { 176 if (status === '') {
...@@ -154,14 +178,54 @@ function switchTab(status) { ...@@ -154,14 +178,54 @@ function switchTab(status) {
154 } else { 178 } else {
155 queryParams.value.auditStatus = status 179 queryParams.value.auditStatus = status
156 } 180 }
181 resetList()
157 getList() 182 getList()
158 } 183 }
159 184
160 function getList() { 185 // 重置列表
161 api.getPaymentList(queryParams.value).then(res => { 186 function resetList() {
162 list.value = res.rows || [] 187 pageNum.value = 1
163 total.value = res.total || 0 188 list.value = []
189 hasMore.value = true
190 }
191
192 // 获取列表(支持分页)
193 async function getList() {
194 if (loading.value) return
195 loading.value = true
196
197 try {
198 const res = await api.getPaymentList({
199 ...queryParams.value,
200 pageNum: pageNum.value,
201 pageSize: pageSize.value
164 }) 202 })
203
204 const data = res.rows || []
205 total.value = res.total || 0
206
207 if (pageNum.value === 1) {
208 list.value = data
209 } else {
210 list.value = [...list.value, ...data]
211 }
212
213 if (data.length < pageSize.value) {
214 hasMore.value = false
215 } else {
216 hasMore.value = true
217 }
218 } catch (err) {
219 console.log(err)
220 } finally {
221 loading.value = false
222 }
223 }
224
225 // 搜索时重置
226 function searchFN() {
227 resetList()
228 getList()
165 } 229 }
166 230
167 function goDetail(item) { 231 function goDetail(item) {
...@@ -175,14 +239,12 @@ function handleUpdate(item) { ...@@ -175,14 +239,12 @@ function handleUpdate(item) {
175 uni.navigateTo({ url: path }) 239 uni.navigateTo({ url: path })
176 } 240 }
177 241
178 // 打开弹窗:只控制弹窗显示,滚动锁定交给 CSS
179 function openModal(title, callback) { 242 function openModal(title, callback) {
180 modalTitle.value = title 243 modalTitle.value = title
181 showModal.value = true 244 showModal.value = true
182 confirmCallback = callback 245 confirmCallback = callback
183 } 246 }
184 247
185 // 关闭弹窗:只控制弹窗隐藏,滚动恢复交给 CSS
186 function closeModal() { 248 function closeModal() {
187 showModal.value = false 249 showModal.value = false
188 confirmCallback = null 250 confirmCallback = null
...@@ -193,7 +255,6 @@ function confirmModal() { ...@@ -193,7 +255,6 @@ function confirmModal() {
193 closeModal() 255 closeModal()
194 } 256 }
195 257
196 // 删除
197 function handleDel(row) { 258 function handleDel(row) {
198 showModal.value = false 259 showModal.value = false
199 openModal(`是否确认删除缴费编号为"${row.wfCode}"的数据项?`, () => { 260 openModal(`是否确认删除缴费编号为"${row.wfCode}"的数据项?`, () => {
...@@ -201,12 +262,12 @@ function handleDel(row) { ...@@ -201,12 +262,12 @@ function handleDel(row) {
201 api.paymentDel(row.rangId).then(() => { 262 api.paymentDel(row.rangId).then(() => {
202 uni.hideLoading() 263 uni.hideLoading()
203 uni.showToast({ title: '删除成功' }) 264 uni.showToast({ title: '删除成功' })
265 resetList()
204 getList() 266 getList()
205 }) 267 })
206 }) 268 })
207 } 269 }
208 270
209 // 提交审核
210 function commitFN(row) { 271 function commitFN(row) {
211 uni.navigateTo({ 272 uni.navigateTo({
212 url: `/myCenter/payOrder?rangeId=${row.rangId}` 273 url: `/myCenter/payOrder?rangeId=${row.rangId}`
...@@ -234,25 +295,26 @@ function getStatusText(status) { ...@@ -234,25 +295,26 @@ function getStatusText(status) {
234 295
235 function getStatusClass(status) { 296 function getStatusClass(status) {
236 const classMap = { 297 const classMap = {
237 0: 'status-pending', 298 0: 'status-processing',
238 1: 'status-processing', 299 1: 'status-pending',
239 2: 'status-success', 300 2: 'status-success',
240 3: 'status-rejected', 301 3: 'status-rejected',
241 9: 'status-withdrawn' 302 9: 'status-withdrawn'
242 } 303 }
243 return classMap[status] || 'status-default' 304 return classMap[status] || 'status-default'
244 } 305 }
306
307 onUnmounted(() => {
308 showModal.value = false
309 })
245 </script> 310 </script>
246 311
247 <style lang="scss" scoped> 312 <style lang="scss" scoped>
248 /* 核心:锁死滚动的样式(优先级最高) */
249 .container { 313 .container {
250 min-height: 100vh; 314 min-height: 100vh;
251 background-color: #f8f9fa; 315 background-color: #f8f9fa;
252 padding-bottom: 60rpx; 316 position: relative;
253 transition: all 0.2s ease;
254 } 317 }
255 /* 弹窗时强制固定定位,彻底禁止滚动(纯 CSS 实现,不依赖 API) */
256 .container.lock-scroll { 318 .container.lock-scroll {
257 position: fixed; 319 position: fixed;
258 top: 0; 320 top: 0;
...@@ -262,14 +324,32 @@ function getStatusClass(status) { ...@@ -262,14 +324,32 @@ function getStatusClass(status) {
262 overflow: hidden !important; 324 overflow: hidden !important;
263 } 325 }
264 326
327 /* ============= 核心:固定顶部 ============= */
328 .fixed-header-wrapper {
329 position: fixed;
330 top: 0;
331 left: 0;
332 right: 0;
333 background: #fff;
334 z-index: 10;
335 box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.04);
336 }
337
338 /* 内容区域:顶部留出固定栏高度 */
339 .scroll-content {
340 padding-top: 190rpx;
341 padding-bottom: 60rpx;
342 min-height: 100vh;
343 box-sizing: border-box;
344 }
345
265 /* 搜索栏 */ 346 /* 搜索栏 */
266 .search-bar { 347 .search-bar {
267 display: flex; 348 display: flex;
268 align-items: center; 349 align-items: center;
269 padding: 20rpx 30rpx; 350 padding: 20rpx 30rpx;
270 background-color: #ffffff; 351 background-color: #ffffff;
271 margin-bottom: 24rpx; 352 margin-bottom: 0;
272 box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.04);
273 353
274 .search-input { 354 .search-input {
275 flex: 1; 355 flex: 1;
...@@ -280,18 +360,11 @@ function getStatusClass(status) { ...@@ -280,18 +360,11 @@ function getStatusClass(status) {
280 background-color: #f5f7fa; 360 background-color: #f5f7fa;
281 height: 76rpx; 361 height: 76rpx;
282 padding: 0 24rpx; 362 padding: 0 24rpx;
283 transition: all 0.3s ease;
284 } 363 }
285 364
286 :deep(.uni-easyinput__content-input) { 365 :deep(.uni-easyinput__content-input) {
287 font-size: 28rpx; 366 font-size: 28rpx;
288 color: #333; 367 color: #333;
289 letter-spacing: 0.5rpx;
290 }
291
292 :deep(.uni-easyinput__content):focus-within {
293 background-color: #f0f2f5;
294 box-shadow: 0 0 0 2rpx rgba(173, 24, 31, 0.1);
295 } 368 }
296 } 369 }
297 370
...@@ -303,12 +376,6 @@ function getStatusClass(status) { ...@@ -303,12 +376,6 @@ function getStatusClass(status) {
303 border-radius: 40rpx; 376 border-radius: 40rpx;
304 font-size: 28rpx; 377 font-size: 28rpx;
305 color: #ffffff; 378 color: #ffffff;
306 box-shadow: 0 4rpx 12rpx rgba(173, 24, 31, 0.2);
307 transition: all 0.2s ease;
308
309 &:active {
310 transform: scale(0.96);
311 box-shadow: 0 2rpx 8rpx rgba(173, 24, 31, 0.15);
312 } 379 }
313 380
314 .add-icon { 381 .add-icon {
...@@ -316,15 +383,13 @@ function getStatusClass(status) { ...@@ -316,15 +383,13 @@ function getStatusClass(status) {
316 margin-right: 10rpx; 383 margin-right: 10rpx;
317 font-weight: bold; 384 font-weight: bold;
318 } 385 }
319 }
320 } 386 }
321 387
322 /* 1. 新增:审核状态筛选 Tab 样式 */ 388 /* 状态Tab */
323 .status-tabs { 389 .status-tabs {
324 display: flex; 390 display: flex;
325 background: #fff; 391 background: #fff;
326 padding: 0 30rpx; 392 padding: 0 30rpx;
327 margin-bottom: 20rpx;
328 393
329 .tab-item { 394 .tab-item {
330 flex: 1; 395 flex: 1;
...@@ -354,24 +419,16 @@ function getStatusClass(status) { ...@@ -354,24 +419,16 @@ function getStatusClass(status) {
354 } 419 }
355 } 420 }
356 421
357 /* 列表容器 */ 422 /* 列表 */
358 .list-container { 423 .list-container {
359 padding: 0 30rpx; 424 padding: 0 30rpx;
360 } 425 }
361
362 /* 列表项 */
363 .list-item { 426 .list-item {
364 background: #ffffff; 427 background: #ffffff;
365 border-radius: 24rpx; 428 border-radius: 24rpx;
366 padding: 36rpx 32rpx; 429 padding: 36rpx 32rpx;
367 margin-bottom: 24rpx; 430 margin-bottom: 24rpx;
368 box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.05); 431 box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.05);
369 transition: all 0.2s ease;
370
371 &:active {
372 transform: translateY(2rpx);
373 box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
374 }
375 } 432 }
376 433
377 .item-header { 434 .item-header {
...@@ -392,7 +449,6 @@ function getStatusClass(status) { ...@@ -392,7 +449,6 @@ function getStatusClass(status) {
392 font-weight:600; 449 font-weight:600;
393 color:#1a1a1a; 450 color:#1a1a1a;
394 margin-right:16rpx; 451 margin-right:16rpx;
395 letter-spacing: 0.8rpx;
396 } 452 }
397 453
398 .wf-code { 454 .wf-code {
...@@ -401,19 +457,15 @@ function getStatusClass(status) { ...@@ -401,19 +457,15 @@ function getStatusClass(status) {
401 background:#f0f8fb; 457 background:#f0f8fb;
402 padding:6rpx 12rpx; 458 padding:6rpx 12rpx;
403 border-radius: 16rpx; 459 border-radius: 16rpx;
404 margin-top: 4rpx;
405 } 460 }
406 461
407 .status-badge { 462 .status-badge {
408 font-size:24rpx; 463 font-size:24rpx;
409 padding:8rpx 16rpx; 464 padding:8rpx 16rpx;
410 border-radius: 20rpx; 465 border-radius: 20rpx;
411 font-weight: 500;
412 letter-spacing: 0.5rpx;
413 } 466 }
414 } 467 }
415 468
416 /* 状态徽章 */
417 .status-pending { background:#f5f5f5; color:#888; } 469 .status-pending { background:#f5f5f5; color:#888; }
418 .status-processing { background:#e8e8ff; color:#1890ff; } 470 .status-processing { background:#e8e8ff; color:#1890ff; }
419 .status-success { background:#f0fff4; color:#52c41a; } 471 .status-success { background:#f0fff4; color:#52c41a; }
...@@ -421,7 +473,6 @@ function getStatusClass(status) { ...@@ -421,7 +473,6 @@ function getStatusClass(status) {
421 .status-withdrawn { background:#fffbe6; color:#faad14; } 473 .status-withdrawn { background:#fffbe6; color:#faad14; }
422 .status-default { background:#f5f5f5; color:#999; } 474 .status-default { background:#f5f5f5; color:#999; }
423 475
424 /* 数据统计 */
425 .stats-row { 476 .stats-row {
426 display: flex; 477 display: flex;
427 justify-content: space-between; 478 justify-content: space-between;
...@@ -437,9 +488,7 @@ function getStatusClass(status) { ...@@ -437,9 +488,7 @@ function getStatusClass(status) {
437 font-size:24rpx; 488 font-size:24rpx;
438 color:#999; 489 color:#999;
439 margin-bottom:10rpx; 490 margin-bottom:10rpx;
440 letter-spacing: 0.5rpx;
441 } 491 }
442
443 .stat-value { 492 .stat-value {
444 font-size:32rpx; 493 font-size:32rpx;
445 font-weight:700; 494 font-weight:700;
...@@ -448,7 +497,6 @@ function getStatusClass(status) { ...@@ -448,7 +497,6 @@ function getStatusClass(status) {
448 } 497 }
449 } 498 }
450 499
451 /* 提交时间 */
452 .submit-time { 500 .submit-time {
453 display: flex; 501 display: flex;
454 align-items: center; 502 align-items: center;
...@@ -458,11 +506,9 @@ function getStatusClass(status) { ...@@ -458,11 +506,9 @@ function getStatusClass(status) {
458 font-size:24rpx; 506 font-size:24rpx;
459 color:#666; 507 color:#666;
460 margin-left:20rpx; 508 margin-left:20rpx;
461 letter-spacing: 0.3rpx;
462 } 509 }
463 } 510 }
464 511
465 /* 操作按钮 */
466 .action-buttons { 512 .action-buttons {
467 display: flex; 513 display: flex;
468 514
...@@ -475,25 +521,11 @@ function getStatusClass(status) { ...@@ -475,25 +521,11 @@ function getStatusClass(status) {
475 margin:0 8rpx; 521 margin:0 8rpx;
476 border:none; 522 border:none;
477 font-weight: 500; 523 font-weight: 500;
478 letter-spacing: 0.8rpx;
479 transition: all 0.2s ease;
480 524
481
482 /* 2. 强化:按钮禁用样式(一眼能看出不可用) */
483 &:disabled { 525 &:disabled {
484 background: #f0f0f0 !important; 526 background: #f0f0f0 !important;
485 color: #ccc !important; 527 color: #ccc !important;
486 cursor: not-allowed;
487 transform: none !important;
488 opacity: 1 !important;
489 }
490 } 528 }
491 .action-btn[disabled] {
492 background: #f0f0f0 !important;
493 color: #cccccc !important;
494 opacity: 1 !important;
495 cursor: not-allowed;
496 transform: none !important;
497 } 529 }
498 530
499 .delete-btn { 531 .delete-btn {
...@@ -510,12 +542,12 @@ function getStatusClass(status) { ...@@ -510,12 +542,12 @@ function getStatusClass(status) {
510 } 542 }
511 } 543 }
512 544
513 /* 空数据 */ 545 /* 空状态 */
514 .empty-state { 546 .empty-state {
515 display: flex; 547 display: flex;
516 flex-direction: column; 548 flex-direction: column;
517 align-items: center; 549 align-items: center;
518 padding:160rpx 40rpx 0; 550 padding:100rpx 40rpx 0;
519 551
520 .empty-icon { 552 .empty-icon {
521 width:240rpx; 553 width:240rpx;
...@@ -523,15 +555,23 @@ function getStatusClass(status) { ...@@ -523,15 +555,23 @@ function getStatusClass(status) {
523 margin-bottom:40rpx; 555 margin-bottom:40rpx;
524 opacity:0.5; 556 opacity:0.5;
525 } 557 }
526
527 .empty-text { 558 .empty-text {
528 font-size:30rpx; 559 font-size:30rpx;
529 color:#999; 560 color:#999;
530 letter-spacing: 1rpx;
531 } 561 }
532 } 562 }
533 563
534 /* 弹窗:最高优先级样式 */ 564 /* 加载更多 */
565 .load-more {
566 padding: 30rpx 0;
567 text-align: center;
568 .load-text {
569 font-size: 26rpx;
570 color: #999;
571 }
572 }
573
574 /* 弹窗 */
535 .modal-mask { 575 .modal-mask {
536 position: fixed; 576 position: fixed;
537 top: 0; 577 top: 0;
...@@ -542,78 +582,51 @@ function getStatusClass(status) { ...@@ -542,78 +582,51 @@ function getStatusClass(status) {
542 display: flex; 582 display: flex;
543 align-items: center; 583 align-items: center;
544 justify-content: center; 584 justify-content: center;
545 z-index: 99999 !important; /* 最高层级 */ 585 z-index: 99999 !important;
546 backdrop-filter: blur(4rpx);
547 touch-action: none !important; /* 禁止触摸 */
548 pointer-events: auto !important; /* 强制可点击 */
549 } 586 }
550 587
551 .modal-box { 588 .modal-box {
552 width: 85%; 589 width: 85%;
553 max-width: 580rpx; 590 max-width: 580rpx;
554 background: #ffffff; 591 background: #fff;
555 border-radius: 32rpx; 592 border-radius: 32rpx;
556 padding: 60rpx 40rpx 50rpx; 593 padding: 60rpx 40rpx 50rpx;
557 box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.15);
558 touch-action: none !important;
559 pointer-events: auto !important;
560 } 594 }
561 .modal-con { 595 .modal-title {
562 text-align: center; 596 text-align: center;
563 font-size: 32rpx; 597 font-size: 32rpx;
564 // font-weight: 600;
565 color: #333; 598 color: #333;
566 margin-bottom: 50rpx; 599 margin-bottom: 20rpx;
567 letter-spacing: 1rpx;
568 line-height: 1.4;
569 } 600 }
570 .modal-title { 601 .modal-con {
571 text-align: center; 602 text-align: center;
572 font-size: 32rpx; 603 font-size: 32rpx;
573 // font-weight: 600;
574 color: #333; 604 color: #333;
575 margin-bottom: 20rpx; 605 margin-bottom: 50rpx;
576 letter-spacing: 1rpx;
577 line-height: 1.4;
578 } 606 }
579
580 .modal-buttons { 607 .modal-buttons {
581 display: flex; 608 display: flex;
582 gap: 24rpx; 609 gap: 24rpx;
583 } 610 }
584
585 .btn-cancel { 611 .btn-cancel {
586 flex: 1; 612 flex:1;
587 height: 92rpx; 613 height:92rpx;
588 line-height: 92rpx; 614 line-height:92rpx;
589 text-align: center; 615 text-align:center;
590 font-size: 32rpx; 616 font-size:32rpx;
591 color: #666; 617 color:#666;
592 background: #f5f7fa; 618 background:#f5f7fa;
593 border-radius: 46rpx; 619 border-radius:46rpx;
594 transition: all 0.2s ease;
595
596 &:active {
597 background: #e8e8e8;
598 }
599 } 620 }
600
601 .btn-confirm { 621 .btn-confirm {
602 flex: 1; 622 flex:1;
603 height: 92rpx; 623 height:92rpx;
604 line-height: 92rpx; 624 line-height:92rpx;
605 text-align: center; 625 text-align:center;
606 font-size: 32rpx; 626 font-size:32rpx;
607 color: #fff; 627 color:#fff;
608 background: linear-gradient(135deg, #AD181F 0%, #c92028 100%); 628 background:linear-gradient(135deg, #AD181F 0%, #c92028 100%);
609 border-radius: 46rpx; 629 border-radius:46rpx;
610 font-weight: 600; 630 font-weight:600;
611 box-shadow: 0 6rpx 16rpx rgba(173, 24, 31, 0.25);
612 transition: all 0.2s ease;
613
614 &:active {
615 transform: scale(0.96);
616 box-shadow: 0 4rpx 12rpx rgba(173, 24, 31, 0.2);
617 }
618 } 631 }
619 </style> 632 </style>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -266,7 +266,7 @@ ...@@ -266,7 +266,7 @@
266 } 266 }
267 267
268 .vipData { 268 .vipData {
269 padding: 10rpx 20rpx; 269 padding: 10rpx 20rpx 5rpx;
270 font-size: 28rpx; 270 font-size: 28rpx;
271 color: #666; 271 color: #666;
272 view { margin-bottom: 10rpx; } 272 view { margin-bottom: 10rpx; }
......
...@@ -200,7 +200,7 @@ ...@@ -200,7 +200,7 @@
200 .icon { 200 .icon {
201 width: 40rpx; 201 width: 40rpx;
202 height: 40rpx; 202 height: 40rpx;
203 margin-right: 20rpx; 203 margin:0 20rpx;
204 } 204 }
205 205
206 .photobox { 206 .photobox {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!