no message
Showing
39 changed files
with
1902 additions
and
1666 deletions
| 1 | import request from './request.js' | 1 | import request from './request.js' |
| 2 | import config from '@/config.js' | 2 | import config from '@/config.js' |
| 3 | import * as loginServer from '@/common/login.js'; | 3 | import * as loginServer from '@/common/login.js'; |
| 4 | import _ from 'lodash' | ||
| 5 | 4 | ||
| 6 | // 激活 | 5 | // 激活 |
| 7 | export function active(data) { | 6 | export function active(data) { |
| ... | @@ -10,13 +9,13 @@ export function active(data) { | ... | @@ -10,13 +9,13 @@ export function active(data) { |
| 10 | method: 'post', | 9 | method: 'post', |
| 11 | params: data | 10 | params: data |
| 12 | }) | 11 | }) |
| 13 | } | 12 | } |
| 14 | export function getBlack() { | 13 | export function getBlack() { |
| 15 | return request({ | 14 | return request({ |
| 16 | url: '/member/info/check', | 15 | url: '/member/info/check', |
| 17 | method: 'get' | 16 | method: 'get' |
| 18 | }) | 17 | }) |
| 19 | } | 18 | } |
| 20 | export function commitPaymentVoucherYJ(data) { | 19 | export function commitPaymentVoucherYJ(data) { |
| 21 | return request({ | 20 | return request({ |
| 22 | url: '/person/paymentDocYj/commitPaymentVoucher', | 21 | url: '/person/paymentDocYj/commitPaymentVoucher', |
| ... | @@ -130,13 +129,13 @@ export function deptTreeSelect(params) { | ... | @@ -130,13 +129,13 @@ export function deptTreeSelect(params) { |
| 130 | }) | 129 | }) |
| 131 | } | 130 | } |
| 132 | const setIdToString = (list) => { | 131 | const setIdToString = (list) => { |
| 133 | _.each(list, (l) => { | 132 | for (var l of list) { |
| 134 | l.id += '' | 133 | l.id += '' |
| 135 | l.parentId += '' | 134 | l.parentId += '' |
| 136 | if (l.children && l.children.length > 0) { | 135 | if (l.children && l.children.length > 0) { |
| 137 | setIdToString(l.children) | 136 | setIdToString(l.children) |
| 138 | } | 137 | } |
| 139 | }) | 138 | } |
| 140 | } | 139 | } |
| 141 | 140 | ||
| 142 | // 会员认证 | 141 | // 会员认证 |
| ... | @@ -263,7 +262,7 @@ export function uploadImgCorp(tempFilePath) { | ... | @@ -263,7 +262,7 @@ export function uploadImgCorp(tempFilePath) { |
| 263 | uni.hideLoading(); | 262 | uni.hideLoading(); |
| 264 | }); | 263 | }); |
| 265 | } | 264 | } |
| 266 | //only for addVip photoUp | 265 | //only for addVip photoUp |
| 267 | export function uploadImgCorpPhoto(tempFilePath) { | 266 | export function uploadImgCorpPhoto(tempFilePath) { |
| 268 | const imgUrl = tempFilePath | 267 | const imgUrl = tempFilePath |
| 269 | uni.showLoading({ | 268 | uni.showLoading({ |
| ... | @@ -806,7 +805,13 @@ export function submitCert(data) { | ... | @@ -806,7 +805,13 @@ export function submitCert(data) { |
| 806 | params: data | 805 | params: data |
| 807 | }) | 806 | }) |
| 808 | } | 807 | } |
| 809 | 808 | export function submitCert2(data) { | |
| 809 | return request({ | ||
| 810 | url: `/exam/payment/submitCerts/updateCerts`, | ||
| 811 | method: 'put', | ||
| 812 | params: data | ||
| 813 | }) | ||
| 814 | } | ||
| 810 | export function getCertsLList(query) { | 815 | export function getCertsLList(query) { |
| 811 | return request({ | 816 | return request({ |
| 812 | url: '/exam/payment/certsList', | 817 | url: '/exam/payment/certsList', |
| ... | @@ -1197,32 +1202,50 @@ export function getMyCertStage() { | ... | @@ -1197,32 +1202,50 @@ export function getMyCertStage() { |
| 1197 | url: `/member/certified/getMyCertStage`, | 1202 | url: `/member/certified/getMyCertStage`, |
| 1198 | method: 'get' | 1203 | method: 'get' |
| 1199 | }) | 1204 | }) |
| 1200 | } | 1205 | } |
| 1201 | // 月结列表 | 1206 | // 月结列表 |
| 1202 | export function mentDocList(data) { | 1207 | export function mentDocList(data) { |
| 1203 | return request({ | 1208 | return request({ |
| 1204 | url: '/person/paymentDocYj/list', | 1209 | url: '/person/paymentDocYj/list', |
| 1205 | method: 'get', | 1210 | method: 'get', |
| 1206 | params: data | 1211 | params: data |
| 1207 | }) | 1212 | }) |
| 1208 | } | 1213 | } |
| 1209 | export function wdBack(yjIds) { | 1214 | export function wdBack(yjIds) { |
| 1210 | return request({ | 1215 | return request({ |
| 1211 | url: `/person/paymentDocYj/wd/${yjIds}`, | 1216 | url: `/person/paymentDocYj/wd/${yjIds}`, |
| 1212 | method: 'get' | 1217 | method: 'get' |
| 1213 | }) | 1218 | }) |
| 1214 | } | 1219 | } |
| 1215 | // 个人会员月结缴费单 | 1220 | // 个人会员月结缴费单 |
| 1216 | export function downJiaoYJFei(arr) { | 1221 | export function downJiaoYJFei(arr) { |
| 1217 | return request({ | 1222 | return request({ |
| 1218 | url: `/person/paymentDocYj/downJiaoFei/${arr}`, | 1223 | url: `/person/paymentDocYj/downJiaoFei/${arr}`, |
| 1219 | method: 'post' | 1224 | method: 'post' |
| 1220 | }) | 1225 | }) |
| 1221 | } | 1226 | } |
| 1222 | 1227 | ||
| 1223 | export function queryProcess(id) { | 1228 | export function queryProcess(id) { |
| 1224 | return request({ | 1229 | return request({ |
| 1225 | url: `/system/fileInfo/queryProcess/${id}`, | 1230 | url: `/system/fileInfo/queryProcess/${id}`, |
| 1226 | method: 'get' | 1231 | method: 'get' |
| 1227 | }) | 1232 | }) |
| 1233 | } | ||
| 1234 | export function checkPersonByPayIds(payIds) { | ||
| 1235 | return request({ | ||
| 1236 | url: `/exam/person/checkPersonByPayIds/${payIds}`, | ||
| 1237 | method: 'get' | ||
| 1238 | }) | ||
| 1239 | } | ||
| 1240 | export function checkPersonByExamIds(examIds) { | ||
| 1241 | return request({ | ||
| 1242 | url: `/exam/person/checkPersonByExamIds/${examIds}`, | ||
| 1243 | method: 'get' | ||
| 1244 | }) | ||
| 1245 | } | ||
| 1246 | export function checkPersonByPersonId(perId) { | ||
| 1247 | return request({ | ||
| 1248 | url: `/exam/person/checkPersonByPersonId/${perId}`, | ||
| 1249 | method: 'get' | ||
| 1250 | }) | ||
| 1228 | } | 1251 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | import CryptoJS from 'crypto-js' | ||
| 1 | export function szToHz(num) { | 2 | export function szToHz(num) { |
| 2 | const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'] | 3 | const hzArr = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'] |
| 3 | return hzArr[parseInt(num)] | 4 | return hzArr[parseInt(num)] |
| 4 | } | 5 | } |
| 6 | |||
| 7 | export function AESEncrypt(data) { | ||
| 8 | const key = CryptoJS.enc.Utf8.parse('abcdefgabcdegf21') | ||
| 9 | // 将数据转换为字符串 | ||
| 10 | const parseByte2HexStr = (wordArray) => { | ||
| 11 | const hexStr = wordArray.ciphertext.toString(CryptoJS.enc.Hex) | ||
| 12 | return hexStr | ||
| 13 | } | ||
| 14 | let dataStr | ||
| 15 | if (typeof data === 'object') { | ||
| 16 | dataStr = JSON.stringify(data) | ||
| 17 | } else { | ||
| 18 | dataStr = String(data) | ||
| 19 | } | ||
| 20 | // 加密 | ||
| 21 | const encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(dataStr), key, { | ||
| 22 | mode: CryptoJS.mode.ECB, | ||
| 23 | padding: CryptoJS.pad.Pkcs7 | ||
| 24 | }) | ||
| 25 | return parseByte2HexStr(encrypted) | ||
| 26 | } | ||
| 27 | |||
| 28 | |||
| 29 | export function AESDecrypt(str) { | ||
| 30 | const key = CryptoJS.enc.Utf8.parse('abcdefgabcdegf21') | ||
| 31 | const decrypt = CryptoJS.AES.decrypt(str, key, { | ||
| 32 | mode: CryptoJS.mode.ECB, | ||
| 33 | padding: CryptoJS.pad.Pkcs7 | ||
| 34 | }) | ||
| 35 | const aesStr = CryptoJS.enc.Utf8.stringify(decrypt).toString() | ||
| 36 | try { | ||
| 37 | return JSON.parse(aesStr) | ||
| 38 | } catch (e) { | ||
| 39 | return aesStr | ||
| 40 | } | ||
| 41 | } | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -6,10 +6,9 @@ | ... | @@ -6,10 +6,9 @@ |
| 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://36.153.235.222:7899/stage-api"; | 7 | // const baseUrl_api = "http://36.153.235.222:7899/stage-api"; |
| 8 | // const baseUrl_api = 'http://192.168.1.132:8787' | 8 | // const baseUrl_api = 'http://192.168.1.132:8787' |
| 9 | // const baseUrl_api = 'https://ztx.itechtop.cn/stage-api' | 9 | const baseUrl_api = 'https://tkcn.19wk.cn:8443/stage-api' |
| 10 | // const baseUrl_api = 'https://tkcn.19wk.cn:8443/stage-api' | ||
| 11 | 10 | ||
| 12 | const baseUrl_api = 'https://system.taekwondo.org.cn/stage-api' | 11 | // const baseUrl_api = 'https://system.taekwondo.org.cn/stage-api' |
| 13 | export default { | 12 | export default { |
| 14 | baseUrl_api | 13 | baseUrl_api |
| 15 | } | 14 | } | ... | ... |
| ... | @@ -56,7 +56,7 @@ | ... | @@ -56,7 +56,7 @@ |
| 56 | <script setup> | 56 | <script setup> |
| 57 | import * as api from '@/common/api.js' | 57 | import * as api from '@/common/api.js' |
| 58 | import config from '@/config.js' | 58 | import config from '@/config.js' |
| 59 | import _ from 'lodash' | 59 | import _ from 'underscore' |
| 60 | import { | 60 | import { |
| 61 | onMounted, | 61 | onMounted, |
| 62 | ref | 62 | ref | ... | ... |
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
| ... | @@ -175,7 +175,7 @@ | ... | @@ -175,7 +175,7 @@ |
| 175 | } from '@dcloudio/uni-app'; | 175 | } from '@dcloudio/uni-app'; |
| 176 | import config from '@/config.js' | 176 | import config from '@/config.js' |
| 177 | import dayjs from 'dayjs' | 177 | import dayjs from 'dayjs' |
| 178 | import _ from 'lodash' | 178 | import _ from 'underscore' |
| 179 | const app = getApp(); | 179 | const app = getApp(); |
| 180 | const memberInfo = app.globalData.memberInfo | 180 | const memberInfo = app.globalData.memberInfo |
| 181 | const form = ref({ | 181 | const form = ref({ | ... | ... |
| ... | @@ -106,7 +106,7 @@ | ... | @@ -106,7 +106,7 @@ |
| 106 | <script setup> | 106 | <script setup> |
| 107 | import * as api from '@/common/api.js' | 107 | import * as api from '@/common/api.js' |
| 108 | import config from '@/config.js' | 108 | import config from '@/config.js' |
| 109 | import _ from 'lodash' | 109 | import _ from 'underscore' |
| 110 | import { | 110 | import { |
| 111 | onMounted, | 111 | onMounted, |
| 112 | ref | 112 | ref | ... | ... |
| ... | @@ -60,7 +60,7 @@ | ... | @@ -60,7 +60,7 @@ |
| 60 | <script setup> | 60 | <script setup> |
| 61 | import * as api from '@/common/api.js' | 61 | import * as api from '@/common/api.js' |
| 62 | import config from '@/config.js' | 62 | import config from '@/config.js' |
| 63 | import _ from 'lodash' | 63 | import _ from 'underscore' |
| 64 | import { | 64 | import { |
| 65 | onMounted, | 65 | onMounted, |
| 66 | ref | 66 | ref | ... | ... |
| 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="query.idcCode" placeholder="证件号码" @blur="getList"> | 5 | v-model="query.idcCode" placeholder="证件号码" @blur="getList"> |
| 6 | </uni-easyinput> | 6 | </uni-easyinput> |
| 7 | </view> | 7 | </view> |
| 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="n.disabled">选择</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> |
| 24 | </view> | 24 | </view> |
| 25 | </view> | 25 | </view> |
| 26 | <view class="nodata" v-if="list.length==0"> | 26 | <view class="nodata" v-if="list.length==0"> |
| 27 | <image mode="aspectFit" src="/static/nodata.png"></image> | 27 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 28 | <text>请输入证件号查找</text> | 28 | <text>请输入证件号查找</text> |
| 29 | </view> | 29 | </view> |
| 30 | </view> | 30 | </view> |
| 31 | 31 | ||
| 32 | </view> | 32 | </view> |
| 33 | </template> | 33 | </template> |
| 34 | 34 | ||
| 35 | <script setup> | 35 | <script setup> |
| 36 | import * as api from '@/common/api.js' | 36 | import * as api from '@/common/api.js' |
| 37 | import { | 37 | import { |
| 38 | ref, | 38 | ref, |
| 39 | getCurrentInstance | 39 | getCurrentInstance |
| 40 | } from 'vue' | 40 | } from 'vue' |
| 41 | import { | 41 | import { |
| 42 | onLoad | 42 | onLoad |
| 43 | } from '@dcloudio/uni-app' | 43 | } from '@dcloudio/uni-app' |
| 44 | import _ from 'lodash' | 44 | import _ from 'underscore' |
| 45 | const { | 45 | const { |
| 46 | proxy | 46 | proxy |
| 47 | } = getCurrentInstance() | 47 | } = getCurrentInstance() |
| 48 | const app = getApp(); | 48 | const app = getApp(); |
| 49 | const query = ref({ | 49 | const query = ref({ |
| 50 | 50 | ||
| 51 | }) | 51 | }) |
| 52 | const list = ref([]) | 52 | const list = ref([]) |
| 53 | const total = ref(0) | 53 | const total = ref(0) |
| 54 | const userType = ref('') | 54 | const userType = ref('') |
| 55 | let chosen = [] | 55 | let chosen = [] |
| 56 | let ec = null | 56 | let ec = null |
| 57 | onLoad((option) => { | 57 | onLoad((option) => { |
| 58 | query.value.type = option.type | 58 | query.value.type = option.type |
| 59 | chosen = JSON.parse(decodeURIComponent(option.chosen)) || [] | 59 | chosen = JSON.parse(decodeURIComponent(option.chosen)) || [] |
| 60 | ec = option.ec | 60 | ec = option.ec |
| 61 | console.log(chosen) | 61 | console.log(chosen) |
| 62 | }) | 62 | }) |
| 63 | 63 | ||
| 64 | function getList() { | 64 | function getList() { |
| 65 | if (!query.value.idcCode) { | 65 | if (!query.value.idcCode) { |
| 66 | return | 66 | return |
| 67 | } | 67 | } |
| 68 | uni.showLoading({ | 68 | uni.showLoading({ |
| 69 | title: `查找中` | 69 | title: `查找中` |
| 70 | }) | 70 | }) |
| 71 | api.getCoachList(query.value).then(res => { | 71 | api.getCoachList(query.value).then(res => { |
| 72 | if (res.data.length == 0) { | 72 | if (res.data.length == 0) { |
| 73 | uni.showToast({ | 73 | uni.showToast({ |
| 74 | title: '未查询到考官信息', | 74 | title: '未查询到考官信息', |
| 75 | icon: "error" | 75 | icon: "error" |
| 76 | }) | 76 | }) |
| 77 | list.value = [] | 77 | list.value = [] |
| 78 | return | 78 | return |
| 79 | } | 79 | } |
| 80 | list.value = res.data | 80 | list.value = res.data |
| 81 | for(var l of list.value){ | 81 | for(var l of list.value){ |
| 82 | if(l.photo&&l.photo.indexOf('http')==-1){ | 82 | if(l.photo&&l.photo.indexOf('http')==-1){ |
| ... | @@ -88,67 +88,67 @@ | ... | @@ -88,67 +88,67 @@ |
| 88 | } | 88 | } |
| 89 | } | 89 | } |
| 90 | } | 90 | } |
| 91 | uni.hideLoading() | 91 | uni.hideLoading() |
| 92 | }) | 92 | }) |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | function checkChosen(n) { | 95 | function checkChosen(n) { |
| 96 | return _.some(chosen, (c) => { | 96 | return _.some(chosen, (c) => { |
| 97 | return c.perId == n.perId | 97 | return c.perId == n.perId |
| 98 | }) | 98 | }) |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | function handleChoose(row) { | 101 | function handleChoose(row) { |
| 102 | var pages = getCurrentPages() | 102 | var pages = getCurrentPages() |
| 103 | var prevPage = pages[pages.length - 2] | 103 | var prevPage = pages[pages.length - 2] |
| 104 | var obj = { | 104 | var obj = { |
| 105 | perId: row.perId, | 105 | perId: row.perId, |
| 106 | name: row.name, | 106 | name: row.name, |
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | // prevPage.onShow(obj) | 109 | // prevPage.onShow(obj) |
| 110 | uni.$emit('chosen',{ | 110 | uni.$emit('chosen',{ |
| 111 | obj:obj, | 111 | obj:obj, |
| 112 | ec | 112 | ec |
| 113 | }) | 113 | }) |
| 114 | uni.navigateBack({delta:1}) | 114 | uni.navigateBack({delta:1}) |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | function handleInfo(n) { | 117 | function handleInfo(n) { |
| 118 | uni.navigateTo({ | 118 | uni.navigateTo({ |
| 119 | url: `/personalVip/detail?perId=${n.perId}` | 119 | url: `/personalVip/detail?perId=${n.perId}` |
| 120 | }) | 120 | }) |
| 121 | } | 121 | } |
| 122 | </script> | 122 | </script> |
| 123 | 123 | ||
| 124 | <style scoped lang="scss"> | 124 | <style scoped lang="scss"> |
| 125 | .indexboxre { | 125 | .indexboxre { |
| 126 | padding: 0 30rpx; | 126 | padding: 0 30rpx; |
| 127 | 127 | ||
| 128 | .tt { | 128 | .tt { |
| 129 | font-size: 30rpx; | 129 | font-size: 30rpx; |
| 130 | margin: 0 0 30rpx; | 130 | margin: 0 0 30rpx; |
| 131 | color: #4C5359; | 131 | color: #4C5359; |
| 132 | } | 132 | } |
| 133 | 133 | ||
| 134 | position: relative; | 134 | position: relative; |
| 135 | height: calc(100vh - 300rpx); | 135 | height: calc(100vh - 300rpx); |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | .searchbar { | 138 | .searchbar { |
| 139 | display: flex; | 139 | display: flex; |
| 140 | align-items: center; | 140 | align-items: center; |
| 141 | padding: 25rpx; | 141 | padding: 25rpx; |
| 142 | box-sizing: border-box; | 142 | box-sizing: border-box; |
| 143 | 143 | ||
| 144 | :deep(.uni-easyinput .uni-easyinput__content) { | 144 | :deep(.uni-easyinput .uni-easyinput__content) { |
| 145 | border-radius: 35rpx; | 145 | border-radius: 35rpx; |
| 146 | border: none; | 146 | border: none; |
| 147 | height: 70rpx; | 147 | height: 70rpx; |
| 148 | } | 148 | } |
| 149 | 149 | ||
| 150 | :deep(.uni-easyinput__content-input) { | 150 | :deep(.uni-easyinput__content-input) { |
| 151 | font-size: 26rpx; | 151 | font-size: 26rpx; |
| 152 | } | 152 | } |
| 153 | } | 153 | } |
| 154 | </style> | 154 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view> | 2 | <view> |
| 3 | <z-paging ref="paging" v-model="list" @query="getQuery" emptyViewImg="/static/nodata.png"> | 3 | <z-paging ref="paging" v-model="list" @query="getQuery" emptyViewImg="/static/nodata.png"> |
| 4 | 4 | ||
| 5 | <view class="vipData" :slot="top" style="flex-wrap: wrap;"> | 5 | <view class="vipData" :slot="top" style="flex-wrap: wrap;"> |
| 6 | <view class="w25">共 <text>{{ tablePersonInfo.total }}</text>人</view> | 6 | <view class="w25">共 <text>{{ tablePersonInfo.total }}</text>人</view> |
| 7 | <view class="w25" v-for="l in tablePersonInfo.levelArr" :key="l.level"> | 7 | <view class="w25" v-for="l in tablePersonInfo.levelArr" :key="l.level"> |
| ... | @@ -39,33 +39,33 @@ | ... | @@ -39,33 +39,33 @@ |
| 39 | </view> | 39 | </view> |
| 40 | </view> | 40 | </view> |
| 41 | </view> | 41 | </view> |
| 42 | </view> | 42 | </view> |
| 43 | 43 | ||
| 44 | </z-paging> | 44 | </z-paging> |
| 45 | </view> | 45 | </view> |
| 46 | </template> | 46 | </template> |
| 47 | 47 | ||
| 48 | <script setup> | 48 | <script setup> |
| 49 | import * as api from '@/common/api.js' | 49 | import * as api from '@/common/api.js' |
| 50 | import config from '@/config.js' | 50 | import config from '@/config.js' |
| 51 | import {szToHz} from '@/common/utils.js' | 51 | import {szToHz} from '@/common/utils.js' |
| 52 | import { | 52 | import { |
| 53 | onMounted, | 53 | onMounted, |
| 54 | ref | 54 | ref |
| 55 | } from 'vue' | 55 | } from 'vue' |
| 56 | import { | 56 | import { |
| 57 | onLoad | 57 | onLoad |
| 58 | } from '@dcloudio/uni-app' | 58 | } from '@dcloudio/uni-app' |
| 59 | import _ from 'lodash' | 59 | import _ from 'underscore' |
| 60 | const queryParams = ref({ | 60 | const queryParams = ref({ |
| 61 | pageNum: 1, | 61 | pageNum: 1, |
| 62 | pageSize: 10 | 62 | pageSize: 10 |
| 63 | }) | 63 | }) |
| 64 | const studentquery = ref({}) | 64 | const studentquery = ref({}) |
| 65 | const paging = ref(null) | 65 | const paging = ref(null) |
| 66 | const userType = ref('') | 66 | const userType = ref('') |
| 67 | const list = ref([]) | 67 | const list = ref([]) |
| 68 | const tablePersonInfo = ref({}) | 68 | const tablePersonInfo = ref({}) |
| 69 | const total = ref(0) | 69 | const total = ref(0) |
| 70 | const app = getApp(); | 70 | const app = getApp(); |
| 71 | onLoad((option)=>{ | 71 | onLoad((option)=>{ |
| ... | @@ -80,11 +80,11 @@ | ... | @@ -80,11 +80,11 @@ |
| 80 | userType.value = app.globalData.userType | 80 | userType.value = app.globalData.userType |
| 81 | }; | 81 | }; |
| 82 | } | 82 | } |
| 83 | }) | 83 | }) |
| 84 | onMounted(() => { | 84 | onMounted(() => { |
| 85 | // getList() | 85 | // getList() |
| 86 | }) | 86 | }) |
| 87 | 87 | ||
| 88 | function getList() { | 88 | function getList() { |
| 89 | api.getStudentList(queryParams.value).then(res => { | 89 | api.getStudentList(queryParams.value).then(res => { |
| 90 | paging.value.complete(res.rows); | 90 | paging.value.complete(res.rows); |
| ... | @@ -100,7 +100,7 @@ | ... | @@ -100,7 +100,7 @@ |
| 100 | type:'1' | 100 | type:'1' |
| 101 | }) | 101 | }) |
| 102 | } | 102 | } |
| 103 | }) | 103 | }) |
| 104 | } | 104 | } |
| 105 | function getVipData(obj){ | 105 | function getVipData(obj){ |
| 106 | const levelArr = [] | 106 | const levelArr = [] |
| ... | @@ -140,8 +140,8 @@ | ... | @@ -140,8 +140,8 @@ |
| 140 | }) | 140 | }) |
| 141 | }) | 141 | }) |
| 142 | } | 142 | } |
| 143 | </script> | 143 | </script> |
| 144 | 144 | ||
| 145 | <style scoped lang="scss"> | 145 | <style scoped lang="scss"> |
| 146 | .userlist{ box-sizing: border-box;padding:20rpx 20rpx 0; | 146 | .userlist{ box-sizing: border-box;padding:20rpx 20rpx 0; |
| 147 | .item{border-bottom: 1px dashed #e5e5e5;position: relative; | 147 | .item{border-bottom: 1px dashed #e5e5e5;position: relative; |
| ... | @@ -155,33 +155,33 @@ | ... | @@ -155,33 +155,33 @@ |
| 155 | font-size: 30rpx; | 155 | font-size: 30rpx; |
| 156 | color: #AD181F;} | 156 | color: #AD181F;} |
| 157 | } | 157 | } |
| 158 | } | 158 | } |
| 159 | .searchbar { | 159 | .searchbar { |
| 160 | display: flex; | 160 | display: flex; |
| 161 | align-items: center; | 161 | align-items: center; |
| 162 | padding: 25rpx; | 162 | padding: 25rpx; |
| 163 | box-sizing: border-box; | 163 | box-sizing: border-box; |
| 164 | 164 | ||
| 165 | .invertedbtn-red { | 165 | .invertedbtn-red { |
| 166 | margin-left: 15rpx; | 166 | margin-left: 15rpx; |
| 167 | font-size: 30rpx; | 167 | font-size: 30rpx; |
| 168 | padding: 16rpx 20rpx; | 168 | padding: 16rpx 20rpx; |
| 169 | box-sizing: border-box; | 169 | box-sizing: border-box; |
| 170 | border-radius: 50rpx; | 170 | border-radius: 50rpx; |
| 171 | background-color: #fff; | 171 | background-color: #fff; |
| 172 | } | 172 | } |
| 173 | 173 | ||
| 174 | :deep(.uni-easyinput .uni-easyinput__content) { | 174 | :deep(.uni-easyinput .uni-easyinput__content) { |
| 175 | border-radius: 35rpx; | 175 | border-radius: 35rpx; |
| 176 | border: none; | 176 | border: none; |
| 177 | height: 70rpx; | 177 | height: 70rpx; |
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | :deep(.uni-easyinput__content-input) { | 180 | :deep(.uni-easyinput__content-input) { |
| 181 | font-size: 26rpx; | 181 | font-size: 26rpx; |
| 182 | } | 182 | } |
| 183 | } | 183 | } |
| 184 | 184 | ||
| 185 | 185 | ||
| 186 | 186 | ||
| 187 | </style> | 187 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -57,7 +57,7 @@ | ... | @@ -57,7 +57,7 @@ |
| 57 | <script setup> | 57 | <script setup> |
| 58 | import * as api from '@/common/api.js' | 58 | import * as api from '@/common/api.js' |
| 59 | import config from '@/config.js' | 59 | import config from '@/config.js' |
| 60 | import _ from 'lodash' | 60 | import _ from 'underscore' |
| 61 | import { | 61 | import { |
| 62 | onMounted, | 62 | onMounted, |
| 63 | ref | 63 | ref | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -60,7 +60,7 @@ | ... | @@ -60,7 +60,7 @@ |
| 60 | <script setup> | 60 | <script setup> |
| 61 | import * as api from '@/common/api.js' | 61 | import * as api from '@/common/api.js' |
| 62 | import config from '@/config.js' | 62 | import config from '@/config.js' |
| 63 | import _ from 'lodash' | 63 | import _ from 'underscore' |
| 64 | import { | 64 | import { |
| 65 | onMounted, | 65 | onMounted, |
| 66 | ref | 66 | ref | ... | ... |
| ... | @@ -64,7 +64,7 @@ | ... | @@ -64,7 +64,7 @@ |
| 64 | <script setup> | 64 | <script setup> |
| 65 | import * as api from '@/common/api.js' | 65 | import * as api from '@/common/api.js' |
| 66 | import config from '@/config.js' | 66 | import config from '@/config.js' |
| 67 | import _ from 'lodash' | 67 | import _ from 'underscore' |
| 68 | import { | 68 | import { |
| 69 | onMounted, | 69 | onMounted, |
| 70 | ref | 70 | ref | ... | ... |
| ... | @@ -2,42 +2,44 @@ | ... | @@ -2,42 +2,44 @@ |
| 2 | <view> | 2 | <view> |
| 3 | <!-- 级位证书发布 --> | 3 | <!-- 级位证书发布 --> |
| 4 | <z-paging ref="paging" v-model="infoList" @query="getQuery" emptyViewImg="/static/nodata.png"> | 4 | <z-paging ref="paging" v-model="infoList" @query="getQuery" emptyViewImg="/static/nodata.png"> |
| 5 | 5 | ||
| 6 | 6 | ||
| 7 | <view class="appList"> | 7 | <view class="appList"> |
| 8 | <view class="appItem" v-for="(item,index) in infoList" :key="index"> | 8 | <view class="appItem" v-for="(item,index) in infoList" :key="index"> |
| 9 | <view class="status" @click="goDetail(item)"> | 9 | <view class="status" @click="goDetail(item)"> |
| 10 | <text :class="{ | 10 | <text :class="{ |
| 11 | 'text-warning':item.certStatus=='0', | 11 | 'text-warning':item.certStatus=='0', |
| 12 | 'text-primary':item.certStatus=='1', | 12 | 'text-primary':item.certStatus=='1', |
| 13 | 'text-success':item.certStatus=='2' | 13 | 'text-success':item.certStatus=='2' |
| 14 | }">{{ item.certStatusStr }}</text> | 14 | }">{{ item.certStatusStr }}</text> |
| 15 | </view> | 15 | </view> |
| 16 | 16 | ||
| 17 | <view class="date"> | 17 | <view class="date"> |
| 18 | <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> | 18 | <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> |
| 19 | {{item.submitTimeStr}} 提交</view> | 19 | {{item.submitTimeStr}} 提交 |
| 20 | <view class="text-primary" v-if="item.payCode" @click="goDetail(item)">{{item.payCode}}</view> | ||
| 21 | <view class="name mt0 w100" @click="goDetail(item)"><text class="dot"></text>{{item.name}}</view> | ||
| 22 | <view class="pp esp" v-if="item.certTimeStr">证书发送时间:{{item.certTimeStr}}</view> | ||
| 23 | <view class="flexbox" @click="goDetail(item)"> | ||
| 24 | <view> | ||
| 25 | 申请单位 | ||
| 26 | <view>{{item.memberName||'--'}}</view> | ||
| 27 | </view> | 20 | </view> |
| 28 | <view> | 21 | <view class="text-primary" v-if="item.payCode" @click="goDetail(item)">{{item.payCode}}</view> |
| 29 | 已发/待发 | 22 | <view class="name mt0 w100" @click="goDetail(item)"><text class="dot"></text>{{item.name}}</view> |
| 30 | <view>{{item.hasCerts}}/<text class="text-primary">{{item.noCerts}}</text></view> | 23 | <view class="pp esp" v-if="item.certTimeStr">证书发送时间:{{item.certTimeStr}}</view> |
| 24 | <view class="flexbox" @click="goDetail(item)"> | ||
| 25 | <view> | ||
| 26 | 申请单位 | ||
| 27 | <view>{{item.memberName||'--'}}</view> | ||
| 28 | </view> | ||
| 29 | <view> | ||
| 30 | 已发/待发 | ||
| 31 | <view>{{item.hasCerts}}/<text class="text-primary">{{item.noCerts}}</text></view> | ||
| 32 | </view> | ||
| 33 | |||
| 34 | </view> | ||
| 35 | <!-- v-if="item.certStatus != '2'" --> | ||
| 36 | <view class="func"> | ||
| 37 | <button @click="send(item)">更新证书</button> | ||
| 31 | </view> | 38 | </view> |
| 32 | |||
| 33 | </view> | ||
| 34 | <view class="func" v-if="item.certStatus != '2'"> | ||
| 35 | <button @click="send(item)">一键生成</button> | ||
| 36 | </view> | 39 | </view> |
| 37 | </view> | 40 | </view> |
| 38 | </view> | ||
| 39 | </z-paging> | 41 | </z-paging> |
| 40 | <!-- <view class="nodata" v-if="infoList.length==0"> | 42 | <!-- <view class="nodata" v-if="infoList.length==0"> |
| 41 | <image mode="aspectFit" src="/static/nodata.png"></image> | 43 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 42 | <text>暂无数据</text> | 44 | <text>暂无数据</text> |
| 43 | </view> --> | 45 | </view> --> |
| ... | @@ -47,7 +49,7 @@ | ... | @@ -47,7 +49,7 @@ |
| 47 | <script setup> | 49 | <script setup> |
| 48 | import * as api from '@/common/api.js' | 50 | import * as api from '@/common/api.js' |
| 49 | import config from '@/config.js' | 51 | import config from '@/config.js' |
| 50 | import _ from 'lodash' | 52 | import _ from 'underscore' |
| 51 | import { | 53 | import { |
| 52 | onMounted, | 54 | onMounted, |
| 53 | ref | 55 | ref |
| ... | @@ -72,14 +74,14 @@ | ... | @@ -72,14 +74,14 @@ |
| 72 | const paging = ref(null) | 74 | const paging = ref(null) |
| 73 | onLoad((option) => { | 75 | onLoad((option) => { |
| 74 | queryParams.value.type = option.type | 76 | queryParams.value.type = option.type |
| 75 | if(option.type==2){ | 77 | if (option.type == 2) { |
| 76 | uni.setNavigationBarTitle({ | 78 | uni.setNavigationBarTitle({ |
| 77 | title:'段位考试详情' | 79 | title: '段位考试详情' |
| 78 | }) | 80 | }) |
| 79 | } | 81 | } |
| 80 | if(option.type==3){ | 82 | if (option.type == 3) { |
| 81 | uni.setNavigationBarTitle({ | 83 | uni.setNavigationBarTitle({ |
| 82 | title:'越段考试详情' | 84 | title: '越段考试详情' |
| 83 | }) | 85 | }) |
| 84 | } | 86 | } |
| 85 | }) | 87 | }) |
| ... | @@ -100,14 +102,15 @@ | ... | @@ -100,14 +102,15 @@ |
| 100 | getList() | 102 | getList() |
| 101 | } | 103 | } |
| 102 | 104 | ||
| 103 | function getQuery(pageNum,pageSize){ | 105 | function getQuery(pageNum, pageSize) { |
| 104 | queryParams.value.pageNum = pageNum, | 106 | queryParams.value.pageNum = pageNum, |
| 105 | queryParams.value.pageSize = pageSize | 107 | queryParams.value.pageSize = pageSize |
| 106 | api.getCertsLList(queryParams.value).then(res => { | 108 | api.getCertsLList(queryParams.value).then(res => { |
| 107 | paging.value.complete(res.rows); | 109 | paging.value.complete(res.rows); |
| 108 | total.value = res.total | 110 | total.value = res.total |
| 109 | }) | 111 | }) |
| 110 | } | 112 | } |
| 113 | |||
| 111 | function getList() { | 114 | function getList() { |
| 112 | uni.showLoading({ | 115 | uni.showLoading({ |
| 113 | title: '加载中' | 116 | title: '加载中' |
| ... | @@ -126,24 +129,45 @@ | ... | @@ -126,24 +129,45 @@ |
| 126 | }); | 129 | }); |
| 127 | } | 130 | } |
| 128 | 131 | ||
| 129 | function send(row) { | 132 | function checkCert(payIds, sureFunc, confirmFunc) { |
| 130 | uni.showModal({ | 133 | return api.checkPersonByPayIds(payIds).then(res => { |
| 131 | title: '提示', | 134 | if (res.data == 1) { |
| 132 | content: `确定生成 ${row.name} 的证书吗`, | 135 | confirmFunc().then((kk)=>{ |
| 133 | success: function(res) { | 136 | if(kk.confirm){ |
| 134 | if (res.confirm) { | 137 | sureFunc() |
| 135 | api.submitCert([{ | 138 | } |
| 136 | id: row.payId | 139 | }) |
| 137 | }]).then(res => { | 140 | } else if (res.data == 2 || res.data == 3) { |
| 138 | uni.showToast({ | 141 | uni.showModal({ |
| 139 | title: `下发成功` | 142 | title: '提示', |
| 140 | }) | 143 | content:`存在学员没有照片,是否继续生成?`, |
| 141 | getList() | 144 | success: (rr) => { |
| 142 | }) | 145 | if(rr.confirm){ |
| 143 | } | 146 | sureFunc() |
| 147 | } | ||
| 148 | } | ||
| 149 | }) | ||
| 144 | } | 150 | } |
| 145 | }) | 151 | }) |
| 146 | } | 152 | } |
| 153 | |||
| 154 | function send(row) { | ||
| 155 | checkCert(row.payId, () => { | ||
| 156 | api.submitCert2([{ | ||
| 157 | id: row.payId | ||
| 158 | }]).then(res => { | ||
| 159 | uni.showToast({ | ||
| 160 | title: `下发成功` | ||
| 161 | }) | ||
| 162 | getList() | ||
| 163 | }) | ||
| 164 | },()=>{ | ||
| 165 | return uni.showModal({ | ||
| 166 | title: '提示', | ||
| 167 | content:`确定下发 ${row.name} 的证书吗` | ||
| 168 | }) | ||
| 169 | }) | ||
| 170 | } | ||
| 147 | </script> | 171 | </script> |
| 148 | 172 | ||
| 149 | 173 | ... | ... |
| 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" :key="item.examId"> | 5 | <view class="appItem" v-for="item in infoList" :key="item.examId"> |
| 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 class="w50"> | 26 | <view class="w50"> |
| 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.isCert != '2'"> | 31 | <!-- v-if="item.isCert != '2'" --> |
| 32 | <button @click="send(item)">一键生成</button> | 32 | <view class="func"> |
| 33 | </view> | 33 | <button @click="send(item)">更新证书</button> |
| 34 | </view> | 34 | </view> |
| 35 | </view> | 35 | </view> |
| 36 | 36 | </view> | |
| 37 | <view class="nodata" v-if="infoList.length==0"> | 37 | |
| 38 | <image mode="aspectFit" src="/static/nodata.png"></image> | 38 | <view class="nodata" v-if="infoList.length==0"> |
| 39 | <text>暂无数据</text> | 39 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 40 | </view> | 40 | <text>暂无数据</text> |
| 41 | </view> | 41 | </view> |
| 42 | </template> | 42 | </view> |
| 43 | 43 | </template> | |
| 44 | <script setup> | 44 | |
| 45 | import * as api from '@/common/api.js' | 45 | <script setup> |
| 46 | import config from '@/config.js' | 46 | import * as api from '@/common/api.js' |
| 47 | import _ from 'lodash' | 47 | import config from '@/config.js' |
| 48 | import { | 48 | import _ from 'underscore' |
| 49 | onMounted, | 49 | import { |
| 50 | ref | 50 | onMounted, |
| 51 | } from 'vue' | 51 | ref |
| 52 | import { | 52 | } from 'vue' |
| 53 | onLoad, | 53 | import { |
| 54 | onShow | 54 | onLoad, |
| 55 | } from '@dcloudio/uni-app' | 55 | onShow |
| 56 | const app = getApp(); | 56 | } from '@dcloudio/uni-app' |
| 57 | const queryParams = ref({ | 57 | const app = getApp(); |
| 58 | // pageNum: 1, | 58 | const queryParams = ref({ |
| 59 | // pageSize: 10 | 59 | // pageNum: 1, |
| 60 | }) | 60 | // pageSize: 10 |
| 61 | const statusArr = ['未发放', '部分发放', '已发放'] | 61 | }) |
| 62 | const current = ref() | 62 | const statusArr = ['未发放', '部分发放', '已发放'] |
| 63 | const infoList = ref([]) | 63 | const current = ref() |
| 64 | const total = ref(0) | 64 | const infoList = ref([]) |
| 65 | const deptType = ref('') | 65 | const total = ref(0) |
| 66 | const userType = ref('') | 66 | const deptType = ref('') |
| 67 | onLoad((option) => { | 67 | const userType = ref('') |
| 68 | queryParams.value.payId = option.payId | 68 | onLoad((option) => { |
| 69 | queryParams.value.type = option.type | 69 | queryParams.value.payId = option.payId |
| 70 | if (option.type == 2) { | 70 | queryParams.value.type = option.type |
| 71 | uni.setNavigationBarTitle({ | 71 | if (option.type == 2) { |
| 72 | title: '段位考试详情' | 72 | uni.setNavigationBarTitle({ |
| 73 | }) | 73 | title: '段位考试详情' |
| 74 | } | 74 | }) |
| 75 | if (option.type == 3) { | 75 | } |
| 76 | uni.setNavigationBarTitle({ | 76 | if (option.type == 3) { |
| 77 | title: '越段考试详情' | 77 | uni.setNavigationBarTitle({ |
| 78 | }) | 78 | title: '越段考试详情' |
| 79 | } | 79 | }) |
| 80 | }) | 80 | } |
| 81 | onShow(() => { | 81 | }) |
| 82 | if (app.globalData.isLogin) { | 82 | onShow(() => { |
| 83 | init() | 83 | if (app.globalData.isLogin) { |
| 84 | } else { | 84 | init() |
| 85 | 85 | } else { | |
| 86 | app.firstLoadCallback = () => { | 86 | |
| 87 | init() | 87 | app.firstLoadCallback = () => { |
| 88 | }; | 88 | init() |
| 89 | } | 89 | }; |
| 90 | }) | 90 | } |
| 91 | 91 | }) | |
| 92 | function init() { | 92 | |
| 93 | deptType.value = app.globalData.deptType | 93 | function init() { |
| 94 | userType.value = app.globalData.userType | 94 | deptType.value = app.globalData.deptType |
| 95 | getList() | 95 | userType.value = app.globalData.userType |
| 96 | } | 96 | getList() |
| 97 | 97 | } | |
| 98 | 98 | ||
| 99 | function getList() { | 99 | |
| 100 | uni.showLoading({ | 100 | function getList() { |
| 101 | title: '加载中' | 101 | uni.showLoading({ |
| 102 | }) | 102 | title: '加载中' |
| 103 | api.getExamListByPayId(queryParams.value).then(res => { | 103 | }) |
| 104 | infoList.value = res.rows | 104 | api.getExamListByPayId(queryParams.value).then(res => { |
| 105 | uni.hideLoading() | 105 | infoList.value = res.rows |
| 106 | }) | 106 | uni.hideLoading() |
| 107 | } | 107 | }) |
| 108 | 108 | } | |
| 109 | function goDetail(item) { | 109 | |
| 110 | // const form = encodeURIComponent(JSON.stringify(item)) | 110 | function goDetail(item) { |
| 111 | let path = | 111 | // const form = encodeURIComponent(JSON.stringify(item)) |
| 112 | `/level/ztx/studentList?type=${queryParams.value.type}&examId=${item.examId}&payId=${queryParams.value.payId}` | 112 | let path = |
| 113 | uni.navigateTo({ | 113 | `/level/ztx/studentList?type=${queryParams.value.type}&examId=${item.examId}&payId=${queryParams.value.payId}` |
| 114 | url: path | 114 | uni.navigateTo({ |
| 115 | }); | 115 | url: path |
| 116 | } | 116 | }); |
| 117 | 117 | } | |
| 118 | function send(row) { | 118 | function checkCert(examIds,$sureFunc,$confirmFunc){ |
| 119 | uni.showModal({ | 119 | return api.checkPersonByExamIds(examIds).then(res=>{ |
| 120 | title: '提示', | 120 | if (res.data == 1) { |
| 121 | content: `确定一键下发 ${row.name} 的证书`, | 121 | $confirmFunc().then((kk)=>{ |
| 122 | success: function(res) { | 122 | if(kk.confirm){ |
| 123 | if (res.confirm) { | 123 | $sureFunc() |
| 124 | api.submitCert([{ | 124 | } |
| 125 | id: queryParams.value.payId, | 125 | }) |
| 126 | children: [{ | 126 | } else if (res.data == 2 || res.data == 3) { |
| 127 | id: row.examId | 127 | uni.showModal({ |
| 128 | }] | 128 | title: '提示', |
| 129 | }]).then(res => { | 129 | content:`存在学员没有照片,是否继续生成?`, |
| 130 | uni.showToast({ | 130 | success: (rr) => { |
| 131 | title: `下发成功` | 131 | if(rr.confirm){ |
| 132 | }) | 132 | $sureFunc() |
| 133 | getList() | 133 | } |
| 134 | }) | 134 | } |
| 135 | } | 135 | }) |
| 136 | } | 136 | } |
| 137 | }) | 137 | }) |
| 138 | } | 138 | } |
| 139 | </script> | 139 | function send(row) { |
| 140 | 140 | checkCert(row.examId,()=>{ | |
| 141 | 141 | api.submitCert2([{ | |
| 142 | <style scoped lang="scss"> | 142 | id: queryParams.value.payId, |
| 143 | .mt0 { | 143 | children: [{ |
| 144 | margin-top: 0 !important; | 144 | id: row.examId |
| 145 | } | 145 | }] |
| 146 | 146 | }]).then(res => { | |
| 147 | .appList .appItem .name { | 147 | uni.showToast({ |
| 148 | width: 80%; | 148 | title: `下发成功` |
| 149 | word-break: break-all; | 149 | }) |
| 150 | } | 150 | getList() |
| 151 | }) | ||
| 152 | },()=>{ | ||
| 153 | return uni.showModal({ | ||
| 154 | title: '提示', | ||
| 155 | content:`确定下发 ${row.name} 的证书吗` | ||
| 156 | }) | ||
| 157 | }) | ||
| 158 | } | ||
| 159 | </script> | ||
| 160 | |||
| 161 | |||
| 162 | <style scoped lang="scss"> | ||
| 163 | .mt0 { | ||
| 164 | margin-top: 0 !important; | ||
| 165 | } | ||
| 166 | |||
| 167 | .appList .appItem .name { | ||
| 168 | width: 80%; | ||
| 169 | word-break: break-all; | ||
| 170 | } | ||
| 151 | </style> | 171 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -8,18 +8,18 @@ | ... | @@ -8,18 +8,18 @@ |
| 8 | <view class="indexboxre" style="height: calc(100vh - 180rpx)"> | 8 | <view class="indexboxre" style="height: calc(100vh - 180rpx)"> |
| 9 | <view class="userlist"> | 9 | <view class="userlist"> |
| 10 | <view class="item" v-for="n in list" :key="n.id"> | 10 | <view class="item" v-for="n in list" :key="n.id"> |
| 11 | <view class="w100"> | 11 | <view class="w100"> |
| 12 | <view class="status"> | 12 | <view class="status"> |
| 13 | <text class="text-success" v-if="n.isCert == '1' ">已发送</text> | 13 | <text class="text-success" v-if="n.isCert == '1' ">已发送</text> |
| 14 | <text class="text-warning" v-else>未发送</text> | 14 | <text class="text-warning" v-else>未发送</text> |
| 15 | </view> | 15 | </view> |
| 16 | <view class="name">{{n.realName}}</view> | 16 | <view class="name">{{n.realName}}</view> |
| 17 | <view class="date"> | 17 | <view class="date"> |
| 18 | 所属团体: {{n.memName}} | 18 | 所属团体: {{n.memName}} |
| 19 | </view> | 19 | </view> |
| 20 | 20 | ||
| 21 | <view class="flexbox mtb30"> | 21 | <view class="flexbox mtb30"> |
| 22 | <view> | 22 | <view> |
| 23 | 会员有效期 | 23 | 会员有效期 |
| 24 | <text>{{n.vaildityDate?.slice(0,10)}}</text> | 24 | <text>{{n.vaildityDate?.slice(0,10)}}</text> |
| 25 | </view> | 25 | </view> |
| ... | @@ -44,8 +44,10 @@ | ... | @@ -44,8 +44,10 @@ |
| 44 | 44 | ||
| 45 | <script setup> | 45 | <script setup> |
| 46 | import * as api from '@/common/api.js' | 46 | import * as api from '@/common/api.js' |
| 47 | import config from '@/config.js' | 47 | import config from '@/config.js' |
| 48 | import {szToHz} from '@/common/utils.js' | 48 | import { |
| 49 | szToHz | ||
| 50 | } from '@/common/utils.js' | ||
| 49 | import { | 51 | import { |
| 50 | ref, | 52 | ref, |
| 51 | getCurrentInstance | 53 | getCurrentInstance |
| ... | @@ -62,53 +64,66 @@ | ... | @@ -62,53 +64,66 @@ |
| 62 | const total = ref(0) | 64 | const total = ref(0) |
| 63 | const userType = ref('') | 65 | const userType = ref('') |
| 64 | onLoad((option) => { | 66 | onLoad((option) => { |
| 65 | queryParams.value.examId = option.examId | 67 | queryParams.value.examId = option.examId |
| 66 | queryParams.value.payId = option.payId | 68 | queryParams.value.payId = option.payId |
| 67 | queryParams.value.type = option.type | 69 | queryParams.value.type = option.type |
| 68 | getList() | 70 | getList() |
| 69 | }) | 71 | }) |
| 70 | 72 | ||
| 71 | function getList() { | 73 | function getList() { |
| 72 | uni.showLoading({ | 74 | uni.showLoading({ |
| 73 | title: '加载中' | 75 | title: '加载中' |
| 74 | }) | 76 | }) |
| 75 | if(queryParams.value.name==''){ | 77 | if (queryParams.value.name == '') { |
| 76 | delete queryParams.value.name | 78 | delete queryParams.value.name |
| 77 | } | 79 | } |
| 78 | api.certStudentList(queryParams.value).then(res => { | 80 | api.certStudentList(queryParams.value).then(res => { |
| 79 | list.value = res.rows | 81 | list.value = res.rows |
| 80 | uni.hideLoading() | 82 | uni.hideLoading() |
| 81 | }) | 83 | }) |
| 82 | } | 84 | } |
| 83 | 85 | function checkCert(row){ | |
| 84 | function sendCert(row) { | 86 | return api.checkPersonByPersonId(row.perId).then(res => { |
| 85 | let msg | 87 | if (!res.data) { |
| 86 | if(row.isCert==1){ | 88 | uni.showModal({ |
| 87 | msg = `更新` | 89 | title: '提示', |
| 88 | }else{ | 90 | content:'该学员没有照片,无法生成证书!', |
| 89 | msg = `下发` | 91 | success: () => {} |
| 92 | }) | ||
| 93 | return Promise.reject() | ||
| 94 | } | ||
| 95 | }) | ||
| 96 | } | ||
| 97 | function sendCert(row) { | ||
| 98 | let msg | ||
| 99 | if (row.isCert == 1) { | ||
| 100 | msg = `更新` | ||
| 101 | } else { | ||
| 102 | msg = `下发` | ||
| 90 | } | 103 | } |
| 91 | uni.showModal({ | 104 | checkCert(row).then(() => { |
| 92 | title: '提示', | 105 | uni.showModal({ |
| 93 | content: `确定${msg}${row.realName}的证书吗`, | 106 | title: '提示', |
| 94 | success: function(res) { | 107 | content: `确定${msg}${row.realName}的证书吗`, |
| 95 | if (res.confirm) { | 108 | success: function(res) { |
| 96 | const params = [{ | 109 | if (res.confirm) { |
| 97 | id: queryParams.value.payId, | 110 | const params = [{ |
| 98 | children: [{ | 111 | id: queryParams.value.payId, |
| 99 | id: queryParams.value.examId, | 112 | children: [{ |
| 100 | children: [row.id] | 113 | id: queryParams.value.examId, |
| 114 | children: [row.id] | ||
| 115 | }] | ||
| 101 | }] | 116 | }] |
| 102 | }] | ||
| 103 | 117 | ||
| 104 | api.submitCert(params).then(res => { | 118 | api.submitCert2(params).then(res => { |
| 105 | uni.showToast({ | 119 | uni.showToast({ |
| 106 | title: `下发成功` | 120 | title: `下发成功` |
| 121 | }) | ||
| 122 | getList() | ||
| 107 | }) | 123 | }) |
| 108 | getList() | 124 | } |
| 109 | }) | ||
| 110 | } | 125 | } |
| 111 | } | 126 | }) |
| 112 | }) | 127 | }) |
| 113 | } | 128 | } |
| 114 | 129 | ... | ... |
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"> | 4 | <view class="tt"> |
| 5 | 审核信息 | 5 | 审核信息 |
| 6 | </view> | 6 | </view> |
| 7 | <view> | 7 | <view> |
| 8 | <view class="stepItem" v-for="(n,index) in recordList" :key="index"> | 8 | <view class="stepItem" v-for="(n,index) in recordList" :key="index"> |
| 9 | <view class="time">{{n.auditTime||'待审批'}}</view> | 9 | <view class="time">{{n.auditTime||'待审批'}}</view> |
| 10 | <view class="content"> | 10 | <view class="content"> |
| 11 | <view class="status"> | 11 | <view class="status"> |
| 12 | <text v-if="n.auditResult==0"> 审核中</text> | 12 | <text v-if="n.auditResult==0"> 审核中</text> |
| 13 | <text v-if="n.auditResult==1" class="text-success">审核通过</text> | 13 | <text v-if="n.auditResult==1" class="text-success">审核通过</text> |
| 14 | <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text> | 14 | <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text> |
| 15 | <text v-if="n.auditResult==3" class="text-warning"> 已撤回</text> | 15 | <text v-if="n.auditResult==3" class="text-warning"> 已撤回</text> |
| 16 | </view> | 16 | </view> |
| 17 | <!-- <view class="name">第 {{index+1}} 步</view> --> | 17 | <!-- <view class="name">第 {{index+1}} 步</view> --> |
| 18 | <view class="deptName">{{n.auditDeptName}}</view> | 18 | <view class="deptName">{{n.auditDeptName}}</view> |
| 19 | <view v-if="n.auditStatus==2"> | 19 | <view v-if="n.auditStatus==2"> |
| 20 | 备注:{{n.auditMsg||'/' }} | 20 | 备注:{{n.auditMsg||'/' }} |
| 21 | </view> | 21 | </view> |
| 22 | </view> | 22 | </view> |
| 23 | </view> | 23 | </view> |
| 24 | </view> | 24 | </view> |
| 25 | </view> | 25 | </view> |
| 26 | 26 | ||
| 27 | </view> | 27 | </view> |
| 28 | </template> | 28 | </template> |
| 29 | 29 | ||
| 30 | <script setup> | 30 | <script setup> |
| 31 | import * as api from '@/common/api.js' | 31 | import * as api from '@/common/api.js' |
| 32 | import config from '@/config.js' | 32 | import config from '@/config.js' |
| 33 | import _ from 'lodash' | 33 | import _ from 'underscore' |
| 34 | import { | 34 | import { |
| 35 | onMounted, | 35 | onMounted, |
| 36 | ref | 36 | ref |
| 37 | } from 'vue' | 37 | } from 'vue' |
| 38 | import { | 38 | import { |
| 39 | onLoad, | 39 | onLoad, |
| 40 | onShow | 40 | onShow |
| 41 | } from '@dcloudio/uni-app' | 41 | } from '@dcloudio/uni-app' |
| 42 | const app = getApp(); | 42 | const app = getApp(); |
| 43 | const userType = ref('') | 43 | const userType = ref('') |
| 44 | const recordList = ref([]) | 44 | const recordList = ref([]) |
| 45 | onLoad((option) => { | 45 | onLoad((option) => { |
| 46 | getMyCertStageFN() | 46 | getMyCertStageFN() |
| 47 | }) | 47 | }) |
| 48 | 48 | ||
| 49 | function getMyCertStageFN() { | 49 | function getMyCertStageFN() { |
| 50 | api.getMyCertStage().then(res => { | 50 | api.getMyCertStage().then(res => { |
| 51 | recordList.value = res.data | 51 | recordList.value = res.data |
| 52 | console.log(res) | 52 | console.log(res) |
| 53 | }) | 53 | }) |
| 54 | 54 | ||
| 55 | } | 55 | } |
| 56 | </script> | 56 | </script> |
| 57 | 57 | ||
| 58 | <style scoped lang="scss"> | 58 | <style scoped lang="scss"> |
| 59 | .wBox { | 59 | .wBox { |
| 60 | width: 700rpx; | 60 | width: 700rpx; |
| 61 | padding: 30rpx; | 61 | padding: 30rpx; |
| 62 | margin: 20rpx auto; | 62 | margin: 20rpx auto; |
| 63 | background: #FFFFFF; | 63 | background: #FFFFFF; |
| 64 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | 64 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); |
| 65 | border-radius: 15rpx; | 65 | border-radius: 15rpx; |
| 66 | 66 | ||
| 67 | .tt { | 67 | .tt { |
| 68 | color: #0A1629; | 68 | color: #0A1629; |
| 69 | margin: 0 0 30rpx; | 69 | margin: 0 0 30rpx; |
| 70 | font-size: 30rpx; | 70 | font-size: 30rpx; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | .ddd { | 73 | .ddd { |
| 74 | font-size: 28rpx; | 74 | font-size: 28rpx; |
| 75 | color: #333; | 75 | color: #333; |
| 76 | margin: 0 0 10rpx; | 76 | margin: 0 0 10rpx; |
| 77 | 77 | ||
| 78 | .lab { | 78 | .lab { |
| 79 | color: #999; | 79 | color: #999; |
| 80 | display: inline-block; | 80 | display: inline-block; |
| 81 | text-align: justify; | 81 | text-align: justify; |
| 82 | } | 82 | } |
| 83 | } | 83 | } |
| 84 | } | 84 | } |
| 85 | </style> | 85 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
This diff is collapsed.
Click to expand it.
| 1 | { | 1 | { |
| 2 | "dependencies": { | 2 | "dependencies": { |
| 3 | "crypto-js": "^4.1.1", | ||
| 3 | "dayjs": "^1.11.6", | 4 | "dayjs": "^1.11.6", |
| 4 | "lodash": "^4.17.21" | 5 | "lodash": "^4.17.21", |
| 6 | "underscore": "^1.13.6" | ||
| 5 | }, | 7 | }, |
| 6 | "devDependencies": { | 8 | "devDependencies": { |
| 7 | "@rollup/plugin-commonjs": "^22.0.0" | 9 | "@rollup/plugin-commonjs": "^22.0.0" | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -60,7 +60,7 @@ | ... | @@ -60,7 +60,7 @@ |
| 60 | <script setup> | 60 | <script setup> |
| 61 | import * as api from '@/common/api.js' | 61 | import * as api from '@/common/api.js' |
| 62 | import config from '@/config.js' | 62 | import config from '@/config.js' |
| 63 | import _ from 'lodash' | 63 | import _ from 'underscore' |
| 64 | import { | 64 | import { |
| 65 | onMounted, | 65 | onMounted, |
| 66 | ref | 66 | ref | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view> | 2 | <view> |
| 3 | <!-- <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" | 3 | <!-- <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" |
| 4 | styleType="text" activeColor="#AD181F"></uni-segmented-control> --> | 4 | styleType="text" activeColor="#AD181F"></uni-segmented-control> --> |
| 5 | 5 | ||
| 6 | <!-- 成绩录入 --> | 6 | <!-- 成绩录入 --> |
| 7 | <view class="appList"> | 7 | <view class="appList"> |
| 8 | <view class="appItem" v-for="item in infoList" :key="item.recordId"> | 8 | <view class="appItem" v-for="item in infoList" :key="item.recordId"> |
| 9 | <view @click="goDetail(item)"> | 9 | <view @click="goDetail(item)"> |
| 10 | <view class="status"> | 10 | <view class="status"> |
| 11 | <text :class="{ | 11 | <text :class="{ |
| 12 | 'text-primary':item.scoreStatus=='0', | 12 | 'text-primary':item.scoreStatus=='0', |
| 13 | 'text-success':item.scoreStatus=='2', | 13 | 'text-success':item.scoreStatus=='2', |
| 14 | 'text-danger':item.scoreStatus=='3', | 14 | 'text-danger':item.scoreStatus=='3', |
| 15 | 'text-warning':item.scoreStatus=='4' | 15 | 'text-warning':item.scoreStatus=='4' |
| 16 | }">{{ item.scoreStatusStr }}</text> | 16 | }">{{ item.scoreStatusStr }}</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">提交时间:{{item.submitTime}}</view> |
| 20 | <view class="name mt0">{{item.name}}</view> | 20 | <view class="name mt0">{{item.name}}</view> |
| 21 | <view class="pp esp">考段日期:{{item.startTime?.substring(0,16)}} 至 {{item.endTime?.substring(0,16)}} | 21 | <view class="pp esp">考段日期:{{item.startTime?.substring(0,16)}} 至 {{item.endTime?.substring(0,16)}} |
| 22 | </view> | 22 | </view> |
| 23 | <view class="flexbox"> | 23 | <view class="flexbox"> |
| 24 | <view> | 24 | <view> |
| 25 | 申请日期 | 25 | 申请日期 |
| 26 | <view>{{item.applyTime?.substring(0, 10)}}</view> | 26 | <view>{{item.applyTime?.substring(0, 10)}}</view> |
| 27 | </view> | 27 | </view> |
| 28 | <view> | 28 | <view> |
| 29 | 考段考生数 | 29 | 考段考生数 |
| 30 | <view>{{item.totalNum||'--'}}</view> | 30 | <view>{{item.totalNum||'--'}}</view> |
| 31 | </view> | 31 | </view> |
| 32 | <view> | 32 | <view> |
| 33 | 总金额 | 33 | 总金额 |
| 34 | <view><text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text></view> | 34 | <view><text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text></view> |
| 35 | </view> | 35 | </view> |
| 36 | </view> | 36 | </view> |
| 37 | </view> | 37 | </view> |
| 38 | <!-- <view class="func" v-if="(item.scoreStatus=='0'||item.scoreStatus=='3' || item.scoreStatus=='4')&& item.rankStatus == '1'"> | 38 | <!-- <view class="func" v-if="(item.scoreStatus=='0'||item.scoreStatus=='3' || item.scoreStatus=='4')&& item.rankStatus == '1'"> |
| 39 | <button @click="scoreEdit(item)">成绩维护</button> | 39 | <button @click="scoreEdit(item)">成绩维护</button> |
| 40 | </view> --> | 40 | </view> --> |
| 41 | </view> | 41 | </view> |
| 42 | </view> | 42 | </view> |
| 43 | <view class="nodata" v-if="infoList.length==0"> | 43 | <view class="nodata" v-if="infoList.length==0"> |
| 44 | <image mode="aspectFit" src="/static/nodata.png"></image> | 44 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 45 | <text>暂无数据</text> | 45 | <text>暂无数据</text> |
| 46 | </view> | 46 | </view> |
| 47 | </view> | 47 | </view> |
| 48 | </template> | 48 | </template> |
| 49 | 49 | ||
| 50 | <script setup> | 50 | <script setup> |
| 51 | import * as examApi from '@/common/api_exam.js' | 51 | import * as examApi from '@/common/api_exam.js' |
| 52 | import _ from 'lodash' | 52 | import _ from 'underscore' |
| 53 | import { | 53 | import { |
| 54 | ref | 54 | ref |
| 55 | } from 'vue' | 55 | } from 'vue' |
| 56 | import { | 56 | import { |
| 57 | onLoad, | 57 | onLoad, |
| 58 | onShow | 58 | onShow |
| 59 | } from '@dcloudio/uni-app' | 59 | } from '@dcloudio/uni-app' |
| 60 | 60 | ||
| 61 | const app = getApp(); | 61 | const app = getApp(); |
| 62 | const queryParams = ref({ | 62 | const queryParams = ref({ |
| 63 | status: '0', | 63 | status: '0', |
| 64 | rankStatus: '1' | 64 | rankStatus: '1' |
| 65 | }) | 65 | }) |
| 66 | const current = ref() | 66 | const current = ref() |
| 67 | const navs = ref(['审核中', '审核通过', '审核拒绝']) | 67 | const navs = ref(['审核中', '审核通过', '审核拒绝']) |
| 68 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] | 68 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] |
| 69 | const deptType = ref('') | 69 | const deptType = ref('') |
| 70 | const infoList = ref([]) | 70 | const infoList = ref([]) |
| 71 | const total = ref(0) | 71 | const total = ref(0) |
| 72 | 72 | ||
| 73 | onLoad((options) => { | 73 | onLoad((options) => { |
| 74 | queryParams.value.type = options.type | 74 | queryParams.value.type = options.type |
| 75 | if (options.type == 2) { | 75 | if (options.type == 2) { |
| 76 | uni.setNavigationBarTitle({ | 76 | uni.setNavigationBarTitle({ |
| 77 | title: '段位成绩录入' | 77 | title: '段位成绩录入' |
| 78 | }) | 78 | }) |
| 79 | } | 79 | } |
| 80 | if (options.type == 3) { | 80 | if (options.type == 3) { |
| 81 | uni.setNavigationBarTitle({ | 81 | uni.setNavigationBarTitle({ |
| 82 | title: '越段成绩录入' | 82 | title: '越段成绩录入' |
| 83 | }) | 83 | }) |
| 84 | } | 84 | } |
| 85 | }) | 85 | }) |
| 86 | 86 | ||
| 87 | onShow(() => { | 87 | onShow(() => { |
| 88 | if (app.globalData.isLogin) { | 88 | if (app.globalData.isLogin) { |
| 89 | init() | 89 | init() |
| 90 | } else { | 90 | } else { |
| 91 | app.firstLoadCallback = () => { | 91 | app.firstLoadCallback = () => { |
| 92 | init() | 92 | init() |
| 93 | }; | 93 | }; |
| 94 | } | 94 | } |
| 95 | }) | 95 | }) |
| 96 | 96 | ||
| 97 | function init() { | 97 | function init() { |
| 98 | deptType.value = app.globalData.deptType | 98 | deptType.value = app.globalData.deptType |
| 99 | getList() | 99 | getList() |
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | function onClickItem(e) { | 102 | function onClickItem(e) { |
| 103 | queryParams.value.status = e.currentIndex | 103 | queryParams.value.status = e.currentIndex |
| 104 | getList() | 104 | getList() |
| 105 | } | 105 | } |
| 106 | 106 | ||
| 107 | function getList() { | 107 | function getList() { |
| 108 | uni.showLoading({ | 108 | uni.showLoading({ |
| 109 | title: '加载中', | 109 | title: '加载中', |
| 110 | mask: true | 110 | mask: true |
| 111 | }) | 111 | }) |
| 112 | examApi.getRankScoreList(queryParams.value).then(res => { | 112 | examApi.getRankScoreList(queryParams.value).then(res => { |
| 113 | 113 | ||
| 114 | infoList.value = res.rows | 114 | infoList.value = res.rows |
| 115 | total.value = res.total | 115 | total.value = res.total |
| 116 | 116 | ||
| 117 | uni.hideLoading() | 117 | uni.hideLoading() |
| 118 | }) | 118 | }) |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | function scoreEdit(item) { | 121 | function scoreEdit(item) { |
| 122 | console.log(item.sourceData) | 122 | console.log(item.sourceData) |
| 123 | var obj = { | 123 | var obj = { |
| 124 | flag: flag, | 124 | flag: flag, |
| 125 | reason: null, | 125 | reason: null, |
| 126 | id: item.recordId | 126 | id: item.recordId |
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | if (flag == '2') { | 129 | if (flag == '2') { |
| 130 | // 拒绝 | 130 | // 拒绝 |
| 131 | // 弹出框填写理由 | 131 | // 弹出框填写理由 |
| 132 | uni.showModal({ | 132 | uni.showModal({ |
| 133 | title: '请输入拒绝理由', | 133 | title: '请输入拒绝理由', |
| 134 | editable: true, | 134 | editable: true, |
| 135 | success: function(res) { | 135 | success: function(res) { |
| 136 | if (res.confirm) { | 136 | if (res.confirm) { |
| 137 | if (!res.content) { | 137 | if (!res.content) { |
| 138 | uni.showToast({ | 138 | uni.showToast({ |
| 139 | title: '请输入拒绝理由', | 139 | title: '请输入拒绝理由', |
| 140 | icon: 'none' | 140 | icon: 'none' |
| 141 | }) | 141 | }) |
| 142 | } else { | 142 | } else { |
| 143 | obj.reason = res.content | 143 | obj.reason = res.content |
| 144 | doApproval(obj) | 144 | doApproval(obj) |
| 145 | } | 145 | } |
| 146 | } | 146 | } |
| 147 | } | 147 | } |
| 148 | }) | 148 | }) |
| 149 | } else if (flag == '1') { | 149 | } else if (flag == '1') { |
| 150 | // 二次确认 | 150 | // 二次确认 |
| 151 | uni.showModal({ | 151 | uni.showModal({ |
| 152 | title: '提示', | 152 | title: '提示', |
| 153 | content: `确定审批通过吗`, | 153 | content: `确定审批通过吗`, |
| 154 | success: function(res) { | 154 | success: function(res) { |
| 155 | if (res.confirm) { | 155 | if (res.confirm) { |
| 156 | doApproval(obj) | 156 | doApproval(obj) |
| 157 | } | 157 | } |
| 158 | } | 158 | } |
| 159 | }) | 159 | }) |
| 160 | } | 160 | } |
| 161 | } | 161 | } |
| 162 | 162 | ||
| 163 | function doApproval(obj) { | 163 | function doApproval(obj) { |
| 164 | uni.showLoading({ | 164 | uni.showLoading({ |
| 165 | title: '加载中' | 165 | title: '加载中' |
| 166 | }) | 166 | }) |
| 167 | examApi.doMergeFlows(obj).then((res) => { | 167 | examApi.doMergeFlows(obj).then((res) => { |
| 168 | uni.hideLoading() | 168 | uni.hideLoading() |
| 169 | uni.showToast({ | 169 | uni.showToast({ |
| 170 | title: '操作成功', | 170 | title: '操作成功', |
| 171 | icon: 'none' | 171 | icon: 'none' |
| 172 | }) | 172 | }) |
| 173 | getList() | 173 | getList() |
| 174 | }) | 174 | }) |
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | function goDetail(item) { | 177 | function goDetail(item) { |
| 178 | let path = `/pages/rank/applyDetail?examId=${item.examId}` | 178 | let path = `/pages/rank/applyDetail?examId=${item.examId}` |
| 179 | uni.navigateTo({ | 179 | uni.navigateTo({ |
| 180 | url: path | 180 | url: path |
| 181 | }); | 181 | }); |
| 182 | } | 182 | } |
| 183 | </script> | 183 | </script> |
| 184 | 184 | ||
| 185 | <style lang="scss" scoped> | 185 | <style lang="scss" scoped> |
| 186 | 186 | ||
| 187 | </style> | 187 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view class="mainbox"> | 2 | <view class="mainbox"> |
| 3 | <view class="title">{{form.name}}</view> | 3 | <view class="title">{{form.name}}</view> |
| 4 | <view class="infos"> | 4 | <view class="infos"> |
| 5 | <text>{{ form.source }}</text> | 5 | <text>{{ form.source }}</text> |
| 6 | <text>{{ form.belongTime }}</text> | 6 | <text>{{ form.belongTime }}</text> |
| 7 | </view> | 7 | </view> |
| 8 | <view class="content"> | 8 | <view class="content"> |
| 9 | 9 | ||
| 10 | <view v-html="form.content"></view> | 10 | <view v-html="form.content"></view> |
| 11 | 11 | ||
| 12 | <view v-if="attachmentMp4.length>0"> | 12 | <view v-if="attachmentMp4.length>0"> |
| 13 | <video v-for="(f,index) in attachmentMp4" :key="index" controls :src="config.baseUrl_api + f.url"></video> | 13 | <video v-for="(f,index) in attachmentMp4" :key="index" controls :src="config.baseUrl_api + f.url"></video> |
| 14 | </view> | 14 | </view> |
| 15 | <view v-if="attachmentFile.length>0" class="mt20"> | 15 | <view v-if="attachmentFile.length>0" class="mt20"> |
| 16 | <!-- 附件--> | 16 | <!-- 附件--> |
| 17 | <view class="fwb mt20">附件下载:</view> | 17 | <view class="fwb mt20">附件下载:</view> |
| ... | @@ -20,34 +20,34 @@ | ... | @@ -20,34 +20,34 @@ |
| 20 | {{ index + 1 }}、{{ f.name }} | 20 | {{ index + 1 }}、{{ f.name }} |
| 21 | </view> | 21 | </view> |
| 22 | 22 | ||
| 23 | </view> | 23 | </view> |
| 24 | <view> | 24 | <view> |
| 25 | <text v-if=" form.author">发布人:{{ form.author }}</text> | 25 | <text v-if=" form.author">发布人:{{ form.author }}</text> |
| 26 | </view> | 26 | </view> |
| 27 | </view> | 27 | </view> |
| 28 | </view> | 28 | </view> |
| 29 | </template> | 29 | </template> |
| 30 | 30 | ||
| 31 | <script setup> | 31 | <script setup> |
| 32 | import { | 32 | import { |
| 33 | ref | 33 | ref |
| 34 | } from 'vue' | 34 | } from 'vue' |
| 35 | import * as api from '@/common/api.js'; | 35 | import * as api from '@/common/api.js'; |
| 36 | import { | 36 | import { |
| 37 | onLoad | 37 | onLoad |
| 38 | } from '@dcloudio/uni-app'; | 38 | } from '@dcloudio/uni-app'; |
| 39 | import _ from 'lodash' | 39 | import _ from 'underscore' |
| 40 | import config from '@/config.js' | 40 | import config from '@/config.js' |
| 41 | const form = ref({}) | 41 | const form = ref({}) |
| 42 | const attachmentFile = ref([]) | 42 | const attachmentFile = ref([]) |
| 43 | const attachmentMp4 = ref([]) | 43 | const attachmentMp4 = ref([]) |
| 44 | 44 | ||
| 45 | onLoad((option) => { | 45 | onLoad((option) => { |
| 46 | getData(option.noteId) | 46 | getData(option.noteId) |
| 47 | }) | 47 | }) |
| 48 | 48 | ||
| 49 | function getData(noteId) { | 49 | function getData(noteId) { |
| 50 | api.getNewsById(noteId).then(res => { | 50 | api.getNewsById(noteId).then(res => { |
| 51 | form.value = res.data | 51 | form.value = res.data |
| 52 | var html = res.data.content.replace(/<img([\s\w"-=\/\.:;]+)((?:(height="[^"]+")))/ig, '<img$1') | 52 | var html = res.data.content.replace(/<img([\s\w"-=\/\.:;]+)((?:(height="[^"]+")))/ig, '<img$1') |
| 53 | .replace(/<img([\s\w"-=\/\.:;]+)((?:(width="[^"]+")))/ig, '<img$1') | 53 | .replace(/<img([\s\w"-=\/\.:;]+)((?:(width="[^"]+")))/ig, '<img$1') |
| ... | @@ -55,14 +55,14 @@ const attachmentMp4 = ref([]) | ... | @@ -55,14 +55,14 @@ const attachmentMp4 = ref([]) |
| 55 | .replace(/<img([\s\w"-=\/\.:;]+)((?:(alt="[^"]+")))/ig, '<img$1') | 55 | .replace(/<img([\s\w"-=\/\.:;]+)((?:(alt="[^"]+")))/ig, '<img$1') |
| 56 | .replace(/<img([\s\w"-=\/\.:;]+)/ig, '<img style="width: 100%;" $1'); | 56 | .replace(/<img([\s\w"-=\/\.:;]+)/ig, '<img style="width: 100%;" $1'); |
| 57 | 57 | ||
| 58 | 58 | ||
| 59 | if (form.value.attacthJson) { | 59 | if (form.value.attacthJson) { |
| 60 | const attachment = JSON.parse(form.value.attacthJson) | 60 | const attachment = JSON.parse(form.value.attacthJson) |
| 61 | attachmentFile.value = _.filter(attachment, (a) => a.url.toLowerCase().indexOf('.mp4') === -1) || [] | 61 | attachmentFile.value = _.filter(attachment, (a) => a.url.toLowerCase().indexOf('.mp4') === -1) || [] |
| 62 | attachmentMp4.value = _.filter(attachment, (a) => a.url.toLowerCase().indexOf('.mp4') !== -1) || [] | 62 | attachmentMp4.value = _.filter(attachment, (a) => a.url.toLowerCase().indexOf('.mp4') !== -1) || [] |
| 63 | } | 63 | } |
| 64 | }) | 64 | }) |
| 65 | } | 65 | } |
| 66 | function downLoad(url){ | 66 | function downLoad(url){ |
| 67 | console.log(url) | 67 | console.log(url) |
| 68 | var str = config.baseUrl_api + url | 68 | var str = config.baseUrl_api + url |
| ... | @@ -131,9 +131,9 @@ const attachmentMp4 = ref([]) | ... | @@ -131,9 +131,9 @@ const attachmentMp4 = ref([]) |
| 131 | } | 131 | } |
| 132 | }); | 132 | }); |
| 133 | } | 133 | } |
| 134 | </script> | 134 | </script> |
| 135 | 135 | ||
| 136 | <style scoped lang="scss"> | 136 | <style scoped lang="scss"> |
| 137 | .mainbox { | 137 | .mainbox { |
| 138 | box-sizing: border-box; | 138 | box-sizing: border-box; |
| 139 | padding: 50rpx 25rpx 160rpx; | 139 | padding: 50rpx 25rpx 160rpx; |
| ... | @@ -190,5 +190,5 @@ const attachmentMp4 = ref([]) | ... | @@ -190,5 +190,5 @@ const attachmentMp4 = ref([]) |
| 190 | 190 | ||
| 191 | video { | 191 | video { |
| 192 | width: 100%; | 192 | width: 100%; |
| 193 | } | 193 | } |
| 194 | </style> | 194 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 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.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?.slice(0,10)}} | 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 }} |
| 13 | </view> | 13 | </view> |
| 14 | <view class="ddd"> | 14 | <view class="ddd"> |
| 15 | <text class="lab">考官:</text>{{form.examinerNames?.split(',').join('/')}} | 15 | <text class="lab">考官:</text>{{form.examinerNames?.split(',').join('/')}} |
| 16 | </view> | 16 | </view> |
| 17 | <view class="ddd"> | 17 | <view class="ddd"> |
| 18 | <text class="lab">考试开始时间:</text>{{form.startTime}} | 18 | <text class="lab">考试开始时间:</text>{{form.startTime}} |
| 19 | </view> | 19 | </view> |
| 20 | <view class="ddd"> | 20 | <view class="ddd"> |
| 21 | <text class="lab">考试结束时间:</text>{{form.endTime}} | 21 | <text class="lab">考试结束时间:</text>{{form.endTime}} |
| 22 | </view> | 22 | </view> |
| 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="userType=='2'||userType=='1'"> | 26 | <view class="ddd" v-if="userType=='2'||userType=='1'"> |
| 27 | <text class="lab">总金额:</text> | 27 | <text class="lab">总金额:</text> |
| 28 | <text class="text-danger">¥{{(form.totalAmount*1).toFixed(2) }}</text> | 28 | <text class="text-danger">¥{{(form.totalAmount*1).toFixed(2) }}</text> |
| 29 | </view> | 29 | </view> |
| 30 | </view> | 30 | </view> |
| 31 | <view class="wBox"> | 31 | <view class="wBox"> |
| 32 | <view class="tt"> | 32 | <view class="tt"> |
| 33 | 考生信息 | 33 | 考生信息 |
| 34 | </view> | 34 | </view> |
| 35 | <view class="vipData"> | 35 | <view class="vipData"> |
| 36 | <view>共 <text>{{ tablePersonInfo.total }}</text>人</view> | 36 | <view>共 <text>{{ tablePersonInfo.total }}</text>人</view> |
| 37 | <view v-for="l in tablePersonInfo.levelArr" :key="l.level"> | 37 | <view v-for="l in tablePersonInfo.levelArr" :key="l.level"> |
| 38 | {{ szToHz(l.level) }}段: <text>{{ l.num }} </text>人 | 38 | {{ szToHz(l.level) }}段: <text>{{ l.num }} </text>人 |
| 39 | </view> | 39 | </view> |
| 40 | </view> | 40 | </view> |
| 41 | <view class="userlist"> | 41 | <view class="userlist"> |
| 42 | <view class="item" v-for="n in list" :key="n.id" style="background-color: #fffafa;"> | 42 | <view class="item" v-for="n in list" :key="n.id" style="background-color: #fffafa;"> |
| 43 | <view class="w100"> | 43 | <view class="w100"> |
| 44 | <view class="name">{{n.realName}} <text>{{n.memName}}</text></view> | 44 | <view class="name">{{n.realName}} <text>{{n.memName}}</text></view> |
| 45 | <!-- <view class="date">{{n.idcTypeStr}}:{{n.idcCode}}</view> --> | 45 | <!-- <view class="date">{{n.idcTypeStr}}:{{n.idcCode}}</view> --> |
| 46 | <view class="flexbox"> | 46 | <view class="flexbox"> |
| 47 | <view> | 47 | <view> |
| 48 | 原有段位 | 48 | 原有段位 |
| ... | @@ -65,97 +65,97 @@ | ... | @@ -65,97 +65,97 @@ |
| 65 | <text v-if="n.isPass=='1'" class="text-success">通过</text> | 65 | <text v-if="n.isPass=='1'" class="text-success">通过</text> |
| 66 | <text v-else class="text-danger">未通过</text> | 66 | <text v-else class="text-danger">未通过</text> |
| 67 | </view> | 67 | </view> |
| 68 | </view> | 68 | </view> |
| 69 | </view> | 69 | </view> |
| 70 | 70 | ||
| 71 | </view> | 71 | </view> |
| 72 | </view> | 72 | </view> |
| 73 | 73 | ||
| 74 | </view> | 74 | </view> |
| 75 | <view class="wBox"> | 75 | <view class="wBox"> |
| 76 | <view class="tt"> | 76 | <view class="tt"> |
| 77 | 审核信息 | 77 | 审核信息 |
| 78 | </view> | 78 | </view> |
| 79 | <view> | 79 | <view> |
| 80 | <view class="stepItem" v-for="(n,index) in recordList" :key="index"> | 80 | <view class="stepItem" v-for="(n,index) in recordList" :key="index"> |
| 81 | <view class="time">{{n.handleDate||'待审批'}}</view> | 81 | <view class="time">{{n.handleDate||'待审批'}}</view> |
| 82 | <view class="content"> | 82 | <view class="content"> |
| 83 | <view class="status"> | 83 | <view class="status"> |
| 84 | <text :class="{ | 84 | <text :class="{ |
| 85 | 'text-success':n.auditStatus=='1', | 85 | 'text-success':n.auditStatus=='1', |
| 86 | 'text-danger':n.auditStatus=='2', | 86 | 'text-danger':n.auditStatus=='2', |
| 87 | 'text-warning':n.auditStatus=='3' | 87 | 'text-warning':n.auditStatus=='3' |
| 88 | }">{{ n.auditStatusStr }}</text> | 88 | }">{{ n.auditStatusStr }}</text> |
| 89 | </view> | 89 | </view> |
| 90 | <!-- <view class="name">第 {{index+1}} 步</view> --> | 90 | <!-- <view class="name">第 {{index+1}} 步</view> --> |
| 91 | <view class="deptName">{{n.deptName}}</view> | 91 | <view class="deptName">{{n.deptName}}</view> |
| 92 | <view v-if="n.reason"> | 92 | <view v-if="n.reason"> |
| 93 | 备注:{{n.reason||'' }} | 93 | 备注:{{n.reason||'' }} |
| 94 | </view> | 94 | </view> |
| 95 | </view> | 95 | </view> |
| 96 | </view> | 96 | </view> |
| 97 | </view> | 97 | </view> |
| 98 | </view> | 98 | </view> |
| 99 | 99 | ||
| 100 | </view> | 100 | </view> |
| 101 | </template> | 101 | </template> |
| 102 | 102 | ||
| 103 | <script setup> | 103 | <script setup> |
| 104 | import * as api from '@/common/api.js' | 104 | import * as api from '@/common/api.js' |
| 105 | import config from '@/config.js' | 105 | import config from '@/config.js' |
| 106 | import _ from 'lodash' | 106 | import _ from 'underscore' |
| 107 | import { | 107 | import { |
| 108 | onMounted, | 108 | onMounted, |
| 109 | ref | 109 | ref |
| 110 | } from 'vue' | 110 | } from 'vue' |
| 111 | import { | 111 | import { |
| 112 | onLoad, | 112 | onLoad, |
| 113 | onShow | 113 | onShow |
| 114 | } from '@dcloudio/uni-app' | 114 | } from '@dcloudio/uni-app' |
| 115 | import {szToHz} from '@/common/utils.js' | 115 | import {szToHz} from '@/common/utils.js' |
| 116 | 116 | ||
| 117 | 117 | ||
| 118 | const app = getApp(); | 118 | const app = getApp(); |
| 119 | const userType = ref('') | 119 | const userType = ref('') |
| 120 | const form = ref({}) | 120 | const form = ref({}) |
| 121 | const tablePersonInfo = ref({}) | 121 | const tablePersonInfo = ref({}) |
| 122 | const recordList = ref([]) | 122 | const recordList = ref([]) |
| 123 | const list = ref([]) | 123 | const list = ref([]) |
| 124 | let examId = '' | 124 | let examId = '' |
| 125 | onLoad((option) => { | 125 | onLoad((option) => { |
| 126 | examId = option.examId | 126 | examId = option.examId |
| 127 | }) | 127 | }) |
| 128 | onShow(() => { | 128 | onShow(() => { |
| 129 | if (app.globalData.isLogin) { | 129 | if (app.globalData.isLogin) { |
| 130 | init() | 130 | init() |
| 131 | } else { | 131 | } else { |
| 132 | app.firstLoadCallback = () => { | 132 | app.firstLoadCallback = () => { |
| 133 | init() | 133 | init() |
| 134 | }; | 134 | }; |
| 135 | } | 135 | } |
| 136 | }) | 136 | }) |
| 137 | 137 | ||
| 138 | function init() { | 138 | function init() { |
| 139 | uni.showLoading({ | 139 | uni.showLoading({ |
| 140 | title: '加载中' | 140 | title: '加载中' |
| 141 | }) | 141 | }) |
| 142 | userType.value = app.globalData.userType | 142 | userType.value = app.globalData.userType |
| 143 | getForm() | 143 | getForm() |
| 144 | getRecordList() | 144 | getRecordList() |
| 145 | getTablePersonInfo() | 145 | getTablePersonInfo() |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | function getForm() { | 148 | function getForm() { |
| 149 | api.getLevelApplyInfo(examId).then(res => { | 149 | api.getLevelApplyInfo(examId).then(res => { |
| 150 | uni.hideLoading() | 150 | uni.hideLoading() |
| 151 | form.value = res.data | 151 | form.value = res.data |
| 152 | }) | 152 | }) |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | function getRecordList() { | 155 | function getRecordList() { |
| 156 | api.getApprovalRecord(examId).then(res => { | 156 | api.getApprovalRecord(examId).then(res => { |
| 157 | recordList.value = res.data.levelSteps | 157 | recordList.value = res.data.levelSteps |
| 158 | }) | 158 | }) |
| 159 | } | 159 | } |
| 160 | function getTablePersonInfo() { | 160 | function getTablePersonInfo() { |
| 161 | api.getStudentList({ | 161 | api.getStudentList({ |
| ... | @@ -187,26 +187,26 @@ function getTablePersonInfo() { | ... | @@ -187,26 +187,26 @@ function getTablePersonInfo() { |
| 187 | } | 187 | } |
| 188 | }) | 188 | }) |
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | </script> | 191 | </script> |
| 192 | 192 | ||
| 193 | <style scoped lang="scss"> | 193 | <style scoped lang="scss"> |
| 194 | .wBox { | 194 | .wBox { |
| 195 | width: 700rpx; | 195 | width: 700rpx; |
| 196 | padding: 30rpx; | 196 | padding: 30rpx; |
| 197 | margin: 20rpx auto; | 197 | margin: 20rpx auto; |
| 198 | background: #FFFFFF; | 198 | background: #FFFFFF; |
| 199 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | 199 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); |
| 200 | border-radius: 15rpx; | 200 | border-radius: 15rpx; |
| 201 | 201 | ||
| 202 | .tt { | 202 | .tt { |
| 203 | color: #0A1629;margin: 0 0 30rpx; | 203 | color: #0A1629;margin: 0 0 30rpx; |
| 204 | font-size: 30rpx; | 204 | font-size: 30rpx; |
| 205 | } | 205 | } |
| 206 | 206 | ||
| 207 | .ddd{font-size: 28rpx;color: #333; margin: 0 0 10rpx; | 207 | .ddd{font-size: 28rpx;color: #333; margin: 0 0 10rpx; |
| 208 | .lab{color: #999;display: inline-block;text-align: justify;} | 208 | .lab{color: #999;display: inline-block;text-align: justify;} |
| 209 | } | 209 | } |
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | </style> | 212 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -49,10 +49,10 @@ | ... | @@ -49,10 +49,10 @@ |
| 49 | </template> | 49 | </template> |
| 50 | 50 | ||
| 51 | <script setup> | 51 | <script setup> |
| 52 | import * as examApi from '@/common/api_exam.js' | 52 | import * as examApi from '@/common/api_exam.js' |
| 53 | import _ from 'lodash' | 53 | import _ from 'underscore' |
| 54 | import { ref } from 'vue' | 54 | import { ref } from 'vue' |
| 55 | import { onLoad,onShow } from '@dcloudio/uni-app' | 55 | import { onLoad,onShow } from '@dcloudio/uni-app' |
| 56 | 56 | ||
| 57 | const app = getApp(); | 57 | const app = getApp(); |
| 58 | const queryParams = ref({ | 58 | const queryParams = ref({ |
| ... | @@ -63,7 +63,7 @@ const current = ref() | ... | @@ -63,7 +63,7 @@ const current = ref() |
| 63 | const navs = ref(['审核中', '审核通过', '审核拒绝']) | 63 | const navs = ref(['审核中', '审核通过', '审核拒绝']) |
| 64 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] | 64 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] |
| 65 | const deptType = ref('') | 65 | const deptType = ref('') |
| 66 | const infoList = ref([]) | 66 | const infoList = ref([]) |
| 67 | const total = ref(0) | 67 | const total = ref(0) |
| 68 | 68 | ||
| 69 | onLoad((options)=>{ | 69 | onLoad((options)=>{ |
| ... | @@ -85,9 +85,9 @@ function init(){ | ... | @@ -85,9 +85,9 @@ function init(){ |
| 85 | getList() | 85 | getList() |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | function onClickItem(e) { | 88 | function onClickItem(e) { |
| 89 | queryParams.value.status = e.currentIndex | 89 | queryParams.value.status = e.currentIndex |
| 90 | getList() | 90 | getList() |
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | function getList() { | 93 | function getList() { |
| ... | @@ -180,7 +180,7 @@ function goDetail(item) { | ... | @@ -180,7 +180,7 @@ function goDetail(item) { |
| 180 | let path = `/pages/rank/applyDetail?examId=${item.examId}` | 180 | let path = `/pages/rank/applyDetail?examId=${item.examId}` |
| 181 | uni.navigateTo({ | 181 | uni.navigateTo({ |
| 182 | url: path | 182 | url: path |
| 183 | }); | 183 | }); |
| 184 | } | 184 | } |
| 185 | function handleBack(row){ | 185 | function handleBack(row){ |
| 186 | uni.showModal({ | 186 | uni.showModal({ | ... | ... |
| ... | @@ -49,17 +49,17 @@ | ... | @@ -49,17 +49,17 @@ |
| 49 | </template> | 49 | </template> |
| 50 | 50 | ||
| 51 | <script setup> | 51 | <script setup> |
| 52 | import * as examApi from '@/common/api_exam.js' | 52 | import * as examApi from '@/common/api_exam.js' |
| 53 | import _ from 'lodash' | 53 | import _ from 'underscore' |
| 54 | import { ref } from 'vue' | 54 | import { ref } from 'vue' |
| 55 | import { onLoad,onShow } from '@dcloudio/uni-app' | 55 | import { onLoad,onShow } from '@dcloudio/uni-app' |
| 56 | 56 | ||
| 57 | const app = getApp(); | 57 | const app = getApp(); |
| 58 | const queryParams = ref({}) | 58 | const queryParams = ref({}) |
| 59 | const current = ref() | 59 | const current = ref() |
| 60 | const navs = ref(['未发放', '部分发放', '已发放']) | 60 | const navs = ref(['未发放', '部分发放', '已发放']) |
| 61 | const deptType = ref('') | 61 | const deptType = ref('') |
| 62 | const infoList = ref([]) | 62 | const infoList = ref([]) |
| 63 | const total = ref(0) | 63 | const total = ref(0) |
| 64 | 64 | ||
| 65 | onLoad((options)=>{ | 65 | onLoad((options)=>{ |
| ... | @@ -81,9 +81,9 @@ function init(){ | ... | @@ -81,9 +81,9 @@ function init(){ |
| 81 | getList() | 81 | getList() |
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | function onClickItem(e) { | 84 | function onClickItem(e) { |
| 85 | queryParams.value.certStatus = e.currentIndex | 85 | queryParams.value.certStatus = e.currentIndex |
| 86 | getList() | 86 | getList() |
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | function getList() { | 89 | function getList() { |
| ... | @@ -122,7 +122,7 @@ function goDetail(item) { | ... | @@ -122,7 +122,7 @@ function goDetail(item) { |
| 122 | let path = `/pages/rank/applyDetail?examId=${item.examId}` | 122 | let path = `/pages/rank/applyDetail?examId=${item.examId}` |
| 123 | uni.navigateTo({ | 123 | uni.navigateTo({ |
| 124 | url: path | 124 | url: path |
| 125 | }); | 125 | }); |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | </script> | 128 | </script> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view> | 2 | <view> |
| 3 | <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" | 3 | <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" |
| 4 | styleType="text" activeColor="#AD181F"></uni-segmented-control> | 4 | styleType="text" activeColor="#AD181F"></uni-segmented-control> |
| 5 | 5 | ||
| 6 | <!-- 段位考试审核 --> | 6 | <!-- 段位考试审核 --> |
| 7 | <view class="appList"> | 7 | <view class="appList"> |
| 8 | <view class="appItem" v-for="item in infoList" :key="item.recordId"> | 8 | <view class="appItem" v-for="item in infoList" :key="item.recordId"> |
| 9 | <view @click="goDetail(item)"> | 9 | <view @click="goDetail(item)"> |
| 10 | <view class="status"> | 10 | <view class="status"> |
| 11 | <text :class="{ | 11 | <text :class="{ |
| 12 | 'text-primary':item.auditStatus=='0', | 12 | 'text-primary':item.auditStatus=='0', |
| 13 | 'text-success':item.auditStatus=='1', | 13 | 'text-success':item.auditStatus=='1', |
| 14 | 'text-danger':item.auditStatus=='2', | 14 | 'text-danger':item.auditStatus=='2', |
| 15 | 'text-warning':item.auditStatus=='3' | 15 | 'text-warning':item.auditStatus=='3' |
| 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"> | 19 | <view class="date" v-if="item.status!='0'&&item.submitTime"> |
| 20 | <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> | 20 | <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> |
| 21 | 提交时间:{{item.submitTime}} | 21 | 提交时间:{{item.submitTime}} |
| 22 | </view> | 22 | </view> |
| 23 | <view class="text-primary">{{item.examCode}}</view> | 23 | <view class="text-primary">{{item.examCode}}</view> |
| 24 | <view class="name mt10"><text class="dot"></text>{{item.name}}</view> | 24 | <view class="name mt10"><text class="dot"></text>{{item.name}}</view> |
| 25 | <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}} 至 {{item.endTime.substring(0,16)}} | 25 | <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}} 至 {{item.endTime.substring(0,16)}} |
| 26 | </view> | 26 | </view> |
| 27 | <view class="flexbox"> | 27 | <view class="flexbox"> |
| 28 | <view> | 28 | <view> |
| 29 | 申请日期 | 29 | 申请日期 |
| 30 | <view>{{item.applyTime.substring(0, 10)}}</view> | 30 | <view>{{item.applyTime.substring(0, 10)}}</view> |
| 31 | </view> | 31 | </view> |
| 32 | <view> | 32 | <view> |
| 33 | 考段考生数 | 33 | 考段考生数 |
| 34 | <view>{{item.totalNum}}</view> | 34 | <view>{{item.totalNum}}</view> |
| 35 | </view> | 35 | </view> |
| 36 | <view> | 36 | <view> |
| 37 | 总金额 | 37 | 总金额 |
| 38 | <view> | 38 | <view> |
| 39 | <text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text> | 39 | <text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text> |
| 40 | </view> | 40 | </view> |
| 41 | </view> | 41 | </view> |
| 42 | </view> | 42 | </view> |
| 43 | </view> | 43 | </view> |
| 44 | <view class="func" v-if="item.auditStatus=='0'"> | 44 | <view class="func" v-if="item.auditStatus=='0'"> |
| 45 | <button @click="audit(item,'2')">拒绝</button> | 45 | <button @click="audit(item,'2')">拒绝</button> |
| 46 | <button @click="audit(item,'1')">同意</button> | 46 | <button @click="audit(item,'1')">同意</button> |
| 47 | </view> | 47 | </view> |
| 48 | </view> | 48 | </view> |
| 49 | </view> | 49 | </view> |
| 50 | <view class="nodata" v-if="infoList.length==0"> | 50 | <view class="nodata" v-if="infoList.length==0"> |
| 51 | <image mode="aspectFit" src="/static/nodata.png"></image> | 51 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 52 | <text>暂无数据</text> | 52 | <text>暂无数据</text> |
| 53 | </view> | 53 | </view> |
| 54 | </view> | 54 | </view> |
| 55 | </template> | 55 | </template> |
| 56 | 56 | ||
| 57 | <script setup> | 57 | <script setup> |
| 58 | import * as examApi from '@/common/api_exam.js' | 58 | import * as examApi from '@/common/api_exam.js' |
| 59 | import _ from 'lodash' | 59 | import _ from 'underscore' |
| 60 | import { | 60 | import { |
| 61 | ref | 61 | ref |
| 62 | } from 'vue' | 62 | } from 'vue' |
| 63 | import { | 63 | import { |
| 64 | onLoad, | 64 | onLoad, |
| 65 | onShow | 65 | onShow |
| 66 | } from '@dcloudio/uni-app' | 66 | } from '@dcloudio/uni-app' |
| 67 | 67 | ||
| 68 | const app = getApp(); | 68 | const app = getApp(); |
| 69 | const queryParams = ref({ | 69 | const queryParams = ref({ |
| 70 | status: '0', | 70 | status: '0', |
| 71 | rankStatus: '1' | 71 | rankStatus: '1' |
| 72 | }) | 72 | }) |
| 73 | const current = ref() | 73 | const current = ref() |
| 74 | const navs = ref(['审核中', '审核通过', '审核拒绝']) | 74 | const navs = ref(['审核中', '审核通过', '审核拒绝']) |
| 75 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] | 75 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] |
| 76 | const deptType = ref('') | 76 | const deptType = ref('') |
| 77 | const infoList = ref([]) | 77 | const infoList = ref([]) |
| 78 | const total = ref(0) | 78 | const total = ref(0) |
| 79 | 79 | ||
| 80 | onLoad((options) => { | 80 | onLoad((options) => { |
| 81 | queryParams.value.type = options.type | 81 | queryParams.value.type = options.type |
| 82 | if (options.type == 2) { | 82 | if (options.type == 2) { |
| 83 | uni.setNavigationBarTitle({ | 83 | uni.setNavigationBarTitle({ |
| 84 | title: '段位考试审核' | 84 | title: '段位考试审核' |
| 85 | }) | 85 | }) |
| 86 | } | 86 | } |
| 87 | if (options.type == 3) { | 87 | if (options.type == 3) { |
| 88 | uni.setNavigationBarTitle({ | 88 | uni.setNavigationBarTitle({ |
| 89 | title: '越段考试审核' | 89 | title: '越段考试审核' |
| 90 | }) | 90 | }) |
| 91 | } | 91 | } |
| 92 | }) | 92 | }) |
| 93 | 93 | ||
| 94 | onShow(() => { | 94 | onShow(() => { |
| 95 | if (app.globalData.isLogin) { | 95 | if (app.globalData.isLogin) { |
| 96 | init() | 96 | init() |
| 97 | } else { | 97 | } else { |
| 98 | app.firstLoadCallback = () => { | 98 | app.firstLoadCallback = () => { |
| 99 | init() | 99 | init() |
| 100 | }; | 100 | }; |
| 101 | } | 101 | } |
| 102 | }) | 102 | }) |
| 103 | 103 | ||
| 104 | function init() { | 104 | function init() { |
| 105 | uni.showLoading({ | 105 | uni.showLoading({ |
| 106 | title: '加载中' | 106 | title: '加载中' |
| 107 | }) | 107 | }) |
| 108 | deptType.value = app.globalData.deptType | 108 | deptType.value = app.globalData.deptType |
| 109 | getList() | 109 | getList() |
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | function onClickItem(e) { | 112 | function onClickItem(e) { |
| 113 | uni.showLoading({ | 113 | uni.showLoading({ |
| 114 | title: '加载中' | 114 | title: '加载中' |
| 115 | }) | 115 | }) |
| 116 | queryParams.value.status = e.currentIndex | 116 | queryParams.value.status = e.currentIndex |
| 117 | getList() | 117 | getList() |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | function getList() { | 120 | function getList() { |
| 121 | examApi.getVerityList(queryParams.value).then(res => { | 121 | examApi.getVerityList(queryParams.value).then(res => { |
| 122 | uni.hideLoading() | 122 | uni.hideLoading() |
| 123 | const list = [] | 123 | const list = [] |
| 124 | _.each(res.rows, r => { | 124 | _.each(res.rows, r => { |
| 125 | const item = JSON.parse(r.content) | 125 | const item = JSON.parse(r.content) |
| 126 | item.recordId = r.recordId | 126 | item.recordId = r.recordId |
| 127 | item.auditStatus = r.auditStatus | 127 | item.auditStatus = r.auditStatus |
| 128 | item.submitStatus = r.submitStatus | 128 | item.submitStatus = r.submitStatus |
| 129 | item.distributeTime = r.distributeTime | 129 | item.distributeTime = r.distributeTime |
| 130 | item.statusStr = statusArr[r.auditStatus] | 130 | item.statusStr = statusArr[r.auditStatus] |
| 131 | item.sourceData = r | 131 | item.sourceData = r |
| 132 | item.scoreStatus = r.scoreStatus | 132 | item.scoreStatus = r.scoreStatus |
| 133 | item.status = r.status | 133 | item.status = r.status |
| 134 | item.isView = r.isView | 134 | item.isView = r.isView |
| 135 | item.payStatus = r.payStatus | 135 | item.payStatus = r.payStatus |
| 136 | item.rankStatus = r.rankStatus | 136 | item.rankStatus = r.rankStatus |
| 137 | item.processCentBar = r.processCentBar | 137 | item.processCentBar = r.processCentBar |
| 138 | list.push(item) | 138 | list.push(item) |
| 139 | }) | 139 | }) |
| 140 | 140 | ||
| 141 | infoList.value = list | 141 | infoList.value = list |
| 142 | total.value = res.total | 142 | total.value = res.total |
| 143 | }) | 143 | }) |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | function audit(item, flag) { | 146 | function audit(item, flag) { |
| 147 | console.log(item.sourceData) | 147 | console.log(item.sourceData) |
| 148 | var obj = { | 148 | var obj = { |
| 149 | flag: flag, | 149 | flag: flag, |
| 150 | reason: null, | 150 | reason: null, |
| 151 | id: item.recordId | 151 | id: item.recordId |
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | if (flag == '2') { | 154 | if (flag == '2') { |
| 155 | // 拒绝 | 155 | // 拒绝 |
| 156 | // 弹出框填写理由 | 156 | // 弹出框填写理由 |
| 157 | uni.showModal({ | 157 | uni.showModal({ |
| 158 | title: '请输入拒绝理由', | 158 | title: '请输入拒绝理由', |
| 159 | editable: true, | 159 | editable: true, |
| 160 | success: function(res) { | 160 | success: function(res) { |
| 161 | if (res.confirm) { | 161 | if (res.confirm) { |
| 162 | if (!res.content) { | 162 | if (!res.content) { |
| 163 | uni.showToast({ | 163 | uni.showToast({ |
| 164 | title: '请输入拒绝理由', | 164 | title: '请输入拒绝理由', |
| 165 | icon: 'none' | 165 | icon: 'none' |
| 166 | }) | 166 | }) |
| 167 | } else { | 167 | } else { |
| 168 | obj.reason = res.content | 168 | obj.reason = res.content |
| 169 | doApproval(obj) | 169 | doApproval(obj) |
| 170 | } | 170 | } |
| 171 | } | 171 | } |
| 172 | } | 172 | } |
| 173 | }) | 173 | }) |
| 174 | } else if (flag == '1') { | 174 | } else if (flag == '1') { |
| 175 | // 二次确认 | 175 | // 二次确认 |
| 176 | uni.showModal({ | 176 | uni.showModal({ |
| 177 | title: '提示', | 177 | title: '提示', |
| 178 | content: `确定审批通过吗`, | 178 | content: `确定审批通过吗`, |
| 179 | success: function(res) { | 179 | success: function(res) { |
| 180 | if (res.confirm) { | 180 | if (res.confirm) { |
| 181 | doApproval(obj) | 181 | doApproval(obj) |
| 182 | } | 182 | } |
| 183 | } | 183 | } |
| 184 | }) | 184 | }) |
| 185 | } | 185 | } |
| 186 | } | 186 | } |
| 187 | 187 | ||
| 188 | function doApproval(obj) { | 188 | function doApproval(obj) { |
| 189 | uni.showLoading({ | 189 | uni.showLoading({ |
| 190 | title: '加载中', | 190 | title: '加载中', |
| 191 | mask: true | 191 | mask: true |
| 192 | }) | 192 | }) |
| 193 | examApi.doMergeFlows(obj).then((res) => { | 193 | examApi.doMergeFlows(obj).then((res) => { |
| 194 | uni.hideLoading() | 194 | uni.hideLoading() |
| 195 | uni.showToast({ | 195 | uni.showToast({ |
| 196 | title: '操作成功', | 196 | title: '操作成功', |
| 197 | icon: 'none' | 197 | icon: 'none' |
| 198 | }) | 198 | }) |
| 199 | getList() | 199 | getList() |
| 200 | }) | 200 | }) |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | function goDetail(item) { | 203 | function goDetail(item) { |
| 204 | let path = `/pages/rank/applyDetail?examId=${item.examId}` | 204 | let path = `/pages/rank/applyDetail?examId=${item.examId}` |
| 205 | uni.navigateTo({ | 205 | uni.navigateTo({ |
| 206 | url: path | 206 | url: path |
| 207 | }); | 207 | }); |
| 208 | } | 208 | } |
| 209 | </script> | 209 | </script> |
| 210 | 210 | ||
| 211 | <style lang="scss" scoped> | 211 | <style lang="scss" scoped> |
| 212 | 212 | ||
| 213 | </style> | 213 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -128,7 +128,8 @@ | ... | @@ -128,7 +128,8 @@ |
| 128 | import { | 128 | import { |
| 129 | onLoad | 129 | onLoad |
| 130 | } from '@dcloudio/uni-app' | 130 | } from '@dcloudio/uni-app' |
| 131 | import config from '@/config.js' | 131 | import config from '@/config.js' |
| 132 | import * as aes2 from '@/common/utils.js' | ||
| 132 | const current = ref(0) | 133 | const current = ref(0) |
| 133 | const popup = ref(null) | 134 | const popup = ref(null) |
| 134 | const infoConfirm = ref(null) | 135 | const infoConfirm = ref(null) |
| ... | @@ -498,7 +499,12 @@ | ... | @@ -498,7 +499,12 @@ |
| 498 | if(baseFormData.value.idcType=='4'){ | 499 | if(baseFormData.value.idcType=='4'){ |
| 499 | baseFormData.value.idcType='0' | 500 | baseFormData.value.idcType='0' |
| 500 | } | 501 | } |
| 501 | delete baseFormData.value.card | 502 | delete baseFormData.value.card |
| 503 | |||
| 504 | const time = new Date().valueOf() + '' | ||
| 505 | baseFormData.t = time + Math.floor(Math.random() * 10) | ||
| 506 | baseFormData.signT = aes2.AESEncrypt(baseFormData.idcType + time) | ||
| 507 | |||
| 502 | api.addPersonToMyDept(baseFormData.value).then(Response => { | 508 | api.addPersonToMyDept(baseFormData.value).then(Response => { |
| 503 | if (Response.data == 0) { | 509 | if (Response.data == 0) { |
| 504 | let msg = '该成员,实名认证未通过,注册失败!' | 510 | let msg = '该成员,实名认证未通过,注册失败!' | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view class="hasfixedbottom"> | 2 | <view class="hasfixedbottom"> |
| 3 | 3 | ||
| 4 | <view class="searchbar"> | 4 | <view class="searchbar"> |
| 5 | <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" | 5 | <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" |
| 6 | v-model="queryParams.name" placeholder="搜索姓名" @blur="search()" @clear="search()"> | 6 | v-model="queryParams.name" placeholder="搜索姓名" @blur="search()" @clear="search()"> |
| 7 | </uni-easyinput> | 7 | </uni-easyinput> |
| 8 | </view> | 8 | </view> |
| 9 | <view class="userlist"> | 9 | <view class="userlist"> |
| 10 | <view class="item" v-for=" (n,index) in studentList" :key="index"> | 10 | <view class="item" v-for=" (n,index) in studentList" :key="index"> |
| 11 | <view @click="checkThis(n)"> | 11 | <view @click="checkThis(n)"> |
| 12 | <image class="icon" v-if="n.checked" | 12 | <image class="icon" v-if="n.checked" |
| 13 | :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" /> | 13 | :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" /> |
| 14 | <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" /> | 14 | <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" /> |
| 15 | </view> | 15 | </view> |
| 16 | <view> | 16 | <view> |
| 17 | <view class="name">{{n.name}} <text>{{n.perCode}}</text></view> | 17 | <view class="name">{{n.name}} <text>{{n.perCode}}</text></view> |
| 18 | <view class="date">{{ cardType[n.idcType]?.text }}:{{n.idcCode}}</view> | 18 | <view class="date">{{ cardType[n.idcType]?.text }}:{{n.idcCode}}</view> |
| 19 | </view> | 19 | </view> |
| 20 | </view> | 20 | </view> |
| 21 | <view class="nodata" v-if="studentList.length==0"> | 21 | <view class="nodata" v-if="studentList.length==0"> |
| 22 | <image mode="aspectFit" src="/static/nodata.png"></image> | 22 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 23 | <text>无可变更会员</text> | 23 | <text>无可变更会员</text> |
| 24 | </view> | 24 | </view> |
| 25 | </view> | 25 | </view> |
| 26 | <uni-load-more @clickLoadMore="clickLoadMore" :contentText="contentText" :status="status"></uni-load-more> | 26 | <uni-load-more @clickLoadMore="clickLoadMore" :contentText="contentText" :status="status"></uni-load-more> |
| 27 | 27 | ||
| 28 | <view class="fixedBottom" v-if="studentList.length!=0"> | 28 | <view class="fixedBottom" v-if="studentList.length!=0"> |
| 29 | <button class="btn-red" @click="handleImport">批量添加</button> | 29 | <button class="btn-red" @click="handleImport">批量添加</button> |
| 30 | </view> | 30 | </view> |
| 31 | 31 | ||
| 32 | </view> | 32 | </view> |
| 33 | </template> | 33 | </template> |
| 34 | 34 | ||
| 35 | <script setup> | 35 | <script setup> |
| 36 | import { | 36 | import { |
| 37 | ref | 37 | ref |
| 38 | } from 'vue' | 38 | } from 'vue' |
| 39 | import { | 39 | import { |
| 40 | onLoad, | 40 | onLoad, |
| 41 | onShow | 41 | onShow |
| 42 | } from '@dcloudio/uni-app' | 42 | } from '@dcloudio/uni-app' |
| 43 | import * as api from '@/common/api.js' | 43 | import * as api from '@/common/api.js' |
| 44 | import _ from 'lodash' | 44 | import _ from 'underscore' |
| 45 | import config from '/config.js' | 45 | import config from '/config.js' |
| 46 | const queryParams = ref({ | 46 | const queryParams = ref({ |
| 47 | paymentRangeId:-1, | 47 | paymentRangeId:-1, |
| 48 | multiDeptFlag: 1, | 48 | multiDeptFlag: 1, |
| ... | @@ -50,52 +50,52 @@ const queryParams = ref({ | ... | @@ -50,52 +50,52 @@ const queryParams = ref({ |
| 50 | pageNum:1, | 50 | pageNum:1, |
| 51 | pageSize:10 | 51 | pageSize:10 |
| 52 | }) | 52 | }) |
| 53 | const paging = ref(null) | 53 | const paging = ref(null) |
| 54 | const total = ref(0) | 54 | const total = ref(0) |
| 55 | const status = ref('no-more') | 55 | const status = ref('no-more') |
| 56 | const list = ref([]) | 56 | const list = ref([]) |
| 57 | const popup = ref(null) | 57 | const popup = ref(null) |
| 58 | const choseStudent = ref(null) | 58 | const choseStudent = ref(null) |
| 59 | const studentList = ref([]) | 59 | const studentList = ref([]) |
| 60 | const type = ref('') | 60 | const type = ref('') |
| 61 | const form = ref({}) | 61 | const form = ref({}) |
| 62 | const contentText = ref({contentdown: "点击加载更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"}) | 62 | const contentText = ref({contentdown: "点击加载更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"}) |
| 63 | const cardType = ref([{ | 63 | const cardType = ref([{ |
| 64 | text: '身份证', | 64 | text: '身份证', |
| 65 | value: '0' | 65 | value: '0' |
| 66 | }, | 66 | }, |
| 67 | { | 67 | { |
| 68 | text: '来往大陆(内地)通行证', | 68 | text: '来往大陆(内地)通行证', |
| 69 | value: '1' | 69 | value: '1' |
| 70 | }, | 70 | }, |
| 71 | { | 71 | { |
| 72 | text: '中国护照', | 72 | text: '中国护照', |
| 73 | value: '2' | 73 | value: '2' |
| 74 | }, | 74 | }, |
| 75 | { | 75 | { |
| 76 | text: '护照', | 76 | text: '护照', |
| 77 | value: '3' | 77 | value: '3' |
| 78 | }, | 78 | }, |
| 79 | { | 79 | { |
| 80 | text: '其它', | 80 | text: '其它', |
| 81 | value: '4' | 81 | value: '4' |
| 82 | }, | 82 | }, |
| 83 | { | 83 | { |
| 84 | text: '香港身份证', | 84 | text: '香港身份证', |
| 85 | value: '5' | 85 | value: '5' |
| 86 | }, | 86 | }, |
| 87 | { | 87 | { |
| 88 | text: '往来港澳台通行证', | 88 | text: '往来港澳台通行证', |
| 89 | value: '6' | 89 | value: '6' |
| 90 | } | 90 | } |
| 91 | ]) | 91 | ]) |
| 92 | onLoad((option) => { | 92 | onLoad((option) => { |
| 93 | if (option.rangeId) { | 93 | if (option.rangeId) { |
| 94 | queryParams.value.paymentRangeId = option.rangeId | 94 | queryParams.value.paymentRangeId = option.rangeId |
| 95 | } | 95 | } |
| 96 | getList() | 96 | getList() |
| 97 | }) | 97 | }) |
| 98 | onShow(() => {}) | 98 | onShow(() => {}) |
| 99 | function clickLoadMore(){ | 99 | function clickLoadMore(){ |
| 100 | getList() | 100 | getList() |
| 101 | } | 101 | } |
| ... | @@ -111,7 +111,7 @@ function search(){ | ... | @@ -111,7 +111,7 @@ function search(){ |
| 111 | } | 111 | } |
| 112 | uni.hideLoading() | 112 | uni.hideLoading() |
| 113 | }) | 113 | }) |
| 114 | } | 114 | } |
| 115 | function getList() { | 115 | function getList() { |
| 116 | if(total.value>0&&total.value>studentList.value.length){ | 116 | if(total.value>0&&total.value>studentList.value.length){ |
| 117 | uni.showLoading({ | 117 | uni.showLoading({ |
| ... | @@ -133,87 +133,87 @@ function getList() { | ... | @@ -133,87 +133,87 @@ function getList() { |
| 133 | 133 | ||
| 134 | }else if(total.value==0){ | 134 | }else if(total.value==0){ |
| 135 | search() | 135 | search() |
| 136 | } | 136 | } |
| 137 | } | 137 | } |
| 138 | 138 | ||
| 139 | function checkThis(n) { | 139 | function checkThis(n) { |
| 140 | if (n.checked) { | 140 | if (n.checked) { |
| 141 | n.checked = false | 141 | n.checked = false |
| 142 | } else { | 142 | } else { |
| 143 | n.checked = true | 143 | n.checked = true |
| 144 | } | 144 | } |
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | function handleImport() { | 147 | function handleImport() { |
| 148 | var arr = [] | 148 | var arr = [] |
| 149 | for (var n of studentList.value) { | 149 | for (var n of studentList.value) { |
| 150 | if (n.checked) { | 150 | if (n.checked) { |
| 151 | arr.push(n.perId) | 151 | arr.push(n.perId) |
| 152 | } | 152 | } |
| 153 | } | 153 | } |
| 154 | api.addInfoModeToRange({ | 154 | api.addInfoModeToRange({ |
| 155 | perIds: arr, | 155 | perIds: arr, |
| 156 | rangeIdStr: queryParams.value.paymentRangeId || '-1' | 156 | rangeIdStr: queryParams.value.paymentRangeId || '-1' |
| 157 | }).then(res => { | 157 | }).then(res => { |
| 158 | var pages = getCurrentPages() | 158 | var pages = getCurrentPages() |
| 159 | var prevPage = pages[pages.length - 2] | 159 | var prevPage = pages[pages.length - 2] |
| 160 | prevPage.onShow(res.data) | 160 | prevPage.onShow(res.data) |
| 161 | uni.navigateBack() | 161 | uni.navigateBack() |
| 162 | }) | 162 | }) |
| 163 | } | 163 | } |
| 164 | 164 | ||
| 165 | 165 | ||
| 166 | </script> | 166 | </script> |
| 167 | <style scoped lang="scss"> | 167 | <style scoped lang="scss"> |
| 168 | .flexbox { | 168 | .flexbox { |
| 169 | padding: 30rpx 30rpx 0 | 169 | padding: 30rpx 30rpx 0 |
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | .danger-button { | 172 | .danger-button { |
| 173 | display: flex; | 173 | display: flex; |
| 174 | flex-direction: column; | 174 | flex-direction: column; |
| 175 | align-items: center; | 175 | align-items: center; |
| 176 | justify-content: center; | 176 | justify-content: center; |
| 177 | } | 177 | } |
| 178 | .userlist{ | 178 | .userlist{ |
| 179 | padding: 0 25rpx; | 179 | padding: 0 25rpx; |
| 180 | } | 180 | } |
| 181 | .searchbar { | 181 | .searchbar { |
| 182 | display: flex; | 182 | display: flex; |
| 183 | align-items: center; | 183 | align-items: center; |
| 184 | padding: 25rpx; | 184 | padding: 25rpx; |
| 185 | box-sizing: border-box; | 185 | box-sizing: border-box; |
| 186 | 186 | ||
| 187 | .invertedbtn-red { | 187 | .invertedbtn-red { |
| 188 | margin-left: 15rpx; | 188 | margin-left: 15rpx; |
| 189 | font-size: 30rpx; | 189 | font-size: 30rpx; |
| 190 | padding: 16rpx 20rpx; | 190 | padding: 16rpx 20rpx; |
| 191 | box-sizing: border-box; | 191 | box-sizing: border-box; |
| 192 | border-radius: 50rpx; | 192 | border-radius: 50rpx; |
| 193 | background-color: #fff; | 193 | background-color: #fff; |
| 194 | } | 194 | } |
| 195 | 195 | ||
| 196 | :deep(.uni-easyinput .uni-easyinput__content) { | 196 | :deep(.uni-easyinput .uni-easyinput__content) { |
| 197 | border-radius: 35rpx; | 197 | border-radius: 35rpx; |
| 198 | border: none; | 198 | border: none; |
| 199 | height: 70rpx; | 199 | height: 70rpx; |
| 200 | } | 200 | } |
| 201 | 201 | ||
| 202 | :deep(.uni-easyinput__content-input) { | 202 | :deep(.uni-easyinput__content-input) { |
| 203 | font-size: 26rpx; | 203 | font-size: 26rpx; |
| 204 | } | 204 | } |
| 205 | } | 205 | } |
| 206 | 206 | ||
| 207 | .popBody { | 207 | .popBody { |
| 208 | background: #fff; | 208 | background: #fff; |
| 209 | padding: 30rpx; | 209 | padding: 30rpx; |
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | .text-center .btn-red-kx { | 212 | .text-center .btn-red-kx { |
| 213 | border-radius: 50px; | 213 | border-radius: 50px; |
| 214 | font-size: 28rpx; | 214 | font-size: 28rpx; |
| 215 | } | 215 | } |
| 216 | :deep(.file-picker__progress) { | 216 | :deep(.file-picker__progress) { |
| 217 | opacity: 0;background-color: transparent; | 217 | opacity: 0;background-color: transparent; |
| 218 | } | 218 | } |
| 219 | </style> | 219 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view class="mainbox"> | 2 | <view class="mainbox"> |
| 3 | <view class="topBg"> | 3 | <view class="topBg"> |
| 4 | <view class="photobox"> | 4 | <view class="photobox"> |
| 5 | <image class="photo" v-if="form.photo" :src="form.photo" mode='aspectFit'></image> | 5 | <image class="photo" v-if="form.photo" :src="form.photo" mode='aspectFit'></image> |
| 6 | <view class="colorful" v-else>{{form.name?.slice(0,1)}}</view> | 6 | <view class="colorful" v-else>{{form.name?.slice(0,1)}}</view> |
| 7 | </view> | 7 | </view> |
| 8 | <view class="infoBox"> | 8 | <view class="infoBox"> |
| 9 | <view class="name"> | 9 | <view class="name"> |
| 10 | {{form.name}} | 10 | {{form.name}} |
| 11 | </view> | 11 | </view> |
| 12 | <view class="flexbox"> | 12 | <view class="flexbox"> |
| 13 | <label>证件号:</label> | 13 | <label>证件号:</label> |
| 14 | <text>{{ form.idcCode}}</text> | 14 | <text>{{ form.idcCode}}</text> |
| 15 | </view> | 15 | </view> |
| 16 | <view class="flexbox"> | 16 | <view class="flexbox"> |
| 17 | <label>会员编号:</label> | 17 | <label>会员编号:</label> |
| 18 | <text>{{ form.perCode}}</text> | 18 | <text>{{ form.perCode}}</text> |
| 19 | </view> | 19 | </view> |
| 20 | <view class="flexbox"> | 20 | <view class="flexbox"> |
| 21 | <label>有效期:</label> | 21 | <label>有效期:</label> |
| 22 | <text>{{ form.idcType==3?'--': form.validityDate?.slice(0,10)||'--' }}</text> | 22 | <text>{{ form.idcType==3?'--': form.validityDate?.slice(0,10)||'--' }}</text> |
| 23 | </view> | 23 | </view> |
| 24 | </view> | 24 | </view> |
| 25 | </view> | ||
| 26 | |||
| 27 | <!-- 会员证 --> | ||
| 28 | <view style="margin: 30rpx 0 0;" v-if="form.certStage!=0&&form.idcType!=3&&form.certStage!=2&&form.certStage!=1"> | ||
| 29 | <view class="zhengBox"> | ||
| 30 | <image v-if="form.certStage == 4" style="width: 600rpx; height: 380rpx;position: relative" :src="config.baseUrl_api+'/fs/static/icon/memberCardU.png'" :fit="fit" /> | ||
| 31 | <image v-else style="width: 600rpx; height: 380rpx;position: relative" :src="config.baseUrl_api+'/fs/static/icon/memberCard.png'" :fit="fit" /> | ||
| 32 | <view class="zhengbody" @contextmenu.prevent="youji"> | ||
| 33 | <image mode="aspectFill" :src="(form.photo)" class="head"/> | ||
| 34 | <view class="memberNumber">{{ form.perCode }}</view> | ||
| 35 | <view class="birthday">{{ fileData(form.birth) }}</view> | ||
| 36 | <view class="phone">010-87188971</view> | ||
| 37 | <view class="service">https://www.taekwondo.org.cn/</view> | ||
| 38 | <view class="validity">{{ fileData(form.beginTime) +'-'+fileData(form.validityDate) }}</view> | ||
| 39 | <view class="nameC"> | ||
| 40 | <view ref="content" class="content">{{ form.name }} </view> | ||
| 41 | </view> | ||
| 42 | </view> | ||
| 43 | </view> | ||
| 25 | </view> | 44 | </view> |
| 45 | |||
| 26 | <uni-list> | 46 | <uni-list> |
| 27 | <uni-list-item title="姓名" :rightText="form.name" /> | 47 | <uni-list-item title="姓名" :rightText="form.name" /> |
| 28 | <uni-list-item title="证件类型" :rightText="cardType?.[form?.idcType]?.label" /> | 48 | <uni-list-item title="证件类型" :rightText="cardType?.[form?.idcType]?.label" /> |
| ... | @@ -72,14 +92,15 @@ | ... | @@ -72,14 +92,15 @@ |
| 72 | label: '其它', | 92 | label: '其它', |
| 73 | value: '4' | 93 | value: '4' |
| 74 | }, { | 94 | }, { |
| 75 | label: '香港身份证', | 95 | label: '香港身份证', |
| 76 | value: '5' | 96 | value: '5' |
| 77 | }, { | 97 | }, { |
| 78 | label: '往来港澳台通行证', | 98 | label: '往来港澳台通行证', |
| 79 | value: '6' | 99 | value: '6' |
| 80 | } | 100 | } |
| 81 | ]) | 101 | ]) |
| 82 | const form = ref({}) | 102 | const form = ref({}) |
| 103 | const urlHref = ref() | ||
| 83 | onLoad((option) => { | 104 | onLoad((option) => { |
| 84 | console.log(option) | 105 | console.log(option) |
| 85 | api.getInfo(option.perId).then(res => { | 106 | api.getInfo(option.perId).then(res => { |
| ... | @@ -108,34 +129,65 @@ | ... | @@ -108,34 +129,65 @@ |
| 108 | } | 129 | } |
| 109 | } | 130 | } |
| 110 | }) | 131 | }) |
| 111 | } | ||
| 112 | </script> | ||
| 113 | |||
| 114 | <style scoped lang="scss"> | ||
| 115 | .flexbox{width: 60%;margin:10rpx auto;font-size: 28rpx;align-items: center; | ||
| 116 | label{color: #7b7f83;width: 5em;font-size: 24rpx;} | ||
| 117 | } | 132 | } |
| 118 | .topBg{background: #f5f5f5;} | 133 | function fileData(time) { |
| 119 | .infoBox{padding: 1rpx 1rpx 30rpx; | 134 | if (!time) return |
| 120 | .name{font-size: 34rpx;text-align: center;} | 135 | const data = new Date(time.replace(/-/g, '/')) |
| 136 | const year = data.getFullYear() | ||
| 137 | const month = data.getMonth() + 1 | ||
| 138 | const dates = data.getDate() | ||
| 139 | return year + '年' + month + '月' + dates + '日' | ||
| 121 | } | 140 | } |
| 122 | .photobox { | 141 | |
| 123 | position: relative; | 142 | </script> |
| 124 | padding: 30rpx 0 30rpx; | 143 | |
| 125 | 144 | <style scoped lang="scss"> | |
| 126 | .photo { | 145 | .flexbox { |
| 127 | width: 255rpx; | 146 | width: 60%; |
| 128 | height: 318rpx; | 147 | margin: 10rpx auto; |
| 129 | background-color: #f4f4f4; | 148 | font-size: 28rpx; |
| 130 | display: block; | 149 | align-items: center; |
| 131 | margin: auto; | 150 | |
| 132 | } | 151 | label { |
| 152 | color: #7b7f83; | ||
| 153 | width: 5em; | ||
| 154 | font-size: 24rpx; | ||
| 155 | } | ||
| 133 | } | 156 | } |
| 157 | |||
| 158 | .topBg { | ||
| 159 | background: #f5f5f5; | ||
| 160 | } | ||
| 161 | |||
| 162 | .infoBox { | ||
| 163 | padding: 1rpx 1rpx 30rpx; | ||
| 164 | |||
| 165 | .name { | ||
| 166 | font-size: 34rpx; | ||
| 167 | text-align: center; | ||
| 168 | } | ||
| 169 | } | ||
| 170 | |||
| 171 | .photobox { | ||
| 172 | position: relative; | ||
| 173 | padding: 30rpx 0 30rpx; | ||
| 174 | |||
| 175 | .photo { | ||
| 176 | width: 255rpx; | ||
| 177 | height: 318rpx; | ||
| 178 | background-color: #f4f4f4; | ||
| 179 | display: block; | ||
| 180 | margin: auto; | ||
| 181 | } | ||
| 182 | } | ||
| 183 | |||
| 134 | .height1 { | 184 | .height1 { |
| 135 | height: 1rpx | 185 | height: 1rpx |
| 136 | } | 186 | } |
| 187 | |||
| 137 | .mainbox { | 188 | .mainbox { |
| 138 | margin: 30rpx 25rpx 60rpx;box-shadow:0 0 8rpx #ddd; | 189 | margin: 30rpx 25rpx 60rpx; |
| 190 | box-shadow: 0 0 8rpx #ddd; | ||
| 139 | background: #FFFFFF; | 191 | background: #FFFFFF; |
| 140 | border-radius: 15rpx; | 192 | border-radius: 15rpx; |
| 141 | 193 | ||
| ... | @@ -163,5 +215,63 @@ | ... | @@ -163,5 +215,63 @@ |
| 163 | color: #fff; | 215 | color: #fff; |
| 164 | text-align: center; | 216 | text-align: center; |
| 165 | border-radius: 50%; | 217 | border-radius: 50%; |
| 218 | } | ||
| 219 | .zhengBox{ | ||
| 220 | position: relative;width: 600rpx; height: 380rpx;margin:0 auto 30rpx; | ||
| 221 | .zhengbody{ | ||
| 222 | .head{width: 114rpx;height: 114rpx;border-radius: 50%;position: absolute;left: 65rpx;top: 132rpx;} | ||
| 223 | .birthday{ | ||
| 224 | position: absolute; top: 158rpx;left: 434rpx; | ||
| 225 | font-size: 16rpx; | ||
| 226 | color: #9f6a44; | ||
| 227 | } | ||
| 228 | .memberNumber{ | ||
| 229 | position: absolute;top: 182rpx;left: 290rpx; | ||
| 230 | font-size: 19rpx; | ||
| 231 | color: #9f6a44; | ||
| 232 | font-weight: 600; | ||
| 233 | letter-spacing: 1px; | ||
| 234 | } | ||
| 235 | .phone{ | ||
| 236 | position: absolute; top: 292rpx;left: 340rpx; | ||
| 237 | font-size: 16rpx; | ||
| 238 | color: #bc9060; | ||
| 239 | } | ||
| 240 | .service{ | ||
| 241 | position: absolute; | ||
| 242 | top: 313rpx; | ||
| 243 | left: 340rpx; | ||
| 244 | font-size: 16rpx; | ||
| 245 | color: #bc9060; | ||
| 246 | |||
| 247 | } | ||
| 248 | .validity{ | ||
| 249 | position: absolute; | ||
| 250 | top: 336rpx; | ||
| 251 | left: 340rpx; | ||
| 252 | font-size: 16rpx; | ||
| 253 | color: #bc9060; | ||
| 254 | |||
| 255 | } | ||
| 256 | .nameC{ | ||
| 257 | position: absolute; | ||
| 258 | top: 146rpx; | ||
| 259 | left: 240rpx; | ||
| 260 | color: #9f6a44; | ||
| 261 | font-weight: 600; | ||
| 262 | line-height: 1; | ||
| 263 | } | ||
| 264 | .content{ | ||
| 265 | width: 120rpx; | ||
| 266 | box-sizing: border-box; | ||
| 267 | display: flex; | ||
| 268 | align-items: center; | ||
| 269 | //white-space: nowrap; | ||
| 270 | overflow: hidden; | ||
| 271 | overflow-x: auto; | ||
| 272 | transform-origin: 0 55%; | ||
| 273 | white-space: nowrap; | ||
| 274 | } | ||
| 275 | } | ||
| 166 | } | 276 | } |
| 167 | </style> | 277 | </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 | 3 | ||
| 4 | <view class="searchbar"> | 4 | <view class="searchbar"> |
| 5 | <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" | 5 | <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" |
| 6 | v-model="queryParams.name" placeholder="搜索姓名" @blur="search()" @clear="search()"> | 6 | v-model="queryParams.name" placeholder="搜索姓名" @blur="search()" @clear="search()"> |
| 7 | </uni-easyinput> | 7 | </uni-easyinput> |
| 8 | </view> | 8 | </view> |
| 9 | <view class="userlist"> | 9 | <view class="userlist"> |
| 10 | <view class="item" v-for=" (n,index) in studentList" :key="index"> | 10 | <view class="item" v-for=" (n,index) in studentList" :key="index"> |
| 11 | <view @click="checkThis(n)"> | 11 | <view @click="checkThis(n)"> |
| 12 | <image class="icon" v-if="n.checked" | 12 | <image class="icon" v-if="n.checked" |
| 13 | :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" /> | 13 | :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" /> |
| 14 | <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" /> | 14 | <image class="icon" v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" /> |
| 15 | </view> | 15 | </view> |
| 16 | <view> | 16 | <view> |
| 17 | <view class="name">{{n.name}} <text>{{n.perCode}}</text></view> | 17 | <view class="name">{{n.name}} <text>{{n.perCode}}</text></view> |
| 18 | <view class="date">{{ cardType[n.idcType]?.text }}:{{n.idcCode}}</view> | 18 | <view class="date">{{ cardType[n.idcType]?.text }}:{{n.idcCode}}</view> |
| 19 | </view> | 19 | </view> |
| 20 | </view> | 20 | </view> |
| 21 | <view class="nodata" v-if="studentList.length==0"> | 21 | <view class="nodata" v-if="studentList.length==0"> |
| 22 | <image mode="aspectFit" src="/static/nodata.png"></image> | 22 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 23 | <text>无可变更会员</text> | 23 | <text>无可变更会员</text> |
| 24 | </view> | 24 | </view> |
| 25 | </view> | 25 | </view> |
| 26 | <uni-load-more @clickLoadMore="clickLoadMore" :contentText="contentText" :status="status"></uni-load-more> | 26 | <uni-load-more @clickLoadMore="clickLoadMore" :contentText="contentText" :status="status"></uni-load-more> |
| 27 | 27 | ||
| 28 | <view class="fixedBottom" v-if="studentList.length!=0"> | 28 | <view class="fixedBottom" v-if="studentList.length!=0"> |
| 29 | <button class="btn-red" @click="handleImport">批量添加</button> | 29 | <button class="btn-red" @click="handleImport">批量添加</button> |
| 30 | </view> | 30 | </view> |
| 31 | 31 | ||
| 32 | </view> | 32 | </view> |
| 33 | </template> | 33 | </template> |
| 34 | 34 | ||
| 35 | <script setup> | 35 | <script setup> |
| 36 | import { | 36 | import { |
| 37 | ref | 37 | ref |
| 38 | } from 'vue' | 38 | } from 'vue' |
| 39 | import { | 39 | import { |
| 40 | onLoad, | 40 | onLoad, |
| 41 | onShow | 41 | onShow |
| 42 | } from '@dcloudio/uni-app' | 42 | } from '@dcloudio/uni-app' |
| 43 | import * as api from '@/common/api.js' | 43 | import * as api from '@/common/api.js' |
| 44 | import _ from 'lodash' | 44 | import _ from 'underscore' |
| 45 | import config from '/config.js' | 45 | import config from '/config.js' |
| 46 | const queryParams = ref({ | 46 | const queryParams = ref({ |
| 47 | paymentRangeId:-1, | 47 | paymentRangeId:-1, |
| 48 | multiDeptFlag: 1, | 48 | multiDeptFlag: 1, |
| ... | @@ -50,53 +50,53 @@ const queryParams = ref({ | ... | @@ -50,53 +50,53 @@ const queryParams = ref({ |
| 50 | pageNum:1, | 50 | pageNum:1, |
| 51 | pageSize:10 | 51 | pageSize:10 |
| 52 | }) | 52 | }) |
| 53 | const paging = ref(null) | 53 | const paging = ref(null) |
| 54 | const total = ref(0) | 54 | const total = ref(0) |
| 55 | const status = ref('no-more') | 55 | const status = ref('no-more') |
| 56 | const list = ref([]) | 56 | const list = ref([]) |
| 57 | const popup = ref(null) | 57 | const popup = ref(null) |
| 58 | const choseStudent = ref(null) | 58 | const choseStudent = ref(null) |
| 59 | const studentList = ref([]) | 59 | const studentList = ref([]) |
| 60 | const type = ref('') | 60 | const type = ref('') |
| 61 | const form = ref({}) | 61 | const form = ref({}) |
| 62 | const contentText = ref({contentdown: "点击加载更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"}) | 62 | const contentText = ref({contentdown: "点击加载更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"}) |
| 63 | const cardType = ref([{ | 63 | const cardType = ref([{ |
| 64 | text: '身份证', | 64 | text: '身份证', |
| 65 | value: '0' | 65 | value: '0' |
| 66 | }, | 66 | }, |
| 67 | { | 67 | { |
| 68 | text: '来往大陆(内地)通行证', | 68 | text: '来往大陆(内地)通行证', |
| 69 | value: '1' | 69 | value: '1' |
| 70 | }, | 70 | }, |
| 71 | { | 71 | { |
| 72 | text: '中国护照', | 72 | text: '中国护照', |
| 73 | value: '2' | 73 | value: '2' |
| 74 | }, | 74 | }, |
| 75 | { | 75 | { |
| 76 | text: '护照', | 76 | text: '护照', |
| 77 | value: '3' | 77 | value: '3' |
| 78 | }, | 78 | }, |
| 79 | { | 79 | { |
| 80 | text: '其它', | 80 | text: '其它', |
| 81 | value: '4' | 81 | value: '4' |
| 82 | }, | 82 | }, |
| 83 | { | 83 | { |
| 84 | text: '香港身份证', | 84 | text: '香港身份证', |
| 85 | value: '5' | 85 | value: '5' |
| 86 | }, | 86 | }, |
| 87 | { | 87 | { |
| 88 | text: '往来港澳台通行证', | 88 | text: '往来港澳台通行证', |
| 89 | value: '6' | 89 | value: '6' |
| 90 | } | 90 | } |
| 91 | ]) | 91 | ]) |
| 92 | onLoad((option) => { | 92 | onLoad((option) => { |
| 93 | if (option.rangeId) { | 93 | if (option.rangeId) { |
| 94 | queryParams.value.paymentRangeId = option.rangeId | 94 | queryParams.value.paymentRangeId = option.rangeId |
| 95 | } | 95 | } |
| 96 | console.log(option.rangeId) | 96 | console.log(option.rangeId) |
| 97 | getList() | 97 | getList() |
| 98 | }) | 98 | }) |
| 99 | onShow(() => {}) | 99 | onShow(() => {}) |
| 100 | function clickLoadMore(){ | 100 | function clickLoadMore(){ |
| 101 | getList() | 101 | getList() |
| 102 | } | 102 | } |
| ... | @@ -112,7 +112,7 @@ function search(){ | ... | @@ -112,7 +112,7 @@ function search(){ |
| 112 | } | 112 | } |
| 113 | uni.hideLoading() | 113 | uni.hideLoading() |
| 114 | }) | 114 | }) |
| 115 | } | 115 | } |
| 116 | function getList() { | 116 | function getList() { |
| 117 | if(total.value>0&&total.value>studentList.value.length){ | 117 | if(total.value>0&&total.value>studentList.value.length){ |
| 118 | uni.showLoading({ | 118 | uni.showLoading({ |
| ... | @@ -134,87 +134,87 @@ function getList() { | ... | @@ -134,87 +134,87 @@ function getList() { |
| 134 | 134 | ||
| 135 | }else if(total.value==0){ | 135 | }else if(total.value==0){ |
| 136 | search() | 136 | search() |
| 137 | } | 137 | } |
| 138 | } | 138 | } |
| 139 | 139 | ||
| 140 | function checkThis(n) { | 140 | function checkThis(n) { |
| 141 | if (n.checked) { | 141 | if (n.checked) { |
| 142 | n.checked = false | 142 | n.checked = false |
| 143 | } else { | 143 | } else { |
| 144 | n.checked = true | 144 | n.checked = true |
| 145 | } | 145 | } |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | function handleImport() { | 148 | function handleImport() { |
| 149 | var arr = [] | 149 | var arr = [] |
| 150 | for (var n of studentList.value) { | 150 | for (var n of studentList.value) { |
| 151 | if (n.checked) { | 151 | if (n.checked) { |
| 152 | arr.push(n.perId) | 152 | arr.push(n.perId) |
| 153 | } | 153 | } |
| 154 | } | 154 | } |
| 155 | api.addMergeToRange({ | 155 | api.addMergeToRange({ |
| 156 | perIds: arr, | 156 | perIds: arr, |
| 157 | rangeIdStr: queryParams.value.paymentRangeId || '-1' | 157 | rangeIdStr: queryParams.value.paymentRangeId || '-1' |
| 158 | }).then(res => { | 158 | }).then(res => { |
| 159 | var pages = getCurrentPages() | 159 | var pages = getCurrentPages() |
| 160 | var prevPage = pages[pages.length - 2] | 160 | var prevPage = pages[pages.length - 2] |
| 161 | prevPage.onShow(res.data) | 161 | prevPage.onShow(res.data) |
| 162 | uni.navigateBack() | 162 | uni.navigateBack() |
| 163 | }) | 163 | }) |
| 164 | } | 164 | } |
| 165 | 165 | ||
| 166 | 166 | ||
| 167 | </script> | 167 | </script> |
| 168 | <style scoped lang="scss"> | 168 | <style scoped lang="scss"> |
| 169 | .flexbox { | 169 | .flexbox { |
| 170 | padding: 30rpx 30rpx 0 | 170 | padding: 30rpx 30rpx 0 |
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | .danger-button { | 173 | .danger-button { |
| 174 | display: flex; | 174 | display: flex; |
| 175 | flex-direction: column; | 175 | flex-direction: column; |
| 176 | align-items: center; | 176 | align-items: center; |
| 177 | justify-content: center; | 177 | justify-content: center; |
| 178 | } | 178 | } |
| 179 | .userlist{ | 179 | .userlist{ |
| 180 | padding: 0 25rpx; | 180 | padding: 0 25rpx; |
| 181 | } | 181 | } |
| 182 | .searchbar { | 182 | .searchbar { |
| 183 | display: flex; | 183 | display: flex; |
| 184 | align-items: center; | 184 | align-items: center; |
| 185 | padding: 25rpx; | 185 | padding: 25rpx; |
| 186 | box-sizing: border-box; | 186 | box-sizing: border-box; |
| 187 | 187 | ||
| 188 | .invertedbtn-red { | 188 | .invertedbtn-red { |
| 189 | margin-left: 15rpx; | 189 | margin-left: 15rpx; |
| 190 | font-size: 30rpx; | 190 | font-size: 30rpx; |
| 191 | padding: 16rpx 20rpx; | 191 | padding: 16rpx 20rpx; |
| 192 | box-sizing: border-box; | 192 | box-sizing: border-box; |
| 193 | border-radius: 50rpx; | 193 | border-radius: 50rpx; |
| 194 | background-color: #fff; | 194 | background-color: #fff; |
| 195 | } | 195 | } |
| 196 | 196 | ||
| 197 | :deep(.uni-easyinput .uni-easyinput__content) { | 197 | :deep(.uni-easyinput .uni-easyinput__content) { |
| 198 | border-radius: 35rpx; | 198 | border-radius: 35rpx; |
| 199 | border: none; | 199 | border: none; |
| 200 | height: 70rpx; | 200 | height: 70rpx; |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | :deep(.uni-easyinput__content-input) { | 203 | :deep(.uni-easyinput__content-input) { |
| 204 | font-size: 26rpx; | 204 | font-size: 26rpx; |
| 205 | } | 205 | } |
| 206 | } | 206 | } |
| 207 | 207 | ||
| 208 | .popBody { | 208 | .popBody { |
| 209 | background: #fff; | 209 | background: #fff; |
| 210 | padding: 30rpx; | 210 | padding: 30rpx; |
| 211 | } | 211 | } |
| 212 | 212 | ||
| 213 | .text-center .btn-red-kx { | 213 | .text-center .btn-red-kx { |
| 214 | border-radius: 50px; | 214 | border-radius: 50px; |
| 215 | font-size: 28rpx; | 215 | font-size: 28rpx; |
| 216 | } | 216 | } |
| 217 | :deep(.file-picker__progress) { | 217 | :deep(.file-picker__progress) { |
| 218 | opacity: 0;background-color: transparent; | 218 | opacity: 0;background-color: transparent; |
| 219 | } | 219 | } |
| 220 | </style> | 220 | </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 whitebg"> | 3 | <view class="text-center whitebg"> |
| 4 | <view class="cardNav"> | 4 | <view class="cardNav"> |
| ... | @@ -6,9 +6,9 @@ | ... | @@ -6,9 +6,9 @@ |
| 6 | <view @click="goMerge">合并</view> | 6 | <view @click="goMerge">合并</view> |
| 7 | <view class="active">提交</view> | 7 | <view class="active">提交</view> |
| 8 | </view> | 8 | </view> |
| 9 | </view> | 9 | </view> |
| 10 | <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" | 10 | <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" |
| 11 | styleType="text" activeColor="#AD181F"></uni-segmented-control> | 11 | styleType="text" activeColor="#AD181F"></uni-segmented-control> |
| 12 | <view class="vipData" v-show="total>0" style="flex-wrap: wrap;"> | 12 | <view class="vipData" v-show="total>0" style="flex-wrap: wrap;"> |
| 13 | <view class="w50">费用合计:<text>{{ statistical.totalCost?.toFixed(2)}} 元</text></view> | 13 | <view class="w50">费用合计:<text>{{ statistical.totalCost?.toFixed(2)}} 元</text></view> |
| 14 | <view class="w50">人数合计:<text>{{ statistical.personCount }} 人</text></view> | 14 | <view class="w50">人数合计:<text>{{ statistical.personCount }} 人</text></view> |
| ... | @@ -16,125 +16,125 @@ | ... | @@ -16,125 +16,125 @@ |
| 16 | <view class="w50">续费合计:<text>{{ statistical.oldPersonCount }} 人</text></view> | 16 | <view class="w50">续费合计:<text>{{ statistical.oldPersonCount }} 人</text></view> |
| 17 | <view class="w50">年限合计:<text>{{ statistical.totalYear }} 年</text></view> | 17 | <view class="w50">年限合计:<text>{{ statistical.totalYear }} 年</text></view> |
| 18 | </view> | 18 | </view> |
| 19 | <view class="appList"> | 19 | <view class="appList"> |
| 20 | <view class="appItem" v-for="(item,index) in infoList" :key="index"> | 20 | <view class="appItem" v-for="(item,index) in infoList" :key="index"> |
| 21 | <view class="status" @click="goDetail(item)"> | 21 | <view class="status" @click="goDetail(item)"> |
| 22 | <view :class="{ | 22 | <view :class="{ |
| 23 | 'text-primary':item.status=='0', | 23 | 'text-primary':item.status=='0', |
| 24 | 'text-success':item.status=='1', | 24 | 'text-success':item.status=='1', |
| 25 | 'text-danger':item.status=='2', | 25 | 'text-danger':item.status=='2', |
| 26 | 'text-warning':item.status=='3' | 26 | 'text-warning':item.status=='3' |
| 27 | }"> | 27 | }"> |
| 28 | {{ item.auditStatus=='100'?'待提交':statusArr[item.status] }} | 28 | {{ item.auditStatus=='100'?'待提交':statusArr[item.status] }} |
| 29 | </view> | 29 | </view> |
| 30 | </view> | 30 | </view> |
| 31 | <view class="date" v-if="item.content?.commitTime">{{item.content.commitTime}}</view> | 31 | <view class="date" v-if="item.content?.commitTime">{{item.content.commitTime}}</view> |
| 32 | <view class="text-primary" v-if="item.content?.wfCode" @click="goDetail(item)">{{item.content?.wfCode}}</view> | 32 | <view class="text-primary" v-if="item.content?.wfCode" @click="goDetail(item)">{{item.content?.wfCode}}</view> |
| 33 | <view class="name" style="width: 100%;" @click="goDetail(item)">{{item.content?.name}}</view> | 33 | <view class="name" style="width: 100%;" @click="goDetail(item)">{{item.content?.name}}</view> |
| 34 | <view class="flexbox" @click="goDetail(item)"> | 34 | <view class="flexbox" @click="goDetail(item)"> |
| 35 | <view> | 35 | <view> |
| 36 | 人数合计 | 36 | 人数合计 |
| 37 | <view>{{item.content.personCount}}</view> | 37 | <view>{{item.content.personCount}}</view> |
| 38 | </view> | 38 | </view> |
| 39 | <view> | 39 | <view> |
| 40 | 续费 | 40 | 续费 |
| 41 | <view>{{item.content.oldPersonCount}}</view> | 41 | <view>{{item.content.oldPersonCount}}</view> |
| 42 | </view> | 42 | </view> |
| 43 | <view> | 43 | <view> |
| 44 | 年限 | 44 | 年限 |
| 45 | <view>{{item.content.totalYear}}</view> | 45 | <view>{{item.content.totalYear}}</view> |
| 46 | </view> | 46 | </view> |
| 47 | <view> | 47 | <view> |
| 48 | 费用合计 | 48 | 费用合计 |
| 49 | <view>{{item.content.allFee}}</view> | 49 | <view>{{item.content.allFee}}</view> |
| 50 | </view> | 50 | </view> |
| 51 | </view> | 51 | </view> |
| 52 | 52 | ||
| 53 | <view class="func" v-if="item.auditStatus == 100"> | 53 | <view class="func" v-if="item.auditStatus == 100"> |
| 54 | <button @click="resolution(item)">取消合并</button> | 54 | <button @click="resolution(item)">取消合并</button> |
| 55 | <button @click="handleAudit(item)">提交</button> | 55 | <button @click="handleAudit(item)">提交</button> |
| 56 | <!-- <button v-if="item.lastIds?.slice(0, 1) != '-'" @click="resolution(item)">取消合并</button> --> | 56 | <!-- <button v-if="item.lastIds?.slice(0, 1) != '-'" @click="resolution(item)">取消合并</button> --> |
| 57 | </view> | 57 | </view> |
| 58 | <view class="func" v-if="item.auditStatus == 1&& item.isView == 1"> | 58 | <view class="func" v-if="item.auditStatus == 1&& item.isView == 1"> |
| 59 | <button @click="handleDelete(item)">撤回</button> | 59 | <button @click="handleDelete(item)">撤回</button> |
| 60 | </view> | 60 | </view> |
| 61 | </view> | 61 | </view> |
| 62 | </view> | 62 | </view> |
| 63 | 63 | ||
| 64 | <view class="nodata" v-if="infoList.length==0"> | 64 | <view class="nodata" v-if="infoList.length==0"> |
| 65 | <image mode="aspectFit" src="/static/nodata.png"></image> | 65 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 66 | <text>暂无数据</text> | 66 | <text>暂无数据</text> |
| 67 | </view> | 67 | </view> |
| 68 | </view> | 68 | </view> |
| 69 | </template> | 69 | </template> |
| 70 | 70 | ||
| 71 | <script setup> | 71 | <script setup> |
| 72 | import * as api from '@/common/api.js' | 72 | import * as api from '@/common/api.js' |
| 73 | import config from '@/config.js' | 73 | import config from '@/config.js' |
| 74 | import _ from 'lodash' | 74 | import _ from 'underscore' |
| 75 | import { ref } from 'vue' | 75 | import { ref } from 'vue' |
| 76 | import { onLoad } from '@dcloudio/uni-app' | 76 | import { onLoad } from '@dcloudio/uni-app' |
| 77 | const app = getApp(); | 77 | const app = getApp(); |
| 78 | const queryParams = ref({ | 78 | const queryParams = ref({ |
| 79 | // pageNum: 1, | 79 | // pageNum: 1, |
| 80 | // pageSize: 10, | 80 | // pageSize: 10, |
| 81 | mergeFlag: 101, | 81 | mergeFlag: 101, |
| 82 | statusFlag: 101 | 82 | statusFlag: 101 |
| 83 | }) | 83 | }) |
| 84 | const navs = ref(['待提交', '审核中', '审核通过', '审核拒绝']) | 84 | const navs = ref(['待提交', '审核中', '审核通过', '审核拒绝']) |
| 85 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] | 85 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] |
| 86 | const current = ref() | 86 | const current = ref() |
| 87 | const list = ref([]) | 87 | const list = ref([]) |
| 88 | const infoList = ref([]) | 88 | const infoList = ref([]) |
| 89 | const statistical = ref({}) | 89 | const statistical = ref({}) |
| 90 | const total = ref(0) | 90 | const total = ref(0) |
| 91 | const deptType = ref('') | 91 | const deptType = ref('') |
| 92 | const userType = ref('') | 92 | const userType = ref('') |
| 93 | onLoad(() => { | 93 | onLoad(() => { |
| 94 | if (app.globalData.isLogin) { | 94 | if (app.globalData.isLogin) { |
| 95 | init() | 95 | init() |
| 96 | } else { | 96 | } else { |
| 97 | app.firstLoadCallback = () => { | 97 | app.firstLoadCallback = () => { |
| 98 | init() | 98 | init() |
| 99 | }; | 99 | }; |
| 100 | } | 100 | } |
| 101 | }) | 101 | }) |
| 102 | 102 | ||
| 103 | function init() { | 103 | function init() { |
| 104 | deptType.value = app.globalData.deptType | 104 | deptType.value = app.globalData.deptType |
| 105 | userType.value = app.globalData.userType | 105 | userType.value = app.globalData.userType |
| 106 | getList() | 106 | getList() |
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | function onClickItem(e) { | 109 | function onClickItem(e) { |
| 110 | console.log(e) | 110 | console.log(e) |
| 111 | switch (e.currentIndex) { | 111 | switch (e.currentIndex) { |
| 112 | case 0: | 112 | case 0: |
| 113 | queryParams.value.mergeFlag = 101 | 113 | queryParams.value.mergeFlag = 101 |
| 114 | queryParams.value.statusFlag = 101 | 114 | queryParams.value.statusFlag = 101 |
| 115 | break; | 115 | break; |
| 116 | case 1: | 116 | case 1: |
| 117 | queryParams.value.mergeFlag = 1 | 117 | queryParams.value.mergeFlag = 1 |
| 118 | queryParams.value.status = 0 | 118 | queryParams.value.status = 0 |
| 119 | queryParams.value.statusFlag = 102 | 119 | queryParams.value.statusFlag = 102 |
| 120 | break; | 120 | break; |
| 121 | case 2: | 121 | case 2: |
| 122 | queryParams.value.mergeFlag = 1 | 122 | queryParams.value.mergeFlag = 1 |
| 123 | queryParams.value.status = 1 | 123 | queryParams.value.status = 1 |
| 124 | queryParams.value.statusFlag = 103 | 124 | queryParams.value.statusFlag = 103 |
| 125 | break; | 125 | break; |
| 126 | case 3: | 126 | case 3: |
| 127 | queryParams.value.mergeFlag = 1 | 127 | queryParams.value.mergeFlag = 1 |
| 128 | queryParams.value.status = 2 | 128 | queryParams.value.status = 2 |
| 129 | queryParams.value.statusFlag = 104 | 129 | queryParams.value.statusFlag = 104 |
| 130 | break; | 130 | break; |
| 131 | } | 131 | } |
| 132 | getList() | 132 | getList() |
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | function getList() { | 135 | function getList() { |
| 136 | uni.showLoading({ | 136 | uni.showLoading({ |
| 137 | title: '加载中' | 137 | title: '加载中' |
| 138 | }) | 138 | }) |
| 139 | statistical.value = { | 139 | statistical.value = { |
| 140 | totalCost: 0, | 140 | totalCost: 0, |
| ... | @@ -142,46 +142,46 @@ | ... | @@ -142,46 +142,46 @@ |
| 142 | newPersonCount: 0, | 142 | newPersonCount: 0, |
| 143 | oldPersonCount: 0, | 143 | oldPersonCount: 0, |
| 144 | totalYear: 0 | 144 | totalYear: 0 |
| 145 | } | 145 | } |
| 146 | api.getpaymentVerityMergeList(queryParams.value).then(response => { | 146 | api.getpaymentVerityMergeList(queryParams.value).then(response => { |
| 147 | infoList.value = response.rows | 147 | infoList.value = response.rows |
| 148 | _.each(infoList.value, item => { | 148 | _.each(infoList.value, item => { |
| 149 | item.content = JSON.parse(item.content) | 149 | item.content = JSON.parse(item.content) |
| 150 | 150 | ||
| 151 | statistical.value.totalCost += (item.content.allFee * 1) | 151 | statistical.value.totalCost += (item.content.allFee * 1) |
| 152 | statistical.value.personCount += (item.content.personCount * 1) | 152 | statistical.value.personCount += (item.content.personCount * 1) |
| 153 | statistical.value.newPersonCount += (item.content.newPersonCount * 1) | 153 | statistical.value.newPersonCount += (item.content.newPersonCount * 1) |
| 154 | statistical.value.oldPersonCount += (item.content.oldPersonCount * 1) | 154 | statistical.value.oldPersonCount += (item.content.oldPersonCount * 1) |
| 155 | statistical.value.totalYear += (item.content.totalYear * 1) | 155 | statistical.value.totalYear += (item.content.totalYear * 1) |
| 156 | }) | 156 | }) |
| 157 | total.value = response.total | 157 | total.value = response.total |
| 158 | uni.hideLoading() | 158 | uni.hideLoading() |
| 159 | }) | 159 | }) |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | function handleAudit(item) { | 162 | function handleAudit(item) { |
| 163 | uni.showModal({ | 163 | uni.showModal({ |
| 164 | title: '提示', | 164 | title: '提示', |
| 165 | content: `确定提交${item.content.name}?`, | 165 | content: `确定提交${item.content.name}?`, |
| 166 | success: function(res) { | 166 | success: function(res) { |
| 167 | if (res.confirm) { | 167 | if (res.confirm) { |
| 168 | uni.showLoading({ | 168 | uni.showLoading({ |
| 169 | title: '加载中' | 169 | title: '加载中' |
| 170 | }) | 170 | }) |
| 171 | api.doMergeFlowsPer({ | 171 | api.doMergeFlowsPer({ |
| 172 | recordIds: [item.recordId], | 172 | recordIds: [item.recordId], |
| 173 | flag: '1', | 173 | flag: '1', |
| 174 | reason: null | 174 | reason: null |
| 175 | }).then(res => { | 175 | }).then(res => { |
| 176 | uni.hideToast() | 176 | uni.hideToast() |
| 177 | uni.showToast({ | 177 | uni.showToast({ |
| 178 | title: `操作成功!` | 178 | title: `操作成功!` |
| 179 | }) | 179 | }) |
| 180 | getList() | 180 | getList() |
| 181 | }) | 181 | }) |
| 182 | } | 182 | } |
| 183 | } | 183 | } |
| 184 | }) | 184 | }) |
| 185 | } | 185 | } |
| 186 | function handleDelete(row) { | 186 | function handleDelete(row) { |
| 187 | uni.showModal({ | 187 | uni.showModal({ |
| ... | @@ -198,7 +198,7 @@ | ... | @@ -198,7 +198,7 @@ |
| 198 | } | 198 | } |
| 199 | } | 199 | } |
| 200 | }) | 200 | }) |
| 201 | } | 201 | } |
| 202 | function resolution(row) { | 202 | function resolution(row) { |
| 203 | uni.showModal({ | 203 | uni.showModal({ |
| 204 | title: '提示', | 204 | title: '提示', |
| ... | @@ -214,15 +214,15 @@ | ... | @@ -214,15 +214,15 @@ |
| 214 | } | 214 | } |
| 215 | } | 215 | } |
| 216 | }) | 216 | }) |
| 217 | } | 217 | } |
| 218 | function goDetail(item) { | 218 | function goDetail(item) { |
| 219 | const form = encodeURIComponent(JSON.stringify(item)) | 219 | const form = encodeURIComponent(JSON.stringify(item)) |
| 220 | // 查看 | 220 | // 查看 |
| 221 | let path = `/personalVip/auditDetail?form=${form}` | 221 | let path = `/personalVip/auditDetail?form=${form}` |
| 222 | uni.navigateTo({ | 222 | uni.navigateTo({ |
| 223 | url: path | 223 | url: path |
| 224 | }); | 224 | }); |
| 225 | 225 | ||
| 226 | } | 226 | } |
| 227 | function goAudit(){ | 227 | function goAudit(){ |
| 228 | let path = `/personalVip/audit` | 228 | let path = `/personalVip/audit` |
| ... | @@ -235,16 +235,16 @@ | ... | @@ -235,16 +235,16 @@ |
| 235 | uni.redirectTo({ | 235 | uni.redirectTo({ |
| 236 | url: path | 236 | url: path |
| 237 | }); | 237 | }); |
| 238 | } | 238 | } |
| 239 | </script> | 239 | </script> |
| 240 | 240 | ||
| 241 | <style scoped> | 241 | <style scoped> |
| 242 | .mt0 { | 242 | .mt0 { |
| 243 | margin-top: 0 !important; | 243 | margin-top: 0 !important; |
| 244 | } | 244 | } |
| 245 | 245 | ||
| 246 | .appList .appItem .name { | 246 | .appList .appItem .name { |
| 247 | width: 80%; | 247 | width: 80%; |
| 248 | word-break: break-all; | 248 | word-break: break-all; |
| 249 | } | 249 | } |
| 250 | </style> | 250 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -59,7 +59,7 @@ | ... | @@ -59,7 +59,7 @@ |
| 59 | <script setup> | 59 | <script setup> |
| 60 | import * as api from '@/common/api.js' | 60 | import * as api from '@/common/api.js' |
| 61 | import config from '@/config.js' | 61 | import config from '@/config.js' |
| 62 | import _ from 'lodash' | 62 | import _ from 'underscore' |
| 63 | import { | 63 | import { |
| 64 | onMounted, | 64 | onMounted, |
| 65 | ref | 65 | ref | ... | ... |
-
Please register or sign in to post a comment