JXDS18FUJT 2 жил өмнө
parent
commit
c8d2b66129

+ 37 - 39
src/components/m-wrong-preview/components/bottomBar.vue

@@ -69,27 +69,23 @@ export default defineComponent({
 			switch(props.listType){
 				//本地的错误保存
 				case "localWrong":
-					
-			Dialog.confirm({
-				message: "确认交卷吗?",
+						submitResVisible.value = true
+			trueNum.value =0 
+			falseNum.value =0
+			props.subjectList.forEach((item:any,index)=>{
+				let answers = item.answer.split("-")
+				if(JSON.stringify(answers.sort()) == JSON.stringify(typeof item.userAnswer === 'string' ? [item.userAnswer] : item.userAnswer.sort())){
+						++trueNum.value 
+				}
+				else if(item.userAnswer.length==0){
+					 
+				}
+				else{
+					++falseNum.value
+				}
+				
 			})
-				.then(() => {
-				let wrongSet =	props.subjectList.filter((item:any,index)=>{
-					let answers = item.answer.split("-")
-						return JSON.stringify(answers.sort()) == JSON.stringify(typeof item.userAnswer === 'string' ? [item.userAnswer] : item.userAnswer.sort())
-
-					})
-					window.localStorage.setItem(vehicle+subject,JSON.stringify(wrongSet))
-					
-					
-					
-
-
-				})
-				.catch(() => {
-					console.log(props.subjectList,"props")
-				});
-
+		
 				break;
 				//本地的错误保存
 
@@ -139,26 +135,26 @@ export default defineComponent({
 
 
 		};
-		const showSubmitResVisible = ()=>{
-			submitResVisible.value = true
-			trueNum.value =0 
-			falseNum.value =0
-			props.subjectList.forEach((item:any,index)=>{
-				let answers = item.answer.split("-")
-				if(JSON.stringify(answers.sort()) == JSON.stringify(typeof item.userAnswer === 'string' ? [item.userAnswer] : item.userAnswer.sort())){
-						++trueNum.value 
-				}
-				else if(item.userAnswer.length==0){
+		// const showSubmitResVisible = ()=>{
+		// 	submitResVisible.value = true
+		// 	trueNum.value =0 
+		// 	falseNum.value =0
+		// 	props.subjectList.forEach((item:any,index)=>{
+		// 		let answers = item.answer.split("-")
+		// 		if(JSON.stringify(answers.sort()) == JSON.stringify(typeof item.userAnswer === 'string' ? [item.userAnswer] : item.userAnswer.sort())){
+		// 				++trueNum.value 
+		// 		}
+		// 		else if(item.userAnswer.length==0){
 					 
-				}
-				else{
-					++falseNum.value
-				}
+		// 		}
+		// 		else{
+		// 			++falseNum.value
+		// 		}
 				
-			})
+		// 	})
 
 
-		}
+		// }
 		const wrongReDo = ()=>{
 
 			let wrongSet =	props.subjectList.filter((item:any,index)=>{
@@ -179,8 +175,10 @@ export default defineComponent({
 								_item.status =0	
 							})
 
-					})	
-					window.localStorage.setItem(vehicle+subject,JSON.stringify(wrongSet))
+					})
+					let localVuex = JSON.parse(window.localStorage.getItem('vuex')||'{}')
+					let tempUserWrongKey = localVuex.userData.openid+'_用户临时错题_'+subject
+					window.sessionStorage.setItem(tempUserWrongKey,JSON.stringify(wrongSet))
 					if(wrongSet.length){
 						emit('redo')
 					}
@@ -254,7 +252,7 @@ export default defineComponent({
 
 					<van-tabbar-item
 						onClick={() => {
-							showSubmitResVisible()
+							goWrongPreviewScore()
 						}}
 						v-slots={{
 							icon: () => <m-icon type="jiaojuan" />,

+ 5 - 4
src/components/m-wrong-preview/index.vue

@@ -144,10 +144,11 @@ const showSubjectChangePopup = ref(false);
 //题目展示逻辑
 const { subjectList, currentSubject, currentSubjectIndex, subjectTotal, nextSubject, lastSubject, trueNum, falseNum, isJumpNext, userAnswerChange, addCurrentQuestion, skillsShow, officialShow } = useSubjectShowLogic(props.listType);
 const resetLocalWrong = () => {
-	currentSubjectIndex.value = 0
-	subjectList.value = JSON.parse(window.localStorage.getItem(vehicle+subject))  as any[];
-	subjectTotal.value = subjectList.value.length
-
+	currentSubjectIndex.value = 0;
+	let localVuex = JSON.parse(window.localStorage.getItem("vuex") || "{}");
+	let tempUserWrongKey = localVuex.userData.openid + "_用户临时错题_" + subject;
+	subjectList.value = JSON.parse(window.sessionStorage.getItem(tempUserWrongKey)) as any[];
+	subjectTotal.value = subjectList.value.length;
 };
 //本地的数据
 console.log("本地的currentSubject", currentSubject);

+ 3 - 1
src/hooks/exercise/list.ts

@@ -21,7 +21,9 @@ export const useSubjectList = (type: ExerciseType.ListType) => {
 			});
 		}
 		else if (type == "localWrong") {
-			let wrongSet: [any] = JSON.parse(window.localStorage.getItem(vehicle + subject) || "[]")
+			let localVuex = JSON.parse(window.localStorage.getItem('vuex')||'{}')
+			let tempUserWrongKey = localVuex.userData.openid+'_用户临时错题_'+subject
+			let wrongSet: [any] = JSON.parse(window.sessionStorage.getItem(tempUserWrongKey) || "[]")
 			wrongSet.forEach(item => {
 				item.userAnswer = item.questionType !== 3 ? "" : []
 				item.isTrue = null

+ 37 - 9
src/hooks/exercise/wrong.ts

@@ -6,7 +6,7 @@ import { isArrSubset } from "@/utils/utils";
 import store from "@/store";
 
 /**错题与收藏 */
-export const useSubjectCheck = (currentSubject: ComputedRef<any>, nextSubject: () => Promise<void>, _type?: ExerciseType.ListType) => {
+export const useSubjectCheck = (currentSubject: ComputedRef<Test.QuestionInfo>, nextSubject: () => Promise<void>, _type?: ExerciseType.ListType) => {
 	const trueNum = ref(0); //正确数量
 	const falseNum = ref(0); //错误数量
 	const skillsShow = ref(false); //显示技巧讲解
@@ -17,7 +17,7 @@ export const useSubjectCheck = (currentSubject: ComputedRef<any>, nextSubject: (
 	const {
 		route: { query },
 	} = new RouterBus();
-
+	const subject = query.subject
 	/** 批量新增收藏 */
 	const addsCullection = async (ids: number[]) => {
 		const questionList = ids.map((id) => {
@@ -109,14 +109,42 @@ export const useSubjectCheck = (currentSubject: ComputedRef<any>, nextSubject: (
 		} else {
 
 			falseNum.value++;
+			let localVuex = JSON.parse(window.localStorage.getItem('vuex') || '{}')
+			let userWrongKey = localVuex.userData.openid + '_用户错题id_' + subject
+			let userWrongIds: { id: number, timestamp: number }[] = JSON.parse(window.localStorage.getItem(userWrongKey) || "[]")
+			if (
+				userWrongIds.some(item => {
+					return item.id === currentSubject.value.id
+				})
+			) {
+
+
+			}
+			else{
+				userWrongIds.push({
+					id:currentSubject.value.id,
+					timestamp:+ new Date()
+				})
+			}
+
+
+			// if(userWrongIds.some(item=>{
+			// 	return item.id === currentSubject.value.id
+
+			// }))
+			// else{
+
+			// }
+
+			window.localStorage.setItem(userWrongKey, "[]");
 			//答案错误
-			wrongModel.adds([
-				{
-					carType: query.vehicle as CollectionAndWrongType.CarType,
-					km: query.name as CollectionAndWrongType.Km,
-					questionId: currentSubject.value.id,
-				},
-			]);
+			// wrongModel.adds([
+			// 	{
+			// 		carType: query.vehicle as CollectionAndWrongType.CarType,
+			// 		km: query.name as CollectionAndWrongType.Km,
+			// 		questionId: currentSubject.value.id,
+			// 	},
+			// ]);
 			//类型是错误时候不显示对错
 			_type == "localWrong" ? currentSubject.value.isTrue = null : currentSubject.value.isTrue = false
 			//vip才显示错误解析

+ 44 - 2
src/views/collection/index.vue

@@ -1,16 +1,26 @@
 <template>
 	<div class="collection-box">
-		<van-nav-bar title="错题收藏" left-arrow @click-left="onClickLeft" placeholder> </van-nav-bar>
+		<van-nav-bar title="错题收藏" left-arrow @click-left="onClickLeft" placeholder> </van-nav-bar>
 		<div>
 			<img class="collectionHeader" :src="collectionHeader" />
 		</div>
-		<div  class="choose">
+		<div class="choose">
 			<div @click="goExercise('wrong')" class="choose-img">
 				<span class="choose-text1"> 做错题 </span>
 				<span class="choose-text2"> 共 {{ wrongList.length }} 题 </span>
 				<img class="" :src="wrongBg" />
 				<img class="goArrow" :src="goArrow" />
 				<button @click="clearTopicsWrong" style="color: #498ef5" class="clear">清空错题</button>
+				<button
+					@click.stop="
+						() => {
+							wrongSyncVisible = true;
+						}
+					"
+					style="color: #498ef5; left: 60vw"
+					class="clear">
+					同步错题
+				</button>
 			</div>
 			<div @click="goExercise('collection')" class="choose-img">
 				<span class="choose-text1">收藏题</span>
@@ -18,11 +28,41 @@
 				<img class="" :src="collectionBg" />
 				<img class="goArrow" :src="goArrow" />
 				<button @click="clearTopicsCollection" style="color: #01c18d" class="clear">清空收藏</button>
+				<button
+					@click.stop="
+						() => {
+							collectSyncVisible = true;
+						}
+					"
+					style="color: #01c18d; left: 60vw"
+					class="clear">
+					同步收藏
+				</button>
 			</div>
 		</div>
 		<div class="bottom">
 			<img :src="collectionBottomBg" />
 		</div>
+		<van-popup position="bottom" v-model:show="wrongSyncVisible">
+			<van-picker
+				@cancel="
+					() => {
+						wrongSyncVisible = false;
+					}
+				"
+				
+				:columns="['合并本机和云端错题', '备份本机收藏到错题', '恢复云端收藏到错题']"></van-picker>
+		</van-popup>
+
+		<van-popup position="bottom" v-model:show="collectSyncVisible">
+			<van-picker
+				@cancel="
+					() => {
+						collectSyncVisible = false;
+					}
+				"
+				:columns="['合并本机和云端收藏', '备份本机收藏到云端', '恢复云端收藏到本机']"></van-picker>
+		</van-popup>
 		<!-- <listCom type="wrong"></listCom> -->
 		<!-- <van-swipe ref="swiper" :show-indicators="false" :touchable="false">
       <van-swipe-item> <listCom type="wrong" /> </van-swipe-item>
@@ -186,6 +226,8 @@ const goExercise = (type: string) => {
 };
 const isType = ref(0); //0错题 1收藏
 const swiper = ref();
+const wrongSyncVisible = ref(false);
+const collectSyncVisible = ref(false);
 </script>
 
 <style lang="scss" scoped>

+ 1 - 1
src/views/collectionExerciseRes/index.vue

@@ -17,7 +17,7 @@ import { useRouter } from "vue-router";
 import { Toast } from "vant";
 const router = useRouter();
 const back = useRouter().back;
-const vehicle = useRouter().currentRoute.value.query.vehicle as string; //路由qvehicle参数
+const vehicle = useRouter().currentRoute.value.query.vehicle as string; //路由vehicle参数
 const subject = useRouter().currentRoute.value.query.subject as string; //路由subject参数
 const goWrongPreview = () => {
 	if (window.localStorage.getItem(vehicle + subject) == "" || window.localStorage.getItem(vehicle + subject) == "[]" || !window.localStorage.getItem(vehicle + subject)) {

+ 9 - 8
src/views/mockTest/components/hooks.ts

@@ -150,7 +150,7 @@ const useSubjectCheck = (nextSubject: () => Promise<void>, _type?: ExerciseType.
 	const userAnswerChange = (currentSubject: any) => {
 		console.log(currentSubject, 'currentSubject')
 		try {
-			if (!currentSubject.userAnswer||currentSubject.userAnswer.length==0) {
+			if (!currentSubject.userAnswer || currentSubject.userAnswer.length == 0) {
 				return
 			};
 
@@ -192,20 +192,21 @@ const useSubjectCheck = (nextSubject: () => Promise<void>, _type?: ExerciseType.
 			else {
 				falseNum.value++;
 				if (_type == "wrong") {
-
-					let wrongSet: [any] = JSON.parse(window.localStorage.getItem(vehicle + subject) || "[]") || []
-					currentSubject.userAnswer = currentSubject.questionType==3?[]:''
+					let localVuex = JSON.parse(window.localStorage.getItem('vuex') || '{}')
+					let tempUserWrongKey = localVuex.userData.openid + '_用户临时错题_' + subject
+					let wrongSet: [any] = JSON.parse(window.sessionStorage.getItem(tempUserWrongKey) || "[]") || []
+					currentSubject.userAnswer = currentSubject.questionType == 3 ? [] : ''
 					wrongSet.push(currentSubject)
-					window.localStorage.setItem(vehicle + subject, JSON.stringify(wrongSet) || "[]")
+					window.sessionStorage.setItem(tempUserWrongKey, JSON.stringify(wrongSet) || "[]")
 					console.log(wrongSet)
 					currentSubject.isTrue = null;
 
 				}
 				currentSubject.isTrue = false;
-				if(currentSubject.questionType==3){
+				if (currentSubject.questionType == 3) {
 
-				//错误题目的合集
-				console.log(currentSubject.answer.split("-").sort().toString(),currentSubject.userAnswer.sort().toString());
+					//错误题目的合集
+					console.log(currentSubject.answer.split("-").sort().toString(), currentSubject.userAnswer.sort().toString());
 				}
 
 			}

+ 4 - 2
src/views/mockTest/components/mockTestEnd.vue

@@ -37,9 +37,11 @@ import { useRouter } from "vue-router";
 import { Toast } from "vant";
 const router = useRouter();
 const goWrongPreview = () => {
-	const vehicle = router.currentRoute.value.query.vehicle as string; //路由qvehicle参数
+	const vehicle = router.currentRoute.value.query.vehicle as string; //路由vehicle参数
 	const subject = router.currentRoute.value.query.subject as string; //路由subject参数
-	let list = window.localStorage.getItem(vehicle+subject)
+				let localVuex = JSON.parse(window.localStorage.getItem('vuex')||'{}')
+					let tempUserWrongKey = localVuex.userData.openid+'_用户临时错题_'+subject
+	let list = window.sessionStorage.getItem(tempUserWrongKey)
 	
 	if(list==null){
 		return

+ 4 - 2
src/views/mockTest/index.vue

@@ -9,14 +9,16 @@ import startTest from "./components/startTest.vue";
 import { useRouter } from "vue-router";
 import { ref, reactive } from "vue";
 const router = useRouter();
-const vehicle = useRouter().currentRoute.value.query.vehicle as string; //路由qvehicle参数
+const vehicle = useRouter().currentRoute.value.query.vehicle as string; //路由vehicle参数
 const subject = useRouter().currentRoute.value.query.subject as string; //路由subject参数
 const userTestData = ref({
 	testScores: 0,
 	useTime: 0,
 });
 //清除错题的缓存
-window.localStorage.setItem(vehicle+subject,"[]");
+let localVuex = JSON.parse(window.localStorage.getItem('vuex')||'{}')
+let tempUserWrongKey = localVuex.userData.openid+'_用户临时错题_'+subject
+window.sessionStorage.setItem(tempUserWrongKey,"[]");
 
 const currentComponent = ref<any>(initMockTest);
 const comIndex = ref(0);