4c57b42c by 杨炀

no message

1 parent db787da3
1 <template> 1 <template>
2 <view class="page"> 2 <view class="page">
3 <view class="bgbg"> 3 <view class="bgbg">
4 <view class="welcome">您好! 4 <view class="welcome">您好!
5 {{memberInfo.name}} 5 {{memberInfo.name}}
6 <br />欢迎使用中跆协会员管理系统</view> 6 <br />欢迎使用中跆协会员管理系统
7 </view>
7 <view class="flexbox"> 8 <view class="flexbox">
8 <!-- userType 1:中跆协 2:省 3:市区 4:道馆--> 9 <!-- userType 1:中跆协 2:省 3:市区 4:道馆-->
9 <!-- 4 --> 10 <!-- 4 -->
...@@ -25,7 +26,7 @@ ...@@ -25,7 +26,7 @@
25 </view> 26 </view>
26 <view v-if="userType!='4'" @click="goPath('/pages/group/list')"> 27 <view v-if="userType!='4'" @click="goPath('/pages/group/list')">
27 <image />团体会员查询 28 <image />团体会员查询
28 </view> 29 </view>
29 <!--市区 省 中跆协 --> 30 <!--市区 省 中跆协 -->
30 <view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')"> 31 <view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')">
31 <image />团体会员审核 32 <image />团体会员审核
...@@ -33,7 +34,7 @@ ...@@ -33,7 +34,7 @@
33 <view v-if="userType=='2'" @click="goPath('/pages/group/pay')"> 34 <view v-if="userType=='2'" @click="goPath('/pages/group/pay')">
34 <image />团体会员认证 35 <image />团体会员认证
35 </view> 36 </view>
36 37
37 <view v-if="userType=='2'" @click="goPath('/pages/group/feeBill')"> 38 <view v-if="userType=='2'" @click="goPath('/pages/group/feeBill')">
38 <image />团体会员缴费单 39 <image />团体会员缴费单
39 </view> 40 </view>
...@@ -44,7 +45,31 @@ ...@@ -44,7 +45,31 @@
44 <view v-if="userType!='4'" @click="goPath('/pages/level/approval')"> 45 <view v-if="userType!='4'" @click="goPath('/pages/level/approval')">
45 <image />级位考试审核 46 <image />级位考试审核
46 </view> 47 </view>
48 <view v-if="userType=='2'" @click="goPath('/pages/level/apply')">
49 <image />段位考试申请
50 </view>
47 51
52
53 </view>
54 <view v-if="userType=='1'" class="girdBox">
55 <view @click="goPath('/pages/rank/approval')">
56 <image />段位考试审核
57 </view>
58 <view @click="goPath('/pages/rank/scoreApproval')">
59 <image />考段成绩审核
60 </view>
61 <view @click="goPath('/pages/rank/cert')">
62 <image />考段证书发布
63 </view>
64 <view @click="goPath('/pages/rank/skip/approval')">
65 <image />越段考试审核
66 </view>
67 <view @click="goPath('/pages/rank/skip/scoreApproval')">
68 <image />越段成绩审核
69 </view>
70 <view @click="goPath('/pages/rank/skip/cert')">
71 <image />越段证书发布
72 </view>
48 </view> 73 </view>
49 <uni-section title="待办提醒" padding> 74 <uni-section title="待办提醒" padding>
50 <template v-slot:right> 75 <template v-slot:right>
...@@ -147,20 +172,21 @@ ...@@ -147,20 +172,21 @@
147 uni.showLoading({ 172 uni.showLoading({
148 title: '加载中' 173 title: '加载中'
149 }); 174 });
150 loginServer.getMyOwnMemberInfo().then(res=>{ 175 loginServer.getMyOwnMemberInfo().then(res => {
151 userType.value = app.globalData.userType 176 userType.value = app.globalData.userType
152 memberInfo.value = app.globalData.memberInfo 177 memberInfo.value = app.globalData.memberInfo
153 console.log(userType.value,app.globalData.authenticationStatus) 178 console.log(userType.value, app.globalData.authenticationStatus)
154 if (userType.value != '1' && app.globalData.authenticationStatus != '2' && app.globalData.authenticationStatus != 179 if (userType.value != '1' && app.globalData.authenticationStatus != '2' && app.globalData
155 '4') { 180 .authenticationStatus !=
156 // 注册引导 181 '4') {
157 // uni.navigateTo({ 182 // 注册引导
158 // url: '/pages/index/perfect' 183 // uni.navigateTo({
159 // }); 184 // url: '/pages/index/perfect'
160 } else { 185 // });
161 getMes() 186 } else {
162 } 187 getMes()
163 uni.hideLoading(); 188 }
189 uni.hideLoading();
164 }) 190 })
165 191
166 192
......
...@@ -38,10 +38,6 @@ ...@@ -38,10 +38,6 @@
38 </view> 38 </view>
39 </view> 39 </view>
40 40
41 <view v-if="userType=='2'" class="block-btn-box">
42 <button @click="goMerge" class="btn-red-kx">前往合并 > </button>
43 </view>
44
45 <view class="nodata" v-if="infoList.length==0"> 41 <view class="nodata" v-if="infoList.length==0">
46 <image mode="aspectFit" src="/static/nodata.png"></image> 42 <image mode="aspectFit" src="/static/nodata.png"></image>
47 <text>暂无数据</text> 43 <text>暂无数据</text>
......
...@@ -49,13 +49,8 @@ ...@@ -49,13 +49,8 @@
49 import * as api from '@/common/api.js' 49 import * as api from '@/common/api.js'
50 import config from '@/config.js' 50 import config from '@/config.js'
51 import _ from 'lodash' 51 import _ from 'lodash'
52 import { 52 import { ref } from 'vue'
53 onMounted, 53 import { onLoad } from '@dcloudio/uni-app'
54 ref
55 } from 'vue'
56 import {
57 onLoad
58 } from '@dcloudio/uni-app'
59 const app = getApp(); 54 const app = getApp();
60 const queryParams = ref({ 55 const queryParams = ref({
61 // pageNum: 1, 56 // pageNum: 1,
......
1 <template>
2 <view>
3 <view class="searchbar">
4 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
5 v-model="queryParams.name" placeholder="搜索考级名称" @blur="getList" @clear="getList">
6 </uni-easyinput>
7 <view class="invertedbtn-red" @click="goAdd">+ 添加级位考试</view>
8 </view>
9 <view class="appList">
10 <view class="appItem" v-for="item in list">
11 <view class="status" @click="goDetail(item)">
12 <text :class="{
13 'text-primary':item.status=='1',
14 'text-success':item.status=='2',
15 'text-danger':item.status=='3',
16 'text-warning':item.status=='4'
17 }">{{ item.statusStr }}</text>
18 </view>
19
20 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
21 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
22 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
23 <view class="flexbox" @click="goDetail(item)">
24 <view>
25 申请日期
26 <view>{{item.applyTime.substring(0, 10)}}</view>
27 </view>
28 <view>
29 申请单位
30 <view>{{item.memberName}}</view>
31 </view>
32 <view>
33 通过人数
34 <view>{{item.pass}}</view>
35 </view>
36 </view>
37 <view class="func" v-if="item.status=='0'||item.status=='3'||item.status=='4'">
38 <button @click="editThis(item)">编辑</button>
39 <button @click="handleSubmit(item)">提交审核</button>
40 </view>
41 </view>
42 </view>
43
44
45
46 <view class="nodata" v-if="list.length==0">
47 <image mode="aspectFit" src="/static/nodata.png"></image>
48 <text>暂无数据</text>
49 </view>
50 </view>
51 </template>
52
53 <script setup>
54 import * as api from '@/common/api.js'
55 import config from '@/config.js'
56 import {
57 onMounted,
58 ref
59 } from 'vue'
60 import {
61 onLoad,
62 onShow
63 } from '@dcloudio/uni-app'
64 const app = getApp();
65 const queryParams = ref({
66 // pageNum: 1,
67 // pageSize: 10
68 type: '1',
69 rankStatus: '0'
70 })
71 const navs = ref(['未提交', '审核中', '审核通过', '审核拒绝'])
72 const current = ref()
73 const list = ref([])
74 const total = 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 api.getLevelList(queryParams.value).then(res => {
101 uni.hideLoading()
102 list.value = res.rows
103 total.value = res.total
104 })
105 }
106
107 function goAdd() {
108 let path = `/pages/level/addApply`
109 uni.navigateTo({
110 url: path
111 });
112 }
113
114 function editThis(item) {
115 let path = `/pages/level/addApply?examId=${item.examId}`
116 uni.navigateTo({
117 url: path
118 });
119 }
120 function handleSubmit(item){
121 uni.showModal({
122 title: '提示',
123 content: `确定提交${item.name}进行审核吗`,
124 success: function(res) {
125 if (res.confirm) {
126 uni.showLoading({
127 title:`提交中`
128 })
129 upApply(item.examId)
130 }
131 }
132 })
133 }
134 function upApply(id){
135 api.submitVerity(id).then(res=>{
136 uni.hideLoading()
137 getList()
138 uni.showToast({
139 title:`提交成功`
140 })
141 })
142 }
143
144
145 function goDetail(item) {
146 if(item.status!='0'){
147 let path = `/pages/level/applyDetail?examId=${item.examId}`
148 uni.navigateTo({
149 url: path
150 });
151 } else {
152 return
153 }
154
155 }
156 </script>
157
158
159 <style scoped>
160 .searchbar {
161 display: flex;
162 align-items: center;
163 padding: 25rpx;
164 box-sizing: border-box;
165
166 :deep(.uni-easyinput .uni-easyinput__content) {
167 border-radius: 35rpx;
168 border: none;
169 height: 70rpx;
170 }
171
172 :deep(.uni-easyinput__content-input) {
173 font-size: 26rpx;
174 }
175
176 .invertedbtn-red {
177 border-radius: 50px;
178 background-color: #fff;
179
180 font-size: 30rpx;
181 padding: 10rpx 20rpx;
182 }
183 }
184
185 .mt0 {
186 margin-top: 0 !important;
187 }
188
189 .appList .appItem .name {
190 width: 80%;
191 word-break: break-all;
192 }
193 </style>
1 <template>
2 <view>
3 <view class="wBox">
4 <view class="tt">考级基本信息</view>
5 <view class="ddd">
6 <text class="lab">考级名称:</text>{{ form.name }}
7 </view>
8 <view class="ddd">
9 <text class="lab">申请日期:</text>{{form.applyTime}}
10 </view>
11 <view class="ddd">
12 <text class="lab">申请单位:</text>{{ form.memberName }}
13 </view>
14 <view class="ddd">
15 <text class="lab">考官:</text>{{form.examinerNames?.split(',').join('/')}}
16 </view>
17 <view class="ddd">
18 <text class="lab">考试开始时间:</text>{{form.startTime}}
19 </view>
20 <view class="ddd">
21 <text class="lab">考试结束时间:</text>{{form.endTime}}
22 </view>
23 <view class="ddd">
24 <text class="lab">考级地点:</text>{{form.address}}
25 </view>
26 <view class="ddd" v-if="app.globalData.showPrice">
27 <text class="lab">总金额:</text>{{(form.totalAmount*1).toFixed(2) }}
28 </view>
29 </view>
30 <view class="wBox">
31 <view class="tt">
32 考生信息
33 </view>
34 <view class="vipData">
35 <view><text>{{ tablePersonInfo.total }}</text></view>
36 <view v-for="l in tablePersonInfo.levelArr" :key="l.level">
37 {{ szToHz(l.level) }}级: <text>{{ l.num }} </text>
38 </view>
39 </view>
40 <view class="userlist">
41 <view class="item" v-for="n in list" style="background-color: #fffafa;">
42 <view class="w100">
43 <view class="name">{{n.realName}} <text>{{n.memName}}</text></view>
44 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
45 <view class="flexbox">
46 <view>
47 原有级别
48 <text v-if="n.levelOld">{{ szToHz(n.levelOld) }}</text>
49 <text v-else>十级</text>
50 </view>
51 <view>
52 考试级别
53 <text>
54 {{ szToHz(n.levelNew) }}
55 </text>
56 </view>
57 <view v-if="app.globalData.showPrice">
58 金额
59 <text>
60 {{ (n.examFee * 1).toFixed(2) }}
61 </text>
62 </view>
63 <view>
64 是否通过
65 <text v-if="n.isPass=='1'" class="text-success">通过</text>
66 <text v-else class="text-danger">未通过</text>
67 </view>
68 </view>
69 </view>
70
71 </view>
72 </view>
73
74 </view>
75 <view class="wBox">
76 <view class="tt">
77 审核信息
78 </view>
79 <view>
80 <view class="stepItem" v-for="(n,index) in recordList">
81 <view class="time">{{n.handleDate||'待审批'}}</view>
82 <view class="content">
83 <view class="status">
84 <text :class="{
85 'text-success':n.auditStatus=='1',
86 'text-danger':n.auditStatus=='2',
87 'text-warning':n.auditStatus=='3'
88 }">{{ n.auditStatusStr }}</text>
89 </view>
90 <!-- <view class="name">{{index+1}}</view> -->
91 <view class="deptName">{{n.deptName}}</view>
92 <view v-if="n.auditStatus==2">
93 备注:{{n.reason||'/' }}
94 </view>
95 </view>
96 </view>
97 </view>
98 </view>
99
100 </view>
101 </template>
102
103 <script setup>
104 import * as api from '@/common/api.js'
105 import config from '@/config.js'
106 import _ from 'lodash'
107 import {
108 onMounted,
109 ref
110 } from 'vue'
111 import {
112 onLoad,
113 onShow
114 } from '@dcloudio/uni-app'
115 const app = getApp();
116 const deptType = ref('')
117 const form = ref({})
118 const tablePersonInfo = ref({})
119 const recordList = ref([])
120 const list = ref([])
121 let examId = ''
122 onLoad((option) => {
123 examId = option.examId
124 })
125 onShow(() => {
126 if (app.globalData.isLogin) {
127 init()
128 } else {
129 app.firstLoadCallback = () => {
130 init()
131 };
132 }
133 })
134
135 function init() {
136 uni.showLoading({
137 title: '加载中'
138 })
139 deptType.value = app.globalData.deptType
140 getForm()
141 getRecordList()
142 getTablePersonInfo()
143 }
144
145 function getForm() {
146 api.getLevelApplyInfo(examId).then(res => {
147 uni.hideLoading()
148 form.value = res.data
149 })
150 }
151
152 function getRecordList() {
153 api.getApprovalRecord(examId).then(res => {
154 recordList.value = res.data.levelSteps
155 })
156 }
157 function getTablePersonInfo() {
158 api.getStudentList({
159 examId: examId
160 }).then(res=>{
161 list.value = res.rows
162
163 const total = list.value.length
164 const levelArr = []
165 _.each(list.value, (d) => {
166 const temp = _.find(levelArr, (l) => {
167 return l.level == d.levelNew
168 })
169 if (temp) {
170 temp.num++
171 } else {
172 levelArr.push({
173 level: d.levelNew,
174 num: 1
175 })
176 }
177 })
178
179 tablePersonInfo.value = {
180 total: total,
181 levelArr: _.sortBy(levelArr, (l) => {
182 return l.level
183 })
184 }
185 })
186 }
187 function szToHz(num) {
188 const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
189 return hzArr[parseInt(num)]
190 }
191 </script>
192
193 <style scoped>
194 .wBox {
195 width: 700rpx;
196 padding: 30rpx;
197 margin: 20rpx auto;
198 background: #FFFFFF;
199 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
200 border-radius: 15rpx;
201
202 .tt {
203 color: #0A1629;margin: 0 0 30rpx;
204 font-size: 30rpx;
205 }
206
207 .ddd{font-size: 28rpx;color: #333;
208 .lab{color: #999;display: inline-block;text-align: justify;}
209 }
210 }
211
212 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template> 1 <template>
2 <view> 2 <view>
3 <!-- 段位考试审核 -->
4 <view class="appList">
5 <view class="appItem" v-for="item in list">
6 <view class="status" @click="goDetail(item)">
7 <text :class="{
8 'text-primary':item.status=='1',
9 'text-success':item.status=='2',
10 'text-danger':item.status=='3',
11 'text-warning':item.status=='4'
12 }">{{ item.statusStr }}</text>
13 </view>
3 14
15 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
16 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
17 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
18 <view class="flexbox" @click="goDetail(item)">
19 <view>
20 申请日期
21 <view>{{item.applyTime.substring(0, 10)}}</view>
22 </view>
23 <view>
24 申请单位
25 <view>{{item.memberName}}</view>
26 </view>
27 <view>
28 通过人数
29 <view>{{item.pass}}</view>
30 </view>
31 </view>
32 <view class="func" v-if="item.auditStatus=='0'">
33 <button @click="audit(item,'2')">拒绝</button>
34 <button @click="audit(item,'1')">同意</button>
35 </view>
36 </view>
37 </view>
38
39
40
41 <view class="nodata" v-if="list.length==0">
42 <image mode="aspectFit" src="/static/nodata.png"></image>
43 <text>暂无数据</text>
44 </view>
4 </view> 45 </view>
5 </template> 46 </template>
6 47
7 <script> 48 <script setup>
8 export default { 49 import * as api from '@/common/api.js'
9 data() { 50 import config from '@/config.js'
10 return { 51 import _ from 'lodash'
11 52 import { ref } from 'vue'
12 } 53 import { onLoad,onShow } from '@dcloudio/uni-app'
13 }, 54
14 methods: { 55 const app = getApp();
15 56 const queryParams = ref({
57 // type: '1',
58 // rankStatus: '0'
59 })
60 const list = ref([])
61 const deptType = ref('')
62 onShow(() => {
63 if (app.globalData.isLogin) {
64 init()
65 } else {
66
67 app.firstLoadCallback = () => {
68 init()
69 };
16 } 70 }
71 })
72 function init(){
73 uni.showLoading({
74 title: '加载中'
75 })
76 deptType.value = app.globalData.deptType
77 getList()
78 }
79 function getList() {
80 // api.getLevelList(queryParams.value).then(res => {
81 // uni.hideLoading()
82 // list.value = res.rows
83 // })
84 }
85 function audit(item, flag) {
86 console.log(item.sourceData)
87 var obj = {
88 flag: flag,
89 reason: null,
90 body: [JSON.stringify(item.sourceData)]
91 }
92
93 if (flag == '2') {
94 // 拒绝
95 // 弹出框填写理由
96 uni.showModal({
97 title: '请输入拒绝理由',
98 editable: true,
99 success: function(res) {
100 if (res.confirm) {
101 if (!res.content) {
102 uni.showToast({
103 title: '请输入拒绝理由',
104 icon: 'none'
105 })
106 } else {
107 obj.reason = res.content
108 doApproval(obj)
109 }
110 }
111 }
112 })
113 } else if (flag == '1') {
114 // 二次确认
115 uni.showModal({
116 title: '提示',
117 content: `确定审批通过吗`,
118 success: function(res) {
119 if (res.confirm) {
120 doApproval(obj)
121 }
122 }
123 })
124 }
125 }
126
127 function doApproval(obj) {
128 console.log(obj)
129 api.doVerity(obj).then((res) => {
130 uni.showToast({
131 title: '操作成功',
132 icon: 'none'
133 })
134 getList()
135 })
17 } 136 }
18 </script> 137 </script>
19 138
20 <style> 139 <style lang="scss" scoped>
21 140
22 </style> 141 </style>
......
1 <template>
2 <view>
3 <view class="appList">
4 <view class="appItem" v-for="item in infoList">
5 <view class="status" @click="goDetail(item)">
6 <text :class="{
7 'text-primary':item.auditStatus=='0',
8 'text-success':item.auditStatus=='1',
9 'text-danger':item.auditStatus=='2',
10 'text-warning':item.auditStatus=='3'
11 }">{{ item.statusStr }}</text>
12 </view>
13
14 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
15 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
16 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
17 <view class="flexbox" @click="goDetail(item)">
18 <view>
19 申请日期
20 <view>{{item.applyTime.substring(0, 10)}}</view>
21 </view>
22 <view>
23 申请单位
24 <view>{{item.memberName}}</view>
25 </view>
26 <view>
27 通过人数
28 <view>{{item.pass}}</view>
29 </view>
30 </view>
31 <view class="func">
32 <button @click="send()">一键生成</button>
33 </view>
34 </view>
35 </view>
36
37 <view class="nodata" v-if="infoList.length==0">
38 <image mode="aspectFit" src="/static/nodata.png"></image>
39 <text>暂无数据</text>
40 </view>
41 </view>
42 </template>
43
44 <script setup>
45 import * as api from '@/common/api.js'
46 import config from '@/config.js'
47 import _ from 'lodash'
48 import {
49 onMounted,
50 ref
51 } from 'vue'
52 import {
53 onLoad,
54 onShow
55 } from '@dcloudio/uni-app'
56 const app = getApp();
57 const queryParams = ref({
58 // pageNum: 1,
59 // pageSize: 10
60 status: '0',
61 type: '1'
62 })
63 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
64 const current = ref()
65 const infoList = ref([])
66 const total = ref(0)
67 const deptType = ref('')
68 const userType = ref('')
69 onLoad((option) => {
70
71 })
72 onShow(() => {
73 if (app.globalData.isLogin) {
74 init()
75 } else {
76
77 app.firstLoadCallback = () => {
78 init()
79 };
80 }
81 })
82
83 function init() {
84 uni.showLoading({
85 title: '加载中'
86 })
87 deptType.value = app.globalData.deptType
88 userType.value = app.globalData.userType
89 getList()
90 }
91
92
93 function getList() {
94 api.getVerityList(queryParams.value).then(res => {
95 uni.hideLoading()
96 infoList.value = res.rows
97 })
98 }
99 function goDetail(item) {
100 if(item.status!='0'){
101 let path = `/pages/level/applyDetail?examId=${item.examId}`
102 uni.navigateTo({
103 url: path
104 });
105 } else {
106 return
107 }
108 }
109 function send(){
110
111 }
112 </script>
113
114
115 <style scoped lang="scss">
116 .mt0 {
117 margin-top: 0 !important;
118 }
119
120 .appList .appItem .name {
121 width: 80%;
122 word-break: break-all;
123 }
124
125 </style>
1 <template>
2 <view>
3 <!-- 段位考试审核 -->
4 <view class="appList">
5 <view class="appItem" v-for="item in list">
6 <view class="status" @click="goDetail(item)">
7 <text :class="{
8 'text-primary':item.status=='1',
9 'text-success':item.status=='2',
10 'text-danger':item.status=='3',
11 'text-warning':item.status=='4'
12 }">{{ item.statusStr }}</text>
13 </view>
14
15 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
16 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
17 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
18 <view class="flexbox" @click="goDetail(item)">
19 <view>
20 申请日期
21 <view>{{item.applyTime.substring(0, 10)}}</view>
22 </view>
23 <view>
24 申请单位
25 <view>{{item.memberName}}</view>
26 </view>
27 <view>
28 通过人数
29 <view>{{item.pass}}</view>
30 </view>
31 </view>
32 <view class="func" v-if="item.auditStatus=='0'">
33 <button @click="audit(item,'2')">拒绝</button>
34 <button @click="audit(item,'1')">同意</button>
35 </view>
36 </view>
37 </view>
38
39
40
41 <view class="nodata" v-if="list.length==0">
42 <image mode="aspectFit" src="/static/nodata.png"></image>
43 <text>暂无数据</text>
44 </view>
45 </view>
46 </template>
47
48 <script setup>
49 import * as api from '@/common/api.js'
50 import config from '@/config.js'
51 import _ from 'lodash'
52 import { ref } from 'vue'
53 import { onLoad,onShow } from '@dcloudio/uni-app'
54
55 const app = getApp();
56 const queryParams = ref({
57 // type: '1',
58 // rankStatus: '0'
59 })
60 const list = ref([])
61 const deptType = ref('')
62 onShow(() => {
63 if (app.globalData.isLogin) {
64 init()
65 } else {
66
67 app.firstLoadCallback = () => {
68 init()
69 };
70 }
71 })
72 function init(){
73 uni.showLoading({
74 title: '加载中'
75 })
76 deptType.value = app.globalData.deptType
77 getList()
78 }
79 function getList() {
80 // api.getLevelList(queryParams.value).then(res => {
81 // uni.hideLoading()
82 // list.value = res.rows
83 // })
84 }
85 function audit(item, flag) {
86 console.log(item.sourceData)
87 var obj = {
88 flag: flag,
89 reason: null,
90 body: [JSON.stringify(item.sourceData)]
91 }
92
93 if (flag == '2') {
94 // 拒绝
95 // 弹出框填写理由
96 uni.showModal({
97 title: '请输入拒绝理由',
98 editable: true,
99 success: function(res) {
100 if (res.confirm) {
101 if (!res.content) {
102 uni.showToast({
103 title: '请输入拒绝理由',
104 icon: 'none'
105 })
106 } else {
107 obj.reason = res.content
108 doApproval(obj)
109 }
110 }
111 }
112 })
113 } else if (flag == '1') {
114 // 二次确认
115 uni.showModal({
116 title: '提示',
117 content: `确定审批通过吗`,
118 success: function(res) {
119 if (res.confirm) {
120 doApproval(obj)
121 }
122 }
123 })
124 }
125 }
126
127 function doApproval(obj) {
128 console.log(obj)
129 api.doVerity(obj).then((res) => {
130 uni.showToast({
131 title: '操作成功',
132 icon: 'none'
133 })
134 getList()
135 })
136 }
137 </script>
138
139 <style lang="scss" scoped>
140
141 </style>
1 <template>
2 <view>
3 <view class="wBox">
4 <view class="tt">考级基本信息</view>
5 <view class="ddd">
6 <text class="lab">考级名称:</text>{{ form.name }}
7 </view>
8 <view class="ddd">
9 <text class="lab">申请日期:</text>{{form.applyTime}}
10 </view>
11 <view class="ddd">
12 <text class="lab">申请单位:</text>{{ form.memberName }}
13 </view>
14 <view class="ddd">
15 <text class="lab">考官:</text>{{form.examinerNames?.split(',').join('/')}}
16 </view>
17 <view class="ddd">
18 <text class="lab">考试开始时间:</text>{{form.startTime}}
19 </view>
20 <view class="ddd">
21 <text class="lab">考试结束时间:</text>{{form.endTime}}
22 </view>
23 <view class="ddd">
24 <text class="lab">考级地点:</text>{{form.address}}
25 </view>
26 <view class="ddd" v-if="app.globalData.showPrice">
27 <text class="lab">总金额:</text>{{(form.totalAmount*1).toFixed(2) }}
28 </view>
29 </view>
30 <view class="wBox">
31 <view class="tt">
32 考生信息
33 </view>
34 <view class="vipData">
35 <view><text>{{ tablePersonInfo.total }}</text></view>
36 <view v-for="l in tablePersonInfo.levelArr" :key="l.level">
37 {{ szToHz(l.level) }}级: <text>{{ l.num }} </text>
38 </view>
39 </view>
40 <view class="userlist">
41 <view class="item" v-for="n in list" style="background-color: #fffafa;">
42 <view class="w100">
43 <view class="name">{{n.realName}} <text>{{n.memName}}</text></view>
44 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
45 <view class="flexbox">
46 <view>
47 原有级别
48 <text v-if="n.levelOld">{{ szToHz(n.levelOld) }}</text>
49 <text v-else>十级</text>
50 </view>
51 <view>
52 考试级别
53 <text>
54 {{ szToHz(n.levelNew) }}
55 </text>
56 </view>
57 <view v-if="app.globalData.showPrice">
58 金额
59 <text>
60 {{ (n.examFee * 1).toFixed(2) }}
61 </text>
62 </view>
63 <view>
64 是否通过
65 <text v-if="n.isPass=='1'" class="text-success">通过</text>
66 <text v-else class="text-danger">未通过</text>
67 </view>
68 </view>
69 </view>
70
71 </view>
72 </view>
73
74 </view>
75 <view class="wBox">
76 <view class="tt">
77 审核信息
78 </view>
79 <view>
80 <view class="stepItem" v-for="(n,index) in recordList">
81 <view class="time">{{n.handleDate||'待审批'}}</view>
82 <view class="content">
83 <view class="status">
84 <text :class="{
85 'text-success':n.auditStatus=='1',
86 'text-danger':n.auditStatus=='2',
87 'text-warning':n.auditStatus=='3'
88 }">{{ n.auditStatusStr }}</text>
89 </view>
90 <!-- <view class="name">{{index+1}}</view> -->
91 <view class="deptName">{{n.deptName}}</view>
92 <view v-if="n.auditStatus==2">
93 备注:{{n.reason||'/' }}
94 </view>
95 </view>
96 </view>
97 </view>
98 </view>
99
100 </view>
101 </template>
102
103 <script setup>
104 import * as api from '@/common/api.js'
105 import config from '@/config.js'
106 import _ from 'lodash'
107 import {
108 onMounted,
109 ref
110 } from 'vue'
111 import {
112 onLoad,
113 onShow
114 } from '@dcloudio/uni-app'
115 const app = getApp();
116 const deptType = ref('')
117 const form = ref({})
118 const tablePersonInfo = ref({})
119 const recordList = ref([])
120 const list = ref([])
121 let examId = ''
122 onLoad((option) => {
123 examId = option.examId
124 })
125 onShow(() => {
126 if (app.globalData.isLogin) {
127 init()
128 } else {
129 app.firstLoadCallback = () => {
130 init()
131 };
132 }
133 })
134
135 function init() {
136 uni.showLoading({
137 title: '加载中'
138 })
139 deptType.value = app.globalData.deptType
140 getForm()
141 getRecordList()
142 getTablePersonInfo()
143 }
144
145 function getForm() {
146 api.getLevelApplyInfo(examId).then(res => {
147 uni.hideLoading()
148 form.value = res.data
149 })
150 }
151
152 function getRecordList() {
153 api.getApprovalRecord(examId).then(res => {
154 recordList.value = res.data.levelSteps
155 })
156 }
157 function getTablePersonInfo() {
158 api.getStudentList({
159 examId: examId
160 }).then(res=>{
161 list.value = res.rows
162
163 const total = list.value.length
164 const levelArr = []
165 _.each(list.value, (d) => {
166 const temp = _.find(levelArr, (l) => {
167 return l.level == d.levelNew
168 })
169 if (temp) {
170 temp.num++
171 } else {
172 levelArr.push({
173 level: d.levelNew,
174 num: 1
175 })
176 }
177 })
178
179 tablePersonInfo.value = {
180 total: total,
181 levelArr: _.sortBy(levelArr, (l) => {
182 return l.level
183 })
184 }
185 })
186 }
187 function szToHz(num) {
188 const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
189 return hzArr[parseInt(num)]
190 }
191 </script>
192
193 <style scoped>
194 .wBox {
195 width: 700rpx;
196 padding: 30rpx;
197 margin: 20rpx auto;
198 background: #FFFFFF;
199 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
200 border-radius: 15rpx;
201
202 .tt {
203 color: #0A1629;margin: 0 0 30rpx;
204 font-size: 30rpx;
205 }
206
207 .ddd{font-size: 28rpx;color: #333;
208 .lab{color: #999;display: inline-block;text-align: justify;}
209 }
210 }
211
212 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view>
3 <!-- 段位考试审核 -->
4 <view class="appList">
5 <view class="appItem" v-for="item in list">
6 <view class="status" @click="goDetail(item)">
7 <text :class="{
8 'text-primary':item.status=='1',
9 'text-success':item.status=='2',
10 'text-danger':item.status=='3',
11 'text-warning':item.status=='4'
12 }">{{ item.statusStr }}</text>
13 </view>
14
15 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
16 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
17 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
18 <view class="flexbox" @click="goDetail(item)">
19 <view>
20 申请日期
21 <view>{{item.applyTime.substring(0, 10)}}</view>
22 </view>
23 <view>
24 申请单位
25 <view>{{item.memberName}}</view>
26 </view>
27 <view>
28 通过人数
29 <view>{{item.pass}}</view>
30 </view>
31 </view>
32 <view class="func" v-if="item.auditStatus=='0'">
33 <button @click="audit(item,'2')">拒绝</button>
34 <button @click="audit(item,'1')">同意</button>
35 </view>
36 </view>
37 </view>
38
39
40
41 <view class="nodata" v-if="list.length==0">
42 <image mode="aspectFit" src="/static/nodata.png"></image>
43 <text>暂无数据</text>
44 </view>
45 </view>
46 </template>
47
48 <script setup>
49 import * as api from '@/common/api.js'
50 import config from '@/config.js'
51 import _ from 'lodash'
52 import { ref } from 'vue'
53 import { onLoad,onShow } from '@dcloudio/uni-app'
54
55 const app = getApp();
56 const queryParams = ref({
57 // type: '1',
58 // rankStatus: '0'
59 })
60 const list = ref([])
61 const deptType = ref('')
62 onShow(() => {
63 if (app.globalData.isLogin) {
64 init()
65 } else {
66
67 app.firstLoadCallback = () => {
68 init()
69 };
70 }
71 })
72 function init(){
73 uni.showLoading({
74 title: '加载中'
75 })
76 deptType.value = app.globalData.deptType
77 getList()
78 }
79 function getList() {
80 // api.getLevelList(queryParams.value).then(res => {
81 // uni.hideLoading()
82 // list.value = res.rows
83 // })
84 }
85 function audit(item, flag) {
86 console.log(item.sourceData)
87 var obj = {
88 flag: flag,
89 reason: null,
90 body: [JSON.stringify(item.sourceData)]
91 }
92
93 if (flag == '2') {
94 // 拒绝
95 // 弹出框填写理由
96 uni.showModal({
97 title: '请输入拒绝理由',
98 editable: true,
99 success: function(res) {
100 if (res.confirm) {
101 if (!res.content) {
102 uni.showToast({
103 title: '请输入拒绝理由',
104 icon: 'none'
105 })
106 } else {
107 obj.reason = res.content
108 doApproval(obj)
109 }
110 }
111 }
112 })
113 } else if (flag == '1') {
114 // 二次确认
115 uni.showModal({
116 title: '提示',
117 content: `确定审批通过吗`,
118 success: function(res) {
119 if (res.confirm) {
120 doApproval(obj)
121 }
122 }
123 })
124 }
125 }
126
127 function doApproval(obj) {
128 console.log(obj)
129 api.doVerity(obj).then((res) => {
130 uni.showToast({
131 title: '操作成功',
132 icon: 'none'
133 })
134 getList()
135 })
136 }
137 </script>
138
139 <style lang="scss" scoped>
140
141 </style>
1 <template>
2 <view>
3 <view class="appList">
4 <view class="appItem" v-for="item in infoList">
5 <view class="status" @click="goDetail(item)">
6 <text :class="{
7 'text-primary':item.auditStatus=='0',
8 'text-success':item.auditStatus=='1',
9 'text-danger':item.auditStatus=='2',
10 'text-warning':item.auditStatus=='3'
11 }">{{ item.statusStr }}</text>
12 </view>
13
14 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
15 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
16 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
17 <view class="flexbox" @click="goDetail(item)">
18 <view>
19 申请日期
20 <view>{{item.applyTime.substring(0, 10)}}</view>
21 </view>
22 <view>
23 申请单位
24 <view>{{item.memberName}}</view>
25 </view>
26 <view>
27 通过人数
28 <view>{{item.pass}}</view>
29 </view>
30 </view>
31 <view class="func">
32 <button @click="send()">一键生成</button>
33 </view>
34 </view>
35 </view>
36
37 <view class="nodata" v-if="infoList.length==0">
38 <image mode="aspectFit" src="/static/nodata.png"></image>
39 <text>暂无数据</text>
40 </view>
41 </view>
42 </template>
43
44 <script setup>
45 import * as api from '@/common/api.js'
46 import config from '@/config.js'
47 import _ from 'lodash'
48 import {
49 onMounted,
50 ref
51 } from 'vue'
52 import {
53 onLoad,
54 onShow
55 } from '@dcloudio/uni-app'
56 const app = getApp();
57 const queryParams = ref({
58 // pageNum: 1,
59 // pageSize: 10
60 status: '0',
61 type: '1'
62 })
63 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
64 const current = ref()
65 const infoList = ref([])
66 const total = ref(0)
67 const deptType = ref('')
68 const userType = ref('')
69 onLoad((option) => {
70
71 })
72 onShow(() => {
73 if (app.globalData.isLogin) {
74 init()
75 } else {
76
77 app.firstLoadCallback = () => {
78 init()
79 };
80 }
81 })
82
83 function init() {
84 uni.showLoading({
85 title: '加载中'
86 })
87 deptType.value = app.globalData.deptType
88 userType.value = app.globalData.userType
89 getList()
90 }
91
92
93 function getList() {
94 api.getVerityList(queryParams.value).then(res => {
95 uni.hideLoading()
96 infoList.value = res.rows
97 })
98 }
99 function goDetail(item) {
100 if(item.status!='0'){
101 let path = `/pages/level/applyDetail?examId=${item.examId}`
102 uni.navigateTo({
103 url: path
104 });
105 } else {
106 return
107 }
108 }
109 function send(){
110
111 }
112 </script>
113
114
115 <style scoped lang="scss">
116 .mt0 {
117 margin-top: 0 !important;
118 }
119
120 .appList .appItem .name {
121 width: 80%;
122 word-break: break-all;
123 }
124
125 </style>
1 <template>
2 <view>
3 <!-- 段位考试审核 -->
4 <view class="appList">
5 <view class="appItem" v-for="item in list">
6 <view class="status" @click="goDetail(item)">
7 <text :class="{
8 'text-primary':item.status=='1',
9 'text-success':item.status=='2',
10 'text-danger':item.status=='3',
11 'text-warning':item.status=='4'
12 }">{{ item.statusStr }}</text>
13 </view>
14
15 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
16 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
17 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
18 <view class="flexbox" @click="goDetail(item)">
19 <view>
20 申请日期
21 <view>{{item.applyTime.substring(0, 10)}}</view>
22 </view>
23 <view>
24 申请单位
25 <view>{{item.memberName}}</view>
26 </view>
27 <view>
28 通过人数
29 <view>{{item.pass}}</view>
30 </view>
31 </view>
32 <view class="func" v-if="item.auditStatus=='0'">
33 <button @click="audit(item,'2')">拒绝</button>
34 <button @click="audit(item,'1')">同意</button>
35 </view>
36 </view>
37 </view>
38
39
40
41 <view class="nodata" v-if="list.length==0">
42 <image mode="aspectFit" src="/static/nodata.png"></image>
43 <text>暂无数据</text>
44 </view>
45 </view>
46 </template>
47
48 <script setup>
49 import * as api from '@/common/api.js'
50 import config from '@/config.js'
51 import _ from 'lodash'
52 import { ref } from 'vue'
53 import { onLoad,onShow } from '@dcloudio/uni-app'
54
55 const app = getApp();
56 const queryParams = ref({
57 // type: '1',
58 // rankStatus: '0'
59 })
60 const list = ref([])
61 const deptType = ref('')
62 onShow(() => {
63 if (app.globalData.isLogin) {
64 init()
65 } else {
66
67 app.firstLoadCallback = () => {
68 init()
69 };
70 }
71 })
72 function init(){
73 uni.showLoading({
74 title: '加载中'
75 })
76 deptType.value = app.globalData.deptType
77 getList()
78 }
79 function getList() {
80 // api.getLevelList(queryParams.value).then(res => {
81 // uni.hideLoading()
82 // list.value = res.rows
83 // })
84 }
85 function audit(item, flag) {
86 console.log(item.sourceData)
87 var obj = {
88 flag: flag,
89 reason: null,
90 body: [JSON.stringify(item.sourceData)]
91 }
92
93 if (flag == '2') {
94 // 拒绝
95 // 弹出框填写理由
96 uni.showModal({
97 title: '请输入拒绝理由',
98 editable: true,
99 success: function(res) {
100 if (res.confirm) {
101 if (!res.content) {
102 uni.showToast({
103 title: '请输入拒绝理由',
104 icon: 'none'
105 })
106 } else {
107 obj.reason = res.content
108 doApproval(obj)
109 }
110 }
111 }
112 })
113 } else if (flag == '1') {
114 // 二次确认
115 uni.showModal({
116 title: '提示',
117 content: `确定审批通过吗`,
118 success: function(res) {
119 if (res.confirm) {
120 doApproval(obj)
121 }
122 }
123 })
124 }
125 }
126
127 function doApproval(obj) {
128 console.log(obj)
129 api.doVerity(obj).then((res) => {
130 uni.showToast({
131 title: '操作成功',
132 icon: 'none'
133 })
134 getList()
135 })
136 }
137 </script>
138
139 <style lang="scss" scoped>
140
141 </style>
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!