123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- import { ref, onBeforeMount, computed } from "vue";
- import { useRoute, useRouter } from "vue-router";
- import testModel from "@/model/test";
- import { CollectionModel } from "@/model/collection";
- /**获取题目列表 */
- export const useSubjectList = (type: ExerciseType.ListType) => {
- type TestModelListResType = Awaited<ReturnType<typeof testModel.getList | typeof testModel.getFreeList>>;
- const subjectList = ref<TestModelListResType["list"]>([]); //题目列表
- const subjectTotal = ref(0); //题目总数
- const query = useRoute().query; //路由query参数
- const currentSubjectIndex = ref(0); //当前题目下标
- const vehicle = useRouter().currentRoute.value.query.vehicle as string; //路由qvehicle参数
- const subject = useRouter().currentRoute.value.query.subject as string; //路由subject参数
- onBeforeMount(async () => {
- let res: TestModelListResType;
- if (type == "normal" || type == "test") {
- res = await testModel.getList({
- ...query,
- });
- }
- else if (type == "localWrong") {
- let localVuex = JSON.parse(window.localStorage.getItem('vuex') || '{}')
- let tempUserWrongKey = localVuex.userData.openid + '_用户临时错题_' + subject
- let wrongSet: [any] = JSON.parse(window.sessionStorage.getItem(tempUserWrongKey) || "[]")
- wrongSet.forEach(item => {
- item.userAnswer = item.questionType !== 3 ? "" : []
- item.isTrue = null
- })
- res = {
- total: wrongSet.length,
- list: wrongSet
- } as TestModelListResType
- }
- else if (type == "wrong") {
- let localVuex = JSON.parse(window.localStorage.getItem('vuex') || '{}')
- let userWrongKey = localVuex.userData.openid + "_用户错题id_" + subject;
- let userWrongIds: { id: number, timestamp: number }[] = JSON.parse(window.localStorage.getItem(userWrongKey) || "[]")
- let ids = userWrongIds.map(item => {
- return item.id
- })
- const result = testModel.getBatchList({
- ids: ids
- }).then(res => {
- subjectList.value = res.list;
- subjectTotal.value = res.total;
- })
- // const collectionList.value.push(...result.collectionList)
- // const questionList.value.push(...result.rows)
- }
- else if (type == "collection") {
- const collectionModel = new CollectionModel(type);
- const result = await collectionModel.getList({
- carType: query.vehicle as CollectionAndWrongType.CarType,
- km: query.name as CollectionAndWrongType.Km,
- pageNum: 1,
- pageSize: 50
- });
- console.log(result.collectionList)
- if (result.rows.length == 0) {
- return
- }
- result.rows.forEach(item => {
- item.isTrue = null
- if (typeof item.opts == "string") {
- item.opts = item.opts.split("-")
- }
- })
- let questionItem: Test.QuestionInfo = result.rows[0]
- let questionIndex = 0
- //排序
- if (query.questionId) {
- result.rows.forEach((item, index) => {
- if (item.id == Number(query.questionId)) {
- questionIndex = index
- questionItem = item
- }
- })
- result.rows.splice(questionIndex, 1)
- result.rows.unshift(questionItem)
- }
- res = {
- total: result.total,
- list: result.rows
- }
- }
- else {
- res = await testModel.getFreeList({
- ...query,
- });
- }
- subjectList.value = res.list;
- subjectTotal.value = res.total;
- });
- //当前题目内容
- const currentSubject = computed(() => {
- console.log(subjectList.value[currentSubjectIndex.value])
- return subjectList.value[currentSubjectIndex.value];
- });
- return {
- subjectList,
- subjectTotal,
- currentSubject,
- currentSubjectIndex,
- };
- };
|