81c73ed4 by 杨炀

no message

1 parent e0673ad0
...@@ -258,6 +258,25 @@ function uploadFile(e) { ...@@ -258,6 +258,25 @@ function uploadFile(e) {
258 uni.hideLoading(); 258 uni.hideLoading();
259 }); 259 });
260 } 260 }
261 // muit
262 function uploadFileList(path) {
263 uni.showLoading({
264 title: '加载中'
265 });
266 return uni.uploadFile({
267 url: config.baseUrl_api + '/upload/uploadFileToLocalServer',
268 filePath: path,
269 name: 'file',
270 header: {
271 'Authorization': uni.getStorageSync('token')
272 }
273 }).then(res => {
274 let data = JSON.parse(res.data);
275 return data.msg
276 }).finally(() => {
277 uni.hideLoading();
278 });
279 }
261 // 查询考级信息列表 280 // 查询考级信息列表
262 function getLevelList(query) { 281 function getLevelList(query) {
263 return request({ 282 return request({
...@@ -450,6 +469,13 @@ function delPayment(payIds) { ...@@ -450,6 +469,13 @@ function delPayment(payIds) {
450 method: 'DELETE' 469 method: 'DELETE'
451 }) 470 })
452 } 471 }
472 function delcertified(ids) {
473 return request({
474 url: `/member/certified/${ids}`,
475 method: 'delete'
476 })
477 }
478
453 function editYear(id, year) { 479 function editYear(id, year) {
454 return request({ 480 return request({
455 url: `/person/payment/editYear/${id}`, 481 url: `/person/payment/editYear/${id}`,
...@@ -457,6 +483,14 @@ function editYear(id, year) { ...@@ -457,6 +483,14 @@ function editYear(id, year) {
457 params: { year: year } 483 params: { year: year }
458 }) 484 })
459 } 485 }
486 function editGroupYear(data) {
487 return request({
488 url: `/member/certified/editCertRenewYear/${data.certId}/${data.renewYear}`,
489 method: 'post',
490 params:data
491 })
492 }
493
460 function addPersonPaymentGroup(data) { 494 function addPersonPaymentGroup(data) {
461 return request({ 495 return request({
462 url: `/person/payment/addPersonPaymentGroup`, 496 url: `/person/payment/addPersonPaymentGroup`,
...@@ -529,6 +563,30 @@ function paymentList(query) { ...@@ -529,6 +563,30 @@ function paymentList(query) {
529 params: query 563 params: query
530 }) 564 })
531 } 565 }
566 function getPaymentDetailsByPayId(payId) {
567 return request({
568 url: '/exam/payment/paymentDetailsByPayId',
569 method: 'get',
570 params: {
571 payId: payId
572 }
573 })
574 }
575 function getMySonList(data) {
576 return request({
577 url: '/member/info/getMySonList',
578 method: 'get',
579 params: data
580 })
581 }
582 function addGroupPaymentGroup(data) {
583 return request({
584 url: `/member/certifiedRange/addRangeMulti/${data.memIds}/${data.rangeId}`,
585 method: 'post',
586 params: data
587 })
588 }
589
532 590
533 591
534 export { 592 export {
...@@ -575,8 +633,11 @@ export { ...@@ -575,8 +633,11 @@ export {
575 getFillAuditLog,commitGroupPay,getGroupFeeBill, 633 getFillAuditLog,commitGroupPay,getGroupFeeBill,
576 groupCommitPaymentVoucher,getFeeBillById, 634 groupCommitPaymentVoucher,getFeeBillById,
577 personalCommit, 635 personalCommit,
578 delPayment,editYear,addPersonPaymentGroup, 636 delPayment,editYear,editGroupYear,addPersonPaymentGroup,
579 commitRenew,getVerityMergeList,doMergeFlows,getMergePaymentInfo, 637 commitRenew,getVerityMergeList,doMergeFlows,getMergePaymentInfo,
580 submitCert,getCertsLList,getExamListByPayId, 638 submitCert,getCertsLList,getExamListByPayId,
581 certStudentList,paymentList 639 certStudentList,paymentList,
640 getPaymentDetailsByPayId,getMySonList,
641 addGroupPaymentGroup,
642 delcertified,uploadFileList,editLevel
582 } 643 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -50,3 +50,15 @@ export function submitCert(data) { ...@@ -50,3 +50,15 @@ export function submitCert(data) {
50 params: data 50 params: data
51 }) 51 })
52 } 52 }
53 /**
54 * 段位考试成绩列表
55 * @param params
56 * @returns {*}
57 */
58 export function getRankScoreList(params) {
59 return request({
60 url: '/exam/info/rank/scoreList',
61 method: 'get',
62 params: params
63 })
64 }
......
1 import request from './request.js'
2 import config from '@/config.js'
3
4 function getTrainList(venueId) {
5 return request({
6 url: `/train/info/list`,
7 method: 'get'
8 })
9 }
10 function getActivityDetail(id) {
11 return request({
12 url: `/logex/activity/${id}`,
13 method: 'get',
14 params: id
15 })
16 }
17
18
19 function getActivityHotelList(params) {
20 return request({
21 url: `/logex/activityHotel/list`,
22 method: 'get',
23 params: params
24 })
25 }
26 function getHotelById(id) {
27 return request({
28 url: `/logex/hotel/${id}`,
29 method: 'get',
30 params: id
31 })
32 }
33
34 function getHotelRooms(id) {
35 return request({
36 url: `/logex/activityRoom/list?hotelId=${id}`,
37 method: 'get',
38 params: id
39 })
40 }
41 function getbilllist(userId,venueId) {
42 return request({
43 url: `/logex/order/list?createById=${userId}&venueId=${venueId}`,
44 method: 'get',
45 params: userId
46 })
47 }
48 function newbilllist(userId,venueId) {
49 return request({
50 url: `/logex/norder/list?createById=${userId}&venueId=${venueId}`,
51 method: 'get',
52 params: userId
53 })
54 }
55 function getCanInvoiceBills(params) {
56 return request({
57 url: `/logex/norder/list?activeId=${params.activeId}&createById=${params.userId}&invoiced=1&venueId=${params.venueId}`,
58 method: 'get'
59 })
60 }
61 function getbilldetailbyId(orderId) {
62 return request({
63 // url: `/logex/order/${orderId}`,
64 url: `/logex/norder/${orderId}`,
65 method: 'get',
66 params: orderId
67 })
68 }
69 function getFoodBilldetailbyId(orderId) {
70 return request({
71 url: `/logex/orderFood/getFoodOrderInfoByOrder?orderId=${orderId}`,
72 method: 'get'
73 })
74 }
75 function getRoomBilldetailbyId(orderId) {
76 return request({
77 url: `/logex/orderRoom/getRoomOrderInfoByOrderId?orderId=${orderId}`,
78 method: 'get'
79 })
80 }
81 function getCarBilldetailbyId(orderId) {
82 return request({
83 url: `/logex/norder/getOrderByOrderId?orderId=${orderId}`,
84 method: 'get'
85 })
86 }
87 function getInvoiceByActiveId(activeId,userId,venueId) {
88 return request({
89 url: `/logex/invoice/list?activeId=${activeId}&createById=${userId}&venueId=${venueId}`,
90 method: 'get'
91 })
92 }
93 function getInvoiceByUserId(userId,venueId) {
94 return request({
95 url: `/logex/invoice/list?createById=${userId}&venueId=${venueId}`,
96 method: 'get'
97 })
98 }
99 function getInvoiceDetailBills(invoiceId) {
100 return request({
101 url: `/logex/norder/list?invoiceId=${invoiceId}`,
102 method: 'get'
103 })
104 }
105 function getInvoiceDetail(invoiceId) {
106 return request({
107 url: `/logex/invoice/${invoiceId}`,
108 method: 'get'
109 })
110 }
111 function submitOrder(data) {
112 return request({
113 url: `/logex/order/submitOrder`,
114 method: 'post',
115 params: data
116 })
117 }
118 // 退款
119 function cancelOrder(orderId) {
120 return request({
121 // url: `/logex/norder/unSubscribeOrderBack/${orderId}`,
122 url: `/logex/norder/applyOrderBack/${orderId}`,
123 method: 'post',
124 params: orderId
125 })
126 }
127 // 取消
128 function cancelOrder2(orderId) {
129 return request({
130 url: `/logex/norder/cancelOrderBack//${orderId}`,
131 method: 'post',
132 params: orderId
133 })
134 }
135
136 function payForOrder(orderId) {
137 const nowOpenId = uni.getStorageSync('nowOpenId');
138 return request({
139 // url: `/logex/order/payForOrder?orderId=${orderId}&openId=${nowOpenId}`,
140 url: `/logex/norder/payForOrder?orderId=${orderId}&openId=${nowOpenId}`,
141 method: 'post',
142 params: orderId
143 })
144 }
145 function submitInvoice(form) {
146 return request({
147 url: `/logex/invoice`,
148 method: 'post',
149 params: form
150 })
151 }
152 function editInvoice(form) {
153 return request({
154 url: `/logex/invoice`,
155 method: 'put',
156 params: form
157 })
158 }
159 function addAddress(form) {
160 return request({
161 url: `/logex/invoiceInfo`,
162 method: 'post',
163 params: form
164 })
165 }
166 function checkResidueRoom(form) {
167 return request({
168 url: `/logex/orderRoom/checkResidueRoom`,
169 method: 'post',
170 params: form
171 })
172 }
173 function delAddress(ids) {
174 return request({
175 url: `/logex/invoiceInfo/${ids}`,
176 method: 'delete'
177 })
178 }
179 function regionsList() {
180 return request({
181 url: `/systemj/region/regionsList`,
182 method: 'get'
183 })
184 }
185 function addressList() {
186 const currUser = uni.getStorageSync('currUser');
187 return request({
188 url: `/logex/invoiceInfo/list?createById=${currUser.userId}`,
189 method: 'get'
190 })
191 }
192 function getActivityRestaurantList(params) {
193 return request({
194 url: `/logex/activityRestaurant/list`,
195 method: 'get',
196 params: params
197 })
198 }
199 function getActivityCarList(params) {
200 return request({
201 url: `/logex/activityVehicle/wxList`,
202 method: 'get',
203 params: params
204 })
205 }
206 function getMenuById(id) {
207 return request({
208 url: `/logex/activityFood/list?larId=${id}`,
209 method: 'get'
210 })
211 }
212 function submitOrderFood(form) {
213 return request({
214 url: `/logex/norder/submitOrderFood`,
215 method: 'post',
216 params: form
217 })
218 }
219 function submitOrderCar(form) {
220 return request({
221 url: `/logex/norder/submitOrderCar`,
222 method: 'post',
223 params: form
224 })
225 }
226 function newsSubmitOrderHotel(form) {
227 return request({
228 url: `/logex/norder/submitOrderRoom`,
229 method: 'post',
230 params: form
231 })
232 }
233 export {getTrainList,getActivityHotelList,getActivityDetail,getHotelById,getHotelRooms,submitOrder,getbilllist,getbilldetailbyId,
234 payForOrder,cancelOrder,getCanInvoiceBills,submitInvoice,getInvoiceByActiveId,getInvoiceDetailBills,
235 getInvoiceDetail,getInvoiceByUserId,editInvoice,addAddress,regionsList,addressList,delAddress,
236 checkResidueRoom,getActivityRestaurantList,getMenuById,
237 submitOrderFood,getActivityCarList,submitOrderCar,newsSubmitOrderHotel,newbilllist,
238 getFoodBilldetailbyId,getRoomBilldetailbyId,getCarBilldetailbyId,
239 cancelOrder2
240 }
...\ No newline at end of file ...\ No newline at end of file
...@@ -3,12 +3,18 @@ page { ...@@ -3,12 +3,18 @@ page {
3 overflow: auto; 3 overflow: auto;
4 background: #f5f7f9; 4 background: #f5f7f9;
5 } 5 }
6 .h3 {font-weight: bold;line-height: 2;}
7 .text-center{text-align: center;}
6 .w50{width: 50%;} 8 .w50{width: 50%;}
9 .w45{width: 45%;}
7 .w100{width: 100%;} 10 .w100{width: 100%;}
11 .must{color: #AD181F;font-size: 24rpx;}
8 .vipData .w50{width: 45%;} 12 .vipData .w50{width: 45%;}
9 .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;} 13 .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
14 .flex{display: flex;}
10 .flexbox{display: flex;} 15 .flexbox{display: flex;}
11 .mt30{margin-top: 30rpx;} 16 .mt30{margin-top: 30rpx;}
17 .mb30{margin-bottom: 30rpx;}
12 .mtb30{margin: 30rpx 0;} 18 .mtb30{margin: 30rpx 0;}
13 .mt40{margin-top: 40rpx;} 19 .mt40{margin-top: 40rpx;}
14 .mt50{margin-top: 50rpx;} 20 .mt50{margin-top: 50rpx;}
...@@ -347,18 +353,18 @@ color: #7D8592;} ...@@ -347,18 +353,18 @@ color: #7D8592;}
347 .bgbg{padding:0 0 60rpx;color: #fff;background:url('/static/top_bg.png') #C40F18 no-repeat top; 353 .bgbg{padding:0 0 60rpx;color: #fff;background:url('/static/top_bg.png') #C40F18 no-repeat top;
348 background-size: cover; 354 background-size: cover;
349 position: relative;} 355 position: relative;}
350 .girdBox{display: flex;flex-wrap: wrap;padding: 0 0 40rpx; 356 .girdBox{display: flex;flex-wrap: wrap;padding:30rpx 0;
351 background: #FFFFFF;position: relative;top: -30rpx; 357 background: #FFFFFF;position: relative;top: -30rpx;
352 border-radius: 20rpx 20rpx 0rpx 0rpx; 358 border-radius: 20rpx 20rpx 0rpx 0rpx;
353 view{width: 25%;text-align: center; 359 view{width: 25%;text-align: center; padding: 2% 0;
354 font-size: 24rpx; 360 font-size: 24rpx;
355 color: #434343; 361 color: #434343;
356 image{width: 20vw;height: 20vw;display: block;margin: auto;} 362 image{width: 80rpx;height: 80rpx;display: block;margin: auto;}
357 } 363 }
358 } 364 }
359 .block-btn-box{padding: 30rpx; 365 .block-btn-box{padding: 30rpx;
360 .btn-red-kx{line-height: 2;font-size: 30rpx;} 366 .btn-red-kx{line-height: 2;font-size: 30rpx;}
361 } 367 }
362 368
363 369
364 370
......
1 import request from './request.js'
2 const accountInfo = uni.getAccountInfoSync()
3 const appId = accountInfo.miniProgram.appId;
4
5 // 获取培训列表
6 function tainList(params) {
7 return request({
8 url: `/systemj/information/applets/trainsList`,
9 method: 'get',
10 params: params
11 })
12 }
13
14 // 查看培训项目
15 function trainParticulars(params) {
16 return request({
17 url: '/systemj/information/getTrainDetails',
18 method: 'get',
19 params: params
20 })
21 }
22
23 // 查看培训项目
24 function trainProjectList(params) {
25 return request({
26 url: '/systemj/information/projectList',
27 method: 'get',
28 params: params
29 })
30 }
31
32 // 查看报名费用(未支付前)
33 function searchTrainCost(params) {
34 return request({
35 url: '/systemj/signer/getEnrollBill',
36 method: 'get',
37 params: params
38 })
39 }
40
41 // 提交 用户资料
42 function trainNext(params) {
43 return request({
44 url: `/systemj/signer/signUp`,
45 method: 'post',
46 params,
47 })
48 }
49
50 // 生成订单
51 function createOrder(params) {
52 return request({
53 url: `/systemj/order/saveOrder`,
54 method: 'post',
55 params,
56 })
57 }
58
59 //会员支付
60 function pay(params) {
61 return request({
62 url: `/systemj/order/pay`,
63 method: 'post',
64 params,
65 })
66 }
67
68 // 线下支付银行信息
69 function bankSlip(params) {
70 return request({
71 url: `/systemj/order/bankInfo`,
72 method: 'get',
73 params,
74 })
75 }
76
77 function trainOrder(params) {
78 return request({
79 url: `/systemj/order/getMyOrders`,
80 method: 'get',
81 params,
82 })
83 }
84
85 // 修改报名
86 function trainUpdata(params) {
87 return request({
88 url: `/systemj/signer/updateSign`,
89 method: 'put',
90 params,
91 })
92 }
93
94 // 取消订单
95 function cancelOrder(params) {
96 return request({
97 url: `/systemj/order/cancelOrder`,
98 method: 'put',
99 params,
100 })
101 }
102
103 // 报项列表
104 function signList(params) {
105 return request({
106 url: `/systemj/signer/applets/signList`,
107 method: 'get',
108 params,
109 })
110 }
111
112 // 报项详情
113 function signDetail(params) {
114 return request({
115 url: `/systemj/signer/applets/signDetail`,
116 method: 'get',
117 params,
118 })
119 }
120
121 // 订单列表
122 function orderList(params) {
123 return request({
124 url: `/systemj/order/applets/orderList`,
125 method: 'get',
126 params,
127 })
128 }
129
130
131 // 订单详情
132 function getOrderDetail(params) {
133 return request({
134 url: `/systemj/order/getOrderDetail`,
135 method: 'get',
136 params,
137 })
138 }
139
140
141
142 export {
143 getOrderDetail,
144 orderList,
145 signDetail,
146 signList,
147 tainList,
148 trainParticulars,
149 trainProjectList,
150 searchTrainCost,
151 trainNext,
152 createOrder,
153 pay,
154 bankSlip,
155 trainOrder,
156 trainUpdata,
157 cancelOrder
158 }
...\ No newline at end of file ...\ No newline at end of file
...@@ -5,8 +5,7 @@ ...@@ -5,8 +5,7 @@
5 // staging 5 // staging
6 // const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/"; 6 // const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/";
7 const baseUrl_api = "http://192.168.1.95:8787"; 7 const baseUrl_api = "http://192.168.1.95:8787";
8 const fileUrl_api = "http://192.168.1.11:8787";
9 8
10 export default { 9 export default {
11 baseUrl_api,fileUrl_api 10 baseUrl_api
12 } 11 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -137,7 +137,12 @@ ...@@ -137,7 +137,12 @@
137 "navigationBarTitleText": "会员列表", 137 "navigationBarTitleText": "会员列表",
138 "enablePullDownRefresh": false 138 "enablePullDownRefresh": false
139 } 139 }
140 140 }, {
141 "path": "pages/group/vipList",
142 "style": {
143 "navigationBarTitleText": "会员列表",
144 "enablePullDownRefresh": false
145 }
141 }, { 146 }, {
142 "path": "pages/personalVip/list", 147 "path": "pages/personalVip/list",
143 "style": { 148 "style": {
...@@ -460,6 +465,42 @@ ...@@ -460,6 +465,42 @@
460 } 465 }
461 466
462 } 467 }
468 ,{
469 "path" : "pages/exam/score",
470 "style" :
471 {
472 "navigationBarTitleText": "成绩录入",
473 "enablePullDownRefresh": false
474 }
475
476 }
477 ,{
478 "path" : "pages/group/addGroupMemberPay",
479 "style" :
480 {
481 "navigationBarTitleText": "添加缴费",
482 "enablePullDownRefresh": false
483 }
484
485 }
486 ,{
487 "path" : "pages/exam/scoreModify",
488 "style" :
489 {
490 "navigationBarTitleText": "成绩维护",
491 "enablePullDownRefresh": false
492 }
493
494 }
495 ,{
496 "path" : "pages/index/more",
497 "style" :
498 {
499 "navigationBarTitleText": "菜单",
500 "enablePullDownRefresh": false
501 }
502
503 }
463 ], 504 ],
464 "globalStyle": { 505 "globalStyle": {
465 "navigationStyle": "custom", 506 "navigationStyle": "custom",
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 <view> 2 <view>
3 <!-- 级/段/越段考试缴费单 --> 3 <!-- 级/段/越段考试缴费单 -->
4 <view class="appList"> 4 <view class="appList">
5 <view class="vipData" v-show="totalCost>0"> 5 <view class="vipData mb30" v-show="totalCost>0">
6 <view>费用合计:<text>{{ totalCost.toFixed(2) }}</text></view> 6 <view>费用合计:<text>{{ totalCost.toFixed(2) }}</text></view>
7 </view> 7 </view>
8 <view class="appItem" v-for="item in list"> 8 <view class="appItem" v-for="item in list">
...@@ -12,15 +12,13 @@ ...@@ -12,15 +12,13 @@
12 <text v-if="item.verityStatus==2" class="text-danger"> 审核拒绝</text> 12 <text v-if="item.verityStatus==2" class="text-danger"> 审核拒绝</text>
13 <text v-if="item.verityStatus==3" class="text-warning">已退回</text> 13 <text v-if="item.verityStatus==3" class="text-warning">已退回</text>
14 </view> 14 </view>
15 <view class="date" @click="goDetail(item)" v-if="item.payTime"> 15 <view class="date" @click="goDetail(item)" v-if="item.submitTime">
16 <uni-icons type="calendar" size="16" color="#7D8592"></uni-icons> 16 <uni-icons type="calendar" size="16" color="#7D8592"></uni-icons>
17 <text>{{item.payTime}} 缴费</text> 17 <text>{{item.submitTime}} 创建</text>
18 </view> 18 </view>
19 19
20 <view class="name" @click="goDetail(item)">{{item.name}}</view> 20 <view class="name" @click="goDetail(item)">{{item.name}}</view>
21 <view v-if="deptType==1" class="date"> 21
22 <text>{{item.payNoticeSendTime}} 下发</text>
23 </view>
24 <view class="flexbox" @click="goDetail(item)"> 22 <view class="flexbox" @click="goDetail(item)">
25 <view> 23 <view>
26 缴费状态 24 缴费状态
...@@ -192,8 +190,8 @@ ...@@ -192,8 +190,8 @@
192 190
193 function goDetail(item) { 191 function goDetail(item) {
194 //详情 192 //详情
195 console.log(item.docId) 193 const form = encodeURIComponent(JSON.stringify(item))
196 let path = `/pages/group/feeBillDetail?docId=${item.docId}` 194 let path = `/pages/exam/paymentDetail?form=${form}&type=${queryParams.value.type}`
197 uni.navigateTo({ 195 uni.navigateTo({
198 url: path 196 url: path
199 }); 197 });
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="wBox">
4 <view class="tt">基本信息</view>
5 <view class="ddd">
6 <text class="lab">结算编号:</text>{{ form.flowCode }}
7 </view>
8 <view class="ddd">
9 <text class="lab">{{ type=='1'?'考级名称':'考段名称' }}</text>{{form.mergeName}}
10 </view>
11 <view class="ddd">
12 <text class="lab">申请单位:</text>{{ form.memName }}
13 </view>
14 <view class="ddd" v-if="form.mergeTime">
15 <text class="lab">申请日期:</text>{{form.mergeTime?.slice(0,10)}}
16 </view>
17 <view class="ddd">
18 <text class="lab">{{ type=='1'?'考级人数':'考段人数' }}</text>{{form.totalNum}}
19 </view>
20 <view class="ddd">
21 <text class="lab">总金额:</text>¥{{ (form.totalAmount*1).toFixed(2) }}
22 </view>
23 </view>
24 <view class="wBox">
25 <view class="tt">
26 考试信息
27 </view>
28 <view class="userlist">
29 <view class="item" v-for="n in infoList" @click="goDetail(n)" style="background-color: #fffafa;">
30 <view class="w100">
31 <view class="name">{{n.name}}</view>
32 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
33 <view class="flexbox">
34 <view>
35 上报单位
36 <text>{{n.memberName}}</text>
37 </view>
38 <view>
39 {{type=='1'?'考级考生数':'考段考生数'}}
40 <text>
41 {{n.totalNum}}
42 </text>
43 </view>
44 <view>
45 金额
46 <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text>
47 </view>
48 </view>
49 </view>
3 50
4 </view> 51 </view>
52 </view>
53
54 </view>
55 </view>
5 </template> 56 </template>
6 57
7 <script> 58 <script setup>
8 export default { 59 import * as api from '@/common/api.js'
9 data() { 60 import config from '@/config.js'
10 return { 61 import _ from 'lodash'
62 import {
63 onMounted,
64 ref
65 } from 'vue'
66 import {
67 onLoad
68 } from '@dcloudio/uni-app'
69 const app = getApp();
70 const queryParams = ref({
71 recordId: ''
72 })
73
74 const payId = ref('')
75 const list = ref([])
76 const form = ref({})
77 const infoList = ref([])
78 const deptType = ref()
79 const type = ref(null)
80 let rangeId = ''
81 onLoad((option) => {
82 type.value = option.type
83 if ('form' in option) {
84 var obj = JSON.parse(decodeURIComponent(option.form))
85 form.value.flowCode = obj.payCode
86 form.value.mergeName = obj.name
87 form.value.memName = obj.memberName
88 form.value.mergeTime = obj.submitTime
89 form.value.totalNum = Math.floor(obj.totalNum)
90 form.value.totalAmount = Math.floor(obj.totalAmount)
91 payId.value = obj.payId
92 }
93 if (app.globalData.isLogin) {
94 init()
95 } else {
96 app.firstLoadCallback = () => {
97 init()
98 };
99 }
100
101 })
102 function init() {
103 deptType.value = app.globalData.deptType
104 getForm()
105 }
11 106
107 function getForm() {
108 uni.showLoading({
109 title: '加载中'
110 })
111 api.getPaymentDetailsByPayId(payId.value).then(res => {
112 infoList.value = res.data
113 uni.hideLoading()
114 })
12 } 115 }
13 },
14 methods: {
15 116
117 function goDetail(item) {
118 // examId
119 if(type.value = '1'){
120 let path = `/pages/level/applyDetail?examId=${item.examId}`
121 uni.navigateTo({
122 url: path
123 });
124 } else {
125 let path = `/pages/rank/applyDetail?examId=${item.examId}`
126 uni.navigateTo({
127 url: path
128 });
16 } 129 }
17 } 130 }
18 </script> 131 </script>
19 132
20 <style> 133 <style scoped lang="scss">
134 .wBox {
135 width: 700rpx;
136 padding: 30rpx;
137 margin: 20rpx auto;
138 background: #FFFFFF;
139 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
140 border-radius: 15rpx;
21 141
142 .tt {
143 color: #0A1629;
144 margin: 0 0 30rpx;
145 font-size: 30rpx;
146 }
147
148 .ddd {
149 font-size: 28rpx;
150 color: #333;
151
152 .lab {
153 color: #999;
154 display: inline-block;
155 text-align: justify;
156
157 text {
158 word-break: break-all;
159 }
160 }
161 }
162 }
22 </style> 163 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template>
2 <view>
3 <!-- <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
4 styleType="text" activeColor="#AD181F"></uni-segmented-control> -->
5
6 <!-- 成绩录入 -->
7 <view class="appList">
8 <view class="appItem" v-for="item in infoList" :key="item.recordId" >
9 <view @click="goDetail(item)">
10 <view class="status" >
11 <text :class="{
12 'text-primary':item.scoreStatus=='0',
13 'text-success':item.scoreStatus=='2',
14 'text-danger':item.scoreStatus=='3',
15 'text-warning':item.scoreStatus=='4'
16 }">{{ item.scoreStatusStr }}</text>
17 </view>
18
19 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
20 <view class="name mt0" >{{item.name}}</view>
21 <view class="pp esp">考段日期:{{item.startTime?.substring(0,16)}}{{item.endTime?.substring(0,16)}}</view>
22 <view class="flexbox" >
23 <view>
24 申请日期
25 <view>{{item.applyTime?.substring(0, 10)}}</view>
26 </view>
27 <view>
28 考段考生数
29 <view>{{item.totalNum||'--'}}</view>
30 </view>
31 <view>
32 总金额
33 <view><text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text></view>
34 </view>
35 </view>
36 </view>
37 <!-- <view class="func" v-if="(item.scoreStatus=='0'||item.scoreStatus=='3' || item.scoreStatus=='4')&& item.rankStatus == '1'">
38 <button @click="scoreEdit(item)">成绩维护</button>
39 </view> -->
40 </view>
41 </view>
42 <view class="nodata" v-if="infoList.length==0">
43 <image mode="aspectFit" src="/static/nodata.png"></image>
44 <text>暂无数据</text>
45 </view>
46 </view>
47 </template>
48
49 <script setup>
50 import * as examApi from '@/common/api_exam.js'
51 import _ from 'lodash'
52 import { ref } from 'vue'
53 import { onLoad,onShow } from '@dcloudio/uni-app'
54
55 const app = getApp();
56 const queryParams = ref({
57 status: '0',
58 rankStatus:'1'
59 })
60 const current = ref()
61 const navs = ref(['审核中', '审核通过', '审核拒绝'])
62 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
63 const deptType = ref('')
64 const infoList = ref([])
65 const total = ref(0)
66
67 onLoad((options)=>{
68 queryParams.value.type=options.type
69 })
70
71 onShow(() => {
72 if (app.globalData.isLogin) {
73 init()
74 } else {
75 app.firstLoadCallback = () => {
76 init()
77 };
78 }
79 })
80
81 function init(){
82 uni.showLoading({
83 title: '加载中'
84 })
85 deptType.value = app.globalData.deptType
86 getList()
87 }
88
89 function onClickItem(e) {
90 uni.showLoading({
91 title: '加载中'
92 })
93 queryParams.value.status = e.currentIndex
94 getList()
95 }
96
97 function getList() {
98 examApi.getRankScoreList(queryParams.value).then(res => {
99
100 infoList.value = res.rows
101 total.value = res.total
102
103 uni.hideLoading()
104 })
105 }
106
107 function scoreEdit(item) {
108 console.log(item.sourceData)
109 var obj = {
110 flag: flag,
111 reason: null,
112 id: item.recordId
113 }
114
115 if (flag == '2') {
116 // 拒绝
117 // 弹出框填写理由
118 uni.showModal({
119 title: '请输入拒绝理由',
120 editable: true,
121 success: function(res) {
122 if (res.confirm) {
123 if (!res.content) {
124 uni.showToast({
125 title: '请输入拒绝理由',
126 icon: 'none'
127 })
128 } else {
129 obj.reason = res.content
130 doApproval(obj)
131 }
132 }
133 }
134 })
135 } else if (flag == '1') {
136 // 二次确认
137 uni.showModal({
138 title: '提示',
139 content: `确定审批通过吗`,
140 success: function(res) {
141 if (res.confirm) {
142 doApproval(obj)
143 }
144 }
145 })
146 }
147 }
148
149 function doApproval(obj) {
150 examApi.doMergeFlows(obj).then((res) => {
151 uni.showToast({
152 title: '操作成功',
153 icon: 'none'
154 })
155 getList()
156 })
157 }
158
159 function goDetail(item) {
160 let path = `/pages/rank/applyDetail?examId=${item.examId}`
161 uni.navigateTo({
162 url: path
163 });
164 }
165
166 </script>
167
168 <style lang="scss" scoped>
169
170 </style>
1 <template>
2 <view>
3
4 </view>
5 </template>
6
7 <script>
8 export default {
9 data() {
10 return {
11
12 }
13 },
14 methods: {
15
16 }
17 }
18 </script>
19
20 <style>
21
22 </style>
1 <template>
2 <view class="hasfixedbottom">
3 <view class="searchbar" style="justify-content: center;">
4 <view class="invertedbtn-red" @click="gochose">+ 在线选择</view>
5 </view>
6 <uni-swipe-action>
7 <uni-swipe-action-item class="personitem" v-for="n in list">
8 <view class="content-box">
9 <view style="width: 70%;">
10 <view>{{n.memberName}}
11 <view class="date">
12 团体类型:
13 <text v-if="n.deptType == 2">一级协会</text>
14 <text v-if="n.deptType == 3">直属协会</text>
15 <text v-if="n.deptType == 4">二级协会</text>
16 <text v-if="n.deptType == 5">三级协会</text>
17 <text v-if="n.deptType == 6">职业性团体会员</text>
18
19 </view>
20 <view class="date">原有效期:<text>{{n.validityTime?.slice(0,10)}}</text></view>
21 </view>
22 <view class="flexbox">
23 <view>
24 单价 <view>¥{{n.unitPrice}}</view>
25 </view>
26 <view>
27 总价 <view>
28 <text class="text-danger">¥{{n.allPrice}}</text>
29 </view>
30 </view>
31 </view>
32
33 </view>
34 <view class="flex" @click="changeYear(n)">
35 <view class="text-danger">({{yearlist[n.renewYear-1].text}})</view>
36 <uni-icons type="forward" size="18" color="#999"></uni-icons>
37 </view>
38
39 </view>
40 <template v-slot:right>
41 <view class="slot-button">
42 <view @click="handleDelete(n)">
43 <uni-icons type="trash-filled" color="#fff" size="20"></uni-icons>
44 <text class="slot-button-text">删除</text>
45 </view>
46 </view>
47 </template>
48 </uni-swipe-action-item>
49 </uni-swipe-action>
50
51 <view class="nodata" v-if="list.length==0">
52 <image mode="aspectFit" src="/static/nodata.png"></image>
53 <button class="btn-red" @click="gochose">+ 在线选择</button>
54 </view>
55
56 <view class="fixedBottom">
57 <button class="btn-red" :disabled="list?.length <= 0" @click="commitFN">保存并提交</button>
58 </view>
59
60 <uni-popup ref="pickView" type="bottom">
61 <view class="pickViewBox">
62 <view v-for="n in yearlist" @click="bindyear(n)">
63 {{n.text}}<uni-icons v-show="n.value == (nowYear)" type="checkmarkempty" size="20"
64 color="green"></uni-icons>
65 </view>
66 </view>
67 </uni-popup>
68 </view>
69 </template>
70
71 <script setup>
72 import {
73 ref
74 } from 'vue'
75 import {
76 onShow,
77 onLoad
78 } from '@dcloudio/uni-app'
79 import * as api from '@/common/api.js'
80 import config from '@/config.js'
81 const app = getApp()
82 const queryParams = ref({
83 rangeId: 0
84 })
85 const formData = ref({})
86 const list = ref({})
87 const total = ref(0)
88 const nowYear = ref(1)
89 const nowItem = ref({})
90 const pickView = ref(null)
91 const visible = ref(true)
92 const yearlist = ref([{
93 text: '一年',
94 value: 1
95 }, {
96 text: '二年',
97 value: 2
98 }, {
99 text: '三年',
100 value: 3
101 }, {
102 text: '四年',
103 value: 4
104 }, {
105 text: '五年',
106 value: 5
107 }])
108 onLoad((option) => {
109 if (option.rangeId) {
110 queryParams.value.rangeId = option.rangeId
111 }
112 })
113 onShow(() => {
114 if (app.globalData.isLogin) {
115 init()
116 } else {
117 app.firstLoadCallback = () => {
118 init()
119 };
120 }
121 })
122
123 function init() {
124 getList()
125 }
126
127 function getList() {
128 api.getPayList(queryParams.value).then(res => {
129 list.value = []
130 res.rows.forEach(item => {
131 if (item.rangeId == queryParams.value.rangeId) {
132 list.value = item.certList
133 formData.value = item
134 return
135 }
136 })
137 })
138 }
139
140 function gochose() {
141 let path = `/pages/group/vipList?rangeId=${queryParams.value.rangeId}`
142 uni.redirectTo({
143 url: path
144 });
145 }
146
147 function changeYear(e) {
148 nowItem.value = e
149 nowYear.value = e.renewYear
150 pickView.value.open()
151
152 }
153
154 function bindyear(n) {
155 nowYear.value = n.value
156 pickView.value.close()
157 nowItem.value.renewYear = n.value
158
159 api.editGroupYear({certId:nowItem.value.certId, renewYear:nowItem.value.renewYear}).then(res => {
160 for (var nn of list.value) {
161 if (nn.perId == nowItem.value.perId) {
162 nn.renewYear = nowItem.value.renewYear
163 }
164 }
165 getList()
166 })
167 }
168
169 function handleDelete(row) {
170 uni.showModal({
171 title: '提示',
172 content: `确定删除${row.memberName}吗`,
173 success: function(res) {
174 if (res.confirm) {
175 api.delcertified([row.certId]).then(res => {
176 uni.showToast({
177 title: '删除成功'
178 })
179 if (list.value.length == 1) {
180 queryParams.value.rangeId = 0
181 }
182 getList()
183 })
184 }
185 }
186 })
187 }
188
189 function commitFN() {
190 if (queryParams.value.rangeId == 0) return
191 api.commitGroupPay(queryParams.value.rangeId).then(res => {
192 uni.showToast({
193 title: '提交成功'
194 })
195 uni.navigateBack()
196 })
197 }
198 </script>
199
200 <style scoped lang="scss">
201 .pickViewBox {
202 background-color: #fff;
203 text-align: center;
204
205 view {
206 line-height: 3;
207 }
208 }
209
210 .searchbar {
211 display: flex;
212 align-items: center;
213 padding: 25rpx;
214 box-sizing: border-box;
215
216 .invertedbtn-red {
217 margin-left: 15rpx;
218 font-size: 30rpx;
219 width: 100%;
220 padding: 16rpx 20rpx;
221 text-align: center;
222 box-sizing: border-box;
223
224 background-color: #fff;
225 }
226
227 :deep(.uni-easyinput .uni-easyinput__content) {
228 border-radius: 35rpx;
229 border: none;
230 height: 70rpx;
231 }
232
233 :deep(.uni-easyinput__content-input) {
234 font-size: 26rpx;
235 }
236 }
237
238 .slot-button {
239 display: flex;
240 align-items: center;
241 padding: 0 20px;
242 text-align: center;
243 background-color: #E60012;
244 }
245
246 .slot-button-text {
247 color: #ffffff;
248 display: block;
249 font-size: 14px;
250 }
251
252 .personitem {
253 background: #fff;
254 box-sizing: border-box;
255 margin-bottom: 30rpx;
256
257 .content-box {
258 display: flex;
259 align-items: center;
260 padding: 16rpx;
261 border-radius: 15rpx;
262 justify-content: space-between;
263
264 .noborder {
265 border: none;
266
267 :deep(.uni-select) {
268 border: none;
269 text-align: right;
270 }
271 }
272 }
273
274 .flexbox {
275 align-items: center;
276 font-size: 28rpx;
277 color: #91929E;
278
279 view {
280 font-size: 26rpx;
281 width: 40%;
282 display: inline-block;
283 margin-top: 10rpx;
284
285 view {
286 color: #0A1629;
287 font-size: 28rpx;
288 }
289 }
290 }
291
292 &:nth-child(3n) .colorful {
293 background: #014A9F;
294 }
295
296 &:nth-child(3n+1) .colorful {
297 background: #AD181F;
298 }
299
300 &:nth-child(3n+2) .colorful {
301 background: #D3B267;
302 }
303 }
304
305 .colorful {
306 width: 100rpx;
307 margin-right: 14rpx;
308 height: 100rpx;
309 line-height: 100rpx;
310 font-size: 44rpx;
311 color: #fff;
312 text-align: center;
313 border-radius: 50%;
314 }
315 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template> 1 <template>
2 <view> 2 <view>
3 <!-- 会员认证 --> 3 <!-- 会员认证 -->
4 <!-- <view class="searchbar"> 4 <view class="searchbar">
5 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" 5 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
6 v-model="queryParams.rangeName" placeholder="缴费名称" @blur="getList" @clear="getList"> 6 v-model="queryParams.rangeName" placeholder="缴费名称" @blur="getList" @clear="getList">
7 </uni-easyinput> 7 </uni-easyinput>
8 <view class="invertedbtn-red" @click="goAddPay">+ 新建缴费</view> 8 <view class="invertedbtn-red" v-if="userType=='2'" @click="goAddPay">+ 新建缴费</view>
9 </view> --> 9 </view>
10 <view class="appList"> 10 <view class="appList">
11 <view class="appItem" v-for="item in list"> 11 <view class="appItem" v-for="item in list">
12 <view class="status" @click="goDetail(item)"> 12 <view class="status" @click="goDetail(item)">
...@@ -32,10 +32,9 @@ ...@@ -32,10 +32,9 @@
32 <view>{{item.totalRenewYear}}</view> 32 <view>{{item.totalRenewYear}}</view>
33 </view> 33 </view>
34 </view> 34 </view>
35 <view class="func" v-if="item?.content?.status == 0"> 35 <view class="func" v-if="item.content?.status==0||item.content?.status==3||item.content?.status==4">
36 <button 36 <button @click="handleUpdate(item)">编辑</button>
37 37 <button v-if="item.content?.status==0" @click="commitFN(item)">提交审核</button>
38 @click="commitFN(item)">提交审核</button>
39 </view> 38 </view>
40 </view> 39 </view>
41 </view> 40 </view>
...@@ -54,12 +53,12 @@ ...@@ -54,12 +53,12 @@
54 ref 53 ref
55 } from 'vue' 54 } from 'vue'
56 import { 55 import {
57 onLoad 56 onLoad,onShow
58 } from '@dcloudio/uni-app' 57 } from '@dcloudio/uni-app'
59 const app = getApp(); 58 const app = getApp();
60 const list = ref([]) 59 const list = ref([])
61 const queryParams = ref({}) 60 const queryParams = ref({})
62 const deptType = ref('') 61 const userType = ref('')
63 const UpPop = ref(null) 62 const UpPop = ref(null)
64 const form = ref({ 63 const form = ref({
65 docId:'', 64 docId:'',
...@@ -67,7 +66,7 @@ ...@@ -67,7 +66,7 @@
67 url:'', 66 url:'',
68 remark:'' 67 remark:''
69 }) 68 })
70 onLoad(() => { 69 onShow(() => {
71 if (app.globalData.isLogin) { 70 if (app.globalData.isLogin) {
72 init() 71 init()
73 } else { 72 } else {
...@@ -79,7 +78,7 @@ ...@@ -79,7 +78,7 @@
79 }) 78 })
80 79
81 function init() { 80 function init() {
82 deptType.value = app.globalData.deptType 81 userType.value = app.globalData.userType
83 getList() 82 getList()
84 } 83 }
85 84
...@@ -112,6 +111,20 @@ ...@@ -112,6 +111,20 @@
112 url: path 111 url: path
113 }); 112 });
114 } 113 }
114
115 function goAddPay(){
116 let path = `/pages/group/addGroupMemberPay`
117 uni.navigateTo({
118 url: path
119 });
120 }
121 function handleUpdate(row){
122 let path = `/pages/group/addGroupMemberPay?rangeId=${row.rangeId}`
123 uni.navigateTo({
124 url: path
125 });
126 }
127
115 </script> 128 </script>
116 129
117 <style scoped lang="scss"> 130 <style scoped lang="scss">
......
1 <template> 1 <template>
2 <view class="hasfixedbottom"> 2 <view class="hasfixedbottom">
3 <view class="h3-padding">成员信息</view>
3 <view class="wBox"> 4 <view class="wBox">
4 <!-- 成员 -->
5 <view class="userlist"> 5 <view class="userlist">
6 <view class="item" v-for="n in list"> 6 <view class="item" v-for="n in list">
7 <view style="width: 100%"> 7 <view style="width: 100%">
......
1 <template>
2 <view class="hasfixedbottom">
3 <view class="searchbar">
4 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
5 v-model="queryParams.name" placeholder="团体会员名称" @blur="getList()" @clear="getList()">
6 </uni-easyinput>
7 </view>
8 <view class="indexboxre">
9 <view class="tt">会员列表</view>
10 <!-- <uni-indexed-list :options="list" :showSelect="true" @click="bindClick"></uni-indexed-list> -->
11 <view class="userlist">
12 <view class="item" v-for="n in list">
13 <view @click="checkThis(n)" v-if="n.canCommit">
14 <image class="icon" v-if="n.checked" src="@/static/member/dx_dwn.png" />
15 <image class="icon" v-else src="@/static/member/dx.png" />
16 </view>
17 <!-- <view class="photobox">
18 <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
19 <view class="colorful" v-else>{{n.name.slice(0,1)}}</view>
20 </view> -->
21 <view>
22 <view class="name">{{n.name}}
23 </view>
24 <view class="name">
25 <text v-if="n.deptType == 2">一级协会</text>
26 <text v-if="n.deptType == 3">直属协会</text>
27 <text v-if="n.deptType == 4">二级协会</text>
28 <text v-if="n.deptType == 5">三级协会</text>
29 <text v-if="n.deptType == 6">职业性团体会员</text>
30
31 </view>
32 <view class="date">到期时间:{{n.validityDate?.slice(0,10)}}</view>
33 </view>
34 </view>
35 </view>
36
37 </view>
38
39 <view class="fixedBottom">
40
41 <button class="btn-red" @click="handleImport">导 入</button>
42 </view>
43
44 </view>
45 </template>
46
47 <script setup>
48 import * as api from '@/common/api.js'
49 import config from '@/config.js'
50 import {
51 ref,
52 getCurrentInstance
53 } from 'vue'
54 import {
55 onLoad
56 } from '@dcloudio/uni-app'
57 const {
58 proxy
59 } = getCurrentInstance()
60 const app = getApp();
61 const queryParams = ref({
62 showMyPersonFlag: 1,
63 checkPaymentCommit: 1,
64 queryParams: 1
65 })
66 const list = ref([])
67 const total = ref(0)
68 const userType = ref('')
69 onLoad((option) => {
70 userType.value = app.globalData.userType
71 queryParams.value.paymentRangeId = option.rangeId
72 getList()
73 })
74
75 function getList() {
76 api.getMySonList(queryParams.value).then(res => {
77 list.value = res.data
78 total.value = res.data.length
79 })
80 }
81 function checkThis(n){
82 if(n.checked){
83 n.checked = false
84 }else{
85 n.checked = true
86 }
87 }
88 function handleImport(){
89 var arr=[]
90 for(var n of list.value){
91 if(n.checked){
92 arr.push(n.memId)
93 }
94 }
95 if(arr.length==0){
96 uni.showToast({
97 title:"请选择团体",
98 icon:"none"
99 })
100 return
101 }
102 api.addGroupPaymentGroup({ rangeId: queryParams.value.paymentRangeId, memIds: arr.join(',') }).then(res=>{
103 let path = `/pages/group/addGroupMemberPay?rangeId=${res.data}`
104 uni.redirectTo({
105 url: path
106 });
107 })
108 }
109 </script>
110
111 <style scoped lang="scss">
112
113
114 .indexboxre {
115 padding: 0 30rpx;
116
117 .tt {
118 font-size: 30rpx;
119 margin: 0 0 30rpx;
120 color: #4C5359;
121 }
122
123 position: relative;
124 height: calc(100vh - 280rpx);overflow: auto;
125 }
126
127 .searchbar {
128 display: flex;
129 align-items: center;
130 padding: 25rpx;
131 box-sizing: border-box;
132
133 :deep(.uni-easyinput .uni-easyinput__content) {
134 border-radius: 35rpx;
135 border: none;
136 height: 70rpx;
137 }
138
139 :deep(.uni-easyinput__content-input) {
140 font-size: 26rpx;
141 }
142 }
143 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -12,93 +12,102 @@ ...@@ -12,93 +12,102 @@
12 <!-- userType 1:中跆协 2:省 3:市区 4:道馆--> 12 <!-- userType 1:中跆协 2:省 3:市区 4:道馆-->
13 <!-- 4 --> 13 <!-- 4 -->
14 <view v-if="userType=='4'" @click="goAddVip"> 14 <view v-if="userType=='4'" @click="goAddVip">
15 <image src="@/static/btn01.png"/> 15 <image src="@/static/btn01.png" />
16 添加会员</view> 16 添加会员
17 </view>
17 <view v-if="userType=='4'" @click="goPath('/pages/personalVip/payment')"> 18 <view v-if="userType=='4'" @click="goPath('/pages/personalVip/payment')">
18 <image src="@/static/btn02.png"/> 19 <image src="@/static/btn02.png" />
19 会员缴费</view> 20 会员缴费
21 </view>
20 <!-- 3 2 1--> 22 <!-- 3 2 1-->
21 <view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')"> 23 <view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')">
22 <image src="@/static/btn03.png"/> 24 <image src="@/static/btn03.png" />
23 缴费审核</view> 25 缴费审核
26 </view>
24 27
25 <!-- 都有 --> 28 <!-- 都有 -->
26 <view @click="goPath('/pages/personalVip/list')"> 29 <view @click="goPath('/pages/personalVip/list')">
27 <image src="@/static/btn04.png"/> 30 <image src="@/static/btn04.png" />
28 会员查询</view> 31 会员查询
32 </view>
29 <view v-if="userType!='4'" @click="goPath('/pages/group/list')"> 33 <view v-if="userType!='4'" @click="goPath('/pages/group/list')">
30 <image src="@/static/btn05.png"/>团体会员 34 <image src="@/static/btn05.png" />团体会员
31 </view> 35 </view>
32 </view> 36 </view>
33 37
34 </view> 38 </view>
35 <view class="girdBox"> 39
36 <view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')"> 40 <view v-if="userType=='4'" class="girdBox">
37 <image /> 41 <view @click="goPath('/pages/personalVip/mobilize')">
42 <image src="@/static/icon/1.png" />
38 会员调动 43 会员调动
39 </view> 44 </view>
40 <view v-if="userType=='2'" @click="goPath('/pages/personalVip/feeBill')"> 45 <view @click="goPath('/pages/level/apply')">
41 <image />会员缴费单</view> 46 <image src="@/static/icon/3.png" />级位考试申请
42
43 <view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')">
44 <image />团体会员审核
45 </view> 47 </view>
46 <view v-if="userType=='2'" @click="goPath('/pages/group/pay')">
47 <image />团体会员认证
48 </view> 48 </view>
49 49 <view v-if="userType=='3'" class="girdBox">
50 <view v-if="userType=='2'" @click="goPath('/pages/group/feeBill')"> 50 <view @click="goPath('/pages/group/apply/applyList')">
51 <image />团体会员缴费单 51 <image src="@/static/icon/4.png" />团体会员审核
52 </view> 52 </view>
53 53 <view @click="goPath('/pages/level/approval')">
54 <view v-if="userType=='4'" @click="goPath('/pages/level/apply')"> 54 <image src="@/static/icon/3.png" />级位考试审核
55 <image />级位考试申请
56 </view> 55 </view>
57 <view v-if="userType!='4'&&userType!='1'" @click="goPath('/pages/level/approval')">
58 <image />级位考试审核
59 </view> 56 </view>
60 <view v-if="userType=='2'" @click="goPath('/pages/level/apply')"> 57 <view v-if="userType=='2'" class="girdBox">
61 <image />段位考试申请 58 <view @click="goPath('/pages/personalVip/mobilize')">
59 <image src="@/static/icon/2.png" />
60 会员调动审核
62 </view> 61 </view>
63 62 <view @click="goPath('/pages/personalVip/feeBill')">
64 <view v-if="userType=='2'" @click="goPath('/pages/exam/payment?type=1')"> 63 <image src="@/static/icon/6.png" />会员缴费单
65 <image />级位考试缴费单
66 </view> 64 </view>
67 65 <view @click="goPath('/pages/group/apply/applyList')">
68 <view v-if="userType=='2'" @click="goPath('/pages/exam/payment?type=2')"> 66 <image src="@/static/icon/4.png" />团体会员审核
69 <image />段位考试缴费单
70 </view> 67 </view>
71 68 <view @click="goPath('/pages/group/pay')">
72 <view v-if="userType=='2'" @click="goPath('/pages/exam/payment?type=3')"> 69 <image src="@/static/icon/9.png" />团体会员认证
73 <image />越段考试缴费单
74 </view> 70 </view>
75 71
72 <view @click="goPath('/pages/group/feeBill')">
73 <image src="@/static/icon/17.png" />团体会员缴费单
74 </view>
75 <view @click="goPath('/pages/level/approval')">
76 <image src="@/static/icon/3.png" />级位考试审核
77 </view>
78 <view @click="goPath('/pages/exam/payment?type=1')">
79 <image src="@/static/icon/10.png" />级位考试缴费单
80 </view>
76 81
82 <view @click="goPath('/pages/index/more')">
83 <image src="@/static/icon/m.png" />更多
84 </view>
77 </view> 85 </view>
78 <view v-if="userType=='1'" class="girdBox"> 86 <view v-if="userType=='1'" class="girdBox">
87 <view @click="goPath('/pages/personalVip/mobilize')">
88 <image src="@/static/icon/2.png" />
89 会员调动审核
90 </view>
91 <view @click="goPath('/pages/group/apply/applyList')">
92 <image src="@/static/icon/4.png" />团体会员审核
93 </view>
79 <view @click="goPath('/pages/level/ztx/approval')"> 94 <view @click="goPath('/pages/level/ztx/approval')">
80 <image />级位考试审核 95 <image src="@/static/icon/2.png" />级位考试审核
81 </view> 96 </view>
82 <view @click="goPath('/pages/level/ztx/cert?type=1')"> 97 <view @click="goPath('/pages/level/ztx/cert?type=1')">
83 <image />级位证书发布 98 <image src="@/static/icon/18.png" />级位证书发布
84 </view> 99 </view>
85 <view @click="goPath('/pages/rank/approval?type=2')"> 100 <view @click="goPath('/pages/rank/approval?type=2')">
86 <image />段位考试审核 101 <image src="@/static/icon/19.png" />段位考试审核
87 </view> 102 </view>
88 <view @click="goPath('/pages/rank/scoreApproval?type=2')"> 103 <view @click="goPath('/pages/rank/scoreApproval?type=2')">
89 <image />考段成绩审核 104 <image src="@/static/icon/19.png" />考段成绩审核
90 </view> 105 </view>
91 <view @click="goPath('/pages/level/ztx/cert?type=2')"> 106 <view @click="goPath('/pages/level/ztx/cert?type=2')">
92 <image />考段证书发布 107 <image src="@/static/icon/20.png" />考段证书发布
93 </view>
94 <view @click="goPath('/pages/rank/approval?type=3')">
95 <image />越段考试审核
96 </view>
97 <view @click="goPath('/pages/rank/scoreApproval?type=3')">
98 <image />越段成绩审核
99 </view> 108 </view>
100 <view @click="goPath('/pages/level/ztx/cert?type=3')"> 109 <view @click="goPath(`/pages/index/more?userType=${userType}`)">
101 <image />越段证书发布 110 <image src="@/static/icon/m.png" />更多
102 </view> 111 </view>
103 </view> 112 </view>
104 <uni-section title="待办提醒" padding> 113 <uni-section title="待办提醒" padding>
...@@ -162,12 +171,23 @@ ...@@ -162,12 +171,23 @@
162 proId = option.proId; 171 proId = option.proId;
163 } 172 }
164 }); 173 });
165 function loginOut(){ 174
175 function loginOut() {
176 uni.showModal({
177 content: `确认退出吗?`,
178 success: function(res) {
179 if (res.confirm) {
166 let path = '/pages/index/login'; 180 let path = '/pages/index/login';
167 uni.reLaunch({ 181 uni.reLaunch({
168 url: path 182 url: path
169 }); 183 });
170 } 184 }
185 }
186 })
187
188
189 }
190
171 function goPath(path) { 191 function goPath(path) {
172 uni.navigateTo({ 192 uni.navigateTo({
173 url: path 193 url: path
...@@ -228,6 +248,9 @@ ...@@ -228,6 +248,9 @@
228 } 248 }
229 249
230 function getMes() { 250 function getMes() {
251 uni.showLoading({
252 title: '加载中'
253 });
231 api.getMessage({ 254 api.getMessage({
232 pageNum: 1, 255 pageNum: 1,
233 pageSize: 10 256 pageSize: 10
...@@ -273,11 +296,12 @@ ...@@ -273,11 +296,12 @@
273 break 296 break
274 case 50001: 297 case 50001:
275 d.name = '你有一条新的个人会员申请,点击去处理!' 298 d.name = '你有一条新的个人会员申请,点击去处理!'
276 d.path = '/pages/personalVip/approvalList' 299 d.path = '/pages/personalVip/list'
277 break 300 break
278 } 301 }
279 } 302 }
280 messageList.value = res.rows 303 messageList.value = res.rows
304 uni.hideLoading();
281 }) 305 })
282 } 306 }
283 307
...@@ -317,9 +341,17 @@ ...@@ -317,9 +341,17 @@
317 } 341 }
318 </script> 342 </script>
319 <style scope lang="scss"> 343 <style scope lang="scss">
320 .loginOutIcon{position: absolute;right: 30rpx;top: 30rpx; 344 .loginOutIcon {
321 image{width: 50rpx;height: 50rpx;} 345 position: absolute;
346 right: 30rpx;
347 top: 30rpx;
348
349 image {
350 width: 50rpx;
351 height: 50rpx;
352 }
322 } 353 }
354
323 .welcome { 355 .welcome {
324 padding: 55rpx; 356 padding: 55rpx;
325 line-height: 55rpx; 357 line-height: 55rpx;
...@@ -328,8 +360,15 @@ ...@@ -328,8 +360,15 @@
328 360
329 .flexbox { 361 .flexbox {
330 display: flex; 362 display: flex;
331 justify-content: space-around;text-align: center; 363 justify-content: space-around;
332 image{width: 90rpx;height: 90rpx;display: block;margin: auto;} 364 text-align: center;
365
366 image {
367 width: 90rpx;
368 height: 90rpx;
369 display: block;
370 margin: auto;
371 }
333 } 372 }
334 373
335 .image { 374 .image {
...@@ -372,7 +411,11 @@ ...@@ -372,7 +411,11 @@
372 } 411 }
373 412
374 :deep(.uni-section .uni-section-header__content) { 413 :deep(.uni-section .uni-section-header__content) {
375 font-size: 36rpx; 414 font-size: 44rpx;
415 font-weight: bold;
376 color: #29343C; 416 color: #29343C;
377 } 417 }
418 :deep(.uni-section .uni-section-header){
419 padding: 0 30rpx;
420 }
378 </style> 421 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template>
2 <view>
3 <view v-if="userType=='1'" class="girdBox f3">
4 <view @click="goPath('/pages/rank/approval?type=3')">
5 <image src="@/static/icon/21.png" />越段考试审核
6 </view>
7 <view @click="goPath('/pages/rank/scoreApproval?type=3')">
8 <image src="@/static/icon/22.png" />越段成绩审核
9 </view>
10 <view @click="goPath('/pages/level/ztx/cert?type=3')">
11 <image src="@/static/icon/23.png" />越段证书发布
12 </view>
13 </view>
14 <view class="girdBox" v-if="userType=='2'">
15 <view @click="goPath('/pages/rank/apply?type=2')">
16 <image src="@/static/icon/11.png" />段位考试申请
17 </view>
18
19 <view @click="goPath('/pages/exam/payment?type=2')">
20 <image src="@/static/icon/13.png" />段位考试<br />缴费单
21 </view>
22
23 <view @click="goPath('/pages/exam/score?type=2')">
24 <image src="@/static/icon/12.png" />段位考试<br />成绩录入
25 </view>
26 <view @click="goPath('/pages/rank/apply?type=3')">
27 <image src="@/static/icon/14.png" />越位考试<br />申请
28 </view>
29
30 <view @click="goPath('/pages/exam/payment?type=3')">
31 <image src="@/static/icon/16.png" />越段考试<br />缴费单
32 </view>
33
34 <view @click="goPath('/pages/exam/score?type=3')">
35 <image src="@/static/icon/15.png" />越段考试<br />成绩录入
36 </view>
37 </view>
38 </view>
39 </template>
40
41 <script setup>
42 import {
43 onShow,onLoad
44 } from '@dcloudio/uni-app'
45 import {
46 ref
47 } from 'vue'
48 const app = getApp()
49 const userType = ref()
50 onLoad((option)=>{
51 userType.value = option.userType
52 })
53
54 function goPath(path) {
55 uni.navigateTo({
56 url: path
57 });
58 }
59 </script>
60
61 <style scoped lang="scss">
62
63 .girdBox {
64 display: flex;
65 flex-wrap: wrap;
66 padding: 30rpx 0;
67 background: #FFFFFF;
68 margin: 50rpx;
69 border-radius: 20rpx;
70
71 view {
72 width: 25%;
73 text-align: center;
74 padding: 2% 0;
75 font-size: 24rpx;
76 color: #434343;
77
78 image {
79 width: 80rpx;
80 height: 80rpx;
81 display: block;
82 margin: auto;
83 }
84 }
85 }
86 .f3{
87 view {
88 width:33%;}
89 }
90 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -36,11 +36,19 @@ ...@@ -36,11 +36,19 @@
36 </view> 36 </view>
37 <view class="wBox" v-if="active == 1"> 37 <view class="wBox" v-if="active == 1">
38 <!-- 添加考生 --> 38 <!-- 添加考生 -->
39 <button class="btn-red-kx mini" @click="chooseOnline">在线选择</button> 39 <view class="flexbox">
40 <button class="btn-red-kx mini w45" @click="chooseOnline">
41 <uni-icons type="personadd" size="16" color="#AD181F"></uni-icons>
42 在线选择</button>
43 <button class="btn-red-kx mini w45" @click="handleUpdate">
44 <uni-icons type="upload" size="16" color="#AD181F"></uni-icons>
45 上传成绩单</button>
46 </view>
40 <view class="vipData mt30"> 47 <view class="vipData mt30">
41 <view><text>{{tablePersonInfo.total}}</text></view> 48 <view><text>{{tablePersonInfo.total}}</text></view>
42 <view v-for="l in tablePersonInfo.levelArr" :key="l.level"> 49 <view v-for="l in tablePersonInfo.levelArr" :key="l.level">
43 {{ szToHz(l.level) }}级:<text>{{tablePersonInfo.total}}</text></view> 50 {{ szToHz(l.level) }}级:<text>{{tablePersonInfo.total}}</text>
51 </view>
44 </view> 52 </view>
45 <view class="userlist"> 53 <view class="userlist">
46 <view class="item" v-for="n in infoList" style="background-color: #fffafa;"> 54 <view class="item" v-for="n in infoList" style="background-color: #fffafa;">
...@@ -73,8 +81,7 @@ ...@@ -73,8 +81,7 @@
73 <view style="width: 30%;"> 81 <view style="width: 30%;">
74 是否通过 82 是否通过
75 <view> 83 <view>
76 <uni-data-select v-model="n.isPass" :localdata="range" 84 <uni-data-select v-model="n.isPass" :localdata="range"></uni-data-select>
77 ></uni-data-select>
78 </view> 85 </view>
79 </view> 86 </view>
80 </view> 87 </view>
...@@ -95,7 +102,7 @@ ...@@ -95,7 +102,7 @@
95 </view> 102 </view>
96 <view class="fixedBottom" v-if="active == 1"> 103 <view class="fixedBottom" v-if="active == 1">
97 <button class="btn-red-kx" style="width: 25%;" @click="active=0">上一步</button> 104 <button class="btn-red-kx" style="width: 25%;" @click="active=0">上一步</button>
98 <button class="btn-red" style="width: 25%;" @click="submitForm2(0)">保存</button> 105 <button class="btn-red-kx" style="width: 25%;" @click="submitForm2(0)">保存</button>
99 <button class="btn-red" style="width: 30%;" @click="submitForm2(1)">提交审核</button> 106 <button class="btn-red" style="width: 30%;" @click="submitForm2(1)">提交审核</button>
100 </view> 107 </view>
101 108
...@@ -116,15 +123,32 @@ ...@@ -116,15 +123,32 @@
116 <view> 123 <view>
117 <view class="name">{{n.name}} <text>{{n.perCode}}</text></view> 124 <view class="name">{{n.name}} <text>{{n.perCode}}</text></view>
118 <view class="date">到期时间:{{n.validityDate}}</view> 125 <view class="date">到期时间:{{n.validityDate}}</view>
119 <view class="date" style="color: #1561CB;" v-if="n.levelJi&&n.levelJi!=0">级位:{{szToHz(n.levelJi)}}</view> 126 <view class="date" style="color: #1561CB;" v-if="n.levelJi&&n.levelJi!=0">
120 <view class="date" v-else >级位:十级</view> 127 级位:{{szToHz(n.levelJi)}}</view>
128 <view class="date" v-else>级位:十级</view>
121 </view> 129 </view>
122 </view> 130 </view>
123 131 <view class="nodata" v-if="studentList.length==0">
124 <button class="btn-red-kx" @click="submitStudents">确定</button> 132 <image mode="aspectFit" src="/static/nodata.png"></image>
133 <text>无可参加考试会员</text>
134 </view>
135 <button class="btn-red-kx" v-if="studentList.length!=0" @click="submitStudents">确定</button>
125 </view> 136 </view>
126 </view> 137 </view>
127 </uni-popup> 138 </uni-popup>
139
140 <uni-popup ref="UpPop" type="bottom" background-color="#fff" animation>
141 <view class="popBody">
142 <view class="h3 text-center">上传成绩单</view>
143 <text class="must">*请上传大小不超过 10MB 格式为 png/jpg/jpeg/pdf/zip 的文件</text>
144 <uni-file-picker v-model="transcript" class="mtb30" file-mediatype="all"
145 file-extname="png,jpg,jpeg,pdf,zip" @select="selectFile" @progress="fileProgress"
146 @delete="delSupplementFile"></uni-file-picker>
147
148 <button class="btn-red" @click="uploadSure">确定</button>
149 </view>
150 </uni-popup>
151
128 </view> 152 </view>
129 </template> 153 </template>
130 154
...@@ -143,7 +167,7 @@ ...@@ -143,7 +167,7 @@
143 const app = getApp(); 167 const app = getApp();
144 const memberInfo = app.globalData.memberInfo 168 const memberInfo = app.globalData.memberInfo
145 const form = ref({ 169 const form = ref({
146 170 type: 1
147 }); 171 });
148 const dataList = ref([]); 172 const dataList = ref([]);
149 const examinerForChoose = ['A', 'B', 'C'] 173 const examinerForChoose = ['A', 'B', 'C']
...@@ -156,13 +180,50 @@ ...@@ -156,13 +180,50 @@
156 title: '添加考生' 180 title: '添加考生'
157 }]) 181 }])
158 const choseStudent = ref(null) 182 const choseStudent = ref(null)
183 const UpPop = ref(null)
159 const studentList = ref([]) 184 const studentList = ref([])
160 const infoList = ref([]) 185 const infoList = ref([])
161 const ids = ref([]) 186 const ids = ref([])
162 const tablePersonInfo = ref({}) 187 const tablePersonInfo = ref({})
163 const transcript = ref([]) 188 const transcript = ref([])
164 const levelArr = ref([{value:'10',text:'十级'},{value:'9',text:'九级'},{value:'8',text:'八级'},{value:'7',text:'七级'},{value:'6',text:'六级'},{value:'5',text:'五级'},{value:'4',text:'四级'},{value:'3',text:'三级'},{value:'2',text:'二级'},{value:'1',text:'一级'}]) 189 const levelArr = ref([{
165 const range = ref([{value:'1',text:'是'},{value:'0',text:'否'}]) 190 value: '10',
191 text: '十级'
192 }, {
193 value: '9',
194 text: '九级'
195 }, {
196 value: '8',
197 text: '八级'
198 }, {
199 value: '7',
200 text: '七级'
201 }, {
202 value: '6',
203 text: '六级'
204 }, {
205 value: '5',
206 text: '五级'
207 }, {
208 value: '4',
209 text: '四级'
210 }, {
211 value: '3',
212 text: '三级'
213 }, {
214 value: '2',
215 text: '二级'
216 }, {
217 value: '1',
218 text: '一级'
219 }])
220 const range = ref([{
221 value: '1',
222 text: '是'
223 }, {
224 value: '0',
225 text: '否'
226 }])
166 let examId 227 let examId
167 onLoad(option => { 228 onLoad(option => {
168 console.log(option) 229 console.log(option)
...@@ -302,6 +363,13 @@ ...@@ -302,6 +363,13 @@
302 // form.value.examId 下一步 363 // form.value.examId 下一步
303 active.value = 1 364 active.value = 1
304 getChosedStudentList() 365 getChosedStudentList()
366 if(form.value.examId){
367 api.getLevelApplyInfo(form.value.examId).then(res=>{
368 if (res.data.transcript) {
369 transcript.value = JSON.parse(res.data.transcript)
370 }
371 })
372 }
305 }) 373 })
306 } 374 }
307 } 375 }
...@@ -426,16 +494,19 @@ ...@@ -426,16 +494,19 @@
426 }) 494 })
427 } 495 }
428 } 496 }
497
429 function szToHz(num) { 498 function szToHz(num) {
430 const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'] 499 const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
431 return hzArr[parseInt(num)] 500 return hzArr[parseInt(num)]
432 } 501 }
433 502
434 let nowRow 503 let nowRow
435 function changeLevelfather(row){ 504
505 function changeLevelfather(row) {
436 nowRow = row 506 nowRow = row
437 } 507 }
438 function changeLevel(e){ 508
509 function changeLevel(e) {
439 console.log(e) 510 console.log(e)
440 if (e !== nowRow.levelRecommend) { 511 if (e !== nowRow.levelRecommend) {
441 uni.showModal({ 512 uni.showModal({
...@@ -446,13 +517,14 @@ ...@@ -446,13 +517,14 @@
446 getTablePersonInfo() 517 getTablePersonInfo()
447 } 518 }
448 }, 519 },
449 fail: function (res) { 520 fail: function(res) {
450 nowRow.levelNew = nowRow.levelRecommend 521 nowRow.levelNew = nowRow.levelRecommend
451 } 522 }
452 }) 523 })
453 } 524 }
454 } 525 }
455 function submitForm2(flag){ 526
527 function submitForm2(flag) {
456 if (flag === 1) { 528 if (flag === 1) {
457 if (infoList.value.length == 0) { 529 if (infoList.value.length == 0) {
458 uni.showToast({ 530 uni.showToast({
...@@ -473,14 +545,24 @@ ...@@ -473,14 +545,24 @@
473 title: '提示', 545 title: '提示',
474 content: `确定提交审核?`, 546 content: `确定提交审核?`,
475 success: function(res) { 547 success: function(res) {
476 saveStep2(flag) 548 saveStep2(flag).then(res => {
549 uni.showToast({
550 title: `操作成功`
551 })
552 uni.navigateBack()
553 })
477 } 554 }
478 }) 555 })
479 } else { 556 } else {
480 saveStep2(flag) 557 saveStep2(flag).then(res => {
558 uni.showToast({
559 title: `操作成功`
560 })
561 })
481 } 562 }
482 } 563 }
483 function saveStep2(flag){ 564
565 function saveStep2(flag) {
484 const data = _.map(infoList.value, (d) => { 566 const data = _.map(infoList.value, (d) => {
485 return { 567 return {
486 id: d.id, 568 id: d.id,
...@@ -497,9 +579,65 @@ ...@@ -497,9 +579,65 @@
497 }) 579 })
498 } 580 }
499 581
582 function handleUpdate() {
583 UpPop.value.open()
584 }
585 let selectFileValue = {}
586
587 function selectFile(e) {
588 console.log(e)
589 for (const n in e.tempFiles) {
590 api.uploadFileList(e.tempFilePaths[n]).then(data => {
591 console.log(data)
592 selectFileValue = {
593 url: data,
594 name: e.tempFiles[n].name,
595 extname: e.tempFiles[n].extname
596 }
597
598 transcript.value.push(selectFileValue)
599 });
600 }
601
602 }
603
604 function fileProgress(e) {
605 console.log('progress:' + e)
606 }
607
608 function delSupplementFile(e) {
609 transcript.value = _.remove(transcript.value, function(n) {
610 return n.name != e.tempFile.name;
611 });
612 console.log(transcript.value)
613 }
614
615 function uploadSure() {
616 console.log(transcript.value)
617 // 上传确定
618 if (transcript.value.length == 0) {
619 uni.showToast({
620 title: `请上传成绩单`,
621 icon: 'error'
622 })
623 return
624 }
625
626 form.value.transcript = JSON.stringify(_.map(transcript.value, (t) => {
627 return {
628 name: t.name,
629 url: t.url
630 }
631 }))
632 UpPop.value.close()
633 }
500 </script> 634 </script>
501 635
502 <style lang="scss" scoped> 636 <style lang="scss" scoped>
637 :deep(.uni-progress-bar) {
638 display: none;
639 }
640
503 .wBox { 641 .wBox {
504 width: 700rpx; 642 width: 700rpx;
505 padding: 30rpx; 643 padding: 30rpx;
...@@ -512,5 +650,8 @@ ...@@ -512,5 +650,8 @@
512 :deep(.uni-forms-item__inner) { 650 :deep(.uni-forms-item__inner) {
513 padding-bottom: 20rpx; 651 padding-bottom: 20rpx;
514 } 652 }
515 .popBody{padding: 30rpx;} 653
654 .popBody {
655 padding: 40rpx 30rpx;
656 }
516 </style> 657 </style>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -9,16 +9,15 @@ ...@@ -9,16 +9,15 @@
9 <view class="appList"> 9 <view class="appList">
10 <view class="appItem" v-for="item in list"> 10 <view class="appItem" v-for="item in list">
11 <view class="status" @click="goDetail(item)"> 11 <view class="status" @click="goDetail(item)">
12 <text :class="{ 12 <text v-if="item.status=='0'" class="text-primary">{{ item.statusStr }}</text>
13 'text-primary':item.status=='1', 13 <text v-if="item.status=='1'" class="text-primary">{{ item.statusStr }}</text>
14 'text-success':item.status=='2', 14 <text v-if="item.status=='2'" class="text-success">{{ item.statusStr }}</text>
15 'text-danger':item.status=='3', 15 <text v-if="item.status=='3'" class="text-danger">{{ item.statusStr }}</text>
16 'text-warning':item.status=='4' 16 <text v-if="item.status=='4'" class="text-warning">{{ item.statusStr }}</text>
17 }">{{ item.statusStr }}</text>
18 </view> 17 </view>
19
20 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 18 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
21 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 19 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
20 <view class="pp esp">申请单位:{{item.memberName}}</view>
22 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view> 21 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
23 <view class="flexbox" @click="goDetail(item)"> 22 <view class="flexbox" @click="goDetail(item)">
24 <view> 23 <view>
...@@ -26,8 +25,8 @@ ...@@ -26,8 +25,8 @@
26 <view>{{item.applyTime.substring(0, 10)}}</view> 25 <view>{{item.applyTime.substring(0, 10)}}</view>
27 </view> 26 </view>
28 <view> 27 <view>
29 申请单位 28 考官
30 <view>{{item.memberName}}</view> 29 <view>{{item.examinerNames}}</view>
31 </view> 30 </view>
32 <view> 31 <view>
33 通过人数 32 通过人数
...@@ -117,39 +116,42 @@ ...@@ -117,39 +116,42 @@
117 url: path 116 url: path
118 }); 117 });
119 } 118 }
120 function handleSubmit(item){ 119
120 function handleSubmit(item) {
121 uni.showModal({ 121 uni.showModal({
122 title: '提示', 122 title: '提示',
123 content: `确定提交${item.name}进行审核吗`, 123 content: `确定提交${item.name}进行审核吗`,
124 success: function(res) { 124 success: function(res) {
125 if (res.confirm) { 125 if (res.confirm) {
126 uni.showLoading({ 126 uni.showLoading({
127 title:`提交中` 127 title: `提交中`
128 }) 128 })
129 upApply(item.examId) 129 upApply(item.examId)
130 } 130 }
131 } 131 }
132 }) 132 })
133 } 133 }
134 function upApply(id){ 134
135 api.submitVerity(id).then(res=>{ 135 function upApply(id) {
136 api.submitVerity(id).then(res => {
136 uni.hideLoading() 137 uni.hideLoading()
137 getList() 138 getList()
138 uni.showToast({ 139 uni.showToast({
139 title:`提交成功` 140 title: `提交成功`
140 }) 141 })
141 }) 142 })
142 } 143 }
143 144
144 145
145 function goDetail(item) { 146 function goDetail(item) {
146 if(item.status!='0'){ 147 if (item.status != '0') {
147 let path = `/pages/level/applyDetail?examId=${item.examId}` 148 let path = `/pages/level/applyDetail?examId=${item.examId}`
148 uni.navigateTo({ 149 uni.navigateTo({
149 url: path 150 url: path
150 }); 151 });
151 } else { 152 } else {
152 return 153 // 去编辑
154 editThis(item)
153 } 155 }
154 156
155 } 157 }
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
14 </view> 14 </view>
15 <view> 15 <view>
16 <view class="name">{{n.name}}</view> 16 <view class="name">{{n.name}}</view>
17 <view class="date">会员号:{{n.perCode}}</view> 17 <view class="date">会员号:{{n.perCode||'-'}}</view>
18 </view> 18 </view>
19 <view class="status"> 19 <view class="status">
20 <text v-if="checkChosen(n)">选择</text> 20 <text v-if="checkChosen(n)">选择</text>
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
18 <text class="lab">{{ type=='1'?'考级人数':'考段人数' }}</text>{{form.totalNum}} 18 <text class="lab">{{ type=='1'?'考级人数':'考段人数' }}</text>{{form.totalNum}}
19 </view> 19 </view>
20 <view class="ddd"> 20 <view class="ddd">
21 <text class="lab">总金额:</text>{{ (form.totalAmount*1).toFixed(2) }} 21 <text class="lab">总金额:</text>¥{{ (form.totalAmount*1).toFixed(2) }}
22 </view> 22 </view>
23 </view> 23 </view>
24 <view class="wBox"> 24 <view class="wBox">
...@@ -41,12 +41,7 @@ ...@@ -41,12 +41,7 @@
41 {{n.totalNum}} 41 {{n.totalNum}}
42 </text> 42 </text>
43 </view> 43 </view>
44 <view v-if="app.globalData.showPrice"> 44
45 金额
46 <text>
47 {{ (n.examFee * 1).toFixed(2) }}
48 </text>
49 </view>
50 <view> 45 <view>
51 金额 46 金额
52 <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text> 47 <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text>
......
1 <template> 1 <template>
2 <view class="mainbox"> 2 <view class="mainbox">
3 <view class="photobox"> 3 <view class="photobox">
4 <image class="photo" v-if="form.photo" :src="config.fileUrl_api + form.photo" mode='widthFix'></image> 4 <image class="photo" v-if="form.photo" :src="config.baseUrl_api + form.photo" mode='widthFix'></image>
5 <view class="colorful" v-else>{{form.name?.slice(0,1)}}</view> 5 <view class="colorful" v-else>{{form.name?.slice(0,1)}}</view>
6
7 </view> 6 </view>
8 <uni-list> 7 <uni-list>
9 <uni-list-item title="姓名" :rightText="form.name"/> 8 <uni-list-item title="姓名" :rightText="form.name"/>
...@@ -14,11 +13,12 @@ ...@@ -14,11 +13,12 @@
14 <uni-list-item title="所属一级协会" :rightText="form.topAssName"/> 13 <uni-list-item title="所属一级协会" :rightText="form.topAssName"/>
15 <uni-list-item title="所属地区协会" :rightText="form.areaAssName"/> 14 <uni-list-item title="所属地区协会" :rightText="form.areaAssName"/>
16 <uni-list-item title="注册团体会员" :rightText="form.memName"/> 15 <uni-list-item title="注册团体会员" :rightText="form.memName"/>
17 <uni-list-item title="缴费日期" :rightText="form.payDate"/> 16 <uni-list-item title="缴费日期" :rightText="form.payDate||'--'"/>
18 <uni-list-item title="出生日期" :rightText="form.birth?.slice(0,10)"/> 17 <uni-list-item title="出生日期" :rightText="form.birth?.slice(0,10)"/>
19 <uni-list-item title="手机号码" :rightText="form.phone"/> 18 <uni-list-item title="手机号码" :rightText="form.phone"/>
20 <uni-list-item title="所在地区" :rightText="form.cityId"/> 19 <uni-list-item title="所在地区" :rightText="form.cityStr"/>
21 <uni-list-item title="详细地址" :rightText="form.address"/> 20
21 <uni-list-item title="详细地址" :rightText="form.address||'--'"/>
22 </uni-list> 22 </uni-list>
23 23
24 </view> 24 </view>
...@@ -46,10 +46,25 @@ ...@@ -46,10 +46,25 @@
46 form.value.topAssName = form.value?.ancestorNameList?.[0] 46 form.value.topAssName = form.value?.ancestorNameList?.[0]
47 form.value.areaAssName = form.value?.ancestorNameList?.[1] 47 form.value.areaAssName = form.value?.ancestorNameList?.[1]
48 form.value.memName = res.data.memName 48 form.value.memName = res.data.memName
49 if(form.value.cityId){
50 getRegionsList(form.value.cityId)
51 }
49 }) 52 })
50 }) 53 })
54 function getRegionsList(cityId){
55 api.regionsList().then(res=>{
56 for(var m of res.data){
57 for(var n of m.children){
58 for(var o of n.children){
59 if(o.value == cityId){
60 form.value.cityStr = m.text + n.text + o.text
61 }
62 }
51 63
52 64 }
65 }
66 })
67 }
53 </script> 68 </script>
54 69
55 <style scoped lang="scss"> 70 <style scoped lang="scss">
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
20 </view> 20 </view>
21 </view> 21 </view>
22 <view class="flexbox"> 22 <view class="flexbox">
23 <text v-if="n.certStage==0" class="text-green"> 23 <text v-if="n.certStage==0" class="text-primary">
24 新会员 24 新会员
25 </text> 25 </text>
26 <text v-if="n.certStage==1" class="text-warning"> 26 <text v-if="n.certStage==1" class="text-warning">
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
29 <text v-if="n.certStage==2" class="text-red"> 29 <text v-if="n.certStage==2" class="text-red">
30 缴费中 30 缴费中
31 </text> 31 </text>
32 <text v-if="n.certStage==3"> 32 <text v-if="n.certStage==3" class="text-success">
33 正常 33 正常
34 </text> 34 </text>
35 <text v-if="n.certStage==4" class="text-gray"> 35 <text v-if="n.certStage==4" class="text-gray">
...@@ -97,12 +97,6 @@ ...@@ -97,12 +97,6 @@
97 query.value.showMyPersonFlag = 1 97 query.value.showMyPersonFlag = 1
98 } 98 }
99 api.selectPageList(query.value).then(res => { 99 api.selectPageList(query.value).then(res => {
100 for (var p of res.rows) {
101 if (p.photo) {
102 p.photo = config.fileUrl_api + p.photo
103 console.log(p.photo)
104 }
105 }
106 list.value = res.rows 100 list.value = res.rows
107 total.value = res.total 101 total.value = res.total
108 }) 102 })
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
2 <view> 2 <view>
3 <view class="searchbar"> 3 <view class="searchbar">
4 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" 4 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
5 v-model="queryParams.name" placeholder="搜索考名称" @blur="getList" @clear="getList"> 5 v-model="queryParams.name" placeholder="搜索考名称" @blur="getList" @clear="getList">
6 </uni-easyinput> 6 </uni-easyinput>
7 <view class="invertedbtn-red" @click="goAdd">+ 添加级位考试</view> 7 <!-- <view class="invertedbtn-red" @click="goAdd">+ 添加段位考试</view> -->
8 </view> 8 </view>
9 <view class="appList"> 9 <view class="appList">
10 <view class="appItem" v-for="item in list"> 10 <view class="appItem" v-for="item in list">
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
30 <view>{{item.memberName}}</view> 30 <view>{{item.memberName}}</view>
31 </view> 31 </view>
32 <view> 32 <view>
33 通过人 33 考生
34 <view>{{item.pass}}</view> 34 <view>{{item.totalNum||0}}</view>
35 </view> 35 </view>
36 </view> 36 </view>
37 <view class="func" v-if="item.status=='0'||item.status=='3'||item.status=='4'"> 37 <view class="func" v-if="item.status=='0'||item.status=='3'||item.status=='4'">
...@@ -73,8 +73,8 @@ ...@@ -73,8 +73,8 @@
73 const list = ref([]) 73 const list = ref([])
74 const total = ref(0) 74 const total = ref(0)
75 const deptType = ref('') 75 const deptType = ref('')
76 onLoad(() => { 76 onLoad((option) => {
77 77 queryParams.value.type = option.type
78 }) 78 })
79 onShow(() => { 79 onShow(() => {
80 if (app.globalData.isLogin) { 80 if (app.globalData.isLogin) {
...@@ -144,7 +144,7 @@ ...@@ -144,7 +144,7 @@
144 144
145 function goDetail(item) { 145 function goDetail(item) {
146 if(item.status!='0'){ 146 if(item.status!='0'){
147 let path = `/pages/level/applyDetail?examId=${item.examId}` 147 let path = `/pages/rank/applyDetail?examId=${item.examId}&type=${queryParams.value.type}`
148 uni.navigateTo({ 148 uni.navigateTo({
149 url: path 149 url: path
150 }); 150 });
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
49 <text v-else>--</text> 49 <text v-else>--</text>
50 </view> 50 </view>
51 <view> 51 <view>
52 考试级别 52 考试段位
53 <text v-if="n.levelNew">{{ szToHz(n.levelNew) }}段/品</text> 53 <text v-if="n.levelNew">{{ szToHz(n.levelNew) }}段/品</text>
54 <text v-else>--</text> 54 <text v-else>--</text>
55 </view> 55 </view>
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
88 </view> 88 </view>
89 <!-- <view class="name">{{index+1}}</view> --> 89 <!-- <view class="name">{{index+1}}</view> -->
90 <view class="deptName">{{n.deptName}}</view> 90 <view class="deptName">{{n.deptName}}</view>
91 <view v-if="n.auditStatus==2"> 91 <view v-if="n.reason">
92 备注:{{n.reason||'' }} 92 备注:{{n.reason||'' }}
93 </view> 93 </view>
94 </view> 94 </view>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!