list.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import { ref, onBeforeMount, computed } from "vue";
  2. import { useRoute, useRouter } from "vue-router";
  3. import testModel from "@/model/test";
  4. import { CollectionModel } from "@/model/collection";
  5. /**获取题目列表 */
  6. export const useSubjectList = (type: ExerciseType.ListType) => {
  7. type TestModelListResType = Awaited<ReturnType<typeof testModel.getList | typeof testModel.getFreeList>>;
  8. const subjectList = ref<TestModelListResType["list"]>([]); //题目列表
  9. const subjectTotal = ref(0); //题目总数
  10. const query = useRoute().query; //路由query参数
  11. const currentSubjectIndex = ref(0); //当前题目下标
  12. const vehicle = useRouter().currentRoute.value.query.vehicle as string; //路由qvehicle参数
  13. const subject = useRouter().currentRoute.value.query.subject as string; //路由subject参数
  14. onBeforeMount(async () => {
  15. let res: TestModelListResType;
  16. if (type == "normal" || type == "test") {
  17. res = await testModel.getList({
  18. ...query,
  19. });
  20. }
  21. else if (type == "localWrong") {
  22. let localVuex = JSON.parse(window.localStorage.getItem('vuex') || '{}')
  23. let tempUserWrongKey = localVuex.userData.openid + '_用户临时错题_' + subject
  24. let wrongSet: [any] = JSON.parse(window.sessionStorage.getItem(tempUserWrongKey) || "[]")
  25. wrongSet.forEach(item => {
  26. item.userAnswer = item.questionType !== 3 ? "" : []
  27. item.isTrue = null
  28. })
  29. res = {
  30. total: wrongSet.length,
  31. list: wrongSet
  32. } as TestModelListResType
  33. }
  34. else if (type == "wrong") {
  35. let localVuex = JSON.parse(window.localStorage.getItem('vuex') || '{}')
  36. let userWrongKey = localVuex.userData.openid + "_用户错题id_" + subject;
  37. let userWrongIds: { id: number, timestamp: number }[] = JSON.parse(window.localStorage.getItem(userWrongKey) || "[]")
  38. let ids = userWrongIds.map(item => {
  39. return item.id
  40. })
  41. const result = testModel.getBatchList({
  42. ids: ids
  43. }).then(res => {
  44. subjectList.value = res.list;
  45. subjectTotal.value = res.total;
  46. })
  47. // const collectionList.value.push(...result.collectionList)
  48. // const questionList.value.push(...result.rows)
  49. }
  50. else if (type == "collection") {
  51. const collectionModel = new CollectionModel(type);
  52. const result = await collectionModel.getList({
  53. carType: query.vehicle as CollectionAndWrongType.CarType,
  54. km: query.name as CollectionAndWrongType.Km,
  55. pageNum: 1,
  56. pageSize: 50
  57. });
  58. console.log(result.collectionList)
  59. if (result.rows.length == 0) {
  60. return
  61. }
  62. result.rows.forEach(item => {
  63. item.isTrue = null
  64. if (typeof item.opts == "string") {
  65. item.opts = item.opts.split("-")
  66. }
  67. })
  68. let questionItem: Test.QuestionInfo = result.rows[0]
  69. let questionIndex = 0
  70. //排序
  71. if (query.questionId) {
  72. result.rows.forEach((item, index) => {
  73. if (item.id == Number(query.questionId)) {
  74. questionIndex = index
  75. questionItem = item
  76. }
  77. })
  78. result.rows.splice(questionIndex, 1)
  79. result.rows.unshift(questionItem)
  80. }
  81. res = {
  82. total: result.total,
  83. list: result.rows
  84. }
  85. }
  86. else {
  87. res = await testModel.getFreeList({
  88. ...query,
  89. });
  90. }
  91. subjectList.value = res.list;
  92. subjectTotal.value = res.total;
  93. });
  94. //当前题目内容
  95. const currentSubject = computed(() => {
  96. console.log(subjectList.value[currentSubjectIndex.value])
  97. return subjectList.value[currentSubjectIndex.value];
  98. });
  99. return {
  100. subjectList,
  101. subjectTotal,
  102. currentSubject,
  103. currentSubjectIndex,
  104. };
  105. };