no message
Showing
17 changed files
with
1137 additions
and
244 deletions
| ... | @@ -321,6 +321,56 @@ function addLevelInfo(data) { | ... | @@ -321,6 +321,56 @@ function addLevelInfo(data) { |
| 321 | params: data | 321 | params: data |
| 322 | }) | 322 | }) |
| 323 | } | 323 | } |
| 324 | function chooseStudentsList(query) { | ||
| 325 | return request({ | ||
| 326 | url: '/person/info/chooseStudentsList', | ||
| 327 | method: 'get', | ||
| 328 | params: query | ||
| 329 | }) | ||
| 330 | } | ||
| 331 | function batchChoose(data) { | ||
| 332 | return request({ | ||
| 333 | url: '/exam/person/batch/choose', | ||
| 334 | method: 'post', | ||
| 335 | params: data | ||
| 336 | }) | ||
| 337 | } | ||
| 338 | function editLevel(data) { | ||
| 339 | return request({ | ||
| 340 | url: '/exam/person/editLevel', | ||
| 341 | method: 'put', | ||
| 342 | params: data | ||
| 343 | }) | ||
| 344 | } | ||
| 345 | function getVerityList(params) { | ||
| 346 | return request({ | ||
| 347 | url: '/exam/info/verityList', | ||
| 348 | method: 'get', | ||
| 349 | params: params | ||
| 350 | }) | ||
| 351 | } | ||
| 352 | function getGroupHistoryByRelateId(id) { | ||
| 353 | return request({ | ||
| 354 | url: `/member/certified/getHistoryByRelateId/${id}`, | ||
| 355 | method: 'get' | ||
| 356 | }) | ||
| 357 | } | ||
| 358 | // 创建自己的团队 | ||
| 359 | function createMyMember(data) { | ||
| 360 | return request({ | ||
| 361 | url: '/member/info/createMyMember', | ||
| 362 | method: 'post', | ||
| 363 | params:data | ||
| 364 | }) | ||
| 365 | } | ||
| 366 | function doVerity(data) { | ||
| 367 | return request({ | ||
| 368 | url: `/exam/info/verity`, | ||
| 369 | method: 'put', | ||
| 370 | params: data | ||
| 371 | }) | ||
| 372 | } | ||
| 373 | |||
| 324 | 374 | ||
| 325 | export { | 375 | export { |
| 326 | getMessage, | 376 | getMessage, |
| ... | @@ -357,5 +407,8 @@ export { | ... | @@ -357,5 +407,8 @@ export { |
| 357 | getLevelApplyInfo, | 407 | getLevelApplyInfo, |
| 358 | getStudentList,getApprovalRecord,submitVerity, | 408 | getStudentList,getApprovalRecord,submitVerity, |
| 359 | getCoachList, | 409 | getCoachList, |
| 360 | updateLevelInfo,addLevelInfo | 410 | updateLevelInfo,addLevelInfo, |
| 411 | chooseStudentsList,batchChoose,getVerityList, | ||
| 412 | getGroupHistoryByRelateId, | ||
| 413 | createMyMember,doVerity | ||
| 361 | } | 414 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -5,6 +5,7 @@ page { | ... | @@ -5,6 +5,7 @@ page { |
| 5 | } | 5 | } |
| 6 | .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;} | 6 | .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;} |
| 7 | .flexbox{display: flex;} | 7 | .flexbox{display: flex;} |
| 8 | .mt30{margin-top: 30rpx;} | ||
| 8 | .mt40{margin-top: 40rpx;} | 9 | .mt40{margin-top: 40rpx;} |
| 9 | .mt50{margin-top: 50rpx;} | 10 | .mt50{margin-top: 50rpx;} |
| 10 | .align-forms-item-placeHolder{color: #999;line-height: 2.6;} | 11 | .align-forms-item-placeHolder{color: #999;line-height: 2.6;} |
| ... | @@ -55,7 +56,11 @@ font-size: 24rpx;} | ... | @@ -55,7 +56,11 @@ font-size: 24rpx;} |
| 55 | } | 56 | } |
| 56 | .btn-red-kx{background-color: #fff; | 57 | .btn-red-kx{background-color: #fff; |
| 57 | border: 1px solid #AD181F; | 58 | border: 1px solid #AD181F; |
| 58 | color: #AD181F;} | 59 | color: #AD181F; |
| 60 | } | ||
| 61 | .btn-red-kx.mini{font-size: 30rpx; line-height: 2; | ||
| 62 | border-radius: 30px;} | ||
| 63 | |||
| 59 | /* 底部固定按钮 */ | 64 | /* 底部固定按钮 */ |
| 60 | .fixedBottom {background: #fff;height: 150rpx; | 65 | .fixedBottom {background: #fff;height: 150rpx; |
| 61 | box-shadow: 0px -2rpx 10rpx 0px #e8e8e8; padding: 30rpx 0 0; | 66 | box-shadow: 0px -2rpx 10rpx 0px #e8e8e8; padding: 30rpx 0 0; |
| ... | @@ -325,3 +330,24 @@ color: #7D8592;} | ... | @@ -325,3 +330,24 @@ color: #7D8592;} |
| 325 | display: block; | 330 | display: block; |
| 326 | font-size: 14px; | 331 | font-size: 14px; |
| 327 | } | 332 | } |
| 333 | .bgbg{padding:0 0 60rpx; | ||
| 334 | color: #fff; | ||
| 335 | background: #C40F18; | ||
| 336 | } | ||
| 337 | .girdBox{display: flex;flex-wrap: wrap;padding: 0 0 40rpx; | ||
| 338 | background: #FFFFFF;position: relative;top: -30rpx; | ||
| 339 | border-radius: 20rpx 20rpx 0rpx 0rpx; | ||
| 340 | view{width: 25%;text-align: center; | ||
| 341 | font-size: 24rpx; | ||
| 342 | color: #434343; | ||
| 343 | image{width: 20vw;height: 20vw;display: block;margin: auto;} | ||
| 344 | } | ||
| 345 | } | ||
| 346 | |||
| 347 | |||
| 348 | |||
| 349 | |||
| 350 | |||
| 351 | |||
| 352 | |||
| 353 | ... | ... |
| ... | @@ -3,7 +3,7 @@ | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | // staging | 5 | // staging |
| 6 | const baseUrl_api = "http://192.168.1.96:8787"; | 6 | const baseUrl_api = "http://192.168.1.97:8787"; |
| 7 | const fileUrl_api = "http://192.168.1.11:8787"; | 7 | const fileUrl_api = "http://192.168.1.11:8787"; |
| 8 | 8 | ||
| 9 | export default { | 9 | export default { | ... | ... |
| ... | @@ -288,7 +288,7 @@ | ... | @@ -288,7 +288,7 @@ |
| 288 | 288 | ||
| 289 | } | 289 | } |
| 290 | ,{ | 290 | ,{ |
| 291 | "path" : "pages/group/applyList", | 291 | "path" : "pages/group/apply/applyList", |
| 292 | "style" : | 292 | "style" : |
| 293 | { | 293 | { |
| 294 | "navigationBarTitleText": "团体会员审核", | 294 | "navigationBarTitleText": "团体会员审核", |
| ... | @@ -341,6 +341,24 @@ | ... | @@ -341,6 +341,24 @@ |
| 341 | } | 341 | } |
| 342 | 342 | ||
| 343 | } | 343 | } |
| 344 | ,{ | ||
| 345 | "path" : "pages/group/apply/applyDetail", | ||
| 346 | "style" : | ||
| 347 | { | ||
| 348 | "navigationBarTitleText": "团体会员审核详情", | ||
| 349 | "enablePullDownRefresh": false | ||
| 350 | } | ||
| 351 | |||
| 352 | } | ||
| 353 | ,{ | ||
| 354 | "path" : "pages/group/apply/record", | ||
| 355 | "style" : | ||
| 356 | { | ||
| 357 | "navigationBarTitleText": "审核记录", | ||
| 358 | "enablePullDownRefresh": false | ||
| 359 | } | ||
| 360 | |||
| 361 | } | ||
| 344 | ], | 362 | ], |
| 345 | "globalStyle": { | 363 | "globalStyle": { |
| 346 | "navigationStyle": "custom", | 364 | "navigationStyle": "custom", | ... | ... |
pages/group/apply/applyDetail.vue
0 → 100644
| 1 | <template> | ||
| 2 | <view class="hasfixedbottom"> | ||
| 3 | <view class="wBox"> | ||
| 4 | <view class="tt">{{form.name}}</view> | ||
| 5 | |||
| 6 | <!-- 成员 --> | ||
| 7 | <view class="userlist"> | ||
| 8 | <view class="item" v-for="n in list"> | ||
| 9 | <view class="photobox"> | ||
| 10 | <view class="colorful">{{n.perName?.slice(0,1)}}</view> | ||
| 11 | </view> | ||
| 12 | <view> | ||
| 13 | <view class="name">{{n.perName}}</view> | ||
| 14 | <view class="date">申请调入一级协会 {{n.sourceShenDeptName||'--'}}</view> | ||
| 15 | <view class="date">申请调入单位 {{n.targetDeptName||'--'}}</view> | ||
| 16 | </view> | ||
| 17 | </view> | ||
| 18 | </view> | ||
| 19 | |||
| 20 | </view> | ||
| 21 | |||
| 22 | <view class="h3-padding">审核流程</view> | ||
| 23 | <view class="wBox"> | ||
| 24 | <view class="stepItem" v-for="(n,index) in auditLog"> | ||
| 25 | <view class="time">{{n.auditTime||'待审批'}}</view> | ||
| 26 | <view class="content"> | ||
| 27 | <view class="status"> | ||
| 28 | <text v-if="n.auditResult==1" class="text-success">审核通过</text> | ||
| 29 | <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text> | ||
| 30 | <text v-if="n.auditResult==0" class="text-primary"> 审核中</text> | ||
| 31 | </view> | ||
| 32 | <!-- <view class="name">第 {{index+1}} 步</view> --> | ||
| 33 | <view class="deptName">{{n.auditDeptName}}</view> | ||
| 34 | <view v-if="n.auditResult==2"> | ||
| 35 | 备注:{{n.auditMsg||'/' }} | ||
| 36 | </view> | ||
| 37 | </view> | ||
| 38 | </view> | ||
| 39 | </view> | ||
| 40 | |||
| 41 | <view class="fixedBottom" v-if="(deptType == 1)&&form.ztxRes == 0"> | ||
| 42 | <button class="btn-red-kx" @click="audit(form.id,'2')">拒绝</button> | ||
| 43 | <button class="btn-red" @click="audit(form.id,'1')">同意</button> | ||
| 44 | </view> | ||
| 45 | |||
| 46 | <view class="fixedBottom" v-if="(deptType == 2 || deptType == 3)&&form.shenRes == 0"> | ||
| 47 | <button class="btn-red-kx" @click="audit(form.id,'2')">拒绝</button> | ||
| 48 | <button class="btn-red" @click="audit(form.id,'1')">同意</button> | ||
| 49 | </view> | ||
| 50 | |||
| 51 | </view> | ||
| 52 | </template> | ||
| 53 | |||
| 54 | <script setup> | ||
| 55 | import * as api from '@/common/api.js' | ||
| 56 | import config from '@/config.js' | ||
| 57 | import { | ||
| 58 | onMounted, | ||
| 59 | ref | ||
| 60 | } from 'vue' | ||
| 61 | import { | ||
| 62 | onLoad | ||
| 63 | } from '@dcloudio/uni-app' | ||
| 64 | const app = getApp(); | ||
| 65 | const queryParams = ref({}) | ||
| 66 | |||
| 67 | const form = ref({}) | ||
| 68 | const list = ref([]) | ||
| 69 | const auditLog = ref([]) | ||
| 70 | const feelList = ref([]) | ||
| 71 | const total = ref(0) | ||
| 72 | const totalYear = ref(0) | ||
| 73 | const deptType = ref() | ||
| 74 | let rangeId = '' | ||
| 75 | onLoad((option) => { | ||
| 76 | rangeId = option.rangeId | ||
| 77 | if ('auditLog' in option) { | ||
| 78 | auditLog.value = JSON.parse(decodeURIComponent(option.auditLog)) | ||
| 79 | } | ||
| 80 | if ('form' in option) { | ||
| 81 | form.value = JSON.parse(decodeURIComponent(option.form)) | ||
| 82 | } | ||
| 83 | console.log(form.value) | ||
| 84 | if (app.globalData.isLogin) { | ||
| 85 | init() | ||
| 86 | } else { | ||
| 87 | |||
| 88 | app.firstLoadCallback = () => { | ||
| 89 | init() | ||
| 90 | }; | ||
| 91 | } | ||
| 92 | |||
| 93 | }) | ||
| 94 | |||
| 95 | function init() { | ||
| 96 | deptType.value = app.globalData.deptType | ||
| 97 | getForm() | ||
| 98 | } | ||
| 99 | |||
| 100 | function getForm() { | ||
| 101 | uni.showLoading({ | ||
| 102 | title: '加载中' | ||
| 103 | }) | ||
| 104 | api.getTransferList({ | ||
| 105 | rangeId: rangeId | ||
| 106 | }).then(res => { | ||
| 107 | uni.hideLoading() | ||
| 108 | list.value = res.rows | ||
| 109 | }) | ||
| 110 | } | ||
| 111 | |||
| 112 | function audit(rangeId, flag) { | ||
| 113 | if (flag == '2') { | ||
| 114 | // 拒绝 | ||
| 115 | // 弹出框填写理由 | ||
| 116 | uni.showModal({ | ||
| 117 | title: '请输入拒绝理由', | ||
| 118 | editable: true, | ||
| 119 | success: function(res) { | ||
| 120 | if (res.confirm) { | ||
| 121 | if (!res.content) { | ||
| 122 | uni.showToast({ | ||
| 123 | title: '请输入拒绝理由', | ||
| 124 | icon: 'none' | ||
| 125 | }) | ||
| 126 | } else { | ||
| 127 | doApproval(rangeId, flag, res.content) | ||
| 128 | } | ||
| 129 | } | ||
| 130 | } | ||
| 131 | }) | ||
| 132 | } else if (flag == '1') { | ||
| 133 | // 二次确认 | ||
| 134 | uni.showModal({ | ||
| 135 | title: '提示', | ||
| 136 | content: `确定审批通过吗`, | ||
| 137 | success: function(res) { | ||
| 138 | if (res.confirm) { | ||
| 139 | doApproval(rangeId, flag) | ||
| 140 | } | ||
| 141 | } | ||
| 142 | }) | ||
| 143 | } | ||
| 144 | } | ||
| 145 | |||
| 146 | function doApproval(rangeId, flag, reason) { | ||
| 147 | var obj = { | ||
| 148 | flag: flag, | ||
| 149 | reason: reason || '', | ||
| 150 | rangeIds: rangeIds | ||
| 151 | } | ||
| 152 | console.log(obj) | ||
| 153 | api.mobilizeAudit(obj).then((res) => { | ||
| 154 | uni.showToast({ | ||
| 155 | title: '操作成功', | ||
| 156 | icon: 'none' | ||
| 157 | }) | ||
| 158 | uni.navigateBack() | ||
| 159 | }) | ||
| 160 | } | ||
| 161 | </script> | ||
| 162 | |||
| 163 | <style scoped lang="scss"> | ||
| 164 | .wBox { | ||
| 165 | width: 700rpx; | ||
| 166 | padding: 30rpx; | ||
| 167 | margin: 20rpx auto 0; | ||
| 168 | background: #FFFFFF; | ||
| 169 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | ||
| 170 | border-radius: 15rpx; | ||
| 171 | |||
| 172 | .tt { | ||
| 173 | color: #0A1629; | ||
| 174 | font-size: 30rpx; | ||
| 175 | } | ||
| 176 | } | ||
| 177 | |||
| 178 | .userlist { | ||
| 179 | .item { | ||
| 180 | border-bottom: 1px dashed #e5e5e5; | ||
| 181 | position: relative; | ||
| 182 | |||
| 183 | .date { | ||
| 184 | margin-top: 10rpx; | ||
| 185 | } | ||
| 186 | |||
| 187 | .name { | ||
| 188 | text { | ||
| 189 | margin-left: 1em; | ||
| 190 | color: #4C5359; | ||
| 191 | font-size: 26rpx; | ||
| 192 | } | ||
| 193 | } | ||
| 194 | |||
| 195 | .nian { | ||
| 196 | position: absolute; | ||
| 197 | right: 0; | ||
| 198 | font-size: 30rpx; | ||
| 199 | color: #AD181F; | ||
| 200 | } | ||
| 201 | } | ||
| 202 | } | ||
| 203 | |||
| 204 | .info { | ||
| 205 | display: flex; | ||
| 206 | margin: 30rpx 0 20rpx; | ||
| 207 | font-size: 28rpx; | ||
| 208 | |||
| 209 | view { | ||
| 210 | color: #7D8592; | ||
| 211 | margin-right: 20rpx; | ||
| 212 | } | ||
| 213 | } | ||
| 214 | |||
| 215 | .fixedBottom { | ||
| 216 | justify-content: center; | ||
| 217 | |||
| 218 | button { | ||
| 219 | margin: 0 20rpx; | ||
| 220 | width: 286rpx; | ||
| 221 | } | ||
| 222 | |||
| 223 | .btn-red { | ||
| 224 | width: 286rpx; | ||
| 225 | } | ||
| 226 | } | ||
| 227 | </style> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -19,15 +19,19 @@ | ... | @@ -19,15 +19,19 @@ |
| 19 | 缴费单位 | 19 | 缴费单位 |
| 20 | <view>{{ item.content.memberName }}</view> | 20 | <view>{{ item.content.memberName }}</view> |
| 21 | </view> | 21 | </view> |
| 22 | <view> | 22 | <view v-if="userType = '3'"> |
| 23 | 会员合计 | 23 | 所属省份 |
| 24 | <view>{{item.content.allCount}}</view> | 24 | <view>{{item.content.province}}</view> |
| 25 | </view> | 25 | </view> |
| 26 | <view> | 26 | <view> |
| 27 | 新会员合计 | 27 | 年限 |
| 28 | <view>{{item.content.renewYear}}</view> | 28 | <view>{{item.content.renewYear}}</view> |
| 29 | </view> | 29 | </view> |
| 30 | <view> | 30 | <view v-if="deptType == 1"> |
| 31 | 团体会员/新会员 | ||
| 32 | <view>{{item.content.allCount}}/{{item.content.newCount}}</view> | ||
| 33 | </view> | ||
| 34 | <view v-if="deptType == 1"> | ||
| 31 | 费用合计 | 35 | 费用合计 |
| 32 | <view> {{ (item?.content?.allFee*1).toFixed(2) }}</view> | 36 | <view> {{ (item?.content?.allFee*1).toFixed(2) }}</view> |
| 33 | </view> | 37 | </view> |
| ... | @@ -72,6 +76,7 @@ | ... | @@ -72,6 +76,7 @@ |
| 72 | const list = ref([]) | 76 | const list = ref([]) |
| 73 | const total = ref(0) | 77 | const total = ref(0) |
| 74 | const deptType = ref('') | 78 | const deptType = ref('') |
| 79 | const userType = ref('') | ||
| 75 | onLoad(() => { | 80 | onLoad(() => { |
| 76 | if (app.globalData.isLogin) { | 81 | if (app.globalData.isLogin) { |
| 77 | init() | 82 | init() |
| ... | @@ -85,6 +90,7 @@ | ... | @@ -85,6 +90,7 @@ |
| 85 | 90 | ||
| 86 | function init() { | 91 | function init() { |
| 87 | deptType.value = app.globalData.deptType | 92 | deptType.value = app.globalData.deptType |
| 93 | userType.value = app.globalData.userType | ||
| 88 | getList() | 94 | getList() |
| 89 | } | 95 | } |
| 90 | 96 | ||
| ... | @@ -172,10 +178,21 @@ | ... | @@ -172,10 +178,21 @@ |
| 172 | const auditLog = encodeURIComponent(JSON.stringify(item.auditLog)) | 178 | const auditLog = encodeURIComponent(JSON.stringify(item.auditLog)) |
| 173 | const form = encodeURIComponent(JSON.stringify(item)) | 179 | const form = encodeURIComponent(JSON.stringify(item)) |
| 174 | 180 | ||
| 175 | let path = `/pages/personalVip/mobilizeDetail?rangeId=${item.id}&auditLog=${auditLog}&form=${form}` | 181 | if(userType.value=='1'){ |
| 182 | // 查看 | ||
| 183 | let path = `/pages/group/apply/applyDetail?rangeId=${item.id}&auditLog=${auditLog}&form=${form}` | ||
| 176 | uni.navigateTo({ | 184 | uni.navigateTo({ |
| 177 | url: path | 185 | url: path |
| 178 | }); | 186 | }); |
| 187 | } else if(userType.value=='3'){ | ||
| 188 | // 审核记录 | ||
| 189 | let path = `/pages/group/apply/record?certId=${item.content.certId}` | ||
| 190 | uni.navigateTo({ | ||
| 191 | url: path | ||
| 192 | }); | ||
| 193 | } | ||
| 194 | |||
| 195 | |||
| 179 | } | 196 | } |
| 180 | </script> | 197 | </script> |
| 181 | 198 | ... | ... |
pages/group/apply/record.vue
0 → 100644
| 1 | <template> | ||
| 2 | <view class="hasfixedbottom"> | ||
| 3 | <view class="h3-padding">审核记录</view> | ||
| 4 | <view class="wBox"> | ||
| 5 | <view class="stepItem" v-for="(n,index) in list"> | ||
| 6 | <view class="time">{{n.handleDate||'待审批'}}</view> | ||
| 7 | <view class="content"> | ||
| 8 | <view class="status"> | ||
| 9 | <text v-if="n.auditStatus==0" class="text-primary">审核中</text> | ||
| 10 | <text v-if="n.auditStatus==1" class="text-success">审核通过</text> | ||
| 11 | <text v-if="n.auditStatus==2" class="text-danger">审核拒绝</text> | ||
| 12 | <text v-if="n.auditStatus==3" class="text-warning">已撤回</text> | ||
| 13 | <text v-if="n.auditStatus==100" class="text-primary">审核中</text> | ||
| 14 | </view> | ||
| 15 | <!-- <view class="name">第 {{index+1}} 步</view> --> | ||
| 16 | <view class="deptName">{{n.handlerDeptName}}</view> | ||
| 17 | <view v-if="n.reason"> | ||
| 18 | 备注:{{n.reason}} | ||
| 19 | </view> | ||
| 20 | </view> | ||
| 21 | </view> | ||
| 22 | </view> | ||
| 23 | |||
| 24 | |||
| 25 | </view> | ||
| 26 | </template> | ||
| 27 | |||
| 28 | <script setup> | ||
| 29 | import * as api from '@/common/api.js' | ||
| 30 | import config from '@/config.js' | ||
| 31 | import { | ||
| 32 | onMounted, | ||
| 33 | ref | ||
| 34 | } from 'vue' | ||
| 35 | import { | ||
| 36 | onLoad | ||
| 37 | } from '@dcloudio/uni-app' | ||
| 38 | const app = getApp(); | ||
| 39 | const list = ref([]) | ||
| 40 | const total = ref(0) | ||
| 41 | const deptType = ref() | ||
| 42 | let certId = '' | ||
| 43 | onLoad((option) => { | ||
| 44 | certId = option.certId | ||
| 45 | if (app.globalData.isLogin) { | ||
| 46 | init() | ||
| 47 | } else { | ||
| 48 | |||
| 49 | app.firstLoadCallback = () => { | ||
| 50 | init() | ||
| 51 | }; | ||
| 52 | } | ||
| 53 | |||
| 54 | }) | ||
| 55 | |||
| 56 | function init() { | ||
| 57 | deptType.value = app.globalData.deptType | ||
| 58 | getList() | ||
| 59 | } | ||
| 60 | |||
| 61 | function getList() { | ||
| 62 | uni.showLoading({ | ||
| 63 | title: '加载中' | ||
| 64 | }) | ||
| 65 | api.getGroupHistoryByRelateId(certId).then(res => { | ||
| 66 | uni.hideLoading() | ||
| 67 | list.value = res.data | ||
| 68 | }) | ||
| 69 | } | ||
| 70 | </script> | ||
| 71 | |||
| 72 | <style scoped lang="scss"> | ||
| 73 | .wBox { | ||
| 74 | width: 700rpx; | ||
| 75 | padding: 30rpx; | ||
| 76 | margin: 20rpx auto 0; | ||
| 77 | background: #FFFFFF; | ||
| 78 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | ||
| 79 | border-radius: 15rpx; | ||
| 80 | |||
| 81 | .tt { | ||
| 82 | color: #0A1629; | ||
| 83 | font-size: 30rpx; | ||
| 84 | } | ||
| 85 | } | ||
| 86 | |||
| 87 | .userlist { | ||
| 88 | .item { | ||
| 89 | border-bottom: 1px dashed #e5e5e5; | ||
| 90 | position: relative; | ||
| 91 | |||
| 92 | .date { | ||
| 93 | margin-top: 10rpx; | ||
| 94 | } | ||
| 95 | |||
| 96 | .name { | ||
| 97 | text { | ||
| 98 | margin-left: 1em; | ||
| 99 | color: #4C5359; | ||
| 100 | font-size: 26rpx; | ||
| 101 | } | ||
| 102 | } | ||
| 103 | |||
| 104 | .nian { | ||
| 105 | position: absolute; | ||
| 106 | right: 0; | ||
| 107 | font-size: 30rpx; | ||
| 108 | color: #AD181F; | ||
| 109 | } | ||
| 110 | } | ||
| 111 | } | ||
| 112 | |||
| 113 | .info { | ||
| 114 | display: flex; | ||
| 115 | margin: 30rpx 0 20rpx; | ||
| 116 | font-size: 28rpx; | ||
| 117 | |||
| 118 | view { | ||
| 119 | color: #7D8592; | ||
| 120 | margin-right: 20rpx; | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | .fixedBottom { | ||
| 125 | justify-content: center; | ||
| 126 | |||
| 127 | button { | ||
| 128 | margin: 0 20rpx; | ||
| 129 | width: 286rpx; | ||
| 130 | } | ||
| 131 | |||
| 132 | .btn-red { | ||
| 133 | width: 286rpx; | ||
| 134 | } | ||
| 135 | } | ||
| 136 | </style> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | <template> | 1 | <template> |
| 2 | <view class="page"> | 2 | <view class="page"> |
| 3 | <view> | 3 | <view class="bgbg"> |
| 4 | <view class="welcome">您好!<br />欢迎使用中跆协会员管理系统</view> | 4 | <view class="welcome">您好! |
| 5 | <!-- {{memberInfo.name}} --> | ||
| 6 | <br />欢迎使用中跆协会员管理系统</view> | ||
| 5 | <view class="flexbox"> | 7 | <view class="flexbox"> |
| 6 | <!-- userType 1:中跆协 2:省 3:市区 4:道馆--> | 8 | <!-- userType 1:中跆协 2:省 3:市区 4:道馆--> |
| 7 | <!-- 4 --> | 9 | <!-- 4 --> |
| ... | @@ -16,16 +18,27 @@ | ... | @@ -16,16 +18,27 @@ |
| 16 | </view> | 18 | </view> |
| 17 | 19 | ||
| 18 | </view> | 20 | </view> |
| 19 | <view> | 21 | <view class="girdBox"> |
| 20 | <view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')"> | 22 | <view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')"> |
| 23 | <image /> | ||
| 21 | 会员调动 | 24 | 会员调动 |
| 22 | </view> | 25 | </view> |
| 23 | <view v-if="userType!='4'" @click="goPath('/pages/group/list')">团体会员查询</view> | 26 | <view v-if="userType!='4'" @click="goPath('/pages/group/list')"> |
| 24 | <view v-if="userType!='4'" @click="goPath('/pages/group/applyList')">团体会员审核</view> | 27 | <image />团体会员查询 |
| 25 | <view v-if="userType=='2'" @click="goPath('/pages/group/pay')">团体会员认证</view> | 28 | </view> |
| 29 | <view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')"> | ||
| 30 | <image />团体会员审核 | ||
| 31 | </view> | ||
| 32 | <view v-if="userType=='2'" @click="goPath('/pages/group/pay')"> | ||
| 33 | <image />团体会员认证 | ||
| 34 | </view> | ||
| 26 | 35 | ||
| 27 | <view v-if="userType=='4'" @click="goPath('/pages/level/apply')">级位考试申请</view> | 36 | <view v-if="userType=='4'" @click="goPath('/pages/level/apply')"> |
| 28 | <view v-if="userType!='4'" @click="goPath('/pages/level/approval')">级位考试审核</view> | 37 | <image />级位考试申请 |
| 38 | </view> | ||
| 39 | <view v-if="userType!='4'" @click="goPath('/pages/level/approval')"> | ||
| 40 | <image />级位考试审核 | ||
| 41 | </view> | ||
| 29 | 42 | ||
| 30 | </view> | 43 | </view> |
| 31 | <uni-section title="待办提醒" padding> | 44 | <uni-section title="待办提醒" padding> |
| ... | @@ -67,46 +80,27 @@ | ... | @@ -67,46 +80,27 @@ |
| 67 | } = getCurrentInstance() | 80 | } = getCurrentInstance() |
| 68 | const app = getApp(); | 81 | const app = getApp(); |
| 69 | const userType = ref('1') | 82 | const userType = ref('1') |
| 83 | const memberInfo = ref({}) | ||
| 70 | 84 | ||
| 71 | let proId; | 85 | let proId; |
| 72 | const svId = ref(null); | 86 | const svId = ref(null); |
| 73 | const list = ref([ | 87 | |
| 74 | { | ||
| 75 | url: '', | ||
| 76 | text: '段位考试申请' | ||
| 77 | }, | ||
| 78 | { | ||
| 79 | url: '', | ||
| 80 | text: '段位考试审核' | ||
| 81 | }, | ||
| 82 | { | ||
| 83 | url: '', | ||
| 84 | text: '级位证书发送' | ||
| 85 | }, | ||
| 86 | { | ||
| 87 | url: '', | ||
| 88 | text: '段位证书发送' | ||
| 89 | } | ||
| 90 | ]); | ||
| 91 | const messageList = ref([]) | 88 | const messageList = ref([]) |
| 92 | onShow(() => { | 89 | onShow(() => { |
| 93 | if (app.globalData.isLogin) { | 90 | if (app.globalData.isLogin) { |
| 94 | init() | 91 | init() |
| 95 | } else { | 92 | } else { |
| 96 | |||
| 97 | app.firstLoadCallback = () => { | 93 | app.firstLoadCallback = () => { |
| 98 | init() | 94 | init() |
| 99 | }; | 95 | }; |
| 100 | } | 96 | } |
| 101 | }) | 97 | }) |
| 102 | onLoad(option => { | 98 | onLoad(option => { |
| 103 | |||
| 104 | if (option.scene) { | 99 | if (option.scene) { |
| 105 | proId = decodeURIComponent(option.scene); | 100 | proId = decodeURIComponent(option.scene); |
| 106 | } else { | 101 | } else { |
| 107 | proId = option.proId; | 102 | proId = option.proId; |
| 108 | } | 103 | } |
| 109 | |||
| 110 | }); | 104 | }); |
| 111 | 105 | ||
| 112 | function goPath(path) { | 106 | function goPath(path) { |
| ... | @@ -148,22 +142,26 @@ | ... | @@ -148,22 +142,26 @@ |
| 148 | uni.showLoading({ | 142 | uni.showLoading({ |
| 149 | title: '加载中' | 143 | title: '加载中' |
| 150 | }); | 144 | }); |
| 151 | loginServer.getMyOwnMemberInfo().then(res=>{ | 145 | // loginServer.getMyOwnMemberInfo().then(res=>{ |
| 152 | userType.value = app.globalData.userType | 146 | userType.value = app.globalData.userType |
| 153 | if (userType.value!='1' && app.globalData.authenticationStatus != '2' && app.globalData.authenticationStatus != '4'){ | 147 | memberInfo.value = app.globalData.memberInfo |
| 148 | console.log(userType.value,app.globalData.authenticationStatus) | ||
| 149 | if (userType.value != '1' && app.globalData.authenticationStatus != '2' && app.globalData.authenticationStatus != | ||
| 150 | '4') { | ||
| 154 | // 注册引导 | 151 | // 注册引导 |
| 155 | uni.navigateTo({ | 152 | // uni.navigateTo({ |
| 156 | url: '/pages/index/perfect' | 153 | // url: '/pages/index/perfect' |
| 157 | }); | 154 | // }); |
| 158 | } else { | 155 | } else { |
| 159 | getMes() | 156 | getMes() |
| 160 | } | 157 | } |
| 161 | uni.hideLoading(); | 158 | uni.hideLoading(); |
| 162 | }) | 159 | // }) |
| 163 | 160 | ||
| 164 | 161 | ||
| 165 | } | 162 | } |
| 166 | function getMes(){ | 163 | |
| 164 | function getMes() { | ||
| 167 | api.getMessage({ | 165 | api.getMessage({ |
| 168 | pageNum: 1, | 166 | pageNum: 1, |
| 169 | pageSize: 10 | 167 | pageSize: 10 |
| ... | @@ -173,49 +171,50 @@ function getMes(){ | ... | @@ -173,49 +171,50 @@ function getMes(){ |
| 173 | switch (d.type) { | 171 | switch (d.type) { |
| 174 | case 30001: | 172 | case 30001: |
| 175 | d.name = '你有一条会员缴费等待审批,点击去处理!' | 173 | d.name = '你有一条会员缴费等待审批,点击去处理!' |
| 176 | d.path = '/personalVip/audit' | 174 | d.path = '/pages/personalVip/audit' |
| 177 | break | 175 | break |
| 178 | case 30002: | 176 | case 30002: |
| 179 | d.name = '你有一条级位考试等待审批,点击去处理!' | 177 | d.name = '你有一条级位考试等待审批,点击去处理!' |
| 180 | d.path = '/level/approval' | 178 | d.path = '/pages/level/approval' |
| 181 | break | 179 | break |
| 182 | case 30003: | 180 | case 30003: |
| 183 | d.name = '你有一条段位考试等待审批,点击去处理!' | 181 | d.name = '你有一条段位考试等待审批,点击去处理!' |
| 184 | d.path = '/rank/approval' | 182 | d.path = '/pages/rank/approval' |
| 185 | break | 183 | break |
| 186 | case 30004: | 184 | case 30004: |
| 187 | d.name = '你有一条会员调动等待审批,点击去处理!' | 185 | d.name = '你有一条会员调动等待审批,点击去处理!' |
| 188 | d.path = '/personalVip/mobillize' | 186 | d.path = '/pages/personalVip/mobillize' |
| 189 | break | 187 | break |
| 190 | case 30005: | 188 | case 30005: |
| 191 | d.name = '你有一条团体会员认证等待审批,点击去处理!' | 189 | d.name = '你有一条团体会员认证等待审批,点击去处理!' |
| 192 | d.path = '/group/authentication' | 190 | d.path = '/pages/group/authentication' |
| 193 | break | 191 | break |
| 194 | case 30006: | 192 | case 30006: |
| 195 | d.name = '你有一条段位成绩等待审批,点击去处理!' | 193 | d.name = '你有一条段位成绩等待审批,点击去处理!' |
| 196 | d.path = '/rank/scoreApproval' | 194 | d.path = '/pages/rank/scoreApproval' |
| 197 | break | 195 | break |
| 198 | case 40001: | 196 | case 40001: |
| 199 | d.name = '你有一条级位申请待提交,点击去处理!' | 197 | d.name = '你有一条级位申请待提交,点击去处理!' |
| 200 | d.path = `/level/apply/modify?id=${d.eventId}` | 198 | d.path = `/pages/level/apply/modify?id=${d.eventId}` |
| 201 | break | 199 | break |
| 202 | case 40002: | 200 | case 40002: |
| 203 | d.name = '你有一条段位申请待提交,点击去处理!' | 201 | d.name = '你有一条段位申请待提交,点击去处理!' |
| 204 | d.path = `/rank/apply/modify?id=${d.eventId}` | 202 | d.path = `/pages/rank/apply/modify?id=${d.eventId}` |
| 205 | break | 203 | break |
| 206 | case 40003: | 204 | case 40003: |
| 207 | d.name = '你有一条成绩维护的数据待提交,点击去处理!' | 205 | d.name = '你有一条成绩维护的数据待提交,点击去处理!' |
| 208 | d.path = `/rank/score/modify?id=${d.eventId}` | 206 | d.path = `/pages/rank/score/modify?id=${d.eventId}` |
| 209 | break | 207 | break |
| 210 | case 50001: | 208 | case 50001: |
| 211 | d.name = '你有一条新的个人会员申请,点击去处理!' | 209 | d.name = '你有一条新的个人会员申请,点击去处理!' |
| 212 | d.path = '/personalVip/approvalList' | 210 | d.path = '/pages/personalVip/approvalList' |
| 213 | break | 211 | break |
| 214 | } | 212 | } |
| 215 | } | 213 | } |
| 216 | messageList.value = res.rows | 214 | messageList.value = res.rows |
| 217 | }) | 215 | }) |
| 218 | } | 216 | } |
| 217 | |||
| 219 | function readMessage(item) { | 218 | function readMessage(item) { |
| 220 | uni.navigateTo({ | 219 | uni.navigateTo({ |
| 221 | url: item.path | 220 | url: item.path | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view> | 2 | <view> |
| 3 | <view class="pd30"> | 3 | <view class="pd30" style="padding: 30rpx 30rpx 180rpx;"> |
| 4 | <uni-steps :options="list1" :active="active" /> | 4 | <uni-steps :options="list1" :active="active" /> |
| 5 | 5 | ||
| 6 | <view> | 6 | <view class="wBox" v-if="active == 0"> |
| 7 | <uni-forms ref="baseForm" :modelValue="baseFormData" label-width="100"> | 7 | <uni-forms ref="baseForm" :modelValue="form" label-width="100"> |
| 8 | <uni-forms-item label="所属协会" required><uni-easyinput v-model="baseFormData.name" | 8 | <uni-forms-item label="单位名称" required> |
| 9 | :disabled="!editIng" placeholder="所属协会" /></uni-forms-item> | 9 | <uni-easyinput v-model="form.baseName" :disabled="!editIng" |
| 10 | <uni-forms-item label="机构名称" required><uni-easyinput v-model="baseFormData.name" | 10 | placeholder="单位名称" /></uni-forms-item> |
| 11 | :disabled="!editIng" placeholder="机构名称" /></uni-forms-item> | ||
| 12 | <uni-forms-item label="单位类型" required> | 11 | <uni-forms-item label="单位类型" required> |
| 13 | <uni-data-select :disabled="!editIng" v-model="baseFormData.type" | 12 | <uni-data-select :disabled="!editIng" v-model="form.type" |
| 14 | :localdata="typeList"></uni-data-select> | 13 | :localdata="typeList"></uni-data-select> |
| 15 | </uni-forms-item> | 14 | </uni-forms-item> |
| 16 | <uni-forms-item label="联系人" required> | 15 | <uni-forms-item label="联系人" required> |
| 17 | <uni-easyinput v-model="baseFormData.contactPerson" :disabled="!editIng" | 16 | <uni-easyinput v-model="form.contact" :disabled="!editIng" placeholder="请输入联系人姓名" /> |
| 18 | placeholder="请输入联系人姓名" /> | ||
| 19 | </uni-forms-item> | 17 | </uni-forms-item> |
| 20 | <uni-forms-item label="联系方式" required> | 18 | <uni-forms-item label="联系方式" required> |
| 21 | <uni-easyinput v-model="baseFormData.contactTelno" :disabled="!editIng" placeholder="请输入联系方式" /> | 19 | <uni-easyinput v-model="form.phone" :disabled="!editIng" placeholder="请输入联系方式" /> |
| 20 | </uni-forms-item> | ||
| 21 | <uni-forms-item label="所属省份" required> | ||
| 22 | <uni-data-select v-if="editIng" v-model="form.belongProvinceId" | ||
| 23 | :localdata="options"></uni-data-select> | ||
| 22 | </uni-forms-item> | 24 | </uni-forms-item> |
| 23 | <uni-forms-item label="所在地区" required> | 25 | <uni-forms-item label="地址" required> |
| 24 | <uni-data-picker v-if="editIng" class="fixUniFormItemStyle" :clear-icon="!editIng" | 26 | <uni-data-select v-if="editIng" v-model="form.coordinates1" |
| 25 | v-model="regionArr" @change="onchangeRegionId" :localdata="regionsList" | 27 | :localdata="options"></uni-data-select> |
| 26 | popup-title="请选择所在地区"></uni-data-picker> | ||
| 27 | <uni-easyinput v-model="baseFormData.regionStr" v-else disabled /> | ||
| 28 | </uni-forms-item> | 28 | </uni-forms-item> |
| 29 | <uni-forms-item label="详细地址" required><uni-easyinput v-model="baseFormData.address" | 29 | <uni-forms-item label="详细地址" required><uni-easyinput v-model="form.siteAddress" :disabled="!editIng" |
| 30 | :disabled="!editIng" placeholder="请输入详细地址" /></uni-forms-item> | 30 | placeholder="请输入详细地址" type='textarea' /></uni-forms-item> |
| 31 | |||
| 32 | <uni-forms-item label="机构介绍" required><uni-easyinput v-model="form.introduce" placeholder="请输入机构介绍" | ||
| 33 | :disabled="!editIng" type='textarea' /></uni-forms-item> | ||
| 31 | 34 | ||
| 32 | 35 | ||
| 33 | </uni-forms> | 36 | </uni-forms> |
| 34 | <view class="fixedBottom"> | 37 | <view class="fixedBottom"> |
| 35 | <button class="btn-red" @click="saveMyteam()">下一步</button> | 38 | <button class="btn-red" @click="submit()">提交,下一步</button> |
| 36 | </view> | 39 | </view> |
| 37 | </view> | 40 | </view> |
| 41 | <view class="wBox" v-if="active == 1"> | ||
| 42 | <view> | ||
| 43 | <view>认证状态: | ||
| 44 | <text v-if="authenticationStatusa == 0 ||!authenticationStatusa" class="text-danger">未认证</text> | ||
| 45 | <text v-if="authenticationStatusa == 1" class="text-success">认证中</text> | ||
| 46 | <text v-if="authenticationStatusa == 2" class="text-success">已认证</text> | ||
| 47 | <text v-if="authenticationStatusa == 3" class="text-danger">认证未通过</text> | ||
| 48 | <text v-if="authenticationStatusa == 4" class="text-danger">即将过期</text> | ||
| 49 | <text v-if="authenticationStatusa == 5" class="text-danger">已过期</text> | ||
| 50 | |||
| 51 | </view> | ||
| 52 | <view> | ||
| 53 | <button v-if="authenticationStatusa==2" type="primary" :disabled="!result" | ||
| 54 | @click="audioFN1">去缴费</button> | ||
| 55 | <button v-if="authenticationStatusa!=2" type="primary" :disabled="!result" | ||
| 56 | @click="audioFN2">去认证</button> | ||
| 57 | <button v-if="form.deptType!=2" type="primary" @click="auditEditFN">审核详情</button> | ||
| 58 | </view> | ||
| 59 | </view> | ||
| 60 | <uni-forms> | ||
| 61 | <uni-forms-item label="选择所属协会" required> | ||
| 62 | <uni-data-select :disabled="!editIng" v-model="form.parentId" | ||
| 63 | :localdata="typeList" @change="changCase"></uni-data-select> | ||
| 64 | </uni-forms-item> | ||
| 65 | <uni-forms-item label="机构名称" required> | ||
| 66 | <uni-easyinput v-model="form.name" :disabled="!editIng" placeholder="请输入机构名称" /> | ||
| 67 | </uni-forms-item> | ||
| 68 | </uni-forms> | ||
| 69 | |||
| 70 | </view> | ||
| 38 | </view> | 71 | </view> |
| 39 | </view> | 72 | </view> |
| 40 | </template> | 73 | </template> |
| ... | @@ -48,18 +81,26 @@ | ... | @@ -48,18 +81,26 @@ |
| 48 | onLoad, | 81 | onLoad, |
| 49 | onShow | 82 | onShow |
| 50 | } from '@dcloudio/uni-app'; | 83 | } from '@dcloudio/uni-app'; |
| 51 | import { | ||
| 52 | tagList, | ||
| 53 | typeList, | ||
| 54 | comList | ||
| 55 | } from '@/static/js/data'; | ||
| 56 | import config from '@/config.js' | 84 | import config from '@/config.js' |
| 57 | const app = getApp(); | 85 | const app = getApp(); |
| 58 | const baseFormData = ref({ | 86 | const form = ref({ |
| 59 | 87 | type: '1' | |
| 60 | }); | 88 | }); |
| 61 | const dataList = ref([]); | 89 | const typeList = ref([{ |
| 62 | const memberList = ref([]); | 90 | value: '1', |
| 91 | text: '企业' | ||
| 92 | }, { | ||
| 93 | value: '1', | ||
| 94 | text: '国家组织' | ||
| 95 | }, { | ||
| 96 | value: '1', | ||
| 97 | text: '社会组织' | ||
| 98 | }, { | ||
| 99 | value: '1', | ||
| 100 | text: '其他' | ||
| 101 | }]) | ||
| 102 | const options = ref([]) | ||
| 103 | |||
| 63 | const regionArr = ref(); | 104 | const regionArr = ref(); |
| 64 | const regionsList = ref([]); | 105 | const regionsList = ref([]); |
| 65 | const ranksList = ref([]); | 106 | const ranksList = ref([]); |
| ... | @@ -74,84 +115,65 @@ | ... | @@ -74,84 +115,65 @@ |
| 74 | type: 0 | 115 | type: 0 |
| 75 | }); | 116 | }); |
| 76 | const active = ref(0) | 117 | const active = ref(0) |
| 118 | const memberInfo = ref({}) | ||
| 119 | const authenticationStatus = ref() | ||
| 77 | const list1 = ref([{ | 120 | const list1 = ref([{ |
| 78 | title: '完善信息' | 121 | title: '完善信息' |
| 79 | }, { | 122 | }, { |
| 80 | title: '会员认证' | 123 | title: '会员认证' |
| 81 | }]) | 124 | }]) |
| 82 | onLoad(option => { | 125 | onLoad(option => { |
| 83 | console.log(option) | 126 | if (app.globalData.isLogin) { |
| 127 | init() | ||
| 128 | } else { | ||
| 129 | app.firstLoadCallback = () => { | ||
| 130 | init() | ||
| 131 | }; | ||
| 132 | } | ||
| 133 | }); | ||
| 84 | 134 | ||
| 85 | getRegionsList(); | 135 | function init() { |
| 86 | getDetail() | 136 | getDetail() |
| 87 | }); | 137 | getRegionsList() |
| 88 | function getDetail(){ | 138 | } |
| 89 | api.getMyOwnMemberInfo().then(res=>{ | 139 | |
| 90 | if (!res.data.memberInfo) res.data.memberInfo = {} | 140 | function getDetail() { |
| 91 | baseFormData.value = res.data.memberInfo | 141 | api.getMyOwnMemberInfo().then(res => { |
| 92 | baseFormData.value.coordinates1 = [] | 142 | if (res.data.memberInfo) { |
| 93 | authenticationStatusa.value = res.data.authenticationStatus | 143 | form.value = res.data.memberInfo |
| 94 | if (baseFormData.value.siteProvinceId)baseFormData.value.coordinates1.push(baseFormData.value.siteProvinceId) | 144 | } |
| 95 | if (baseFormData.value.siteCityId) baseFormData.value.coordinates1.push(baseFormData.value.siteCityId) | 145 | form.value.coordinates1 = [] |
| 96 | if (baseFormData.value.siteRegionId) baseFormData.value.coordinates1.push(baseFormData.value.siteRegionId) | 146 | authenticationStatus.value = res.data.authenticationStatus |
| 147 | if (form.value.siteProvinceId) { | ||
| 148 | form.value.coordinates1.push(form.value.siteProvinceId) | ||
| 149 | } | ||
| 150 | if (form.value.siteCityId) { | ||
| 151 | form.value.coordinates1.push(form.value.siteCityId) | ||
| 152 | } | ||
| 153 | if (form.value.siteRegionId) { | ||
| 154 | form.value.coordinates1.push(form.value.siteRegionId) | ||
| 155 | } | ||
| 97 | 156 | ||
| 98 | }) | 157 | }) |
| 99 | } | 158 | } |
| 100 | 159 | ||
| 101 | function getRegionsList() { | 160 | function getRegionsList() { |
| 102 | api.regionsList().then(res => { | 161 | api.regionsList().then(res => { |
| 103 | regionsList.value = res.data; | 162 | options.value = res.data; |
| 104 | }); | 163 | }); |
| 105 | } | 164 | } |
| 106 | 165 | ||
| 107 | function onchangeRegionId(e) { | 166 | function submit() { |
| 108 | console.log(e.detail.value) | ||
| 109 | baseFormData.value.regionId = regionArr.value | ||
| 110 | } | ||
| 111 | |||
| 112 | function saveMyteam() { | ||
| 113 | // 验证必填项 | 167 | // 验证必填项 |
| 114 | if (baseFormData.value.imgUrl == '') { | 168 | if (form.value.baseName == '') { |
| 115 | uni.showToast({ | ||
| 116 | title: '请上传logo', | ||
| 117 | duration: 2000, | ||
| 118 | icon: 'none' | ||
| 119 | }) | ||
| 120 | return | ||
| 121 | } | ||
| 122 | if (baseFormData.value.name == '') { | ||
| 123 | uni.showToast({ | ||
| 124 | title: '请填写团体名称', | ||
| 125 | duration: 2000, | ||
| 126 | icon: 'none' | ||
| 127 | }) | ||
| 128 | return | ||
| 129 | } | ||
| 130 | if (baseFormData.value.abreviations == '') { | ||
| 131 | uni.showToast({ | 169 | uni.showToast({ |
| 132 | title: '请填写简称', | 170 | title: '请填写单位名称', |
| 133 | duration: 2000, | 171 | duration: 2000, |
| 134 | icon: 'none' | 172 | icon: 'none' |
| 135 | }) | 173 | }) |
| 136 | return | 174 | return |
| 137 | } | 175 | } |
| 138 | if (baseFormData.value.type == '') { | 176 | if (form.value.contact == '') { |
| 139 | uni.showToast({ | ||
| 140 | title: '请选择参赛队类型', | ||
| 141 | duration: 2000, | ||
| 142 | icon: 'none' | ||
| 143 | }) | ||
| 144 | return | ||
| 145 | } | ||
| 146 | // if(baseFormData.value.type=='3'&&!baseFormData.value.ctype){ | ||
| 147 | // uni.showToast({ | ||
| 148 | // title: '请选择企业性质', | ||
| 149 | // duration: 2000, | ||
| 150 | // icon:'none' | ||
| 151 | // }) | ||
| 152 | // return | ||
| 153 | // } | ||
| 154 | if (baseFormData.value.contactPerson == '') { | ||
| 155 | uni.showToast({ | 177 | uni.showToast({ |
| 156 | title: '请填写联系人', | 178 | title: '请填写联系人', |
| 157 | duration: 2000, | 179 | duration: 2000, |
| ... | @@ -159,99 +181,63 @@ | ... | @@ -159,99 +181,63 @@ |
| 159 | }) | 181 | }) |
| 160 | return | 182 | return |
| 161 | } | 183 | } |
| 162 | if (baseFormData.value.contactTelno == '') { | 184 | if (form.value.phone == '') { |
| 163 | uni.showToast({ | 185 | uni.showToast({ |
| 164 | title: '请填写联系方式', | 186 | title: '请填写联系电话', |
| 165 | duration: 2000, | 187 | duration: 2000, |
| 166 | icon: 'none' | 188 | icon: 'none' |
| 167 | }) | 189 | }) |
| 168 | return | 190 | return |
| 169 | } | 191 | } |
| 170 | var pattern = /^1[3456789]\d{9}$/; | 192 | if (form.value.belongProvinceId == '') { |
| 171 | if (!pattern.test(baseFormData.value.contactTelno)) { | ||
| 172 | uni.showToast({ | 193 | uni.showToast({ |
| 173 | title: '请输入正确的手机号', | 194 | title: '请选择所属省份', |
| 174 | duration: 2000, | 195 | duration: 2000, |
| 175 | icon: 'none' | 196 | icon: 'none' |
| 176 | }) | 197 | }) |
| 177 | return | 198 | return |
| 178 | } | 199 | } |
| 179 | 200 | if (form.value.siteAddress == '') { | |
| 180 | if (baseFormData.value.regionId == '') { | ||
| 181 | uni.showToast({ | 201 | uni.showToast({ |
| 182 | title: '选择所在地区', | 202 | title: '请填写详细地址', |
| 183 | duration: 2000, | 203 | duration: 2000, |
| 184 | icon: 'none' | 204 | icon: 'none' |
| 185 | }) | 205 | }) |
| 186 | return | 206 | return |
| 187 | } | 207 | } |
| 188 | if (baseFormData.value.address == '') { | 208 | |
| 209 | if (form.value.coordinates1 == '') { | ||
| 189 | uni.showToast({ | 210 | uni.showToast({ |
| 190 | title: '请填写详细地址', | 211 | title: '选择所在地址', |
| 191 | duration: 2000, | 212 | duration: 2000, |
| 192 | icon: 'none' | 213 | icon: 'none' |
| 193 | }) | 214 | }) |
| 194 | return | 215 | return |
| 195 | } | 216 | } |
| 196 | 217 | if (form.value.introduce == '') { | |
| 197 | for (let n in participantsInfoArr.value) { | ||
| 198 | if (participantsInfoArr.value[n].status == 0 && (!participantsInfoArr.value[n].value)) { | ||
| 199 | uni.showToast({ | 218 | uni.showToast({ |
| 200 | title: '请完善必填字段', | 219 | title: '请填写机构介绍', |
| 201 | duration: 2000, | 220 | duration: 2000, |
| 202 | icon: 'none' | 221 | icon: 'none' |
| 203 | }) | 222 | }) |
| 204 | return | 223 | return |
| 205 | } | 224 | } |
| 206 | 225 | api.createMyMember(form.value).then(res => { | |
| 207 | } | 226 | if (res.data.token) { |
| 208 | 227 | uni.setStorageSync('token', 'Bearer ' + res.data.token) | |
| 209 | |||
| 210 | |||
| 211 | match.saveMyGroup(baseFormData.value).then(res => { | ||
| 212 | groupId.value = res.data | ||
| 213 | if (participantsInfoArr.value && participantsInfoArr.value.length > 0) { | ||
| 214 | // 保存补充信息 | ||
| 215 | const obj = { | ||
| 216 | cptId: cptId.value, | ||
| 217 | groupId: groupId.value, | ||
| 218 | groupInfo: JSON.stringify(participantsInfoArr.value) | ||
| 219 | } | 228 | } |
| 220 | match.saveMyGroupExtraInfo(obj).then(res => { | 229 | active.value = 1 |
| 221 | |||
| 222 | }) | 230 | }) |
| 223 | } | 231 | } |
| 224 | |||
| 225 | if (!signType.value) { | ||
| 226 | uni.showToast({ | ||
| 227 | title: '保存成功', | ||
| 228 | icon: 'none', | ||
| 229 | duration: 2000 | ||
| 230 | }); | ||
| 231 | editIng.value = false; | ||
| 232 | } else if (signType.value == 1) { | ||
| 233 | // 团队 | ||
| 234 | if (coachOrLeaderFlag.value == "1") { | ||
| 235 | uni.navigateTo({ | ||
| 236 | url: `/pages_match/match/choose_coach?matchId=${cptId.value}&groupId=${groupId.value}&signType=${signType.value}` | ||
| 237 | }); | ||
| 238 | } else { | ||
| 239 | // 选运动员 | ||
| 240 | uni.navigateTo({ | ||
| 241 | url: `/pages_match/match/choose_sportman?matchId=${cptId.value}&groupId=${groupId.value}&signType=${signType.value}` | ||
| 242 | }); | ||
| 243 | } | ||
| 244 | |||
| 245 | } else if (signType.value == 2) { | ||
| 246 | // 队伍 | ||
| 247 | uni.navigateTo({ | ||
| 248 | url: `/pages_match/match/add_rank?matchId=${cptId.value}&groupId=${groupId.value}&signType=${signType.value}` | ||
| 249 | }); | ||
| 250 | } | ||
| 251 | }); | ||
| 252 | } | ||
| 253 | </script> | 232 | </script> |
| 254 | 233 | ||
| 255 | <style lang="scss"> | 234 | <style lang="scss" scoped> |
| 256 | 235 | .wBox { | |
| 236 | width: 700rpx; | ||
| 237 | padding: 30rpx; | ||
| 238 | margin: 20rpx auto 0; | ||
| 239 | background: #FFFFFF; | ||
| 240 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | ||
| 241 | border-radius: 15rpx; | ||
| 242 | } | ||
| 257 | </style> | 243 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -6,7 +6,7 @@ | ... | @@ -6,7 +6,7 @@ |
| 6 | <view class="wBox" v-if="active == 0"> | 6 | <view class="wBox" v-if="active == 0"> |
| 7 | <uni-forms ref="baseForm" :modelValue="form" label-width="100"> | 7 | <uni-forms ref="baseForm" :modelValue="form" label-width="100"> |
| 8 | <uni-forms-item label="考试名称"> | 8 | <uni-forms-item label="考试名称"> |
| 9 | <view v-if="form.name">{{form.name}}</view> | 9 | <view class="align-forms-item" v-if="form.name">{{form.name}}</view> |
| 10 | <view v-else class="align-forms-item-placeHolder">自动生成</view> | 10 | <view v-else class="align-forms-item-placeHolder">自动生成</view> |
| 11 | </uni-forms-item> | 11 | </uni-forms-item> |
| 12 | <uni-forms-item label="申请单位" required> | 12 | <uni-forms-item label="申请单位" required> |
| ... | @@ -24,7 +24,8 @@ | ... | @@ -24,7 +24,8 @@ |
| 24 | <uni-forms-item label="考级地点" required> | 24 | <uni-forms-item label="考级地点" required> |
| 25 | <uni-easyinput v-model="form.examLocation" placeholder="考级地点" /> | 25 | <uni-easyinput v-model="form.examLocation" placeholder="考级地点" /> |
| 26 | </uni-forms-item> | 26 | </uni-forms-item> |
| 27 | <uni-forms-item @updateData="updateData" :label="`考官${ec}`" v-for="ec in examinerForChoose" :key="ec"> | 27 | <uni-forms-item @updateData="updateData" :label="`考官${ec}`" v-for="ec in examinerForChoose" |
| 28 | :key="ec"> | ||
| 28 | <view @click="selectFN(ec)" class="mask"> | 29 | <view @click="selectFN(ec)" class="mask"> |
| 29 | <uni-easyinput v-model="form[`examiner_${ec}`]" clearable placeholder="点击选择考官" /> | 30 | <uni-easyinput v-model="form[`examiner_${ec}`]" clearable placeholder="点击选择考官" /> |
| 30 | </view> | 31 | </view> |
| ... | @@ -35,53 +36,95 @@ | ... | @@ -35,53 +36,95 @@ |
| 35 | </view> | 36 | </view> |
| 36 | <view class="wBox" v-if="active == 1"> | 37 | <view class="wBox" v-if="active == 1"> |
| 37 | <!-- 添加考生 --> | 38 | <!-- 添加考生 --> |
| 38 | <button class="btn-red-kx">在线选择</button> | 39 | <button class="btn-red-kx mini" @click="chooseOnline">在线选择</button> |
| 39 | <view class="vipData"> | 40 | <view class="vipData mt30"> |
| 40 | <view>共<text>{{total}}</text>人</view> | 41 | <view>共<text>{{tablePersonInfo.total}}</text>人</view> |
| 42 | <view v-for="l in tablePersonInfo.levelArr" :key="l.level"> | ||
| 43 | {{ szToHz(l.level) }}级:<text>{{tablePersonInfo.total}}</text>人</view> | ||
| 41 | </view> | 44 | </view> |
| 42 | <view class="userlist"> | 45 | <view class="userlist"> |
| 43 | <view class="item" v-for="n in list" style="background-color: #fffafa;"> | 46 | <view class="item" v-for="n in infoList" style="background-color: #fffafa;"> |
| 44 | <view class="w100"> | 47 | <view class="w100"> |
| 48 | <view style="display: flex;"> | ||
| 45 | <view class="photobox"> | 49 | <view class="photobox"> |
| 46 | <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> | 50 | <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" |
| 47 | <view class="colorful" v-else>{{n.name.slice(0,1)}}</view> | 51 | mode='aspectFill'></image> |
| 52 | <view class="colorful" v-else>{{n.realName?.slice(0,1)}}</view> | ||
| 48 | </view> | 53 | </view> |
| 49 | <view class="name">{{n.realName}} <text>{{n.code}}</text></view> | 54 | <view> |
| 55 | <view class="name">{{n.realName}} <text>{{n.perCode}}</text></view> | ||
| 50 | <view class="date">{{n.idcTypeStr}}:{{n.idcCode}}</view> | 56 | <view class="date">{{n.idcTypeStr}}:{{n.idcCode}}</view> |
| 51 | <view class="flexbox"> | 57 | </view> |
| 58 | </view> | ||
| 59 | <view class="flexbox mt30"> | ||
| 52 | <view> | 60 | <view> |
| 53 | 原有级别 | 61 | 原有级别 |
| 54 | <text>{{n}}</text> | 62 | <text style="padding: 15rpx 0;">{{ szToHz(n.levelOld) }}级</text> |
| 55 | </view> | 63 | </view> |
| 56 | <view> | 64 | <view style="width: 40%;"> |
| 57 | 考试级别 | 65 | 考试级别 |
| 58 | <uni-data-select | 66 | <view @click="changeLevelfather(n)"> |
| 59 | v-model="value" | 67 | <uni-data-select v-model="n.levelNew" :localdata="levelArr" |
| 60 | :localdata="range" | 68 | @change="changeLevel"></uni-data-select> |
| 61 | @change="change" | ||
| 62 | ></uni-data-select> | ||
| 63 | </view> | 69 | </view> |
| 64 | 70 | ||
| 65 | <view> | 71 | </view> |
| 72 | |||
| 73 | <view style="width: 30%;"> | ||
| 66 | 是否通过 | 74 | 是否通过 |
| 67 | <uni-data-select | 75 | <view> |
| 68 | v-model="value" | 76 | <uni-data-select v-model="n.isPass" :localdata="range" |
| 69 | :localdata="range" | ||
| 70 | @change="change" | ||
| 71 | ></uni-data-select> | 77 | ></uni-data-select> |
| 72 | </view> | 78 | </view> |
| 73 | </view> | 79 | </view> |
| 74 | </view> | 80 | </view> |
| 81 | </view> | ||
| 75 | 82 | ||
| 76 | </view> | 83 | </view> |
| 84 | <view class="nodata" v-if="infoList.length==0"> | ||
| 85 | <image mode="aspectFit" src="/static/nodata.png"></image> | ||
| 86 | <text>待添加考生</text> | ||
| 87 | </view> | ||
| 77 | </view> | 88 | </view> |
| 78 | </view> | 89 | </view> |
| 79 | </view> | 90 | </view> |
| 80 | </view> | 91 | </view> |
| 81 | <view class="fixedBottom"> | 92 | <view class="fixedBottom" v-if="active == 0"> |
| 82 | <button class="btn-red-kx" style="width: 40%;" @click="submitForm(0)">保存</button> | 93 | <button class="btn-red-kx" style="width: 40%;" @click="submitForm(0)">保存</button> |
| 83 | <button class="btn-red" style="width: 40%;" @click="submitForm(1)">下一步</button> | 94 | <button class="btn-red" style="width: 40%;" @click="submitForm(1)">下一步</button> |
| 84 | </view> | 95 | </view> |
| 96 | <view class="fixedBottom" v-if="active == 1"> | ||
| 97 | <button class="btn-red-kx" style="width: 25%;" @click="active=0">上一步</button> | ||
| 98 | <button class="btn-red" style="width: 25%;" @click="submitForm2(0)">保存</button> | ||
| 99 | <button class="btn-red" style="width: 30%;" @click="submitForm2(1)">提交审核</button> | ||
| 100 | </view> | ||
| 101 | |||
| 102 | |||
| 103 | <uni-popup ref="choseStudent" type="bottom" background-color="#fff" animation> | ||
| 104 | <view class="popBody"> | ||
| 105 | <view class="userlist"> | ||
| 106 | <view class="item" v-for=" n in studentList"> | ||
| 107 | <view @click="checkThis(n)"> | ||
| 108 | <image class="icon" v-if="n.checked" src="@/static/member/dx_dwn.png" /> | ||
| 109 | <image class="icon" v-else src="@/static/member/dx.png" /> | ||
| 110 | </view> | ||
| 111 | <view class="photobox"> | ||
| 112 | <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'> | ||
| 113 | </image> | ||
| 114 | <view class="colorful" v-else>{{n.name.slice(0,1)}}</view> | ||
| 115 | </view> | ||
| 116 | <view> | ||
| 117 | <view class="name">{{n.name}} <text>{{n.perCode}}</text></view> | ||
| 118 | <view class="date">到期时间:{{n.validityDate}}</view> | ||
| 119 | <view class="date" style="color: #1561CB;" v-if="n.levelJi&&n.levelJi!=0">级位:{{szToHz(n.levelJi)}}级</view> | ||
| 120 | <view class="date" v-else >级位:十级</view> | ||
| 121 | </view> | ||
| 122 | </view> | ||
| 123 | |||
| 124 | <button class="btn-red-kx" @click="submitStudents">确定</button> | ||
| 125 | </view> | ||
| 126 | </view> | ||
| 127 | </uni-popup> | ||
| 85 | </view> | 128 | </view> |
| 86 | </template> | 129 | </template> |
| 87 | 130 | ||
| ... | @@ -94,11 +137,6 @@ | ... | @@ -94,11 +137,6 @@ |
| 94 | onLoad, | 137 | onLoad, |
| 95 | onShow | 138 | onShow |
| 96 | } from '@dcloudio/uni-app'; | 139 | } from '@dcloudio/uni-app'; |
| 97 | import { | ||
| 98 | tagList, | ||
| 99 | typeList, | ||
| 100 | comList | ||
| 101 | } from '@/static/js/data'; | ||
| 102 | import config from '@/config.js' | 140 | import config from '@/config.js' |
| 103 | import dayjs from 'dayjs' | 141 | import dayjs from 'dayjs' |
| 104 | import _ from 'lodash' | 142 | import _ from 'lodash' |
| ... | @@ -117,6 +155,14 @@ | ... | @@ -117,6 +155,14 @@ |
| 117 | }, { | 155 | }, { |
| 118 | title: '添加考生' | 156 | title: '添加考生' |
| 119 | }]) | 157 | }]) |
| 158 | const choseStudent = ref(null) | ||
| 159 | const studentList = ref([]) | ||
| 160 | const infoList = ref([]) | ||
| 161 | const ids = ref([]) | ||
| 162 | const tablePersonInfo = ref({}) | ||
| 163 | 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:'一级'}]) | ||
| 165 | const range = ref([{value:'1',text:'是'},{value:'0',text:'否'}]) | ||
| 120 | let examId | 166 | let examId |
| 121 | onLoad(option => { | 167 | onLoad(option => { |
| 122 | console.log(option) | 168 | console.log(option) |
| ... | @@ -254,20 +300,22 @@ | ... | @@ -254,20 +300,22 @@ |
| 254 | } | 300 | } |
| 255 | save().then(() => { | 301 | save().then(() => { |
| 256 | // form.value.examId 下一步 | 302 | // form.value.examId 下一步 |
| 257 | active.value == 1 | 303 | active.value = 1 |
| 304 | getChosedStudentList() | ||
| 258 | }) | 305 | }) |
| 259 | } | 306 | } |
| 260 | } | 307 | } |
| 308 | |||
| 261 | function save() { | 309 | function save() { |
| 262 | if (form.value.examId) { | 310 | if (form.value.examId) { |
| 263 | return updateLevelInfo(form.value).then(() => { | 311 | return api.updateLevelInfo(form.value).then(() => { |
| 264 | uni.showToast({ | 312 | uni.showToast({ |
| 265 | title: `保存成功`, | 313 | title: `保存成功`, |
| 266 | icon: 'none' | 314 | icon: 'none' |
| 267 | }) | 315 | }) |
| 268 | }) | 316 | }) |
| 269 | } else { | 317 | } else { |
| 270 | return addInfo(form.value).then((res) => { | 318 | return api.addLevelInfo(form.value).then((res) => { |
| 271 | form.value.examId = res.data.examId | 319 | form.value.examId = res.data.examId |
| 272 | form.value.name = res.data.name | 320 | form.value.name = res.data.name |
| 273 | uni.showToast({ | 321 | uni.showToast({ |
| ... | @@ -277,6 +325,178 @@ | ... | @@ -277,6 +325,178 @@ |
| 277 | }) | 325 | }) |
| 278 | } | 326 | } |
| 279 | } | 327 | } |
| 328 | |||
| 329 | function chooseOnline() { | ||
| 330 | |||
| 331 | var obj = { | ||
| 332 | memId: memberInfo.memId, | ||
| 333 | examId: form.value.examId, | ||
| 334 | examType: form.value.type | ||
| 335 | } | ||
| 336 | api.chooseStudentsList(obj).then(response => { | ||
| 337 | studentList.value = response.rows | ||
| 338 | for (var s of studentList.value) { | ||
| 339 | s.checked = false | ||
| 340 | } | ||
| 341 | choseStudent.value.open() | ||
| 342 | }) | ||
| 343 | } | ||
| 344 | |||
| 345 | function checkThis(item) { | ||
| 346 | if (item.checked) { | ||
| 347 | item.checked = false | ||
| 348 | } else { | ||
| 349 | item.checked = true | ||
| 350 | } | ||
| 351 | } | ||
| 352 | |||
| 353 | function submitStudents() { | ||
| 354 | ids.value = [] | ||
| 355 | for (var s of studentList.value) { | ||
| 356 | if (s.checked) { | ||
| 357 | ids.value.push(s.perId) | ||
| 358 | } | ||
| 359 | } | ||
| 360 | if (ids.value.length == 0) { | ||
| 361 | uni.showToast({ | ||
| 362 | title: '请选择考生', | ||
| 363 | icon: 'none' | ||
| 364 | }) | ||
| 365 | return | ||
| 366 | } | ||
| 367 | api.batchChoose({ | ||
| 368 | examId: form.value.examId, | ||
| 369 | perIds: ids.value | ||
| 370 | }).then(() => { | ||
| 371 | getChosedStudentList() | ||
| 372 | choseStudent.value.close() | ||
| 373 | }) | ||
| 374 | } | ||
| 375 | |||
| 376 | function getChosedStudentList() { | ||
| 377 | var obj = { | ||
| 378 | examId: form.value.examId | ||
| 379 | } | ||
| 380 | api.getStudentList(obj).then(res => { | ||
| 381 | _.each(res.rows, (d) => { | ||
| 382 | if (d.levelOld) { | ||
| 383 | d.levelRecommend = (parseInt(d.levelOld) - 1) + '' | ||
| 384 | if (d.levelRecommend === '0') { | ||
| 385 | d.levelRecommend = '1' | ||
| 386 | } | ||
| 387 | } else { | ||
| 388 | d.levelRecommend = '9' | ||
| 389 | } | ||
| 390 | |||
| 391 | if (!d.levelNew) { | ||
| 392 | d.levelNew = d.levelRecommend | ||
| 393 | } | ||
| 394 | |||
| 395 | if (!d.isPass) { | ||
| 396 | d.isPass = '1' | ||
| 397 | } | ||
| 398 | }) | ||
| 399 | |||
| 400 | infoList.value = res.rows | ||
| 401 | |||
| 402 | }).then(getTablePersonInfo) | ||
| 403 | } | ||
| 404 | |||
| 405 | function getTablePersonInfo() { | ||
| 406 | const total = infoList.value.length | ||
| 407 | const levelArr = [] | ||
| 408 | _.each(infoList.value, (d) => { | ||
| 409 | const temp = _.find(levelArr, (l) => { | ||
| 410 | return l.level == d.levelNew | ||
| 411 | }) | ||
| 412 | if (temp) { | ||
| 413 | temp.num++ | ||
| 414 | } else { | ||
| 415 | levelArr.push({ | ||
| 416 | level: d.levelNew, | ||
| 417 | num: 1 | ||
| 418 | }) | ||
| 419 | } | ||
| 420 | }) | ||
| 421 | |||
| 422 | tablePersonInfo.value = { | ||
| 423 | total: total, | ||
| 424 | levelArr: _.sortBy(levelArr, (l) => { | ||
| 425 | return l.level | ||
| 426 | }) | ||
| 427 | } | ||
| 428 | } | ||
| 429 | function szToHz(num) { | ||
| 430 | const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'] | ||
| 431 | return hzArr[parseInt(num)] | ||
| 432 | } | ||
| 433 | |||
| 434 | let nowRow | ||
| 435 | function changeLevelfather(row){ | ||
| 436 | nowRow = row | ||
| 437 | } | ||
| 438 | function changeLevel(e){ | ||
| 439 | console.log(e) | ||
| 440 | if (e !== nowRow.levelRecommend) { | ||
| 441 | uni.showModal({ | ||
| 442 | title: '提示', | ||
| 443 | content: `建议考试级别为 "${szToHz(nowRow.levelRecommend)}级" ,确定要修改吗?`, | ||
| 444 | success: function(res) { | ||
| 445 | if (res.confirm) { | ||
| 446 | getTablePersonInfo() | ||
| 447 | } | ||
| 448 | }, | ||
| 449 | fail: function (res) { | ||
| 450 | nowRow.levelNew = nowRow.levelRecommend | ||
| 451 | } | ||
| 452 | }) | ||
| 453 | } | ||
| 454 | } | ||
| 455 | function submitForm2(flag){ | ||
| 456 | if (flag === 1) { | ||
| 457 | if (infoList.value.length == 0) { | ||
| 458 | uni.showToast({ | ||
| 459 | title: '请选择考生', | ||
| 460 | icon: 'none' | ||
| 461 | }) | ||
| 462 | return | ||
| 463 | } | ||
| 464 | if (!form.value.transcript) { | ||
| 465 | uni.showToast({ | ||
| 466 | title: '请上传成绩单', | ||
| 467 | icon: 'none' | ||
| 468 | }) | ||
| 469 | return | ||
| 470 | } | ||
| 471 | |||
| 472 | uni.showModal({ | ||
| 473 | title: '提示', | ||
| 474 | content: `确定提交审核?`, | ||
| 475 | success: function(res) { | ||
| 476 | saveStep2(flag) | ||
| 477 | } | ||
| 478 | }) | ||
| 479 | } else { | ||
| 480 | saveStep2(flag) | ||
| 481 | } | ||
| 482 | } | ||
| 483 | function saveStep2(flag){ | ||
| 484 | const data = _.map(infoList.value, (d) => { | ||
| 485 | return { | ||
| 486 | id: d.id, | ||
| 487 | levelNew: d.levelNew, | ||
| 488 | // score: d.score, | ||
| 489 | isPass: d.isPass | ||
| 490 | } | ||
| 491 | }) | ||
| 492 | return api.editLevel({ | ||
| 493 | examId: form.value.examId, | ||
| 494 | personInfo: JSON.stringify(data), | ||
| 495 | transcript: form.value.transcript, | ||
| 496 | status: flag | ||
| 497 | }) | ||
| 498 | } | ||
| 499 | |||
| 280 | </script> | 500 | </script> |
| 281 | 501 | ||
| 282 | <style lang="scss" scoped> | 502 | <style lang="scss" scoped> |
| ... | @@ -292,12 +512,5 @@ | ... | @@ -292,12 +512,5 @@ |
| 292 | :deep(.uni-forms-item__inner) { | 512 | :deep(.uni-forms-item__inner) { |
| 293 | padding-bottom: 20rpx; | 513 | padding-bottom: 20rpx; |
| 294 | } | 514 | } |
| 295 | 515 | .popBody{padding: 30rpx;} | |
| 296 | :deep(.uni-forms-item__label .label-text) { | ||
| 297 | font-size: 28rpx !important; | ||
| 298 | } | ||
| 299 | |||
| 300 | :deep(.uni-input-input) { | ||
| 301 | font-size: 30rpx !important; | ||
| 302 | } | ||
| 303 | </style> | 516 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -10,6 +10,7 @@ | ... | @@ -10,6 +10,7 @@ |
| 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 :class="{ |
| 13 | 'text-primary':item.status=='1', | ||
| 13 | 'text-success':item.status=='2', | 14 | 'text-success':item.status=='2', |
| 14 | 'text-danger':item.status=='3', | 15 | 'text-danger':item.status=='3', |
| 15 | 'text-warning':item.status=='4' | 16 | 'text-warning':item.status=='4' | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view> | 2 | <view> |
| 3 | <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" | ||
| 4 | styleType="text" activeColor="#AD181F"></uni-segmented-control> | ||
| 3 | 5 | ||
| 6 | <view class="appList"> | ||
| 7 | <view class="appItem" v-for="item in infoList"> | ||
| 8 | <view class="status" @click="goDetail(item)"> | ||
| 9 | <text :class="{ | ||
| 10 | 'text-primary':item.auditStatus=='0', | ||
| 11 | 'text-success':item.auditStatus=='1', | ||
| 12 | 'text-danger':item.auditStatus=='2', | ||
| 13 | 'text-warning':item.auditStatus=='3' | ||
| 14 | }">{{ item.statusStr }}</text> | ||
| 15 | </view> | ||
| 16 | |||
| 17 | <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> | ||
| 18 | <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> | ||
| 19 | <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}} 至 {{item.endTime.substring(0,16)}}</view> | ||
| 20 | <view class="flexbox" @click="goDetail(item)"> | ||
| 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.pass}}</view> | ||
| 32 | </view> | ||
| 33 | </view> | ||
| 34 | <view class="func" v-if="item.auditStatus=='0'"> | ||
| 35 | <button @click="audit(item,'2')">拒绝</button> | ||
| 36 | <button @click="audit(item,'1')">同意</button> | ||
| 37 | </view> | ||
| 38 | </view> | ||
| 39 | </view> | ||
| 40 | |||
| 41 | |||
| 42 | |||
| 43 | <view class="nodata" v-if="infoList.length==0"> | ||
| 44 | <image mode="aspectFit" src="/static/nodata.png"></image> | ||
| 45 | <text>暂无数据</text> | ||
| 46 | </view> | ||
| 4 | </view> | 47 | </view> |
| 5 | </template> | 48 | </template> |
| 6 | 49 | ||
| 7 | <script setup> | 50 | <script setup> |
| 51 | import * as api from '@/common/api.js' | ||
| 52 | import config from '@/config.js' | ||
| 53 | import _ from 'lodash' | ||
| 54 | import { | ||
| 55 | onMounted, | ||
| 56 | ref | ||
| 57 | } from 'vue' | ||
| 58 | import { | ||
| 59 | onLoad, | ||
| 60 | onShow | ||
| 61 | } from '@dcloudio/uni-app' | ||
| 62 | const app = getApp(); | ||
| 63 | const queryParams = ref({ | ||
| 64 | // pageNum: 1, | ||
| 65 | // pageSize: 10 | ||
| 66 | status: '0', | ||
| 67 | type: '1' | ||
| 68 | }) | ||
| 69 | const navs = ref(['审核中', '审核通过', '审核拒绝']) | ||
| 70 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] | ||
| 71 | const current = ref() | ||
| 72 | const infoList = ref([]) | ||
| 73 | const total = ref(0) | ||
| 74 | const deptType = ref('') | ||
| 75 | onLoad(() => { | ||
| 8 | 76 | ||
| 77 | }) | ||
| 78 | onShow(() => { | ||
| 79 | if (app.globalData.isLogin) { | ||
| 80 | init() | ||
| 81 | } else { | ||
| 82 | |||
| 83 | app.firstLoadCallback = () => { | ||
| 84 | init() | ||
| 85 | }; | ||
| 86 | } | ||
| 87 | }) | ||
| 88 | |||
| 89 | function init() { | ||
| 90 | uni.showLoading({ | ||
| 91 | title: '加载中' | ||
| 92 | }) | ||
| 93 | deptType.value = app.globalData.deptType | ||
| 94 | getList() | ||
| 95 | } | ||
| 96 | |||
| 97 | |||
| 98 | function getList() { | ||
| 99 | api.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.remark = r.remark | ||
| 110 | item.isView = r.isView | ||
| 111 | item.sourceData = r | ||
| 112 | item.auditProcess = r.auditProcess | ||
| 113 | list.push(item) | ||
| 114 | }) | ||
| 115 | infoList.value = list | ||
| 116 | total.value = res.total | ||
| 117 | }) | ||
| 118 | } | ||
| 119 | |||
| 120 | function onClickItem(e) { | ||
| 121 | console.log(e) | ||
| 122 | uni.showLoading({ | ||
| 123 | title: '加载中' | ||
| 124 | }) | ||
| 125 | queryParams.value.status = e.currentIndex | ||
| 126 | getList() | ||
| 127 | } | ||
| 128 | |||
| 129 | function goDetail(item) { | ||
| 130 | if(item.status!='0'){ | ||
| 131 | let path = `/pages/level/applyDetail?examId=${item.examId}` | ||
| 132 | uni.navigateTo({ | ||
| 133 | url: path | ||
| 134 | }); | ||
| 135 | } else { | ||
| 136 | return | ||
| 137 | } | ||
| 138 | |||
| 139 | } | ||
| 140 | |||
| 141 | function audit(item, flag) { | ||
| 142 | console.log(item.sourceData) | ||
| 143 | var obj = { | ||
| 144 | flag: flag, | ||
| 145 | reason: null, | ||
| 146 | body: [JSON.stringify(item.sourceData)] | ||
| 147 | } | ||
| 148 | |||
| 149 | if (flag == '2') { | ||
| 150 | // 拒绝 | ||
| 151 | // 弹出框填写理由 | ||
| 152 | uni.showModal({ | ||
| 153 | title: '请输入拒绝理由', | ||
| 154 | editable: true, | ||
| 155 | success: function(res) { | ||
| 156 | if (res.confirm) { | ||
| 157 | if (!res.content) { | ||
| 158 | uni.showToast({ | ||
| 159 | title: '请输入拒绝理由', | ||
| 160 | icon: 'none' | ||
| 161 | }) | ||
| 162 | } else { | ||
| 163 | obj.reason = res.content | ||
| 164 | doApproval(obj) | ||
| 165 | } | ||
| 166 | } | ||
| 167 | } | ||
| 168 | }) | ||
| 169 | } else if (flag == '1') { | ||
| 170 | // 二次确认 | ||
| 171 | uni.showModal({ | ||
| 172 | title: '提示', | ||
| 173 | content: `确定审批通过吗`, | ||
| 174 | success: function(res) { | ||
| 175 | if (res.confirm) { | ||
| 176 | doApproval(obj) | ||
| 177 | } | ||
| 178 | } | ||
| 179 | }) | ||
| 180 | } | ||
| 181 | } | ||
| 182 | |||
| 183 | function doApproval(obj) { | ||
| 184 | console.log(obj) | ||
| 185 | api.doVerity(obj).then((res) => { | ||
| 186 | uni.showToast({ | ||
| 187 | title: '操作成功', | ||
| 188 | icon: 'none' | ||
| 189 | }) | ||
| 190 | getList() | ||
| 191 | }) | ||
| 192 | } | ||
| 9 | </script> | 193 | </script> |
| 10 | 194 | ||
| 11 | <style lang="scss"> | ||
| 12 | 195 | ||
| 196 | <style scoped> | ||
| 197 | .searchbar { | ||
| 198 | display: flex; | ||
| 199 | align-items: center; | ||
| 200 | padding: 25rpx; | ||
| 201 | box-sizing: border-box; | ||
| 202 | |||
| 203 | :deep(.uni-easyinput .uni-easyinput__content) { | ||
| 204 | border-radius: 35rpx; | ||
| 205 | border: none; | ||
| 206 | height: 70rpx; | ||
| 207 | } | ||
| 208 | |||
| 209 | :deep(.uni-easyinput__content-input) { | ||
| 210 | font-size: 26rpx; | ||
| 211 | } | ||
| 212 | |||
| 213 | .invertedbtn-red { | ||
| 214 | border-radius: 50px; | ||
| 215 | background-color: #fff; | ||
| 216 | |||
| 217 | font-size: 30rpx; | ||
| 218 | padding: 10rpx 20rpx; | ||
| 219 | } | ||
| 220 | } | ||
| 221 | |||
| 222 | .mt0 { | ||
| 223 | margin-top: 0 !important; | ||
| 224 | } | ||
| 225 | |||
| 226 | .appList .appItem .name { | ||
| 227 | width: 80%; | ||
| 228 | word-break: break-all; | ||
| 229 | } | ||
| 13 | </style> | 230 | </style> | ... | ... |
| ... | @@ -9,7 +9,7 @@ | ... | @@ -9,7 +9,7 @@ |
| 9 | <view class="userlist"> | 9 | <view class="userlist"> |
| 10 | <view class="item" v-for="n in list"> | 10 | <view class="item" v-for="n in list"> |
| 11 | <view class="photobox"> | 11 | <view class="photobox"> |
| 12 | <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> | 12 | <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image> |
| 13 | <view class="colorful" v-else>{{n.name.slice(1,2)}}</view> | 13 | <view class="colorful" v-else>{{n.name.slice(1,2)}}</view> |
| 14 | </view> | 14 | </view> |
| 15 | <view> | 15 | <view> | ... | ... |
| ... | @@ -10,7 +10,7 @@ | ... | @@ -10,7 +10,7 @@ |
| 10 | <view class="userlist"> | 10 | <view class="userlist"> |
| 11 | <view class="item" v-for="n in list"> | 11 | <view class="item" v-for="n in list"> |
| 12 | <view class="photobox"> | 12 | <view class="photobox"> |
| 13 | <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> | 13 | <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image> |
| 14 | <view class="colorful" v-else>{{n.personName?.slice(0,1)}}</view> | 14 | <view class="colorful" v-else>{{n.personName?.slice(0,1)}}</view> |
| 15 | </view> | 15 | </view> |
| 16 | <view> | 16 | <view> | ... | ... |
| ... | @@ -12,7 +12,7 @@ | ... | @@ -12,7 +12,7 @@ |
| 12 | <view class="content-box" @click="handleInfo(n)"> | 12 | <view class="content-box" @click="handleInfo(n)"> |
| 13 | <view class="flexbox"> | 13 | <view class="flexbox"> |
| 14 | <view class="photobox"> | 14 | <view class="photobox"> |
| 15 | <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> | 15 | <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image> |
| 16 | <view class="colorful" v-else>{{n.name.slice(0,1)}}</view> | 16 | <view class="colorful" v-else>{{n.name.slice(0,1)}}</view> |
| 17 | </view> | 17 | </view> |
| 18 | <view> | 18 | <view> | ... | ... |
| ... | @@ -9,7 +9,7 @@ | ... | @@ -9,7 +9,7 @@ |
| 9 | <view class="userlist"> | 9 | <view class="userlist"> |
| 10 | <view class="item" v-for="n in list"> | 10 | <view class="item" v-for="n in list"> |
| 11 | <view class="photobox"> | 11 | <view class="photobox"> |
| 12 | <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> | 12 | <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image> |
| 13 | <view class="colorful" v-else>{{n.personName?.slice(0,1)}}</view> | 13 | <view class="colorful" v-else>{{n.personName?.slice(0,1)}}</view> |
| 14 | </view> | 14 | </view> |
| 15 | <view> | 15 | <view> | ... | ... |
| ... | @@ -15,7 +15,7 @@ | ... | @@ -15,7 +15,7 @@ |
| 15 | <image class="icon" v-else src="@/static/member/dx.png" /> | 15 | <image class="icon" v-else src="@/static/member/dx.png" /> |
| 16 | </view> | 16 | </view> |
| 17 | <view class="photobox"> | 17 | <view class="photobox"> |
| 18 | <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> | 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> | 19 | <view class="colorful" v-else>{{n.name.slice(0,1)}}</view> |
| 20 | </view> | 20 | </view> |
| 21 | <view @click="handleInfo(n)"> | 21 | <view @click="handleInfo(n)"> | ... | ... |
-
Please register or sign in to post a comment