This commit is contained in:
2023-08-22 17:27:54 +08:00
parent d155bd8b2d
commit c0df8a314e
14 changed files with 263 additions and 94 deletions

View File

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

View File

@@ -141,7 +141,7 @@
<text class="cor-666">题板</text>
</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 class="tCircle mb10" :class="{
'active':index == topicIndex,
@@ -316,20 +316,23 @@ export default {
"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({
url:"/pages/questionBank/examResult?doNotNum="+doNotNum+"&wrongList="+list+"&score="+score+"&subject="+this.subject
url:"/pages/questionBank/examResult?doNotNum="+doNotNum+"&wrongList="+list+"&score="+score+"&subject="+this.subject+"&navTitle="+this.navTitle
})
}
})
},
//查看考试结果
toResult(){
const allDoNum=this.wrongList.length+this.rightList.length
const list = JSON.stringify(this.wrongList)
uni.navigateTo({
url:"/pages/questionBank/practiceResult"
url:"/pages/questionBank/practiceResult?allDoNum="+allDoNum+"&wrongList="+list+"&subject="+this.subject+"&navTitle="+this.navTitle
})
},
toCollect(){
@@ -430,6 +433,7 @@ export default {
// 选择题目
pickerTopic(index) {
this.topicIndex = index;
this.index=this.topicIndex
this.getCurrentIndex(this.topicIndex,this.subject)
this.renderSwiper(index);
},

View File

@@ -18,7 +18,7 @@
<view>{{wrongList.length}}</view>
<text>看错题</text>
</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>
<text>重新考试</text>
</view>
@@ -40,18 +40,26 @@
<text style="color: #00B74F;position: absolute;right:33px;top:-13px">及格线</text>
</view>
</view>
<view class="wp100 text-center bc-fff pb10">
<text>近五次模考成绩</text>
</view>
</view>
</view>
</template>
<script>
import GradesChart from "./components/GradesChart.vue"
import storage from '@/jtools/storage';
import {
testTotal
} from '@/jtools/api/question';
export default {
components: {
GradesChart
},
data() {
return {
navTitle:"模拟考试",
subject:1,
doNotNum:0,
wrongList:undefined,
@@ -104,33 +112,49 @@
if(op.subject){
this.subject=op.subject
}
if(op.navTitle){
this.navTitle=op.navTitle
}
},
onReady() {
this.getServerData();
},
methods: {
getServerData() {
//模拟从服务器获取数据时的延时
setTimeout(() => {
//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
let res = {
categories: ["2018","2019","2020","2021","2022","2023"],
series: [{
name: "",
data: [this.score]
},
]
};
this.chartData = JSON.parse(JSON.stringify(res));
}, 500);
testTotal({
"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 = {
categories: ["第一次","第二次","第三次","第四次","第五次"],
series: [{
name: "",
data: scoreList
},
]
};
this.chartData = JSON.parse(JSON.stringify(res));
}
}
})
},
toQuestionBank(){
console.log('result');
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>

View File

@@ -3,7 +3,7 @@
<!-- <u-navbar title="模拟考试" @rightClick="rightClick" :autoBack="true">
</u-navbar> -->
<j-navbar :isDefineBack="true" @toBack="toBack">模拟考试</j-navbar>
<Question ref="question" :tabsList="tabsList" v-model:isSubmit="isSubmit" type="exam" :subject="subject" />
<Question ref="question" :tabsList="tabsList" v-model:isSubmit="isSubmit" type="exam" :subject="subject" navTitle="模拟考试" />
</view>
</template>

View File

@@ -3,16 +3,16 @@
<!-- <u-navbar title="本次练题结果" @rightClick="rightClick" :autoBack="true"></u-navbar>-->
<j-navbar backPath="/pages/index/index">本次练题结果</j-navbar>
<view class="p14 wp100">
<GradesChart />
<GradesChart :titleName="rightPencentDesc" :actualValue="Number(rightPencent)" />
<view class="top_box flex jc-c" style="flex-direction: column;">
<view class="wp100 text-center" >
<text>太棒了正确率很高了</text>
<view class="flex ai-c jc-c mt10">
<view class="text-center wp50">
<view>1/3</view>
<view class="text-center wp50" @tap="toQuestionBank">
<view>{{wrongList.length}}/{{allDoNum}}</view>
<text>本次错题</text>
</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>
<text>继续做题</text>
</view>
@@ -27,10 +27,10 @@
<text class="fs18 cor-000 fw600">累计练题</text>
<text class="fs14 cor-666 ml10">33</text>
</view>
<text class="fs14 cor-666">未做题2311</text>
<text class="fs14 cor-666">未做题{{getNotDoNum}}</text>
</view>
<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 class="p14 mt10 flex ai-c jc-sb" style="border-radius: 20rpx;background-color: rgb(253,249,238);">
<view>
@@ -47,6 +47,12 @@
</template>
<script>
import {
mapState,
mapActions
} from 'pinia' //引入映射函数
import storage from '@/jtools/storage';
import useQuestionStore from '@/jtools/store/question' //引入store
import GradesChart from "./components/GradesChart.vue"
export default {
components: {
@@ -54,11 +60,54 @@
},
data() {
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: {
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>

View File

@@ -3,7 +3,7 @@
<!-- <u-navbar :title="navTitle" @rightClick="rightClick" :autoBack="true">
</u-navbar> -->
<j-navbar>{{navTitle}}</j-navbar>
<Question ref="question" :tabsList="tabsList" :isShowAll="true" :subject="subject" :navTitle="navTitle"></Question>
<Question ref="question" :tabsList="tabsList" :isShowAll="isShowAll" :subject="subject" :navTitle="navTitle"></Question>
</view>
</template>
@@ -13,6 +13,7 @@
mapActions
} from 'pinia' //引入映射函数
import useQuestionStore from '@/jtools/store/question' //引入store
import useUserStore from '@/jtools/store/user'
import Question from './components/Question.vue';
import {
queryQuestion
@@ -24,6 +25,8 @@
},
data() {
return {
isShowAll:true,
needVip:false,
subject:1,
navTitle:'',
tabsList:[{
@@ -36,36 +39,60 @@
questionArr:[]
}
},
onLoad(op) {
async onLoad(op) {
if(op.needVip){
this.needVip=op.needVip
}
if(op&&op.navTitle){
this.navTitle=op.navTitle
const param={}
if(this.navTitle==='顺序答题'){
if(this.navTitle==='顺序答题'||this.navTitle==='精简500题'){
this.questionArr=[...this.orderQuestion]
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.questionList=JSON.parse(op.questionList)
}
queryQuestion(param).then(res => {
if (res.code == '0000') {
this.questionArr = res.data
this.$refs.question.getQuestionList(JSON.stringify(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: {
...mapState(useQuestionStore, ["orderQuestion"]) //映射函数取出tagslist
...mapState(useQuestionStore, ["orderQuestion"]) ,//映射函数取出tagslist
...mapState(useUserStore, ["vipOnList","token"])
},
methods: {
...mapActions(useUserStore,['searchUserVip']),
rightClick() {
console.log('返回');
},