import { onLoad, onReady, } from "@dcloudio/uni-app" import { reactive, ref, computed, toRefs, onMounted, } from "vue"; import { catchError, toast } from "@/utils/common.js" import * as httpUnit from "@/api/unitTest.js" function useJifen() { const data = reactive({ rightAnswer: 0, // 答对 wrongAnswer: 0, // 答错 jifen: 0, // 积分 }) function updateJifen({rightAnswer,wrongAnswer,jifen}) { data.rightAnswer = rightAnswer; data.wrongAnswer = wrongAnswer; data.jifen = jifen; } return { ...toRefs(data), updateJifen } } export function useExam(dom) { const {rightAnswer,wrongAnswer,jifen, updateJifen} = useJifen(); const data = reactive({ count: 0, // 已答题数 total: 0, // 总题数 current: 0, // 当前试题序列 list: [], // 试题列表 jieId: null, // 节Id }) // 当前试题 const activeQa = computed(() => data.list.length ? data.list[data.current] : null); // 第一题 const isFirst = computed(() => { if (!activeQa.value) return false; return activeQa.value.id === data.list[0].id; }) // 最后一题 const isLast = computed(() => { if (!activeQa.value) return false; const clength = data.list.length; return activeQa.value.id === data.list[clength - 1].id; }) onLoad((options) => { const { jieId } = options; data.jieId = jieId; // 初始化页面数据 initPage(); }) // 下一题 function nextQuestion() { data.current = data.current + 1; } // 前一题 function prevQuestion() { data.current = data.current - 1; } // 初始化页面数据 async function initPage() { const [err, data] = await catchError(httpUnit.getExamData({ nianji: 1, xueqi: 1 })); if (err) { toast("单元测试数据获取异常"); return; } refreshExam(data); } // 数据赋值 function refreshExam(list) { // FIXME 模拟id 待删除 list.forEach((item, index) => item.id = index) data.list = list; data.total = list.length; } // 交卷 function handleSubmit() {} return { ...toRefs(data), activeQa, isFirst, isLast, isFirst, isLast, rightAnswer, wrongAnswer, jifen, nextQuestion, prevQuestion, handleSubmit, initPage } }