Browse Source

文章和对话课文新增扩展样式配置

liuhaidi123 2 months ago
parent
commit
9922240dd1

+ 5 - 2
src/views/book/courseware/create/components/question/article/Article.vue

@@ -25,7 +25,7 @@
             <a size="medium" @click="compareTime('文字')">校对文字字幕时间</a>
           </template>
           <template v-else>
-            <a v-if="!isWordTime" size="medium" @click="createWordTimes">自动生成字幕节点</a>
+            <a v-if="!isWordTime" size="medium" @click="createWordTime">自动生成字幕节点</a>
             <p v-else>字幕节点生成中...请等待</p>
           </template>
           <el-button @click="handleMultilingual">课文多语言</el-button>
@@ -251,6 +251,7 @@ export default {
             textDecoration: '',
             fontWeight: '',
             border: '',
+            color: '',
           };
           sentArr.push(obj);
         });
@@ -314,6 +315,7 @@ export default {
               textDecoration: '',
               fontWeight: '',
               border: '',
+              color: '',
             };
             sentArr.push(obj);
           });
@@ -364,11 +366,12 @@ export default {
         this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].pinyin = pinyin;
       }
     },
-    saveStyle(paraIndex, sentenceIndex, wordIndex, fontFamily, textDecoration, fontWeight, border) {
+    saveStyle(paraIndex, sentenceIndex, wordIndex, fontFamily, textDecoration, fontWeight, border, color) {
       this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].fontFamily = fontFamily;
       this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].textDecoration = textDecoration;
       this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].fontWeight = fontWeight;
       this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].border = border;
+      this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].color = color;
     },
     // 保存校对
     saveCompare() {

+ 12 - 2
src/views/book/courseware/create/components/question/article/CheckArticle.vue

@@ -230,8 +230,18 @@ export default {
     savePinyin(paraIndex, sentenceIndex, wordIndex, pinyin) {
       this.$emit('savePinyin', paraIndex, sentenceIndex, wordIndex, pinyin);
     },
-    saveStyle(paraIndex, sentenceIndex, wordIndex, style) {
-      this.$emit('saveStyle', paraIndex, sentenceIndex, wordIndex, style);
+    saveStyle(paraIndex, sentenceIndex, wordIndex, fontFamily, textDecoration, fontWeight, border, color) {
+      this.$emit(
+        'saveStyle',
+        paraIndex,
+        sentenceIndex,
+        wordIndex,
+        fontFamily,
+        textDecoration,
+        fontWeight,
+        border,
+        color,
+      );
     },
     changeImage(file) {
       fileUpload('Mid', file, { isGlobalprogress: true }).then(({ file_info_list }) => {

+ 2 - 0
src/views/book/courseware/create/components/question/article/CheckStyle.vue

@@ -172,6 +172,7 @@ export default {
               textDecoration: itemss.textDecoration,
               fontWeight: itemss.fontWeight,
               border: itemss.border,
+              color: itemss.color,
             };
             arr[index].push(obj);
             let saveObj = {
@@ -214,6 +215,7 @@ export default {
         this.itemActive.textDecoration,
         this.itemActive.fontWeight,
         this.itemActive.border,
+        this.itemActive.color,
       );
       this.$message.success('保存成功');
       this.activeIndex = null;

+ 27 - 2
src/views/book/courseware/create/components/question/article/NewWord.vue

@@ -223,7 +223,7 @@
         <el-button type="text" @click="againWordTime">重新生成</el-button>
       </div>
       <template v-else>
-        <el-button v-if="!isWordTime" size="medium" :loading="loading" @click="createWordTime">
+        <el-button v-if="!isWordTime" size="medium" :loading="loading" @click="createWordTimes">
           自动生成字幕节点
         </el-button>
         <p v-else>字幕节点生成中...请等待</p>
@@ -279,7 +279,7 @@ import SoundRecord from '@/views/book/courseware/create/components/question/fill
 import UploadAudio from '@/views/book/courseware/create/components/question/fill/components/UploadAudio.vue';
 import SelectUpload from '@/views/book/courseware/create/components/common/SelectUpload.vue';
 import UploadPicture from '../new_word/components/UploadPicture.vue';
-import { getWordTime, prepareTranscribe, fileToBase64Text } from '@/api/article';
+import { getWordTime, prepareTranscribe, fileToBase64Text, getWordTimes } from '@/api/article';
 import { GetStaticResources } from '@/api/app';
 import RichText from '@/components/RichText.vue';
 import CheckSubtitles from '@/views/book/courseware/create/components/question/voice_matrix/CheckSubtitles.vue';
@@ -540,6 +540,31 @@ export default {
 
       row.pinyin = cnchar.spell(cons, 'array', 'low', 'tone').join(' ');
     },
+    createWordTimes() {
+      if (this.data.taskId) {
+        let text = '';
+        this.data.new_word_list.forEach((sItem, index) => {
+          // item.forEach((sItem, sIndex) => {
+          text += sItem.new_word + '。';
+          // });
+        });
+        this.isWordTime = true;
+        let data = {
+          audio_file_id: this.data.audio_data.file_id,
+          text: text,
+        };
+        getWordTimes(data)
+          .then((res) => {
+            this.data.lrc_arr = res.data.result;
+            this.isWordTime = false;
+          })
+          .catch(() => {
+            this.isWordTime = false;
+          });
+      } else {
+        this.$message.warning('请先上传音频');
+      }
+    },
     createWordTime() {
       if (this.data.taskId) {
         let verseList = [];

+ 15 - 3
src/views/book/courseware/create/components/question/dialogue_article/Article.vue

@@ -146,7 +146,7 @@
             <a size="medium" @click="compareTime('文字')">校对文字字幕时间</a>
           </template>
           <template v-else>
-            <a v-if="!isWordTime" size="medium" @click="createWordTimes">自动生成字幕节点</a>
+            <a v-if="!isWordTime" size="medium" @click="createWordTime">自动生成字幕节点</a>
             <p v-else>字幕节点生成中...请等待</p>
           </template>
           <el-button @click="handleMultilingual">课文多语言</el-button>
@@ -596,6 +596,10 @@ export default {
               cnchar.spell(sItem, 'low', 'tone').charAt(0).toUpperCase() + cnchar.spell(sItem, 'low', 'tone').slice(1),
             pinyin_tone: toneStr.join(' '),
             fontFamily: '楷体',
+            textDecoration: '',
+            fontWeight: '',
+            border: '',
+            color: '',
           };
           sentArr.push(obj);
         });
@@ -654,6 +658,10 @@ export default {
                 cnchar.spell(sItem, 'low', 'tone').slice(1),
               pinyin_tone: toneStr.join(' '),
               fontFamily: '楷体',
+              textDecoration: '',
+              fontWeight: '',
+              border: '',
+              color: '',
             };
             sentArr.push(obj);
           });
@@ -694,8 +702,12 @@ export default {
         this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].pinyin = pinyin;
       }
     },
-    saveStyle(paraIndex, sentenceIndex, wordIndex, style) {
-      this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].fontFamily = style;
+    saveStyle(paraIndex, sentenceIndex, wordIndex, fontFamily, textDecoration, fontWeight, border, color) {
+      this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].fontFamily = fontFamily;
+      this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].textDecoration = textDecoration;
+      this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].fontWeight = fontWeight;
+      this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].border = border;
+      this.data.detail[paraIndex].wordsList[sentenceIndex][wordIndex].color = color;
     },
     // 保存校对
     saveCompare() {

+ 48 - 3
src/views/book/courseware/create/components/question/image_text/ImageText.vue

@@ -209,7 +209,7 @@ import { getImageTextData, isEnable } from '@/views/book/courseware/data/imageTe
 import SelectUpload from '@/views/book/courseware/create/components/common/SelectUpload.vue';
 
 import { GetFileURLMap } from '@/api/app';
-import { fileToBase64Text, prepareTranscribe, getWordTime } from '@/api/article';
+import { fileToBase64Text, prepareTranscribe, getWordTime, getWordTimes } from '@/api/article';
 import cnchar from 'cnchar';
 
 export default {
@@ -356,6 +356,51 @@ export default {
       this.data.mind_map.node_list = node_list;
     },
     // 生成字幕
+    handleTimes() {
+      let text = '';
+      this.data.text_list.forEach((item) => {
+        text += item.text + '\r';
+      });
+      if (text) {
+      } else {
+        this.$message.warning('请先录入文本内容');
+        return;
+      }
+      this.loading = true;
+
+      let data = {
+        audio_file_id: this.data.mp3_list[0].file_id,
+        text: text,
+      };
+      getWordTimes(data)
+        .then((res) => {
+          this.data.word_time = res.data.result;
+          this.handleResult();
+
+          if (this.data.property.is_first_sentence_first_hz_pinyin_first_char_upper_case === 'true') {
+            this.handleUpPinyin();
+          }
+          this.loading = false;
+        })
+        .catch(() => {
+          this.loading = false;
+        });
+    },
+    // 把字幕结果按段组合到一起
+    handleResult() {
+      console.log(this.data.word_time);
+      let index = 0;
+      this.data.text_list.forEach((item) => {
+        let sentence = item.text;
+        let pin = ''; // 循环打点结果拼接句子
+        for (let i = index; i < this.data.word_time.length; i++) {
+          if ((pin += this.data.word_time[i].onebest === sentence)) {
+            index = i;
+            return;
+          }
+        }
+      });
+    },
     handleTime() {
       let verseList = [];
       this.data.text_list.forEach((item) => {
@@ -420,9 +465,9 @@ export default {
               indexs === 0
                 ? cnchar.spell(items.wordsName, 'low', 'tone').charAt(0).toUpperCase() +
                   cnchar.spell(items.wordsName, 'low', 'tone').slice(1)
-                : items.pinyinWithToneMark;
+                : cnchar.spell(items.wordsName, 'low', 'tone');
             this.$set(items, 'pinyin_up', pinyin_up);
-            items.pinyin = items.pinyinWithToneMark ? items.pinyinWithToneMark : items.onebest;
+            items.pinyin = cnchar.spell(items.wordsName, 'low', 'tone');
           });
         });
       }

+ 27 - 2
src/views/book/courseware/create/components/question/new_word/NewWord.vue

@@ -378,7 +378,7 @@
           <el-button type="text" @click="againWordTime">重新生成</el-button>
         </div>
         <template v-else>
-          <el-button v-if="!isWordTime" size="medium" :loading="loading" @click="createWordTime">
+          <el-button v-if="!isWordTime" size="medium" :loading="loading" @click="createWordTimes">
             自动生成字幕节点
           </el-button>
           <p v-else>字幕节点生成中...请等待</p>
@@ -418,7 +418,7 @@ import SelectUpload from '@/views/book/courseware/create/components/common/Selec
 import { GetStaticResources } from '@/api/app';
 import cnchar from 'cnchar';
 import { ChapterGetBookChapterStruct } from '@/api/book';
-import { getWordTime, prepareTranscribe, fileToBase64Text } from '@/api/article';
+import { getWordTime, prepareTranscribe, fileToBase64Text, getWordTimes } from '@/api/article';
 import { addTone, handleToneValue } from '@/views/book/courseware/data/common';
 export default {
   name: 'NewWordPage',
@@ -709,6 +709,31 @@ export default {
     handleChange(val) {
       this.data.source_courseware_id = val[val.length - 1];
     },
+    createWordTimes() {
+      if (this.data.taskId) {
+        let text = '';
+        this.data.new_word_list.forEach((sItem, index) => {
+          // item.forEach((sItem, sIndex) => {
+          text += sItem.new_word + '。';
+          // });
+        });
+        this.isWordTime = true;
+        let data = {
+          audio_file_id: this.data.audio_data.file_id,
+          text: text,
+        };
+        getWordTimes(data)
+          .then((res) => {
+            this.data.lrc_arr = res.data.result;
+            this.isWordTime = false;
+          })
+          .catch(() => {
+            this.isWordTime = false;
+          });
+      } else {
+        this.$message.warning('请先上传音频');
+      }
+    },
     createWordTime() {
       if (this.data.taskId) {
         let verseList = [];

+ 36 - 4
src/views/book/courseware/preview/components/article/NormalModelChs.vue

@@ -152,6 +152,9 @@
                             ]"
                             :style="{
                               fontFamily: pItem.config.fontFamily,
+                              textDecoration: pItem.config.textDecoration,
+                              borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: pItem.config.fontWeight,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -190,7 +193,7 @@
                                     curTime < item.timeList[pItem.sentIndex].ed &&
                                     attrib
                                       ? attrib.topic_color
-                                      : '',
+                                      : pItem.config.color,
                                 }"
                                 @click.stop="
                                   viewNotes(
@@ -288,6 +291,9 @@
                             ]"
                             :style="{
                               fontFamily: item.wordsList[pIndex + 1].config.fontFamily,
+                              textDecoration: item.wordsList[pIndex + 1].config.textDecoration,
+                              borderBottom: item.wordsList[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.wordsList[pIndex + 1].config.fontWeight,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -312,7 +318,7 @@
                                 curTime <= item.timeList[pItem.sentIndex].ed &&
                                 attrib
                                   ? attrib.topic_color
-                                  : '',
+                                  : item.wordsList[pIndex + 1].config.color,
                             }"
                             @click.stop="
                               viewNotes(
@@ -416,6 +422,9 @@
                             ]"
                             :style="{
                               fontFamily: item.wordsList[pIndex + 2].config.fontFamily,
+                              textDecoration: item.wordsList[pIndex + 2].config.textDecoration,
+                              borderBottom: item.wordsList[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.wordsList[pIndex + 2].config.fontWeight,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -440,7 +449,7 @@
                                 curTime <= item.timeList[pItem.sentIndex].ed &&
                                 attrib
                                   ? attrib.topic_color
-                                  : '',
+                                  : item.wordsList[pIndex + 2].config.color,
                             }"
                             @click.stop="
                               viewNotes(
@@ -548,6 +557,9 @@
                               ]"
                               :style="{
                                 fontFamily: pItem.config.fontFamily,
+                                textDecoration: pItem.config.textDecoration,
+                                borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                fontWeight: pItem.config.fontWeight,
                                 height:
                                   attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                                 fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -562,7 +574,7 @@
                                   curTime < item.timeList[pItem.sentIndex].ed &&
                                   attrib
                                     ? attrib.topic_color
-                                    : '',
+                                    : pItem.config.color,
                               }"
                               @click.stop="
                                 viewNotes(
@@ -742,6 +754,10 @@
                               ]"
                               :style="{
                                 fontFamily: pItem.config.fontFamily,
+                                color: pItem.config.color,
+                                textDecoration: pItem.config.textDecoration,
+                                borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                fontWeight: pItem.config.fontWeight,
                                 height:
                                   attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                                 fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -844,6 +860,10 @@
                             ]"
                             :style="{
                               fontFamily: item.sentArr[pIndex + 1].config.fontFamily,
+                              color: item.sentArr[pIndex + 1].config.color,
+                              textDecoration: item.sentArr[pIndex + 1].config.textDecoration,
+                              borderBottom: item.sentArr[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.sentArr[pIndex + 1].config.fontWeight,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -947,6 +967,10 @@
                             ]"
                             :style="{
                               fontFamily: item.sentArr[pIndex + 2].config.fontFamily,
+                              color: item.sentArr[pIndex + 2].config.color,
+                              textDecoration: item.sentArr[pIndex + 2].config.textDecoration,
+                              borderBottom: item.sentArr[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.sentArr[pIndex + 2].config.fontWeight,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -1057,6 +1081,10 @@
                             ]"
                             :style="{
                               fontFamily: pItem.config.fontFamily,
+                              color: pItem.config.color,
+                              textDecoration: pItem.config.textDecoration,
+                              borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: pItem.config.fontWeight,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -1425,6 +1453,10 @@ export default {
               leg: wItem.chs.length,
               config: {
                 fontFamily: wItem.fontFamily,
+                color: wItem.color,
+                textDecoration: wItem.textDecoration,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             if (wordTimeList && wordTimeList.length > 0) {

+ 44 - 6
src/views/book/courseware/preview/components/article/PhraseModelChs.vue

@@ -131,6 +131,9 @@
                             ]"
                             :style="{
                               fontFamily: pItem.config.fontFamily,
+                              textDecoration: pItem.config.textDecoration,
+                              borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: pItem.config.fontWeight,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -140,8 +143,8 @@
                                 newWordList.indexOf(pItem.chs) > -1 || pItem.words
                                   ? attrib
                                     ? attrib.topic_color
-                                    : ''
-                                  : '',
+                                    : pItem.config.color
+                                  : pItem.config.color,
                             }"
                             ><span
                               v-for="(wItem, wIndex) in pItem.leg"
@@ -162,7 +165,7 @@
                                   curTime < item.timeList[pItem.sentIndex].ed &&
                                   attrib
                                     ? attrib.topic_color
-                                    : '',
+                                    : pItem.config.color,
                               }"
                               @click.stop="viewNotes($event, pItem.chs[wIndex], pItem.chs)"
                               >{{ pItem.chs[wIndex] }}</span
@@ -213,6 +216,10 @@
                             style="text-align: left"
                             :style="{
                               fontFamily: item.wordsList[pIndex + 1].config.fontFamily,
+                              textDecoration: item.wordsList[pIndex + 1].config.textDecoration,
+                              borderBottom: item.wordsList[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.wordsList[pIndex + 1].config.fontWeight,
+                              color: item.wordsList[pIndex + 1].config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -287,6 +294,10 @@
                             style="text-align: left"
                             :style="{
                               fontFamily: item.wordsList[pIndex + 2].config.fontFamily,
+                              textDecoration: item.wordsList[pIndex + 2].config.textDecoration,
+                              borderBottom: item.wordsList[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.wordsList[pIndex + 2].config.fontWeight,
+                              color: item.wordsList[pIndex + 2].config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -352,6 +363,9 @@
                           ]"
                           :style="{
                             fontFamily: pItem.config.fontFamily,
+                            textDecoration: pItem.config.textDecoration,
+                            borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                            fontWeight: pItem.config.fontWeight,
                             height:
                               attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                             fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -361,8 +375,8 @@
                               newWordList.indexOf(pItem.chs) > -1 || pItem.words
                                 ? attrib
                                   ? attrib.topic_color
-                                  : ''
-                                : '',
+                                  : pItem.config.color
+                                : pItem.config.color,
                           }"
                           ><span
                             v-for="(wItem, wIndex) in pItem.leg"
@@ -383,7 +397,7 @@
                                 curTime < item.timeList[pItem.sentIndex].ed &&
                                 attrib
                                   ? attrib.topic_color
-                                  : '',
+                                  : pItem.config.color,
                             }"
                             @click.stop="viewNotes($event, pItem.chs[wIndex], pItem.chs)"
                             >{{ pItem.chs[wIndex] }}</span
@@ -524,6 +538,10 @@
                               :class="[]"
                               :style="{
                                 fontFamily: pItem.config.fontFamily,
+                                textDecoration: pItem.config.textDecoration,
+                                borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                fontWeight: pItem.config.fontWeight,
+                                color: pItem.config.color,
                                 height:
                                   attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                                 fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -582,6 +600,10 @@
                             :class="[]"
                             :style="{
                               fontFamily: item.sentArr[pIndex + 1].config.fontFamily,
+                              textDecoration: item.sentArr[pIndex + 1].config.textDecoration,
+                              borderBottom: item.sentArr[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.sentArr[pIndex + 1].config.fontWeight,
+                              color: item.sentArr[pIndex + 1].config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -658,6 +680,10 @@
                             :class="[]"
                             :style="{
                               fontFamily: item.sentArr[pIndex + 2].config.fontFamily,
+                              textDecoration: item.sentArr[pIndex + 2].config.textDecoration,
+                              borderBottom: item.sentArr[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.sentArr[pIndex + 2].config.fontWeight,
+                              color: item.sentArr[pIndex + 2].config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -737,6 +763,10 @@
                             :class="[]"
                             :style="{
                               fontFamily: pItem.config.fontFamily,
+                              textDecoration: pItem.config.textDecoration,
+                              borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: pItem.config.fontWeight,
+                              color: pItem.config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -1154,6 +1184,10 @@ export default {
               leg: wItem.chs.length,
               config: {
                 fontFamily: wItem.fontFamily,
+                color: wItem.color,
+                textDecoration: wItem.textDecoration,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             paraArr.push(obj);
@@ -1213,6 +1247,10 @@ export default {
               timeList: [],
               config: {
                 fontFamily: wItem.fontFamily,
+                color: wItem.color,
+                textDecoration: wItem.textDecoration,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             sentArr.push(obj);

+ 20 - 4
src/views/book/courseware/preview/components/article/Practicechs.vue

@@ -147,6 +147,9 @@
                             ]"
                             :style="{
                               fontFamily: pItem.config.fontFamily,
+                              textDecoration: pItem.config.textDecoration,
+                              borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: pItem.config.fontWeight,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -160,7 +163,7 @@
                                 curTime <= curQue.wordTime[index].ed &&
                                 attrib
                                   ? attrib.topic_color
-                                  : '',
+                                  : pItem.config.color,
                             }"
                             >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs[wIndex] : '' }}</span
                           >
@@ -219,6 +222,9 @@
                           ]"
                           :style="{
                             fontFamily: item.sentArr[pIndex + 1].config.fontFamily,
+                            textDecoration: item.sentArr[pIndex + 1].config.textDecoration,
+                            borderBottom: item.sentArr[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                            fontWeight: item.sentArr[pIndex + 1].config.fontWeight,
                             height:
                               attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                             fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -233,7 +239,7 @@
                               curTime <= curQue.wordTime[index].ed &&
                               attrib
                                 ? attrib.topic_color
-                                : '',
+                                : item.sentArr[pIndex + 1].config.color,
                           }"
                         >
                           {{
@@ -307,6 +313,9 @@
                           ]"
                           :style="{
                             fontFamily: item.sentArr[pIndex + 2].config.fontFamily,
+                            textDecoration: item.sentArr[pIndex + 2].config.textDecoration,
+                            borderBottom: item.sentArr[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                            fontWeight: item.sentArr[pIndex + 2].config.fontWeight,
                             height:
                               attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                             fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -321,7 +330,7 @@
                               curTime <= curQue.wordTime[index].ed &&
                               attrib
                                 ? attrib.topic_color
-                                : '',
+                                : item.sentArr[pIndex + 2].config.color,
                           }"
                         >
                           {{
@@ -395,6 +404,9 @@
                           ]"
                           :style="{
                             fontFamily: pItem.config.fontFamily,
+                            textDecoration: pItem.config.textDecoration,
+                            borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                            fontWeight: pItem.config.fontWeight,
                             height:
                               attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                             fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -410,7 +422,7 @@
                               curTime <= curQue.wordTime[index].ed &&
                               attrib
                                 ? attrib.topic_color
-                                : '',
+                                : pItem.config.color,
                           }"
                           >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs[wIndex] : '' }}</span
                         >
@@ -889,6 +901,10 @@ export default {
               timeList: [],
               config: {
                 fontFamily: wItem.fontFamily,
+                color: wItem.color,
+                textDecoration: wItem.textDecoration,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             sentArr.push(obj);

+ 36 - 0
src/views/book/courseware/preview/components/article/WordModelChs.vue

@@ -129,6 +129,10 @@
                             ]"
                             :style="{
                               fontFamily: pItem.config.fontFamily,
+                              textDecoration: pItem.config.textDecoration,
+                              borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: pItem.config.fontWeight,
+                              color: pItem.config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -192,6 +196,10 @@
                             ]"
                             :style="{
                               fontFamily: item.wordsList[pIndex + 1].config.fontFamily,
+                              textDecoration: item.wordsList[pIndex + 1].config.textDecoration,
+                              borderBottom: item.wordsList[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.wordsList[pIndex + 1].config.fontWeight,
+                              color: item.wordsList[pIndex + 1].config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -282,6 +290,10 @@
                             ]"
                             :style="{
                               fontFamily: item.wordsList[pIndex + 2].config.fontFamily,
+                              textDecoration: item.wordsList[pIndex + 2].config.textDecoration,
+                              borderBottom: item.wordsList[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.wordsList[pIndex + 2].config.fontWeight,
+                              color: item.wordsList[pIndex + 2].config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -354,6 +366,10 @@
                           ]"
                           :style="{
                             fontFamily: pItem.config.fontFamily,
+                            textDecoration: pItem.config.textDecoration,
+                            borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                            fontWeight: pItem.config.fontWeight,
+                            color: pItem.config.color,
                             height:
                               attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                             fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -500,6 +516,10 @@
                               :class="[]"
                               :style="{
                                 fontFamily: pItem.config.fontFamily,
+                                textDecoration: pItem.config.textDecoration,
+                                borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                fontWeight: pItem.config.fontWeight,
+                                color: pItem.config.color,
                                 height:
                                   attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                                 fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -555,6 +575,10 @@
                             :class="[]"
                             :style="{
                               fontFamily: item.sentArr[pIndex + 1].config.fontFamily,
+                              textDecoration: item.sentArr[pIndex + 1].config.textDecoration,
+                              borderBottom: item.sentArr[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.sentArr[pIndex + 1].config.fontWeight,
+                              color: item.sentArr[pIndex + 1].config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -622,6 +646,10 @@
                             :class="[]"
                             :style="{
                               fontFamily: item.sentArr[pIndex + 2].config.fontFamily,
+                              textDecoration: item.sentArr[pIndex + 2].config.textDecoration,
+                              borderBottom: item.sentArr[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: item.sentArr[pIndex + 2].config.fontWeight,
+                              color: item.sentArr[pIndex + 2].config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -689,6 +717,10 @@
                             :class="[]"
                             :style="{
                               fontFamily: pItem.config.fontFamily,
+                              textDecoration: pItem.config.textDecoration,
+                              borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                              fontWeight: pItem.config.fontWeight,
+                              color: pItem.config.color,
                               height:
                                 attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                               fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -1036,6 +1068,10 @@ export default {
               isNewWord: this.newWords.indexOf(wItem.chs) > -1,
               config: {
                 fontFamily: wItem.fontFamily,
+                color: wItem.color,
+                textDecoration: wItem.textDecoration,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             paraArr.push(obj);

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

@@ -587,7 +587,8 @@ export default {
                 fontFamily: wItem.fontFamily,
                 color: wItem.color,
                 textDecoration: wItem.textDecoration,
-                borderBottom: wItem.border,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             sentArr.push(obj);

+ 22 - 4
src/views/book/courseware/preview/components/dialogue_article/NormalModelChs.vue

@@ -183,6 +183,9 @@
                                     ]"
                                     :style="{
                                       fontFamily: pItem.config.fontFamily,
+                                      textDecoration: pItem.config.textDecoration,
+                                      borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                      fontWeight: pItem.config.fontWeight,
                                       height:
                                         attrib && attrib.font_size
                                           ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -194,7 +197,7 @@
                                         curTime < item.timeList[pItem.sentIndex].ed &&
                                         attrib
                                           ? attrib.topic_color
-                                          : '',
+                                          : pItem.config.color,
                                       fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
                                       lineHeight:
                                         attrib && attrib.font_size
@@ -282,6 +285,10 @@
                                 ]"
                                 :style="{
                                   fontFamily: item.wordsList[pIndex + 1].config.fontFamily,
+                                  textDecoration: item.wordsList[pIndex + 1].config.textDecoration,
+                                  borderBottom:
+                                    item.wordsList[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: item.wordsList[pIndex + 1].config.fontWeight,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -294,7 +301,7 @@
                                     curTime <= item.timeList[pItem.sentIndex].ed &&
                                     attrib
                                       ? attrib.topic_color
-                                      : '',
+                                      : item.wordsList[pIndex + 1].config.color,
                                   fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
                                   lineHeight:
                                     attrib && attrib.font_size
@@ -398,6 +405,10 @@
                                 ]"
                                 :style="{
                                   fontFamily: item.wordsList[pIndex + 2].config.fontFamily,
+                                  textDecoration: item.wordsList[pIndex + 2].config.textDecoration,
+                                  borderBottom:
+                                    item.wordsList[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: item.wordsList[pIndex + 2].config.fontWeight,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -410,7 +421,7 @@
                                     curTime <= item.timeList[pItem.sentIndex].ed &&
                                     attrib
                                       ? attrib.topic_color
-                                      : '',
+                                      : item.wordsList[pIndex + 2].config.color,
                                   fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
                                   lineHeight:
                                     attrib && attrib.font_size
@@ -519,6 +530,9 @@
                                   ]"
                                   :style="{
                                     fontFamily: pItem.config.fontFamily,
+                                    textDecoration: pItem.config.textDecoration,
+                                    borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                    fontWeight: pItem.config.fontWeight,
                                     height:
                                       attrib && attrib.font_size
                                         ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -530,7 +544,7 @@
                                       curTime <= item.timeList[pItem.sentIndex].ed &&
                                       attrib
                                         ? attrib.topic_color
-                                        : '',
+                                        : pItem.config.color,
                                     fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
                                     lineHeight:
                                       attrib && attrib.font_size
@@ -944,6 +958,10 @@ export default {
               fontSize: wItem.fontSize,
               config: {
                 fontFamily: wItem.fontFamily,
+                color: wItem.color,
+                textDecoration: wItem.textDecoration,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             if (wordTimeList && wordTimeList.length > 0) {

+ 24 - 4
src/views/book/courseware/preview/components/dialogue_article/PhraseModelChs.vue

@@ -134,6 +134,9 @@
                                 ]"
                                 :style="{
                                   fontFamily: pItem.config.fontFamily,
+                                  textDecoration: pItem.config.textDecoration,
+                                  borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: pItem.config.fontWeight,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -147,8 +150,8 @@
                                     newWordList.indexOf(pItem.chs) > -1 || pItem.words
                                       ? attrib
                                         ? attrib.topic_color
-                                        : ''
-                                      : '',
+                                        : pItem.config.color
+                                      : pItem.config.color,
                                 }"
                                 @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
                                 >{{ pItem.chs }}</span
@@ -196,6 +199,11 @@
                                 style="text-align: left"
                                 :style="{
                                   fontFamily: item.wordsList[pIndex + 1].config.fontFamily,
+                                  textDecoration: item.wordsList[pIndex + 1].config.textDecoration,
+                                  borderBottom:
+                                    item.wordsList[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: item.wordsList[pIndex + 1].config.fontWeight,
+                                  color: item.wordsList[pIndex + 1].config.color,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -280,6 +288,11 @@
                                 ]"
                                 :style="{
                                   fontFamily: item.wordsList[pIndex + 2].config.fontFamily,
+                                  textDecoration: item.wordsList[pIndex + 2].config.textDecoration,
+                                  borderBottom:
+                                    item.wordsList[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: item.wordsList[pIndex + 2].config.fontWeight,
+                                  color: item.wordsList[pIndex + 2].config.color,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -352,6 +365,9 @@
                               ]"
                               :style="{
                                 fontFamily: pItem.config.fontFamily,
+                                textDecoration: pItem.config.textDecoration,
+                                borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                fontWeight: pItem.config.fontWeight,
                                 height:
                                   attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                                 fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -361,8 +377,8 @@
                                   newWordList.indexOf(pItem.chs) > -1 || pItem.words
                                     ? attrib
                                       ? attrib.topic_color
-                                      : ''
-                                    : '',
+                                      : pItem.config.color
+                                    : pItem.config.color,
                               }"
                               @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
                               >{{ pItem.chs }}</span
@@ -802,6 +818,10 @@ export default {
               isNewWord: this.newWords.indexOf(wItem.chs) > -1,
               config: {
                 fontFamily: wItem.fontFamily,
+                color: wItem.color,
+                textDecoration: wItem.textDecoration,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             paraArr.push(obj);

+ 20 - 4
src/views/book/courseware/preview/components/dialogue_article/Practicechs.vue

@@ -239,6 +239,9 @@
                                   ]"
                                   :style="{
                                     fontFamily: pItem.config.fontFamily,
+                                    textDecoration: pItem.config.textDecoration,
+                                    borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                    fontWeight: pItem.config.fontWeight,
                                     height:
                                       attrib && attrib.font_size
                                         ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -259,7 +262,7 @@
                                       curTime <= curQue.wordTime[index].ed &&
                                       attrib
                                         ? attrib.topic_color
-                                        : '',
+                                        : pItem.config.color,
                                   }"
                                   >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs[wIndex] : '' }}</span
                                 >
@@ -324,6 +327,9 @@
                                 ]"
                                 :style="{
                                   fontFamily: item.sentArr[pIndex + 1].config.fontFamily,
+                                  textDecoration: item.sentArr[pIndex + 1].config.textDecoration,
+                                  borderBottom: item.sentArr[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: item.sentArr[pIndex + 1].config.fontWeight,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -343,7 +349,7 @@
                                     curTime <= curQue.wordTime[index].ed &&
                                     attrib
                                       ? attrib.topic_color
-                                      : '',
+                                      : item.sentArr[pIndex + 1].config.color,
                                 }"
                               >
                                 {{
@@ -423,6 +429,9 @@
                                 ]"
                                 :style="{
                                   fontFamily: item.sentArr[pIndex + 2].config.fontFamily,
+                                  textDecoration: item.sentArr[pIndex + 2].config.textDecoration,
+                                  borderBottom: item.sentArr[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: item.sentArr[pIndex + 2].config.fontWeight,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -442,7 +451,7 @@
                                     curTime <= curQue.wordTime[index].ed &&
                                     attrib
                                       ? attrib.topic_color
-                                      : '',
+                                      : item.sentArr[pIndex + 2].config.color,
                                 }"
                               >
                                 {{
@@ -523,6 +532,9 @@
                                 ]"
                                 :style="{
                                   fontFamily: pItem.config.fontFamily,
+                                  textDecoration: pItem.config.textDecoration,
+                                  borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: pItem.config.fontWeight,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -543,7 +555,7 @@
                                     curTime <= curQue.wordTime[index].ed &&
                                     attrib
                                       ? attrib.topic_color
-                                      : '',
+                                      : pItem.config.color,
                                 }"
                                 >{{ NumberList.indexOf(pItem.chs[wIndex]) == -1 ? pItem.chs[wIndex] : '' }}</span
                               >
@@ -1048,6 +1060,10 @@ export default {
               words,
               config: {
                 fontFamily: wItem.fontFamily,
+                color: wItem.color,
+                textDecoration: wItem.textDecoration,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             sentArr.push(obj);

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

@@ -137,6 +137,10 @@
                                 ]"
                                 :style="{
                                   fontFamily: pItem.config.fontFamily,
+                                  textDecoration: pItem.config.textDecoration,
+                                  borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: pItem.config.fontWeight,
+                                  color: pItem.config.color,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -193,6 +197,11 @@
                                 style="text-align: left"
                                 :style="{
                                   fontFamily: item.wordsList[pIndex + 1].config.fontFamily,
+                                  textDecoration: item.wordsList[pIndex + 1].config.textDecoration,
+                                  borderBottom:
+                                    item.wordsList[pIndex + 1].config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: item.wordsList[pIndex + 1].config.fontWeight,
+                                  color: item.wordsList[pIndex + 1].config.color,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -264,6 +273,11 @@
                                 ]"
                                 :style="{
                                   fontFamily: item.wordsList[pIndex + 2].config.fontFamily,
+                                  textDecoration: item.wordsList[pIndex + 2].config.textDecoration,
+                                  borderBottom:
+                                    item.wordsList[pIndex + 2].config.border === 'dotted' ? '1px dotted' : '',
+                                  fontWeight: item.wordsList[pIndex + 2].config.fontWeight,
+                                  color: item.wordsList[pIndex + 2].config.color,
                                   height:
                                     attrib && attrib.font_size
                                       ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
@@ -330,6 +344,10 @@
                               ]"
                               :style="{
                                 fontFamily: pItem.config.fontFamily,
+                                textDecoration: pItem.config.textDecoration,
+                                borderBottom: pItem.config.border === 'dotted' ? '1px dotted' : '',
+                                fontWeight: pItem.config.fontWeight,
+                                color: pItem.config.color,
                                 height:
                                   attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
                                 fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
@@ -742,6 +760,10 @@ export default {
               isNewWord: this.newWords.indexOf(wItem.chs) > -1,
               config: {
                 fontFamily: wItem.fontFamily,
+                color: wItem.color,
+                textDecoration: wItem.textDecoration,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             paraArr.push(obj);

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

@@ -579,6 +579,10 @@ export default {
               words,
               config: {
                 fontFamily: wItem.fontFamily,
+                color: wItem.color,
+                textDecoration: wItem.textDecoration,
+                border: wItem.border,
+                fontWeight: wItem.fontWeight,
               },
             };
             sentArr.push(obj);