中跆协级位审核
Showing
13 changed files
with
391 additions
and
502 deletions
| ... | @@ -902,6 +902,24 @@ export function getVerityMergeList(params) { | ... | @@ -902,6 +902,24 @@ export function getVerityMergeList(params) { |
| 902 | }) | 902 | }) |
| 903 | } | 903 | } |
| 904 | 904 | ||
| 905 | // 中跆协审核列表 | ||
| 906 | export function auditList(params) { | ||
| 907 | return request({ | ||
| 908 | url: '/exam/info/list', | ||
| 909 | method: 'get', | ||
| 910 | params | ||
| 911 | }) | ||
| 912 | } | ||
| 913 | |||
| 914 | // 中跆协审核提交 | ||
| 915 | export function auditJi(data) { | ||
| 916 | return request({ | ||
| 917 | url: `/exam/info/auditJi/${data.ids}?flag=${data.flag}&reason=${data.reason}&ids=${data.ids}`, | ||
| 918 | method: 'post', | ||
| 919 | params: data | ||
| 920 | }) | ||
| 921 | } | ||
| 922 | |||
| 905 | export function doMergeFlows(params) { | 923 | export function doMergeFlows(params) { |
| 906 | return request({ | 924 | return request({ |
| 907 | url: `/exam/info/submit/mergeFlows`, | 925 | url: `/exam/info/submit/mergeFlows`, | ... | ... |
| ... | @@ -3,6 +3,14 @@ page { | ... | @@ -3,6 +3,14 @@ page { |
| 3 | overflow: auto; | 3 | overflow: auto; |
| 4 | background: #ecf0f6; | 4 | background: #ecf0f6; |
| 5 | } | 5 | } |
| 6 | /* uni-data-checkbox 选中色全局覆盖为红色 */ | ||
| 7 | uni-data-checkbox .checklist-box.is-checked { | ||
| 8 | border-color: #C4121B !important; | ||
| 9 | background-color: #C4121B !important; | ||
| 10 | } | ||
| 11 | uni-data-checkbox .checklist-box.is-checked .checklist-text { | ||
| 12 | color: #fff !important; | ||
| 13 | } | ||
| 6 | .wBox{box-sizing: border-box;} | 14 | .wBox{box-sizing: border-box;} |
| 7 | .h3 {font-weight: bold;line-height: 2;} | 15 | .h3 {font-weight: bold;line-height: 2;} |
| 8 | .text-center{text-align: center;} | 16 | .text-center{text-align: center;} |
| ... | @@ -480,5 +488,10 @@ background-size: cover;position: relative;} | ... | @@ -480,5 +488,10 @@ background-size: cover;position: relative;} |
| 480 | 488 | ||
| 481 | 489 | ||
| 482 | 490 | ||
| 483 | 491 | .check-icon { | |
| 492 | font-size: 20rpx; | ||
| 493 | color: #fff; | ||
| 494 | font-weight: bold; | ||
| 495 | // margin-right: 6rpx; | ||
| 496 | } | ||
| 484 | 497 | ... | ... |
| 1 | // dev | 1 | // dev |
| 2 | // const baseUrl_api = 'http://192.168.1.137:8787' | 2 | const baseUrl_api = 'http://192.168.1.137:8787' |
| 3 | const baseUrl_api = 'http://tk001.wxjylt.com/stage-api' | 3 | // const baseUrl_api = 'http://tk001.wxjylt.com/stage-api' |
| 4 | const loginImage_api = 'http://tk001.wxjylt.com/stage-api' | 4 | const loginImage_api = 'http://tk001.wxjylt.com/stage-api' |
| 5 | const payUrl = 'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do' | 5 | const payUrl = 'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do' |
| 6 | 6 | ... | ... |
| ... | @@ -253,6 +253,10 @@ | ... | @@ -253,6 +253,10 @@ |
| 253 | 253 | ||
| 254 | onShow(() => { | 254 | onShow(() => { |
| 255 | uni.$on('chosen', updateData) | 255 | uni.$on('chosen', updateData) |
| 256 | const curExamId = examId || form.value.examId | ||
| 257 | if (curExamId) { | ||
| 258 | getChosedStudentList() | ||
| 259 | } | ||
| 256 | }) | 260 | }) |
| 257 | 261 | ||
| 258 | function updateData(e) { | 262 | function updateData(e) { |
| ... | @@ -406,6 +410,7 @@ | ... | @@ -406,6 +410,7 @@ |
| 406 | } | 410 | } |
| 407 | 411 | ||
| 408 | function getChosedStudentList() { | 412 | function getChosedStudentList() { |
| 413 | if (!form.value.examId) return | ||
| 409 | var obj = { | 414 | var obj = { |
| 410 | examId: form.value.examId | 415 | examId: form.value.examId |
| 411 | } | 416 | } |
| ... | @@ -603,7 +608,7 @@ | ... | @@ -603,7 +608,7 @@ |
| 603 | background: #fff; | 608 | background: #fff; |
| 604 | border: 2rpx solid #666; | 609 | border: 2rpx solid #666; |
| 605 | color: #666; | 610 | color: #666; |
| 606 | font-size: 24rpx; | 611 | font-size: 26rpx; |
| 607 | display: flex; | 612 | display: flex; |
| 608 | align-items: center; | 613 | align-items: center; |
| 609 | justify-content: center; | 614 | justify-content: center; |
| ... | @@ -612,7 +617,7 @@ | ... | @@ -612,7 +617,7 @@ |
| 612 | } | 617 | } |
| 613 | 618 | ||
| 614 | .step-text { | 619 | .step-text { |
| 615 | font-size: 24rpx; | 620 | font-size: 26rpx; |
| 616 | color: #666; | 621 | color: #666; |
| 617 | transition: all 0.3s; | 622 | transition: all 0.3s; |
| 618 | } | 623 | } |
| ... | @@ -691,7 +696,7 @@ | ... | @@ -691,7 +696,7 @@ |
| 691 | 696 | ||
| 692 | .info-label { | 697 | .info-label { |
| 693 | display: block; | 698 | display: block; |
| 694 | font-size: 24rpx; | 699 | font-size: 26rpx; |
| 695 | color: #666; | 700 | color: #666; |
| 696 | margin-bottom: 8rpx; | 701 | margin-bottom: 8rpx; |
| 697 | 702 | ||
| ... | @@ -739,7 +744,7 @@ | ... | @@ -739,7 +744,7 @@ |
| 739 | background: #FFF5F5; | 744 | background: #FFF5F5; |
| 740 | border: 1rpx solid #FFDDDD; | 745 | border: 1rpx solid #FFDDDD; |
| 741 | border-radius: 6rpx; | 746 | border-radius: 6rpx; |
| 742 | font-size: 24rpx; | 747 | font-size: 26rpx; |
| 743 | color: #AD181F; | 748 | color: #AD181F; |
| 744 | } | 749 | } |
| 745 | } | 750 | } |
| ... | @@ -810,7 +815,7 @@ | ... | @@ -810,7 +815,7 @@ |
| 810 | margin-bottom: 8rpx; | 815 | margin-bottom: 8rpx; |
| 811 | 816 | ||
| 812 | .per-code { | 817 | .per-code { |
| 813 | font-size: 24rpx; | 818 | font-size: 26rpx; |
| 814 | color: #666; | 819 | color: #666; |
| 815 | font-weight: normal; | 820 | font-weight: normal; |
| 816 | margin-left: 12rpx; | 821 | margin-left: 12rpx; |
| ... | @@ -818,7 +823,7 @@ | ... | @@ -818,7 +823,7 @@ |
| 818 | } | 823 | } |
| 819 | 824 | ||
| 820 | .student-idcard { | 825 | .student-idcard { |
| 821 | font-size: 24rpx; | 826 | font-size: 26rpx; |
| 822 | color: #666; | 827 | color: #666; |
| 823 | } | 828 | } |
| 824 | } | 829 | } |
| ... | @@ -841,7 +846,7 @@ | ... | @@ -841,7 +846,7 @@ |
| 841 | align-items: flex-end; | 846 | align-items: flex-end; |
| 842 | 847 | ||
| 843 | .level-label { | 848 | .level-label { |
| 844 | font-size: 24rpx; | 849 | font-size: 26rpx; |
| 845 | color: #666; | 850 | color: #666; |
| 846 | margin-bottom: 6rpx; | 851 | margin-bottom: 6rpx; |
| 847 | } | 852 | } | ... | ... |
| ... | @@ -40,14 +40,9 @@ | ... | @@ -40,14 +40,9 @@ |
| 40 | </view> | 40 | </view> |
| 41 | 41 | ||
| 42 | <view v-if="item.status=='0'||item.status=='3'||item.status=='4'||item.status=='9'" class="func"> | 42 | <view v-if="item.status=='0'||item.status=='3'||item.status=='4'||item.status=='9'" class="func"> |
| 43 | <button :disabled="item.status=='1'||item.status=='2'||item.status=='3'" | 43 | <button v-if="item.status !== '1' && item.status !== '2' && item.status !== '3'" @click="handleDelete(item)">删除</button> |
| 44 | @click="handleDelete(item)">删除 | 44 | <button v-if="item.status === '0'" @click="editThis(item)">编辑</button> |
| 45 | </button> | 45 | <button v-if="(item.status === '0' || item.status === '9') && item.totalNum > 0 && item.pass > 0" @click="handleSubmit(item)">提交审核</button> |
| 46 | <button :disabled="!(item.status=='0')" @click="editThis(item)">编辑</button> | ||
| 47 | <button :disabled="item.status!='0'&&item.status!='9'||item.totalNum==0||item.pass==0" | ||
| 48 | @click="handleSubmit(item)"> | ||
| 49 | 提交审核 | ||
| 50 | </button> | ||
| 51 | </view> | 46 | </view> |
| 52 | </view> | 47 | </view> |
| 53 | </view> | 48 | </view> |
| ... | @@ -214,12 +209,23 @@ function goDetail(item) { | ... | @@ -214,12 +209,23 @@ function goDetail(item) { |
| 214 | .invertedbtn-red { | 209 | .invertedbtn-red { |
| 215 | border-radius: 50px; | 210 | border-radius: 50px; |
| 216 | background-color: #fff; | 211 | background-color: #fff; |
| 217 | 212 | ||
| 218 | font-size: 30rpx; | 213 | font-size: 30rpx; |
| 219 | padding: 10rpx 20rpx; | 214 | padding: 10rpx 20rpx; |
| 220 | } | 215 | } |
| 221 | } | ||
| 222 | 216 | ||
| 217 | // .func button[disabled] { | ||
| 218 | // background-color: #f5f5f5; | ||
| 219 | // color: #ccc; | ||
| 220 | // border-color: #eee; | ||
| 221 | // } | ||
| 222 | } | ||
| 223 | :deep(.func button[disabled]) { | ||
| 224 | background-color: #f5f5f5 !important; | ||
| 225 | color: #ccc !important; | ||
| 226 | border-color: #eee !important; | ||
| 227 | opacity: 0.6; | ||
| 228 | } | ||
| 223 | .mt0 { | 229 | .mt0 { |
| 224 | margin-top: 0 !important; | 230 | margin-top: 0 !important; |
| 225 | } | 231 | } | ... | ... |
| ... | @@ -16,7 +16,7 @@ | ... | @@ -16,7 +16,7 @@ |
| 16 | </view> | 16 | </view> |
| 17 | 17 | ||
| 18 | <!-- 已选考生 --> | 18 | <!-- 已选考生 --> |
| 19 | <view class="selected-section" v-if="selectedList.length > 0"> | 19 | <!-- <view class="selected-section" v-if="selectedList.length > 0"> |
| 20 | <view class="section-header"> | 20 | <view class="section-header"> |
| 21 | <text class="section-title">已选考生</text> | 21 | <text class="section-title">已选考生</text> |
| 22 | <text class="section-count">{{selectedList.length}}人</text> | 22 | <text class="section-count">{{selectedList.length}}人</text> |
| ... | @@ -33,15 +33,15 @@ | ... | @@ -33,15 +33,15 @@ |
| 33 | </view> | 33 | </view> |
| 34 | </view> | 34 | </view> |
| 35 | </scroll-view> | 35 | </scroll-view> |
| 36 | </view> | 36 | </view> --> |
| 37 | 37 | ||
| 38 | <!-- 考生列表 --> | 38 | <!-- 考生列表 --> |
| 39 | <scroll-view class="student-scroll" scroll-y @scrolltolower="loadMore"> | 39 | <scroll-view class="student-scroll" scroll-y @scrolltolower="loadMore"> |
| 40 | <view class="student-list"> | 40 | <view class="student-list"> |
| 41 | <view class="student-card" v-for="(item, index) in studentList" :key="index" @click="toggleSelect(item)"> | 41 | <view class="student-card" v-for="(item, index) in studentList" :key="index"> |
| 42 | <view class="checkbox"> | 42 | <view class="checkbox" @click="toggleSelect(item)"> |
| 43 | <image v-if="item.checked" src="/static/member/dx_dwn.png" mode="aspectFit"></image> | 43 | <image v-if="item.checked" :src="config.baseUrl_api+'/fs/static/member/dx_dwn.png'" mode="aspectFit"></image> |
| 44 | <view v-else class="checkbox-empty"></view> | 44 | <image v-else :src="config.baseUrl_api+'/fs/static/member/dx.png'" mode="aspectFit"></image> |
| 45 | </view> | 45 | </view> |
| 46 | <view class="avatar"> | 46 | <view class="avatar"> |
| 47 | <image v-if="item.photo" :src="item.photo" mode="aspectFill"></image> | 47 | <image v-if="item.photo" :src="item.photo" mode="aspectFill"></image> |
| ... | @@ -335,7 +335,7 @@ | ... | @@ -335,7 +335,7 @@ |
| 335 | 335 | ||
| 336 | .remove-btn { | 336 | .remove-btn { |
| 337 | position: absolute; | 337 | position: absolute; |
| 338 | top: -6rpx; | 338 | top: -8rpx; |
| 339 | right: -6rpx; | 339 | right: -6rpx; |
| 340 | width: 28rpx; | 340 | width: 28rpx; |
| 341 | height: 28rpx; | 341 | height: 28rpx; |
| ... | @@ -370,13 +370,6 @@ | ... | @@ -370,13 +370,6 @@ |
| 370 | .checkbox { | 370 | .checkbox { |
| 371 | margin-right: 20rpx; | 371 | margin-right: 20rpx; |
| 372 | 372 | ||
| 373 | .checkbox-empty { | ||
| 374 | width: 40rpx; | ||
| 375 | height: 40rpx; | ||
| 376 | border: 2rpx solid #ddd; | ||
| 377 | border-radius: 50%; | ||
| 378 | } | ||
| 379 | |||
| 380 | image { | 373 | image { |
| 381 | width: 40rpx; | 374 | width: 40rpx; |
| 382 | height: 40rpx; | 375 | height: 40rpx; | ... | ... |
| ... | @@ -2,55 +2,49 @@ | ... | @@ -2,55 +2,49 @@ |
| 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 | <view v-show="totalCost>0" class="vipData"> | 5 | <view v-show="infoList.length>0" class="stat-row"> |
| 6 | <view>费用合计: | 6 | <view class="stat-item">费用合计:<text class="red">{{ totalCost.toFixed(2) }}元</text></view> |
| 7 | <text>{{ totalCost.toFixed(2) }}元</text> | 7 | <view class="stat-item">考试人数:<text class="red">{{ totalNum }}人</text></view> |
| 8 | </view> | ||
| 9 | </view> | 8 | </view> |
| 10 | 9 | ||
| 11 | <view class="appList"> | 10 | <view class="appList"> |
| 12 | <view class="appItem" v-for="item in infoList"> | 11 | <view class="appItem" v-for="item in infoList" :key="item.examId" @click="goDetail(item)"> |
| 13 | <view class="status" :class="{ | 12 | <view class="status" :class="{ |
| 14 | 'text-primary-bg':item.status=='0', | 13 | 'text-primary-bg': item.status=='1', |
| 15 | 'text-success-bg':item.status=='1', | 14 | 'text-success-bg': item.status=='2', |
| 16 | 'text-danger-bg':item.status=='2', | 15 | 'text-danger-bg': item.status=='3' |
| 17 | 'text-warning-bg':item.status=='3' | 16 | }" > |
| 18 | }" @click="goDetail(item)"> | 17 | {{ item.statusStr || '待提交' }} |
| 19 | {{ item.statusStr }} | ||
| 20 | </view> | 18 | </view> |
| 21 | 19 | ||
| 22 | <view class="date" v-if="item.status!='0'&&item.submitTime">提交时间:{{item.submitTime}}</view> | 20 | <view class="date" v-if="item.commitTime">提交时间:{{ item.commitTime.substring(0,10) }}</view> |
| 23 | <view class="text-primary">{{item.flowCode}}</view> | 21 | <view class="text-primary">{{ item.examCode }}</view> |
| 24 | <view class="name mt10" @click="goDetail(item)">{{item.mergeName}}</view> | 22 | <view class="name mt10" >{{ item.name }}</view> |
| 25 | <view class="flexbox" @click="goDetail(item)"> | 23 | <view class="flexbox" > |
| 26 | <view> | 24 | <view> |
| 27 | 考试人数 | 25 | 考试人数 |
| 28 | <view>{{item.totalNum}}</view> | 26 | <view>{{ item.totalNum }}</view> |
| 29 | </view> | 27 | </view> |
| 30 | |||
| 31 | <view> | 28 | <view> |
| 32 | 缴费状态 | 29 | 支付方式 |
| 33 | <view> | 30 | <view> |
| 34 | <text :class="{ | 31 | 民生付 |
| 35 | 'text-success':item.examPayStatusStr=='已上传', | 32 | <!-- <text :class="{ |
| 36 | 'text-danger':item.examPayStatusStr=='未上传', | 33 | 'text-success': item.examPayStatusStr=='已上传', |
| 37 | 'text-warning':item.examPayStatusStr=='已结算' | 34 | 'text-danger': item.examPayStatusStr=='未上传', |
| 38 | }">{{ item.examPayStatusStr||'--' }}</text> | 35 | 'text-warning': item.examPayStatusStr=='已结算' |
| 36 | }">{{ item.examPayStatusStr || '--' }}</text> --> | ||
| 39 | </view> | 37 | </view> |
| 40 | </view> | 38 | </view> |
| 41 | <view> | 39 | <view> |
| 42 | 总金额 | 40 | 总金额 |
| 43 | <view>¥{{item.totalAmount}}</view> | 41 | <view>¥{{ item.price }}</view> |
| 44 | </view> | 42 | </view> |
| 45 | </view> | 43 | </view> |
| 46 | <view class="pp esp">上报单位:{{item.memName}}</view> | 44 | <view class="pp esp">上报单位:{{ item.memberName }}</view> |
| 47 | 45 | ||
| 48 | <view class="func" v-if="item.status=='0'"> | 46 | <view class="func" v-if="item.status=='1'"> |
| 49 | <button @click="audit(item,'2')">拒绝</button> | 47 | <button @click="goApproval(item)">审批</button> |
| 50 | <button @click="audit(item,'1')">同意</button> | ||
| 51 | </view> | ||
| 52 | <view class="func" v-if="(item.isView=='1' && item.status=='1') || item.payStatus=='3'"> | ||
| 53 | <button @click="handleBack(item)">撤回</button> | ||
| 54 | </view> | 48 | </view> |
| 55 | </view> | 49 | </view> |
| 56 | </view> | 50 | </view> |
| ... | @@ -65,189 +59,101 @@ | ... | @@ -65,189 +59,101 @@ |
| 65 | <script setup> | 59 | <script setup> |
| 66 | import * as api from '@/common/api.js' | 60 | import * as api from '@/common/api.js' |
| 67 | import config from '@/config.js' | 61 | import config from '@/config.js' |
| 68 | import _ from 'underscore' | ||
| 69 | import { | 62 | import { |
| 70 | onMounted, | ||
| 71 | ref | 63 | ref |
| 72 | } from 'vue' | 64 | } from 'vue' |
| 73 | import { | 65 | import { |
| 74 | onLoad, | ||
| 75 | onShow | 66 | onShow |
| 76 | } from '@dcloudio/uni-app' | 67 | } from '@dcloudio/uni-app' |
| 77 | const app = getApp(); | 68 | |
| 69 | const app = getApp() | ||
| 70 | |||
| 71 | // 导航栏对应 status 值 | ||
| 72 | const statusValues = ['', '1', '2', '3'] | ||
| 73 | const navs = ref(['全部', '审批中', '审批通过', '审批拒绝']) | ||
| 74 | const current = ref(0) | ||
| 75 | |||
| 78 | const queryParams = ref({ | 76 | const queryParams = ref({ |
| 79 | // pageNum: 1, | 77 | status: '', |
| 80 | // pageSize: 10 | 78 | auditSelectType: '1', |
| 81 | status: '0', | 79 | auditFlag: '1', |
| 82 | type: '1' | 80 | pageNum: 1, |
| 81 | pageSize: 50 | ||
| 83 | }) | 82 | }) |
| 84 | const navs = ref(['审核中', '审核通过', '审核拒绝', '审批撤回']) | 83 | |
| 85 | const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回'] | ||
| 86 | const current = ref() | ||
| 87 | const infoList = ref([]) | 84 | const infoList = ref([]) |
| 88 | const total = ref(0) | 85 | const total = ref(0) |
| 89 | const totalCost = ref(0) | 86 | const totalCost = ref(0) |
| 90 | const deptType = ref('') | 87 | const totalNum = ref(0) |
| 91 | const userType = ref('') | ||
| 92 | onLoad(() => { | ||
| 93 | 88 | ||
| 94 | }) | ||
| 95 | onShow(() => { | 89 | onShow(() => { |
| 96 | if (app.globalData.isLogin) { | 90 | if (app.globalData.isLogin) { |
| 97 | init() | 91 | getList() |
| 98 | } else { | 92 | } else { |
| 99 | |||
| 100 | app.firstLoadCallback = () => { | 93 | app.firstLoadCallback = () => { |
| 101 | init() | 94 | getList() |
| 102 | }; | 95 | } |
| 103 | } | 96 | } |
| 104 | }) | 97 | }) |
| 105 | 98 | ||
| 106 | function init() { | ||
| 107 | deptType.value = app.globalData.deptType | ||
| 108 | userType.value = app.globalData.userType | ||
| 109 | getList() | ||
| 110 | } | ||
| 111 | |||
| 112 | |||
| 113 | function getList() { | 99 | function getList() { |
| 114 | uni.showLoading({ | 100 | uni.showLoading({ title: '加载中', mask: true }) |
| 115 | title: '加载中', | ||
| 116 | mask: true | ||
| 117 | }) | ||
| 118 | totalCost.value = 0 | 101 | totalCost.value = 0 |
| 119 | api.getVerityMergeList(queryParams.value).then(response => { | 102 | totalNum.value = 0 |
| 103 | api.auditList(queryParams.value).then(response => { | ||
| 120 | uni.hideLoading() | 104 | uni.hideLoading() |
| 121 | const list = [] | 105 | infoList.value = response.rows || [] |
| 122 | _.each(response.rows, r => { | 106 | total.value = response.total || 0 |
| 123 | const item = JSON.parse(r.remark) | 107 | infoList.value.forEach(item => { |
| 124 | item.recordId = r.recordId | 108 | totalCost.value += Number(item.price) || 0 |
| 125 | item.status = r.auditStatus | 109 | totalNum.value += Number(item.totalNum) || 0 |
| 126 | item.statusStr = statusArr[r.auditStatus] | ||
| 127 | item.isView = r.isView | ||
| 128 | item.payStatus = r.payStatus | ||
| 129 | item.examPayStatusStr = r.examPayStatusStr | ||
| 130 | item.sourceData = r | ||
| 131 | item.auditProcess = r.auditProcess | ||
| 132 | list.push(item) | ||
| 133 | |||
| 134 | totalCost.value += (item.totalAmount * 1) | ||
| 135 | }) | 110 | }) |
| 136 | infoList.value = list | 111 | }).catch(() => { |
| 137 | total.value = response.total | 112 | uni.hideLoading() |
| 138 | }) | 113 | }) |
| 139 | } | 114 | } |
| 140 | 115 | ||
| 141 | function onClickItem(e) { | 116 | function onClickItem(e) { |
| 142 | console.log(e) | 117 | current.value = e.currentIndex |
| 143 | queryParams.value.status = e.currentIndex | 118 | queryParams.value.status = statusValues[e.currentIndex] |
| 144 | getList() | 119 | getList() |
| 145 | } | 120 | } |
| 146 | 121 | ||
| 147 | function goDetail(item) { | 122 | function goDetail(item) { |
| 148 | const form = encodeURIComponent(JSON.stringify(item)) | ||
| 149 | // 查看 | ||
| 150 | let path = `/level/mergeUpDetail?form=${form}&type=1` | ||
| 151 | uni.navigateTo({ | 123 | uni.navigateTo({ |
| 152 | url: path | 124 | url: `/pages/rank/applyDetail?examId=${item.examId}&type=1` |
| 153 | }); | ||
| 154 | |||
| 155 | } | ||
| 156 | |||
| 157 | function audit(item, flag) { | ||
| 158 | var obj = { | ||
| 159 | flag: flag, | ||
| 160 | reason: null, | ||
| 161 | id: item.recordId | ||
| 162 | } | ||
| 163 | |||
| 164 | if (flag == '2') { | ||
| 165 | // 拒绝 | ||
| 166 | // 弹出框填写理由 | ||
| 167 | uni.showModal({ | ||
| 168 | title: '请输入拒绝理由', | ||
| 169 | editable: true, | ||
| 170 | success: function(res) { | ||
| 171 | if (res.confirm) { | ||
| 172 | if (!res.content) { | ||
| 173 | uni.showToast({ | ||
| 174 | title: '请输入拒绝理由', | ||
| 175 | icon: 'none' | ||
| 176 | }) | ||
| 177 | } else { | ||
| 178 | obj.reason = res.content | ||
| 179 | doApproval(obj) | ||
| 180 | } | ||
| 181 | } | ||
| 182 | } | ||
| 183 | }) | ||
| 184 | } else if (flag == '1') { | ||
| 185 | // 二次确认 | ||
| 186 | uni.showModal({ | ||
| 187 | title: '提示', | ||
| 188 | content: `确定审批通过吗`, | ||
| 189 | success: function(res) { | ||
| 190 | if (res.confirm) { | ||
| 191 | doApproval(obj) | ||
| 192 | } | ||
| 193 | } | ||
| 194 | }) | ||
| 195 | } | ||
| 196 | } | ||
| 197 | |||
| 198 | function doApproval(obj) { | ||
| 199 | console.log(obj) | ||
| 200 | uni.showLoading({ | ||
| 201 | title: '加载中' | ||
| 202 | }) | ||
| 203 | api.doMergeFlows(obj).then((res) => { | ||
| 204 | uni.hideLoading() | ||
| 205 | uni.showToast({ | ||
| 206 | title: '操作成功', | ||
| 207 | icon: 'none' | ||
| 208 | }) | ||
| 209 | getList() | ||
| 210 | }) | 125 | }) |
| 211 | } | 126 | } |
| 212 | function handleBack(row){ | 127 | |
| 213 | uni.showModal({ | 128 | function goApproval(item) { |
| 214 | title: '请输入撤回理由', | 129 | uni.navigateTo({ |
| 215 | editable: true, | 130 | url: `/level/ztx/memberAuditPage?ids=${item.examId}` |
| 216 | success: function(res) { | ||
| 217 | if (res.confirm) { | ||
| 218 | if (!res.content) { | ||
| 219 | uni.showToast({ | ||
| 220 | title: '请输入撤回理由', | ||
| 221 | icon: 'none' | ||
| 222 | }) | ||
| 223 | } else { | ||
| 224 | var obj = { | ||
| 225 | flag: '2', | ||
| 226 | reason: res.content, | ||
| 227 | recordId: row.recordId | ||
| 228 | } | ||
| 229 | api.doVerityBack(obj).then(rr=>{ | ||
| 230 | uni.showToast({ | ||
| 231 | title: '操作成功', | ||
| 232 | icon: 'none' | ||
| 233 | }) | ||
| 234 | getList() | ||
| 235 | }) | ||
| 236 | } | ||
| 237 | } | ||
| 238 | } | ||
| 239 | }) | 131 | }) |
| 240 | } | 132 | } |
| 241 | </script> | 133 | </script> |
| 242 | 134 | ||
| 243 | |||
| 244 | <style scoped lang="scss"> | 135 | <style scoped lang="scss"> |
| 245 | .mt0 { | 136 | .mt0 { |
| 246 | margin-top: 0 !important; | 137 | margin-top: 0 !important; |
| 247 | } | 138 | } |
| 248 | 139 | ||
| 140 | .stat-row { | ||
| 141 | display: flex; | ||
| 142 | gap: 40rpx; | ||
| 143 | padding: 20rpx 30rpx; | ||
| 144 | background: #f3e5e5; | ||
| 145 | font-size: 26rpx; | ||
| 146 | color: #666; | ||
| 147 | // margin-top: 20rpx; | ||
| 148 | |||
| 149 | .red { | ||
| 150 | color: #C4121B; | ||
| 151 | font-weight: 600; | ||
| 152 | } | ||
| 153 | } | ||
| 154 | |||
| 249 | .appList .appItem .name { | 155 | .appList .appItem .name { |
| 250 | width: 100%; | 156 | width: 100%; |
| 251 | word-break: break-all; | 157 | word-break: break-all; |
| 252 | } | 158 | } |
| 253 | </style> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 159 | </style> | ... | ... |
| ... | @@ -19,22 +19,25 @@ | ... | @@ -19,22 +19,25 @@ |
| 19 | <text class="form-label">审批结果</text> | 19 | <text class="form-label">审批结果</text> |
| 20 | <view class="radio-group"> | 20 | <view class="radio-group"> |
| 21 | <view | 21 | <view |
| 22 | :class="{ selected: form.flag === '1' }" | 22 | :class="{ selected: form.flag == '1' |
| 23 | }" | ||
| 23 | class="radio-item" | 24 | class="radio-item" |
| 24 | @click="form.flag = '1'" | 25 | @click="form.flag = '1'" |
| 25 | > | 26 | > |
| 26 | <view class="radio-circle"> | 27 | <view class="radio-circle"> |
| 27 | <uni-icons v-if="form.flag === '1'" color="#fff" size="10" type="checkmark"></uni-icons> | 28 | <text class="check-icon" v-if="form.flag == '1'">√</text> |
| 29 | <!-- <uni-icons v-if="form.flag == '1'" color="#fff" size="10" type="checkmark"></uni-icons> --> | ||
| 28 | </view> | 30 | </view> |
| 29 | <text>审批通过</text> | 31 | <text>审批通过</text> |
| 30 | </view> | 32 | </view> |
| 31 | <view | 33 | <view |
| 32 | :class="{ selected: form.flag === '0' }" | 34 | :class="{ selected: form.flag == '0' }" |
| 33 | class="radio-item" | 35 | class="radio-item" |
| 34 | @click="form.flag = '0'" | 36 | @click="form.flag = '0'" |
| 35 | > | 37 | > |
| 36 | <view class="radio-circle"> | 38 | <view class="radio-circle"> |
| 37 | <uni-icons v-if="form.flag === '0'" color="#fff" size="10" type="checkmark"></uni-icons> | 39 | <text v-if="form.flag == '0'" class="check-icon">√</text> |
| 40 | <!-- <uni-icons v-if="form.flag == '0'" color="#fff" size="10" type="checkmark"></uni-icons> --> | ||
| 38 | </view> | 41 | </view> |
| 39 | <text>审批拒绝</text> | 42 | <text>审批拒绝</text> |
| 40 | </view> | 43 | </view> |
| ... | @@ -164,7 +167,7 @@ async function getExaminer() { | ... | @@ -164,7 +167,7 @@ async function getExaminer() { |
| 164 | 167 | ||
| 165 | 168 | ||
| 166 | function doSubmit() { | 169 | function doSubmit() { |
| 167 | if (form.value.flag === '0' && !form.value.reason) { | 170 | if (form.value.flag == '0' && !form.value.reason) { |
| 168 | uni.showToast({ | 171 | uni.showToast({ |
| 169 | title: '请输入拒绝理由', | 172 | title: '请输入拒绝理由', |
| 170 | icon: 'none' | 173 | icon: 'none' |
| ... | @@ -285,7 +288,7 @@ async function confirmDel() { | ... | @@ -285,7 +288,7 @@ async function confirmDel() { |
| 285 | font-size: 30rpx; | 288 | font-size: 30rpx; |
| 286 | font-weight: 600; | 289 | font-weight: 600; |
| 287 | color: #333; | 290 | color: #333; |
| 288 | margin-left: 10rpx; | 291 | // margin-left: 10rpx; |
| 289 | } | 292 | } |
| 290 | } | 293 | } |
| 291 | 294 | ||
| ... | @@ -543,4 +546,12 @@ async function confirmDel() { | ... | @@ -543,4 +546,12 @@ async function confirmDel() { |
| 543 | .btn-cancel::after, .btn-confirm::after { | 546 | .btn-cancel::after, .btn-confirm::after { |
| 544 | border: none; | 547 | border: none; |
| 545 | } | 548 | } |
| 549 | |||
| 550 | |||
| 551 | .check-icon { | ||
| 552 | font-size: 20rpx; | ||
| 553 | color: #fff; | ||
| 554 | font-weight: bold; | ||
| 555 | margin-right: 6rpx; | ||
| 556 | } | ||
| 546 | </style> | 557 | </style> | ... | ... |
| ... | @@ -50,28 +50,16 @@ | ... | @@ -50,28 +50,16 @@ |
| 50 | <uni-icons color="#AD181F" size="18" type="checkmark-circle"></uni-icons> | 50 | <uni-icons color="#AD181F" size="18" type="checkmark-circle"></uni-icons> |
| 51 | <text class="section-title">审核记录</text> | 51 | <text class="section-title">审核记录</text> |
| 52 | </view> | 52 | </view> |
| 53 | <view class="audit-list"> | 53 | <view class="wBox"> |
| 54 | <view v-for="(item, index) in auditList" :key="index" class="audit-item"> | 54 | <view class="stepItem" v-for="(item, index) in auditList" :key="index"> |
| 55 | <view :class="item.auditResult == 2 ? 'pass' : 'fail'" class="audit-dot"></view> | 55 | <view class="time">{{ formatDateTime(item.auditTime) }}</view> |
| 56 | <view class="audit-content"> | 56 | <view class="content"> |
| 57 | <view class="audit-row"> | 57 | <view class="status"> |
| 58 | <text class="audit-label">审核协会</text> | 58 | <text v-if="item.auditResult==1" class="text-success">审核通过</text> |
| 59 | <text class="audit-value">{{ item.auditDeptName || '-' }}</text> | 59 | <text v-if="item.auditResult==2" class="text-danger">审核拒绝</text> |
| 60 | </view> | ||
| 61 | <view class="audit-row"> | ||
| 62 | <text class="audit-label">审核时间</text> | ||
| 63 | <text class="audit-value">{{ formatDateTime(item.auditTime) }}</text> | ||
| 64 | </view> | ||
| 65 | <view class="audit-row"> | ||
| 66 | <text class="audit-label">审核状态</text> | ||
| 67 | <text :class="item.auditResult == 1 ? 'text-success' : 'text-danger'" class="audit-value"> | ||
| 68 | {{ item.auditResult == 1 ? '通过' : '拒绝' }} | ||
| 69 | </text> | ||
| 70 | </view> | ||
| 71 | <view v-if="item.auditMsg" class="audit-row"> | ||
| 72 | <text class="audit-label">备注</text> | ||
| 73 | <text class="audit-value">{{ item.auditMsg }}</text> | ||
| 74 | </view> | 60 | </view> |
| 61 | <view class="deptName">{{ item.auditDeptName || '--' }}</view> | ||
| 62 | <view v-if="item.auditMsg">备注:{{ item.auditMsg }}</view> | ||
| 75 | </view> | 63 | </view> |
| 76 | </view> | 64 | </view> |
| 77 | </view> | 65 | </view> |
| ... | @@ -191,7 +179,7 @@ function formatDateTime(dateStr) { | ... | @@ -191,7 +179,7 @@ function formatDateTime(dateStr) { |
| 191 | display: flex; | 179 | display: flex; |
| 192 | align-items: center; | 180 | align-items: center; |
| 193 | margin-bottom: 24rpx; | 181 | margin-bottom: 24rpx; |
| 194 | 182 | ||
| 195 | .section-title { | 183 | .section-title { |
| 196 | font-size: 30rpx; | 184 | font-size: 30rpx; |
| 197 | font-weight: 600; | 185 | font-weight: 600; |
| ... | @@ -200,6 +188,54 @@ function formatDateTime(dateStr) { | ... | @@ -200,6 +188,54 @@ function formatDateTime(dateStr) { |
| 200 | } | 188 | } |
| 201 | } | 189 | } |
| 202 | 190 | ||
| 191 | .wBox { | ||
| 192 | width: 700rpx; | ||
| 193 | padding: 30rpx; | ||
| 194 | margin: 20rpx auto 0; | ||
| 195 | background: #FFFFFF; | ||
| 196 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | ||
| 197 | border-radius: 15rpx; | ||
| 198 | } | ||
| 199 | |||
| 200 | .stepItem { | ||
| 201 | // display: flex; | ||
| 202 | padding: 16rpx; | ||
| 203 | border-bottom: 1rpx dashed #eee; | ||
| 204 | |||
| 205 | &:last-child { | ||
| 206 | border-bottom: none; | ||
| 207 | } | ||
| 208 | |||
| 209 | .time { | ||
| 210 | width: 80%; | ||
| 211 | font-size: 22rpx; | ||
| 212 | color: #999; | ||
| 213 | flex-shrink: 0; | ||
| 214 | padding-top: 4rpx; | ||
| 215 | } | ||
| 216 | |||
| 217 | .content { | ||
| 218 | flex: 1; | ||
| 219 | |||
| 220 | .status { | ||
| 221 | font-size: 28rpx; | ||
| 222 | font-weight: 600; | ||
| 223 | margin-bottom: 6rpx; | ||
| 224 | } | ||
| 225 | |||
| 226 | .deptName { | ||
| 227 | font-size: 26rpx; | ||
| 228 | color: #666; | ||
| 229 | } | ||
| 230 | |||
| 231 | view { | ||
| 232 | font-size: 24rpx; | ||
| 233 | color: #999; | ||
| 234 | margin-top: 4rpx; | ||
| 235 | } | ||
| 236 | } | ||
| 237 | } | ||
| 238 | |||
| 203 | .info-card { | 239 | .info-card { |
| 204 | .info-row { | 240 | .info-row { |
| 205 | display: flex; | 241 | display: flex; |
| ... | @@ -238,69 +274,6 @@ function formatDateTime(dateStr) { | ... | @@ -238,69 +274,6 @@ function formatDateTime(dateStr) { |
| 238 | } | 274 | } |
| 239 | } | 275 | } |
| 240 | 276 | ||
| 241 | /* 审核记录 */ | ||
| 242 | .audit-list { | ||
| 243 | .audit-item { | ||
| 244 | display: flex; | ||
| 245 | padding: 20rpx 0; | ||
| 246 | border-bottom: 1px dashed #eee; | ||
| 247 | |||
| 248 | &:last-child { | ||
| 249 | border-bottom: none; | ||
| 250 | } | ||
| 251 | |||
| 252 | .audit-dot { | ||
| 253 | width: 14rpx; | ||
| 254 | height: 14rpx; | ||
| 255 | border-radius: 50%; | ||
| 256 | margin-top: 8rpx; | ||
| 257 | margin-right: 20rpx; | ||
| 258 | flex-shrink: 0; | ||
| 259 | |||
| 260 | &.pass { | ||
| 261 | background-color: #4caf50; | ||
| 262 | } | ||
| 263 | |||
| 264 | &.fail { | ||
| 265 | background-color: #f44336; | ||
| 266 | } | ||
| 267 | } | ||
| 268 | |||
| 269 | .audit-content { | ||
| 270 | flex: 1; | ||
| 271 | |||
| 272 | .audit-row { | ||
| 273 | display: flex; | ||
| 274 | margin-bottom: 10rpx; | ||
| 275 | |||
| 276 | &:last-child { | ||
| 277 | margin-bottom: 0; | ||
| 278 | } | ||
| 279 | |||
| 280 | .audit-label { | ||
| 281 | font-size: 24rpx; | ||
| 282 | color: #999; | ||
| 283 | width: 140rpx; | ||
| 284 | flex-shrink: 0; | ||
| 285 | } | ||
| 286 | |||
| 287 | .audit-value { | ||
| 288 | font-size: 26rpx; | ||
| 289 | color: #333; | ||
| 290 | flex: 1; | ||
| 291 | |||
| 292 | &.text-success { | ||
| 293 | color: #4caf50; | ||
| 294 | } | ||
| 295 | |||
| 296 | &.text-danger { | ||
| 297 | color: #f44336; | ||
| 298 | } | ||
| 299 | } | ||
| 300 | } | ||
| 301 | } | ||
| 302 | } | ||
| 303 | } | ||
| 304 | 277 | ||
| 305 | /* 考官表格 */ | 278 | /* 考官表格 */ |
| 306 | .examiner-table { | 279 | .examiner-table { | ... | ... |
| ... | @@ -17,28 +17,18 @@ | ... | @@ -17,28 +17,18 @@ |
| 17 | <view class="form-card"> | 17 | <view class="form-card"> |
| 18 | <view class="form-item"> | 18 | <view class="form-item"> |
| 19 | <text class="form-label">审批结果</text> | 19 | <text class="form-label">审批结果</text> |
| 20 | <view class="radio-group"> | 20 | <radio-group @change="onFlagChange"> |
| 21 | <view | 21 | <view class="radio-group"> |
| 22 | class="radio-item" | 22 | <label class="radio-item" :class="{ selected: form.flag == '1' }"> |
| 23 | :class="{ selected: form.flag === '1' }" | 23 | <radio value="1" :checked="form.flag == '1'" color="#C4121B" /> |
| 24 | @click="form.flag = '1'" | 24 | <text>审批通过</text> |
| 25 | > | 25 | </label> |
| 26 | <view class="radio-circle"> | 26 | <label class="radio-item" :class="{ selected: form.flag == '0' }"> |
| 27 | <uni-icons v-if="form.flag === '1'" type="checkmark" size="10" color="#fff"></uni-icons> | 27 | <radio value="0" :checked="form.flag == '0'" color="#C4121B" /> |
| 28 | </view> | 28 | <text>审批拒绝</text> |
| 29 | <text>审批通过</text> | 29 | </label> |
| 30 | </view> | 30 | </view> |
| 31 | <view | 31 | </radio-group> |
| 32 | class="radio-item" | ||
| 33 | :class="{ selected: form.flag === '0' }" | ||
| 34 | @click="form.flag = '0'" | ||
| 35 | > | ||
| 36 | <view class="radio-circle"> | ||
| 37 | <uni-icons v-if="form.flag === '0'" type="checkmark" size="10" color="#fff"></uni-icons> | ||
| 38 | </view> | ||
| 39 | <text>审批拒绝</text> | ||
| 40 | </view> | ||
| 41 | </view> | ||
| 42 | </view> | 32 | </view> |
| 43 | 33 | ||
| 44 | <view class="form-item"> | 34 | <view class="form-item"> |
| ... | @@ -65,7 +55,7 @@ | ... | @@ -65,7 +55,7 @@ |
| 65 | </template> | 55 | </template> |
| 66 | 56 | ||
| 67 | <script setup> | 57 | <script setup> |
| 68 | import * as api from '@/common/api_exam.js' | 58 | import * as api from '@/common/api.js' |
| 69 | import { ref } from 'vue' | 59 | import { ref } from 'vue' |
| 70 | import { onLoad } from '@dcloudio/uni-app' | 60 | import { onLoad } from '@dcloudio/uni-app' |
| 71 | 61 | ||
| ... | @@ -78,6 +68,10 @@ const form = ref({ | ... | @@ -78,6 +68,10 @@ const form = ref({ |
| 78 | reason: '' | 68 | reason: '' |
| 79 | }) | 69 | }) |
| 80 | 70 | ||
| 71 | function onFlagChange(e) { | ||
| 72 | form.value.flag = e.detail.value | ||
| 73 | } | ||
| 74 | |||
| 81 | onLoad((options) => { | 75 | onLoad((options) => { |
| 82 | if (options.type) { | 76 | if (options.type) { |
| 83 | type.value = options.type | 77 | type.value = options.type |
| ... | @@ -92,7 +86,7 @@ function goBack() { | ... | @@ -92,7 +86,7 @@ function goBack() { |
| 92 | } | 86 | } |
| 93 | 87 | ||
| 94 | function doSubmit() { | 88 | function doSubmit() { |
| 95 | if (form.value.flag === '0' && !form.value.reason) { | 89 | if (form.value.flag == '0' && !form.value.reason) { |
| 96 | uni.showToast({ | 90 | uni.showToast({ |
| 97 | title: '请输入拒绝理由', | 91 | title: '请输入拒绝理由', |
| 98 | icon: 'none' | 92 | icon: 'none' |
| ... | @@ -109,7 +103,7 @@ function doSubmit() { | ... | @@ -109,7 +103,7 @@ function doSubmit() { |
| 109 | reason: form.value.reason || '' | 103 | reason: form.value.reason || '' |
| 110 | } | 104 | } |
| 111 | 105 | ||
| 112 | api.shenAudit(params).then(res => { | 106 | api.auditJi(params).then(res => { |
| 113 | uni.showToast({ | 107 | uni.showToast({ |
| 114 | title: '操作成功', | 108 | title: '操作成功', |
| 115 | icon: 'success' | 109 | icon: 'success' |
| ... | @@ -168,7 +162,7 @@ function doSubmit() { | ... | @@ -168,7 +162,7 @@ function doSubmit() { |
| 168 | font-size: 30rpx; | 162 | font-size: 30rpx; |
| 169 | font-weight: 600; | 163 | font-weight: 600; |
| 170 | color: #333; | 164 | color: #333; |
| 171 | margin-left: 10rpx; | 165 | // margin-left: 10rpx; |
| 172 | } | 166 | } |
| 173 | } | 167 | } |
| 174 | 168 | ||
| ... | @@ -190,31 +184,31 @@ function doSubmit() { | ... | @@ -190,31 +184,31 @@ function doSubmit() { |
| 190 | 184 | ||
| 191 | .radio-group { | 185 | .radio-group { |
| 192 | display: flex; | 186 | display: flex; |
| 193 | gap: 40rpx; | 187 | gap: 24rpx; |
| 194 | } | 188 | } |
| 195 | 189 | ||
| 196 | .radio-item { | 190 | .radio-item { |
| 191 | flex: 1; | ||
| 197 | display: flex; | 192 | display: flex; |
| 198 | align-items: center; | 193 | align-items: center; |
| 194 | justify-content: center; | ||
| 199 | gap: 12rpx; | 195 | gap: 12rpx; |
| 200 | font-size: 28rpx; | 196 | font-size: 28rpx; |
| 201 | color: #333; | 197 | color: #666; |
| 198 | padding: 20rpx 0; | ||
| 199 | border-radius: 12rpx; | ||
| 200 | border: 2rpx solid #eee; | ||
| 201 | background: #fafafa; | ||
| 202 | 202 | ||
| 203 | .radio-circle { | 203 | &.selected { |
| 204 | width: 36rpx; | 204 | color: #C4121B; |
| 205 | height: 36rpx; | 205 | border-color: #C4121B; |
| 206 | border-radius: 50%; | 206 | background: #fff5f5; |
| 207 | border: 2rpx solid #ddd; | 207 | font-weight: 500; |
| 208 | display: flex; | ||
| 209 | align-items: center; | ||
| 210 | justify-content: center; | ||
| 211 | } | 208 | } |
| 212 | 209 | ||
| 213 | &.selected { | 210 | radio { |
| 214 | .radio-circle { | 211 | transform: scale(0.8); |
| 215 | background-color: #C4121B; | ||
| 216 | border-color: #C4121B; | ||
| 217 | } | ||
| 218 | } | 212 | } |
| 219 | } | 213 | } |
| 220 | 214 | ... | ... |
| ... | @@ -6,7 +6,7 @@ | ... | @@ -6,7 +6,7 @@ |
| 6 | <!-- 考段基本信息 --> | 6 | <!-- 考段基本信息 --> |
| 7 | <view class="card"> | 7 | <view class="card"> |
| 8 | <view class="card-header"> | 8 | <view class="card-header"> |
| 9 | <view class="header-left">考段基本信息33</view> | 9 | <view class="header-left">基本信息</view> |
| 10 | </view> | 10 | </view> |
| 11 | <view class="card-body"> | 11 | <view class="card-body"> |
| 12 | <view class="info-row"> | 12 | <view class="info-row"> |
| ... | @@ -122,26 +122,22 @@ | ... | @@ -122,26 +122,22 @@ |
| 122 | <!-- <view class="no-more" v-if="!hasMore && list.length > 0">没有更多了</view> --> | 122 | <!-- <view class="no-more" v-if="!hasMore && list.length > 0">没有更多了</view> --> |
| 123 | </view> | 123 | </view> |
| 124 | 124 | ||
| 125 | <!-- 审核信息 --> | 125 | <!-- 审核记录 --> |
| 126 | <view class="card"> | 126 | <view class="h3-padding">审核记录</view> |
| 127 | <view class="card-header"> | 127 | <view class="wBox"> |
| 128 | <view class="header-left">审核信息</view> | ||
| 129 | </view> | ||
| 130 | |||
| 131 | <view v-if="loadingAudit" class="state-tip">加载中...</view> | 128 | <view v-if="loadingAudit" class="state-tip">加载中...</view> |
| 132 | <view v-else-if="recordList.length === 0" class="state-tip">暂无审核记录</view> | 129 | <view v-else-if="recordList.length === 0" class="state-tip">暂无审核记录</view> |
| 133 | 130 | <view class="stepItem" v-else v-for="(n, index) in recordList" :key="index"> | |
| 134 | <view class="audit-list" v-else> | 131 | <view class="time">{{ n.auditTime || '待审批' }}</view> |
| 135 | <view class="audit-item" v-for="(n, index) in recordList" :key="index"> | 132 | <view class="content"> |
| 136 | <view class="audit-dot" :class="n.auditResult == 1 ? 'pass' : 'fail'"></view> | 133 | <view class="status"> |
| 137 | <view class="audit-content"> | 134 | <text v-if="n.auditResult==1" class="text-success">审核通过</text> |
| 138 | <view class="audit-time">{{ n.auditTime || '待审批' }}</view> | 135 | <text v-if="n.auditResult==2" class="text-danger">审核拒绝</text> |
| 139 | <view class="audit-status" :class="n.auditResult == 1 ? 'text-green' : 'text-red'"> | 136 | <text v-if="n.auditResult==0" class="text-primary">审核中</text> |
| 140 | {{ getAuditResultText(n.auditResult, n.auditStatusStr) }} | 137 | <text v-if="n.auditResult==3" class="text-warning">已撤回</text> |
| 141 | </view> | ||
| 142 | <view class="audit-dept">{{ n.auditDeptName || n.deptName || '--' }}</view> | ||
| 143 | <view class="audit-remark" v-if="n.auditMsg">备注:{{ n.auditMsg }}</view> | ||
| 144 | </view> | 138 | </view> |
| 139 | <view class="deptName">{{ n.auditDeptName || n.deptName || '--' }}</view> | ||
| 140 | <view v-if="n.auditMsg">备注:{{ n.auditMsg }}</view> | ||
| 145 | </view> | 141 | </view> |
| 146 | </view> | 142 | </view> |
| 147 | </view> | 143 | </view> |
| ... | @@ -374,6 +370,61 @@ $content-gap: 24rpx; // 统一内容边距 | ... | @@ -374,6 +370,61 @@ $content-gap: 24rpx; // 统一内容边距 |
| 374 | box-sizing: border-box; | 370 | box-sizing: border-box; |
| 375 | } | 371 | } |
| 376 | 372 | ||
| 373 | .h3-padding { | ||
| 374 | padding: 30rpx 30rpx 0; | ||
| 375 | font-size: 30rpx; | ||
| 376 | font-weight: 600; | ||
| 377 | color: #333; | ||
| 378 | } | ||
| 379 | |||
| 380 | .wBox { | ||
| 381 | width: 700rpx; | ||
| 382 | padding: 30rpx; | ||
| 383 | margin: 20rpx auto 0; | ||
| 384 | background: #FFFFFF; | ||
| 385 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | ||
| 386 | border-radius: 15rpx; | ||
| 387 | } | ||
| 388 | |||
| 389 | .stepItem { | ||
| 390 | // display: flex; | ||
| 391 | padding: 16rpx; | ||
| 392 | border-bottom: 1rpx dashed #eee; | ||
| 393 | |||
| 394 | &:last-child { | ||
| 395 | border-bottom: none; | ||
| 396 | } | ||
| 397 | |||
| 398 | .time { | ||
| 399 | width: 80%; | ||
| 400 | font-size: 22rpx; | ||
| 401 | color: #999; | ||
| 402 | flex-shrink: 0; | ||
| 403 | padding-top: 4rpx; | ||
| 404 | } | ||
| 405 | |||
| 406 | .content { | ||
| 407 | flex: 1; | ||
| 408 | |||
| 409 | .status { | ||
| 410 | font-size: 28rpx; | ||
| 411 | font-weight: 600; | ||
| 412 | margin-bottom: 6rpx; | ||
| 413 | } | ||
| 414 | |||
| 415 | .deptName { | ||
| 416 | font-size: 26rpx; | ||
| 417 | color: #666; | ||
| 418 | } | ||
| 419 | |||
| 420 | view { | ||
| 421 | font-size: 24rpx; | ||
| 422 | color: #999; | ||
| 423 | margin-top: 4rpx; | ||
| 424 | } | ||
| 425 | } | ||
| 426 | } | ||
| 427 | |||
| 377 | .card { | 428 | .card { |
| 378 | background: $card-bg; | 429 | background: $card-bg; |
| 379 | border-radius: 16rpx; | 430 | border-radius: 16rpx; |
| ... | @@ -550,68 +601,6 @@ $content-gap: 24rpx; // 统一内容边距 | ... | @@ -550,68 +601,6 @@ $content-gap: 24rpx; // 统一内容边距 |
| 550 | color: $text-placeholder; | 601 | color: $text-placeholder; |
| 551 | } | 602 | } |
| 552 | 603 | ||
| 553 | .audit-list { | ||
| 554 | padding: 0 $content-gap 24rpx; | ||
| 555 | } | ||
| 556 | |||
| 557 | .audit-item { | ||
| 558 | display: flex; | ||
| 559 | padding: 20rpx 0; | ||
| 560 | border-bottom: 1rpx dashed $border-color; | ||
| 561 | |||
| 562 | &:last-child { | ||
| 563 | border-bottom: none; | ||
| 564 | } | ||
| 565 | |||
| 566 | .audit-dot { | ||
| 567 | width: 14rpx; | ||
| 568 | height: 14rpx; | ||
| 569 | border-radius: 50%; | ||
| 570 | margin-top: 8rpx; | ||
| 571 | margin-right: 20rpx; | ||
| 572 | flex-shrink: 0; | ||
| 573 | |||
| 574 | &.pass { | ||
| 575 | background: $success-color; | ||
| 576 | } | ||
| 577 | |||
| 578 | &.fail { | ||
| 579 | background: $danger-color; | ||
| 580 | } | ||
| 581 | } | ||
| 582 | |||
| 583 | .audit-content { | ||
| 584 | flex: 1; | ||
| 585 | padding-right: 8rpx; | ||
| 586 | |||
| 587 | .audit-time { | ||
| 588 | font-size: 24rpx; | ||
| 589 | color: $text-placeholder; | ||
| 590 | margin-bottom: 6rpx; | ||
| 591 | } | ||
| 592 | |||
| 593 | .audit-status { | ||
| 594 | font-size: 28rpx; | ||
| 595 | font-weight: 600; | ||
| 596 | margin-bottom: 6rpx; | ||
| 597 | } | ||
| 598 | |||
| 599 | .audit-dept { | ||
| 600 | font-size: 26rpx; | ||
| 601 | color: $text-secondary; | ||
| 602 | } | ||
| 603 | |||
| 604 | .audit-remark { | ||
| 605 | font-size: 24rpx; | ||
| 606 | color: $text-placeholder; | ||
| 607 | margin-top: 6rpx; | ||
| 608 | padding: 8rpx 12rpx; | ||
| 609 | background: #f8f8f8; | ||
| 610 | border-radius: 8rpx; | ||
| 611 | } | ||
| 612 | } | ||
| 613 | } | ||
| 614 | |||
| 615 | .text-red { | 604 | .text-red { |
| 616 | color: $danger-color !important; | 605 | color: $danger-color !important; |
| 617 | } | 606 | } | ... | ... |
| ... | @@ -45,25 +45,19 @@ | ... | @@ -45,25 +45,19 @@ |
| 45 | </view> | 45 | </view> |
| 46 | 46 | ||
| 47 | <!-- 审核记录 --> | 47 | <!-- 审核记录 --> |
| 48 | <view class="card"> | 48 | <view class="h3-padding">审核记录</view> |
| 49 | <view class="card-header"> | 49 | <view class="wBox"> |
| 50 | <view class="header-left">审核记录</view> | ||
| 51 | </view> | ||
| 52 | |||
| 53 | <view v-if="loadingAudit" class="state-tip">加载中...</view> | 50 | <view v-if="loadingAudit" class="state-tip">加载中...</view> |
| 54 | <view v-else-if="auditList.length === 0" class="state-tip">暂无审核记录</view> | 51 | <view v-else-if="auditList.length === 0" class="state-tip">暂无审核记录</view> |
| 55 | 52 | <view class="stepItem" v-else v-for="(n, index) in auditList" :key="index"> | |
| 56 | <view class="audit-list" v-else> | 53 | <view class="time">{{ parseDateTime(n.auditTime) }}</view> |
| 57 | <view class="audit-item" v-for="(n, index) in auditList" :key="index"> | 54 | <view class="content"> |
| 58 | <view class="audit-dot" :class="n.auditResult == 1 ? 'pass' : 'fail'"></view> | 55 | <view class="status"> |
| 59 | <view class="audit-content"> | 56 | <text v-if="n.auditResult==1" class="text-success">审核通过</text> |
| 60 | <view class="audit-time">{{ parseDateTime(n.auditTime) }}</view> | 57 | <text v-if="n.auditResult==0" class="text-danger">审核拒绝</text> |
| 61 | <view class="audit-status" :class="n.auditResult == 1 ? 'text-green' : 'text-red'"> | ||
| 62 | {{ getAuditResultText(n.auditResult) }} | ||
| 63 | </view> | ||
| 64 | <view class="audit-dept">{{ n.auditDeptName || '——' }}</view> | ||
| 65 | <view class="audit-remark" v-if="n.auditMsg">备注:{{ n.auditMsg }}</view> | ||
| 66 | </view> | 58 | </view> |
| 59 | <view class="deptName">{{ n.auditDeptName || '--' }}</view> | ||
| 60 | <view v-if="n.auditMsg">备注:{{ n.auditMsg }}</view> | ||
| 67 | </view> | 61 | </view> |
| 68 | </view> | 62 | </view> |
| 69 | </view> | 63 | </view> |
| ... | @@ -207,6 +201,61 @@ $content-gap: 24rpx; | ... | @@ -207,6 +201,61 @@ $content-gap: 24rpx; |
| 207 | box-sizing: border-box; | 201 | box-sizing: border-box; |
| 208 | } | 202 | } |
| 209 | 203 | ||
| 204 | .h3-padding { | ||
| 205 | padding: 30rpx 30rpx 0; | ||
| 206 | font-size: 30rpx; | ||
| 207 | font-weight: 600; | ||
| 208 | color: #333; | ||
| 209 | } | ||
| 210 | |||
| 211 | .wBox { | ||
| 212 | width: 700rpx; | ||
| 213 | padding: 30rpx; | ||
| 214 | margin: 20rpx auto 0; | ||
| 215 | background: #FFFFFF; | ||
| 216 | box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1); | ||
| 217 | border-radius: 15rpx; | ||
| 218 | } | ||
| 219 | |||
| 220 | .stepItem { | ||
| 221 | // display: flex; | ||
| 222 | padding: 16rpx; | ||
| 223 | border-bottom: 1rpx dashed #eee; | ||
| 224 | |||
| 225 | &:last-child { | ||
| 226 | border-bottom: none; | ||
| 227 | } | ||
| 228 | |||
| 229 | .time { | ||
| 230 | width: 80%; | ||
| 231 | font-size: 22rpx; | ||
| 232 | color: #999; | ||
| 233 | flex-shrink: 0; | ||
| 234 | padding-top: 4rpx; | ||
| 235 | } | ||
| 236 | |||
| 237 | .content { | ||
| 238 | flex: 1; | ||
| 239 | |||
| 240 | .status { | ||
| 241 | font-size: 28rpx; | ||
| 242 | font-weight: 600; | ||
| 243 | margin-bottom: 6rpx; | ||
| 244 | } | ||
| 245 | |||
| 246 | .deptName { | ||
| 247 | font-size: 26rpx; | ||
| 248 | color: #666; | ||
| 249 | } | ||
| 250 | |||
| 251 | view { | ||
| 252 | font-size: 24rpx; | ||
| 253 | color: #999; | ||
| 254 | margin-top: 4rpx; | ||
| 255 | } | ||
| 256 | } | ||
| 257 | } | ||
| 258 | |||
| 210 | .card { | 259 | .card { |
| 211 | background: $card-bg; | 260 | background: $card-bg; |
| 212 | border-radius: 16rpx; | 261 | border-radius: 16rpx; |
| ... | @@ -314,73 +363,4 @@ $content-gap: 24rpx; | ... | @@ -314,73 +363,4 @@ $content-gap: 24rpx; |
| 314 | color: $primary-color; | 363 | color: $primary-color; |
| 315 | } | 364 | } |
| 316 | 365 | ||
| 317 | .audit-list { | ||
| 318 | padding: 0 $content-gap 24rpx; | ||
| 319 | } | ||
| 320 | |||
| 321 | .audit-item { | ||
| 322 | display: flex; | ||
| 323 | padding: 20rpx 0; | ||
| 324 | border-bottom: 1rpx dashed $border-color; | ||
| 325 | |||
| 326 | &:last-child { | ||
| 327 | border-bottom: none; | ||
| 328 | } | ||
| 329 | |||
| 330 | .audit-dot { | ||
| 331 | width: 14rpx; | ||
| 332 | height: 14rpx; | ||
| 333 | border-radius: 50%; | ||
| 334 | margin-top: 8rpx; | ||
| 335 | margin-right: 20rpx; | ||
| 336 | flex-shrink: 0; | ||
| 337 | |||
| 338 | &.pass { | ||
| 339 | background: $success-color; | ||
| 340 | } | ||
| 341 | |||
| 342 | &.fail { | ||
| 343 | background: $danger-color; | ||
| 344 | } | ||
| 345 | } | ||
| 346 | |||
| 347 | .audit-content { | ||
| 348 | flex: 1; | ||
| 349 | padding-right: 8rpx; | ||
| 350 | |||
| 351 | .audit-time { | ||
| 352 | font-size: 24rpx; | ||
| 353 | color: $text-placeholder; | ||
| 354 | margin-bottom: 6rpx; | ||
| 355 | } | ||
| 356 | |||
| 357 | .audit-status { | ||
| 358 | font-size: 28rpx; | ||
| 359 | font-weight: 600; | ||
| 360 | margin-bottom: 6rpx; | ||
| 361 | } | ||
| 362 | |||
| 363 | .audit-dept { | ||
| 364 | font-size: 26rpx; | ||
| 365 | color: $text-secondary; | ||
| 366 | } | ||
| 367 | |||
| 368 | .audit-remark { | ||
| 369 | font-size: 24rpx; | ||
| 370 | color: $text-placeholder; | ||
| 371 | margin-top: 6rpx; | ||
| 372 | padding: 8rpx 12rpx; | ||
| 373 | background: #f8f8f8; | ||
| 374 | border-radius: 8rpx; | ||
| 375 | } | ||
| 376 | } | ||
| 377 | } | ||
| 378 | |||
| 379 | .text-red { | ||
| 380 | color: $danger-color !important; | ||
| 381 | } | ||
| 382 | |||
| 383 | .text-green { | ||
| 384 | color: $success-color !important; | ||
| 385 | } | ||
| 386 | </style> | 366 | </style> | ... | ... |
-
Please register or sign in to post a comment