677c988b by lttnew

样式优化

1 parent cccdbc00
...@@ -20,7 +20,7 @@ page { ...@@ -20,7 +20,7 @@ page {
20 .mt20{margin-top: 20px !important;} 20 .mt20{margin-top: 20px !important;}
21 .must{color: #AD181F;font-size: 24rpx;} 21 .must{color: #AD181F;font-size: 24rpx;}
22 .vipData .w50{width: 45%;} 22 .vipData .w50{width: 45%;}
23 .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;} 23 .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;margin-top: 16rpx;}
24 .flex{display: flex;} 24 .flex{display: flex;}
25 .flexbox{display: flex;} 25 .flexbox{display: flex;}
26 .mt30{margin-top: 30rpx;} 26 .mt30{margin-top: 30rpx;}
...@@ -148,7 +148,7 @@ page { ...@@ -148,7 +148,7 @@ page {
148 148
149 } 149 }
150 .name{margin: 30rpx 0 20rpx;color: #0A1629;font-size: 30rpx;} 150 .name{margin: 30rpx 0 20rpx;color: #0A1629;font-size: 30rpx;}
151 .flexbox{justify-content: space-between;padding:10rpx; 151 .flexbox{justify-content: space-between;padding:15rpx 30rpx;
152 background-color: rgba(244, 249, 253, 1);border-radius: 4px; 152 background-color: rgba(244, 249, 253, 1);border-radius: 4px;
153 font-size: 28rpx;color: #91929E;box-sizing: border-box; 153 font-size: 28rpx;color: #91929E;box-sizing: border-box;
154 view{font-size: 26rpx; 154 view{font-size: 26rpx;
...@@ -209,11 +209,55 @@ page { ...@@ -209,11 +209,55 @@ page {
209 } 209 }
210 } 210 }
211 } 211 }
212 .text-gray{color: #919191;} 212 .text-gray{color: #919191; }
213 .text-primary{color: #1561CB;} 213 .text-primary{color: #1561CB;}
214 .text-success{color: #32B16C;} 214 .text-success{color: #32B16C;}
215 .text-danger{color: #d51515;} 215 .text-danger{color: #d51515;}
216 .text-warning{color: #e6a23c;} 216 .text-warning{color: #e6a23c;}
217 .text-gray-bg {
218 color: #919191;
219 background: linear-gradient(135deg, #f5f5f5, #eeeeee);
220 padding: 2rpx 15rpx;
221 font-size: 22rpx;
222 border-radius: 20rpx;
223 border: 1rpx solid rgba(145, 145, 145, 0.25);
224 }
225 .text-success-bg {
226 background: linear-gradient(135deg, #e6f7ef, #d4f5e2);
227 color: #1db024;
228 font-size: 22rpx;
229 padding: 2rpx 10rpx;
230 border-radius: 20rpx;
231 border: 1rpx solid rgba(82, 196, 26, 0.3);
232 }
233
234 .text-danger-bg {
235 padding: 2rpx 15rpx;
236 border-radius: 20rpx;
237 background: linear-gradient(135deg, #fff1f0, #ffe5e5);
238 color: #e8341d;
239 font-size: 22rpx;
240
241 border: 1rpx solid rgba(232, 52, 29, 0.3);
242 }
243
244 .text-primary-bg {
245 background: linear-gradient(135deg, #e6f3ff, #d4e9ff);
246 color: #1890ff;
247 font-size: 22rpx;
248 padding: 2rpx 15rpx;
249 border-radius: 20rpx;
250 border: 1rpx solid rgba(24, 144, 255, 0.3);
251 }
252
253 .text-warning-bg{
254 background: linear-gradient(135deg, #fff7e6, #fff1cc);
255 color: #faad14;
256 font-size: 22rpx;
257 padding: 2rpx 15rpx;
258 border-radius: 20rpx;
259 border: 1rpx solid rgba(250, 173, 20, 0.3);
260 }
217 .h3-padding{ 261 .h3-padding{
218 padding:50rpx 30rpx 0;font-size: 36rpx;box-sizing: border-box; 262 padding:50rpx 30rpx 0;font-size: 36rpx;box-sizing: border-box;
219 font-weight: 500;color: #0A1629; 263 font-weight: 500;color: #0A1629;
...@@ -295,10 +339,10 @@ page { ...@@ -295,10 +339,10 @@ page {
295 font-size: 28rpx;color: #91929E; 339 font-size: 28rpx;color: #91929E;
296 view{font-size: 26rpx; 340 view{font-size: 26rpx;
297 text{color: #0A1629;font-size: 28rpx;display: block;} 341 text{color: #0A1629;font-size: 28rpx;display: block;}
298 .text-primary{color: #1561CB;} 342 .text-primary{color: #1561CB;background: linear-gradient(135deg, #e6f3ff, #d4e9ff);}
299 .text-success{color: #13B5B1;} 343 .text-success{color: #32B16C;background: linear-gradient(135deg, #e6f7ef, #d4f5e2);}
300 .text-danger{color: #d51515;} 344 .text-danger{color: #d51515;background: linear-gradient(135deg, #fff1f0, #ffe5e5);}
301 .text-warning{color: #e6a23c;} 345 .text-warning{color: #e6a23c;background: linear-gradient(135deg, #fff7e6, #fff1cc);}
302 } 346 }
303 } 347 }
304 348
......
1 // dev 1 // dev
2 const baseUrl_api = 'http://192.168.1.137:8787' 2 // const baseUrl_api = 'http://192.168.1.137:8787'
3 // const baseUrl_api = 'http://tk001.wxjylt.com/stage-api' 3 const baseUrl_api = 'http://tk001.wxjylt.com/stage-api'
4 const loginImage_api = 'http://tk001.wxjylt.com/stage-api' 4 const loginImage_api = 'http://tk001.wxjylt.com/stage-api'
5 const payUrl = 'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do' 5 const payUrl = 'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do'
6 6
......
...@@ -12,9 +12,9 @@ ...@@ -12,9 +12,9 @@
12 12
13 <view v-for="(item,index) in list" :key="index" class="appItem"> 13 <view v-for="(item,index) in list" :key="index" class="appItem">
14 <view class="status" @click="goDetail(item)"> 14 <view class="status" @click="goDetail(item)">
15 <text v-if="item.auditStatus == 1" class="text-primary">审核中</text> 15 <text v-if="item.auditStatus == 1" class="text-primary-bg">审核中</text>
16 <text v-if="item.auditStatus == 2" class="text-success">审核通过</text> 16 <text v-if="item.auditStatus == 2" class="text-success-bg">审核通过</text>
17 <text v-if="item.auditStatus == 3" class="text-danger">审核拒绝</text> 17 <text v-if="item.auditStatus == 3" class="text-danger-bg">审核拒绝</text>
18 </view> 18 </view>
19 <view class="date"> 19 <view class="date">
20 <uni-icons color="#AD181F" size="16" type="calendar-filled"></uni-icons> 20 <uni-icons color="#AD181F" size="16" type="calendar-filled"></uni-icons>
......
...@@ -11,19 +11,18 @@ ...@@ -11,19 +11,18 @@
11 <view class="appList"> 11 <view class="appList">
12 <view class="appItem" v-for="item in infoList"> 12 <view class="appItem" v-for="item in infoList">
13 <view class="status" :class="{ 13 <view class="status" :class="{
14 'text-primary':item.status=='0', 14 'text-primary-bg':item.status=='0',
15 'text-success':item.status=='1', 15 'text-success-bg':item.status=='1',
16 'text-danger':item.status=='2', 16 'text-danger-bg':item.status=='2',
17 'text-warning':item.status=='3' 17 'text-warning-bg':item.status=='3'
18 }" @click="goDetail(item)"> 18 }" @click="goDetail(item)">
19 {{ item.statusStr }} 19 {{ item.statusStr }}
20 </view> 20 </view>
21 21
22 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 22 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
23 <view class="text-primary">{{item.flowCode}}</view> 23 <view class="text-primary">{{item.flowCode}}</view>
24 <view class="name mt0" @click="goDetail(item)">{{item.mergeName}}</view> 24 <view class="name mt10" @click="goDetail(item)">{{item.mergeName}}</view>
25 <view class="pp esp">上报单位:{{item.memName}}</view> 25 <view class="flexbox" @click="goDetail(item)">
26 <view class="flexbox" @click="goDetail(item)">
27 <view> 26 <view>
28 考试人数 27 考试人数
29 <view>{{item.totalNum}}</view> 28 <view>{{item.totalNum}}</view>
...@@ -44,6 +43,8 @@ ...@@ -44,6 +43,8 @@
44 <view>¥{{item.totalAmount}}</view> 43 <view>¥{{item.totalAmount}}</view>
45 </view> 44 </view>
46 </view> 45 </view>
46 <view class="pp esp">上报单位:{{item.memName}}</view>
47
47 <view class="func" v-if="item.status=='0'"> 48 <view class="func" v-if="item.status=='0'">
48 <button @click="audit(item,'2')">拒绝</button> 49 <button @click="audit(item,'2')">拒绝</button>
49 <button @click="audit(item,'1')">同意</button> 50 <button @click="audit(item,'1')">同意</button>
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
8 <view class="appItem" v-for="(item,index) in infoList" :key="index"> 8 <view class="appItem" v-for="(item,index) in infoList" :key="index">
9 <view class="status" @click="goDetail(item)"> 9 <view class="status" @click="goDetail(item)">
10 <text :class="{ 10 <text :class="{
11 'text-warning':item.certStatus=='0', 11 'text-warning-bg':item.certStatus=='0',
12 'text-primary':item.certStatus=='1', 12 'text-primary-bg':item.certStatus=='1',
13 'text-success':item.certStatus=='2' 13 'text-success-bg':item.certStatus=='2'
14 }">{{ item.certStatusStr }}</text> 14 }">{{ item.certStatusStr }}</text>
15 </view> 15 </view>
16 16
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
19 {{item.submitTimeStr}} 提交 19 {{item.submitTimeStr}} 提交
20 </view> 20 </view>
21 <view class="text-primary" v-if="item.payCode" @click="goDetail(item)">{{item.payCode}}</view> 21 <view class="text-primary" v-if="item.payCode" @click="goDetail(item)">{{item.payCode}}</view>
22 <view class="name mt0 w100" @click="goDetail(item)"><text class="dot"></text>{{item.name}}</view> 22 <view class="name mt10 w100" @click="goDetail(item)"><text class="dot"></text>{{item.name}}</view>
23 <view class="pp esp" v-if="item.certTimeStr">证书发送时间:{{item.certTimeStr}}</view>
24 <view class="flexbox" @click="goDetail(item)"> 23 <view class="flexbox" @click="goDetail(item)">
25 <view> 24 <view>
26 申请单位 25 申请单位
...@@ -32,6 +31,8 @@ ...@@ -32,6 +31,8 @@
32 </view> 31 </view>
33 32
34 </view> 33 </view>
34 <view class="pp esp" v-if="item.certTimeStr">证书发送时间:{{item.certTimeStr}}</view>
35
35 <!-- v-if="item.certStatus != '2'" --> 36 <!-- v-if="item.certStatus != '2'" -->
36 <view class="func"> 37 <view class="func">
37 <button @click="send(item)">更新证书</button> 38 <button @click="send(item)">更新证书</button>
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
6 v-for="(tab, index) in tabs" 6 v-for="(tab, index) in tabs"
7 :key="index" 7 :key="index"
8 class="tab-item" 8 class="tab-item"
9 :class="{ active: currentTab === index }" 9 :class="{ active: currentTab === tab.type }"
10 @click="switchTab(index)" 10 @click="switchTab(tab.type)"
11 > 11 >
12 {{ tab.name }} 12 {{ tab.name }}
13 </view> 13 </view>
...@@ -29,16 +29,17 @@ ...@@ -29,16 +29,17 @@
29 v-for="(item, index) in list" 29 v-for="(item, index) in list"
30 :key="index" 30 :key="index"
31 class="order-card" 31 class="order-card"
32 @click="goToDetail(item)"
32 > 33 >
33 <!-- 订单头部:日期 + 状态 --> 34 <!-- 订单头部:日期 + 状态 -->
34 <view class="card-header"> 35 <view class="card-header">
35 <view class="date"> 36 <view class="date">
36 <image :src="config.baseUrl_api + '/fs/static/calendar@2x.png'" mode="widthFix" style="width:30rpx;height:30rpx;"/> 37 <!-- <image :src="config.baseUrl_api + '/fs/static/calendar@2x.png'" mode="widthFix" style="width:30rpx;height:30rpx;"/> -->
37 <!-- --> 38 <!-- -->
38 <text class="value code-text" @click="goToDetail(item)">{{ item.wfCode || '——' }}</text> 39 <text class="value text-primary" >{{ item.wfCode || '——' }}</text>
39 </view> 40 </view>
40 <view class="status-tags"> 41 <view class="status-tags">
41 <view 42 <!-- <view
42 class="status-tag" 43 class="status-tag"
43 :class="{ 44 :class="{
44 success: item.payStatus == 1, 45 success: item.payStatus == 1,
...@@ -47,11 +48,12 @@ ...@@ -47,11 +48,12 @@
47 }" 48 }"
48 > 49 >
49 {{ getStatusText(item.payStatus) }} 50 {{ getStatusText(item.payStatus) }}
50 </view> 51 </view> -->
51 <view 52 <view
52 class="status-tag ml-10" 53 class="status-tag ml-10"
53 :class="{ 54 :class="{
54 'status-pending': item.auditStatus == 0 || item.auditStatus == 1, 55 'status-wait': item.auditStatus == 0,
56 'status-pending': item.auditStatus == 1,
55 'status-success': item.auditStatus == 2, 57 'status-success': item.auditStatus == 2,
56 'status-danger': item.auditStatus == 3 58 'status-danger': item.auditStatus == 3
57 }" 59 }"
...@@ -74,17 +76,17 @@ ...@@ -74,17 +76,17 @@
74 <!-- 核心:前2tab仅展示缴费年限,后2tab仅展示人数合计 --> 76 <!-- 核心:前2tab仅展示缴费年限,后2tab仅展示人数合计 -->
75 <view class="info-section flex f-j-s" v-if="item.content"> 77 <view class="info-section flex f-j-s" v-if="item.content">
76 <!-- 个人/单位会员(仅缴费年限) --> 78 <!-- 个人/单位会员(仅缴费年限) -->
77 <view v-if="currentTab === 0 || currentTab === 1" class="single-info"> 79 <view v-if="currentTab === '0' || currentTab === '1'" class="single-info">
78 <view class="label">缴费年限:</view> 80 <view class="label">缴费年限:</view>
79 <view class="value">{{ item.content.yearCount || 0 }}</view> 81 <view class="value">{{ item.content.yearCount || 0 }}</view>
80 </view> 82 </view>
81 <view class="line" v-if="currentTab === 0 || currentTab === 1"></view> 83 <view class="line" v-if="currentTab === '0' || currentTab === '1'"></view>
82 <!-- 级位/段位考试(仅人数合计) --> 84 <!-- 级位/段位考试(仅人数合计) -->
83 <view v-if="currentTab === 2 || currentTab === 3" class="single-info"> 85 <view v-if="currentTab === '2' || currentTab === '3' || currentTab === '4'" class="single-info">
84 <view class="label">人数合计</view> 86 <view class="label">人数合计</view>
85 <view class="value">{{ item.content.allPersonCount || 0 }}</view> 87 <view class="value">{{ item.content.allPersonCount || 0 }}</view>
86 </view> 88 </view>
87 <view class="line" v-if="currentTab === 2 || currentTab === 3"></view> 89 <view class="line" v-if="currentTab === '2' || currentTab === '3' || currentTab === '4'"></view>
88 <view class="single-info"> 90 <view class="single-info">
89 <view class="label">订单状态</view> 91 <view class="label">订单状态</view>
90 <view class="value" :class="item.effect == 1 ? 'text-success' : 'text-warning'"> 92 <view class="value" :class="item.effect == 1 ? 'text-success' : 'text-warning'">
...@@ -204,7 +206,7 @@ const tabs = computed(() => { ...@@ -204,7 +206,7 @@ const tabs = computed(() => {
204 ]; 206 ];
205 } 207 }
206 }); 208 });
207 const currentTab = ref(0); 209 const currentTab = ref('0');
208 210
209 // 数据与分页配置 211 // 数据与分页配置
210 const list = ref([]); 212 const list = ref([]);
...@@ -242,6 +244,9 @@ onMounted(() => { ...@@ -242,6 +244,9 @@ onMounted(() => {
242 console.log('onMounted - app.globalData:', app.globalData); 244 console.log('onMounted - app.globalData:', app.globalData);
243 deptType.value = Number(app.globalData?.deptType || 0); 245 deptType.value = Number(app.globalData?.deptType || 0);
244 console.log('onMounted - deptType.value:', deptType.value, typeof deptType.value); 246 console.log('onMounted - deptType.value:', deptType.value, typeof deptType.value);
247 const firstType = tabs.value[0]?.type ?? '0';
248 currentTab.value = firstType;
249 queryParams.type = firstType;
245 initData(); 250 initData();
246 }); 251 });
247 252
...@@ -269,9 +274,9 @@ const loadMore = () => { ...@@ -269,9 +274,9 @@ const loadMore = () => {
269 }; 274 };
270 275
271 // 切换标签 276 // 切换标签
272 const switchTab = (index) => { 277 const switchTab = (type) => {
273 currentTab.value = index; 278 currentTab.value = type;
274 queryParams.type = tabs.value[index].type; 279 queryParams.type = type;
275 pageNum.value = 1; 280 pageNum.value = 1;
276 list.value = []; 281 list.value = [];
277 hasMore.value = true; 282 hasMore.value = true;
...@@ -489,10 +494,11 @@ const closeCancelPopup = () => { ...@@ -489,10 +494,11 @@ const closeCancelPopup = () => {
489 margin-bottom: 20rpx; 494 margin-bottom: 20rpx;
490 padding: 20rpx; 495 padding: 20rpx;
491 box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04); 496 box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
492 border-top: 6rpx solid transparent; 497 border-radius: 12rpx;
493 background-clip: padding-box, border-box; 498 // border-top: 6rpx solid transparent;
494 background-origin: padding-box, border-box; 499 // background-clip: padding-box, border-box;
495 background-image: linear-gradient(#fff, #fff), linear-gradient(90deg, #FF755A, #F51722); 500 // background-origin: padding-box, border-box;
501 // background-image: linear-gradient(#fff, #fff), linear-gradient(90deg, #FF755A, #F51722);
496 } 502 }
497 } 503 }
498 504
...@@ -502,8 +508,8 @@ const closeCancelPopup = () => { ...@@ -502,8 +508,8 @@ const closeCancelPopup = () => {
502 justify-content: space-between; 508 justify-content: space-between;
503 align-items: center; 509 align-items: center;
504 padding-bottom: 20rpx; 510 padding-bottom: 20rpx;
505 margin-bottom: 20rpx; 511 // margin-bottom: 20rpx;
506 border-bottom: 1rpx dashed #eee; 512 // border-bottom: 1rpx dashed #eee;
507 513
508 .date { 514 .date {
509 display: flex; 515 display: flex;
...@@ -545,19 +551,28 @@ const closeCancelPopup = () => { ...@@ -545,19 +551,28 @@ const closeCancelPopup = () => {
545 margin-left: 10rpx; 551 margin-left: 10rpx;
546 } 552 }
547 553
554 &.status-wait {
555 background: #f0f5ff;
556 color: #597ef7;
557 border: 1rpx solid rgba(89, 126, 247, 0.3);
558 }
559
548 &.status-pending { 560 &.status-pending {
549 background: #fff7e6; 561 background: #fff7e6;
550 color: #faad14; 562 color: #faad14;
563 border: 1rpx solid rgba(250, 173, 20, 0.3);
551 } 564 }
552 565
553 &.status-success { 566 &.status-success {
554 background: #e6f7ef; 567 background: #e6f7ef;
555 color: #52c41a; 568 color: #52c41a;
569 border: 1rpx solid rgba(82, 196, 26, 0.3);
556 } 570 }
557 571
558 &.status-danger { 572 &.status-danger {
559 background: #fff1f0; 573 background: #fff1f0;
560 color: #ff4d4f; 574 color: #ff4d4f;
575 border: 1rpx solid rgba(232, 52, 29, 0.3);
561 } 576 }
562 } 577 }
563 } 578 }
...@@ -622,8 +637,8 @@ const closeCancelPopup = () => { ...@@ -622,8 +637,8 @@ const closeCancelPopup = () => {
622 637
623 // 费用合计 638 // 费用合计
624 .price-section { 639 .price-section {
625 border-top: 1rpx dashed #eee; 640 // border-top: 1rpx dashed #eee;
626 padding-top: 16rpx; 641 // padding-top: 16rpx;
627 margin-top: 8rpx; 642 margin-top: 8rpx;
628 643
629 .price-row { 644 .price-row {
......
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
9 <view @click="goDetail(item)"> 9 <view @click="goDetail(item)">
10 <view class="status"> 10 <view class="status">
11 <text :class="{ 11 <text :class="{
12 'text-primary':item.scoreStatus=='0', 12 'text-primary-bg':item.scoreStatus=='0',
13 'text-success':item.scoreStatus=='2', 13 'text-success-bg':item.scoreStatus=='2',
14 'text-danger':item.scoreStatus=='3', 14 'text-danger-bg':item.scoreStatus=='3',
15 'text-warning':item.scoreStatus=='4' 15 'text-warning-bg':item.scoreStatus=='4'
16 }">{{ item.scoreStatusStr }}</text> 16 }">{{ item.scoreStatusStr }}</text>
17 </view> 17 </view>
18 18
......
...@@ -9,19 +9,17 @@ ...@@ -9,19 +9,17 @@
9 <view @click="goDetail(item)"> 9 <view @click="goDetail(item)">
10 <view class="status" > 10 <view class="status" >
11 <text :class="{ 11 <text :class="{
12 'text-primary':item.auditStatus=='0', 12 'text-primary-bg':item.auditStatus=='0',
13 'text-success':item.auditStatus=='1', 13 'text-success-bg':item.auditStatus=='1',
14 'text-danger':item.auditStatus=='2', 14 'text-danger-bg':item.auditStatus=='2',
15 'text-warning':item.auditStatus=='3' 15 'text-warning-bg':item.auditStatus=='3'
16 }">{{ item.statusStr }}</text> 16 }">{{ item.statusStr }}</text>
17 </view> 17 </view>
18 18
19 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 19 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
20 <view class="text-primary">{{item.examCode}}</view> 20 <view class="text-primary">{{item.examCode}}</view>
21 <view class="name mt0" >{{item.name}}</view> 21 <view class="name mt0" >{{item.name}}</view>
22 <view class="pp esp">申请单位:{{item.memberName}}</view> 22 <view class="flexbox" >
23 <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
24 <view class="flexbox" >
25 <view> 23 <view>
26 申请日期 24 申请日期
27 <view>{{item.applyTime.substring(0, 10)}}</view> 25 <view>{{item.applyTime.substring(0, 10)}}</view>
...@@ -31,6 +29,9 @@ ...@@ -31,6 +29,9 @@
31 <view>{{item.totalNum||'--'}}</view> 29 <view>{{item.totalNum||'--'}}</view>
32 </view> 30 </view>
33 </view> 31 </view>
32 <view class="pp esp">申请单位:{{item.memberName}}</view>
33 <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
34
34 </view> 35 </view>
35 <view class="func" v-if="item.auditStatus=='0'"> 36 <view class="func" v-if="item.auditStatus=='0'">
36 <button @click="audit(item,'2')">拒绝</button> 37 <button @click="audit(item,'2')">拒绝</button>
......
...@@ -8,16 +8,15 @@ ...@@ -8,16 +8,15 @@
8 <view @click="goDetail(item)"> 8 <view @click="goDetail(item)">
9 <view class="status" > 9 <view class="status" >
10 <text :class="{ 10 <text :class="{
11 'text-primary':item.certStatus=='0', 11 'text-primary-bg':item.certStatus=='0',
12 'text-warning':item.certStatus=='1', 12 'text-warning-bg':item.certStatus=='1',
13 'text-success':item.certStatus=='2', 13 'text-success-bg':item.certStatus=='2',
14 }">{{ item.certStatusStr }}</text> 14 }">{{ item.certStatusStr }}</text>
15 </view> 15 </view>
16 16
17 <view class="date">结算编号:{{item.payCode}}</view> 17 <view class="date">结算编号:{{item.payCode}}</view>
18 <view class="name mt0" >{{item.name}}</view> 18 <view class="name mt0" >{{item.name}}</view>
19 <view class="pp esp">考试时间:{{item.startTime?.substring(0,16)}}{{item.endTime?.substring(0,16)}}</view> 19 <view class="flexbox" >
20 <view class="flexbox" >
21 <view> 20 <view>
22 申请日期 21 申请日期
23 <view>{{item.applyTime?.substring(0, 10)}}</view> 22 <view>{{item.applyTime?.substring(0, 10)}}</view>
...@@ -35,6 +34,8 @@ ...@@ -35,6 +34,8 @@
35 <view>{{item.noCerts}}</view> 34 <view>{{item.noCerts}}</view>
36 </view> 35 </view>
37 </view> 36 </view>
37 <view class="pp esp">考试时间:{{item.startTime?.substring(0,16)}}{{item.endTime?.substring(0,16)}}</view>
38
38 </view> 39 </view>
39 <view class="func"> 40 <view class="func">
40 <button @click="send(item)">一键生成</button> 41 <button @click="send(item)">一键生成</button>
......
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
9 <view @click="goDetail(item)"> 9 <view @click="goDetail(item)">
10 <view class="status"> 10 <view class="status">
11 <text :class="{ 11 <text :class="{
12 'text-primary':item.auditStatus=='0', 12 'text-primary-bg':item.auditStatus=='0',
13 'text-success':item.auditStatus=='1', 13 'text-success-bg':item.auditStatus=='1',
14 'text-danger':item.auditStatus=='2', 14 'text-danger-bg':item.auditStatus=='2',
15 'text-warning':item.auditStatus=='3' 15 'text-warning-bg':item.auditStatus=='3'
16 }">{{ item.statusStr }}</text> 16 }">{{ item.statusStr }}</text>
17 </view> 17 </view>
18 18
...@@ -22,8 +22,6 @@ ...@@ -22,8 +22,6 @@
22 </view> 22 </view>
23 <view class="text-primary">{{item.examCode}}</view> 23 <view class="text-primary">{{item.examCode}}</view>
24 <view class="name mt10"><text class="dot"></text>{{item.name}}</view> 24 <view class="name mt10"><text class="dot"></text>{{item.name}}</view>
25 <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}
26 </view>
27 <view class="flexbox"> 25 <view class="flexbox">
28 <view> 26 <view>
29 申请日期 27 申请日期
...@@ -40,6 +38,9 @@ ...@@ -40,6 +38,9 @@
40 </view> 38 </view>
41 </view> 39 </view>
42 </view> 40 </view>
41 <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}
42 </view>
43
43 </view> 44 </view>
44 <view class="func" v-if="item.auditStatus=='0'"> 45 <view class="func" v-if="item.auditStatus=='0'">
45 <button @click="audit(item,'2')">拒绝</button> 46 <button @click="audit(item,'2')">拒绝</button>
......
...@@ -19,9 +19,10 @@ ...@@ -19,9 +19,10 @@
19 <!-- 订单头部:日期 + 状态 --> 19 <!-- 订单头部:日期 + 状态 -->
20 <view class="card-header"> 20 <view class="card-header">
21 <view class="date"> 21 <view class="date">
22 <image v-if="item.payTime" :src="config.baseUrl_api + '/fs/static/calendar@2x.png'" mode="widthFix" 22 <!-- <image v-if="item.payTime" :src="config.baseUrl_api + '/fs/static/calendar@2x.png'" mode="widthFix" -->
23 style="width:30rpx;height:30rpx;"/> 23 <!-- style="width:30rpx;height:30rpx;"/> -->
24 <text v-if="item.payTime" class="date-text">{{ item.payTime }}</text> 24 <!-- <text v-if="item.payTime" class="date-text">{{ item.payTime }}</text> -->
25 <text class="value text-primary" >{{ item.wfCode || '——' }}</text>
25 </view> 26 </view>
26 <view 27 <view
27 :class="{ 28 :class="{
...@@ -41,8 +42,8 @@ ...@@ -41,8 +42,8 @@
41 <text class="value">{{ item.tradeNo || '——' }}</text> 42 <text class="value">{{ item.tradeNo || '——' }}</text>
42 </view> 43 </view>
43 <view class="info-row"> 44 <view class="info-row">
44 <text class="label">缴费编号</text> 45 <text class="label">支付时间</text>
45 <text class="value">{{ item.wfCode || '——' }}</text> 46 <text class="value">{{ item.payTime || '' }}</text>
46 </view> 47 </view>
47 48
48 <!-- 核心:个人会员仅展示缴费年限 --> 49 <!-- 核心:个人会员仅展示缴费年限 -->
...@@ -305,10 +306,10 @@ const closeCancelPopup = () => { ...@@ -305,10 +306,10 @@ const closeCancelPopup = () => {
305 <style lang="scss" scoped> 306 <style lang="scss" scoped>
306 .order-page { 307 .order-page {
307 background: #f5f7fa; 308 background: #f5f7fa;
308 min-height: 100vh; 309 height: 100vh;
309 display: flex; 310 display: flex;
310 flex-direction: column; 311 flex-direction: column;
311 312
312 &.no-scroll { 313 &.no-scroll {
313 overflow: hidden; 314 overflow: hidden;
314 height: 100vh; 315 height: 100vh;
...@@ -318,22 +319,20 @@ const closeCancelPopup = () => { ...@@ -318,22 +319,20 @@ const closeCancelPopup = () => {
318 // 滚动列表容器 319 // 滚动列表容器
319 .order-list-scroll { 320 .order-list-scroll {
320 flex: 1; 321 flex: 1;
321 height: 0; 322 height: auto;
323 overflow: auto;
322 } 324 }
323 325
324 // 订单列表 326 // 订单列表
325 .order-list { 327 .order-list {
326 padding: 20rpx; 328 padding: 20rpx;
327 329
328 .order-card { 330 .order-card {
329 background: #fff; 331 background: #fff;
330 margin-bottom: 20rpx; 332 margin-bottom: 20rpx;
331 padding: 20rpx; 333 padding: 20rpx;
332 box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04); 334 box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
333 border-top: 6rpx solid transparent; 335 border-radius: 12rpx;
334 background-clip: padding-box, border-box;
335 background-origin: padding-box, border-box;
336 background-image: linear-gradient(#fff, #fff), linear-gradient(90deg, #FF755A, #F51722);
337 } 336 }
338 } 337 }
339 338
...@@ -343,38 +342,39 @@ const closeCancelPopup = () => { ...@@ -343,38 +342,39 @@ const closeCancelPopup = () => {
343 justify-content: space-between; 342 justify-content: space-between;
344 align-items: center; 343 align-items: center;
345 padding-bottom: 20rpx; 344 padding-bottom: 20rpx;
346 margin-bottom: 20rpx; 345
347 border-bottom: 1rpx dashed #eee;
348
349 .date { 346 .date {
350 display: flex; 347 display: flex;
351 align-items: center; 348 align-items: center;
352 gap: 8rpx; 349 gap: 8rpx;
353 font-size: 26rpx; 350 font-size: 26rpx;
354 351
355 .date-text { 352 .date-text {
356 color: #666; 353 color: #666;
357 } 354 }
358 } 355 }
359 356
360 .status-tag { 357 .status-tag {
361 font-size: 24rpx; 358 font-size: 22rpx;
362 padding: 6rpx 16rpx; 359 padding: 6rpx 16rpx;
363 border-radius: 20rpx; 360 border-radius: 20rpx;
364 361
365 &.success { 362 &.success {
366 background: #e6f7ef; 363 background: #e6f7ef;
367 color: #52c41a; 364 color: #52c41a;
365 border: 1rpx solid rgba(82, 196, 26, 0.3);
368 } 366 }
369 367
370 &.danger { 368 &.danger {
371 background: #fff1f0; 369 background: #fff1f0;
372 color: #ff4d4f; 370 color: #ff4d4f;
371 border: 1rpx solid rgba(232, 52, 29, 0.3);
373 } 372 }
374 373
375 &.pending { 374 &.pending {
376 background: #f5f5f5; 375 background: #fff7e6;
377 color: #999; 376 color: #faad14;
377 border: 1rpx solid rgba(250, 173, 20, 0.3);
378 } 378 }
379 } 379 }
380 } 380 }
...@@ -385,13 +385,13 @@ const closeCancelPopup = () => { ...@@ -385,13 +385,13 @@ const closeCancelPopup = () => {
385 align-items: center; 385 align-items: center;
386 margin-bottom: 20rpx; 386 margin-bottom: 20rpx;
387 font-size: 26rpx; 387 font-size: 26rpx;
388 388
389 .label { 389 .label {
390 color: #999; 390 color: #999;
391 flex-shrink: 0; 391 flex-shrink: 0;
392 width: 140rpx; 392 width: 140rpx;
393 } 393 }
394 394
395 .value { 395 .value {
396 color: #333; 396 color: #333;
397 word-break: break-all; 397 word-break: break-all;
...@@ -417,12 +417,12 @@ const closeCancelPopup = () => { ...@@ -417,12 +417,12 @@ const closeCancelPopup = () => {
417 padding: 16rpx 20rpx; 417 padding: 16rpx 20rpx;
418 border-radius: 8rpx; 418 border-radius: 8rpx;
419 font-size: 26rpx; 419 font-size: 26rpx;
420 420
421 .label { 421 .label {
422 color: #999; 422 color: #999;
423 text-align: center; 423 text-align: center;
424 } 424 }
425 425
426 .value { 426 .value {
427 color: #333; 427 color: #333;
428 font-weight: 500; 428 font-weight: 500;
...@@ -436,19 +436,18 @@ const closeCancelPopup = () => { ...@@ -436,19 +436,18 @@ const closeCancelPopup = () => {
436 display: flex; 436 display: flex;
437 justify-content: space-between; 437 justify-content: space-between;
438 align-items: center; 438 align-items: center;
439 margin: 0 0 30rpx; 439 margin: 0 0 16rpx;
440 padding: 15rpx 0; 440 padding: 8rpx 0;
441 font-size: 28rpx; 441 font-size: 26rpx;
442 border-bottom: 1rpx dashed #eee; 442
443
444 .label { 443 .label {
445 color: #333; 444 color: #333;
446 } 445 }
447 446
448 .amount { 447 .amount {
449 color: #EB6100; 448 color: #EB6100;
450 font-weight: 600; 449 font-weight: 600;
451 font-size: 32rpx; 450 font-size: 28rpx;
452 } 451 }
453 } 452 }
454 453
...@@ -459,7 +458,7 @@ const closeCancelPopup = () => { ...@@ -459,7 +458,7 @@ const closeCancelPopup = () => {
459 align-items: center; 458 align-items: center;
460 gap: 16rpx; 459 gap: 16rpx;
461 width: 100%; 460 width: 100%;
462 461
463 .btn { 462 .btn {
464 padding: 12rpx 32rpx; 463 padding: 12rpx 32rpx;
465 border-radius: 40rpx; 464 border-radius: 40rpx;
...@@ -471,35 +470,35 @@ const closeCancelPopup = () => { ...@@ -471,35 +470,35 @@ const closeCancelPopup = () => {
471 border: none; 470 border: none;
472 width: 80px; 471 width: 80px;
473 background: transparent; 472 background: transparent;
474 473
475 &::after { 474 &::after {
476 border: none; 475 border: none;
477 } 476 }
478 477
479 &.btn-delete { 478 &.btn-delete {
480 background: #fff; 479 background: #fff;
481 color: #e4393c; 480 color: #e4393c;
482 border: 1rpx solid #e4393c; 481 border: 1rpx solid #e4393c;
483 } 482 }
484 483
485 &.btn-invoice { 484 &.btn-invoice {
486 background: #fff; 485 background: #fff;
487 color: #e4393c; 486 color: #e4393c;
488 border: 1rpx solid #e4393c; 487 border: 1rpx solid #e4393c;
489 } 488 }
490 489
491 &.btn-cancel { 490 &.btn-cancel {
492 background: #fff; 491 background: #fff;
493 color: #666; 492 color: #666;
494 border: 1rpx solid #ccc; 493 border: 1rpx solid #ccc;
495 } 494 }
496 495
497 &.btn-pay { 496 &.btn-pay {
498 background: linear-gradient(90deg, #FF755A, #F51722); 497 background: linear-gradient(90deg, #FF755A, #F51722);
499 color: #fff; 498 color: #fff;
500 border: none; 499 border: none;
501 } 500 }
502 501
503 &:disabled { 502 &:disabled {
504 opacity: 0.6; 503 opacity: 0.6;
505 pointer-events: none; 504 pointer-events: none;
...@@ -507,9 +506,6 @@ const closeCancelPopup = () => { ...@@ -507,9 +506,6 @@ const closeCancelPopup = () => {
507 } 506 }
508 } 507 }
509 508
510 // 空状态
511
512
513 // 加载/无更多提示 509 // 加载/无更多提示
514 .loading-tip, .no-more { 510 .loading-tip, .no-more {
515 text-align: center; 511 text-align: center;
...@@ -575,7 +571,7 @@ const closeCancelPopup = () => { ...@@ -575,7 +571,7 @@ const closeCancelPopup = () => {
575 border: none; 571 border: none;
576 margin: 0; 572 margin: 0;
577 padding: 0; 573 padding: 0;
578 574
579 &::after { 575 &::after {
580 border: none; 576 border: none;
581 } 577 }
...@@ -592,7 +588,7 @@ const closeCancelPopup = () => { ...@@ -592,7 +588,7 @@ const closeCancelPopup = () => {
592 border: none; 588 border: none;
593 margin: 0; 589 margin: 0;
594 padding: 0; 590 padding: 0;
595 591
596 &::after { 592 &::after {
597 border: none; 593 border: none;
598 } 594 }
......
...@@ -12,11 +12,11 @@ ...@@ -12,11 +12,11 @@
12 <view class="appItem" v-for="(item,index) in list" :key="index"> 12 <view class="appItem" v-for="(item,index) in list" :key="index">
13 <view class="status" @click="goDetail(item)"> 13 <view class="status" @click="goDetail(item)">
14 <view> 14 <view>
15 <text v-if="item.status == 0" class="text-warning">待提交</text> 15 <text v-if="item.status == 0" class="text-warning-bg">待提交</text>
16 <text v-if="item.status == 1" class="text-primary">审核中</text> 16 <text v-if="item.status == 1" class="text-primary-bg">审核中</text>
17 <text v-if="item.status == 2" class="text-success">审核通过</text> 17 <text v-if="item.status == 2" class="text-success-bg">审核通过</text>
18 <text v-if="item.status == 3" class="text-danger">审核拒绝</text> 18 <text v-if="item.status == 3" class="text-danger-bg">审核拒绝</text>
19 <text v-if="item.status == 4" class="text-warning">已撤回</text> 19 <text v-if="item.status == 4" class="text-warning-bg">已撤回</text>
20 </view> 20 </view>
21 </view> 21 </view>
22 22
......
...@@ -22,88 +22,64 @@ ...@@ -22,88 +22,64 @@
22 :scroll-enabled="!isPopupOpen" 22 :scroll-enabled="!isPopupOpen"
23 > 23 >
24 <view class="order-list"> 24 <view class="order-list">
25 <!-- 有数据才循环 -->
26 <view v-if="list.length > 0"> 25 <view v-if="list.length > 0">
27 <view 26 <view
28 v-for="(item, index) in list" 27 v-for="(item, index) in list"
29 :key="index" 28 :key="index"
30 class="order-card" 29 class="order-card" @click="goToDetail(item)"
31 > 30 >
32 <!-- 订单头部:日期 + 状态 --> 31 <!-- 订单头部:日期 + 审核状态 -->
33 <view class="card-header"> 32 <view class="card-header">
34 <view class="date"> 33 <view class="date">
35 <image :src="config.baseUrl_api + '/fs/static/calendar@2x.png'" v-if="item.payTime" mode="widthFix" style="width:30rpx;height:30rpx;"/> 34 <text class="value order-no text-primary">{{ item.wfCode || '' }}</text>
36 <text class="date-text" v-if="item.payTime">{{ item.payTime }}</text> 35 <!-- <image :src="config.baseUrl_api + '/fs/static/calendar@2x.png'" v-if="item.payTime" mode="widthFix" style="width:30rpx;height:30rpx;"/>
36 <text class="date-text" v-if="item.payTime">{{ item.payTime }}</text> -->
37 </view> 37 </view>
38 <view 38 <view
39 class="status-tag" 39 class="audit-status-tag"
40 :class="getStatusClass(item.payStatus)" 40 :class="getAuditStatusClass(item.auditStatus)"
41 > 41 >
42 {{ getStatusText(item.payStatus) }} 42 {{ getAuditStatusText(item.auditStatus) }}
43 </view> 43 </view>
44 </view> 44 </view>
45 45
46 <!-- 订单编号、缴费编号 --> 46 <!-- 订单编号 -->
47 <view class="info-row"> 47 <view class="info-row">
48 <text class="label">订单编号</text> 48 <text class="label">订单编号</text>
49 <text class="value order-no">{{ item.tradeNo || '——' }}</text> 49 <text class="value order-no">{{ item.tradeNo || '——' }}</text>
50 </view> 50 </view>
51 <view class="flex f-j-s"> 51
52 <view class="info-row"> 52 <!-- 缴费编号 -->
53 <text class="label">缴费编号:</text> 53 <view class="info-row payment-code-row" v-if="item.payTime">
54 <view class="payment-code" @click="goToDetail(item)"> 54 <text class="label">缴费时间</text>
55 <text class="code-text">{{ item.wfCode || '——' }}</text> 55 <text class="value order-no">{{ item.payTime || '' }}</text>
56 <!-- <text class="code-arrow"></text> --> 56 <!-- <view class="payment-code" >
57 </view> 57 <text class="code-text">{{ item.payTime || '——' }}</text>
58 </view> 58 </view> -->
59 <view class="audit-row">
60 <!-- <text class="label">审核状态:</text> -->
61 <text class="audit-status" :class="getAuditStatusClass(item.auditStatus)">{{ getAuditStatusText(item.auditStatus) }}</text>
62 </view>
63 </view> 59 </view>
64 60
65 <!-- 核心:根据tab类型展示不同内容 --> 61 <!-- 核心信息区:缴费年限/人数 + 缴费方式 -->
66 <view class="info-section flex f-j-s" v-if="item.content"> 62 <view class="info-section flex f-j-s">
67 <!-- 个人/单位会员(缴费年限) -->
68 <view v-if="currentTab === 0 || currentTab === 1" class="single-info"> 63 <view v-if="currentTab === 0 || currentTab === 1" class="single-info">
69 <view class="label">缴费年限</view> 64 <view class="label">缴费年限</view>
70 <view class="value">{{ item.content.yearCount || 0 }}</view> 65 <view class="value">{{ item.content?.yearCount || 0 }}</view>
71 </view> 66 </view>
72 <!-- 级位/段位/越段考试(人数合计) -->
73 <view v-if="currentTab === 2 || currentTab === 3 || currentTab === 4" class="single-info"> 67 <view v-if="currentTab === 2 || currentTab === 3 || currentTab === 4" class="single-info">
74 <view class="label">人数合计</view> 68 <view class="label">人数合计</view>
75 <view class="value">{{ item.content.allPersonCount || 0 }}</view> 69 <view class="value">{{ item.content?.allPersonCount || 0 }}</view>
76 </view> 70 </view>
77 <view class="line"></view> 71 <view class="divider"></view>
78 <view class="single-info"> 72 <view class="single-info">
79 <view class="label">缴费方式</view> 73 <view class="label">缴费方式</view>
80 <view class="value">民生付</view> 74 <view class="value">{{ item.payWay || '民生付' }}</view>
81 </view> 75 </view>
82 </view> 76 </view>
83 77
84 <!-- 费用合计 --> 78 <!-- 费用合计 -->
85 <view class="total-row"> 79 <view class="total-row">
86 <text class="label">费用合计</text> 80 <text class="label">费用合计</text>
87 <text class="amount">¥{{ (Number(item.price) || 0).toFixed(2) }}</text> 81 <text class="amount">¥{{ (Number(item.price) || 0).toFixed(2) }}</text>
88 </view> 82 </view>
89
90 <!-- 审核状态 -->
91
92
93
94 <!-- <view class="btn-group">
95 <button class="btn btn-delete" @click="handleDelete(item)">删除</button>
96
97 <template v-if="item.payStatus == 1">
98 <button class="btn btn-invoice" @click="makeInvoiceFN(item)" :disabled="item.invoiceStatus === 1">
99 {{ item.invoiceStatus === 1 ? '已开票' : '申请开票' }}
100 </button>
101 </template>
102 <template v-if="item.payStatus == 0">
103 <button class="btn btn-cancel" @click="handleCancel(item)">取消订单</button>
104 <button class="btn btn-pay" @click="handlePay(item)">去缴费</button>
105 </template>
106 </view> -->
107 </view> 83 </view>
108 </view> 84 </view>
109 85
...@@ -149,6 +125,7 @@ import { ref, reactive, onMounted, computed } from 'vue'; ...@@ -149,6 +125,7 @@ import { ref, reactive, onMounted, computed } from 'vue';
149 import { onReachBottom, onLoad } from '@dcloudio/uni-app' 125 import { onReachBottom, onLoad } from '@dcloudio/uni-app'
150 import * as api from '@/common/api.js' 126 import * as api from '@/common/api.js'
151 import config from '@/config.js' 127 import config from '@/config.js'
128
152 // 标签栏配置 129 // 标签栏配置
153 const tabs = ref([ 130 const tabs = ref([
154 { name: '个人会员', type: '0' }, 131 { name: '个人会员', type: '0' },
...@@ -188,7 +165,6 @@ const currentOrder = ref(null); ...@@ -188,7 +165,6 @@ const currentOrder = ref(null);
188 165
189 // 页面加载 166 // 页面加载
190 onLoad(option => { 167 onLoad(option => {
191 // 根据传入的type参数设置当前tab
192 if (option.type) { 168 if (option.type) {
193 const type = option.type; 169 const type = option.type;
194 const tabIndex = tabs.value.findIndex(tab => tab.type === type); 170 const tabIndex = tabs.value.findIndex(tab => tab.type === type);
...@@ -218,33 +194,8 @@ const switchTab = (index) => { ...@@ -218,33 +194,8 @@ const switchTab = (index) => {
218 initData(); 194 initData();
219 }; 195 };
220 196
221 // 状态文本映射
222 const getStatusText = (status) => {
223 // 确保status是字符串类型
224 const statusStr = String(status);
225 const map = {
226 '0': '待缴费',
227 '1': '缴费成功',
228 '2': '订单取消'
229 };
230 return map[statusStr] || '未知状态';
231 };
232
233 // 缴费状态样式类
234 const getStatusClass = (status) => {
235 // 确保status是字符串类型
236 const statusStr = String(status);
237 const map = {
238 '0': 'status-pending',
239 '1': 'status-success',
240 '2': 'status-danger'
241 };
242 return map[statusStr] || '';
243 };
244
245 // 审核状态文本 197 // 审核状态文本
246 const getAuditStatusText = (status) => { 198 const getAuditStatusText = (status) => {
247 // 确保status是字符串类型
248 const statusStr = String(status); 199 const statusStr = String(status);
249 const map = { 200 const map = {
250 '0': '待提交', 201 '0': '待提交',
...@@ -257,7 +208,6 @@ const getAuditStatusText = (status) => { ...@@ -257,7 +208,6 @@ const getAuditStatusText = (status) => {
257 208
258 // 审核状态样式类 209 // 审核状态样式类
259 const getAuditStatusClass = (status) => { 210 const getAuditStatusClass = (status) => {
260 // 确保status是字符串类型
261 const statusStr = String(status); 211 const statusStr = String(status);
262 const map = { 212 const map = {
263 '0': 'audit-pending', 213 '0': 'audit-pending',
...@@ -280,7 +230,6 @@ const initData = async () => { ...@@ -280,7 +230,6 @@ const initData = async () => {
280 hasMore.value = false; 230 hasMore.value = false;
281 return; 231 return;
282 } 232 }
283 // 安全解析content字段
284 res.rows.forEach(item => { 233 res.rows.forEach(item => {
285 if (item.content) { 234 if (item.content) {
286 try { 235 try {
...@@ -290,13 +239,11 @@ const initData = async () => { ...@@ -290,13 +239,11 @@ const initData = async () => {
290 } 239 }
291 } 240 }
292 }); 241 });
293 // 分页拼接数据
294 if (pageNum.value === 1) { 242 if (pageNum.value === 1) {
295 list.value = res.rows; 243 list.value = res.rows;
296 } else { 244 } else {
297 list.value.push(...res.rows); 245 list.value.push(...res.rows);
298 } 246 }
299 // 判断是否还有更多数据
300 hasMore.value = list.value.length < (res.total || 0); 247 hasMore.value = list.value.length < (res.total || 0);
301 } catch (e) { 248 } catch (e) {
302 console.error('订单加载异常:', e); 249 console.error('订单加载异常:', e);
...@@ -385,21 +332,17 @@ const closeCancelPopup = () => { ...@@ -385,21 +332,17 @@ const closeCancelPopup = () => {
385 // 跳转到详情页 332 // 跳转到详情页
386 const goToDetail = (item) => { 333 const goToDetail = (item) => {
387 const form = encodeURIComponent(JSON.stringify(item)) 334 const form = encodeURIComponent(JSON.stringify(item))
388 // 根据订单类型跳转到不同页面
389 switch (queryParams.type) { 335 switch (queryParams.type) {
390 case '1': // 单位会员 336 case '1':
391 // 跳转到新的单位会员订单详情页
392 uni.navigateTo({ url: `/group/groupOrderDetail?form=${form}` }); 337 uni.navigateTo({ url: `/group/groupOrderDetail?form=${form}` });
393 break; 338 break;
394 case '2': // 级位考试 339 case '2':
395 case '3': // 段位考试 340 case '3':
396 case '4': // 越段考试 341 case '4':
397 // 考试类型使用 sourceId 作为 examId,传递 type 参数用于获取审核记录
398 uni.navigateTo({ url: `/pages/rank/applyDetail?examId=${item.sourceId || item.id}&type=${queryParams.type}` }); 342 uni.navigateTo({ url: `/pages/rank/applyDetail?examId=${item.sourceId || item.id}&type=${queryParams.type}` });
399 break; 343 break;
400 case '0': // 个人会员 344 case '0':
401 default: 345 default:
402 // 个人会员使用 sourceId 作为 rangeId
403 uni.navigateTo({ url: `/personalVip/orderDetail?rangeId=${item.sourceId || item.id}&type=${queryParams.type}` }); 346 uni.navigateTo({ url: `/personalVip/orderDetail?rangeId=${item.sourceId || item.id}&type=${queryParams.type}` });
404 break; 347 break;
405 } 348 }
...@@ -466,14 +409,11 @@ const goToDetail = (item) => { ...@@ -466,14 +409,11 @@ const goToDetail = (item) => {
466 .order-card { 409 .order-card {
467 background: #fff; 410 background: #fff;
468 margin-bottom: 20rpx; 411 margin-bottom: 20rpx;
469 padding: 20rpx; 412 padding: 24rpx;
470 border-radius: 16rpx; 413 border-radius: 16rpx;
471 box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06); 414 box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
472 // border-left: 6rpx solid #e8341d;
473 position: relative; 415 position: relative;
474 overflow: hidden; 416 overflow: hidden;
475
476
477 } 417 }
478 } 418 }
479 419
...@@ -483,42 +423,48 @@ const goToDetail = (item) => { ...@@ -483,42 +423,48 @@ const goToDetail = (item) => {
483 justify-content: space-between; 423 justify-content: space-between;
484 align-items: center; 424 align-items: center;
485 padding-bottom: 20rpx; 425 padding-bottom: 20rpx;
486 margin-bottom: 20rpx; 426 // margin-bottom: 20rpx;
487 border-bottom: 1rpx solid #f0f0f0; 427 // border-bottom: 1rpx solid #f0f0f0;
488 428
489 .date { 429 .date {
490 display: flex; 430 display: flex;
491 align-items: center; 431 align-items: center;
492 gap: 8rpx; 432 // gap: 8rpx;
493 font-size: 26rpx; 433 font-size: 28rpx;
494 434
495 .date-text { 435 .date-text {
496 color: #666; 436 color: #666;
497 } 437 }
498 } 438 }
499 439
500 .status-tag { 440 .audit-status-tag {
501 font-size: 22rpx; 441 font-size: 24rpx;
502 padding: 6rpx 18rpx; 442 padding: 6rpx 18rpx;
503 border-radius: 22rpx; 443 border-radius: 22rpx;
504 font-weight: 500; 444 font-weight: 500;
505 445
506 &.status-success { 446 &.audit-success {
507 background: linear-gradient(135deg, #e6f7ef, #d4f5e2); 447 background: linear-gradient(135deg, #e6f7ef, #d4f5e2);
508 color: #1db024; 448 color: #1db024;
509 border: 1rpx solid rgba(#52c41a, 0.3); 449 border: 1rpx solid rgba(82, 196, 26, 0.3);
510 } 450 }
511 451
512 &.status-danger { 452 &.audit-danger {
513 background: linear-gradient(135deg, #fff1f0, #ffe5e5); 453 background: linear-gradient(135deg, #fff1f0, #ffe5e5);
514 color: #e8341d; 454 color: #e8341d;
515 border: 1rpx solid rgba(#e8341c, 0.3); 455 border: 1rpx solid rgba(232, 52, 29, 0.3);
516 } 456 }
517 457
518 &.status-pending { 458 &.audit-processing {
519 background: linear-gradient(135deg, #f5f5f5, #ebebeb); 459 background: linear-gradient(135deg, #e6f3ff, #d4e9ff);
520 color: #666; 460 color: #1890ff;
521 border: 1rpx solid rgba(#999, 0.3); 461 border: 1rpx solid rgba(24, 144, 255, 0.3);
462 }
463
464 &.audit-pending {
465 background: linear-gradient(135deg, #fff7e6, #fff1cc);
466 color: #faad14;
467 border: 1rpx solid rgba(250, 173, 20, 0.3);
522 } 468 }
523 } 469 }
524 } 470 }
...@@ -527,13 +473,14 @@ const goToDetail = (item) => { ...@@ -527,13 +473,14 @@ const goToDetail = (item) => {
527 .info-row { 473 .info-row {
528 display: flex; 474 display: flex;
529 align-items: center; 475 align-items: center;
530 margin-bottom: 20rpx; 476 margin-bottom: 16rpx;
531 font-size: 26rpx; 477 font-size: 28rpx;
532 478
533 .label { 479 .label {
534 color: #999; 480 color: #666;
535 flex-shrink: 0; 481 flex-shrink: 0;
536 margin-right: 20rpx; 482 width: 120rpx;
483 margin-right: 10rpx;
537 } 484 }
538 485
539 .value { 486 .value {
...@@ -541,72 +488,65 @@ const goToDetail = (item) => { ...@@ -541,72 +488,65 @@ const goToDetail = (item) => {
541 word-break: break-all; 488 word-break: break-all;
542 489
543 &.order-no { 490 &.order-no {
544 font-size: 24rpx; 491 font-size: 26rpx;
545 color: #999;
546 letter-spacing: 1rpx;
547 } 492 }
548 } 493 }
549 } 494 }
550 495
496 // 缴费编号行
497 .payment-code-row {
498 margin-bottom: 20rpx;
499 }
500
551 // 缴费编号 - 醒目可点击 501 // 缴费编号 - 醒目可点击
552 .payment-code { 502 .payment-code {
553 display: inline-flex; 503 display: inline-flex;
554 align-items: center; 504 align-items: center;
555 gap: 6rpx; 505 // transition: all 0.2s ease;
556 // background: linear-gradient(135deg, #fff5f5, #ffeaea);
557 padding: 8rpx 20rpx 8rpx 16rpx;
558 border-radius: 24rpx;
559 // border: 1rpx solid rgba(#e8341d, 0.2);
560 transition: all 0.2s ease;
561 506
562 &:active { 507 &:active {
563 background: linear-gradient(135deg, #ffeaea, #ffd5d5); 508 opacity: 0.8;
564 transform: scale(0.98); 509 transform: scale(0.98);
565 } 510 }
566 511
567 .code-text { 512 .code-text {
568 font-size: 28rpx; 513 font-size: 30rpx;
569 font-weight: 600; 514 // font-weight: 600;
570 color: #e8341d; 515 color: #1890ff;
571 letter-spacing: 1rpx; 516 // letter-spacing: 1rpx;
572 }
573
574 .code-arrow {
575 font-size: 32rpx;
576 color: #e8341d;
577 font-weight: bold;
578 line-height: 1;
579 } 517 }
580 } 518 }
581 519
520 // 核心信息区
582 .info-section { 521 .info-section {
583 background: linear-gradient(135deg, #f8f9fc, #f0f4fa); 522 background: #f4f9fd;
584 display: flex; 523 display: flex;
585 align-items: center; 524 align-items: center;
586 padding: 0 40rpx;
587 justify-content: space-around; 525 justify-content: space-around;
588 margin: 20rpx 0; 526 margin: 20rpx 0;
589 border-radius: 12rpx; 527 border-radius: 12rpx;
528 padding: 16rpx 0;
590 } 529 }
591 .line{ 530
531 .divider {
592 width: 1rpx; 532 width: 1rpx;
593 height: 90%; 533 height: 60rpx;
594 background: #eee; 534 background: #e5e5e5;
595 } 535 }
536
596 .single-info { 537 .single-info {
597 padding: 16rpx 20rpx; 538 flex: 1;
598 border-radius: 8rpx; 539 text-align: center;
599 font-size: 26rpx; 540 font-size: 28rpx;
541
600 .label { 542 .label {
601 color: #999; 543 color: #666;
602 text-align: center; 544 margin-bottom: 8rpx;
603 } 545 }
604 546
605 .value { 547 .value {
606 color: #333; 548 color: #333;
607 font-weight: 500; 549 font-weight: 500;
608 text-align: center;
609 margin-top: 10rpx;
610 } 550 }
611 } 551 }
612 552
...@@ -615,10 +555,9 @@ const goToDetail = (item) => { ...@@ -615,10 +555,9 @@ const goToDetail = (item) => {
615 display: flex; 555 display: flex;
616 justify-content: space-between; 556 justify-content: space-between;
617 align-items: center; 557 align-items: center;
618 // margin: 0 0 30rpx; 558 padding-top: 10rpx;
619 padding: 15rpx 0; 559 // border-top: 1rpx solid #f0f0f0;
620 font-size: 28rpx; 560 font-size: 28rpx;
621 // border-bottom: 1rpx dashed #eee;
622 561
623 .label { 562 .label {
624 color: #333; 563 color: #333;
...@@ -633,96 +572,6 @@ const goToDetail = (item) => { ...@@ -633,96 +572,6 @@ const goToDetail = (item) => {
633 } 572 }
634 } 573 }
635 574
636 // 审核状态
637 .audit-row {
638 display: flex;
639 align-items: center;
640 // margin: 0 0 30rpx;
641 // padding: 15rpx 0;
642 font-size: 26rpx;
643
644 .label {
645 color: #999;
646 flex-shrink: 0;
647 width: 140rpx;
648 }
649
650 .audit-status {
651 font-weight: 500;
652
653 &.audit-success {
654 color: #52c41a;
655 }
656
657 &.audit-danger {
658 color: #ff4d4f;
659 }
660
661 &.audit-processing {
662 color: #1890ff;
663 }
664
665 &.audit-pending {
666 color: #faad14;
667 }
668 }
669 }
670
671 // 按钮组
672 .btn-group {
673 display: flex;
674 justify-content: flex-end;
675 align-items: center;
676 gap: 16rpx;
677 width: 100%;
678
679 .btn {
680 padding: 12rpx 32rpx;
681 border-radius: 40rpx;
682 font-size: 24rpx;
683 line-height: 1.5;
684 white-space: nowrap;
685 display: inline-block;
686 margin: 0;
687 border: none;
688 width: 80px;
689 background: transparent;
690
691 &::after {
692 border: none;
693 }
694
695 &.btn-delete {
696 background: #fff;
697 color: #e4393c;
698 border: 1rpx solid #e4393c;
699 }
700
701 &.btn-invoice {
702 background: #fff;
703 color: #e4393c;
704 border: 1rpx solid #e4393c;
705 }
706
707 &.btn-cancel {
708 background: #fff;
709 color: #666;
710 border: 1rpx solid #ccc;
711 }
712
713 &.btn-pay {
714 background: linear-gradient(90deg, #FF755A, #F51722);
715 color: #fff;
716 border: none;
717 }
718
719 &:disabled {
720 opacity: 0.6;
721 pointer-events: none;
722 }
723 }
724 }
725
726 // 空状态 575 // 空状态
727 .empty { 576 .empty {
728 display: flex; 577 display: flex;
...@@ -731,7 +580,7 @@ const goToDetail = (item) => { ...@@ -731,7 +580,7 @@ const goToDetail = (item) => {
731 padding: 120rpx 0; 580 padding: 120rpx 0;
732 581
733 .empty-text { 582 .empty-text {
734 color: #999; 583 color: #666;
735 font-size: 28rpx; 584 font-size: 28rpx;
736 } 585 }
737 } 586 }
...@@ -740,7 +589,7 @@ const goToDetail = (item) => { ...@@ -740,7 +589,7 @@ const goToDetail = (item) => {
740 .loading-tip, .no-more { 589 .loading-tip, .no-more {
741 text-align: center; 590 text-align: center;
742 padding: 20rpx 0; 591 padding: 20rpx 0;
743 color: #999; 592 color: #666;
744 font-size: 26rpx; 593 font-size: 26rpx;
745 } 594 }
746 595
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!