123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- import {
- onLoad,
- onReady,
- } from "@dcloudio/uni-app"
- import {
- reactive,
- ref,
- computed,
- toRefs,
- onMounted,
- watch,
- nextTick
- } from "vue";
- import {
- catchError,
- toast
- } from "@/utils/common.js"
- import * as httpUnit from "@/api/unitTest.js"
- import cacheManager, {
- useUnitTestTishi
- } from "@/utils/cacheManager.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() {
- // 缓存
- const {
- showTishi,
- handleCloseTishi,
- handleShowTishi
- } = useTishiLeftRight()
- const {
- rightAnswer,
- wrongAnswer,
- jifen,
- updateJifen
- } = useJifen();
- const data = reactive({
- count: 0, // 已答题数
- total: 0, // 总题数
- current: 0, // 当前试题序列
- list: [], // 试题列表
- jieId: null, // 节Id
- zhangId: null,
- nianji: null,
- xueke: null,
- haveFlag: false, // 是否有下一章
- })
- onLoad((options) => {
- const jieNumber = options.jieNumber
- if (!(cacheManager.get('zhangInfo') && options.jieNumber)) {
- toast('数据错误,缓存丢失/ number丢失')
- return false
- }
- const cacheZhangInfo = cacheManager.get('zhangInfo');
- let currentObject = cacheZhangInfo.jieList.find(item => item.number == options.jieNumber);
- const {
- cardId,
- zhangId,
- nianji
- } = cacheManager.get('auth');
- data.jieId = currentObject.jieId; // 需要路由参数 节Id
- data.zhangId = zhangId; // 需要路由参数 章Id
- data.nianji = nianji; // 需要年纪Id 来执行返回页面
- data.xueke = cardId; // 需要年纪Id 来执行返回页面
- data.haveFlag = cacheZhangInfo.haveFlag
- // 初始化页面数据
- initPage();
- })
- watch(() => data.list, (val) => {
- const list = data.list.filter(item => {
- if (item.type == 3) {
- // 填空题 所有试题答完
- return !item.reply.some(citem => citem.trim() == '');
- } else {
- return item.reply !== null
- }
- });
- data.count = list.length;
- }, {
- deep: true
- })
- // 初始化页面数据
- async function initPage() {
- const [err, cdata] = await catchError(httpUnit.getExamData({
- jieId: data.jieId
- }));
- if (err) {
- toast("单元测试数据获取异常");
- return;
- }
- refreshExam(cdata);
- }
- function formatListToUse(list) {
- list.forEach((item, index) => {
- item.mta_show = false;
- item.reply = null;
- if (item.type == 3) {
- item.result = JSON.parse(item.result);
- item.placeholders = item.result.map((item, cindex) => `[bank${cindex}]`)
- item.reply = item.result.map(() => '');
- }
- })
- }
- // 数据赋值
- function refreshExam(list) {
- const cList = list;
- formatListToUse(cList)
- data.list = cList;
- data.total = cList.length;
- handleShowTishi();
- }
- // 交卷
- async function handleSubmit(dom) {
- const result = [];
- data.list.forEach(item => {
- result.push({
- reply: item.reply ? JSON.stringify(item.reply) : '',
- stId: item.stId
- })
- })
- const [error, cdata] = await catchError(httpUnit.getExamSubmit({
- jieId: data.jieId,
- shitiList: result
- }));
- if (error) {
- toast("单元测试数据提交异常");
- return;
- }
- dom.showPopup({
- right: cdata.dui,
- wrong: cdata.cuo,
- jifen: cdata.jifen
- });
- }
- return {
- ...toRefs(data),
- rightAnswer,
- wrongAnswer,
- jifen,
- showTishi,
- handleSubmit,
- initPage,
- handleCloseTishi,
- handleShowTishi
- }
- }
- // 提示信息显示隐藏
- function useTishiLeftRight() {
- const {
- updateTishi,
- getTishi
- } = useUnitTestTishi();
- const showTishi = ref(false);
- // 大鹅关闭追加缓存 --- 单独针对当前手机的缓存提示
- function handleCloseTishi() {
- updateTishi();
- showTishi.value = false;
- }
- // 大鹅显示追加缓存 --- 单独针对当前手机的缓存提示
- function handleShowTishi() {
- const isNotShow = Boolean(getTishi());
- showTishi.value = !isNotShow;
- }
- return {
- showTishi,
- handleCloseTishi,
- handleShowTishi
- }
- }
- export function useTiankongItem(popupRef) {
- const index = ref(null);
- const tiankongValue = ref(null);
- const question = ref(null);
- function refreshFn(data) {
- index.value = +data.index;
- tiankongValue.value = data.value;
- question.value = data.question;
- }
- function onBlur(dd) {
- tiankongValue.value = dd.result;
- uni.$emit('tiankongItemBlur', {
- index: dd.index,
- value: dd.result,
- question: question.value
- })
- nextTick(() => {
- tiankongValue.value = "";
- })
- }
- uni.$on('tiankongItemShow', (data) => {
- refreshFn(data);
- popupRef.value.showPopup();
- })
- return {
- index,
- tiankongValue,
- onBlur
- }
- }
|