8584268f by lttnew
2 parents 86ed73ee 685385a7
1 <template> 1 <template>
2 <view :class="{ 'no-scroll': isPopupOpen }" class="order-page"> 2 <view :class="{ 'no-scroll': isPopupOpen }" class="order-page">
3 <!-- 顶部标签栏 --> 3 <!-- 顶部标签栏 -->
4
5 <view class="search-bar">
6 <uni-easyinput
7 v-model="queryParams.wfCode"
8 :input-border="false"
9 class="search-input"
10 placeholder="搜索缴费编号"
11 placeholderStyle="font-size:30rpx;color:#999"
12 prefixIcon="search"
13 @blur="handelSearch"
14 @clear="handelSearch">
15 </uni-easyinput>
16 <view class="add-btn" @click="handelSearch">
17 <text class="add-text">搜索</text>
18 </view>
19 </view>
20
4 <view class="tab-bar"> 21 <view class="tab-bar">
5 <view 22 <view
6 v-for="(tab, index) in tabs" 23 v-for="(tab, index) in tabs"
...@@ -24,58 +41,187 @@ ...@@ -24,58 +41,187 @@
24 > 41 >
25 <view class="order-list"> 42 <view class="order-list">
26 <!-- 有数据才循环 --> 43 <!-- 有数据才循环 -->
44 <!-- <view v-if="list.length > 0">-->
45 <!-- <view-->
46 <!-- v-for="(item, index) in list"-->
47 <!-- :key="index"-->
48 <!-- class="order-card"-->
49 <!-- @click="goToDetail(item)"-->
50 <!-- >-->
51 <!-- &lt;!&ndash; 订单头部:日期 + 状态 &ndash;&gt;-->
52 <!-- <view class="card-header">-->
53 <!-- <view class="date">-->
54 <!-- &lt;!&ndash; <image :src="config.baseUrl_api + '/fs/static/calendar@2x.png'" mode="widthFix" style="width:30rpx;height:30rpx;"/> &ndash;&gt;-->
55 <!-- &lt;!&ndash; &ndash;&gt;-->
56 <!-- <text class="value text-primary">{{ item.wfCode || '——' }}</text>-->
57 <!-- </view>-->
58 <!-- <view class="status-tags">-->
59 <!-- &lt;!&ndash; <view-->
60 <!-- class="status-tag"-->
61 <!-- :class="{-->
62 <!-- success: item.payStatus == 1,-->
63 <!-- danger: item.payStatus == 2,-->
64 <!-- pending: item.payStatus == 0-->
65 <!-- }"-->
66 <!-- >-->
67 <!-- {{ getStatusText(item.payStatus) }}-->
68 <!-- </view> &ndash;&gt;-->
69 <!-- <view-->
70 <!-- :class="{-->
71 <!-- 'status-wait': item.auditStatus == 0,-->
72 <!-- 'status-pending': item.auditStatus == 1,-->
73 <!-- 'status-success': item.auditStatus == 2,-->
74 <!-- 'status-danger': item.auditStatus == 3-->
75 <!-- }"-->
76 <!-- class="status-tag ml-10"-->
77 <!-- >-->
78 <!-- {{ getAuditStatusText(item.auditStatus) }}-->
79 <!-- </view>-->
80 <!-- </view>-->
81 <!-- </view>-->
82 <!-- -->
83 <!-- &lt;!&ndash; 订单编号、缴费编号 &ndash;&gt;-->
84 <!-- <view class="info-row">-->
85 <!-- <text class="label">订单编号:</text>-->
86 <!-- <text class="value">{{ item.tradeNo || '——' }}</text>-->
87 <!-- </view>-->
88 <!-- <view v-if="item.orderName" class="info-row">-->
89 <!-- <text class="label">缴费名称:</text>-->
90 <!-- <text class="value">{{ item.orderName || '' }}</text>-->
91 <!-- </view>-->
92 <!-- &lt;!&ndash; <view class="info-row">-->
93 <!-- <text class="label">缴费编号:</text>-->
94 <!-- -->
95 <!-- </view> &ndash;&gt;-->
96 <!-- -->
97 <!-- &lt;!&ndash; 核心:前2tab仅展示缴费年限,后2tab仅展示人数合计 &ndash;&gt;-->
98 <!-- <view v-if="item.content" class="info-section flex f-j-s">-->
99 <!-- &lt;!&ndash; 个人/单位会员(仅缴费年限) &ndash;&gt;-->
100 <!-- <view v-if="currentTab === '0' || currentTab === '1'" class="single-info">-->
101 <!-- <view class="label">缴费年限:</view>-->
102 <!-- <view class="value">{{ item.content.yearCount || 0 }}</view>-->
103 <!-- </view>-->
104 <!-- &lt;!&ndash; 级位/段位考试(仅人数合计) &ndash;&gt;-->
105 <!-- <view v-if="currentTab === '2' || currentTab === '3' || currentTab === '4'" class="single-info">-->
106 <!-- <view class="label">人数合计</view>-->
107 <!-- <view class="value">{{ item.content.personCount || 0 }}</view>-->
108 <!-- </view>-->
109 <!-- <view class="line"></view>-->
110 <!-- <view class="single-info">-->
111 <!-- <view class="label">订单状态</view>-->
112 <!-- <view :class="item.effect == 1 ? 'text-success' : 'text-warning'" class="value">-->
113 <!-- {{ item.effect == 1 ? '已生效' : '未生效' }}-->
114 <!-- </view>-->
115 <!-- </view>-->
116 <!-- <view class="line"></view>-->
117 <!-- <view class="single-info">-->
118 <!-- <view class="label">缴费状态</view>-->
119 <!-- <view-->
120 <!-- :class="{-->
121 <!-- 'text-primary': item.payStatus == 0,-->
122 <!-- 'text-success': item.payStatus == 1,-->
123 <!-- 'text-danger': item.payStatus == 2-->
124 <!-- }"-->
125 <!-- class="value"-->
126 <!-- >-->
127 <!-- {{ item.payStatus == 0 ? '待缴费' : item.payStatus == 1 ? '缴费成功' : '订单取消' }}-->
128 <!-- </view>-->
129 <!-- </view>-->
130 <!-- </view>-->
131 <!-- -->
132 <!-- &lt;!&ndash; 费用合计 + 缴费方式 &ndash;&gt;-->
133 <!-- <view class="price-section">-->
134 <!-- <view class="price-row">-->
135 <!-- <text class="price-label">费用合计</text>-->
136 <!-- <text class="price-value">¥{{ (Number(item.price) || 0).toFixed(2) }}</text>-->
137 <!-- </view>-->
138 <!-- <view class="price-row">-->
139 <!-- <text class="price-label">缴费方式</text>-->
140 <!-- <text class="price-value">{{ item.ziZhangBu ? '对公转账' : '民生付' }}</text>-->
141 <!-- </view>-->
142 <!-- </view>-->
143 <!-- -->
144 <!-- &lt;!&ndash; 按钮组:靠右紧凑展示 &ndash;&gt;-->
145 <!-- <view class="btn-group">-->
146 <!-- &lt;!&ndash; 已缴费:申请开票/已开票(需要审核通过才能开票) &ndash;&gt;-->
147 <!-- <template v-if="item.payStatus == 1 && item.invoiceStatus != 1&& item.auditStatus == 2 &&item.price>0">-->
148 <!-- <button :disabled="item.invoiceStatus === 1" class="btn btn-view-invoice" @click="makeInvoiceFN(item)">-->
149 <!-- 开票-->
150 <!-- </button>-->
151 <!-- </template>-->
152 <!-- &lt;!&ndash; 已开票:查看发票 &ndash;&gt;-->
153 <!-- <template v-if="item.invoiceStatus == 1">-->
154 <!-- <button class="btn btn-invoice" @click.stop="viewInvoice(item)">查看发票</button>-->
155 <!-- </template>-->
156 <!-- &lt;!&ndash; 未缴费:去缴费 + 取消订单 &ndash;&gt;-->
157 <!-- &lt;!&ndash; <template v-if="item.payStatus == 0">-->
158 <!-- <button class="btn btn-cancel" @click="handleCancel(item)">取消订单</button>-->
159 <!-- <button class="btn btn-pay" @click="handlePay(item)">去缴费</button>-->
160 <!-- </template> &ndash;&gt;-->
161 <!-- </view>-->
162 <!-- </view>-->
163 <!-- </view>-->
164
165 <!-- 有数据才循环 -->
27 <view v-if="list.length > 0"> 166 <view v-if="list.length > 0">
28 <view 167 <view
29 v-for="(item, index) in list" 168 v-for="(item, index) in list"
30 :key="index" 169 :key="index"
31 class="order-card" 170 class="order-card-new"
32 @click="goToDetail(item)" 171 @click="goToDetail(item)"
33 > 172 >
34 <!-- 订单头部:日期 + 状态 --> 173 <!-- 订单头部:日期 + 状态 -->
35 <view class="card-header"> 174 <view class="card-header">
36 <view class="date"> 175 <view class="date">
37 <!-- <image :src="config.baseUrl_api + '/fs/static/calendar@2x.png'" mode="widthFix" style="width:30rpx;height:30rpx;"/> --> 176 <view class="data-header">
38 <!-- --> 177 <text class="member-label">{{ tabs[currentTab].label }}·</text>
39 <text class="value text-primary">{{ item.wfCode || '——' }}</text> 178 <text class="value ">{{ item.orderName || '——' }}</text>
40 </view> 179 </view>
41 <view class="status-tags"> 180 <text :class="{
42 <!-- <view
43 class="status-tag"
44 :class="{
45 success: item.payStatus == 1,
46 danger: item.payStatus == 2,
47 pending: item.payStatus == 0
48 }"
49 >
50 {{ getStatusText(item.payStatus) }}
51 </view> -->
52 <view
53 :class="{
54 'status-wait': item.auditStatus == 0, 181 'status-wait': item.auditStatus == 0,
55 'status-pending': item.auditStatus == 1, 182 'status-pending': item.auditStatus == 1,
56 'status-success': item.auditStatus == 2, 183 'status-success': item.auditStatus == 2,
57 'status-danger': item.auditStatus == 3 184 'status-danger': item.auditStatus == 3
58 }" 185 }"
59 class="status-tag ml-10" 186 class="status-tag ">{{ getAuditStatusText(item.auditStatus) }}
60 > 187 </text>
61 {{ getAuditStatusText(item.auditStatus) }} 188 </view>
189 </view>
190 <view class="card-header">
191 <view class="date">
192 <view class="data-header">
193 <text class="value">
194 <text class="tradeNo">订单编号:</text>
195 {{ item.tradeNo || '——' }}
196 </text>
62 </view> 197 </view>
63 </view> 198 </view>
64 </view> 199 </view>
65 200 <view class="card-header">
66 <!-- 订单编号、缴费编号 --> 201 <view class="date">
67 <view class="info-row"> 202 <view class="data-header">
68 <text class="label">订单编号:</text> 203 <text class="value">
69 <text class="value">{{ item.tradeNo || '——' }}</text> 204 <text class="tradeNo">缴费编号:</text>
205 {{ item.wfCode || '——' }}
206 </text>
207 </view>
208 </view>
70 </view> 209 </view>
71 <view v-if="item.orderName" class="info-row"> 210 <view class="member-time">
72 <text class="label">缴费名称:</text> 211 <view class="label">
73 <text class="value">{{ item.orderName || '' }}</text> 212 <text class="star"></text>
213 {{ `${filterTime(item.genTime)}${filterType(item.type)}` }}
214 </view>
215 <view class="price">
216 <view>¥{{ item.price || '0.00' }}</view>
217 <view v-if="item.type==0" class="person">共{{ item.content?.allPersonCount || 0 }}人</view>
218 <view v-if="item.type==1" class="person">共{{ item.content?.yearCount || 0 }}年</view>
219 <view v-if="item.type==2||item.type==3||item.type==4" class="person">共{{
220 item.content?.personCount || 0
221 }}人
222 </view>
223 </view>
74 </view> 224 </view>
75 <!-- <view class="info-row">
76 <text class="label">缴费编号:</text>
77
78 </view> -->
79 225
80 <!-- 核心:前2tab仅展示缴费年限,后2tab仅展示人数合计 --> 226 <!-- 核心:前2tab仅展示缴费年限,后2tab仅展示人数合计 -->
81 <view v-if="item.content" class="info-section flex f-j-s"> 227 <view v-if="item.content" class="info-section flex f-j-s">
...@@ -112,35 +258,34 @@ ...@@ -112,35 +258,34 @@
112 </view> 258 </view>
113 </view> 259 </view>
114 260
115 <!-- 费用合计 + 缴费方式 --> 261 <!-- 按钮组:靠右紧凑展示 -->
116 <view class="price-section"> 262 <view class="btn-group">
117 <view class="price-row"> 263 <view>
118 <text class="price-label">费用合计</text> 264 <text class="more" @click="goToDetail(item)">更多</text>
119 <text class="price-value">¥{{ (Number(item.price) || 0).toFixed(2) }}</text>
120 </view> 265 </view>
121 <view class="price-row"> 266 <view class="btn-flex">
122 <text class="price-label">缴费方式</text> 267 <!-- 已缴费:申请开票/已开票(需要审核通过才能开票) -->
123 <text class="price-value">{{ item.ziZhangBu ? '对公转账' : '民生付' }}</text> 268 <template>
269 <button class="btn btn-info" @click="goToDetail(item)">查看明细</button>
270 </template>
271 <!-- 已缴费:申请开票/已开票(需要审核通过才能开票) -->
272 <template v-if="item.payStatus == 1 && item.invoiceStatus != 1&& item.auditStatus == 2 &&item.price>0">
273 <button :disabled="item.invoiceStatus === 1" class="btn btn-view-invoice"
274 @click="makeInvoiceFN(item)">
275 开票
276 </button>
277 </template>
278 <!-- 已开票:查看发票 -->
279 <template v-if="item.invoiceStatus == 1">
280 <button class="btn btn-invoice" @click.stop="viewInvoice(item)">查看发票</button>
281 </template>
282 <!-- 未缴费:去缴费 + 取消订单 -->
283 <!-- <template v-if="item.payStatus == 0">
284 <button class="btn btn-cancel" @click="handleCancel(item)">取消订单</button>
285 <button class="btn btn-pay" @click="handlePay(item)">去缴费</button>
286 </template> -->
124 </view> 287 </view>
125 </view>
126 288
127 <!-- 按钮组:靠右紧凑展示 -->
128 <view class="btn-group">
129 <!-- 已缴费:申请开票/已开票(需要审核通过才能开票) -->
130 <template v-if="item.payStatus == 1 && item.invoiceStatus != 1&& item.auditStatus == 2 &&item.price>0">
131 <button :disabled="item.invoiceStatus === 1" class="btn btn-view-invoice" @click="makeInvoiceFN(item)">
132 开票
133 </button>
134 </template>
135 <!-- 已开票:查看发票 -->
136 <template v-if="item.invoiceStatus == 1">
137 <button class="btn btn-invoice" @click.stop="viewInvoice(item)">查看发票</button>
138 </template>
139 <!-- 未缴费:去缴费 + 取消订单 -->
140 <!-- <template v-if="item.payStatus == 0">
141 <button class="btn btn-cancel" @click="handleCancel(item)">取消订单</button>
142 <button class="btn btn-pay" @click="handlePay(item)">去缴费</button>
143 </template> -->
144 </view> 289 </view>
145 </view> 290 </view>
146 </view> 291 </view>
...@@ -233,6 +378,7 @@ import { ...@@ -233,6 +378,7 @@ import {
233 } from '@dcloudio/uni-app' 378 } from '@dcloudio/uni-app'
234 import * as api from '@/common/api.js' 379 import * as api from '@/common/api.js'
235 import config from '@/config.js' 380 import config from '@/config.js'
381 import dayjs from 'dayjs'
236 // 获取deptType值(初始值为0,在onMounted中设置实际值) 382 // 获取deptType值(初始值为0,在onMounted中设置实际值)
237 const deptType = ref(0); 383 const deptType = ref(0);
238 384
...@@ -245,29 +391,29 @@ const tabs = computed(() => { ...@@ -245,29 +391,29 @@ const tabs = computed(() => {
245 if (dt === 6) { 391 if (dt === 6) {
246 console.log('返回3个tab: 个人会员、单位会员、级位考试'); 392 console.log('返回3个tab: 个人会员、单位会员、级位考试');
247 return [ 393 return [
248 {name: '个人会员', type: '0'}, 394 {name: '个人会员', type: '0', label: "会员"},
249 {name: '单位会员', type: '1'}, 395 {name: '单位会员', type: '1', label: "单位"},
250 {name: '级位考试', type: '2'} 396 {name: '级位考试', type: '2', label: "级位"}
251 ]; 397 ];
252 } else if (dt === 2) { 398 } else if (dt === 2) {
253 console.log('返回3个tab: 单位会员、段位考试、越段考试'); 399 console.log('返回3个tab: 单位会员、段位考试、越段考试');
254 return [ 400 return [
255 // {name: '单位会员', type: '1'}, 401 // {name: '单位会员', type: '1'},
256 {name: '段位考试', type: '3'}, 402 {name: '段位考试', type: '3', label: "段位"},
257 {name: '越段考试', type: '4'} 403 {name: '越段考试', type: '4', label: "越段"}
258 ]; 404 ];
259 } else if (dt === 1) { 405 } else if (dt === 1) {
260 console.log('返回默认5个tab, dt值为:', dt); 406 console.log('返回默认5个tab, dt值为:', dt);
261 return [ 407 return [
262 {name: '个人会员', type: '0'}, 408 {name: '个人会员', type: '0', label: "会员"},
263 {name: '单位会员', type: '1'}, 409 {name: '单位会员', type: '1', label: "单位"},
264 {name: '级位考试', type: '2'}, 410 {name: '级位考试', type: '2', label: "级位"},
265 {name: '段位考试', type: '3'}, 411 {name: '段位考试', type: '3', label: "段位"},
266 {name: '越段考试', type: '4'} 412 {name: '越段考试', type: '4', label: "越段"}
267 ]; 413 ];
268 } else { 414 } else {
269 return [ 415 return [
270 {name: '单位会员', type: '1'}, 416 {name: '单位会员', type: '1', label: "单位"},
271 ]; 417 ];
272 } 418 }
273 }); 419 });
...@@ -309,8 +455,10 @@ onLoad((option) => { ...@@ -309,8 +455,10 @@ onLoad((option) => {
309 const app = getApp(); 455 const app = getApp();
310 deptType.value = Number(app.globalData?.deptType || 0); 456 deptType.value = Number(app.globalData?.deptType || 0);
311 const firstType = tabs.value[0]?.type ?? '0'; 457 const firstType = tabs.value[0]?.type ?? '0';
312 currentTab.value = option.type || firstType; 458 // currentTab.value = option.type || firstType;
313 queryParams.type = option.type || firstType; 459 // queryParams.type = option.type || firstType;
460 currentTab.value = firstType;
461 queryParams.type = firstType;
314 initData(); 462 initData();
315 }); 463 });
316 464
...@@ -368,6 +516,20 @@ const getAuditStatusText = (status) => { ...@@ -368,6 +516,20 @@ const getAuditStatusText = (status) => {
368 return map[status] || ''; 516 return map[status] || '';
369 }; 517 };
370 518
519 const filterTime = (row) => {
520 if (!row) return ''
521 return dayjs(row).format('YYYY年MM月DD日')
522 }
523
524 const filterType = (row) => {
525 if (row == 0) return '个人会员缴费办理'
526 if (row == 1) return '单位会员缴费办理'
527 if (row == 2) return '级位考试办理'
528 if (row == 3) return '段位考试办理'
529 if (row == 4) return '越位考试办理'
530 }
531
532
371 // 数据请求核心方法 533 // 数据请求核心方法
372 const initData = async () => { 534 const initData = async () => {
373 loading.value = true; 535 loading.value = true;
...@@ -409,6 +571,12 @@ const initData = async () => { ...@@ -409,6 +571,12 @@ const initData = async () => {
409 } 571 }
410 }; 572 };
411 573
574 const handelSearch = () => {
575 pageNum.value = 1
576 list.value = []
577 initData()
578 }
579
412 // 删除订单 580 // 删除订单
413 const handleDelete = (item) => { 581 const handleDelete = (item) => {
414 currentOrder.value = item; 582 currentOrder.value = item;
...@@ -425,7 +593,7 @@ const confirmDel = async () => { ...@@ -425,7 +593,7 @@ const confirmDel = async () => {
425 uni.showToast({title: '删除成功', icon: 'success'}); 593 uni.showToast({title: '删除成功', icon: 'success'});
426 pageNum.value = 1; 594 pageNum.value = 1;
427 list.value = []; 595 list.value = [];
428 initData(); 596 await initData();
429 closeDelPopup(); 597 closeDelPopup();
430 } catch (e) { 598 } catch (e) {
431 uni.showToast({title: '删除失败', icon: 'error'}); 599 uni.showToast({title: '删除失败', icon: 'error'});
...@@ -521,7 +689,7 @@ const confirmCancel = async () => { ...@@ -521,7 +689,7 @@ const confirmCancel = async () => {
521 uni.showToast({title: '取消成功', icon: 'success'}); 689 uni.showToast({title: '取消成功', icon: 'success'});
522 pageNum.value = 1; 690 pageNum.value = 1;
523 list.value = []; 691 list.value = [];
524 initData(); 692 await initData();
525 closeCancelPopup(); 693 closeCancelPopup();
526 } catch (e) { 694 } catch (e) {
527 uni.showToast({title: '取消失败', icon: 'error'}); 695 uni.showToast({title: '取消失败', icon: 'error'});
...@@ -549,24 +717,67 @@ const closeCancelPopup = () => { ...@@ -549,24 +717,67 @@ const closeCancelPopup = () => {
549 } 717 }
550 } 718 }
551 719
720 /* 搜索栏 */
721 .search-bar {
722 display: flex;
723 align-items: center;
724 padding: 20rpx 30rpx;
725 background-color: #ffffff;
726 margin-bottom: 0;
727
728 .search-input {
729 flex: 1;
730 margin-right: 20rpx;
731
732 :deep(.uni-easyinput__content) {
733 border-radius: 40rpx;
734 background-color: #f5f7fa;
735 height: 76rpx;
736 padding: 0 24rpx;
737 }
738
739 :deep(.uni-easyinput__content-input) {
740 font-size: 28rpx;
741 color: #333;
742 }
743 }
744
745 .add-btn {
746 display: flex;
747 align-items: center;
748 padding: 10rpx 30rpx;
749 background-color: #AD181F;
750 border-radius: 40rpx;
751 font-size: 28rpx;
752 color: #ffffff;
753 }
754
755 .add-icon {
756 font-size: 36rpx;
757 margin-right: 10rpx;
758 font-weight: bold;
759 }
760 }
761
552 // 标签栏样式 762 // 标签栏样式
553 .tab-bar { 763 .tab-bar {
554 display: flex; 764 display: flex;
555 background: #fff; 765 //background: #fff;
556 border-bottom: 1rpx solid #eee; 766 //border-bottom: 1rpx solid #eee;
557 flex-shrink: 0; 767 flex-shrink: 0;
558 768
559 .tab-item { 769 .tab-item {
560 flex: 1; 770 flex: 1;
561 text-align: center; 771 text-align: center;
562 padding: 24rpx 0; 772 padding: 24rpx 0;
563 font-size: 28rpx; 773 font-size: 30rpx;
564 color: #666; 774 color: #666;
565 position: relative; 775 position: relative;
776 font-weight: bold;
566 777
567 &.active { 778 &.active {
568 color: #e4393c; 779 color: #c30d23;
569 font-weight: 500; 780 font-weight: bold;
570 781
571 &::after { 782 &::after {
572 content: ''; 783 content: '';
...@@ -575,8 +786,9 @@ const closeCancelPopup = () => { ...@@ -575,8 +786,9 @@ const closeCancelPopup = () => {
575 left: 50%; 786 left: 50%;
576 transform: translateX(-50%); 787 transform: translateX(-50%);
577 width: 60rpx; 788 width: 60rpx;
578 height: 4rpx; 789 height: 6rpx;
579 background: linear-gradient(90deg, #FF755A, #F51722); 790 //background: linear-gradient(90deg, #FF755A, #F51722);
791 background: #c30d23;
580 border-radius: 2rpx; 792 border-radius: 2rpx;
581 } 793 }
582 } 794 }
...@@ -614,7 +826,7 @@ const closeCancelPopup = () => { ...@@ -614,7 +826,7 @@ const closeCancelPopup = () => {
614 display: flex; 826 display: flex;
615 justify-content: space-between; 827 justify-content: space-between;
616 align-items: center; 828 align-items: center;
617 padding-bottom: 20rpx; 829 padding-bottom: 10rpx;
618 // margin-bottom: 20rpx; 830 // margin-bottom: 20rpx;
619 // border-bottom: 1rpx dashed #eee; 831 // border-bottom: 1rpx dashed #eee;
620 832
...@@ -636,21 +848,21 @@ const closeCancelPopup = () => { ...@@ -636,21 +848,21 @@ const closeCancelPopup = () => {
636 848
637 .status-tag { 849 .status-tag {
638 font-size: 22rpx; 850 font-size: 22rpx;
639 padding: 6rpx 16rpx; 851 //padding: 6rpx 16rpx;
640 border-radius: 20rpx; 852 //border-radius: 20rpx;
641 853
642 &.success { 854 &.success {
643 background: #e6f7ef; 855 //background: #e6f7ef;
644 color: #52c41a; 856 color: #52c41a;
645 } 857 }
646 858
647 &.danger { 859 &.danger {
648 background: #fff1f0; 860 //background: #fff1f0;
649 color: #ff4d4f; 861 color: #ff4d4f;
650 } 862 }
651 863
652 &.pending { 864 &.pending {
653 background: #f5f5f5; 865 //background: #f5f5f5;
654 color: #999; 866 color: #999;
655 } 867 }
656 868
...@@ -659,27 +871,27 @@ const closeCancelPopup = () => { ...@@ -659,27 +871,27 @@ const closeCancelPopup = () => {
659 } 871 }
660 872
661 &.status-wait { 873 &.status-wait {
662 background: #f0f5ff; 874 //background: #f0f5ff;
663 color: #597ef7; 875 color: #597ef7;
664 border: 1rpx solid rgba(89, 126, 247, 0.3); 876 //border: 1rpx solid rgba(89, 126, 247, 0.3);
665 } 877 }
666 878
667 &.status-pending { 879 &.status-pending {
668 background: #fff7e6; 880 //background: #fff7e6;
669 color: #faad14; 881 color: #faad14;
670 border: 1rpx solid rgba(250, 173, 20, 0.3); 882 //border: 1rpx solid rgba(250, 173, 20, 0.3);
671 } 883 }
672 884
673 &.status-success { 885 &.status-success {
674 background: #e6f7ef; 886 //background: #e6f7ef;
675 color: #52c41a; 887 color: #52c41a;
676 border: 1rpx solid rgba(82, 196, 26, 0.3); 888 //border: 1rpx solid rgba(82, 196, 26, 0.3);
677 } 889 }
678 890
679 &.status-danger { 891 &.status-danger {
680 background: #fff1f0; 892 //background: #fff1f0;
681 color: #ff4d4f; 893 color: #ff4d4f;
682 border: 1rpx solid rgba(232, 52, 29, 0.3); 894 //border: 1rpx solid rgba(232, 52, 29, 0.3);
683 } 895 }
684 } 896 }
685 } 897 }
...@@ -708,9 +920,10 @@ const closeCancelPopup = () => { ...@@ -708,9 +920,10 @@ const closeCancelPopup = () => {
708 display: flex; 920 display: flex;
709 align-items: center; 921 align-items: center;
710 justify-content: space-between; 922 justify-content: space-between;
711 margin: 20rpx 0; 923 //margin: 20rpx 0;
712 padding: 0 20rpx; 924 padding: 0 20rpx;
713 min-height: 100rpx; 925 min-height: 100rpx;
926 border-radius: 20rpx;
714 } 927 }
715 928
716 .line { 929 .line {
...@@ -726,6 +939,7 @@ const closeCancelPopup = () => { ...@@ -726,6 +939,7 @@ const closeCancelPopup = () => {
726 border-radius: 8rpx; 939 border-radius: 8rpx;
727 font-size: 26rpx; 940 font-size: 26rpx;
728 text-align: center; 941 text-align: center;
942
729 .label { 943 .label {
730 color: #999; 944 color: #999;
731 text-align: center; 945 text-align: center;
...@@ -736,19 +950,19 @@ const closeCancelPopup = () => { ...@@ -736,19 +950,19 @@ const closeCancelPopup = () => {
736 font-weight: 500; 950 font-weight: 500;
737 text-align: center; 951 text-align: center;
738 margin-top: 10rpx; 952 margin-top: 10rpx;
739 953
740 &.text-primary { 954 &.text-primary {
741 color: #597ef7; 955 color: #597ef7;
742 } 956 }
743 957
744 &.text-success { 958 &.text-success {
745 color: #52c41a; 959 color: #52c41a;
746 } 960 }
747 961
748 &.text-danger { 962 &.text-danger {
749 color: #ff4d4f; 963 color: #ff4d4f;
750 } 964 }
751 965
752 &.text-warning { 966 &.text-warning {
753 color: #faad14; 967 color: #faad14;
754 } 968 }
...@@ -790,21 +1004,32 @@ const closeCancelPopup = () => { ...@@ -790,21 +1004,32 @@ const closeCancelPopup = () => {
790 // 按钮组 1004 // 按钮组
791 .btn-group { 1005 .btn-group {
792 display: flex; 1006 display: flex;
793 justify-content: flex-end; 1007 justify-content: space-between;
794 align-items: center; 1008 align-items: center;
795 gap: 16rpx; 1009 gap: 16rpx;
796 width: 100%; 1010 width: 100%;
797 margin-top: 20rpx; 1011 margin-top: 20rpx;
798 1012
1013 .more {
1014 color: #666;
1015 }
1016
1017 .btn-flex {
1018 display: flex;
1019 justify-content: flex-end;
1020 gap: 16rpx;
1021 }
1022
799 .btn { 1023 .btn {
800 // 固定宽度,所有按钮一样大 1024 // 固定宽度,所有按钮一样大
801 width: 160rpx; 1025 width: 160rpx;
802 height: 70rpx; 1026 height: 50rpx;
803 line-height: 70rpx; 1027 line-height: 50rpx;
804 padding: 0; 1028 padding: 0;
805 border-radius: 40rpx; 1029 border-radius: 20rpx;
806 font-size: 24rpx; 1030 font-size: 28rpx;
807 white-space: nowrap; 1031 white-space: nowrap;
1032 font-weight: bold;
808 border: none; 1033 border: none;
809 background: transparent; 1034 background: transparent;
810 text-align: center; 1035 text-align: center;
...@@ -817,20 +1042,27 @@ const closeCancelPopup = () => { ...@@ -817,20 +1042,27 @@ const closeCancelPopup = () => {
817 1042
818 &.btn-delete { 1043 &.btn-delete {
819 background: #fff; 1044 background: #fff;
820 color: #e4393c; 1045 //color: #e4393c;
821 border: 1rpx solid #e4393c; 1046 color: #c30d23;
1047 border: 1rpx solid #c30d23;
822 } 1048 }
823 1049
824 &.btn-invoice { 1050 &.btn-invoice {
825 background: #fff; 1051 background: #fff;
826 color: #e4393c; 1052 color: #c30d23;
827 border: 1rpx solid #e4393c; 1053 border: 1rpx solid #c30d23;
828 } 1054 }
829 1055
830 &.btn-view-invoice { 1056 &.btn-view-invoice {
831 background: linear-gradient(90deg, #FF755A, #F51722); 1057 //background: linear-gradient(90deg, #FF755A, #F51722);
832 color: #fff; 1058 color: #c30d23;
833 border: none; 1059 //border: none;
1060 border: 1rpx solid #c30d23;
1061 }
1062
1063 &.btn-info {
1064 color: #444;
1065 border: 1rpx solid #666;
834 } 1066 }
835 1067
836 &.btn-cancel { 1068 &.btn-cancel {
...@@ -840,9 +1072,10 @@ const closeCancelPopup = () => { ...@@ -840,9 +1072,10 @@ const closeCancelPopup = () => {
840 } 1072 }
841 1073
842 &.btn-pay { 1074 &.btn-pay {
843 background: linear-gradient(90deg, #FF755A, #F51722); 1075 //background: linear-gradient(90deg, #FF755A, #F51722);
844 color: #fff; 1076 color: #c30d23;
845 border: none; 1077 //border: none;
1078 border: 1rpx solid #c30d23;
846 } 1079 }
847 1080
848 &:disabled { 1081 &:disabled {
...@@ -1040,4 +1273,143 @@ const closeCancelPopup = () => { ...@@ -1040,4 +1273,143 @@ const closeCancelPopup = () => {
1040 } 1273 }
1041 } 1274 }
1042 } 1275 }
1276
1277 .order-card-new {
1278 background: #fff;
1279 margin-bottom: 20rpx;
1280 padding: 20rpx;
1281 box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
1282 border-radius: 12rpx;
1283 display: flex;
1284 flex-direction: column;
1285
1286
1287 // 卡片头部
1288 .card-header {
1289 display: flex;
1290 justify-content: space-between;
1291 align-items: center;
1292 padding-bottom: 10rpx;
1293 // margin-bottom: 20rpx;
1294 // border-bottom: 1rpx dashed #eee;
1295
1296 .date {
1297 width: 100%;
1298 display: flex;
1299 align-items: center;
1300 justify-content: space-between;
1301 gap: 8rpx;
1302 font-size: 26rpx;
1303
1304 .data-header {
1305 display: flex;
1306 }
1307
1308 .member-label {
1309 color: #c30d23;
1310 font-size: 28rpx;
1311 font-weight: bold;
1312 }
1313
1314 .value {
1315 color: #000;
1316 font-size: 28rpx;
1317 font-weight: bold;
1318
1319 .tradeNo {
1320 color: #999;
1321 font-size: 26rpx;
1322 }
1323 }
1324
1325 .date-text {
1326 color: #666;
1327 }
1328 }
1329
1330
1331 .status-tags {
1332 display: flex;
1333 gap: 10rpx;
1334 }
1335
1336 .status-tag {
1337 font-size: 26rpx;
1338 //padding: 6rpx 16rpx;
1339 //border-radius: 20rpx;
1340
1341 &.success {
1342 //background: #e6f7ef;
1343 color: #52c41a;
1344 }
1345
1346 &.danger {
1347 //background: #fff1f0;
1348 color: #ff4d4f;
1349 }
1350
1351 &.pending {
1352 //background: #f5f5f5;
1353 color: #999;
1354 }
1355
1356 &.ml-10 {
1357 margin-left: 10rpx;
1358 }
1359
1360 &.status-wait {
1361 //background: #f0f5ff;
1362 color: #597ef7;
1363 //border: 1rpx solid rgba(89, 126, 247, 0.3);
1364 }
1365
1366 &.status-pending {
1367 //background: #fff7e6;
1368 color: #faad14;
1369 //border: 1rpx solid rgba(250, 173, 20, 0.3);
1370 }
1371
1372 &.status-success {
1373 //background: #e6f7ef;
1374 color: #52c41a;
1375 //border: 1rpx solid rgba(82, 196, 26, 0.3);
1376 }
1377
1378 &.status-danger {
1379 //background: #fff1f0;
1380 color: #ff4d4f;
1381 //border: 1rpx solid rgba(232, 52, 29, 0.3);
1382 }
1383 }
1384 }
1385
1386 .member-time {
1387 width: 100%;
1388 display: flex;
1389 justify-content: space-between;
1390 padding-bottom: 10rpx;
1391
1392 .label {
1393 font-size: 26rpx;
1394 color: #999;
1395
1396 .star {
1397 color: #000;
1398 font-size: 28rpx;
1399 }
1400 }
1401
1402 .price {
1403 font-size: 30rpx;
1404 color: #000;
1405 font-weight: bold;
1406
1407 .person {
1408 font-size: 24rpx;
1409 color: #999;
1410 text-align: right;
1411 }
1412 }
1413 }
1414 }
1043 </style> 1415 </style>
......
1 <template> 1 <template>
2 <view> 2 <view>
3 3
4 4
5 <scroll-view scroll-y class="detail-content"> 5 <scroll-view class="detail-content" scroll-y>
6 <!-- 考段基本信息 --> 6 <!-- 考段基本信息 -->
7 <view class="card"> 7 <view class="card">
8 <view class="card-header"> 8 <view class="card-header">
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
10 </view> 10 </view>
11 <view class="card-body"> 11 <view class="card-body">
12 <view class="info-row"> 12 <view class="info-row">
13 <text class="label">名称</text> 13 <text class="label">名称</text>
14 <text class="value">{{ form.name || '' }}</text> 14 <text class="value">{{ form.name || '' }}</text>
15 </view> 15 </view>
16 <view class="info-row"> 16 <view class="info-row">
...@@ -38,15 +38,15 @@ ...@@ -38,15 +38,15 @@
38 <text class="label">考段地点</text> 38 <text class="label">考段地点</text>
39 <text class="value">{{ form.address || '--' }}</text> 39 <text class="value">{{ form.address || '--' }}</text>
40 </view> 40 </view>
41 <view class="info-row" v-if="userType == '2' || userType == '1'"> 41 <view v-if="userType == '2' || userType == '1'" class="info-row">
42 <text class="label">总金额</text> 42 <text class="label">总金额</text>
43 <text class="value text-red">¥{{ (Number(form.totalAmount) || 0).toFixed(2) }}</text> 43 <text class="value text-red">¥{{ (Number(form.totalAmount) || 0).toFixed(2) }}</text>
44 </view> 44 </view>
45 </view> 45 </view>
46 </view> 46 </view>
47 47
48 <!-- 收货地址 --> 48 <!-- 收货地址 -->
49 <view class="card" v-if="addressForm.name || addressForm.phone || addressForm.address"> 49 <view v-if="addressForm.name || addressForm.phone || addressForm.address" class="card">
50 <view class="card-header"> 50 <view class="card-header">
51 <view class="header-left">收货地址</view> 51 <view class="header-left">收货地址</view>
52 </view> 52 </view>
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
65 </view> 65 </view>
66 </view> 66 </view>
67 </view> 67 </view>
68 68
69 <!-- 考生信息(完全去字段名,匹配参考图布局) --> 69 <!-- 考生信息(完全去字段名,匹配参考图布局) -->
70 <view class="card"> 70 <view class="card">
71 <view class="card-header"> 71 <view class="card-header">
...@@ -74,33 +74,33 @@ ...@@ -74,33 +74,33 @@
74 {{ tablePersonInfo.total || 0 }} 74 {{ tablePersonInfo.total || 0 }}
75 </view> 75 </view>
76 </view> 76 </view>
77 77
78 <!-- 级别统计 --> 78 <!-- 级别统计 -->
79 <view class="level-summary" v-if="tablePersonInfo.levelArr?.length > 0"> 79 <view v-if="tablePersonInfo.levelArr?.length > 0" class="level-summary">
80 <view class="level-tag" v-for="l in tablePersonInfo.levelArr" :key="l.level"> 80 <view v-for="l in tablePersonInfo.levelArr" :key="l.level" class="level-tag">
81 {{ szToHz(l.level) }}{{ l.num }} 81 {{ szToHz(l.level) }}{{ l.num }}
82 </view> 82 </view>
83 </view> 83 </view>
84 84
85 <!-- 加载状态 --> 85 <!-- 加载状态 -->
86 <view v-if="loading" class="state-tip">加载中...</view> 86 <view v-if="loading" class="state-tip">加载中...</view>
87 <view v-else-if="list.length === 0" class="state-tip">暂无考生信息</view> 87 <view v-else-if="list.length === 0" class="state-tip">暂无考生信息</view>
88 88
89 <!-- 考生列表(去字段名,美观布局) --> 89 <!-- 考生列表(去字段名,美观布局) -->
90 <view class="student-list" v-else> 90 <view v-else class="student-list">
91 <view class="student-card" v-for="n in list" :key="n.id"> 91 <view v-for="n in list" :key="n.id" class="student-card">
92 <view class="student-top"> 92 <view class="student-top">
93 <view class="student-name"> 93 <view class="student-name">
94 <text class="name">{{ n.realName || '--' }}</text> 94 <text class="name">{{ n.realName || '--' }}</text>
95 <text class="unit">{{ n.memName || '' }}</text> 95 <text class="unit">{{ n.memName || '' }}</text>
96 </view> 96 </view>
97 <view class="pass-tag" :class="n.isPass == 1 ? 'pass' : 'fail'"> 97 <view :class="n.isPass == 1 ? 'pass' : 'fail'" class="pass-tag">
98 {{ n.isPass == 1 ? '通过' : '未通过' }} 98 {{ n.isPass == 1 ? '通过' : '未通过' }}
99 </view> 99 </view>
100 </view> 100 </view>
101 <view class="student-info"> 101 <view class="student-info">
102 <view class="info-col"> 102 <view class="info-col">
103 <text class="info-text" >{{ n.idcCode || '--' }}</text> 103 <text class="info-text">{{ n.idcCode || '--' }}</text>
104 </view> 104 </view>
105 <view class="info-col"> 105 <view class="info-col">
106 <text class="info-text">{{ !n.levelOld || n.levelOld == 0 ? '十级' : szToHz(n.levelOld) + '级' }}</text> 106 <text class="info-text">{{ !n.levelOld || n.levelOld == 0 ? '十级' : szToHz(n.levelOld) + '级' }}</text>
...@@ -108,33 +108,33 @@ ...@@ -108,33 +108,33 @@
108 <view class="info-col"> 108 <view class="info-col">
109 <text class="info-text">{{ n.levelNew ? szToHz(n.levelNew) + '级' : '--' }}</text> 109 <text class="info-text">{{ n.levelNew ? szToHz(n.levelNew) + '级' : '--' }}</text>
110 </view> 110 </view>
111 <view class="info-col" v-if="userType == '2' || userType == '1'"> 111 <view v-if="userType == '2' || userType == '1'" class="info-col">
112 <text class="info-text text-red">¥{{ (Number(n.examFee) || 0).toFixed(2) }}</text> 112 <text class="info-text text-red">¥{{ (Number(n.examFee) || 0).toFixed(2) }}</text>
113 </view> 113 </view>
114 </view> 114 </view>
115 </view> 115 </view>
116 </view> 116 </view>
117 117
118 <!-- 加载更多 --> 118 <!-- 加载更多 -->
119 <view class="load-more" v-if="list.length > 0 && hasMore" @click="loadMore"> 119 <view v-if="list.length > 0 && hasMore" class="load-more" @click="loadMore">
120 {{ loadingMore ? '加载中...' : '加载更多' }} 120 {{ loadingMore ? '加载中...' : '加载更多' }}
121 </view> 121 </view>
122 <!-- <view class="no-more" v-if="!hasMore && list.length > 0">没有更多了</view> --> 122 <!-- <view class="no-more" v-if="!hasMore && list.length > 0">没有更多了</view> -->
123 </view> 123 </view>
124 124
125 <!-- 审核记录 --> 125 <!-- 审核记录 -->
126 <view class="h3-padding">审核记录</view> 126 <view class="h3-padding">审核记录</view>
127 <view class="wBox"> 127 <view class="wBox">
128 <view v-if="loadingAudit" class="state-tip">加载中...</view> 128 <view v-if="loadingAudit" class="state-tip">加载中...</view>
129 <view v-else-if="recordList.length === 0" class="state-tip">暂无审核记录</view> 129 <view v-else-if="recordList.length === 0" class="state-tip">暂无审核记录</view>
130 <view class="stepItem" v-else v-for="(n, index) in recordList" :key="index"> 130 <view v-for="(n, index) in recordList" v-else :key="index" class="stepItem">
131 <view class="time">{{ n.auditTime || '待审批' }}</view> 131 <view class="time">{{ n.auditTime || '待审批' }}</view>
132 <view class="content"> 132 <view class="content">
133 <view class="status"> 133 <view class="status">
134 <text v-if="n.auditResult==1" class="text-success">审核通过</text> 134 <text v-if="n.auditResult==1" class="text-success">审核通过</text>
135 135
136 <text v-else-if="n.auditResult==0" class="text-danger">审核拒绝</text> 136 <text v-else-if="n.auditResult==0" class="text-danger">审核拒绝</text>
137 <text v-else class="text-primary">审核中</text> 137 <text v-else class="text-primary">审核中</text>
138 </view> 138 </view>
139 <view class="deptName">{{ n.auditDeptName || n.deptName || '--' }}</view> 139 <view class="deptName">{{ n.auditDeptName || n.deptName || '--' }}</view>
140 <view v-if="n.auditMsg">备注:{{ n.auditMsg }}</view> 140 <view v-if="n.auditMsg">备注:{{ n.auditMsg }}</view>
...@@ -148,9 +148,9 @@ ...@@ -148,9 +148,9 @@
148 <script setup> 148 <script setup>
149 import * as api from '@/common/api.js' 149 import * as api from '@/common/api.js'
150 import _ from 'underscore' 150 import _ from 'underscore'
151 import { ref } from 'vue' 151 import {ref} from 'vue'
152 import { onLoad } from '@dcloudio/uni-app' 152 import {onLoad} from '@dcloudio/uni-app'
153 import { szToHz } from '@/common/utils.js' 153 import {szToHz} from '@/common/utils.js'
154 154
155 const app = getApp() 155 const app = getApp()
156 const userType = ref('') 156 const userType = ref('')
...@@ -174,7 +174,7 @@ let examType = ref('2') ...@@ -174,7 +174,7 @@ let examType = ref('2')
174 174
175 onLoad((option) => { 175 onLoad((option) => {
176 if (!option.examId) { 176 if (!option.examId) {
177 uni.showToast({ title: '参数错误', icon: 'none' }) 177 uni.showToast({title: '参数错误', icon: 'none'})
178 setTimeout(() => uni.navigateBack(), 1500) 178 setTimeout(() => uni.navigateBack(), 1500)
179 return 179 return
180 } 180 }
...@@ -186,7 +186,7 @@ onLoad((option) => { ...@@ -186,7 +186,7 @@ onLoad((option) => {
186 }) 186 })
187 187
188 function initData() { 188 function initData() {
189 uni.showLoading({ title: '加载中' }) 189 uni.showLoading({title: '加载中'})
190 userType.value = app.globalData.userType || '3' 190 userType.value = app.globalData.userType || '3'
191 getForm() 191 getForm()
192 getList() 192 getList()
...@@ -200,12 +200,12 @@ function getForm() { ...@@ -200,12 +200,12 @@ function getForm() {
200 form.value = res.data || {} 200 form.value = res.data || {}
201 addressForm.value = res.data?.postAddress || {} 201 addressForm.value = res.data?.postAddress || {}
202 } else { 202 } else {
203 uni.showToast({ title: res.msg || '获取详情失败', icon: 'none' }) 203 uni.showToast({title: res.msg || '获取详情失败', icon: 'none'})
204 } 204 }
205 }).catch(err => { 205 }).catch(err => {
206 uni.hideLoading() 206 uni.hideLoading()
207 console.error('getForm error:', err) 207 console.error('getForm error:', err)
208 uni.showToast({ title: '网络请求失败', icon: 'none' }) 208 uni.showToast({title: '网络请求失败', icon: 'none'})
209 }) 209 })
210 } 210 }
211 211
...@@ -235,7 +235,7 @@ function getList() { ...@@ -235,7 +235,7 @@ function getList() {
235 235
236 function calcPersonInfo(rows) { 236 function calcPersonInfo(rows) {
237 if (!rows || rows.length === 0) { 237 if (!rows || rows.length === 0) {
238 tablePersonInfo.value = { total: 0, levelArr: [] } 238 tablePersonInfo.value = {total: 0, levelArr: []}
239 return 239 return
240 } 240 }
241 const total = rows.length 241 const total = rows.length
...@@ -246,7 +246,7 @@ function calcPersonInfo(rows) { ...@@ -246,7 +246,7 @@ function calcPersonInfo(rows) {
246 if (temp) { 246 if (temp) {
247 temp.num++ 247 temp.num++
248 } else { 248 } else {
249 levelArr.push({ level: d.levelNew, num: 1 }) 249 levelArr.push({level: d.levelNew, num: 1})
250 } 250 }
251 }) 251 })
252 tablePersonInfo.value = { 252 tablePersonInfo.value = {
...@@ -288,7 +288,7 @@ function loadMore() { ...@@ -288,7 +288,7 @@ function loadMore() {
288 288
289 function getAuditResultText(result, statusStr) { 289 function getAuditResultText(result, statusStr) {
290 if (statusStr) return statusStr 290 if (statusStr) return statusStr
291 const map = { 0: '审核拒绝', 1: '审核通过' } 291 const map = {0: '审核拒绝', 1: '审核通过'}
292 return map[result] || '审核中' 292 return map[result] || '审核中'
293 } 293 }
294 294
...@@ -314,7 +314,7 @@ function goBack() { ...@@ -314,7 +314,7 @@ function goBack() {
314 } 314 }
315 </script> 315 </script>
316 316
317 <style scoped lang="scss"> 317 <style lang="scss" scoped>
318 // 颜色变量 - 小程序主色系 318 // 颜色变量 - 小程序主色系
319 $primary-color: #e8341d; 319 $primary-color: #e8341d;
320 $success-color: #52c41a; 320 $success-color: #52c41a;
...@@ -343,7 +343,7 @@ $content-gap: 24rpx; // 统一内容边距 ...@@ -343,7 +343,7 @@ $content-gap: 24rpx; // 统一内容边距
343 position: sticky; 343 position: sticky;
344 top: 0; 344 top: 0;
345 z-index: 100; 345 z-index: 100;
346 346
347 .back-btn { 347 .back-btn {
348 width: 40rpx; 348 width: 40rpx;
349 height: 40rpx; 349 height: 40rpx;
...@@ -351,13 +351,13 @@ $content-gap: 24rpx; // 统一内容边距 ...@@ -351,13 +351,13 @@ $content-gap: 24rpx; // 统一内容边距
351 align-items: center; 351 align-items: center;
352 justify-content: center; 352 justify-content: center;
353 } 353 }
354 354
355 .nav-title { 355 .nav-title {
356 font-size: 32rpx; 356 font-size: 32rpx;
357 font-weight: 500; 357 font-weight: 500;
358 color: $text-primary; 358 color: $text-primary;
359 } 359 }
360 360
361 .placeholder { 361 .placeholder {
362 width: 40rpx; 362 width: 40rpx;
363 } 363 }
...@@ -390,11 +390,11 @@ $content-gap: 24rpx; // 统一内容边距 ...@@ -390,11 +390,11 @@ $content-gap: 24rpx; // 统一内容边距
390 // display: flex; 390 // display: flex;
391 padding: 16rpx; 391 padding: 16rpx;
392 border-bottom: 1rpx dashed #eee; 392 border-bottom: 1rpx dashed #eee;
393 393
394 &:last-child { 394 &:last-child {
395 border-bottom: none; 395 border-bottom: none;
396 } 396 }
397 397
398 .time { 398 .time {
399 width: 80%; 399 width: 80%;
400 font-size: 22rpx; 400 font-size: 22rpx;
...@@ -402,21 +402,21 @@ $content-gap: 24rpx; // 统一内容边距 ...@@ -402,21 +402,21 @@ $content-gap: 24rpx; // 统一内容边距
402 flex-shrink: 0; 402 flex-shrink: 0;
403 padding-top: 4rpx; 403 padding-top: 4rpx;
404 } 404 }
405 405
406 .content { 406 .content {
407 flex: 1; 407 flex: 1;
408 408
409 .status { 409 .status {
410 font-size: 28rpx; 410 font-size: 28rpx;
411 font-weight: 600; 411 font-weight: 600;
412 margin-bottom: 6rpx; 412 margin-bottom: 6rpx;
413 } 413 }
414 414
415 .deptName { 415 .deptName {
416 font-size: 26rpx; 416 font-size: 26rpx;
417 color: #666; 417 color: #666;
418 } 418 }
419 419
420 view { 420 view {
421 font-size: 24rpx; 421 font-size: 24rpx;
422 color: #999; 422 color: #999;
...@@ -439,13 +439,13 @@ $content-gap: 24rpx; // 统一内容边距 ...@@ -439,13 +439,13 @@ $content-gap: 24rpx; // 统一内容边距
439 align-items: center; 439 align-items: center;
440 padding: 24rpx $content-gap 20rpx; 440 padding: 24rpx $content-gap 20rpx;
441 border-bottom: 1rpx solid $border-color; 441 border-bottom: 1rpx solid $border-color;
442 442
443 .header-left { 443 .header-left {
444 font-size: 30rpx; 444 font-size: 30rpx;
445 font-weight: 600; 445 font-weight: 600;
446 color: $text-primary; 446 color: $text-primary;
447 } 447 }
448 448
449 .header-right { 449 .header-right {
450 font-size: 26rpx; 450 font-size: 26rpx;
451 color: $primary-color; 451 color: $primary-color;
...@@ -464,18 +464,18 @@ $content-gap: 24rpx; // 统一内容边距 ...@@ -464,18 +464,18 @@ $content-gap: 24rpx; // 统一内容边距
464 align-items: center; 464 align-items: center;
465 padding: 18rpx 0; 465 padding: 18rpx 0;
466 border-bottom: 1rpx solid #f5f5f5; 466 border-bottom: 1rpx solid #f5f5f5;
467 467
468 &:last-child { 468 &:last-child {
469 border-bottom: none; 469 border-bottom: none;
470 } 470 }
471 471
472 .label { 472 .label {
473 font-size: 28rpx; 473 font-size: 28rpx;
474 color: $text-placeholder; 474 color: $text-placeholder;
475 flex-shrink: 0; 475 flex-shrink: 0;
476 width: 170rpx; 476 width: 170rpx;
477 } 477 }
478 478
479 .value { 479 .value {
480 font-size: 28rpx; 480 font-size: 28rpx;
481 color: $text-primary; 481 color: $text-primary;
...@@ -494,7 +494,7 @@ $content-gap: 24rpx; // 统一内容边距 ...@@ -494,7 +494,7 @@ $content-gap: 24rpx; // 统一内容边距
494 padding: 20rpx $content-gap; 494 padding: 20rpx $content-gap;
495 // background: #fff5f5; 495 // background: #fff5f5;
496 border-bottom: 1rpx solid $border-color; 496 border-bottom: 1rpx solid $border-color;
497 497
498 .level-tag { 498 .level-tag {
499 font-size: 24rpx; 499 font-size: 24rpx;
500 color: $primary-color; 500 color: $primary-color;
...@@ -523,40 +523,40 @@ $content-gap: 24rpx; // 统一内容边距 ...@@ -523,40 +523,40 @@ $content-gap: 24rpx; // 统一内容边距
523 margin-top: 16rpx; 523 margin-top: 16rpx;
524 border: 1rpx solid $border-color; 524 border: 1rpx solid $border-color;
525 // border-left: 4rpx solid $primary-color; 525 // border-left: 4rpx solid $primary-color;
526 526
527 .student-top { 527 .student-top {
528 display: flex; 528 display: flex;
529 justify-content: space-between; 529 justify-content: space-between;
530 align-items: center; 530 align-items: center;
531 margin-bottom: 20rpx; 531 margin-bottom: 20rpx;
532 532
533 .student-name { 533 .student-name {
534 .name { 534 .name {
535 font-size: 32rpx; 535 font-size: 32rpx;
536 font-weight: 600; 536 font-weight: 600;
537 color: $text-primary; 537 color: $text-primary;
538 } 538 }
539 539
540 .unit { 540 .unit {
541 font-size: 24rpx; 541 font-size: 24rpx;
542 color: $text-placeholder; 542 color: $text-placeholder;
543 margin-left: 16rpx; 543 margin-left: 16rpx;
544 } 544 }
545 } 545 }
546 546
547 .pass-tag { 547 .pass-tag {
548 font-size: 24rpx; 548 font-size: 24rpx;
549 padding: 6rpx 16rpx; 549 padding: 6rpx 16rpx;
550 border-radius: 20rpx; 550 border-radius: 20rpx;
551 flex-shrink: 0; 551 flex-shrink: 0;
552 font-weight: 500; 552 font-weight: 500;
553 553
554 &.pass { 554 &.pass {
555 background: rgba($success-color, 0.1); 555 background: rgba($success-color, 0.1);
556 color: $success-color; 556 color: $success-color;
557 border: 1rpx solid rgba($success-color, 0.2); 557 border: 1rpx solid rgba($success-color, 0.2);
558 } 558 }
559 559
560 &.fail { 560 &.fail {
561 background: rgba($danger-color, 0.1); 561 background: rgba($danger-color, 0.1);
562 color: $danger-color; 562 color: $danger-color;
...@@ -564,18 +564,18 @@ $content-gap: 24rpx; // 统一内容边距 ...@@ -564,18 +564,18 @@ $content-gap: 24rpx; // 统一内容边距
564 } 564 }
565 } 565 }
566 } 566 }
567 567
568 // 考生信息去字段名,4列等宽布局 568 // 考生信息去字段名,4列等宽布局
569 .student-info { 569 .student-info {
570 display: flex; 570 display: flex;
571 justify-content: space-between; 571 justify-content: space-between;
572 align-items: center; 572 align-items: center;
573 gap: 12rpx; 573 gap: 12rpx;
574 574
575 .info-col { 575 .info-col {
576 flex: 1; 576 flex: 1;
577 text-align: center; 577 text-align: center;
578 578
579 .info-text { 579 .info-text {
580 font-size: 28rpx; 580 font-size: 28rpx;
581 color: $text-primary; 581 color: $text-primary;
...@@ -608,4 +608,4 @@ $content-gap: 24rpx; // 统一内容边距 ...@@ -608,4 +608,4 @@ $content-gap: 24rpx; // 统一内容边距
608 .text-green { 608 .text-green {
609 color: $success-color !important; 609 color: $success-color !important;
610 } 610 }
611 </style>
...\ No newline at end of file ...\ No newline at end of file
611 </style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!