Przeglądaj źródła

Merge branch 'master' of http://gcls-git.helxsoft.cn/GCLS/GCLS_Page_Book_Component_NPC

dusenyao 3 miesięcy temu
rodzic
commit
5fa756d8ba
38 zmienionych plików z 762 dodań i 562 usunięć
  1. 19 5
      src/App.vue
  2. 33 7
      src/components/Adult/Preview.vue
  3. 1 0
      src/components/Adult/phonePreview/ArticleViewChs/PhraseModelChs.vue
  4. 1 0
      src/components/Adult/phonePreview/ArticleViewChs/Practicechs.vue
  5. 1 0
      src/components/Adult/phonePreview/ArticleViewChs/WordModelChs.vue
  6. 3 3
      src/components/Adult/phonePreview/DialogueArticleViewChs/AnswerModel.vue
  7. 3 3
      src/components/Adult/phonePreview/DialogueArticleViewChs/NormalModelChs.vue
  8. 3 3
      src/components/Adult/phonePreview/DialogueArticleViewChs/PhraseModelChs.vue
  9. 2 1
      src/components/Adult/phonePreview/DialogueArticleViewChs/Practicechs.vue
  10. 3 2
      src/components/Adult/phonePreview/DialogueArticleViewChs/WordModelChs.vue
  11. 4 4
      src/components/Adult/phonePreview/NewWordShow.vue
  12. 1 1
      src/components/Adult/phonePreview/RecordModule.vue
  13. 12 4
      src/components/Adult/phonePreview/SelectYinjie.vue
  14. 1 1
      src/components/Adult/phonePreview/SentenceInput.vue
  15. 395 345
      src/components/Adult/phonePreview/SentenceModule.vue
  16. 3 2
      src/components/Adult/phonePreview/SentenceSortQP.vue
  17. 1 0
      src/components/Adult/phonePreview/Soundrecord.vue
  18. 25 18
      src/components/Adult/phonePreview/TinyModule.vue
  19. 1 1
      src/components/Adult/phonePreview/VoiceMatrix.vue
  20. 19 49
      src/components/Adult/phonePreview/VoiceMatrixFullscreen.vue
  21. 66 16
      src/components/Adult/phonePreview/Voicefullscreen.vue
  22. 10 10
      src/components/Adult/phonePreview/WordPhrase.vue
  23. 6 1
      src/components/Adult/phonePreview/components/FreewriteLettle.vue
  24. 1 1
      src/components/Adult/phonePreview/components/OneSentenceTemp.vue
  25. 10 5
      src/components/Adult/phonePreview/components/OptionTemp.vue
  26. 1 1
      src/components/Adult/phonePreview/components/Practice.vue
  27. 1 0
      src/components/Adult/phonePreview/components/SentenceTemp.vue
  28. 16 1
      src/components/Adult/phonePreview/components/WordPhraseDetail.vue
  29. 4 2
      src/components/Adult/phonePreview/components/Wordcard.vue
  30. 73 67
      src/components/Adult/preview/VoiceMatrixFullscreen.vue
  31. 6 1
      src/components/Adult/preview/Voicefullscreen-ly.vue
  32. 6 1
      src/components/Adult/preview/Voicefullscreen.vue
  33. 6 1
      src/components/Adult/preview/components/FreewriteLettle.vue
  34. 1 1
      src/components/Adult/preview/components/Practice.vue
  35. 16 1
      src/components/Adult/preview/components/WordPhraseDetail.vue
  36. 1 1
      src/components/Adult/preview/components/Wordcard.vue
  37. 6 2
      src/components/TreeView.vue
  38. 1 1
      src/views/courseView.vue

+ 19 - 5
src/App.vue

@@ -1,7 +1,11 @@
 <template>
   <div id="app">
     <router-view />
-    <div class="userAgentTips" v-if="userAgentTipShow">
+    <div
+      class="userAgentTips"
+      :class="[isPhone ? 'userAgentTips-phone' : '']"
+      v-if="userAgentTipShow"
+    >
       <img src="./assets/userAgentWarning.png" width="32px" />
       <span
         >当前浏览器可能与网站不兼容!建议使用 chrome 浏览器获得最佳使用体验。
@@ -25,11 +29,13 @@ export default {
   data() {
     return {
       userAgentTipShow: false,
-      timeOut: null
+      timeOut: null,
+      isPhone: false
     };
   },
   created() {
-    console.log("2024-03-11 npc");
+    const regExp = /Android|webOS|iPhone|BlackBerry|IEMobile|Opera Mini/i;
+    this.isPhone = regExp.test(navigator.userAgent) && window.innerWidth < 860;
     this.handleUserAgentRoot();
     window.addEventListener("click", () => {
       sessionStorage.setItem("lastClickTime", new Date().getTime());
@@ -45,8 +51,11 @@ export default {
     // 判断是否为chrome浏览器
     handleUserAgentRoot() {
       if (
-        !sessionStorage.getItem("useragent_root_close") &&
-        navigator.userAgent.indexOf("Chrome") == -1
+        (!sessionStorage.getItem("useragent_root_close") &&
+          navigator.userAgent.indexOf("Chrome") == -1) ||
+        (!sessionStorage.getItem("useragent_root_close") &&
+          navigator.userAgent.indexOf("CriOS") == -1 &&
+          this.isPhone)
       ) {
         this.userAgentTipShow = true;
       }
@@ -102,6 +111,11 @@ export default {
   font-size: 16px;
   line-height: 24px;
   z-index: 3;
+  &-phone {
+    width: 100%;
+    left: 0;
+    margin-left: 0;
+  }
   :nth-child(1) {
     margin-right: 8px;
   }

+ 33 - 7
src/components/Adult/Preview.vue

@@ -17,7 +17,7 @@
           <!-- 页眉 -->
           <div
             class="NNPE-title-left"
-            :style="{ fontSize: baseSizePhone + 4 + 'px' }"
+            :style="{ fontSize: baseSizePhone + 4 + 'px', width: titleWidth }"
           >
             <div
               v-for="(item, index) in cur.detailList"
@@ -178,6 +178,11 @@
           </div>
         </div>
       </div>
+      <i
+        class="el-icon-close go-back-person"
+        v-if="enterPage === 'mobilePerson'"
+        @click="goBackPerson"
+      ></i>
       <div class="operater-classTopic">
         <div
           v-if="isShowTitle && isPhone"
@@ -2635,7 +2640,9 @@ export default {
       themeColorPhoneIndex: localStorage.getItem("themeColorPhoneIndex")
         ? localStorage.getItem("themeColorPhoneIndex") * 1
         : 2, // 移动端主题色索引
-      themeColorPhoneFlag: false
+      themeColorPhoneFlag: false,
+      titleWidth: window.innerWidth - 60 + "px",
+      enterPage: this.$route.query.enterPage
     };
   },
   computed: {
@@ -2692,7 +2699,7 @@ export default {
   // 生命周期 - 创建完成(可以访问当前this实例)
   created() {
     const regExp = /Android|webOS|iPhone|BlackBerry|IEMobile|Opera Mini/i;
-    this.isPhone = regExp.test(navigator.userAgent);
+    this.isPhone = regExp.test(navigator.userAgent) && window.innerWidth < 860;
   },
   // 生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
@@ -3258,6 +3265,10 @@ export default {
       localStorage.setItem("themeColorPhoneIndex", index);
       localStorage.setItem("themeColorPhone", color);
       this.$emit("changeThemeColorPhone", color);
+    },
+    // 返回手机端练习题的个人中心
+    goBackPerson() {
+      location.href = `/GCLS-Mobile/#/pages/tabbar/person/index`;
     }
   } // 如果页面有keep-alive缓存功能,这个函数会触发
 };
@@ -3272,7 +3283,7 @@ export default {
   .NNPE-title {
     background: #e35454;
     border-radius: 0px 0px 16px 16px;
-    padding: 7px 24px 7px 30px;
+    padding: 1px 30px;
     position: relative;
     height: 64px;
     display: flex;
@@ -3321,9 +3332,11 @@ export default {
       font-size: 18px;
       line-height: 18px;
       align-items: center;
+      overflow: hidden;
       .NNPE-title-item {
         margin-right: 12px;
         width: max-content;
+        white-space: nowrap;
       }
       .content-con {
         margin: 4px 0;
@@ -3343,14 +3356,14 @@ export default {
       }
       .NNPE-title-item-en {
         font-weight: normal;
-        line-height: 12px;
+        line-height: 1;
         font-family: "robot";
         font-size: 12px;
         margin: 0;
       }
       .con-box {
         display: flex;
-        flex-flow: wrap;
+        // flex-flow: wrap;
         justify-content: center;
         align-items: flex-end;
         .con-item {
@@ -3412,7 +3425,7 @@ export default {
     width: 780px;
     margin: 24px auto 0 auto;
     text-align: center;
-    padding: 8px 24px;
+    padding: 8px 34px;
     span {
       font-size: 16px;
       line-height: 150%;
@@ -3499,6 +3512,9 @@ export default {
           word-break: break-word;
           padding-right: 3px;
         }
+        b {
+          word-break: keep-all;
+        }
       }
     }
     .NNPE-tableList {
@@ -3849,6 +3865,16 @@ export default {
     }
   }
 }
+.go-back-person {
+  position: fixed;
+  top: 18px;
+  right: 0;
+  color: #fff;
+  font-weight: bold;
+  font-size: 20px;
+  z-index: 3;
+  padding: 5px;
+}
 </style>
 <style lang="scss">
 .NNPE-Book-content-item-checkbox {

+ 1 - 0
src/components/Adult/phonePreview/ArticleViewChs/PhraseModelChs.vue

@@ -771,6 +771,7 @@
           :mp3Url="activeWord ? activeWord.newWordMp3 : ''"
           :bg="activeWord ? activeWord.bg : null"
           :ed="activeWord ? activeWord.ed : null"
+          :baseSizePhone="baseSizePhone"
         />
       </div>
     </template>

+ 1 - 0
src/components/Adult/phonePreview/ArticleViewChs/Practicechs.vue

@@ -477,6 +477,7 @@
         @changeEN="changeEN"
         @exitFullscreen="exitFullscreen"
         @changeIsFull="changeIsFull"
+        :baseSizePhone="baseSizePhone"
       />
     </div>
   </div>

+ 1 - 0
src/components/Adult/phonePreview/ArticleViewChs/WordModelChs.vue

@@ -696,6 +696,7 @@
           :TaskModel="TaskModel"
           :writeList="curQue.Bookanswer.writeModel"
           @changeCurQue="changeCurQue"
+          :baseSizePhone="baseSizePhone"
         />
       </div>
     </template>

+ 3 - 3
src/components/Adult/phonePreview/DialogueArticleViewChs/AnswerModel.vue

@@ -1312,7 +1312,7 @@ export default {
       &.hasRemark {
         width: 553px;
         border-right: 1px rgba(0, 0, 0, 0.1) solid;
-        padding: 8px 0px 8px 23px;
+        padding: 8px 8px 8px 23px;
       }
       &.paraLast {
         padding-bottom: 24px;
@@ -1470,12 +1470,12 @@ export default {
 
     .wordsList-box {
       width: 100%;
-      padding: 0px 24px 0px 8px;
+      padding: 0px 0 0px 8px;
       clear: both;
       overflow: hidden;
       .roleDetail {
         height: 36px;
-        display: flex;
+        // display: flex;
         justify-content: flex-start;
         align-items: center;
         .pinyin {

+ 3 - 3
src/components/Adult/phonePreview/DialogueArticleViewChs/NormalModelChs.vue

@@ -1167,7 +1167,7 @@ export default {
       &.hasRemark {
         width: calc(100% - 120px);
         border-right: 1px rgba(0, 0, 0, 0.1) solid;
-        padding: 8px 0px 8px 23px;
+        padding: 8px 8px 8px 23px;
       }
       &.paraLast {
         padding-bottom: 24px;
@@ -1297,12 +1297,12 @@ export default {
 
     .wordsList-box {
       width: 100%;
-      padding: 0px 24px 0px 8px;
+      padding: 0px 0 0px 8px;
       clear: both;
       overflow: hidden;
       .roleDetail {
         min-height: 36px;
-        display: flex;
+        // display: flex;
         justify-content: flex-start;
         align-items: center;
         .pinyin {

+ 3 - 3
src/components/Adult/phonePreview/DialogueArticleViewChs/PhraseModelChs.vue

@@ -1196,7 +1196,7 @@ export default {
       &.hasRemark {
         width: calc(100% - 120px);
         border-right: 1px rgba(0, 0, 0, 0.1) solid;
-        padding: 8px 0px 8px 23px;
+        padding: 8px 8px 8px 23px;
       }
       &.paraLast {
         padding-bottom: 24px;
@@ -1320,12 +1320,12 @@ export default {
 
     .wordsList-box {
       width: 100%;
-      padding: 0px 24px 0px 8px;
+      padding: 0px 0 0px 8px;
       clear: both;
       overflow: hidden;
       .roleDetail {
         min-height: 36px;
-        display: flex;
+        // display: flex;
         justify-content: flex-start;
         align-items: center;
         .pinyin {

+ 2 - 1
src/components/Adult/phonePreview/DialogueArticleViewChs/Practicechs.vue

@@ -571,6 +571,7 @@
         @exitFullscreen="exitFullscreen"
         @changeIsFull="changeIsFull"
         :NpcNewWordMp3="NpcNewWordMp3"
+        :baseSizePhone="baseSizePhone"
       />
     </div>
   </div>
@@ -1183,7 +1184,7 @@ export default {
       }
       .roleDetail {
         height: 36px;
-        display: flex;
+        // display: flex;
         justify-content: flex-start;
         align-items: center;
         .pinyin {

+ 3 - 2
src/components/Adult/phonePreview/DialogueArticleViewChs/WordModelChs.vue

@@ -456,6 +456,7 @@
           :writeList="curQue.Bookanswer.writeModel"
           @changeCurQue="changeCurQue"
           :themeColorPhone="themeColorPhone"
+          :baseSizePhone="baseSizePhone"
         />
       </div>
     </template>
@@ -1174,12 +1175,12 @@ export default {
 
     .wordsList-box {
       width: 100%;
-      padding: 0px 24px 0px 8px;
+      padding: 0px 0 0px 8px;
       clear: both;
       overflow: hidden;
       .roleDetail {
         min-height: 36px;
-        display: flex;
+        // display: flex;
         justify-content: flex-start;
         align-items: center;
         .pinyin {

+ 4 - 4
src/components/Adult/phonePreview/NewWordShow.vue

@@ -486,8 +486,8 @@ export default {
       margin-bottom: 2px;
       font-family: Sans-GBNPC;
       color: #000;
-      height: 20px;
-      line-height: 20px;
+      // height: 20px;
+      line-height: 1.2;
     }
     .en {
       display: block;
@@ -496,8 +496,8 @@ export default {
       position: absolute;
       bottom: -2px;
       left: 0;
-      height: 20px;
-      line-height: 20px;
+      // height: 20px;
+      line-height: 1.2;
     }
     .item {
       box-sizing: border-box;

+ 1 - 1
src/components/Adult/phonePreview/RecordModule.vue

@@ -92,7 +92,7 @@ export default {
     width: 100px;
   }
   .record_control_promax {
-    width: 150px;
+    width: 170px;
   }
 }
 </style>

+ 12 - 4
src/components/Adult/phonePreview/SelectYinjie.vue

@@ -45,7 +45,11 @@
           ></a>
           <b
             v-if="item.number"
-            :style="{ fontSize: baseSizePhone - 2 + 'px' }"
+            :style="{
+              fontSize: baseSizePhone - 2 + 'px',
+              width: 18 + (baseSizePhone - 14) * 2 + 'px',
+              height: 18 + (baseSizePhone - 14) * 2 + 'px'
+            }"
             >{{ item.number }}</b
           >
           <div class="zijie-box">
@@ -309,13 +313,17 @@ export default {
     b {
       background: #de4444;
       text-align: center;
-      width: 16px;
-      height: 16px;
+      min-width: 14px;
+      // min-height: 16px;
+      max-width: 28px;
+      max-height: 28px;
       color: #ffffff;
       border-radius: 50%;
       font-size: 12px;
       font-family: "robot";
-      line-height: 1.2;
+      line-height: 1.3;
+      padding: 2px;
+      display: block;
     }
     .play-btn {
       width: 16px;

+ 1 - 1
src/components/Adult/phonePreview/SentenceInput.vue

@@ -632,7 +632,7 @@ export default {
       padding: 8px 12px;
       margin-bottom: 8px;
       > b {
-        width: 24px;
+        min-width: 24px;
         line-height: 24px;
         font-size: 16px;
         text-align: center;

+ 395 - 345
src/components/Adult/phonePreview/SentenceModule.vue

@@ -113,7 +113,7 @@
                 :themeColor="themeColor"
               />
             </div>
-            <div :class="['sent-stem', bgClassName]">
+            <div :class="['sent-stem', bgClassName]" :style="[widthCss]">
               <div
                 v-if="curQue.isShowNumber"
                 :class="[
@@ -148,7 +148,11 @@
                 />
               </div>
               <!-- 题干 -->
-              <div class="stem-content">
+              <div
+                class="stem-content"
+                v-if="items && items.detail"
+                :style="[widthCss1]"
+              >
                 <!--  items.fn_check_list.judge_check || sdItem.fn_check_list.record_check.indexOf('normal') > -1
                   ? 'sent-main-138'
                   : '', -->
@@ -450,70 +454,37 @@
             curQue.sortType == 'row' ? 'sent-option-row' : 'li-flex',
             itemsWidth == 780 ? 'hasPadding' : ''
           ]"
-          v-for="(item, index) in rowOption"
           :key="'sent-option' + index"
+          v-for="(item, index) in rowOption"
         >
-          <div
-            :class="[
-              'sent-option-items',
-              itemsWidth == 780 ? 'sent-option-items-0' : 'sent-option-items-8'
-            ]"
-            v-for="(items, indexs) in item"
-            :key="'sent-option-items' + index + indexs"
-            :style="{}"
-          >
+          <template v-for="(items, indexs) in item">
             <div
               :class="[
-                'horn-24',
-                items.pyNumber &&
-                items.pyNumber[0] > 0 &&
-                curQue.pyPosition == 'top'
-                  ? 'horn-hasPY'
-                  : ''
+                'sent-option-items',
+                itemsWidth == 780
+                  ? 'sent-option-items-0'
+                  : 'sent-option-items-8'
               ]"
-              v-if="
-                curQue.mp3_list &&
-                  curQue.mp3_list.length > 0 &&
-                  curQue.mp3_list[0].id &&
-                  items.bg &&
-                  items.ed
-              "
-              :style="{
-                height:
-                  items.detail &&
-                  items.detail.length > 0 &&
-                  items.detail[0].maxFontsize
-                    ? (items.detail[0].maxFontsize * 3) / 2 + 'px'
-                    : '40px',
-                marginTop:
-                  items.detail &&
-                  items.detail.length > 0 &&
-                  items.detail[0].maxFontsize
-                    ? ''
-                    : '0px'
-              }"
+              :key="'sent-option-items' + index + indexs"
+              :style="{}"
+              v-if="items"
             >
-              <AudioItem
-                :itemBg="items.bg"
-                :itemEd="items.ed"
-                :curTime="curTime"
-                :handleChangeTime="handleChangeTime"
-                :stopAudioS="stopAudioS"
-                :themeColor="themeColor"
-              />
-            </div>
-            <div :class="['sent-stem', bgClassName]">
               <div
-                v-if="curQue.isShowNumber"
                 :class="[
-                  'number-box number-box-hasmp3',
+                  'horn-24',
                   items.pyNumber &&
                   items.pyNumber[0] > 0 &&
                   curQue.pyPosition == 'top'
-                    ? 'number-box-hasPY'
-                    : '',
-                  curQue.numberBg ? '' : 'number-box-nobg'
+                    ? 'horn-hasPY'
+                    : ''
                 ]"
+                v-if="
+                  curQue.mp3_list &&
+                    curQue.mp3_list.length > 0 &&
+                    curQue.mp3_list[0].id &&
+                    items.bg &&
+                    items.ed
+                "
                 :style="{
                   height:
                     items.detail &&
@@ -529,98 +500,138 @@
                       : '0px'
                 }"
               >
-                <NumberStyle
-                  :className="curQue.numberBg ? 'number01' : 'number-nobg'"
-                  :numberBg="curQue.numberBg"
-                  :numberStyle="curQue.numberStyle"
-                  :numberIndex="items.index"
+                <AudioItem
+                  :itemBg="items.bg"
+                  :itemEd="items.ed"
+                  :curTime="curTime"
+                  :handleChangeTime="handleChangeTime"
+                  :stopAudioS="stopAudioS"
+                  :themeColor="themeColor"
                 />
               </div>
-              <!-- 题干 -->
-              <div class="stem-content">
-                <!--  items.fn_check_list.judge_check || sdItem.fn_check_list.record_check.indexOf('normal') > -1
-                      ? 'sent-main-138'
-                      : '', -->
+              <div :class="['sent-stem', bgClassName]" :style="[widthCss]">
                 <div
+                  v-if="curQue.isShowNumber"
                   :class="[
-                    'sent-main',
-                    items.fn_check_list.judge_check.indexOf('col') > -1 ||
-                    items.fn_check_list.short_check ||
-                    sdItem.fn_check_list.record_check.indexOf('normal') > -1
-                      ? 'sent-que-flex'
+                    'number-box number-box-hasmp3',
+                    items.pyNumber &&
+                    items.pyNumber[0] > 0 &&
+                    curQue.pyPosition == 'top'
+                      ? 'number-box-hasPY'
                       : '',
-                    items.fn_check_list.radio_check.indexOf('row') > -1 ||
-                    items.fn_check_list.checkbox_check.indexOf('row') > -1
-                      ? 'sent-main-bottom'
-                      : ''
+                    curQue.numberBg ? '' : 'number-box-nobg'
                   ]"
-                  v-for="(sdItem, sdIndex) in items.detail"
-                  :key="'sent-option-items' + index + indexs + sdIndex"
+                  :style="{
+                    height:
+                      items.detail &&
+                      items.detail.length > 0 &&
+                      items.detail[0].maxFontsize
+                        ? (items.detail[0].maxFontsize * 3) / 2 + 'px'
+                        : '40px',
+                    marginTop:
+                      items.detail &&
+                      items.detail.length > 0 &&
+                      items.detail[0].maxFontsize
+                        ? ''
+                        : '0px'
+                  }"
                 >
-                  <div class="sent-que-box">
-                    <div
-                      class="sent-que"
-                      v-for="(sddItem, sddIndex) in sdItem.detail"
-                      :key="
-                        'sent-option-items' +
-                          index +
-                          indexs +
-                          sdIndex +
-                          sddIndex
-                      "
-                      :style="{
-                        paddingLeft:
-                          sddItem.config.wordPadding.indexOf('left') > -1
-                            ? '4px'
-                            : '0px',
-                        paddingRight:
-                          sddItem.config.wordPadding.indexOf('right') > -1
-                            ? '4px'
-                            : '0px'
-                      }"
-                    >
-                      <!-- 补全句子 -->
-                      <OneSentenceTemp
-                        :detail="sddItem"
-                        :pyPosition="curQue.pyPosition"
-                        :TaskModel="TaskModel"
-                        :pyColor="curQue.pyColor"
-                        :Bookanswer="
-                          curQue.sortType == 'row'
-                            ? curQue.Bookanswer[index][indexs]
-                            : curQue.Bookanswer[indexs][index]
-                        "
-                        :judgeAnswer="judgeAnswer"
-                        :correctAnswer="items.correct.complateArr"
-                        :isInput="
-                          items.fn_check_list.sent_check ==
-                            'sentence_complete_input_chs' ||
-                            items.fn_check_list.sent_check ==
-                              'sentence_long_input_chs'
-                        "
-                        :fn_check_list="items.fn_check_list"
-                        :bgColor="curQue.bgColor"
-                        :pyNumber="items.pyNumber && items.pyNumber[sdIndex]"
-                        :record_check="sdItem.fn_check_list.record_check"
-                        :hengLeg="sdItem.hengLeg"
-                        :maxFontsize="baseSizePhone + 6"
-                        :textIndent="sdItem.textindent"
-                      />
-                      <template
-                        v-if="
-                          sddItem.img_list &&
-                            sddItem.img_list.length > 0 &&
-                            sddItem.img_list[0].id
+                  <NumberStyle
+                    :className="curQue.numberBg ? 'number01' : 'number-nobg'"
+                    :numberBg="curQue.numberBg"
+                    :numberStyle="curQue.numberStyle"
+                    :numberIndex="items.index"
+                  />
+                </div>
+                <!-- 题干 -->
+                <div
+                  class="stem-content"
+                  v-if="items && items.detail"
+                  :style="[widthCss1]"
+                >
+                  <!--  items.fn_check_list.judge_check || sdItem.fn_check_list.record_check.indexOf('normal') > -1
+                      ? 'sent-main-138'
+                      : '', -->
+                  <div
+                    :class="[
+                      'sent-main',
+                      items.fn_check_list.judge_check.indexOf('col') > -1 ||
+                      items.fn_check_list.short_check ||
+                      sdItem.fn_check_list.record_check.indexOf('normal') > -1
+                        ? 'sent-que-flex'
+                        : '',
+                      items.fn_check_list.radio_check.indexOf('row') > -1 ||
+                      items.fn_check_list.checkbox_check.indexOf('row') > -1
+                        ? 'sent-main-bottom'
+                        : ''
+                    ]"
+                    v-for="(sdItem, sdIndex) in items.detail"
+                    :key="'sent-option-items' + index + indexs + sdIndex"
+                  >
+                    <div class="sent-que-box">
+                      <div
+                        class="sent-que"
+                        v-for="(sddItem, sddIndex) in sdItem.detail"
+                        :key="
+                          'sent-option-items' +
+                            index +
+                            indexs +
+                            sdIndex +
+                            sddIndex
                         "
+                        :style="{
+                          paddingLeft:
+                            sddItem.config.wordPadding.indexOf('left') > -1
+                              ? '4px'
+                              : '0px',
+                          paddingRight:
+                            sddItem.config.wordPadding.indexOf('right') > -1
+                              ? '4px'
+                              : '0px'
+                        }"
                       >
-                        <img
-                          :src="sddItem.img_list[0].id"
-                          class="sddItem_img_list"
-                          :style="[imgStyle(sddItem)]"
+                        <!-- 补全句子 -->
+                        <OneSentenceTemp
+                          :detail="sddItem"
+                          :pyPosition="curQue.pyPosition"
+                          :TaskModel="TaskModel"
+                          :pyColor="curQue.pyColor"
+                          :Bookanswer="
+                            curQue.sortType == 'row'
+                              ? curQue.Bookanswer[index][indexs]
+                              : curQue.Bookanswer[indexs][index]
+                          "
+                          :judgeAnswer="judgeAnswer"
+                          :correctAnswer="items.correct.complateArr"
+                          :isInput="
+                            items.fn_check_list.sent_check ==
+                              'sentence_complete_input_chs' ||
+                              items.fn_check_list.sent_check ==
+                                'sentence_long_input_chs'
+                          "
+                          :fn_check_list="items.fn_check_list"
+                          :bgColor="curQue.bgColor"
+                          :pyNumber="items.pyNumber && items.pyNumber[sdIndex]"
+                          :record_check="sdItem.fn_check_list.record_check"
+                          :hengLeg="sdItem.hengLeg"
+                          :maxFontsize="baseSizePhone + 6"
+                          :textIndent="sdItem.textindent"
                         />
-                      </template>
-                      <!-- <div class="en" v-if="sdItem.en">{{ sdItem.en }}</div> -->
-                      <!-- <div
+                        <template
+                          v-if="
+                            sddItem.img_list &&
+                              sddItem.img_list.length > 0 &&
+                              sddItem.img_list[0].id
+                          "
+                        >
+                          <img
+                            :src="sddItem.img_list[0].id"
+                            class="sddItem_img_list"
+                            :style="[imgStyle(sddItem)]"
+                          />
+                        </template>
+                        <!-- <div class="en" v-if="sdItem.en">{{ sdItem.en }}</div> -->
+                        <!-- <div
                         class="promax-box-div"
                         v-if="
                           sdItem.fn_check_list.record_check.indexOf('promax') >
@@ -644,236 +655,241 @@
                           @handleWav="handleWav"
                         />
                       </div> -->
+                      </div>
                     </div>
-                  </div>
-                  <div
-                    ref="answerpart"
-                    v-if="
-                      items.fn_check_list.judge_check ||
-                        sdItem.fn_check_list.record_check ||
-                        items.fn_check_list.short_check ||
-                        items.fn_check_list.radio_check.indexOf('col') > -1 ||
-                        items.fn_check_list.checkbox_check.indexOf('col') > -1
-                    "
-                    :class="[
-                      'answer-part',
-                      items.pyNumber && items.pyNumber[1] > 0
-                        ? 'answer-part-hasPY'
-                        : '',
-                      items.fn_check_list.judge_check ||
-                      sdItem.fn_check_list.record_check
-                        ? 'answer-part-138'
-                        : ''
-                    ]"
-                  >
-                    <!-- 短输入 -->
-                    <div
-                      :class="[
-                        'short-part',
-                        items.pyNumber && items.pyNumber[0] > 0
-                          ? 'short-part-hasPY'
-                          : '',
-                        items.fn_check_list.is_short_auto
-                          ? 'short-part-flex'
-                          : ''
-                      ]"
-                      v-if="sdIndex == 0 && items.fn_check_list.short_check"
-                    >
-                      <ShortInputTemp
-                        :doubleInput="items.correct.doubleInput"
-                        :Bookanswer="
-                          curQue.sortType == 'row'
-                            ? curQue.Bookanswer[index][indexs]
-                            : curQue.Bookanswer[indexs][index]
-                        "
-                        :TaskModel="TaskModel"
-                        :is_short_auto="items.fn_check_list.is_short_auto"
-                        :judgeAnswer="judgeAnswer"
-                        :baseSizePhone="baseSizePhone"
-                      />
-                    </div>
-                    <!-- 判断 -->
-                    <div
-                      :class="[
-                        'judge-part',
-                        items.fn_check_list.judge_check.indexOf('row') > -1
-                          ? 'answer-part-padding-5'
-                          : ''
-                      ]"
-                      v-if="sdIndex == 0 && items.fn_check_list.judge_check"
-                    >
-                      <JudgeTemp
-                        :isRecord="items.fn_check_list.record_check"
-                        :Bookanswer="
-                          curQue.sortType == 'row'
-                            ? curQue.Bookanswer[index][indexs]
-                            : curQue.Bookanswer[indexs][index]
-                        "
-                        :judge_isNo="items.judge_isNo"
-                        :TaskModel="TaskModel"
-                        :Isexample="items.Isexample"
-                        :judgeCorrectAnswer="items.correct.judge"
-                        :judgeAnswer="judgeAnswer"
-                        :baseSizePhone="baseSizePhone"
-                      />
-                    </div>
-                    <!-- 多选题 -->
                     <div
-                      :class="[
-                        'short-part',
-                        items.pyNumber && items.pyNumber[0] > 0
-                          ? 'short-part-hasPY'
-                          : ''
-                      ]"
+                      ref="answerpart"
                       v-if="
-                        sdIndex == 0 &&
+                        items.fn_check_list.judge_check ||
+                          sdItem.fn_check_list.record_check ||
+                          items.fn_check_list.short_check ||
+                          items.fn_check_list.radio_check.indexOf('col') > -1 ||
                           items.fn_check_list.checkbox_check.indexOf('col') > -1
                       "
-                    >
-                      <OptionTemp
-                        :option="items.checkbox_option"
-                        :row="
-                          items.fn_check_list.checkbox_check.indexOf('row') > -1
-                        "
-                        :Bookanswer="
-                          curQue.sortType == 'row'
-                            ? curQue.Bookanswer[index][indexs]
-                            : curQue.Bookanswer[indexs][index]
-                        "
-                        :TaskModel="TaskModel"
-                        type="checkbox"
-                        :curQue="curQue"
-                        :items="items"
-                        :judgeAnswer="judgeAnswer"
-                        :correctAnswer="items.correct"
-                        :baseSizePhone="baseSizePhone"
-                      />
-                    </div>
-                    <!-- 单选题 -->
-                    <div
                       :class="[
-                        'short-part',
-                        items.pyNumber && items.pyNumber[0] > 0
-                          ? 'short-part-hasPY'
+                        'answer-part',
+                        items.pyNumber && items.pyNumber[1] > 0
+                          ? 'answer-part-hasPY'
+                          : '',
+                        items.fn_check_list.judge_check ||
+                        sdItem.fn_check_list.record_check
+                          ? 'answer-part-138'
                           : ''
                       ]"
-                      v-if="
-                        sdIndex == 0 &&
-                          items.fn_check_list.radio_check.indexOf('col') > -1
-                      "
                     >
-                      <OptionTemp
-                        :option="items.radio_option"
-                        :row="
-                          items.fn_check_list.radio_check.indexOf('row') > -1
-                        "
-                        :Bookanswer="
-                          curQue.sortType == 'row'
-                            ? curQue.Bookanswer[index][indexs]
-                            : curQue.Bookanswer[indexs][index]
-                        "
-                        :correctAnswer="items.correct"
-                        :TaskModel="TaskModel"
-                        type="radio"
-                        :curQue="curQue"
-                        :items="items"
-                        :judgeAnswer="judgeAnswer"
-                        :baseSizePhone="baseSizePhone"
-                      />
-                    </div>
-                    <!-- 录音 -->
-                    <div
-                      class="judge-part record-part"
-                      v-if="
-                        sdItem.fn_check_list.record_check &&
-                          items.fn_check_list.sent_check !=
-                            'sentence_long_input_chs'
-                      "
-                    >
-                      <Soundrecord
-                        :type="
-                          sdItem.fn_check_list.record_check
-                            ? typeList[sdItem.fn_check_list.record_check]
-                            : 'normal'
+                      <!-- 短输入 -->
+                      <div
+                        :class="[
+                          'short-part',
+                          items.pyNumber && items.pyNumber[0] > 0
+                            ? 'short-part-hasPY'
+                            : '',
+                          items.fn_check_list.is_short_auto
+                            ? 'short-part-flex'
+                            : ''
+                        ]"
+                        v-if="sdIndex == 0 && items.fn_check_list.short_check"
+                      >
+                        <ShortInputTemp
+                          :doubleInput="items.correct.doubleInput"
+                          :Bookanswer="
+                            curQue.sortType == 'row'
+                              ? curQue.Bookanswer[index][indexs]
+                              : curQue.Bookanswer[indexs][index]
+                          "
+                          :TaskModel="TaskModel"
+                          :is_short_auto="items.fn_check_list.is_short_auto"
+                          :judgeAnswer="judgeAnswer"
+                          :baseSizePhone="baseSizePhone"
+                        />
+                      </div>
+                      <!-- 判断 -->
+                      <div
+                        :class="[
+                          'judge-part',
+                          items.fn_check_list.judge_check.indexOf('row') > -1
+                            ? 'answer-part-padding-5'
+                            : ''
+                        ]"
+                        v-if="sdIndex == 0 && items.fn_check_list.judge_check"
+                      >
+                        <JudgeTemp
+                          :isRecord="items.fn_check_list.record_check"
+                          :Bookanswer="
+                            curQue.sortType == 'row'
+                              ? curQue.Bookanswer[index][indexs]
+                              : curQue.Bookanswer[indexs][index]
+                          "
+                          :judge_isNo="items.judge_isNo"
+                          :TaskModel="TaskModel"
+                          :Isexample="items.Isexample"
+                          :judgeCorrectAnswer="items.correct.judge"
+                          :judgeAnswer="judgeAnswer"
+                          :baseSizePhone="baseSizePhone"
+                        />
+                      </div>
+                      <!-- 多选题 -->
+                      <div
+                        :class="[
+                          'short-part',
+                          items.pyNumber && items.pyNumber[0] > 0
+                            ? 'short-part-hasPY'
+                            : ''
+                        ]"
+                        v-if="
+                          sdIndex == 0 &&
+                            items.fn_check_list.checkbox_check.indexOf('col') >
+                              -1
                         "
+                      >
+                        <OptionTemp
+                          :option="items.checkbox_option"
+                          :row="
+                            items.fn_check_list.checkbox_check.indexOf('row') >
+                              -1
+                          "
+                          :Bookanswer="
+                            curQue.sortType == 'row'
+                              ? curQue.Bookanswer[index][indexs]
+                              : curQue.Bookanswer[indexs][index]
+                          "
+                          :TaskModel="TaskModel"
+                          type="checkbox"
+                          :curQue="curQue"
+                          :items="items"
+                          :judgeAnswer="judgeAnswer"
+                          :correctAnswer="items.correct"
+                          :baseSizePhone="baseSizePhone"
+                        />
+                      </div>
+                      <!-- 单选题 -->
+                      <div
                         :class="[
-                          'record_' +
-                            typeList[sdItem.fn_check_list.record_check],
-                          'record-common',
-                          items.fn_check_list.short_check
-                            ? 'record-common-40'
+                          'short-part',
+                          items.pyNumber && items.pyNumber[0] > 0
+                            ? 'short-part-hasPY'
                             : ''
                         ]"
-                        :TaskModel="TaskModel"
-                        :tmIndex="sdIndex"
-                        :answerRecordList="
-                          curQue.sortType == 'row'
-                            ? curQue.Bookanswer[index][indexs].recordList[
-                                sdIndex
-                              ]
-                            : curQue.Bookanswer[indexs][index].recordList[
-                                sdIndex
-                              ]
+                        v-if="
+                          sdIndex == 0 &&
+                            items.fn_check_list.radio_check.indexOf('col') > -1
                         "
-                        :index="index"
-                        :indexs="indexs"
-                        :modelType="curQue.type"
-                        @handleWav="handleWav"
-                        :baseSizePhone="baseSizePhone"
-                      />
+                      >
+                        <OptionTemp
+                          :option="items.radio_option"
+                          :row="
+                            items.fn_check_list.radio_check.indexOf('row') > -1
+                          "
+                          :Bookanswer="
+                            curQue.sortType == 'row'
+                              ? curQue.Bookanswer[index][indexs]
+                              : curQue.Bookanswer[indexs][index]
+                          "
+                          :correctAnswer="items.correct"
+                          :TaskModel="TaskModel"
+                          type="radio"
+                          :curQue="curQue"
+                          :items="items"
+                          :judgeAnswer="judgeAnswer"
+                          :baseSizePhone="baseSizePhone"
+                        />
+                      </div>
+                      <!-- 录音 -->
+                      <div
+                        class="judge-part record-part"
+                        v-if="
+                          sdItem.fn_check_list.record_check &&
+                            items.fn_check_list.sent_check !=
+                              'sentence_long_input_chs'
+                        "
+                      >
+                        <Soundrecord
+                          :type="
+                            sdItem.fn_check_list.record_check
+                              ? typeList[sdItem.fn_check_list.record_check]
+                              : 'normal'
+                          "
+                          :class="[
+                            'record_' +
+                              typeList[sdItem.fn_check_list.record_check],
+                            'record-common',
+                            items.fn_check_list.short_check
+                              ? 'record-common-40'
+                              : ''
+                          ]"
+                          :TaskModel="TaskModel"
+                          :tmIndex="sdIndex"
+                          :answerRecordList="
+                            curQue.sortType == 'row'
+                              ? curQue.Bookanswer[index][indexs].recordList[
+                                  sdIndex
+                                ]
+                              : curQue.Bookanswer[indexs][index].recordList[
+                                  sdIndex
+                                ]
+                          "
+                          :index="index"
+                          :indexs="indexs"
+                          :modelType="curQue.type"
+                          @handleWav="handleWav"
+                          :baseSizePhone="baseSizePhone"
+                        />
+                      </div>
                     </div>
                   </div>
-                </div>
-                <!-- 多选题 -->
-                <div
-                  class="select-que"
-                  v-if="items.fn_check_list.checkbox_check.indexOf('row') > -1"
-                >
-                  <OptionTemp
-                    :option="items.checkbox_option"
-                    :row="
+                  <!-- 多选题 -->
+                  <div
+                    class="select-que"
+                    v-if="
                       items.fn_check_list.checkbox_check.indexOf('row') > -1
                     "
-                    :Bookanswer="
-                      curQue.sortType == 'row'
-                        ? curQue.Bookanswer[index][indexs]
-                        : curQue.Bookanswer[indexs][index]
-                    "
-                    :correctAnswer="items.correct"
-                    :TaskModel="TaskModel"
-                    type="checkbox"
-                    :curQue="curQue"
-                    :items="items"
-                    :judgeAnswer="judgeAnswer"
-                    :baseSizePhone="baseSizePhone"
-                  />
-                </div>
-                <!-- 单选题 -->
-                <div
-                  class="select-que"
-                  v-if="items.fn_check_list.radio_check.indexOf('row') > -1"
-                >
-                  <OptionTemp
-                    :option="items.radio_option"
-                    :row="items.fn_check_list.radio_check.indexOf('row') > -1"
-                    :Bookanswer="
-                      curQue.sortType == 'row'
-                        ? curQue.Bookanswer[index][indexs]
-                        : curQue.Bookanswer[indexs][index]
-                    "
-                    :correctAnswer="items.correct"
-                    :TaskModel="TaskModel"
-                    type="radio"
-                    :curQue="curQue"
-                    :items="items"
-                    :judgeAnswer="judgeAnswer"
-                    :baseSizePhone="baseSizePhone"
-                  />
+                  >
+                    <OptionTemp
+                      :option="items.checkbox_option"
+                      :row="
+                        items.fn_check_list.checkbox_check.indexOf('row') > -1
+                      "
+                      :Bookanswer="
+                        curQue.sortType == 'row'
+                          ? curQue.Bookanswer[index][indexs]
+                          : curQue.Bookanswer[indexs][index]
+                      "
+                      :correctAnswer="items.correct"
+                      :TaskModel="TaskModel"
+                      type="checkbox"
+                      :curQue="curQue"
+                      :items="items"
+                      :judgeAnswer="judgeAnswer"
+                      :baseSizePhone="baseSizePhone"
+                    />
+                  </div>
+                  <!-- 单选题 -->
+                  <div
+                    class="select-que"
+                    v-if="items.fn_check_list.radio_check.indexOf('row') > -1"
+                  >
+                    <OptionTemp
+                      :option="items.radio_option"
+                      :row="items.fn_check_list.radio_check.indexOf('row') > -1"
+                      :Bookanswer="
+                        curQue.sortType == 'row'
+                          ? curQue.Bookanswer[index][indexs]
+                          : curQue.Bookanswer[indexs][index]
+                      "
+                      :correctAnswer="items.correct"
+                      :TaskModel="TaskModel"
+                      type="radio"
+                      :curQue="curQue"
+                      :items="items"
+                      :judgeAnswer="judgeAnswer"
+                      :baseSizePhone="baseSizePhone"
+                    />
+                  </div>
                 </div>
               </div>
+              <!-- 题干 -->
             </div>
-            <!-- 题干 -->
-          </div>
+          </template>
         </div>
       </div>
       <div
@@ -990,6 +1006,37 @@ export default {
         }
         return styleConfig;
       };
+    },
+    widthCss() {
+      let widthAll = window.innerWidth - 100 + "px";
+      if (
+        this.curQue.mp3_list &&
+        this.curQue.mp3_list.length > 0 &&
+        this.curQue.mp3_list[0].id
+      ) {
+        widthAll = window.innerWidth - 150 + "px";
+      }
+      let widthObj = {
+        width: widthAll
+      };
+      return widthObj;
+    },
+    widthCss1() {
+      let widthAll = window.innerWidth - 100;
+      if (
+        this.curQue.mp3_list &&
+        this.curQue.mp3_list.length > 0 &&
+        this.curQue.mp3_list[0].id
+      ) {
+        widthAll = widthAll - 50;
+      }
+      if (this.curQue.isShowNumber) {
+        widthAll = widthAll - 30;
+      }
+      let widthObj = {
+        width: widthAll + "px"
+      };
+      return widthObj;
     }
   },
   watch: {},
@@ -1865,5 +1912,8 @@ export default {
       }
     }
   }
+  .RLC-sentence {
+    overflow: auto !important;
+  }
 }
 </style>

+ 3 - 2
src/components/Adult/phonePreview/SentenceSortQP.vue

@@ -321,7 +321,7 @@ export default {
     font-weight: normal;
   }
   .item-box {
-    margin: 10px 0;
+    margin: 20px 0;
     b {
       background: #de4444;
       text-align: center;
@@ -335,6 +335,7 @@ export default {
       line-height: 32px;
       margin-right: 4px;
       flex-shrink: 0;
+      margin-top: 8px;
     }
     .content-box {
       // background: rgba(250, 249, 249, 1);
@@ -367,7 +368,7 @@ export default {
     position: relative;
     padding-right: 60px;
     display: flex;
-    align-items: center;
+    // align-items: center;
     > :nth-child(2) {
       width: 100%;
       > :nth-child(1) {

+ 1 - 0
src/components/Adult/phonePreview/Soundrecord.vue

@@ -92,6 +92,7 @@
           microphoneStatus ? 'record-ing' : '',
           selectIndex || selectIndex == 0 ? 'record-black' : ''
         ]"
+        :style="{ fontSize: baseSizePhone + 2 + 'px' }"
         >{{ isPlaying ? "-" : "" }}{{ handleDateTime(recordtime) }}</span
       >
       <el-select

+ 25 - 18
src/components/Adult/phonePreview/TinyModule.vue

@@ -4,39 +4,41 @@
     <div
       v-html="curQue.con_new"
       class="tiny-box"
-      @click="showImg($event)"
+      @click="imgShow($event)"
       :style="{ fontSize: baseSizePhone + 2 + 'px' }"
     ></div>
-    <el-dialog
-      title=""
-      :visible.sync="dialogImg"
-      width="100%"
-      :show-close="false"
-    >
-      <img :src="dialogueImgSrc" width="100%" />
-    </el-dialog>
+
+    <img-preview
+      v-if="imgPreviewDialog"
+      :imgPreviewSrc="imgPreviewSrc"
+      @closeImgPreview="closeImgPreview"
+    ></img-preview>
   </div>
 </template>
 
 <script>
+import ImgPreview from "./components/ImgPreview.vue";
 export default {
-  components: {},
+  components: { ImgPreview },
   props: ["curQue", "baseSizePhone"],
   data() {
     return {
-      dialogImg: false,
-      dialogueImgSrc: ""
+      imgPreviewDialog: false,
+      imgPreviewSrc: ""
     };
   },
   computed: {},
   watch: {},
   //方法集合
   methods: {
-    showImg(e) {
+    imgShow(e) {
       if (e.target.tagName === "IMG") {
-        this.dialogueImgSrc = e.target.src;
-        this.dialogImg = true;
+        this.imgPreviewSrc = e.target.src;
+        this.imgPreviewDialog = true;
       }
+    },
+    closeImgPreview() {
+      this.imgPreviewDialog = false;
     }
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -110,10 +112,15 @@ export default {
   }
 }
 .Big-Book-prev-Tiny-phone {
-  img {
-    max-width: 100%;
-    height: auto;
+  .tiny-box {
+    img {
+      max-width: 100%;
+      height: auto;
+      display: block;
+      margin: 3px auto;
+    }
   }
+
   .el-dialog__header,
   .el-dialog__body {
     padding: 0;

+ 1 - 1
src/components/Adult/phonePreview/VoiceMatrix.vue

@@ -843,7 +843,7 @@ export default {
 
 <style lang="scss" scoped>
 $select-color: #de4444;
-$border-color: #e6e6e6;
+$border-color: rgba(0, 0, 0, 0.1);
 
 $select-color-green: #24b99e;
 $select-color-green-bc: rgba(36, 185, 158, 0.25);

+ 19 - 49
src/components/Adult/phonePreview/VoiceMatrixFullscreen.vue

@@ -1,5 +1,11 @@
 <template>
-  <div :class="['voicefull', bgIndex === 0 ? 'bg1' : 'bg2']">
+  <div
+    :class="[
+      'voicefull',
+      bgIndex === 0 ? 'bg1' : 'bg2',
+      isLandscape ? 'voicefull-scape' : '',
+    ]"
+  >
     <div class="voicefull-top">
       <div :class="['voicefull-top-show']">
         <div class="top-left">
@@ -131,7 +137,6 @@
         </div>
       </div>
     </div>
-
     <div class="voicefull-content">
       <div
         v-if="curQue.voiceMatrix.matrix.length > 0"
@@ -389,46 +394,6 @@
         <div class="matrix-bottom" @mouseenter="clearSelectCell" />
       </div>
     </div>
-
-    <div class="voicefull-bottom">
-      <div :class="['voicefull-bottom-show']">
-        <div class="bottom-left">
-          <soundrecorddiff
-            ref="Soundrecorddiff"
-            :bg-index="bgIndex"
-            :file-name="fileName"
-            :select-data="selectData"
-            :answer-record-list="recordList"
-            @getSelectData="getSelectData"
-            @getWavblob="getWavblob"
-            @handleParentPlay="handleParentPlay"
-            @sentPause="sentPause"
-            @getRerordStatus="getRerordStatus"
-            @getMicrophoneStatus="getMicrophoneStatus"
-            @getPlayStatus="getPlayStatus"
-            @handleWav="handleWav"
-          />
-          <div
-            v-if="isShowCompare"
-            :class="['compare-box', bgIndex === 1 ? 'compare-box-white' : '']"
-          >
-            <audio-compare
-              type="full"
-              :theme-color="themeColor"
-              :url="mp3"
-              :wavblob="wavblob"
-              :sent-pause="sentPause"
-              :is-record="isRecord"
-              :handle-change-stop-audio="handleChangeStopAudio"
-              :get-play-status="getPlayStatus"
-              :matrix-select-lrc="matrixSelectLrc"
-              :get-cur-time="getCurTime"
-              :cur-time="curTime"
-            />
-          </div>
-        </div>
-      </div>
-    </div>
   </div>
 </template>
 
@@ -491,6 +456,7 @@ export default {
       // 拼音、英文显隐判断
       isShowPY: true,
       isShowEN: true,
+      isLandscape: window.innerWidth < window.innerHeight, // 手机是否为竖屏
     };
   },
   computed: {
@@ -977,18 +943,22 @@ $dark-color: #ffc600;
 $dark-color-play: #fff2c6;
 
 .voicefull {
-  width: 100vh;
-  height: 100vw;
+  width: 100vw;
+  height: 100vh;
   overflow: hidden;
-  display: flex;
-  flex-direction: column;
-  transform: rotate(90deg);
-  transform-origin: 0% 0%;
-  margin-left: 100vw;
   position: fixed;
   left: 0;
   top: 0;
   z-index: 99999;
+  &-scape {
+    width: 100vh;
+    height: 100vw;
+    transform: rotate(90deg);
+    transform-origin: 0% 0%;
+    flex-direction: column;
+    margin-left: 100vw;
+    display: flex;
+  }
 
   &.bg1 {
     background: #fff;

+ 66 - 16
src/components/Adult/phonePreview/Voicefullscreen.vue

@@ -1,6 +1,13 @@
 <!--  -->
 <template>
-  <div :class="['voicefull', bgIndex == 0 ? 'bg1' : 'bg2']" v-if="sentList">
+  <div
+    :class="[
+      'voicefull',
+      bgIndex == 0 ? 'bg1' : 'bg2',
+      isLandscape ? 'voicefull-scape' : ''
+    ]"
+    v-if="sentList"
+  >
     <div class="voicefull-top ">
       <div :class="['voicefull-top-show']">
         <div class="top-left">
@@ -193,6 +200,8 @@
               pItem.chs == '“' ? 'textRight' : ''
             ]"
             @dblclick="showWordDetail($event, pItem)"
+            @touchstart="handleTouchStart($event, pItem)"
+            @touchend="handleTouchEnd($event, pItem)"
             @click="playWord(pItem)"
           >
             <template v-if="NumberList.indexOf(pItem.chs) == -1">
@@ -853,6 +862,7 @@
           :bg="wordbgs"
           :ed="wordeds"
           :isFull="true"
+          :baseSizePhone="baseSizePhone"
         />
       </div>
     </template>
@@ -902,7 +912,8 @@ export default {
     "currentTreeID",
     "config",
     "TaskModel",
-    "NpcNewWordMp3"
+    "NpcNewWordMp3",
+    "baseSizePhone"
   ],
   data() {
     return {
@@ -944,8 +955,8 @@ export default {
       stopAudio: false,
       isRecord: false,
       isShowCompare: false,
-      isShowRight: false,
-      isShowLeft: false,
+      isShowRight: true,
+      isShowLeft: true,
       curSentIndex: 0,
       oldHz: "",
       hz: "",
@@ -975,7 +986,10 @@ export default {
       isCollArr: [],
       enwords: "",
       screenHeight: 0,
-      wordPlayMp3: ""
+      wordPlayMp3: "",
+      isLandscape: window.innerWidth < window.innerHeight, // 手机是否为竖屏
+      startTime: 0,
+      endTime: 0
     };
   },
   computed: {
@@ -1116,7 +1130,12 @@ export default {
           this.$message.success("收藏成功!");
         });
       } else {
-        this.$message.warning("权限不足!");
+        this.$message({
+          showClose: true,
+          message: "权限不足!",
+          type: "warning",
+          duration: 2000
+        });
       }
     },
     //取消收藏
@@ -1387,6 +1406,27 @@ export default {
       this.isNewWordPlay = false;
       this.wordIndex = -1;
     },
+    handleTouchStart(event, item) {
+      if (this.startTime) {
+        this.endTime = new Date().getTime();
+      } else {
+        this.startTime = new Date().getTime();
+      }
+    },
+    handleTouchEnd(event, item) {
+      if (
+        this.endTime - this.startTime < 500 &&
+        this.endTime - this.startTime > 0
+      ) {
+        // 500毫秒内完成则为双击
+        this.showWordDetail(event, item);
+      } else {
+        setTimeout(() => {
+          this.endTime = 0;
+          this.startTime = 0;
+        }, 1000);
+      }
+    },
     showWordDetail(e, item) {
       let _this = this;
       if (_this.TaskModel == "ANSWER") {
@@ -1583,23 +1623,31 @@ export default {
 <style lang="scss" scoped>
 //@import url(); 引入公共css类
 .voicefull {
-  width: 100vh;
-  height: 100vw;
+  width: 100vw;
+  height: 100vh;
   overflow: hidden;
-  display: flex;
-  flex-direction: column;
-  transform: rotate(90deg);
-  transform-origin: 0% 0%;
-  margin-left: 100vw;
   position: fixed;
   left: 0;
   top: 0;
   z-index: 99999;
+  &-scape {
+    width: 100vh;
+    height: 100vw;
+    transform: rotate(90deg);
+    transform-origin: 0% 0%;
+    flex-direction: column;
+    margin-left: 100vw;
+    display: flex;
+    .vc-main {
+      max-height: calc(100vw - 132px) !important;
+    }
+  }
   .NNPE-wordDetail {
     position: fixed;
     z-index: 9999;
-    top: 50%;
-    margin-top: -196px;
+    top: 3px;
+    left: 50%;
+    margin-left: -196px;
   }
   &.bg1 {
     background: #fff;
@@ -1924,6 +1972,7 @@ export default {
     box-sizing: border-box;
     display: flex;
     align-items: center;
+    height: calc(100vh - 132px);
     .vc-box {
       padding: 0 8px 0 36px;
       &-right {
@@ -1973,7 +2022,8 @@ export default {
       width: fit-content;
       margin: 0 auto;
       padding: 0 67px;
-      max-height: calc(100vw - 132px);
+      // max-height: calc(100vw - 132px);
+      max-height: 100%;
       overflow: auto;
       .enwords {
         padding: 0 3px;

+ 10 - 10
src/components/Adult/phonePreview/WordPhrase.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="NPC-zhedie NPC-zhedie-phone" v-if="curQue">
+  <div class="NPC-zhedie-phone" v-if="curQue">
     <div :class="curQue.titleBg == 'white' ? 'topTitleWhite' : 'topTitle'">
       <div class="NPC-top-left">
         <template v-if="curQue.conDetail && curQue.conDetail.sentence">
@@ -738,7 +738,7 @@ export default {
 </script>
 <style lang="scss" scoped>
 /* @import url(); 引入css类 */
-.NPC-zhedie {
+.NPC-zhedie-phone {
   width: 100%;
   // margin-bottom: 24px;
   .aduioLine-box {
@@ -998,7 +998,7 @@ export default {
 }
 
 .NPC-Big-Book-preview-green {
-  .NPC-zhedie {
+  .NPC-zhedie-phone {
     .play-btn {
       background: url("../../../assets/NPC/play-green.png") center no-repeat;
       background-size: cover;
@@ -1010,7 +1010,7 @@ export default {
   }
 }
 .NPC-Big-Book-preview-brown {
-  .NPC-zhedie {
+  .NPC-zhedie-phone {
     .play-btn {
       background: url("../../../assets/NPC/play-brown.png") center no-repeat;
       background-size: cover;
@@ -1042,14 +1042,14 @@ export default {
 }
 </style>
 <style lang="scss">
-.NPC-zhedie {
+.NPC-zhedie-phone {
   .topTitle {
     width: 100%;
     display: flex;
     justify-content: space-between;
     padding-left: 24px;
     padding-right: 16px;
-    height: 48px;
+    min-height: 48px;
     background: #e35454;
     border: 1px solid rgba(0, 0, 0, 0.1);
     overflow: hidden;
@@ -1065,7 +1065,7 @@ export default {
         color: #fff;
         font-weight: bold;
         margin-right: 8px;
-        white-space: pre;
+        // white-space: pre;
       }
       .NPC-play-all {
         width: 16px;
@@ -1090,7 +1090,7 @@ export default {
       &-text {
         font-weight: normal;
         font-size: 14px;
-        line-height: 16px;
+        line-height: 1.1;
         color: #ffffff;
       }
       img {
@@ -1216,7 +1216,7 @@ export default {
   }
 }
 .NPC-Big-Book-preview-green {
-  .NPC-zhedie {
+  .NPC-zhedie-phone {
     .topTitle {
       background: #24b99e !important;
     }
@@ -1240,7 +1240,7 @@ export default {
   }
 }
 .NPC-Big-Book-preview-brown {
-  .NPC-zhedie {
+  .NPC-zhedie-phone {
     .topTitle {
       background: #bd8865 !important;
     }

+ 6 - 1
src/components/Adult/phonePreview/components/FreewriteLettle.vue

@@ -174,7 +174,12 @@ export default {
     resetHuahua() {
       let _this = this;
       if (_this.hasPlay) {
-        _this.$message.warning("请等待播放完成");
+        _this.$message({
+          showClose: true,
+          message: "请等待播放完成",
+          type: "warning",
+          duration: 2000
+        });
         return;
       }
       _this.imgOrCans = false;

+ 1 - 1
src/components/Adult/phonePreview/components/OneSentenceTemp.vue

@@ -732,7 +732,7 @@ export default {
       if (config) {
         styleConfig = {
           color: config.fontColor != "sub" ? config.fontColor : "",
-          fontSize: config.fontSize,
+          fontSize: this.maxFontsize + "px",
           fontFamily: config.fontFamily,
           fontWeight: config.fontWeight
         };

+ 10 - 5
src/components/Adult/phonePreview/components/OptionTemp.vue

@@ -61,7 +61,7 @@
                   </div>
                 </template>
                 <template v-else>
-                  <div class="detail_word">
+                  <div class="detail_word" :style="{ width: width }">
                     <SentenceTemp
                       :detail="item.detail"
                       :pyPosition="curQue.pyPosition"
@@ -107,7 +107,7 @@
                 </div>
               </template>
               <template v-else>
-                <div class="detail_word">
+                <div class="detail_word" :style="{ width: width }">
                   <SentenceTemp
                     :detail="item.detail"
                     :pyPosition="curQue.pyPosition"
@@ -162,7 +162,7 @@
                   </div>
                 </template>
                 <template v-else>
-                  <div class="detail_word">
+                  <div class="detail_word" :style="{ width: width }">
                     <SentenceTemp
                       :detail="item.detail"
                       :pyPosition="curQue.pyPosition"
@@ -209,7 +209,7 @@
                 </div>
               </template>
               <template v-else>
-                <div class="detail_word">
+                <div class="detail_word" :style="{ width: width }">
                   <SentenceTemp
                     :detail="item.detail"
                     :pyPosition="curQue.pyPosition"
@@ -254,7 +254,9 @@ export default {
   ],
   data() {
     //这里存放数据
-    return {};
+    return {
+      width: window.innerWidth - 100 + "px"
+    };
   },
   //计算属性 类似于data概念
   computed: {
@@ -495,6 +497,7 @@ ul {
   }
 }
 .detail_word {
+  flex: 1;
   > div {
     display: flex;
     font-family: "FZJCGFKTK";
@@ -551,6 +554,8 @@ ul {
     padding-left: 12px;
     display: flex;
     align-items: center;
+    flex-shrink: 0;
+    flex-flow: wrap;
   }
   .el-radio__input,
   .el-checkbox__input {

+ 1 - 1
src/components/Adult/phonePreview/components/Practice.vue

@@ -432,7 +432,7 @@ export default {
     _this.hanziweight = 6;
     _this.checkCollStatus();
     const regExp = /Android|webOS|iPhone|BlackBerry|IEMobile|Opera Mini/i;
-    this.isPhone = regExp.test(navigator.userAgent);
+    this.isPhone = regExp.test(navigator.userAgent) && window.innerWidth < 860;
   },
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {

+ 1 - 0
src/components/Adult/phonePreview/components/SentenceTemp.vue

@@ -444,6 +444,7 @@ export default {
     clear: both;
     overflow: hidden;
     padding: 7px 0;
+    max-width: 100%;
     &-option {
       padding: 8px 0;
     }

+ 16 - 1
src/components/Adult/phonePreview/components/WordPhraseDetail.vue

@@ -268,6 +268,15 @@
                     </template>
                   </div>
                 </div>
+                <p
+                  v-if="CurrentList.length === 0"
+                  :style="{
+                    textAlign: 'center',
+                    fontSize: baseSizePhone - 2 + 'px'
+                  }"
+                >
+                  暂无例句
+                </p>
               </div>
             </div>
           </div>
@@ -773,7 +782,13 @@ export default {
                     // );
                   }
                   this.CurrentList = JSON.parse(
-                    JSON.stringify(this.list1.sentence_list)
+                    JSON.stringify(
+                      this.list1.sentence_list.length !== 0
+                        ? this.list1.sentence_list
+                        : this.list2.sentence_list.length !== 0
+                        ? this.list2.sentence_list
+                        : this.list3.sentence_list
+                    )
                   );
                   this.loading3 = false;
                 })

+ 4 - 2
src/components/Adult/phonePreview/components/Wordcard.vue

@@ -207,6 +207,7 @@
           :closeWord="changeIntpShow"
           :data="word.detail"
           :themeColor="themeColor"
+          :baseSizePhone="baseSizePhone"
           :bg="bg"
           :ed="ed"
         />
@@ -247,7 +248,8 @@ export default {
     "bg",
     "ed",
     "isFull",
-    "themeColorPhone"
+    "themeColorPhone",
+    "baseSizePhone"
   ],
   data() {
     return {
@@ -485,7 +487,7 @@ export default {
       _this.handleData();
     }
     const regExp = /Android|webOS|iPhone|BlackBerry|IEMobile|Opera Mini/i;
-    this.isPhone = regExp.test(navigator.userAgent);
+    this.isPhone = regExp.test(navigator.userAgent) && window.innerWidth < 860;
     // this.getChineseInfo();
   },
   beforeCreate() {}, //生命周期 - 创建之前

+ 73 - 67
src/components/Adult/preview/VoiceMatrixFullscreen.vue

@@ -6,7 +6,7 @@
       @mouseleave="setBottomShow(false)"
     >
       <div :class="['voicefull-bottom-show', isBottomShow ? '' : 'hidden']">
-        <div class="bottom-left">
+        <!-- <div class="bottom-left">
           <soundrecorddiff
             ref="Soundrecorddiff"
             :bg-index="bgIndex"
@@ -40,7 +40,7 @@
               :cur-time="curTime"
             />
           </div>
-        </div>
+        </div> -->
       </div>
     </div>
 
@@ -50,7 +50,7 @@
         class="matrix"
         :style="{
           'grid-template': `96px repeat(${curQue.voiceMatrix.matrix.length}, auto) minmax(1.5em, 1fr) / 112px repeat(${curQue.voiceMatrix.matrix[0].length}, auto) minmax(124px, 1fr)`,
-          'font-size': `${hzSize}px`,
+          'font-size': `${hzSize}px`
         }"
         @mouseleave="clearSelectCell"
       >
@@ -68,14 +68,14 @@
               "
               v-show="
                 isMobile ||
-                selectColumn === i ||
-                (selectedLine.type === 'column' && selectedLine.index === i)
+                  selectColumn === i ||
+                  (selectedLine.type === 'column' && selectedLine.index === i)
               "
               :class="[
                 `matrix-checkbox-row-${themeColor}`,
                 selectedLine.type === 'column' && selectedLine.index === i
                   ? 'active'
-                  : '',
+                  : ''
               ]"
               @click="selectRowOrColumn(i, 'column')"
             />
@@ -93,14 +93,14 @@
               v-if="curQue.voiceMatrix.rowSelection"
               v-show="
                 isMobile ||
-                selectRow === i ||
-                (selectedLine.type === 'row' && selectedLine.index === i)
+                  selectRow === i ||
+                  (selectedLine.type === 'row' && selectedLine.index === i)
               "
               :class="[
                 `matrix-checkbox-column-${themeColor}`,
                 selectedLine.type === 'row' && selectedLine.index === i
                   ? 'active'
-                  : '',
+                  : ''
               ]"
               @click="selectRowOrColumn(i, 'row')"
             />
@@ -114,7 +114,7 @@
                 (i === 0 && curQue.voiceMatrix.firstLineHighlight) ||
                 (j === row.length - 1 && curQue.voiceMatrix.lastColumnHighlight)
                   ? `highlight-${themeColor}`
-                  : '',
+                  : ''
               ]"
               @mouseenter="matrixCellMouseenter(i, j, column.type)"
             >
@@ -136,7 +136,7 @@
                     column.lrc_data.end_time === -1)
                     ? 'playing'
                     : '',
-                  column.isTitle ? 'title' : '',
+                  column.isTitle ? 'title' : ''
                 ]"
                 @click="matrixCellClick(i, j)"
               >
@@ -150,7 +150,7 @@
                   'connection',
                   i === 0 && curQue.voiceMatrix.firstLineHighlight
                     ? `highlight-bc-${themeColor}`
-                    : '',
+                    : ''
                 ]"
               />
               <!-- 分词 -->
@@ -171,10 +171,10 @@
                     column.lrc_data.end_time === -1)
                     ? 'playing'
                     : '',
-                  column.isTitle ? 'title' : '',
+                  column.isTitle ? 'title' : ''
                 ]"
                 :style="{
-                  'grid-template-columns': `repeat(${column.sentence_data.wordsList.length}, auto)`,
+                  'grid-template-columns': `repeat(${column.sentence_data.wordsList.length}, auto)`
                 }"
                 @click="matrixCellClick(i, j)"
               >
@@ -182,16 +182,18 @@
                   v-for="({ chs, pinyin }, w) in column.sentence_data.wordsList"
                 >
                   <span
-                    :key="`${
-                      column.sentence_data.pyPosition === 'top'
-                        ? 'pinyin'
-                        : 'chs'
-                    }-${w}`"
+                    :key="
+                      `${
+                        column.sentence_data.pyPosition === 'top'
+                          ? 'pinyin'
+                          : 'chs'
+                      }-${w}`
+                    "
                     :style="{
                       visibility:
                         column.sentence_data.pyPosition === 'top' && isShowPY
                           ? 'visible'
-                          : 'hidden',
+                          : 'hidden'
                     }"
                     :class="
                       column.sentence_data.pyPosition === 'top'
@@ -208,16 +210,18 @@
                   v-for="({ chs, pinyin }, w) in column.sentence_data.wordsList"
                 >
                   <span
-                    :key="`${
-                      column.sentence_data.pyPosition === 'top'
-                        ? 'chs'
-                        : 'pinyin'
-                    }-${w}`"
+                    :key="
+                      `${
+                        column.sentence_data.pyPosition === 'top'
+                          ? 'chs'
+                          : 'pinyin'
+                      }-${w}`
+                    "
                     :style="{
                       visibility:
                         column.sentence_data.pyPosition !== 'top' && isShowPY
                           ? 'hidden'
-                          : 'visible',
+                          : 'visible'
                     }"
                     :class="
                       column.sentence_data.pyPosition === 'top'
@@ -249,7 +253,7 @@
                     column.lrc_data.end_time === -1)
                     ? 'playing'
                     : '',
-                  column.isTitle ? 'title' : '',
+                  column.isTitle ? 'title' : ''
                 ]"
                 @click="matrixCellClick(i, j)"
               >
@@ -283,7 +287,7 @@
                     column.lrc_data.end_time === -1)
                     ? 'playing'
                     : '',
-                  column.isTitle ? 'title' : '',
+                  column.isTitle ? 'title' : ''
                 ]"
                 @click="matrixCellClick(i, j)"
               >
@@ -340,7 +344,7 @@
               <span
                 :class="[
                   'font-jian-black',
-                  bgIndex === 1 ? 'font-jian-yellow' : '',
+                  bgIndex === 1 ? 'font-jian-yellow' : ''
                 ]"
                 @click="setFontSize('-')"
               />
@@ -351,21 +355,21 @@
                   'font-jian-black',
                   bgIndex === 1
                     ? 'font-jian-yellow-disabled'
-                    : 'font-jian-white-disabled',
+                    : 'font-jian-white-disabled'
                 ]"
               />
             </template>
             <span
               :class="[
                 'font-img-black',
-                bgIndex === 1 ? 'font-img-yellow' : '',
+                bgIndex === 1 ? 'font-img-yellow' : ''
               ]"
             />
             <template v-if="hzSize <= 76">
               <span
                 :class="[
                   'font-jia-black',
-                  bgIndex === 1 ? 'font-jia-yellow' : '',
+                  bgIndex === 1 ? 'font-jia-yellow' : ''
                 ]"
                 @click="setFontSize('+')"
               />
@@ -376,7 +380,7 @@
                   'font-jia-black',
                   bgIndex === 1
                     ? 'font-jia-yellow-disabled'
-                    : 'font-jia-white-disabled',
+                    : 'font-jia-white-disabled'
                 ]"
               />
             </template>
@@ -389,7 +393,7 @@
               :class="[
                 'keyboard-icon',
                 !isKeyboard ? 'disabled' : '',
-                isKeyboard && bgIndex === 1 ? 'keyboard-icon-yellow' : '',
+                isKeyboard && bgIndex === 1 ? 'keyboard-icon-yellow' : ''
               ]"
             />
           </div>
@@ -418,7 +422,7 @@
               :class="[
                 'repeat-icon',
                 !isRepeat ? 'disabled' : 'auto-icon',
-                isRepeat && bgIndex === 1 ? 'auto-icon-yellow' : '',
+                isRepeat && bgIndex === 1 ? 'auto-icon-yellow' : ''
               ]"
             />
           </div>
@@ -430,9 +434,7 @@
               :class="[
                 'pinyin-icon',
                 !isShowPY || !isHasPY ? 'disabled' : '',
-                isShowPY && isHasPY && bgIndex === 1
-                  ? 'pinyin-icon-yellow'
-                  : '',
+                isShowPY && isHasPY && bgIndex === 1 ? 'pinyin-icon-yellow' : ''
               ]"
             />
           </div>
@@ -444,7 +446,7 @@
               :class="[
                 'en-icon',
                 !isShowEN || !isHasEN ? 'disabled' : '',
-                isShowEN && bgIndex === 1 && isHasEN ? 'en-icon-yellow' : '',
+                isShowEN && bgIndex === 1 && isHasEN ? 'en-icon-yellow' : ''
               ]"
             />
           </div>
@@ -473,16 +475,15 @@ export default {
     VoiceMatrixFullscreenAudio,
     Soundrecorddiff,
     AudioCompare,
-    Wordcard,
+    Wordcard
   },
   props: ["mp3", "curQue", "themeColor", "recordList"],
   data() {
     const userAgent = navigator.userAgent || window.opera;
     // 检查是否包含移动设备的标识
-    let isMobile =
-      /android|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(
-        userAgent
-      );
+    let isMobile = /android|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(
+      userAgent
+    );
 
     return {
       isMobile,
@@ -511,12 +512,12 @@ export default {
       // 行、列选中
       selectedLine: {
         type: "",
-        index: 0,
+        index: 0
       },
       // 点击选中
       selectCell: {
         row: -1,
-        column: -1,
+        column: -1
       },
       isRepeat: false,
       // 跟读所需属性
@@ -528,7 +529,7 @@ export default {
       cellTimer: null,
       // 拼音、英文显隐判断
       isShowPY: true,
-      isShowEN: true,
+      isShowEN: true
     };
   },
   computed: {
@@ -560,7 +561,7 @@ export default {
         type: type.length > 0 && index >= 0 ? type : "cell",
         index,
         row,
-        column,
+        column
       };
     },
     // 矩阵的行、列数从 0 开始
@@ -568,9 +569,9 @@ export default {
       const matrixArr = this.curQue.voiceMatrix.matrix;
       return {
         rows: matrixArr.length - 1,
-        columns: matrixArr.length > 0 ? matrixArr[0].length - 1 : -1,
+        columns: matrixArr.length > 0 ? matrixArr[0].length - 1 : -1
       };
-    },
+    }
   },
   watch: {
     isRecording(newVal) {
@@ -594,7 +595,7 @@ export default {
           }
         }, 50);
       }
-    },
+    }
   },
   created() {
     document.addEventListener("keyup", this.handleKeyup);
@@ -603,8 +604,8 @@ export default {
       "fullscreenchange",
       "mozfullscreenchange",
       "webkitfullscreenchange",
-      "msfullscreenchange",
-    ].forEach((event) => {
+      "msfullscreenchange"
+    ].forEach(event => {
       document.addEventListener(event, this.handleFullscreen);
     });
   },
@@ -614,8 +615,8 @@ export default {
       "fullscreenchange",
       "mozfullscreenchange",
       "webkitfullscreenchange",
-      "msfullscreenchange",
-    ].forEach((event) => {
+      "msfullscreenchange"
+    ].forEach(event => {
       document.removeEventListener(event, this.handleFullscreen);
     });
   },
@@ -658,8 +659,13 @@ export default {
     },
 
     setRecordingFileName(row, column) {
-      let { type, text, sentence_data, pinyin_english_data, text_brackets } =
-        this.curQue.voiceMatrix.matrix[row][column];
+      let {
+        type,
+        text,
+        sentence_data,
+        pinyin_english_data,
+        text_brackets
+      } = this.curQue.voiceMatrix.matrix[row][column];
       if (type === "text") this.fileName = text;
       if (type === "SentenceSegwordChs") this.fileName = sentence_data.sentence;
       if (type === "PinyinEnglish") this.fileName = pinyin_english_data.pinyin;
@@ -708,7 +714,7 @@ export default {
       this.lrcArray = [];
       let { type, index } = this.selectedLine;
       if (type.length > 0 && index >= 0 && type === "row") {
-        this.curQue.voiceMatrix.matrix[index].forEach((item) => {
+        this.curQue.voiceMatrix.matrix[index].forEach(item => {
           let data = this.getLrcData(item);
           if (data) this.lrcArray.push(data);
         });
@@ -717,7 +723,7 @@ export default {
       }
 
       if (type.length > 0 && index >= 0 && type === "column") {
-        this.curQue.voiceMatrix.matrix.forEach((item) => {
+        this.curQue.voiceMatrix.matrix.forEach(item => {
           let data = this.getLrcData(item[index]);
           if (data) this.lrcArray.push(data);
         });
@@ -740,7 +746,7 @@ export default {
         this.$refs.audioLine.PlayAudio();
         if (end_time === -1) return;
         let end = end_time / 1000 - 0.01;
-        this.unWatch = this.$watch("curTime", (val) => {
+        this.unWatch = this.$watch("curTime", val => {
           if (val >= end) {
             if (!this.hasSelectedCell) return this.unWatch();
             this.handleParentPlay();
@@ -790,7 +796,7 @@ export default {
       }
       let arr = [];
       if (type.length > 0 && index >= 0 && type === "row") {
-        this.curQue.voiceMatrix.matrix[index].forEach((item) => {
+        this.curQue.voiceMatrix.matrix[index].forEach(item => {
           let data = this.getLrcData(item);
           if (data) arr.push(data);
         });
@@ -799,7 +805,7 @@ export default {
       }
 
       if (type.length > 0 && index >= 0 && type === "column") {
-        this.curQue.voiceMatrix.matrix.forEach((item) => {
+        this.curQue.voiceMatrix.matrix.forEach(item => {
           let data = this.getLrcData(item[index]);
           if (data) arr.push(data);
         });
@@ -825,7 +831,7 @@ export default {
           return {
             begin_time: lrc_data.begin_time,
             end_time: this.mp3Duration,
-            text: lrc_data.text,
+            text: lrc_data.text
           };
         }
         return lrc_data;
@@ -846,7 +852,7 @@ export default {
         // 监听是否已到结束时间,为了选中效果 - 0.01
         if (end_time === -1) return;
         let end = end_time / 1000 - 0.01;
-        this.unWatch = this.$watch("curTime", (val) => {
+        this.unWatch = this.$watch("curTime", val => {
           if (val >= end) {
             this.handleParentPlay();
             this.$refs.audioLine.onTimeupdateTime(end);
@@ -980,7 +986,7 @@ export default {
         audio.length > 0 &&
         window.location.href.indexOf("GCLS-Learn") == -1
       ) {
-        audio.forEach((item) => {
+        audio.forEach(item => {
           item.pause();
         });
       }
@@ -992,8 +998,8 @@ export default {
     changeFullScreen() {
       this.pauseAudio();
       this.$emit("changeIsFull");
-    },
-  },
+    }
+  }
 };
 </script>
 

+ 6 - 1
src/components/Adult/preview/Voicefullscreen-ly.vue

@@ -2180,7 +2180,12 @@ export default {
           this.$message.success("收藏成功!");
         });
       } else {
-        this.$message.warning("权限不足!");
+        this.$message({
+          showClose: true,
+          message: "权限不足!",
+          type: "warning",
+          duration: 2000
+        });
       }
     },
     //取消收藏

+ 6 - 1
src/components/Adult/preview/Voicefullscreen.vue

@@ -1137,7 +1137,12 @@ export default {
           this.$message.success("收藏成功!");
         });
       } else {
-        this.$message.warning("权限不足!");
+        this.$message({
+          showClose: true,
+          message: "权限不足!",
+          type: "warning",
+          duration: 2000
+        });
       }
     },
     //取消收藏

+ 6 - 1
src/components/Adult/preview/components/FreewriteLettle.vue

@@ -170,7 +170,12 @@ export default {
     resetHuahua() {
       let _this = this;
       if (_this.hasPlay) {
-        _this.$message.warning("请等待播放完成");
+        _this.$message({
+          showClose: true,
+          message: "请等待播放完成",
+          type: "warning",
+          duration: 2000
+        });
         return;
       }
       _this.imgOrCans = false;

+ 1 - 1
src/components/Adult/preview/components/Practice.vue

@@ -426,7 +426,7 @@ export default {
     _this.hanziweight = 6;
     _this.checkCollStatus();
     const regExp = /Android|webOS|iPhone|BlackBerry|IEMobile|Opera Mini/i;
-    this.isPhone = regExp.test(navigator.userAgent);
+    this.isPhone = regExp.test(navigator.userAgent) && window.innerWidth < 860;
   },
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {

+ 16 - 1
src/components/Adult/preview/components/WordPhraseDetail.vue

@@ -244,6 +244,15 @@
                     </template>
                   </div>
                 </div>
+                <p
+                  v-if="CurrentList.length === 0"
+                  :style="{
+                    textAlign: 'center',
+                    fontSize: baseSizePhone - 2 + 'px'
+                  }"
+                >
+                  暂无例句
+                </p>
               </div>
             </div>
           </div>
@@ -749,7 +758,13 @@ export default {
                     // );
                   }
                   this.CurrentList = JSON.parse(
-                    JSON.stringify(this.list1.sentence_list)
+                    JSON.stringify(
+                      this.list1.sentence_list.length !== 0
+                        ? this.list1.sentence_list
+                        : this.list2.sentence_list.length !== 0
+                        ? this.list2.sentence_list
+                        : this.list3.sentence_list
+                    )
                   );
                   this.loading3 = false;
                 })

+ 1 - 1
src/components/Adult/preview/components/Wordcard.vue

@@ -484,7 +484,7 @@ export default {
       _this.handleData();
     }
     const regExp = /Android|webOS|iPhone|BlackBerry|IEMobile|Opera Mini/i;
-    this.isPhone = regExp.test(navigator.userAgent);
+    this.isPhone = regExp.test(navigator.userAgent) && window.innerWidth < 860;
     // this.getChineseInfo();
   },
   beforeCreate() {}, //生命周期 - 创建之前

+ 6 - 2
src/components/TreeView.vue

@@ -13,7 +13,11 @@
             activeIndex == node.data.id
               ? 'tree_box_item_active'
               : 'tree_box_item',
-            node.data.children ? 'tree_box_item_father' : ''
+            node.data.children ? 'tree_box_item_father' : '',
+            node.data.level_index ===
+            nodeLevel.substring(0, node.data.level_index.length)
+              ? 'tree_box_item_active'
+              : ''
           ]"
         >
           <span style="margin-right: 10px">{{ node.label }}</span>
@@ -231,7 +235,7 @@ export default {
   },
   created() {
     const regExp = /Android|webOS|iPhone|BlackBerry|IEMobile|Opera Mini/i;
-    this.isPhone = regExp.test(navigator.userAgent);
+    this.isPhone = regExp.test(navigator.userAgent) && window.innerWidth < 860;
     this.getList();
     //this.$refs.tree.foldAllAfterMounted = true;
   }

+ 1 - 1
src/views/courseView.vue

@@ -161,7 +161,7 @@ export default {
   created() {
     const _this = this;
     const regExp = /Android|webOS|iPhone|BlackBerry|IEMobile|Opera Mini/i;
-    this.isPhone = regExp.test(navigator.userAgent);
+    this.isPhone = regExp.test(navigator.userAgent) && window.innerWidth < 860;
     _this.bookId = this.$route.query.bookId;
     // if (localStorage.getItem("Bookanswer")) {
     //   this.TaskModel = "ANSWER";