1
litian
2025-06-11 f4c18bfd091fdffbd3c4b914ab9eab96e536cfe4
1
8个文件已修改
2个文件已添加
332 ■■■■■ 已修改文件
electron/config.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/menu/cuoTi.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/menu/shouCang.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/config.ts 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/child.ts 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/plugin/axios/index.ts 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/examination/index.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/readerPages/webHome.vue 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
electron/config.ts
@@ -1,5 +1,6 @@
// 测试
export const ctx = "http://182.92.203.7:3001";
// export const ctx = "https://jsek.bnuic.com";
// export const ctx = "http://182.92.203.7:3001";
export const ctx = "https://jsek.bnuic.com";
// export const ctx = "https://www.tepcb.com";
export const downloaderFileCtx = "http://182.92.203.7:3007/DigitalTextbookReader";
index.html
@@ -14,7 +14,7 @@
<body>
  <div id="parentApp"></div>
  <script type="module" src="/src/main.ts"></script>
  <script type="module" src="/src/main.ts?v=1.0"></script>
</body>
</html>
src/assets/images/menu/cuoTi.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1749464370740" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3090" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M870.4 0H153.6C97.28 0 51.2 46.08 51.2 102.4v819.2c0 56.32 46.08 102.4 102.4 102.4h179.2c14.1312 0 25.6-11.4688 25.6-25.6s-11.4688-25.6-25.6-25.6H153.6c-28.2624 0-51.2-23.04-51.2-51.2V102.4c0-28.2624 22.9376-51.2 51.2-51.2h716.8c28.2624 0 51.2 22.9376 51.2 51.2v179.2c0 14.1312 11.4688 25.6 25.6 25.6s25.6-11.4688 25.6-25.6V102.4C972.8 46.08 926.72 0 870.4 0z" p-id="3091"></path><path d="M640 358.4c-183.808 0-332.8 148.992-332.8 332.8s148.992 332.8 332.8 332.8 332.8-148.992 332.8-332.8-148.992-332.8-332.8-332.8z m0 614.4c-155.2384 0-281.6-126.3616-281.6-281.6 0-155.3408 126.3616-281.6 281.6-281.6s281.6 126.2592 281.6 281.6c0 155.2384-126.3616 281.6-281.6 281.6zM281.6 256h460.8c14.1312 0 25.6-11.5712 25.6-25.6 0-14.1312-11.4688-25.6-25.6-25.6H281.6c-14.0288 0-25.6 11.4688-25.6 25.6 0 14.0288 11.5712 25.6 25.6 25.6zM281.6 460.8h51.2c14.1312 0 25.6-11.5712 25.6-25.6 0-14.1312-11.4688-25.6-25.6-25.6h-51.2c-14.0288 0-25.6 11.4688-25.6 25.6 0 14.0288 11.5712 25.6 25.6 25.6z" p-id="3092"></path><path d="M767.6928 564.4288c-9.9328-9.9328-26.2144-9.9328-36.2496 0l-90.5216 90.5216-90.5216-90.5216c-9.9328-9.9328-26.2144-9.9328-36.2496 0-9.9328 10.0352-9.9328 26.3168 0 36.2496l90.5216 90.5216-90.5216 90.5216c-10.0352 10.0352-10.0352 26.3168 0 36.2496s26.2144 9.9328 36.2496 0l90.5216-90.5216 90.5216 90.5216c9.9328 9.9328 26.3168 9.9328 36.2496 0 9.9328-10.0352 9.9328-26.3168 0-36.2496L677.1712 691.2l90.5216-90.5216c9.9328-9.9328 9.9328-26.2144 0-36.2496z" p-id="3093"></path></svg>
src/assets/images/menu/shouCang.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1749464608225" class="icon" viewBox="0 0 1152 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="27447" xmlns:xlink="http://www.w3.org/1999/xlink" width="36" height="32"><path d="M96 198.4c-12.8 19.2-12.8 25.6-19.2 32 0 6.4-6.4 6.4-6.4 12.8v556.8c0 44.8 0 64 12.8 76.8 6.4 12.8 12.8 19.2 25.6 25.6 12.8 6.4 32 12.8 76.8 12.8h780.8c44.8 0 64 0 76.8-12.8 12.8-6.4 19.2-12.8 25.6-25.6 6.4-12.8 12.8-32 12.8-76.8V384c0-44.8 0-64-12.8-76.8-6.4-12.8-12.8-19.2-25.6-25.6-12.8-6.4-32-12.8-76.8-12.8H416c-38.4 0-70.4-32-70.4-70.4v-64c0-32-25.6-64-64-64H185.6c-6.4 0-6.4 0-6.4 6.4-6.4 6.4-6.4 12.8-19.2 32l-64 89.6zM384 51.2h448c76.8 0 147.2 51.2 172.8 121.6l6.4 19.2c32 0 44.8 6.4 70.4 19.2 25.6 12.8 44.8 32 57.6 57.6 6.4 32 12.8 57.6 12.8 115.2v422.4c0 57.6-6.4 83.2-19.2 108.8-12.8 25.6-32 44.8-57.6 57.6-32 12.8-57.6 19.2-108.8 19.2H185.6c-57.6 0-83.2-6.4-108.8-19.2-25.6-12.8-44.8-32-57.6-57.6-12.8-25.6-19.2-51.2-19.2-108.8V288v-51.2c0-12.8 6.4-19.2 12.8-32s12.8-25.6 25.6-44.8l57.6-89.6c19.2-25.6 25.6-32 38.4-44.8 12.8-6.4 19.2-12.8 32-19.2 19.2-6.4 32-6.4 57.6-6.4h51.2C320 0 364.8 19.2 384 51.2zM416 128v70.4h518.4C921.6 153.6 876.8 128 832 128H416z m371.2 294.4c57.6 57.6 57.6 153.6 0 217.6l-140.8 153.6c-12.8 12.8-32 25.6-51.2 25.6s-38.4-6.4-51.2-25.6L403.2 640c-57.6-57.6-57.6-153.6 0-217.6 51.2-57.6 134.4-64 192-12.8 57.6-44.8 140.8-44.8 192 12.8z m-217.6 64l-12.8-12.8c-25.6-32-70.4-32-102.4 0s-32 89.6 0 121.6l140.8 153.6 140.8-153.6c32-32 32-89.6 0-121.6-25.6-32-70.4-32-102.4 0l-12.8 12.8c-6.4 6.4-19.2 12.8-25.6 12.8-12.8 0-19.2-6.4-25.6-12.8z" fill="#606266" p-id="27448"></path></svg>
src/assets/js/config.ts
@@ -1,14 +1,20 @@
// 测试
// export const requestCtx = "https://jsek.bnuic.com"; //jsek
// export const appId = 3;
export const requestCtx = "http://182.92.203.7:3007";
export const appId = 12
// export const requestCtx = "https://www.tepcb.com"; //lvyoushe
// export const appId = 2;
export const requestCtx = "https://jsek.bnuic.com"; //jsek
export const appId = 3;
// export const requestCtx = "http://182.92.203.7:3007";
// export const appId = 27
export const requestTimeOut = 300000; // 请求超时时间
export const tokenKey = "token";
export const userInfoKey = "userInfo"; // 用户信息key
export const appRefCode = "tourismWebsite";
// export const tokenKey = "token";
export const tokenKey = "jsek-token";
export const userInfoKey = "jesk-userInfo"; // 用户信息key
// export const userInfoKey = "userInfo"; // 用户信息key
// export const appRefCode = "tourismWebsite";
export const appRefCode = "jingshieke";
export const goodsStore = `defaultGoodsStore${appId}`; // 默认商品库(书城)
export const digitalTextbooks = "jsek_digitalTextbooks";//数字教材
// export const digitalTextbooks = "tourism_digitalTextbooks";//旅游社数字教材
export const digitalTextbooks = "jsek_digitalTextbooks";//京师智教数字教材
// export const loginCtx = "http://jsek.bnuic.com/home/#/digitalTextbooks?login=true"; //登录链接
export const loginCtx = ""; //登录链接
src/child.ts
@@ -8,8 +8,107 @@
//   console.log("父层变化:",state, prev)
//   // window.qiankunState = state;
// })
const testBooks = {
  botany: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/botany',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  aurturingAndEducationAged0to3: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/aurturingAndEducationAged0to3',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  childcareInstitutionsManagement: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/childcareInstitutionsManagement',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  preschoolGameGuidance: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/preschoolGameGuidance',
    container: '#container',
    activeRule: '/home'
  },
  kindergartenLanguageActivity: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/kindergartenLanguageActivity',
    container: '#container',
    activeRule: '/home'
  },
  preschoolEvaluation: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/preschoolEvaluation',
    container: '#container',
    activeRule: '/home'
  },
  preschoolBasicKnowledge: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/preschoolBasicKnowledge',
    container: '#container',
    activeRule: '/home'
  },
  OralAndBroadcasting: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/OralAndBroadcasting',
    container: '#container',
    activeRule: '/home'
  },
  cognitiveLanDevEduAges0to3: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/cognitiveLanDevEduAges0to3',
    container: '#container',
    activeRule: '/home'
  },
  toddlerSportsSafetyProtection: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/toddlerSportsSafetyProtection',
    container: '#container',
    activeRule: '/home'
  },
  artInitiationForAges0to3: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/artInitiationForAges0to3',
    container: '#container',
    activeRule: '/home'
  },
  childIllnessPreventionCare: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/childIllnessPreventionCare',
    container: '#container',
    activeRule: '/home'
  },
  behaviorObserveAndGuid: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/behaviorObserveAndGuid',
    container: '#container',
    activeRule: '/home'
  },
  hydraulicTransmission: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/hydraulicTransmission',
    container: '#container',
    activeRule: '/home'
  },
  foodSensoryInspection: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/foodSensoryInspection',
    container: '#container',
    activeRule: '/home'
  },
  MMVRTCMP: {
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/MMVRTCMP',
    container: '#container',
    activeRule: '/home'
  }
}
export const microApps = {
const jsekBooks = {
  childHealth: {
    // - 必选,微应用的名称,微应用之间必须确保唯一
    name: 'app-content',
@@ -101,104 +200,39 @@
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  botany:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/botany',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  aurturingAndEducationAged0to3:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/aurturingAndEducationAged0to3',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  childcareInstitutionsManagement:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/childcareInstitutionsManagement',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  preschoolGameGuidance:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/preschoolGameGuidance',
    container: '#container',
    activeRule: '/home'
  },
  kindergartenLanguageActivity:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/kindergartenLanguageActivity',
    container: '#container',
    activeRule: '/home'
  },
  preschoolEvaluation:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/preschoolEvaluation',
    container: '#container',
    activeRule: '/home'
  },
  preschoolBasicKnowledge:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/preschoolBasicKnowledge',
    container: '#container',
    activeRule: '/home'
  },
  kindergartenActivitiesDesignGuidance:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/kindergartenActivitiesDesignGuidance',
    entry: '//jsek.bnuic.com/books/book/kindergartenActivitiesDesignGuidance',
    container: '#container',
    activeRule: '/home'
  },
  policiesAndRegulations:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/policiesAndRegulations',
    container: '#container',
    activeRule: '/home'
  },
  OralAndBroadcasting:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/OralAndBroadcasting',
    container: '#container',
    activeRule: '/home'
  },
  cognitiveLanDevEduAges0to3:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/cognitiveLanDevEduAges0to3',
    container: '#container',
    activeRule: '/home'
  },
  toddlerSportsSafetyProtection:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/toddlerSportsSafetyProtection',
    container: '#container',
    activeRule: '/home'
  },
  aviationPassengerTransport6th:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/aviationPassengerTransport6th',
    container: '#container',
    activeRule: '/home'
  },
  artInitiationForAges0to3:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/artInitiationForAges0to3',
    container: '#container',
    activeRule: '/home'
  },
  childIllnessPreventionCare:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/childIllnessPreventionCare',
    container: '#container',
    activeRule: '/home'
  },
  behaviorObserveAndGuid:{
    name: 'app-content',
    entry: '//182.92.203.7:3007/books/book/behaviorObserveAndGuid',
    container: '#container',
    activeRule: '/home'
  }
  }
const tourismBooks = {
  policiesAndRegulations: {
    name: 'app-content',
    entry: '//www.tepcb.com/books/book/policiesAndRegulations',
    container: '#container',
    activeRule: '/home'
  },
  aviationPassengerTransport6th: {
    name: 'app-content',
    entry: '//www.tepcb.com/books/book/aviationPassengerTransport6th',
    container: '#container',
    activeRule: '/home'
  },
  hotelEnglishTrainingBrochure2nd: {
    name: 'app-content',
    entry: '//www.tepcb.com/books/book/hotelEnglishTrainingBrochure2nd',
    container: '#container',
    activeRule: '/home'
}
}
export const microApps = jsekBooks
window.qiankunActions = actions
src/plugin/axios/index.ts
@@ -2,6 +2,7 @@
import { ctx } from '../../../electron/config'
import router from '@/router'
import { tokenKey } from '@/assets/js/config.ts'
// 创建 axios 实例
const service = axios.create({
@@ -12,7 +13,7 @@
// 请求拦截器
service.interceptors.request.use(
  (config) => {
    const token = localStorage.getItem('token')
    const token = localStorage.getItem(tokenKey)
    if (token) config.headers['Authorization'] = `bearer ${token}`
    return config
  },
src/views/examination/index.vue
@@ -703,6 +703,7 @@
  // 11
  for (let qindex = 0; qindex < examination.collectList.length; qindex++) {
    const qitem = examination.collectList[qindex]
    if (qitem) {
    let query = {
      storeInfo: props.activeBook.storeRefcode,
      path: '*',
@@ -856,6 +857,7 @@
      }
    })
  }
  }
  // 22
  cardList[0].infoList = singleChoiceArr
  cardList[1].infoList = judgeArr
@@ -896,7 +898,7 @@
      }
    }
  }
  console.log('收藏json',jsonCollectList);
  console.log('收藏json', jsonCollectList)
  for (let index = 0; index < jsonCollectList.length; index++) {
    const item = jsonCollectList[index]
  if (item.questionType == 'singleChoice') {
@@ -929,8 +931,12 @@
        if (error.length) {
          console.log('有吗', error)
          examination.errorList = error.find((citem:any) => citem.type == 'bits').errorList
          examination.allError[0].errorList = error.find((citem:any) => citem.type == 'bits').errorList
          examination.allError[1].errorList = error.find((citem:any) => citem.type == 'json').errorList
          examination.allError[0].errorList = error.find(
            (citem: any) => citem.type == 'bits'
          ).errorList
          examination.allError[1].errorList = error.find(
            (citem: any) => citem.type == 'json'
          ).errorList
        }
      } catch (error) {}
      if (examination.allError[0].errorList.length || examination.allError[1].errorList.length) {
@@ -1237,8 +1243,11 @@
          }
        }
      }
      if (!citem.isRight && citem.questionType != 'shortAnswer' && citem.questionType != 'formula') {
      if (
        !citem.isRight &&
        citem.questionType != 'shortAnswer' &&
        citem.questionType != 'formula'
      ) {
        // 客观题回答错误 记录错题
        if (citem.isJson) {
          if (
@@ -1289,8 +1298,7 @@
  if (props.type == 'option') {
    recordAnswerData()
  }
  console.log('提交错题',examination.errorList,examination.allError);
  console.log('提交错题', examination.errorList, examination.allError)
}
// 处理答题数据
const recordAnswerData = () => {
@@ -1313,9 +1321,9 @@
const saveAnswerData = () => {
  let arr = []  
  for (let index = 0; index < examination.cardList.length; index++) {
    const item = examination.cardList[index];
    const item = examination.cardList[index]
    for (let cindex = 0; cindex < item.infoList.length; cindex++) {
      const citem = item.infoList[cindex];
      const citem = item.infoList[cindex]
      if(citem.userAnswer && citem.userAnswer.length) {
        arr.push({
          id:citem.id,
@@ -1324,7 +1332,7 @@
      }
    }
  }
  console.log('用户答案',arr);
  console.log('用户答案', arr)
  setUserAnswer(arr)
}
// 未提交退出答题,保存用户答案
src/views/login.vue
@@ -70,7 +70,7 @@
      loading.value = true
      MG.identity
        .loginByPassword({
          appRefCode: 'tourismWebsite',
          appRefCode: config.appRefCode,
          loginName: loginData.value.username,
          password: loginData.value.password,
          platform: 'string'
src/views/readerPages/webHome.vue
@@ -585,8 +585,15 @@
        </div>
        <!-- 题库底部收藏夹和错题集 -->
        <ul class="question-bottom" v-if="activeMenu == '题库'">
          <li @click="selectExercisesType('collection')">收藏夹</li>
          <li @click="selectExercisesType('wrong')">错题本</li>
          <li @click="selectExercisesType('collection')" v-if="bookConfig.textbookComponents.indexOf('A434F2C0') > -1">
            <div><img :src="shouCang"  class="hover" /></div>
            <div>收藏夹</div>
          </li>
          <li @click="selectExercisesType('wrong')" v-if="bookConfig.textbookComponents.indexOf('AFC1A288') > -1">
            <div><img :src="cuoTi"  class="hover" /></div>
            <div>错题本</div>
          </li>
        </ul>
        <!-- 菜单内容收起 -->
        <div class="menuStateBox" v-if="menuState.open">
@@ -1264,11 +1271,11 @@
    title="AI智能问答"
    align-center
    v-model="wendaVisible"
    width="60%"
    width="80%"
    class="myAnserDialogs"
  >
    <div class="wendabox">
      <iframe src="https://yiyan.baidu.com/" frameborder="0"></iframe>
      <iframe :src="aiQuestion" frameborder="0"></iframe>
    </div>
  </el-dialog>
  <el-dialog title="词典" align-center v-model="cidianVisible" width="60%" class="myAnserDialogs">
@@ -1447,6 +1454,9 @@
import shanchu from '@/assets/images/operation/delete.png'
import bianji from '@/assets/images/operation/bianji.png'
import video from '@/assets/images/content/resource.png'
import shouCang from '@/assets/images/menu/shouCang.svg'
import cuoTi from '@/assets/images/menu/cuoTi.svg'
//引入VueOfficeDocx组件
import VueOfficeDocx from '@vue-office/docx'
//引入相关样式
@@ -1460,7 +1470,8 @@
import { loadMicroApp } from 'qiankun'
import { microApps } from '@/child.ts'
import { open } from 'fs'
let token = localStorage.getItem('token')
import { digitalTextbooks, tokenKey} from '@/assets/js/config.ts'
let token = localStorage.getItem(tokenKey)
const canvasWith = ref(800)
const canvasheight = ref(3000)
const screenWidth = ref(
@@ -1635,7 +1646,7 @@
const getBookInfo = () => {
  const obj = {
    storeInfo: 'jsek_digitalTextbooks',
    storeInfo: digitalTextbooks,
    path: '*',
    queryType: '*',
    coverSize: {
@@ -1658,8 +1669,7 @@
    }
  }
  MG.store.getProductList(obj).then((res) => {
    console.log(res.datas, '图书信息')
    if (!res.datas.length) return
    if(res.datas.length > 0){
    bookInfo.value = res.datas[0]
    if (res.datas[0].purchasedSaleMethodIdList.indexOf(res.datas[0].defaultSaleMethodId) > -1) {
      isBuy.value = true
@@ -1667,6 +1677,9 @@
      isBuy.value = false
    }
    tryPageCount.value = Number(res.datas[0].probationPage)
    }else{
      tryPageCount.value = 0
    }
  })
}
@@ -1954,7 +1967,7 @@
}
const handleNodeClick = (data) => {
  if (!isBuy.value) {
  if (!isBuy.value && tryPageCount.value > 0) {
    if (data.start < tryPageCount.value) {
      headerData.process = data.start
      if (window.qiankunState && window.qiankunState.gotoPage)
@@ -2240,7 +2253,6 @@
  } else if (data.resourceType == '模型') {
    console.log(data, 222)
    let file = bookConfig.value.requestCtx + '/file/api/ApiDownload?md5=' + data.md5
    console.log(file.exd, 777)
    const ctx = 'https://jsek.bnuic.com'
    if (data.md5) {
      sceneUrl.value =
@@ -2961,13 +2973,15 @@
  open: true
})
const resourceUrl = ref('')
const aiQuestion = ref("")
const selectTeachTools = (item: any) => {
  if (token) {
    activeTool.value = item.name
    switch (item.name) {
      case 'AI智能问答':
        aiQuestion.value = ""
        wendaVisible.value = true
        aiQuestion.value = bookConfig.value.aiQuestion ? bookConfig.value.aiQuestion : "https://yiyan.baidu.com/"
        break
      case 'GGB函数工具':
        functionVisible.value = true
@@ -5130,9 +5144,15 @@
          border: 1px solid #cfcfcf;
          border-radius: 10px;
          background-color: #f9f9f9;
          display: flex;
          justify-content: center;
          align-items: center;
          text-align: center;
          padding-top:10px;
          // display: flex;
          // justify-content: center;
          // align-items: center;
          img{
            width:20px;
            height:20px;
          }
        }
      }
    }
@@ -5757,7 +5777,7 @@
}
.myAnserDialogs {
  width: 700px;
  width: 80%;
  height: 90vh;
}