5e2c88c5 by 杨炀

no message

1 parent f9c6474d
...@@ -370,8 +370,113 @@ function doVerity(data) { ...@@ -370,8 +370,113 @@ function doVerity(data) {
370 params: data 370 params: data
371 }) 371 })
372 } 372 }
373 373 function mergeRecords(data) {
374 374 return request({
375 url: '/exam/info/mergeRecords',
376 method: 'post',
377 params: data
378 })
379 }
380 function groupAudit(data) {
381 return request({
382 url: '/member/certified/audit',
383 method: 'post',
384 params: data
385 })
386 }
387 function groupMergeApi(data) {
388 return request({
389 url: `/member/certified/merge`,
390 method: 'post',
391 params:data
392 })
393 }
394 function getDetailList(data) {
395 return request({
396 url: `/member/certified/getDetailList`,
397 method: 'get',
398 params: data
399 })
400 }
401 function getPayList(data) {
402 return request({
403 url: `/member/certifiedRange/list`,
404 method: 'get',
405 params: data
406 })
407 }
408 function getFillAuditLog(rangeId) {
409 return request({
410 url: `/member/certifiedRange/fillAuditLog/${rangeId}`,
411 method: 'get'
412 })
413 }
414 function commitGroupPay(rangeId) {
415 return request({
416 url: `/member/certifiedRange/commit/${rangeId}`,
417 method: 'post'
418 })
419 }
420 function getGroupFeeBill(query) {
421 return request({
422 url: '/member/certifiedDoc/list',
423 method: 'get',
424 params: query
425 })
426 }
427 function groupCommitPaymentVoucher(data) {
428 return request({
429 url: '/member/certifiedDoc/commitPaymentVoucher',
430 method: 'post',
431 params: data
432 })
433 }
434 function getFeeBillById(id) {
435 return request({
436 url: `/member/certifiedDoc/${id}`,
437 method: 'get'
438 })
439 }
440 function personalCommit(id) {
441 return request({
442 url: `/person/paymentRange/commit/${id}`,
443 method: 'post',
444 params: id
445 })
446 }
447 function delPayment(payIds) {
448 return request({
449 url: `/person/payment/${payIds}`,
450 method: 'DELETE'
451 })
452 }
453 function editYear(id, year) {
454 return request({
455 url: `/person/payment/editYear/${id}`,
456 method: 'get',
457 params: { year: year }
458 })
459 }
460 function addPersonPaymentGroup(data) {
461 return request({
462 url: `/person/payment/addPersonPaymentGroup`,
463 method: 'post',
464 params: data
465 })
466 }
467 function commitRenew(id) {
468 return request({
469 url: `/person/paymentRange/commit/${id}`,
470 method: 'post'
471 })
472 }
473 function getVerityMergeList(params) {
474 return request({
475 url: '/exam/info/verityMergeList',
476 method: 'get',
477 params: params
478 })
479 }
375 export { 480 export {
376 getMessage, 481 getMessage,
377 reader, 482 reader,
...@@ -410,5 +515,12 @@ export { ...@@ -410,5 +515,12 @@ export {
410 updateLevelInfo,addLevelInfo, 515 updateLevelInfo,addLevelInfo,
411 chooseStudentsList,batchChoose,getVerityList, 516 chooseStudentsList,batchChoose,getVerityList,
412 getGroupHistoryByRelateId, 517 getGroupHistoryByRelateId,
413 createMyMember,doVerity 518 createMyMember,doVerity,mergeRecords,
519 groupAudit,groupMergeApi,
520 getDetailList,getPayList,
521 getFillAuditLog,commitGroupPay,getGroupFeeBill,
522 groupCommitPaymentVoucher,getFeeBillById,
523 personalCommit,
524 delPayment,editYear,addPersonPaymentGroup,
525 commitRenew,getVerityMergeList
414 } 526 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -3,9 +3,13 @@ page { ...@@ -3,9 +3,13 @@ page {
3 overflow: auto; 3 overflow: auto;
4 background: #f5f7f9; 4 background: #f5f7f9;
5 } 5 }
6 .w50{width: 50%;}
7 .w100{width: 100%;}
8 .vipData .w50{width: 45%;}
6 .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;} 9 .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
7 .flexbox{display: flex;} 10 .flexbox{display: flex;}
8 .mt30{margin-top: 30rpx;} 11 .mt30{margin-top: 30rpx;}
12 .mtb30{margin: 30rpx 0;}
9 .mt40{margin-top: 40rpx;} 13 .mt40{margin-top: 40rpx;}
10 .mt50{margin-top: 50rpx;} 14 .mt50{margin-top: 50rpx;}
11 .align-forms-item-placeHolder{color: #999;line-height: 2.6;} 15 .align-forms-item-placeHolder{color: #999;line-height: 2.6;}
...@@ -109,6 +113,7 @@ font-size: 30rpx!important;} ...@@ -109,6 +113,7 @@ font-size: 30rpx!important;}
109 .appItem{background: #FFFFFF;padding: 30rpx;margin-bottom: 30rpx; 113 .appItem{background: #FFFFFF;padding: 30rpx;margin-bottom: 30rpx;
110 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196,203,214,0.1); 114 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196,203,214,0.1);
111 border-radius: 15rpx;position: relative; 115 border-radius: 15rpx;position: relative;
116 .iconbox{position: absolute;left: 20rpx;}
112 .pp{font-size: 28rpx;color: #666;margin-bottom: 10rpx;} 117 .pp{font-size: 28rpx;color: #666;margin-bottom: 10rpx;}
113 .date{ 118 .date{
114 font-size: 28rpx; 119 font-size: 28rpx;
...@@ -343,7 +348,9 @@ border-radius: 20rpx 20rpx 0rpx 0rpx; ...@@ -343,7 +348,9 @@ border-radius: 20rpx 20rpx 0rpx 0rpx;
343 image{width: 20vw;height: 20vw;display: block;margin: auto;} 348 image{width: 20vw;height: 20vw;display: block;margin: auto;}
344 } 349 }
345 } 350 }
346 351 .block-btn-box{padding: 30rpx;
352 .btn-red-kx{line-height: 2;font-size: 30rpx;}
353 }
347 354
348 355
349 356
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
3 3
4 4
5 // staging 5 // staging
6 const baseUrl_api = "http://192.168.1.97:8787"; 6 // const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/";
7 const baseUrl_api = "http://192.168.1.95:8787";
7 const fileUrl_api = "http://192.168.1.11:8787"; 8 const fileUrl_api = "http://192.168.1.11:8787";
8 9
9 export default { 10 export default {
......
...@@ -259,6 +259,13 @@ ...@@ -259,6 +259,13 @@
259 "enablePullDownRefresh": false 259 "enablePullDownRefresh": false
260 } 260 }
261 261
262 },{
263 "path" : "pages/group/feeBill",
264 "style" :
265 {
266 "navigationBarTitleText": "团体会员缴费单",
267 "enablePullDownRefresh": false
268 }
262 } 269 }
263 ,{ 270 ,{
264 "path" : "pages/personalVip/feeBillDetail", 271 "path" : "pages/personalVip/feeBillDetail",
...@@ -268,6 +275,14 @@ ...@@ -268,6 +275,14 @@
268 "enablePullDownRefresh": false 275 "enablePullDownRefresh": false
269 } 276 }
270 277
278 } ,{
279 "path" : "pages/group/feeBillDetail",
280 "style" :
281 {
282 "navigationBarTitleText": "缴费单详情",
283 "enablePullDownRefresh": false
284 }
285
271 } 286 }
272 ,{ 287 ,{
273 "path" : "pages/personalVip/mobilize", 288 "path" : "pages/personalVip/mobilize",
...@@ -340,6 +355,30 @@ ...@@ -340,6 +355,30 @@
340 "enablePullDownRefresh": false 355 "enablePullDownRefresh": false
341 } 356 }
342 357
358 },{
359 "path" : "pages/level/merge",
360 "style" :
361 {
362 "navigationBarTitleText": "审核合并",
363 "enablePullDownRefresh": false
364 }
365
366 },{
367 "path" : "pages/group/apply/merge",
368 "style" :
369 {
370 "navigationBarTitleText": "审核合并",
371 "enablePullDownRefresh": false
372 }
373
374 },{
375 "path" : "pages/group/apply/mergeUp",
376 "style" :
377 {
378 "navigationBarTitleText": "审核合并提交",
379 "enablePullDownRefresh": false
380 }
381
343 } 382 }
344 ,{ 383 ,{
345 "path" : "pages/group/apply/applyDetail", 384 "path" : "pages/group/apply/applyDetail",
...@@ -359,6 +398,38 @@ ...@@ -359,6 +398,38 @@
359 } 398 }
360 399
361 } 400 }
401 ,{
402 "path" : "pages/level/mergeUp",
403 "style" :
404 {
405 "navigationBarTitleText": "合并提交",
406 "enablePullDownRefresh": false
407 }
408
409 }
410 ,{
411 "path" : "pages/group/apply/mergeUpDetail",
412 "style" :
413 {
414 "navigationBarTitleText": "缴费详情",
415 "enablePullDownRefresh": false
416 }
417
418 },{
419 "path" : "pages/group/pay",
420 "style" :
421 {
422 "navigationBarTitleText": "团队会员认证",
423 "enablePullDownRefresh": false
424 }
425 },{
426 "path" : "pages/group/payDetail",
427 "style" :
428 {
429 "navigationBarTitleText": "认证详情",
430 "enablePullDownRefresh": false
431 }
432 }
362 ], 433 ],
363 "globalStyle": { 434 "globalStyle": {
364 "navigationStyle": "custom", 435 "navigationStyle": "custom",
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <!-- 会员调动 --> 3 <!-- 团队会员审核 -->
4 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 4 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
5 styleType="text" activeColor="#AD181F"></uni-segmented-control> 5 styleType="text" activeColor="#AD181F"></uni-segmented-control>
6 <view class="appList"> 6 <view class="appList">
7 <view class="appItem" v-for="item in list"> 7 <view class="appItem" v-for="item in list">
8 <view class="status" @click="goDetail(item)"> 8 <view class="status" @click="goDetail(item)">
9 <text v-if="item.auditStatus == 0">审核中</text> 9 <text v-if="item.auditStatus == 0" class="text-primary">审核中</text>
10 <text v-if="item.auditStatus == 1" class="text-success">审核通过</text> 10 <text v-if="item.auditStatus == 1" class="text-success">审核通过</text>
11 <text v-if="item.auditStatus == 2" class="text-danger">审核拒绝</text> 11 <text v-if="item.auditStatus == 2" class="text-danger">审核拒绝</text>
12 <text v-if="item.auditStatus == 3" class="text-warning">审核退回</text> 12 <text v-if="item.auditStatus == 3" class="text-warning">审核退回</text>
...@@ -19,10 +19,18 @@ ...@@ -19,10 +19,18 @@
19 缴费单位 19 缴费单位
20 <view>{{ item.content.memberName }}</view> 20 <view>{{ item.content.memberName }}</view>
21 </view> 21 </view>
22 <view v-if="userType = '3'"> 22 <view v-if="userType == '3'">
23 所属省份 23 所属省份
24 <view>{{item.content.province}}</view> 24 <view>{{item.content.province}}</view>
25 </view> 25 </view>
26 <view v-if="userType == '2'">
27 所属一级
28 <view>{{item.content.firstDeptName}}</view>
29 </view>
30 <view v-if="userType == '2'">
31 所属二级
32 <view>{{item.content.secondDeptName}}</view>
33 </view>
26 <view> 34 <view>
27 年限 35 年限
28 <view>{{item.content.renewYear}}</view> 36 <view>{{item.content.renewYear}}</view>
...@@ -36,6 +44,10 @@ ...@@ -36,6 +44,10 @@
36 <view> {{ (item?.content?.allFee*1).toFixed(2) }}</view> 44 <view> {{ (item?.content?.allFee*1).toFixed(2) }}</view>
37 </view> 45 </view>
38 </view> 46 </view>
47 <view class="func" v-if="(userType == '3'||userType == '2') && item.auditStatus == 0">
48 <button @click="audit(item.recordId,'0')">拒绝</button>
49 <button @click="audit(item.recordId,'1')">同意</button>
50 </view>
39 <view class="func" v-if="(deptType == 1&&item.ztxRes == 0)||((deptType == 2 || deptType == 3)&&item.shenRes == 0)"> 51 <view class="func" v-if="(deptType == 1&&item.ztxRes == 0)||((deptType == 2 || deptType == 3)&&item.shenRes == 0)">
40 <button @click="audit(item.recordId,'0')">拒绝</button> 52 <button @click="audit(item.recordId,'0')">拒绝</button>
41 <button @click="audit(item.recordId,'1')">同意</button> 53 <button @click="audit(item.recordId,'1')">同意</button>
...@@ -46,11 +58,12 @@ ...@@ -46,11 +58,12 @@
46 </view> 58 </view>
47 </view> 59 </view>
48 60
49
50
51 <view class="nodata" v-if="list.length==0"> 61 <view class="nodata" v-if="list.length==0">
52 <image mode="aspectFit" src="/static/nodata.png"></image> 62 <image mode="aspectFit" src="/static/nodata.png"></image>
53 <text>暂无数据</text> 63 <text>暂无数据</text>
64 </view>
65 <view v-if="userType=='2'" class="block-btn-box">
66 <button @click="goMerge" class="btn-red-kx">前往合并 > </button>
54 </view> 67 </view>
55 </view> 68 </view>
56 </template> 69 </template>
...@@ -90,7 +103,8 @@ ...@@ -90,7 +103,8 @@
90 103
91 function init() { 104 function init() {
92 deptType.value = app.globalData.deptType 105 deptType.value = app.globalData.deptType
93 userType.value = app.globalData.userType 106 userType.value = app.globalData.userType
107 console.log(userType.value)
94 getList() 108 getList()
95 } 109 }
96 110
...@@ -165,7 +179,7 @@ ...@@ -165,7 +179,7 @@
165 } 179 }
166 obj.recordIds.push(recordId) 180 obj.recordIds.push(recordId)
167 console.log(obj) 181 console.log(obj)
168 api.audit(obj).then((res) => { 182 api.groupAudit(obj).then((res) => {
169 uni.showToast({ 183 uni.showToast({
170 title: '操作成功', 184 title: '操作成功',
171 icon: 'none' 185 icon: 'none'
...@@ -184,15 +198,19 @@ ...@@ -184,15 +198,19 @@
184 uni.navigateTo({ 198 uni.navigateTo({
185 url: path 199 url: path
186 }); 200 });
187 } else if(userType.value=='3'){ 201 } else if(userType.value=='2'||userType.value=='3'){
188 // 审核记录 202 // 审核记录
189 let path = `/pages/group/apply/record?certId=${item.content.certId}` 203 let path = `/pages/group/apply/record?certId=${item.content.certId}`
190 uni.navigateTo({ 204 uni.navigateTo({
191 url: path 205 url: path
192 }); 206 });
193 } 207 }
194 208 }
195 209 function goMerge(){
210 let path = `/pages/group/apply/merge`
211 uni.navigateTo({
212 url: path
213 });
196 } 214 }
197 </script> 215 </script>
198 216
......
1 <template>
2 <view class="hasfixedbottom">
3 <!-- 审批合并 -->
4 <view class="appList">
5 <view class="appItem" v-for="item in infoList">
6 <view @click="checkThis(item)" class="iconbox">
7 <image class="icon" v-if="item.checked" src="@/static/member/dx_dwn.png" />
8 <image class="icon" v-else src="@/static/member/dx.png" />
9 </view>
10 <view class="status" @click="goDetail(item)">
11 <text v-if="item.auditStatus == 0" class="text-primary">审核中</text>
12 <text v-if="item.auditStatus == 1" class="text-success">审核通过</text>
13 <text v-if="item.auditStatus == 2" class="text-danger">审核拒绝</text>
14 <text v-if="item.auditStatus == 3" class="text-warning">已撤回</text>
15 </view>
16
17 <view class="date" v-if="item.content.commitTime">提交日期:{{item.content.commitTime}}</view>
18 <view class="name mt0" @click="goDetail(item)">{{item.content.certName}}</view>
19 <view class="flexbox" @click="goDetail(item)">
20 <view>
21 缴费单位
22 <view>{{item.content.memberName}}</view>
23 </view>
24 <view v-if="item.content.validityTime">
25 原有效期
26 <view>{{item.content.validityTime}}</view>
27 </view>
28 <view>
29 年限
30 <view>{{item.content.renewYear}}</view>
31 </view>
32 </view>
33 </view>
34 </view>
35
36 <view class="fixedBottom">
37 <button @click="handleMerge" v-if="infoList.length>0" style="width: 40%;" class="btn-red">合并</button>
38 <button @click="goMergeUp" class="btn-red-kx" style="width: 40%;">合并提交 > </button>
39 </view>
40
41 <view class="nodata" v-if="infoList.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 {
53 onMounted,
54 ref
55 } from 'vue'
56 import {
57 onLoad,
58 onShow
59 } from '@dcloudio/uni-app'
60 const app = getApp();
61 const queryParams = ref({
62 // pageNum: 1,
63 // pageSize: 10
64 auditStatus: '',
65 mergeFlag: '0'
66 })
67 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
68 const infoList = ref([])
69 const batchList = ref([])
70 const total = ref(0)
71 const totalCost = ref(0)
72 const deptType = ref('')
73 onLoad(() => {
74
75 })
76 onShow(() => {
77 if (app.globalData.isLogin) {
78 init()
79 } else {
80
81 app.firstLoadCallback = () => {
82 init()
83 };
84 }
85 })
86
87 function init() {
88 uni.showLoading({
89 title: '加载中'
90 })
91 deptType.value = app.globalData.deptType
92 getList()
93 }
94
95
96 function getList() {
97 api.getGroupList(queryParams.value).then(response => {
98 infoList.value = response.rows
99 infoList.value.forEach(item => {
100 item.con = item.content
101 item.content = JSON.parse(item.content)
102 item.checked = false
103 })
104 total.value = response.total
105 uni.hideLoading()
106 })
107 }
108
109 function goDetail(item) {
110 let path = `/pages/group/apply/record?certId=${item.content.certId}`
111 uni.navigateTo({
112 url: path
113 });
114
115 }
116 function goMergeUp(){
117 // 合并提交
118 let path = `/pages/group/apply/mergeUp`
119 uni.navigateTo({
120 url: path
121 });
122 }
123 function checkThis(item) {
124 if(item.auditStatus != 1){
125 uni.showToast({
126 title:'审核未通过,无法合并',
127 icon:'error'
128 })
129 return
130 }
131 if (item.checked) {
132 item.checked = false
133 } else {
134 item.checked = true
135 }
136 }
137 var ids = []
138
139 function handleMerge() {
140 batchList.value = []
141 ids = []
142 for (var n of infoList.value) {
143 if (n.checked) {
144 batchList.value.push(n)
145 ids.push(n.recordId)
146 }
147 }
148 if (batchList.value.length == 0) {
149 uni.showToast({
150 title: `请选择至少一条数据`,
151 icon: 'none'
152 })
153 return
154 }
155 const mergeFlag = batchList.value.some(item => {
156 if (item.auditStatus != '1') {
157 return uni.showToast({
158 title: `${item.examCode}审核未通过,无法合并`,
159 icon: 'none'
160 })
161 }
162 })
163 uni.showModal({
164 title: '提示',
165 content: `确认合并已选中的数据?`,
166 success: function(res) {
167 if (res.confirm) {
168 api.groupMergeApi({
169 recordIds: ids
170 }).then(res => {
171 uni.showToast({
172 title: `操作成功`
173 })
174 getList()
175 })
176 }
177 }
178 })
179
180 }
181
182 </script>
183
184
185 <style scoped lang="scss">
186 .mt0 {
187 margin-top: 0 !important;
188 }
189 .appList .appItem{padding: 30rpx 30rpx 30rpx 120rpx;}
190 .appList .appItem .name {
191 width: 80%;
192 word-break: break-all;
193 }
194
195 .icon {
196 width: 60rpx;
197 height: 60rpx;
198 margin-right: 16rpx;
199 }
200 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <!-- 团队会员审核 -->
4 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
5 styleType="text" activeColor="#AD181F"></uni-segmented-control>
6 <view class="appList">
7 <view class="appItem" v-for="item in list">
8 <view class="status" @click="goDetail(item)">
9 <text v-if="item.status == 0" class="text-primary">审核中</text>
10 <text v-if="item.status == 1" class="text-success">审核通过</text>
11 <text v-if="item.status == 2" class="text-danger">审核拒绝</text>
12 <text v-if="item.status == 3" class="text-warning">审核撤回</text>
13 </view>
14 <view class="date">提交日期:{{item.content.commitTime}}</view>
15 <view class="date" v-if="item.content.validityTime">原有效期:{{item.content.validityTime}}</view>
16 <view class="name" @click="goDetail(item)">{{item.content.certName}}</view>
17 <view class="flexbox" @click="goDetail(item)">
18 <view>
19 年限
20 <view>{{item.content.renewYear}}</view>
21 </view>
22 <view>
23 会员合计/新会员
24 <view>{{item.content.allCount}}/<text class="text-danger">{{item.content.newCount}}</text></view>
25 </view>
26 <view>
27 费用合计
28 <view> {{ (item?.content?.allFee*1).toFixed(2) }}</view>
29 </view>
30 </view>
31
32 <view class="func" v-if="item.auditStatus == 100">
33 <button @click="handleAudit(item)">提交</button>
34 <!-- <button v-if="item.lastIds?.slice(0, 1) != '-'" @click="resolution(item)">取消合并</button> -->
35 </view>
36 </view>
37 </view>
38
39 <view class="nodata" v-if="list.length==0">
40 <image mode="aspectFit" src="/static/nodata.png"></image>
41 <text>暂无数据</text>
42 </view>
43 </view>
44 </template>
45
46 <script setup>
47 import * as api from '@/common/api.js'
48 import config from '@/config.js'
49 import {
50 onMounted,
51 ref
52 } from 'vue'
53 import {
54 onLoad
55 } from '@dcloudio/uni-app'
56 const app = getApp();
57 const queryParams = ref({
58 // pageNum: 1,
59 // pageSize: 10
60 mergeFlag: 100,
61 statusFlag: '101'
62 })
63 const navs = ref(['待提交','审核中', '审核通过', '审核拒绝', '已撤回'])
64 const current = ref()
65 const list = ref([])
66 const total = ref(0)
67 const deptType = ref('')
68 const userType = ref('')
69 onLoad(() => {
70 if (app.globalData.isLogin) {
71 init()
72 } else {
73
74 app.firstLoadCallback = () => {
75 init()
76 };
77 }
78 })
79
80 function init() {
81 deptType.value = app.globalData.deptType
82 userType.value = app.globalData.userType
83 console.log(userType.value)
84 getList()
85 }
86
87 function onClickItem(e) {
88 console.log(e)
89 switch(e.currentIndex){
90 case 0:
91 queryParams.value.statusFlag = 101
92 break;
93 case 1:
94 queryParams.value.statusFlag = 102
95 break;
96 case 2:
97 queryParams.value.statusFlag = 103
98 break;
99 case 3:
100 queryParams.value.statusFlag = 104
101 break;
102 case 4:
103 queryParams.value.statusFlag = 105
104 break;
105 }
106 getList()
107 }
108
109 function getList() {
110 uni.showLoading({
111 title:'加载中'
112 })
113 if (queryParams.value.statusFlag == '') {
114 queryParams.value.mergeFlag = 100
115 queryParams.value.status = null
116 }
117 if (queryParams.value.statusFlag == 101) {
118 queryParams.value.mergeFlag = 101
119 queryParams.value.status = null
120 }
121 if (queryParams.value.statusFlag == 102) {
122 queryParams.value.mergeFlag = 1
123 queryParams.value.status = 0
124 }
125 if (queryParams.value.statusFlag == 103) {
126 queryParams.value.mergeFlag = 1
127 queryParams.value.status = 1
128 }
129 if (queryParams.value.statusFlag == 104) {
130 queryParams.value.mergeFlag = 1
131 queryParams.value.status = 2
132 }
133 if (queryParams.value.statusFlag == 105) {
134 queryParams.value.mergeFlag = 100
135 queryParams.value.status = 3
136 }
137 api.getGroupList(queryParams.value).then(res => {
138 uni.hideLoading()
139 list.value = res.rows
140 list.value.forEach(item => {
141 item.con = item.content
142 item.content = JSON.parse(item.content)
143 })
144 total.value = res.total
145 })
146 }
147
148 function handleAudit(item){
149 uni.showModal({
150 title: '提示',
151 content: `确定提交${item.content.certName}吗`,
152 success: function(res) {
153 if (res.confirm) {
154 api.groupAudit({
155 flag: '1',
156 recordIds: [item.recordId],
157 reason: null
158 }).then(res=>{
159 getList()
160 uni.showToast({
161 title:`操作成功!`
162 })
163 })
164 }
165 }
166 })
167 }
168
169 function goDetail(item) {
170 const form = encodeURIComponent(JSON.stringify(item))
171 // 查看
172 let path = `/pages/group/apply/mergeUpDetail?&form=${form}`
173 uni.navigateTo({
174 url: path
175 });
176
177 }
178
179 </script>
180
181 <style scoped>
182 .mt0{margin-top: 0!important;}
183 .appList .appItem .name{width: 80%;word-break: break-all;}
184 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view class="hasfixedbottom">
3 <view class="wBox">
4 <view class="tt">{{form.content.certName}}</view>
5 <view>
6 <view class="date" v-if="form.content.commitTime">提交日期:<text>{{ form.content.commitTime }}</text>
7 </view>
8 <view class="date">提交单位:<text>{{ form.content.memberName }}</text> </view>
9 </view>
10 <view class="vipData mt30" style="flex-wrap: wrap;">
11 <view class="w50">
12 团队会员合计:
13 <text>{{ form.content.allCount }}</text>
14 </view>
15 <view class="w50">
16 新会员合计:
17 <text>{{ form.content.newCount }}</text>
18 </view>
19 <view class="w50">
20 年限合计:
21 <text>{{ form.content.renewYear }}</text>
22 </view>
23 <view class="w50">
24 费用合计:
25 <text>{{ (form.content.allFee*1).toFixed(2) }}</text>
26 </view>
27 </view>
28
29 <!-- 成员 -->
30 <view class="userlist">
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>
41 <view class="flexbox">
42 <view>
43 单价
44 <text>¥{{n.unitPrice}}</text>
45 </view>
46 <view>
47 年限
48 <text>{{n.renewYear}}</text>
49 </view>
50 <view>
51 总价
52 <text>¥{{n.allFee}}</text>
53 </view>
54 </view>
55 </view>
56 </view>
57 </view>
58
59 </view>
60
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>
80 </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
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>
92
93 </view>
94 </template>
95
96 <script setup>
97 import * as api from '@/common/api.js'
98 import config from '@/config.js'
99 import {
100 onMounted,
101 ref
102 } from 'vue'
103 import {
104 onLoad
105 } from '@dcloudio/uni-app'
106 const app = getApp();
107 const queryParams = ref({
108 recordId: ''
109 })
110
111 const form = ref({})
112 const list = ref([])
113 const listArr = 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()
121 let rangeId = ''
122 onLoad((option) => {
123 if ('form' in option) {
124 form.value = JSON.parse(decodeURIComponent(option.form))
125 }
126 list.value = form.content?.certifiedSimpleList || []
127 listArr.value = form.content?.certifiedSimpleList || []
128 queryParams.value.recordId = form.value.recordId
129 console.log(form.value)
130 if (app.globalData.isLogin) {
131 init()
132 } else {
133
134 app.firstLoadCallback = () => {
135 init()
136 };
137 }
138
139 })
140
141 function init() {
142 deptType.value = app.globalData.deptType
143 getForm()
144 }
145
146 function getForm() {
147 uni.showLoading({
148 title: '加载中'
149 })
150 api.getDetailList(queryParams.value).then(res => {
151 uni.hideLoading()
152 list.value = res.rows
153 list.value[0].rangeId == 0 ? id.value = list.value[0].certId : id.value = list.value[0].rangeId
154 if (id.value) {
155 auditFN()
156 }
157 })
158 }
159
160 function auditFN() {
161 api.getGroupHistoryByRelateId(id.value).then(res => {
162 auditList.value = res.data
163 })
164 }
165
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 })
197 }
198 }
199
200 function doApproval(rangeId, flag, reason) {
201 var obj = {
202 flag: flag,
203 reason: reason || '',
204 rangeIds: rangeIds
205 }
206 console.log(obj)
207 api.mobilizeAudit(obj).then((res) => {
208 uni.showToast({
209 title: '操作成功',
210 icon: 'none'
211 })
212 uni.navigateBack()
213 })
214 }
215 </script>
216
217 <style scoped lang="scss">
218 .date {
219 margin-top: 10rpx;
220 font-size: 26rpx;
221 color: #999;
222 }
223
224 .wBox {
225 width: 700rpx;
226 padding: 30rpx;
227 margin: 20rpx auto 0;
228 background: #FFFFFF;
229 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
230 border-radius: 15rpx;
231
232 .tt {
233 color: #0A1629;
234 font-size: 30rpx;
235 }
236 }
237
238 .userlist {
239 .item {
240 border-bottom: 1px dashed #e5e5e5;
241 position: relative;
242
243 .date {
244 margin-top: 10rpx;
245 }
246
247 .name {
248 text {
249 margin-left: 1em;
250 color: #4C5359;
251 font-size: 26rpx;
252 }
253 }
254
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>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <!-- 会员缴费单 -->
4 <view class="appList">
5 <view class="vipData" v-show="totalCost>0">
6 <view>费用合计:<text>{{ totalCost.toFixed(2) }}</text></view>
7 </view>
8 <view class="appItem" v-for="item in list">
9 <view class="status" @click="goDetail(item)">
10 <text v-if="item.record.auditStatus==0" class="text-primary">审核中</text>
11 <text v-if="item.record.auditStatus==1" class="text-success"> 审核通过</text>
12 <text v-if="item.record.auditStatus==2" class="text-danger"> 审核拒绝</text>
13 <text v-if="item.record.auditStatus==3" class="text-warning">已退回</text>
14 </view>
15 <view class="date" @click="goDetail(item)" v-if="item.payTime">
16 <uni-icons type="calendar" size="16" color="#7D8592"></uni-icons>
17 <text>{{item.payTime}} 缴费</text>
18 </view>
19
20 <view class="name" @click="goDetail(item)">{{item.finalDocName}}</view>
21 <view v-if="deptType==1" class="date">
22 <text>{{item.payNoticeSendTime}} 下发</text>
23 </view>
24 <view class="flexbox" @click="goDetail(item)">
25 <view>
26 缴费状态
27 <view v-if="item.settleFlag == 0">
28 <text class="text-primary">已结算</text>
29 </view>
30 <view v-if="item.settleFlag == 1 && item?.payFlag == 0">
31 <text class="text-success">已上传凭证</text>
32 </view>
33 <view v-if="item.settleFlag == 1 && item?.payFlag == 1">
34 <text class="text-danger">未上传凭证</text>
35 </view>
36 </view>
37 <view>
38 年限合计
39 <view>{{item.yearCount}}</view>
40 </view>
41 <view>
42 费用合计
43 <view>¥{{item.allPrice}}</view>
44 </view>
45 </view>
46 <view class="func">
47 <button
48 v-if="(deptType == 2 || deptType == 3)&&item?.record?.auditStatus != 2 && item?.record?.auditStatus != 3"
49 @click="handleUpdate(item)">上传凭证</button>
50 </view>
51 </view>
52 </view>
53 <view class="nodata" v-if="list.length==0">
54 <image mode="aspectFit" src="/static/nodata.png"></image>
55 <text>暂无数据</text>
56 </view>
57
58 <!-- 上传凭证 -->
59 <uni-popup ref="UpPop" type="bottom" background-color="#fff" animation>
60 <view class="popBody">
61 <uni-forms v-model="form">
62 <uni-forms-item label="缴费日期" required>
63 <uni-datetime-picker v-model="form.payTime"></uni-datetime-picker>
64 </uni-forms-item>
65 <uni-forms-item label="缴费凭证" required>
66
67 <uni-file-picker limit="1" file-mediatype="all" file-extname="png,jpg,jpeg,pdf,zip"
68 @select="selectFile" @progress="fileProgress"
69 @delete="delSupplementFile(index)"></uni-file-picker>
70 </uni-forms-item>
71 <uni-forms-item label="备注">
72 <uni-easyinput v-model="form.remark" type="textarea"></uni-easyinput>
73 </uni-forms-item>
74 </uni-forms>
75
76 <button class="btn-red" @click="uploadSure">确定</button>
77 </view>
78 </uni-popup>
79 </view>
80 </template>
81
82 <script setup>
83 import * as api from '@/common/api.js'
84 import config from '@/config.js'
85 import {
86 onMounted,
87 ref
88 } from 'vue'
89 import {
90 onLoad
91 } from '@dcloudio/uni-app'
92 const app = getApp();
93 const list = ref([])
94 const queryParams = ref({})
95 const totalCost = ref(0)
96 const deptType = ref('')
97 const UpPop = ref(null)
98 const form = ref({
99 docId: '',
100 payTime: '',
101 url: '',
102 remark: ''
103 })
104 onLoad(() => {
105 if (app.globalData.isLogin) {
106 init()
107 } else {
108
109 app.firstLoadCallback = () => {
110 init()
111 };
112 }
113 })
114
115 function init() {
116 deptType.value = app.globalData.deptType
117 getList()
118 }
119
120 function getList() {
121 if (queryParams.value.settle == 1) {
122 queryParams.value.settleFlag = undefined
123 queryParams.value.payFlag = undefined
124 }
125 totalCost.value = 0
126 api.getGroupFeeBill().then(res => {
127 list.value = res.rows
128 list.value.forEach(item => {
129 item.payEvidence = JSON.parse(item.payEvidence)
130 item.record.content = JSON.parse(item.record.content)
131 totalCost.value = totalCost.value + (item.allPrice * 1)
132 })
133 })
134 }
135
136 function handleUpdate(item) {
137 form.value.docId = item.docId
138 if (item.payEvidence) {
139 form.value.url = item.payEvidence
140 }
141 UpPop.value.open()
142 }
143 let selectFileValue = {}
144
145 function selectFile(e) {
146 let file = e.tempFiles[0]
147 api.uploadFile(e).then(data => {
148 selectFileValue = {
149 url: data.msg,
150 name: file.name,
151 extname: file.extname
152 }
153
154 form.value.url = JSON.stringify([selectFileValue])
155 });
156 }
157
158 function fileProgress(e) {
159 console.log('progress:' + e)
160 }
161
162 function delSupplementFile(index) {
163 selectFileValue = {}
164 }
165
166 function uploadSure() {
167 console.log(form.value)
168 if(!form.value.payTime){
169 uni.showToast({
170 icon:`none`,
171 title:'请选择缴费时间'
172 })
173 return
174 }
175 if(!form.value.url){
176 uni.showToast({
177 icon:`none`,
178 title:'请上传缴费凭证'
179 })
180 return
181 }
182 api.groupCommitPaymentVoucher(form.value).then(res => {
183 UpPop.value.close()
184 form.value = {}
185 uni.showToast({
186 icon: 'none',
187 title: '操作成功'
188 })
189 getList()
190 })
191 }
192
193 function goDetail(item) {
194 //详情
195 console.log(item.docId)
196 let path = `/pages/group/feeBillDetail?docId=${item.docId}`
197 uni.navigateTo({
198 url: path
199 });
200 }
201 </script>
202
203 <style scoped lang="scss">
204 .popBody {
205 font-size: 28rpx;
206 line-height: 1.5;
207 overflow: auto;
208 padding: 30rpx;
209
210 .btn-red {
211 margin: 50rpx 0 30rpx;
212 }
213 }
214 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <view class="wBox">
4 <view class="tt">{{form.finalDocName}}</view>
5 <view class="subtt" v-if="form.payTime">提交日期:<text>{{ form.payTime }}</text></view>
6 <view class="subtt" v-if="form.payDeptName">提交单位:<text>{{ form.payDeptName }}</text></view>
7
8 <view class="vipData mtb30">
9 <view><text class="text-danger"> {{ form.deptCount}} </text> 团队</view>
10 <view>年限合计 <text class="text-danger"> {{ form.yearCount}} </text></view>
11 <view>费用合计 <text class="text-primary"> ¥{{ form.allPrice }} </text> </view>
12 </view>
13 <!-- 成员 -->
14 <view class="userlist">
15 <view class="item" v-for="n in list">
16 <view class="w100">
17 <view class="name">{{n.certName}}</view>
18 <view class="date" v-if="n.validityTime">{{n.validityTime?.silce(0,10)}}</view>
19 <view class="flexbox">
20 <view>单价
21 <text>¥{{ (n.unitPrice*1).toFixed(2) }}</text>
22 </view>
23 <view>缴费年限
24 <text>{{n.renewYear}}</text>
25 </view>
26 <view>总价
27 <text class="text-danger">¥{{ (n.allFee*1).toFixed(2) }}</text>
28 </view>
29 </view>
30 </view>
31
32 </view>
33 </view>
34
35 </view>
36
37 </view>
38 </template>
39
40 <script setup>
41 import * as api from '@/common/api.js'
42 import config from '@/config.js'
43 import {
44 onMounted,
45 ref
46 } from 'vue'
47 import {
48 onLoad
49 } from '@dcloudio/uni-app'
50 const app = getApp();
51 const queryParams = ref({
52 // pageNum: 1,
53 // pageSize: 10
54 // mergeFlag: 0,
55 auditStatus: ''
56 })
57 const docId = ref('')
58 const form = ref([])
59 const list = ref([])
60 const deptType = ref()
61 onLoad((option) => {
62 if (app.globalData.isLogin) {
63 docId.value = option.docId
64 init()
65 } else {
66
67 app.firstLoadCallback = () => {
68 docId.value = option.docId
69 init()
70 };
71 }
72
73 })
74
75 function init() {
76 deptType.value = app.globalData.deptType
77 api.getFeeBillById(docId.value).then(res => {
78 list.value = res.data.certList
79 // arr.value = JSON.parse(JSON.stringify(list.value))
80 form.value = res.data
81 })
82 }
83 </script>
84
85 <style scoped lang="scss">
86 .wBox {
87 width: 700rpx;
88 padding: 30rpx;
89 margin: 20rpx auto 0;
90 background: #FFFFFF;
91 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
92 border-radius: 15rpx;
93
94 .tt {
95 color: #0A1629;
96 font-size: 30rpx;
97 }
98 .subtt{
99 color: #666;margin: 20rpx 0 0;
100 font-size: 28rpx;
101 }
102 }
103
104 .userlist {
105 .item {
106 border-bottom: 1px dashed #e5e5e5;
107 position: relative;padding: 20rpx 0;
108
109 .date {
110 margin-top: 10rpx;
111 }
112
113 .name {
114 text {
115 margin-left: 1em;
116 color: #4C5359;
117 font-size: 26rpx;
118 }
119 }
120
121 .nian {
122 position: absolute;
123 right: 0;
124 font-size: 26rpx;
125 color: #AD181F;
126 }
127 }
128 }
129
130 .info {
131 display: flex;
132 margin: 30rpx 0 20rpx;
133 font-size: 28rpx;
134
135 view {
136 color: #7D8592;
137 margin-right: 20rpx;
138 }
139 }
140 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <!-- 会员认证 -->
4 <!-- <view class="searchbar">
5 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
6 v-model="queryParams.rangeName" placeholder="缴费名称" @blur="getList" @clear="getList">
7 </uni-easyinput>
8 <view class="invertedbtn-red" @click="goAddPay">+ 新建缴费</view>
9 </view> -->
10 <view class="appList">
11 <view class="appItem" v-for="item in list">
12 <view class="status" @click="goDetail(item)">
13 <text v-if="item?.content?.status==0" class="text-primary">待提交</text>
14 <text v-if="item?.content?.status==1" class="text-primary">审核中</text>
15 <text v-if="item?.content?.status==2" class="text-success"> 审核通过</text>
16 <text v-if="item?.content?.status==3" class="text-danger"> 审核拒绝</text>
17 <text v-if="item?.content?.status==4" class="text-warning">已撤回</text>
18 </view>
19 <view class="date">{{item?.content?.commitTime}} 提交</view>
20 <view class="name" @click="goDetail(item)">{{item.rangeName}}</view>
21 <view class="flexbox" @click="goDetail(item)">
22 <view>
23 会员合计
24 <view>{{item.allCount}}</view>
25 </view>
26 <view>
27 续费年限
28 <view>{{item.content?.renewYear}}</view>
29 </view>
30 <view>
31 年限合计
32 <view>{{item.totalRenewYear}}</view>
33 </view>
34 </view>
35 <view class="func" v-if="item?.content?.status == 0">
36 <button
37
38 @click="commitFN(item)">提交审核</button>
39 </view>
40 </view>
41 </view>
42 <view class="nodata" v-if="list.length==0">
43 <image mode="aspectFit" src="/static/nodata.png"></image>
44 <text>暂无数据</text>
45 </view>
46 </view>
47 </template>
48
49 <script setup>
50 import * as api from '@/common/api.js'
51 import config from '@/config.js'
52 import {
53 onMounted,
54 ref
55 } from 'vue'
56 import {
57 onLoad
58 } from '@dcloudio/uni-app'
59 const app = getApp();
60 const list = ref([])
61 const queryParams = ref({})
62 const deptType = ref('')
63 const UpPop = ref(null)
64 const form = ref({
65 docId:'',
66 payTime:'',
67 url:'',
68 remark:''
69 })
70 onLoad(() => {
71 if (app.globalData.isLogin) {
72 init()
73 } else {
74
75 app.firstLoadCallback = () => {
76 init()
77 };
78 }
79 })
80
81 function init() {
82 deptType.value = app.globalData.deptType
83 getList()
84 }
85
86 function getList() {
87 api.getPayList(queryParams.value).then(res => {
88 for (const item of res.rows) {
89 item.content = null
90 if (item.certList?.length > 0) {
91 item.content = item.certList[0]
92 }
93 }
94 list.value = res.rows
95 })
96 }
97
98 function commitFN(row) {
99 api.commitGroupPay(row.rangeId).then(res=>{
100 uni.showToast({
101 title:`提交成功!`
102 })
103 getList()
104 })
105 }
106 function goDetail(item) {
107 //详情
108 const form = encodeURIComponent(JSON.stringify(item))
109 // 查看
110 let path = `/pages/group/payDetail?&form=${form}`
111 uni.navigateTo({
112 url: path
113 });
114 }
115 </script>
116
117 <style scoped lang="scss">
118 .searchbar {
119 display: flex;
120 align-items: center;
121 padding: 25rpx;
122 box-sizing: border-box;
123
124 :deep(.uni-easyinput .uni-easyinput__content) {
125 border-radius: 35rpx;
126 border: none;
127 height: 70rpx;
128 }
129
130 :deep(.uni-easyinput__content-input) {
131 font-size: 26rpx;
132 }
133
134 .invertedbtn-red {
135 border-radius: 50px;
136 background-color: #fff;
137
138 font-size: 30rpx;
139 padding: 10rpx 20rpx;
140 }
141 }
142 .popBody {
143 font-size: 28rpx;
144 line-height: 1.5;
145 overflow: auto;
146 padding: 30rpx;
147
148 .btn-red {
149 margin: 50rpx 0 30rpx;
150 }
151 }
152 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view class="hasfixedbottom">
3 <view class="wBox">
4 <!-- 成员 -->
5 <view class="userlist">
6 <view class="item" v-for="n in list">
7 <view style="width: 100%">
8 <view class="status">
9 <view v-if="n.status==0" class="text-primary">
10 待提交
11 </view>
12 <view v-if="n.status==1" class="text-primary">
13 审核中
14 </view>
15 <view v-if="n.status==2" class="text-success">
16 审核通过
17 </view>
18 <view v-if="n.status==3" class="text-danger">
19 审核拒绝
20 </view>
21 <view v-if="n.status==4" class="text-warning">
22 撤回
23 </view>
24 </view>
25 <view class="name">{{n.memberName}}</view>
26 <view class="date">提交日期:{{n.commitTime}}
27 </view>
28 <view class="flexbox">
29 <view v-if="n.validityTime">
30 原有效期
31 <text>{{n.validityTime.slice(0,10)}}</text>
32 </view>
33 <view>
34 续费年限
35 <text>{{n.renewYear}}</text>
36 </view>
37 <view>
38 总价
39 <text>¥{{n.allPrice}}</text>
40 </view>
41 </view>
42 </view>
43 </view>
44 </view>
45
46 </view>
47
48 <view class="h3-padding">审核记录</view>
49 <view class="wBox">
50 <view class="stepItem" v-for="(n,index) in feelList">
51 <view class="time">{{n.auditTime||'待审批'}}</view>
52 <view class="content">
53 <view class="status">
54 <text v-if="n.auditResult==1" class="text-success">审核通过</text>
55 <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text>
56 <text v-if="n.auditResult==0" class="text-primary"> 审核中</text>
57 <text v-if="n.auditResult==3" class="text-warning">已撤回</text>
58
59 </view>
60 <!-- <view class="name">{{index+1}}</view> -->
61 <view class="deptName">{{n.auditDeptName}}</view>
62 <view v-if="n.auditMsg">
63 备注:{{n.auditMsg||'/' }}
64 </view>
65 </view>
66 </view>
67 </view>
68
69 </view>
70 </template>
71
72 <script setup>
73 import * as api from '@/common/api.js'
74 import config from '@/config.js'
75 import {
76 onMounted,
77 ref
78 } from 'vue'
79 import {
80 onLoad
81 } from '@dcloudio/uni-app'
82 const app = getApp();
83 const queryParams = ref({
84 recordId: ''
85 })
86
87 const form = ref({})
88 const list = ref([])
89 const listArr = ref([])
90 const id = ref()
91 const auditList = ref([])
92
93 const feelList = ref([])
94 const total = ref(0)
95 const totalYear = ref(0)
96 const deptType = ref()
97 let rangeId = ''
98 onLoad((option) => {
99 if ('form' in option) {
100 form.value = JSON.parse(decodeURIComponent(option.form))
101 }
102 queryParams.value.rangeId = form.value.rangId
103 list.value = form.value.certList
104 console.log(form.value)
105 if (app.globalData.isLogin) {
106 init()
107 } else {
108
109 app.firstLoadCallback = () => {
110 init()
111 };
112 }
113
114 })
115
116 function init() {
117 uni.showLoading({
118 title: '加载中'
119 })
120 deptType.value = app.globalData.deptType
121 getFillList()
122 }
123
124 function getFillList() {
125 api.getFillAuditLog(form.value.rangeId).then(res => {
126 uni.hideLoading()
127 feelList.value = res.data
128 })
129 }
130 </script>
131
132 <style scoped lang="scss">
133 .date {
134 margin-top: 10rpx;
135 font-size: 26rpx;
136 color: #999;
137 }
138
139 .wBox {
140 width: 700rpx;
141 padding: 30rpx;
142 margin: 20rpx auto 0;
143 background: #FFFFFF;
144 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
145 border-radius: 15rpx;
146
147 .tt {
148 color: #0A1629;
149 font-size: 30rpx;
150 }
151 }
152
153 .userlist {
154 .item {
155 border-bottom: 1px dashed #e5e5e5;
156 position: relative;
157
158 .date {
159 margin-top: 10rpx;
160 }
161
162 .name {
163 text {
164 margin-left: 1em;
165 color: #4C5359;
166 font-size: 26rpx;
167 }
168 }
169
170 .nian {
171 position: absolute;
172 right: 0;
173 font-size: 30rpx;
174 color: #AD181F;
175 }
176 }
177 }
178
179 .info {
180 display: flex;
181 margin: 30rpx 0 20rpx;
182 font-size: 28rpx;
183
184 view {
185 color: #7D8592;
186 margin-right: 20rpx;
187 }
188 }
189
190 .fixedBottom {
191 justify-content: center;
192
193 button {
194 margin: 0 20rpx;
195 width: 286rpx;
196 }
197
198 .btn-red {
199 width: 286rpx;
200 }
201 }
202 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
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 />欢迎使用中跆协会员管理系统</view> 6 <br />欢迎使用中跆协会员管理系统</view>
7 <view class="flexbox"> 7 <view class="flexbox">
8 <!-- userType 1:中跆协 2:省 3:市区 4:道馆--> 8 <!-- userType 1:中跆协 2:省 3:市区 4:道馆-->
...@@ -25,13 +25,18 @@ ...@@ -25,13 +25,18 @@
25 </view> 25 </view>
26 <view v-if="userType!='4'" @click="goPath('/pages/group/list')"> 26 <view v-if="userType!='4'" @click="goPath('/pages/group/list')">
27 <image />团体会员查询 27 <image />团体会员查询
28 </view> 28 </view>
29 <!--市区 省 中跆协 -->
29 <view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')"> 30 <view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')">
30 <image />团体会员审核 31 <image />团体会员审核
31 </view> 32 </view>
32 <view v-if="userType=='2'" @click="goPath('/pages/group/pay')"> 33 <view v-if="userType=='2'" @click="goPath('/pages/group/pay')">
33 <image />团体会员认证 34 <image />团体会员认证
34 </view> 35 </view>
36
37 <view v-if="userType=='2'" @click="goPath('/pages/group/feeBill')">
38 <image />团体会员缴费单
39 </view>
35 40
36 <view v-if="userType=='4'" @click="goPath('/pages/level/apply')"> 41 <view v-if="userType=='4'" @click="goPath('/pages/level/apply')">
37 <image />级位考试申请 42 <image />级位考试申请
...@@ -142,7 +147,7 @@ ...@@ -142,7 +147,7 @@
142 uni.showLoading({ 147 uni.showLoading({
143 title: '加载中' 148 title: '加载中'
144 }); 149 });
145 // loginServer.getMyOwnMemberInfo().then(res=>{ 150 loginServer.getMyOwnMemberInfo().then(res=>{
146 userType.value = app.globalData.userType 151 userType.value = app.globalData.userType
147 memberInfo.value = app.globalData.memberInfo 152 memberInfo.value = app.globalData.memberInfo
148 console.log(userType.value,app.globalData.authenticationStatus) 153 console.log(userType.value,app.globalData.authenticationStatus)
...@@ -156,7 +161,7 @@ ...@@ -156,7 +161,7 @@
156 getMes() 161 getMes()
157 } 162 }
158 uni.hideLoading(); 163 uni.hideLoading();
159 // }) 164 })
160 165
161 166
162 } 167 }
......
...@@ -38,7 +38,9 @@ ...@@ -38,7 +38,9 @@
38 </view> 38 </view>
39 </view> 39 </view>
40 40
41 41 <view v-if="userType=='2'" class="block-btn-box">
42 <button @click="goMerge" class="btn-red-kx">前往合并 > </button>
43 </view>
42 44
43 <view class="nodata" v-if="infoList.length==0"> 45 <view class="nodata" v-if="infoList.length==0">
44 <image mode="aspectFit" src="/static/nodata.png"></image> 46 <image mode="aspectFit" src="/static/nodata.png"></image>
...@@ -71,7 +73,8 @@ ...@@ -71,7 +73,8 @@
71 const current = ref() 73 const current = ref()
72 const infoList = ref([]) 74 const infoList = ref([])
73 const total = ref(0) 75 const total = ref(0)
74 const deptType = ref('') 76 const deptType = ref('')
77 const userType = ref('')
75 onLoad(() => { 78 onLoad(() => {
76 79
77 }) 80 })
...@@ -90,7 +93,8 @@ ...@@ -90,7 +93,8 @@
90 uni.showLoading({ 93 uni.showLoading({
91 title: '加载中' 94 title: '加载中'
92 }) 95 })
93 deptType.value = app.globalData.deptType 96 deptType.value = app.globalData.deptType
97 userType.value = app.globalData.userType
94 getList() 98 getList()
95 } 99 }
96 100
...@@ -135,9 +139,13 @@ ...@@ -135,9 +139,13 @@
135 } else { 139 } else {
136 return 140 return
137 } 141 }
138
139 } 142 }
140 143 function goMerge(){
144 let path = `/pages/level/merge`
145 uni.navigateTo({
146 url: path
147 });
148 }
141 function audit(item, flag) { 149 function audit(item, flag) {
142 console.log(item.sourceData) 150 console.log(item.sourceData)
143 var obj = { 151 var obj = {
...@@ -193,32 +201,7 @@ ...@@ -193,32 +201,7 @@
193 </script> 201 </script>
194 202
195 203
196 <style scoped> 204 <style scoped lang="scss">
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 { 205 .mt0 {
223 margin-top: 0 !important; 206 margin-top: 0 !important;
224 } 207 }
...@@ -226,5 +209,6 @@ ...@@ -226,5 +209,6 @@
226 .appList .appItem .name { 209 .appList .appItem .name {
227 width: 80%; 210 width: 80%;
228 word-break: break-all; 211 word-break: break-all;
229 } 212 }
213
230 </style> 214 </style>
......
1 <template>
2 <view class="hasfixedbottom">
3 <view class="appList">
4 <view class="appItem" v-for="item in infoList">
5 <view @click="checkThis(item)" class="iconbox">
6 <image class="icon" v-if="item.checked" src="@/static/member/dx_dwn.png" />
7 <image class="icon" v-else src="@/static/member/dx.png" />
8 </view>
9 <view class="status" @click="goDetail(item)">
10 <text :class="{
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.applyTime">上报日期:{{item.applyTime}}</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.memberName}}</view>
24 </view>
25 <view>
26 考级考官
27 <view>{{item.examinerNames}}</view>
28 </view>
29 <view>
30 考级考生数
31 <view>{{item.totalNum}}</view>
32 </view>
33 </view>
34 </view>
35 </view>
36
37
38 <view class="fixedBottom">
39 <button @click="handleMerge" v-if="infoList.length>0" style="width: 40%;" class="btn-red">合并</button>
40 <button @click="goMergeUp" class="btn-red-kx" style="width: 40%;">合并提交 > </button>
41 </view>
42
43 <view class="nodata" v-if="infoList.length==0">
44 <image mode="aspectFit" src="/static/nodata.png"></image>
45 <text>暂无数据</text>
46 </view>
47 </view>
48 </template>
49
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: '1',
67 mergeFlag: '0',
68 type: '1'
69 })
70 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
71 const infoList = ref([])
72 const batchList = ref([])
73 const total = ref(0)
74 const totalCost = ref(0)
75 const deptType = ref('')
76 onLoad(() => {
77
78 })
79 onShow(() => {
80 if (app.globalData.isLogin) {
81 init()
82 } else {
83
84 app.firstLoadCallback = () => {
85 init()
86 };
87 }
88 })
89
90 function init() {
91 uni.showLoading({
92 title: '加载中'
93 })
94 deptType.value = app.globalData.deptType
95 getList()
96 }
97
98
99 function getList() {
100 totalCost.value = 0
101 api.getVerityList(queryParams.value).then(res => {
102 const list = []
103 _.each(res.rows, r => {
104 const item = JSON.parse(r.content)
105 item.recordId = r.recordId
106 item.auditStatus = r.auditStatus
107 item.isView = r.isView
108 item.submitStatus = r.submitStatus
109 item.distributeTime = r.distributeTime
110 item.statusStr = statusArr[r.auditStatus]
111 item.remark = r.remark
112 item.cuLevels = r.cuLevels
113 item.sourceData = r
114 item.auditProcess = r.auditProcess
115 item.checked = false
116 console.log(item)
117 list.push(item)
118 totalCost.value += (item.totalAmount * 1)
119 })
120 infoList.value = list
121 total.value = res.total
122 uni.hideLoading()
123 })
124 }
125
126 function goDetail(item) {
127 if (item.status != '0') {
128 let path = `/pages/level/applyDetail?examId=${item.examId}`
129 uni.navigateTo({
130 url: path
131 });
132 } else {
133 return
134 }
135
136 }
137 function goMergeUp(){
138 // 合并提交
139 let path = `/pages/level/mergeUp`
140 uni.navigateTo({
141 url: path
142 });
143 }
144 function checkThis(item) {
145 if (item.checked) {
146 item.checked = false
147 } else {
148 item.checked = true
149 }
150 }
151 var ids = []
152
153 function handleMerge() {
154 batchList.value = []
155 ids = []
156 for (var n of infoList.value) {
157 if (n.checked) {
158 batchList.value.push(n)
159 ids.push(n.recordId)
160 }
161 }
162 if (batchList.value.length == 0) {
163 uni.showToast({
164 title: `请选择至少一条数据`,
165 icon: 'none'
166 })
167 return
168 }
169 const mergeFlag = batchList.value.some(item => {
170 if (item.auditStatus != '1') {
171 return uni.showToast({
172 title: `${item.examCode}审核未通过,无法合并`,
173 icon: 'none'
174 })
175 }
176 })
177 uni.showModal({
178 title: '提示',
179 content: `确认合并已选中的数据?`,
180 success: function(res) {
181 if (res.confirm) {
182 api.mergeRecords({
183 body: ids.join(),
184 type: queryParams.value.type
185 }).then(res => {
186 uni.showToast({
187 title: `操作成功`
188 })
189 getList()
190 })
191 }
192 }
193 })
194
195 }
196 </script>
197
198
199 <style scoped lang="scss">
200 .mt0 {
201 margin-top: 0 !important;
202 }
203 .appList .appItem{padding: 30rpx 30rpx 30rpx 120rpx;}
204 .appList .appItem .name {
205 width: 80%;
206 word-break: break-all;
207 }
208
209 .icon {
210 width: 60rpx;
211 height: 60rpx;
212 margin-right: 16rpx;
213 }
214 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <!-- 级位合并提交 -->
4 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
5 styleType="text" activeColor="#AD181F"></uni-segmented-control>
6 <view class="appList">
7 <view class="appItem" v-for="item in infoList">
8 <view class="status" @click="goDetail(item)">
9 <view :class="{
10 'text-success':item.status=='1',
11 'text-danger':item.status=='2',
12 'text-warning':item.status=='3'
13 }">
14 {{ item.auditStatus=='100'?'待提交':statusArr[item.status] }}
15 </view>
16 </view>
17 <view class="date" v-if="item.handleDate">{{item.handleDate}}</view>
18 <view class="name" @click="goDetail(item)">{{item.mergeName}}</view>
19 <view class="flexbox" @click="goDetail(item)">
20 <view>
21 考试人数
22 <view>{{item.totalNum}}</view>
23 </view>
24 <view>
25 合并日期
26 <view>{{item.mergeTime.slice(0,16)}}</view>
27 </view>
28 <view>
29 总金额
30 <view>¥{{item.totalAmount}}</view>
31 </view>
32 </view>
33
34 <view class="func" v-if="item.auditStatus == 100">
35 <button @click="handleAudit(item)">提交</button>
36 <!-- <button v-if="item.lastIds?.slice(0, 1) != '-'" @click="resolution(item)">取消合并</button> -->
37 </view>
38 </view>
39 </view>
40
41 <view class="nodata" v-if="infoList.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 {
53 onMounted,
54 ref
55 } from 'vue'
56 import {
57 onLoad
58 } from '@dcloudio/uni-app'
59 const app = getApp();
60 const queryParams = ref({
61 // pageNum: 1,
62 // pageSize: 10
63 flowCode: undefined,
64 mergeName: undefined,
65 status: '100',
66 examCode: undefined,
67 type: '1'
68 })
69 const navs = ref(['待提交', '审核中', '审核通过', '审核拒绝'])
70 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
71 const current = ref()
72 const list = ref([])
73 const infoList = ref([])
74 const totalCost = ref(0)
75 const deptType = ref('')
76 const userType = ref('')
77 onLoad(() => {
78 if (app.globalData.isLogin) {
79 init()
80 } else {
81
82 app.firstLoadCallback = () => {
83 init()
84 };
85 }
86 })
87
88 function init() {
89 deptType.value = app.globalData.deptType
90 userType.value = app.globalData.userType
91 getList()
92 }
93
94 function onClickItem(e) {
95 console.log(e)
96 switch (e.currentIndex) {
97 case 0:
98 queryParams.value.status = 100
99 break;
100 case 1:
101 queryParams.value.status = 0
102 break;
103 case 2:
104 queryParams.value.status = 1
105 break;
106 case 3:
107 queryParams.value.status = 2
108 break;
109 }
110 getList()
111 }
112
113 function getList() {
114 uni.showLoading({
115 title: '加载中'
116 })
117 api.getVerityMergeList(queryParams.value).then(response => {
118 uni.hideLoading()
119 const list = []
120 _.each(response.rows, r => {
121 const item = JSON.parse(r.remark)
122 item.recordId = r.recordId
123 item.auditStatus = r.auditStatus
124 item.status = r.status
125 item.isView = r.isView
126 item.payStatus = r.payStatus
127 item.sourceData = r
128 item.auditProcess = r.auditProcess
129 item.handleDate = r.handleDate
130 list.push(item)
131
132 totalCost.value += (item.totalAmount * 1)
133 })
134 infoList.value = list
135
136 })
137 }
138
139 function handleAudit(item) {
140 uni.showModal({
141 title: '提示',
142 content: `确定提交${item.content.certName}吗`,
143 success: function(res) {
144 if (res.confirm) {
145 api.groupAudit({
146 flag: '1',
147 recordIds: [item.recordId],
148 reason: null
149 }).then(res => {
150 getList()
151 uni.showToast({
152 title: `操作成功!`
153 })
154 })
155 }
156 }
157 })
158 }
159
160 function goDetail(item) {
161 const form = encodeURIComponent(JSON.stringify(item))
162 // 查看
163 let path = `/pages/level/mergeUpDetail?&form=${form}`
164 uni.navigateTo({
165 url: path
166 });
167
168 }
169 </script>
170
171 <style scoped>
172 .mt0 {
173 margin-top: 0 !important;
174 }
175
176 .appList .appItem .name {
177 width: 80%;
178 word-break: break-all;
179 }
180 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view class="hasfixedbottom">
3 <view class="wBox">
4 <view class="tt">{{form.content.certName}}</view>
5 <view>
6 <view class="date" v-if="form.content.commitTime">提交日期:<text>{{ form.content.commitTime }}</text>
7 </view>
8 <view class="date">提交单位:<text>{{ form.content.memberName }}</text> </view>
9 </view>
10 <view class="vipData mt30" style="flex-wrap: wrap;">
11 <view class="w50">
12 团队会员合计:
13 <text>{{ form.content.allCount }}</text>
14 </view>
15 <view class="w50">
16 新会员合计:
17 <text>{{ form.content.newCount }}</text>
18 </view>
19 <view class="w50">
20 年限合计:
21 <text>{{ form.content.renewYear }}</text>
22 </view>
23 <view class="w50">
24 费用合计:
25 <text>{{ (form.content.allFee*1).toFixed(2) }}</text>
26 </view>
27 </view>
28
29 <!-- 成员 -->
30 <view class="userlist">
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>
41 <view class="flexbox">
42 <view>
43 单价
44 <text>¥{{n.unitPrice}}</text>
45 </view>
46 <view>
47 年限
48 <text>{{n.renewYear}}</text>
49 </view>
50 <view>
51 总价
52 <text>¥{{n.allFee}}</text>
53 </view>
54 </view>
55 </view>
56 </view>
57 </view>
58
59 </view>
60
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>
80 </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
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>
92
93 </view>
94 </template>
95
96 <script setup>
97 import * as api from '@/common/api.js'
98 import config from '@/config.js'
99 import {
100 onMounted,
101 ref
102 } from 'vue'
103 import {
104 onLoad
105 } from '@dcloudio/uni-app'
106 const app = getApp();
107 const queryParams = ref({
108 recordId: ''
109 })
110
111 const form = ref({})
112 const list = ref([])
113 const listArr = 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()
121 let rangeId = ''
122 onLoad((option) => {
123 if ('form' in option) {
124 form.value = JSON.parse(decodeURIComponent(option.form))
125 }
126 list.value = form.content?.certifiedSimpleList || []
127 listArr.value = form.content?.certifiedSimpleList || []
128 queryParams.value.recordId = form.value.recordId
129 console.log(form.value)
130 if (app.globalData.isLogin) {
131 init()
132 } else {
133
134 app.firstLoadCallback = () => {
135 init()
136 };
137 }
138
139 })
140
141 function init() {
142 deptType.value = app.globalData.deptType
143 getForm()
144 }
145
146 function getForm() {
147 uni.showLoading({
148 title: '加载中'
149 })
150 api.getDetailList(queryParams.value).then(res => {
151 uni.hideLoading()
152 list.value = res.rows
153 list.value[0].rangeId == 0 ? id.value = list.value[0].certId : id.value = list.value[0].rangeId
154 if (id.value) {
155 auditFN()
156 }
157 })
158 }
159
160 function auditFN() {
161 api.getGroupHistoryByRelateId(id.value).then(res => {
162 auditList.value = res.data
163 })
164 }
165
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 })
197 }
198 }
199
200 function doApproval(rangeId, flag, reason) {
201 var obj = {
202 flag: flag,
203 reason: reason || '',
204 rangeIds: rangeIds
205 }
206 console.log(obj)
207 api.mobilizeAudit(obj).then((res) => {
208 uni.showToast({
209 title: '操作成功',
210 icon: 'none'
211 })
212 uni.navigateBack()
213 })
214 }
215 </script>
216
217 <style scoped lang="scss">
218 .date {
219 margin-top: 10rpx;
220 font-size: 26rpx;
221 color: #999;
222 }
223
224 .wBox {
225 width: 700rpx;
226 padding: 30rpx;
227 margin: 20rpx auto 0;
228 background: #FFFFFF;
229 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
230 border-radius: 15rpx;
231
232 .tt {
233 color: #0A1629;
234 font-size: 30rpx;
235 }
236 }
237
238 .userlist {
239 .item {
240 border-bottom: 1px dashed #e5e5e5;
241 position: relative;
242
243 .date {
244 margin-top: 10rpx;
245 }
246
247 .name {
248 text {
249 margin-left: 1em;
250 color: #4C5359;
251 font-size: 26rpx;
252 }
253 }
254
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>
...\ No newline at end of file ...\ No newline at end of file
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
6 6
7 <view class="searchbar" v-if="deptType == 6"> 7 <view class="searchbar" v-if="deptType == 6">
8 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" 8 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
9 v-model="queryParams.name" placeholder="搜索调动名称" @blur="getList"> 9 v-model="queryParams.name" placeholder="搜索调动名称" @blur="getList" @clear="getList">
10 </uni-easyinput> 10 </uni-easyinput>
11 <view class="invertedbtn-red" @click="goAddMobilize">+ 新建调动</view> 11 <view class="invertedbtn-red" @click="goAddMobilize">+ 新建调动</view>
12 </view> 12 </view>
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <!-- 会员缴费 --> 3 <!-- <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
4 styleType="text" activeColor="#AD181F"></uni-segmented-control> -->
5 <view class="searchbar">
6 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
7 v-model="queryParams.paymentName" placeholder="搜索缴费名称" @blur="getList" @clear="getList">
8 </uni-easyinput>
9 <view class="invertedbtn-red" @click="goAdd">+ 新建缴费</view>
10 </view>
4 11
12 <!-- 会员缴费 -->
5 <view class="appList"> 13 <view class="appList">
6 <view class="appItem" v-for="item in list" @click="goDteail(item)"> 14 <view class="appItem" v-for="item in list">
7 <view class="status"> 15 <view class="status" @click="goDetail(item)">
8 <text v-if="item.status==1" class="text-primary">审核中</text> 16 <text v-if="item.status==1" class="text-primary">审核中</text>
9 <text v-if="item.status==2" class="text-success"> 审核通过</text> 17 <text v-if="item.status==2" class="text-success"> 审核通过</text>
10 <text v-if="item.status==3" class="text-danger"> 审核拒绝</text> 18 <text v-if="item.status==3" class="text-danger"> 审核拒绝</text>
11 <text v-if="item.status==4" class="text-warning">已退回</text> 19 <text v-if="item.status==4" class="text-warning">已退回</text>
12 </view> 20 </view>
13 <view class="date"> 21 <view class="date" @click="goDetail(item)" v-if="item.commitTime">
14 <uni-icons type="calendar" size="16" color="#7D8592"></uni-icons> 22 <uni-icons type="calendar" size="16" color="#7D8592"></uni-icons>
15 {{item.commitTime}} 提交 23 {{item.commitTime}} 提交
16 </view> 24 </view>
17 <view class="name">{{item.paymentName}}</view> 25 <view class="name" @click="goDetail(item)">{{item.paymentName}}</view>
18 <view class="flexbox"> 26 <view class="flexbox" @click="goDetail(item)">
19 <view> 27 <view>
20 人数合计 28 人数合计
21 <view>{{item.personCount}}</view> 29 <view>{{item.personCount}}</view>
...@@ -29,8 +37,9 @@ ...@@ -29,8 +37,9 @@
29 <view>{{item.totalYear}}</view> 37 <view>{{item.totalYear}}</view>
30 </view> 38 </view>
31 </view> 39 </view>
32 <view class="func" v-if="item.status==0"> 40 <view class="func" v-if="item.status==0||item.status==3||item.status==4">
33 <button>提交审核</button> 41 <button @click="handleUpdate(item)">编辑</button>
42 <button @click="commitFN(item)">提交审核</button>
34 </view> 43 </view>
35 </view> 44 </view>
36 </view> 45 </view>
...@@ -42,20 +51,29 @@ ...@@ -42,20 +51,29 @@
42 import * as api from '@/common/api.js' 51 import * as api from '@/common/api.js'
43 import config from '@/config.js' 52 import config from '@/config.js'
44 import { 53 import {
45 onMounted,
46 ref 54 ref
47 } from 'vue' 55 } from 'vue'
48 import { 56 import {
49 onLoad 57 onLoad,
58 onShow
50 } from '@dcloudio/uni-app' 59 } from '@dcloudio/uni-app'
60 const app = getApp()
51 const queryParams = ref({ 61 const queryParams = ref({
52 // pageNum: 1, 62 // pageNum: 1,
53 // pageSize: 10 63 // pageSize: 10
54 }) 64 })
55 const list = ref([]) 65 const list = ref([])
56 const total = ref(0) 66 const total = ref(0)
57 onMounted(() => { 67 const navs = ref(['待提交', '审核中', '审核通过', '审核拒绝'])
58 getList() 68 onShow(() => {
69 if (app.globalData.isLogin) {
70 getList()
71 } else {
72
73 app.firstLoadCallback = () => {
74 getList()
75 };
76 }
59 }) 77 })
60 78
61 function getList() { 79 function getList() {
...@@ -65,14 +83,76 @@ ...@@ -65,14 +83,76 @@
65 }) 83 })
66 } 84 }
67 85
68 function goDteail(item) { 86 function goDetail(item) {
69 let path = `/pages/personalVip/paymentDetail?wfCode=${item.wfCode}` 87 const form = encodeURIComponent(JSON.stringify(item))
70 uni.navigateTo({ 88 let path = `/pages/personalVip/paymentDetail?form=${form}`
71 url: path 89 uni.navigateTo({
90 url: path
91 });
92 }
93
94 function handleUpdate(item) {
95 let path = `/pages/personalVip/renew?rangeId=${item.rangId}`
96 uni.navigateTo({
97 url: path
98 });
99 }
100
101 function commitFN(row) {
102 uni.showModal({
103 title: '提示',
104 content: `确定提交${row.paymentName}吗`,
105 success: function(res) {
106 if (res.confirm) {
107 uni.showLoading({
108 icon: 'none',
109 title: '提交中'
110 })
111 api.personalCommit(row.rangId).then(res => {
112 uni.hideLoading()
113 uni.showToast({
114 title: '提交成功'
115 })
116 })
117 getList()
118 }
119 }
120 })
121
122
123 }
124
125 function goAdd() {
126 let path = `/pages/personalVip/renew`
127 uni.navigateTo({
128 url: path
72 }); 129 });
73 } 130 }
74 </script> 131 </script>
75 132
76 <style> 133 <style lang="scss" scoped>
134 .searchbar {
135 display: flex;
136 align-items: center;
137 padding: 25rpx;
138 box-sizing: border-box;
139
140 :deep(.uni-easyinput .uni-easyinput__content) {
141 border-radius: 35rpx;
142 border: none;
143 height: 70rpx;
144 }
145
146 :deep(.uni-easyinput__content-input) {
147 font-size: 26rpx;
148 }
77 149
150 .invertedbtn-red {
151 border-radius: 50px;
152 background-color: #fff;
153
154 font-size: 30rpx;
155 padding: 10rpx 20rpx;
156 }
157 }
78 </style> 158 </style>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
14 </view> 14 </view>
15 <view> 15 <view>
16 <view class="name">{{n.personName}}<text>({{n.memberInfoName}})</text></view> 16 <view class="name">{{n.personName}}<text>({{n.memberInfoName}})</text></view>
17 <view class="date">原有效期至{{n.originValidityDate||'--'}}</view> 17 <view class="date">原有效期至 {{n.originValidityDate?.slice(0,10)||'--'}}</view>
18 </view> 18 </view>
19 <view class="nian"> 19 <view class="nian">
20 {{n.payYear}} 20 {{n.payYear}}
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
24 24
25 </view> 25 </view>
26 26
27 <view class="h3-padding">审核流程</view> 27 <view class="h3-padding" v-if="feelList.length>0">审核流程</view>
28 <view class="wBox"> 28 <view class="wBox" v-if="feelList.length>0">
29 <view class="stepItem" v-for="(n,index) in feelList"> 29 <view class="stepItem" v-for="(n,index) in feelList">
30 <view class="time">{{n.auditTime||'待审批'}}</view> 30 <view class="time">{{n.auditTime||'待审批'}}</view>
31 <view class="content"> 31 <view class="content">
...@@ -66,23 +66,13 @@ ...@@ -66,23 +66,13 @@
66 const feelList = ref([]) 66 const feelList = ref([])
67 const total = ref(0) 67 const total = ref(0)
68 onLoad((option) => { 68 onLoad((option) => {
69 wfCode.value = option.wfCode 69 if ('form' in option) {
70 getForm() 70 form.value = JSON.parse(decodeURIComponent(option.form))
71 }
72 getFillList(form.value.rangId)
73 getPersons()
71 }) 74 })
72 75
73 function getForm() {
74 api.getPaymentList(queryParams.value).then(res => {
75 if(res.rows)
76 for (var n of res.rows) {
77 if (n.wfCode == wfCode.value) {
78 form.value = n
79 }
80 }
81 getFillList(form.value.rangId)
82 getPersons()
83 })
84 }
85
86 function getPersons() { 76 function getPersons() {
87 queryParams.value.rangeId = form.value.rangId 77 queryParams.value.rangeId = form.value.rangId
88 api.addSelectPageList(queryParams.value).then(res => { 78 api.addSelectPageList(queryParams.value).then(res => {
......
1 <template> 1 <template>
2 <view> 2 <view class="hasfixedbottom">
3 <view class="searchbar"> 3 <view class="searchbar">
4 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" 4 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
5 v-model="query.name" placeholder="搜索姓名或证件号码" @iconClick="iconClick"> 5 v-model="queryParams.personName" placeholder="搜索姓名或证件号码" @blur="getList" @clear="getList">
6 </uni-easyinput> 6 </uni-easyinput>
7 <view class="invertedbtn-red" @click="goVipList">+ 添加会员</view> 7 <view class="invertedbtn-red" @click="goVipList">+ 添加会员</view>
8 </view> 8 </view>
9 9
10 <view class="vipData mtb30">
11 <view> 人数合计:<text>{{ formData.personCount? formData.personCount:0 }}</text></view>
12 <view> 新会员合计:<text>{{ formData.newPersonCount? formData.newPersonCount:0 }}</text></view>
13 <view> 续费会员合计:<text>{{ formData.oldPersonCount? formData.oldPersonCount:0 }}</text></view>
14 </view>
15
10 <uni-swipe-action> 16 <uni-swipe-action>
11 <uni-swipe-action-item class="personitem" v-for="n in choseList"> 17 <uni-swipe-action-item class="personitem" v-for="n in list">
12 <view class="content-box"> 18 <view class="content-box">
13 <view class="flexbox"> 19 <view class="flexbox">
14 <view class="colorful">{{n.name.slice(0,1)}}</view> 20 <view class="colorful">{{n.personName?.slice(0,1)}}</view>
15 {{n.name}} 21 <view>{{n.personName}}
22 <view class="date">
23 证件号:{{n.personIdcCode}}
24 </view>
25 </view>
16 </view> 26 </view>
17 <view class="flexbox"> 27 <view class="flexbox" @click="changeYear(n)">
18 <uni-number-box :min="1" v-model="n.year" :max="5"></uni-number-box> 28 <view class="text-danger">({{yearlist[n.payYear-1].text}})</view>
29 <uni-icons type="forward" size="18" color="#999"></uni-icons>
19 </view> 30 </view>
20 31
21 </view> 32 </view>
22 <template v-slot:right> 33 <template v-slot:right>
23 <view class="slot-button"> 34 <view class="slot-button">
24 <view> 35 <view @click="handleDelete(n)">
25 <uni-icons type="trash-filled" color="#fff" size="20"></uni-icons> 36 <uni-icons type="trash-filled" color="#fff" size="20"></uni-icons>
26 <text class="slot-button-text">删除</text> 37 <text class="slot-button-text">删除</text>
27 </view> 38 </view>
...@@ -30,10 +41,23 @@ ...@@ -30,10 +41,23 @@
30 </uni-swipe-action-item> 41 </uni-swipe-action-item>
31 </uni-swipe-action> 42 </uni-swipe-action>
32 43
33 <view class="nodata" v-if="choseList.length==0"> 44 <view class="nodata" v-if="list.length==0">
34 <image mode="aspectFit" src="/static/nodata.png"></image> 45 <image mode="aspectFit" src="/static/nodata.png"></image>
35 <button class="btn-red" @click="goVipList">+ 添加会员</button> 46 <button class="btn-red" @click="goVipList">+ 在线选择</button>
36 </view> 47 </view>
48
49 <view class="fixedBottom">
50 <button class="btn-red" :disabled="list?.length <= 0" @click="commitFN">保存并提交</button>
51 </view>
52
53 <uni-popup ref="pickView" type="bottom">
54 <view class="pickViewBox">
55 <view v-for="n in yearlist" @click="bindyear(n)">
56 {{n.text}}<uni-icons v-show="n.value == (nowYear)" type="checkmarkempty" size="20"
57 color="green"></uni-icons>
58 </view>
59 </view>
60 </uni-popup>
37 </view> 61 </view>
38 </template> 62 </template>
39 63
...@@ -41,35 +65,133 @@ ...@@ -41,35 +65,133 @@
41 import { 65 import {
42 ref 66 ref
43 } from 'vue' 67 } from 'vue'
44 const query = ref({}) 68 import {
45 const choseList = ref([{ 69 onShow,
46 name: '张三', 70 onLoad
47 year: '1' 71 } from '@dcloudio/uni-app'
48 }, { 72 import * as api from '@/common/api.js'
49 name: '李三', 73 import config from '@/config.js'
50 year: '1' 74 const app = getApp()
51 }]) 75 const queryParams = ref({
76 rangeId: -1
77 })
78 const formData = ref({})
79 const list = ref({})
80 const total = ref(0)
81 const nowYear = ref(1)
82 const nowItem = ref({})
83 const pickView = ref(null)
84 const visible = ref(true)
52 const yearlist = ref([{ 85 const yearlist = ref([{
53 text: '一年', 86 text: '一年',
54 value: '1' 87 value: 1
88 }, {
89 text: '二年',
90 value: 2
91 }, {
92 text: '三年',
93 value: 3
55 }, { 94 }, {
56 text: '2年', 95 text: '四年',
57 value: '2' 96 value: 4
97 }, {
98 text: '五年',
99 value: 5
58 }]) 100 }])
101 onLoad((option) => {
102 if (option.rangeId) {
103 queryParams.value.rangeId = option.rangeId
104 }
105 })
106 onShow(() => {
107 if (app.globalData.isLogin) {
108 init()
109 } else {
110 app.firstLoadCallback = () => {
111 init()
112 };
113 }
114 })
115
116 function init() {
117 getList()
118 }
119
120 function getList() {
121 api.addSelectPageList(queryParams.value).then(res => {
122 list.value = res.pageData.rows
123 total.value = res.pageData.total
124 formData.value = res
125 })
126 }
59 127
60 function goVipList() { 128 function goVipList() {
61 let path = '/pages/personalVip/vipList'; 129 let path = `/pages/personalVip/vipList?rangeId=${queryParams.value.rangeId}`
62 uni.navigateTo({ 130 uni.redirectTo({
63 url: path 131 url: path
64 }); 132 });
65 } 133 }
66 134
67 function changeYear() { 135 function changeYear(e) {
136 nowItem.value = e
137 nowYear.value = e.payYear
138 pickView.value.open()
139
140 }
141
142 function bindyear(n) {
143 nowYear.value = n.value
144 pickView.value.close()
145 nowItem.value.payYear = n.value
146 api.editYear(nowItem.value.payId, nowItem.value.payYear).then(res => {
147 for (var nn of list.value) {
148 if (nn.perId == nowItem.value.perId) {
149 nn.payYear = nowItem.value.payYear
150 }
151 }
152 })
153 }
68 154
155 function handleDelete(row) {
156 uni.showModal({
157 title: '提示',
158 content: `确定删除${row.personName}吗`,
159 success: function(res) {
160 if (res.confirm) {
161 api.delPayment([row.payId]).then(res => {
162 uni.showToast({
163 title: '删除成功'
164 })
165 if (list.value.length == 1) {
166 queryParams.value.rangeId = -1
167 }
168 getList()
169 })
170 }
171 }
172 })
173 }
174 function commitFN(){
175 if (queryParams.value.rangeId == -1) return
176 api.commitRenew(queryParams.value.rangeId).then(res=>{
177 uni.showToast({
178 title: '提交成功'
179 })
180 uni.navigateBack()
181 })
69 } 182 }
70 </script> 183 </script>
71 184
72 <style scoped lang="scss"> 185 <style scoped lang="scss">
186 .pickViewBox {
187 background-color: #fff;
188 text-align: center;
189
190 view {
191 line-height: 3;
192 }
193 }
194
73 .searchbar { 195 .searchbar {
74 display: flex; 196 display: flex;
75 align-items: center; 197 align-items: center;
......
1 <template> 1 <template>
2 <view> 2 <view class="hasfixedbottom">
3 <view class="searchbar"> 3 <view class="searchbar">
4 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" 4 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
5 v-model="query.name" placeholder="搜索姓名或证件号码" @blur="getList()" @clear="getList()"> 5 v-model="queryParams.name" placeholder="搜索姓名或证件号码" @blur="getList()" @clear="getList()">
6 </uni-easyinput> 6 </uni-easyinput>
7 </view> 7 </view>
8 <view class="indexboxre"> 8 <view class="indexboxre">
...@@ -20,20 +20,20 @@ ...@@ -20,20 +20,20 @@
20 </view> 20 </view>
21 <view @click="handleInfo(n)"> 21 <view @click="handleInfo(n)">
22 <view class="name">{{n.name}}</view> 22 <view class="name">{{n.name}}</view>
23 <view class="date" v-if="n.validityDate">到期时间:{{n.validityDate}}</view> 23 <view class="date" v-if="n.validityDate">到期时间:{{n.validityDate?.slice(0,10)}}</view>
24 <view class="date" v-else>注册时间:{{n.createTime}}</view> 24 <view class="date" v-else>注册时间:{{n.createTime?.slice(0,10)}}</view>
25 </view> 25 </view>
26 <view class="status"> 26 <view class="status">
27 <text v-if="n.certStage==0" class="text-green"> 27 <text v-if="n.certStage==0" class="text-warning">
28 新会员 28 新会员
29 </text> 29 </text>
30 <text v-if="n.certStage==1" class="text-warning"> 30 <text v-if="n.certStage==1" class="text-warning">
31 待提交 31 待提交
32 </text> 32 </text>
33 <text v-if="n.certStage==2" class="text-red"> 33 <text v-if="n.certStage==2" class="text-danger">
34 缴费中 34 缴费中
35 </text> 35 </text>
36 <text v-if="n.certStage==3"> 36 <text v-if="n.certStage==3" class="text-success">
37 正常 37 正常
38 </text> 38 </text>
39 <text v-if="n.certStage==4" class="text-gray"> 39 <text v-if="n.certStage==4" class="text-gray">
...@@ -47,14 +47,15 @@ ...@@ -47,14 +47,15 @@
47 47
48 <view class="fixedBottom"> 48 <view class="fixedBottom">
49 49
50 <button class="btn-red" @click="goAddRenew">添 加</button> 50 <button class="btn-red" @click="handleImport">导 入</button>
51 </view> 51 </view>
52 52
53 </view> 53 </view>
54 </template> 54 </template>
55 55
56 <script setup> 56 <script setup>
57 import * as api from '@/common/api.js' 57 import * as api from '@/common/api.js'
58 import config from '@/config.js'
58 import { 59 import {
59 ref, 60 ref,
60 getCurrentInstance 61 getCurrentInstance
...@@ -66,35 +67,22 @@ ...@@ -66,35 +67,22 @@
66 proxy 67 proxy
67 } = getCurrentInstance() 68 } = getCurrentInstance()
68 const app = getApp(); 69 const app = getApp();
69 const query = ref({ 70 const queryParams = ref({
70 pageNum: 1, 71 showMyPersonFlag: 1,
71 pageSize: 20, 72 checkPaymentCommit: 1,
72 showMyPersonFlag: null, 73 queryParams: 1
73 multiDeptFlag: 1,
74 perType: 1,
75 checkPaymentCommit: 1
76 }) 74 })
77 const list = ref([]) 75 const list = ref([])
78 const total = ref(0) 76 const total = ref(0)
79 const userType = ref('') 77 const userType = ref('')
80 onLoad(() => { 78 onLoad((option) => {
81 userType.value = app.globalData.userType 79 userType.value = app.globalData.userType
80 queryParams.value.paymentRangeId = option.rangeId
82 getList() 81 getList()
83 }) 82 })
84 83
85 function getList() { 84 function getList() {
86 if (userType.value == '4') { 85 api.selectPageList(queryParams.value).then(res => {
87 // 道馆
88 query.value.multiDeptFlag = null
89 query.value.showMyPersonFlag = 1
90 }
91 api.selectPageList(query.value).then(res => {
92 for (var p of res.rows) {
93 if (p.photo) {
94 p.photo = config.fileUrl_api + p.photo
95 console.log(p.photo)
96 }
97 }
98 list.value = res.rows 86 list.value = res.rows
99 total.value = res.total 87 total.value = res.total
100 }) 88 })
...@@ -115,16 +103,27 @@ ...@@ -115,16 +103,27 @@
115 }else{ 103 }else{
116 n.checked = true 104 n.checked = true
117 } 105 }
118 } 106 }
119 function checkboxChange(e) { 107 function handleImport(){
120 let values = e.detail.value; 108 var arr=[]
121 for (var n of list.value) { 109 for(var n of list.value){
122 if (values.includes(n)) { 110 if(n.checked){
123 proxy.$set(n, 'checked', true) 111 arr.push(n.perId)
124 } else { 112 }
125 proxy.$set(n, 'checked', false) 113 }
126 } 114 if(arr.length==0){
127 } 115 uni.showToast({
116 title:"请选择会员",
117 icon:"none"
118 })
119 return
120 }
121 api.addPersonPaymentGroup({ rangeId: queryParams.value.paymentRangeId, personIdArray: arr.join(',') }).then(res=>{
122 let path = `/pages/personalVip/renew?rangeId=${res.data.rangeId}`
123 uni.redirectTo({
124 url: path
125 });
126 })
128 } 127 }
129 </script> 128 </script>
130 129
...@@ -141,7 +140,7 @@ ...@@ -141,7 +140,7 @@
141 } 140 }
142 141
143 position: relative; 142 position: relative;
144 height: calc(100vh - 300rpx); 143 height: calc(100vh - 280rpx);overflow: auto;
145 } 144 }
146 145
147 .searchbar { 146 .searchbar {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!