Sfoglia il codice sorgente

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

zq 10 mesi fa
parent
commit
d8f663d33f
22 ha cambiato i file con 681 aggiunte e 450 eliminazioni
  1. 2 4
      src/views/book/courseware/create/components/base/common/SelectResource.vue
  2. 1 1
      src/views/book/courseware/create/components/question/fill/Fill.vue
  3. 43 33
      src/views/book/courseware/data/dialogueArticle.js
  4. 30 21
      src/views/book/courseware/preview/components/article/NormalModelChs.vue
  5. 85 27
      src/views/book/courseware/preview/components/article/PhraseModelChs.vue
  6. 26 8
      src/views/book/courseware/preview/components/article/Practicechs.vue
  7. 292 238
      src/views/book/courseware/preview/components/article/Voicefullscreen.vue
  8. 26 9
      src/views/book/courseware/preview/components/article/WordModelChs.vue
  9. 1 1
      src/views/book/courseware/preview/components/article/components/FreewriteLettle.vue
  10. 4 3
      src/views/book/courseware/preview/components/article/components/Notecard.vue
  11. 2 2
      src/views/book/courseware/preview/components/article/components/Practice.vue
  12. 8 4
      src/views/book/courseware/preview/components/article/components/Wordcard.vue
  13. 3 0
      src/views/book/courseware/preview/components/article/index.vue
  14. 1 1
      src/views/book/courseware/preview/components/character_base/components/FreewriteLettle.vue
  15. 36 16
      src/views/book/courseware/preview/components/dialogue_article/NormalModelChs.vue
  16. 30 21
      src/views/book/courseware/preview/components/dialogue_article/PhraseModelChs.vue
  17. 61 48
      src/views/book/courseware/preview/components/dialogue_article/Practicechs.vue
  18. 2 2
      src/views/book/courseware/preview/components/dialogue_article/WordModelChs.vue
  19. 2 0
      src/views/book/courseware/preview/components/dialogue_article/index.vue
  20. 9 2
      src/views/book/courseware/preview/components/fill/FillPreview.vue
  21. 13 5
      src/views/book/courseware/preview/components/new_word/NewWordPreview.vue
  22. 4 4
      src/views/book/courseware/preview/components/new_word/components/writeTableZoom.vue

+ 2 - 4
src/views/book/courseware/create/components/base/common/SelectResource.vue

@@ -50,8 +50,8 @@
           <el-image style="height: 90px" :src="require('@/assets/h5-games.png')" fit="contain" />
         </template>
         <template v-else-if="type_index === 4">
-          <el-image style="height: 90px" :src="require('@/assets/3d-model.png')" fit="contain"
-        /></template>
+          <el-image style="height: 90px" :src="require('@/assets/3d-model.png')" fit="contain" />
+        </template>
         <template v-else-if="type_index === 5">
           <el-image style="height: 90px" :src="require('@/assets/txt.png')" fit="contain" />
         </template>
@@ -100,7 +100,6 @@
 
 <script>
 import PaginationPage from '@/components/PaginationPage.vue';
-import AudioLine from '@/views/personal_workbench/project/components/AudioLine.vue';
 
 import { PageQueryProjectResourceList } from '@/api/list';
 import { H5StartupFile } from '@/api/app';
@@ -112,7 +111,6 @@ export default {
   name: 'SelectResource',
   components: {
     PaginationPage,
-    AudioLine,
   },
   props: {
     visible: {

+ 1 - 1
src/views/book/courseware/create/components/question/fill/Fill.vue

@@ -119,7 +119,7 @@ export default {
         if (!val) return;
         this.data.word_list = val
           .split(/[\n\r]+/)
-          .map((item) => item.split(' ').filter((s) => s))
+          .map((item) => item.split(/\s+/).filter((s) => s))
           .flat()
           .map((content) => {
             return {

+ 43 - 33
src/views/book/courseware/data/dialogueArticle.js

@@ -5,11 +5,11 @@ import {
   arrangeTypeList,
   switchOption,
   isEnable,
-  pinyinPositionList
+  pinyinPositionList,
 } from '@/views/book/courseware/data/common';
 import { getRandomNumber } from '@/utils';
 
-export { arrangeTypeList, switchOption, isEnable,pinyinPositionList };
+export { arrangeTypeList, switchOption, isEnable, pinyinPositionList };
 
 export const roleDefaultColorList = ['#306EFF', '#3ABD38', '#FC8E3D', '#FC493D', '#BF3DFC']; // 角色默认颜色
 
@@ -79,7 +79,7 @@ export const roleTypeList = [
 export const multilingualList = [
   { value: 'para', label: '句/段落' },
   { value: 'all', label: '整篇' },
-]
+];
 
 export function getArticleProperty() {
   return {
@@ -97,7 +97,7 @@ export function getArticleProperty() {
 
     role_img_type: 'word',
     role_list: [getRole(0), getRole(1)],
-    
+
     multilingual_position: multilingualList[0].value,
   };
 }
@@ -111,7 +111,7 @@ export function getRole(index, name = '') {
   return {
     name: name || `角色${index + 1}`,
     mark: getRandomNumber(),
-    color: roleDefaultColorList[index%5],
+    color: roleDefaultColorList[index % 5],
     simpleHead: '',
     img_list: [],
     fullName: '',
@@ -155,22 +155,27 @@ export function getArticleData() {
         file_id: '',
       },
       wordTime: [], // 字幕时间节点
-      taskId:'',
+      taskId: '',
       file_id_list: [], // 文件 id
       col_width: [
         {
-          value:100  // 生词
-        },{
-          value:110  // 拼音
-        },{
-          value:50  // 词性
-        },{
-          value:180  // 释义
-        },{
-          value:180  // 搭配
-        },{
-          value:200  // 例句
-        }
+          value: 100, // 生词
+        },
+        {
+          value: 110, // 拼音
+        },
+        {
+          value: 50, // 词性
+        },
+        {
+          value: 180, // 释义
+        },
+        {
+          value: 180, // 搭配
+        },
+        {
+          value: 200, // 例句
+        },
       ], // 列宽
     }, // 生词列表
     other_word_list: {
@@ -199,30 +204,35 @@ export function getArticleData() {
         file_id: '',
       },
       wordTime: [], // 字幕时间节点
-      taskId:'',
+      taskId: '',
       file_id_list: [], // 文件 id
       col_width: [
         {
-          value:125  // 生词
-        },{
-          value:125  // 拼音
-        },{
-          value:125  // 词性
-        },{
-          value:125  // 释义
-        },{
-          value:150  // 搭配
-        },{
-          value:300  // 例句
-        }
+          value: 125, // 生词
+        },
+        {
+          value: 125, // 拼音
+        },
+        {
+          value: 125, // 词性
+        },
+        {
+          value: 125, // 释义
+        },
+        {
+          value: 150, // 搭配
+        },
+        {
+          value: 300, // 例句
+        },
       ], // 列宽
     },
     notes_list: {
       title_con: '',
       option: [],
-      property:{}
+      property: {},
     },
-    sentence_list_mp: [], //句子+分词数组
+    sentence_list_mp: [], // 句子+分词数组
     pinyin_type: 'pinyin', // 拼音类型
     multilingual: [], // 多语言
   };

+ 30 - 21
src/views/book/courseware/preview/components/article/NormalModelChs.vue

@@ -116,7 +116,7 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ pItem.pinyin }}</span
+                            >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -185,7 +185,7 @@
                                     pItem.articleSentIndex,
                                   )
                                 "
-                                >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs[wIndex] : '' }}</span
+                                >{{ pItem.chs[wIndex] }}</span
                               >
                             </template>
                           </span>
@@ -212,7 +212,7 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ pItem.pinyin }}</span
+                            >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                           >
                         </span>
                         <span class="NNPE-words-box">
@@ -239,7 +239,11 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
+                                ? item.wordsList[pIndex + 1].pinyin
+                                : ''
+                            }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -299,11 +303,7 @@
                                 pItem.articleSentIndex,
                               )
                             "
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
-                                ? item.wordsList[pIndex + 1].chs
-                                : ''
-                            }}</span
+                            >{{ item.wordsList[pIndex + 1].chs }}</span
                           >
                           <span
                             v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
@@ -328,7 +328,11 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
+                                ? item.wordsList[pIndex + 1].pinyin
+                                : ''
+                            }}</span
                           >
                         </span>
                         <span
@@ -363,7 +367,11 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
+                                ? item.wordsList[pIndex + 2].pinyin
+                                : ''
+                            }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -423,11 +431,7 @@
                                 pItem.articleSentIndex,
                               )
                             "
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
-                                ? item.wordsList[pIndex + 2].chs
-                                : ''
-                            }}</span
+                            >{{ item.wordsList[pIndex + 2].chs }}</span
                           >
                           <span
                             v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
@@ -452,7 +456,11 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
+                                ? item.wordsList[pIndex + 2].pinyin
+                                : ''
+                            }}</span
                           >
                         </span>
                       </template>
@@ -479,7 +487,7 @@
                             height:
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                         >
                         <span
                           class="NNPE-chs"
@@ -546,7 +554,7 @@
                                   pItem.articleSentIndex,
                                 )
                               "
-                              >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs[wIndex] : '' }}</span
+                              >{{ pItem.chs[wIndex] }}</span
                             >
                           </template>
                         </span>
@@ -572,7 +580,7 @@
                             height:
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                         >
                       </template>
                     </template>
@@ -1805,7 +1813,8 @@ export default {
     max-width: 100%;
     margin-top: -196px;
     overflow: auto;
-    box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
+
+    // box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
   }
 
   .NNPE-detail-box {

+ 85 - 27
src/views/book/courseware/preview/components/article/PhraseModelChs.vue

@@ -102,7 +102,7 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ pItem.pinyin }}</span
+                            >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                           >
                           <span
                             :class="[
@@ -124,8 +124,32 @@
                                     : ''
                                   : '',
                             }"
-                            @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
-                            >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs : '' }}</span
+                            ><span
+                              v-for="(wItem, wIndex) in pItem.leg"
+                              :key="'ci' + wIndex + pIndex + index"
+                              :class="[
+                                isPlaying &&
+                                pItem.chstimeList &&
+                                pItem.chstimeList[wIndex] &&
+                                curTime >= pItem.chstimeList[wIndex].wordBg &&
+                                curTime < item.timeList[pItem.sentIndex].ed
+                                  ? 'wordActive'
+                                  : '',
+                              ]"
+                              :style="{
+                                color:
+                                  isPlaying &&
+                                  pItem.chstimeList &&
+                                  pItem.chstimeList[wIndex] &&
+                                  curTime >= pItem.chstimeList[wIndex].wordBg &&
+                                  curTime < item.timeList[pItem.sentIndex].ed &&
+                                  attrib
+                                    ? attrib.topic_color
+                                    : '',
+                              }"
+                              @click.stop="viewNotes($event, pItem.chs[wIndex])"
+                              >{{ pItem.chs[wIndex] }}</span
+                            ></span
                           >
                           <span
                             v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
@@ -142,7 +166,7 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ pItem.pinyin }}</span
+                            >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                           >
                         </span>
                         <span class="NNPE-words-box">
@@ -161,7 +185,11 @@
                                   : '22px',
                             }"
                             @click.stop="viewNotes($event, item.wordsList[pIndex + 1].pinyin)"
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
+                                ? item.wordsList[pIndex + 1].pinyin
+                                : ''
+                            }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -182,11 +210,7 @@
                                   : item.wordsList[pIndex + 1].chs,
                               )
                             "
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
-                                ? item.wordsList[pIndex + 1].chs
-                                : ''
-                            }}</span
+                            >{{ item.wordsList[pIndex + 1].chs }}</span
                           >
                           <span
                             v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
@@ -203,7 +227,11 @@
                                   : '22px',
                             }"
                             @click.stop="viewNotes($event, item.wordsList[pIndex + 1].pinyin)"
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
+                                ? item.wordsList[pIndex + 1].pinyin
+                                : ''
+                            }}</span
                           >
                         </span>
 
@@ -231,7 +259,11 @@
                                   : '22px',
                             }"
                             @click.stop="viewNotes($event, item.wordsList[pIndex + 2].pinyin)"
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
+                                ? item.wordsList[pIndex + 2].pinyin
+                                : ''
+                            }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -252,11 +284,7 @@
                                   : item.wordsList[pIndex + 2].chs,
                               )
                             "
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
-                                ? item.wordsList[pIndex + 2].chs
-                                : ''
-                            }}</span
+                            >{{ item.wordsList[pIndex + 2].chs }}</span
                           >
                           <span
                             v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
@@ -273,7 +301,11 @@
                                   : '22px',
                             }"
                             @click.stop="viewNotes($event, item.wordsList[pIndex + 2].pinyin)"
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
+                                ? item.wordsList[pIndex + 2].pinyin
+                                : ''
+                            }}</span
                           >
                         </span>
                       </template>
@@ -292,7 +324,7 @@
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
                           @click.stop="viewNotes($event, pItem.pinyin)"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                         >
                         <span
                           class="NNPE-chs"
@@ -315,8 +347,32 @@
                                   : ''
                                 : '',
                           }"
-                          @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
-                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs : '' }}</span
+                          ><span
+                            v-for="(wItem, wIndex) in pItem.leg"
+                            :key="'ci' + wIndex + pIndex + index"
+                            :class="[
+                              isPlaying &&
+                              pItem.chstimeList &&
+                              pItem.chstimeList[wIndex] &&
+                              curTime >= pItem.chstimeList[wIndex].wordBg &&
+                              curTime < item.timeList[pItem.sentIndex].ed
+                                ? 'wordActive'
+                                : '',
+                            ]"
+                            :style="{
+                              color:
+                                isPlaying &&
+                                pItem.chstimeList &&
+                                pItem.chstimeList[wIndex] &&
+                                curTime >= pItem.chstimeList[wIndex].wordBg &&
+                                curTime < item.timeList[pItem.sentIndex].ed &&
+                                attrib
+                                  ? attrib.topic_color
+                                  : '',
+                            }"
+                            @click.stop="viewNotes($event, pItem.chs[wIndex])"
+                            >{{ pItem.chs[wIndex] }}</span
+                          ></span
                         >
                         <span
                           v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
@@ -332,7 +388,7 @@
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
                           @click.stop="viewNotes($event, pItem.pinyin)"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                         >
                       </template>
                     </template>
@@ -443,8 +499,8 @@
                                 lineHeight:
                                   attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               }"
-                              @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
-                              >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs[wIndex] : '' }}</span
+                              @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs[wIndex])"
+                              >{{ pItem.chs[wIndex] }}</span
                             >
                           </template>
                         </span>
@@ -657,8 +713,8 @@
                               lineHeight:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                             }"
-                            @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
-                            >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs[wIndex] : '' }}</span
+                            @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs[wIndex])"
+                            >{{ pItem.chs[wIndex] }}</span
                           >
                         </template>
                       </span>
@@ -1049,6 +1105,7 @@ export default {
               isShow: wItem.isShow,
               isNewWord: this.newWords.indexOf(wItem.chs) > -1,
               words,
+              leg: wItem.chs.length,
               config: {
                 fontFamily: wItem.fontFamily,
               },
@@ -1630,7 +1687,8 @@ export default {
     max-width: 100%;
     margin-top: -196px;
     overflow: auto;
-    box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
+
+    // box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
 
     //   width: 260px;
     //   height: 200px;

+ 26 - 8
src/views/book/courseware/preview/components/article/Practicechs.vue

@@ -124,7 +124,7 @@
                             height:
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                         >
                       </template>
                       <span
@@ -181,7 +181,7 @@
                             height:
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                         >
                       </template>
                     </span>
@@ -200,7 +200,11 @@
                             height:
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
-                          >{{ item.sentArr[pIndex + 1].pinyin }}</span
+                          >{{
+                            NumberList.indexOf(item.sentArr[pIndex + 1].pinyin) == -1
+                              ? item.sentArr[pIndex + 1].pinyin
+                              : ''
+                          }}</span
                         >
                       </template>
                       <span class="NNPE-chs" style="text-align: left" :class="[sentIndex == index ? 'wordBlank' : '']">
@@ -254,7 +258,11 @@
                             height:
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
-                          >{{ item.sentArr[pIndex + 1].pinyin }}</span
+                          >{{
+                            NumberList.indexOf(item.sentArr[pIndex + 1].pinyin) == -1
+                              ? item.sentArr[pIndex + 1].pinyin
+                              : ''
+                          }}</span
                         >
                       </template>
                     </span>
@@ -280,7 +288,11 @@
                             height:
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
-                          >{{ item.sentArr[pIndex + 2].pinyin }}</span
+                          >{{
+                            NumberList.indexOf(item.sentArr[pIndex + 2].pinyin) == -1
+                              ? item.sentArr[pIndex + 2].pinyin
+                              : ''
+                          }}</span
                         >
                       </template>
                       <span class="NNPE-chs" style="text-align: left" :class="[sentIndex == index ? 'wordBlank' : '']">
@@ -334,7 +346,11 @@
                             height:
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
-                          >{{ item.sentArr[pIndex + 2].pinyin }}</span
+                          >{{
+                            NumberList.indexOf(item.sentArr[pIndex + 2].pinyin) == -1
+                              ? item.sentArr[pIndex + 2].pinyin
+                              : ''
+                          }}</span
                         >
                       </template>
                     </span>
@@ -355,7 +371,7 @@
                           height:
                             attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                         }"
-                        >{{ pItem.pinyin }}</span
+                        >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                       >
                     </template>
                     <span
@@ -417,7 +433,7 @@
                           height:
                             attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                         }"
-                        >{{ pItem.pinyin }}</span
+                        >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                       >
                     </template>
                   </template>
@@ -614,6 +630,7 @@
         :mp3="curQue.mp3_list && curQue.mp3_list[0] ? curQue.mp3_list[0].url : ''"
         :no-font="noFont"
         :NNPENewWordList="NNPENewWordList"
+        :NNPEAnnotationList="NNPEAnnotationList"
         :current-tree-i-d="currentTreeID"
         :config="config"
         :TaskModel="TaskModel"
@@ -646,6 +663,7 @@ export default {
     'noFont',
     'themeColor',
     'NNPENewWordList',
+    'NNPEAnnotationList',
     'currentTreeID',
     'config',
     'TaskModel',

+ 292 - 238
src/views/book/courseware/preview/components/article/Voicefullscreen.vue

@@ -1,126 +1,16 @@
 <!--  -->
 <template>
   <div v-if="sentList" :class="['voicefull', bgIndex == 0 ? 'bg1' : 'bg2']">
-    <div class="voicefull-top" @mouseover="setTopShow(true)" @mouseleave="setTopShow(false)">
-      <div :class="[isTopShow ? 'voicefull-top-show' : 'voicefull-top-hidden']">
-        <div class="top-left">
-          <div :class="['select-bg', bgIndex == 1 ? 'select-bg-blue' : '']">
-            <div :class="['bg-green-box', bgIndex == 1 ? 'active' : '']">
-              <span :class="['bg-green', bgIndex == 1 ? 'active' : '']" @click="changeBg(1)"></span>
-            </div>
-            <div :class="['bg-white-box', bgIndex == 0 ? 'active' : '']">
-              <span :class="['bg-white', bgIndex == 0 ? 'active' : '']" @click="changeBg(0)"></span>
-            </div>
-          </div>
-          <div :class="['set-fontSize', bgIndex == 1 ? 'set-fontSize-green' : '']">
-            <template v-if="hzSize >= 34">
-              <span
-                :class="['font-jian-black', bgIndex == 1 ? 'font-jian-yellow' : '']"
-                @click="setFontSize('-')"
-              ></span>
-            </template>
-            <template v-else>
-              <span
-                :class="['font-jian-black', bgIndex == 1 ? 'font-jian-yellow-disabled' : 'font-jian-white-disabled']"
-              ></span>
-            </template>
-            <span :class="['font-img-black', bgIndex == 1 ? 'font-img-yellow' : '']"></span>
-            <template v-if="hzSize <= 76">
-              <span :class="['font-jia-black', bgIndex == 1 ? 'font-jia-yellow' : '']" @click="setFontSize('+')"></span>
-            </template>
-            <template v-else>
-              <span
-                :class="['font-jia-black', bgIndex == 1 ? 'font-jia-yellow-disabled' : 'font-jia-white-disabled']"
-              ></span>
-            </template>
-          </div>
-          <div
-            :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']"
-            title="键盘控制开启后,可用方向键控制翻页,空格键播放暂停,回车键录音"
-            @click="changeStatus('isKeyboard')"
-          >
-            <span
-              :class="[
-                'keyboard-icon',
-                !isKeyboard ? 'disabled' : '',
-                isKeyboard && bgIndex == 1 ? 'keyboard-icon-yellow' : '',
-              ]"
-            ></span>
-          </div>
-        </div>
-        <div class="top-middle">
-          <template v-if="mp3">
-            <AudioLineSentence
-              :key="'sent' + curSentIndex"
-              ref="audioLineSent"
-              :mp3="mp3"
-              :get-cur-time="getCurTime"
-              :audio-id="'artPraAudioId' + curSentIndex"
-              :stop-audio="stopAudio"
-              :width="120"
-              :hide-slider="true"
-              :bg="bg"
-              :ed="ed"
-              :cur-time="curTime"
-              :max-time="maxTime"
-              :bg-index="bgIndex"
-              :is-repeat="isRepeat"
-              :is-auto="isAuto"
-              @playChange="playChange"
-              @rollSentence="rollSentence"
-            />
-          </template>
-          <div :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']" @click="setStatus">
-            <span
-              :class="[
-                'repeat-icon',
-                !isRepeat && !isAuto ? 'disabled' : '',
-                !isRepeat && isAuto ? 'auto-icon' : '',
-                isRepeat && bgIndex == 1 ? 'repeat-icon-yellow' : '',
-                !isRepeat && isAuto && bgIndex == 1 ? 'auto-icon-yellow' : '',
-              ]"
-            ></span>
-          </div>
-          <div :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']" @click="changePinyin">
-            <span
-              :class="[
-                'pinyin-icon',
-                !config.isShowPY ? 'disabled' : '',
-                config.isShowPY && bgIndex == 1 ? 'pinyin-icon-yellow' : '',
-              ]"
-            ></span>
-          </div>
-          <div :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']" @click="changeEN">
-            <span
-              :class="[
-                'en-icon',
-                !enwords ? 'disabled' : '',
-                !config.isShowEN ? 'disabled' : '',
-                config.isShowEN && bgIndex == 1 ? 'en-icon-yellow' : '',
-              ]"
-            ></span>
-          </div>
-          <!-- <div
-            :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']"
-            title="点击收藏后可在“个人中心”-“我的收藏”查看"
-            @click="handleColl"
-          >
-            <span
-              :class="[
-                'coll-icon',
-                !isCollArr[curSentIndex] ? 'disabled' : '',
-                isCollArr[curSentIndex] && bgIndex == 1 ? 'coll-icon-yellow' : '',
-              ]"
-            ></span>
-          </div> -->
-        </div>
-        <div :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']" @click="exitFullScreen">
-          <span :class="['close-icon', bgIndex == 1 ? 'close-icon-white' : '']"></span>
+    <div class="voicefull-bottom" @mouseover="setTopShow(true)" @mouseleave="setTopShow(false)">
+      <div :class="[isTopShow ? 'voicefull-bottom-show' : 'voicefull-bottom-hidden']">
+        <div :class="['bottom-left', TaskModel == 'ANSWER' ? 'bottom-left-margin' : '']"></div>
+        <div :class="['page-count', bgIndex == 0 ? 'page-count-white' : 'page-count-green']">
+          {{ curSentIndex + 1 }}/{{ sentList.length }}
         </div>
       </div>
     </div>
     <div v-if="item" class="voicefull-content">
-      <div class="vc-box" @mousemove="showPrevNext(true, 'isShowLeft')" @mouseleave="showPrevNext(false, 'isShowLeft')">
+      <div class="vc-box">
         <div
           :class="[
             'vc-left vc-left-grey',
@@ -152,7 +42,7 @@
             @dblclick="showWordDetail($event, pItem)"
             @click="playWord(pItem)"
           >
-            <template v-if="NumberList.indexOf(pItem.chs) == -1">
+            <template>
               <template v-if="!pItem.width">
                 <template v-if="pItem.isShow">
                   <template
@@ -172,7 +62,7 @@
                             fontSize: pySize + 'px',
                             height: pySize * 1.25 + 'px',
                           }"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                         >
                       </template>
                       <span
@@ -230,7 +120,7 @@
                             fontSize: pySize + 'px',
                             height: pySize * 1.25 + 'px',
                           }"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                         >
                       </template>
                     </span>
@@ -248,7 +138,7 @@
                             textAlign: left,
                             height: pySize * 1.25 + 'px',
                           }"
-                          >{{ item[pIndex + 1].pinyin }}</span
+                          >{{ NumberList.indexOf(item[pIndex + 1].pinyin) == -1 ? item[pIndex + 1].pinyin : '' }}</span
                         >
                       </template>
                       <span
@@ -301,7 +191,7 @@
                             textAlign: left,
                             height: pySize * 1.25 + 'px',
                           }"
-                          >{{ item[pIndex + 1].pinyin }}</span
+                          >{{ NumberList.indexOf(item[pIndex + 1].pinyin) == -1 ? item[pIndex + 1].pinyin : '' }}</span
                         >
                       </template>
                     </span>
@@ -322,7 +212,7 @@
                             textAlign: left,
                             height: pySize * 1.25 + 'px',
                           }"
-                          >{{ item[pIndex + 2].pinyin }}</span
+                          >{{ NumberList.indexOf(item[pIndex + 2].pinyin) == -1 ? item[pIndex + 2].pinyin : '' }}</span
                         >
                       </template>
                       <span
@@ -375,30 +265,28 @@
                             textAlign: left,
                             height: pySize * 1.25 + 'px',
                           }"
-                          >{{ item[pIndex + 2].pinyin }}</span
+                          >{{ NumberList.indexOf(item[pIndex + 2].pinyin) == -1 ? item[pIndex + 2].pinyin : '' }}</span
                         >
                       </template>
                     </span>
                   </template>
                   <template v-else>
                     <template v-if="curQue.property.pinyin_position == 'top'">
-                      <template v-if="NumberList.indexOf(pItem.pinyin) < 0">
-                        <span
-                          v-if="config.isShowPY"
-                          class="NNPE-pinyin"
-                          :class="[
-                            pItem.chs != '“' && pItem.padding ? 'padding' : '',
-                            pItem.className ? pItem.className : '',
-                            noFont.indexOf(pItem.pinyin) > -1 ? 'noFont' : '',
-                            bgIndex == 1 ? 'font-white' : '',
-                          ]"
-                          :style="{
-                            fontSize: pySize + 'px',
-                            height: pySize * 1.25 + 'px',
-                          }"
-                          >{{ pItem.pinyin }}</span
-                        >
-                      </template>
+                      <span
+                        v-if="config.isShowPY"
+                        class="NNPE-pinyin"
+                        :class="[
+                          pItem.chs != '“' && pItem.padding ? 'padding' : '',
+                          pItem.className ? pItem.className : '',
+                          noFont.indexOf(pItem.pinyin) > -1 ? 'noFont' : '',
+                          bgIndex == 1 ? 'font-white' : '',
+                        ]"
+                        :style="{
+                          fontSize: pySize + 'px',
+                          height: pySize * 1.25 + 'px',
+                        }"
+                        >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
+                      >
                     </template>
                     <span
                       v-if="pItem.chs != '#'"
@@ -444,22 +332,20 @@
                       </template>
                     </span>
                     <template v-if="curQue.property.pinyin_position == 'bottom'">
-                      <template v-if="NumberList.indexOf(pItem.pinyin) < 0">
-                        <span
-                          v-if="config.isShowPY"
-                          class="NNPE-pinyin bottom"
-                          :class="[
-                            pItem.chs != '“' && pItem.padding ? 'padding' : '',
-                            pItem.className ? pItem.className : '',
-                            bgIndex == 1 ? 'font-white' : '',
-                          ]"
-                          :style="{
-                            fontSize: pySize + 'px',
-                            height: pySize * 1.25 + 'px',
-                          }"
-                          >{{ pItem.pinyin }}</span
-                        >
-                      </template>
+                      <span
+                        v-if="config.isShowPY"
+                        class="NNPE-pinyin bottom"
+                        :class="[
+                          pItem.chs != '“' && pItem.padding ? 'padding' : '',
+                          pItem.className ? pItem.className : '',
+                          bgIndex == 1 ? 'font-white' : '',
+                        ]"
+                        :style="{
+                          fontSize: pySize + 'px',
+                          height: pySize * 1.25 + 'px',
+                        }"
+                        >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
+                      >
                     </template>
                   </template>
                 </template>
@@ -487,11 +373,7 @@
           {{ enwords }}
         </div>
       </div>
-      <div
-        class="vc-box-right"
-        @mousemove="showPrevNext(true, 'isShowRight')"
-        @mouseleave="showPrevNext(false, 'isShowRight')"
-      >
+      <div class="vc-box-right">
         <div
           :class="[
             'vc-left vc-right-grey',
@@ -503,48 +385,121 @@
         ></div>
       </div>
     </div>
-    <div class="voicefull-bottom" @mouseover="setBottomShow(true)" @mouseleave="setBottomShow(false)">
-      <div :class="[isBottomShow ? 'voicefull-bottom-show' : 'voicefull-bottom-hidden']">
-        <div :class="['bottom-left', TaskModel == 'ANSWER' ? 'bottom-left-margin' : '']">
-          <Soundrecorddiff
-            ref="Soundrecorddiff"
-            :bg-index="bgIndex"
-            :TaskModel="TaskModel"
-            :answer-record-list="
-              curQue.Bookanswer.practiceModel[curSentIndex] && curQue.Bookanswer.practiceModel[curSentIndex].recordList
-            "
-            :tm-index="curSentIndex"
-            @handleWav="handleWav"
-            :key="'Soundrecorddiff' + curSentIndex"
-            @getWavblob="getWavblob"
-            @handleParentPlay="handleParentPlay"
-            @sentPause="sentPause"
-            @getRerordStatus="getRerordStatus"
-            @getMicrophoneStatus="getMicrophoneStatus"
-            @getPlayStatus="getPlayStatus"
-          />
-          <div v-if="isShowCompare" :class="['compare-box', bgIndex == 1 ? 'compare-box-white' : '']">
-            <Audio-compare
-              :bg-index="bgIndex"
-              type="full"
-              :theme-color="themeColor"
-              :index="curSentIndex"
-              :sent-index="curSentIndex"
-              :key="'mp3Compare' + curSentIndex"
-              :url="curQue.mp3_list[0].id"
+    <div class="voicefull-top" @mouseover="setBottomShow(true)" @mouseleave="setBottomShow(false)">
+      <div :class="[isBottomShow ? 'voicefull-top-show' : 'voicefull-top-hidden']">
+        <div class="top-left">
+          <div :class="['select-bg', bgIndex == 1 ? 'select-bg-blue' : '']">
+            <div :class="['bg-green-box', bgIndex == 1 ? 'active' : '']">
+              <span :class="['bg-green', bgIndex == 1 ? 'active' : '']" @click="changeBg(1)"></span>
+            </div>
+            <div :class="['bg-white-box', bgIndex == 0 ? 'active' : '']">
+              <span :class="['bg-white', bgIndex == 0 ? 'active' : '']" @click="changeBg(0)"></span>
+            </div>
+          </div>
+          <div :class="['set-fontSize', bgIndex == 1 ? 'set-fontSize-green' : '']">
+            <template v-if="hzSize >= 34">
+              <span
+                :class="['font-jian-black', bgIndex == 1 ? 'font-jian-yellow' : '']"
+                @click="setFontSize('-')"
+              ></span>
+            </template>
+            <template v-else>
+              <span
+                :class="['font-jian-black', bgIndex == 1 ? 'font-jian-yellow-disabled' : 'font-jian-white-disabled']"
+              ></span>
+            </template>
+            <span :class="['font-img-black', bgIndex == 1 ? 'font-img-yellow' : '']"></span>
+            <template v-if="hzSize <= 76">
+              <span :class="['font-jia-black', bgIndex == 1 ? 'font-jia-yellow' : '']" @click="setFontSize('+')"></span>
+            </template>
+            <template v-else>
+              <span
+                :class="['font-jia-black', bgIndex == 1 ? 'font-jia-yellow-disabled' : 'font-jia-white-disabled']"
+              ></span>
+            </template>
+          </div>
+          <div
+            :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']"
+            title="键盘控制开启后,可用方向键控制翻页,空格键播放暂停,回车键录音"
+            @click="changeStatus('isKeyboard')"
+          >
+            <span
+              :class="[
+                'keyboard-icon',
+                !isKeyboard ? 'disabled' : '',
+                isKeyboard && bgIndex == 1 ? 'keyboard-icon-yellow' : '',
+              ]"
+            ></span>
+          </div>
+        </div>
+        <div class="top-middle">
+          <template v-if="mp3">
+            <AudioLineSentence
+              :key="'sent' + curSentIndex"
+              ref="audioLineSent"
+              :mp3="mp3"
+              :get-cur-time="getCurTime"
+              :audio-id="'artPraAudioId' + curSentIndex"
+              :stop-audio="stopAudio"
+              :width="120"
+              :hide-slider="true"
               :bg="bg"
               :ed="ed"
-              :wavblob="wavblob"
-              :get-cur-time="getCurCompareTime"
-              :sent-pause="sentPause"
-              :is-record="isRecord"
-              :handle-change-stop-audio="handleChangeStopAudio"
-              :get-play-status="getPlayStatus"
+              :cur-time="curTime"
+              :max-time="maxTime"
+              :bg-index="bgIndex"
+              :is-repeat="isRepeat"
+              :is-auto="isAuto"
+              @playChange="playChange"
+              @rollSentence="rollSentence"
             />
+          </template>
+          <div :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']" @click="setStatus">
+            <span
+              :class="[
+                'repeat-icon',
+                !isRepeat && !isAuto ? 'disabled' : '',
+                !isRepeat && isAuto ? 'auto-icon' : '',
+                isRepeat && bgIndex == 1 ? 'repeat-icon-yellow' : '',
+                !isRepeat && isAuto && bgIndex == 1 ? 'auto-icon-yellow' : '',
+              ]"
+            ></span>
+          </div>
+          <div :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']" @click="changePinyin">
+            <span
+              :class="[
+                'pinyin-icon',
+                !config.isShowPY ? 'disabled' : '',
+                config.isShowPY && bgIndex == 1 ? 'pinyin-icon-yellow' : '',
+              ]"
+            ></span>
+          </div>
+          <div :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']" @click="changeEN">
+            <span
+              :class="[
+                'en-icon',
+                !enwords ? 'disabled' : '',
+                !config.isShowEN ? 'disabled' : '',
+                config.isShowEN && bgIndex == 1 ? 'en-icon-yellow' : '',
+              ]"
+            ></span>
           </div>
+          <!-- <div
+            :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']"
+            title="点击收藏后可在“个人中心”-“我的收藏”查看"
+            @click="handleColl"
+          >
+            <span
+              :class="[
+                'coll-icon',
+                !isCollArr[curSentIndex] ? 'disabled' : '',
+                isCollArr[curSentIndex] && bgIndex == 1 ? 'coll-icon-yellow' : '',
+              ]"
+            ></span>
+          </div> -->
         </div>
-        <div :class="['page-count', bgIndex == 0 ? 'page-count-white' : 'page-count-green']">
-          {{ curSentIndex + 1 }}/{{ sentList.length }}
+        <div :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']" @click="exitFullScreen">
+          <span :class="['close-icon', bgIndex == 1 ? 'close-icon-white' : '']"></span>
         </div>
       </div>
     </div>
@@ -559,6 +514,7 @@
           :mp3-url="wordPlayMp3"
           :bg="wordbgs"
           :ed="wordeds"
+          :attrib="attrib"
         />
       </div>
     </template>
@@ -580,6 +536,18 @@
         @changePlayStatus="changePlayStatus"
       />
     </div>
+    <template v-if="isNoteShow">
+      <div
+        ref="notecard"
+        class="NNPE-wordDetail"
+        :style="{
+          marginLeft: windowWidth > 642 ? '-321px' : '0px',
+          left: windowWidth > 642 ? '' : '0px',
+        }"
+      >
+        <Notecard :item="curNoteCon" :change-card="changeCard" :attrib="attrib" />
+      </div>
+    </template>
   </div>
 </template>
 
@@ -588,8 +556,9 @@ import AudioLineSentence from './components/AudioLineSentence.vue';
 import Soundrecorddiff from './components/Soundrecorddiff.vue';
 import AudioCompare from './components/AudioCompare.vue';
 import Wordcard from './components/Wordcard.vue';
+import Notecard from './components/Notecard.vue'; // 注释
 import { LearnWebSI } from '@/api/app';
-import $ from 'jquery';
+
 export default {
   name: 'VoiceFullScreen',
   components: {
@@ -597,6 +566,7 @@ export default {
     Soundrecorddiff,
     AudioCompare,
     Wordcard,
+    Notecard,
   },
   props: [
     'sentList',
@@ -607,6 +577,7 @@ export default {
     'noFont',
     'themeColor',
     'NNPENewWordList',
+    'NNPEAnnotationList',
     'currentTreeID',
     'config',
     'TaskModel',
@@ -632,8 +603,8 @@ export default {
       stopAudio: false,
       isRecord: false,
       isShowCompare: false,
-      isShowRight: false,
-      isShowLeft: false,
+      isShowRight: true,
+      isShowLeft: true,
       curSentIndex: 0,
       oldHz: '',
       hz: '',
@@ -664,6 +635,10 @@ export default {
       enwords: '',
       screenHeight: 0,
       wordPlayMp3: '',
+      curNoteCon: null,
+      isNoteShow: false,
+      oldNoteNum: '',
+      windowWidth: window.innerWidth,
     };
   },
   computed: {
@@ -727,6 +702,23 @@ export default {
       // 深度观察监听
       deep: true,
     },
+    isNoteShow: {
+      handler(val, oldVal) {
+        let _this = this;
+        if (val) {
+          setTimeout(() => {
+            _this.cardHeight = _this.$refs.notecard.offsetHeight;
+            if (_this.screenHeight - _this.clientY > _this.cardHeight) {
+              _this.top = _this.clientY + 20;
+            } else {
+              _this.top = _this.clientY - _this.cardHeight - 30;
+            }
+          }, 50);
+        }
+      },
+      // 深度观察监听
+      deep: true,
+    },
   },
   // 生命周期 - 创建完成(可以访问当前this实例)
   created() {},
@@ -1166,47 +1158,80 @@ export default {
     },
     showWordDetail(e, item) {
       let _this = this;
+
+      let noteIndex = '';
       if (_this.TaskModel == 'ANSWER') {
         return;
       }
       if (_this.chsFhList.indexOf(item.chs) > -1 || /^[a-zA-Z0-9]/.test(item.chs)) {
         return;
       }
-      if (_this.oldHz != item.chs) {
-        this.isShow = false;
+      if (_this.NumberList.indexOf(item.chs) > -1) {
+        for (let i = 0; i < _this.NumberList.length; i++) {
+          if (_this.NumberList[i] == item.chs) {
+            noteIndex = `${String(i)}`;
+            break;
+          }
+        }
+
+        this.showNoteDetail(e, noteIndex);
+      } else if (this.newWordList.indexOf(item.chs) > -1) {
+        if (_this.oldHz != item.chs) {
+          this.isShow = false;
 
+          setTimeout(() => {
+            _this.hz = item.words ? item.words : item.chs;
+            _this.pinyin = item.pinyin;
+            _this.wordIndex = item.wordIndex;
+          }, 50);
+        }
+        _this.clientY = e.clientY;
+        let new_word = item.words ? item.words : item.chs;
+        _this.wordPlayMp3 = '';
+        _this.NNPENewWordList.forEach((itemn) => {
+          // items.forEach((itemn) => {
+          if (itemn.new_word === new_word) {
+            _this.wordbgs = itemn.bg;
+            _this.wordeds = itemn.ed;
+            _this.wordPlayMp3 = itemn.newWordMp3;
+          }
+          // });
+        });
+        let left = e.clientX;
+        let width = 0;
+        if (item.chs.length == 1 || item.chs.length == 2) {
+          width = 304;
+        } else if (item.chs.length == 3 || item.chs.length == 4) {
+          width = 432;
+        } else if (item.chs.length > 3) {
+          width = 560;
+        }
+        // if (left - this.bodyLeft > this.contentWidth / 2) {
+        //   _this.left = left - width + 10;
+        // } else {
+        _this.left = left - width / 2;
+        // }
+      }
+    },
+    showNoteDetail(e, noteNum) {
+      let _this = this;
+      if (_this.oldNoteNum !== noteNum) {
+        this.isNoteShow = false;
         setTimeout(() => {
-          _this.hz = item.words ? item.words : item.chs;
-          _this.pinyin = item.pinyin;
-          _this.wordIndex = item.wordIndex;
+          _this.noteNum = noteNum;
+          _this.handleNote(noteNum);
         }, 50);
       }
       _this.clientY = e.clientY;
-      let new_word = item.words ? item.words : item.chs;
-      _this.wordPlayMp3 = '';
-      _this.NNPENewWordList.forEach((itemn) => {
-        // items.forEach((itemn) => {
-        if (itemn.new_word === new_word) {
-          _this.wordbgs = itemn.bg;
-          _this.wordeds = itemn.ed;
-          _this.wordPlayMp3 = itemn.newWordMp3;
-        }
-        // });
-      });
       let left = e.clientX;
-      let width = 0;
-      if (item.chs.length == 1 || item.chs.length == 2) {
-        width = 304;
-      } else if (item.chs.length == 3 || item.chs.length == 4) {
-        width = 432;
-      } else if (item.chs.length > 3) {
-        width = 560;
+      let width = 642;
+      if (left - this.bodyLeft > this.contentWidth / 2) {
+        _this.left = left - width + 10;
+      } else if (left - 200 > 500) {
+        _this.left = 500;
+      } else {
+        _this.left = left - 200;
       }
-      // if (left - this.bodyLeft > this.contentWidth / 2) {
-      //   _this.left = left - width + 10;
-      // } else {
-      _this.left = left - width / 2;
-      // }
     },
     changeWordCard(isShow) {
       let _this = this;
@@ -1220,17 +1245,13 @@ export default {
       let _this = this;
       _this.isShow = true;
       _this.word = null;
-
       if (_this.newWordList.indexOf(val) > -1) {
         for (let i = 0; i < this.NNPENewWordList.length; i++) {
           let pItem = this.NNPENewWordList[i];
-          for (let j = 0; j < pItem.length; j++) {
-            let item = pItem[j];
-            if (item.new_word.trim() == val.trim()) {
-              let wordlist = val.split('');
-              this.word = { list: wordlist, detail: item };
-              break;
-            }
+          if (pItem.new_word.trim() == val.trim()) {
+            let wordlist = val.split('');
+            this.word = { list: wordlist, detail: pItem };
+            break;
           }
         }
       } else {
@@ -1257,6 +1278,22 @@ export default {
     getScreenHeight() {
       this.screenHeight = window.innerHeight;
     },
+    // 处理注释数据
+    handleNote(val) {
+      let _this = this;
+      _this.isNoteShow = true;
+      _this.oldNoteNum = val;
+      let noteIndex = Number(val);
+      if (_this.NNPEAnnotationList && _this.NNPEAnnotationList.length > 0) {
+        _this.curNoteCon = _this.NNPEAnnotationList[noteIndex] ? _this.NNPEAnnotationList[noteIndex] : null;
+      }
+    },
+    changeCard(isShow) {
+      let _this = this;
+      _this.isNoteShow = isShow;
+      _this.oldNoteNum = '';
+      _this.noteNum = '';
+    },
   }, // 如果页面有keep-alive缓存功能,这个函数会触发
 };
 </script>
@@ -1274,7 +1311,8 @@ export default {
     top: 50%;
     z-index: 9999;
     margin-top: -196px;
-    box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
+
+    // box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
   }
 
   &.bg1 {
@@ -1944,6 +1982,22 @@ export default {
   position: absolute;
   left: -1000px;
 }
+
+.NNPE-wordDetail {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  z-index: 116;
+  max-width: 100%;
+  margin-top: -196px;
+  overflow: auto;
+
+  // box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
+
+  //   width: 260px;
+  //   height: 200px;
+  //   background: #cc0;
+}
 </style>
 <style lang="scss">
 .NPC-Big-Book-preview-green {

+ 26 - 9
src/views/book/courseware/preview/components/article/WordModelChs.vue

@@ -96,7 +96,7 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ pItem.pinyin }}</span
+                            >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -144,7 +144,7 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ pItem.pinyin }}</span
+                            >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                           >
                         </span>
                         <span class="NNPE-words-box" @click="showWordDetail($event, item.wordsList[pIndex + 1])">
@@ -159,7 +159,11 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
+                                ? item.wordsList[pIndex + 1].pinyin
+                                : ''
+                            }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -207,7 +211,11 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
+                                ? item.wordsList[pIndex + 1].pinyin
+                                : ''
+                            }}</span
                           >
                         </span>
                         <span
@@ -233,7 +241,11 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
+                                ? item.wordsList[pIndex + 2].pinyin
+                                : ''
+                            }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -292,7 +304,11 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
+                                ? item.wordsList[pIndex + 2].pinyin
+                                : ''
+                            }}</span
                           >
                         </span>
                       </template>
@@ -309,7 +325,7 @@
                             height:
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                         >
                         <span
                           class="NNPE-chs"
@@ -355,7 +371,7 @@
                             height:
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                         >
                       </template>
                     </template>
@@ -1431,7 +1447,8 @@ export default {
   max-width: 100%;
   margin-top: -196px;
   overflow: auto;
-  box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
+
+  // box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
 
   //   width: 260px;
   //   height: 200px;

+ 1 - 1
src/views/book/courseware/preview/components/article/components/FreewriteLettle.vue

@@ -667,7 +667,7 @@ export default {
     border: none;
   }
 
-  .el-tabs--border-card > .el-tabs__header {
+  .el-tabs--border-card {
     background: #f3f3f3;
     border: none;
   }

+ 4 - 3
src/views/book/courseware/preview/components/article/components/Notecard.vue

@@ -64,8 +64,9 @@ export default {
   width: 642px;
   max-height: 261px;
   padding: 16px;
+  margin: 16px;
   overflow-y: auto;
-  background: rgb(236, 238, 243);
+  background: #ececec;
   border-radius: 8px;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 15%);
 
@@ -123,8 +124,8 @@ export default {
 
   .closeBox {
     position: absolute;
-    top: 16px;
-    right: 24px;
+    top: 32px;
+    right: 32px;
     display: flex;
     justify-content: flex-end;
     width: 100%;

+ 2 - 2
src/views/book/courseware/preview/components/article/components/Practice.vue

@@ -453,13 +453,13 @@ export default {
 <style lang="scss" scoped>
 .practice {
   width: 100%;
-  margin: 0 auto;
+  margin: 8px;
 
   //   max-height: 434px;
   overflow: hidden;
   background: #f3f3f3;
   border-radius: 8px;
-  box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
+  box-shadow: 0 4px 8px rgba(0, 0, 0, 15%);
 
   .clean-btn {
     position: absolute;

+ 8 - 4
src/views/book/courseware/preview/components/article/components/Wordcard.vue

@@ -181,7 +181,7 @@
         class="practiceBox practiceBoxStrock"
         v-if="isPraShow"
       > -->
-      <div v-if="isPraShow" class="practiceBox practiceBoxStrock" :style="{ width: isPhone ? '100%' : '504px' }">
+      <div v-if="isPraShow" class="practiceBox practiceBoxStrock" :style="{ width: isPhone ? '100%' : '520px' }">
         <Practice
           :change-pra-show="changePraShow"
           :cur="curData"
@@ -253,6 +253,7 @@ export default {
       collFlag: false,
       praMp3: '',
       isPhone: false, // 是否是移动端打开
+      NumberList: ['①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩', '⑪', '⑫', '⑬', '⑭', '⑮', '⑯', '⑰', '⑱', '⑲', '⑳'],
     };
   },
   computed: {},
@@ -276,6 +277,8 @@ export default {
       }
     }
     this.word.detail.new_word = new_word_str;
+    const regex = new RegExp(`[${this.NumberList.join('')}]`, 'g');
+    this.word.detail.pinyin = this.word.detail.pinyin.replace(regex, '');
   },
   // 生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
@@ -497,20 +500,20 @@ export default {
     background: rgba(0, 0, 0, 19%);
 
     &.practiceBoxStrock {
-      left: -252px;
       left: 50%;
       display: flex;
       align-items: center;
       justify-content: center;
       padding-top: 0;
+      margin-left: -260px;
       background: none;
     }
   }
 
   .closeBox {
     position: absolute;
-    top: 16px;
-    right: 24px;
+    top: 32px;
+    right: 32px;
     display: flex;
     justify-content: flex-end;
     width: 100%;
@@ -524,6 +527,7 @@ export default {
   min-width: 304px;
   max-width: 560px;
   padding: 30px 24px 24px;
+  margin: 16px;
 
   //   min-height: 360px;
   background: #fff;

+ 3 - 0
src/views/book/courseware/preview/components/article/index.vue

@@ -151,6 +151,7 @@
             :theme-color="bookInfo.theme_color"
             :no-font="noFont"
             :NNPENewWordList="NNPENewWordList"
+            :NNPEAnnotationList="NNPEAnnotationList"
             :current-tree-i-d="courseware_id"
             :config="config"
             :TaskModel="isJudgingRightWrong ? 'ANSWER' : ''"
@@ -190,6 +191,7 @@
             :mp3="data.mp3_list && data.mp3_list[0] ? data.mp3_list[0].url : ''"
             :no-font="noFont"
             :NNPENewWordList="NNPENewWordList"
+            :NNPEAnnotationList="NNPEAnnotationList"
             :current-tree-i-d="courseware_id"
             :is-full="isFull"
             :config="config"
@@ -252,6 +254,7 @@ export default {
   },
   mixins: [PreviewMixin],
   inject: ['bookInfo'],
+  props: ['isMobile'],
   data() {
     return {
       data: getArticleData(),

+ 1 - 1
src/views/book/courseware/preview/components/character_base/components/FreewriteLettle.vue

@@ -502,7 +502,7 @@ export default {
     border: none;
   }
 
-  .el-tabs--border-card > .el-tabs__header {
+  .el-tabs--border-card {
     background: #f3f3f3;
     border: none;
   }

+ 36 - 16
src/views/book/courseware/preview/components/dialogue_article/NormalModelChs.vue

@@ -148,7 +148,7 @@
                                 item.timeList && item.timeList.length > 0 && item.timeList[pItem.sentIndex].ed,
                               )
                             "
-                            >{{ pItem.pinyin }}</span
+                            >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -228,7 +228,7 @@
                                 item.timeList && item.timeList.length > 0 && item.timeList[pItem.sentIndex].ed,
                               )
                             "
-                            >{{ pItem.pinyin }}</span
+                            >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
                           >
                         </span>
                         <span class="NNPE-words-box">
@@ -253,7 +253,11 @@
                                 item.timeList && item.timeList.length > 0 && item.timeList[pItem.sentIndex].ed,
                               )
                             "
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) === -1
+                                ? item.wordsList[pIndex + 1].pinyin
+                                : ''
+                            }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -293,12 +297,14 @@
                                 item.timeList && item.timeList.length > 0 && item.timeList[pItem.sentIndex].ed,
                               )
                             "
-                            >{{
+                          >
+                            <!-- {{
                               NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
                                 ? item.wordsList[pIndex + 1].chs
                                 : ''
-                            }}</span
-                          >
+                            }} -->
+                            {{ item.wordsList[pIndex + 1].chs }}
+                          </span>
                           <span
                             v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
                             class="NNPE-pinyin"
@@ -320,7 +326,11 @@
                                 item.timeList && item.timeList.length > 0 && item.timeList[pItem.sentIndex].ed,
                               )
                             "
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) === -1
+                                ? item.wordsList[pIndex + 1].pinyin
+                                : ''
+                            }}</span
                           >
                         </span>
                         <span
@@ -355,7 +365,11 @@
                                 item.timeList && item.timeList.length > 0 && item.timeList[pItem.sentIndex].ed,
                               )
                             "
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) === -1
+                                ? item.wordsList[pIndex + 2].pinyin
+                                : ''
+                            }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -395,12 +409,14 @@
                                 item.timeList && item.timeList.length > 0 && item.timeList[pItem.sentIndex].ed,
                               )
                             "
-                            >{{
+                          >
+                            <!-- {{
                               NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
                                 ? item.wordsList[pIndex + 2].chs
                                 : ''
-                            }}</span
-                          >
+                            }} -->
+                            {{ item.wordsList[pIndex + 2].chs }}
+                          </span>
                           <span
                             v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
                             :class="[
@@ -424,7 +440,11 @@
                                 item.timeList && item.timeList.length > 0 && item.timeList[pItem.sentIndex].ed,
                               )
                             "
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) === -1
+                                ? item.wordsList[pIndex + 2].pinyin
+                                : ''
+                            }}</span
                           >
                         </span>
                       </template>
@@ -451,7 +471,7 @@
                               item.timeList && item.timeList.length > 0 && item.timeList[pItem.sentIndex].ed,
                             )
                           "
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
                         >
 
                         <span
@@ -529,7 +549,7 @@
                               item.timeList && item.timeList.length > 0 && item.timeList[pItem.sentIndex].ed,
                             )
                           "
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
                         >
                       </template>
                     </template>
@@ -845,7 +865,6 @@ export default {
     handleData() {
       let resArr = [];
       let curQue = JSON.parse(JSON.stringify(this.curQue));
-
       let wordTimeList = curQue.wordTime;
       let asIndex = 0;
       let dhaspinyin = false; // 每段是否有拼音
@@ -1397,7 +1416,8 @@ export default {
     padding: 8px;
     margin-top: -130px;
     overflow: auto;
-    box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
+
+    // box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
   }
 
   .multilingual {

+ 30 - 21
src/views/book/courseware/preview/components/dialogue_article/PhraseModelChs.vue

@@ -119,7 +119,7 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ pItem.pinyin }}</span
+                            >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -142,7 +142,7 @@
                                   : '',
                             }"
                             @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
-                            >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs : '' }}</span
+                            >{{ pItem.chs }}</span
                           >
                           <span
                             v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
@@ -159,7 +159,7 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ pItem.pinyin }}</span
+                            >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
                           >
                         </span>
                         <span class="NNPE-words-box">
@@ -176,7 +176,11 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) === -1
+                                ? item.wordsList[pIndex + 1].pinyin
+                                : ''
+                            }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -197,11 +201,7 @@
                                   : item.wordsList[pIndex + 1].chs,
                               )
                             "
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
-                                ? item.wordsList[pIndex + 1].chs
-                                : ''
-                            }}</span
+                            >{{ item.wordsList[pIndex + 1].chs }}</span
                           >
                           <span
                             v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
@@ -216,7 +216,11 @@
                                   ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                   : '22px',
                             }"
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) === -1
+                                ? item.wordsList[pIndex + 1].pinyin
+                                : ''
+                            }}</span
                           >
                         </span>
                         <span
@@ -243,7 +247,11 @@
                                   : '22px',
                             }"
                             @click.stop="viewNotes($event, item.wordsList[pIndex + 2].pinyin)"
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) === -1
+                                ? item.wordsList[pIndex + 2].pinyin
+                                : ''
+                            }}</span
                           >
                           <span
                             class="NNPE-chs"
@@ -273,11 +281,7 @@
                                   : item.wordsList[pIndex + 2].chs,
                               )
                             "
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
-                                ? item.wordsList[pIndex + 2].chs
-                                : ''
-                            }}</span
+                            >{{ item.wordsList[pIndex + 2].chs }}</span
                           >
                           <span
                             v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
@@ -294,7 +298,11 @@
                                   : '22px',
                             }"
                             @click.stop="viewNotes($event, item.wordsList[pIndex + 2].pinyin)"
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                            >{{
+                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) === -1
+                                ? item.wordsList[pIndex + 2].pinyin
+                                : ''
+                            }}</span
                           >
                         </span>
                       </template>
@@ -313,7 +321,7 @@
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
                           @click.stop="viewNotes($event, pItem.pinyin)"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
                         >
                         <span
                           v-if="pItem.chs != '#'"
@@ -338,7 +346,7 @@
                                 : '',
                           }"
                           @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
-                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs : '' }}</span
+                          >{{ pItem.chs }}</span
                         >
                         <span
                           v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
@@ -354,7 +362,7 @@
                               attrib && attrib.pinyin_size ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt' : '22px',
                           }"
                           @click.stop="viewNotes($event, pItem.pinyin)"
-                          >{{ pItem.pinyin }}</span
+                          >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
                         >
                       </template>
                     </template>
@@ -1385,7 +1393,8 @@ export default {
     max-width: 100%;
     margin-top: -196px;
     overflow: auto;
-    box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
+
+    // box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
   }
 
   .NNPE-noteDetail {

+ 61 - 48
src/views/book/courseware/preview/components/dialogue_article/Practicechs.vue

@@ -211,7 +211,7 @@
                                       ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                       : '22px',
                                 }"
-                                >{{ pItem.pinyin }}</span
+                                >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                               >
                             </template>
                             <span
@@ -281,7 +281,7 @@
                                       ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                       : '22px',
                                 }"
-                                >{{ pItem.pinyin }}</span
+                                >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
                               >
                             </template>
                           </span>
@@ -302,7 +302,11 @@
                                       ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                       : '22px',
                                 }"
-                                >{{ item.sentArr[pIndex + 1].pinyin }}</span
+                                >{{
+                                  NumberList.indexOf(item.sentArr[pIndex + 1].pinyin) == -1
+                                    ? item.sentArr[pIndex + 1].pinyin
+                                    : ''
+                                }}</span
                               >
                             </template>
                             <span class="NNPE-chs" style="text-align: left">
@@ -365,7 +369,11 @@
                                       ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                       : '22px',
                                 }"
-                                >{{ item.sentArr[pIndex + 1].pinyin }}</span
+                                >{{
+                                  NumberList.indexOf(item.sentArr[pIndex + 1].pinyin) == -1
+                                    ? item.sentArr[pIndex + 1].pinyin
+                                    : ''
+                                }}</span
                               >
                             </template>
                           </span>
@@ -393,7 +401,11 @@
                                       ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                       : '22px',
                                 }"
-                                >{{ item.sentArr[pIndex + 2].pinyin }}</span
+                                >{{
+                                  NumberList.indexOf(item.sentArr[pIndex + 2].pinyin) == -1
+                                    ? item.sentArr[pIndex + 2].pinyin
+                                    : ''
+                                }}</span
                               >
                             </template>
                             <span class="NNPE-chs" style="text-align: left">
@@ -456,33 +468,35 @@
                                       ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
                                       : '22px',
                                 }"
-                                >{{ item.sentArr[pIndex + 2].pinyin }}</span
+                                >{{
+                                  NumberList.indexOf(item.sentArr[pIndex + 2].pinyin) == -1
+                                    ? item.sentArr[pIndex + 2].pinyin
+                                    : ''
+                                }}</span
                               >
                             </template>
                           </span>
                         </template>
                         <template v-else>
                           <template v-if="curQue.property.pinyin_position == 'top'">
-                            <template v-if="NumberList.indexOf(pItem.pinyin) < 0">
-                              <span
-                                v-if="config.isShowPY && item.dhaspinyin"
-                                class="NNPE-pinyin"
-                                :class="[
-                                  pItem.chs != '“' && pItem.padding ? 'padding' : '',
-                                  pItem.className ? pItem.className : '',
-                                  sentIndex == index ? 'wordBlank' : '',
-                                  noFont.indexOf(item.pinyin) > -1 ? 'noFont' : '',
-                                ]"
-                                :style="{
-                                  fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
-                                  height:
-                                    attrib && attrib.pinyin_size
-                                      ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
-                                      : '22px',
-                                }"
-                                >{{ pItem.pinyin }}</span
-                              >
-                            </template>
+                            <span
+                              v-if="config.isShowPY && item.dhaspinyin"
+                              class="NNPE-pinyin"
+                              :class="[
+                                pItem.chs != '“' && pItem.padding ? 'padding' : '',
+                                pItem.className ? pItem.className : '',
+                                sentIndex == index ? 'wordBlank' : '',
+                                noFont.indexOf(item.pinyin) > -1 ? 'noFont' : '',
+                              ]"
+                              :style="{
+                                fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
+                                height:
+                                  attrib && attrib.pinyin_size
+                                    ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
+                                    : '22px',
+                              }"
+                              >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
+                            >
                           </template>
                           <span
                             v-if="pItem.chs != '#'"
@@ -531,30 +545,28 @@
                                       ? attrib.topic_color
                                       : '',
                                 }"
-                                >{{ pItem.chs[wIndex] }}</span
+                                >{{ NumberList.indexOf(pItem.chs[wIndex]) == -1 ? pItem.chs[wIndex] : '' }}</span
                               >
                             </template>
                           </span>
                           <template v-if="curQue.property.pinyin_position == 'bottom'">
-                            <template v-if="NumberList.indexOf(pItem.pinyin) < 0">
-                              <span
-                                v-if="config.isShowPY && item.dhaspinyin"
-                                class="NNPE-pinyin"
-                                :class="[
-                                  pItem.chs != '“' && pItem.padding ? 'padding' : '',
-                                  pItem.className ? pItem.className : '',
-                                  sentIndex == index ? 'wordBlank' : '',
-                                ]"
-                                :style="{
-                                  fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
-                                  height:
-                                    attrib && attrib.pinyin_size
-                                      ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
-                                      : '22px',
-                                }"
-                                >{{ pItem.pinyin }}</span
-                              >
-                            </template>
+                            <span
+                              v-if="config.isShowPY && item.dhaspinyin"
+                              class="NNPE-pinyin"
+                              :class="[
+                                pItem.chs != '“' && pItem.padding ? 'padding' : '',
+                                pItem.className ? pItem.className : '',
+                                sentIndex == index ? 'wordBlank' : '',
+                              ]"
+                              :style="{
+                                fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
+                                height:
+                                  attrib && attrib.pinyin_size
+                                    ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
+                                    : '22px',
+                              }"
+                              >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.pinyin : '' }}</span
+                            >
                           </template>
                         </template>
                       </template>
@@ -738,6 +750,7 @@
         :mp3="curQue.mp3_list && curQue.mp3_list[0] ? curQue.mp3_list[0].id : ''"
         :no-font="noFont"
         :NNPENewWordList="NNPENewWordList"
+        :NNPEAnnotationList="NNPEAnnotationList"
         :current-tree-i-d="currentTreeID"
         :is-full="isFull"
         :config="config"
@@ -801,6 +814,7 @@ export default {
     'attrib',
     'config',
     'NNPENewWordList',
+    'NNPEAnnotationList',
     'currentTreeID',
     'TaskModel',
     'colLength',
@@ -1052,7 +1066,6 @@ export default {
       if (wordTimeList && wordTimeList.length > 0) {
         this.mergeWordTime(sentArrTotal, wordTimeList);
       }
-
       this.resObj = { sentList: resArr };
     },
     // 获取角色
@@ -1083,7 +1096,7 @@ export default {
     },
     // 词和标点合一起
     mergeWordSymbol(wItem) {
-      if (this.chsFhList.indexOf(wItem.chs) > -1 || this.NumberList.indexOf(wItem.pinyin) > -1) {
+      if (this.chsFhList.indexOf(wItem.chs) > -1) {
         wItem.isShow = false;
       } else {
         wItem.isShow = true;

+ 2 - 2
src/views/book/courseware/preview/components/dialogue_article/WordModelChs.vue

@@ -953,7 +953,6 @@ export default {
         } else {
           writeModel[hz] = [answer];
         }
-        console.log(this.curQue.Bookanswer);
       }
     },
   }, // 如果页面有keep-alive缓存功能,这个函数会触发
@@ -1268,7 +1267,8 @@ export default {
   max-width: 100%;
   margin-top: -196px;
   overflow: auto;
-  box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
+
+  // box-shadow: 0 4px 16px rgba(0, 0, 0, 15%);
 
   //   width: 260px;
   //   height: 200px;

+ 2 - 0
src/views/book/courseware/preview/components/dialogue_article/index.vue

@@ -144,6 +144,7 @@
             :attrib="data.unified_attrib"
             :no-font="noFont"
             :NNPENewWordList="NNPENewWordList"
+            :NNPEAnnotationList="NNPEAnnotationList"
             :config="config"
             :TaskModel="isJudgingRightWrong ? 'ANSWER' : ''"
             :col-length="colLength"
@@ -179,6 +180,7 @@
             :mp3="data.mp3_list && data.mp3_list[0] ? data.mp3_list[0].url : ''"
             :no-font="noFont"
             :NNPENewWordList="NNPENewWordList"
+            :NNPEAnnotationList="NNPEAnnotationList"
             :is-full="isFull"
             :config="config"
             :TaskModel="isJudgingRightWrong ? 'ANSWER' : ''"

+ 9 - 2
src/views/book/courseware/preview/components/fill/FillPreview.vue

@@ -270,10 +270,17 @@ export default {
       const isRow = this.data.property.arrange_type === arrangeTypeList[0].value;
       const isFront = this.data.property.audio_position === audioPositionList[0].value;
       const isEnableVoice = this.data.property.is_enable_voice_answer === 'true';
+      const isHasAudio = this.data.audio_file_id.length > 0;
       let _list = [
         { name: 'audio', value: '24px' },
         { name: 'fill', value: '1fr' },
       ];
+
+      if (!isHasAudio) {
+        _list[0].value = '0px';
+      }
+      console.log(_list);
+
       if (!isFront) {
         _list = _list.reverse();
       }
@@ -292,8 +299,8 @@ export default {
 
       let style = {
         'grid-auto-flow': isRow ? 'column' : 'row',
-        'column-gap': isRow ? '16px' : undefined,
-        'row-gap': isRow ? undefined : '8px',
+        'column-gap': isRow && isHasAudio ? '16px' : undefined,
+        'row-gap': isRow && !isHasAudio ? undefined : '8px',
         'grid-template-areas': gridArea,
         'grid-template-rows': gridTemplateRows,
         'grid-template-columns': gridTemplateColumns,

+ 13 - 5
src/views/book/courseware/preview/components/new_word/NewWordPreview.vue

@@ -571,7 +571,7 @@
                         </template>
 
                         <p
-                          v-if="item.pinyin && item.pinyin.split(' ').length === 1"
+                          v-if="item.pinyin && !item.pyhz"
                           :style="{
                             color:
                               data.unified_attrib && data.unified_attrib.topic_color
@@ -585,7 +585,7 @@
                         <div class="hz-box">
                           <div v-for="(itemh, indexh) in item.hz_info" :key="indexh" class="hz-item">
                             <p
-                              v-if="item.pinyin && item.pinyin.split(' ').length > 1"
+                              v-if="item.pinyin && item.pyhz"
                               :style="{
                                 color:
                                   data.unified_attrib && data.unified_attrib.topic_color
@@ -593,7 +593,7 @@
                                     : '',
                               }"
                             >
-                              {{ item.pinyin.split(' ')[indexh] ? item.pinyin.split(' ')[indexh] : '' }}
+                              {{ item.pinyin.split(' ')[indexh] ? item.pinyin.split(' ')[indexh] : '&nbsp;' }}
                             </p>
                             <Strockplay
                               class-name="adult-strockplay"
@@ -739,7 +739,6 @@ import writeTableZoom from './components/writeTableZoom.vue';
 
 export default {
   name: 'NewWordPreview',
-
   components: {
     SoundRecord,
     AudioLine,
@@ -754,6 +753,10 @@ export default {
       type: Object,
       default: null,
     },
+    isMobile: {
+      type: Boolean,
+      default: false,
+    },
   },
   data() {
     return {
@@ -960,8 +963,13 @@ export default {
         //     this.$set(item, 'pic_url', url_map[item.file_list[0]]);
         //   });
         // }
+        let flag = false;
+        if (item.pinyin) {
+          flag = item.pinyin.split(' ').length === item.new_word.length;
+        }
         this.$set(item, 'show_left', true);
         this.$set(item, 'isFlipped', false);
+        this.$set(item, 'pyhz', flag);
       });
       option_list.forEach((item, index) => {
         optionRes = optionRes.concat(item);
@@ -1568,7 +1576,7 @@ export default {
           }
 
           p {
-            margin: 0;
+            margin: 0 0 8px;
             font-family: 'League';
             font-size: 14px;
             font-feature-settings: 'cv01' on;

+ 4 - 4
src/views/book/courseware/preview/components/new_word/components/writeTableZoom.vue

@@ -105,7 +105,7 @@
               </div>
             </template>
             <p
-              v-if="data.pinyin && data.pinyin.split(' ').length === 1"
+              v-if="data.pinyin && !data.pyhz"
               :style="{ color: attrib && attrib.topic_color ? attrib.topic_color : '' }"
               class="pinyin-box"
             >
@@ -114,10 +114,10 @@
             <div class="hz-box">
               <div v-for="(itemh, indexh) in data.hz_info" :key="indexh" class="hz-item">
                 <p
-                  v-if="data.pinyin && data.pinyin.split(' ').length > 1"
+                  v-if="data.pinyin && data.pyhz"
                   :style="{ color: attrib && attrib.topic_color ? attrib.topic_color : '' }"
                 >
-                  {{ data.pinyin.split(' ')[indexh] ? data.pinyin.split(' ')[indexh] : '' }}
+                  {{ data.pinyin.split(' ')[indexh] ? data.pinyin.split(' ')[indexh] : '&nbsp;' }}
                 </p>
                 <Strockplay
                   class-name="adult-strockplay"
@@ -515,7 +515,7 @@ export default {
       padding: 36px;
 
       .pinyin-box {
-        margin-bottom: 8px;
+        margin-bottom: 12px;
         font-family: 'League';
         font-size: 22px;
         font-feature-settings: 'cv01' on;