c450dde1 by 杨炀

no message

1 parent b4b5f990
Showing 129 changed files with 2332 additions and 1660 deletions
This diff could not be displayed because it is too large.
...@@ -40,13 +40,13 @@ const request = function(req) { ...@@ -40,13 +40,13 @@ const request = function(req) {
40 return 40 return
41 } 41 }
42 42
43 if (req.method === 'GET') { 43 // if (req.method === 'GET') {
44 if (!req.params) { 44 // if (!req.params) {
45 req.params = {} 45 // req.params = {}
46 } 46 // }
47 req.params.pageNum = req.params.pageNum || 1 47 // req.params.pageNum = req.params.pageNum || 1
48 req.params.pageSize = req.params.pageSize || 50 48 // req.params.pageSize = req.params.pageSize || 50
49 } 49 // }
50 50
51 // if (req.method == 'POST' && !req.hideLoding) { 51 // if (req.method == 'POST' && !req.hideLoding) {
52 // uni.showLoading({ 52 // uni.showLoading({
...@@ -64,13 +64,13 @@ const request = function(req) { ...@@ -64,13 +64,13 @@ const request = function(req) {
64 switch (res.statusCode) { 64 switch (res.statusCode) {
65 case 200: 65 case 200:
66 const data = res.data || {} 66 const data = res.data || {}
67 if (data.code === 200 || data.pageData?.code === 200) { 67 if (data.code === 0 || data.code === 200 || data.pageData?.code === 200) {
68 resolve(data) 68 resolve(data)
69 } else if (req.url.indexOf('getMemberCountInfo') > -1) { 69 } else if (req.url.indexOf('getMemberCountInfo') > -1) {
70 resolve(data) 70 resolve(data)
71 } else { 71 } else {
72 if (!excludeUrls.includes(req.url)) { 72 // if (!excludeUrls.includes(req.url)) {
73 if (data.msg) { 73 // if (data.msg) {
74 // uni.showModal({ 74 // uni.showModal({
75 // content: data.msg, 75 // content: data.msg,
76 // success: function(res) { 76 // success: function(res) {
...@@ -80,12 +80,12 @@ const request = function(req) { ...@@ -80,12 +80,12 @@ const request = function(req) {
80 uni.showToast({ 80 uni.showToast({
81 title: data.msg, 81 title: data.msg,
82 icon: 'none', 82 icon: 'none',
83 duration: 3000 83 duration: 2000
84 }) 84 })
85 } 85 // }
86 uni.hideLoading() 86 // uni.hideLoading()
87 87
88 } 88 // }
89 89
90 // 登录超时 90 // 登录超时
91 if (data.code === 60002 || data.code === 60001) { 91 if (data.code === 60002 || data.code === 60001) {
......
...@@ -4,8 +4,10 @@ ...@@ -4,8 +4,10 @@
4 4
5 // staging 5 // staging
6 // const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/"; 6 // const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/";
7 // const baseUrl_api = "http://182.92.233.247/stage-api/"; 7 // const baseUrl_api = "http://123.60.96.243//stage-api/";
8 const baseUrl_api = 'http://192.168.1.11:8787' 8 // const baseUrl_api = 'http://192.168.1.11:8787'
9 const baseUrl_api = 'https://ztx.itechtop.cn/stage-api'
10 // const baseUrl_api = 'https://newsystem.taekwondo.org.cn/stage-api/'
9 11
10 export default { 12 export default {
11 baseUrl_api 13 baseUrl_api
......
...@@ -49,8 +49,9 @@ ...@@ -49,8 +49,9 @@
49 </uni-swipe-action> 49 </uni-swipe-action>
50 50
51 <view class="nodata" v-if="list.length==0"> 51 <view class="nodata" v-if="list.length==0">
52 <image mode="aspectFit" src="/static/nodata.png"></image> 52 <image mode="aspectFit" src="/static/nodata.png"></image>
53 <button class="btn-red" @click="gochose">+ 在线选择</button> 53 <text>请选择团队</text>
54 <!-- <button class="btn-red" @click="gochose">+ 在线选择</button> -->
54 </view> 55 </view>
55 56
56 <view class="fixedBottom"> 57 <view class="fixedBottom">
...@@ -126,19 +127,19 @@ ...@@ -126,19 +127,19 @@
126 127
127 function getList() { 128 function getList() {
128 api.getPayList(queryParams.value).then(res => { 129 api.getPayList(queryParams.value).then(res => {
129 list.value = [] 130 list.value = []
130 res.rows.forEach(item => { 131 for(var item of res.rows){
131 if (item.rangeId == queryParams.value.rangeId) { 132 if (item.rangeId == queryParams.value.rangeId) {
132 list.value = item.certList 133 list.value = item.certList
133 formData.value = item 134 formData.value = item
134 return 135 return
135 } 136 }
136 }) 137 }
137 }) 138 })
138 } 139 }
139 140
140 function gochose() { 141 function gochose() {
141 let path = `/pages/group/vipList?rangeId=${queryParams.value.rangeId}` 142 let path = `/group/vipList?rangeId=${queryParams.value.rangeId}`
142 uni.redirectTo({ 143 uni.redirectTo({
143 url: path 144 url: path
144 }); 145 });
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="text-center" v-if="userType=='2'">
4 <view class="cardNav">
5 <view class="active">会员审核</view>
6 <view @click="goMerge">审核合并</view>
7 <view @click="goMergeUp">合并提交</view>
8 </view>
9 </view>
3 <!-- 团队会员审核 --> 10 <!-- 团队会员审核 -->
4 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 11 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
5 styleType="text" activeColor="#AD181F"></uni-segmented-control> 12 styleType="text" activeColor="#AD181F"></uni-segmented-control>
6 <view class="appList"> 13 <view class="appList">
7 <view class="vipData" v-if="userType == '1'" v-show="totalCost>0"> 14 <view class="vipData" v-if="userType == '1'" v-show="totalCost>0">
8 <view>费用合计: 15 <view>费用合计:
9 <text>¥{{ totalCost.toFixed(2) }}</text> 16 <text>¥{{ totalCost.toFixed(2) }}</text>
10 </view> 17 </view>
11 </view> 18 </view>
12 19
13 <view class="appItem" v-for="item in list"> 20 <view class="appItem" v-for="(item,index) in list" :key="index">
14 <view class="status" @click="goDetail(item)"> 21 <view class="status" @click="goDetail(item)">
15 <text v-if="item.auditStatus == 0" class="text-primary">审核中</text> 22 <text v-if="item.auditStatus == 0" class="text-primary">审核中</text>
16 <text v-if="item.auditStatus == 1" class="text-success">审核通过</text> 23 <text v-if="item.auditStatus == 1" class="text-success">审核通过</text>
17 <text v-if="item.auditStatus == 2" class="text-danger">审核拒绝</text> 24 <text v-if="item.auditStatus == 2" class="text-danger">审核拒绝</text>
18 <text v-if="item.auditStatus == 3" class="text-warning">审核退回</text> 25 <text v-if="item.auditStatus == 3" class="text-warning">审核撤回</text>
19 </view> 26 </view>
20 <view class="date">提交日期:{{item.content.commitTime}}</view> 27 <view class="date">
21 <view class="date" v-if="item.content.validityTime">原有效期:{{item.content.validityTime}}</view> 28 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
22 <view class="name" @click="goDetail(item)">{{item.content.certName}}</view> 29 {{item.content.commitTime}} 提交</view>
30
31 <view class="name w100" @click="goDetail(item)">
32 <!-- <text class="dot"></text> -->
33 {{item.content.certName}}</view>
23 <view class="flexbox" @click="goDetail(item)"> 34 <view class="flexbox" @click="goDetail(item)">
24 <view> 35 <!-- <view>
25 缴费单位 36 缴费单位
26 <view>{{ item.content.memberName }}</view> 37 <view>{{ item.content.memberName }}</view>
27 </view> 38 </view> -->
28 <view v-if="userType == '3'"> 39 <view v-if="userType == '3'">
29 所属省份 40 所属省份
30 <view>{{item.content.province}}</view> 41 <view>{{item.content.province}}</view>
...@@ -42,8 +53,9 @@ ...@@ -42,8 +53,9 @@
42 <view>{{item.content.renewYear}}</view> 53 <view>{{item.content.renewYear}}</view>
43 </view> 54 </view>
44 <view v-if="deptType == 1"> 55 <view v-if="deptType == 1">
45 会员合计/新会员 56 会员/新会员
46 <view>{{item.content.allCount}}/<text class="text-danger">{{item.content.newCount}}</text></view> 57 <view>{{item.content.allCount}}/<text class="text-danger">{{item.content.newCount}}</text>
58 </view>
47 </view> 59 </view>
48 <view v-if="deptType == 1"> 60 <view v-if="deptType == 1">
49 费用合计 61 费用合计
...@@ -53,10 +65,24 @@ ...@@ -53,10 +65,24 @@
53 <view class="func" v-if="(userType == '3'||userType == '2') && item.auditStatus == 0"> 65 <view class="func" v-if="(userType == '3'||userType == '2') && item.auditStatus == 0">
54 <button @click="audit(item.recordId,'0')">拒绝</button> 66 <button @click="audit(item.recordId,'0')">拒绝</button>
55 <button @click="audit(item.recordId,'1')">同意</button> 67 <button @click="audit(item.recordId,'1')">同意</button>
56 </view> 68 </view>
57 <view class="func" v-if="(userType == '1'&&item.auditStatus == 0)"> 69 <view class="func" v-if="(userType == '1'&&item.auditStatus == 0)">
58 <button @click="audit(item.recordId,'0')">拒绝</button> 70 <button @click="audit(item.recordId,'0')">拒绝</button>
59 <button @click="audit(item.recordId,'1')">同意</button> 71 <button @click="audit(item.recordId,'1')">同意</button>
72 </view>
73 <!-- 中台协 -->
74 <view class="func" v-if="(userType == '1'&&item.auditStatus == 1&&item.canTui==1)">
75 <button @click="sendBack(item)">撤回</button>
76 </view>
77 <!-- 市 -->
78 <view class="func"
79 v-if="(userType == '3'&&item.auditStatus == 1&&item.isView==1&&item.content.allCount > 0)">
80 <button @click="sendBack(item)">撤回</button>
81 </view>
82 <!-- 省 -->
83 <view class="func"
84 v-if="(userType == '2'&&item.auditStatus == 1)">
85 <button @click="sendBack(item)">撤回</button>
60 </view> 86 </view>
61 </view> 87 </view>
62 </view> 88 </view>
...@@ -64,10 +90,10 @@ ...@@ -64,10 +90,10 @@
64 <view class="nodata" v-if="list.length==0"> 90 <view class="nodata" v-if="list.length==0">
65 <image mode="aspectFit" src="/static/nodata.png"></image> 91 <image mode="aspectFit" src="/static/nodata.png"></image>
66 <text>暂无数据</text> 92 <text>暂无数据</text>
67 </view>
68 <view v-if="userType=='2'" class="block-btn-box">
69 <button @click="goMerge" class="btn-red-kx">前往合并 > </button>
70 </view> 93 </view>
94 <!-- <view v-if="userType=='2'" class="block-btn-box">
95 <button @click="goMerge" class="btn-red-kx">前往合并 > </button>
96 </view> -->
71 </view> 97 </view>
72 </template> 98 </template>
73 99
...@@ -84,15 +110,15 @@ ...@@ -84,15 +110,15 @@
84 const app = getApp(); 110 const app = getApp();
85 const queryParams = ref({ 111 const queryParams = ref({
86 // pageNum: 1, 112 // pageNum: 1,
87 // pageSize: 10 113 // pageSize: 10
88 auditStatus:'0' 114 auditStatus: '0'
89 }) 115 })
90 const navs = ref(['审核中', '审核通过', '审核拒绝', '退回']) 116 const navs = ref(['审核中', '审核通过', '审核拒绝', '回'])
91 const current = ref() 117 const current = ref()
92 const list = ref([]) 118 const list = ref([])
93 const total = ref(0) 119 const total = ref(0)
94 const deptType = ref('') 120 const deptType = ref('')
95 const userType = ref('') 121 const userType = ref('')
96 const totalCost = ref(0) 122 const totalCost = ref(0)
97 onLoad(() => { 123 onLoad(() => {
98 if (app.globalData.isLogin) { 124 if (app.globalData.isLogin) {
...@@ -106,8 +132,8 @@ ...@@ -106,8 +132,8 @@
106 }) 132 })
107 133
108 function init() { 134 function init() {
109 deptType.value = app.globalData.deptType 135 deptType.value = app.globalData.deptType
110 userType.value = app.globalData.userType 136 userType.value = app.globalData.userType
111 console.log(userType.value) 137 console.log(userType.value)
112 getList() 138 getList()
113 } 139 }
...@@ -118,26 +144,26 @@ ...@@ -118,26 +144,26 @@
118 getList() 144 getList()
119 } 145 }
120 146
121 function getList() { 147 function getList() {
122 uni.showLoading({ 148 uni.showLoading({
123 title:'加载中' 149 title: '加载中'
124 }) 150 })
125 if(deptType.value==2||deptType.value==3){ 151 if (deptType.value == 2 || deptType.value == 3) {
126 // 省 152 // 省
127 queryParams.value.mergeFlag = 0 153 queryParams.value.mergeFlag = 0
128 }else if(deptType.value==1){ 154 } else if (deptType.value == 1) {
129 queryParams.value.noEmpty = 1 155 queryParams.value.noEmpty = 1
130 }else if( deptType.value==4||deptType.value==5){ 156 } else if (deptType.value == 4 || deptType.value == 5) {
131 queryParams.value.noEmpty=1 157 queryParams.value.noEmpty = 1
132 } 158 }
133 totalCost.value = 0 159 totalCost.value = 0
134 api.getGroupList(queryParams.value).then(res => { 160 api.getGroupList(queryParams.value).then(res => {
135 uni.hideLoading() 161 uni.hideLoading()
136 list.value = res.rows 162 list.value = res.rows
137 list.value.forEach(item => { 163 list.value.forEach(item => {
138 item.content = JSON.parse(item.content) 164 item.content = JSON.parse(item.content)
139 // item.doc = JSON.parse(item.doc) 165 // item.doc = JSON.parse(item.doc)
140 totalCost.value = totalCost.value + (item.content.allFee * 1) 166 totalCost.value = totalCost.value + (item.content.allFee * 1)
141 }) 167 })
142 total.value = res.total 168 total.value = res.total
143 }) 169 })
...@@ -194,33 +220,69 @@ ...@@ -194,33 +220,69 @@
194 }) 220 })
195 } 221 }
196 222
197 function goDetail(item) { 223 function goDetail(item) {
198 const auditLog = encodeURIComponent(JSON.stringify(item.auditLog)) 224 const auditLog = encodeURIComponent(JSON.stringify(item.auditLog))
199 const form = encodeURIComponent(JSON.stringify(item)) 225 const form = encodeURIComponent(JSON.stringify(item))
200 226
201 if(userType.value=='1'){ 227 if (userType.value == '1') {
202 // 查看 228 // 查看
203 let path = `/pages/group/apply/mergeUpDetail?form=${form}` 229 let path = `/group/apply/mergeUpDetail?form=${form}`
204 uni.navigateTo({ 230 uni.navigateTo({
205 url: path 231 url: path
206 }); 232 });
207 } else if(userType.value=='2'||userType.value=='3'){ 233 } else if (userType.value == '2' || userType.value == '3') {
208 // 审核记录 234 // 审核记录
209 let path = `/pages/group/apply/record?certId=${item.content.certId}` 235 let path = `/group/apply/record?certId=${item.content.certId}`
210 uni.navigateTo({ 236 uni.navigateTo({
211 url: path 237 url: path
212 }); 238 });
213 } 239 }
214 } 240 }
215 function goMerge(){ 241
216 let path = `/pages/group/apply/merge` 242 function goMerge() {
217 uni.navigateTo({ 243 let path = `/group/apply/merge`
218 url: path 244 uni.redirectTo({
219 }); 245 url: path
246 });
247 }
248
249 function goMergeUp() {
250 let path = `/group/apply/mergeUp`
251 uni.redirectTo({
252 url: path
253 });
254 }
255
256 function sendBack(row) {
257 uni.showModal({
258 title: '提示',
259 content: `确定撤回${row.content.certName}吗`,
260 success: function(res) {
261 if (res.confirm) {
262 api.groupWithDraw({
263 recordId: row.recordId,
264 reason: row.reason
265 }).then(res => {
266 uni.showToast({
267 title: '操作成功',
268 icon: 'none'
269 })
270 getList()
271 })
272
273 }
274 }
275 })
220 } 276 }
221 </script> 277 </script>
222 278
223 <style scoped> 279 <style scoped>
224 .mt0{margin-top: 0!important;} 280 .mt0 {
225 .appList .appItem .name{width: 80%;word-break: break-all;} 281 margin-top: 0 !important;
282 }
283
284 .appList .appItem .name {
285 width: 80%;
286 word-break: break-all;
287 }
226 </style> 288 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template> 1 <template>
2 <view class="hasfixedbottom"> 2 <view class="hasfixedbottom">
3 <view class="text-center">
4 <view class="cardNav">
5 <view @click="goApply">会员审核</view>
6 <view class="active">审核合并</view>
7 <view @click="goMergeUp">合并提交</view>
8 </view>
9 </view>
3 <!-- 审批合并 --> 10 <!-- 审批合并 -->
4 <view class="appList"> 11 <view class="appList">
5 <view class="appItem" v-for="item in infoList"> 12 <view class="appItem" v-for="(item,index) in infoList" :key="index">
6 <view @click="checkThis(item)" class="iconbox"> 13 <view @click="checkThis(item)" class="iconbox">
7 <image class="icon" v-if="item.checked" src="@/static/member/dx_dwn.png" /> 14 <image class="icon" v-if="item.checked" :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'"/>
8 <image class="icon" v-else src="@/static/member/dx.png" /> 15 <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" />
9 </view> 16 </view>
10 <view class="status" @click="goDetail(item)"> 17 <view class="status" @click="goDetail(item)">
11 <text v-if="item.auditStatus == 0" class="text-primary">审核中</text> 18 <text v-if="item.auditStatus == 0" class="text-primary">审核中</text>
...@@ -33,9 +40,9 @@ ...@@ -33,9 +40,9 @@
33 </view> 40 </view>
34 </view> 41 </view>
35 42
36 <view class="fixedBottom"> 43 <view class="fixedBottom" v-if="infoList.length>0">
37 <button @click="handleMerge" v-if="infoList.length>0" style="width: 40%;" class="btn-red">合并</button> 44 <button @click="handleMerge" style="width: 40%;" class="btn-red">合并</button>
38 <button @click="goMergeUp" class="btn-red-kx" style="width: 40%;">合并提交 > </button> 45 <!-- <button @click="goMergeUp" class="btn-red-kx" style="width: 40%;">合并提交 > </button> -->
39 </view> 46 </view>
40 47
41 <view class="nodata" v-if="infoList.length==0"> 48 <view class="nodata" v-if="infoList.length==0">
...@@ -107,7 +114,7 @@ ...@@ -107,7 +114,7 @@
107 } 114 }
108 115
109 function goDetail(item) { 116 function goDetail(item) {
110 let path = `/pages/group/apply/record?certId=${item.content.certId}` 117 let path = `/group/apply/record?certId=${item.content.certId}`
111 uni.navigateTo({ 118 uni.navigateTo({
112 url: path 119 url: path
113 }); 120 });
...@@ -115,8 +122,14 @@ ...@@ -115,8 +122,14 @@
115 } 122 }
116 function goMergeUp(){ 123 function goMergeUp(){
117 // 合并提交 124 // 合并提交
118 let path = `/pages/group/apply/mergeUp` 125 let path = `/group/apply/mergeUp`
119 uni.navigateTo({ 126 uni.redirectTo({
127 url: path
128 });
129 }
130 function goApply(){
131 let path = `/group/apply/applyList`
132 uni.redirectTo({
120 url: path 133 url: path
121 }); 134 });
122 } 135 }
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="text-center">
4 <view class="cardNav">
5 <view @click="goApply">会员审核</view>
6 <view @click="goMerge">审核合并</view>
7 <view class="active">合并提交</view>
8 </view>
9 </view>
3 <!-- 团队会员审核 --> 10 <!-- 团队会员审核 -->
4 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 11 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
5 styleType="text" activeColor="#AD181F"></uni-segmented-control> 12 styleType="text" activeColor="#AD181F"></uni-segmented-control>
6 <view class="appList"> 13 <view class="appList">
7 <view class="appItem" v-for="item in list"> 14 <view class="appItem" v-for="(item,index) in list" :key="index">
8 <view class="status" @click="goDetail(item)"> 15 <view class="status" @click="goDetail(item)">
9 <text v-if="item.status == 0" class="text-primary">审核中</text> 16 <text v-if="item.status == 0" class="text-primary">审核中</text>
10 <text v-if="item.status == 1" class="text-success">审核通过</text> 17 <text v-if="item.status == 1" class="text-success">审核通过</text>
...@@ -169,13 +176,24 @@ ...@@ -169,13 +176,24 @@
169 function goDetail(item) { 176 function goDetail(item) {
170 const form = encodeURIComponent(JSON.stringify(item)) 177 const form = encodeURIComponent(JSON.stringify(item))
171 // 查看 178 // 查看
172 let path = `/pages/group/apply/mergeUpDetail?&form=${form}` 179 let path = `/group/apply/mergeUpDetail?&form=${form}`
173 uni.navigateTo({ 180 uni.navigateTo({
174 url: path 181 url: path
175 }); 182 });
176 183
177 } 184 }
178 185 function goMerge(){
186 let path = `/group/apply/merge`
187 uni.redirectTo({
188 url: path
189 });
190 }
191 function goApply(){
192 let path = `/group/apply/applyList`
193 uni.redirectTo({
194 url: path
195 });
196 }
179 </script> 197 </script>
180 198
181 <style scoped> 199 <style scoped>
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <z-paging ref="paging" v-model="list" @query="getQuery" emptyViewImg="/static/nodata.png">
4
3 <!-- 机构会员 --> 5 <!-- 机构会员 -->
4 <view class="searchbar"> 6 <view class="searchbar" :slot="top">
5 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" 7 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
6 v-model="query.name" placeholder="搜索会员名称" @blur="getList" @clear="getList"> 8 v-model="queryParams.name" placeholder="搜索会员名称" @blur="getList" @clear="getList">
7 </uni-easyinput> 9 </uni-easyinput>
8 </view> 10 </view>
9 <view class="wBox"> 11 <view class="wBox">
10 <!-- 成员 --> 12 <!-- 成员 -->
11 <view class="userlist"> 13 <view class="userlist">
12 <view class="item" v-for="(n,index) in list" :key="index" @click="goDetail(n)"> 14 <view class="item" v-for="(n,index) in list" :key="index" @click="goDetail(n)">
13 <view class="photobox"> 15 <view class="photobox">
14 <view class="colorful">{{n.name?.slice(0,1)}}</view> 16 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image>
17
18 <view class="colorful" v-else>{{n.name?.slice(0,1)}}</view>
15 </view> 19 </view>
16 <view> 20 <view>
17 <view class="name">{{n.name}} 21 <view class="name">{{n.name}}
18 <text v-if="n.sex == 1">(女)</text> 22 <text v-if="n.sex == 1">(女)</text>
19 <text v-else>(男)</text> 23 <text v-else>(男)</text>
20 </view> 24 </view>
21 <!-- <view class="date">
22 {{n.ancestorNameList[0]}} {{ n.ancestorNameList[1] }}
23 {{n.ancestorNameList[2]}} {{n.memName}}
24 </view> -->
25 <view class="date"> 25 <view class="date">
26 注册时间 {{n.createTime?.slice(0,10) }} 26 注册时间 {{n.createTime?.slice(0,10) }}
27 </view> 27 </view>
28 </view> 28 </view>
29 <!-- <view class="nian">
30 <text v-if="n.perType==1"> 个人</text>
31 <text v-if="n.perType==2"> 教练</text>
32 <text v-if="n.perType==3"> 考官</text>
33 <text v-if="n.perType==4"> 裁判</text>
34 <text v-if="n.perType==5">临时</text>
35 </view> -->
36 </view> 29 </view>
37 </view> 30 </view>
38 <view class="nodata" v-if="list.length==0"> 31
39 <image mode="aspectFit" src="/static/nodata.png"></image>
40 <text>暂无会员</text>
41 </view>
42 </view> 32 </view>
33 </z-paging>
43 </view> 34 </view>
44 </template> 35 </template>
45 36
...@@ -56,8 +47,10 @@ ...@@ -56,8 +47,10 @@
56 const { 47 const {
57 proxy 48 proxy
58 } = getCurrentInstance() 49 } = getCurrentInstance()
59 const app = getApp(); 50 const app = getApp();
60 const query = ref({ 51
52 const paging = ref(null)
53 const queryParams = ref({
61 sonDeptId: 1, 54 sonDeptId: 1,
62 perType: '1' 55 perType: '1'
63 }) 56 })
...@@ -69,23 +62,41 @@ ...@@ -69,23 +62,41 @@
69 const userType = ref('') 62 const userType = ref('')
70 const deptType = ref('') 63 const deptType = ref('')
71 onLoad((option) => { 64 onLoad((option) => {
72 query.value.sonDeptId = option.deptId 65 queryParams.value.sonDeptId = option.deptId
73 getList() 66 getList()
74 }) 67 })
75 68 function getQuery(pageNum,pageSize) {
69 queryParams.value.pageNum = pageNum
70 queryParams.value.pageSize = pageSize
71 api.selectPageList(queryParams.value).then(res => {
72 paging.value.complete(res.rows)
73 list.value = res.rows
74 for(var l of list.value){
75 if(l.photo&&l.photo.indexOf('http')==-1){
76 l.photo = config.baseUrl_api + l.photo
77 }
78 }
79 })
80 }
76 function getList() { 81 function getList() {
77 uni.showLoading({ 82 uni.showLoading({
78 title:"加载中" 83 title:"加载中"
79 }) 84 })
80 api.selectPageList(query.value).then(res => { 85 api.selectPageList(queryParams.value).then(res => {
81 uni.hideLoading() 86 uni.hideLoading()
82 list.value = res.rows 87 paging.value.complete(res.rows);
88 list.value = res.rows
89 for(var l of list.value){
90 if(l.photo&&l.photo.indexOf('http')==-1){
91 l.photo = config.baseUrl_api + l.photo
92 }
93 }
83 total.value = res.total 94 total.value = res.total
84 }) 95 })
85 } 96 }
86 function goDetail(n){ 97 function goDetail(n){
87 uni.navigateTo({ 98 uni.navigateTo({
88 url: `/pages/personalVip/detail?perId=${n.perId}` 99 url: `/personalVip/detail?perId=${n.perId}`
89 }) 100 })
90 } 101 }
91 </script> 102 </script>
......
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
10 <text v-if="item.record.auditStatus==0" class="text-primary">审核中</text> 10 <text v-if="item.record.auditStatus==0" class="text-primary">审核中</text>
11 <text v-if="item.record.auditStatus==1" class="text-success"> 审核通过</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> 12 <text v-if="item.record.auditStatus==2" class="text-danger"> 审核拒绝</text>
13 <text v-if="item.record.auditStatus==3" class="text-warning">退</text> 13 <text v-if="item.record.auditStatus==3" class="text-warning"></text>
14 </view> 14 </view>
15 <view class="date" @click="goDetail(item)" v-if="item.payTime"> 15 <view class="date" @click="goDetail(item)" v-if="item.payTime">
16 <uni-icons type="calendar" size="16" color="#7D8592"></uni-icons> 16 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
17 <text>{{item.payTime}} 缴费</text> 17 <text>{{item.payTime}} 缴费</text>
18 </view> 18 </view>
19 19
...@@ -193,7 +193,7 @@ ...@@ -193,7 +193,7 @@
193 function goDetail(item) { 193 function goDetail(item) {
194 //详情 194 //详情
195 console.log(item.docId) 195 console.log(item.docId)
196 let path = `/pages/group/feeBillDetail?docId=${item.docId}` 196 let path = `/group/feeBillDetail?docId=${item.docId}`
197 uni.navigateTo({ 197 uni.navigateTo({
198 url: path 198 url: path
199 }); 199 });
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 3 <z-paging ref="paging" v-model="infoList" @query="getQuery" emptyViewImg="/static/nodata.png">
4 styleType="text" activeColor="#AD181F"></uni-segmented-control> 4 <view :slot="top">
5 <view class="searchbar"> 5 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
6 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" 6 styleType="text" activeColor="#AD181F"></uni-segmented-control>
7 v-model="query.name" placeholder="搜索团队会员名称" @blur="getList" @clear="getList"> 7 <view class="searchbar">
8 </uni-easyinput> 8 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
9 </view> 9 v-model="query.name" placeholder="搜索团队会员名称" @blur="getList" @clear="getList">
10 <view class="vipData"> 10 </uni-easyinput>
11 <view>共计 <text>{{ forms?.total }}</text></view> 11 </view>
12 <view>有效会员 <text>{{ forms?.effective }}</text></view> 12 <view class="vipData">
13 <view>过期会员 <text>{{ forms?.expired }}</text></view> 13 <view>共计 <text>{{ forms?.total }}</text></view>
14 <view>即将过期会员 <text>{{ forms?.soon }}</text></view> 14 <view>有效会员 <text>{{ forms?.effective }}</text></view>
15 <view>过期会员 <text>{{ forms?.expired }}</text></view>
16 <view>即将过期会员 <text>{{ forms?.soon }}</text></view>
17 </view>
15 </view> 18 </view>
16 <view class="indexboxre"> 19 <view class="indexboxre">
17 <view class="userlist mt30"> 20 <view class="userlist mt30">
18 <view class="item" v-for="n in infoList" :key="n.memId" @click="handleInfo(n)"> 21 <view class="item" v-for="n in infoList" :key="n.memId">
19 <view @click="handleInfo(n)"> 22 <view @click="handleInfo(n)">
20 <view class="name">{{n.name}}<text v-if="n.memCode"> ({{n.memCode}}) </text></view> 23 <view class="name">{{n.name}}
24 <!-- <text v-if="n.memCode"> ({{n.memCode}}) </text> -->
25 </view>
21 <view class="date">到期时间:{{n.validityDate?.slice(0,10)||'--'}}</view> 26 <view class="date">到期时间:{{n.validityDate?.slice(0,10)||'--'}}</view>
27 </view>
28 <view class="status" style="top: 10rpx;">
29 <text class="text-success" v-if="n.valiStr=='正常'">{{n.valiStr}}</text>
30 <text class="text-warning" v-if="n.valiStr=='已过期'">{{n.valiStr}}</text>
31 <text class="text-primary" v-if="n.valiStr=='即将过期'">{{n.valiStr}}</text>
22 </view> 32 </view>
23 <view class="status" style="bottom: 20rpx;"> 33 <view class="status" style="bottom: 20rpx;">
24 <text class="text-success">{{n.validityMemberCount}}</text>/{{n.allMemberCount}} 34 <text class="text-success">{{n.validityMemberCount}}</text>/{{n.allMemberCount}}
...@@ -30,7 +40,7 @@ ...@@ -30,7 +40,7 @@
30 <text>暂无数据</text> 40 <text>暂无数据</text>
31 </view> 41 </view>
32 </view> 42 </view>
33 43 </z-paging>
34 </view> 44 </view>
35 </template> 45 </template>
36 46
...@@ -47,12 +57,16 @@ ...@@ -47,12 +57,16 @@
47 proxy 57 proxy
48 } = getCurrentInstance() 58 } = getCurrentInstance()
49 const app = getApp(); 59 const app = getApp();
50 const query = ref({ 60 const query = ref({
61 pageNum:1,
62 pageSize:8,
51 fromList: 1, 63 fromList: 1,
52 dType: 4, 64 dType: 4,
65 status: 2
53 }) 66 })
54 const navs = ref(['道馆', '三级协会', '二级协会', '一级协会']) 67 const navs = ref(['道馆', '三级协会', '二级协会', '一级协会'])
55 const list = ref([]) 68 const list = ref([])
69 const paging = ref(null)
56 const forms = ref({}) 70 const forms = ref({})
57 const infoList = ref([]) 71 const infoList = ref([])
58 const total = ref(0) 72 const total = ref(0)
...@@ -78,23 +92,40 @@ ...@@ -78,23 +92,40 @@
78 title: '加载中' 92 title: '加载中'
79 }) 93 })
80 console.log(current.value, currentTabName.value, query.value.dType) 94 console.log(current.value, currentTabName.value, query.value.dType)
81 api.getGroupVipList(query.value).then(res => { 95 api.getGroupVipList(query.value).then(res => {
82 infoList.value = res.rows 96 // infoList.value = res.rows
97 paging.value.complete(res.rows);
83 total.value = res.total 98 total.value = res.total
84 uni.hideLoading() 99 uni.hideLoading()
85 }) 100 })
86 } 101 }
87 102 function getQuery(pageNum,pageSize){
88 function getGroupInfo() { 103 query.value.pageNum = pageNum
104 query.value.pageSize = pageSize
105 api.getGroupVipList(query.value).then(res => {
106 // infoList.value = res.rows
107 paging.value.complete(res.rows);
108 total.value = res.total
109 uni.hideLoading()
110 })
111 }
112 function getGroupInfo() {
113 uni.showLoading({
114 title: '加载中'
115 })
89 api.getMemberCountInfo({ 116 api.getMemberCountInfo({
90 dType: query.value.dType, 117 dType: query.value.dType,
91 fromList: 1 118 fromList: 1
92 }).then(res => { 119 }).then(res => {
93 forms.value = res 120 forms.value = res
121 uni.hideLoading()
94 }) 122 })
95 } 123 }
96 124
97 function onClickItem(e) { 125 function onClickItem(e) {
126 uni.showLoading({
127 title: '加载中'
128 })
98 current.value = e.currentIndex 129 current.value = e.currentIndex
99 currentTabName.value = navs.value[e.currentIndex] 130 currentTabName.value = navs.value[e.currentIndex]
100 if (currentTabName.value == '道馆') { 131 if (currentTabName.value == '道馆') {
...@@ -112,7 +143,7 @@ ...@@ -112,7 +143,7 @@
112 143
113 function handleInfo(n) { 144 function handleInfo(n) {
114 uni.navigateTo({ 145 uni.navigateTo({
115 url: `/pages/group/detail?deptId=${n.deptId}` 146 url: `/group/detail?deptId=${n.deptId}`
116 }) 147 })
117 } 148 }
118 </script> 149 </script>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
8 <view class="invertedbtn-red" v-if="userType=='2'" @click="goAddPay">+ 新建缴费</view> 8 <view class="invertedbtn-red" v-if="userType=='2'" @click="goAddPay">+ 新建缴费</view>
9 </view> 9 </view>
10 <view class="appList"> 10 <view class="appList">
11 <view class="appItem" v-for="item in list"> 11 <view class="appItem" v-for="(item,index) in list" :key="index">
12 <view class="status" @click="goDetail(item)"> 12 <view class="status" @click="goDetail(item)">
13 <text v-if="item?.content?.status==0" class="text-primary">待提交</text> 13 <text v-if="item?.content?.status==0" class="text-primary">待提交</text>
14 <text v-if="item?.content?.status==1" class="text-primary">审核中</text> 14 <text v-if="item?.content?.status==1" class="text-primary">审核中</text>
...@@ -33,8 +33,9 @@ ...@@ -33,8 +33,9 @@
33 </view> 33 </view>
34 </view> 34 </view>
35 <view class="func" v-if="item.content?.status==0||item.content?.status==3||item.content?.status==4"> 35 <view class="func" v-if="item.content?.status==0||item.content?.status==3||item.content?.status==4">
36 <button @click="handleDelete(item)">删除</button>
36 <button @click="handleUpdate(item)">编辑</button> 37 <button @click="handleUpdate(item)">编辑</button>
37 <button v-if="item.content?.status==0" @click="commitFN(item)">提交审核</button> 38 <button @click="commitFN(item)">提交审核</button>
38 </view> 39 </view>
39 </view> 40 </view>
40 </view> 41 </view>
...@@ -95,31 +96,52 @@ ...@@ -95,31 +96,52 @@
95 } 96 }
96 97
97 function commitFN(row) { 98 function commitFN(row) {
98 api.commitGroupPay(row.rangeId).then(res=>{ 99 uni.showModal({
99 uni.showToast({ 100 title: '提示',
100 title:`提交成功!` 101 content: `确定提交吗`,
101 }) 102 success: function(res) {
102 getList() 103 api.commitGroupPay(row.rangeId).then(res2=>{
103 }) 104 uni.showToast({
105 title:`提交成功!`
106 })
107 getList()
108 })
109 }
110 })
111
104 } 112 }
105 function goDetail(item) { 113 function goDetail(item) {
106 //详情 114 //详情
107 const form = encodeURIComponent(JSON.stringify(item)) 115 const form = encodeURIComponent(JSON.stringify(item))
108 // 查看 116 // 查看
109 let path = `/pages/group/payDetail?&form=${form}` 117 let path = `/group/payDetail?&form=${form}`
110 uni.navigateTo({ 118 uni.navigateTo({
111 url: path 119 url: path
112 }); 120 });
113 } 121 }
114 122
115 function goAddPay(){ 123 function goAddPay(){
116 let path = `/pages/group/addGroupMemberPay` 124 let path = `/group/addGroupMemberPay`
117 uni.navigateTo({ 125 uni.navigateTo({
118 url: path 126 url: path
119 }); 127 });
120 } 128 }
129 function handleDelete(row){
130 uni.showModal({
131 title: '提示',
132 content: `确定删除${row.rangeName}吗`,
133 success: function(res) {
134 api.delRange(row.rangeId).then(res2=>{
135 uni.showToast({
136 title:`删除成功!`
137 })
138 getList()
139 })
140 }
141 })
142 }
121 function handleUpdate(row){ 143 function handleUpdate(row){
122 let path = `/pages/group/addGroupMemberPay?rangeId=${row.rangeId}` 144 let path = `/group/addGroupMemberPay?rangeId=${row.rangeId}`
123 uni.navigateTo({ 145 uni.navigateTo({
124 url: path 146 url: path
125 }); 147 });
......
...@@ -7,27 +7,22 @@ ...@@ -7,27 +7,22 @@
7 </view> 7 </view>
8 <view class="indexboxre"> 8 <view class="indexboxre">
9 <view class="tt">会员列表</view> 9 <view class="tt">会员列表</view>
10 <!-- <uni-indexed-list :options="list" :showSelect="true" @click="bindClick"></uni-indexed-list> -->
11 <view class="userlist"> 10 <view class="userlist">
12 <view class="item" v-for="(n,index) in list" :key="index"> 11 <view class="item" v-for="(n,index) in list" :key="index">
13 <view @click="checkThis(n)" v-if="n.canCommit"> 12 <view @click="checkThis(n)" v-if="n.canCommit">
14 <image class="icon" v-if="n.checked" src="@/static/member/dx_dwn.png" /> 13 <image class="icon" v-if="n.checked" :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" />
15 <image class="icon" v-else src="@/static/member/dx.png" /> 14 <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" />
16 </view> 15 </view>
17 <!-- <view class="photobox"> 16 <view>
18 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'></image>
19 <view class="colorful" v-else>{{n.name.slice(0,1)}}</view>
20 </view> -->
21 <view>
22 <view class="name">{{n.name}}
23 </view>
24 <view class="name"> 17 <view class="name">
25 <text v-if="n.deptType == 2">一级协会</text> 18 {{n.name}}
26 <text v-if="n.deptType == 3">直属协会</text> 19 </view>
27 <text v-if="n.deptType == 4">二级协会</text> 20 <view class="name">
28 <text v-if="n.deptType == 5">三级协会</text> 21 <text v-if="n.deptType == 2">一级协会</text>
29 <text v-if="n.deptType == 6">职业性团体会员</text> 22 <text v-if="n.deptType == 3">直属协会</text>
30 23 <text v-if="n.deptType == 4">二级协会</text>
24 <text v-if="n.deptType == 5">三级协会</text>
25 <text v-if="n.deptType == 6">职业性团体会员</text>
31 </view> 26 </view>
32 <view class="date">到期时间:{{n.validityDate?.slice(0,10)}}</view> 27 <view class="date">到期时间:{{n.validityDate?.slice(0,10)}}</view>
33 </view> 28 </view>
...@@ -45,7 +40,7 @@ ...@@ -45,7 +40,7 @@
45 </template> 40 </template>
46 41
47 <script setup> 42 <script setup>
48 import * as api from '@/common/api.js' 43 import * as api from '@/common/api.js'
49 import config from '@/config.js' 44 import config from '@/config.js'
50 import { 45 import {
51 ref, 46 ref,
...@@ -59,58 +54,65 @@ ...@@ -59,58 +54,65 @@
59 } = getCurrentInstance() 54 } = getCurrentInstance()
60 const app = getApp(); 55 const app = getApp();
61 const queryParams = ref({ 56 const queryParams = ref({
62 showMyPersonFlag: 1, 57 showMyPersonFlag: 1,
63 checkPaymentCommit: 1, 58 checkPaymentCommit: 1,
64 queryParams: 1 59 queryParams: 1
65 }) 60 })
66 const list = ref([]) 61 const list = ref([])
67 const total = ref(0) 62 const total = ref(0)
68 const userType = ref('') 63 const userType = ref('')
69 onLoad((option) => { 64 onLoad((option) => {
70 userType.value = app.globalData.userType 65 userType.value = app.globalData.userType
71 queryParams.value.paymentRangeId = option.rangeId 66 queryParams.value.paymentRangeId = option.rangeId
72 getList() 67 getList()
73 }) 68 })
74 69
75 function getList() { 70 function getList() {
71 uni.showLoading({
72 title:'加载中'
73 })
76 api.getMySonList(queryParams.value).then(res => { 74 api.getMySonList(queryParams.value).then(res => {
77 list.value = res.data 75 list.value = res.data.rows
78 total.value = res.data.length 76 total.value = res.data.total
77 uni.hideLoading()
79 }) 78 })
80 } 79 }
81 function checkThis(n){ 80
82 if(n.checked){ 81 function checkThis(n) {
83 n.checked = false 82 if (n.checked) {
84 }else{ 83 n.checked = false
85 n.checked = true 84 } else {
86 } 85 n.checked = true
87 } 86 }
88 function handleImport(){ 87 }
89 var arr=[] 88
90 for(var n of list.value){ 89 function handleImport() {
91 if(n.checked){ 90 var arr = []
92 arr.push(n.memId) 91 for (var n of list.value) {
93 } 92 if (n.checked) {
94 } 93 arr.push(n.memId)
95 if(arr.length==0){ 94 }
96 uni.showToast({ 95 }
97 title:"请选择团体", 96 if (arr.length == 0) {
98 icon:"none" 97 uni.showToast({
99 }) 98 title: "请选择团体",
100 return 99 icon: "none"
101 } 100 })
102 api.addGroupPaymentGroup({ rangeId: queryParams.value.paymentRangeId, memIds: arr.join(',') }).then(res=>{ 101 return
103 let path = `/pages/group/addGroupMemberPay?rangeId=${res.data}` 102 }
104 uni.redirectTo({ 103 api.addGroupPaymentGroup({
105 url: path 104 rangeId: queryParams.value.paymentRangeId,
106 }); 105 memIds: arr.join(',')
107 }) 106 }).then(res => {
107 let path = `/group/addGroupMemberPay?rangeId=${res.data}`
108 uni.redirectTo({
109 url: path
110 });
111 })
108 } 112 }
109 </script> 113 </script>
110 114
111 <style scoped lang="scss"> 115 <style scoped lang="scss">
112
113
114 .indexboxre { 116 .indexboxre {
115 padding: 0 30rpx; 117 padding: 0 30rpx;
116 118
...@@ -121,7 +123,8 @@ ...@@ -121,7 +123,8 @@
121 } 123 }
122 124
123 position: relative; 125 position: relative;
124 height: calc(100vh - 280rpx);overflow: auto; 126 height: calc(100vh - 280rpx);
127 overflow: auto;
125 } 128 }
126 129
127 .searchbar { 130 .searchbar {
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
9 '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + 9 '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
10 (coverSupport ? ', viewport-fit=cover' : '') + '" />') 10 (coverSupport ? ', viewport-fit=cover' : '') + '" />')
11 </script> 11 </script>
12 <title></title> 12 <title>工作台</title>
13 <!--preload-links--> 13 <!--preload-links-->
14 <!--app-context--> 14 <!--app-context-->
15 <style> 15 <style>
......
...@@ -26,7 +26,8 @@ ...@@ -26,7 +26,8 @@
26 </uni-forms-item> 26 </uni-forms-item>
27 <uni-forms-item @updateData="updateData" :label="`考官${ec}`" v-for="ec in examinerForChoose" 27 <uni-forms-item @updateData="updateData" :label="`考官${ec}`" v-for="ec in examinerForChoose"
28 :key="ec"> 28 :key="ec">
29 <view @click="selectFN(ec)" class="mask"> 29 <view class="maskbox">
30 <view class="mask" @click="selectFN(ec)"></view>
30 <uni-easyinput v-model="form[`examiner_${ec}`]" clearable placeholder="点击选择考官" /> 31 <uni-easyinput v-model="form[`examiner_${ec}`]" clearable placeholder="点击选择考官" />
31 </view> 32 </view>
32 </uni-forms-item> 33 </uni-forms-item>
...@@ -37,22 +38,23 @@ ...@@ -37,22 +38,23 @@
37 <view class="wBox" v-if="active == 1"> 38 <view class="wBox" v-if="active == 1">
38 <!-- 添加考生 --> 39 <!-- 添加考生 -->
39 <view class="flexbox"> 40 <view class="flexbox">
40 <button class="btn-red-kx mini w45" @click="chooseOnline"> 41 <button class="btn-red-kx mini w100" @click="chooseOnline">
41 <uni-icons type="personadd" size="16" color="#AD181F"></uni-icons> 42 <uni-icons type="personadd" size="16" color="#AD181F"></uni-icons>
42 在线选择</button> 43 在线选择</button>
43 <button class="btn-red-kx mini w45" @click="handleUpdate"> 44 <!-- <button class="btn-red-kx mini w45" @click="handleUpdate">
44 <uni-icons type="upload" size="16" color="#AD181F"></uni-icons> 45 <uni-icons type="upload" size="16" color="#AD181F"></uni-icons>
45 上传成绩单</button> 46 上传成绩单</button> -->
46 </view> 47 </view>
47 <view class="vipData mt30"> 48 <view class="vipData mt30" style="flex-wrap:wrap">
48 <view><text>{{tablePersonInfo.total}}</text></view> 49 <view class="w25">合计:<text>{{tablePersonInfo.total}}</text></view>
49 <view v-for="l in tablePersonInfo.levelArr" :key="l.level"> 50 <view class="w25" v-for="l in tablePersonInfo.levelArr" :key="l.level">
50 {{ szToHz(l.level) }}级:<text>{{tablePersonInfo.total}}</text> 51 {{ szToHz(l.level) }}级:<text>{{l.num}}</text>
51 </view> 52 </view>
52 </view> 53 </view>
53 <view class="userlist"> 54 <view class="userlist">
54 <view class="item" v-for="n in infoList" style="background-color: #fffafa;"> 55 <view class="item" v-for="(n,index) in infoList" :key="index" style="background-color: #fffafa;">
55 <view class="w100"> 56 <view class="w100">
57 <view class="del" @click="handleDelete(n)">删除</view>
56 <view style="display: flex;"> 58 <view style="display: flex;">
57 <view class="photobox"> 59 <view class="photobox">
58 <image class="photo" v-if="n.photo" :src="n.photo" 60 <image class="photo" v-if="n.photo" :src="n.photo"
...@@ -70,11 +72,12 @@ ...@@ -70,11 +72,12 @@
70 <text style="padding: 15rpx 0;">{{ szToHz(n.levelOld) }}</text> 72 <text style="padding: 15rpx 0;">{{ szToHz(n.levelOld) }}</text>
71 </view> 73 </view>
72 <view style="width: 40%;"> 74 <view style="width: 40%;">
73 考试级别 75 考试级别
74 <view @click="changeLevelfather(n)"> 76 <text style="padding: 15rpx 0;">{{ szToHz(n.levelNew) }}</text>
77 <!-- <view @click="changeLevelfather(n)">
75 <uni-data-select v-model="n.levelNew" :localdata="levelArr" 78 <uni-data-select v-model="n.levelNew" :localdata="levelArr"
76 @change="changeLevel"></uni-data-select> 79 @change="changeLevel"></uni-data-select>
77 </view> 80 </view> -->
78 81
79 </view> 82 </view>
80 83
...@@ -109,11 +112,11 @@ ...@@ -109,11 +112,11 @@
109 112
110 <uni-popup ref="choseStudent" type="bottom" background-color="#fff" animation> 113 <uni-popup ref="choseStudent" type="bottom" background-color="#fff" animation>
111 <view class="popBody"> 114 <view class="popBody">
112 <view class="userlist"> 115 <view class="userlist" style="max-height:80vh;overflow: auto;">
113 <view class="item" v-for=" n in studentList"> 116 <view class="item" v-for=" (n,index) in studentList" :key="index">
114 <view @click="checkThis(n)"> 117 <view @click="checkThis(n)">
115 <image class="icon" v-if="n.checked" src="@/static/member/dx_dwn.png" /> 118 <image class="icon" v-if="n.checked" :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" />
116 <image class="icon" v-else src="@/static/member/dx.png" /> 119 <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" />
117 </view> 120 </view>
118 <view class="photobox"> 121 <view class="photobox">
119 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'> 122 <image class="photo" v-if="n.photo" :src="n.photo" mode='aspectFill'>
...@@ -132,8 +135,8 @@ ...@@ -132,8 +135,8 @@
132 <image mode="aspectFit" src="/static/nodata.png"></image> 135 <image mode="aspectFit" src="/static/nodata.png"></image>
133 <text>无可参加考试会员</text> 136 <text>无可参加考试会员</text>
134 </view> 137 </view>
135 <button class="btn-red-kx" v-if="studentList.length!=0" @click="submitStudents">确定</button> 138 </view>
136 </view> 139 <button class="btn-red-kx" v-if="studentList.length!=0" @click="submitStudents">确定</button>
137 </view> 140 </view>
138 </uni-popup> 141 </uni-popup>
139 142
...@@ -302,9 +305,9 @@ ...@@ -302,9 +305,9 @@
302 } 305 }
303 } 306 }
304 }) 307 })
305 308 const arr = encodeURIComponent(JSON.stringify(chosen))
306 console.log(ec, chosen, type) 309 console.log(ec, chosen, type)
307 let path = `/pages/level/chooseExaminer?type=${type}&chosen=${chosen}&ec=${ec}` 310 let path = `/level/chooseExaminer?type=${type}&chosen=${arr}&ec=${ec}`
308 uni.navigateTo({ 311 uni.navigateTo({
309 url: path 312 url: path
310 }); 313 });
...@@ -355,7 +358,7 @@ ...@@ -355,7 +358,7 @@
355 if (examinerIds.length % 2 === 0) { 358 if (examinerIds.length % 2 === 0) {
356 uni.showToast({ 359 uni.showToast({
357 title: `录入的考官人数必须为单数`, 360 title: `录入的考官人数必须为单数`,
358 icon: 'error' 361 icon: 'none'
359 }) 362 })
360 return 363 return
361 } 364 }
...@@ -395,7 +398,10 @@ ...@@ -395,7 +398,10 @@
395 } 398 }
396 399
397 function chooseOnline() { 400 function chooseOnline() {
398 401 uni.showLoading({
402 title:'加载中',
403 icon:'none'
404 })
399 var obj = { 405 var obj = {
400 memId: memberInfo.memId, 406 memId: memberInfo.memId,
401 examId: form.value.examId, 407 examId: form.value.examId,
...@@ -409,7 +415,8 @@ ...@@ -409,7 +415,8 @@
409 s.photo = config.baseUrl_api + s.photo 415 s.photo = config.baseUrl_api + s.photo
410 } 416 }
411 417
412 } 418 }
419 uni.hideLoading()
413 choseStudent.value.open() 420 choseStudent.value.open()
414 }) 421 })
415 } 422 }
...@@ -540,13 +547,13 @@ ...@@ -540,13 +547,13 @@
540 }) 547 })
541 return 548 return
542 } 549 }
543 if (!form.value.transcript) { 550 // if (!form.value.transcript) {
544 uni.showToast({ 551 // uni.showToast({
545 title: '请上传成绩单', 552 // title: '请上传成绩单',
546 icon: 'none' 553 // icon: 'none'
547 }) 554 // })
548 return 555 // return
549 } 556 // }
550 557
551 uni.showModal({ 558 uni.showModal({
552 title: '提示', 559 title: '提示',
...@@ -637,14 +644,36 @@ ...@@ -637,14 +644,36 @@
637 } 644 }
638 })) 645 }))
639 UpPop.value.close() 646 UpPop.value.close()
647 }
648
649 function handleDelete(row) {
650 uni.showModal({
651 title: '提示',
652 content: `确定删除${row.realName}?`,
653 success: function(res) {
654 if (res.confirm) {
655 api.dellevelPerson(row.id).then(res=>{
656 uni.showToast({
657 title:`操作成功`
658 })
659 getChosedStudentList()
660 })
661 }
662 }
663 })
640 } 664 }
641 </script> 665 </script>
642 666
643 <style lang="scss" scoped> 667 <style lang="scss" scoped>
644 :deep(.uni-progress-bar) { 668 :deep(.uni-progress-bar) {
645 display: none; 669 display: none;
670 }
671 .item{
672 .del{ color: #AD181F;
673 position: absolute;
674 right: 30rpx;
675 font-size: 28rpx;}
646 } 676 }
647
648 .wBox { 677 .wBox {
649 width: 700rpx; 678 width: 700rpx;
650 padding: 30rpx; 679 padding: 30rpx;
...@@ -660,5 +689,11 @@ ...@@ -660,5 +689,11 @@
660 689
661 .popBody { 690 .popBody {
662 padding: 40rpx 30rpx; 691 padding: 40rpx 30rpx;
663 } 692 }
693 .maskbox{position:relative;
694 .mask{position: absolute;width:calc(100% - 34px);height: 100%;z-index: 10;
695 background-color: red;opacity: 0;
696 }
697 }
698 :deep(.file-picker__progress){opacity:0;}
664 </style> 699 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template> 1 <template>
2 <view> 2 <view>
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="queryParams.name" placeholder="搜索考级名称" @blur="getList" @clear="getList"> 5 v-model="queryParams.name" placeholder="搜索考级名称" @blur="getList" @clear="getList">
6 </uni-easyinput> 6 </uni-easyinput>
7 <view class="invertedbtn-red" @click="goAdd">+ 添加级位考试</view> 7 <view class="invertedbtn-red" v-if="isExam=='0'" @click="goAdd">+ 添加级位考试</view>
8 </view> 8 </view>
9 <view class="appList"> 9 <view class="appList">
10 <view class="appItem" v-for="(item,index) in list" :key="item"> 10 <view class="appItem" v-for="(item,index) in list" :key="item">
11 <view class="status" @click="goDetail(item)"> 11 <view class="status" @click="goDetail(item)">
12 <text v-if="item.status=='0'" class="text-primary">{{ item.statusStr }}</text> 12 <text v-if="item.status=='0'" class="text-primary">{{ item.statusStr }}</text>
13 <text v-if="item.status=='1'" class="text-primary">{{ item.statusStr }}</text> 13 <text v-if="item.status=='1'" class="text-primary">{{ item.statusStr }}</text>
14 <text v-if="item.status=='2'" class="text-success">{{ item.statusStr }}</text> 14 <text v-if="item.status=='2'" class="text-success">{{ item.statusStr }}</text>
15 <text v-if="item.status=='3'" class="text-danger">{{ item.statusStr }}</text> 15 <text v-if="item.status=='3'" class="text-danger">{{ item.statusStr }}</text>
16 <text v-if="item.status=='4'" class="text-warning">{{ item.statusStr }}</text> 16 <text v-if="item.status=='4'" class="text-warning">{{ item.statusStr }}</text>
17 </view> 17 </view>
18 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 18 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
19 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 19 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
20 <view class="pp esp">申请单位:{{item.memberName}}</view> 20 <view class="pp esp">申请单位:{{item.memberName}}</view>
21 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view> 21 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
22 <view class="flexbox" @click="goDetail(item)"> 22 <view class="flexbox" @click="goDetail(item)">
23 <view> 23 <view>
24 申请日期 24 申请日期
25 <view>{{item.applyTime.substring(0, 10)}}</view> 25 <view>{{item.applyTime.substring(0, 10)}}</view>
26 </view> 26 </view>
27 <view> 27 <view>
28 考官 28 考官
29 <view>{{item.examinerNames}}</view> 29 <view>{{item.examinerNames}}</view>
30 </view> 30 </view>
31 <view> 31
32 通过人数 32 <view>
33 <view>{{item.pass}}</view> 33 通过人数
34 </view> 34 <view>{{item.pass}}</view>
35 </view> 35 </view>
36 <view class="func" v-if="item.status=='0'||item.status=='3'||item.status=='4'"> 36 </view>
37 <button @click="editThis(item)">编辑</button> 37 <view class="func" v-if="item.status=='0'||item.status=='3'||item.status=='4'">
38 <button @click="handleSubmit(item)">提交审核</button> 38 <button @click="handleDelete(item)">删除</button>
39 </view> 39 <button @click="editThis(item)">编辑</button>
40 </view> 40 <button @click="handleSubmit(item)">提交审核</button>
41 </view> 41 </view>
42 42 </view>
43 43 </view>
44 44
45 <view class="nodata" v-if="list.length==0"> 45
46 <image mode="aspectFit" src="/static/nodata.png"></image> 46
47 <text>暂无数据</text> 47 <view class="nodata" v-if="list.length==0">
48 </view> 48 <image mode="aspectFit" src="/static/nodata.png"></image>
49 </view> 49 <text>暂无数据</text>
50 </template> 50 </view>
51 51 </view>
52 <script setup> 52 </template>
53 import * as api from '@/common/api.js' 53
54 import config from '@/config.js' 54 <script setup>
55 import { 55 import * as api from '@/common/api.js'
56 onMounted, 56 import config from '@/config.js'
57 ref 57 import {
58 } from 'vue' 58 onMounted,
59 import { 59 ref
60 onLoad, 60 } from 'vue'
61 onShow 61 import {
62 } from '@dcloudio/uni-app' 62 onLoad,
63 const app = getApp(); 63 onShow
64 const queryParams = ref({ 64 } from '@dcloudio/uni-app'
65 // pageNum: 1, 65 const app = getApp();
66 // pageSize: 10 66 const queryParams = ref({
67 type: '1', 67 // pageNum: 1,
68 rankStatus: '0' 68 // pageSize: 10
69 }) 69 type: '1',
70 const navs = ref(['未提交', '审核中', '审核通过', '审核拒绝']) 70 rankStatus: '0'
71 const current = ref() 71 })
72 const list = ref([]) 72 const navs = ref(['未提交', '审核中', '审核通过', '审核拒绝'])
73 const total = ref(0) 73 const current = ref()
74 const deptType = ref('') 74 const list = ref([])
75 onLoad(() => { 75 const total = ref(0)
76 76 const deptType = ref('')
77 }) 77 const userType = ref('')
78 onShow(() => { 78 const isExam = ref('1')
79 if (app.globalData.isLogin) { 79 onShow(() => {
80 init() 80 if (app.globalData.isLogin) {
81 } else { 81 init()
82 82 } else {
83 app.firstLoadCallback = () => { 83
84 init() 84 app.firstLoadCallback = () => {
85 }; 85 init()
86 } 86 };
87 }) 87 }
88 88 })
89 function init() { 89
90 uni.showLoading({ 90 function init() {
91 title: '加载中' 91 uni.showLoading({
92 }) 92 title: '加载中'
93 deptType.value = app.globalData.deptType 93 })
94 getList() 94 deptType.value = app.globalData.deptType
95 } 95 userType.value = app.globalData.userType
96 96 isExam.value = app.globalData.isExam
97 97 getList()
98 function getList() { 98 }
99 api.getLevelList(queryParams.value).then(res => { 99
100 uni.hideLoading() 100
101 list.value = res.rows 101 function getList() {
102 total.value = res.total 102 api.getLevelList(queryParams.value).then(res => {
103 }) 103 uni.hideLoading()
104 } 104 list.value = res.rows
105 105 total.value = res.total
106 function goAdd() { 106 })
107 let path = `/pages/level/addApply` 107 }
108 uni.navigateTo({ 108
109 url: path 109 function goAdd() {
110 }); 110 let path = `/level/addApply`
111 } 111 uni.navigateTo({
112 112 url: path
113 function editThis(item) { 113 });
114 let path = `/pages/level/addApply?examId=${item.examId}` 114 }
115 uni.navigateTo({ 115
116 url: path 116 function editThis(item) {
117 }); 117 let path = `/level/addApply?examId=${item.examId}`
118 } 118 uni.navigateTo({
119 119 url: path
120 function handleSubmit(item) { 120 });
121 uni.showModal({ 121 }
122 title: '提示', 122
123 content: `确定提交${item.name}进行审核吗`, 123 function handleSubmit(item) {
124 success: function(res) { 124 uni.showModal({
125 if (res.confirm) { 125 title: '提示',
126 uni.showLoading({ 126 content: `确定提交${item.name}进行审核吗`,
127 title: `提交中` 127 success: function(res) {
128 }) 128 if (res.confirm) {
129 upApply(item.examId) 129 uni.showLoading({
130 } 130 title: `提交中`
131 } 131 })
132 }) 132 upApply(item.examId)
133 } 133 }
134 134 }
135 function upApply(id) { 135 })
136 api.submitVerity(id).then(res => { 136 }
137 uni.hideLoading() 137 function handleDelete(row) {
138 getList() 138 uni.showModal({
139 uni.showToast({ 139 title: '提示',
140 title: `提交成功` 140 content: `确定删除${row.name}吗`,
141 }) 141 success: function(res) {
142 }) 142 if (res.confirm) {
143 } 143 uni.showLoading({
144 144 title: `删除中`
145 145 })
146 function goDetail(item) { 146 api.delLevel(row.examId).then(res=>{
147 if (item.status != '0') { 147 uni.showToast({
148 let path = `/pages/level/applyDetail?examId=${item.examId}` 148 title:'操作成功!',
149 uni.navigateTo({ 149 icon:'none'
150 url: path 150 })
151 }); 151 uni.hideLoading()
152 } else { 152 getList()
153 // 去编辑 153 })
154 editThis(item) 154 }
155 } 155 }
156 156 })
157 } 157 }
158 </script> 158
159 159 function upApply(id) {
160 160 api.submitVerity(id).then(res => {
161 <style scoped> 161 uni.hideLoading()
162 .searchbar { 162 getList()
163 display: flex; 163 uni.showToast({
164 align-items: center; 164 title: `提交成功`
165 padding: 25rpx; 165 })
166 box-sizing: border-box; 166 })
167 167 }
168 :deep(.uni-easyinput .uni-easyinput__content) { 168
169 border-radius: 35rpx; 169
170 border: none; 170 function goDetail(item) {
171 height: 70rpx; 171 if (item.status != '0') {
172 } 172 let path = `/level/applyDetail?examId=${item.examId}`
173 173 uni.navigateTo({
174 :deep(.uni-easyinput__content-input) { 174 url: path
175 font-size: 26rpx; 175 });
176 } 176 } else {
177 177 // 去编辑
178 .invertedbtn-red { 178 editThis(item)
179 border-radius: 50px; 179 }
180 background-color: #fff; 180
181 181 }
182 font-size: 30rpx; 182 </script>
183 padding: 10rpx 20rpx; 183
184 } 184
185 } 185 <style scoped lang="scss">
186 186 .searchbar {
187 .mt0 { 187 display: flex;
188 margin-top: 0 !important; 188 align-items: center;
189 } 189 padding: 25rpx;
190 190 box-sizing: border-box;
191 .appList .appItem .name { 191
192 width: 80%; 192 :deep(.uni-easyinput .uni-easyinput__content) {
193 word-break: break-all; 193 border-radius: 35rpx;
194 } 194 border: none;
195 height: 70rpx;
196 }
197
198 :deep(.uni-easyinput__content-input) {
199 font-size: 26rpx;
200 }
201
202 .invertedbtn-red {
203 border-radius: 50px;
204 background-color: #fff;
205
206 font-size: 30rpx;
207 padding: 10rpx 20rpx;
208 }
209 }
210
211 .mt0 {
212 margin-top: 0 !important;
213 }
214
215 .appList .appItem .name {
216 width: 80%;
217 word-break: break-all;
218 }
195 </style> 219 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="text-center" v-if="userType=='2'">
4 <view class="cardNav">
5 <view class="active">会员审核</view>
6 <view @click="goMerge">审核合并</view>
7 <view @click="goMergeUp">合并提交</view>
8 </view>
9 </view>
3 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 10 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
4 styleType="text" activeColor="#AD181F"></uni-segmented-control> 11 styleType="text" activeColor="#AD181F"></uni-segmented-control>
5 12
6 <view class="appList"> 13 <view class="appList">
7 <view class="appItem" v-for="item in infoList"> 14 <view class="appItem" v-for="(item,index) in infoList" :key="index">
8 <view class="status" @click="goDetail(item)"> 15 <view class="status" @click="goDetail(item)">
9 <text :class="{ 16 <text :class="{
10 'text-primary':item.auditStatus=='0', 17 'text-primary':item.auditStatus=='0',
...@@ -16,25 +23,29 @@ ...@@ -16,25 +23,29 @@
16 23
17 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 24 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view>
18 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 25 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
26 <view class="pp esp">申请日期:{{item.applyTime.substring(0,10)}}</view>
19 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view> 27 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
20 <view class="flexbox" @click="goDetail(item)"> 28 <view class="flexbox" @click="goDetail(item)">
21 <view> 29 <view v-if="userType!='1'">
22 申请日期 30 考级考官
23 <view>{{item.applyTime.substring(0, 10)}}</view> 31 <view>{{item.examinerNames}}</view>
24 </view> 32 </view>
25 <view> 33 <view>
26 申请单位 34 考级考生数
27 <view>{{item.memberName}}</view> 35 <view>{{item.totalNum}}</view>
28 </view> 36 </view>
29 <view> 37 <view v-if="userType=='1'||userType=='2'">
30 通过人数 38 总金额
31 <view>{{item.pass}}</view> 39 <view>¥{{item.totalAmount}}</view>
32 </view> 40 </view>
33 </view> 41 </view>
34 <view class="func" v-if="item.auditStatus=='0'"> 42 <view class="func" v-if="item.auditStatus=='0'">
35 <button @click="audit(item,'2')">拒绝</button> 43 <button @click="audit(item,'2')">拒绝</button>
36 <button @click="audit(item,'1')">同意</button> 44 <button @click="audit(item,'1')">同意</button>
37 </view> 45 </view>
46 <view class="func" v-if="item.auditStatus=='1'&&item.isView=='1'">
47 <button @click="handleBack(item)">撤回</button>
48 </view>
38 </view> 49 </view>
39 </view> 50 </view>
40 51
...@@ -42,65 +53,62 @@ ...@@ -42,65 +53,62 @@
42 <image mode="aspectFit" src="/static/nodata.png"></image> 53 <image mode="aspectFit" src="/static/nodata.png"></image>
43 <text>暂无数据</text> 54 <text>暂无数据</text>
44 </view> 55 </view>
45 <view v-if="userType=='2'" class="block-btn-box">
46 <button @click="goMerge" class="btn-red-kx">前往合并 > </button>
47 </view>
48 </view> 56 </view>
49 </template> 57 </template>
50 58
51 <script setup> 59 <script setup>
52 import * as api from '@/common/api.js' 60 import * as api from '@/common/api.js'
53 import config from '@/config.js' 61 import config from '@/config.js'
54 import _ from 'lodash' 62 import _ from 'lodash'
55 import { 63 import {
56 onMounted, 64 onMounted,
57 ref 65 ref
58 } from 'vue' 66 } from 'vue'
59 import { 67 import {
60 onLoad, 68 onLoad,
61 onShow 69 onShow
62 } from '@dcloudio/uni-app' 70 } from '@dcloudio/uni-app'
63 const app = getApp(); 71 const app = getApp();
64 const queryParams = ref({ 72 const queryParams = ref({
65 // pageNum: 1, 73 // pageNum: 1,
66 // pageSize: 10 74 // pageSize: 10
67 status: '0', 75 status: '0',
68 type: '1' 76 type: '1'
69 }) 77 })
70 const navs = ref(['审核中', '审核通过', '审核拒绝']) 78 const navs = ref(['审核中', '审核通过', '审核拒绝', '审批撤回'])
71 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] 79 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
72 const current = ref() 80 const current = ref()
73 const infoList = ref([]) 81 const infoList = ref([])
74 const total = ref(0) 82 const total = ref(0)
75 const deptType = ref('') 83 const deptType = ref('')
76 const userType = ref('') 84 const userType = ref('')
77 onLoad(() => { 85 onLoad(() => {
78 86
79 }) 87 })
80 onShow(() => { 88 onShow(() => {
81 if (app.globalData.isLogin) { 89 if (app.globalData.isLogin) {
82 init() 90 init()
83 } else { 91 } else {
84 92
85 app.firstLoadCallback = () => { 93 app.firstLoadCallback = () => {
86 init() 94 init()
87 }; 95 };
88 } 96 }
89 }) 97 })
90 98
91 function init() { 99 function init() {
92 uni.showLoading({ 100 uni.showLoading({
93 title: '加载中' 101 title: '加载中'
94 }) 102 })
95 deptType.value = app.globalData.deptType 103 deptType.value = app.globalData.deptType
96 userType.value = app.globalData.userType 104 userType.value = app.globalData.userType
97 getList() 105 getList()
98 } 106 }
99 107
100 108
101 function getList() { 109 function getList() {
102 api.getVerityList(queryParams.value).then(res => { 110 api.getVerityList(queryParams.value).then(res => {
103 uni.hideLoading() 111 uni.hideLoading()
104 const list = [] 112 const list = []
105 _.each(res.rows, r => { 113 _.each(res.rows, r => {
106 const item = JSON.parse(r.content) 114 const item = JSON.parse(r.content)
...@@ -116,32 +124,49 @@ ...@@ -116,32 +124,49 @@
116 list.push(item) 124 list.push(item)
117 }) 125 })
118 infoList.value = list 126 infoList.value = list
119 total.value = res.total 127 total.value = res.total
120 }) 128 })
121 } 129 }
122 130
123 function onClickItem(e) { 131 function onClickItem(e) {
124 console.log(e) 132 console.log(e)
125 uni.showLoading({ 133 uni.showLoading({
126 title: '加载中' 134 title: '加载中'
127 }) 135 })
128 queryParams.value.status = e.currentIndex 136 queryParams.value.status = e.currentIndex
129 getList() 137 getList()
130 } 138 }
131 139
132 function goDetail(item) { 140 function goDetail(item) {
141 console.log(item)
142 const form = encodeURIComponent(JSON.stringify(item))
133 if(item.status!='0'){ 143 if(item.status!='0'){
134 let path = `/pages/level/applyDetail?examId=${item.examId}` 144 if(userType.value == '2'){
135 uni.navigateTo({ 145 // 省
136 url: path 146 let path = `/level/applyDetail?examId=${item.examId}&form=${form}`
137 }); 147 uni.navigateTo({
148 url: path
149 });
150 }else{
151 let path = `/level/applyDetail?examId=${item.examId}`
152 uni.navigateTo({
153 url: path
154 });
155 }
156
138 } else { 157 } else {
139 return 158 return
140 } 159 }
141 } 160 }
142 function goMerge(){ 161 function goMerge(){
143 let path = `/pages/level/merge` 162 let path = `/level/merge`
144 uni.navigateTo({ 163 uni.redirectTo({
164 url: path
165 });
166 }
167 function goMergeUp(){
168 let path = `/level/mergeUp`
169 uni.redirectTo({
145 url: path 170 url: path
146 }); 171 });
147 } 172 }
...@@ -186,7 +211,35 @@ ...@@ -186,7 +211,35 @@
186 }) 211 })
187 } 212 }
188 } 213 }
189 214 function handleBack(row){
215 uni.showModal({
216 title: '请输入撤回理由',
217 editable: true,
218 success: function(res) {
219 if (res.confirm) {
220 if (!res.content) {
221 uni.showToast({
222 title: '请输入撤回理由',
223 icon: 'none'
224 })
225 } else {
226 var obj = {
227 flag: '2',
228 reason: res.content,
229 recordId: row.recordId
230 }
231 api.doVerityBack(obj).then(rr=>{
232 uni.showToast({
233 title: '操作成功',
234 icon: 'none'
235 })
236 getList()
237 })
238 }
239 }
240 }
241 })
242 }
190 function doApproval(obj) { 243 function doApproval(obj) {
191 console.log(obj) 244 console.log(obj)
192 api.doVerity(obj).then((res) => { 245 api.doVerity(obj).then((res) => {
...@@ -196,18 +249,18 @@ ...@@ -196,18 +249,18 @@
196 }) 249 })
197 getList() 250 getList()
198 }) 251 })
199 } 252 }
200 </script> 253 </script>
254
201 255
256 <style scoped lang="scss">
257 .mt0 {
258 margin-top: 0 !important;
259 }
202 260
203 <style scoped lang="scss"> 261 .appList .appItem .name {
204 .mt0 { 262 width: 80%;
205 margin-top: 0 !important; 263 word-break: break-all;
206 }
207
208 .appList .appItem .name {
209 width: 80%;
210 word-break: break-all;
211 } 264 }
212 265
213 </style> 266 </style>
......
...@@ -8,16 +8,16 @@ ...@@ -8,16 +8,16 @@
8 <view class="indexboxre"> 8 <view class="indexboxre">
9 <view class="userlist"> 9 <view class="userlist">
10 <view class="item" v-for="(n,index) in list" :key="index"> 10 <view class="item" v-for="(n,index) in list" :key="index">
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="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>
16 <view class="name">{{n.name}}</view> 16 <view class="name">{{n.name}}</view>
17 <view class="date">会员号:{{n.perCode||'-'}}</view> 17 <view class="date">会员号:{{n.perCode||'-'}}</view>
18 </view> 18 </view>
19 <view class="status"> 19 <view class="status">
20 <text v-if="checkChosen(n)">选择</text> 20 <text v-if="n.disabled">选择</text>
21 <text v-else class="text-primary" @click="handleChoose(n)">选择</text> 21 <text v-else class="text-primary" @click="handleChoose(n)">选择</text>
22 22
23 </view> 23 </view>
...@@ -54,11 +54,11 @@ ...@@ -54,11 +54,11 @@
54 const userType = ref('') 54 const userType = ref('')
55 let chosen = [] 55 let chosen = []
56 let ec = null 56 let ec = null
57 onLoad((options) => { 57 onLoad((option) => {
58 console.log(options) 58 query.value.type = option.type
59 query.value.type = options.type 59 chosen = JSON.parse(decodeURIComponent(option.chosen)) || []
60 chosen = options.chosen || [] 60 ec = option.ec
61 ec = options.ec 61 console.log(chosen)
62 }) 62 })
63 63
64 function getList() { 64 function getList() {
...@@ -73,7 +73,8 @@ ...@@ -73,7 +73,8 @@
73 uni.showToast({ 73 uni.showToast({
74 title: '未查询到考官信息', 74 title: '未查询到考官信息',
75 icon: "error" 75 icon: "error"
76 }) 76 })
77 list.value = []
77 return 78 return
78 } 79 }
79 list.value = res.data 80 list.value = res.data
...@@ -81,6 +82,11 @@ ...@@ -81,6 +82,11 @@
81 if(l.photo&&l.photo.indexOf('http')==-1){ 82 if(l.photo&&l.photo.indexOf('http')==-1){
82 l.photo = config.baseUrl_api + l.photo 83 l.photo = config.baseUrl_api + l.photo
83 } 84 }
85 for(var t of chosen){
86 if(t.perId == l.perId){
87 l.disabled = true
88 }
89 }
84 } 90 }
85 uni.hideLoading() 91 uni.hideLoading()
86 }) 92 })
...@@ -110,7 +116,7 @@ ...@@ -110,7 +116,7 @@
110 116
111 function handleInfo(n) { 117 function handleInfo(n) {
112 uni.navigateTo({ 118 uni.navigateTo({
113 url: `/pages/personalVip/detail?perId=${n.perId}` 119 url: `/personalVip/detail?perId=${n.perId}`
114 }) 120 })
115 } 121 }
116 </script> 122 </script>
......
1 <template>
2 <view>
3 <z-paging ref="paging" v-model="list" @query="getQuery" emptyViewImg="/static/nodata.png">
4
5 <view class="vipData" :slot="top" style="flex-wrap: wrap;">
6 <view class="w25"><text>{{ tablePersonInfo.total }}</text></view>
7 <view class="w25" v-for="l in tablePersonInfo.levelArr" :key="l.level">
8 {{ szToHz(l.level) }}级: <text>{{ l.num }} </text>
9 </view>
10 </view>
11 <view class="userlist">
12 <view class="item" v-for="(n,index) in list" :key="index" style="background-color: #fffafa;">
13 <view class="w100">
14 <view class="name">{{n.realName}} <text>{{n.memName}}</text></view>
15 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
16 <view class="flexbox">
17 <view>
18 原有级别
19 <text v-if="n.levelOld">{{ szToHz(n.levelOld) }}</text>
20 <text v-else>十级</text>
21 </view>
22 <view>
23 考试级别
24 <text>
25 {{ szToHz(n.levelNew) }}
26 </text>
27 </view>
28 <view v-if="userType=='2'||userType=='1'">
29 金额
30 <text>
31 ¥{{ (n.examFee * 1).toFixed(2) }}
32 </text>
33 </view>
34 <view>
35 是否通过
36 <text v-if="n.isPass=='1'" class="text-success">通过</text>
37 <text v-else class="text-danger">未通过</text>
38 </view>
39 </view>
40 </view>
41 </view>
42 </view>
43
44 </z-paging>
45 </view>
46 </template>
47
48 <script setup>
49 import * as api from '@/common/api.js'
50 import config from '@/config.js'
51 import {
52 onMounted,
53 ref
54 } from 'vue'
55 import {
56 onLoad
57 } from '@dcloudio/uni-app'
58 import _ from 'lodash'
59 const queryParams = ref({
60 pageNum: 1,
61 pageSize: 20
62 })
63 const paging = ref(null)
64 const userType = ref('')
65 const list = ref([])
66 const tablePersonInfo = ref({})
67 const total = ref(0)
68 const app = getApp();
69 onLoad((option)=>{
70 console.log(option)
71 if ('obj' in option) {
72 queryParams.value = JSON.parse(decodeURIComponent(option.obj))
73 }
74 if (app.globalData.isLogin) {
75 userType.value = app.globalData.userType
76 } else {
77
78 app.firstLoadCallback = () => {
79 userType.value = app.globalData.userType
80 };
81 }
82 })
83 onMounted(() => {
84 getList()
85 })
86
87 function getList() {
88 api.getStudentList(queryParams.value).then(res => {
89 paging.value.complete(res.rows);
90
91 const levelArr = []
92 let total = 0
93 if(!queryParams.value.recordId){
94 var obj = {
95 examId:queryParams.value.examId,
96 type:'1'
97 }
98 }else{
99 var obj = {
100 examId:queryParams.value.examId,
101 recordId:queryParams.value.recordId,
102 type:'1'
103 }
104 }
105 api.getExamPersonNum(obj).then(res=>{
106 _.each(res.data, (val, key) => {
107 if (val > 0) {
108 levelArr.push({
109 level: key,
110 num: val
111 })
112 total += val
113 }
114 })
115
116 tablePersonInfo.value = {
117 total: total,
118 levelArr: _.sortBy(levelArr, (l) => {
119 return l.level
120 })
121 }
122 })
123
124 })
125 }
126 function getQuery(pageNum,pageSize) {
127 queryParams.value.pageNum = pageNum
128 queryParams.value.pageSize = pageSize
129 api.getStudentList(queryParams.value).then(res=>{
130 paging.value.complete(res.rows);
131 // total.value = res.total
132
133 const levelArr = []
134 let total = 0
135 api.getExamPersonNum(queryParams.value.examId, '1').then(res=>{
136 _.each(res.data, (val, key) => {
137 if (val > 0) {
138 levelArr.push({
139 level: key,
140 num: val
141 })
142 total += val
143 }
144 })
145
146 tablePersonInfo.value = {
147 total: total,
148 levelArr: _.sortBy(levelArr, (l) => {
149 return l.level
150 })
151 }
152 })
153 })
154 }
155 function szToHz(num) {
156 const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
157 return hzArr[parseInt(num)]
158 }
159 </script>
160
161 <style scoped lang="scss">
162 .userlist{ box-sizing: border-box;padding:20rpx 20rpx 0;
163 .item{border-bottom: 1px dashed #e5e5e5;position: relative;
164 .date{margin-top: 10rpx;}
165 .name{
166 text{margin-left: 1em;
167 color: #4C5359;
168 font-size: 26rpx;}
169 }
170 .nian{position: absolute;right: 20rpx;
171 font-size: 30rpx;
172 color: #AD181F;}
173 }
174 }
175 .searchbar {
176 display: flex;
177 align-items: center;
178 padding: 25rpx;
179 box-sizing: border-box;
180
181 .invertedbtn-red {
182 margin-left: 15rpx;
183 font-size: 30rpx;
184 padding: 16rpx 20rpx;
185 box-sizing: border-box;
186 border-radius: 50rpx;
187 background-color: #fff;
188 }
189
190 :deep(.uni-easyinput .uni-easyinput__content) {
191 border-radius: 35rpx;
192 border: none;
193 height: 70rpx;
194 }
195
196 :deep(.uni-easyinput__content-input) {
197 font-size: 26rpx;
198 }
199 }
200
201
202
203 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template> 1 <template>
2 <view class="hasfixedbottom"> 2 <view class="hasfixedbottom">
3 <view class="appList"> 3 <view class="text-center">
4 <view class="appItem" v-for="item in infoList"> 4 <view class="cardNav">
5 <view @click="checkThis(item)" class="iconbox"> 5 <view @click="goApproval">会员审核</view>
6 <image class="icon" v-if="item.checked" src="@/static/member/dx_dwn.png" /> 6 <view class="active">审核合并</view>
7 <image class="icon" v-else src="@/static/member/dx.png" /> 7 <view @click="goMergeUp">合并提交</view>
8 </view> 8 </view>
9 <view class="status" @click="goDetail(item)"> 9 </view>
10 <text :class="{ 10 <view class="appList">
11 'text-success':item.auditStatus=='1', 11 <view class="appItem" v-for="(item,index) in infoList" :key="index">
12 'text-danger':item.auditStatus=='2', 12 <view @click="checkThis(item)" class="iconbox">
13 'text-warning':item.auditStatus=='3' 13 <image class="icon" v-if="item.checked" :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" />
14 }">{{ item.statusStr }}</text> 14 <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" />
15 </view> 15 </view>
16 16 <view class="status" @click="goDetail(item)">
17 <view class="date" v-if="item.applyTime">上报日期:{{item.applyTime}}</view> 17 <text :class="{
18 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 18 'text-success':item.auditStatus=='1',
19 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view> 19 'text-danger':item.auditStatus=='2',
20 <view class="flexbox" @click="goDetail(item)"> 20 'text-warning':item.auditStatus=='3'
21 <view> 21 }">{{ item.statusStr }}</text>
22 上报单位 22 </view>
23 <view>{{item.memberName}}</view> 23
24 </view> 24 <view class="date" v-if="item.applyTime">上报日期:{{item.applyTime}}</view>
25 <view> 25 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
26 考级考官 26 <view class="pp esp">考级日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
27 <view>{{item.examinerNames}}</view> 27 <view class="flexbox" @click="goDetail(item)">
28 </view> 28 <view>
29 <view> 29 上报单位
30 考级考生数 30 <view>{{item.memberName}}</view>
31 <view>{{item.totalNum}}</view> 31 </view>
32 </view> 32 <view>
33 </view> 33 考级考官
34 </view> 34 <view>{{item.examinerNames}}</view>
35 </view> 35 </view>
36 36 <view>
37 37 考级考生数
38 <view class="fixedBottom"> 38 <view>{{item.totalNum}}</view>
39 <button @click="handleMerge" v-if="infoList.length>0" style="width: 40%;" class="btn-red">合并</button> 39 </view>
40 <button @click="goMergeUp" class="btn-red-kx" style="width: 40%;">合并提交 > </button> 40 </view>
41 </view> 41 </view>
42 42 </view>
43 <view class="nodata" v-if="infoList.length==0"> 43
44 <image mode="aspectFit" src="/static/nodata.png"></image> 44
45 <text>暂无数据</text> 45 <view class="fixedBottom" v-if="infoList.length>0">
46 </view> 46 <button @click="handleMerge" style="width: 40%;" class="btn-red">合并</button>
47 </view> 47 </view>
48 </template> 48
49 49 <view class="nodata" v-if="infoList.length==0">
50 <script setup> 50 <image mode="aspectFit" src="/static/nodata.png"></image>
51 import * as api from '@/common/api.js' 51 <text>暂无数据</text>
52 import config from '@/config.js' 52 </view>
53 import _ from 'lodash' 53 </view>
54 import { 54 </template>
55 onMounted, 55
56 ref 56 <script setup>
57 } from 'vue' 57 import * as api from '@/common/api.js'
58 import { 58 import config from '@/config.js'
59 onLoad, 59 import _ from 'lodash'
60 onShow 60 import {
61 } from '@dcloudio/uni-app' 61 onMounted,
62 const app = getApp(); 62 ref
63 const queryParams = ref({ 63 } from 'vue'
64 // pageNum: 1, 64 import {
65 // pageSize: 10 65 onLoad,
66 status: '1', 66 onShow
67 mergeFlag: '0', 67 } from '@dcloudio/uni-app'
68 type: '1' 68 const app = getApp();
69 }) 69 const queryParams = ref({
70 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] 70 // pageNum: 1,
71 // pageSize: 10
72 status: '1',
73 mergeFlag: '0',
74 type: '1'
75 })
76 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
71 const infoList = ref([]) 77 const infoList = ref([])
72 const batchList = ref([]) 78 const batchList = ref([])
73 const total = ref(0) 79 const total = ref(0)
74 const totalCost = ref(0) 80 const totalCost = ref(0)
75 const deptType = ref('') 81 const deptType = ref('')
76 onLoad(() => { 82 onLoad(() => {
77 83
78 }) 84 })
79 onShow(() => { 85 onShow(() => {
80 if (app.globalData.isLogin) { 86 if (app.globalData.isLogin) {
81 init() 87 init()
82 } else { 88 } else {
83 89
84 app.firstLoadCallback = () => { 90 app.firstLoadCallback = () => {
85 init() 91 init()
86 }; 92 };
87 } 93 }
88 }) 94 })
89 95
90 function init() { 96 function init() {
91 uni.showLoading({ 97 uni.showLoading({
92 title: '加载中' 98 title: '加载中'
93 }) 99 })
94 deptType.value = app.globalData.deptType 100 deptType.value = app.globalData.deptType
95 getList() 101 getList()
96 } 102 }
97 103
98 104
99 function getList() { 105 function getList() {
100 totalCost.value = 0 106 totalCost.value = 0
101 api.getVerityList(queryParams.value).then(res => { 107 api.getVerityList(queryParams.value).then(res => {
102 const list = [] 108 const list = []
103 _.each(res.rows, r => { 109 _.each(res.rows, r => {
104 const item = JSON.parse(r.content) 110 const item = JSON.parse(r.content)
105 item.recordId = r.recordId 111 item.recordId = r.recordId
106 item.auditStatus = r.auditStatus 112 item.auditStatus = r.auditStatus
107 item.isView = r.isView 113 item.isView = r.isView
108 item.submitStatus = r.submitStatus 114 item.submitStatus = r.submitStatus
109 item.distributeTime = r.distributeTime 115 item.distributeTime = r.distributeTime
110 item.statusStr = statusArr[r.auditStatus] 116 item.statusStr = statusArr[r.auditStatus]
111 item.remark = r.remark 117 item.remark = r.remark
112 item.cuLevels = r.cuLevels 118 item.cuLevels = r.cuLevels
113 item.sourceData = r 119 item.sourceData = r
114 item.auditProcess = r.auditProcess 120 item.auditProcess = r.auditProcess
115 item.checked = false 121 item.checked = false
116 console.log(item) 122 console.log(item)
117 list.push(item) 123 list.push(item)
118 totalCost.value += (item.totalAmount * 1) 124 totalCost.value += (item.totalAmount * 1)
119 }) 125 })
120 infoList.value = list 126 infoList.value = list
121 total.value = res.total 127 total.value = res.total
122 uni.hideLoading() 128 uni.hideLoading()
123 }) 129 })
124 } 130 }
125 131
126 function goDetail(item) { 132 function goDetail(item) {
127 if (item.status != '0') { 133 if (item.status != '0') {
128 let path = `/pages/level/applyDetail?examId=${item.examId}` 134 let path = `/level/applyDetail?examId=${item.examId}`
129 uni.navigateTo({ 135 uni.navigateTo({
130 url: path 136 url: path
131 }); 137 });
132 } else { 138 } else {
133 return 139 return
134 } 140 }
135 141
136 } 142 }
143 function goApproval(){
144 let path = `/level/approval`
145 uni.redirectTo({
146 url: path
147 });
148 }
137 function goMergeUp(){ 149 function goMergeUp(){
138 // 合并提交 150 // 合并提交
139 let path = `/pages/level/mergeUp` 151 let path = `/level/mergeUp`
140 uni.navigateTo({ 152 uni.redirectTo({
141 url: path 153 url: path
142 }); 154 });
143 } 155 }
144 function checkThis(item) { 156 function checkThis(item) {
145 if (item.checked) { 157 if (item.checked) {
146 item.checked = false 158 item.checked = false
147 } else { 159 } else {
148 item.checked = true 160 item.checked = true
149 } 161 }
150 } 162 }
151 var ids = [] 163 var ids = []
152 164
153 function handleMerge() { 165 function handleMerge() {
154 batchList.value = [] 166 batchList.value = []
155 ids = [] 167 ids = []
156 for (var n of infoList.value) { 168 for (var n of infoList.value) {
157 if (n.checked) { 169 if (n.checked) {
158 batchList.value.push(n) 170 batchList.value.push(n)
159 ids.push(n.recordId) 171 ids.push(n.recordId)
160 } 172 }
161 } 173 }
162 if (batchList.value.length == 0) { 174 if (batchList.value.length == 0) {
163 uni.showToast({ 175 uni.showToast({
164 title: `请选择至少一条数据`, 176 title: `请选择至少一条数据`,
165 icon: 'none' 177 icon: 'none'
166 }) 178 })
167 return 179 return
168 } 180 }
169 const mergeFlag = batchList.value.some(item => { 181 const mergeFlag = batchList.value.some(item => {
170 if (item.auditStatus != '1') { 182 if (item.auditStatus != '1') {
171 return uni.showToast({ 183 return uni.showToast({
172 title: `${item.examCode}审核未通过,无法合并`, 184 title: `${item.examCode}审核未通过,无法合并`,
173 icon: 'none' 185 icon: 'none'
174 }) 186 })
175 } 187 }
176 }) 188 })
177 uni.showModal({ 189 uni.showModal({
178 title: '提示', 190 title: '提示',
179 content: `确认合并已选中的数据?`, 191 content: `确认合并已选中的数据?`,
180 success: function(res) { 192 success: function(res) {
181 if (res.confirm) { 193 if (res.confirm) {
182 api.mergeRecords({ 194 api.mergeRecords({
183 body: ids.join(), 195 body: ids.join(),
184 type: queryParams.value.type 196 type: queryParams.value.type
185 }).then(res => { 197 }).then(res => {
186 uni.showToast({ 198 uni.showToast({
187 title: `操作成功` 199 title: `操作成功`
188 }) 200 })
189 getList() 201 getList()
190 }) 202 })
191 } 203 }
192 } 204 }
193 }) 205 })
194 206
195 } 207 }
196 </script> 208 </script>
197 209
198 210
199 <style scoped lang="scss"> 211 <style scoped lang="scss">
200 .mt0 { 212 .mt0 {
201 margin-top: 0 !important; 213 margin-top: 0 !important;
202 } 214 }
203 .appList .appItem{padding: 30rpx 30rpx 30rpx 120rpx;} 215 .appList .appItem{padding: 30rpx 30rpx 30rpx 120rpx;}
204 .appList .appItem .name { 216 .appList .appItem .name {
205 width: 80%; 217 width: 80%;
206 word-break: break-all; 218 word-break: break-all;
207 } 219 }
208 220
209 .icon { 221 .icon {
210 width: 60rpx; 222 width: 60rpx;
211 height: 60rpx; 223 height: 60rpx;
212 margin-right: 16rpx; 224 margin-right: 16rpx;
213 } 225 }
214 </style> 226 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="text-center">
4 <view class="cardNav">
5 <view @click="goApproval">会员审核</view>
6 <view @click="goMerge">审核合并</view>
7 <view class="active">合并提交</view>
8 </view>
9 </view>
3 <!-- 级位合并提交 --> 10 <!-- 级位合并提交 -->
4 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 11 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
5 styleType="text" activeColor="#AD181F"></uni-segmented-control> 12 styleType="text" activeColor="#AD181F"></uni-segmented-control>
13 <view v-show="total>0" class="vipData">
14 <view>费用合计:<text>{{ statistical.totalCost?.toFixed(2) }}</text></view>
15 <view>考试人数合计:<text>{{ statistical.totalNum }}</text></view>
16 </view>
6 <view class="appList"> 17 <view class="appList">
7 <view class="appItem" v-for="item in infoList"> 18 <view class="appItem" v-for="(item,index) in infoList" :key="index">
8 <view class="status" @click="goDetail(item)"> 19 <view class="status" @click="goDetail(item)">
9 <view :class="{ 20 <view :class="{
10 'text-success':item.status=='1', 21 'text-success':item.status=='1',
11 'text-danger':item.status=='2', 22 'text-danger':item.status=='2',
12 'text-warning':item.status=='3' 23 'text-warning':item.status=='3'
13 }"> 24 }">
14 {{ item.auditStatus=='100'?'待提交':statusArr[item.status] }} 25 {{ item.auditStatus=='100'?'待提交':statusArr[item.status] }}
15 </view> 26 </view>
16 </view> 27 </view>
17 <view class="date" v-if="item.handleDate">{{item.handleDate}}</view> 28 <view class="date" v-if="item.handleDate">{{item.handleDate}}</view>
...@@ -33,14 +44,18 @@ ...@@ -33,14 +44,18 @@
33 44
34 <view class="func" v-if="item.auditStatus == 100"> 45 <view class="func" v-if="item.auditStatus == 100">
35 <button @click="handleAudit(item)">提交</button> 46 <button @click="handleAudit(item)">提交</button>
36 <!-- <button v-if="item.lastIds?.slice(0, 1) != '-'" @click="resolution(item)">取消合并</button> --> 47 <button @click="handleCancel(item)">取消合并</button>
37 </view> 48 </view>
49 <view class="func" v-if="(item.isView=='1' && item.auditStatus=='1') || item.payStatus=='3'">
50 <button @click="handleBack(item)">撤回</button>
51 </view>
52
38 </view> 53 </view>
39 </view> 54 </view>
40 55
41 <view class="nodata" v-if="infoList.length==0"> 56 <view class="nodata" v-if="infoList.length==0">
42 <image mode="aspectFit" src="/static/nodata.png"></image> 57 <image mode="aspectFit" src="/static/nodata.png"></image>
43 <button class="btn-red" @click="gohome">回到首页</button> 58 <text>暂无数据</text>
44 </view> 59 </view>
45 </view> 60 </view>
46 </template> 61 </template>
...@@ -49,16 +64,17 @@ ...@@ -49,16 +64,17 @@
49 import * as api from '@/common/api.js' 64 import * as api from '@/common/api.js'
50 import config from '@/config.js' 65 import config from '@/config.js'
51 import _ from 'lodash' 66 import _ from 'lodash'
52 import { ref } from 'vue' 67 import {
53 import { onLoad } from '@dcloudio/uni-app' 68 ref
69 } from 'vue'
70 import {
71 onLoad
72 } from '@dcloudio/uni-app'
54 const app = getApp(); 73 const app = getApp();
55 const queryParams = ref({ 74 const queryParams = ref({
56 // pageNum: 1, 75 // pageNum: 1,
57 // pageSize: 10 76 // pageSize: 10,
58 flowCode: undefined,
59 mergeName: undefined,
60 status: '100', 77 status: '100',
61 examCode: undefined,
62 type: '1' 78 type: '1'
63 }) 79 })
64 const navs = ref(['待提交', '审核中', '审核通过', '审核拒绝']) 80 const navs = ref(['待提交', '审核中', '审核通过', '审核拒绝'])
...@@ -66,7 +82,8 @@ ...@@ -66,7 +82,8 @@
66 const current = ref() 82 const current = ref()
67 const list = ref([]) 83 const list = ref([])
68 const infoList = ref([]) 84 const infoList = ref([])
69 const totalCost = ref(0) 85 const statistical = ref({})
86 const total = ref(0)
70 const deptType = ref('') 87 const deptType = ref('')
71 const userType = ref('') 88 const userType = ref('')
72 onLoad(() => { 89 onLoad(() => {
...@@ -109,6 +126,10 @@ ...@@ -109,6 +126,10 @@
109 uni.showLoading({ 126 uni.showLoading({
110 title: '加载中' 127 title: '加载中'
111 }) 128 })
129 statistical.value = {
130 totalCost: 0,
131 totalNum: 0
132 }
112 api.getVerityMergeList(queryParams.value).then(response => { 133 api.getVerityMergeList(queryParams.value).then(response => {
113 uni.hideLoading() 134 uni.hideLoading()
114 const list = [] 135 const list = []
...@@ -124,10 +145,57 @@ ...@@ -124,10 +145,57 @@
124 item.handleDate = r.handleDate 145 item.handleDate = r.handleDate
125 list.push(item) 146 list.push(item)
126 147
127 totalCost.value += (item.totalAmount * 1) 148 statistical.value.totalCost += (item.totalAmount * 1)
149 statistical.value.totalNum += (item.totalNum * 1)
150
128 }) 151 })
129 infoList.value = list 152 infoList.value = list
130 153 total.value = response.total
154 })
155 }
156 function handleBack(row){
157 uni.showModal({
158 title: '请输入撤回理由',
159 editable: true,
160 success: function(res) {
161 if (res.confirm) {
162 if (!res.content) {
163 uni.showToast({
164 title: '请输入撤回理由',
165 icon: 'none'
166 })
167 } else {
168 var obj = {
169 flag: '2',
170 reason: res.content,
171 recordId: row.recordId
172 }
173 api.doVerityBack(obj).then(rr=>{
174 uni.showToast({
175 title: '操作成功',
176 icon: 'none'
177 })
178 getList()
179 })
180 }
181 }
182 }
183 })
184 }
185 function handleCancel(item) {
186 uni.showModal({
187 title: '提示',
188 content: `确定取消合并${item.mergeName}?`,
189 success: function(res) {
190 if (res.confirm) {
191 api.cancelMerge(item.recordId).then(res => {
192 uni.showToast({
193 title: `操作成功!`
194 })
195 getList()
196 })
197 }
198 }
131 }) 199 })
132 } 200 }
133 201
...@@ -138,13 +206,13 @@ ...@@ -138,13 +206,13 @@
138 success: function(res) { 206 success: function(res) {
139 if (res.confirm) { 207 if (res.confirm) {
140 api.doMergeFlows({ 208 api.doMergeFlows({
141 id: item.recordId, 209 id: item.recordId,
142 flag: '1', 210 flag: '1',
143 type: queryParams.value.type 211 type: queryParams.value.type
144 }).then(res => { 212 }).then(res => {
145 uni.showToast({ 213 uni.showToast({
146 title: `操作成功!` 214 title: `操作成功!`
147 }) 215 })
148 getList() 216 getList()
149 }) 217 })
150 } 218 }
...@@ -153,19 +221,27 @@ ...@@ -153,19 +221,27 @@
153 } 221 }
154 222
155 function goDetail(item) { 223 function goDetail(item) {
156 const form = encodeURIComponent(JSON.stringify(item)) 224 const form = JSON.stringify(item)
157 // 查看 225 // 查看
158 let path = `/pages/level/mergeUpDetail?form=${form}&type=1` 226 let path = `/level/mergeUpDetail?form=${form}&type=1`
159 uni.navigateTo({ 227 uni.navigateTo({
160 url: path 228 url: path
161 }); 229 });
162 230
163 } 231 }
164 function gohome(){ 232
165 let path = `/pages/index/index` 233 function goApproval() {
166 uni.reLaunch({ 234 let path = `/level/approval`
167 url: path 235 uni.redirectTo({
168 }); 236 url: path
237 });
238 }
239
240 function goMerge() {
241 let path = `/level/merge`
242 uni.redirectTo({
243 url: path
244 });
169 } 245 }
170 </script> 246 </script>
171 247
......
1 <template>
2 <view>
3 <view class="wBox">
4 <view class="tt">基本信息</view>
5 <view class="ddd">
6 <text class="lab">结算编号:</text>{{ form.flowCode }}
7 </view>
8 <view class="ddd">
9 <text class="lab">{{ type=='1'?'考级名称':'考段名称' }}</text>{{form.mergeName}}
10 </view>
11 <view class="ddd">
12 <text class="lab">申请单位:</text>{{ form.memName }}
13 </view>
14 <view class="ddd" v-if="form.mergeTime">
15 <text class="lab">申请日期:</text>{{form.mergeTime?.slice(0,10)}}
16 </view>
17 <view class="ddd">
18 <text class="lab">{{ type=='1'?'考级人数':'考段人数' }}</text>{{form.totalNum}}
19 </view>
20 <view class="ddd">
21 <text class="lab">总金额:</text>¥{{ (form.totalAmount*1).toFixed(2) }}
22 </view>
23 </view>
24 <view class="wBox">
25 <view class="tt">
26 考试信息
27 </view>
28 <view class="userlist">
29 <view class="item" v-for="(n,index) in infoList" :key="index" @click="goDetail(n)" style="background-color: #fffafa;">
30 <view class="w100">
31 <view class="name">{{n.name}}</view>
32 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
33 <view class="flexbox">
34 <view>
35 上报单位
36 <text>{{n.memberName}}</text>
37 </view>
38 <view>
39 {{type=='1'?'考级考生数':'考段考生数'}}
40 <text>
41 {{n.totalNum}}
42 </text>
43 </view>
44
45 <view>
46 金额
47 <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text>
48 </view>
49 </view>
50 </view>
51
52 </view>
53 </view>
54
55 </view>
56 </view>
57 </template>
58
59 <script setup>
60 import * as api from '@/common/api.js'
61 import config from '@/config.js'
62 import _ from 'lodash'
63 import {
64 onMounted,
65 ref
66 } from 'vue'
67 import {
68 onLoad
69 } from '@dcloudio/uni-app'
70 const app = getApp();
71 const queryParams = ref({
72 recordId: ''
73 })
74
75 const form = ref({})
76 const list = ref([])
77 const infoList = ref([])
78 const deptType = ref()
79 const type = ref(null)
80 let rangeId = ''
81 onLoad((option) => {
82 if ('form' in option) {
83 form.value = JSON.parse(option.form)
84 // console.log(111,form.value)
85 }
86 type.value = option.type
87 // console.log(222,form.value)
88 if (app.globalData.isLogin) {
89 init()
90 } else {
91 app.firstLoadCallback = () => {
92 init()
93 };
94 }
95
96 })
97
98 function init() {
99 deptType.value = app.globalData.deptType
100 getForm()
101 }
102
103 function getForm() {
104 uni.showLoading({
105 title: '加载中'
106 })
107 api.getMergePaymentInfo(form.value.recordId).then(res => {
108 _.each(res.rows, (r) => {
109 const item = JSON.parse(r.content)
110 item.recordId = r.recordId
111 infoList.value.push(item)
112 })
113 console.log(infoList.value)
114 form.value.totalNum = Math.floor(_.sumBy(infoList.value, (o) => parseFloat(o.totalNum || 0)))
115 form.value.totalAmount = Math.floor(_.sumBy(infoList.value, (o) => parseFloat(o.totalAmount || 0)))
116
117 uni.hideLoading()
118
119 })
120 }
121
122 function goDetail(item){
123 const form = encodeURIComponent(JSON.stringify(item))
124 let path = `/level/applyDetail?examId=${item.examId}&form=${form}`
125 uni.navigateTo({
126 url: path
127 });
128 }
129 </script>
130
131 <style scoped lang="scss">
132 .wBox {
133 width: 700rpx;
134 padding: 30rpx;
135 margin: 20rpx auto;
136 background: #FFFFFF;
137 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
138 border-radius: 15rpx;
139
140 .tt {
141 color: #0A1629;margin: 0 0 30rpx;
142 font-size: 30rpx;
143 }
144
145 .ddd{font-size: 28rpx;color: #333;
146 .lab{color: #999;display: inline-block;text-align: justify;
147 text{word-break: break-all;}
148 }
149 }
150 }
151
152 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template> 1 <template>
2 <view> 2 <view>
3 <!-- 查看缴费单+上传凭证 --> 3 <!--级位考试缴费单 查看+上传凭证 -->
4 <!-- 缴费审核 --> 4 <view class="appList">
5 <view class="appList"> 5 <view class="appItem" v-for="item in list">
6 <view class="appItem" v-for="item in list"> 6 <view class="status" @click="goDetail(item)">
7 <view class="status" @click="goDetail(item)"> 7 <text v-if="item.record.auditStatus==0" class="text-primary">审核中</text>
8 <text v-if="item.record.auditStatus==0" class="text-primary">审核中</text> 8 <text v-if="item.record.auditStatus==1" class="text-success"> 审核通过</text>
9 <text v-if="item.record.auditStatus==1" class="text-success"> 审核通过</text> 9 <text v-if="item.record.auditStatus==2" class="text-danger"> 审核拒绝</text>
10 <text v-if="item.record.auditStatus==2" class="text-danger"> 审核拒绝</text> 10 <text v-if="item.record.auditStatus==3" class="text-warning">已撤回</text>
11 <text v-if="item.record.auditStatus==3" class="text-warning">已退回</text> 11 </view>
12 </view> 12 <view class="date" @click="goDetail(item)">
13 <view class="date" @click="goDetail(item)"> 13 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
14 <uni-icons type="calendar" size="16" color="#7D8592"></uni-icons> 14 <text v-if="item.payTime">{{item.payTime}} 缴费</text>
15 <text v-if="item.payTime">{{item.payTime}} 缴费</text> 15 <text v-else>{{item.payNoticeSendTime}} 下发</text>
16 <text v-else>{{item.payNoticeSendTime}} 下发</text> 16 </view>
17 </view> 17 <view class="name" @click="goDetail(item)">{{item.finalDocName}}</view>
18 <view class="name" @click="goDetail(item)">{{item.finalDocName}}</view> 18 <view class="flexbox" @click="goDetail(item)">
19 <view class="flexbox" @click="goDetail(item)"> 19 <view>
20 <view> 20 人数合计
21 人数合计 21 <view>{{item.personCount}}</view>
22 <view>{{item.personCount}}</view> 22 </view>
23 </view> 23 <view>
24 <view> 24 年限合计
25 年限合计 25 <view>{{item.yearCount}}</view>
26 <view>{{item.yearCount}}</view> 26 </view>
27 </view> 27 <view>
28 <view> 28 费用合计
29 费用合计 29 <view>¥{{item.allPrice}}</view>
30 <view>¥{{item.allPrice}}</view> 30 </view>
31 </view> 31 </view>
32 </view> 32 <view class="func">
33 <view class="func"> 33 <button
34 <button 34 v-if="(deptType == 2 || deptType == 3)&&item?.record?.auditStatus != 2 && item?.record?.auditStatus != 3"
35 v-if="(deptType == 2 || deptType == 3)&&item?.record?.auditStatus != 2 && item?.record?.auditStatus != 3" 35 @click="handleUpdate(item)">上传凭证</button>
36 @click="handleUpdate(item)">上传凭证</button> 36 </view>
37 </view> 37 </view>
38 </view> 38 </view>
39 </view> 39 <view class="nodata" v-if="list.length==0">
40 <view class="nodata" v-if="list.length==0"> 40 <image mode="aspectFit" src="/static/nodata.png"></image>
41 <image mode="aspectFit" src="/static/nodata.png"></image> 41 <text>暂无数据</text>
42 <text>暂无数据</text> 42 </view>
43 </view> 43
44 44 <!-- 上传凭证 -->
45 <!-- 上传凭证 --> 45 <uni-popup ref="UpPop" type="bottom" background-color="#fff" animation>
46 <uni-popup ref="UpPop" type="bottom" background-color="#fff" animation> 46 <view class="popBody">
47 <view class="popBody"> 47 <uni-forms v-model="form">
48 <uni-forms v-model="form"> 48 <uni-forms-item label="缴费日期" required>
49 <uni-forms-item label="缴费日期" required> 49 <uni-datetime-picker v-model="form.payTime"></uni-datetime-picker>
50 <uni-datetime-picker v-model="form.payTime"></uni-datetime-picker> 50 </uni-forms-item>
51 </uni-forms-item>
52 <uni-forms-item label="缴费凭证" required> 51 <uni-forms-item label="缴费凭证" required>
53 52
54 <uni-file-picker limit="1" file-mediatype="all" file-extname="png,jpg,jpeg,pdf,zip" 53 <uni-file-picker limit="1" file-mediatype="all" file-extname="png,jpg,jpeg,pdf,zip"
55 @select="selectFile" 54 @select="selectFile"
56 @progress="fileProgress" @delete="delSupplementFile(index)"></uni-file-picker> 55 @progress="fileProgress" @delete="delSupplementFile(index)"></uni-file-picker>
57 </uni-forms-item> 56 </uni-forms-item>
58 <uni-forms-item label="备注"> 57 <uni-forms-item label="备注">
59 <uni-easyinput v-model="form.remark" type="textarea"></uni-easyinput> 58 <uni-easyinput v-model="form.remark" type="textarea"></uni-easyinput>
60 </uni-forms-item> 59 </uni-forms-item>
61 </uni-forms> 60 </uni-forms>
62 61
63 <button class="btn-red" @click="uploadSure">确定</button> 62 <button class="btn-red" @click="uploadSure">确定</button>
64 </view> 63 </view>
65 </uni-popup> 64 </uni-popup>
66 </view> 65 </view>
67 </template> 66 </template>
68 67
69 <script setup> 68 <script setup>
70 import * as api from '@/common/api.js' 69 import * as api from '@/common/api.js'
71 import config from '@/config.js' 70 import config from '@/config.js'
72 import { 71 import {
73 onMounted, 72 onMounted,
74 ref 73 ref
75 } from 'vue' 74 } from 'vue'
76 import { 75 import {
77 onLoad 76 onLoad
78 } from '@dcloudio/uni-app' 77 } from '@dcloudio/uni-app'
79 const app = getApp(); 78 const app = getApp();
80 const list = ref([]) 79 const list = ref([])
81 const deptType = ref('') 80 const deptType = ref('')
82 const UpPop = ref(null) 81 const UpPop = ref(null)
83 const form = ref({ 82 const form = ref({
84 docId:'', 83 docId:'',
85 payTime:'', 84 payTime:'',
86 url:'', 85 url:'',
87 remark:'' 86 remark:''
88 }) 87 })
89 onLoad(() => { 88 onLoad((option) => {
90 if (app.globalData.isLogin) { 89 if (app.globalData.isLogin) {
91 init() 90 init()
92 } else { 91 } else {
93 92
94 app.firstLoadCallback = () => { 93 app.firstLoadCallback = () => {
95 init() 94 init()
96 }; 95 };
97 } 96 }
98 }) 97 })
99 98
100 function init() { 99 function init() {
101 deptType.value = app.globalData.deptType 100 deptType.value = app.globalData.deptType
102 getList() 101 getList()
103 } 102 }
104 103
105 function getList() { 104 function getList() {
106 api.getFeeBillList().then(res => { 105 api.getFeeBillList().then(res => {
107 list.value = res.rows 106 list.value = res.rows
108 }) 107 })
109 } 108 }
110 109
111 function handleUpdate(item) { 110 function handleUpdate(item) {
112 form.value.docId = item.docId 111 form.value.docId = item.docId
113 UpPop.value.open() 112 UpPop.value.open()
114 } 113 }
115 let selectFileValue = {} 114 let selectFileValue = {}
116 function selectFile(e) { 115 function selectFile(e) {
...@@ -130,7 +129,7 @@ ...@@ -130,7 +129,7 @@
130 } 129 }
131 function delSupplementFile(index) { 130 function delSupplementFile(index) {
132 selectFileValue = {} 131 selectFileValue = {}
133 } 132 }
134 function uploadSure(){ 133 function uploadSure(){
135 console.log(form.value) 134 console.log(form.value)
136 api.commitPaymentVoucher(form.value).then(res=>{ 135 api.commitPaymentVoucher(form.value).then(res=>{
...@@ -142,26 +141,29 @@ ...@@ -142,26 +141,29 @@
142 }) 141 })
143 getList() 142 getList()
144 }) 143 })
145 } 144 }
146 function goDetail(item) { 145 function goDetail(item) {
147 //详情 146 //详情
148 console.log(item.docId) 147 console.log(item.docId)
149 let path = `/pages/personalVip/feeBillDetail?docId=${item.docId}` 148 let path = `/personalVip/feeBillDetail?docId=${item.docId}`
150 uni.navigateTo({ 149 uni.navigateTo({
151 url: path 150 url: path
152 }); 151 });
153 } 152 }
154 </script> 153 </script>
155 154
156 <style scoped lang="scss"> 155 <style scoped lang="scss">
157 .popBody { 156 .popBody {
158 font-size: 28rpx; 157 font-size: 28rpx;
159 line-height: 1.5; 158 line-height: 1.5;
160 overflow: auto; 159 overflow: auto;
161 padding: 30rpx; 160 padding: 30rpx;
162 161
163 .btn-red { 162 .btn-red {
164 margin: 50rpx 0 30rpx; 163 margin: 50rpx 0 30rpx;
165 } 164 }
166 } 165 }
166 :deep(.file-picker__progress){
167 opacity: 0;
168 }
167 </style> 169 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <!-- 级位证书发布 --> 3 <!-- 级位证书发布 -->
4 <view class="appList"> 4 <view class="appList">
5 <view class="appItem" v-for="item in infoList"> 5 <view class="appItem" v-for="item in infoList">
6 <view class="status" @click="goDetail(item)"> 6 <view class="status" @click="goDetail(item)">
7 <text :class="{ 7 <text :class="{
8 'text-warning':item.certStatus=='0', 8 'text-warning':item.certStatus=='0',
9 'text-primary':item.certStatus=='1', 9 'text-primary':item.certStatus=='1',
10 'text-success':item.certStatus=='2' 10 'text-success':item.certStatus=='2'
11 }">{{ item.certStatusStr }}</text> 11 }">{{ item.certStatusStr }}</text>
12 </view> 12 </view>
13 13
14 <view class="date">提交日期:{{item.submitTimeStr}}</view> 14 <view class="date">
15 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 15 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
16 <view class="pp esp" v-if="item.certTime">证书发送时间:{{item.certTimeStr}}</view> 16 {{item.submitTimeStr}} 提交</view>
17 <view class="flexbox" @click="goDetail(item)"> 17 <view class="name mt0 w100" @click="goDetail(item)"><text class="dot"></text>{{item.name}}</view>
18 <view> 18 <view class="pp esp" v-if="item.certTimeStr">证书发送时间:{{item.certTimeStr}}</view>
19 申请单位 19 <view class="flexbox" @click="goDetail(item)">
20 <view>{{item.memberName||'--'}}</view> 20 <view>
21 </view> 21 申请单位
22 <view> 22 <view>{{item.memberName||'--'}}</view>
23 已发证书 23 </view>
24 <view>{{item.hasCerts}}</view> 24 <view>
25 </view> 25 已发证书
26 <view> 26 <view>{{item.hasCerts}}</view>
27 待发证书 27 </view>
28 <view>{{item.noCerts}}</view> 28 <view>
29 </view> 29 待发证书
30 </view> 30 <view>{{item.noCerts}}</view>
31 <view class="func" v-if="item.certStatus != '2'"> 31 </view>
32 <button @click="send(item)">一键生成</button> 32 </view>
33 </view> 33 <view class="func" v-if="item.certStatus != '2'">
34 </view> 34 <button @click="send(item)">一键生成</button>
35 </view> 35 </view>
36 36 </view>
37 <view class="nodata" v-if="infoList.length==0"> 37 </view>
38 <image mode="aspectFit" src="/static/nodata.png"></image> 38
39 <text>暂无数据</text> 39 <view class="nodata" v-if="infoList.length==0">
40 </view> 40 <image mode="aspectFit" src="/static/nodata.png"></image>
41 </view> 41 <text>暂无数据</text>
42 </template> 42 </view>
43 43 </view>
44 <script setup> 44 </template>
45 import * as api from '@/common/api.js' 45
46 import config from '@/config.js' 46 <script setup>
47 import _ from 'lodash' 47 import * as api from '@/common/api.js'
48 import { 48 import config from '@/config.js'
49 onMounted, 49 import _ from 'lodash'
50 ref 50 import {
51 } from 'vue' 51 onMounted,
52 import { 52 ref
53 onLoad, 53 } from 'vue'
54 onShow 54 import {
55 } from '@dcloudio/uni-app' 55 onLoad,
56 const app = getApp(); 56 onShow
57 const queryParams = ref({ 57 } from '@dcloudio/uni-app'
58 // pageNum: 1, 58 const app = getApp();
59 // pageSize: 10 59 const queryParams = ref({
60 status: '0', 60 // pageNum: 1,
61 type: '1' 61 // pageSize: 10
62 }) 62 status: '0',
63 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] 63 type: '1'
64 const current = ref() 64 })
65 const infoList = ref([]) 65 const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
66 const total = ref(0) 66 const current = ref()
67 const deptType = ref('') 67 const infoList = ref([])
68 const userType = ref('') 68 const total = ref(0)
69 onLoad((option) => { 69 const deptType = ref('')
70 queryParams.value.type = option.type 70 const userType = ref('')
71 }) 71 onLoad((option) => {
72 onShow(() => { 72 queryParams.value.type = option.type
73 if (app.globalData.isLogin) { 73 })
74 init() 74 onShow(() => {
75 } else { 75 if (app.globalData.isLogin) {
76 76 init()
77 app.firstLoadCallback = () => { 77 } else {
78 init() 78
79 }; 79 app.firstLoadCallback = () => {
80 } 80 init()
81 }) 81 };
82 82 }
83 function init() { 83 })
84 deptType.value = app.globalData.deptType 84
85 userType.value = app.globalData.userType 85 function init() {
86 getList() 86 deptType.value = app.globalData.deptType
87 } 87 userType.value = app.globalData.userType
88 88 getList()
89 89 }
90 function getList() { 90
91 uni.showLoading({ 91
92 title: '加载中' 92 function getList() {
93 }) 93 uni.showLoading({
94 api.getCertsLList(queryParams.value).then(res => { 94 title: '加载中'
95 infoList.value = res.rows 95 })
96 uni.hideLoading() 96 api.getCertsLList(queryParams.value).then(res => {
97 }) 97 infoList.value = res.rows
98 } 98 uni.hideLoading()
99 99 })
100 }
101
100 function goDetail(item) { 102 function goDetail(item) {
101 // const form = encodeURIComponent(JSON.stringify(item)) 103 // const form = encodeURIComponent(JSON.stringify(item))
102 let path = `/pages/level/ztx/examList?type=${queryParams.value.type}&payId=${item.payId}` 104 let path = `/level/ztx/examList?type=${queryParams.value.type}&payId=${item.payId}`
103 uni.navigateTo({ 105 uni.navigateTo({
104 url: path 106 url: path
105 }); 107 });
106 } 108 }
107 109
108 function send(row) { 110 function send(row) {
109 uni.showModal({ 111 uni.showModal({
110 title: '提示', 112 title: '提示',
111 content: `确定生成 ${row.name} 的证书吗`, 113 content: `确定生成 ${row.name} 的证书吗`,
112 success: function(res) { 114 success: function(res) {
113 if (res.confirm) { 115 if (res.confirm) {
114 api.submitCert([{ 116 api.submitCert([{
115 id: row.payId 117 id: row.payId
116 }]).then(res => { 118 }]).then(res => {
117 uni.showToast({ 119 uni.showToast({
118 title: `下发成功` 120 title: `下发成功`
119 }) 121 })
120 getList() 122 getList()
121 }) 123 })
122 } 124 }
123 } 125 }
124 }) 126 })
125 } 127 }
126 </script> 128 </script>
127 129
128 130
129 <style scoped lang="scss"> 131 <style scoped lang="scss">
130 .mt0 { 132 .mt0 {
131 margin-top: 0 !important; 133 margin-top: 0 !important;
132 } 134 }
133 135
134 .appList .appItem .name { 136 .appList .appItem .name {
135 width: 80%; 137 width: 80%;
136 word-break: break-all; 138 word-break: break-all;
137 } 139 }
138 </style> 140 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <!-- 级位证书发布 --> 3 <!-- 级位证书发布 -->
4 <view class="appList"> 4 <view class="appList">
5 <view class="appItem" v-for="item in infoList"> 5 <view class="appItem" v-for="item in infoList">
6 <view class="status" @click="goDetail(item)"> 6 <view class="status" @click="goDetail(item)">
7 <text :class="{ 7 <text :class="{
8 'text-warning':item.isCert=='0', 8 'text-warning':item.isCert=='0',
9 'text-primary':item.isCert=='1', 9 'text-primary':item.isCert=='1',
10 'text-success':item.isCert=='2' 10 'text-success':item.isCert=='2'
11 }">{{ statusArr[item.isCert]}}</text> 11 }">{{ statusArr[item.isCert]}}</text>
12 </view> 12 </view>
13 13
14 <view class="date">申请日期: {{item.applyTime?.slice(0,10)}}</view> 14 <view class="date">申请日期: {{item.applyTime?.slice(0,10)}}</view>
15 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view> 15 <view class="name mt0" @click="goDetail(item)">{{item.name}}</view>
16 <view class="pp esp">考级考官:{{item.examinerNames}}</view> 16 <view class="pp esp">考级考官:{{item.examinerNames}}</view>
17 <view class="flexbox" @click="goDetail(item)"> 17 <view class="flexbox" @click="goDetail(item)">
18 <view> 18 <view>
19 申请单位 19 申请单位
20 <view>{{item.memberName}}</view> 20 <view>{{item.memberName}}</view>
21 </view> 21 </view>
22 <view> 22 <view>
23 已发/待发证书 23 已发/待发证书
24 <view>{{item.hasCerts}}/<text class="text-danger">{{item.noCerts}}</text></view> 24 <view>{{item.hasCerts}}/<text class="text-danger">{{item.noCerts}}</text></view>
25 </view> 25 </view>
26 <view> 26 <view>
27 考生数/通过数 27 考生数/通过数
28 <view>{{item.totalNum}}/<text class="text-danger">{{item.pass}}</text></view> 28 <view>{{item.totalNum}}/<text class="text-danger">{{item.pass}}</text></view>
29 </view> 29 </view>
30 </view> 30 </view>
31 <view class="func" v-if="item.certStatus != '2'"> 31 <view class="func" v-if="item.certStatus != '2'">
32 <button @click="send(item)">一键生成</button> 32 <button @click="send(item)">一键生成</button>
33 </view> 33 </view>
34 </view> 34 </view>
35 </view> 35 </view>
36 36
37 <view class="nodata" v-if="infoList.length==0"> 37 <view class="nodata" v-if="infoList.length==0">
38 <image mode="aspectFit" src="/static/nodata.png"></image> 38 <image mode="aspectFit" src="/static/nodata.png"></image>
39 <text>暂无数据</text> 39 <text>暂无数据</text>
40 </view> 40 </view>
41 </view> 41 </view>
42 </template> 42 </template>
43 43
44 <script setup> 44 <script setup>
45 import * as api from '@/common/api.js' 45 import * as api from '@/common/api.js'
46 import config from '@/config.js' 46 import config from '@/config.js'
47 import _ from 'lodash' 47 import _ from 'lodash'
48 import { 48 import {
49 onMounted, 49 onMounted,
50 ref 50 ref
51 } from 'vue' 51 } from 'vue'
52 import { 52 import {
53 onLoad, 53 onLoad,
54 onShow 54 onShow
55 } from '@dcloudio/uni-app' 55 } from '@dcloudio/uni-app'
56 const app = getApp(); 56 const app = getApp();
57 const queryParams = ref({ 57 const queryParams = ref({
58 // pageNum: 1, 58 // pageNum: 1,
59 // pageSize: 10 59 // pageSize: 10
60 }) 60 })
61 const statusArr = ['未发放', '部分发放', '已发放'] 61 const statusArr = ['未发放', '部分发放', '已发放']
62 const current = ref() 62 const current = ref()
63 const infoList = ref([]) 63 const infoList = ref([])
64 const total = ref(0) 64 const total = ref(0)
65 const deptType = ref('') 65 const deptType = ref('')
66 const userType = ref('') 66 const userType = ref('')
67 onLoad((option) => { 67 onLoad((option) => {
68 queryParams.value.payId = option.payId 68 queryParams.value.payId = option.payId
69 queryParams.value.type = option.type 69 queryParams.value.type = option.type
70 }) 70 })
71 onShow(() => { 71 onShow(() => {
72 if (app.globalData.isLogin) { 72 if (app.globalData.isLogin) {
73 init() 73 init()
74 } else { 74 } else {
75 75
76 app.firstLoadCallback = () => { 76 app.firstLoadCallback = () => {
77 init() 77 init()
78 }; 78 };
79 } 79 }
80 }) 80 })
81 81
82 function init() { 82 function init() {
83 deptType.value = app.globalData.deptType 83 deptType.value = app.globalData.deptType
84 userType.value = app.globalData.userType 84 userType.value = app.globalData.userType
85 getList() 85 getList()
86 } 86 }
87 87
88 88
89 function getList() { 89 function getList() {
90 uni.showLoading({ 90 uni.showLoading({
91 title: '加载中' 91 title: '加载中'
92 }) 92 })
93 api.getExamListByPayId(queryParams.value).then(res => { 93 api.getExamListByPayId(queryParams.value).then(res => {
94 infoList.value = res.rows 94 infoList.value = res.rows
95 uni.hideLoading() 95 uni.hideLoading()
96 }) 96 })
97 } 97 }
98 98
99 function goDetail(item) { 99 function goDetail(item) {
100 // const form = encodeURIComponent(JSON.stringify(item)) 100 // const form = encodeURIComponent(JSON.stringify(item))
101 let path = `/pages/level/ztx/studentList?type=${queryParams.value.type}&examId=${item.examId}&payId=${queryParams.value.payId}` 101 let path = `/level/ztx/studentList?type=${queryParams.value.type}&examId=${item.examId}&payId=${queryParams.value.payId}`
102 uni.navigateTo({ 102 uni.navigateTo({
103 url: path 103 url: path
104 }); 104 });
105 } 105 }
106 106
107 function send(row) { 107 function send(row) {
108 uni.showModal({ 108 uni.showModal({
109 title: '提示', 109 title: '提示',
110 content: `确定生成 ${row.name} 的证书吗`, 110 content: `确定生成 ${row.name} 的证书吗`,
111 success: function(res) { 111 success: function(res) {
112 if (res.confirm) { 112 if (res.confirm) {
113 api.submitCert([{ 113 api.submitCert([{
114 id: row.payId 114 id: row.payId
115 }]).then(res => { 115 }]).then(res => {
116 uni.showToast({ 116 uni.showToast({
117 title: `下发成功` 117 title: `下发成功`
118 }) 118 })
119 getList() 119 getList()
120 }) 120 })
121 } 121 }
122 } 122 }
123 }) 123 })
124 } 124 }
125 </script> 125 </script>
126 126
127 127
128 <style scoped lang="scss"> 128 <style scoped lang="scss">
129 .mt0 { 129 .mt0 {
130 margin-top: 0 !important; 130 margin-top: 0 !important;
131 } 131 }
132 132
133 .appList .appItem .name { 133 .appList .appItem .name {
134 width: 80%; 134 width: 80%;
135 word-break: break-all; 135 word-break: break-all;
136 } 136 }
137 </style> 137 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template> 1 <template>
2 <view class="hasfixedbottom"> 2 <view>
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="queryParams.name" placeholder="搜索姓名" @blur="getList()" @clear="getList()"> 5 v-model="queryParams.name" placeholder="搜索姓名" @blur="getList()" @clear="getList()">
...@@ -86,10 +86,16 @@ ...@@ -86,10 +86,16 @@
86 } 86 }
87 87
88 88
89 function sendCert(row) { 89 function sendCert(row) {
90 let msg
91 if(row.isCert==1){
92 msg = `更新`
93 }else{
94 msg = `下发`
95 }
90 uni.showModal({ 96 uni.showModal({
91 title: '提示', 97 title: '提示',
92 content: `确定下发 ${row.realName} 的证书吗`, 98 content: `确定${msg}${row.realName}的证书吗`,
93 success: function(res) { 99 success: function(res) {
94 if (res.confirm) { 100 if (res.confirm) {
95 const params = [{ 101 const params = [{
...@@ -130,7 +136,7 @@ ...@@ -130,7 +136,7 @@
130 rangeId: queryParams.value.paymentRangeId, 136 rangeId: queryParams.value.paymentRangeId,
131 personIdArray: arr.join(',') 137 personIdArray: arr.join(',')
132 }).then(res => { 138 }).then(res => {
133 let path = `/pages/personalVip/renew?rangeId=${res.data.rangeId}` 139 let path = `/personalVip/renew?rangeId=${res.data.rangeId}`
134 uni.redirectTo({ 140 uni.redirectTo({
135 url: path 141 url: path
136 }); 142 });
......
1 { 1 {
2 "name" : "miniP", 2 "name" : "ztx_wx_admin",
3 "appid" : "__UNI__580BCB0", 3 "appid" : "__UNI__580BCB0",
4 "description" : "", 4 "description" : "",
5 "versionName" : "1.0.1", 5 "versionName" : "1.0.1",
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
38 "quickapp" : {}, 38 "quickapp" : {},
39 /* 小程序特有相关 */ 39 /* 小程序特有相关 */
40 "mp-weixin" : { 40 "mp-weixin" : {
41 "appid" : "wx5d51e8ed31bbdbb7", //J系统 41 "appid" : "wx70f16625f10de4fe", //J系统
42 42
43 // "appid" : "wx70f16625f10de4fe",//新跆联 43 // "appid" : "wx70f16625f10de4fe",//新跆联
44 // "appid" : "wx5e2471ed6210c3a6", 44 // "appid" : "wx5e2471ed6210c3a6",
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="wBox"> 3 <view class="wBox">
4 <view class="tt">基本信息</view> 4 <view class="tt">基本信息</view>
5 <view class="ddd"> 5 <view class="ddd">
6 <text class="lab">结算编号:</text>{{ form.flowCode }} 6 <text class="lab">结算编号:</text>{{ form.flowCode }}
7 </view> 7 </view>
8 <view class="ddd"> 8 <view class="ddd">
9 <text class="lab">{{ type=='1'?'考级名称':'考段名称' }}</text>{{form.mergeName}} 9 <text class="lab">{{ type=='1'?'考级名称':'考段名称' }}</text>{{form.mergeName}}
10 </view> 10 </view>
11 <view class="ddd"> 11 <view class="ddd">
12 <text class="lab">申请单位:</text>{{ form.memName }} 12 <text class="lab">申请单位:</text>{{ form.memName }}
13 </view> 13 </view>
14 <view class="ddd" v-if="form.mergeTime"> 14 <view class="ddd" v-if="form.mergeTime">
15 <text class="lab">申请日期:</text>{{form.mergeTime?.slice(0,10)}} 15 <text class="lab">申请日期:</text>{{form.mergeTime?.slice(0,10)}}
16 </view> 16 </view>
17 <view class="ddd"> 17 <view class="ddd">
18 <text class="lab">{{ type=='1'?'考级人数':'考段人数' }}</text>{{form.totalNum}} 18 <text class="lab">{{ type=='1'?'考级人数':'考段人数' }}</text>{{form.totalNum}}
19 </view> 19 </view>
20 <view class="ddd"> 20 <view class="ddd">
21 <text class="lab">总金额:</text>¥{{ (form.totalAmount*1).toFixed(2) }} 21 <text class="lab">总金额:</text>¥{{ (form.totalAmount*1).toFixed(2) }}
22 </view> 22 </view>
23 </view> 23 </view>
24 <view class="wBox"> 24 <view class="wBox">
25 <view class="tt"> 25 <view class="tt">
26 考试信息 26 考试信息
27 </view> 27 </view>
28 <view class="userlist"> 28 <view class="userlist">
29 <view class="item" v-for="n in infoList" @click="goDetail(n)" style="background-color: #fffafa;"> 29 <view class="item" v-for="n in infoList" @click="goDetail(n)" style="background-color: #fffafa;">
30 <view class="w100"> 30 <view class="w100">
31 <view class="name">{{n.name}}</view> 31 <view class="name">{{n.name}}</view>
32 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> --> 32 <!-- <view class="date">{{n.idcTypeStr}}{{n.idcCode}}</view> -->
33 <view class="flexbox"> 33 <view class="flexbox">
34 <view> 34 <view>
35 上报单位 35 上报单位
36 <text>{{n.memberName}}</text> 36 <text>{{n.memberName}}</text>
37 </view> 37 </view>
38 <view> 38 <view>
39 {{type=='1'?'考级考生数':'考段考生数'}} 39 {{type=='1'?'考级考生数':'考段考生数'}}
40 <text> 40 <text>
41 {{n.totalNum}} 41 {{n.totalNum}}
42 </text> 42 </text>
43 </view> 43 </view>
44 <view> 44 <view>
45 金额 45 金额
46 <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text> 46 <text class="text-danger">¥{{ (n.totalAmount*1).toFixed(2) }}</text>
47 </view> 47 </view>
48 </view> 48 </view>
49 </view> 49 </view>
50 50
51 </view> 51 </view>
52 </view> 52 </view>
53 53
54 </view> 54 </view>
55 </view> 55 </view>
56 </template> 56 </template>
57 57
58 <script setup> 58 <script setup>
59 import * as api from '@/common/api.js' 59 import * as api from '@/common/api.js'
60 import config from '@/config.js' 60 import config from '@/config.js'
61 import _ from 'lodash' 61 import _ from 'lodash'
62 import { 62 import {
63 onMounted, 63 onMounted,
64 ref 64 ref
65 } from 'vue' 65 } from 'vue'
66 import { 66 import {
67 onLoad 67 onLoad
68 } from '@dcloudio/uni-app' 68 } from '@dcloudio/uni-app'
69 const app = getApp(); 69 const app = getApp();
70 const queryParams = ref({ 70 const queryParams = ref({
71 recordId: '' 71 recordId: ''
72 }) 72 })
73 73
74 const payId = ref('') 74 const payId = ref('')
75 const list = ref([]) 75 const list = ref([])
76 const form = ref({}) 76 const form = ref({})
77 const infoList = ref([]) 77 const infoList = ref([])
78 const deptType = ref() 78 const deptType = ref()
79 const type = ref(null) 79 const type = ref(null)
80 let rangeId = '' 80 let rangeId = ''
81 onLoad((option) => { 81 onLoad((option) => {
82 type.value = option.type 82 type.value = option.type
83 if ('form' in option) { 83 if ('form' in option) {
84 var obj = JSON.parse(decodeURIComponent(option.form)) 84 var obj = JSON.parse(decodeURIComponent(option.form))
85 form.value.flowCode = obj.payCode 85 form.value.flowCode = obj.payCode
86 form.value.mergeName = obj.name 86 form.value.mergeName = obj.name
...@@ -88,36 +88,36 @@ ...@@ -88,36 +88,36 @@
88 form.value.mergeTime = obj.submitTime 88 form.value.mergeTime = obj.submitTime
89 form.value.totalNum = Math.floor(obj.totalNum) 89 form.value.totalNum = Math.floor(obj.totalNum)
90 form.value.totalAmount = Math.floor(obj.totalAmount) 90 form.value.totalAmount = Math.floor(obj.totalAmount)
91 payId.value = obj.payId 91 payId.value = obj.payId
92 } 92 }
93 if (app.globalData.isLogin) { 93 if (app.globalData.isLogin) {
94 init() 94 init()
95 } else { 95 } else {
96 app.firstLoadCallback = () => { 96 app.firstLoadCallback = () => {
97 init() 97 init()
98 }; 98 };
99 } 99 }
100 100
101 }) 101 })
102 function init() { 102 function init() {
103 deptType.value = app.globalData.deptType 103 deptType.value = app.globalData.deptType
104 getForm() 104 getForm()
105 } 105 }
106 106
107 function getForm() { 107 function getForm() {
108 uni.showLoading({ 108 uni.showLoading({
109 title: '加载中' 109 title: '加载中'
110 }) 110 })
111 api.getPaymentDetailsByPayId(payId.value).then(res => { 111 api.getPaymentDetailsByPayId(payId.value).then(res => {
112 infoList.value = res.data 112 infoList.value = res.data
113 uni.hideLoading() 113 uni.hideLoading()
114 }) 114 })
115 } 115 }
116 116
117 function goDetail(item) { 117 function goDetail(item) {
118 // examId 118 // examId
119 if(type.value = '1'){ 119 if(type.value == '1'){
120 let path = `/pages/level/applyDetail?examId=${item.examId}` 120 let path = `/level/applyDetail?examId=${item.examId}`
121 uni.navigateTo({ 121 uni.navigateTo({
122 url: path 122 url: path
123 }); 123 });
...@@ -126,38 +126,38 @@ ...@@ -126,38 +126,38 @@
126 uni.navigateTo({ 126 uni.navigateTo({
127 url: path 127 url: path
128 }); 128 });
129 } 129 }
130 } 130 }
131 </script> 131 </script>
132 132
133 <style scoped lang="scss"> 133 <style scoped lang="scss">
134 .wBox { 134 .wBox {
135 width: 700rpx; 135 width: 700rpx;box-sizing: border-box;
136 padding: 30rpx; 136 padding: 30rpx;
137 margin: 20rpx auto; 137 margin: 20rpx auto;
138 background: #FFFFFF; 138 background: #FFFFFF;
139 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); 139 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
140 border-radius: 15rpx; 140 border-radius: 15rpx;
141 141
142 .tt { 142 .tt {
143 color: #0A1629; 143 color: #0A1629;
144 margin: 0 0 30rpx; 144 margin: 0 0 30rpx;
145 font-size: 30rpx; 145 font-size: 30rpx;
146 } 146 }
147 147
148 .ddd { 148 .ddd {
149 font-size: 28rpx; 149 font-size: 28rpx;
150 color: #333; 150 color: #333;
151 151
152 .lab { 152 .lab {
153 color: #999; 153 color: #999;
154 display: inline-block; 154 display: inline-block;
155 text-align: justify; 155 text-align: justify;
156 156
157 text { 157 text {
158 word-break: break-all; 158 word-break: break-all;
159 } 159 }
160 } 160 }
161 } 161 }
162 } 162 }
163 </style> 163 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template>
2
3 </template>
4
5 <script setup>
6 import {
7 ref,getCurrentInstance
8 } from 'vue';
9 import {
10 onLoad,
11 onShow,onReady
12 } from '@dcloudio/uni-app';
13 import * as api from '@/common/api.js';
14 const { proxy } = getCurrentInstance()
15 const app = getApp();
16
17 </script>
18
19 <style scoped>
20 button{ font-size: 32rpx; background: linear-gradient(90deg, #00C176, #3ed89b);}
21 .richContent{padding: 40rpx 40rpx 100rpx;
22 line-height: 1.6;
23 background: #fff;}
24 .richContent2{padding: 0 0 40rpx;
25 line-height: 1.6;
26 background: #fff;}
27
28 .graybg {
29 background: #f7f8fa;
30 height: 100vh;
31 padding: 0 0 100rpx;
32 width: 100vw;
33 overflow: auto;
34 }
35
36 .whitebg {
37 background: #fff;
38 margin-top: 15rpx;
39 border-radius: 20rpx;
40 margin-bottom: 90rpx;
41 }
42
43 .payBtn {
44 width: 750rpx;
45 line-height: 90rpx;
46 height: 120rpx;
47 text-align: center;
48 background: #ff8124;
49 color: #ffffff;
50 font-size: 36rpx;
51 border-radius: 20rpx 20rpx 0px 0px;
52 position: fixed;
53 bottom: 0;
54 }
55
56 .uni-list-cell::after {
57 display: none;
58 }
59 .formBox{ background: #fff;
60 padding: 50rpx 40rpx;
61 margin: 0 30rpx;
62 border-radius: 20rpx;}
63
64 .popBody {
65 font-size: 28rpx;
66 line-height: 1.5;
67 font-family: 华文仿宋;
68 height: 80vh;
69 overflow: auto;
70 padding: 30rpx;
71
72 .btn-red {
73 margin: 50rpx 0 30rpx;
74 }
75 }
76 </style>
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
1 <template> 1 <template>
2 <view> 2 <view>
3 <view v-if="userType=='1'" class="girdBox f3"> 3 <view v-if="userType=='1'" class="girdBox f3">
4 <view @click="goPath('/pages/rank/approval?type=3')"> 4 <view @click="goPath('/pages/rank/approval?type=3')">
5 <image src="@/static/icon/21.png" />越段考试审核 5 <image :src="config.baseUrl_api+'/fs/static/icon/21.png'" />越段考试审核
6 </view> 6 </view>
7 <view @click="goPath('/pages/rank/scoreApproval?type=3')"> 7 <view @click="goPath('/pages/rank/scoreApproval?type=3')">
8 <image src="@/static/icon/22.png" />越段成绩审核 8 <image :src="config.baseUrl_api+'/fs/static/icon/22.png'" />越段成绩审核
9 </view> 9 </view>
10 <view @click="goPath('/pages/level/ztx/cert?type=3')"> 10 <view @click="goPath('/level/ztx/cert?type=3')">
11 <image src="@/static/icon/23.png" />越段证书发布 11 <image :src="config.baseUrl_api+'/fs/static/icon/23.png'" />越段证书发布
12 </view> 12 </view>
13 </view> 13 </view>
14 <view class="girdBox" v-if="userType=='2'"> 14 <view class="girdBox" v-if="userType=='2'">
15 <view @click="goPath('/pages/rank/apply?type=2')"> 15 <view @click="goPath('/pages/rank/apply?type=2')">
16 <image src="@/static/icon/11.png" />段位考试申请 16 <image :src="config.baseUrl_api+'/fs/static/icon/11.png'" />段位考试申请
17 </view> 17 </view>
18 18
19 <view @click="goPath('/pages/exam/payment?type=2')"> 19 <view @click="goPath('/pages/exam/payment?type=2')">
20 <image src="@/static/icon/13.png" />段位考试<br />缴费单 20 <image :src="config.baseUrl_api+'/fs/static/icon/13.png'" />段位考试<br />缴费单
21 </view> 21 </view>
22 22
23 <view @click="goPath('/pages/exam/score?type=2')"> 23 <view @click="goPath('/pages/exam/score?type=2')">
24 <image src="@/static/icon/12.png" />段位考试<br />成绩录入 24 <image :src="config.baseUrl_api+'/fs/static/icon/12.png'" />段位考试<br />成绩录入
25 </view> 25 </view>
26 <view @click="goPath('/pages/rank/apply?type=3')"> 26 <view @click="goPath('/pages/rank/apply?type=3')">
27 <image src="@/static/icon/14.png" />越位考试<br />申请 27 <image :src="config.baseUrl_api+'/fs/static/icon/14.png'" />越位考试<br />申请
28 </view> 28 </view>
29 29
30 <view @click="goPath('/pages/exam/payment?type=3')"> 30 <view @click="goPath('/pages/exam/payment?type=3')">
31 <image src="@/static/icon/16.png" />越段考试<br />缴费单 31 <image :src="config.baseUrl_api+'/fs/static/icon/16.png'" />越段考试<br />缴费单
32 </view> 32 </view>
33 33
34 <view @click="goPath('/pages/exam/score?type=3')"> 34 <view @click="goPath('/pages/exam/score?type=3')">
35 <image src="@/static/icon/15.png" />越段考试<br />成绩录入 35 <image :src="config.baseUrl_api+'/fs/static/icon/15.png'" />越段考试<br />成绩录入
36 </view> 36 </view>
37 </view> 37 </view>
38 </view> 38 </view>
39 </template> 39 </template>
40 40
41 <script setup> 41 <script setup>
42 import { 42 import {
43 onShow,onLoad 43 onShow,onLoad
44 } from '@dcloudio/uni-app' 44 } from '@dcloudio/uni-app'
45 import { 45 import {
46 ref 46 ref
47 } from 'vue' 47 } from 'vue'
48 const app = getApp() 48 import config from '@/config.js'
49 const app = getApp()
49 const userType = ref() 50 const userType = ref()
50 onLoad((option)=>{ 51 onLoad((option)=>{
52 console.log(option)
51 userType.value = option.userType 53 userType.value = option.userType
52 }) 54 })
53 55
54 function goPath(path) { 56 function goPath(path) {
55 uni.navigateTo({ 57 uni.navigateTo({
56 url: path 58 url: path
57 }); 59 });
58 } 60 }
59 </script> 61 </script>
60 62
61 <style scoped lang="scss"> 63 <style scoped lang="scss">
62 64
63 .girdBox { 65 .girdBox {
64 display: flex; 66 display: flex;
65 flex-wrap: wrap; 67 flex-wrap: wrap;
66 padding: 30rpx 0; 68 padding: 30rpx 0;
67 background: #FFFFFF; 69 background: #FFFFFF;
68 margin: 50rpx; 70 margin: 50rpx;
69 border-radius: 20rpx; 71 border-radius: 20rpx;
70 72
71 view { 73 view {
72 width: 25%; 74 width: 25%;
73 text-align: center; 75 text-align: center;
74 padding: 2% 0; 76 padding: 2% 0;
75 font-size: 24rpx; 77 font-size: 24rpx;
76 color: #434343; 78 color: #434343;
77 79
78 image { 80 image {
79 width: 80rpx; 81 width: 80rpx;
80 height: 80rpx; 82 height: 80rpx;
81 display: block; 83 display: block;
82 margin: auto; 84 margin: auto;
83 } 85 }
84 } 86 }
85 } 87 }
86 .f3{ 88 .f3{
87 view { 89 view {
88 width:33%;} 90 width:33%;}
89 } 91 }
90 </style> 92 </style>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -34,11 +34,11 @@ ...@@ -34,11 +34,11 @@
34 switch (d.type) { 34 switch (d.type) {
35 case 30001: 35 case 30001:
36 d.name = '你有一条会员缴费等待审批,点击去处理!' 36 d.name = '你有一条会员缴费等待审批,点击去处理!'
37 d.path = '/pages/personalVip/audit' 37 d.path = '/personalVip/audit'
38 break 38 break
39 case 30002: 39 case 30002:
40 d.name = '你有一条级位考试等待审批,点击去处理!' 40 d.name = '你有一条级位考试等待审批,点击去处理!'
41 d.path = '/pages/level/approval' 41 d.path = '/level/approval'
42 break 42 break
43 case 30003: 43 case 30003:
44 d.name = '你有一条段位考试等待审批,点击去处理!' 44 d.name = '你有一条段位考试等待审批,点击去处理!'
...@@ -46,11 +46,11 @@ ...@@ -46,11 +46,11 @@
46 break 46 break
47 case 30004: 47 case 30004:
48 d.name = '你有一条会员调动等待审批,点击去处理!' 48 d.name = '你有一条会员调动等待审批,点击去处理!'
49 d.path = '/pages/personalVip/mobillize' 49 d.path = '/personalVip/mobillize'
50 break 50 break
51 case 30005: 51 case 30005:
52 d.name = '你有一条团体会员认证等待审批,点击去处理!' 52 d.name = '你有一条团体会员认证等待审批,点击去处理!'
53 d.path = '/pages/group/apply/applyList' 53 d.path = '/group/apply/applyList'
54 break 54 break
55 case 30006: 55 case 30006:
56 d.name = '你有一条段位成绩等待审批,点击去处理!' 56 d.name = '你有一条段位成绩等待审批,点击去处理!'
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
58 break 58 break
59 case 40001: 59 case 40001:
60 d.name = '你有一条级位申请待提交,点击去处理!' 60 d.name = '你有一条级位申请待提交,点击去处理!'
61 d.path = `/pages/level/apply?id=${d.eventId}` 61 d.path = `/level/apply?id=${d.eventId}`
62 break 62 break
63 case 40002: 63 case 40002:
64 d.name = '你有一条段位申请待提交,点击去处理!' 64 d.name = '你有一条段位申请待提交,点击去处理!'
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
70 break 70 break
71 case 50001: 71 case 50001:
72 d.name = '你有一条新的个人会员申请,点击去处理!' 72 d.name = '你有一条新的个人会员申请,点击去处理!'
73 d.path = '/pages/personalVip/list' 73 d.path = '/personalVip/list'
74 break 74 break
75 } 75 }
76 } 76 }
......
This diff could not be displayed because it is too large.
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 <!-- <view class="invertedbtn-red" @click="goAdd">+ 添加段位考试</view> --> 7 <!-- <view class="invertedbtn-red" @click="goAdd">+ 添加段位考试</view> -->
8 </view> 8 </view>
9 <view class="appList"> 9 <view class="appList">
10 <view class="appItem" v-for="item in list"> 10 <view class="appItem" v-for="(item,index) in list" :key="index">
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-primary':item.status=='1',
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
35 </view> 35 </view>
36 </view> 36 </view>
37 <view class="func" v-if="item.status=='0'||item.status=='3'||item.status=='4'"> 37 <view class="func" v-if="item.status=='0'||item.status=='3'||item.status=='4'">
38 <button @click="handleDelete(item)">删除</button>
38 <button @click="editThis(item)">编辑</button> 39 <button @click="editThis(item)">编辑</button>
39 <button @click="handleSubmit(item)">提交审核</button> 40 <button @click="handleSubmit(item)">提交审核</button>
40 </view> 41 </view>
...@@ -50,73 +51,73 @@ ...@@ -50,73 +51,73 @@
50 </view> 51 </view>
51 </template> 52 </template>
52 53
53 <script setup> 54 <script setup>
54 import * as api from '@/common/api.js' 55 import * as api from '@/common/api.js'
55 import config from '@/config.js' 56 import config from '@/config.js'
56 import { 57 import {
57 onMounted, 58 onMounted,
58 ref 59 ref
59 } from 'vue' 60 } from 'vue'
60 import { 61 import {
61 onLoad, 62 onLoad,
62 onShow 63 onShow
63 } from '@dcloudio/uni-app' 64 } from '@dcloudio/uni-app'
64 const app = getApp(); 65 const app = getApp();
65 const queryParams = ref({ 66 const queryParams = ref({
66 // pageNum: 1, 67 // pageNum: 1,
67 // pageSize: 10 68 // pageSize: 10
68 type: '1', 69 type: '1',
69 rankStatus: '0' 70 rankStatus: '0'
70 }) 71 })
71 const navs = ref(['未提交', '审核中', '审核通过', '审核拒绝']) 72 const navs = ref(['未提交', '审核中', '审核通过', '审核拒绝'])
72 const current = ref() 73 const current = ref()
73 const list = ref([]) 74 const list = ref([])
74 const total = ref(0) 75 const total = ref(0)
75 const deptType = ref('') 76 const deptType = ref('')
76 onLoad((option) => { 77 onLoad((option) => {
77 queryParams.value.type = option.type 78 queryParams.value.type = option.type
78 }) 79 })
79 onShow(() => { 80 onShow(() => {
80 if (app.globalData.isLogin) { 81 if (app.globalData.isLogin) {
81 init() 82 init()
82 } else { 83 } else {
83 84
84 app.firstLoadCallback = () => { 85 app.firstLoadCallback = () => {
85 init() 86 init()
86 }; 87 };
87 } 88 }
88 }) 89 })
89 90
90 function init() { 91 function init() {
91 uni.showLoading({ 92 uni.showLoading({
92 title: '加载中' 93 title: '加载中'
93 }) 94 })
94 deptType.value = app.globalData.deptType 95 deptType.value = app.globalData.deptType
95 getList() 96 getList()
96 } 97 }
97 98
98 99
99 function getList() { 100 function getList() {
100 api.getLevelList(queryParams.value).then(res => { 101 api.getLevelList(queryParams.value).then(res => {
101 uni.hideLoading() 102 uni.hideLoading()
102 list.value = res.rows 103 list.value = res.rows
103 total.value = res.total 104 total.value = res.total
104 }) 105 })
105 } 106 }
106 107
107 function goAdd() { 108 function goAdd() {
108 let path = `/pages/level/addApply` 109 let path = `/level/addApply`
109 uni.navigateTo({ 110 uni.navigateTo({
110 url: path 111 url: path
111 }); 112 });
112 } 113 }
113 114
114 function editThis(item) { 115 function editThis(item) {
115 let path = `/pages/level/addApply?examId=${item.examId}` 116 let path = `/level/addApply?examId=${item.examId}`
116 uni.navigateTo({ 117 uni.navigateTo({
117 url: path 118 url: path
118 }); 119 });
119 } 120 }
120 function handleSubmit(item){ 121 function handleSubmit(item){
121 uni.showModal({ 122 uni.showModal({
122 title: '提示', 123 title: '提示',
...@@ -130,7 +131,7 @@ ...@@ -130,7 +131,7 @@
130 } 131 }
131 } 132 }
132 }) 133 })
133 } 134 }
134 function upApply(id){ 135 function upApply(id){
135 api.submitVerity(id).then(res=>{ 136 api.submitVerity(id).then(res=>{
136 uni.hideLoading() 137 uni.hideLoading()
...@@ -139,9 +140,29 @@ ...@@ -139,9 +140,29 @@
139 title:`提交成功` 140 title:`提交成功`
140 }) 141 })
141 }) 142 })
142 } 143 }
143 144 function handleDelete(row) {
144 145 uni.showModal({
146 title: '提示',
147 content: `确定删除${row.name}吗`,
148 success: function(res) {
149 if (res.confirm) {
150 uni.showLoading({
151 title: `删除中`
152 })
153 api.delLevel(row.examId).then(res=>{
154 uni.showToast({
155 title:'操作成功!',
156 icon:'none'
157 })
158 uni.hideLoading()
159 getList()
160 })
161 }
162 }
163 })
164 }
165
145 function goDetail(item) { 166 function goDetail(item) {
146 if(item.status!='0'){ 167 if(item.status!='0'){
147 let path = `/pages/rank/applyDetail?examId=${item.examId}&type=${queryParams.value.type}` 168 let path = `/pages/rank/applyDetail?examId=${item.examId}&type=${queryParams.value.type}`
...@@ -150,44 +171,44 @@ ...@@ -150,44 +171,44 @@
150 }); 171 });
151 } else { 172 } else {
152 return 173 return
153 } 174 }
154 175
155 } 176 }
156 </script> 177 </script>
157 178
158 179
159 <style scoped> 180 <style scoped lang="scss">
160 .searchbar { 181 .searchbar {
161 display: flex; 182 display: flex;
162 align-items: center; 183 align-items: center;
163 padding: 25rpx; 184 padding: 25rpx;
164 box-sizing: border-box; 185 box-sizing: border-box;
165 186
166 :deep(.uni-easyinput .uni-easyinput__content) { 187 :deep(.uni-easyinput .uni-easyinput__content) {
167 border-radius: 35rpx; 188 border-radius: 35rpx;
168 border: none; 189 border: none;
169 height: 70rpx; 190 height: 70rpx;
170 } 191 }
171 192
172 :deep(.uni-easyinput__content-input) { 193 :deep(.uni-easyinput__content-input) {
173 font-size: 26rpx; 194 font-size: 26rpx;
174 } 195 }
175 196
176 .invertedbtn-red { 197 .invertedbtn-red {
177 border-radius: 50px; 198 border-radius: 50px;
178 background-color: #fff; 199 background-color: #fff;
179 200
180 font-size: 30rpx; 201 font-size: 30rpx;
181 padding: 10rpx 20rpx; 202 padding: 10rpx 20rpx;
182 } 203 }
183 } 204 }
184 205
185 .mt0 { 206 .mt0 {
186 margin-top: 0 !important; 207 margin-top: 0 !important;
187 } 208 }
188 209
189 .appList .appItem .name { 210 .appList .appItem .name {
190 width: 80%; 211 width: 80%;
191 word-break: break-all; 212 word-break: break-all;
192 } 213 }
193 </style> 214 </style>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
6 <text class="lab">考段名称:</text>{{ form.name }} 6 <text class="lab">考段名称:</text>{{ form.name }}
7 </view> 7 </view>
8 <view class="ddd"> 8 <view class="ddd">
9 <text class="lab">申请日期:</text>{{form.applyTime}} 9 <text class="lab">申请日期:</text>{{form.applyTime?.slice(0,10)}}
10 </view> 10 </view>
11 <view class="ddd"> 11 <view class="ddd">
12 <text class="lab">申请单位:</text>{{ form.memberName }} 12 <text class="lab">申请单位:</text>{{ form.memberName }}
...@@ -23,8 +23,9 @@ ...@@ -23,8 +23,9 @@
23 <view class="ddd"> 23 <view class="ddd">
24 <text class="lab">考段地点:</text>{{form.address}} 24 <text class="lab">考段地点:</text>{{form.address}}
25 </view> 25 </view>
26 <view class="ddd" v-if="app.globalData.showPrice"> 26 <view class="ddd" v-if="userType=='2'||userType=='1'">
27 <text class="lab">总金额:</text>{{(form.totalAmount*1).toFixed(2) }} 27 <text class="lab">总金额:</text>
28 <text class="text-danger">¥{{(form.totalAmount*1).toFixed(2) }}</text>
28 </view> 29 </view>
29 </view> 30 </view>
30 <view class="wBox"> 31 <view class="wBox">
...@@ -45,18 +46,18 @@ ...@@ -45,18 +46,18 @@
45 <view class="flexbox"> 46 <view class="flexbox">
46 <view> 47 <view>
47 原有段位 48 原有段位
48 <text v-if="n.levelOld">{{ szToHz(n.levelOld) }}段/品</text> 49 <text v-if="!n.levelOld||n.levelOld==0">--</text>
49 <text v-else>--</text> 50 <text v-else>{{ szToHz(n.levelOld) }}段/品</text>
50 </view> 51 </view>
51 <view> 52 <view>
52 考试段位 53 考试段位
53 <text v-if="n.levelNew">{{ szToHz(n.levelNew) }}段/品</text> 54 <text v-if="n.levelNew">{{ szToHz(n.levelNew) }}段/品</text>
54 <text v-else>--</text> 55 <text v-else>--</text>
55 </view> 56 </view>
56 <view v-if="app.globalData.showPrice"> 57 <view v-if="userType=='2'||userType=='1'">
57 金额 58 金额
58 <text> 59 <text class="text-danger">
59 {{ (n.examFee * 1).toFixed(2) }} 60 ¥{{ (n.examFee * 1).toFixed(2) }}
60 </text> 61 </text>
61 </view> 62 </view>
62 <view> 63 <view>
...@@ -115,7 +116,7 @@ import {szToHz} from '@/common/utils.js' ...@@ -115,7 +116,7 @@ import {szToHz} from '@/common/utils.js'
115 116
116 117
117 const app = getApp(); 118 const app = getApp();
118 const deptType = ref('') 119 const userType = ref('')
119 const form = ref({}) 120 const form = ref({})
120 const tablePersonInfo = ref({}) 121 const tablePersonInfo = ref({})
121 const recordList = ref([]) 122 const recordList = ref([])
...@@ -138,7 +139,7 @@ function init() { ...@@ -138,7 +139,7 @@ function init() {
138 uni.showLoading({ 139 uni.showLoading({
139 title: '加载中' 140 title: '加载中'
140 }) 141 })
141 deptType.value = app.globalData.deptType 142 userType.value = app.globalData.userType
142 getForm() 143 getForm()
143 getRecordList() 144 getRecordList()
144 getTablePersonInfo() 145 getTablePersonInfo()
...@@ -189,7 +190,7 @@ function getTablePersonInfo() { ...@@ -189,7 +190,7 @@ function getTablePersonInfo() {
189 190
190 </script> 191 </script>
191 192
192 <style scoped> 193 <style scoped lang="scss">
193 .wBox { 194 .wBox {
194 width: 700rpx; 195 width: 700rpx;
195 padding: 30rpx; 196 padding: 30rpx;
......
...@@ -35,6 +35,9 @@ ...@@ -35,6 +35,9 @@
35 <button @click="audit(item,'2')">拒绝</button> 35 <button @click="audit(item,'2')">拒绝</button>
36 <button @click="audit(item,'1')">同意</button> 36 <button @click="audit(item,'1')">同意</button>
37 </view> 37 </view>
38 <view class="func" v-if="item.isView=='1' && item.status=='1' && item.rankStatus =='0'">
39 <button @click="handleBack(item)">撤回</button>
40 </view>
38 </view> 41 </view>
39 </view> 42 </view>
40 <view class="nodata" v-if="infoList.length==0"> 43 <view class="nodata" v-if="infoList.length==0">
...@@ -176,7 +179,35 @@ function goDetail(item) { ...@@ -176,7 +179,35 @@ function goDetail(item) {
176 url: path 179 url: path
177 }); 180 });
178 } 181 }
179 182 function handleBack(row){
183 uni.showModal({
184 title: '请输入撤回理由',
185 editable: true,
186 success: function(res) {
187 if (res.confirm) {
188 if (!res.content) {
189 uni.showToast({
190 title: '请输入撤回理由',
191 icon: 'none'
192 })
193 } else {
194 var obj = {
195 flag: '2',
196 reason: res.content,
197 recordId: row.recordId
198 }
199 api.doVerityBack(obj).then(rr=>{
200 uni.showToast({
201 title: '操作成功',
202 icon: 'none'
203 })
204 getList()
205 })
206 }
207 }
208 }
209 })
210 }
180 </script> 211 </script>
181 212
182 <style lang="scss" scoped> 213 <style lang="scss" scoped>
......
...@@ -16,8 +16,10 @@ ...@@ -16,8 +16,10 @@
16 }">{{ item.statusStr }}</text> 16 }">{{ item.statusStr }}</text>
17 </view> 17 </view>
18 18
19 <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> 19 <view class="date" v-if="item.status!='0'&&item.submitTime">
20 <view class="name mt0" >{{item.name}}</view> 20 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons>
21 提交时间:{{item.submitTime}}</view>
22 <view class="name mt10" ><text class="dot"></text>{{item.name}}</view>
21 <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view> 23 <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}}{{item.endTime.substring(0,16)}}</view>
22 <view class="flexbox" > 24 <view class="flexbox" >
23 <view> 25 <view>
...@@ -30,7 +32,9 @@ ...@@ -30,7 +32,9 @@
30 </view> 32 </view>
31 <view> 33 <view>
32 总金额 34 总金额
33 <view>¥{{(item.totalAmount*1).toFixed(2)}}</view> 35 <view>
36 <text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text>
37 </view>
34 </view> 38 </view>
35 </view> 39 </view>
36 </view> 40 </view>
......
1 <template>
2 <view>
3 <view>请完善您的收件信息</view>
4 <uni-forms ref="baseForm" :modelValue="baseFormData">
5 <uni-forms-item label="收件人" required>
6 <uni-easyinput v-model="baseFormData.name" placeholder="请输入姓名" />
7 </uni-forms-item>
8 <uni-forms-item label="联系电话" required>
9 <uni-easyinput v-model="baseFormData.phone" placeholder="请输入联系电话" />
10 </uni-forms-item>
11 <uni-forms-item label="省/市/区/县" required>
12 <uni-data-picker placeholder="请选择 省/市/区/县" popup-title="请选择所在地区" :localdata="dataTree"
13 v-model="baseFormData.areaInfo" @change="onchange" @nodeclick="onnodeclick"
14 @popupopened="onpopupopened" @popupclosed="onpopupclosed">
15 </uni-data-picker>
16 </uni-forms-item>
17 <uni-forms-item label="详细地址" required>
18 <uni-easyinput v-model="baseFormData.address" placeholder="请输入详细地址" />
19 </uni-forms-item>
20
21 </uni-forms>
22 </view>
23 </template>
24
25 <script setup>
26 import {
27 ref
28 } from 'vue'
29 const dataTree = ref([{
30 text: "江苏",
31 value: "00",
32 children: [{
33 text: "无锡",
34 value: "001"
35 }, {
36 text: "苏州",
37 value: "002"
38 }]
39 }]);
40 const baseFormData = ref({});
41 </script>
42
43 <style>
44
45 </style>
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!