| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756 | 
							- <template>
 
- 	<view class="phone-kaoshi-page">
 
- 		<!-- 导航区域 -->
 
- 		<view class="icon-title-bjcolor-navBar-box">
 
- 			<view @click="handleBack" class="nav-bar-icon"></view>
 
- 			<text class="nav-bar-title">{{data.ksName}}</text>
 
- 		</view>
 
- 		<!-- 第一行 -->
 
- 		<view class="kaoshi-page-title">
 
- 			<view v-if="activeSt" class="title-types">{{dlName}}</view>
 
- 			<!--  倒计时 -->
 
- 			<view v-if="!!data.endSecond">
 
- 				<uni-countdown :show-day="false" :showHour="true" :showMinute="true" :second="data.endSecond" @timeup="onTimeUp"
 
- 					:start="startCountDown"></uni-countdown>
 
- 			</view>
 
- 		</view>
 
- 		<view class="kaoshi-shiti-content">
 
- 			<!-- 内容区域 -->
 
- 			<!-- 试题区域 -->
 
- 			<view v-if="activeSt">
 
- 				<template v-if="activeSt.stTypeId == 1">
 
- 					<!-- 单选 -->
 
- 					<danxuan :question="activeSt" :key="activeSt.stId"></danxuan>
 
- 				</template>
 
- 				<template v-if="activeSt.stTypeId == 2">
 
- 					<!-- 多选 -->
 
- 					<duoxuan :question="activeSt" :key="activeSt.stId"></duoxuan>
 
- 				</template>
 
- 				<template v-if="activeSt.stTypeId == 3">
 
- 					<!-- 判断 -->
 
- 					<panduan :question="activeSt" :key="activeSt.stId"></panduan>
 
- 				</template>
 
- 				<template v-if="activeSt.stTypeId == 4">
 
- 					<!-- 填空 -->
 
- 					<tiankong :question="activeSt" :key="activeSt.stId"></tiankong>
 
- 				</template>
 
- 			</view>
 
- 		</view>
 
- 		<view class="kaoshi-bottom-box">
 
- 			<button class="phone-green-btn bj-btn" hover-class="none" type="default" size="mini"
 
- 				@click="handleBiaoji">{{activeSt && activeSt.marked ? '取标':'标记'}}</button>
 
- 			<view @click="showAnswerCard" class="shiti-num-box">
 
- 				<icon class="shiti-num-icon"></icon>
 
- 				<text
 
- 					class="active-num">{{activeSt ? activeSt.onlyNum: 0}}</text>/<text>{{data.StListForSearch.length}}</text>
 
- 			</view>
 
- 			<button class="phone-green-btn save-btn" hover-class="none" type="default" size="mini"
 
- 				@click="handleSave(true)">保存</button>
 
- 		</view>
 
- 		<template v-if="activeSt">
 
- 			<button type="default" size="mini" hover-class="none" class="phone-green-btn ks-btn-prev"
 
- 				@click="handlePrev" v-if="!isFistStId">上一题</button>
 
- 			<button type="default" size="mini" hover-class="none" class="phone-green-btn ks-btn-next"
 
- 				@click="handleNext" v-if="!isLastStId">下一题</button>
 
- 			<button type="default" size="mini" hover-class="none" class="phone-green-btn ks-btn-next"
 
- 				@click="handleJiaojuan" v-if="isLastStId">交卷</button>
 
- 		</template>
 
- 		<!-- 答题卡 -->
 
- 		<uni-popup ref="popupRef" background-color="#fff" :animation="false" :is-mask-click="false" :mask-click="false">
 
- 			<view class="answer-card-popup">
 
- 				<view class="icon-title-bjcolor-navBar-box">
 
- 					<view @click="handlePopupBack" class="nav-bar-icon"> </view>
 
- 					<text class="nav-bar-title">答题卡</text>
 
- 				</view>
 
- 				<view class="card-content-box">
 
- 					<view class="answer-card-content" v-for="(paragraph,paragraphIndex) in questionData"
 
- 						:key="paragraphIndex">
 
- 						<view class="paragraph-title">
 
- 							{{paragraph.name}}
 
- 						</view>
 
- 						<view class="paragraph-qa" v-for="(qa,qaIndex) in paragraph.qas" :key="qaIndex"
 
- 							:class="getQaClass(qa)" @click="answerCardItemClick(qa)">{{qa.onlyNum}}
 
- 						</view>
 
- 					</view>
 
- 				</view>
 
- 			</view>
 
- 		</uni-popup>
 
- 		<!-- 摄像头确认 -->
 
- 		<zhuapaiConfirm ref="zhuapaiConfirmRef" @success="zpConfirmSuccess" @error="zpConfirmError" 
 
- 			@cancel="zpConfirmCancel" key="1"></zhuapaiConfirm>
 
- 		<template v-if="data.zhuapai && data.zhuapai > 0">
 
- 			<!-- 抓拍 -->
 
- 			<zhuapaiVue ref="zhuapaiRef" @error="zpError" @success="zpSuccess" key="2" @progress="onProgress"></zhuapaiVue>
 
- 		</template>
 
- 	
 
- 		<!-- 切屏 -->
 
- 		<qiepingVue ref="qiepingRef" @zhuapai="qpZhuapai" @forceSubmit="forceSubmit" @qiepingToast="qiepingToast"
 
- 			key="3"></qiepingVue>
 
- 		<!-- 交卷确认 -->
 
- 		<answerQueren ref="answerQrRef" @confirm="handleQuerenConfirm"></answerQueren>
 
- 		<!-- 考试得分 -->
 
- 		<submitScoreVue ref="subScoreRef" @confirm="handleScoreConfirm" @close="handleScoreClose"></submitScoreVue>
 
- 		
 
- 		<!-- 切屏确认弹窗 -->
 
- 		<qiepingDlVue ref="qiepingDlRef" :content="messageContent" title="注意" okBtn="知道了"></qiepingDlVue>
 
- 	</view>
 
- </template>
 
- <script setup>
 
- 	import {
 
- 		ref,
 
- 		reactive,
 
- 		computed,
 
- 		watch,
 
- 		nextTick
 
- 	} from "vue";
 
- 	import zhuapaiVue from "@/components/zhuapaiConfirm/zhuapai.vue";
 
- 	import qiepingVue from "@/components/zhuapaiConfirm/qieping.vue";
 
- 	import zhuapaiConfirm from "@/components/zhuapaiConfirm/index.vue";
 
- 	import answerQueren from "@/components/zhuapaiConfirm/answerQueren.vue";
 
- 	import submitScoreVue from "@/components/zhuapaiConfirm/submitScore.vue";
 
- 	import {
 
- 		onLoad
 
- 	} from "@dcloudio/uni-app";
 
- 	import * as ksApi from "@/api/kaoshi.js"
 
- 	import danxuan from "@/components/questions/danxuan.vue";
 
- 	import duoxuan from "@/components/questions/duoxuan.vue";
 
- 	import tiankong from "@/components/questions/tiankong.vue";
 
- 	import panduan from "@/components/questions/panduan.vue";
 
- 	import {
 
- 		useQuestionTools
 
- 	} from "@/components/questions/useQuestionTools.js";
 
- 	import {
 
- 		useKaoShiCache
 
- 	} from "./examTools"
 
- 	import qiepingDlVue from "@/components/dialog/qiepingDl.vue";
 
- 	const {
 
- 		checkDanxuanReply,
 
- 		checkDuoxuanReply,
 
- 		checkPanduanReply,
 
- 		checkTiankongReply,
 
- 		getLetterByIndex
 
- 	} = useQuestionTools();
 
- 	const {
 
- 		saveCacheKs,
 
- 		getCacheKs,
 
- 		removeCacheKs
 
- 	} = useKaoShiCache();
 
- 	onLoad((option) => {
 
- 		data.ksId = option.ksId;
 
- 		data.zhuapai = option.zhuapai;
 
- 		data.userKaozhengId = option.userKaozhengId;
 
- 		data.from = option.from;
 
- 		if (data.zhuapai && data.zhuapai != 0) {
 
- 			// 考试前确认摄像头
 
- 			nextTick(() => {
 
- 				initBeforKaoshi();
 
- 			})
 
- 		} else {
 
- 			initKaoshi();
 
- 		}
 
- 	})
 
- 	const popupRef = ref(null)
 
- 	const zhuapaiRef = ref(null)
 
- 	const qiepingRef = ref(null)
 
- 	const zhuapaiConfirmRef = ref(null)
 
- 	const answerQrRef = ref(null);
 
- 	const startCountDown = ref(false);
 
- 	const subScoreRef = ref(null);
 
- 	const messageContent = ref('');
 
- 	const qiepingDlRef = ref(null);
 
- 	
 
- 	const timer1 = ref(null);
 
- 	const data = reactive({
 
- 		ksId: null,
 
- 		operId: null,
 
- 		ksName: '',
 
- 		stTotal: 0,
 
- 		stScore: 0,
 
- 		biaoji: {},
 
- 		endSecond: 0,
 
- 		pageSize: 0,
 
- 		toggleScreenFlag: 0,
 
- 		toggleScreenSecond: 0,
 
- 		zhuapai: 0,
 
- 		duanluo: [],
 
- 		StListForSearch: [],
 
- 		from: '',
 
- 		hisId: '',
 
- 		userKaozhengId: ''
 
- 	})
 
- 	
 
- 	const markDB = ref([]);
 
- 	const questionData = ref([]);
 
- 	const progress = reactive({
 
- 		dlIndex: 0,
 
- 		dtIndex: 0
 
- 	})
 
- 	const dlName = computed(() => {
 
- 		if (data.StListForSearch && activeSt.value) {
 
- 			return data.StListForSearch[activeSt.value.onlyNum - 1].paragraphName
 
- 		} else {
 
- 			return ''
 
- 		}
 
- 	})
 
- 	watch(() => data.duanluo, (newVal) => {
 
- 		// 计算已答试题数量
 
- 	}, {
 
- 		deep: true
 
- 	})
 
- 	const activeSt = computed(() => {
 
- 		if (questionData.value.length) {
 
- 			return questionData.value.length && questionData.value[progress.dlIndex].qas[progress.dtIndex];
 
- 		} else {
 
- 			return null
 
- 		}
 
- 	})
 
- 	const isFistStId = computed(() => {
 
- 		if (data.StListForSearch.length) {
 
- 			return data.StListForSearch[0].stId == activeSt.value.stId
 
- 		} else {
 
- 			return false
 
- 		}
 
- 	});
 
- 	const isLastStId = computed(() => {
 
- 		if (data.StListForSearch.length) {
 
- 			return data.StListForSearch[data.StListForSearch.length - 1].stId == activeSt.value.stId
 
- 		} else {
 
- 			return false
 
- 		}
 
- 	});
 
- 	
 
- 	function handleScoreClose() {
 
- 		handleBack()
 
- 	}
 
- 	
 
- 	// 考试得分相关 start
 
- 	function handleScoreConfirm() {
 
- 		uni.redirectTo({
 
- 			url: `/pages/client/Chengji/ksScoreShijuan?hisId=${data.hisId}&from=kaoshi`
 
- 		})
 
- 	}
 
- 	
 
- 	// 考试得分相关 end
 
- 	
 
- 	// 保存相关
 
- 	function handleSave(showToast) {
 
- 		if (timer1.value) {
 
- 			uni.showToast({
 
- 				title: '请勿连续保存',
 
- 				icon: 'none'
 
- 			})
 
- 			return 
 
- 		}
 
- 		timer1.value = setTimeout(() => {
 
- 			clearTimeout(timer1.value);
 
- 		},10*1000);
 
- 		console.log(questionData.value)
 
- 		
 
- 		const result = []
 
- 		const option = {
 
- 			force: false,
 
- 			operId: data.operId,
 
- 			replyList: []
 
- 		}
 
- 		questionData.value.forEach(dl => {
 
- 			dl.qas.forEach(st => {
 
- 				const opt = {
 
- 					stId: st.stId,
 
- 					reply: st.reply,
 
- 				}
 
- 				result.push(opt)
 
- 				option.replyList.push(opt)
 
- 			})
 
- 		})
 
- 		// 保存试题答案
 
- 		saveCacheKs(data.operId, {replyList:result, position: {dlIndex:progress.dlIndex, dtIndex: progress.dtIndex}})
 
- 		// 保存答题进度
 
- 		ksApi.getClientKsSave(option).then(res => {
 
- 			if (res.data && showToast) {
 
- 				uni.showToast({
 
- 					title: '保存成功',
 
- 				})
 
- 			}
 
- 		})
 
- 	}
 
- 	//  交卷相关功能 start
 
- 	function checkJiaojuan() {
 
- 		const result = []
 
- 		let count = 0;
 
- 		let total = 0;
 
- 		questionData.value.forEach(dl => {
 
- 			dl.qas.forEach(st => {
 
- 				const opt = {
 
- 					stId: st.stId,
 
- 					reply: st.reply,
 
- 					stTypeId: st.stTypeId
 
- 				}
 
- 				result.push(opt)
 
- 			})
 
- 		})
 
- 		result.forEach(item => {
 
- 			total++;
 
- 			if (item.stTypeId == 1 && !checkDanxuanReply(item)) {
 
- 				count++;
 
- 			}
 
- 			if (item.stTypeId == 2 && !checkDuoxuanReply(item)) {
 
- 				count++;
 
- 			}
 
- 			if (item.stTypeId == 3 && !checkPanduanReply(item)) {
 
- 				count++;
 
- 			}
 
- 			if (item.stTypeId == 4 && !checkTiankongReply(item)) {
 
- 				count++;
 
- 			}
 
- 		})
 
- 		return {
 
- 			total,
 
- 			count,
 
- 		}
 
- 	}
 
- 	function handleJiaojuan() {
 
- 		const result = checkJiaojuan()
 
- 		console.log(result)
 
- 		if (result.count) {
 
- 			// 提示
 
- 			answerQrRef.value.showDialog({
 
- 				answercartsCount: result.total - result.count,
 
- 				answercartsTotal: result.total,
 
- 			})
 
- 		} else {
 
- 			handleSubmit()
 
- 		}
 
- 	}
 
- 	function handleQuerenConfirm() {
 
- 		handleSubmit()
 
- 	}
 
- 	
 
- 	function handleSubmit(force = false) {
 
- 		const result = {
 
- 			force,
 
- 			operId: data.operId,
 
- 			replyList: []
 
- 		};
 
- 		console.log(questionData.value)
 
- 		
 
- 		// uni.showLoading({
 
- 		// 	title: '提交中'
 
- 		// })
 
- 		
 
- 		questionData.value.forEach(dl => {
 
- 			dl.qas.forEach(st => {
 
- 				const opt = {
 
- 					stId: st.stId,
 
- 					reply: st.reply
 
- 				}
 
- 				result.replyList.push(opt)
 
- 			})
 
- 		})
 
- 	
 
- 		ksApi.getClientKsSubmit(result).then(res => {
 
- 			if (res.code == 0) {
 
- 				subScoreRef.value.showDialog(res.data);
 
- 				data.hisId = res.data.hisId;
 
- 				// 清空缓存
 
- 				removeCacheKs(data.operId);
 
- 			}
 
- 		}).finally(err => {
 
- 			// uni.hideLoading()
 
- 		})
 
- 	}
 
- 	
 
- 	function onTimeUp() {
 
- 		handleSubmit();
 
- 	}
 
- 	//  交卷相关功能 end
 
- 	// 切屏功能 start
 
- 	function qiepingToast(count) {
 
- 		messageContent.value = `已离开${count}次。${data.toggleScreenFlag}次将自动交卷!`
 
- 		qiepingDlRef.value.handleShow()
 
- 	}
 
- 	function forceSubmit() {
 
- 		// 强制交卷
 
- 		console.log('强制交卷')
 
- 		handleSubmit(true)
 
- 	}
 
- 	function qpZhuapai() {
 
- 		// 重新开启抓拍
 
- 		zhuapaiRef.value && zhuapaiRef.value.showVideoBtn();
 
- 	}
 
- 	// 切屏功能 end
 
- 	// 摄像头抓拍相关功能 start
 
- 	function zpSuccess() {}
 
- 	function zpError() {
 
- 		uni.showToast({
 
- 			title: '抓拍图片异常',
 
- 			icon: 'none'
 
- 		})
 
- 		/* uni.redirectTo({
 
- 			url: '/pages/client/Kaoshi/list'
 
- 		}) */
 
- 		handleBack()
 
- 	}
 
- 	// 摄像头抓拍相关功能 end
 
- 	// 摄像头确认相关功能 start
 
- 	function onProgress() {
 
- 		uni.showToast({
 
- 			icon: 'none',
 
- 			title: '摄像头运行环境异常,请重新进入考试',
 
- 			duration: 8000
 
- 		})
 
- 		handleBack();
 
- 	}
 
- 	function zpConfirmSuccess() {
 
- 		initKaoshi();
 
- 	}
 
- 	function zpConfirmError() {
 
- 		// uni.showToast({
 
- 		// 	title: '摄像头唤起异常',
 
- 		// 	icon: 'none'
 
- 		// })
 
- 		/* uni.redirectTo({
 
- 			url: '/pages/client/Kaoshi/list'
 
- 		}) */
 
- 		handleBack()
 
- 	}
 
- 	function zpConfirmCancel() {
 
- 		/* uni.redirectTo({
 
- 			url: '/pages/client/Kaoshi/list'
 
- 		}) */
 
- 		handleBack()
 
- 	}
 
- 	// 摄像头确认相关功能 end
 
- 	function getQaClass(qa) {
 
- 		if (qa.marked && qa.marked === true) {
 
- 			return 'paragraph-qa-block-mark';
 
- 		} else {
 
- 			if (qa.stTypeId == 1) {
 
- 				if (checkDanxuanReply(qa)) {
 
- 					return 'paragraph-qa-block-done';
 
- 				} else {
 
- 					return 'paragraph-qa-block-init';
 
- 				}
 
- 			} else if (qa.stTypeId == 2) {
 
- 				if (checkDuoxuanReply(qa)) {
 
- 					return 'paragraph-qa-block-done';
 
- 				} else {
 
- 					return 'paragraph-qa-block-init';
 
- 				}
 
- 			} else if (qa.stTypeId == 3) {
 
- 				if (checkPanduanReply(qa)) {
 
- 					return 'paragraph-qa-block-done';
 
- 				} else {
 
- 					return 'paragraph-qa-block-init';
 
- 				}
 
- 			} else if (qa.stTypeId == 4) {
 
- 				if (checkTiankongReply(qa)) {
 
- 					return 'paragraph-qa-block-done';
 
- 				} else {
 
- 					return 'paragraph-qa-block-init';
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	function skipQuestion(dlIndex, dtIndex) {
 
- 		progress.dlIndex = dlIndex;
 
- 		progress.dtIndex = dtIndex;
 
- 		handlePopupBack()
 
- 	}
 
- 	function answerCardItemClick(qa) {
 
- 		const actQa = data.StListForSearch.find(item => item.stId == qa.stId);
 
- 		skipQuestion(actQa.dlIndex, actQa.dtIndex)
 
- 	}
 
- 	function handleBack() {
 
- 		
 
- 		 const pages = getCurrentPages();
 
- 		 if (pages.length>1) {
 
- 			 uni.navigateBack()
 
- 		 } else {
 
- 			 /* if (data.from == 'shouye') {
 
- 			 	uni.redirectTo({
 
- 			 		url: "/pages/client/ShouYe/shouye"
 
- 			 	})
 
- 			 } else if (data.from == 'kaoshiList') {
 
- 			 	uni.redirectTo({
 
- 			 		url: "/pages/client/Kaoshi/list"
 
- 			 	})
 
- 			 } else {
 
- 			 	uni.redirectTo({
 
- 			 		url: "/pages/client/ShouYe/shouye"
 
- 			 	})
 
- 			 } */
 
- 			  history.back();
 
- 		 }
 
- 		
 
- 		
 
- 	}
 
- 	function showAnswerCard() {
 
- 		popupRef.value.open('top')
 
- 	}
 
- 	function handlePopupBack() {
 
- 		popupRef.value.close()
 
- 	}
 
- 	function handlePrev() {
 
- 		const qa = data.StListForSearch.find(item => item.stId == activeSt.value.stId);
 
- 		const index = qa.onlyNum - 1;
 
- 		if (index > 0) {
 
- 			const result = data.StListForSearch[index - 1];
 
- 			progress.dlIndex = result.dlIndex;
 
- 			progress.dtIndex = result.dtIndex
 
- 		}
 
- 	}
 
- 	function handleNext() {
 
- 		const qa = data.StListForSearch.find(item => item.stId == activeSt.value.stId);
 
- 		const index = qa.onlyNum - 1;
 
- 		if (index < data.StListForSearch.length) {
 
- 			const result = data.StListForSearch[index + 1];
 
- 			progress.dlIndex = result.dlIndex;
 
- 			progress.dtIndex = result.dtIndex
 
- 		}
 
- 	}
 
- 	function formatDuanluoList(dlData) {
 
- 		let uIndex = 0; // 试题onlyNum
 
- 		let iDuanluo = 0; // 段落onlyNum
 
- 		let result = [];
 
- 		for (const duanluo of data.duanluo) {
 
- 			let paragraph = {
 
- 				qas: [],
 
- 			};
 
- 			paragraph.name = duanluo.name;
 
- 			let iQa = 0; // 当前试题序号
 
- 			let order = 0; // 当前题型中第几题
 
- 			for (const iDanxuan of duanluo.danxuan) {
 
- 				iDanxuan.type = 'danxuan';
 
- 				iDanxuan.marked = data.biaoji[iDanxuan.stId] ? true: false;
 
- 				iDanxuan.onlyNum = uIndex + 1;
 
- 				iDanxuan.order = order;
 
- 				iDanxuan.iQa = iQa;
 
- 				paragraph.qas.push(iDanxuan);
 
- 				uIndex++;
 
- 				order++;
 
- 				iQa++;
 
- 				data.StListForSearch.push({
 
- 					stId: iDanxuan.stId,
 
- 					paragraphName: paragraph.name,
 
- 					dlIndex: iDuanluo,
 
- 					dtIndex: iDanxuan.iQa,
 
- 					onlyNum: iDanxuan.onlyNum
 
- 				})
 
- 			}
 
- 			order = 0;
 
- 			for (const iDuoxuan of duanluo.duoxuan) {
 
- 				iDuoxuan.type = 'duoxuan';
 
- 				iDuoxuan.marked = data.biaoji[iDuoxuan.stId] ? true: false;
 
- 				iDuoxuan.onlyNum = uIndex + 1;
 
- 				iDuoxuan.order = order;
 
- 				paragraph.qas.push(iDuoxuan);
 
- 				iDuoxuan.iQa = iQa;
 
- 				iDuoxuan.reply = [];
 
- 				uIndex++;
 
- 				order++;
 
- 				iQa++;
 
- 				data.StListForSearch.push({
 
- 					stId: iDuoxuan.stId,
 
- 					paragraphName: paragraph.name,
 
- 					dlIndex: iDuanluo,
 
- 					dtIndex: iDuoxuan.iQa,
 
- 					onlyNum: iDuoxuan.onlyNum
 
- 				})
 
- 			}
 
- 			order = 0;
 
- 			for (const iPanduan of duanluo.panduan) {
 
- 				iPanduan.type = 'panduan';
 
- 				iPanduan.marked = data.biaoji[iPanduan.stId] ? true: false;
 
- 				iPanduan.onlyNum = uIndex + 1;
 
- 				iPanduan.order = order;
 
- 				paragraph.qas.push(iPanduan);
 
- 				iPanduan.iQa = iQa;
 
- 				uIndex++;
 
- 				order++;
 
- 				iQa++;
 
- 				data.StListForSearch.push({
 
- 					stId: iPanduan.stId,
 
- 					paragraphName: paragraph.name,
 
- 					dlIndex: iDuanluo,
 
- 					dtIndex: iPanduan.iQa,
 
- 					onlyNum: iPanduan.onlyNum
 
- 				})
 
- 			}
 
- 			order = 0;
 
- 			for (const iTiankong of duanluo.tiankong) {
 
- 				iTiankong.type = 'tiankong';
 
- 				iTiankong.marked = data.biaoji[iTiankong.stId] ? true: false;
 
- 				iTiankong.onlyNum = uIndex + 1;
 
- 				iTiankong.order = order;
 
- 				paragraph.qas.push(iTiankong);
 
- 				iTiankong.iQa = iQa;
 
- 				iTiankong.reply = new Array(iTiankong.count).fill('');;
 
- 				uIndex++;
 
- 				order++;
 
- 				iQa++;
 
- 				data.StListForSearch.push({
 
- 					stId: iTiankong.stId,
 
- 					paragraphName: paragraph.name,
 
- 					dlIndex: iDuanluo,
 
- 					dtIndex: iTiankong.iQa,
 
- 					onlyNum: iTiankong.onlyNum
 
- 				})
 
- 			}
 
- 			iDuanluo++;
 
- 			questionData.value.push(paragraph)
 
- 			console.log('1', questionData.value)
 
- 			console.log('2', data.StListForSearch)
 
- 		}
 
- 	}
 
- 	function handleBiaoji() {
 
- 		activeSt.value.marked = !activeSt.value.marked;
 
- 		data.biaoji[activeSt.value.stId] = activeSt.value.marked
 
- 		ksApi.getClientKaoshiBiaoji({
 
- 			operId: data.operId,
 
- 			biaoji: JSON.stringify(data.biaoji)
 
- 		}).catch(err => {
 
- 			/* uni.redirectTo({
 
- 				url: '/pages/client/Kaoshi/list'
 
- 			}) */
 
- 			handleBack()
 
- 		})
 
- 	}
 
- 	function formatKaoshiData() {
 
- 		const historyData = getCacheKs(data.operId);
 
- 		if (historyData) {
 
- 			const { replyList ,position } = historyData;
 
- 			if (replyList) {
 
- 				questionData.value.forEach(dl => {
 
- 					dl.qas.forEach(st => {
 
- 						st.reply = replyList.find(item => item.stId == st.stId).reply
 
- 					})
 
- 				})
 
- 			}
 
- 			if (position) {
 
- 				progress.dlIndex = position.dlIndex;
 
- 				progress.dtIndex = position.dtIndex;
 
- 			}
 
- 		
 
- 		}
 
- 	}
 
- 	// 摄像头确认初始化
 
- 	function initBeforKaoshi() {
 
- 		console.log(zhuapaiConfirmRef.value)
 
- 		zhuapaiConfirmRef.value.showDialog()
 
- 	}
 
- 	function initKaoshi() {
 
- 		ksApi.getClientKsStart({
 
- 			ksId: data.ksId,
 
- 			userKaozhengId: data.userKaozhengId
 
- 		}).then(res => {
 
- 			const {
 
- 				ksId,
 
- 				operId,
 
- 				ksName,
 
- 				stTotal,
 
- 				stScore,
 
- 				biaoji,
 
- 				endSecond,
 
- 				pageSize,
 
- 				toggleScreenFlag,
 
- 				toggleScreenSecond,
 
- 				zhuapai,
 
- 				duanluoList
 
- 			} = res.data;
 
- 			data.ksId = ksId;
 
- 			data.operId = operId;
 
- 			data.ksName = ksName;
 
- 			data.stTotal = stTotal;
 
- 			data.stScore = stScore;
 
- 			data.biaoji = biaoji ? JSON.parse(biaoji): {};
 
- 			data.endSecond = endSecond;
 
- 			data.pageSize = pageSize;
 
- 			data.toggleScreenFlag = toggleScreenFlag;
 
- 			data.toggleScreenSecond = toggleScreenSecond;
 
- 			data.zhuapai = zhuapai;
 
- 			data.duanluo = duanluoList;
 
- 			formatDuanluoList(data.duanluo);
 
- 			// 设置缓存
 
- 			formatKaoshiData();
 
- 			// 设置抓拍监听
 
- 			
 
- 			if (data.zhuapai && data.zhuapai > 0) {
 
- 				zhuapaiRef.value.init({
 
- 					zhuapai: zhuapai,
 
- 					operId: operId
 
- 				});
 
- 			}
 
- 			
 
- 			// 设置切屏监听
 
- 			qiepingRef.value.init({
 
- 				zhuapaiFlag: true,
 
- 				toggleScreenFlag: toggleScreenFlag,
 
- 				toggleScreenSecond: toggleScreenSecond,
 
- 				ksId: data.ksId
 
- 			})
 
- 			uni.setNavigationBarTitle({
 
- 				title: data.ksName
 
- 			});
 
- 			startCountDown.value = true;
 
- 		}).catch(err => {
 
-       handleBack()
 
-     })
 
- 	}
 
- </script>
 
 
  |