Merge pull request 'dev-hxf' (#11) from dev-hxf into master

Reviewed-on: #11
pull/12/head
huxiaofeng666 1 year ago
commit a7c7b410d3
  1. 4
      .env.development
  2. 14
      src/components/j-navbar/j-navbar.vue
  3. 49
      src/jtools/api/question.js
  4. 6
      src/jtools/store/question.js
  5. 5
      src/jtools/store/user.js
  6. 22
      src/pages/index/components/Subject1.vue
  7. 69
      src/pages/index/components/Subject2.vue
  8. 13
      src/pages/index/index.vue
  9. 33
      src/pages/questionBank/chapterExercise.vue
  10. 99
      src/pages/questionBank/components/Question.vue
  11. 83
      src/pages/questionBank/examResult.vue
  12. 31
      src/pages/questionBank/practiceExams.vue
  13. 67
      src/pages/questionBank/practiceResult.vue
  14. 59
      src/pages/questionBank/questionBank.vue
  15. 76
      src/pages/questionBank/wrongQuestion.vue
  16. BIN
      src/static/image/index/subject2_bg.png
  17. BIN
      src/static/image/index/vipAds.png

@ -5,7 +5,7 @@ VITE_APP_TITLE = 金武联驾校
VITE_APP_ENV = 'development' VITE_APP_ENV = 'development'
# 金武联驾校/开发环境 # 金武联驾校/开发环境
VITE_APP_BASE_API = 'http://192.168.1.2:8888/' VITE_APP_BASE_API = 'http://118.31.23.45:8888/'
# #
VITE_WEB_BASE_URL = 'http://192.168.1.2:8888/' VITE_WEB_BASE_URL = 'http://118.31.23.45:8888/'

@ -7,7 +7,7 @@
<view class="u-back-text u-line-1 u-m-l-20" v-if="backText" :style="[backTextStyle]">{{ backText || '' }}</view> <view class="u-back-text u-line-1 u-m-l-20" v-if="backText" :style="[backTextStyle]">{{ backText || '' }}</view>
</view> </view>
<slot name="left"></slot> <slot name="left"></slot>
<view class="content fs32 fwb" :style="[{ top: statusBarHeight + 'px' }]"><slot></slot></view> <view class="content fs16" :style="[{ top: statusBarHeight + 'px' }]"><slot></slot></view>
<view class="right"> <view class="right">
<slot name="right"></slot> <slot name="right"></slot>
</view> </view>
@ -109,17 +109,27 @@ export default {
backPath: { backPath: {
type: String, type: String,
default: '' default: ''
},
isDefineBack:{
type:Boolean,
default:false
} }
}, },
methods: { methods: {
goBack() { goBack() {
if(this.isDefineBack){
this.$emit('toBack')
}else{
if(this.backPath) { if(this.backPath) {
this.$tools.routerTo(this.backPath) uni.switchTab({
url:this.backPath
})
} else { } else {
uni.navigateBack(); uni.navigateBack();
} }
} }
} }
}
}; };
</script> </script>

@ -8,3 +8,52 @@ export function queryQuestion(data) {
data, data,
}); });
} }
export function questionCategory(data) {
return request({
url: 'driver-api/tdQuestion/questionCategory',
method: 'POST',
data,
});
}
export function getTestQuestion(data) {
return request({
url: 'driver-api/tdQuestion/getTestQuestion',
method: 'POST',
data,
});
}
export function submitTest(data) {
return request({
url: 'driver-api/tdQuestionTest/testSubmit',
method: 'POST',
data,
});
}
export function testTotal(data) {
return request({
url: 'driver-api/tdQuestionTest/testTotal',
method: 'POST',
data,
});
}
//获取配置
export function querySysConfigList(carTypeId,configKey) {
return request({
url: 'driver-api/tdSysConfigList/querySysConfigList?configKey='+configKey+'&carTypeId='+carTypeId,
method: 'GET',
});
}
//获取项目列表 (考试项目和基础操作)
export function queryProjectList(data) {
return request({
url: 'driver-api/tdTestProject/queryProjectList',
method: 'POST',
data,
});
}

@ -12,6 +12,8 @@ const question = defineStore({
state: () => ({ state: () => ({
currentCartype: storage.get('carType') || '1001', currentCartype: storage.get('carType') || '1001',
orderQuestion: [], //顺序做题 orderQuestion: [], //顺序做题
currentIndex_subject1:0,//科目一索引 顺序做题
currentIndex_subject4:0,//科目四索引 顺序做题
}), }),
actions: { actions: {
@ -26,6 +28,10 @@ const question = defineStore({
} }
}) })
}, },
//获取索引
getCurrentIndex(index,val){
this[`currentIndex_subject${val}`]=index
}
} }
}); });

@ -62,12 +62,11 @@ const useUserStore = defineStore({
storage.remove('userInfo') storage.remove('userInfo')
}, },
// 查询当前用户的vip开通情况 // 查询当前用户的vip开通情况
searchUserVip() { async searchUserVip() {
queryVip({ carTypeId: this.currentCartype,memberId: null, subject:'' }).then(resp => { const resp=await queryVip({ carTypeId: this.currentCartype,memberId: null, subject:'' })
if(resp.code == '0000') { if(resp.code == '0000') {
this.vipOnList = resp.data this.vipOnList = resp.data
} }
})
}, },
// 查询所有的vip // 查询所有的vip
queryVipList() { queryVipList() {

@ -6,7 +6,7 @@
<view class="box-item flex ai-c jc-c"> <view class="box-item flex ai-c jc-c">
<view class="flex jc-c ai-c" style="width: 230rpx;height: 230rpx;background-image: url(../../../static/image/index/green_bg.png);background-size: 100% 100%;"> <view class="flex jc-c ai-c" style="width: 230rpx;height: 230rpx;background-image: url(../../../static/image/index/green_bg.png);background-size: 100% 100%;">
<view class="btn-item flex ai-c jc-c"> <view class="btn-item flex ai-c jc-c">
<view class="text-center cor-fff" style="line-height: 40rpx;" @tap="toAnswer('顺序答题')"> <view class="text-center cor-fff" style="line-height: 40rpx;" @tap="toAnswer('顺序答题',false)">
<view class="fs16">顺序练习</view> <view class="fs16">顺序练习</view>
<text class="fs14">{{rightList.length+wrongList.length}}/{{orderQuestion.length}}</text> <text class="fs14">{{rightList.length+wrongList.length}}/{{orderQuestion.length}}</text>
</view> </view>
@ -35,7 +35,7 @@
<view class="mt5">VIP课程</view> <view class="mt5">VIP课程</view>
</view> </view>
</view> </view>
<view class="wp33 flex ai-c jc-c" @tap="toAnswer('精简500题')"> <view class="wp33 flex ai-c jc-c" @tap="toAnswer('精简500题',true)">
<view class="text-center wp100"> <view class="text-center wp100">
<image style="width: 72rpx;height: 72rpx;margin: 0 auto" <image style="width: 72rpx;height: 72rpx;margin: 0 auto"
src="../../static/image/index/500icon.png"> src="../../static/image/index/500icon.png">
@ -77,7 +77,7 @@
<view style="padding: 0 28rpx;margin-top: 30rpx;" @tap="toClass"> <view style="padding: 0 28rpx;margin-top: 30rpx;" @tap="toClass">
<view class="video-box"> <view class="video-box">
<view class="flex jc-sb ai-c wp100"> <view class="flex jc-sb ai-c wp100">
<text style="color: #05C341;font-size: 36rpx;">{{type==1?'一':'四'}}精品视频课</text> <text style="color: #05C341;font-size: 36rpx;">{{subject==1?'一':'四'}}精品视频课</text>
<text class="cor-666 fs12">全部10节课 ></text> <text class="cor-666 fs12">全部10节课 ></text>
</view> </view>
<view class="flex ai-c mt20"> <view class="flex ai-c mt20">
@ -86,7 +86,7 @@
<u-button :customStyle="{width:'200rpx',height:'66rpx',borderRadius: '33rpx'}" iconColor="#fff" <u-button :customStyle="{width:'200rpx',height:'66rpx',borderRadius: '33rpx'}" iconColor="#fff"
text="去看视频" color="linear-gradient(90deg, #11DF20 0%, #00B74F 100%)" icon="play-circle"> text="去看视频" color="linear-gradient(90deg, #11DF20 0%, #00B74F 100%)" icon="play-circle">
</u-button> </u-button>
<view class="cor-333 fs15 fw600 mt10">{{type==1?'一':'四'}}易错试题</view> <view class="cor-333 fs15 fw600 mt10">{{subject==1?'一':'四'}}易错试题</view>
</view> </view>
</view> </view>
@ -101,14 +101,14 @@
import useQuestionStore from '@/jtools/store/question' //store import useQuestionStore from '@/jtools/store/question' //store
export default { export default {
props:{ props:{
type:{ subject:{
type:[String,Number], type:[String,Number],
} }
}, },
data() { data() {
return { return {
rightList:storage.get('rightList'), rightList:storage.get(`rightList_subject${this.subject}`) || [],
wrongList:storage.get('wrongList'), wrongList:storage.get(`wrongList_subject${this.subject}`) || [],
allQuestionNum:0, allQuestionNum:0,
} }
}, },
@ -134,14 +134,14 @@
url:"/pages/questionBank/baseOperate" url:"/pages/questionBank/baseOperate"
}) })
}, },
toAnswer(title) { toAnswer(title,val) {
uni.navigateTo({ uni.navigateTo({
url:"/pages/questionBank/questionBank?navTitle="+title url:"/pages/questionBank/questionBank?navTitle="+title+"&subject="+this.subject+"&needVip="+val
}) })
}, },
toExams(){ toExams(){
uni.navigateTo({ uni.navigateTo({
url:"/pages/questionBank/practiceExams" url:"/pages/questionBank/practiceExams?subject="+this.subject
}) })
}, },
toExclusive(){ toExclusive(){
@ -151,7 +151,7 @@
}, },
toWrongList(){ toWrongList(){
uni.navigateTo({ uni.navigateTo({
url:"/pages/questionBank/wrongQuestion" url:"/pages/questionBank/wrongQuestion?subject="+this.subject
}) })
} }
} }

@ -1,25 +1,25 @@
<template> <template>
<view> <view>
<view class="box-nav"> <view class="box-nav">
<image style="width: 100%;" src="../../static/image/index/index_bg.png"></image> <image style="width: 100%;" src="../../../static/image/index/index_bg.jpg"></image>
<view style="width: 100%;position: absolute;top: 80px;left: 0;" class="flex jc-c"> <view style="width: 100%;position: absolute;top: 80px;left: 0;" class="flex jc-c">
<image style="width: 694rpx;" mode="widthFix" src="../../../static/image/index/vipAds.png"></image> <image style="width: 694rpx" mode="widthFix" src="../../../static/image/index/subject2_bg.png"></image>
</view> </view>
</view> </view>
<view class="p14lr" style="margin-top: -20px;"> <view class="p14lr" style="margin-top: -20px;">
<view class="video_box"> <view class="video_box">
<view class="flex ai-c jc-sb"> <view class="flex ai-c jc-sb mt5">
<text class="fs18 cor-000">科二考试项目讲解</text> <text class="fs18 cor-000">科二考试项目讲解</text>
<view class="flex ai-c" style="height: 34rpx;line-height: 34rpx;"> <view class="flex ai-c" style="height: 34rpx;line-height: 34rpx;" @tap="changeDiverType">
<text style="color:#05C341;font-size: 16px;">自动挡</text> <text style="color:#05C341;font-size: 16px;">{{diverTypeList[diverTypeIndex].configItemName}}</text>
<u-icon name="list" color="#05C341" size="18"></u-icon> <u-icon name="list" color="#05C341" size="18"></u-icon>
</view> </view>
</view> </view>
<view class="flex ai-c jc-sb mt15"> <view class="flex ai-c jc-sb mt15">
<view class="tab_iem" :class="videoIndex===item.value?'checked_tab':''" v-for="(item,index) of operateList" :key="index" @tap="checkVideo(item.value)">{{item.label}}</view> <view class="tab_iem" :class="videoIndex===item.value?'checked_tab':''" v-for="(item,index) of operateList" :key="index" @tap="checkVideo(index)">{{item.description}}</view>
</view> </view>
<view class="mt15"> <view class="mt15">
<video style="width: 100%;height: 362rpx;border-radius: 16rpx;" id="myVideo" src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/2minute-demo.mp4"></video> <video style="width: 100%;height: 362rpx;border-radius: 16rpx;" id="myVideo" :src="operateList[videoIndex].videoList[0].videoUrl"></video>
</view> </view>
</view> </view>
<view class="video_box mt10"> <view class="video_box mt10">
@ -35,27 +35,56 @@
</template> </template>
<script> <script>
import {
querySysConfigList,
queryProjectList
} from '@/jtools/api/question';
import storage from '@/jtools/storage';
export default { export default {
name: "Subject2", name: "Subject2",
props:{
subject:{
type:[String,Number]
}
},
data(){ data(){
return{ return{
diverTypeIndex:0,
diverTypeList:[],
videoIndex:0, videoIndex:0,
operateList:[{ operateList:[]
label:"侧方停车",
value:0,
},{
label:"倒车入库",
value:1
},{
label:"曲线行驶",
value:2
},{
label:"直角转弯",
value:3
}]
} }
}, },
async mounted(){
await this.getDiverType()
},
methods:{ methods:{
getVideoList(){
console.log('index',this.diverTypeIndex);
console.log(this.diverTypeList[this.diverTypeIndex]);
queryProjectList({
"carTypeId": storage.get('carType') || '1001',
"driveType": this.diverTypeList[this.diverTypeIndex].configItemCode,
"subject": String(this.subject),
"projectId":'1001',
"type": "1"
}).then(resp=>{
this.operateList=resp.data
})
},
getDiverType(){
const carTypeId=storage.get('carType') || '1001'
querySysConfigList(carTypeId,'DriveType').then(resp=>{
if(resp.code==='0000'){
this.diverTypeList=resp.data
this.getVideoList()
}
})
},
changeDiverType(){
this.diverTypeIndex=this.diverTypeIndex==0?1:0
this.getVideoList()
},
checkVideo(val){ checkVideo(val){
this.videoIndex=val this.videoIndex=val
}, },

@ -1,14 +1,14 @@
<template> <template>
<view> <view>
<u-sticky bgColor="#fff"> <u-sticky bgColor="#fff">
<u-tabs :list="categoryList" :scrollable="false" @click="changeCategory"></u-tabs> <u-tabs :list="categoryList" :scrollable="false" @change="changeCategory"></u-tabs>
</u-sticky> </u-sticky>
<view style="height: 100vh;background-color: rgb(245, 245, 245);"> <view style="height: 100vh;background-color: rgb(245, 245, 245);">
<template v-if="tIndex===0 || tIndex===3"> <template v-if="tIndex===0 || tIndex===3">
<Subject1 :type="tIndex+1" /> <Subject1 :subject="tIndex+1" />
</template> </template>
<template v-else> <template v-else>
<subject2 /> <subject2 :subject="tIndex+1" />
</template> </template>
</view> </view>
</view> </view>
@ -40,10 +40,15 @@
onLoad() { onLoad() {
}, },
methods:{ methods:{
...mapActions(useQuestionStore,['getOrderQuestion']),
// //
changeCategory(val){ changeCategory(val){
this.tIndex=val.index this.tIndex=val.index
console.log(this.tIndex); if(this.tIndex==0){
this.getOrderQuestion('1')
}else if(this.tIndex==3){
this.getOrderQuestion('4')
}
}, },
} }
} }

@ -1,30 +1,37 @@
<template> <template>
<view> <view>
<view class="chapter_item p14" v-for="(item,index) of chapterList" :key="index" @tap="toQuestion"> <view class="chapter_item p14" v-for="(item,index) of chapterList" :key="index" @tap="toQuestion(item.configItemCode)">
{{item.label}} {{item.configItemName}}
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import {
querySysConfigList
} from '@/jtools/api/question';
import storage from '@/jtools/storage';
export default { export default {
data() { data() {
return { return {
chapterList:[ chapterList:[]
{label:'驾驶证申请相关'},
{label:'驾驶证申请相关'},
{label:'驾驶证登记处罚'},
{label:'机动车强制报废'},
{label:'其他考点'},
{label:'驾驶证登记处罚'},
{label:'机动车强制报废'},
{label:'其他考点'}]
} }
}, },
onLoad(){
this.getChapterList()
},
methods:{ methods:{
toQuestion(){ getChapterList(){
const carTypeId=storage.get('carType') || '1001'
querySysConfigList(carTypeId,'ChapterOfSubjectOne').then(resp=>{
if(resp.code==='0000'){
this.chapterList=resp.data
}
})
},
toQuestion(code){
uni.navigateTo({ uni.navigateTo({
url:"/pages/questionBank/questionBank?navTitle="+章节技巧 url:"/pages/questionBank/questionBank?navTitle=章节技巧&chapter="+code
}) })
} }
} }

@ -15,6 +15,7 @@
</view> </view>
<view class="flex m14lr ai-c mt20" v-for="(item,index) in quesItem.optionList" <view class="flex m14lr ai-c mt20" v-for="(item,index) in quesItem.optionList"
:key="item.op" @tap="answerQues(item.opValue,index)"> :key="item.op" @tap="answerQues(item.opValue,index)">
<template v-if="item.opDesc">
<template <template
v-if="quesItem.clickAnswer&&quesItem.trueAnswer.includes(item.opValue)"> v-if="quesItem.clickAnswer&&quesItem.trueAnswer.includes(item.opValue)">
<u-icon class="mr15" name="checkmark-circle-fill" color="#05C341" size="32"></u-icon> <u-icon class="mr15" name="checkmark-circle-fill" color="#05C341" size="32"></u-icon>
@ -27,6 +28,7 @@
<view class="option_item">{{item.op}}</view> <view class="option_item">{{item.op}}</view>
</template> </template>
<text class="fs18">{{item.opDesc}}</text> <text class="fs18">{{item.opDesc}}</text>
</template>
</view> </view>
<view class="m14lr mt30" <view class="m14lr mt30"
v-if="quesItem.clickAnswer&&!quesItem.trueAnswer.includes(quesItem.clickAnswer) || tCurrent===1"> v-if="quesItem.clickAnswer&&!quesItem.trueAnswer.includes(quesItem.clickAnswer) || tCurrent===1">
@ -43,7 +45,7 @@
<view style="width: 220rpx;"> <view style="width: 220rpx;">
<button v-if="type==='practice'" class="btn">四步学科一</button> <button v-if="type==='practice'" class="btn">四步学科一</button>
<view v-else class="btn" style="text-align: center;" @tap="submitPaper"> <view v-else class="btn" style="text-align: center;" @tap="submitPaper">
<u-count-down ref="countDown_1" :time="1 * 60 * 60 * 1000" format="HH:mm:ss"></u-count-down> <u-count-down ref="countDown_1" :time=" 1*60*60 * 1000" format="HH:mm:ss" @change="timeChange"></u-count-down>
<text>交卷</text> <text>交卷</text>
</view> </view>
</view> </view>
@ -90,7 +92,7 @@
<text>确认交卷</text> <text>确认交卷</text>
<view class="mt20 flex ai-c jc-sb"> <view class="mt20 flex ai-c jc-sb">
<view class="text-center"> <view class="text-center">
<text style="color:#FF6E02">99</text> <text style="color:#FF6E02">{{questionList.length-rightList.length-wrongList.length}}</text>
<view class="cor-333">未答题数</view> <view class="cor-333">未答题数</view>
</view> </view>
<view class="text-center"> <view class="text-center">
@ -98,7 +100,7 @@
<view>剩余时间</view> <view>剩余时间</view>
</view> </view>
<view class="text-center"> <view class="text-center">
<text style="color:#333">9</text> <text style="color:#333">{{(rightList.length/questionList.length * 100).toFixed(0)}}</text>
<view class="cor-333">考试得分</view> <view class="cor-333">考试得分</view>
</view> </view>
</view> </view>
@ -139,7 +141,7 @@
<text class="cor-666">题板</text> <text class="cor-666">题板</text>
</view> </view>
</view> </view>
<view class="flex ai-c jc-sb p14" style="flex-wrap: wrap;max-height: 400px;overflow-y: scroll;"> <view class="flex ai-c jc-fs p14" style="flex-wrap: wrap;max-height: 400px;overflow-y: scroll;">
<view v-for="(item,index) of questionList" :key="index" style="width:20%;" class="flex ai-c jc-c" @tap="chooseQueston(index)"> <view v-for="(item,index) of questionList" :key="index" style="width:20%;" class="flex ai-c jc-c" @tap="chooseQueston(index)">
<view class="tCircle mb10" :class="{ <view class="tCircle mb10" :class="{
'active':index == topicIndex, 'active':index == topicIndex,
@ -186,7 +188,15 @@
</template> </template>
<script> <script>
import {
mapState,
mapActions
} from 'pinia' //
import storage from '@/jtools/storage'; import storage from '@/jtools/storage';
import useQuestionStore from '@/jtools/store/question' //store
import {
submitTest
} from '@/jtools/api/question';
export default { export default {
props:{ props:{
tabsList:{ tabsList:{
@ -203,6 +213,13 @@ export default {
isShowAll:{ isShowAll:{
type:Boolean, type:Boolean,
default:true default:true
},
subject:{
type:[String,Number],
default:1,
},
navTitle:{
type:String
} }
}, },
data() { data() {
@ -218,19 +235,34 @@ export default {
qIndex:0, qIndex:0,
rightList:[], rightList:[],
wrongList:[], wrongList:[],
collectList:storage.get('collectList') || [], collectList:storage.get(`collectList_subject${this.subject}`) || [],
questionList: [{isCollect:true}],// questionList: [{isCollect:true}],//
swiperList: [], // swiperList: [], //
swiperIndex: 0, // swiperIndex: 0, //
isChange: false, // isChange: false, //
topicIndex: 0, // topicIndex: 0, //
duration: 200, // duration: 200, //
time:0,
} }
}, },
onLoad() {
this.renderSwiper(0) computed: {
...mapState(useQuestionStore, ["currentIndex_subject1","currentIndex_subject2"]) //tagslist
}, },
methods: { methods: {
...mapActions(useQuestionStore,['getCurrentIndex']),
timeChange(e){
this.time=e
if(e.hours==0&&e.minutes==0&&e.seconds==0&&e.milliseconds==0){
uni.showToast({
title:"考试结束,将为您自动交卷~",
icon:'none'
})
setTimeout(()=>{
this.toSubmit()
},1000)
}
},
// //
getRightOp(val){ getRightOp(val){
let rightOp='' let rightOp=''
@ -278,14 +310,29 @@ export default {
}, },
// //
toSubmit(){ toSubmit(){
const restTime=this.time.hours*60*60+this.time.minutes*60+this.time.seconds
const score=(this.rightList.length/this.questionList.length * 100).toFixed(0)
submitTest({
"carTypeId": storage.get('carType') || '1001',
"score": score,
"testTime": 60*60-restTime,
subject:this.subject
}).then(resp=>{
const doNotNum=this.questionList.length-this.rightList.length-this.wrongList.length
const list = JSON.stringify(this.wrongList)
if(resp.code==='0000'){
uni.navigateTo({ uni.navigateTo({
url:"/pages/questionBank/examResult" url:"/pages/questionBank/examResult?doNotNum="+doNotNum+"&wrongList="+list+"&score="+score+"&subject="+this.subject+"&navTitle="+this.navTitle
})
}
}) })
}, },
// //
toResult(){ toResult(){
const allDoNum=this.wrongList.length+this.rightList.length
const list = JSON.stringify(this.wrongList)
uni.navigateTo({ uni.navigateTo({
url:"/pages/questionBank/practiceResult" url:"/pages/questionBank/practiceResult?allDoNum="+allDoNum+"&wrongList="+list+"&subject="+this.subject+"&navTitle="+this.navTitle
}) })
}, },
toCollect(){ toCollect(){
@ -307,7 +354,7 @@ export default {
icon:'none' icon:'none'
}) })
} }
storage.set('collectList',this.collectList) storage.set(`collectList_subject${this.subject}`,this.collectList)
}, },
cancel(){ cancel(){
this.tipShow=false this.tipShow=false
@ -360,6 +407,7 @@ export default {
// //
this.topicIndex--; this.topicIndex--;
} }
this.getCurrentIndex(this.topicIndex,this.subject)
// Vue // Vue
this.swiperIndex = e.detail.current; this.swiperIndex = e.detail.current;
}, },
@ -385,6 +433,8 @@ export default {
// //
pickerTopic(index) { pickerTopic(index) {
this.topicIndex = index; this.topicIndex = index;
this.index=this.topicIndex
this.getCurrentIndex(this.topicIndex,this.subject)
this.renderSwiper(index); this.renderSwiper(index);
}, },
isArrEqual(arr1, arr2){ isArrEqual(arr1, arr2){
@ -392,8 +442,8 @@ export default {
}, },
// //
answerQues(op, index) { answerQues(op, index) {
const falseList =storage.get('wrongList') || [] const falseList =storage.get(`wrongList_subject${this.subject}`) || []
const trueList =storage.get('rightList') || [] const trueList =storage.get(`rightList_subject${this.subject}`) || []
if (!this.questionList[this.topicIndex].clickAnswer) { if (!this.questionList[this.topicIndex].clickAnswer) {
this.questionList[this.topicIndex].optionList[index].chooseOption =`${this.questionList[this.topicIndex].optionList[index].chooseOption?this.questionList[this.topicIndex].optionList[index].chooseOption:''}${op}` this.questionList[this.topicIndex].optionList[index].chooseOption =`${this.questionList[this.topicIndex].optionList[index].chooseOption?this.questionList[this.topicIndex].optionList[index].chooseOption:''}${op}`
this.questionList[this.topicIndex].clickAnswer = `${this.questionList[this.topicIndex].optionList[index].clickAnswer?this.questionList[this.topicIndex].optionList[index].clickAnswer:''}${op}` this.questionList[this.topicIndex].clickAnswer = `${this.questionList[this.topicIndex].optionList[index].clickAnswer?this.questionList[this.topicIndex].optionList[index].clickAnswer:''}${op}`
@ -402,12 +452,14 @@ export default {
const arr1=this.questionList[this.topicIndex].clickAnswer.split('') const arr1=this.questionList[this.topicIndex].clickAnswer.split('')
const arr2=this.questionList[this.topicIndex].trueAnswer.split('') const arr2=this.questionList[this.topicIndex].trueAnswer.split('')
if(this.isArrEqual(arr1,arr2)){ if(this.isArrEqual(arr1,arr2)){
//IDPush()
//
if(!this.rightList.includes(this.questionList[this.topicIndex].questionId)){ if(!this.rightList.includes(this.questionList[this.topicIndex].questionId)){
this.rightList.push(this.questionList[this.topicIndex].questionId) this.rightList.push(this.questionList[this.topicIndex].questionId)
} }
if(!trueList.includes(this.questionList[this.topicIndex].questionId)){ if(!trueList.includes(this.questionList[this.topicIndex].questionId)){
trueList.push(this.questionList[this.topicIndex].questionId) trueList.push(this.questionList[this.topicIndex].questionId)
storage.set('rightList',trueList) storage.set(`rightList_subject${this.subject}`,trueList)
} }
if(this.wrongList.includes(this.questionList[this.topicIndex].questionId)){ if(this.wrongList.includes(this.questionList[this.topicIndex].questionId)){
const wIndex=this.wrongList.indexOf(this.questionList[this.topicIndex].questionId) const wIndex=this.wrongList.indexOf(this.questionList[this.topicIndex].questionId)
@ -416,8 +468,9 @@ export default {
if(falseList.includes(this.questionList[this.topicIndex].questionId)){ if(falseList.includes(this.questionList[this.topicIndex].questionId)){
const wIndex=falseList.indexOf(this.questionList[this.topicIndex].questionId) const wIndex=falseList.indexOf(this.questionList[this.topicIndex].questionId)
falseList.splice(wIndex,1) falseList.splice(wIndex,1)
storage.set('wrongList',falseList) storage.set(`wrongList_subject${this.subject}`,falseList)
} }
//
if(this.topicIndex<this.questionList.length-1){ if(this.topicIndex<this.questionList.length-1){
this.topicIndex ++; this.topicIndex ++;
this.qIndex=this.topicIndex this.qIndex=this.topicIndex
@ -443,12 +496,12 @@ export default {
} }
if(!falseList.includes(this.questionList[this.topicIndex].questionId)){ if(!falseList.includes(this.questionList[this.topicIndex].questionId)){
falseList.push(this.questionList[this.topicIndex].questionId) falseList.push(this.questionList[this.topicIndex].questionId)
storage.set('wrongList',falseList) storage.set(`wrongList_subject${this.subject}`,falseList)
} }
if(trueList.includes(this.questionList[this.topicIndex].questionId)){ if(trueList.includes(this.questionList[this.topicIndex].questionId)){
const rIndex=trueList.indexOf(this.questionList[this.topicIndex].questionId) const rIndex=trueList.indexOf(this.questionList[this.topicIndex].questionId)
trueList.splice(rIndex,1) trueList.splice(rIndex,1)
storage.set('wrongList',trueList) storage.set(`rightList_subject${this.subject}`,trueList)
} }
} }
} }
@ -459,17 +512,23 @@ export default {
this.renderSwiper(0) this.renderSwiper(0)
}, },
getQuestionList(val) { getQuestionList(val) {
console.log(val); const arr = JSON.parse(val)
this.questionList=val.map(item=>{ this.questionList=[]
arr.forEach(item=>{
let isCollect=false let isCollect=false
if(this.collectList.includes(item.questionId)){ if(this.collectList.includes(item.questionId)){
isCollect=true isCollect=true
} }
return { this.questionList.push({
isCollect:isCollect, isCollect:isCollect,
...item ...item
}
}) })
})
if(this.navTitle==='顺序答题'){
this.pickerTopic(this[`currentIndex_subject${this.subject}`])
}else{
this.renderSwiper(0)
}
} }
} }
} }

@ -1,23 +1,24 @@
<template> <template>
<view> <view>
<!-- <u-navbar title="本次成绩" @rightClick="rightClick" :autoBack="true"></u-navbar> --> <!-- <u-navbar title="本次成绩" @rightClick="rightClick" :autoBack="true"></u-navbar> -->
<j-navbar>本次成绩</j-navbar> <j-navbar backPath="/pages/index/index">本次成绩</j-navbar>
<view class="p14 wp100"> <view class="p14 wp100">
<GradesChart color="#FF6E02" titleName="32分" :actualValue="0.32" /> <GradesChart color="#FF6E02" :titleName="score+'分'" :actualValue="Number(scorePrecent)" />
<view class="top_box flex jc-c" style="flex-direction: column;"> <view class="top_box flex jc-c" style="flex-direction: column;">
<view class="wp100 text-center" style="margin-top: -153rpx;"> <view class="wp100 text-center" style="margin-top: -153rpx;">
<text>太棒了正确率很高了</text> <text v-if="score>=90">太棒了正确率很高了</text>
<text v-else>很遗憾考试不及格</text>
<button class="centerBtn">马上提分</button> <button class="centerBtn">马上提分</button>
<view class="flex ai-c jc-c"> <view class="flex ai-c jc-c mt10">
<view class="text-center wp33"> <view class="text-center wp33">
<view>99</view> <view>{{doNotNum}}</view>
<text>未做题</text> <text>未做题</text>
</view> </view>
<view class="text-center wp33"> <view class="text-center wp33" @tap="toQuestionBank">
<view>12</view> <view>{{wrongList.length}}</view>
<text>看错题</text> <text>看错题</text>
</view> </view>
<view class="text-center wp33 flex jc-c ai-c" style="flex-direction: column;"> <view class="text-center wp33 flex jc-c ai-c" style="flex-direction: column;" @tap="toExams">
<u-icon name="edit-pen" size="28"></u-icon> <u-icon name="edit-pen" size="28"></u-icon>
<text>重新考试</text> <text>重新考试</text>
</view> </view>
@ -39,18 +40,31 @@
<text style="color: #00B74F;position: absolute;right:33px;top:-13px">及格线</text> <text style="color: #00B74F;position: absolute;right:33px;top:-13px">及格线</text>
</view> </view>
</view> </view>
<view class="wp100 text-center bc-fff pb10">
<text>近五次模考成绩</text>
</view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import GradesChart from "./components/GradesChart.vue" import GradesChart from "./components/GradesChart.vue"
import storage from '@/jtools/storage';
import {
testTotal
} from '@/jtools/api/question';
export default { export default {
components: { components: {
GradesChart GradesChart
}, },
data() { data() {
return { return {
navTitle:"模拟考试",
subject:1,
doNotNum:0,
wrongList:undefined,
score:0,
scorePrecent:0,
chartData: {}, chartData: {},
// config-ucharts.js ['line'] opts opts // config-ucharts.js ['line'] opts opts
opts: { opts: {
@ -84,27 +98,65 @@
} }
}; };
}, },
onLoad(op){
if(op.doNotNum){
this.doNotNum=op.doNotNum
}
if(op.wrongList){
this.wrongList=JSON.parse(op.wrongList) || []
}
if(op.score){
this.score=op.score
this.scorePrecent=(this.score/100).toFixed(2)
}
if(op.subject){
this.subject=op.subject
}
if(op.navTitle){
this.navTitle=op.navTitle
}
},
onReady() { onReady() {
this.getServerData(); this.getServerData();
}, },
methods: { methods: {
getServerData() { getServerData() {
// testTotal({
setTimeout(() => { "carTypeId": storage.get('carType') || '1001',
// "subject": this.subject
}).then(resp=>{
if(resp.code==='0000'){
if(resp.data&&resp.data.recentTestList&&resp.data.recentTestList.length){
const scoreList =resp.data.recentTestList.map(item=>{
return item.score
})
let res = { let res = {
categories: ["2018","2019","2020","2021","2022","2023"], categories: ["第一次","第二次","第三次","第四次","第五次"],
series: [{ series: [{
name: "", name: "",
data: [90] data: scoreList
}, },
] ]
}; };
this.chartData = JSON.parse(JSON.stringify(res)); this.chartData = JSON.parse(JSON.stringify(res));
}, 500);
},
} }
} }
})
},
toQuestionBank(){
const list =JSON.stringify(this.wrongList)
uni.navigateTo({
url:"/pages/questionBank/questionBank?navTitle=错题&subject="+this.subject+"&questionList="+list
})
},
//
toExams(){
uni.navigateTo({
url:"/pages/questionBank/practiceExams?subject="+this.subject
})
},
},
}
</script> </script>
<style scoped> <style scoped>
@ -118,6 +170,7 @@
width: 349rpx; width: 349rpx;
height: 76rpx; height: 76rpx;
background: #DEEFE5; background: #DEEFE5;
border:none;
border-radius: 38rpx; border-radius: 38rpx;
line-height: 76rpx; line-height: 76rpx;
text-align: center; text-align: center;

@ -2,17 +2,16 @@
<view> <view>
<!-- <u-navbar title="模拟考试" @rightClick="rightClick" :autoBack="true"> <!-- <u-navbar title="模拟考试" @rightClick="rightClick" :autoBack="true">
</u-navbar> --> </u-navbar> -->
<j-navbar>模拟考试</j-navbar> <j-navbar :isDefineBack="true" @toBack="toBack">模拟考试</j-navbar>
<Question :tabsList="tabsList" v-model:isSubmit="isSubmit" type="exam" /> <Question ref="question" :tabsList="tabsList" v-model:isSubmit="isSubmit" type="exam" :subject="subject" navTitle="模拟考试" />
</view> </view>
</template> </template>
<script> <script>
import { import {
mapState, getTestQuestion
mapActions } from '@/jtools/api/question';
} from 'pinia' // import storage from '@/jtools/storage';
import useQuestionStore from '@/jtools/store/question' //store
import Question from './components/Question.vue'; import Question from './components/Question.vue';
export default { export default {
components: { components: {
@ -20,6 +19,7 @@
}, },
data() { data() {
return { return {
subject:1,
isSubmit:false, isSubmit:false,
tabsList:[{ tabsList:[{
label:"模拟考试", label:"模拟考试",
@ -30,15 +30,24 @@
}] }]
} }
}, },
onLoad() { onLoad(op) {
console.log(this.orderQuestionList); if(op.subject){
this.subject=op.subject
getTestQuestion({
carTypeId: storage.get('carType') || '1001',
subject: this.subject
}).then(resp=>{
if(resp.code==='0000'){
this.$refs.question.getQuestionList(JSON.stringify(resp.data))
}
})
}
}, },
computed: { computed: {
...mapState(useQuestionStore, ["orderQuestionList"]) //tagslist
}, },
methods: { methods: {
rightClick() { toBack(){
console.log('返回'); this.$refs.question.submitPaper()
} }
} }
} }

@ -1,18 +1,18 @@
<template> <template>
<view> <view>
<!-- <u-navbar title="本次练题结果" @rightClick="rightClick" :autoBack="true"></u-navbar>--> <!-- <u-navbar title="本次练题结果" @rightClick="rightClick" :autoBack="true"></u-navbar>-->
<j-navbar>本次练题结果</j-navbar> <j-navbar backPath="/pages/index/index">本次练题结果</j-navbar>
<view class="p14 wp100"> <view class="p14 wp100">
<GradesChart /> <GradesChart :titleName="rightPencentDesc" :actualValue="Number(rightPencent)" />
<view class="top_box flex jc-c" style="flex-direction: column;"> <view class="top_box flex jc-c" style="flex-direction: column;">
<view class="wp100 text-center" > <view class="wp100 text-center" >
<text>太棒了正确率很高了</text> <text>太棒了正确率很高了</text>
<view class="flex ai-c jc-c mt10"> <view class="flex ai-c jc-c mt10">
<view class="text-center wp50"> <view class="text-center wp50" @tap="toQuestionBank">
<view>1/3</view> <view>{{wrongList.length}}/{{allDoNum}}</view>
<text>本次错题</text> <text>本次错题</text>
</view> </view>
<view class="text-center wp50 flex jc-c ai-c" style="flex-direction: column;"> <view class="text-center wp50 flex jc-c ai-c" style="flex-direction: column;" @tap="toContiune">
<u-icon name="file-text" size="28"></u-icon> <u-icon name="file-text" size="28"></u-icon>
<text>继续做题</text> <text>继续做题</text>
</view> </view>
@ -27,10 +27,10 @@
<text class="fs18 cor-000 fw600">累计练题</text> <text class="fs18 cor-000 fw600">累计练题</text>
<text class="fs14 cor-666 ml10">33</text> <text class="fs14 cor-666 ml10">33</text>
</view> </view>
<text class="fs14 cor-666">未做题2311</text> <text class="fs14 cor-666">未做题{{getNotDoNum}}</text>
</view> </view>
<view class="mt10"> <view class="mt10">
<u-line-progress :percentage="20" activeColor="#05C341" height="16"></u-line-progress> <u-line-progress :percentage="percent" activeColor="#05C341" height="16"></u-line-progress>
</view> </view>
<view class="p14 mt10 flex ai-c jc-sb" style="border-radius: 20rpx;background-color: rgb(253,249,238);"> <view class="p14 mt10 flex ai-c jc-sb" style="border-radius: 20rpx;background-color: rgb(253,249,238);">
<view> <view>
@ -47,6 +47,12 @@
</template> </template>
<script> <script>
import {
mapState,
mapActions
} from 'pinia' //
import storage from '@/jtools/storage';
import useQuestionStore from '@/jtools/store/question' //store
import GradesChart from "./components/GradesChart.vue" import GradesChart from "./components/GradesChart.vue"
export default { export default {
components: { components: {
@ -54,11 +60,54 @@
}, },
data() { data() {
return { return {
rightPencent:0,
rightPencentDesc:'',
allDoNum:0,
wrongList:[],
subject:1,
allRightList:[],
allWrongList:[],
percent:undefined,
navTitle:'顺序练习',
}
},
onLoad(op){
if(op.allDoNum){
this.allDoNum=op.allDoNum
}
if(op.navTitle){
this.navTitle=op.navTitle
}
if(op.wrongList){
this.wrongList=JSON.parse(op.wrongList)
this.rightPencent=((this.allDoNum-this.wrongList.length)/this.allDoNum).toFixed(2)
this.rightPencentDesc=(this.rightPencent*100).toFixed(0)+'%'
}
if(op.subject){
this.subject=op.subject
this.allRightList=storage.get(`rightList_subject${this.subject}`) || []
this.allWrongList=storage.get(`wrongList_subject${this.subject}`) || []
this.percent=(((this.allRightList.length+this.wrongList.length) / this.orderQuestion.length)*100).toFixed(0)
}
},
computed: {
...mapState(useQuestionStore, ["orderQuestion"]), //tagslist
getNotDoNum(){
return this.orderQuestion.length-(this.allRightList.length+this.allWrongList.length)
} }
}, },
methods: { methods: {
toQuestionBank(){
const list =JSON.stringify(this.wrongList)
uni.navigateTo({
url:"/pages/questionBank/questionBank?navTitle=错题&subject="+this.subject+"&questionList="+list
})
},
toContiune(){
uni.navigateTo({
url:"/pages/questionBank/questionBank?navTitle="+this.navTitle+"&subject="+this.subject
})
}
} }
} }
</script> </script>

@ -3,7 +3,7 @@
<!-- <u-navbar :title="navTitle" @rightClick="rightClick" :autoBack="true"> <!-- <u-navbar :title="navTitle" @rightClick="rightClick" :autoBack="true">
</u-navbar> --> </u-navbar> -->
<j-navbar>{{navTitle}}</j-navbar> <j-navbar>{{navTitle}}</j-navbar>
<Question ref="question" :tabsList="tabsList" :isShowAll="true"></Question> <Question ref="question" :tabsList="tabsList" :isShowAll="isShowAll" :subject="subject" :navTitle="navTitle"></Question>
</view> </view>
</template> </template>
@ -13,13 +13,21 @@
mapActions mapActions
} from 'pinia' // } from 'pinia' //
import useQuestionStore from '@/jtools/store/question' //store import useQuestionStore from '@/jtools/store/question' //store
import useUserStore from '@/jtools/store/user'
import Question from './components/Question.vue'; import Question from './components/Question.vue';
import {
queryQuestion
} from '@/jtools/api/question';
import storage from '@/jtools/storage';
export default { export default {
components: { components: {
Question Question
}, },
data() { data() {
return { return {
isShowAll:true,
needVip:false,
subject:1,
navTitle:'', navTitle:'',
tabsList:[{ tabsList:[{
label:"答题", label:"答题",
@ -31,19 +39,60 @@
questionArr:[] questionArr:[]
} }
}, },
onLoad(op) { async onLoad(op) {
if(op.needVip){
this.needVip=op.needVip
}
if(op&&op.navTitle){ if(op&&op.navTitle){
this.navTitle=op.navTitle this.navTitle=op.navTitle
if(this.navTitle==='顺序答题'){ const param={}
if(this.navTitle==='顺序答题'||this.navTitle==='精简500题'){
this.questionArr=[...this.orderQuestion] this.questionArr=[...this.orderQuestion]
this.$refs.question.getQuestionList(this.questionArr) if(this.needVip==='true'){
if(this.token){
await this.searchUserVip()
const res=this.vipOnList.some(item=>item.subject==this.subject)
if(!res){
this.questionArr=this.questionArr.slice(0,3)
this.isShowAll=false
}
}else{
uni.redirectTo({
url: '/pages/login/login'
});
}
}
this.$refs.question.getQuestionList(JSON.stringify(this.questionArr))
}else{
if(this.navTitle==='错题本'){
param.questionIdList=storage.get(`wrongList_subject${this.subject}`) || []
}else if(this.navTitle==='收藏夹'){
param.questionIdList=storage.get(`collectList_subject${this.subject}`) || []
}
if(op.questionList){
param.questionIdList=JSON.parse(op.questionList)
}
if(op.chapter){
param.chapter=op.chapter
}
queryQuestion(param).then(res => {
if (res.code == '0000') {
this.questionArr = res.data
this.$refs.question.getQuestionList(JSON.stringify(this.questionArr))
}
})
}
} }
if(op.subject){
this.subject=op.subject
} }
}, },
computed: { computed: {
...mapState(useQuestionStore, ["orderQuestion"]) //tagslist ...mapState(useQuestionStore, ["orderQuestion"]) ,//tagslist
...mapState(useUserStore, ["vipOnList","token"])
}, },
methods: { methods: {
...mapActions(useUserStore,['searchUserVip']),
rightClick() { rightClick() {
console.log('返回'); console.log('返回');
}, },

@ -17,7 +17,7 @@
<view class="total_box mt10"> <view class="total_box mt10">
<view class="flex ai-c jc-sb"> <view class="flex ai-c jc-sb">
<view class="text-center"> <view class="text-center">
<view style="width: 111rpx;" class="fs30 cor-000">4</view> <view style="width: 111rpx;" class="fs30 cor-000">{{tIndex==0?wrongList.length:collectList.length}}</view>
</view> </view>
<view style="text-align: right;flex-direction: column;justify-content: right" class="flex ai-c" @tap="toPractice"> <view style="text-align: right;flex-direction: column;justify-content: right" class="flex ai-c" @tap="toPractice">
<u-icon name="arrow-right" size="18"></u-icon> <u-icon name="arrow-right" size="18"></u-icon>
@ -28,19 +28,19 @@
<text class="fs14 cor-666">全部{{tIndex==0?'错题':'收藏'}}</text> <text class="fs14 cor-666">全部{{tIndex==0?'错题':'收藏'}}</text>
</view> </view>
<view style="text-align: right;flex-direction: column;justify-content: right" class="flex ai-c"> <view style="text-align: right;flex-direction: column;justify-content: right" class="flex ai-c">
<text v-if="tIndex==0" class="fs14 cor-666">4/已做100</text> <text v-if="tIndex==0" class="fs14 cor-666">{{wrongList.length}}/已做{{wrongList.length+rightList.length}}</text>
</view> </view>
</view> </view>
</view> </view>
<view class="yellow_box" v-if="tIndex==0"> <view class="yellow_box" v-if="tIndex==0&&getPercent>10">
<view class="flex jc-sb ai-c"> <view class="flex jc-sb ai-c">
<view> <view>
<text class="fs24 fw600" style="color: #FF6E02;">32%</text><text class="fs18 cor-000 fw600">错题率</text> <text class="fs24 fw600" style="color: #FF6E02;">{{getPercent}}%</text><text class="fs18 cor-000 fw600">错题率</text>
<view class="fs14 cor-000">错题率有点高快去提升吧</view> <view class="fs14 cor-000">错题率有点高快去提升吧</view>
</view> </view>
<view style="width: 156rpx;"> <!-- <view style="width: 156rpx;">
<button class="riseBtn">马上提升</button> <button class="riseBtn">马上提升</button>
</view> </view> -->
</view> </view>
</view> </view>
<view class="flex jc-sb ai-c mt10" v-if="tIndex==0"> <view class="flex jc-sb ai-c mt10" v-if="tIndex==0">
@ -51,7 +51,7 @@
<view style="margin-top: 30rpx;" v-if="tIndex==0"> <view style="margin-top: 30rpx;" v-if="tIndex==0">
<view class="video-box"> <view class="video-box">
<view class="flex jc-sb ai-c wp100"> <view class="flex jc-sb ai-c wp100">
<text style="color: #05C341;font-size: 36rpx;">科一精品视频课</text> <text style="color: #05C341;font-size: 36rpx;">{{subject==1?'':'四'}}精品视频课</text>
<text class="cor-666 fs12">全部10节课 ></text> <text class="cor-666 fs12">全部10节课 ></text>
</view> </view>
<view class="flex ai-c mt20"> <view class="flex ai-c mt20">
@ -60,7 +60,7 @@
<u-button :customStyle="{width:'200rpx',height:'66rpx',borderRadius: '33rpx'}" iconColor="#fff" <u-button :customStyle="{width:'200rpx',height:'66rpx',borderRadius: '33rpx'}" iconColor="#fff"
text="去看视频" color="linear-gradient(90deg, #11DF20 0%, #00B74F 100%)" icon="play-circle"> text="去看视频" color="linear-gradient(90deg, #11DF20 0%, #00B74F 100%)" icon="play-circle">
</u-button> </u-button>
<view class="cor-333 fs15 fw600 mt10">科一易错试题</view> <view class="cor-333 fs15 fw600 mt10">{{subject==1?'':'四'}}易错试题</view>
</view> </view>
</view> </view>
@ -75,8 +75,8 @@
</view> </view>
<view class="flex ai-c jc-sb" style="flex-wrap: wrap;"> <view class="flex ai-c jc-sb" style="flex-wrap: wrap;">
<view v-for="(item,index) of typeList" :key="index" class="category_item p14 flex jc-sb ai-c mb10"> <view v-for="(item,index) of typeList" :key="index" class="category_item p14 flex jc-sb ai-c mb10">
<text class="cor-000">{{item.typeName}}</text> <text class="cor-000">{{item.categoryName}}</text>
<text class="cor-666">{{item.typeNum}}</text> <text class="cor-666">{{item.num}}</text>
</view> </view>
</view> </view>
</view> </view>
@ -85,44 +85,60 @@
</template> </template>
<script> <script>
import storage from '@/jtools/storage';
import {
questionCategory
} from '@/jtools/api/question';
export default{ export default{
data(){ data(){
return{ return{
collectList:[],
rightList:storage.get(`rightList_subject${this.subject}`) || [],
wrongList:storage.get(`wrongList_subject${this.subject}`) || [],
subject:0,
tIndex:0, tIndex:0,
isMoveWrong:true, isMoveWrong:true,
title:'重要提示:所有错题做对,再去考试!', title:'重要提示:所有错题做对,再去考试!',
categoryList:[{ categoryList:[{
name:'错题本' name:'错题本'
},{name:'收藏夹'}], },{name:'收藏夹'}],
typeList:[{ typeList:[]
typeName:'驾驶证审验注销', }
typeNum:1 },
},{ onLoad(op){
typeName:'机动车强制报废', if(op.subject){
typeNum:2 this.subject=op.subject
},{ this.rightList=storage.get(`rightList_subject${this.subject}`) || []
typeName:'驾驶证审验注销', this.wrongList=storage.get(`wrongList_subject${this.subject}`) || []
typeNum:1 this.collectList=storage.get(`collectList_subject${this.subject}`) || []
},{ this.getQuestionCategory()
typeName:'机动车强制报废', }
typeNum:2 },
},{ computed:{
typeName:'驾驶证审验注销', getPercent(){
typeNum:1 return ((this.wrongList.length/(this.wrongList.length+this.rightList.length))*100).toFixed(0)
},{
typeName:'机动车强制报废',
typeNum:2
}]
} }
}, },
methods:{ methods:{
getQuestionCategory(){
const param={}
if(this.tIndex==0){
param.questionIdList=this.wrongList
}else{
param.questionIdList=this.collectList
}
questionCategory(param).then(resp=>{
this.typeList=resp.data
})
},
tabChange(val){ tabChange(val){
this.tIndex=val.index this.tIndex=val.index
this.getQuestionCategory()
}, },
toPractice(){ toPractice(){
const navTitle=this.tIndex==0?'错题本':'收藏夹' const navTitle=this.tIndex==0?'错题本':'收藏夹'
uni.navigateTo({ uni.navigateTo({
url:"/pages/questionBank/questionBank?navTitle="+navTitle url:"/pages/questionBank/questionBank?navTitle="+navTitle+"&subject="+this.subject
}) })
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Loading…
Cancel
Save