From 0d70f01c3553b6c33e5ee86f89f8d0fbd42825d5 Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期三, 19 六月 2024 20:00:41 +0800
Subject: [PATCH] 答题器功能

---
 src/views/readerPages/webHome.vue |   84 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 78 insertions(+), 6 deletions(-)

diff --git a/src/views/readerPages/webHome.vue b/src/views/readerPages/webHome.vue
index b8b0ceb..8009c57 100644
--- a/src/views/readerPages/webHome.vue
+++ b/src/views/readerPages/webHome.vue
@@ -123,6 +123,11 @@
               <div>涔犻</div>
               <div :class="exercisesType == 'exercises' ? 'text' : 'line'"></div>
             </div>
+            <hr class="hr" v-if="bookConfig.textbookComponents.indexOf('A4821F71') > -1"/>
+            <div class="tabItem hover" @click="selectExercisesType('additional')" v-if="bookConfig.textbookComponents.indexOf('A4821F71') > -1">
+              <div>闄勫姞棰�</div>
+              <div :class="exercisesType == 'additional' ? 'text' : 'line'"></div>
+            </div>
             <hr class="hr" v-if="bookConfig.textbookComponents.indexOf('AFC1A288') > -1"/>
             <div class="tabItem hover" @click="selectExercisesType('wrong')" v-if="bookConfig.textbookComponents.indexOf('AFC1A288') > -1">
               <div>閿欓鏈�</div>
@@ -130,7 +135,7 @@
             </div>
             <hr class="hr" v-if="bookConfig.textbookComponents.indexOf('A434F2C0') > -1"/>
             <div class="tabItem hover" @click="selectExercisesType('collection')" v-if="bookConfig.textbookComponents.indexOf('A434F2C0') > -1">
-              <div>鏀惰棌</div>
+              <div>鏀惰棌澶�</div>
               <div :class="exercisesType == 'collection' ? 'text' : 'line'"></div>
             </div>
           </div>
@@ -461,7 +466,7 @@
           </div>
         </div>
         <div class="questionList" v-if="activeMenu == '棰樺簱'" v-loading="listLoading">
-          <div class="resourceSearchBox">
+          <div class="resourceSearchBox" v-if="exercisesType !== 'collection' && exercisesType !=='wrong'">
             <div class="inputBox">
               <el-input
                 class="custom-input"
@@ -482,14 +487,14 @@
               <div v-for="(item, index) in questionList" :key="index" class="reMarkItem">
                 <div
                   class="questionCon hover"
-                  @click="JumpPosition(item)"
+                  @click="clickQuestion(exercisesType,item)"
                   :title="item.resourceName"
                 >
                   {{ item.resourceName }}
                 </div>
               </div>
             </div>
-            <div v-else>
+            <div v-if="questionList.length == 0 && (exercisesType !== 'collection' && exercisesType !=='wrong')">
               <el-empty :image-size="60" description="鏆傛棤鏁版嵁" />
             </div>
           </div>
@@ -1182,12 +1187,15 @@
       <wrongQuestion  />
     </div>
   </el-dialog>
+  <!-- 绛旈鍣� -->
+  <examination ref="examinationRef"  :activeBook="bookConfig" :info="examinationData.info" :type="examinationData.type" :infoType="examinationData.infoType" />
 </template>
 
 <script setup lang="ts">
 import { ref, reactive, watch, onMounted, onBeforeMount, onBeforeUnmount, inject } from 'vue'
 import { useRouter, useRoute } from 'vue-router'
 import useClipboard from 'vue-clipboard3'
+import examination from '../examination/index.vue'
 const { toClipboard } = useClipboard()
 const MG: any = inject('MG')
 const toolClass = inject('toolClass')
@@ -1297,6 +1305,7 @@
 
 import { loadMicroApp } from 'qiankun'
 import { microApps } from '@/child.ts'
+import { open } from 'fs'
 let token = localStorage.getItem('token')
 const canvasWith = ref(1000)
 const canvasheight = ref(3000)
@@ -1543,7 +1552,7 @@
     {
       name: '棰樺簱',
       icon: question,
-      isShow: bookConfig.value.textbookComponents.indexOf('3D3B4F55') > -1 || bookConfig.value.textbookComponents.indexOf('AFC1A288') > -1 || bookConfig.value.textbookComponents.indexOf('A434F2C0') > -1
+      isShow: bookConfig.value.textbookComponents.indexOf('3D3B4F55') > -1 || bookConfig.value.textbookComponents.indexOf('AFC1A288') > -1 || bookConfig.value.textbookComponents.indexOf('A434F2C0') > -1 || bookConfig.value.textbookComponents.indexOf('A4821F71') > -1
     }
   ]
   teachToolsMenuData = [
@@ -2006,7 +2015,6 @@
 
 //璧勬簮璺宠浆鍒版寚瀹氫綅缃�
 const JumpPosition = (data) => {
-  console.log(data, '璺宠浆')
   if (window.qiankunState && window.qiankunState.gotoPage) {
     window.qiankunState.gotoPage(Number(data.chapterNum), Number(data.pagination))
   }
@@ -2036,6 +2044,13 @@
 //涔犻
 const exercisesType = ref('exercises') //涔犻绫诲瀷
 const questionList = ref([])
+const examinationRef = ref() // 绛旈鍣ㄥ疄渚�
+const examinationData = reactive({
+  type:"",  // 绛旈绫诲瀷  option 娴嬭瘯
+  infoType:"",  // 鏁版嵁鏉ユ簮  bits 姣旂壒鍚庡彴  json  鍋囨暟鎹�
+  info:{}, // 杩欏棰樼殑淇℃伅
+})
+// 鑾峰彇涔犻
 const getExercisesList = () => {
   if (token) {
     listLoading.value = true
@@ -2078,6 +2093,38 @@
   }
 }
 
+// 鑾峰彇闄勫姞棰�
+const getAdditionalList = () => {
+  if (token) {
+    listLoading.value = true
+    questionList.value = []
+    axios
+      .get(bookConfig.value.resourceUrl + '/bits-question.json')
+      .then((res) => {
+        // 澶勭悊鑾峰彇鍒扮殑json鏁版嵁
+        if (res.data.data.length > 0) {
+          questionList.value = res.data.data
+          examinationData.infoType = res.data.type
+        }
+        listLoading.value = false
+      })
+      .catch(() => {
+        listLoading.value = false
+      })
+  } else {
+    ElMessageBox.confirm('璇峰厛鐧诲綍锛�', {
+      confirmButtonText: '鍘荤櫥褰�',
+      cancelButtonText: '鍙栨秷',
+      autofocus: false,
+      type: 'warning'
+    })
+      .then(() => {
+        router.push('/login')
+      })
+      .catch(() => {})
+  }
+}
+
 //閿欓鏈�
 const wrongQuestionVisble = ref(false)
 const selectExercisesType = (type) => {
@@ -2085,12 +2132,37 @@
   searchText.value = ''
   if (type == 'exercises') {
     getExercisesList()
+  } else if(type == 'additional') {
+    getAdditionalList()
   } else if(type == 'wrong'){
+    openExaminationDialog(true,{},'errorQuestion')
     questionList.value = []
   }else{
+    openExaminationDialog(true,{},'collectQuestion')
     questionList.value = []
   }
 }
+// 棰樺垪琛ㄧ偣鍑�
+const clickQuestion = (type:string,data:any) => {
+  switch (type) {
+    case 'exercises':
+      JumpPosition(data)
+      break;
+    case 'additional':
+      openExaminationDialog(true,data,'option')
+      break;
+    default:
+      break;
+  }
+}
+const openExaminationDialog = (isSHow:boolean,data:any,type:string) => {
+  if(examinationRef.value) {
+    examinationRef.value.handleExaminationDialog(isSHow)
+    examinationData.type = type
+    examinationData.info = data
+  }
+  
+}
 
 // 閫変腑鑿滃崟
 const activeMenu = ref('鐩綍')

--
Gitblit v1.9.1