wangguoyu 3 nedēļas atpakaļ
vecāks
revīzija
ead22d7e1a

+ 11 - 7
components/questionsChengji/yuedu.vue

@@ -30,6 +30,9 @@
 				</template>
 			</swiper-item>
 		</swiper>
+		<view  class="yuedu-left-jt" @click="handleRight" :class="{disable: swiperDotIndex == 0}"></view>
+		<view  class="yuedu-right-jt" @click="handleLeft" :class="{disable: swiperDotIndex == data.content.length-1}"></view>
+		<view class="button-next-tip" v-if="showTishi">点击左右蓝色箭头,<br/>跳转阅读题上下小题</view>
 	</view>
 </template>
 
@@ -68,9 +71,6 @@ import cacheManager from '../../utils/cacheManager';
 	const showTishi = ref(false);
 
 	watch(() => props.question, (question) => {
-		
-		
-	
 		const danxuanlist = question.danxuan.forEach(item => item.type = 'danxuan')
 		const duoxuanlist = question.duoxuan.forEach(item => item.type = 'duoxuan')
 		const panduanlist = question.panduan.forEach(item => item.type = 'panduan')
@@ -90,7 +90,7 @@ import cacheManager from '../../utils/cacheManager';
 		immediate: true
 	})
 
-	watch(() => {
+	watch(() => props.showTishixinxi,() => {
 		if (props.showTishixinxi) {
 			if (!cacheManager.get('exam-tishi')) {
 				// 首次考试打开提示信息
@@ -108,16 +108,18 @@ import cacheManager from '../../utils/cacheManager';
 	function onSwitchChange(e) {
 		console.log('eeee', e.detail,data.content[e.detail.current])
 		Emits('yudu-change', data.content[e.detail.current])
+		swiperDotIndex.value = e.detail.current
 	}
 	
 	function handleRight() {
+	
 		if (swiperDotIndex.value > 0) {
-			swiperDotIndex.value = swiperDotIndex.value--;
+			swiperDotIndex.value = swiperDotIndex.value-1;
 		}
 	}
 	
 	function handleLeft() {
-		
+			console.log(333)
 		if (props.showTishixinxi) {
 			// 阅读题提示
 			cacheManager.set('exam-tishi', 1)
@@ -125,7 +127,9 @@ import cacheManager from '../../utils/cacheManager';
 		}
 		
 		if (swiperDotIndex.value < data.content.length-1) {
-			swiperDotIndex.value = swiperDotIndex.value++;
+			swiperDotIndex.value = swiperDotIndex.value+1;
 		}
+		
+		console.log('	swiperDotIndex.value',	swiperDotIndex.value,swiperDotIndex.value < data.content.length-1)
 	}
 </script>

+ 2 - 1
manifest.json

@@ -52,7 +52,8 @@
     "mp-weixin" : {
         "appid" : "wx3a4f7c01eb080d14",
         "setting" : {
-            "urlCheck" : false
+            "urlCheck" : false,
+            "minified" : true
         },
         "usingComponents" : true
     },

+ 1 - 1
pages/score/index.vue

@@ -51,7 +51,7 @@ const currentRefreshFn = computed(() =>
 	const lookShijuan = (data) => {
 		console.log('data',data);
 		uni.navigateTo({
-			url: '/pages/score/kaoshiChengjiInfo?hisId=' + data.hisId + '&name=' + data.ksName
+			url: '/pages/score/kaoshiChengjiInfo?hisId=' + data.hisId + '&name=' + data.ksName+ '&userScore=' + data.userScore+ '&ksScore=' + data.ksScore
 		});
 	}
 	const lookPaiming = (data) => {

+ 728 - 0
pages/score/kaoshiChengjiInfo copy.vue

@@ -0,0 +1,728 @@
+<template>
+	<view class="phone-kaoshi-page">
+		<!-- 导航区域 -->
+		<view class="icon-title-navBar-box">
+			<view @click="handleBack" class="nav-bar-icon"></view>
+			<text class="nav-bar-title">{{data.lxName}}</text>
+		</view>
+		<!-- 第一行 -->
+		<view class="kaoshi-page-title">
+			<view v-if="activeSt" class="title-types">{{dlName}}</view>
+			<view>100分钟</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>
+				<template v-if="activeSt.stTypeId == 5">
+					<!-- 简答 -->
+					<jianda :question="activeSt" :key="activeSt.stId"></jianda>
+				</template>
+				<template v-if="activeSt.stTypeId == 6">
+					<!-- 阅读 -->
+					<yuedu :question="activeSt" :key="activeSt.stId" @yudu-change="onYueduChange"></yuedu>
+				</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-white-btn jx-btn" hover-class="none" type="default" size="mini"
+				@click="handleCheckJiexi">解析</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="handleBack" 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-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>
+		<!--
+		// 倒计时
+		<view v-if="!!data.endSecond">
+			<text>考试倒计时:</text>
+			<uni-countdown :show-day="false" :second="1000" @timeup="onTimeUp" :start="startCountDown"></uni-countdown>
+		</view>
+		-->
+		<!-- 答案解析 -->
+		<scoreAndAnswerVue ref="scoreAnswerRef"></scoreAndAnswerVue>
+		<scoreAndAnswerAdminTiankong ref="scoreAnswerTkRef"></scoreAndAnswerAdminTiankong>
+		<scoreAndAnswerAdminJianda ref="scoreAnswerJdRef"></scoreAndAnswerAdminJianda>
+	</view>
+
+
+
+</template>
+
+<script setup>
+	import {
+		ref,
+		reactive,
+		computed,
+		watch
+	} from "vue";
+	import {
+		onLoad
+	} from "@dcloudio/uni-app";
+	import * as lxApi from "@/api/lianxi.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 jianda from "@/components/questions/jianda.vue";
+	import yuedu from "@/components/questions/yuedu.vue";
+	import scoreAndAnswerVue from "@/components/scoreAndAnswer/scoreAndAnswerAdmin.vue";
+	import scoreAndAnswerAdminTiankong from "@/components/scoreAndAnswer/scoreAndAnswerAdminTiankong.vue";
+	import scoreAndAnswerAdminJianda from "@/components/scoreAndAnswer/scoreAndAnswerJianda.vue";
+	import {
+		useQuestionTools
+	} from "@/components/questions/useQuestionTools.js";
+
+	const {
+		checkDanxuanReply,
+		checkDuoxuanReply,
+		checkPanduanReply,
+		checkTiankongReply,
+		getLetterByIndex,
+		checkJiandaReply,
+		checkYueduReply
+	} = useQuestionTools();
+
+	const stTypes = {
+		1: '单选题',
+		2: '多选题',
+		3: '判断题',
+		4: '填空题',
+	}
+
+	const popupRef = ref(null)
+	const scoreAnswerRef = ref(null)
+	const scoreAnswerTkRef = ref(null)
+	const startCountDown = ref(false);
+	const scoreAnswerJdRef = ref(null);
+
+	const data = reactive({
+		lxId: null,
+		lxName: '',
+		stTotal: 0,
+		stScore: 0,
+		biaoji: null,
+		endSecond: 0,
+		pageSize: 0,
+		toggleScreenFlag: 0,
+		toggleScreenSecond: 0,
+		zhuapai: 0,
+		duanluo: [],
+		markDB: [],
+		StListForSearch: [],
+	})
+
+	const yuduIndexQa = ref(null);
+
+	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
+		}
+	});
+
+	onLoad((option) => {
+	//	data.lxId = option.lxId;
+		data.lxId =6;
+		initKaoshi();
+	})
+
+	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';
+				}
+			} else if (qa.stTypeId == 5) {
+				if (checkJiandaReply(qa)) {
+					return 'paragraph-qa-block-done';
+				} else {
+					return 'paragraph-qa-block-init';
+				}
+			} else if (qa.stTypeId == 6) {
+				if (checkYueduReply(qa)) {
+					return 'paragraph-qa-block-done';
+				} else {
+					return 'paragraph-qa-block-init';
+				}
+			}
+		}
+	}
+
+	function skipQuestion(dlIndex, dtIndex) {
+		progress.dlIndex = dlIndex;
+		progress.dtIndex = dtIndex;
+		handlePopupBack()
+		// 切换试题时清空阅读提解析
+		yuduIndexQa.value = null;
+	}
+
+	function answerCardItemClick(qa) {
+		const actQa = data.StListForSearch.find(item => item.stId == qa.stId);
+		skipQuestion(actQa.dlIndex, actQa.dtIndex)
+
+	}
+
+	function handleBack() {
+		uni.redirectTo({
+			url: "/pages/admin/Lianxi/list"
+		})
+	}
+
+	function onTimeUp() {
+		console.log('end')
+	}
+
+	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.num - 1;
+		if (index > 0) {
+			const result = data.StListForSearch[index - 1];
+			progress.dlIndex = result.dlIndex;
+			progress.dtIndex = result.dtIndex
+		}
+		// 切换试题时清空阅读提解析
+		yuduIndexQa.value = null;
+	}
+
+	function handleNext() {
+		const qa = data.StListForSearch.find(item => item.stId == activeSt.value.stId);
+		const index = qa.num - 1;
+		if (index < data.StListForSearch.length) {
+			const result = data.StListForSearch[index + 1];
+			progress.dlIndex = result.dlIndex;
+			progress.dtIndex = result.dtIndex
+		}
+		// 切换试题时清空阅读提解析
+		yuduIndexQa.value = null
+	}
+
+	function formatDuanluoList(dlData) {
+		let uIndex = 0; // 试题num
+		let iDuanluo = 0; // 段落num
+		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 = false;
+				iDanxuan.onlyNum = uIndex + 1;
+				iDanxuan.order = order;
+				iDanxuan.iQa = iQa;
+				iDanxuan.reply = iDanxuan.result;
+				paragraph.qas.push(iDanxuan);
+				uIndex++;
+				order++;
+				iQa++;
+
+				data.StListForSearch.push({
+					stId: iDanxuan.stId,
+					paragraphName: paragraph.name,
+					dlIndex: iDuanluo,
+					dtIndex: iDanxuan.iQa,
+					num: iDanxuan.onlyNum
+				})
+			}
+			order = 0;
+			for (const iDuoxuan of duanluo.duoxuan) {
+				iDuoxuan.type = 'duoxuan';
+				iDuoxuan.marked = false;
+				iDuoxuan.onlyNum = uIndex + 1;
+				iDuoxuan.order = order;
+				paragraph.qas.push(iDuoxuan);
+				iDuoxuan.reply = iDuoxuan.result;
+				iDuoxuan.iQa = iQa;
+				uIndex++;
+				order++;
+				iQa++;
+
+				data.StListForSearch.push({
+					stId: iDuoxuan.stId,
+					paragraphName: paragraph.name,
+					dlIndex: iDuanluo,
+					dtIndex: iDuoxuan.iQa,
+					num: iDuoxuan.onlyNum
+				})
+			}
+			order = 0;
+			for (const iPanduan of duanluo.panduan) {
+				iPanduan.type = 'panduan';
+				iPanduan.marked = false;
+				iPanduan.onlyNum = uIndex + 1;
+				iPanduan.order = order;
+				paragraph.qas.push(iPanduan);
+				iPanduan.reply = iPanduan.result;
+				iPanduan.iQa = iQa;
+				uIndex++;
+				order++;
+				iQa++;
+
+				data.StListForSearch.push({
+					stId: iPanduan.stId,
+					paragraphName: paragraph.name,
+					dlIndex: iDuanluo,
+					dtIndex: iPanduan.iQa,
+					num: iPanduan.onlyNum
+				})
+			}
+			order = 0;
+			for (const iTiankong of duanluo.tiankong) {
+				iTiankong.type = 'tiankong';
+				iTiankong.marked = false;
+				iTiankong.onlyNum = uIndex + 1;
+				iTiankong.order = order;
+				paragraph.qas.push(iTiankong);
+				iTiankong.reply = iTiankong.result.map(item => item[0]);
+				iTiankong.iQa = iQa;
+				uIndex++;
+				order++;
+				iQa++;
+
+				data.StListForSearch.push({
+					stId: iTiankong.stId,
+					paragraphName: paragraph.name,
+					dlIndex: iDuanluo,
+					dtIndex: iTiankong.iQa,
+					num: iTiankong.onlyNum
+				})
+			}
+			order = 0;
+			for (const iJianda of duanluo.jianda) {
+				iJianda.marked = false;
+				iJianda.type = 'jianda';
+				iJianda.onlyNum = uIndex + 1;
+				iJianda.order = order;
+				iJianda.iQa = iQa;
+				paragraph.qas.push(iJianda);
+				iJianda.reply = '';
+				uIndex++;
+				order++;
+				iQa++;
+
+				data.StListForSearch.push({
+					stId: iJianda.stId,
+					paragraphName: paragraph.name,
+					dlIndex: iDuanluo,
+					dtIndex: iJianda.iQa,
+					num: iJianda.onlyNum
+				})
+			}
+			order = 0;
+			for (const iYuedu of duanluo.yuedu) {
+				iYuedu.marked = false;
+				iYuedu.type = 'yuedu';
+				iYuedu.onlyNum = uIndex + 1;
+				iYuedu.order = order;
+				iYuedu.iQa = iQa;
+
+				if (iYuedu.duoxuan && iYuedu.duoxuan.length) {
+					iYuedu.duoxuan.map((qIt) => {
+						qIt.reply = qIt.reply || [];
+						return qIt
+					})
+				}
+
+				if (iYuedu.tiankong && iYuedu.tiankong.length) {
+					iYuedu.tiankong.map((qIt) => {
+						qIt.reply = new Array(qIt.count).fill('');
+						return qIt;
+					});
+				}
+
+				paragraph.qas.push(iYuedu);
+				iYuedu.reply = [];
+				uIndex++;
+				order++;
+				iQa++;
+
+				data.StListForSearch.push({
+					stId: iYuedu.stId,
+					paragraphName: paragraph.name,
+					dlIndex: iDuanluo,
+					dtIndex: iYuedu.iQa,
+					num: iYuedu.onlyNum
+				})
+			}
+
+			iDuanluo++;
+			questionData.value.push(paragraph)
+
+			console.log(questionData.value)
+		}
+	}
+
+	function handleBiaoji() {
+		activeSt.value.marked = !activeSt.value.marked;
+	}
+	// 切换阅读小题时更新当前试题解析
+	function onYueduChange(qa) {
+		yuduIndexQa.value = qa;
+	}
+
+	// 校验阅读解析
+	function checkYueduJiexi() {
+		let qa = yuduIndexQa.value;
+		let score = qa.userScore;
+		let reply = '';
+		let result = '';
+		let answer = qa.answer;
+		if (qa.stTypeId == 1) {
+			// 单选题
+			if (qa.reply && qa.reply.trim() !== '') {
+				reply = getLetterByIndex(qa.reply)
+			} else {
+				reply = '未答'
+			}
+
+			if (qa.result) {
+				result = getLetterByIndex(qa.result)
+			} else {
+				result = '无答案'
+			}
+			scoreAnswerRef.value.showPopup({
+				score,
+				reply,
+				result,
+				answer
+			})
+		}
+		if (qa.stTypeId == 2) {
+			// 多选题
+
+			if (qa.reply && qa.reply.length) {
+				reply = qa.reply.map(item => {
+					if (item.trim()) {
+						return getLetterByIndex(item.trim())
+					}
+				}).join(',')
+			} else {
+				reply = '未答'
+			}
+			if (qa.result) {
+				result = qa.result.map(item => {
+					if (item.trim()) {
+						return getLetterByIndex(item.trim())
+					}
+				}).join(',')
+			} else {
+				result = '无答案'
+			}
+			scoreAnswerRef.value.showPopup({
+				score,
+				reply,
+				result,
+				answer
+			})
+		}
+		if (qa.stTypeId == 3) {
+			// 判断题
+			if (qa.reply === '') {
+				reply = '未答'
+			} else if (qa.reply == 0) {
+				reply = '错误'
+			} else if (qa.reply == 1) {
+				reply = '正确'
+			}
+			if (qa.result == 0) {
+				result = '错误'
+			} else if (qa.result == 1) {
+				result = '正确'
+			}
+			scoreAnswerRef.value.showPopup({
+				score,
+				reply,
+				result,
+				answer
+			})
+		}
+		if (qa.stTypeId == 4) {
+			let reply = qa.reply || [];
+			let result = qa.result || [];
+			// 填空题
+			scoreAnswerTkRef.value.showPopup({
+				score,
+				reply,
+				result,
+				answer
+			})
+		}
+		if (qa.stTypeId == 5) {
+			// 简单题
+			let reply = qa.reply ? '未答' : qa.reply;
+			let result = qa.result;
+			scoreAnswerJdRef.value.showPopup({
+				score,
+				reply,
+				result,
+				answer
+			})
+		}
+
+	}
+
+	// 获取解析
+	function handleCheckJiexi() {
+		const qa = activeSt.value;
+		let score = qa.userScore;
+		let reply = '';
+		let result = '';
+		let answer = qa.answer;
+		if (qa.stTypeId == 1) {
+			// 单选题
+			if (qa.reply && qa.reply.trim() !== '') {
+				reply = getLetterByIndex(qa.reply)
+			} else {
+				reply = '未答'
+			}
+
+			if (qa.result) {
+				result = getLetterByIndex(qa.result)
+			} else {
+				result = '无答案'
+			}
+			scoreAnswerRef.value.showPopup({
+				score,
+				reply,
+				result,
+				answer
+			})
+		}
+		if (qa.stTypeId == 2) {
+			// 多选题
+
+			if (qa.reply && qa.reply.length) {
+				reply = qa.reply.map(item => {
+					if (item.trim()) {
+						return getLetterByIndex(item.trim())
+					}
+				}).join(',')
+			} else {
+				reply = '未答'
+			}
+			if (qa.result) {
+				result = qa.result.map(item => {
+					if (item.trim()) {
+						return getLetterByIndex(item.trim())
+					}
+				}).join(',')
+			} else {
+				result = '无答案'
+			}
+			scoreAnswerRef.value.showPopup({
+				score,
+				reply,
+				result,
+				answer
+			})
+		}
+		if (qa.stTypeId == 3) {
+			// 判断题
+			if (qa.reply === '') {
+				reply = '未答'
+			} else if (qa.reply == 0) {
+				reply = '错误'
+			} else if (qa.reply == 1) {
+				reply = '正确'
+			}
+			if (qa.result == 0) {
+				result = '错误'
+			} else if (qa.result == 1) {
+				result = '正确'
+			}
+			scoreAnswerRef.value.showPopup({
+				score,
+				reply,
+				result,
+				answer
+			})
+		}
+		if (qa.stTypeId == 4) {
+			let reply = qa.reply || [];
+			let result = qa.result || [];
+			// 填空题
+			scoreAnswerTkRef.value.showPopup({
+				score,
+				reply,
+				result,
+				answer
+			})
+		}
+		if (qa.stTypeId == 5) {
+			// 简单题
+			let reply = qa.reply;
+			let result = qa.result;
+			scoreAnswerJdRef.value.showPopup({
+				score,
+				reply,
+				result,
+				answer
+			})
+		}
+		if (qa.stTypeId == 6) {
+			// 简单题
+			checkYueduJiexi()
+		}
+
+	}
+
+	function initKaoshi() {
+		lxApi.getLianxiInfo({
+			lxId: data.lxId
+		}).then(res => {
+			const {
+				lxId,
+				lxName,
+				stTotal,
+				stScore,
+				biaoji,
+				endSecond,
+				pageSize,
+				toggleScreenFlag,
+				toggleScreenSecond,
+				zhuapai,
+				duanluoList
+			} = res.data;
+			data.lxId = lxId;
+			data.lxName = lxName;
+			data.stTotal = stTotal;
+			data.stScore = stScore;
+			data.biaoji = biaoji;
+			data.endSecond = endSecond;
+			data.pageSize = pageSize;
+			data.toggleScreenFlag = toggleScreenFlag;
+			data.toggleScreenSecond = toggleScreenSecond;
+			data.zhuapai = zhuapai;
+			data.duanluo = duanluoList;
+			formatDuanluoList(data.duanluo);
+			startCountDown.value = true;
+			uni.setNavigationBarTitle({
+				title: data.lxName
+			});
+		})
+	}
+</script>

+ 90 - 1
pages/score/kaoshiChengjiInfo.vue

@@ -35,16 +35,46 @@
 				<template v-if="activeSt.stTypeId == 6">
 					<!-- 阅读 -->
 					<yuedu :question="activeSt" :key="activeSt.stId" @yudu-change="onYueduChange"></yuedu>
+					
 				</template>
 			</view>
 
 		</view>
+		<view class="kaoshi-bottom-box">
+			<view @click="showAnswerCard" class="shiti-num-box">
+				<text>
+					{{data.userScore}} / {{data.ksScore}}分
+				</text>
+				<icon class="shiti-num-icon"></icon>
+				<text
+					class="active-num">{{activeSt ? activeSt.onlyNum: 0}}</text>/<text>{{data.StListForSearch.length}}</text>
+			</view>
+		</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>
 		</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-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>
 		<!-- 答案解析 -->
 		<scoreAndAnswerVue ref="scoreAnswerRef"></scoreAndAnswerVue>
 		<scoreAndAnswerAdminTiankong ref="scoreAnswerTkRef"></scoreAndAnswerAdminTiankong>
@@ -106,6 +136,8 @@
 	const data = reactive({
 		hisId: null,
 		name: '',
+		ksScore: '',
+		scoreData: '',
 		stTotal: 0,
 		stScore: 0,
 		biaoji: null,
@@ -168,6 +200,8 @@
 	onLoad((option) => {
 		data.hisId = option.hisId;
 		data.name = option.name;
+		data.userScore = option.userScore;
+		data.ksScore = option.ksScore;
 
 		initKaoshi();
 	})
@@ -175,7 +209,61 @@
 	function onTimeUp() {
 		console.log('end')
 	}
-
+	function answerCardItemClick(qa) {
+		const actQa = data.StListForSearch.find(item => item.stId == qa.stId);
+		skipQuestion(actQa.dlIndex, actQa.dtIndex)
+	
+	}
+	function skipQuestion(dlIndex, dtIndex) {
+		progress.dlIndex = dlIndex;
+		progress.dtIndex = dtIndex;
+		handlePopupBack()
+		// 切换试题时清空阅读提解析
+		yuduIndexQa.value = null;
+	}
+	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';
+				}
+			} else if (qa.stTypeId == 5) {
+				if (checkJiandaReply(qa)) {
+					return 'paragraph-qa-block-done';
+				} else {
+					return 'paragraph-qa-block-init';
+				}
+			} else if (qa.stTypeId == 6) {
+				if (checkYueduReply(qa)) {
+					return 'paragraph-qa-block-done';
+				} else {
+					return 'paragraph-qa-block-init';
+				}
+			}
+		}
+	}
 	function showAnswerCard() {
 		popupRef.value.open('top')
 	}
@@ -201,6 +289,7 @@
 		const index = qa.num - 1;
 		if (index < data.StListForSearch.length) {
 			const result = data.StListForSearch[index + 1];
+			console.log('resultresult',result);
 			progress.dlIndex = result.dlIndex;
 			progress.dtIndex = result.dtIndex
 		}