接口修改
Showing
10 changed files
with
211 additions
and
172 deletions
| ... | @@ -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; } | ... | ... |
-
Please register or sign in to post a comment