scoreApproval.vue 4.13 KB
<template>
	<view>
		<uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem"
			styleType="text" activeColor="#AD181F"></uni-segmented-control>

		<!-- <view v-show="infoList.length>0" class="stat-row">
			<view class="stat-item">费用合计:<text class="red">{{ totalCost.toFixed(2) }}</text></view>
			<view class="stat-item">考试人数:<text class="red">{{ totalNum }}</text></view>
		</view> -->

		<view class="appList">
			<view class="appItem" v-for="item in infoList" :key="item.examId">
				<view @click="goDetail(item)">
					<view class="status">
						<text :class="{
							'text-primary-bg': item.scoreStatus=='1',
							'text-success-bg': item.scoreStatus=='2',
							'text-danger-bg': item.scoreStatus=='3',
							'text-warning-bg': item.scoreStatus=='4'
						}">{{ item.scoreStatusStr }}</text>
					</view>

					<view class="date" v-if="item.status!='0'&&item.submitTime">
						提交时间:{{ item.submitTime }}
					</view>
					<view class="text-primary">{{ item.examCode }}</view>
					<view class="name mt10">{{ item.name }}</view>
					<view class="flexbox">
						<view>
							申请日期
							<view>{{ item.applyTime ? item.applyTime.substring(0, 10) : '--' }}</view>
						</view>
						<view>
							考段考生数
							<view>{{ item.totalNum }}</view>
						</view>
						<view>
							总金额
							<view><text class="text-danger">¥{{ (Number(item.totalAmount) || 0).toFixed(2) }}</text></view>
						</view>
					</view>
					<view class="pp esp">考段日期:{{ item.startTime ? item.startTime.substring(0, 16) : '--' }}{{ item.endTime ? item.endTime.substring(0, 16) : '--' }}</view>
				</view>
				<view class="func" v-if="item.scoreStatus=='1'">
					<button @click="goApproval(item)">审核</button>
				</view>
			</view>
		</view>

		<view class="nodata" v-if="infoList.length==0">
			<image mode="aspectFit" :src="config.baseUrl_api + '/fs/static/nodata.png'"></image>
			<text>暂无数据</text>
		</view>
	</view>
</template>

<script setup>
	import * as api from '@/common/api.js'
	import config from '@/config.js'
	import { ref } from 'vue'
	import { onLoad, onShow } from '@dcloudio/uni-app'

	const app = getApp()

	const statusValues = ['', '1', '2', '3']
	const navs = ref(['全部', '审核中', '审核通过', '审核拒绝'])
	const current = ref(0)
	const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']

	const queryParams = ref({
		status: '',
		pageNum: 1,
		pageSize: 50
	})

	const infoList = ref([])
	const total = ref(0)
	const totalCost = ref(0)
	const totalNum = ref(0)

	onLoad((options) => {
		queryParams.value.type = options.type
		 queryParams.value.auditSelectType = options.type
		if (options.type == '3') {
			uni.setNavigationBarTitle({ title: '段位成绩审核' })
		} else if (options.type == '5') {
			uni.setNavigationBarTitle({ title: '越段成绩审核' })
		}
	})

	onShow(() => {
		if (app.globalData.isLogin) {
			getList()
		} else {
			app.firstLoadCallback = () => { getList() }
		}
	})

	function onClickItem(e) {
		current.value = e.currentIndex
		queryParams.value.scoreStatus = statusValues[e.currentIndex]
		getList()
	}

	function getList() {
		uni.showLoading({ title: '加载中', mask: true })
		totalCost.value = 0
		totalNum.value = 0
		api.examauditList(queryParams.value).then(res => {
			uni.hideLoading()
			infoList.value = res.rows || []
			total.value = res.total || 0
			infoList.value.forEach(item => {
				item.statusStr = statusArr[item.auditStatus] || '审批中'
				totalCost.value += Number(item.totalAmount) || 0
				totalNum.value += Number(item.totalNum) || 0
			})
		}).catch(() => {
			uni.hideLoading()
		})
	}

	function goApproval(item) {
		uni.navigateTo({
			url: `/pages/rank/scoreAudit?ids=${item.examId}&pageType=2`
		})
	}

	function goDetail(item) {
		uni.navigateTo({
			url: `/pages/rank/scoreDetail?examId=${item.examId}&type=${queryParams.value.type}`
		})
	}
</script>

<style lang="scss" scoped>
	.stat-row {
		display: flex;
		gap: 40rpx;
		padding: 20rpx 30rpx;
		background: #fff;
		font-size: 26rpx;
		color: #666;

		.red {
			color: #C4121B;
			font-weight: 600;
		}
	}
</style>