useUnit.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. import {
  2. onLoad,
  3. onReady,
  4. } from "@dcloudio/uni-app"
  5. import {
  6. reactive,
  7. ref,
  8. computed,
  9. toRefs,
  10. onMounted,
  11. watch
  12. } from "vue";
  13. import {
  14. catchError,
  15. toast
  16. } from "@/utils/common.js"
  17. import * as httpUnit from "@/api/unitTest.js"
  18. import cacheManager, {useUnitTestTishi} from "@/utils/cacheManager.js"
  19. function useJifen() {
  20. const data = reactive({
  21. rightAnswer: 0, // 答对
  22. wrongAnswer: 0, // 答错
  23. jifen: 0, // 积分
  24. zhangType: '' // 当前章类型 'last' 代表最后一章,最后一章无继续
  25. })
  26. function updateJifen({rightAnswer,wrongAnswer,jifen}) {
  27. data.rightAnswer = rightAnswer;
  28. data.wrongAnswer = wrongAnswer;
  29. data.jifen = jifen;
  30. }
  31. return {
  32. ...toRefs(data),
  33. updateJifen
  34. }
  35. }
  36. export function useExam() {
  37. // 缓存
  38. const { showTishi, handleCloseTishi, handleShowTishi} = useTishiLeftRight()
  39. const {rightAnswer,wrongAnswer,jifen, updateJifen} = useJifen();
  40. const data = reactive({
  41. count: 0, // 已答题数
  42. total: 0, // 总题数
  43. current: 0, // 当前试题序列
  44. list: [], // 试题列表
  45. jieId: null, // 节Id
  46. zhangId: null,
  47. nianji: null,
  48. xueke: null,
  49. })
  50. onLoad((options) => {
  51. const { cardId } = cacheManager.get('auth');
  52. const {
  53. jieId,zhangId,nianji
  54. } = options;
  55. data.jieId = jieId; // 需要路由参数 节Id
  56. data.zhangId = zhangId;// 需要路由参数 章Id
  57. data.nianji = nianji; // 需要年纪Id 来执行返回页面
  58. data.xueke = cardId; // 需要年纪Id 来执行返回页面
  59. // 初始化页面数据
  60. initPage();
  61. })
  62. watch(() => data.list, (val) => {
  63. const list = data.list.filter(item => item.reply!==null);
  64. data.count = list.length;
  65. },{deep: true})
  66. // 初始化页面数据
  67. async function initPage() {
  68. const [err, cdata] = await catchError(httpUnit.getExamData({
  69. jieId: data.jieId
  70. }));
  71. if (err) {
  72. toast("单元测试数据获取异常");
  73. return;
  74. }
  75. refreshExam(cdata);
  76. }
  77. function formatListToUse(list) {
  78. list.forEach((item, index) => {
  79. item.mta_show = false;
  80. item.reply = null;
  81. })
  82. }
  83. // 数据赋值
  84. function refreshExam(list) {
  85. const cList = list;
  86. formatListToUse(cList)
  87. data.list = cList;
  88. data.total = cList.length;
  89. handleShowTishi();
  90. }
  91. // 交卷
  92. async function handleSubmit(dom) {
  93. const result = [];
  94. data.list.forEach(item => {
  95. result.push({reply: item.reply,stId: item.stId})
  96. })
  97. const [error, cdata] =await catchError(httpUnit.getExamSubmit({
  98. jieId: data.jieId,
  99. shitiList: result
  100. }));
  101. if (error) {
  102. toast("单元测试数据提交异常");
  103. return ;
  104. }
  105. dom.showPopup({
  106. right:cdata.dui,
  107. wrong:cdata.cuo,
  108. jifen:cdata.jifen
  109. });
  110. }
  111. return {
  112. ...toRefs(data),
  113. rightAnswer,
  114. wrongAnswer,
  115. jifen,
  116. showTishi,
  117. handleSubmit,
  118. initPage,
  119. handleCloseTishi,
  120. handleShowTishi
  121. }
  122. }
  123. // 提示信息显示隐藏
  124. function useTishiLeftRight() {
  125. const { updateTishi, getTishi} = useUnitTestTishi();
  126. const showTishi = ref(false);
  127. // 大鹅关闭追加缓存 --- 单独针对当前手机的缓存提示
  128. function handleCloseTishi() {
  129. updateTishi();
  130. showTishi.value = false;
  131. }
  132. // 大鹅显示追加缓存 --- 单独针对当前手机的缓存提示
  133. function handleShowTishi() {
  134. const isNotShow = Boolean(getTishi());
  135. showTishi.value = !isNotShow;
  136. }
  137. return {
  138. showTishi,
  139. handleCloseTishi,
  140. handleShowTishi
  141. }
  142. }