| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 | 
							- <template>
 
- 	<view class="phone-list-page">
 
- 		<view class="icon-title-bjcolor-navBar-box">
 
- 			<view @click="goUpPage" class="nav-bar-icon"></view>
 
- 			<text class="nav-bar-title">考试管理</text>
 
- 		</view>
 
- 		<!-- 考试列表 -->
 
- 		<scroll-view scroll-y="true" refresher-enabled="true" :refresher-triggered="data.loading"
 
- 			:refresher-threshold="50" refresher-background="transparent" @refresherrefresh="onRefresh" @scrolltolower="onScrolltolower"
 
- 			class="phone-scroll-view">
 
- 			<uni-list class="admin-list-box">
 
- 				<uni-list-item v-for="item in data.list" class="admin-list-item-box">
 
- 					<template v-slot:body>
 
- 						<!-- 考试项 -->
 
- 						<view class="item-card-row">
 
- 							<!-- 考试名 + 等级 -->
 
- 							<view class="ks-item-top">
 
- 								<view class="ks-name">{{item.zyName}}</view>
 
- 								<view class="ks-zyLevelName">{{item.zyLevelName}}</view>
 
- 							</view>
 
- 							<!-- 时间 -->
 
- 							<view class="ks-totalTm">
 
- 								<icon class="phone-time-icon" />时间:{{item.totalTm}}分钟
 
- 							</view>
 
- 							<view class="ks-totalTm">
 
- 								<icon class="phone-cishu-icon" />次数:{{item.maxTimes ? item.loseTimes:'不限'}}次
 
- 							</view>
 
- 							<!-- 分数 -->
 
- 							<view class="ks-score-content">
 
- 								<view class="ks-score">
 
- 									<icon class="phone-zongfen-icon" />总分:<text>{{item.ksScore}}</text>
 
- 								</view>
 
- 								<view class="ks-okScore">
 
- 									<icon class="phone-jigefen-icon" />及格分:<text>{{item.okScore}}</text>
 
- 								</view>
 
- 							</view>
 
- 		
 
- 							<button type="primary" size="mini" @click="checkKsXz(item)" v-if="item.status == 1" class="item-view-btn">进行考试</button>
 
- 							<button type="primary" size="mini" @click="checkKsXz(item)" v-if="item.status == 2" class="item-view-btn">进行考试</button>
 
- 							<button type="primary" size="mini" @click="checkKsXz(item)" v-if="item.status == 3" class="item-view-btn">考试中</button>
 
- 						</view>
 
- 					</template>
 
- 				</uni-list-item>
 
- 				<uni-load-more :status="data.state" @click="getMore(0)" :contentText="data.contentText"></uni-load-more>
 
- 			</uni-list>
 
- 		</scroll-view>
 
- 		<!-- 页面底端 -->
 
- 		<customTabbarClientVue></customTabbarClientVue>
 
- 		<!-- 考试须知 -->
 
- 		<kaoshixuzhiVue ref="ksxzRef" @confirm="handleConfirmKs" key="1"></kaoshixuzhiVue>
 
- 		<!-- 身份确认 -->
 
- 		<identificationVue ref="shenfenRef" @confirm="handleConfirmIdent" @changeData="handleChangeIdentification"
 
- 			key="2"></identificationVue>
 
- 	</view>
 
- </template>
 
- <script setup>
 
- 	import customTabbarClientVue from "@/components/custom-tabbar/custom-tabbar-client.vue";
 
- 	import kaoshixuzhiVue from "@/components/kaoshixuzhi/kaoshixuzhi.vue";
 
- 	import identificationVue from "@/components/identification/identification.vue";
 
- 	import {
 
- 		useIdentificationTools
 
- 	} from "./examTools.js"
 
- 	import {
 
- 		ref,
 
- 		reactive
 
- 	} from "vue";
 
- 	import {
 
- 		onLoad,
 
- 		onShow
 
- 	} from "@dcloudio/uni-app";
 
- 	import * as kaoshiApi from "@/api/kaoshi.js";
 
- 	const {
 
- 		saveIdentCache,
 
- 		getIdentCache,
 
- 		removeIdentCache
 
- 	} = useIdentificationTools();
 
- 	const ksxzRef = ref(null);
 
- 	const shenfenRef = ref(null);
 
- 	const activeks = ref(null);
 
- 	const data = reactive({
 
- 		zyName: '', // 职业名称
 
- 		list: [], // 考试列表
 
- 		loading: false,
 
- 		page: 0,
 
- 		size: 8,
 
- 		state: 'more',
 
- 		contentText: {
 
- 			contentdown: '查看更多',
 
- 			contentrefresh: '加载中',
 
- 			contentnomore: '没有更多'
 
- 		},
 
- 		from: ''
 
- 	})
 
- 	
 
- 	function onScrolltolower() {
 
- 		getMore()
 
- 	}
 
- 	function goUpPage() {
 
- 		const pages = getCurrentPages();
 
- 		if (pages.length > 1) {
 
- 			uni.navigateBack()
 
- 		} else {
 
- 			// uni.redirectTo({
 
- 			// 	url: '/pages/client/ShouYe/shouye'
 
- 			// })
 
- 			history.back();
 
- 		}
 
- 	}
 
- 	// 修改身份
 
- 	function handleChangeIdentification() {
 
- 		uni.navigateTo({
 
- 			url: '/pages/client/my/myInfo?from=kaoshiList'
 
- 		})
 
- 	}
 
- 	function handleConfirmIdent(data) {
 
- 		
 
- 		saveIdentCache(activeks.value.ksId, true);
 
- 		ksxzRef.value.showDialog(activeks.value)
 
- 	}
 
- 	function handleConfirmKs(data) {
 
- 		checkKaoshi(data)
 
- 	}
 
- 	function checkKsXz(data) {
 
- 		activeks.value = data;
 
- 		if (data.status == 3) {
 
- 			// 考试中 直接进入考试
 
- 			checkKaoshi(data)
 
- 			return;
 
- 		}
 
- 		const result = getIdentCache(data.ksId);
 
- 		if (result) {
 
- 			ksxzRef.value.showDialog(data)
 
- 		} else {
 
- 			kaoshiApi.getClientUserInfo({
 
- 				ksId: data.ksId
 
- 			}).then(res => {
 
- 				shenfenRef.value.showDialog(res.data);
 
- 			})
 
- 		}
 
- 	}
 
- 	function handleSearch() {
 
- 		data.page = 0;
 
- 		refreshData();
 
- 	}
 
- 	function checkKaoshi(item) {
 
- 		// #ifdef H5
 
- 		history.replaceState({
 
- 			...history.state,
 
- 			newKey: 'newValue'
 
- 		}, '', window.location.href);
 
- 		// #endif
 
- 		uni.navigateTo({
 
- 			url: `/pages/client/Kaoshi/exam?ksId=${item.ksId}&zhuapai=${activeks.value.zhuapai}&userKaozhengId=${activeks.value.userKaozhengId}&from=kaoshiList`
 
- 		})
 
- 	}
 
- 	function onRefresh() {
 
- 		data.page = 0;
 
- 		data.list = [];
 
- 		data.loading = true;
 
- 		refreshData();
 
- 	}
 
- 	function refreshData() {
 
- 		const opt = {
 
- 			page: 1,
 
- 			size: data.size, // 固定查询10条
 
- 			zyName: data.zyName
 
- 		}
 
- 		data.list = [];
 
- 		// 数学
 
- 		data.state = 'loading';
 
- 		data.page++;
 
- 		opt.page = data.page;
 
- 		kaoshiApi.getClientKaoshiList(opt).then(res => {
 
- 			data.list = data.list.concat(res.data.data);
 
- 			data.loading = false;
 
- 			if (res.data.total > data.list.length) {
 
- 				data.state = 'more';
 
- 				data.loading = false;
 
- 			} else {
 
- 				data.state = 'no-more';
 
- 				data.loading = false;
 
- 			}
 
- 		}).catch(err => {
 
- 			data.state = 'more';
 
- 			data.loading = false;
 
- 		})
 
- 	}
 
- 	function getMore() {
 
- 		const opt = {
 
- 			page: 1,
 
- 			size: data.size, // 固定查询10条
 
- 			zyName: data.zyName
 
- 		}
 
- 		if (data.state == 'no-more') return;
 
- 		data.state = 'loading';
 
- 		data.page++;
 
- 		opt.page = data.page;
 
- 		kaoshiApi.getClientKaoshiList(opt).then(res => {
 
- 			data.list = data.list.concat(res.data.data);
 
- 			data.loading = false;
 
- 			if (res.data.total > data.list.length) {
 
- 				data.state = 'more';
 
- 				data.loading = false;
 
- 			} else {
 
- 				data.state = 'no-more';
 
- 				data.loading = false;
 
- 			}
 
- 		}).catch(err => {
 
- 			data.state = 'more';
 
- 			data.loading = false;
 
- 		})
 
- 	}
 
- 	onLoad((options) => {
 
- 		data.from = options.from
 
- 	})
 
- 	onShow(() => {
 
- 		getMore()
 
- 	})
 
- </script>
 
 
  |