list.ts 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. userWrongIds.sort((a,b)=>b.timestamp-a.timestamp)
  39. let ids = userWrongIds.map(item => {
  40. return item.id
  41. })
  42. testModel.getBatchList({
  43. ids: ids
  44. }).then(res => {
  45. subjectList.value = res.list;
  46. subjectTotal.value = res.total;
  47. })
  48. // const collectionList.value.push(...result.collectionList)
  49. // const questionList.value.push(...result.rows)
  50. }
  51. else if (type == "collection") {
  52. let localVuex = JSON.parse(window.localStorage.getItem('vuex') || '{}')
  53. let userCollectKey = localVuex.userData.openid + "_用户收藏id_" + subject;
  54. let userCollectIds: { id: number, timestamp: number }[] = JSON.parse(window.localStorage.getItem(userCollectKey) || "[]")
  55. userCollectIds.sort((a,b)=>b.timestamp-a.timestamp)
  56. let ids = userCollectIds.map(item => {
  57. return item.id
  58. })
  59. testModel.getBatchList({
  60. ids: ids
  61. }).then(res => {
  62. subjectList.value = res.list;
  63. subjectTotal.value = res.total;
  64. })
  65. }
  66. else {
  67. res = await testModel.getFreeList({
  68. ...query,
  69. });
  70. }
  71. subjectList.value = res.list;
  72. subjectTotal.value = res.total;
  73. });
  74. //当前题目内容
  75. const currentSubject = computed(() => {
  76. console.log(subjectList.value[currentSubjectIndex.value])
  77. return subjectList.value[currentSubjectIndex.value];
  78. });
  79. return {
  80. subjectList,
  81. subjectTotal,
  82. currentSubject,
  83. currentSubjectIndex,
  84. };
  85. };