no message
Showing
129 changed files
with
2332 additions
and
1660 deletions
This diff is collapsed.
Click to expand it.
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 | ... | ... |
This diff is collapsed.
Click to expand it.
| 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> | ... | ... |
level/examStudentList.vue
0 → 100644
| 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 | ... | ... |
level/mergeUpDetail.vue
0 → 100644
| 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 | ... | ... |
This diff is collapsed.
Click to expand it.
| 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", | ... | ... |
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
| 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 | ... | ... |
pages/form/index.vue
deleted
100644 → 0
| 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> | ... | ... |
pages/usercenter/address.vue
deleted
100644 → 0
| 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> |
pages/usercenter/bills.vue
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
pages/usercenter/billsDetail.vue
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
pages/usercenter/myInfo.vue
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
pages/usercenter/teamInfo.vue
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
pages/usercenter/teamList.vue
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
pages/usercenter/usercenter.vue
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
personalVip/payPersonList.vue
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
personalVip/sheng/merge.vue
0 → 100644
This diff is collapsed.
Click to expand it.
personalVip/sheng/mergeUp.vue
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
static/bg.png
deleted
100644 → 0
25.8 KB
static/btn01.png
deleted
100644 → 0
24.5 KB
static/btn02.png
deleted
100644 → 0
31.8 KB
static/btn03.png
deleted
100644 → 0
27.1 KB
static/btn04.png
deleted
100644 → 0
30.1 KB
static/btn05.png
deleted
100644 → 0
29.6 KB
static/icon/1.png
deleted
100644 → 0
4.59 KB
static/icon/10.png
deleted
100644 → 0
8.08 KB
static/icon/11.png
deleted
100644 → 0
6.49 KB
static/icon/12.png
deleted
100644 → 0
7.28 KB
static/icon/13.png
deleted
100644 → 0
7.5 KB
static/icon/14.png
deleted
100644 → 0
8.35 KB
static/icon/15.png
deleted
100644 → 0
7.58 KB
static/icon/16.png
deleted
100644 → 0
7.82 KB
static/icon/17.png
deleted
100644 → 0
7.26 KB
static/icon/18.png
deleted
100644 → 0
7.46 KB
static/icon/19.png
deleted
100644 → 0
7.33 KB
static/icon/2.png
deleted
100644 → 0
3.66 KB
static/icon/20.png
deleted
100644 → 0
6.93 KB
static/icon/21.png
deleted
100644 → 0
8.17 KB
static/icon/22.png
deleted
100644 → 0
7.63 KB
static/icon/23.png
deleted
100644 → 0
8.49 KB
static/icon/3.png
deleted
100644 → 0
7.16 KB
static/icon/4.png
deleted
100644 → 0
7.45 KB
static/icon/5.png
deleted
100644 → 0
5.05 KB
static/icon/6.png
deleted
100644 → 0
2.69 KB
static/icon/7.png
deleted
100644 → 0
4.65 KB
static/icon/8.png
deleted
100644 → 0
5.57 KB
static/icon/9.png
deleted
100644 → 0
5.62 KB
static/icon/m.png
deleted
100644 → 0
4.75 KB
static/js/data.js
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
static/login/bg.png
deleted
100644 → 0
223 KB
static/login/logo@2x.png
deleted
100644 → 0
32.9 KB
static/login/logo@2x_副本.png
deleted
100644 → 0
59.9 KB
static/login/ren1.png
deleted
100644 → 0
342 KB
static/login/ren2.png
deleted
100644 → 0
625 KB
static/login/sfz.png
deleted
100644 → 0
48.7 KB
static/login/tab1.png
deleted
100644 → 0
7.06 KB
static/login/tab2.png
deleted
100644 → 0
6.29 KB
static/login/tag01@2x.png
deleted
100644 → 0
1.97 KB
static/login/tag02@2x.png
deleted
100644 → 0
1.22 KB
static/login/tag03@2x.png
deleted
100644 → 0
2.22 KB
static/login/tag04@2x.png
deleted
100644 → 0
1.52 KB
static/login/xz2@2x.png
deleted
100644 → 0
1.76 KB
static/login/xz@2x.png
deleted
100644 → 0
2.78 KB
static/login/xz_dwn2@2x.png
deleted
100644 → 0
2.2 KB
static/login/xz_dwn@2x.png
deleted
100644 → 0
2.43 KB
static/member/dx.png
deleted
100644 → 0
1.66 KB
static/member/dx_dwn.png
deleted
100644 → 0
2.6 KB
static/member/qx@2x.png
deleted
100644 → 0
2.79 KB
static/member/qx_dwn@2x.png
deleted
100644 → 0
2.17 KB
static/top_bg.png
deleted
100644 → 0
148 KB
uni_modules/cc-listPageView/changelog.md
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
uni_modules/cc-listPageView/package.json
0 → 100644
This diff is collapsed.
Click to expand it.
uni_modules/cc-listPageView/readme.md
0 → 100644
This diff is collapsed.
Click to expand it.
-
Please register or sign in to post a comment