|
@@ -0,0 +1,134 @@
|
|
|
+import {
|
|
|
+ onLoad,
|
|
|
+ onReady,
|
|
|
+} from "@dcloudio/uni-app"
|
|
|
+import {
|
|
|
+ reactive,
|
|
|
+ ref,
|
|
|
+ computed,
|
|
|
+ toRefs,
|
|
|
+ onMounted,
|
|
|
+} from "vue";
|
|
|
+import {
|
|
|
+ catchError,
|
|
|
+ toast
|
|
|
+} from "@/utils/common.js"
|
|
|
+import request from "@/utils/request.js"
|
|
|
+
|
|
|
+// 获取单元测试数据
|
|
|
+function httpGetExamData() {
|
|
|
+ return request({
|
|
|
+ url: "/common/zhangjie/list",
|
|
|
+ method: "POST",
|
|
|
+ data: {
|
|
|
+ nianji: 1,
|
|
|
+ xueqi: 1
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+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(httpGetExamData());
|
|
|
+ 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
|
|
|
+ }
|
|
|
+}
|