no message
Showing
10 changed files
with
567 additions
and
514 deletions
| ... | @@ -85,7 +85,8 @@ function getInfo() { | ... | @@ -85,7 +85,8 @@ function getInfo() { |
| 85 | // const personInfo = res.data.personInfo | 85 | // const personInfo = res.data.personInfo |
| 86 | uni.setStorageSync('userName', user.userName) | 86 | uni.setStorageSync('userName', user.userName) |
| 87 | // uni.setStorageSync('perId', personInfo.perId||-1) | 87 | // uni.setStorageSync('perId', personInfo.perId||-1) |
| 88 | app.globalData.deptType = user.dept.deptType | 88 | app.globalData.deptType = user.dept.deptType |
| 89 | app.globalData.genFlag = user.dept.genFlag | ||
| 89 | switch (user.dept.deptType) { | 90 | switch (user.dept.deptType) { |
| 90 | case '1': // 中跆协 | 91 | case '1': // 中跆协 |
| 91 | app.globalData.userType = '1' | 92 | app.globalData.userType = '1' | ... | ... |
| ... | @@ -70,6 +70,16 @@ | ... | @@ -70,6 +70,16 @@ |
| 70 | const userType = ref('') | 70 | const userType = ref('') |
| 71 | onLoad((option) => { | 71 | onLoad((option) => { |
| 72 | queryParams.value.type = option.type | 72 | queryParams.value.type = option.type |
| 73 | if(option.type==2){ | ||
| 74 | uni.setNavigationBarTitle({ | ||
| 75 | title:'段位考试详情' | ||
| 76 | }) | ||
| 77 | } | ||
| 78 | if(option.type==3){ | ||
| 79 | uni.setNavigationBarTitle({ | ||
| 80 | title:'越段考试详情' | ||
| 81 | }) | ||
| 82 | } | ||
| 73 | }) | 83 | }) |
| 74 | onShow(() => { | 84 | onShow(() => { |
| 75 | if (app.globalData.isLogin) { | 85 | if (app.globalData.isLogin) { | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <view> | 2 | <view> |
| 3 | <!-- 级位证书发布 --> | 3 | <!-- 级位证书发布 --> |
| 4 | <view class="appList"> | 4 | <view class="appList"> |
| 5 | <view class="appItem" v-for="item in infoList"> | 5 | <view class="appItem" v-for="item in infoList" :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> | 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 | <view class="func" v-if="item.isCert != '2'"> |
| 32 | <button @click="send(item)">一键生成</button> | 32 | <button @click="send(item)">一键生成</button> |
| 33 | </view> | 33 | </view> |
| 34 | </view> | 34 | </view> |
| 35 | </view> | 35 | </view> |
| 36 | 36 | ||
| 37 | <view class="nodata" v-if="infoList.length==0"> | 37 | <view class="nodata" v-if="infoList.length==0"> |
| 38 | <image mode="aspectFit" src="/static/nodata.png"></image> | 38 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 39 | <text>暂无数据</text> | 39 | <text>暂无数据</text> |
| 40 | </view> | 40 | </view> |
| 41 | </view> | 41 | </view> |
| 42 | </template> | 42 | </template> |
| 43 | 43 | ||
| 44 | <script setup> | 44 | <script setup> |
| 45 | import * as api from '@/common/api.js' | 45 | import * as api from '@/common/api.js' |
| 46 | import config from '@/config.js' | 46 | import config from '@/config.js' |
| 47 | import _ from 'lodash' | 47 | import _ from 'lodash' |
| 48 | import { | 48 | import { |
| 49 | onMounted, | 49 | onMounted, |
| 50 | ref | 50 | ref |
| 51 | } from 'vue' | 51 | } from 'vue' |
| 52 | import { | 52 | import { |
| 53 | onLoad, | 53 | onLoad, |
| 54 | onShow | 54 | onShow |
| 55 | } from '@dcloudio/uni-app' | 55 | } from '@dcloudio/uni-app' |
| 56 | const app = getApp(); | 56 | const app = getApp(); |
| 57 | const queryParams = ref({ | 57 | const queryParams = ref({ |
| 58 | // pageNum: 1, | 58 | // pageNum: 1, |
| 59 | // pageSize: 10 | 59 | // pageSize: 10 |
| 60 | }) | 60 | }) |
| 61 | const statusArr = ['未发放', '部分发放', '已发放'] | 61 | const statusArr = ['未发放', '部分发放', '已发放'] |
| 62 | const current = ref() | 62 | const current = ref() |
| 63 | const infoList = ref([]) | 63 | const infoList = ref([]) |
| 64 | const total = ref(0) | 64 | const total = ref(0) |
| 65 | const deptType = ref('') | 65 | const deptType = ref('') |
| 66 | const userType = ref('') | 66 | const userType = ref('') |
| 67 | onLoad((option) => { | 67 | onLoad((option) => { |
| 68 | queryParams.value.payId = option.payId | 68 | queryParams.value.payId = option.payId |
| 69 | queryParams.value.type = option.type | 69 | queryParams.value.type = option.type |
| 70 | }) | 70 | if (option.type == 2) { |
| 71 | onShow(() => { | 71 | uni.setNavigationBarTitle({ |
| 72 | if (app.globalData.isLogin) { | 72 | title: '段位考试详情' |
| 73 | init() | 73 | }) |
| 74 | } else { | 74 | } |
| 75 | 75 | if (option.type == 3) { | |
| 76 | app.firstLoadCallback = () => { | 76 | uni.setNavigationBarTitle({ |
| 77 | init() | 77 | title: '越段考试详情' |
| 78 | }; | 78 | }) |
| 79 | } | 79 | } |
| 80 | }) | 80 | }) |
| 81 | 81 | onShow(() => { | |
| 82 | function init() { | 82 | if (app.globalData.isLogin) { |
| 83 | deptType.value = app.globalData.deptType | 83 | init() |
| 84 | userType.value = app.globalData.userType | 84 | } else { |
| 85 | getList() | 85 | |
| 86 | } | 86 | app.firstLoadCallback = () => { |
| 87 | 87 | init() | |
| 88 | 88 | }; | |
| 89 | function getList() { | 89 | } |
| 90 | uni.showLoading({ | 90 | }) |
| 91 | title: '加载中' | 91 | |
| 92 | }) | 92 | function init() { |
| 93 | api.getExamListByPayId(queryParams.value).then(res => { | 93 | deptType.value = app.globalData.deptType |
| 94 | infoList.value = res.rows | 94 | userType.value = app.globalData.userType |
| 95 | uni.hideLoading() | 95 | getList() |
| 96 | }) | 96 | } |
| 97 | } | 97 | |
| 98 | 98 | ||
| 99 | function goDetail(item) { | 99 | function getList() { |
| 100 | // const form = encodeURIComponent(JSON.stringify(item)) | 100 | uni.showLoading({ |
| 101 | let path = `/level/ztx/studentList?type=${queryParams.value.type}&examId=${item.examId}&payId=${queryParams.value.payId}` | 101 | title: '加载中' |
| 102 | uni.navigateTo({ | 102 | }) |
| 103 | url: path | 103 | api.getExamListByPayId(queryParams.value).then(res => { |
| 104 | }); | 104 | infoList.value = res.rows |
| 105 | } | 105 | uni.hideLoading() |
| 106 | 106 | }) | |
| 107 | function send(row) { | 107 | } |
| 108 | uni.showModal({ | 108 | |
| 109 | title: '提示', | 109 | function goDetail(item) { |
| 110 | content: `确定生成 ${row.name} 的证书吗`, | 110 | // const form = encodeURIComponent(JSON.stringify(item)) |
| 111 | success: function(res) { | 111 | let path = |
| 112 | if (res.confirm) { | 112 | `/level/ztx/studentList?type=${queryParams.value.type}&examId=${item.examId}&payId=${queryParams.value.payId}` |
| 113 | api.submitCert([{ | 113 | uni.navigateTo({ |
| 114 | id: row.payId | 114 | url: path |
| 115 | }]).then(res => { | 115 | }); |
| 116 | uni.showToast({ | 116 | } |
| 117 | title: `下发成功` | 117 | |
| 118 | }) | 118 | function send(row) { |
| 119 | getList() | 119 | uni.showModal({ |
| 120 | }) | 120 | title: '提示', |
| 121 | } | 121 | content: `确定一键下发 ${row.name} 的证书`, |
| 122 | } | 122 | success: function(res) { |
| 123 | }) | 123 | if (res.confirm) { |
| 124 | } | 124 | api.submitCert([{ |
| 125 | </script> | 125 | id: queryParams.value.payId, |
| 126 | 126 | children: [{ | |
| 127 | 127 | id: row.examId | |
| 128 | <style scoped lang="scss"> | 128 | }] |
| 129 | .mt0 { | 129 | }]).then(res => { |
| 130 | margin-top: 0 !important; | 130 | uni.showToast({ |
| 131 | } | 131 | title: `下发成功` |
| 132 | 132 | }) | |
| 133 | .appList .appItem .name { | 133 | getList() |
| 134 | width: 80%; | 134 | }) |
| 135 | word-break: break-all; | 135 | } |
| 136 | } | 136 | } |
| 137 | }) | ||
| 138 | } | ||
| 139 | </script> | ||
| 140 | |||
| 141 | |||
| 142 | <style scoped lang="scss"> | ||
| 143 | .mt0 { | ||
| 144 | margin-top: 0 !important; | ||
| 145 | } | ||
| 146 | |||
| 147 | .appList .appItem .name { | ||
| 148 | width: 80%; | ||
| 149 | word-break: break-all; | ||
| 150 | } | ||
| 137 | </style> | 151 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -5,9 +5,9 @@ | ... | @@ -5,9 +5,9 @@ |
| 5 | v-model="queryParams.name" placeholder="搜索姓名" @blur="getList()" @clear="getList()"> | 5 | v-model="queryParams.name" placeholder="搜索姓名" @blur="getList()" @clear="getList()"> |
| 6 | </uni-easyinput> | 6 | </uni-easyinput> |
| 7 | </view> | 7 | </view> |
| 8 | <view class="indexboxre"> | 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"> | 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> | ... | ... |
This diff is collapsed.
Click to expand it.
| 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)}}</view> | 21 | <view class="pp esp">考段日期:{{item.startTime?.substring(0,16)}} 至 {{item.endTime?.substring(0,16)}} |
| 22 | <view class="flexbox" > | 22 | </view> |
| 23 | <view> | 23 | <view class="flexbox"> |
| 24 | 申请日期 | 24 | <view> |
| 25 | <view>{{item.applyTime?.substring(0, 10)}}</view> | 25 | 申请日期 |
| 26 | </view> | 26 | <view>{{item.applyTime?.substring(0, 10)}}</view> |
| 27 | <view> | 27 | </view> |
| 28 | 考段考生数 | 28 | <view> |
| 29 | <view>{{item.totalNum||'--'}}</view> | 29 | 考段考生数 |
| 30 | </view> | 30 | <view>{{item.totalNum||'--'}}</view> |
| 31 | <view> | 31 | </view> |
| 32 | 总金额 | 32 | <view> |
| 33 | <view><text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text></view> | 33 | 总金额 |
| 34 | </view> | 34 | <view><text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text></view> |
| 35 | </view> | 35 | </view> |
| 36 | </view> | 36 | </view> |
| 37 | <!-- <view class="func" v-if="(item.scoreStatus=='0'||item.scoreStatus=='3' || item.scoreStatus=='4')&& item.rankStatus == '1'"> | 37 | </view> |
| 38 | <button @click="scoreEdit(item)">成绩维护</button> | 38 | <!-- <view class="func" v-if="(item.scoreStatus=='0'||item.scoreStatus=='3' || item.scoreStatus=='4')&& item.rankStatus == '1'"> |
| 39 | </view> --> | 39 | <button @click="scoreEdit(item)">成绩维护</button> |
| 40 | </view> | 40 | </view> --> |
| 41 | </view> | 41 | </view> |
| 42 | <view class="nodata" v-if="infoList.length==0"> | 42 | </view> |
| 43 | <image mode="aspectFit" src="/static/nodata.png"></image> | 43 | <view class="nodata" v-if="infoList.length==0"> |
| 44 | <text>暂无数据</text> | 44 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 45 | </view> | 45 | <text>暂无数据</text> |
| 46 | </view> | 46 | </view> |
| 47 | </template> | 47 | </view> |
| 48 | 48 | </template> | |
| 49 | <script setup> | 49 | |
| 50 | import * as examApi from '@/common/api_exam.js' | 50 | <script setup> |
| 51 | import _ from 'lodash' | 51 | import * as examApi from '@/common/api_exam.js' |
| 52 | import { ref } from 'vue' | 52 | import _ from 'lodash' |
| 53 | import { onLoad,onShow } from '@dcloudio/uni-app' | 53 | import { |
| 54 | 54 | ref | |
| 55 | const app = getApp(); | 55 | } from 'vue' |
| 56 | const queryParams = ref({ | 56 | import { |
| 57 | status: '0', | 57 | onLoad, |
| 58 | rankStatus:'1' | 58 | onShow |
| 59 | }) | 59 | } from '@dcloudio/uni-app' |
| 60 | const current = ref() | 60 | |
| 61 | const navs = ref(['审核中', '审核通过', '审核拒绝']) | 61 | const app = getApp(); |
| 62 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] | 62 | const queryParams = ref({ |
| 63 | const deptType = ref('') | 63 | status: '0', |
| 64 | const infoList = ref([]) | 64 | rankStatus: '1' |
| 65 | const total = ref(0) | 65 | }) |
| 66 | 66 | const current = ref() | |
| 67 | onLoad((options)=>{ | 67 | const navs = ref(['审核中', '审核通过', '审核拒绝']) |
| 68 | queryParams.value.type=options.type | 68 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] |
| 69 | }) | 69 | const deptType = ref('') |
| 70 | 70 | const infoList = ref([]) | |
| 71 | onShow(() => { | 71 | const total = ref(0) |
| 72 | if (app.globalData.isLogin) { | 72 | |
| 73 | init() | 73 | onLoad((options) => { |
| 74 | } else { | 74 | queryParams.value.type = options.type |
| 75 | app.firstLoadCallback = () => { | 75 | if (options.type == 2) { |
| 76 | init() | 76 | uni.setNavigationBarTitle({ |
| 77 | }; | 77 | title: '段位成绩录入' |
| 78 | } | 78 | }) |
| 79 | }) | 79 | } |
| 80 | 80 | if (options.type == 3) { | |
| 81 | function init(){ | 81 | uni.setNavigationBarTitle({ |
| 82 | uni.showLoading({ | 82 | title: '越段成绩录入' |
| 83 | title: '加载中' | 83 | }) |
| 84 | }) | 84 | } |
| 85 | deptType.value = app.globalData.deptType | 85 | }) |
| 86 | getList() | 86 | |
| 87 | } | 87 | onShow(() => { |
| 88 | 88 | if (app.globalData.isLogin) { | |
| 89 | function onClickItem(e) { | 89 | init() |
| 90 | uni.showLoading({ | 90 | } else { |
| 91 | title: '加载中' | 91 | app.firstLoadCallback = () => { |
| 92 | }) | 92 | init() |
| 93 | queryParams.value.status = e.currentIndex | 93 | }; |
| 94 | getList() | 94 | } |
| 95 | } | 95 | }) |
| 96 | 96 | ||
| 97 | function getList() { | 97 | function init() { |
| 98 | examApi.getRankScoreList(queryParams.value).then(res => { | 98 | uni.showLoading({ |
| 99 | 99 | title: '加载中' | |
| 100 | infoList.value = res.rows | 100 | }) |
| 101 | total.value = res.total | 101 | deptType.value = app.globalData.deptType |
| 102 | 102 | getList() | |
| 103 | uni.hideLoading() | 103 | } |
| 104 | }) | 104 | |
| 105 | } | 105 | function onClickItem(e) { |
| 106 | 106 | uni.showLoading({ | |
| 107 | function scoreEdit(item) { | 107 | title: '加载中' |
| 108 | console.log(item.sourceData) | 108 | }) |
| 109 | var obj = { | 109 | queryParams.value.status = e.currentIndex |
| 110 | flag: flag, | 110 | getList() |
| 111 | reason: null, | 111 | } |
| 112 | id: item.recordId | 112 | |
| 113 | } | 113 | function getList() { |
| 114 | 114 | examApi.getRankScoreList(queryParams.value).then(res => { | |
| 115 | if (flag == '2') { | 115 | |
| 116 | // 拒绝 | 116 | infoList.value = res.rows |
| 117 | // 弹出框填写理由 | 117 | total.value = res.total |
| 118 | uni.showModal({ | 118 | |
| 119 | title: '请输入拒绝理由', | 119 | uni.hideLoading() |
| 120 | editable: true, | 120 | }) |
| 121 | success: function(res) { | 121 | } |
| 122 | if (res.confirm) { | 122 | |
| 123 | if (!res.content) { | 123 | function scoreEdit(item) { |
| 124 | uni.showToast({ | 124 | console.log(item.sourceData) |
| 125 | title: '请输入拒绝理由', | 125 | var obj = { |
| 126 | icon: 'none' | 126 | flag: flag, |
| 127 | }) | 127 | reason: null, |
| 128 | } else { | 128 | id: item.recordId |
| 129 | obj.reason = res.content | 129 | } |
| 130 | doApproval(obj) | 130 | |
| 131 | } | 131 | if (flag == '2') { |
| 132 | } | 132 | // 拒绝 |
| 133 | } | 133 | // 弹出框填写理由 |
| 134 | }) | 134 | uni.showModal({ |
| 135 | } else if (flag == '1') { | 135 | title: '请输入拒绝理由', |
| 136 | // 二次确认 | 136 | editable: true, |
| 137 | uni.showModal({ | 137 | success: function(res) { |
| 138 | title: '提示', | 138 | if (res.confirm) { |
| 139 | content: `确定审批通过吗`, | 139 | if (!res.content) { |
| 140 | success: function(res) { | 140 | uni.showToast({ |
| 141 | if (res.confirm) { | 141 | title: '请输入拒绝理由', |
| 142 | doApproval(obj) | 142 | icon: 'none' |
| 143 | } | 143 | }) |
| 144 | } | 144 | } else { |
| 145 | }) | 145 | obj.reason = res.content |
| 146 | } | 146 | doApproval(obj) |
| 147 | } | 147 | } |
| 148 | 148 | } | |
| 149 | function doApproval(obj) { | 149 | } |
| 150 | examApi.doMergeFlows(obj).then((res) => { | 150 | }) |
| 151 | uni.showToast({ | 151 | } else if (flag == '1') { |
| 152 | title: '操作成功', | 152 | // 二次确认 |
| 153 | icon: 'none' | 153 | uni.showModal({ |
| 154 | }) | 154 | title: '提示', |
| 155 | getList() | 155 | content: `确定审批通过吗`, |
| 156 | }) | 156 | success: function(res) { |
| 157 | } | 157 | if (res.confirm) { |
| 158 | 158 | doApproval(obj) | |
| 159 | function goDetail(item) { | 159 | } |
| 160 | let path = `/pages/rank/applyDetail?examId=${item.examId}` | 160 | } |
| 161 | uni.navigateTo({ | 161 | }) |
| 162 | url: path | 162 | } |
| 163 | }); | 163 | } |
| 164 | } | 164 | |
| 165 | 165 | function doApproval(obj) { | |
| 166 | </script> | 166 | examApi.doMergeFlows(obj).then((res) => { |
| 167 | 167 | uni.showToast({ | |
| 168 | <style lang="scss" scoped> | 168 | title: '操作成功', |
| 169 | 169 | icon: 'none' | |
| 170 | </style> | 170 | }) |
| 171 | getList() | ||
| 172 | }) | ||
| 173 | } | ||
| 174 | |||
| 175 | function goDetail(item) { | ||
| 176 | let path = `/pages/rank/applyDetail?examId=${item.examId}` | ||
| 177 | uni.navigateTo({ | ||
| 178 | url: path | ||
| 179 | }); | ||
| 180 | } | ||
| 181 | </script> | ||
| 182 | |||
| 183 | <style lang="scss" scoped> | ||
| 184 | |||
| 185 | </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 | <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}}</view> | 21 | 提交时间:{{item.submitTime}} |
| 22 | <view class="name mt10" ><text class="dot"></text>{{item.name}}</view> | 22 | </view> |
| 23 | <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}} 至 {{item.endTime.substring(0,16)}}</view> | 23 | <view class="name mt10"><text class="dot"></text>{{item.name}}</view> |
| 24 | <view class="flexbox" > | 24 | <view class="pp esp">考段日期:{{item.startTime.substring(0,16)}} 至 {{item.endTime.substring(0,16)}} |
| 25 | <view> | 25 | </view> |
| 26 | 申请日期 | 26 | <view class="flexbox"> |
| 27 | <view>{{item.applyTime.substring(0, 10)}}</view> | 27 | <view> |
| 28 | </view> | 28 | 申请日期 |
| 29 | <view> | 29 | <view>{{item.applyTime.substring(0, 10)}}</view> |
| 30 | 考段考生数 | 30 | </view> |
| 31 | <view>{{item.totalNum}}</view> | 31 | <view> |
| 32 | </view> | 32 | 考段考生数 |
| 33 | <view> | 33 | <view>{{item.totalNum}}</view> |
| 34 | 总金额 | 34 | </view> |
| 35 | <view> | 35 | <view> |
| 36 | <text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text> | 36 | 总金额 |
| 37 | </view> | 37 | <view> |
| 38 | </view> | 38 | <text class="text-danger">¥{{(item.totalAmount*1).toFixed(2)}}</text> |
| 39 | </view> | 39 | </view> |
| 40 | </view> | 40 | </view> |
| 41 | <view class="func" v-if="item.auditStatus=='0'"> | 41 | </view> |
| 42 | <button @click="audit(item,'2')">拒绝</button> | 42 | </view> |
| 43 | <button @click="audit(item,'1')">同意</button> | 43 | <view class="func" v-if="item.auditStatus=='0'"> |
| 44 | </view> | 44 | <button @click="audit(item,'2')">拒绝</button> |
| 45 | </view> | 45 | <button @click="audit(item,'1')">同意</button> |
| 46 | </view> | 46 | </view> |
| 47 | <view class="nodata" v-if="infoList.length==0"> | 47 | </view> |
| 48 | <image mode="aspectFit" src="/static/nodata.png"></image> | 48 | </view> |
| 49 | <text>暂无数据</text> | 49 | <view class="nodata" v-if="infoList.length==0"> |
| 50 | </view> | 50 | <image mode="aspectFit" src="/static/nodata.png"></image> |
| 51 | </view> | 51 | <text>暂无数据</text> |
| 52 | </template> | 52 | </view> |
| 53 | 53 | </view> | |
| 54 | <script setup> | 54 | </template> |
| 55 | import * as examApi from '@/common/api_exam.js' | 55 | |
| 56 | import _ from 'lodash' | 56 | <script setup> |
| 57 | import { ref } from 'vue' | 57 | import * as examApi from '@/common/api_exam.js' |
| 58 | import { onLoad,onShow } from '@dcloudio/uni-app' | 58 | import _ from 'lodash' |
| 59 | 59 | import { | |
| 60 | const app = getApp(); | 60 | ref |
| 61 | const queryParams = ref({ | 61 | } from 'vue' |
| 62 | status: '0', | 62 | import { |
| 63 | rankStatus:'1' | 63 | onLoad, |
| 64 | }) | 64 | onShow |
| 65 | const current = ref() | 65 | } from '@dcloudio/uni-app' |
| 66 | const navs = ref(['审核中', '审核通过', '审核拒绝']) | 66 | |
| 67 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] | 67 | const app = getApp(); |
| 68 | const deptType = ref('') | 68 | const queryParams = ref({ |
| 69 | const infoList = ref([]) | 69 | status: '0', |
| 70 | const total = ref(0) | 70 | rankStatus: '1' |
| 71 | 71 | }) | |
| 72 | onLoad((options)=>{ | 72 | const current = ref() |
| 73 | queryParams.value.type=options.type | 73 | const navs = ref(['审核中', '审核通过', '审核拒绝']) |
| 74 | }) | 74 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] |
| 75 | 75 | const deptType = ref('') | |
| 76 | onShow(() => { | 76 | const infoList = ref([]) |
| 77 | if (app.globalData.isLogin) { | 77 | const total = ref(0) |
| 78 | init() | 78 | |
| 79 | } else { | 79 | onLoad((options) => { |
| 80 | app.firstLoadCallback = () => { | 80 | queryParams.value.type = options.type |
| 81 | init() | 81 | if (options.type == 2) { |
| 82 | }; | 82 | uni.setNavigationBarTitle({ |
| 83 | } | 83 | title: '段位考试审核' |
| 84 | }) | 84 | }) |
| 85 | 85 | } | |
| 86 | function init(){ | 86 | if (options.type == 3) { |
| 87 | uni.showLoading({ | 87 | uni.setNavigationBarTitle({ |
| 88 | title: '加载中' | 88 | title: '越段考试审核' |
| 89 | }) | 89 | }) |
| 90 | deptType.value = app.globalData.deptType | 90 | } |
| 91 | getList() | 91 | }) |
| 92 | } | 92 | |
| 93 | 93 | onShow(() => { | |
| 94 | function onClickItem(e) { | 94 | if (app.globalData.isLogin) { |
| 95 | uni.showLoading({ | 95 | init() |
| 96 | title: '加载中' | 96 | } else { |
| 97 | }) | 97 | app.firstLoadCallback = () => { |
| 98 | queryParams.value.status = e.currentIndex | 98 | init() |
| 99 | getList() | 99 | }; |
| 100 | } | 100 | } |
| 101 | 101 | }) | |
| 102 | function getList() { | 102 | |
| 103 | examApi.getVerityList(queryParams.value).then(res => { | 103 | function init() { |
| 104 | uni.hideLoading() | 104 | uni.showLoading({ |
| 105 | const list = [] | 105 | title: '加载中' |
| 106 | _.each(res.rows, r => { | 106 | }) |
| 107 | const item = JSON.parse(r.content) | 107 | deptType.value = app.globalData.deptType |
| 108 | item.recordId = r.recordId | 108 | getList() |
| 109 | item.auditStatus = r.auditStatus | 109 | } |
| 110 | item.submitStatus = r.submitStatus | 110 | |
| 111 | item.distributeTime = r.distributeTime | 111 | function onClickItem(e) { |
| 112 | item.statusStr = statusArr[r.auditStatus] | 112 | uni.showLoading({ |
| 113 | item.sourceData = r | 113 | title: '加载中' |
| 114 | item.scoreStatus = r.scoreStatus | 114 | }) |
| 115 | item.status = r.status | 115 | queryParams.value.status = e.currentIndex |
| 116 | item.isView = r.isView | 116 | getList() |
| 117 | item.payStatus = r.payStatus | 117 | } |
| 118 | item.rankStatus = r.rankStatus | 118 | |
| 119 | item.processCentBar = r.processCentBar | 119 | function getList() { |
| 120 | list.push(item) | 120 | examApi.getVerityList(queryParams.value).then(res => { |
| 121 | }) | 121 | uni.hideLoading() |
| 122 | 122 | const list = [] | |
| 123 | infoList.value = list | 123 | _.each(res.rows, r => { |
| 124 | total.value = res.total | 124 | const item = JSON.parse(r.content) |
| 125 | }) | 125 | item.recordId = r.recordId |
| 126 | } | 126 | item.auditStatus = r.auditStatus |
| 127 | 127 | item.submitStatus = r.submitStatus | |
| 128 | function audit(item, flag) { | 128 | item.distributeTime = r.distributeTime |
| 129 | console.log(item.sourceData) | 129 | item.statusStr = statusArr[r.auditStatus] |
| 130 | var obj = { | 130 | item.sourceData = r |
| 131 | flag: flag, | 131 | item.scoreStatus = r.scoreStatus |
| 132 | reason: null, | 132 | item.status = r.status |
| 133 | id: item.recordId | 133 | item.isView = r.isView |
| 134 | } | 134 | item.payStatus = r.payStatus |
| 135 | 135 | item.rankStatus = r.rankStatus | |
| 136 | if (flag == '2') { | 136 | item.processCentBar = r.processCentBar |
| 137 | // 拒绝 | 137 | list.push(item) |
| 138 | // 弹出框填写理由 | 138 | }) |
| 139 | uni.showModal({ | 139 | |
| 140 | title: '请输入拒绝理由', | 140 | infoList.value = list |
| 141 | editable: true, | 141 | total.value = res.total |
| 142 | success: function(res) { | 142 | }) |
| 143 | if (res.confirm) { | 143 | } |
| 144 | if (!res.content) { | 144 | |
| 145 | uni.showToast({ | 145 | function audit(item, flag) { |
| 146 | title: '请输入拒绝理由', | 146 | console.log(item.sourceData) |
| 147 | icon: 'none' | 147 | var obj = { |
| 148 | }) | 148 | flag: flag, |
| 149 | } else { | 149 | reason: null, |
| 150 | obj.reason = res.content | 150 | id: item.recordId |
| 151 | doApproval(obj) | 151 | } |
| 152 | } | 152 | |
| 153 | } | 153 | if (flag == '2') { |
| 154 | } | 154 | // 拒绝 |
| 155 | }) | 155 | // 弹出框填写理由 |
| 156 | } else if (flag == '1') { | 156 | uni.showModal({ |
| 157 | // 二次确认 | 157 | title: '请输入拒绝理由', |
| 158 | uni.showModal({ | 158 | editable: true, |
| 159 | title: '提示', | 159 | success: function(res) { |
| 160 | content: `确定审批通过吗`, | 160 | if (res.confirm) { |
| 161 | success: function(res) { | 161 | if (!res.content) { |
| 162 | if (res.confirm) { | 162 | uni.showToast({ |
| 163 | doApproval(obj) | 163 | title: '请输入拒绝理由', |
| 164 | } | 164 | icon: 'none' |
| 165 | } | 165 | }) |
| 166 | }) | 166 | } else { |
| 167 | } | 167 | obj.reason = res.content |
| 168 | } | 168 | doApproval(obj) |
| 169 | 169 | } | |
| 170 | function doApproval(obj) { | 170 | } |
| 171 | examApi.doMergeFlows(obj).then((res) => { | 171 | } |
| 172 | uni.showToast({ | 172 | }) |
| 173 | title: '操作成功', | 173 | } else if (flag == '1') { |
| 174 | icon: 'none' | 174 | // 二次确认 |
| 175 | }) | 175 | uni.showModal({ |
| 176 | getList() | 176 | title: '提示', |
| 177 | }) | 177 | content: `确定审批通过吗`, |
| 178 | } | 178 | success: function(res) { |
| 179 | 179 | if (res.confirm) { | |
| 180 | function goDetail(item) { | 180 | doApproval(obj) |
| 181 | let path = `/pages/rank/applyDetail?examId=${item.examId}` | 181 | } |
| 182 | uni.navigateTo({ | 182 | } |
| 183 | url: path | 183 | }) |
| 184 | }); | 184 | } |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | </script> | 187 | function doApproval(obj) { |
| 188 | 188 | examApi.doMergeFlows(obj).then((res) => { | |
| 189 | <style lang="scss" scoped> | 189 | uni.showToast({ |
| 190 | 190 | title: '操作成功', | |
| 191 | </style> | 191 | icon: 'none' |
| 192 | }) | ||
| 193 | getList() | ||
| 194 | }) | ||
| 195 | } | ||
| 196 | |||
| 197 | function goDetail(item) { | ||
| 198 | let path = `/pages/rank/applyDetail?examId=${item.examId}` | ||
| 199 | uni.navigateTo({ | ||
| 200 | url: path | ||
| 201 | }); | ||
| 202 | } | ||
| 203 | </script> | ||
| 204 | |||
| 205 | <style lang="scss" scoped> | ||
| 206 | |||
| 207 | </style> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -155,7 +155,7 @@ | ... | @@ -155,7 +155,7 @@ |
| 155 | value: '3', | 155 | value: '3', |
| 156 | text: "外国护照" | 156 | text: "外国护照" |
| 157 | }, { | 157 | }, { |
| 158 | value: '5', | 158 | value: '4', |
| 159 | text: '户口本' | 159 | text: '户口本' |
| 160 | } | 160 | } |
| 161 | ]) | 161 | ]) |
| ... | @@ -188,7 +188,8 @@ | ... | @@ -188,7 +188,8 @@ |
| 188 | }); | 188 | }); |
| 189 | onLoad((option) => { | 189 | onLoad((option) => { |
| 190 | if (option.tab == '1') { | 190 | if (option.tab == '1') { |
| 191 | current.value = 1 | 191 | current.value = 1 |
| 192 | baseFormData.value.idcType = option.idcType || 0 | ||
| 192 | } | 193 | } |
| 193 | // console.log(current.value,option.tab) | 194 | // console.log(current.value,option.tab) |
| 194 | getRegionsList() | 195 | getRegionsList() |
| ... | @@ -289,7 +290,7 @@ | ... | @@ -289,7 +290,7 @@ |
| 289 | baseFormData.value = { | 290 | baseFormData.value = { |
| 290 | photo: '', | 291 | photo: '', |
| 291 | sex: '0', | 292 | sex: '0', |
| 292 | idcType: '0', | 293 | idcType: baseFormData.value.idcType, |
| 293 | perType: '1', | 294 | perType: '1', |
| 294 | }; | 295 | }; |
| 295 | } | 296 | } |
| ... | @@ -452,7 +453,7 @@ | ... | @@ -452,7 +453,7 @@ |
| 452 | }) | 453 | }) |
| 453 | return | 454 | return |
| 454 | } | 455 | } |
| 455 | if (baseFormData.value.idcType == 1 || baseFormData.value.idcType == 3 || baseFormData.value.idcType == 4) { | 456 | if ( baseFormData.value.idcType == 3 ) { |
| 456 | //转换为大写并判断位数12 | 457 | //转换为大写并判断位数12 |
| 457 | baseFormData.value.idcCode = baseFormData.value.idcCode.toUpperCase() | 458 | baseFormData.value.idcCode = baseFormData.value.idcCode.toUpperCase() |
| 458 | // var regex = /^[a-zA-Z]/ | 459 | // var regex = /^[a-zA-Z]/ |
| ... | @@ -491,15 +492,9 @@ | ... | @@ -491,15 +492,9 @@ |
| 491 | icon: 'none' | 492 | icon: 'none' |
| 492 | }) | 493 | }) |
| 493 | uni.redirectTo({ | 494 | uni.redirectTo({ |
| 494 | url: `/personalVip/addVip?tab=${current.value}` | 495 | url: `/personalVip/addVip?tab=${current.value}&idcType=${baseFormData.value.idcType}` |
| 495 | }); | 496 | }); |
| 496 | 497 | ||
| 497 | }).catch(() => { | ||
| 498 | let msg = '您已注册该会员,请不要重复注册!' | ||
| 499 | uni.showToast({ | ||
| 500 | title: msg, | ||
| 501 | icon: 'none' | ||
| 502 | }) | ||
| 503 | }) | 498 | }) |
| 504 | } | 499 | } |
| 505 | } | 500 | } | ... | ... |
| ... | @@ -9,10 +9,12 @@ | ... | @@ -9,10 +9,12 @@ |
| 9 | <view class="photobox"> | 9 | <view class="photobox"> |
| 10 | <view class="colorful">{{n.perName?.slice(0,1)}}</view> | 10 | <view class="colorful">{{n.perName?.slice(0,1)}}</view> |
| 11 | </view> | 11 | </view> |
| 12 | <view> | 12 | <view> |
| 13 | <!-- {{form}} --> | ||
| 13 | <view class="name">{{n.perName}}</view> | 14 | <view class="name">{{n.perName}}</view> |
| 14 | <view class="date">申请调入一级协会 {{n.sourceShenDeptName||'--'}}</view> | 15 | <view class="date" v-if="deptType==1">原一级协会 <text class="text-primary">{{n.sourceShenDeptName||'--'}}</text></view> |
| 15 | <view class="date">申请调入单位 {{n.targetDeptName||'--'}}</view> | 16 | <view class="date">申请调入一级协会 <text class="text-primary">{{form.shenDeptName||'--'}}</text></view> |
| 17 | <view class="date">申请调入单位 <text class="text-primary">{{n.targetDeptName||'--'}}</text></view> | ||
| 16 | </view> | 18 | </view> |
| 17 | </view> | 19 | </view> |
| 18 | </view> | 20 | </view> | ... | ... |
-
Please register or sign in to post a comment