Quellcode durchsuchen

错题收集中

zhangyujun vor 3 Jahren
Ursprung
Commit
f24eb01daa

+ 43 - 7
src/api/modules/exam.js

@@ -1,19 +1,55 @@
 import request from '../request'
 
 const exam={
-	/**
-	 * 逆地理编码
-	 * @param {
-		 location: string '经纬度坐标:经度在前,纬度在后,经纬度间以“,”分割'
-		 ...其他参数去高德官网看
-	 } params
-	 */
+	//获取顺序练习分类
      studentQuestionInfoSelectSxQuestionInfo(params) {
 		return request({
 			url: 'student/question/info/selectSxQuestionInfo',
 			method: 'get',
 			params
 		})
+	},
+	//获取分类专题分类
+	studentQuestionInfoSelectFlQuestionInfo(params){
+		return request({
+			url:"student/question/info/selectFlQuestionInfo",
+			method:'get',
+			params
+		})
+	},
+	//获取地方题分类
+	studentQuestionInfoSelectDfQuestionInfo(params){
+		return request({
+			url:"student/question/info/selectDfQuestionInfo",
+			method:'get',
+			params
+		})
+	},
+	//获取精选题目
+	studentQuestionInfoSelectJxQuestionInfo(params){
+		return request({
+			url:"student/question/info/selectJxQuestionInfo",
+			method:'get',
+			params
+		})
+
+	},
+	//获取最大成绩,平均成绩,预测成绩
+	studentScoreInfoGetScoreInfoAll(params){
+		return request({
+			url:"student/score/info/getScoreInfoAll",
+			method:'get',
+			params
+		})
+	},
+	//查询模拟考成绩列表
+	studentScoreInfoList(params){
+		return request({
+			url:"student/score/info/list",
+			method:'get',
+			params
+		})
+
 	}
 }
 

+ 8 - 0
src/api/modules/user.js

@@ -57,6 +57,14 @@ const user = {
 			method: 'put',
 			data
 		})
+	},
+	//更新用户真实姓名
+	studentUserRealname(params){
+		return request({
+			url: '/student/user/realname',
+			method: 'put',
+			params
+		})
 	}
 }
 

+ 45 - 0
src/components/m-button/m-button.vue

@@ -0,0 +1,45 @@
+<template>
+  <view class="button" :style="{ width, height }">{{ text }}</view>
+</template>
+
+<script >
+export default {
+  data() {
+    return {};
+  },
+  methods: {
+    name() {},
+  },
+  props: {
+    width: {
+      type: String,
+      default: "30rpx",
+    },
+    text: {
+      type: String,
+      default: "",
+    },
+    height: {
+      type: String,
+      default: "30rpx",
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.button {
+  width: 200rpx;
+  height: 80rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  font-size: 30rpx;
+  border-radius: 80rpx;
+  overflow: hidden;
+  &:active {
+    background-color: #cccccc;
+    filter: brightness(50%);
+  }
+}
+</style>

+ 21 - 0
src/components/m-user-avatar/m-user-avatar.vue

@@ -0,0 +1,21 @@
+<template>
+  <img class="user-avatar" :src="headImage" />
+</template>
+
+<script>
+export default {
+  computed: {
+    headImage() {
+      return this.$store.state.user.userInfo.headImage
+    }
+  },
+};
+</script>
+
+<style scoped>
+.user-avatar {
+  width: 108rpx;
+  height: 108rpx;
+  border-radius: 50%;
+}
+</style>

+ 18 - 0
src/components/m-user-name/m-user-name.vue

@@ -0,0 +1,18 @@
+<template>
+	<text class="user-name">{{ userName }}</text>
+	<!-- <div v-if="schoolName&&showSchoolName" class="user-name">{{ schoolName }}</div> -->
+</template>
+
+<script>
+export default {
+	computed: {
+		userName() {
+			console.log(this.$store.state.userInfo)
+			return this.$store.state.user.userInfo.nickName 
+		}
+	},
+}
+</script>
+
+<style scoped>
+</style>

+ 177 - 0
src/otherPages/beforeMockExam/index.vue

@@ -0,0 +1,177 @@
+<template>
+  <view>
+    <div class="header-back">
+      <m-nav-bar :transparent="true" title="模拟考试" />
+      <div class="user-data">
+        <m-user-avatar />
+        <m-user-name />
+      </div>
+    </div>
+    <div class="content">
+      <div class="title">考试说明</div>
+      <div class="class">
+        <span>考试科目</span>
+        <span>{{ query.name }}</span>
+      </div>
+      <div class="class">
+        <span>考试题库</span>
+        <span>{{ query.vehicle }}{{ query.cert }}</span>
+      </div>
+      <div class="class">
+        <span>考试时间</span>
+        <span>{{ query.subject == "1" ? 100 : 50 }}题,45分钟</span>
+      </div>
+      <div class="class">
+        <span>合格标准</span>
+        <span>90分及格</span>
+      </div>
+      <div class="class">
+        <span>学员姓名</span>
+        <span>
+          <input
+            v-model="realName"
+            class="class-input"
+            placeholder="选填"
+            confirm-type="send"
+            type="text"
+          />
+        </span>
+      </div>
+      <div class="remind">
+        答题后不可修改,累计错题扣分导致分数不及格时,系统自动交卷,考试不通过。
+      </div>
+      <view class="start" @click="gotoNextPage">
+        <m-button class="start" width="532rpx" height="80rpx" text="开始考试" />
+      </view>
+    </div>
+  </view>
+</template>
+
+<script>
+import api from "@/api/index";
+export default {
+  data() {
+    return {
+      query: {},
+    };
+  },
+  onLoad(query) {
+    this.query = query;
+  },
+  computed: {
+      realName() {
+          return this.$store.state.user.userInfo.realName
+      }
+  },
+  methods: {
+    gotoNextPage(e) {
+      api.user
+        .studentUserRealname({
+          realName: this.realName,
+        })
+        .then((res) => {});
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.header-back {
+  width: 750rpx;
+  padding-bottom: 82px;
+  background: linear-gradient(180deg, #498ef5 0%, #4da8e6 100%);
+  border-radius: 0px 0px 82px 82px;
+  .header {
+    position: relative;
+    font-size: 15px;
+    padding: 15px;
+    color: #ffffff;
+    .title {
+      position: absolute;
+      left: 50%;
+      top: 50%;
+      transform: translate(-50%, -50%);
+    }
+  }
+  .user-data {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    padding: 15px;
+    justify-content: space-between;
+    height: 80px;
+    color: #ffffff;
+    font-size: 15px;
+    font-family: PingFang SC;
+    font-weight: 400;
+  }
+}
+.class-input {
+  width: 200rpx;
+  border: none;
+  background: #e2e2e2;
+  border-radius: 30rpx;
+  padding-left: 16rpx;
+}
+.content {
+  width: 690rpx;
+  background: #ffffff;
+  box-shadow: 0px 0px 8rpx rgba(124, 129, 136, 0.2);
+  border-radius: 10rpx;
+  position: relative;
+  left: 50%;
+  top: -52rpx;
+  transform: translateX(-50%);
+  padding: 38rpx 15rpx;
+  box-sizing: border-box;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  .title {
+    font-size: 30rpx;
+    font-family: PingFang SC;
+    font-weight: 400;
+    color: #0a1a33;
+    margin-bottom: 10rpx;
+  }
+  .class {
+    font-size: 26rpx;
+    font-family: PingFang SC;
+    font-weight: 400;
+    display: flex;
+    justify-content: space-between;
+    align-content: center;
+    align-items: center;
+    width: 340rpx;
+    margin-top: 26rpx;
+
+    span {
+      &:nth-of-type(1) {
+        color: #8a9099;
+      }
+      &:nth-of-type(2) {
+        color: #5c6066;
+      }
+    }
+  }
+  .remind {
+    width: 630rpx;
+    background: rgba(255, 77, 83, 0.1);
+    font-size: 26rpx;
+    font-family: PingFang SC;
+    font-weight: 400;
+    line-height: 38rpx;
+    color: #ff4d53;
+    padding: 16rpx 24rpx;
+    box-sizing: border-box;
+    margin-top: 48rpx;
+  }
+  .start {
+    color: #ffffff;
+    margin-top: 30px;
+    background: #498ef5;
+    border-radius: 40rpx;
+    overflow: hidden;
+  }
+}
+</style>

+ 103 - 0
src/otherPages/classifyArea/index.vue

@@ -0,0 +1,103 @@
+<template>
+	<div class="cell-box">
+		<van-cell
+			
+			class="cell"
+			:title="item.placeIssueName || item.classIssueName || item.excellIssueName || item.sequeIssueName"
+			is-link
+			center
+			v-for="(item, index) in classData"
+			:key="index"
+			:border="false"
+			@click="
+				() => {
+					push({
+						name: 'exercise',
+						query: {
+							...query,
+							classIssueName: item.classIssueName,
+							placeIssueName: item.placeIssueName,
+							excellIssueName: item.excellIssueName,
+							sequeIssueName: item.sequeIssueName,
+							placeIssue: item.placeIssue,
+							classIssue: item.classIssue,
+							excellIssue: item.excellIssue,
+							sequeIssue: item.sequeIssue,
+						},
+					});
+				}
+			">
+			<template #icon>
+				<div class="icon">{{ index + 1 }}</div>
+			</template>
+		</van-cell>
+	</div>
+</template>
+
+<script>
+import api from "@/api/index";
+export default {
+  data() {
+    return {
+      classData: [],
+      query: {},
+    };
+  },
+  onLoad(op) {
+    this.query = op;
+  },
+  methods: {
+    getClassData() {
+      api.exam
+        .studentQuestionInfoSelectDfQuestionInfo(this.query)
+        .then((res) => {
+          this.classData = res.data;
+        });
+    },
+  },
+  mounted() {
+    this.getClassData();
+  },
+};
+// const {
+// 	route: { query },
+// 	router: { push },
+// } = new RouterBus();
+// const classData = ref();
+// getTopicClass(query.path as string, query).then(({ data }) => {
+// 	//地方专题第一个选项去掉
+// 	if (query.title == "地方专题") {
+// 		data.data?.shift();
+// 	}
+
+// 	classData.value = data.data;
+// });
+</script>
+
+<style lang="scss" scoped>
+.cell-box {
+	display: flex;
+	padding: 5px 15px;
+	flex-wrap: wrap;
+	justify-content: space-between;
+	.cell {
+		width: 167px;
+		margin-top: 10px;
+		box-shadow: 0px 0px 10px rgba(124, 129, 136, 0.2);
+	}
+	.icon {
+		width: 20px;
+		height: 20px;
+		background: #498ef5;
+		border-radius: 50%;
+		font-weight: 500;
+		font-family: PingFang SC;
+		font-size: 13px;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		color: #ffffff;
+		margin-right: 5px;
+	}
+}
+</style>

+ 211 - 0
src/otherPages/classifyChoose/index.vue

@@ -0,0 +1,211 @@
+<template>
+  <div class="cell-container">
+    <div class="cell-box" style="padding-right: 0px">
+      <van-cell
+        class="cell"
+        :title="
+          item.excellIssueName ||
+          item.placeIssueName ||
+          item.classIssueName ||
+          item.sequeIssueName
+        "
+        is-link
+        center
+        v-for="(item, index) in classDataLeft"
+        :key="index"
+        :border="false"
+        @click="
+          () => {
+            push({
+              name: 'exercise',
+              query: {
+                ...query,
+                classIssueName: item.classIssueName,
+                placeIssueName: item.placeIssueName,
+                excellIssueName: item.excellIssueName,
+                sequeIssueName: item.sequeIssueName,
+                placeIssue: item.placeIssue,
+                classIssue: item.classIssue,
+                excellIssue: item.excellIssue,
+                sequeIssue: item.sequeIssue,
+              },
+            });
+          }
+        "
+      >
+        <template #icon>
+          <div class="icon-blue">{{ index + 1 }}</div>
+        </template>
+      </van-cell>
+      <van-cell
+        v-if="query.title !== '地方专题'"
+        @click="
+          () => {
+            push({
+              name: 'classify',
+              query: {
+                ...query,
+                title: '地方专题',
+                path: 'selectDfQuestionInfo',
+                sort: 4,
+              },
+            });
+          }
+        "
+        class="cell"
+        title="地方专题"
+        is-link
+        center
+        :border="false"
+      >
+        <template #icon>
+          <div class="icon-blue">{{ "地" }}</div>
+        </template>
+      </van-cell>
+    </div>
+    <div class="cell-box">
+      <van-cell
+        class="cell"
+        :title="
+          item.placeIssueName ||
+          item.classIssueName ||
+          item.excellIssueName ||
+          item.sequeIssueName
+        "
+        is-link
+        center
+        v-for="(item, index) in classDataRight"
+        :key="index"
+        :border="false"
+      >
+        <template #icon>
+          <div class="icon-red">{{ index + 1 }}</div>
+        </template>
+      </van-cell>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from "@/api/index";
+export default {
+  data() {
+    return {
+      classDataRight: [],
+      classDataLeft: [],
+      query: {},
+    };
+  },
+  onLoad(query) {
+    this.query = query;
+    this.getClassData();
+  },
+  methods: {
+    getClassData() {
+      api.exam
+        .studentQuestionInfoSelectJxQuestionInfo({
+          ...this.query,
+          excellIssueName: "选学",
+        })
+        .then((res) => {
+          this.classDataRight = res.data;
+        });
+      api.exam
+        .studentQuestionInfoSelectJxQuestionInfo({
+          ...this.query,
+          excellIssueName: "必",
+        })
+        .then((res) => {
+          res.data.shift();
+          this.classDataLeft = res.data;
+          api.exam
+            .studentQuestionInfoSelectJxQuestionInfo({
+              ...this.query,
+              excellIssueName: "新增",
+            })
+            .then((res) => {
+              this.classDataLeft = [...this.classDataLeft, ...res.data];
+            });
+        });
+    },
+  },
+};
+
+// getTopicClass(query.path as string, {
+// 	...query,
+// 	excellIssueName: "必",
+// }).then(({ data }) => {
+// 	// res.data.data.shift();
+// 	console.log(data);
+// 	classDataLeft.value = data.data;
+// 	getTopicClass(query.path as string, {
+// 		...query,
+// 		excellIssueName: "新增",
+// 	}).then(({ data }) => {
+// 		// data.data.shift();
+// 		classDataLeft.value = [...classDataLeft.value, ...data.data];
+// 	});
+// 	getTopicClass(query.path as string, {
+// 		...query,
+// 		excellIssueName: "地方",
+// 	}).then(({ data }) => {
+// 		// data.data.shift();
+// 		classDataLeft.value = [...classDataLeft.value, ...data.data];
+// 	});
+
+// });
+
+// getTopicClass(query.path as string, {
+// 	...query,
+// 	excellIssueName: "选学",
+// }).then(({ data }) => {
+// 	classDataRight.value = data.data;
+// });
+</script>
+
+<style lang="scss" scoped>
+.cell-container {
+  display: flex;
+  flex-direction: row;
+}
+.cell-box {
+  display: flex;
+  padding: 5px 15px;
+  flex-wrap: wrap;
+  flex-direction: column;
+
+  .cell {
+    width: 167px;
+    margin-top: 10px;
+    box-shadow: 0px 0px 10px rgba(124, 129, 136, 0.2);
+  }
+  .icon-blue {
+    width: 20px;
+    height: 20px;
+    background: #498ef5;
+    border-radius: 50%;
+    font-weight: 500;
+    font-family: PingFang SC;
+    font-size: 13px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    color: #ffffff;
+    margin-right: 5px;
+  }
+  .icon-red {
+    width: 20px;
+    height: 20px;
+    background: red;
+    border-radius: 50%;
+    font-weight: 500;
+    font-family: PingFang SC;
+    font-size: 13px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    color: #ffffff;
+    margin-right: 5px;
+  }
+}
+</style>

+ 79 - 0
src/otherPages/classifyKind/index.vue

@@ -0,0 +1,79 @@
+<template>
+  <div class="cell-box">
+    <van-cell
+      class="cell"
+      :title="
+        item.placeIssueName ||
+        item.classIssueName ||
+        item.excellIssueName ||
+        item.sequeIssueName
+      "
+      is-link
+      center
+      v-for="(item, index) in classData"
+      :key="index"
+      :border="false"
+    >
+      <template #icon>
+        <div class="icon">{{ index + 1 }}</div>
+      </template>
+    </van-cell>
+  </div>
+</template>
+
+<script >
+import api from "@/api/index";
+export default {
+  data() {
+    return {
+      classData: [],
+      query: {},
+    };
+  },
+  onLoad(op) {
+    this.query = op;
+  },
+  methods: {
+    getClassData() {
+      api.exam
+        .studentQuestionInfoSelectFlQuestionInfo(this.query)
+        .then((res) => {
+          this.classData = res.data;
+        });
+    },
+  },
+  mounted() {
+    this.getClassData();
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.cell-box {
+  display: flex;
+  padding: 5px 15px;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  .cell {
+    width: 167px;
+    margin-top: 10px;
+    box-shadow: 0px 0px 10px rgba(124, 129, 136, 0.2);
+    background: #fff;
+  }
+  //地区
+  .icon {
+    width: 20px;
+    height: 20px;
+    background: #498ef5;
+    border-radius: 50%;
+    font-weight: 500;
+    font-family: PingFang SC;
+    font-size: 13px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    color: #ffffff;
+    margin-right: 5px;
+  }
+}
+</style>

+ 90 - 81
src/otherPages/classifyOrder/index.vue

@@ -1,99 +1,104 @@
 <template>
   <view class="bg-white">
     <div class="cell-box">
-      <van-cell
-        value-class="custom-right-cell"
-        class="cell"
-        :title="
-          item.placeIssueName ||
-          item.classIssueName ||
-          item.excellIssueName ||
-          item.sequeIssueName
-        "
-        center
-        v-for="(item, index) in classData"
-        :key="index"
-        :border="false"
-      >
-        <div class="select">
-          <div
-            class="select-item0"
-            @click="
-              () => {
-                push({
-                  name: 'exercise',
-                  query: {
-                    ...query,
-                    classIssueName: item.classIssueName,
-                    placeIssueName: item.placeIssueName,
-                    excellIssueName: item.excellIssueName,
-                    sequeIssueName: item.sequeIssueName,
-                    placeIssue: item.placeIssue,
-                    classIssue: item.classIssue,
-                    excellIssue: item.excellIssue,
-                    sequeIssue: item.sequeIssue,
-                  },
-                });
-              }
-            "
-          >
-            语音讲解
+      <view v-for="(item, index) in classData" :key="index">
+        <van-cell
+          value-class="custom-right-cell"
+          class="cell"
+          :title="
+            item.placeIssueName ||
+            item.classIssueName ||
+            item.excellIssueName ||
+            item.sequeIssueName
+          "
+          center
+          :border="false"
+        >
+          <div class="select">
+            <div
+              class="select-item0"
+              @click="
+                () => {
+                  push({
+                    name: 'exercise',
+                    query: {
+                      ...query,
+                      classIssueName: item.classIssueName,
+                      placeIssueName: item.placeIssueName,
+                      excellIssueName: item.excellIssueName,
+                      sequeIssueName: item.sequeIssueName,
+                      placeIssue: item.placeIssue,
+                      classIssue: item.classIssue,
+                      excellIssue: item.excellIssue,
+                      sequeIssue: item.sequeIssue,
+                    },
+                  });
+                }
+              "
+            >
+              语音讲解
+            </div>
+            <div
+              @click="
+                () => {
+                  push({
+                    name: 'exerciseStrict',
+                    query: {
+                      ...query,
+                      classIssueName: item.classIssueName,
+                      placeIssueName: item.placeIssueName,
+                      excellIssueName: item.excellIssueName,
+                      sequeIssueName: item.sequeIssueName,
+                      placeIssue: item.placeIssue,
+                      classIssue: item.classIssue,
+                      excellIssue: item.excellIssue,
+                      sequeIssue: item.sequeIssue,
+                    },
+                  });
+                }
+              "
+              class="select-item1"
+            >
+              单项测试
+            </div>
           </div>
-          <div
-            @click="
-              () => {
-                push({
-                  name: 'exerciseStrict',
-                  query: {
-                    ...query,
-                    classIssueName: item.classIssueName,
-                    placeIssueName: item.placeIssueName,
-                    excellIssueName: item.excellIssueName,
-                    sequeIssueName: item.sequeIssueName,
-                    placeIssue: item.placeIssue,
-                    classIssue: item.classIssue,
-                    excellIssue: item.excellIssue,
-                    sequeIssue: item.sequeIssue,
-                  },
-                });
-              }
-            "
-            class="select-item1"
-          >
-            单项测试
-          </div>
-        </div>
-        <template #icon>
-          <div class="icon">{{ index + 1 }}</div>
-        </template>
-      </van-cell>
+          <template #icon>
+            <div class="icon">{{ index + 1 }}</div>
+          </template>
+        </van-cell>
+      </view>
     </div>
   </view>
 </template>
 
 <script>
-import api from '@/api/index'
+import api from "@/api/index";
 export default {
   data() {
     return {
-      classData: [
-  
-      ],
-      query:{
-
-      }
+      classData: [],
+      query: {
+        title: "",
+        vehicle:""
+      },
     };
   },
   methods: {
     name() {},
   },
-  onLoad(op){
-    this.query = op
+  onLoad(op) {
+    this.query = op;
   },
-  mounted () {
-    api.exam.studentQuestionInfoSelectSxQuestionInfo(this.query).then(res=>{
-      this.classData = res.data
-
+  mounted() {
+    api.exam.studentQuestionInfoSelectSxQuestionInfo(this.query).then((res) => {
+      if (this.query.vehicle === "摩托车") {
+        this.classData = res.data;
+        
+      }
+      else{
+        res.data.shift()
+        this.classData  = res.data
+      }
     });
   },
 };
@@ -105,17 +110,21 @@ export default {
 </style>
 
 <style lang="scss" scoped>
-.bg-white{
-    background: #ffffff;
+.bg-white {
+  background: #ffffff;
 }
 .cell-box {
   display: flex;
   padding: 5px 15px;
   flex-wrap: wrap;
   justify-content: space-between;
-  .cell {
+  > view {
     width: 100%;
     border-bottom: 1px solid #ddd;
+  }
+  .cell {
+    width: 100%;
+
     line-height: 28px;
 
     // box-shadow: 0px 0px 10px rgba(124, 129, 136, 0.2);

+ 168 - 0
src/otherPages/collection/components/list.vue

@@ -0,0 +1,168 @@
+<template>
+  <div class="listcom-box">
+    <div class="list-box">
+      <van-checkbox-group v-model="checked" ref="checkboxGroup">
+        <van-cell-group>
+          <van-pull-refresh v-model="refreshing" @refresh="onLoad">
+            <van-list
+              v-model="loading"
+              :finished="finished"
+              finished-text="没有更多了"
+              @load="onLoad"
+            >
+              <van-swipe-cell
+                v-for="(item, index) in list"
+                :key="index"
+                :disabled="isChoose"
+              >
+                <van-cell
+                  class="cell-box"
+                  clickable
+                  :title="`${item.id}. ${item.issue}`"
+                  @click="goExercise(item)"
+                >
+                  <template slot="icon" >
+                    <van-checkbox v-if="isChoose" :name="item.id" class="checkbox" />
+                  </template>
+                </van-cell>
+                <template #right>
+                  <van-button
+                    square
+                    style="height: 100%"
+                    type="danger"
+                    text="删除"
+                    @click="deleteClick(item.id)"
+                  />
+                  <van-button
+                    square
+                    style="height: 100%"
+                    type="primary"
+                    text="收藏"
+                    @click="collectionClick(item.id)"
+                    v-if="props.type == 'wrong'"
+                  />
+                </template>
+              </van-swipe-cell>
+            </van-list>
+          </van-pull-refresh>
+        </van-cell-group>
+      </van-checkbox-group>
+    </div>
+    <div class="bottom-cell">
+      <div>
+        <span v-if="!isChoose" @click="isChoose = true">批量选中</span>
+        <div class="choose" v-else>
+          <van-checkbox v-model="isSelectAll">全选</van-checkbox>
+          <span
+            @click="
+              isChoose = false;
+              unSelectAll();
+            "
+            >取消</span
+          >
+        </div>
+      </div>
+      <div>
+        <div class="operate">
+          <van-button
+            round
+            type="danger"
+            size="small"
+            :disabled="checked.length == 0"
+            @click="deletesClick"
+            >删除选中</van-button
+          >
+          <van-button
+            round
+            type="primary"
+            size="small"
+            :disabled="checked.length == 0"
+            @click="collectionClick"
+            v-if="props.type == 'wrong'"
+            >移入收藏夹</van-button
+          >
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			list:[]
+		}
+	},
+	methods: {
+		name() {
+			
+		}
+	},
+};
+</script>
+
+
+
+<style lang="scss" scoped>
+.listcom-box {
+  height: calc(100vh - 50px);
+  display: flex;
+  flex-direction: column;
+}
+
+.list-box {
+  flex-grow: 1;
+  overflow-y: auto;
+  .cell-box {
+    min-height: 70px;
+  }
+}
+.checkbox {
+  margin-right: 5px;
+}
+.bottom-cell {
+  flex-shrink: 0;
+  border-top: 1px solid #bdbaba;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  width: 100vw;
+  height: 50px;
+  box-sizing: border-box;
+  font-size: 13px;
+  font-weight: 400;
+  font-family: PingFang SC;
+  background-color: #ffffff;
+  padding: 10px 15px;
+  .choose {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    width: 100px;
+  }
+  .operate {
+    display: flex;
+    justify-content: space-between;
+
+    span {
+      height: 30px;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      color: #ffffff;
+      border-radius: 15px;
+
+      &:nth-of-type(1) {
+        background-color: #ff4d53;
+      }
+      &:active {
+        filter: brightness(50%);
+      }
+      &:nth-of-type(2) {
+        background-color: #498ef5;
+      }
+    }
+  }
+}
+</style>

+ 86 - 0
src/otherPages/collection/index.vue

@@ -0,0 +1,86 @@
+<template>
+  <div class="collection-box">
+    <van-nav-bar left-arrow @click-left="onClickLeft" placeholder>
+      <template #title>
+        <div class="title">
+          <span
+            :class="{ active: isType == 0 }"
+            @click="
+              isType = 0;
+              swiper.swipeTo(0);
+            "
+            >做错题</span
+          >
+          <span
+            :class="{ active: isType == 1 }"
+            @click="
+              isType = 1;
+              swiper.swipeTo(1);
+            "
+            >收藏题</span
+          >
+        </div>
+      </template>
+    </van-nav-bar>
+    <van-swipe ref="swiper" :show-indicators="false" :touchable="false">
+      <van-swipe-item> <listCom type="wrong" /> </van-swipe-item>
+      <van-swipe-item> <listCom type="collection" /> </van-swipe-item>
+    </van-swipe>
+  </div>
+</template>
+
+<script >
+import listCom from "./components/list.vue";
+export default {
+  data() {
+    return {
+        isType:0,
+        
+
+    };
+  },
+  methods: {
+    onClickLeft() {},
+  },
+  components: {
+    listCom,
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.collection-box {
+  height: 100vh;
+  display: flex;
+  flex-direction: column;
+}
+.title {
+  display: flex;
+  width: 130px;
+  justify-content: space-between;
+  align-items: center;
+  span {
+    font-size: 15px;
+    font-family: PingFang SC;
+    font-weight: 400;
+    line-height: 13px;
+    color: #0a1a33;
+    position: relative;
+    padding: 8px;
+  }
+  .active {
+    &:after {
+      position: absolute;
+      content: "";
+      width: 20px;
+      height: 4px;
+      border-radius: 3px;
+      background-color: #498ef5;
+      bottom: 0;
+      left: 50%;
+      transform: translateX(-50%);
+      z-index: 100;
+    }
+  }
+}
+</style>

+ 0 - 0
src/otherPages/mockTest/index.vue


+ 225 - 0
src/otherPages/testScores/index.vue

@@ -0,0 +1,225 @@
+<template>
+  <view>
+    <div class="header-back">
+      <m-nav-bar
+        :transparent="true"
+        title="模拟考试成绩"
+        style="color: #ffffff"
+      />
+      <div class="user-data">
+        <div class="left">
+          <m-user-avatar />
+          <div class="name">
+            <m-user-name />
+            <span
+              >最高成绩<span class="grade">{{ testScoresInfo.maxScore }}</span
+              >分</span
+            >
+          </div>
+        </div>
+        <button
+          @click="goMockTest"
+          class="continue"
+          width="90px"
+          height="30px"
+          text="继续考试"
+        >继续考试</button>
+      </div>
+    </div>
+    <div class="summary content-box">
+      <div class="item">
+        <div>
+          <span class="number">{{ testScoresList.length }}</span
+          >次
+        </div>
+        <div>考试次数</div>
+      </div>
+      <div class="item">
+        <div>
+          <span class="number">{{ testScoresInfo.avgScore }}</span
+          >分
+        </div>
+        <div>平均成绩</div>
+      </div>
+      <div class="item">
+        <div>
+          <span class="number">{{ testScoresInfo.forecastScore }}</span
+          >分
+        </div>
+        <div>成绩预测</div>
+      </div>
+    </div>
+    <div class="test-scores content-box">
+      <view class="table">
+        <view class="flex lh60" style="font-weight:600">
+          <view class="w25per">车型</view>
+          <view class="w25per">科目</view>
+          <view class="w25per">分数</view>
+          <view class="w25per">时间</view>
+        </view>
+      </view>
+      <view class="flex lh60" v-for="(item, index) in testScoresList" :key="index">
+        <view class="w25per">{{ item.type }}</view>
+        <view class="w25per">{{ item.kskm }}</view>
+        <view class="w25per">{{ item.score }}</view>
+        <view class="w25per">{{ item.createTime }}</view>
+      </view>
+    </div>
+  </view>
+</template>
+
+
+
+<script>
+import api from "@/api/index";
+
+export default {
+  data() {
+    return {
+      testScoresList: [
+        {
+          type: "轿车",
+          kskm: "科目一",
+          score: 90,
+          createTime: "2021-10-11",
+        },
+      ],
+      testScoresInfo: {
+        maxScore: 0,
+        avgScore: 0,
+        forecastScore: 0,
+      },
+    };
+  },
+  onLoad(query) {
+    this.getTestScoresList();
+    this.getTestScoresInfo();
+  },
+  methods: {
+    getTestScoresInfo() {
+      api.exam.studentScoreInfoGetScoreInfoAll({}).then((res) => {
+        this.testScoresInfo = res.data;
+      });
+    },
+    getTestScoresList() {
+      api.exam.studentScoreInfoList({}).then((res) => {
+        this.testScoresList = res.data;
+      });
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.lh60{
+    line-height: 60rpx;
+}
+.flex {
+  display: flex;
+  text-align: center;
+}
+.w25per {
+  width: 25%;
+}
+.header-back {
+  width: 375px;
+  padding-bottom: 82px;
+  background: linear-gradient(180deg, #498ef5 0%, #4da8e6 100%);
+  border-radius: 0px 0px 82px 82px;
+  .user-data {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 19px 17px 24px;
+    .left {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      .name {
+        display: flex;
+        flex-direction: column;
+        font-size: 13px;
+        color: #ffffff;
+        justify-content: space-between;
+        margin-left: 6px;
+        .grade {
+          font-size: 24px;
+          padding: 4px;
+        }
+      }
+    }
+    .continue {
+      font-size: 24rpx;
+      font-family: PingFang SC;
+      font-weight: 400;
+      line-height: 60rpx;
+      color: #ffffff;
+      background: #01c18d;
+      border-radius:32rpx;
+    }
+  }
+}
+.content-box {
+  width: 345px;
+  background: #ffffff;
+  box-shadow: 0px 0px 8px rgba(124, 129, 136, 0.2);
+  border-radius: 10px;
+  position: relative;
+  left: 50%;
+  transform: translateX(-50%);
+  top: -82px;
+  margin-top: 10px;
+}
+.summary {
+  display: flex;
+  justify-content: space-around;
+  padding: 25px 30px;
+  box-sizing: border-box;
+  .item {
+    font-size: 13px;
+    font-family: PingFang SC;
+    font-weight: 400;
+    line-height: 19px;
+    color: #8a9099;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    .number {
+      font-size: 24px;
+      color: #0a1a33;
+      padding: 4px;
+    }
+  }
+}
+.test-scores {
+  font-size: 13px;
+  font-family: PingFang SC;
+  font-weight: 400;
+  line-height: 19px;
+  color: #0a1a33;
+  padding: 15px;
+  box-sizing: border-box;
+  .table {
+    width: 100%;
+    border-collapse: collapse;
+    font-size: 13px;
+    th {
+      padding: 5px;
+      color: #0a1a33;
+    }
+    td {
+      text-align: center;
+      padding: 5px;
+      color: #8a9099;
+    }
+    tr {
+      &:nth-of-type(n) {
+        background: #ffffff;
+      }
+      &:nth-of-type(2n) {
+        background: rgba(73, 142, 245, 0.15);
+      }
+    }
+  }
+}
+</style>

+ 24 - 4
src/pages.json

@@ -19,10 +19,6 @@
       "path": "pages/extraWeb/index",
       "style": {}
     },
-    {
-      "path": "pages/classifyOrder/index",
-      "style": {}
-    },
     {
       "path": "pages/lightMock/index",
       "style": {
@@ -218,6 +214,30 @@
           "path": "classifyOrder/index",
           "styles": {}
         },
+        {
+          "path": "classifyKind/index",
+          "styles": {}
+        },
+        {
+          "path": "classifyArea/index",
+          "styles": {}
+        },
+        {
+          "path": "classifyChoose/index",
+          "styles": {}
+        },
+        {
+          "path": "testScores/index",
+          "styles": {}
+        },
+        {
+          "path":"beforeMockExam/index",
+          "styles": {}
+        },
+        {
+          "path":"collection/index",
+          "styles": {}
+        },
         {
           "path": "buyVip/index",
           "styles": {

+ 20 - 9
src/pages/carVideo/components/tabCenter.vue

@@ -1,26 +1,37 @@
 <template>
   <view class="center">
-    <view class="center-item" v-for="(item, index) in centerList" :key="index">
-      <image class="center-img" :src="item.img"></image>
+    <view @click="goPath(item)" class="center-item" v-for="(item, index) in centerList" :key="index">
+      <image  class="center-img" :src="item.img"></image>
       <text class="center-text">{{ item.text }}</text>
     </view>
   </view>
 </template>
 
 <script>
+import utils from "@/utils/index";
 export default {
   data() {
     return {};
   },
-  props: {
-    query:{
-      type:Object,
-      default:()=>{
-        return {
-          
-        }
+  methods: {
+    goPath(item) {
+      console.log(item);
+      if (item.path) {
+        let str = utils.mapToUrlQuery(this.query);
+        console.log(item.path + "?" + str, "str");
+        uni.navigateTo({
+          url: item.path + "?" + str,
+        });
       }
     },
+  },
+  props: {
+    query: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
     centerList: {
       type: Array,
       default: () => {

+ 8 - 0
src/pages/carVideo/components/tabRight.vue

@@ -34,6 +34,14 @@ export default {
       type: Number,
       default: 1,
     },
+    query:{
+      type:Object,
+      default:()=>{
+        return {
+          
+        }
+      }
+    }
   },
 };
 </script>

+ 27 - 10
src/pages/carVideo/index.vue

@@ -155,7 +155,7 @@ import tabRight from "./components/tabRight.vue";
 import TabCenter from "./components/tabCenter.vue";
 import VideoListBox from "./components/videoListBox.vue";
 import userInfoHead from "./components/userInfoHead.vue";
-import utils from '@/utils/index'
+import utils from "@/utils/index";
 export default {
   components: {
     shortVideo,
@@ -169,7 +169,10 @@ export default {
   },
   data: () => ({
     tabQuery: {
-      carType: "liceCar",
+      liceCar: 1,
+      liceTruck: '',
+      liceBus: '',
+      liceMoto: '',
       name: "科目一",
       cert: "C1/C2/C3",
       vehicle: "轿车",
@@ -182,12 +185,12 @@ export default {
       {
         img: "https://t1-1305573081.file.myqcloud.com/wxapp/static/imgs/home/LocalTopics@2x.png",
         text: "地方专题",
-        path: "",
+        path: "/otherPages/classifyArea/index",
       },
       {
         img: "https://t1-1305573081.file.myqcloud.com/wxapp/static/imgs/home/WrongTopicCollection@2x.png",
         text: "错题·收藏",
-        path: "",
+        path: "/otherPages/collection/index",
       },
       {
         img: "https://t1-1305573081.file.myqcloud.com/wxapp/static/imgs/home/NotesBeforeExamination@2x.png",
@@ -204,10 +207,12 @@ export default {
       {
         img: "https://t1-1305573081.file.myqcloud.com/wxapp/static/imgs/home/SelectedTestQuestions@2x.png",
         text: "精选考题\n500题",
+        path:"/otherPages/classifyChoose/index"
       },
       {
         img: "https://t1-1305573081.file.myqcloud.com/wxapp/static/imgs/home/SimulationTestTopics@2x.png",
         text: "模拟考试\n仿真题目",
+        path:"/otherPages/beforeMockExam/index"
       },
     ],
     leftList1: [
@@ -219,7 +224,7 @@ export default {
       {
         img: "https://t1-1305573081.file.myqcloud.com/wxapp/static/imgs/home/ClassificationExercise@2x.png",
         text: "分类练习",
-        path: "",
+        path: "/otherPages/classifyKind/index",
       },
       {
         img: "https://t1-1305573081.file.myqcloud.com/wxapp/static/imgs/home/RealExaminationRoomSimulation@2x.png",
@@ -230,7 +235,7 @@ export default {
       {
         img: "https://t1-1305573081.file.myqcloud.com/wxapp/static/imgs/home/SimulationResults@2x.png",
         text: "模拟成绩",
-        path: "",
+        path: "/otherPages/testScores/index",
       },
     ],
     //科目四
@@ -388,16 +393,28 @@ export default {
       this.tabQuery.cert = item.title;
       switch (item.typeName) {
         case "轿车":
-          this.tabQuery.carType = "liceCar";
+          this.tabQuery.liceCar = 1;
+          this.tabQuery.liceTruck = '';
+          this.tabQuery.liceBus = '';
+          this.tabQuery.liceMoto = '';
           break;
         case "货车":
-          this.tabQuery.carType = "liceTruck";
+          this.tabQuery.liceCar = '';
+          this.tabQuery.liceTruck = '';
+          this.tabQuery.liceBus = 1;
+          this.tabQuery.liceMoto = '';
           break;
         case "客车":
-          this.tabQuery.carType = "liceBus";
+          this.tabQuery.liceCar = '';
+          this.tabQuery.liceTruck = '';
+          this.tabQuery.liceBus = 1;
+          this.tabQuery.liceMoto = '';
           break;
         case "摩托车":
-          this.tabQuery.carType = "liceMoto";
+          this.tabQuery.liceCar = '';
+          this.tabQuery.liceTruck = '';
+          this.tabQuery.liceBus = '';
+          this.tabQuery.liceMoto = 1;
           break;
         default:
           break;

+ 0 - 160
src/pages/classifyOrder/index.vue

@@ -1,160 +0,0 @@
-<template>
-  <view class="bg-white">
-    <div class="cell-box">
-      <van-cell
-        value-class="custom-right-cell"
-        class="cell"
-        :title="
-          item.placeIssueName ||
-          item.classIssueName ||
-          item.excellIssueName ||
-          item.sequeIssueName
-        "
-        center
-        v-for="(item, index) in classData"
-        :key="index"
-        :border="false"
-      >
-        <div class="select">
-          <div
-            class="select-item0"
-            @click="
-              () => {
-                push({
-                  name: 'exercise',
-                  query: {
-                    ...query,
-                    classIssueName: item.classIssueName,
-                    placeIssueName: item.placeIssueName,
-                    excellIssueName: item.excellIssueName,
-                    sequeIssueName: item.sequeIssueName,
-                    placeIssue: item.placeIssue,
-                    classIssue: item.classIssue,
-                    excellIssue: item.excellIssue,
-                    sequeIssue: item.sequeIssue,
-                  },
-                });
-              }
-            "
-          >
-            语音讲解
-          </div>
-          <div
-            @click="
-              () => {
-                push({
-                  name: 'exerciseStrict',
-                  query: {
-                    ...query,
-                    classIssueName: item.classIssueName,
-                    placeIssueName: item.placeIssueName,
-                    excellIssueName: item.excellIssueName,
-                    sequeIssueName: item.sequeIssueName,
-                    placeIssue: item.placeIssue,
-                    classIssue: item.classIssue,
-                    excellIssue: item.excellIssue,
-                    sequeIssue: item.sequeIssue,
-                  },
-                });
-              }
-            "
-            class="select-item1"
-          >
-            单项测试
-          </div>
-        </div>
-        <template #icon>
-          <div class="icon">{{ index + 1 }}</div>
-        </template>
-      </van-cell>
-    </div>
-  </view>
-</template>
-
-<script>
-import api from '@/api/index'
-export default {
-  data() {
-    return {
-      classData: [
-  
-      ],
-      query:{
-
-      }
-    };
-  },
-  methods: {
-    name() {},
-  },
-  onLoad(option){
-    this.query = option
-
-  },
-  mounted () {
-    api.exam.studentQuestionInfoSelectSxQuestionInfo(this.query).then(res=>{
-      this.classData = res.data
-
-    });
-  },
-};
-</script>
-<style>
-.custom-right-cell {
-  flex: 1.2 !important;
-}
-</style>
-
-<style lang="scss" scoped>
-.bg-white{
-    background: #ffffff;
-}
-.cell-box {
-  display: flex;
-  padding: 5px 15px;
-  flex-wrap: wrap;
-  justify-content: space-between;
-  .cell {
-    width: 100%;
-    border-bottom: 1px solid #ddd;
-    line-height: 28px;
-
-    // box-shadow: 0px 0px 10px rgba(124, 129, 136, 0.2);
-  }
-  .select {
-    display: flex;
-    flex-direction: row;
-    color: white;
-    flex: 1.2;
-
-    .select-item0 {
-      padding: 0 12px;
-      background: #498ef5;
-      margin-right: 10px;
-      border-radius: 8px;
-      font-size: 12px;
-    }
-
-    .select-item1 {
-      padding: 0 12px;
-      background: #06bd5e;
-      font-size: 12px;
-      border-radius: 8px;
-    }
-  }
-  .icon {
-    width: 20px;
-    height: 20px;
-    background: #498ef5;
-    border-radius: 50%;
-    font-weight: 500;
-    font-family: PingFang SC;
-    font-size: 13px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    color: #ffffff;
-    margin-right: 5px;
-  }
-}
-</style>