no message
Showing
4 changed files
with
93 additions
and
198 deletions
| ... | @@ -477,6 +477,23 @@ function getVerityMergeList(params) { | ... | @@ -477,6 +477,23 @@ function getVerityMergeList(params) { |
| 477 | params: params | 477 | params: params |
| 478 | }) | 478 | }) |
| 479 | } | 479 | } |
| 480 | function doMergeFlows(params) { | ||
| 481 | return request({ | ||
| 482 | url: `/exam/info/submit/mergeFlows`, | ||
| 483 | method: 'post', | ||
| 484 | params: params | ||
| 485 | }) | ||
| 486 | } | ||
| 487 | function getMergePaymentInfo(mergeId) { | ||
| 488 | return request({ | ||
| 489 | url: '/exam/info/mergeDetail/list', | ||
| 490 | method: 'get', | ||
| 491 | params: { | ||
| 492 | mergeId: mergeId | ||
| 493 | } | ||
| 494 | }) | ||
| 495 | } | ||
| 496 | |||
| 480 | export { | 497 | export { |
| 481 | getMessage, | 498 | getMessage, |
| 482 | reader, | 499 | reader, |
| ... | @@ -522,5 +539,5 @@ export { | ... | @@ -522,5 +539,5 @@ export { |
| 522 | groupCommitPaymentVoucher,getFeeBillById, | 539 | groupCommitPaymentVoucher,getFeeBillById, |
| 523 | personalCommit, | 540 | personalCommit, |
| 524 | delPayment,editYear,addPersonPaymentGroup, | 541 | delPayment,editYear,addPersonPaymentGroup, |
| 525 | commitRenew,getVerityMergeList | 542 | commitRenew,getVerityMergeList,doMergeFlows,getMergePaymentInfo |
| 526 | } | 543 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -408,6 +408,15 @@ | ... | @@ -408,6 +408,15 @@ |
| 408 | 408 | ||
| 409 | } | 409 | } |
| 410 | ,{ | 410 | ,{ |
| 411 | "path" : "pages/level/mergeUpDetail", | ||
| 412 | "style" : | ||
| 413 | { | ||
| 414 | "navigationBarTitleText": "考试详情", | ||
| 415 | "enablePullDownRefresh": false | ||
| 416 | } | ||
| 417 | |||
| 418 | } | ||
| 419 | ,{ | ||
| 411 | "path" : "pages/group/apply/mergeUpDetail", | 420 | "path" : "pages/group/apply/mergeUpDetail", |
| 412 | "style" : | 421 | "style" : |
| 413 | { | 422 | { | ... | ... |
| ... | @@ -139,18 +139,18 @@ | ... | @@ -139,18 +139,18 @@ |
| 139 | function handleAudit(item) { | 139 | function handleAudit(item) { |
| 140 | uni.showModal({ | 140 | uni.showModal({ |
| 141 | title: '提示', | 141 | title: '提示', |
| 142 | content: `确定提交${item.content.certName}吗`, | 142 | content: `确定提交${item.mergeName}?`, |
| 143 | success: function(res) { | 143 | success: function(res) { |
| 144 | if (res.confirm) { | 144 | if (res.confirm) { |
| 145 | api.groupAudit({ | 145 | api.doMergeFlows({ |
| 146 | id: item.recordId, | ||
| 146 | flag: '1', | 147 | flag: '1', |
| 147 | recordIds: [item.recordId], | 148 | type: queryParams.value.type |
| 148 | reason: null | ||
| 149 | }).then(res => { | 149 | }).then(res => { |
| 150 | getList() | ||
| 151 | uni.showToast({ | 150 | uni.showToast({ |
| 152 | title: `操作成功!` | 151 | title: `操作成功!` |
| 153 | }) | 152 | }) |
| 153 | getList() | ||
| 154 | }) | 154 | }) |
| 155 | } | 155 | } |
| 156 | } | 156 | } |
| ... | @@ -160,7 +160,7 @@ | ... | @@ -160,7 +160,7 @@ |
| 160 | function goDetail(item) { | 160 | function goDetail(item) { |
| 161 | const form = encodeURIComponent(JSON.stringify(item)) | 161 | const form = encodeURIComponent(JSON.stringify(item)) |
| 162 | // 查看 | 162 | // 查看 |
| 163 | let path = `/pages/level/mergeUpDetail?&form=${form}` | 163 | let path = `/pages/level/mergeUpDetail?form=${form}&type=1` |
| 164 | uni.navigateTo({ | 164 | uni.navigateTo({ |
| 165 | url: path | 165 | url: path |
| 166 | }); | 166 | }); | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view class="hasfixedbottom"> | ||
| 3 | <view class="wBox"> | ||
| 4 | <view class="tt">{{form.content.certName}}</view> | ||
| 5 | <view> | 2 | <view> |
| 6 | <view class="date" v-if="form.content.commitTime">提交日期:<text>{{ form.content.commitTime }}</text> | 3 | <view class="wBox"> |
| 4 | <view class="tt">基本信息</view> | ||
| 5 | <view class="ddd"> | ||
| 6 | <text class="lab">结算编号:</text>{{ form.flowCode }} | ||
| 7 | </view> | 7 | </view> |
| 8 | <view class="date">提交单位:<text>{{ form.content.memberName }}</text> </view> | 8 | <view class="ddd"> |
| 9 | <text class="lab">{{ type=='1'?'考级名称':'考段名称' }}:</text>{{form.mergeName}} | ||
| 9 | </view> | 10 | </view> |
| 10 | <view class="vipData mt30" style="flex-wrap: wrap;"> | 11 | <view class="ddd"> |
| 11 | <view class="w50"> | 12 | <text class="lab">申请单位:</text>{{ form.memName }} |
| 12 | 团队会员合计: | ||
| 13 | <text>{{ form.content.allCount }}个</text> | ||
| 14 | </view> | 13 | </view> |
| 15 | <view class="w50"> | 14 | <view class="ddd" v-if="form.mergeTime"> |
| 16 | 新会员合计: | 15 | <text class="lab">申请日期:</text>{{form.mergeTime?.slice(0,10)}} |
| 17 | <text>{{ form.content.newCount }}个</text> | ||
| 18 | </view> | 16 | </view> |
| 19 | <view class="w50"> | 17 | <view class="ddd"> |
| 20 | 年限合计: | 18 | <text class="lab">{{ type=='1'?'考级人数':'考段人数' }}:</text>{{form.totalNum}} |
| 21 | <text>{{ form.content.renewYear }}年</text> | ||
| 22 | </view> | 19 | </view> |
| 23 | <view class="w50"> | 20 | <view class="ddd"> |
| 24 | 费用合计: | 21 | <text class="lab">总金额:</text>{{ (form.totalAmount*1).toFixed(2) }} |
| 25 | <text>{{ (form.content.allFee*1).toFixed(2) }}元</text> | ||
| 26 | </view> | 22 | </view> |
| 27 | </view> | 23 | </view> |
| 28 | 24 | <view class="wBox"> | |
| 29 | <!-- 成员 --> | 25 | <view class="tt"> |
| 30 | <view class="userlist"> | 26 | 考试信息 |
| 31 | <view class="item" v-for="n in list"> | ||
| 32 | <view style="width: 100%"> | ||
| 33 | <view class="name">{{n.memberName}}</view> | ||
| 34 | <view class="date">单位类型: | ||
| 35 | <text v-if="n.deptType==2">一级协会</text> | ||
| 36 | <text v-if="n.deptType==3">直属协会</text> | ||
| 37 | <text v-if="n.deptType==4">二级协会</text> | ||
| 38 | <text v-if="n.deptType==5">三级协会</text> | ||
| 39 | <text v-if="n.deptType==6">职业性团体会员</text> | ||
| 40 | </view> | 27 | </view> |
| 28 | <view class="userlist"> | ||
| 29 | <view class="item" v-for="n in infoList" @click="goDetail(n)" style="background-color: #fffafa;"> | ||
| 30 | <view class="w100"> | ||
| 31 | <view class="name">{{n.name}}</view> | ||
| 32 | <!-- <view class="date">{{n.idcTypeStr}}:{{n.idcCode}}</view> --> | ||
| 41 | <view class="flexbox"> | 33 | <view class="flexbox"> |
| 42 | <view> | 34 | <view> |
| 43 | 单价 | 35 | 上报单位 |
| 44 | <text>¥{{n.unitPrice}}</text> | 36 | <text>{{n.memberName}}</text> |
| 45 | </view> | ||
| 46 | <view> | ||
| 47 | 年限 | ||
| 48 | <text>{{n.renewYear}}</text> | ||
| 49 | </view> | 37 | </view> |
| 50 | <view> | 38 | <view> |
| 51 | 总价 | 39 | {{type=='1'?'考级考生数':'考段考生数'}} |
| 52 | <text>¥{{n.allFee}}</text> | 40 | <text> |
| 53 | </view> | 41 | {{n.totalNum}} |
| 42 | </text> | ||
| 54 | </view> | 43 | </view> |
| 44 | <view v-if="app.globalData.showPrice"> | ||
| 45 | 金额 | ||
| 46 | <text> | ||
| 47 | {{ (n.examFee * 1).toFixed(2) }} | ||
| 48 | </text> | ||
| 55 | </view> | 49 | </view> |
| 50 | <view> | ||
| 51 | 金额 | ||
| 52 | <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text> | ||
| 56 | </view> | 53 | </view> |
| 57 | </view> | 54 | </view> |
| 58 | |||
| 59 | </view> | 55 | </view> |
| 60 | 56 | ||
| 61 | <view class="h3-padding">审核记录</view> | ||
| 62 | <view class="wBox"> | ||
| 63 | <view class="stepItem" v-for="(n,index) in auditList"> | ||
| 64 | <view class="time">{{n.handleDate||'待审批'}}</view> | ||
| 65 | <view class="content"> | ||
| 66 | <view class="status"> | ||
| 67 | <text v-if="n.auditStatus==1" class="text-success">审核通过</text> | ||
| 68 | <text v-if="n.auditStatus==2" class="text-danger"> 审核拒绝</text> | ||
| 69 | <text v-if="n.auditStatus==0" class="text-primary"> 审核中</text> | ||
| 70 | <text v-if="n.auditStatus==3" class="text-warning">已撤回</text> | ||
| 71 | <text v-if="n.auditStatus==100" class="text-primary">审核中</text> | ||
| 72 | |||
| 73 | </view> | ||
| 74 | <!-- <view class="name">第 {{index+1}} 步</view> --> | ||
| 75 | <view class="deptName">{{n.handlerDeptName}}</view> | ||
| 76 | <view v-if="n.reason"> | ||
| 77 | 备注:{{n.reason||'/' }} | ||
| 78 | </view> | ||
| 79 | </view> | 57 | </view> |
| 80 | </view> | 58 | </view> |
| 81 | </view> | ||
| 82 | |||
| 83 | <view class="fixedBottom" v-if="(deptType == 1)&&form.ztxRes == 0"> | ||
| 84 | <button class="btn-red-kx" @click="audit(form.id,'2')">拒绝</button> | ||
| 85 | <button class="btn-red" @click="audit(form.id,'1')">同意</button> | ||
| 86 | </view> | ||
| 87 | 59 | ||
| 88 | <view class="fixedBottom" v-if="(deptType == 2 || deptType == 3)&&form.shenRes == 0"> | ||
| 89 | <button class="btn-red-kx" @click="audit(form.id,'2')">拒绝</button> | ||
| 90 | <button class="btn-red" @click="audit(form.id,'1')">同意</button> | ||
| 91 | </view> | 60 | </view> |
| 92 | |||
| 93 | </view> | 61 | </view> |
| 94 | </template> | 62 | </template> |
| 95 | 63 | ||
| 96 | <script setup> | 64 | <script setup> |
| 97 | import * as api from '@/common/api.js' | 65 | import * as api from '@/common/api.js' |
| 98 | import config from '@/config.js' | 66 | import config from '@/config.js' |
| 67 | import _ from 'lodash' | ||
| 99 | import { | 68 | import { |
| 100 | onMounted, | 69 | onMounted, |
| 101 | ref | 70 | ref |
| ... | @@ -110,22 +79,15 @@ | ... | @@ -110,22 +79,15 @@ |
| 110 | 79 | ||
| 111 | const form = ref({}) | 80 | const form = ref({}) |
| 112 | const list = ref([]) | 81 | const list = ref([]) |
| 113 | const listArr = ref([]) | 82 | const infoList = ref([]) |
| 114 | const id = ref() | ||
| 115 | const auditList = ref([]) | ||
| 116 | |||
| 117 | const feelList = ref([]) | ||
| 118 | const total = ref(0) | ||
| 119 | const totalYear = ref(0) | ||
| 120 | const deptType = ref() | 83 | const deptType = ref() |
| 84 | const type = ref(null) | ||
| 121 | let rangeId = '' | 85 | let rangeId = '' |
| 122 | onLoad((option) => { | 86 | onLoad((option) => { |
| 123 | if ('form' in option) { | 87 | if ('form' in option) { |
| 124 | form.value = JSON.parse(decodeURIComponent(option.form)) | 88 | form.value = JSON.parse(decodeURIComponent(option.form)) |
| 125 | } | 89 | } |
| 126 | list.value = form.content?.certifiedSimpleList || [] | 90 | type.value = option.type |
| 127 | listArr.value = form.content?.certifiedSimpleList || [] | ||
| 128 | queryParams.value.recordId = form.value.recordId | ||
| 129 | console.log(form.value) | 91 | console.log(form.value) |
| 130 | if (app.globalData.isLogin) { | 92 | if (app.globalData.isLogin) { |
| 131 | init() | 93 | init() |
| ... | @@ -147,141 +109,48 @@ | ... | @@ -147,141 +109,48 @@ |
| 147 | uni.showLoading({ | 109 | uni.showLoading({ |
| 148 | title: '加载中' | 110 | title: '加载中' |
| 149 | }) | 111 | }) |
| 150 | api.getDetailList(queryParams.value).then(res => { | 112 | api.getMergePaymentInfo(form.value.recordId).then(res => { |
| 151 | uni.hideLoading() | 113 | _.each(res.data, (r) => { |
| 152 | list.value = res.rows | 114 | const item = JSON.parse(r.content) |
| 153 | list.value[0].rangeId == 0 ? id.value = list.value[0].certId : id.value = list.value[0].rangeId | 115 | item.recordId = r.recordId |
| 154 | if (id.value) { | 116 | infoList.value.push(item) |
| 155 | auditFN() | ||
| 156 | } | ||
| 157 | }) | 117 | }) |
| 158 | } | 118 | form.value.totalNum = Math.floor(_.sumBy(infoList.value, (o) => parseFloat(o.totalNum || 0))) |
| 119 | form.value.totalAmount = Math.floor(_.sumBy(infoList.value, (o) => parseFloat(o.totalAmount || 0))) | ||
| 159 | 120 | ||
| 160 | function auditFN() { | 121 | uni.hideLoading() |
| 161 | api.getGroupHistoryByRelateId(id.value).then(res => { | ||
| 162 | auditList.value = res.data | ||
| 163 | }) | ||
| 164 | } | ||
| 165 | 122 | ||
| 166 | function audit(rangeId, flag) { | ||
| 167 | if (flag == '2') { | ||
| 168 | // 拒绝 | ||
| 169 | // 弹出框填写理由 | ||
| 170 | uni.showModal({ | ||
| 171 | title: '请输入拒绝理由', | ||
| 172 | editable: true, | ||
| 173 | success: function(res) { | ||
| 174 | if (res.confirm) { | ||
| 175 | if (!res.content) { | ||
| 176 | uni.showToast({ | ||
| 177 | title: '请输入拒绝理由', | ||
| 178 | icon: 'none' | ||
| 179 | }) | ||
| 180 | } else { | ||
| 181 | doApproval(rangeId, flag, res.content) | ||
| 182 | } | ||
| 183 | } | ||
| 184 | } | ||
| 185 | }) | ||
| 186 | } else if (flag == '1') { | ||
| 187 | // 二次确认 | ||
| 188 | uni.showModal({ | ||
| 189 | title: '提示', | ||
| 190 | content: `确定审批通过吗`, | ||
| 191 | success: function(res) { | ||
| 192 | if (res.confirm) { | ||
| 193 | doApproval(rangeId, flag) | ||
| 194 | } | ||
| 195 | } | ||
| 196 | }) | 123 | }) |
| 197 | } | 124 | } |
| 198 | } | ||
| 199 | 125 | ||
| 200 | function doApproval(rangeId, flag, reason) { | 126 | function goDetail(item){ |
| 201 | var obj = { | 127 | // examId |
| 202 | flag: flag, | 128 | let path = `/pages/level/applyDetail?examId=${item.examId}` |
| 203 | reason: reason || '', | 129 | uni.navigateTo({ |
| 204 | rangeIds: rangeIds | 130 | url: path |
| 205 | } | 131 | }); |
| 206 | console.log(obj) | 132 | } |
| 207 | api.mobilizeAudit(obj).then((res) => { | ||
| 208 | uni.showToast({ | ||
| 209 | title: '操作成功', | ||
| 210 | icon: 'none' | ||
| 211 | }) | ||
| 212 | uni.navigateBack() | ||
| 213 | }) | ||
| 214 | } | ||
| 215 | </script> | 133 | </script> |
| 216 | 134 | ||
| 217 | <style scoped lang="scss"> | 135 | <style scoped lang="scss"> |
| 218 | .date { | ||
| 219 | margin-top: 10rpx; | ||
| 220 | font-size: 26rpx; | ||
| 221 | color: #999; | ||
| 222 | } | ||
| 223 | |||
| 224 | .wBox { | 136 | .wBox { |
| 225 | width: 700rpx; | 137 | width: 700rpx; |
| 226 | padding: 30rpx; | 138 | padding: 30rpx; |
| 227 | margin: 20rpx auto 0; | 139 | margin: 20rpx auto; |
| 228 | background: #FFFFFF; | 140 | background: #FFFFFF; |
| 229 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | 141 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); |
| 230 | border-radius: 15rpx; | 142 | border-radius: 15rpx; |
| 231 | 143 | ||
| 232 | .tt { | 144 | .tt { |
| 233 | color: #0A1629; | 145 | color: #0A1629;margin: 0 0 30rpx; |
| 234 | font-size: 30rpx; | 146 | font-size: 30rpx; |
| 235 | } | 147 | } |
| 236 | } | ||
| 237 | |||
| 238 | .userlist { | ||
| 239 | .item { | ||
| 240 | border-bottom: 1px dashed #e5e5e5; | ||
| 241 | position: relative; | ||
| 242 | 148 | ||
| 243 | .date { | 149 | .ddd{font-size: 28rpx;color: #333; |
| 244 | margin-top: 10rpx; | 150 | .lab{color: #999;display: inline-block;text-align: justify; |
| 151 | text{word-break: break-all;} | ||
| 245 | } | 152 | } |
| 246 | |||
| 247 | .name { | ||
| 248 | text { | ||
| 249 | margin-left: 1em; | ||
| 250 | color: #4C5359; | ||
| 251 | font-size: 26rpx; | ||
| 252 | } | 153 | } |
| 253 | } | 154 | } |
| 254 | 155 | ||
| 255 | .nian { | ||
| 256 | position: absolute; | ||
| 257 | right: 0; | ||
| 258 | font-size: 30rpx; | ||
| 259 | color: #AD181F; | ||
| 260 | } | ||
| 261 | } | ||
| 262 | } | ||
| 263 | |||
| 264 | .info { | ||
| 265 | display: flex; | ||
| 266 | margin: 30rpx 0 20rpx; | ||
| 267 | font-size: 28rpx; | ||
| 268 | |||
| 269 | view { | ||
| 270 | color: #7D8592; | ||
| 271 | margin-right: 20rpx; | ||
| 272 | } | ||
| 273 | } | ||
| 274 | |||
| 275 | .fixedBottom { | ||
| 276 | justify-content: center; | ||
| 277 | |||
| 278 | button { | ||
| 279 | margin: 0 20rpx; | ||
| 280 | width: 286rpx; | ||
| 281 | } | ||
| 282 | |||
| 283 | .btn-red { | ||
| 284 | width: 286rpx; | ||
| 285 | } | ||
| 286 | } | ||
| 287 | </style> | 156 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or sign in to post a comment