1
litian
2025-06-11 f4c18bfd091fdffbd3c4b914ab9eab96e536cfe4
1
8个文件已修改
2个文件已添加
766 ■■■■ 已修改文件
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 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/plugin/axios/index.ts 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/examination/index.vue 432 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/readerPages/webHome.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | 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',
@@ -59,147 +158,82 @@
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  civilAviation:{
  civilAviation: {
    name: 'app-content',
    entry: '//jsek.bnuic.com/books/book/civilAviation',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  civilServices:{
  civilServices: {
    name: 'app-content',
    entry: '//jsek.bnuic.com/books/book/civilServices',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  meetingPlanners:{
  meetingPlanners: {
    name: 'app-content',
    entry: '//jsek.bnuic.com/books/book/meetingPlanners',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  aviationBasicSkills:{
  aviationBasicSkills: {
    name: 'app-content',
    entry: '//jsek.bnuic.com/books/book/aviationBasicSkills',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  aviationSafety:{
  aviationSafety: {
    name: 'app-content',
    entry: '//jsek.bnuic.com/books/book/aviationSafety',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  aviationEtiquette:{
  aviationEtiquette: {
    name: 'app-content',
    entry: '//jsek.bnuic.com/books/book/aviationEtiquette',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  toddlerGameImplementation:{
  toddlerGameImplementation: {
    name: 'app-content',
    entry: '//jsek.bnuic.com/books/book/toddlerGameImplementation',
    container: '#container',
    activeRule: '/home' //匹配所有以/subPath开头的为子应用
  },
  botany:{
  kindergartenActivitiesDesignGuidance: {
    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',
    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',
    entry: '//jsek.bnuic.com/books/book/kindergartenActivitiesDesignGuidance',
    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
export default 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
@@ -165,7 +165,7 @@
  } else {
    examination.dialogVisible = false
    // handleQuestion()
    if(props.type == 'errorQuestion') {
    if (props.type == 'errorQuestion') {
      handleQuestion()
    }
    examination.cardList = []
@@ -292,8 +292,8 @@
// 题目收藏按钮,收藏和取消同一接口,取消数组减去该项id
const setCollect = (num: number, number?: number) => {
  let item = null
  if(number) {
   item = examination.cardList[num].infoList[number]
  if (number) {
    item = examination.cardList[num].infoList[number]
  } else {
    item = examination.cardList[num]
  }
@@ -355,24 +355,24 @@
      domain: 'collectData',
      keys: [props.activeBook.bookId]
    })
    .then((res:any) => {
    .then((res: any) => {
      console.log('收藏数据', res)
      try {
        const collect = JSON.parse(res[0].value)
        if (collect.length) {
          examination.collectList = collect.find((citem:any) => citem.type == 'bits').collectList
          examination.collectList = collect.find((citem: any) => citem.type == 'bits').collectList
          examination.allCollect[0].collectList = collect.find(
            (citem:any) => citem.type == 'bits'
            (citem: any) => citem.type == 'bits'
          ).collectList
          examination.allCollect[1].collectList = collect.find(
            (citem:any) => citem.type == 'json'
            (citem: any) => citem.type == 'json'
          ).collectList
        }
      } catch (error) {
        console.log('暂无数据')
      }
      if (props.type == 'option') {
        getAnswerInfo(async (res:any) => {
        getAnswerInfo(async (res: any) => {
          if (res.length) {
            // 有记录,不能答题,状态设为已提交
            examination.submitStatus = true
@@ -383,7 +383,7 @@
            }
          } else {
            const userAnswerList = await getUserAnswer()
            if(userAnswerList) {
            if (userAnswerList) {
              examination.cardList = (await getQuestionList(userAnswerList)) as any
            } else {
              examination.cardList = (await getQuestionList([])) as any
@@ -630,16 +630,16 @@
      domain: 'collectData',
      keys: [props.activeBook.bookId]
    })
    .then(async (res:any) => {
    .then(async (res: any) => {
      try {
        const collect = JSON.parse(res[0].value)
        if (collect.length) {
          examination.collectList = collect.find((citem:any) => citem.type == 'bits').collectList
          examination.collectList = collect.find((citem: any) => citem.type == 'bits').collectList
          examination.allCollect[0].collectList = collect.find(
            (citem:any) => citem.type == 'bits'
            (citem: any) => citem.type == 'bits'
          ).collectList
          examination.allCollect[1].collectList = collect.find(
            (citem:any) => citem.type == 'json'
            (citem: any) => citem.type == 'json'
          ).collectList
        }
      } catch (error) {}
@@ -669,10 +669,10 @@
}
// 获取收藏夹
const getCollectDataList = async () => {
  console.log('收藏id',examination.allCollect)
  console.log('收藏id', examination.allCollect)
  // 开始请求
  let oldData = null
  let oldList:any = []
  let oldList: any = []
  let cardList = [
    {
      catalogName: '单选题',
@@ -695,166 +695,168 @@
      infoList: []
    }
  ]
  let singleChoiceArr:any = [] // 单选
  let judgeArr:any = [] // 判断
  let shortArr:any = [] // 简答
  let multipleChoiceArr:any = [] // 多选
  let completionArr:any = [] // 填空
  let singleChoiceArr: any = [] // 单选
  let judgeArr: any = [] // 判断
  let shortArr: any = [] // 简答
  let multipleChoiceArr: any = [] // 多选
  let completionArr: any = [] // 填空
  // 11
  for (let qindex = 0; qindex < examination.collectList.length; qindex++) {
    const qitem = examination.collectList[qindex]
    let query = {
      storeInfo: props.activeBook.storeRefcode,
      path: '*',
      cmsPath: props.activeBook.rootCmsItemId,
      cmsType: '*',
      productId: props.activeBook.bookId,
      queryType: '*',
      itemIds: qitem + '',
      itemFields: {
        Embedded_QuestionBank_Stem: [],
        Embedded_QuestionBank_AnalysisCon: [],
        Embedded_QuestionBank_Answer: [],
        Embedded_QuestionBank_Option: [],
        Embedded_QuestionBank_QuestionType: [],
        Embedded_QuestionBank_StemStyle: [],
        Embedded_QuestionBank_OptionStyle: [],
        Embedded_QuestionBank_KnowledgePoint: [],
        Embedded_QuestionBank_Difficulty: []
      }
    }
    const res = await MG.store.getProductDetail(query)
    if (!res.datas) return false
    res.datas.cmsDatas[0].datas.forEach((item, index) => {
      let oldObj = {}
      if (oldList) {
        oldObj = oldList.find((item) => item.id == qitem)
      }
      const questionObj = {
        number: index + 1, // 题号
        id: item.id,
        stem:
          item.Embedded_QuestionBank_QuestionType == 'completion'
            ? JSON.parse(item.Embedded_QuestionBank_Stem)
                .stemTxt.replaceAll('<vacancy>', ',input,')
                .split(',')
            : JSON.parse(item.Embedded_QuestionBank_Stem), // 题干
        answer: item.Embedded_QuestionBank_Answer, // 答案
        option: item.Embedded_QuestionBank_Option
          ? JSON.parse(item.Embedded_QuestionBank_Option)
          : '', // 选择题选项
        analysisCon: item.Embedded_QuestionBank_AnalysisCon, // 解析
        questionType: item.Embedded_QuestionBank_QuestionType, // 题型
        optionStyle: item.Embedded_QuestionBank_OptionStyle, // 选项显示类型
        stemStyle: item.Embedded_QuestionBank_StemStyle, // 题干显示类型
        difficulty: item.Embedded_QuestionBank_Difficulty
          ? 4 - item.Embedded_QuestionBank_Difficulty
          : 0, // 难度等级
        userAnswer: oldObj
          ? oldObj.userAnswer
          : item.Embedded_QuestionBank_QuestionType == 'completion' ||
              item.Embedded_QuestionBank_QuestionType == 'multipleChoice'
            ? []
            : '',
        isSubmit: false, // 查看解析
        isRight: null, // 是否正确
        isComplete: false,
        isCollect: true,
        isUnfold: ''
      }
      // 多选和填空答案肯为数组,要转换JSON格式
      if (
        questionObj.questionType == 'completion' ||
        questionObj.questionType == 'multipleChoice'
      ) {
        try {
          questionObj.answer = JSON.parse(questionObj.answer).toString()
        } catch (error) {
          questionObj.answer = item.Embedded_QuestionBank_Answer
    if (qitem) {
      let query = {
        storeInfo: props.activeBook.storeRefcode,
        path: '*',
        cmsPath: props.activeBook.rootCmsItemId,
        cmsType: '*',
        productId: props.activeBook.bookId,
        queryType: '*',
        itemIds: qitem + '',
        itemFields: {
          Embedded_QuestionBank_Stem: [],
          Embedded_QuestionBank_AnalysisCon: [],
          Embedded_QuestionBank_Answer: [],
          Embedded_QuestionBank_Option: [],
          Embedded_QuestionBank_QuestionType: [],
          Embedded_QuestionBank_StemStyle: [],
          Embedded_QuestionBank_OptionStyle: [],
          Embedded_QuestionBank_KnowledgePoint: [],
          Embedded_QuestionBank_Difficulty: []
        }
      }
      // 填空题改造
      if (questionObj.questionType == 'completion') {
        let index = 0
        for (let i = 0; i < questionObj.stem.length; i++) {
          const item = questionObj.stem[i]
          if (item == 'input') {
            questionObj.stem[i] = {
              num: index,
              data: 'input'
            }
            questionObj.userAnswer[index] = ''
            index++
      const res = await MG.store.getProductDetail(query)
      if (!res.datas) return false
      res.datas.cmsDatas[0].datas.forEach((item, index) => {
        let oldObj = {}
        if (oldList) {
          oldObj = oldList.find((item) => item.id == qitem)
        }
        const questionObj = {
          number: index + 1, // 题号
          id: item.id,
          stem:
            item.Embedded_QuestionBank_QuestionType == 'completion'
              ? JSON.parse(item.Embedded_QuestionBank_Stem)
                  .stemTxt.replaceAll('<vacancy>', ',input,')
                  .split(',')
              : JSON.parse(item.Embedded_QuestionBank_Stem), // 题干
          answer: item.Embedded_QuestionBank_Answer, // 答案
          option: item.Embedded_QuestionBank_Option
            ? JSON.parse(item.Embedded_QuestionBank_Option)
            : '', // 选择题选项
          analysisCon: item.Embedded_QuestionBank_AnalysisCon, // 解析
          questionType: item.Embedded_QuestionBank_QuestionType, // 题型
          optionStyle: item.Embedded_QuestionBank_OptionStyle, // 选项显示类型
          stemStyle: item.Embedded_QuestionBank_StemStyle, // 题干显示类型
          difficulty: item.Embedded_QuestionBank_Difficulty
            ? 4 - item.Embedded_QuestionBank_Difficulty
            : 0, // 难度等级
          userAnswer: oldObj
            ? oldObj.userAnswer
            : item.Embedded_QuestionBank_QuestionType == 'completion' ||
                item.Embedded_QuestionBank_QuestionType == 'multipleChoice'
              ? []
              : '',
          isSubmit: false, // 查看解析
          isRight: null, // 是否正确
          isComplete: false,
          isCollect: true,
          isUnfold: ''
        }
        // 多选和填空答案肯为数组,要转换JSON格式
        if (
          questionObj.questionType == 'completion' ||
          questionObj.questionType == 'multipleChoice'
        ) {
          try {
            questionObj.answer = JSON.parse(questionObj.answer).toString()
          } catch (error) {
            questionObj.answer = item.Embedded_QuestionBank_Answer
          }
        }
      }
      // 获取图片
      if (questionObj.stemStyle == 'Image' || questionObj.stemStyle == 'TxtAndImage') {
        questionObj.stem.stemImage = getPublicImage(questionObj.stem.stemImage, 150)
      }
      if (questionObj.optionStyle == 'Image' || questionObj.optionStyle == 'TxtAndImage') {
        questionObj.option.forEach((optionItem:any) => {
          if (optionItem.img) optionItem.img = getPublicImage(optionItem.img, 150)
        })
      }
      // 题干富文本处理
      if (questionObj.stemStyle == 'RichText') {
        // questionObj.option.txt = ''
        questionObj.stem.stemTxt = questionObj.stem.stemTxt
          .replace(
        // 填空题改造
        if (questionObj.questionType == 'completion') {
          let index = 0
          for (let i = 0; i < questionObj.stem.length; i++) {
            const item = questionObj.stem[i]
            if (item == 'input') {
              questionObj.stem[i] = {
                num: index,
                data: 'input'
              }
              questionObj.userAnswer[index] = ''
              index++
            }
          }
        }
        // 获取图片
        if (questionObj.stemStyle == 'Image' || questionObj.stemStyle == 'TxtAndImage') {
          questionObj.stem.stemImage = getPublicImage(questionObj.stem.stemImage, 150)
        }
        if (questionObj.optionStyle == 'Image' || questionObj.optionStyle == 'TxtAndImage') {
          questionObj.option.forEach((optionItem: any) => {
            if (optionItem.img) optionItem.img = getPublicImage(optionItem.img, 150)
          })
        }
        // 题干富文本处理
        if (questionObj.stemStyle == 'RichText') {
          // questionObj.option.txt = ''
          questionObj.stem.stemTxt = questionObj.stem.stemTxt
            .replace(
              /\<img/gi,
              '<img style="max-width: 300rpx !important;object-fit: contain;" class="stem-rich-img" '
            )
            .replace(/\<p/gi, '<p class="stem-rich-p"')
            .replace('../file', requestCtx + '/file')
        }
        // 选项富文本处理
        if (
          questionObj.optionStyle == 'RichText' &&
          (questionObj.questionType == 'singleChoice' ||
            questionObj.questionType == 'judge' ||
            questionObj.questionType == 'multipleChoice')
        ) {
          questionObj.option.forEach((item: any) => {
            if (item.txt)
              item.txt = item.txt
                .replace(/\<img/gi, '<img class="option-rich-img"')
                .replace(/\<p/gi, '<p class="stem-rich-p"')
                .replace('../file', requestCtx + '/file')
          })
        }
        // 解析富文本处理
        if (questionObj.analysisCon && typeof questionObj.analysisCon == 'string') {
          questionObj.analysisCon = questionObj.analysisCon.replace(
            /\<img/gi,
            '<img style="max-width: 300rpx !important;object-fit: contain;" class="stem-rich-img" '
          )
          .replace(/\<p/gi, '<p class="stem-rich-p"')
          .replace('../file', requestCtx + '/file')
      }
      // 选项富文本处理
      if (
        questionObj.optionStyle == 'RichText' &&
        (questionObj.questionType == 'singleChoice' ||
          questionObj.questionType == 'judge' ||
          questionObj.questionType == 'multipleChoice')
      ) {
        questionObj.option.forEach((item:any) => {
          if (item.txt)
            item.txt = item.txt
              .replace(/\<img/gi, '<img class="option-rich-img"')
              .replace(/\<p/gi, '<p class="stem-rich-p"')
              .replace('../file', requestCtx + '/file')
        })
      }
      // 解析富文本处理
      if (questionObj.analysisCon && typeof questionObj.analysisCon == 'string') {
        questionObj.analysisCon = questionObj.analysisCon.replace(
          /\<img/gi,
          '<img style="max-width: 300rpx !important;object-fit: contain;" class="stem-rich-img" '
        )
      }
      // 听力题修改
      // if (questionObj.questionType == 'singleChoice') {
      //   const src = this.extractSourceSrc(questionObj.stem.stemTxt)
      //   if (src) {
      //     questionObj.src = src
      //     questionObj.stem.stemTxt = this.removeVideoAndAudioTags(questionObj.stem.stemTxt)
      //   }
      // }
      if (item.Embedded_QuestionBank_QuestionType == 'judge') {
        questionObj.type = '判断题'
        judgeArr.push(questionObj)
      } else if (item.Embedded_QuestionBank_QuestionType == 'singleChoice') {
        questionObj.type = '单选题'
        singleChoiceArr.push(questionObj)
      } else if (item.Embedded_QuestionBank_QuestionType == 'multipleChoice') {
        questionObj.type = '多选题'
        multipleChoiceArr.push(questionObj)
      } else if (item.Embedded_QuestionBank_QuestionType == 'completion') {
        questionObj.type = '填空题'
        completionArr.push(questionObj)
      } else if (item.Embedded_QuestionBank_QuestionType == 'shortAnswer') {
        questionObj.type = '简答题'
        shortArr.push(questionObj)
      }
    })
        }
        // 听力题修改
        // if (questionObj.questionType == 'singleChoice') {
        //   const src = this.extractSourceSrc(questionObj.stem.stemTxt)
        //   if (src) {
        //     questionObj.src = src
        //     questionObj.stem.stemTxt = this.removeVideoAndAudioTags(questionObj.stem.stemTxt)
        //   }
        // }
        if (item.Embedded_QuestionBank_QuestionType == 'judge') {
          questionObj.type = '判断题'
          judgeArr.push(questionObj)
        } else if (item.Embedded_QuestionBank_QuestionType == 'singleChoice') {
          questionObj.type = '单选题'
          singleChoiceArr.push(questionObj)
        } else if (item.Embedded_QuestionBank_QuestionType == 'multipleChoice') {
          questionObj.type = '多选题'
          multipleChoiceArr.push(questionObj)
        } else if (item.Embedded_QuestionBank_QuestionType == 'completion') {
          questionObj.type = '填空题'
          completionArr.push(questionObj)
        } else if (item.Embedded_QuestionBank_QuestionType == 'shortAnswer') {
          questionObj.type = '简答题'
          shortArr.push(questionObj)
        }
      })
    }
  }
  // 22
  cardList[0].infoList = singleChoiceArr
@@ -896,10 +898,10 @@
      }
    }
  }
  console.log('收藏json',jsonCollectList);
  console.log('收藏json', jsonCollectList)
  for (let index = 0; index < jsonCollectList.length; index++) {
    const item = jsonCollectList[index]
  if (item.questionType == 'singleChoice') {
    if (item.questionType == 'singleChoice') {
      examination.cardList[0].infoList.push(item)
    } else if (item.questionType == 'judge') {
      examination.cardList[1].infoList.push(item)
@@ -911,7 +913,7 @@
      examination.cardList[4].infoList.push(item)
    } else if (item.type && item.type == 'material') {
      examination.cardList[examination.cardList.length] = item
    }
    }
  }
  examination.cardList = examination.cardList.filter((item) => item.infoList.length > 0)
  console.log('拼接题', examination.cardList)
@@ -923,14 +925,18 @@
      domain: 'errorData',
      keys: [props.activeBook.bookId]
    })
    .then(async (res:any) => {
    .then(async (res: any) => {
      try {
        const error = JSON.parse(res[0].value)
        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.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
        }
      } catch (error) {}
      if (examination.allError[0].errorList.length || examination.allError[1].errorList.length) {
@@ -957,7 +963,7 @@
// 获取错题集
const getErrorDataList = async () => {
  let oldData = null
  let oldList:any = []
  let oldList: any = []
  let cardList = [
    {
      catalogName: '单选题',
@@ -980,11 +986,11 @@
      infoList: []
    }
  ]
  let singleChoiceArr:any = [] // 单选
  let judgeArr:any = [] // 判断
  let shortArr:any = [] // 简答
  let multipleChoiceArr:any = [] // 多选
  let completionArr:any = [] // 填空
  let singleChoiceArr: any = [] // 单选
  let judgeArr: any = [] // 判断
  let shortArr: any = [] // 简答
  let multipleChoiceArr: any = [] // 多选
  let completionArr: any = [] // 填空
  // 11
  for (let qindex = 0; qindex < examination.errorList.length; qindex++) {
    const qitem = examination.errorList[qindex]
@@ -1010,10 +1016,10 @@
    }
    const res = await MG.store.getProductDetail(query)
    if (!res.datas) return false
    res.datas.cmsDatas[0].datas.forEach((item:any, index:number) => {
    res.datas.cmsDatas[0].datas.forEach((item: any, index: number) => {
      let oldObj = {}
      if (oldList) {
        oldObj = oldList.find((item:any) => item.id == qitem)
        oldObj = oldList.find((item: any) => item.id == qitem)
      }
      const questionObj = {
        number: index + 1, // 题号
@@ -1078,7 +1084,7 @@
        questionObj.stem.stemImage = getPublicImage(questionObj.stem.stemImage, 150)
      }
      if (questionObj.optionStyle == 'Image' || questionObj.optionStyle == 'TxtAndImage') {
        questionObj.option.forEach((optionItem:any) => {
        questionObj.option.forEach((optionItem: any) => {
          if (optionItem.img) optionItem.img = getPublicImage(optionItem.img, 150)
        })
      }
@@ -1100,7 +1106,7 @@
          questionObj.questionType == 'judge' ||
          questionObj.questionType == 'multipleChoice')
      ) {
        questionObj.option.forEach((item:any) => {
        questionObj.option.forEach((item: any) => {
          if (item.txt)
            item.txt = item.txt
              .replace(/\<img/gi, '<img class="option-rich-img"')
@@ -1135,7 +1141,7 @@
      } else if (item.Embedded_QuestionBank_QuestionType == 'completion') {
        questionObj.type = '填空题'
        completionArr.push(questionObj)
      } else if (item.Embedded_QuestionBank_QuestionType == 'shortAnswer' ) {
      } else if (item.Embedded_QuestionBank_QuestionType == 'shortAnswer') {
        questionObj.type = '简答题'
        shortArr.push(questionObj)
      }
@@ -1175,7 +1181,7 @@
    for (let cindex = 0; cindex < examination.allError[1].errorList.length; cindex++) {
      const citem = examination.allError[1].errorList[cindex]
      if (item.id == citem) {
        item.isCollect = examination.allCollect[1].collectList.indexOf(item.id) > -1 ? true :false
        item.isCollect = examination.allCollect[1].collectList.indexOf(item.id) > -1 ? true : false
        item.isJson = true
        jsonCollectList.push(item)
      }
@@ -1201,7 +1207,7 @@
  examination.cardList = examination.cardList.filter((item) => item.infoList.length > 0)
}
// 批改题目  (练习,我的做题,我的收藏模式下)
const handleQuestion = () => {
const handleQuestion = () => {
  for (let index = 0; index < examination.cardList.length; index++) {
    const item = examination.cardList[index]
    for (let cindex = 0; cindex < item.infoList.length; cindex++) {
@@ -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 (
@@ -1283,14 +1292,13 @@
        }
      ]
    })
    .then((res:any) => {
    .then((res: any) => {
      console.log('错题已保存', examination.allError)
    })
  if (props.type == 'option') {
    recordAnswerData()
  }
  console.log('提交错题',examination.errorList,examination.allError);
  console.log('提交错题', examination.errorList, examination.allError)
}
// 处理答题数据
const recordAnswerData = () => {
@@ -1311,24 +1319,24 @@
}
// 未提交保存答案方法
const saveAnswerData = () => {
  let arr = []
  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];
      if(citem.userAnswer && citem.userAnswer.length) {
      const citem = item.infoList[cindex]
      if (citem.userAnswer && citem.userAnswer.length) {
        arr.push({
          id:citem.id,
          userAnswer:citem.userAnswer
          id: citem.id,
          userAnswer: citem.userAnswer
        })
      }
    }
  }
  console.log('用户答案',arr);
  console.log('用户答案', arr)
  setUserAnswer(arr)
}
// 未提交退出答题,保存用户答案
const setUserAnswer = (data:any) => {
const setUserAnswer = (data: any) => {
  MG.identity
    .setUserKey({
      setKeyRequests: [
@@ -1339,33 +1347,33 @@
        }
      ]
    })
    .then((res:any) => {
    .then((res: any) => {
      console.log('提交用户答题数据成功')
    })
}
// 获取未提交退出答题的用户答案
 const getUserAnswer = async() => {
const getUserAnswer = async () => {
  let data
  await MG.identity
    .getUserKey({
      domain: 'beforeAnswerData',
      keys: [props.info.id]
    })
    .then((res:any) => {
      if(res.length) {
    .then((res: any) => {
      if (res.length) {
        data = JSON.parse(res[0].value)
      }
    })
    return data
 }
  return data
}
// 获取用户旧答题数据(提交后)
const getAnswerInfo = (callback:any) => {
const getAnswerInfo = (callback: any) => {
  MG.identity
    .getUserKey({
      domain: 'answerData',
      keys: [props.info.id]
    })
    .then((res:any) => {
    .then((res: any) => {
      if (callback) callback(res)
    })
}
@@ -1381,18 +1389,18 @@
        }
      ]
    })
    .then((res:any) => {
    .then((res: any) => {
      console.log('提交用户答题数据成功')
    })
}
// 删除用户答题数据
const deleteAnswerInfo = (callback:any) => {
const deleteAnswerInfo = (callback: any) => {
  MG.identity
    .delUserKey({
      domain: 'answerData',
      keys: [props.info.id]
    })
    .then((res:any) => {
    .then((res: any) => {
      if (callback) callback()
    })
}
@@ -1407,7 +1415,7 @@
        }
      ]
    })
    .then((res:any) => {
    .then((res: any) => {
      console.log('收藏/取消成功')
    })
}
@@ -1422,11 +1430,11 @@
        }
      ]
    })
    .then((res:any) => {
    .then((res: any) => {
      console.log('错题已清空')
    })
}
const onChangeInput = (value:any,index:number,cindex:number,dindex:number) => {
const onChangeInput = (value: any, index: number, cindex: number, dindex: number) => {
  examination.cardList[index].infoList[cindex].userAnswer[dindex] = value
}
defineExpose({ handleExaminationDialog })
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,15 +1669,17 @@
    }
  }
  MG.store.getProductList(obj).then((res) => {
    console.log(res.datas, '图书信息')
    if (!res.datas.length) return
    bookInfo.value = res.datas[0]
    if (res.datas[0].purchasedSaleMethodIdList.indexOf(res.datas[0].defaultSaleMethodId) > -1) {
      isBuy.value = true
    } else {
      isBuy.value = false
    if(res.datas.length > 0){
      bookInfo.value = res.datas[0]
      if (res.datas[0].purchasedSaleMethodIdList.indexOf(res.datas[0].defaultSaleMethodId) > -1) {
        isBuy.value = true
      } else {
        isBuy.value = false
      }
      tryPageCount.value = Number(res.datas[0].probationPage)
    }else{
      tryPageCount.value = 0
    }
    tryPageCount.value = Number(res.datas[0].probationPage)
  })
}
@@ -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;
}