ソースを参照

Merge branch 'beta'

qgt 1 ヶ月 前
コミット
57e7dc9f4f

+ 1 - 1
dist/index.html

@@ -27,7 +27,7 @@
     html,
     body{
       font-family: '黑体';
-    }</style><link href=./static/css/app.41f4b019ef3d9c12886b843a066985fb.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.b2299056e030e9dd4cb8.js></script><script type=text/javascript src=./static/js/app.8fff3b43d76d422f461f.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.30e7c0ad23dfa40497a8df183d36c186.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.b2299056e030e9dd4cb8.js></script><script type=text/javascript src=./static/js/app.13ba5cd459e68ea8ee68.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

ファイルの差分が大きいため隠しています
+ 0 - 0
dist/static/css/app.30e7c0ad23dfa40497a8df183d36c186.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/static/css/app.30e7c0ad23dfa40497a8df183d36c186.css.map


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/static/css/app.41f4b019ef3d9c12886b843a066985fb.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/static/css/app.41f4b019ef3d9c12886b843a066985fb.css.map


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/static/js/app.13ba5cd459e68ea8ee68.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/static/js/app.13ba5cd459e68ea8ee68.js.map


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


+ 3 - 0
src/assets/icon/newIcon/afterClass.svg

@@ -0,0 +1,3 @@
+<svg width="15" height="16" viewBox="0 0 15 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M10.3486 2.62793C10.5543 2.26864 11.0127 2.14333 11.3721 2.34863C11.6236 2.49258 11.8664 2.65139 12.0977 2.82324C12.4933 3.11727 12.8575 3.45079 13.1846 3.81738C14.3131 5.08227 15 6.74747 15 8.57031C14.9998 12.5432 11.7462 15.75 7.75 15.75C3.75375 15.75 0.500233 12.5432 0.5 8.57031C0.500015 6.74747 1.18688 5.08227 2.31543 3.81738C2.64253 3.45081 3.00667 3.11726 3.40234 2.82324C3.63359 2.65141 3.87641 2.49257 4.12793 2.34863C4.48735 2.14337 4.94574 2.26863 5.15137 2.62793C5.35668 2.98734 5.23136 3.44571 4.87207 3.65137C4.67266 3.76551 4.4802 3.89112 4.29688 4.02734C3.98291 4.26065 3.69396 4.52572 3.43457 4.81641C2.54061 5.81849 2.00001 7.1318 2 8.57031C2.00023 11.6995 4.56685 14.25 7.75 14.25C10.9331 14.25 13.4998 11.6995 13.5 8.57031C13.5 7.13181 12.9594 5.8185 12.0654 4.81641C11.806 4.52569 11.5171 4.26067 11.2031 4.02734C11.0198 3.8911 10.8274 3.76552 10.6279 3.65137C10.2686 3.44573 10.1433 2.98736 10.3486 2.62793ZM7.80371 0.232422C8.21785 0.232505 8.55371 0.568259 8.55371 0.982422V8.16211C8.55358 8.57616 8.21777 8.91203 7.80371 8.91211C7.38958 8.91211 7.05384 8.57621 7.05371 8.16211V0.982422C7.05371 0.568208 7.3895 0.232422 7.80371 0.232422Z" fill="#F53F3F"/>
+</svg>

+ 3 - 0
src/assets/icon/newIcon/return.svg

@@ -0,0 +1,3 @@
+<svg width="9" height="14" viewBox="0 0 9 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M7.5 13L1.5 7L7.5 1" stroke="black" stroke-opacity="0.9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+</svg>

+ 4 - 2
src/components/components/choseWorksDetailDialog.vue

@@ -4,6 +4,7 @@
       :visible.sync="show"
       width="100%"
       height="100%"
+      style="overflow: hidden;"
       fullscreen
       :modal="true"
       :close-on-click-modal="false"
@@ -84,7 +85,7 @@
                         >
                           (多选题)
                         </div>
-                        <div style="display: flex;align-items: center;">题目:<span v-html="renderedFormula(item1.teststitle)"></span></div>
+                        <div style="display: flex;"><span style="flex-shrink: 0;">题目:</span><span v-html="renderedFormula(item1.teststitle)"></span></div>
                       </div>
                       <img
                         v-if="item1.img"
@@ -4388,9 +4389,10 @@ ol {
 }
 
 .a_add_head >>> .katex {
-  font-size: 16px;
+  font-size: 14px;
   width: 100%;
   white-space: normal;
+  font-family: '黑体' !important;
 }
 .a_add_head >>> .katex .base{
   display: inline !important;

+ 3 - 1
src/components/dialog/selectTeachingClassDialog.vue

@@ -38,10 +38,12 @@
 					</svg>
 				</div>
 				<div class="b_main" v-loading="loading">
-          <div class="b_m_classItem" :class="{'b_m_classItem_active':selectId == item.id}" v-for="item in classList" :key="item.id" @click="selectId == item.id ? selectId = '' : selectId = item.id">
+          <template v-for="item in classList" >
+            <div class="b_m_classItem" :class="{'b_m_classItem_active':selectId == item.id}" :key="item.id" v-if="item.name" @click="selectId == item.id ? selectId = '' : selectId = item.id">
             <div>{{ item.name }}</div>
             <span v-if="item.studentNum>=0">{{ item.studentNum }}名学生</span>
           </div>
+          </template>
 
           <div class="b_m_classItem" @click="editClass" v-if="courseDetail.userid == userId">
               <div>

+ 43 - 19
src/components/easy2/studyStudent.vue

@@ -506,6 +506,7 @@
                   flex-direction: column;
                   position: relative;
                 "
+                class="renderedFor"
               >
                 <div
                   style="
@@ -725,12 +726,12 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
 
                           <div class="navListItem" v-if="vitem.type == 6">
@@ -790,12 +791,12 @@
                                 alt
                               />
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 12">
                             <div class="navText" @click="downloadFile2(vitem)">
@@ -811,12 +812,12 @@
                                 alt
                               />
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 13">
                             <div
@@ -826,12 +827,12 @@
                             >
                               {{ vitem.name }}
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 16">
                             <div
@@ -851,6 +852,24 @@
                               />
                             </div>
                           </div>
+                          <div class="navListItem" v-if="vitem.type == 17">
+                            <div
+                              class="navText"
+                              @click="checkHtml(vitem, vindex)"
+                              :class="isClickNav == vindex ? 'isClickNav' : ''"
+                            >
+                              {{ vitem.name }}
+                            </div>
+                            <div
+                              class="downIcon"
+                              @click="checkFileFull1(vitem.type, vitem)"
+                            >
+                              <img
+                                src="../../assets/icon/newIcon/allScreen.png"
+                                alt
+                              />
+                            </div>
+                          </div>
                         </div>
                         <div
                           class="fileC_box"
@@ -867,7 +886,7 @@
                                 <span v-if="vitem.text">{{ vitem.text }}-</span
                                 >{{ vitem.name }}
                               </div>
-                              <div
+                              <!-- <div
                                 class="downIcon"
                                 @click="downloadFile2(vitem)"
                               >
@@ -875,7 +894,7 @@
                                   src="../../assets/icon/newIcon/down.png"
                                   alt
                                 />
-                              </div>
+                              </div> -->
                             </div>
                           </div>
                         </div>
@@ -1567,7 +1586,7 @@
                       </div>
                     </div>
                     <div
-                      class="tooldetail"
+                      class="tooldetail renderedFor"
                       v-if="tool.toolDetail != ''"
                       :class="{
                         isUpdateToolDetailClass: toolDetailIndex == toolIndex
@@ -6205,6 +6224,7 @@
                               word-break: break-word;
                               cursor: pointer;
                             "
+                            class="renderedFor"
                           >
                             {{ index + 1 + "、"  }} <span v-html="renderedFormula(item.teststitle)"></span>
                           </div>
@@ -13025,21 +13045,21 @@
             :key="index1"
           >
             <div class="a_add_head">
-              <div style="display: flex;align-items: center;">
+              <div style="display: flex;">
                 <span class="askIndex">{{ index1 + 1 }}</span>
                 <div
                   v-if="testJson.testJson[index1].type == '1'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (单选题)
                 </div>
                 <div
                   v-if="testJson.testJson[index1].type == '2'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (多选题)
                 </div>
-                <div>题目:<span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
+                <div class="renderedFor">题目:<span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
               </div>
               <img
                 v-if="testJson.testJson[index1].img"
@@ -23194,6 +23214,8 @@ export default {
       );
     },
     checkHtml(f, i){
+      console.log('checkHtml',f, i);
+      
       this.showType = 16;
       this.pptImgUrl1 = f.url;
       this.isClickNav = i;
@@ -31101,17 +31123,19 @@ div::-webkit-scrollbar {
   overflow: hidden;
   text-overflow: ellipsis;
 }
-.pb_content >>> .katex {
-  font-size: 16px;
+
+.renderedFor >>> .katex {
+  font-size: 18px;
   width: 100%;
   white-space: normal;
+  font-family: '黑体' !important;
 }
-.pb_content >>> .katex .base{
+.renderedFor >>> .katex .base{
   display: inline !important;
   display: contents !important;
 }
 
-.pb_content >>> .katex .base .cjk_fallback{
+.renderedFor>>> .katex .base .cjk_fallback{
     white-space: normal !important;
     display: inline !important;
 }

+ 53 - 17
src/components/easy3/studyStudent.vue

@@ -522,6 +522,7 @@
                   flex-direction: column;
                   position: relative;
                 "
+                class="renderedFor"
               >
                 <div
                   style="
@@ -731,12 +732,12 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 6">
                             <div
@@ -795,12 +796,12 @@
                                 alt
                               />
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 12">
                             <div class="navText" @click="downloadFile2(vitem)">
@@ -816,12 +817,12 @@
                                 alt
                               />
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 13">
                             <div
@@ -831,12 +832,12 @@
                             >
                               {{ vitem.name }}
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 16">
                             <div
@@ -856,6 +857,24 @@
                               />
                             </div>
                           </div>
+                          <div class="navListItem" v-if="vitem.type == 17">
+                            <div
+                              class="navText"
+                              @click="checkHtml(vitem, vindex)"
+                              :class="isClickNav == vindex ? 'isClickNav' : ''"
+                            >
+                              {{ vitem.name }}
+                            </div>
+                            <div
+                              class="downIcon"
+                              @click="checkFileFull1(vitem.type, vitem)"
+                            >
+                              <img
+                                src="../../assets/icon/newIcon/allScreen.png"
+                                alt
+                              />
+                            </div>
+                          </div>
                         </div>
                         <div class="fileC_box" v-if="fileC[0].length > 0">
                           <div class="fileC_title">以下文件不支持预览</div>
@@ -869,7 +888,7 @@
                                 <span v-if="vitem.text">{{ vitem.text }}-</span
                                 >{{ vitem.name }}
                               </div>
-                              <div
+                              <!-- <div
                                 class="downIcon"
                                 @click="downloadFile2(vitem)"
                               >
@@ -877,7 +896,7 @@
                                   src="../../assets/icon/newIcon/down.png"
                                   alt
                                 />
-                              </div>
+                              </div> -->
                             </div>
                           </div>
                         </div>
@@ -1556,7 +1575,7 @@
                         </div>
                       </div>
                     </div>
-                    <div class="tooldetail" v-if="tool.toolDetail != ''" :class="{isUpdateToolDetailClass:toolDetailIndex == toolIndex}">
+                    <div class="tooldetail renderedFor" v-if="tool.toolDetail != ''" :class="{isUpdateToolDetailClass:toolDetailIndex == toolIndex}">
                       <!-- <div class="toolTitle">工具描述</div> -->
                       <!-- @click.stop="updateToolDetail(toolIndex, 2)" 点击开启修改-->
                       <div style="height:100%;"
@@ -4473,6 +4492,7 @@
                               word-break: break-word;
                               cursor: pointer;
                             "
+                            class="renderedFor"
                           >
                             {{ index + 1 + "、"  }} <span v-html="renderedFormula(item.teststitle)"></span>
                           </div>
@@ -9666,21 +9686,21 @@
             :key="index1"
           >
             <div class="a_add_head">
-              <div style="display: flex;align-items: center;">
+              <div style="display: flex;">
                 <span class="askIndex">{{ index1 + 1 }}</span>
                 <div
                   v-if="testJson.testJson[index1].type == '1'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (单选题)
                 </div>
                 <div
                   v-if="testJson.testJson[index1].type == '2'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (多选题)
                 </div>
-                <div>题目:<span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
+                <div class="renderedFor">题目:<span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
               </div>
               <img
                 v-if="testJson.testJson[index1].img"
@@ -9799,13 +9819,13 @@
                 <span class="askIndex">{{ index1 + 1 }}</span>
                 <div
                   v-if="testJson.testJson[index1].type == '1'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (单选题)
                 </div>
                 <div
                   v-if="testJson.testJson[index1].type == '2'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (多选题)
                 </div>
@@ -26358,4 +26378,20 @@ div::-webkit-scrollbar {
   overflow: hidden;
   text-overflow: ellipsis;
 }
+.renderedFor >>> .katex {
+  font-size: 18px;
+  width: 100%;
+  white-space: normal;
+  font-family: '黑体' !important;
+}
+
+.renderedFor >>> .katex .base{
+  display: inline !important;
+  display: contents !important;
+}
+
+.renderedFor >>> .katex .base .cjk_fallback{
+    white-space: normal !important;
+    display: inline !important;
+}
 </style>

+ 7 - 1
src/components/index.vue

@@ -243,7 +243,7 @@ export default {
 
   data() {
     return {
-      gotype:sessionStorage.getItem('gotype'),
+      gotype:(window.topU && window.topU.gotype) ?  window.topU.gotype : '',
       zoneList: [],
       zoneClass: [],
       page: 1,
@@ -339,6 +339,12 @@ export default {
       }else{
         window.location.href = `https://pbl.cocorobo.cn/pbl-teacher-table/dist/#/CourseCon?userid=${this.userid}&oid=${this.oid}&org=${this.org}&role=${this.role}&tType=${this.tType}`
       }
+      try {
+        window.topU.gotype = '' 
+      } catch (error) {
+        console.log(error);
+      }
+      // sessionStorage.removeItem('gotype');
     },
     search(){
       if(this.typeCheck || this.typeCheck2){

+ 284 - 0
src/components/pptEasyClass/index copy.vue

@@ -0,0 +1,284 @@
+<template>
+  <div class="pptEasyClass">
+    <div class="pec_main" v-loading="pageLoading">
+      <div class="pec_header">
+        <div class="pec_h_left">
+          <div class="pec_h_l_title">
+            <span>{{ courseDetail.title }}</span>
+          </div>
+
+          <div v-if="tcid && inviteCode" class="inviteBox" style="margin-left: 20px;">
+              <span>随机码:{{ inviteCode }}</span>
+            </div>
+        </div>
+
+        <div class="pec_h_right">
+          <div class="pec_h_r_btnArea">
+            <el-tooltip effect="light" content="刷新" placement="top">
+              <div class="pec_h_r_btn_refresh" @click="refreshCourse">
+                <img src="../../assets/icon/newIcons/refresh.png" alt="" />
+                <span>刷新</span>
+              </div>
+            </el-tooltip>
+
+            <div
+              @click.stop="back"
+              v-if="screenType!=2"
+            >
+              <img src="../../assets/icon/newIcon/return.png" alt="" />
+              <span style="color: #000">返回</span>
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <div class="pec_content">
+        <iframe allow="camera *; microphone *;display-capture;midi;encrypted-media;clipboard-write;clipboard-read" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" frameborder="no" border="0" :src="iframeSrc" v-if="showIframe" style="width: 100%; height: 100%; border: none"></iframe>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      id: this.$route.query.courseId,
+      userid: this.$route.query.userid,
+      classId: this.$route.query.cid,
+      role: this.$route.query.role,
+      oid: this.$route.query.oid,
+      org: this.$route.query.org,
+      tType: this.$route.query.tType,
+      courseType: this.$route.query.type,
+      screenType: this.$route.query.screenType,
+      tcid2: this.$route.query.tcid,
+      tcid:"",
+      showIframe: false,
+      iframeSrc: "",
+      courseDetail: {},
+      pageLoading: false,
+      inviteCode:"",
+    };
+  },
+  methods: {
+    goTo(path) {
+      this.$router.push(path);
+    },
+    refreshCourse() {
+      this.getCourseDetail();
+    },
+    getCourseDetail() {
+      this.pageLoading = true;
+      let params = {
+        courseId: this.id
+      };
+
+      this.ajax
+        .get(this.$store.state.api + "selectCourseDetail3", params)
+        .then(res => {
+          console.log("getCourseDetail", res);
+          this.courseDetail = res.data[0][0];
+          this.courseDetail.chapters = JSON.parse(this.courseDetail.chapters);
+          this.tcid = this.arrayToArray(
+            this.courseDetail.juri ? this.courseDetail.juri.split(",") : [],
+            this.tcid2 ? this.tcid2.split(",") : []
+          )[0] || "";
+          if (this.tcid && res.data[1].length) {
+            let _inviteA = [];
+            for (var ik = 0; ik < res.data[1].length; ik++) {
+              _inviteA.push({
+                cid: res.data[1][ik].classid,
+                ic: res.data[1][ik].code,
+              });
+            }
+            for (var ik = 0; ik < _inviteA.length; ik++) {
+              if (
+                this.arrayToArray(
+                  _inviteA[ik].cid.split(","),
+                  this.tcid.split(",")
+                ).length
+              ) {
+                this.inviteCode = _inviteA[ik].ic;
+                break;
+              }
+            }
+          }
+          this.setPptIframe()
+          this.pageLoading = false;
+        })
+        .catch(err => {
+          console.log(err);
+          this.$message.error("获取课程数据失败");
+          this.pageLoading = false;
+        });
+    },
+    setPptIframe() {
+      this.showIframe = false;
+
+      this.$nextTick(() => {
+        let _url = `https://ppt.cocorobo.cn/?mode=student&courseid=${this.id}&userid=${this.userid}&oid=${this.oid}&org=${this.org}&cid=${this.tcid}&type=${this.tType}`;
+
+        this.iframeSrc = _url;
+
+        this.showIframe = true;
+      });
+    },
+    arrayToArray(arrayo, arrayt) {
+      let array1 = arrayo;
+      let array2 = arrayt;
+
+      let commonElements = [];
+
+      for (let i = 0; i < array1.length; i++) {
+        for (let j = 0; j < array2.length; j++) {
+          if (array1[i] === array2[j]) {
+            commonElements.push(array1[i]);
+          }
+        }
+      }
+      return commonElements;
+    },
+    back(){
+      if(this.tType!=2){
+        this.goTo(
+          '/courseDetail?userid=' +
+            this.userid +
+            '&oid=' +
+            this.oid +
+            '&org=' +
+            this.org +
+            '&cid=' +
+            this.classId +
+            '&courseId=' +
+            this.id +
+            '&tType=' +
+            this.tType +
+            '&screenType=' +
+            this.screenType
+        )
+      }else{
+        this.goTo(
+          '/index?userid=' +
+            this.userid +
+            '&oid=' +
+            this.oid +
+            '&org=' +
+            this.org +
+            '&cid=' +
+            this.classId +
+            '&tType=' +
+            this.tType +
+            '&screenType=' +
+            this.screenType
+        )
+      }
+    }
+  },
+  mounted() {
+    this.getCourseDetail();
+  }
+};
+</script>
+
+<style scoped>
+.pptEasyClass {
+  width: 100vw;
+  height: 100vh;
+  display: flex;
+  flex-direction: column;
+  overflow: hidden;
+  box-sizing: border-box;
+  padding: 20px;
+  background-color: #f2f2f2;
+}
+
+.pec_main {
+  width: 100%;
+  height: 100%;
+  background-color: #fff;
+  border-radius: 12px;
+}
+
+.pec_header {
+  width: 100%;
+  height: 80px;
+  border-radius: 12px 12px 0 0;
+  box-sizing: border-box;
+  border-bottom: solid 1px #cad1dc;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.pec_h_left {
+  width: auto;
+  height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-left: 20px;
+  font-weight: bold;
+  font-size: 20px;
+  color: #0e1e33;
+}
+
+.pec_h_right {
+  width: auto;
+  height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-right: 20px;
+}
+
+.pec_h_r_btnArea {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.pec_h_r_btnArea > div {
+  width: auto;
+  height: auto;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 10px 20px;
+  background-color: #f0f4fa;
+  border-radius: 4px;
+  cursor: pointer;
+  margin-right: 10px;
+  font-size: 14px;
+  font-weight: 400;
+  color: #000;
+  border: 1px solid #cad1dc;
+}
+
+.pec_h_r_btnArea > div > img {
+  width: 15px;
+  height: 15px;
+  margin-right: 5px;
+}
+
+.pec_h_r_btnArea > .pec_h_r_btn_refresh {
+  color: #fff;
+  background-color: #0061ff;
+  border-color: #0061ff;
+}
+
+.pec_content {
+  width: 100%;
+  height: calc(100% - 80px);
+  border-radius: 0 0 12px 12px;
+  background-color: #fff;
+}
+
+
+.inviteBox {
+  font-size: 14px;
+  /* margin-top: 5px; */
+  color: #00000099;
+  text-align: center;
+}
+</style>

+ 188 - 73
src/components/pptEasyClass/index.vue

@@ -3,37 +3,55 @@
     <div class="pec_main" v-loading="pageLoading">
       <div class="pec_header">
         <div class="pec_h_left">
+          <div @click.stop="back" class="backBtn" v-if="screenType != 2 || tType == 1">
+            <img src="../../assets/icon/newIcon/return.svg" alt="" />
+          </div>
+          <div v-if="tcid" class="class-info-group">
+            <span class="class-label">班级</span>
+            <span class="class-value">{{ className }}</span>
+          </div>
+          <div v-if="tcid" class="class-info-group">
+            <span class="class-label" v-if="inviteCode">识别码</span>
+            <span class="class-value" v-if="inviteCode">{{ inviteCode }}</span>
+          </div>
+        </div>
+        <div class="pec_h_center">
           <div class="pec_h_l_title">
             <span>{{ courseDetail.title }}</span>
           </div>
-
-          <div v-if="tcid && inviteCode" class="inviteBox" style="margin-left: 20px;">
-              <span>随机码:{{ inviteCode }}</span>
-            </div>
+          <div class="free-browse-switch" v-if="courseDetail.userid == userid">
+            <span class="switch-label" :class="{ active: freeBrowse }">{{ freeBrowse ? '自由浏览' : '跟随模式' }}</span>
+            <el-switch
+              v-model="freeBrowse"
+              :active-value="true"
+              :inactive-value="false"
+              class="custom-switch"
+              active-color="#FCCF00"
+              inactive-color="#F53F3F"
+              @change="onFreeBrowseChange"
+            ></el-switch>
+          </div>
         </div>
-
         <div class="pec_h_right">
           <div class="pec_h_r_btnArea">
-            <el-tooltip effect="light" content="刷新" placement="top">
+            <!-- <el-tooltip effect="light" content="刷新" placement="top">
               <div class="pec_h_r_btn_refresh" @click="refreshCourse">
                 <img src="../../assets/icon/newIcons/refresh.png" alt="" />
                 <span>刷新</span>
               </div>
-            </el-tooltip>
-
-            <div
-              @click.stop="back"
-              v-if="screenType!=2"
-            >
-              <img src="../../assets/icon/newIcon/return.png" alt="" />
-              <span style="color: #000">返回</span>
+            </el-tooltip> -->
+            <div class="pec_h_r_btn_afterClass" @click="afterClass" v-if="courseDetail.userid == userid">
+              <img src="../../assets/icon/newIcon/afterClass.svg" alt="" />
+              <span>下课</span>
             </div>
           </div>
         </div>
       </div>
 
       <div class="pec_content">
-        <iframe allow="camera *; microphone *;display-capture;midi;encrypted-media;clipboard-write;clipboard-read" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" frameborder="no" border="0" :src="iframeSrc" v-if="showIframe" style="width: 100%; height: 100%; border: none"></iframe>
+        <iframe allow="camera *; microphone *;display-capture;midi;encrypted-media;clipboard-write;clipboard-read"
+          webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" frameborder="no" border="0" :src="iframeSrc"
+          v-if="showIframe" style="width: 100%; height: 100%; border: none" ref="ppt"></iframe>
       </div>
     </div>
   </div>
@@ -56,13 +74,15 @@ export default {
       courseType: this.$route.query.type,
       screenType: this.$route.query.screenType,
       tcid2: this.$route.query.tcid,
-      tcid:"",
+      tcid: "",
+      className: "",
       showIframe: false,
       iframeSrc: "",
       courseDetail: {},
       pageLoading: false,
-      inviteCode:"",
+      inviteCode: "",
       startTime: "",
+      freeBrowse: true, // 默认自由浏览
     };
   },
   methods: {
@@ -121,7 +141,13 @@ export default {
       this.showIframe = false;
 
       this.$nextTick(() => {
-        let _url = `https://ppt.cocorobo.cn/?mode=student&courseid=${this.id}&userid=${this.userid}&oid=${this.oid}&org=${this.org}&cid=${this.tcid}&type=${this.tType}`;
+        let api = ''
+        if (this.$region == 'beta') {
+          api = 'https://beta.ppt.cocorobo.cn'
+        } else {
+          api = 'https://ppt.cocorobo.cn'
+        }
+        let _url = api + `/?mode=student&courseid=${this.id}&userid=${this.userid}&oid=${this.oid}&org=${this.org}&cid=${this.tcid}&type=${this.tType}`;
 
         this.iframeSrc = _url;
 
@@ -143,48 +169,66 @@ export default {
       }
       return commonElements;
     },
-    back(){
-      if(this.tType!=2){
+    async getClassName() {
+      let courseGrade = await this.ajax.get(this.$store.state.api + "getClassById", { id: this.tcid2 });
+      this.className = courseGrade.data[0][0].grade;
+    },
+    back() {
+      if (this.tType != 2) {
         this.goTo(
           '/courseDetail?userid=' +
-            this.userid +
-            '&oid=' +
-            this.oid +
-            '&org=' +
-            this.org +
-            '&cid=' +
-            this.classId +
-            '&courseId=' +
-            this.id +
-            '&tType=' +
-            this.tType +
-            '&screenType=' +
-            this.screenType
+          this.userid +
+          '&oid=' +
+          this.oid +
+          '&org=' +
+          this.org +
+          '&cid=' +
+          this.classId +
+          '&courseId=' +
+          this.id +
+          '&tType=' +
+          this.tType +
+          '&screenType=' +
+          this.screenType
         )
-      }else{
+      } else {
         this.goTo(
           '/index?userid=' +
-            this.userid +
-            '&oid=' +
-            this.oid +
-            '&org=' +
-            this.org +
-            '&cid=' +
-            this.classId +
-            '&tType=' +
-            this.tType +
-            '&screenType=' +
-            this.screenType
+          this.userid +
+          '&oid=' +
+          this.oid +
+          '&org=' +
+          this.org +
+          '&cid=' +
+          this.classId +
+          '&tType=' +
+          this.tType +
+          '&screenType=' +
+          this.screenType
         )
       }
-    }
+    },
+    afterClass() {
+      this.$confirm('确定下课吗,会让所有正在上课的学生全部退出登录?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.$refs.ppt.contentWindow.PPTistStudent.forceLogout();
+      }).catch(() => {});
+    },
+    onFreeBrowseChange(value) {
+      this.freeBrowse = value;
+      console.log('自由浏览模式已切换为1:', this.freeBrowse);
+      this.$refs.ppt.contentWindow.PPTistStudent.toggleFollowMode()
+    },
   },
-  destroyed(){
-    if(this.courseDetail.userid == this.userid && this.tcid2 && this.org == '16ace517-b5c7-4168-a9bb-a9e0035df840'){
-      let endTime = new Date().toLocaleString("zh-CN", { 
-          hour12: false, 
-          timeZone: "Asia/Shanghai" 
-        }).replace(/\//g, "-")
+  destroyed() {
+    if (this.courseDetail.userid == this.userid && this.tcid2 && this.org == '16ace517-b5c7-4168-a9bb-a9e0035df840') {
+      let endTime = new Date().toLocaleString("zh-CN", {
+        hour12: false,
+        timeZone: "Asia/Shanghai"
+      }).replace(/\//g, "-")
       let courseTime = Math.floor((new Date(endTime) - new Date(this.startTime)) / (1000 * 60))
       this.syncClassData({
         courseId: this.id,
@@ -198,11 +242,16 @@ export default {
     }
   },
   mounted() {
-    this.startTime = new Date().toLocaleString("zh-CN", { 
-      hour12: false, 
-      timeZone: "Asia/Shanghai" 
+    this.startTime = new Date().toLocaleString("zh-CN", {
+      hour12: false,
+      timeZone: "Asia/Shanghai"
     }).replace(/\//g, "-")
+    this.getClassName()
     this.getCourseDetail();
+    window.onFreeBrowseChange = (value) => {
+      this.freeBrowse = value;
+      console.log('自由浏览模式已切换为:', this.freeBrowse);
+    }
   }
 };
 </script>
@@ -215,7 +264,6 @@ export default {
   flex-direction: column;
   overflow: hidden;
   box-sizing: border-box;
-  padding: 20px;
   background-color: #f2f2f2;
 }
 
@@ -223,18 +271,20 @@ export default {
   width: 100%;
   height: 100%;
   background-color: #fff;
-  border-radius: 12px;
 }
 
 .pec_header {
   width: 100%;
-  height: 80px;
-  border-radius: 12px 12px 0 0;
+  height: 50px;
+  background: #FCCF00;
   box-sizing: border-box;
-  border-bottom: solid 1px #cad1dc;
   display: flex;
   align-items: center;
   justify-content: space-between;
+  position: relative;
+  box-shadow: 0px 4px 12px 0px #3648601F;
+  padding: 0 10px;
+  box-sizing: border-box;
 }
 
 .pec_h_left {
@@ -242,8 +292,22 @@ export default {
   height: 100%;
   display: flex;
   align-items: center;
-  justify-content: center;
-  margin-left: 20px;
+  gap: 25px;
+  /* 保持左侧靠左 */
+}
+
+.pec_h_center {
+  position: absolute;
+  left: 50%;
+  top: 0;
+  height: 100%;
+  display: flex;
+  align-items: center;
+  transform: translateX(-50%);
+  z-index: 1;
+}
+
+.pec_h_l_title {
   font-weight: bold;
   font-size: 20px;
   color: #0e1e33;
@@ -254,8 +318,6 @@ export default {
   height: 100%;
   display: flex;
   align-items: center;
-  justify-content: center;
-  margin-right: 20px;
 }
 
 .pec_h_r_btnArea {
@@ -264,7 +326,7 @@ export default {
   justify-content: center;
 }
 
-.pec_h_r_btnArea > div {
+.pec_h_r_btnArea>div {
   width: auto;
   height: auto;
   display: flex;
@@ -274,25 +336,70 @@ export default {
   background-color: #f0f4fa;
   border-radius: 4px;
   cursor: pointer;
-  margin-right: 10px;
   font-size: 14px;
   font-weight: 400;
   color: #000;
   border: 1px solid #cad1dc;
 }
 
-.pec_h_r_btnArea > div > img {
+.pec_h_r_btnArea>div>img {
   width: 15px;
   height: 15px;
   margin-right: 5px;
 }
 
-.pec_h_r_btnArea > .pec_h_r_btn_refresh {
+.pec_h_r_btnArea>.pec_h_r_btn_refresh {
   color: #fff;
   background-color: #0061ff;
   border-color: #0061ff;
 }
 
+.pec_h_r_btnArea>.pec_h_r_btn_afterClass {
+  border-color: #F0E1DD;
+  background-color: #FFF7F5;
+  color: #F53F3F;
+}
+
+.backBtn {
+  width: 15px;
+  height: 15px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  cursor: pointer;
+}
+
+.backBtn img {
+  width: 100%;
+  height: 100%;
+}
+
+.class-info-group {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+}
+
+.class-label {
+  font-size: 18px;
+  font-weight: bold;
+  color: #222;
+  margin-right: 5px;
+}
+
+.class-value {
+  font-size: 16px;
+  color: #222;
+  background: #FFFFFF3D;
+  border: 1px solid #00000080;
+  border-radius: 5px;
+  padding: 5px 18px;
+  min-width: 60px;
+  text-align: center;
+  display: inline-block;
+  box-sizing: border-box;
+}
+
 .pec_content {
   width: 100%;
   height: calc(100% - 80px);
@@ -300,11 +407,19 @@ export default {
   background-color: #fff;
 }
 
+.free-browse-switch {
+  display: flex;
+  align-items: center;
+  padding: 9px 10px;
+  background: #FFF7F5;
+  border-radius: 26px;
+  margin-left: 15px;
+  gap: 5px;
+}
 
-.inviteBox {
-  font-size: 14px;
-  /* margin-top: 5px; */
-  color: #00000099;
-  text-align: center;
+.switch-label {
+  background: linear-gradient(to right, #F53F3F, #FCCF00);
+  -webkit-background-clip: text;
+  color: transparent;
 }
 </style>

+ 44 - 22
src/components/studyStudent.vue

@@ -484,6 +484,7 @@
                   flex-direction: column;
                   position: relative;
                 "
+                class="renderedFor"
               >
                 <div
                   style="
@@ -697,9 +698,9 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img src="../assets/icon/newIcon/down.png" alt />
-                            </div>
+                            </div> -->
                           </div>
 
                           <div class="navListItem" v-if="vitem.type == 6">
@@ -759,9 +760,9 @@
                                 alt
                               />
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img src="../assets/icon/newIcon/down.png" alt />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 12">
                             <div class="navText" @click="downloadFile2(vitem)">
@@ -777,9 +778,9 @@
                                 alt
                               />
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img src="../assets/icon/newIcon/down.png" alt />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 13">
                             <div
@@ -789,9 +790,9 @@
                             >
                               {{ vitem.name }}
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img src="../assets/icon/newIcon/down.png" alt />
-                            </div>
+                            </div> -->
                           </div>
                             <div class="navListItem" v-if="vitem.type == 16">
                               <div
@@ -811,6 +812,24 @@
                                 />
                               </div>
                           </div>
+                          <div class="navListItem" v-if="vitem.type == 17">
+                              <div
+                                class="navText"
+                                @click="checkHtml(vitem, vindex)"
+                                :class="isClickNav == vindex ? 'isClickNav' : ''"
+                              >
+                                {{ vitem.name }}
+                              </div>
+                              <div
+                                class="downIcon"
+                                @click="checkFileFull1(vitem.type, vitem)"
+                              >
+                                <img
+                                  src="../assets/icon/newIcon/allScreen.png"
+                                  alt
+                                />
+                              </div>
+                          </div>
                         </div>
 
                         <div
@@ -828,7 +847,7 @@
                                 <span v-if="vitem.text">{{ vitem.text }}-</span
                                 >{{ vitem.name }}
                               </div>
-                              <div
+                              <!-- <div
                                 class="downIcon"
                                 @click="downloadFile2(vitem)"
                               >
@@ -836,7 +855,7 @@
                                   src="../assets/icon/newIcon/down.png"
                                   alt
                                 />
-                              </div>
+                              </div> -->
                             </div>
                           </div>
                         </div>
@@ -1507,7 +1526,7 @@
                         </div>
                       </div>
                     </div>
-                    <div class="tooldetail" v-if="tool.toolDetail != ''" :class="{isUpdateToolDetailClass:toolDetailIndex == toolIndex}">
+                    <div class="tooldetail renderedFor" v-if="tool.toolDetail != ''" :class="{isUpdateToolDetailClass:toolDetailIndex == toolIndex}">
                       <!-- <div class="toolTitle">工具描述</div> -->
                         <!-- @click.stop="updateToolDetail(toolIndex, 2)" -->
                       <div style="height:100%;"
@@ -4424,8 +4443,9 @@
                               word-break: break-word;
                               cursor: pointer;
                             "
+                            class="renderedFor"
                           >
-                              {{ index + 1 + "、"  }} <span v-html="renderedFormula(item.teststitle)"></span>
+                              {{ index + 1 + "、"  }} <span  v-html="renderedFormula(item.teststitle)"></span>
                           </div>
                         </el-tooltip>
                       </div>
@@ -9593,21 +9613,21 @@
             :key="index1"
           >
             <div class="a_add_head">
-              <div style="display: flex;align-items: center;">
+              <div style="display: flex;">
                 <span class="askIndex">{{ index1 + 1 }}</span>
                 <div
                   v-if="testJson.testJson[index1].type == '1'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (单选题)
                 </div>
                 <div
                   v-if="testJson.testJson[index1].type == '2'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (多选题)
                 </div>
-                  <div>题目:<span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
+                  <div class="renderedFor"><span>题目:</span> <span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
               </div>
               <img
                 v-if="testJson.testJson[index1].img"
@@ -9726,13 +9746,13 @@
                 <span class="askIndex">{{ index1 + 1 }}</span>
                 <div
                   v-if="testJson.testJson[index1].type == '1'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (单选题)
                 </div>
                 <div
                   v-if="testJson.testJson[index1].type == '2'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (多选题)
                 </div>
@@ -26308,17 +26328,19 @@ div::-webkit-scrollbar {
   overflow: hidden;
   text-overflow: ellipsis;
 }
-.pb_content >>> .katex {
-  font-size: 16px;
+
+.renderedFor >>> .katex {
+  font-size: 18px;
   width: 100%;
   white-space: normal;
+  font-family: '黑体' !important;
 }
-.pb_content >>> .katex .base{
+.renderedFor >>> .katex .base{
   display: inline !important;
   display: contents !important;
 }
 
-.pb_content >>> .katex .base .cjk_fallback{
+.renderedFor>>> .katex .base .cjk_fallback{
     white-space: normal !important;
     display: inline !important;
 }

+ 43 - 22
src/components/studySutdentClass/studyStudent.vue

@@ -521,6 +521,7 @@
                   flex-direction: column;
                   position: relative;
                 "
+                class="renderedFor"
               >
                 <div
                   style="
@@ -529,7 +530,7 @@
                     font-size: 18px;
                     color: #0e1e33;
                   "
-                  class="cont"
+                   class="cont"
                   v-if="
                     chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
                       .taskDetail != ''
@@ -729,12 +730,12 @@
                               <span v-if="vitem.text">{{ vitem.text }}-</span
                               >{{ vitem.name }}
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 6">
                             <div
@@ -793,12 +794,12 @@
                                 alt
                               />
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 12">
                             <div class="navText" @click="downloadFile2(vitem)">
@@ -814,12 +815,12 @@
                                 alt
                               />
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 13">
                             <div
@@ -829,12 +830,12 @@
                             >
                               {{ vitem.name }}
                             </div>
-                            <div class="downIcon" @click="downloadFile2(vitem)">
+                            <!-- <div class="downIcon" @click="downloadFile2(vitem)">
                               <img
                                 src="../../assets/icon/newIcon/down.png"
                                 alt
                               />
-                            </div>
+                            </div> -->
                           </div>
                           <div class="navListItem" v-if="vitem.type == 16">
                             <div
@@ -854,6 +855,24 @@
                               />
                             </div>
                           </div>
+                          <div class="navListItem" v-if="vitem.type == 17">
+                            <div
+                              class="navText"
+                              @click="checkHtml(vitem, vindex)"
+                              :class="isClickNav == vindex ? 'isClickNav' : ''"
+                            >
+                              {{ vitem.name }}
+                            </div>
+                            <div
+                              class="downIcon"
+                              @click="checkFileFull1(vitem.type, vitem)"
+                            >
+                              <img
+                                src="../../assets/icon/newIcon/allScreen.png"
+                                alt
+                              />
+                            </div>
+                          </div>
                         </div>
                         <div class="fileC_box" v-if="fileC[0].length > 0">
                           <div class="fileC_title">以下文件不支持预览</div>
@@ -867,7 +886,7 @@
                                 <span v-if="vitem.text">{{ vitem.text }}-</span
                                 >{{ vitem.name }}
                               </div>
-                              <div
+                              <!-- <div
                                 class="downIcon"
                                 @click="downloadFile2(vitem)"
                               >
@@ -875,7 +894,7 @@
                                   src="../../assets/icon/newIcon/down.png"
                                   alt
                                 />
-                              </div>
+                              </div> -->
                             </div>
                           </div>
                         </div>
@@ -1563,7 +1582,7 @@
                       </div>
                     </div>
                     <div
-                      class="tooldetail"
+                      class="tooldetail renderedFor"
                       v-if="tool.toolDetail != ''"
                       :class="{
                         isUpdateToolDetailClass: toolDetailIndex == toolIndex
@@ -6201,6 +6220,7 @@
                               word-break: break-word;
                               cursor: pointer;
                             "
+                            class="renderedFor"
                           >
                             {{ index + 1 + "、"  }} <span v-html="renderedFormula(item.teststitle)"></span>
                           </div>
@@ -12838,21 +12858,21 @@
             :key="index1"
           >
             <div class="a_add_head">
-              <div style="display: flex;align-items: center;">
+              <div style="display: flex;">
                 <span class="askIndex">{{ index1 + 1 }}</span>
                 <div
                   v-if="testJson.testJson[index1].type == '1'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (单选题)
                 </div>
                 <div
                   v-if="testJson.testJson[index1].type == '2'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (多选题)
                 </div>
-                <div>题目:<span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
+                <div class="renderedFor">题目:<span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
               </div>
               <img
                 v-if="testJson.testJson[index1].img"
@@ -12971,13 +12991,13 @@
                 <span class="askIndex">{{ index1 + 1 }}</span>
                 <div
                   v-if="testJson.testJson[index1].type == '1'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (单选题)
                 </div>
                 <div
                   v-if="testJson.testJson[index1].type == '2'"
-                  style="margin-right: 5px; min-width: 70px"
+                  style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
                 >
                   (多选题)
                 </div>
@@ -30423,17 +30443,18 @@ div::-webkit-scrollbar {
 
   text-overflow: ellipsis;
 }
-.pb_content >>> .katex {
-  font-size: 16px;
+.renderedFor >>> .katex {
+  font-size: 18px;
   width: 100%;
   white-space: normal;
+  font-family: '黑体' !important;
 }
-.pb_content >>> .katex .base{
+.renderedFor >>> .katex .base{
   display: inline !important;
   display: contents !important;
 }
 
-.pb_content >>> .katex .base .cjk_fallback{
+.renderedFor>>> .katex .base .cjk_fallback{
     white-space: normal !important;
     display: inline !important;
 }

+ 12 - 0
src/main.js

@@ -45,6 +45,18 @@ Vue.prototype.openLoading = function(target) {
 }
 Vue.prototype.$qs = qs
 
+let region = 'cn'
+if (window.location.href.includes('beta') || window.location.href.includes('localhost')) {
+  region = 'beta'
+} else if (window.location.href.includes('cn')) {
+  region = 'cn'
+} else if (window.location.href.includes('hk')) {
+  region = 'hk'
+} else if (window.location.href.includes('com')) {
+  region = 'com'
+} 
+Vue.prototype.$region = region
+
 /* eslint-disable no-new */
 new Vue({
     el: '#app',

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません