f9c6474d by 杨炀

no message

1 parent 759d9885
...@@ -321,6 +321,56 @@ function addLevelInfo(data) { ...@@ -321,6 +321,56 @@ function addLevelInfo(data) {
321 params: data 321 params: data
322 }) 322 })
323 } 323 }
324 function chooseStudentsList(query) {
325 return request({
326 url: '/person/info/chooseStudentsList',
327 method: 'get',
328 params: query
329 })
330 }
331 function batchChoose(data) {
332 return request({
333 url: '/exam/person/batch/choose',
334 method: 'post',
335 params: data
336 })
337 }
338 function editLevel(data) {
339 return request({
340 url: '/exam/person/editLevel',
341 method: 'put',
342 params: data
343 })
344 }
345 function getVerityList(params) {
346 return request({
347 url: '/exam/info/verityList',
348 method: 'get',
349 params: params
350 })
351 }
352 function getGroupHistoryByRelateId(id) {
353 return request({
354 url: `/member/certified/getHistoryByRelateId/${id}`,
355 method: 'get'
356 })
357 }
358 // 创建自己的团队
359 function createMyMember(data) {
360 return request({
361 url: '/member/info/createMyMember',
362 method: 'post',
363 params:data
364 })
365 }
366 function doVerity(data) {
367 return request({
368 url: `/exam/info/verity`,
369 method: 'put',
370 params: data
371 })
372 }
373
324 374
325 export { 375 export {
326 getMessage, 376 getMessage,
...@@ -357,5 +407,8 @@ export { ...@@ -357,5 +407,8 @@ export {
357 getLevelApplyInfo, 407 getLevelApplyInfo,
358 getStudentList,getApprovalRecord,submitVerity, 408 getStudentList,getApprovalRecord,submitVerity,
359 getCoachList, 409 getCoachList,
360 updateLevelInfo,addLevelInfo 410 updateLevelInfo,addLevelInfo,
411 chooseStudentsList,batchChoose,getVerityList,
412 getGroupHistoryByRelateId,
413 createMyMember,doVerity
361 } 414 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -5,6 +5,7 @@ page { ...@@ -5,6 +5,7 @@ page {
5 } 5 }
6 .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;} 6 .esp{text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
7 .flexbox{display: flex;} 7 .flexbox{display: flex;}
8 .mt30{margin-top: 30rpx;}
8 .mt40{margin-top: 40rpx;} 9 .mt40{margin-top: 40rpx;}
9 .mt50{margin-top: 50rpx;} 10 .mt50{margin-top: 50rpx;}
10 .align-forms-item-placeHolder{color: #999;line-height: 2.6;} 11 .align-forms-item-placeHolder{color: #999;line-height: 2.6;}
...@@ -55,7 +56,11 @@ font-size: 24rpx;} ...@@ -55,7 +56,11 @@ font-size: 24rpx;}
55 } 56 }
56 .btn-red-kx{background-color: #fff; 57 .btn-red-kx{background-color: #fff;
57 border: 1px solid #AD181F; 58 border: 1px solid #AD181F;
58 color: #AD181F;} 59 color: #AD181F;
60 }
61 .btn-red-kx.mini{font-size: 30rpx; line-height: 2;
62 border-radius: 30px;}
63
59 /* 底部固定按钮 */ 64 /* 底部固定按钮 */
60 .fixedBottom {background: #fff;height: 150rpx; 65 .fixedBottom {background: #fff;height: 150rpx;
61 box-shadow: 0px -2rpx 10rpx 0px #e8e8e8; padding: 30rpx 0 0; 66 box-shadow: 0px -2rpx 10rpx 0px #e8e8e8; padding: 30rpx 0 0;
...@@ -325,3 +330,24 @@ color: #7D8592;} ...@@ -325,3 +330,24 @@ color: #7D8592;}
325 display: block; 330 display: block;
326 font-size: 14px; 331 font-size: 14px;
327 } 332 }
333 .bgbg{padding:0 0 60rpx;
334 color: #fff;
335 background: #C40F18;
336 }
337 .girdBox{display: flex;flex-wrap: wrap;padding: 0 0 40rpx;
338 background: #FFFFFF;position: relative;top: -30rpx;
339 border-radius: 20rpx 20rpx 0rpx 0rpx;
340 view{width: 25%;text-align: center;
341 font-size: 24rpx;
342 color: #434343;
343 image{width: 20vw;height: 20vw;display: block;margin: auto;}
344 }
345 }
346
347
348
349
350
351
352
353
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
3 3
4 4
5 // staging 5 // staging
6 const baseUrl_api = "http://192.168.1.96:8787"; 6 const baseUrl_api = "http://192.168.1.97:8787";
7 const fileUrl_api = "http://192.168.1.11:8787"; 7 const fileUrl_api = "http://192.168.1.11:8787";
8 8
9 export default { 9 export default {
......
...@@ -288,7 +288,7 @@ ...@@ -288,7 +288,7 @@
288 288
289 } 289 }
290 ,{ 290 ,{
291 "path" : "pages/group/applyList", 291 "path" : "pages/group/apply/applyList",
292 "style" : 292 "style" :
293 { 293 {
294 "navigationBarTitleText": "团体会员审核", 294 "navigationBarTitleText": "团体会员审核",
...@@ -341,6 +341,24 @@ ...@@ -341,6 +341,24 @@
341 } 341 }
342 342
343 } 343 }
344 ,{
345 "path" : "pages/group/apply/applyDetail",
346 "style" :
347 {
348 "navigationBarTitleText": "团体会员审核详情",
349 "enablePullDownRefresh": false
350 }
351
352 }
353 ,{
354 "path" : "pages/group/apply/record",
355 "style" :
356 {
357 "navigationBarTitleText": "审核记录",
358 "enablePullDownRefresh": false
359 }
360
361 }
344 ], 362 ],
345 "globalStyle": { 363 "globalStyle": {
346 "navigationStyle": "custom", 364 "navigationStyle": "custom",
......
1 <template>
2 <view class="hasfixedbottom">
3 <view class="wBox">
4 <view class="tt">{{form.name}}</view>
5
6 <!-- 成员 -->
7 <view class="userlist">
8 <view class="item" v-for="n in list">
9 <view class="photobox">
10 <view class="colorful">{{n.perName?.slice(0,1)}}</view>
11 </view>
12 <view>
13 <view class="name">{{n.perName}}</view>
14 <view class="date">申请调入一级协会 {{n.sourceShenDeptName||'--'}}</view>
15 <view class="date">申请调入单位 {{n.targetDeptName||'--'}}</view>
16 </view>
17 </view>
18 </view>
19
20 </view>
21
22 <view class="h3-padding">审核流程</view>
23 <view class="wBox">
24 <view class="stepItem" v-for="(n,index) in auditLog">
25 <view class="time">{{n.auditTime||'待审批'}}</view>
26 <view class="content">
27 <view class="status">
28 <text v-if="n.auditResult==1" class="text-success">审核通过</text>
29 <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text>
30 <text v-if="n.auditResult==0" class="text-primary"> 审核中</text>
31 </view>
32 <!-- <view class="name">{{index+1}}</view> -->
33 <view class="deptName">{{n.auditDeptName}}</view>
34 <view v-if="n.auditResult==2">
35 备注:{{n.auditMsg||'/' }}
36 </view>
37 </view>
38 </view>
39 </view>
40
41 <view class="fixedBottom" v-if="(deptType == 1)&&form.ztxRes == 0">
42 <button class="btn-red-kx" @click="audit(form.id,'2')">拒绝</button>
43 <button class="btn-red" @click="audit(form.id,'1')">同意</button>
44 </view>
45
46 <view class="fixedBottom" v-if="(deptType == 2 || deptType == 3)&&form.shenRes == 0">
47 <button class="btn-red-kx" @click="audit(form.id,'2')">拒绝</button>
48 <button class="btn-red" @click="audit(form.id,'1')">同意</button>
49 </view>
50
51 </view>
52 </template>
53
54 <script setup>
55 import * as api from '@/common/api.js'
56 import config from '@/config.js'
57 import {
58 onMounted,
59 ref
60 } from 'vue'
61 import {
62 onLoad
63 } from '@dcloudio/uni-app'
64 const app = getApp();
65 const queryParams = ref({})
66
67 const form = ref({})
68 const list = ref([])
69 const auditLog = ref([])
70 const feelList = ref([])
71 const total = ref(0)
72 const totalYear = ref(0)
73 const deptType = ref()
74 let rangeId = ''
75 onLoad((option) => {
76 rangeId = option.rangeId
77 if ('auditLog' in option) {
78 auditLog.value = JSON.parse(decodeURIComponent(option.auditLog))
79 }
80 if ('form' in option) {
81 form.value = JSON.parse(decodeURIComponent(option.form))
82 }
83 console.log(form.value)
84 if (app.globalData.isLogin) {
85 init()
86 } else {
87
88 app.firstLoadCallback = () => {
89 init()
90 };
91 }
92
93 })
94
95 function init() {
96 deptType.value = app.globalData.deptType
97 getForm()
98 }
99
100 function getForm() {
101 uni.showLoading({
102 title: '加载中'
103 })
104 api.getTransferList({
105 rangeId: rangeId
106 }).then(res => {
107 uni.hideLoading()
108 list.value = res.rows
109 })
110 }
111
112 function audit(rangeId, flag) {
113 if (flag == '2') {
114 // 拒绝
115 // 弹出框填写理由
116 uni.showModal({
117 title: '请输入拒绝理由',
118 editable: true,
119 success: function(res) {
120 if (res.confirm) {
121 if (!res.content) {
122 uni.showToast({
123 title: '请输入拒绝理由',
124 icon: 'none'
125 })
126 } else {
127 doApproval(rangeId, flag, res.content)
128 }
129 }
130 }
131 })
132 } else if (flag == '1') {
133 // 二次确认
134 uni.showModal({
135 title: '提示',
136 content: `确定审批通过吗`,
137 success: function(res) {
138 if (res.confirm) {
139 doApproval(rangeId, flag)
140 }
141 }
142 })
143 }
144 }
145
146 function doApproval(rangeId, flag, reason) {
147 var obj = {
148 flag: flag,
149 reason: reason || '',
150 rangeIds: rangeIds
151 }
152 console.log(obj)
153 api.mobilizeAudit(obj).then((res) => {
154 uni.showToast({
155 title: '操作成功',
156 icon: 'none'
157 })
158 uni.navigateBack()
159 })
160 }
161 </script>
162
163 <style scoped lang="scss">
164 .wBox {
165 width: 700rpx;
166 padding: 30rpx;
167 margin: 20rpx auto 0;
168 background: #FFFFFF;
169 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
170 border-radius: 15rpx;
171
172 .tt {
173 color: #0A1629;
174 font-size: 30rpx;
175 }
176 }
177
178 .userlist {
179 .item {
180 border-bottom: 1px dashed #e5e5e5;
181 position: relative;
182
183 .date {
184 margin-top: 10rpx;
185 }
186
187 .name {
188 text {
189 margin-left: 1em;
190 color: #4C5359;
191 font-size: 26rpx;
192 }
193 }
194
195 .nian {
196 position: absolute;
197 right: 0;
198 font-size: 30rpx;
199 color: #AD181F;
200 }
201 }
202 }
203
204 .info {
205 display: flex;
206 margin: 30rpx 0 20rpx;
207 font-size: 28rpx;
208
209 view {
210 color: #7D8592;
211 margin-right: 20rpx;
212 }
213 }
214
215 .fixedBottom {
216 justify-content: center;
217
218 button {
219 margin: 0 20rpx;
220 width: 286rpx;
221 }
222
223 .btn-red {
224 width: 286rpx;
225 }
226 }
227 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -19,15 +19,19 @@ ...@@ -19,15 +19,19 @@
19 缴费单位 19 缴费单位
20 <view>{{ item.content.memberName }}</view> 20 <view>{{ item.content.memberName }}</view>
21 </view> 21 </view>
22 <view> 22 <view v-if="userType = '3'">
23 会员合计 23 所属省份
24 <view>{{item.content.allCount}}</view> 24 <view>{{item.content.province}}</view>
25 </view> 25 </view>
26 <view> 26 <view>
27 新会员合计 27 年限
28 <view>{{item.content.renewYear}}</view> 28 <view>{{item.content.renewYear}}</view>
29 </view> 29 </view>
30 <view> 30 <view v-if="deptType == 1">
31 团体会员/新会员
32 <view>{{item.content.allCount}}/{{item.content.newCount}}</view>
33 </view>
34 <view v-if="deptType == 1">
31 费用合计 35 费用合计
32 <view> {{ (item?.content?.allFee*1).toFixed(2) }}</view> 36 <view> {{ (item?.content?.allFee*1).toFixed(2) }}</view>
33 </view> 37 </view>
...@@ -71,7 +75,8 @@ ...@@ -71,7 +75,8 @@
71 const current = ref() 75 const current = ref()
72 const list = ref([]) 76 const list = ref([])
73 const total = ref(0) 77 const total = ref(0)
74 const deptType = ref('') 78 const deptType = ref('')
79 const userType = ref('')
75 onLoad(() => { 80 onLoad(() => {
76 if (app.globalData.isLogin) { 81 if (app.globalData.isLogin) {
77 init() 82 init()
...@@ -84,7 +89,8 @@ ...@@ -84,7 +89,8 @@
84 }) 89 })
85 90
86 function init() { 91 function init() {
87 deptType.value = app.globalData.deptType 92 deptType.value = app.globalData.deptType
93 userType.value = app.globalData.userType
88 getList() 94 getList()
89 } 95 }
90 96
...@@ -171,11 +177,22 @@ ...@@ -171,11 +177,22 @@
171 function goDetail(item) { 177 function goDetail(item) {
172 const auditLog = encodeURIComponent(JSON.stringify(item.auditLog)) 178 const auditLog = encodeURIComponent(JSON.stringify(item.auditLog))
173 const form = encodeURIComponent(JSON.stringify(item)) 179 const form = encodeURIComponent(JSON.stringify(item))
174 180
175 let path = `/pages/personalVip/mobilizeDetail?rangeId=${item.id}&auditLog=${auditLog}&form=${form}` 181 if(userType.value=='1'){
176 uni.navigateTo({ 182 // 查看
177 url: path 183 let path = `/pages/group/apply/applyDetail?rangeId=${item.id}&auditLog=${auditLog}&form=${form}`
178 }); 184 uni.navigateTo({
185 url: path
186 });
187 } else if(userType.value=='3'){
188 // 审核记录
189 let path = `/pages/group/apply/record?certId=${item.content.certId}`
190 uni.navigateTo({
191 url: path
192 });
193 }
194
195
179 } 196 }
180 </script> 197 </script>
181 198
......
1 <template>
2 <view class="hasfixedbottom">
3 <view class="h3-padding">审核记录</view>
4 <view class="wBox">
5 <view class="stepItem" v-for="(n,index) in list">
6 <view class="time">{{n.handleDate||'待审批'}}</view>
7 <view class="content">
8 <view class="status">
9 <text v-if="n.auditStatus==0" class="text-primary">审核中</text>
10 <text v-if="n.auditStatus==1" class="text-success">审核通过</text>
11 <text v-if="n.auditStatus==2" class="text-danger">审核拒绝</text>
12 <text v-if="n.auditStatus==3" class="text-warning">已撤回</text>
13 <text v-if="n.auditStatus==100" class="text-primary">审核中</text>
14 </view>
15 <!-- <view class="name">{{index+1}}</view> -->
16 <view class="deptName">{{n.handlerDeptName}}</view>
17 <view v-if="n.reason">
18 备注:{{n.reason}}
19 </view>
20 </view>
21 </view>
22 </view>
23
24
25 </view>
26 </template>
27
28 <script setup>
29 import * as api from '@/common/api.js'
30 import config from '@/config.js'
31 import {
32 onMounted,
33 ref
34 } from 'vue'
35 import {
36 onLoad
37 } from '@dcloudio/uni-app'
38 const app = getApp();
39 const list = ref([])
40 const total = ref(0)
41 const deptType = ref()
42 let certId = ''
43 onLoad((option) => {
44 certId = option.certId
45 if (app.globalData.isLogin) {
46 init()
47 } else {
48
49 app.firstLoadCallback = () => {
50 init()
51 };
52 }
53
54 })
55
56 function init() {
57 deptType.value = app.globalData.deptType
58 getList()
59 }
60
61 function getList() {
62 uni.showLoading({
63 title: '加载中'
64 })
65 api.getGroupHistoryByRelateId(certId).then(res => {
66 uni.hideLoading()
67 list.value = res.data
68 })
69 }
70 </script>
71
72 <style scoped lang="scss">
73 .wBox {
74 width: 700rpx;
75 padding: 30rpx;
76 margin: 20rpx auto 0;
77 background: #FFFFFF;
78 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
79 border-radius: 15rpx;
80
81 .tt {
82 color: #0A1629;
83 font-size: 30rpx;
84 }
85 }
86
87 .userlist {
88 .item {
89 border-bottom: 1px dashed #e5e5e5;
90 position: relative;
91
92 .date {
93 margin-top: 10rpx;
94 }
95
96 .name {
97 text {
98 margin-left: 1em;
99 color: #4C5359;
100 font-size: 26rpx;
101 }
102 }
103
104 .nian {
105 position: absolute;
106 right: 0;
107 font-size: 30rpx;
108 color: #AD181F;
109 }
110 }
111 }
112
113 .info {
114 display: flex;
115 margin: 30rpx 0 20rpx;
116 font-size: 28rpx;
117
118 view {
119 color: #7D8592;
120 margin-right: 20rpx;
121 }
122 }
123
124 .fixedBottom {
125 justify-content: center;
126
127 button {
128 margin: 0 20rpx;
129 width: 286rpx;
130 }
131
132 .btn-red {
133 width: 286rpx;
134 }
135 }
136 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template> 1 <template>
2 <view class="page"> 2 <view class="page">
3 <view> 3 <view class="bgbg">
4 <view class="welcome">您好!<br />欢迎使用中跆协会员管理系统</view> 4 <view class="welcome">您好!
5 <!-- {{memberInfo.name}} -->
6 <br />欢迎使用中跆协会员管理系统</view>
5 <view class="flexbox"> 7 <view class="flexbox">
6 <!-- userType 1:中跆协 2:省 3:市区 4:道馆--> 8 <!-- userType 1:中跆协 2:省 3:市区 4:道馆-->
7 <!-- 4 --> 9 <!-- 4 -->
...@@ -9,24 +11,35 @@ ...@@ -9,24 +11,35 @@
9 <view v-if="userType=='4'" @click="goPath('/pages/personalVip/payment')">会员缴费</view> 11 <view v-if="userType=='4'" @click="goPath('/pages/personalVip/payment')">会员缴费</view>
10 <view v-if="userType=='2'" @click="goPath('/pages/personalVip/feeBill')">会员缴费单</view> 12 <view v-if="userType=='2'" @click="goPath('/pages/personalVip/feeBill')">会员缴费单</view>
11 <!-- 3 2 1--> 13 <!-- 3 2 1-->
12 <view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')">缴费审核</view> 14 <view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')">缴费审核</view>
13 15
14 <!-- 都有 --> 16 <!-- 都有 -->
15 <view @click="goPath('/pages/personalVip/list')">会员查询</view> 17 <view @click="goPath('/pages/personalVip/list')">会员查询</view>
16 </view> 18 </view>
17 19
18 </view> 20 </view>
19 <view> 21 <view class="girdBox">
20 <view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')"> 22 <view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')">
21 会员调动 23 <image />
22 </view> 24 会员调动
23 <view v-if="userType!='4'" @click="goPath('/pages/group/list')">团体会员查询</view> 25 </view>
24 <view v-if="userType!='4'" @click="goPath('/pages/group/applyList')">团体会员审核</view> 26 <view v-if="userType!='4'" @click="goPath('/pages/group/list')">
25 <view v-if="userType=='2'" @click="goPath('/pages/group/pay')">团体会员认证</view> 27 <image />团体会员查询
26 28 </view>
27 <view v-if="userType=='4'" @click="goPath('/pages/level/apply')">级位考试申请</view> 29 <view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')">
28 <view v-if="userType!='4'" @click="goPath('/pages/level/approval')">级位考试审核</view> 30 <image />团体会员审核
29 31 </view>
32 <view v-if="userType=='2'" @click="goPath('/pages/group/pay')">
33 <image />团体会员认证
34 </view>
35
36 <view v-if="userType=='4'" @click="goPath('/pages/level/apply')">
37 <image />级位考试申请
38 </view>
39 <view v-if="userType!='4'" @click="goPath('/pages/level/approval')">
40 <image />级位考试审核
41 </view>
42
30 </view> 43 </view>
31 <uni-section title="待办提醒" padding> 44 <uni-section title="待办提醒" padding>
32 <template v-slot:right> 45 <template v-slot:right>
...@@ -37,10 +50,10 @@ ...@@ -37,10 +50,10 @@
37 <text class="dot" :class="n.readFlag=='1'?'done':''"></text> 50 <text class="dot" :class="n.readFlag=='1'?'done':''"></text>
38 <view class="tt esp">{{n.name}}</view> 51 <view class="tt esp">{{n.name}}</view>
39 <view class="date">{{n.createTime}}</view> 52 <view class="date">{{n.createTime}}</view>
40 </view> 53 </view>
41 <view class="nodata" v-if="messageList.length==0"> 54 <view class="nodata" v-if="messageList.length==0">
42 <image mode="aspectFit" src="/static/nodata.png"></image> 55 <image mode="aspectFit" src="/static/nodata.png"></image>
43 <text>暂无数据</text> 56 <text>暂无数据</text>
44 </view> 57 </view>
45 </view> 58 </view>
46 </uni-section> 59 </uni-section>
...@@ -67,46 +80,27 @@ ...@@ -67,46 +80,27 @@
67 } = getCurrentInstance() 80 } = getCurrentInstance()
68 const app = getApp(); 81 const app = getApp();
69 const userType = ref('1') 82 const userType = ref('1')
83 const memberInfo = ref({})
70 84
71 let proId; 85 let proId;
72 const svId = ref(null); 86 const svId = ref(null);
73 const list = ref([ 87
74 {
75 url: '',
76 text: '段位考试申请'
77 },
78 {
79 url: '',
80 text: '段位考试审核'
81 },
82 {
83 url: '',
84 text: '级位证书发送'
85 },
86 {
87 url: '',
88 text: '段位证书发送'
89 }
90 ]);
91 const messageList = ref([]) 88 const messageList = ref([])
92 onShow(() => { 89 onShow(() => {
93 if (app.globalData.isLogin) { 90 if (app.globalData.isLogin) {
94 init() 91 init()
95 } else { 92 } else {
96
97 app.firstLoadCallback = () => { 93 app.firstLoadCallback = () => {
98 init() 94 init()
99 }; 95 };
100 } 96 }
101 }) 97 })
102 onLoad(option => { 98 onLoad(option => {
103
104 if (option.scene) { 99 if (option.scene) {
105 proId = decodeURIComponent(option.scene); 100 proId = decodeURIComponent(option.scene);
106 } else { 101 } else {
107 proId = option.proId; 102 proId = option.proId;
108 } 103 }
109
110 }); 104 });
111 105
112 function goPath(path) { 106 function goPath(path) {
...@@ -144,78 +138,83 @@ ...@@ -144,78 +138,83 @@
144 }); 138 });
145 } 139 }
146 140
147 function init() { 141 function init() {
148 uni.showLoading({ 142 uni.showLoading({
149 title: '加载中' 143 title: '加载中'
150 }); 144 });
151 loginServer.getMyOwnMemberInfo().then(res=>{ 145 // loginServer.getMyOwnMemberInfo().then(res=>{
152 userType.value = app.globalData.userType 146 userType.value = app.globalData.userType
153 if (userType.value!='1' && app.globalData.authenticationStatus != '2' && app.globalData.authenticationStatus != '4'){ 147 memberInfo.value = app.globalData.memberInfo
154 // 注册引导 148 console.log(userType.value,app.globalData.authenticationStatus)
155 uni.navigateTo({ 149 if (userType.value != '1' && app.globalData.authenticationStatus != '2' && app.globalData.authenticationStatus !=
156 url: '/pages/index/perfect' 150 '4') {
157 }); 151 // 注册引导
158 } else { 152 // uni.navigateTo({
159 getMes() 153 // url: '/pages/index/perfect'
160 } 154 // });
161 uni.hideLoading(); 155 } else {
162 }) 156 getMes()
157 }
158 uni.hideLoading();
159 // })
163 160
164 161
165 } 162 }
166 function getMes(){ 163
167 api.getMessage({ 164 function getMes() {
168 pageNum: 1, 165 api.getMessage({
169 pageSize: 10 166 pageNum: 1,
170 }).then(res => { 167 pageSize: 10
171 if (res.rows && res.rows.length > 0) 168 }).then(res => {
172 for (var d of res.rows) { 169 if (res.rows && res.rows.length > 0)
173 switch (d.type) { 170 for (var d of res.rows) {
174 case 30001: 171 switch (d.type) {
175 d.name = '你有一条会员缴费等待审批,点击去处理!' 172 case 30001:
176 d.path = '/personalVip/audit' 173 d.name = '你有一条会员缴费等待审批,点击去处理!'
177 break 174 d.path = '/pages/personalVip/audit'
178 case 30002: 175 break
179 d.name = '你有一条级位考试等待审批,点击去处理!' 176 case 30002:
180 d.path = '/level/approval' 177 d.name = '你有一条级位考试等待审批,点击去处理!'
181 break 178 d.path = '/pages/level/approval'
182 case 30003: 179 break
183 d.name = '你有一条段位考试等待审批,点击去处理!' 180 case 30003:
184 d.path = '/rank/approval' 181 d.name = '你有一条段位考试等待审批,点击去处理!'
185 break 182 d.path = '/pages/rank/approval'
186 case 30004: 183 break
187 d.name = '你有一条会员调动等待审批,点击去处理!' 184 case 30004:
188 d.path = '/personalVip/mobillize' 185 d.name = '你有一条会员调动等待审批,点击去处理!'
189 break 186 d.path = '/pages/personalVip/mobillize'
190 case 30005: 187 break
191 d.name = '你有一条团体会员认证等待审批,点击去处理!' 188 case 30005:
192 d.path = '/group/authentication' 189 d.name = '你有一条团体会员认证等待审批,点击去处理!'
193 break 190 d.path = '/pages/group/authentication'
194 case 30006: 191 break
195 d.name = '你有一条段位成绩等待审批,点击去处理!' 192 case 30006:
196 d.path = '/rank/scoreApproval' 193 d.name = '你有一条段位成绩等待审批,点击去处理!'
197 break 194 d.path = '/pages/rank/scoreApproval'
198 case 40001: 195 break
199 d.name = '你有一条级位申请待提交,点击去处理!' 196 case 40001:
200 d.path = `/level/apply/modify?id=${d.eventId}` 197 d.name = '你有一条级位申请待提交,点击去处理!'
201 break 198 d.path = `/pages/level/apply/modify?id=${d.eventId}`
202 case 40002: 199 break
203 d.name = '你有一条段位申请待提交,点击去处理!' 200 case 40002:
204 d.path = `/rank/apply/modify?id=${d.eventId}` 201 d.name = '你有一条段位申请待提交,点击去处理!'
205 break 202 d.path = `/pages/rank/apply/modify?id=${d.eventId}`
206 case 40003: 203 break
207 d.name = '你有一条成绩维护的数据待提交,点击去处理!' 204 case 40003:
208 d.path = `/rank/score/modify?id=${d.eventId}` 205 d.name = '你有一条成绩维护的数据待提交,点击去处理!'
209 break 206 d.path = `/pages/rank/score/modify?id=${d.eventId}`
210 case 50001: 207 break
211 d.name = '你有一条新的个人会员申请,点击去处理!' 208 case 50001:
212 d.path = '/personalVip/approvalList' 209 d.name = '你有一条新的个人会员申请,点击去处理!'
213 break 210 d.path = '/pages/personalVip/approvalList'
214 } 211 break
215 } 212 }
216 messageList.value = res.rows 213 }
217 }) 214 messageList.value = res.rows
218 } 215 })
216 }
217
219 function readMessage(item) { 218 function readMessage(item) {
220 uni.navigateTo({ 219 uni.navigateTo({
221 url: item.path 220 url: item.path
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
10 <view class="appItem" v-for="item in list"> 10 <view class="appItem" v-for="item in list">
11 <view class="status" @click="goDetail(item)"> 11 <view class="status" @click="goDetail(item)">
12 <text :class="{ 12 <text :class="{
13 'text-primary':item.status=='1',
13 'text-success':item.status=='2', 14 'text-success':item.status=='2',
14 'text-danger':item.status=='3', 15 'text-danger':item.status=='3',
15 'text-warning':item.status=='4' 16 'text-warning':item.status=='4'
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
4 styleType="text" activeColor="#AD181F"></uni-segmented-control>
3 5
6 <view class="appList">
7 <view class="appItem" v-for="item in infoList">
8 <view class="status" @click="goDetail(item)">
9 <text :class="{
10 'text-primary':item.auditStatus=='0',
11 'text-success':item.auditStatus=='1',
12 'text-danger':item.auditStatus=='2',
13 'text-warning':item.auditStatus=='3'
14 }">{{ item.statusStr }}</text>
15 </view>
16
17 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
18 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
19 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
20 <view class="flexbox" @click="goDetail(item)">
21 <view>
22 申请日期
23 <view>{{item.applyTime.substring(0, 10)}}</view>
24 </view>
25 <view>
26 申请单位
27 <view>{{item.memberName}}</view>
28 </view>
29 <view>
30 通过人数
31 <view>{{item.pass}}</view>
32 </view>
33 </view>
34 <view class="func" v-if="item.auditStatus=='0'">
35 <button @click="audit(item,'2')">拒绝</button>
36 <button @click="audit(item,'1')">同意</button>
37 </view>
38 </view>
39 </view>
40
41
42
43 <view class="nodata" v-if="infoList.length==0">
44 <image mode="aspectFit" src="/static/nodata.png"></image>
45 <text>暂无数据</text>
46 </view>
4 </view> 47 </view>
5 </template> 48 </template>
6 49
7 <script setup> 50 <script setup>
8 51 import * as api from '@/common/api.js'
9 </script> 52 import config from '@/config.js'
53 import _ from 'lodash'
54 import {
55 onMounted,
56 ref
57 } from 'vue'
58 import {
59 onLoad,
60 onShow
61 } from '@dcloudio/uni-app'
62 const app = getApp();
63 const queryParams = ref({
64 // pageNum: 1,
65 // pageSize: 10
66 status: '0',
67 type: '1'
68 })
69 const navs = ref(['审核中', '审核通过', '审核拒绝'])
70 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
71 const current = ref()
72 const infoList = ref([])
73 const total = ref(0)
74 const deptType = ref('')
75 onLoad(() => {
76
77 })
78 onShow(() => {
79 if (app.globalData.isLogin) {
80 init()
81 } else {
82
83 app.firstLoadCallback = () => {
84 init()
85 };
86 }
87 })
88
89 function init() {
90 uni.showLoading({
91 title: '加载中'
92 })
93 deptType.value = app.globalData.deptType
94 getList()
95 }
96
97
98 function getList() {
99 api.getVerityList(queryParams.value).then(res => {
100 uni.hideLoading()
101 const list = []
102 _.each(res.rows, r => {
103 const item = JSON.parse(r.content)
104 item.recordId = r.recordId
105 item.auditStatus = r.auditStatus
106 item.submitStatus = r.submitStatus
107 item.distributeTime = r.distributeTime
108 item.statusStr = statusArr[r.auditStatus]
109 item.remark = r.remark
110 item.isView = r.isView
111 item.sourceData = r
112 item.auditProcess = r.auditProcess
113 list.push(item)
114 })
115 infoList.value = list
116 total.value = res.total
117 })
118 }
119
120 function onClickItem(e) {
121 console.log(e)
122 uni.showLoading({
123 title: '加载中'
124 })
125 queryParams.value.status = e.currentIndex
126 getList()
127 }
128
129 function goDetail(item) {
130 if(item.status!='0'){
131 let path = `/pages/level/applyDetail?examId=${item.examId}`
132 uni.navigateTo({
133 url: path
134 });
135 } else {
136 return
137 }
138
139 }
140
141 function audit(item, flag) {
142 console.log(item.sourceData)
143 var obj = {
144 flag: flag,
145 reason: null,
146 body: [JSON.stringify(item.sourceData)]
147 }
148
149 if (flag == '2') {
150 // 拒绝
151 // 弹出框填写理由
152 uni.showModal({
153 title: '请输入拒绝理由',
154 editable: true,
155 success: function(res) {
156 if (res.confirm) {
157 if (!res.content) {
158 uni.showToast({
159 title: '请输入拒绝理由',
160 icon: 'none'
161 })
162 } else {
163 obj.reason = res.content
164 doApproval(obj)
165 }
166 }
167 }
168 })
169 } else if (flag == '1') {
170 // 二次确认
171 uni.showModal({
172 title: '提示',
173 content: `确定审批通过吗`,
174 success: function(res) {
175 if (res.confirm) {
176 doApproval(obj)
177 }
178 }
179 })
180 }
181 }
182
183 function doApproval(obj) {
184 console.log(obj)
185 api.doVerity(obj).then((res) => {
186 uni.showToast({
187 title: '操作成功',
188 icon: 'none'
189 })
190 getList()
191 })
192 }
193 </script>
10 194
11 <style lang="scss">
12 195
196 <style scoped>
197 .searchbar {
198 display: flex;
199 align-items: center;
200 padding: 25rpx;
201 box-sizing: border-box;
202
203 :deep(.uni-easyinput .uni-easyinput__content) {
204 border-radius: 35rpx;
205 border: none;
206 height: 70rpx;
207 }
208
209 :deep(.uni-easyinput__content-input) {
210 font-size: 26rpx;
211 }
212
213 .invertedbtn-red {
214 border-radius: 50px;
215 background-color: #fff;
216
217 font-size: 30rpx;
218 padding: 10rpx 20rpx;
219 }
220 }
221
222 .mt0 {
223 margin-top: 0 !important;
224 }
225
226 .appList .appItem .name {
227 width: 80%;
228 word-break: break-all;
229 }
13 </style> 230 </style>
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
9 <view class="userlist"> 9 <view class="userlist">
10 <view class="item" v-for="n in list"> 10 <view class="item" v-for="n in list">
11 <view class="photobox"> 11 <view class="photobox">
12 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> 12 <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
13 <view class="colorful" v-else>{{n.name.slice(1,2)}}</view> 13 <view class="colorful" v-else>{{n.name.slice(1,2)}}</view>
14 </view> 14 </view>
15 <view> 15 <view>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
10 <view class="userlist"> 10 <view class="userlist">
11 <view class="item" v-for="n in list"> 11 <view class="item" v-for="n in list">
12 <view class="photobox"> 12 <view class="photobox">
13 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> 13 <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
14 <view class="colorful" v-else>{{n.personName?.slice(0,1)}}</view> 14 <view class="colorful" v-else>{{n.personName?.slice(0,1)}}</view>
15 </view> 15 </view>
16 <view> 16 <view>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
12 <view class="content-box" @click="handleInfo(n)"> 12 <view class="content-box" @click="handleInfo(n)">
13 <view class="flexbox"> 13 <view class="flexbox">
14 <view class="photobox"> 14 <view class="photobox">
15 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> 15 <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
16 <view class="colorful" v-else>{{n.name.slice(0,1)}}</view> 16 <view class="colorful" v-else>{{n.name.slice(0,1)}}</view>
17 </view> 17 </view>
18 <view> 18 <view>
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
9 <view class="userlist"> 9 <view class="userlist">
10 <view class="item" v-for="n in list"> 10 <view class="item" v-for="n in list">
11 <view class="photobox"> 11 <view class="photobox">
12 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> 12 <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
13 <view class="colorful" v-else>{{n.personName?.slice(0,1)}}</view> 13 <view class="colorful" v-else>{{n.personName?.slice(0,1)}}</view>
14 </view> 14 </view>
15 <view> 15 <view>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
15 <image class="icon" v-else src="@/static/member/dx.png" /> 15 <image class="icon" v-else src="@/static/member/dx.png" />
16 </view> 16 </view>
17 <view class="photobox"> 17 <view class="photobox">
18 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image> 18 <image class="photo" v-if="n.photo" :src="config.baseUrl_api+n.photo" mode='aspectFill'></image>
19 <view class="colorful" v-else>{{n.name.slice(0,1)}}</view> 19 <view class="colorful" v-else>{{n.name.slice(0,1)}}</view>
20 </view> 20 </view>
21 <view @click="handleInfo(n)"> 21 <view @click="handleInfo(n)">
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!