2afd2229 by 华明祺

段位考试审批

1 parent 4c57b42c
1 import request from './request.js' 1 import request from './request.js'
2 import config from '@/config.js' 2 import config from '@/config.js'
3 import * as loginServer from '@/common/login.js';
4 3
5 function getMessage(params) { 4 function getMessage(params) {
6 return request({ 5 return request({
7 url: '/common/home/getMessage', 6 url: '/common/home/getMessage',
8 method: 'get', 7 method: 'get',
9 params: params 8 params: params
10 }) 9 })
11 } 10 }
12 11
13 function reader(query) { 12 function reader(query) {
14 return request({ 13 return request({
15 url: '/common/home/readMessage', 14 url: '/common/home/readMessage',
16 method: 'get', 15 method: 'get',
17 params: query 16 params: query
18 }) 17 })
19 } 18 }
20 19
21 function regionsList(params) { 20 function regionsList(params) {
22 return request({ 21 return request({
23 url: '/common/region/regionsList', 22 url: '/common/region/regionsList',
24 method: 'get', 23 method: 'get',
25 params 24 params
26 }) 25 })
27 } 26 }
28 // 添加会员自动录入 上传图片 27 // 添加会员自动录入 上传图片
29 function carUrl(data, type) { 28 function carUrl(data, type) {
30 return uni.uploadFile({ 29 return uni.uploadFile({
31 url: `${config.baseUrl_api}/person/info/getPersonInfoFromCert/${type}`, 30 url: `${config.baseUrl_api}/person/info/getPersonInfoFromCert/${type}`,
32 header: { 31 header: {
33 'Authorization': uni.getStorageSync('token'), 32 'Authorization': uni.getStorageSync('token')
34 }, 33 },
35 name: 'pic', 34 name: 'pic',
36 filePath: data 35 filePath: data
37 }) 36 })
38 // return request({ 37 // return request({
39 // url: `/person/info/getPersonInfoFromCert/${type}`, 38 // url: `/person/info/getPersonInfoFromCert/${type}`,
40 // method: 'post', 39 // method: 'post',
41 // params: data 40 // params: data
42 // }) 41 // })
43 } 42 }
44 43
45 // 添加会员信息 44 // 添加会员信息
46 function addPersonToMyDept(data) { 45 function addPersonToMyDept(data) {
47 return request({ 46 return request({
48 url: '/person/info/addPersonToMyDept', 47 url: '/person/info/addPersonToMyDept',
49 method: 'post', 48 method: 'post',
50 params: data 49 params: data
51 }) 50 })
52 } 51 }
53 52
54 // 图片上传 53 // 图片上传
55 function uploadImg(e) { 54 function uploadImg(e) {
56 const tempFilePaths = e.tempFilePaths; 55 const tempFilePaths = e.tempFilePaths
57 const imgUrl = tempFilePaths[0] 56 const imgUrl = tempFilePaths[0]
58 uni.showLoading({ 57 uni.showLoading({
59 title: '加载中' 58 title: '加载中'
60 }); 59 })
61 return uni.uploadFile({ 60 return uni.uploadFile({
62 url: config.baseUrl_api + '/upload/uploadImg', 61 url: config.baseUrl_api + '/upload/uploadImg',
63 filePath: imgUrl, 62 filePath: imgUrl,
64 name: 'image' 63 name: 'image'
65 }).then(res => { 64 }).then(res => {
66 let data = JSON.parse(res.data); 65 const data = JSON.parse(res.data)
67 return data 66 return data
68 }).finally(() => { 67 }).finally(() => {
69 uni.hideLoading(); 68 uni.hideLoading()
70 }); 69 })
71 } 70 }
72 71
73 function getInfo(perId) { 72 function getInfo(perId) {
74 return request({ 73 return request({
75 url: '/person/info/' + perId, 74 url: '/person/info/' + perId,
76 method: 'get' 75 method: 'get'
77 }) 76 })
78 } 77 }
79 // 查询个人会员信息列表 78 // 查询个人会员信息列表
80 function selectPageList(query) { 79 function selectPageList(query) {
81 return request({ 80 return request({
82 url: '/person/info/selectPageList', 81 url: '/person/info/selectPageList',
83 method: 'get', 82 method: 'get',
84 params: query 83 params: query
85 }) 84 })
86 } 85 }
87 86
88 function delInfo(perId) { 87 function delInfo(perId) {
89 return request({ 88 return request({
90 url: '/person/info/' + perId, 89 url: '/person/info/' + perId,
91 method: 'delete' 90 method: 'delete'
92 }) 91 })
93 } 92 }
94 // 查询个人个人会员缴费列表 93 // 查询个人个人会员缴费列表
95 function getPaymentList(query) { 94 function getPaymentList(query) {
96 return request({ 95 return request({
97 url: '/person/paymentRange/selectPageList', 96 url: '/person/paymentRange/selectPageList',
98 method: 'get', 97 method: 'get',
99 params: query 98 params: query
100 }) 99 })
101 } 100 }
102 // 查询添加个人个人会员缴费列表 101 // 查询添加个人个人会员缴费列表
103 function addSelectPageList(query) { 102 function addSelectPageList(query) {
104 return request({ 103 return request({
105 url: '/person/payment/selectPageList', 104 url: '/person/payment/selectPageList',
106 method: 'get', 105 method: 'get',
107 params: query 106 params: query
108 }) 107 })
109 } 108 }
110 109
111 function fillAuditLog(ids) { 110 function fillAuditLog(ids) {
112 return request({ 111 return request({
113 url: `/person/paymentRange/fillAuditLog/${ids}`, 112 url: `/person/paymentRange/fillAuditLog/${ids}`,
114 method: 'get' 113 method: 'get'
115 }) 114 })
116 } 115 }
117 // 审核列表 116 // 审核列表
118 function getVerifyList(params) { 117 function getVerifyList(params) {
119 return request({ 118 return request({
120 url: '/person/paymentRange/verifyList', 119 url: '/person/paymentRange/verifyList',
121 method: 'get', 120 method: 'get',
122 params: params 121 params: params
123 }) 122 })
124 } 123 }
125 // 审核 124 // 审核
126 function audit(data) { 125 function audit(data) {
127 return request({ 126 return request({
128 url: '/person/paymentRange/audit', 127 url: '/person/paymentRange/audit',
129 method: 'post', 128 method: 'post',
130 params: data 129 params: data
131 }) 130 })
132 } 131 }
133 // 审核详情 132 // 审核详情
134 function getHistoryByRelateId(rId) { 133 function getHistoryByRelateId(rId) {
135 return request({ 134 return request({
136 url: `/person/paymentRange/getHistoryByRelateId/${rId}`, 135 url: `/person/paymentRange/getHistoryByRelateId/${rId}`,
137 method: 'get', 136 method: 'get'
138 }) 137 })
139 } 138 }
140 // 查询团体会员信息列表 139 // 查询团体会员信息列表
141 function getGroupVipList(query) { 140 function getGroupVipList(query) {
142 return request({ 141 return request({
143 url: '/member/info/selectPageList', 142 url: '/member/info/selectPageList',
144 method: 'get', 143 method: 'get',
145 params: query 144 params: query
146 }) 145 })
147 } 146 }
148 // 查询团体会员 全部会员数,有效会员数 147 // 查询团体会员 全部会员数,有效会员数
149 function getMemberCountInfo(query) { 148 function getMemberCountInfo(query) {
150 return request({ 149 return request({
151 url: '/member/info/getMemberCountInfo', 150 url: '/member/info/getMemberCountInfo',
152 method: 'get', 151 method: 'get',
153 params: query 152 params: query
154 }) 153 })
155 } 154 }
156 155
157 function getFeeBillList(query) { 156 function getFeeBillList(query) {
158 return request({ 157 return request({
159 url: '/person/paymentDoc/list', 158 url: '/person/paymentDoc/list',
160 method: 'get', 159 method: 'get',
161 params: query 160 params: query
162 }) 161 })
163 } 162 }
164 163
165 function commitPaymentVoucher(data) { 164 function commitPaymentVoucher(data) {
166 return request({ 165 return request({
167 url: '/person/paymentDoc/commitPaymentVoucher', 166 url: '/person/paymentDoc/commitPaymentVoucher',
168 method: 'post', 167 method: 'post',
169 params: data 168 params: data
170 }) 169 })
171 } 170 }
172 171
173 function getFeeBillDetail(payId) { 172 function getFeeBillDetail(payId) {
174 return request({ 173 return request({
175 url: `/person/paymentDoc/${payId}`, 174 url: `/person/paymentDoc/${payId}`,
176 method: 'get' 175 method: 'get'
177 }) 176 })
178 } 177 }
179 // 获取自己团队成员信息 178 // 获取自己团队成员信息
180 function getMyOwnMemberInfo() { 179 function getMyOwnMemberInfo() {
181 return request({ 180 return request({
182 url: '/member/info/getMyOwnMemberInfo', 181 url: '/member/info/getMyOwnMemberInfo',
183 method: 'get' 182 method: 'get'
184 }) 183 })
185 } 184 }
186 // 会员调入 185 // 会员调入
187 function getMobilizelist(params) { 186 function getMobilizelist(params) {
188 return request({ 187 return request({
189 url: '/person/transferRange/list', 188 url: '/person/transferRange/list',
190 method: 'get', 189 method: 'get',
191 params 190 params
192 }) 191 })
193 } 192 }
194 // 调动会员成员 193 // 调动会员成员
195 function getTransferList(data) { 194 function getTransferList(data) {
196 return request({ 195 return request({
197 url: `/person/transfer/list`, 196 url: `/person/transfer/list`,
198 method: 'get', 197 method: 'get',
199 params: data 198 params: data
200 }) 199 })
201 } 200 }
202 // 查询团体会员信息列表 201 // 查询团体会员信息列表
203 function getGroupList(params) { 202 function getGroupList(params) {
204 return request({ 203 return request({
205 url: `/member/certified/verifyList`, 204 url: `/member/certified/verifyList`,
206 method: 'get', 205 method: 'get',
207 params: params 206 params: params
208 }) 207 })
209 } 208 }
210 // 查询 209 // 查询
211 function pickUp(data) { 210 function pickUp(data) {
212 return request({ 211 return request({
213 url: `/person/info/pickUp`, 212 url: `/person/info/pickUp`,
214 method: 'get', 213 method: 'get',
215 params: data 214 params: data
216 }) 215 })
217 } 216 }
218 // 添加调入会员 217 // 添加调入会员
219 function addTransferToRange(data) { 218 function addTransferToRange(data) {
220 return request({ 219 return request({
221 url: `/person/transfer/addTransferToRange`, 220 url: `/person/transfer/addTransferToRange`,
222 method: 'post', 221 method: 'post',
223 params: data 222 params: data
224 }) 223 })
225 } 224 }
226 225
227 function commit(rangeIds) { 226 function commit(rangeIds) {
228 return request({ 227 return request({
229 url: `/person/transferRange/commit/${rangeIds}`, 228 url: `/person/transferRange/commit/${rangeIds}`,
230 method: 'post' 229 method: 'post'
231 }) 230 })
232 } 231 }
233 // 调动审批 232 // 调动审批
234 function mobilizeAudit(data) { 233 function mobilizeAudit(data) {
235 return request({ 234 return request({
236 url: `/person/transferRange/audit/${data.rangeIds}`, 235 url: `/person/transferRange/audit/${data.rangeIds}`,
237 method: 'post', 236 method: 'post',
238 params: data 237 params: data
239 }) 238 })
240 } 239 }
241 //文件上传 240 // 文件上传
242 function uploadFile(e) { 241 function uploadFile(e) {
243 const fileUrl = e.tempFilePaths[0] 242 const fileUrl = e.tempFilePaths[0]
244 uni.showLoading({ 243 uni.showLoading({
245 title: '加载中' 244 title: '加载中'
246 }); 245 })
247 return uni.uploadFile({ 246 return uni.uploadFile({
248 url: config.baseUrl_api + '/upload/uploadFileToLocalServer', 247 url: config.baseUrl_api + '/upload/uploadFileToLocalServer',
249 filePath: fileUrl, 248 filePath: fileUrl,
250 name: 'file', 249 name: 'file',
251 header: { 250 header: {
252 'Authorization': uni.getStorageSync('token') 251 'Authorization': uni.getStorageSync('token')
253 } 252 }
254 }).then(res => { 253 }).then(res => {
255 let data = JSON.parse(res.data); 254 const data = JSON.parse(res.data)
256 return data 255 return data
257 }).finally(() => { 256 }).finally(() => {
258 uni.hideLoading(); 257 uni.hideLoading()
259 }); 258 })
260 } 259 }
261 // 查询考级信息列表 260 // 查询考级信息列表
262 function getLevelList(query) { 261 function getLevelList(query) {
...@@ -352,7 +351,7 @@ function getVerityList(params) { ...@@ -352,7 +351,7 @@ function getVerityList(params) {
352 function getGroupHistoryByRelateId(id) { 351 function getGroupHistoryByRelateId(id) {
353 return request({ 352 return request({
354 url: `/member/certified/getHistoryByRelateId/${id}`, 353 url: `/member/certified/getHistoryByRelateId/${id}`,
355 method: 'get' 354 method: 'get'
356 }) 355 })
357 } 356 }
358 // 创建自己的团队 357 // 创建自己的团队
...@@ -360,7 +359,7 @@ function createMyMember(data) { ...@@ -360,7 +359,7 @@ function createMyMember(data) {
360 return request({ 359 return request({
361 url: '/member/info/createMyMember', 360 url: '/member/info/createMyMember',
362 method: 'post', 361 method: 'post',
363 params:data 362 params: data
364 }) 363 })
365 } 364 }
366 function doVerity(data) { 365 function doVerity(data) {
...@@ -388,13 +387,13 @@ function groupMergeApi(data) { ...@@ -388,13 +387,13 @@ function groupMergeApi(data) {
388 return request({ 387 return request({
389 url: `/member/certified/merge`, 388 url: `/member/certified/merge`,
390 method: 'post', 389 method: 'post',
391 params:data 390 params: data
392 }) 391 })
393 } 392 }
394 function getDetailList(data) { 393 function getDetailList(data) {
395 return request({ 394 return request({
396 url: `/member/certified/getDetailList`, 395 url: `/member/certified/getDetailList`,
397 method: 'get', 396 method: 'get',
398 params: data 397 params: data
399 }) 398 })
400 } 399 }
...@@ -408,7 +407,7 @@ function getPayList(data) { ...@@ -408,7 +407,7 @@ function getPayList(data) {
408 function getFillAuditLog(rangeId) { 407 function getFillAuditLog(rangeId) {
409 return request({ 408 return request({
410 url: `/member/certifiedRange/fillAuditLog/${rangeId}`, 409 url: `/member/certifiedRange/fillAuditLog/${rangeId}`,
411 method: 'get' 410 method: 'get'
412 }) 411 })
413 } 412 }
414 function commitGroupPay(rangeId) { 413 function commitGroupPay(rangeId) {
...@@ -464,7 +463,7 @@ function addPersonPaymentGroup(data) { ...@@ -464,7 +463,7 @@ function addPersonPaymentGroup(data) {
464 params: data 463 params: data
465 }) 464 })
466 } 465 }
467 function commitRenew(id) { 466 function commitRenew(id) {
468 return request({ 467 return request({
469 url: `/person/paymentRange/commit/${id}`, 468 url: `/person/paymentRange/commit/${id}`,
470 method: 'post' 469 method: 'post'
...@@ -495,49 +494,49 @@ function getMergePaymentInfo(mergeId) { ...@@ -495,49 +494,49 @@ function getMergePaymentInfo(mergeId) {
495 } 494 }
496 495
497 export { 496 export {
498 getMessage, 497 getMessage,
499 reader, 498 reader,
500 regionsList, 499 regionsList,
501 carUrl, 500 carUrl,
502 uploadImg, 501 uploadImg,
503 addPersonToMyDept, 502 addPersonToMyDept,
504 getInfo, 503 getInfo,
505 selectPageList, 504 selectPageList,
506 delInfo, 505 delInfo,
507 getPaymentList, 506 getPaymentList,
508 addSelectPageList, 507 addSelectPageList,
509 fillAuditLog, 508 fillAuditLog,
510 getVerifyList, 509 getVerifyList,
511 audit, 510 audit,
512 getHistoryByRelateId, 511 getHistoryByRelateId,
513 getGroupVipList, 512 getGroupVipList,
514 getMemberCountInfo, 513 getMemberCountInfo,
515 getFeeBillList, 514 getFeeBillList,
516 commitPaymentVoucher, 515 commitPaymentVoucher,
517 getFeeBillDetail, 516 getFeeBillDetail,
518 getMyOwnMemberInfo, 517 getMyOwnMemberInfo,
519 getMobilizelist, 518 getMobilizelist,
520 getTransferList, 519 getTransferList,
521 getGroupList, 520 getGroupList,
522 pickUp, 521 pickUp,
523 addTransferToRange, 522 addTransferToRange,
524 commit, 523 commit,
525 mobilizeAudit, 524 mobilizeAudit,
526 525
527 uploadFile,
528 getLevelList,
529 getLevelApplyInfo,
530 getStudentList,getApprovalRecord,submitVerity,
531 getCoachList,
532 updateLevelInfo,addLevelInfo,
533 chooseStudentsList,batchChoose,getVerityList,
534 getGroupHistoryByRelateId,
535 createMyMember,doVerity,mergeRecords,
536 groupAudit,groupMergeApi,
537 getDetailList,getPayList,
538 getFillAuditLog,commitGroupPay,getGroupFeeBill,
539 groupCommitPaymentVoucher,getFeeBillById,
540 personalCommit,
541 delPayment,editYear,addPersonPaymentGroup,
542 commitRenew,getVerityMergeList,doMergeFlows,getMergePaymentInfo
543 }
...\ No newline at end of file ...\ No newline at end of file
526 uploadFile,
527 getLevelList,
528 getLevelApplyInfo,
529 getStudentList, getApprovalRecord, submitVerity,
530 getCoachList,
531 updateLevelInfo, addLevelInfo,
532 chooseStudentsList, batchChoose, getVerityList,
533 getGroupHistoryByRelateId,
534 createMyMember, doVerity, mergeRecords,
535 groupAudit, groupMergeApi,
536 getDetailList, getPayList,
537 getFillAuditLog, commitGroupPay, getGroupFeeBill,
538 groupCommitPaymentVoucher, getFeeBillById,
539 personalCommit,
540 delPayment, editYear, addPersonPaymentGroup,
541 commitRenew, getVerityMergeList, doMergeFlows, getMergePaymentInfo
542 }
......
1 import request from './request.js'
2
3 /**
4 * 审批列表
5 * @returns {*}
6 */
7 export function getVerityList(params) {
8 return request({
9 url: '/exam/info/verityList',
10 method: 'get',
11 params: params
12 })
13 }
14
15 /**
16 * 审批
17 * @param {Object} data
18 */
19 export function doMergeFlows(data) {
20 return request({
21 url: `/exam/info/submit/mergeFlows`,
22 method: 'post',
23 params: data
24 })
25 }
26
27
28 /**
29 * 查询证书列表
30 * @param query
31 * @returns {*}
32 */
33 export function certsLList(query) {
34 return request({
35 url: '/exam/payment/certsList',
36 method: 'get',
37 params: query
38 })
39 }
40
41 /**
42 * 一键下发
43 * @param data
44 * @returns {*}
45 */
46 export function submitCert(data) {
47 return request({
48 url: `/exam/payment/submitCerts/nesting`,
49 method: 'put',
50 params: data
51 })
52 }
...@@ -39,6 +39,14 @@ const request = function(req) { ...@@ -39,6 +39,14 @@ const request = function(req) {
39 }) 39 })
40 return 40 return
41 } 41 }
42
43 if (req.method === 'GET') {
44 if (!req.params) {
45 req.params = {}
46 }
47 req.params.pageNum = req.params.pageNum || 1
48 req.params.pageSize = req.params.pageSize || 50
49 }
42 50
43 // if (req.method == 'POST' && !req.hideLoding) { 51 // if (req.method == 'POST' && !req.hideLoding) {
44 // uni.showLoading({ 52 // uni.showLoading({
...@@ -56,10 +64,10 @@ const request = function(req) { ...@@ -56,10 +64,10 @@ const request = function(req) {
56 switch (res.statusCode) { 64 switch (res.statusCode) {
57 case 200: 65 case 200:
58 const data = res.data || {} 66 const data = res.data || {}
59 if (data.code === 200||data.pageData?.code === 200) { 67 if (data.code === 200 || data.pageData?.code === 200) {
60 resolve(data) 68 resolve(data)
61 } else if (req.url.indexOf('getMemberCountInfo')>-1){ 69 } else if (req.url.indexOf('getMemberCountInfo') > -1) {
62 resolve(data) 70 resolve(data)
63 } else { 71 } else {
64 if (!excludeUrls.includes(req.url)) { 72 if (!excludeUrls.includes(req.url)) {
65 uni.showToast({ 73 uni.showToast({
......
1 export function szToHz(num) {
2 const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
3 return hzArr[parseInt(num)]
4 }
...@@ -188,13 +188,6 @@ ...@@ -188,13 +188,6 @@
188 } 188 }
189 189
190 }, { 190 }, {
191 "path": "pages/rank/skip/approval",
192 "style": {
193 "navigationBarTitleText": "越段考试审批",
194 "enablePullDownRefresh": false
195 }
196
197 }, {
198 "path": "pages/rank/apply", 191 "path": "pages/rank/apply",
199 "style": { 192 "style": {
200 "navigationBarTitleText": "段位考试申请", 193 "navigationBarTitleText": "段位考试申请",
...@@ -209,13 +202,6 @@ ...@@ -209,13 +202,6 @@
209 } 202 }
210 203
211 }, { 204 }, {
212 "path": "pages/rank/skip/applyDetail",
213 "style": {
214 "navigationBarTitleText": "越段考试详情",
215 "enablePullDownRefresh": false
216 }
217
218 }, {
219 "path": "pages/index/perfect", 205 "path": "pages/index/perfect",
220 "style": { 206 "style": {
221 "navigationBarTitleText": "注册引导", 207 "navigationBarTitleText": "注册引导",
...@@ -409,16 +395,9 @@ ...@@ -409,16 +395,9 @@
409 } 395 }
410 396
411 }, { 397 }, {
412 "path": "pages/rank/skip/scoreApproval", 398 "path": "pages/rank/cert",
413 "style": {
414 "navigationBarTitleText": "越段考试成绩审核",
415 "enablePullDownRefresh": false
416 }
417
418 }, {
419 "path": "pages/rank/skip/cert",
420 "style": { 399 "style": {
421 "navigationBarTitleText": "段证书发布", 400 "navigationBarTitleText": "段证书发布",
422 "enablePullDownRefresh": false 401 "enablePullDownRefresh": false
423 } 402 }
424 } 403 }
......
1 <template> 1 <template>
2 <view class="page"> 2 <view class="page">
3 <view class="bgbg"> 3 <view class="bgbg">
4 <view class="welcome">您好! 4 <view class="welcome">您好!
5 {{memberInfo.name}} 5 {{memberInfo.name}}
6 <br />欢迎使用中跆协会员管理系统 6 <br />欢迎使用中跆协会员管理系统
7 </view> 7 </view>
8 <view class="flexbox"> 8 <view class="flexbox">
9 <!-- userType 1:中跆协 2:省 3:市区 4:道馆--> 9 <!-- userType 1:中跆协 2:省 3:市区 4:道馆-->
10 <!-- 4 --> 10 <!-- 4 -->
11 <view v-if="userType=='4'" @click="goAddVip">添加会员</view> 11 <view v-if="userType=='4'" @click="goAddVip">添加会员</view>
12 <view v-if="userType=='4'" @click="goPath('/pages/personalVip/payment')">会员缴费</view> 12 <view v-if="userType=='4'" @click="goPath('/pages/personalVip/payment')">会员缴费</view>
13 <view v-if="userType=='2'" @click="goPath('/pages/personalVip/feeBill')">会员缴费单</view> 13 <view v-if="userType=='2'" @click="goPath('/pages/personalVip/feeBill')">会员缴费单</view>
14 <!-- 3 2 1--> 14 <!-- 3 2 1-->
15 <view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')">缴费审核</view> 15 <view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')">缴费审核</view>
16 16
17 <!-- 都有 --> 17 <!-- 都有 -->
18 <view @click="goPath('/pages/personalVip/list')">会员查询</view> 18 <view @click="goPath('/pages/personalVip/list')">会员查询</view>
19 </view> 19 </view>
20 20
21 </view> 21 </view>
22 <view class="girdBox"> 22 <view class="girdBox">
23 <view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')"> 23 <view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')">
24 <image /> 24 <image />
25 会员调动 25 会员调动
26 </view> 26 </view>
27 <view v-if="userType!='4'" @click="goPath('/pages/group/list')"> 27 <view v-if="userType!='4'" @click="goPath('/pages/group/list')">
28 <image />团体会员查询 28 <image />团体会员查询
29 </view> 29 </view>
30 <!--市区 省 中跆协 --> 30 <!--市区 省 中跆协 -->
31 <view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')"> 31 <view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')">
32 <image />团体会员审核 32 <image />团体会员审核
33 </view> 33 </view>
34 <view v-if="userType=='2'" @click="goPath('/pages/group/pay')"> 34 <view v-if="userType=='2'" @click="goPath('/pages/group/pay')">
35 <image />团体会员认证 35 <image />团体会员认证
36 </view> 36 </view>
37 37
38 <view v-if="userType=='2'" @click="goPath('/pages/group/feeBill')"> 38 <view v-if="userType=='2'" @click="goPath('/pages/group/feeBill')">
39 <image />团体会员缴费单 39 <image />团体会员缴费单
40 </view> 40 </view>
41 41
42 <view v-if="userType=='4'" @click="goPath('/pages/level/apply')"> 42 <view v-if="userType=='4'" @click="goPath('/pages/level/apply')">
43 <image />级位考试申请 43 <image />级位考试申请
44 </view> 44 </view>
45 <view v-if="userType!='4'" @click="goPath('/pages/level/approval')"> 45 <view v-if="userType!='4'" @click="goPath('/pages/level/approval')">
46 <image />级位考试审核 46 <image />级位考试审核
47 </view> 47 </view>
48 <view v-if="userType=='2'" @click="goPath('/pages/level/apply')"> 48 <view v-if="userType=='2'" @click="goPath('/pages/level/apply')">
49 <image />段位考试申请 49 <image />段位考试申请
50 </view> 50 </view>
51 51
52 52
53 </view> 53 </view>
54 <view v-if="userType=='1'" class="girdBox"> 54 <view v-if="userType=='1'" class="girdBox">
55 <view @click="goPath('/pages/rank/approval')"> 55 <view @click="goPath('/pages/rank/approval?type=2')">
56 <image />段位考试审核 56 <image />段位考试审核
57 </view> 57 </view>
58 <view @click="goPath('/pages/rank/scoreApproval')"> 58 <view @click="goPath('/pages/rank/scoreApproval?type=2')">
59 <image />考段成绩审核 59 <image />考段成绩审核
60 </view> 60 </view>
61 <view @click="goPath('/pages/rank/cert')"> 61 <view @click="goPath('/pages/rank/cert?type=2')">
62 <image />考段证书发布 62 <image />考段证书发布
63 </view> 63 </view>
64 <view @click="goPath('/pages/rank/skip/approval')"> 64 <view @click="goPath('/pages/rank/approval?type=3')">
65 <image />越段考试审核 65 <image />越段考试审核
66 </view> 66 </view>
67 <view @click="goPath('/pages/rank/skip/scoreApproval')"> 67 <view @click="goPath('/pages/rank/scoreApproval?type=3')">
68 <image />越段成绩审核 68 <image />越段成绩审核
69 </view> 69 </view>
70 <view @click="goPath('/pages/rank/skip/cert')"> 70 <view @click="goPath('/pages/rank/cert?type=3')">
71 <image />越段证书发布 71 <image />越段证书发布
72 </view> 72 </view>
73 </view> 73 </view>
74 <uni-section title="待办提醒" padding> 74 <uni-section title="待办提醒" padding>
75 <template v-slot:right> 75 <template v-slot:right>
76 <text @click="goMsgList" class="more">更多></text> 76 <text @click="goMsgList" class="more">更多></text>
77 </template> 77 </template>
78 <view class="msglist"> 78 <view class="msglist">
79 <view class="msgitem" v-for="n in messageList" @click="readMessage(n)"> 79 <view class="msgitem" v-for="n in messageList" :key="n.name" @click="readMessage(n)">
80 <text class="dot" :class="n.readFlag=='1'?'done':''"></text> 80 <text class="dot" :class="n.readFlag=='1'?'done':''"></text>
81 <view class="tt esp">{{n.name}}</view> 81 <view class="tt esp">{{n.name}}</view>
82 <view class="date">{{n.createTime}}</view> 82 <view class="date">{{n.createTime}}</view>
83 </view> 83 </view>
84 <view class="nodata" v-if="messageList.length==0"> 84 <view class="nodata" v-if="messageList.length==0">
85 <image mode="aspectFit" src="/static/nodata.png"></image> 85 <image mode="aspectFit" src="/static/nodata.png"></image>
86 <text>暂无数据</text> 86 <text>暂无数据</text>
87 </view> 87 </view>
88 </view> 88 </view>
89 </uni-section> 89 </uni-section>
90 </view> 90 </view>
91 </template> 91 </template>
92 92
93 <script setup> 93 <script setup>
94 import * as api from '@/common/api.js'; 94 import * as api from '@/common/api.js';
95 import * as loginServer from '@/common/login.js'; 95 import * as loginServer from '@/common/login.js';
96 import { 96 import {
97 onLoad, 97 onLoad,
98 onShow, 98 onShow,
99 onReady, 99 onReady,
100 onPullDownRefresh 100 onPullDownRefresh
101 } from '@dcloudio/uni-app'; 101 } from '@dcloudio/uni-app';
102 import { 102 import {
103 ref, 103 ref,
104 getCurrentInstance 104 getCurrentInstance
105 } from 'vue'; 105 } from 'vue';
106 106
107 107
108 const { 108 const {
109 proxy 109 proxy
110 } = getCurrentInstance() 110 } = getCurrentInstance()
111 const app = getApp(); 111 const app = getApp();
112 const userType = ref('1') 112 const userType = ref('1')
113 const memberInfo = ref({}) 113 const memberInfo = ref({})
114 114
115 let proId; 115 let proId;
116 const svId = ref(null); 116 const svId = ref(null);
117 117
118 const messageList = ref([]) 118 const messageList = ref([])
119 onShow(() => { 119 onShow(() => {
120 if (app.globalData.isLogin) { 120 if (app.globalData.isLogin) {
121 init() 121 init()
122 } else { 122 } else {
123 app.firstLoadCallback = () => { 123 app.firstLoadCallback = () => {
124 init() 124 init()
125 }; 125 };
126 } 126 }
127 }) 127 })
128 onLoad(option => { 128 onLoad(option => {
129 if (option.scene) { 129 if (option.scene) {
130 proId = decodeURIComponent(option.scene); 130 proId = decodeURIComponent(option.scene);
131 } else { 131 } else {
132 proId = option.proId; 132 proId = option.proId;
133 } 133 }
134 }); 134 });
135 135
136 function goPath(path) { 136 function goPath(path) {
137 uni.navigateTo({ 137 uni.navigateTo({
138 url: path 138 url: path
139 }); 139 });
140 } 140 }
141 141
142 function gologin() { 142 function gologin() {
143 let path = '/pages/index/login'; 143 let path = '/pages/index/login';
144 uni.navigateTo({ 144 uni.navigateTo({
145 url: path 145 url: path
146 }); 146 });
147 } 147 }
148 148
149 function goCenter() { 149 function goCenter() {
150 let path = '/pages/usercenter/usercenter'; 150 let path = '/pages/usercenter/usercenter';
151 uni.navigateTo({ 151 uni.navigateTo({
152 url: path 152 url: path
153 }); 153 });
154 154
155 } 155 }
156 156
157 function goAddVip() { 157 function goAddVip() {
158 let path = '/pages/personalVip/addVip'; 158 let path = '/pages/personalVip/addVip';
159 uni.navigateTo({ 159 uni.navigateTo({
160 url: path 160 url: path
161 }); 161 });
162 } 162 }
163 163
164 function goRenew() { 164 function goRenew() {
165 let path = '/pages/personalVip/renew'; 165 let path = '/pages/personalVip/renew';
166 uni.navigateTo({ 166 uni.navigateTo({
167 url: path 167 url: path
168 }); 168 });
169 } 169 }
170 170
171 function init() { 171 function init() {
172 uni.showLoading({ 172 uni.showLoading({
173 title: '加载中' 173 title: '加载中'
174 }); 174 });
175 loginServer.getMyOwnMemberInfo().then(res => { 175 loginServer.getMyOwnMemberInfo().then(res => {
176 userType.value = app.globalData.userType 176 userType.value = app.globalData.userType
177 memberInfo.value = app.globalData.memberInfo 177 memberInfo.value = app.globalData.memberInfo
178 console.log(userType.value, app.globalData.authenticationStatus) 178 console.log(userType.value, app.globalData.authenticationStatus)
179 if (userType.value != '1' && app.globalData.authenticationStatus != '2' && app.globalData 179 if (userType.value != '1' && app.globalData.authenticationStatus != '2' && app.globalData
180 .authenticationStatus != 180 .authenticationStatus !=
181 '4') { 181 '4') {
182 // 注册引导 182 // 注册引导
183 // uni.navigateTo({ 183 // uni.navigateTo({
184 // url: '/pages/index/perfect' 184 // url: '/pages/index/perfect'
185 // }); 185 // });
186 } else { 186 } else {
187 getMes() 187 getMes()
188 } 188 }
189 uni.hideLoading(); 189 uni.hideLoading();
190 }) 190 })
191 191
192 192
193 } 193 }
194 194
195 function getMes() { 195 function getMes() {
196 api.getMessage({ 196 api.getMessage({
197 pageNum: 1, 197 pageNum: 1,
198 pageSize: 10 198 pageSize: 10
199 }).then(res => { 199 }).then(res => {
200 if (res.rows && res.rows.length > 0) 200 if (res.rows && res.rows.length > 0)
201 for (var d of res.rows) { 201 for (var d of res.rows) {
202 switch (d.type) { 202 switch (d.type) {
203 case 30001: 203 case 30001:
204 d.name = '你有一条会员缴费等待审批,点击去处理!' 204 d.name = '你有一条会员缴费等待审批,点击去处理!'
205 d.path = '/pages/personalVip/audit' 205 d.path = '/pages/personalVip/audit'
206 break 206 break
207 case 30002: 207 case 30002:
208 d.name = '你有一条级位考试等待审批,点击去处理!' 208 d.name = '你有一条级位考试等待审批,点击去处理!'
209 d.path = '/pages/level/approval' 209 d.path = '/pages/level/approval'
210 break 210 break
211 case 30003: 211 case 30003:
212 d.name = '你有一条段位考试等待审批,点击去处理!' 212 d.name = '你有一条段位考试等待审批,点击去处理!'
213 d.path = '/pages/rank/approval' 213 d.path = '/pages/rank/approval'
214 break 214 break
215 case 30004: 215 case 30004:
216 d.name = '你有一条会员调动等待审批,点击去处理!' 216 d.name = '你有一条会员调动等待审批,点击去处理!'
217 d.path = '/pages/personalVip/mobillize' 217 d.path = '/pages/personalVip/mobillize'
218 break 218 break
219 case 30005: 219 case 30005:
220 d.name = '你有一条团体会员认证等待审批,点击去处理!' 220 d.name = '你有一条团体会员认证等待审批,点击去处理!'
221 d.path = '/pages/group/authentication' 221 d.path = '/pages/group/authentication'
222 break 222 break
223 case 30006: 223 case 30006:
224 d.name = '你有一条段位成绩等待审批,点击去处理!' 224 d.name = '你有一条段位成绩等待审批,点击去处理!'
225 d.path = '/pages/rank/scoreApproval' 225 d.path = '/pages/rank/scoreApproval'
226 break 226 break
227 case 40001: 227 case 40001:
228 d.name = '你有一条级位申请待提交,点击去处理!' 228 d.name = '你有一条级位申请待提交,点击去处理!'
229 d.path = `/pages/level/apply/modify?id=${d.eventId}` 229 d.path = `/pages/level/apply/modify?id=${d.eventId}`
230 break 230 break
231 case 40002: 231 case 40002:
232 d.name = '你有一条段位申请待提交,点击去处理!' 232 d.name = '你有一条段位申请待提交,点击去处理!'
233 d.path = `/pages/rank/apply/modify?id=${d.eventId}` 233 d.path = `/pages/rank/apply/modify?id=${d.eventId}`
234 break 234 break
235 case 40003: 235 case 40003:
236 d.name = '你有一条成绩维护的数据待提交,点击去处理!' 236 d.name = '你有一条成绩维护的数据待提交,点击去处理!'
237 d.path = `/pages/rank/score/modify?id=${d.eventId}` 237 d.path = `/pages/rank/score/modify?id=${d.eventId}`
238 break 238 break
239 case 50001: 239 case 50001:
240 d.name = '你有一条新的个人会员申请,点击去处理!' 240 d.name = '你有一条新的个人会员申请,点击去处理!'
241 d.path = '/pages/personalVip/approvalList' 241 d.path = '/pages/personalVip/approvalList'
242 break 242 break
243 } 243 }
244 } 244 }
245 messageList.value = res.rows 245 messageList.value = res.rows
246 }) 246 })
247 } 247 }
248 248
249 function readMessage(item) { 249 function readMessage(item) {
250 uni.navigateTo({ 250 uni.navigateTo({
251 url: item.path 251 url: item.path
252 }); 252 });
253 api.reader({ 253 api.reader({
254 id: item.id 254 id: item.id
255 }).then(res => { 255 }).then(res => {
256 item.readFlag = '1' 256 item.readFlag = '1'
257 }) 257 })
258 } 258 }
259 259
260 function goMsgList() { 260 function goMsgList() {
261 let path = '/pages/index/msgList'; 261 let path = '/pages/index/msgList';
262 uni.navigateTo({ 262 uni.navigateTo({
263 url: path 263 url: path
264 }); 264 });
265 } 265 }
266 266
267 function goItem(item) { 267 function goItem(item) {
268 if (item.path) { 268 if (item.path) {
269 let path = item.path 269 let path = item.path
270 // if (checkUserPhone(path)) { 270 // if (checkUserPhone(path)) {
271 uni.navigateTo({ 271 uni.navigateTo({
272 url: item.path 272 url: item.path
273 }); 273 });
274 // } 274 // }
275 } else { 275 } else {
276 uni.showToast({ 276 uni.showToast({
277 title: `暂未开放`, 277 title: `暂未开放`,
278 icon: 'none' 278 icon: 'none'
279 }); 279 });
280 } 280 }
281 281
282 } 282 }
283 </script> 283 </script>
284 <style scope lang="scss"> 284 <style scope lang="scss">
285 .welcome { 285 .welcome {
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="wBox"> 3 <view class="wBox">
4 <view class="tt">考级基本信息</view> 4 <view class="tt">考段基本信息</view>
5 <view class="ddd"> 5 <view class="ddd">
6 <text class="lab">考级名称:</text>{{ form.name }} 6 <text class="lab">考段名称:</text>{{ form.name }}
7 </view> 7 </view>
8 <view class="ddd"> 8 <view class="ddd">
9 <text class="lab">申请日期:</text>{{form.applyTime}} 9 <text class="lab">申请日期:</text>{{form.applyTime}}
10 </view> 10 </view>
11 <view class="ddd"> 11 <view class="ddd">
12 <text class="lab">申请单位:</text>{{ form.memberName }} 12 <text class="lab">申请单位:</text>{{ form.memberName }}
13 </view> 13 </view>
14 <view class="ddd"> 14 <view class="ddd">
15 <text class="lab">考官:</text>{{form.examinerNames?.split(',').join('/')}} 15 <text class="lab">考官:</text>{{form.examinerNames?.split(',').join('/')}}
16 </view> 16 </view>
17 <view class="ddd"> 17 <view class="ddd">
18 <text class="lab">考试开始时间:</text>{{form.startTime}} 18 <text class="lab">考试开始时间:</text>{{form.startTime}}
19 </view> 19 </view>
20 <view class="ddd"> 20 <view class="ddd">
21 <text class="lab">考试结束时间:</text>{{form.endTime}} 21 <text class="lab">考试结束时间:</text>{{form.endTime}}
22 </view> 22 </view>
23 <view class="ddd"> 23 <view class="ddd">
24 <text class="lab">考级地点:</text>{{form.address}} 24 <text class="lab">考段地点:</text>{{form.address}}
25 </view> 25 </view>
26 <view class="ddd" v-if="app.globalData.showPrice"> 26 <view class="ddd" v-if="app.globalData.showPrice">
27 <text class="lab">总金额:</text>{{(form.totalAmount*1).toFixed(2) }} 27 <text class="lab">总金额:</text>{{(form.totalAmount*1).toFixed(2) }}
28 </view> 28 </view>
29 </view> 29 </view>
30 <view class="wBox"> 30 <view class="wBox">
31 <view class="tt"> 31 <view class="tt">
32 考生信息 32 考生信息
33 </view> 33 </view>
34 <view class="vipData"> 34 <view class="vipData">
35 <view><text>{{ tablePersonInfo.total }}</text></view> 35 <view><text>{{ tablePersonInfo.total }}</text></view>
36 <view v-for="l in tablePersonInfo.levelArr" :key="l.level"> 36 <view v-for="l in tablePersonInfo.levelArr" :key="l.level">
37 {{ szToHz(l.level) }}级: <text>{{ l.num }} </text> 37 {{ szToHz(l.level) }}段: <text>{{ l.num }} </text>
38 </view> 38 </view>
39 </view> 39 </view>
40 <view class="userlist"> 40 <view class="userlist">
41 <view class="item" v-for="n in list" style="background-color: #fffafa;"> 41 <view class="item" v-for="n in list" :key="n.id" style="background-color: #fffafa;">
42 <view class="w100"> 42 <view class="w100">
43 <view class="name">{{n.realName}} <text>{{n.memName}}</text></view> 43 <view class="name">{{n.realName}} <text>{{n.memName}}</text></view>
44 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> --> 44 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
45 <view class="flexbox"> 45 <view class="flexbox">
46 <view> 46 <view>
47 原有级别 47 原有段位
48 <text v-if="n.levelOld">{{ szToHz(n.levelOld) }}</text> 48 <text v-if="n.levelOld">{{ szToHz(n.levelOld) }}段/品</text>
49 <text v-else>十级</text> 49 <text v-else>--</text>
50 </view> 50 </view>
51 <view> 51 <view>
52 考试级别 52 考试级别
53 <text> 53 <text v-if="n.levelNew">{{ szToHz(n.levelNew) }}段/品</text>
54 {{ szToHz(n.levelNew) }} 54 <text v-else>--</text>
55 </text> 55 </view>
56 </view> 56 <view v-if="app.globalData.showPrice">
57 <view v-if="app.globalData.showPrice"> 57 金额
58 金额 58 <text>
59 <text> 59 {{ (n.examFee * 1).toFixed(2) }}
60 {{ (n.examFee * 1).toFixed(2) }} 60 </text>
61 </text> 61 </view>
62 </view> 62 <view>
63 <view> 63 是否通过
64 是否通过 64 <text v-if="n.isPass=='1'" class="text-success">通过</text>
65 <text v-if="n.isPass=='1'" class="text-success">通过</text> 65 <text v-else class="text-danger">未通过</text>
66 <text v-else class="text-danger">未通过</text> 66 </view>
67 </view> 67 </view>
68 </view> 68 </view>
69 </view>
70 69
71 </view> 70 </view>
72 </view> 71 </view>
73 72
74 </view> 73 </view>
75 <view class="wBox"> 74 <view class="wBox">
76 <view class="tt"> 75 <view class="tt">
77 审核信息 76 审核信息
78 </view> 77 </view>
79 <view> 78 <view>
80 <view class="stepItem" v-for="(n,index) in recordList"> 79 <view class="stepItem" v-for="(n,index) in recordList" :key="index">
81 <view class="time">{{n.handleDate||'待审批'}}</view> 80 <view class="time">{{n.handleDate||'待审批'}}</view>
82 <view class="content"> 81 <view class="content">
83 <view class="status"> 82 <view class="status">
84 <text :class="{ 83 <text :class="{
85 'text-success':n.auditStatus=='1', 84 'text-success':n.auditStatus=='1',
86 'text-danger':n.auditStatus=='2', 85 'text-danger':n.auditStatus=='2',
87 'text-warning':n.auditStatus=='3' 86 'text-warning':n.auditStatus=='3'
88 }">{{ n.auditStatusStr }}</text> 87 }">{{ n.auditStatusStr }}</text>
89 </view> 88 </view>
90 <!-- <view class="name">{{index+1}}</view> --> 89 <!-- <view class="name">{{index+1}}</view> -->
91 <view class="deptName">{{n.deptName}}</view> 90 <view class="deptName">{{n.deptName}}</view>
92 <view v-if="n.auditStatus==2"> 91 <view v-if="n.auditStatus==2">
93 备注:{{n.reason||'/' }} 92 备注:{{n.reason||'' }}
94 </view> 93 </view>
95 </view> 94 </view>
96 </view> 95 </view>
97 </view> 96 </view>
98 </view> 97 </view>
99 98
100 </view> 99 </view>
101 </template> 100 </template>
102 101
103 <script setup> 102 <script setup>
104 import * as api from '@/common/api.js' 103 import * as api from '@/common/api.js'
105 import config from '@/config.js' 104 import config from '@/config.js'
106 import _ from 'lodash' 105 import _ from 'lodash'
107 import { 106 import {
108 onMounted, 107 onMounted,
109 ref 108 ref
110 } from 'vue' 109 } from 'vue'
111 import { 110 import {
112 onLoad, 111 onLoad,
113 onShow 112 onShow
114 } from '@dcloudio/uni-app' 113 } from '@dcloudio/uni-app'
115 const app = getApp(); 114 import {szToHz} from '@/common/utils.js'
116 const deptType = ref('') 115
117 const form = ref({})
118 const tablePersonInfo = ref({})
119 const recordList = ref([])
120 const list = ref([])
121 let examId = ''
122 onLoad((option) => {
123 examId = option.examId
124 })
125 onShow(() => {
126 if (app.globalData.isLogin) {
127 init()
128 } else {
129 app.firstLoadCallback = () => {
130 init()
131 };
132 }
133 })
134 116
135 function init() { 117 const app = getApp();
136 uni.showLoading({ 118 const deptType = ref('')
137 title: '加载中' 119 const form = ref({})
138 }) 120 const tablePersonInfo = ref({})
139 deptType.value = app.globalData.deptType 121 const recordList = ref([])
140 getForm() 122 const list = ref([])
141 getRecordList() 123 let examId = ''
142 getTablePersonInfo() 124 onLoad((option) => {
143 } 125 examId = option.examId
126 })
127 onShow(() => {
128 if (app.globalData.isLogin) {
129 init()
130 } else {
131 app.firstLoadCallback = () => {
132 init()
133 };
134 }
135 })
144 136
145 function getForm() { 137 function init() {
146 api.getLevelApplyInfo(examId).then(res => { 138 uni.showLoading({
147 uni.hideLoading() 139 title: '加载中'
148 form.value = res.data 140 })
149 }) 141 deptType.value = app.globalData.deptType
150 } 142 getForm()
143 getRecordList()
144 getTablePersonInfo()
145 }
151 146
152 function getRecordList() { 147 function getForm() {
153 api.getApprovalRecord(examId).then(res => { 148 api.getLevelApplyInfo(examId).then(res => {
154 recordList.value = res.data.levelSteps 149 uni.hideLoading()
155 }) 150 form.value = res.data
156 } 151 })
157 function getTablePersonInfo() { 152 }
158 api.getStudentList({ 153
159 examId: examId 154 function getRecordList() {
160 }).then(res=>{ 155 api.getApprovalRecord(examId).then(res => {
161 list.value = res.rows 156 recordList.value = res.data.levelSteps
157 })
158 }
159 function getTablePersonInfo() {
160 api.getStudentList({
161 examId: examId
162 }).then(res=>{
163 list.value = res.rows
162 164
163 const total = list.value.length 165 const total = list.value.length
164 const levelArr = [] 166 const levelArr = []
165 _.each(list.value, (d) => { 167 _.each(list.value, (d) => {
166 const temp = _.find(levelArr, (l) => { 168 const temp = _.find(levelArr, (l) => {
167 return l.level == d.levelNew 169 return l.level == d.levelNew
168 }) 170 })
169 if (temp) { 171 if (temp) {
170 temp.num++ 172 temp.num++
171 } else { 173 } else {
172 levelArr.push({ 174 levelArr.push({
173 level: d.levelNew, 175 level: d.levelNew,
174 num: 1 176 num: 1
175 }) 177 })
176 } 178 }
177 }) 179 })
178 180
179 tablePersonInfo.value = { 181 tablePersonInfo.value = {
180 total: total, 182 total: total,
181 levelArr: _.sortBy(levelArr, (l) => { 183 levelArr: _.sortBy(levelArr, (l) => {
182 return l.level 184 return l.level
183 }) 185 })
184 } 186 }
185 }) 187 })
186 } 188 }
187 function szToHz(num) { 189
188 const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
189 return hzArr[parseInt(num)]
190 }
191 </script> 190 </script>
192 191
193 <style scoped> 192 <style scoped>
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <!-- 段位考试审核 --> 3 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
4 <view class="appList"> 4 styleType="text" activeColor="#AD181F"></uni-segmented-control>
5 <view class="appItem" v-for="item in list"> 5
6 <view class="status" @click="goDetail(item)"> 6 <!-- 段位考试审核 -->
7 <text :class="{ 7 <view class="appList">
8 'text-primary':item.status=='1', 8 <view class="appItem" v-for="item in infoList" :key="item.recordId" >
9 'text-success':item.status=='2', 9 <view @click="goDetail(item)">
10 'text-danger':item.status=='3', 10 <view class="status" >
11 'text-warning':item.status=='4' 11 <text :class="{
12 }">{{ item.statusStr }}</text> 12 'text-primary':item.auditStatus=='0',
13 </view> 13 'text-success':item.auditStatus=='1',
14 'text-danger':item.auditStatus=='2',
15 'text-warning':item.auditStatus=='3'
16 }">{{ item.statusStr }}</text>
17 </view>
14 18
15 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 19 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
16 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 20 <view class="name mt0" >{{item.name}}</view>
17 <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>
18 <view class="flexbox" @click="goDetail(item)"> 22 <view class="flexbox" >
19 <view> 23 <view>
20 申请日期 24 申请日期
21 <view>{{item.applyTime.substring(0, 10)}}</view> 25 <view>{{item.applyTime.substring(0, 10)}}</view>
22 </view> 26 </view>
23 <view> 27 <view>
24 申请单位 28 申请单位
25 <view>{{item.memberName}}</view> 29 <view>{{item.memberName}}</view>
26 </view> 30 </view>
27 <view> 31 <view>
28 通过人数 32 通过人数
29 <view>{{item.pass}}</view> 33 <view>{{item.pass}}</view>
30 </view> 34 </view>
31 </view> 35 </view>
32 <view class="func" v-if="item.auditStatus=='0'"> 36 </view>
33 <button @click="audit(item,'2')">拒绝</button> 37 <view class="func" v-if="item.auditStatus=='0'">
34 <button @click="audit(item,'1')">同意</button> 38 <button @click="audit(item,'2')">拒绝</button>
35 </view> 39 <button @click="audit(item,'1')">同意</button>
36 </view> 40 </view>
37 </view> 41 </view>
38 42 </view>
39 43 <view class="nodata" v-if="infoList.length==0">
40 44 <image mode="aspectFit" src="/static/nodata.png"></image>
41 <view class="nodata" v-if="list.length==0"> 45 <text>暂无数据</text>
42 <image mode="aspectFit" src="/static/nodata.png"></image> 46 </view>
43 <text>暂无数据</text> 47 </view>
44 </view>
45 </view>
46 </template> 48 </template>
47 49
48 <script setup> 50 <script setup>
49 import * as api from '@/common/api.js' 51 import * as examApi from '@/common/api_exam.js'
50 import config from '@/config.js' 52 import _ from 'lodash'
51 import _ from 'lodash' 53 import { ref } from 'vue'
52 import { ref } from 'vue' 54 import { onLoad,onShow } from '@dcloudio/uni-app'
53 import { onLoad,onShow } from '@dcloudio/uni-app' 55
56 const app = getApp();
57 const queryParams = ref({
58 status: '0',
59 rankStatus:'0'
60 })
61 const current = ref()
62 const navs = ref(['审核中', '审核通过', '审核拒绝'])
63 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
64 const deptType = ref('')
65 const infoList = ref([])
66 const total = ref(0)
67
68 onLoad((options)=>{
69 queryParams.value.type=options.type
70 })
71
72 onShow(() => {
73 if (app.globalData.isLogin) {
74 init()
75 } else {
76 app.firstLoadCallback = () => {
77 init()
78 };
79 }
80 })
54 81
55 const app = getApp(); 82 function init(){
56 const queryParams = ref({ 83 uni.showLoading({
57 // type: '1', 84 title: '加载中'
58 // rankStatus: '0' 85 })
59 }) 86 deptType.value = app.globalData.deptType
60 const list = ref([]) 87 getList()
61 const deptType = ref('') 88 }
62 onShow(() => { 89
63 if (app.globalData.isLogin) { 90 function onClickItem(e) {
64 init() 91 uni.showLoading({
65 } else { 92 title: '加载中'
93 })
94 queryParams.value.status = e.currentIndex
95 getList()
96 }
97
98 function getList() {
99 examApi.getVerityList(queryParams.value).then(res => {
100 uni.hideLoading()
101 const list = []
102 _.each(res.rows, r => {
103 const item = JSON.parse(r.content)
104 item.recordId = r.recordId
105 item.auditStatus = r.auditStatus
106 item.submitStatus = r.submitStatus
107 item.distributeTime = r.distributeTime
108 item.statusStr = statusArr[r.auditStatus]
109 item.sourceData = r
110 item.scoreStatus = r.scoreStatus
111 item.status = r.status
112 item.isView = r.isView
113 item.payStatus = r.payStatus
114 item.rankStatus = r.rankStatus
115 item.processCentBar = r.processCentBar
116 list.push(item)
117 })
66 118
67 app.firstLoadCallback = () => { 119 infoList.value = list
68 init() 120 total.value = res.total
69 }; 121 })
70 } 122 }
71 }) 123
72 function init(){ 124 function audit(item, flag) {
73 uni.showLoading({ 125 console.log(item.sourceData)
74 title: '加载中' 126 var obj = {
75 }) 127 flag: flag,
76 deptType.value = app.globalData.deptType 128 reason: null,
77 getList() 129 id: item.recordId
78 } 130 }
79 function getList() {
80 // api.getLevelList(queryParams.value).then(res => {
81 // uni.hideLoading()
82 // list.value = res.rows
83 // })
84 }
85 function audit(item, flag) {
86 console.log(item.sourceData)
87 var obj = {
88 flag: flag,
89 reason: null,
90 body: [JSON.stringify(item.sourceData)]
91 }
92 131
93 if (flag == '2') { 132 if (flag == '2') {
94 // 拒绝 133 // 拒绝
95 // 弹出框填写理由 134 // 弹出框填写理由
96 uni.showModal({ 135 uni.showModal({
97 title: '请输入拒绝理由', 136 title: '请输入拒绝理由',
98 editable: true, 137 editable: true,
99 success: function(res) { 138 success: function(res) {
100 if (res.confirm) { 139 if (res.confirm) {
101 if (!res.content) { 140 if (!res.content) {
102 uni.showToast({ 141 uni.showToast({
103 title: '请输入拒绝理由', 142 title: '请输入拒绝理由',
104 icon: 'none' 143 icon: 'none'
105 }) 144 })
106 } else { 145 } else {
107 obj.reason = res.content 146 obj.reason = res.content
108 doApproval(obj) 147 doApproval(obj)
109 } 148 }
110 } 149 }
111 } 150 }
112 }) 151 })
113 } else if (flag == '1') { 152 } else if (flag == '1') {
114 // 二次确认 153 // 二次确认
115 uni.showModal({ 154 uni.showModal({
116 title: '提示', 155 title: '提示',
117 content: `确定审批通过吗`, 156 content: `确定审批通过吗`,
118 success: function(res) { 157 success: function(res) {
119 if (res.confirm) { 158 if (res.confirm) {
120 doApproval(obj) 159 doApproval(obj)
121 } 160 }
122 } 161 }
123 }) 162 })
124 } 163 }
125 } 164 }
126 165
127 function doApproval(obj) { 166 function doApproval(obj) {
128 console.log(obj) 167 examApi.doMergeFlows(obj).then((res) => {
129 api.doVerity(obj).then((res) => { 168 uni.showToast({
130 uni.showToast({ 169 title: '操作成功',
131 title: '操作成功', 170 icon: 'none'
132 icon: 'none' 171 })
133 }) 172 getList()
134 getList() 173 })
135 }) 174 }
136 } 175
176 function goDetail(item) {
177 let path = `/pages/rank/applyDetail?examId=${item.examId}`
178 uni.navigateTo({
179 url: path
180 });
181 }
182
137 </script> 183 </script>
138 184
139 <style lang="scss" scoped> 185 <style lang="scss" scoped>
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="appList"> 3 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
4 <view class="appItem" v-for="item in infoList"> 4 styleType="text" activeColor="#AD181F"></uni-segmented-control>
5 <view class="status" @click="goDetail(item)"> 5
6 <text :class="{ 6 <view class="appList">
7 'text-primary':item.auditStatus=='0', 7 <view class="appItem" v-for="item in infoList" :key="item.payId" >
8 'text-success':item.auditStatus=='1', 8 <view @click="goDetail(item)">
9 'text-danger':item.auditStatus=='2', 9 <view class="status" >
10 'text-warning':item.auditStatus=='3' 10 <text :class="{
11 }">{{ item.statusStr }}</text> 11 'text-primary':item.certStatus=='0',
12 </view> 12 'text-warning':item.certStatus=='1',
13 13 'text-success':item.certStatus=='2',
14 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 14 }">{{ item.certStatusStr }}</text>
15 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 15 </view>
16 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
17 <view class="flexbox" @click="goDetail(item)">
18 <view>
19 申请日期
20 <view>{{item.applyTime.substring(0, 10)}}</view>
21 </view>
22 <view>
23 申请单位
24 <view>{{item.memberName}}</view>
25 </view>
26 <view>
27 通过人数
28 <view>{{item.pass}}</view>
29 </view>
30 </view>
31 <view class="func">
32 <button @click="send()">一键生成</button>
33 </view>
34 </view>
35 </view>
36 16
37 <view class="nodata" v-if="infoList.length==0"> 17 <view class="date">结算编号:{{item.payCode}}</view>
38 <image mode="aspectFit" src="/static/nodata.png"></image> 18 <view class="name mt0" >{{item.name}}</view>
39 <text>暂无数据</text> 19 <view class="pp esp">考试时间:{{item.startTime?.substring(0,16)}}{{item.endTime?.substring(0,16)}}</view>
40 </view> 20 <view class="flexbox" >
41 </view> 21 <view>
22 申请日期
23 <view>{{item.applyTime?.substring(0, 10)}}</view>
24 </view>
25 <view>
26 申请单位
27 <view>{{item.memberName}}</view>
28 </view>
29 <view>
30 已发证书
31 <view>{{item.hasCerts}}</view>
32 </view>
33 <view>
34 待发证书
35 <view>{{item.noCerts}}</view>
36 </view>
37 </view>
38 </view>
39 <view class="func">
40 <button @click="send(item)">一键生成</button>
41 </view>
42 </view>
43 </view>
44 <view class="nodata" v-if="infoList.length==0">
45 <image mode="aspectFit" src="/static/nodata.png"></image>
46 <text>暂无数据</text>
47 </view>
48 </view>
42 </template> 49 </template>
43 50
44 <script setup> 51 <script setup>
45 import * as api from '@/common/api.js' 52 import * as examApi from '@/common/api_exam.js'
46 import config from '@/config.js' 53 import _ from 'lodash'
47 import _ from 'lodash' 54 import { ref } from 'vue'
48 import { 55 import { onLoad,onShow } from '@dcloudio/uni-app'
49 onMounted, 56
50 ref 57 const app = getApp();
51 } from 'vue' 58 const queryParams = ref({})
52 import { 59 const current = ref()
53 onLoad, 60 const navs = ref(['未发放', '部分发放', '已发放'])
54 onShow 61 const deptType = ref('')
55 } from '@dcloudio/uni-app' 62 const infoList = ref([])
56 const app = getApp(); 63 const total = ref(0)
57 const queryParams = ref({ 64
58 // pageNum: 1, 65 onLoad((options)=>{
59 // pageSize: 10 66 queryParams.value.type=options.type
60 status: '0', 67 })
61 type: '1' 68
62 }) 69 onShow(() => {
63 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] 70 if (app.globalData.isLogin) {
64 const current = ref() 71 init()
65 const infoList = ref([]) 72 } else {
66 const total = ref(0) 73 app.firstLoadCallback = () => {
67 const deptType = ref('') 74 init()
68 const userType = ref('') 75 };
69 onLoad((option) => { 76 }
70 77 })
71 }) 78
72 onShow(() => { 79 function init(){
73 if (app.globalData.isLogin) { 80 uni.showLoading({
74 init() 81 title: '加载中'
75 } else { 82 })
76 83 deptType.value = app.globalData.deptType
77 app.firstLoadCallback = () => { 84 getList()
78 init() 85 }
79 }; 86
80 } 87 function onClickItem(e) {
81 }) 88 uni.showLoading({
82 89 title: '加载中'
83 function init() { 90 })
84 uni.showLoading({ 91 queryParams.value.certStatus = e.currentIndex
85 title: '加载中' 92 getList()
86 }) 93 }
87 deptType.value = app.globalData.deptType 94
88 userType.value = app.globalData.userType 95 function getList() {
89 getList() 96 examApi.certsLList(queryParams.value).then(res => {
90 } 97 uni.hideLoading()
91 98 infoList.value = res.rows
92 99 total.value = res.total
93 function getList() { 100 })
94 api.getVerityList(queryParams.value).then(res => { 101 }
95 uni.hideLoading() 102
96 infoList.value = res.rows 103 function send(item) {
97 }) 104 uni.showModal({
98 } 105 title: '提示',
99 function goDetail(item) { 106 content: `确定一键下发 ${item.name} 的证书?`,
100 if(item.status!='0'){ 107 success: function(res) {
101 let path = `/pages/level/applyDetail?examId=${item.examId}` 108 if (res.confirm) {
102 uni.navigateTo({ 109 examApi.submitCert([{
103 url: path 110 id: item.payId
104 }); 111 }]).then(()=>{
105 } else { 112 uni.showToast({
106 return 113 title: '操作成功',
107 } 114 icon: 'none'
108 } 115 })
109 function send(){ 116 getList()
110 117 })
111 } 118 }
112 </script> 119 }
120 })
121 }
122
123 function goDetail(item) {
124 let path = `/pages/rank/applyDetail?examId=${item.examId}`
125 uni.navigateTo({
126 url: path
127 });
128 }
129
130 </script>
113 131
132 <style lang="scss" scoped>
114 133
115 <style scoped lang="scss">
116 .mt0 {
117 margin-top: 0 !important;
118 }
119
120 .appList .appItem .name {
121 width: 80%;
122 word-break: break-all;
123 }
124
125 </style> 134 </style>
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <!-- 段位考试审核 --> 3 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
4 <view class="appList"> 4 styleType="text" activeColor="#AD181F"></uni-segmented-control>
5 <view class="appItem" v-for="item in list"> 5
6 <view class="status" @click="goDetail(item)"> 6 <!-- 段位考试审核 -->
7 <text :class="{ 7 <view class="appList">
8 'text-primary':item.status=='1', 8 <view class="appItem" v-for="item in infoList" :key="item.recordId" >
9 'text-success':item.status=='2', 9 <view @click="goDetail(item)">
10 'text-danger':item.status=='3', 10 <view class="status" >
11 'text-warning':item.status=='4' 11 <text :class="{
12 }">{{ item.statusStr }}</text> 12 'text-primary':item.auditStatus=='0',
13 </view> 13 'text-success':item.auditStatus=='1',
14 'text-danger':item.auditStatus=='2',
15 'text-warning':item.auditStatus=='3'
16 }">{{ item.statusStr }}</text>
17 </view>
14 18
15 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 19 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
16 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 20 <view class="name mt0" >{{item.name}}</view>
17 <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>
18 <view class="flexbox" @click="goDetail(item)"> 22 <view class="flexbox" >
19 <view> 23 <view>
20 申请日期 24 申请日期
21 <view>{{item.applyTime.substring(0, 10)}}</view> 25 <view>{{item.applyTime.substring(0, 10)}}</view>
22 </view> 26 </view>
23 <view> 27 <view>
24 申请单位 28 申请单位
25 <view>{{item.memberName}}</view> 29 <view>{{item.memberName}}</view>
26 </view> 30 </view>
27 <view> 31 <view>
28 通过人数 32 通过人数
29 <view>{{item.pass}}</view> 33 <view>{{item.pass}}</view>
30 </view> 34 </view>
31 </view> 35 </view>
32 <view class="func" v-if="item.auditStatus=='0'"> 36 </view>
33 <button @click="audit(item,'2')">拒绝</button> 37 <view class="func" v-if="item.auditStatus=='0'">
34 <button @click="audit(item,'1')">同意</button> 38 <button @click="audit(item,'2')">拒绝</button>
35 </view> 39 <button @click="audit(item,'1')">同意</button>
36 </view> 40 </view>
37 </view> 41 </view>
38 42 </view>
39 43 <view class="nodata" v-if="infoList.length==0">
40 44 <image mode="aspectFit" src="/static/nodata.png"></image>
41 <view class="nodata" v-if="list.length==0"> 45 <text>暂无数据</text>
42 <image mode="aspectFit" src="/static/nodata.png"></image> 46 </view>
43 <text>暂无数据</text> 47 </view>
44 </view>
45 </view>
46 </template> 48 </template>
47 49
48 <script setup> 50 <script setup>
49 import * as api from '@/common/api.js' 51 import * as examApi from '@/common/api_exam.js'
50 import config from '@/config.js' 52 import _ from 'lodash'
51 import _ from 'lodash' 53 import { ref } from 'vue'
52 import { ref } from 'vue' 54 import { onLoad,onShow } from '@dcloudio/uni-app'
53 import { onLoad,onShow } from '@dcloudio/uni-app' 55
56 const app = getApp();
57 const queryParams = ref({
58 status: '0',
59 rankStatus:'1'
60 })
61 const current = ref()
62 const navs = ref(['审核中', '审核通过', '审核拒绝'])
63 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
64 const deptType = ref('')
65 const infoList = ref([])
66 const total = ref(0)
67
68 onLoad((options)=>{
69 queryParams.value.type=options.type
70 })
71
72 onShow(() => {
73 if (app.globalData.isLogin) {
74 init()
75 } else {
76 app.firstLoadCallback = () => {
77 init()
78 };
79 }
80 })
54 81
55 const app = getApp(); 82 function init(){
56 const queryParams = ref({ 83 uni.showLoading({
57 // type: '1', 84 title: '加载中'
58 // rankStatus: '0' 85 })
59 }) 86 deptType.value = app.globalData.deptType
60 const list = ref([]) 87 getList()
61 const deptType = ref('') 88 }
62 onShow(() => { 89
63 if (app.globalData.isLogin) { 90 function onClickItem(e) {
64 init() 91 uni.showLoading({
65 } else { 92 title: '加载中'
93 })
94 queryParams.value.status = e.currentIndex
95 getList()
96 }
97
98 function getList() {
99 examApi.getVerityList(queryParams.value).then(res => {
100 uni.hideLoading()
101 const list = []
102 _.each(res.rows, r => {
103 const item = JSON.parse(r.content)
104 item.recordId = r.recordId
105 item.auditStatus = r.auditStatus
106 item.submitStatus = r.submitStatus
107 item.distributeTime = r.distributeTime
108 item.statusStr = statusArr[r.auditStatus]
109 item.sourceData = r
110 item.scoreStatus = r.scoreStatus
111 item.status = r.status
112 item.isView = r.isView
113 item.payStatus = r.payStatus
114 item.rankStatus = r.rankStatus
115 item.processCentBar = r.processCentBar
116 list.push(item)
117 })
66 118
67 app.firstLoadCallback = () => { 119 infoList.value = list
68 init() 120 total.value = res.total
69 }; 121 })
70 } 122 }
71 }) 123
72 function init(){ 124 function audit(item, flag) {
73 uni.showLoading({ 125 console.log(item.sourceData)
74 title: '加载中' 126 var obj = {
75 }) 127 flag: flag,
76 deptType.value = app.globalData.deptType 128 reason: null,
77 getList() 129 id: item.recordId
78 } 130 }
79 function getList() {
80 // api.getLevelList(queryParams.value).then(res => {
81 // uni.hideLoading()
82 // list.value = res.rows
83 // })
84 }
85 function audit(item, flag) {
86 console.log(item.sourceData)
87 var obj = {
88 flag: flag,
89 reason: null,
90 body: [JSON.stringify(item.sourceData)]
91 }
92 131
93 if (flag == '2') { 132 if (flag == '2') {
94 // 拒绝 133 // 拒绝
95 // 弹出框填写理由 134 // 弹出框填写理由
96 uni.showModal({ 135 uni.showModal({
97 title: '请输入拒绝理由', 136 title: '请输入拒绝理由',
98 editable: true, 137 editable: true,
99 success: function(res) { 138 success: function(res) {
100 if (res.confirm) { 139 if (res.confirm) {
101 if (!res.content) { 140 if (!res.content) {
102 uni.showToast({ 141 uni.showToast({
103 title: '请输入拒绝理由', 142 title: '请输入拒绝理由',
104 icon: 'none' 143 icon: 'none'
105 }) 144 })
106 } else { 145 } else {
107 obj.reason = res.content 146 obj.reason = res.content
108 doApproval(obj) 147 doApproval(obj)
109 } 148 }
110 } 149 }
111 } 150 }
112 }) 151 })
113 } else if (flag == '1') { 152 } else if (flag == '1') {
114 // 二次确认 153 // 二次确认
115 uni.showModal({ 154 uni.showModal({
116 title: '提示', 155 title: '提示',
117 content: `确定审批通过吗`, 156 content: `确定审批通过吗`,
118 success: function(res) { 157 success: function(res) {
119 if (res.confirm) { 158 if (res.confirm) {
120 doApproval(obj) 159 doApproval(obj)
121 } 160 }
122 } 161 }
123 }) 162 })
124 } 163 }
125 } 164 }
126 165
127 function doApproval(obj) { 166 function doApproval(obj) {
128 console.log(obj) 167 examApi.doMergeFlows(obj).then((res) => {
129 api.doVerity(obj).then((res) => { 168 uni.showToast({
130 uni.showToast({ 169 title: '操作成功',
131 title: '操作成功', 170 icon: 'none'
132 icon: 'none' 171 })
133 }) 172 getList()
134 getList() 173 })
135 }) 174 }
136 } 175
176 function goDetail(item) {
177 let path = `/pages/rank/applyDetail?examId=${item.examId}`
178 uni.navigateTo({
179 url: path
180 });
181 }
182
137 </script> 183 </script>
138 184
139 <style lang="scss" scoped> 185 <style lang="scss" scoped>
......
1 <template>
2 <view>
3 <view class="wBox">
4 <view class="tt">考级基本信息</view>
5 <view class="ddd">
6 <text class="lab">考级名称:</text>{{ form.name }}
7 </view>
8 <view class="ddd">
9 <text class="lab">申请日期:</text>{{form.applyTime}}
10 </view>
11 <view class="ddd">
12 <text class="lab">申请单位:</text>{{ form.memberName }}
13 </view>
14 <view class="ddd">
15 <text class="lab">考官:</text>{{form.examinerNames?.split(',').join('/')}}
16 </view>
17 <view class="ddd">
18 <text class="lab">考试开始时间:</text>{{form.startTime}}
19 </view>
20 <view class="ddd">
21 <text class="lab">考试结束时间:</text>{{form.endTime}}
22 </view>
23 <view class="ddd">
24 <text class="lab">考级地点:</text>{{form.address}}
25 </view>
26 <view class="ddd" v-if="app.globalData.showPrice">
27 <text class="lab">总金额:</text>{{(form.totalAmount*1).toFixed(2) }}
28 </view>
29 </view>
30 <view class="wBox">
31 <view class="tt">
32 考生信息
33 </view>
34 <view class="vipData">
35 <view><text>{{ tablePersonInfo.total }}</text></view>
36 <view v-for="l in tablePersonInfo.levelArr" :key="l.level">
37 {{ szToHz(l.level) }}级: <text>{{ l.num }} </text>
38 </view>
39 </view>
40 <view class="userlist">
41 <view class="item" v-for="n in list" style="background-color: #fffafa;">
42 <view class="w100">
43 <view class="name">{{n.realName}} <text>{{n.memName}}</text></view>
44 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
45 <view class="flexbox">
46 <view>
47 原有级别
48 <text v-if="n.levelOld">{{ szToHz(n.levelOld) }}</text>
49 <text v-else>十级</text>
50 </view>
51 <view>
52 考试级别
53 <text>
54 {{ szToHz(n.levelNew) }}
55 </text>
56 </view>
57 <view v-if="app.globalData.showPrice">
58 金额
59 <text>
60 {{ (n.examFee * 1).toFixed(2) }}
61 </text>
62 </view>
63 <view>
64 是否通过
65 <text v-if="n.isPass=='1'" class="text-success">通过</text>
66 <text v-else class="text-danger">未通过</text>
67 </view>
68 </view>
69 </view>
70
71 </view>
72 </view>
73
74 </view>
75 <view class="wBox">
76 <view class="tt">
77 审核信息
78 </view>
79 <view>
80 <view class="stepItem" v-for="(n,index) in recordList">
81 <view class="time">{{n.handleDate||'待审批'}}</view>
82 <view class="content">
83 <view class="status">
84 <text :class="{
85 'text-success':n.auditStatus=='1',
86 'text-danger':n.auditStatus=='2',
87 'text-warning':n.auditStatus=='3'
88 }">{{ n.auditStatusStr }}</text>
89 </view>
90 <!-- <view class="name">{{index+1}}</view> -->
91 <view class="deptName">{{n.deptName}}</view>
92 <view v-if="n.auditStatus==2">
93 备注:{{n.reason||'/' }}
94 </view>
95 </view>
96 </view>
97 </view>
98 </view>
99
100 </view>
101 </template>
102
103 <script setup>
104 import * as api from '@/common/api.js'
105 import config from '@/config.js'
106 import _ from 'lodash'
107 import {
108 onMounted,
109 ref
110 } from 'vue'
111 import {
112 onLoad,
113 onShow
114 } from '@dcloudio/uni-app'
115 const app = getApp();
116 const deptType = ref('')
117 const form = ref({})
118 const tablePersonInfo = ref({})
119 const recordList = ref([])
120 const list = ref([])
121 let examId = ''
122 onLoad((option) => {
123 examId = option.examId
124 })
125 onShow(() => {
126 if (app.globalData.isLogin) {
127 init()
128 } else {
129 app.firstLoadCallback = () => {
130 init()
131 };
132 }
133 })
134
135 function init() {
136 uni.showLoading({
137 title: '加载中'
138 })
139 deptType.value = app.globalData.deptType
140 getForm()
141 getRecordList()
142 getTablePersonInfo()
143 }
144
145 function getForm() {
146 api.getLevelApplyInfo(examId).then(res => {
147 uni.hideLoading()
148 form.value = res.data
149 })
150 }
151
152 function getRecordList() {
153 api.getApprovalRecord(examId).then(res => {
154 recordList.value = res.data.levelSteps
155 })
156 }
157 function getTablePersonInfo() {
158 api.getStudentList({
159 examId: examId
160 }).then(res=>{
161 list.value = res.rows
162
163 const total = list.value.length
164 const levelArr = []
165 _.each(list.value, (d) => {
166 const temp = _.find(levelArr, (l) => {
167 return l.level == d.levelNew
168 })
169 if (temp) {
170 temp.num++
171 } else {
172 levelArr.push({
173 level: d.levelNew,
174 num: 1
175 })
176 }
177 })
178
179 tablePersonInfo.value = {
180 total: total,
181 levelArr: _.sortBy(levelArr, (l) => {
182 return l.level
183 })
184 }
185 })
186 }
187 function szToHz(num) {
188 const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
189 return hzArr[parseInt(num)]
190 }
191 </script>
192
193 <style scoped>
194 .wBox {
195 width: 700rpx;
196 padding: 30rpx;
197 margin: 20rpx auto;
198 background: #FFFFFF;
199 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
200 border-radius: 15rpx;
201
202 .tt {
203 color: #0A1629;margin: 0 0 30rpx;
204 font-size: 30rpx;
205 }
206
207 .ddd{font-size: 28rpx;color: #333;
208 .lab{color: #999;display: inline-block;text-align: justify;}
209 }
210 }
211
212 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <!-- 段位考试审核 -->
4 <view class="appList">
5 <view class="appItem" v-for="item in list">
6 <view class="status" @click="goDetail(item)">
7 <text :class="{
8 'text-primary':item.status=='1',
9 'text-success':item.status=='2',
10 'text-danger':item.status=='3',
11 'text-warning':item.status=='4'
12 }">{{ item.statusStr }}</text>
13 </view>
14
15 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
16 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
17 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
18 <view class="flexbox" @click="goDetail(item)">
19 <view>
20 申请日期
21 <view>{{item.applyTime.substring(0, 10)}}</view>
22 </view>
23 <view>
24 申请单位
25 <view>{{item.memberName}}</view>
26 </view>
27 <view>
28 通过人数
29 <view>{{item.pass}}</view>
30 </view>
31 </view>
32 <view class="func" v-if="item.auditStatus=='0'">
33 <button @click="audit(item,'2')">拒绝</button>
34 <button @click="audit(item,'1')">同意</button>
35 </view>
36 </view>
37 </view>
38
39
40
41 <view class="nodata" v-if="list.length==0">
42 <image mode="aspectFit" src="/static/nodata.png"></image>
43 <text>暂无数据</text>
44 </view>
45 </view>
46 </template>
47
48 <script setup>
49 import * as api from '@/common/api.js'
50 import config from '@/config.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 // type: '1',
58 // rankStatus: '0'
59 })
60 const list = ref([])
61 const deptType = ref('')
62 onShow(() => {
63 if (app.globalData.isLogin) {
64 init()
65 } else {
66
67 app.firstLoadCallback = () => {
68 init()
69 };
70 }
71 })
72 function init(){
73 uni.showLoading({
74 title: '加载中'
75 })
76 deptType.value = app.globalData.deptType
77 getList()
78 }
79 function getList() {
80 // api.getLevelList(queryParams.value).then(res => {
81 // uni.hideLoading()
82 // list.value = res.rows
83 // })
84 }
85 function audit(item, flag) {
86 console.log(item.sourceData)
87 var obj = {
88 flag: flag,
89 reason: null,
90 body: [JSON.stringify(item.sourceData)]
91 }
92
93 if (flag == '2') {
94 // 拒绝
95 // 弹出框填写理由
96 uni.showModal({
97 title: '请输入拒绝理由',
98 editable: true,
99 success: function(res) {
100 if (res.confirm) {
101 if (!res.content) {
102 uni.showToast({
103 title: '请输入拒绝理由',
104 icon: 'none'
105 })
106 } else {
107 obj.reason = res.content
108 doApproval(obj)
109 }
110 }
111 }
112 })
113 } else if (flag == '1') {
114 // 二次确认
115 uni.showModal({
116 title: '提示',
117 content: `确定审批通过吗`,
118 success: function(res) {
119 if (res.confirm) {
120 doApproval(obj)
121 }
122 }
123 })
124 }
125 }
126
127 function doApproval(obj) {
128 console.log(obj)
129 api.doVerity(obj).then((res) => {
130 uni.showToast({
131 title: '操作成功',
132 icon: 'none'
133 })
134 getList()
135 })
136 }
137 </script>
138
139 <style lang="scss" scoped>
140
141 </style>
1 <template>
2 <view>
3 <view class="appList">
4 <view class="appItem" v-for="item in infoList">
5 <view class="status" @click="goDetail(item)">
6 <text :class="{
7 'text-primary':item.auditStatus=='0',
8 'text-success':item.auditStatus=='1',
9 'text-danger':item.auditStatus=='2',
10 'text-warning':item.auditStatus=='3'
11 }">{{ item.statusStr }}</text>
12 </view>
13
14 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
15 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
16 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
17 <view class="flexbox" @click="goDetail(item)">
18 <view>
19 申请日期
20 <view>{{item.applyTime.substring(0, 10)}}</view>
21 </view>
22 <view>
23 申请单位
24 <view>{{item.memberName}}</view>
25 </view>
26 <view>
27 通过人数
28 <view>{{item.pass}}</view>
29 </view>
30 </view>
31 <view class="func">
32 <button @click="send()">一键生成</button>
33 </view>
34 </view>
35 </view>
36
37 <view class="nodata" v-if="infoList.length==0">
38 <image mode="aspectFit" src="/static/nodata.png"></image>
39 <text>暂无数据</text>
40 </view>
41 </view>
42 </template>
43
44 <script setup>
45 import * as api from '@/common/api.js'
46 import config from '@/config.js'
47 import _ from 'lodash'
48 import {
49 onMounted,
50 ref
51 } from 'vue'
52 import {
53 onLoad,
54 onShow
55 } from '@dcloudio/uni-app'
56 const app = getApp();
57 const queryParams = ref({
58 // pageNum: 1,
59 // pageSize: 10
60 status: '0',
61 type: '1'
62 })
63 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
64 const current = ref()
65 const infoList = ref([])
66 const total = ref(0)
67 const deptType = ref('')
68 const userType = ref('')
69 onLoad((option) => {
70
71 })
72 onShow(() => {
73 if (app.globalData.isLogin) {
74 init()
75 } else {
76
77 app.firstLoadCallback = () => {
78 init()
79 };
80 }
81 })
82
83 function init() {
84 uni.showLoading({
85 title: '加载中'
86 })
87 deptType.value = app.globalData.deptType
88 userType.value = app.globalData.userType
89 getList()
90 }
91
92
93 function getList() {
94 api.getVerityList(queryParams.value).then(res => {
95 uni.hideLoading()
96 infoList.value = res.rows
97 })
98 }
99 function goDetail(item) {
100 if(item.status!='0'){
101 let path = `/pages/level/applyDetail?examId=${item.examId}`
102 uni.navigateTo({
103 url: path
104 });
105 } else {
106 return
107 }
108 }
109 function send(){
110
111 }
112 </script>
113
114
115 <style scoped lang="scss">
116 .mt0 {
117 margin-top: 0 !important;
118 }
119
120 .appList .appItem .name {
121 width: 80%;
122 word-break: break-all;
123 }
124
125 </style>
1 <template>
2 <view>
3 <!-- 段位考试审核 -->
4 <view class="appList">
5 <view class="appItem" v-for="item in list">
6 <view class="status" @click="goDetail(item)">
7 <text :class="{
8 'text-primary':item.status=='1',
9 'text-success':item.status=='2',
10 'text-danger':item.status=='3',
11 'text-warning':item.status=='4'
12 }">{{ item.statusStr }}</text>
13 </view>
14
15 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
16 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
17 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
18 <view class="flexbox" @click="goDetail(item)">
19 <view>
20 申请日期
21 <view>{{item.applyTime.substring(0, 10)}}</view>
22 </view>
23 <view>
24 申请单位
25 <view>{{item.memberName}}</view>
26 </view>
27 <view>
28 通过人数
29 <view>{{item.pass}}</view>
30 </view>
31 </view>
32 <view class="func" v-if="item.auditStatus=='0'">
33 <button @click="audit(item,'2')">拒绝</button>
34 <button @click="audit(item,'1')">同意</button>
35 </view>
36 </view>
37 </view>
38
39
40
41 <view class="nodata" v-if="list.length==0">
42 <image mode="aspectFit" src="/static/nodata.png"></image>
43 <text>暂无数据</text>
44 </view>
45 </view>
46 </template>
47
48 <script setup>
49 import * as api from '@/common/api.js'
50 import config from '@/config.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 // type: '1',
58 // rankStatus: '0'
59 })
60 const list = ref([])
61 const deptType = ref('')
62 onShow(() => {
63 if (app.globalData.isLogin) {
64 init()
65 } else {
66
67 app.firstLoadCallback = () => {
68 init()
69 };
70 }
71 })
72 function init(){
73 uni.showLoading({
74 title: '加载中'
75 })
76 deptType.value = app.globalData.deptType
77 getList()
78 }
79 function getList() {
80 // api.getLevelList(queryParams.value).then(res => {
81 // uni.hideLoading()
82 // list.value = res.rows
83 // })
84 }
85 function audit(item, flag) {
86 console.log(item.sourceData)
87 var obj = {
88 flag: flag,
89 reason: null,
90 body: [JSON.stringify(item.sourceData)]
91 }
92
93 if (flag == '2') {
94 // 拒绝
95 // 弹出框填写理由
96 uni.showModal({
97 title: '请输入拒绝理由',
98 editable: true,
99 success: function(res) {
100 if (res.confirm) {
101 if (!res.content) {
102 uni.showToast({
103 title: '请输入拒绝理由',
104 icon: 'none'
105 })
106 } else {
107 obj.reason = res.content
108 doApproval(obj)
109 }
110 }
111 }
112 })
113 } else if (flag == '1') {
114 // 二次确认
115 uni.showModal({
116 title: '提示',
117 content: `确定审批通过吗`,
118 success: function(res) {
119 if (res.confirm) {
120 doApproval(obj)
121 }
122 }
123 })
124 }
125 }
126
127 function doApproval(obj) {
128 console.log(obj)
129 api.doVerity(obj).then((res) => {
130 uni.showToast({
131 title: '操作成功',
132 icon: 'none'
133 })
134 getList()
135 })
136 }
137 </script>
138
139 <style lang="scss" scoped>
140
141 </style>
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!