liuhaidi123 пре 3 недеља
родитељ
комит
9520fad57a

+ 68 - 6
src/views/book/courseware/create/components/question/dialogue_article/Article.vue

@@ -5,7 +5,23 @@
       <div v-loading="loading" class="article-wrapper">
         <div class="content">
           <div v-for="(item, index) in data.detail" :key="index" class="content-list">
-            <div class="content-item">
+            <div class="content-item" v-if="item.type === 'notice'">
+              <span v-html="item.notice"></span>
+              <div class="content-operation">
+                <div class="up-down">
+                  <span
+                    :style="{ borderBottomColor: index === 0 ? '#c2c2c4' : '#000' }"
+                    @click="moveOption('up', index)"
+                  ></span>
+                  <span
+                    :style="{ borderTopColor: index < data.detail.length - 1 ? '#000' : '#c2c2c4' }"
+                    @click="moveOption('down', index)"
+                  ></span>
+                </div>
+                <SvgIcon icon-class="delete" @click="deleteOption(index)" />
+              </div>
+            </div>
+            <div class="content-item" v-else>
               <span
                 v-if="
                   data.property.role_img_type === 'upload' &&
@@ -70,7 +86,9 @@
                 <SvgIcon icon-class="delete" @click="deleteOption(index)" />
               </div>
             </div>
-            <div class="remark-box" @click="showRemark(index)"><SvgIcon icon-class="edit-line" />添加备注</div>
+            <div v-if="item.type !== 'notice'" class="remark-box" @click="showRemark(index)">
+              <SvgIcon icon-class="edit-line" />添加备注
+            </div>
           </div>
         </div>
         <div class="operation">
@@ -82,7 +100,7 @@
               :value="item.id"
             />
           </el-select>
-          <!-- <el-upload
+          <el-upload
             action="no"
             accept="image/*"
             :show-file-list="false"
@@ -91,7 +109,7 @@
           >
             <SvgIcon icon-class="picture" />
             <span>上传图片</span>
-          </el-upload> -->
+          </el-upload>
         </div>
         <el-input
           v-model="textInput"
@@ -102,6 +120,10 @@
           @keyup.enter.native="handleText"
         />
         <span class="tips">输入对话内容后请按回车上屏</span>
+        <div>
+          <el-input v-model="noticeInput" placeholder="输入语境" style="width: 500px" />
+          <el-button type="primary" size="small" @click="handleNotice">插入语境</el-button>
+        </div>
 
         <SelectUpload label="课文音频" type="audio" width="500px" @uploadSuccess="uploadAudioSuccess" />
         <div v-if="data.mp3_list.length > 0" class="upload-file">
@@ -305,6 +327,7 @@ export default {
       editWordIndex: 0,
       curRole: '',
       textInput: '',
+      noticeInput: '',
       remarkVisible: false,
       remark: null,
       paraIndex: 0,
@@ -353,6 +376,15 @@ export default {
               widthNumber: null,
             },
             type: 'image',
+            para: '',
+            paraIndex: 0,
+            sentences: [],
+            segList: [],
+            seg_words: [],
+            wordsList: [],
+            timeList: [],
+            isTitle: false,
+            sentencesEn: [],
           });
         }
       });
@@ -389,7 +421,35 @@ export default {
       this.textInput = '';
       this.handleMindMap();
     },
-
+    // 插入语境
+    handleNotice() {
+      if (this.noticeInput && this.noticeInput.trim()) {
+        this.data.detail.push({
+          roleIndex: null,
+          notice: this.noticeInput.trim(),
+          para: '',
+          remark: {
+            chs: '',
+            en: '',
+            heightNumber: null,
+            img_list: [],
+            widthNumber: null,
+          },
+          type: 'notice',
+          paraIndex: 0,
+          sentences: [],
+          segList: [],
+          seg_words: [],
+          wordsList: [],
+          timeList: [],
+          isTitle: false,
+          sentencesEn: [],
+        });
+        this.noticeInput = '';
+      } else {
+        return this.$message.error('请先输入语境内容');
+      }
+    },
     /**
      * 移动选项
      * @param {'up'|'down'} type 类型
@@ -673,7 +733,9 @@ export default {
         if (_this.data.taskId) {
           let verseList = [];
           _this.data.detail.forEach((item) => {
-            verseList = verseList.concat(item.sentences);
+            if (item.type === 'text') {
+              verseList = verseList.concat(item.sentences);
+            }
           });
           if (verseList.length > 0) {
             _this.isWordTime = true;

Разлика између датотеке није приказан због своје велике величине
+ 479 - 446
src/views/book/courseware/preview/components/dialogue_article/NormalModelChs.vue


+ 377 - 327
src/views/book/courseware/preview/components/dialogue_article/PhraseModelChs.vue

@@ -55,357 +55,391 @@
           <div :class="['empty-left', isHasRemark ? 'hasRemark' : '']"></div>
           <div class="empty-right"></div>
         </div>
-        <p v-if="curQue.notice" :class="['notice', isHasRemark ? 'hasRemark' : '']">
-          {{ curQue.notice }}
-        </p>
+
         <div
           v-for="(item, index) in resArr"
           :key="'detail' + index"
           :class="['NNPE-detail', item.isTitle ? 'NNPE-detail-title' : '']"
         >
           <div :class="['article-content', isHasRemark ? 'hasRemark' : '']">
-            <RoleChs :cur-role="item.roleDetail" :type="curQue.property.role_img_type" />
-            <div class="wordsList-box">
-              <img v-if="articleImg[0] && index == 0" :src="articleImg[index]" />
-              <!-- <div class="roleDetail" v-if="item.roleDetail.detail && item.roleDetail.detail.wordsList.length > 0">
+            <template v-if="item.type === 'notice'">
+              <p :class="['notice']">
+                {{ item.notice }}
+              </p>
+            </template>
+            <template v-else>
+              <RoleChs :cur-role="item.roleDetail" :type="curQue.property.role_img_type" />
+              <div class="wordsList-box">
+                <img v-if="articleImg[0] && index == 0" :src="articleImg[index]" />
+                <!-- <div class="roleDetail" v-if="item.roleDetail.detail && item.roleDetail.detail.wordsList.length > 0">
                 <span class="pinyin">{{ item.roleDetail.detail.wordsList | handlePinyin }}</span>
                 <span class="chs">{{ item.roleDetail.detail.wordsList | handleChs }}</span>
               </div> -->
-              <div v-if="item.roleDetail.fullName || item.roleDetail.fullPinyin" class="roleDetail">
-                <span class="chs">{{ item.roleDetail.fullName }}</span>
-                <span class="pinyin">{{ item.roleDetail.fullPinyin }}</span>
-              </div>
-              <div class="para-con" :style="{ background: item.roleDetail.color.bg }">
-                <div
-                  v-if="config.isShowEN && item.enwords && curQue.enPosition && curQue.enPosition == 'top'"
-                  class="enwords"
-                >
-                  {{ item.enwords }}
+                <div v-if="item.roleDetail.fullName || item.roleDetail.fullPinyin" class="roleDetail">
+                  <span class="chs">{{ item.roleDetail.fullName }}</span>
+                  <span class="pinyin">{{ item.roleDetail.fullPinyin }}</span>
                 </div>
-                <div style="overflow: hidden; clear: both"></div>
-                <div
-                  v-for="(pItem, pIndex) in item.wordsList"
-                  :key="'wordsList' + pIndex"
-                  class="NNPE-words"
-                  :class="[
-                    pItem.chs != '“' && pItem.wordIndex == 0 ? 'textLeft' : 'textCenter',
-                    pItem.chs == '“' ? 'textRight' : '',
-                  ]"
-                  @click="showWordDetail($event, pItem.chs, pItem.words)"
-                >
-                  <template v-if="!pItem.width">
-                    <template v-if="pItem.isShow">
-                      <template
-                        v-if="
-                          item.wordsList[pIndex + 1] &&
-                          item.wordsList[pIndex + 1].chs &&
-                          (chsFhList.indexOf(item.wordsList[pIndex + 1].chs) > -1 ||
-                            NumberList.indexOf(item.wordsList[pIndex + 1].chs) > -1)
-                        "
-                      >
-                        <span class="NNPE-words-box">
-                          <span
-                            v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
-                            class="NNPE-pinyin"
-                            :class="[
-                              pItem.className ? pItem.className : '',
-                              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',
-                            }"
-                            @click.stop="viewNotes($event, pItem.pinyin)"
-                            >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
-                          >
-                          <span
-                            class="NNPE-chs"
-                            :class="[
-                              newWordList.indexOf(pItem.chs) > -1 ? 'newActive' : '',
-                              pItem.words ? 'newActive' : '',
-                            ]"
-                            :style="{
-                              fontFamily: pItem.config.fontFamily,
-                              height:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                              fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
-                              lineHeight:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                              color:
-                                newWordList.indexOf(pItem.chs) > -1 || pItem.words
-                                  ? attrib
-                                    ? attrib.topic_color
-                                    : ''
-                                  : '',
-                            }"
-                            @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
-                            >{{ pItem.chs }}</span
-                          >
-                          <span
-                            v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
-                            class="NNPE-pinyin"
-                            :class="[
-                              pItem.className ? pItem.className : '',
-                              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',
-                            }"
-                            @click.stop="viewNotes($event, pItem.pinyin)"
-                            >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
-                          >
-                        </span>
-                        <span class="NNPE-words-box">
-                          <span
-                            v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
-                            class="NNPE-pinyin"
-                            style="text-align: left"
-                            :class="[noFont.indexOf(item.wordsList[pIndex + 1].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',
-                            }"
-                            @click.stop="viewNotes($event, item.wordsList[pIndex + 1].pinyin)"
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) === -1
-                                ? item.wordsList[pIndex + 1].pinyin
-                                : ''
-                            }}</span
-                          >
-                          <span
-                            class="NNPE-chs"
-                            style="text-align: left"
-                            :style="{
-                              fontFamily: item.wordsList[pIndex + 1].config.fontFamily,
-                              height:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                              fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
-                              lineHeight:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                            }"
-                            @click.stop="
-                              viewNotes(
-                                $event,
-                                item.wordsList[pIndex + 1].words
-                                  ? item.wordsList[pIndex + 1].words
-                                  : item.wordsList[pIndex + 1].chs,
-                              )
-                            "
-                            >{{ item.wordsList[pIndex + 1].chs }}</span
-                          >
-                          <span
-                            v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
-                            class="NNPE-pinyin"
-                            :class="[noFont.indexOf(item.wordsList[pIndex + 1].pinyin) > -1 ? 'noFont' : '']"
-                            style="text-align: left"
-                            :style="{
-                              fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
-                              height:
-                                attrib && attrib.pinyin_size
-                                  ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
-                                  : '22px',
-                            }"
-                            @click.stop="viewNotes($event, item.wordsList[pIndex + 1].pinyin)"
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) === -1
-                                ? item.wordsList[pIndex + 1].pinyin
-                                : ''
-                            }}</span
-                          >
-                        </span>
-                        <span
-                          v-if="
-                            item.wordsList[pIndex + 2] &&
-                            item.wordsList[pIndex + 2].chs &&
-                            (chsFhList.indexOf(item.wordsList[pIndex + 2].chs) > -1 ||
-                              NumberList.indexOf(item.wordsList[pIndex + 2].chs) > -1)
-                          "
-                          class="NNPE-words-box"
-                        >
-                          <span
-                            v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
-                            :class="[
-                              'NNPE-pinyin',
-                              noFont.indexOf(item.wordsList[pIndex + 2].pinyin) > -1 ? 'noFont' : '',
-                            ]"
-                            style="text-align: left"
-                            :style="{
-                              fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
-                              height:
-                                attrib && attrib.pinyin_size
-                                  ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
-                                  : '22px',
-                            }"
-                            @click.stop="viewNotes($event, item.wordsList[pIndex + 2].pinyin)"
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) === -1
-                                ? item.wordsList[pIndex + 2].pinyin
-                                : ''
-                            }}</span
-                          >
-                          <span
-                            class="NNPE-chs"
-                            style="text-align: left"
-                            :class="[
-                              pItem.chstimeList &&
-                              pItem.chstimeList[pItem.leg - 1] &&
-                              curTime >= pItem.chstimeList[pItem.leg - 1].wordBg &&
-                              curQue.wordTime &&
-                              curTime <= item.timeList[pItem.sentIndex].ed
-                                ? 'wordActive'
-                                : '',
-                            ]"
-                            :style="{
-                              fontFamily: item.wordsList[pIndex + 2].config.fontFamily,
-                              height:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                              fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
-                              lineHeight:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                            }"
-                            @click.stop="
-                              viewNotes(
-                                $event,
-                                item.wordsList[pIndex + 2].words
-                                  ? item.wordsList[pIndex + 2].words
-                                  : item.wordsList[pIndex + 2].chs,
-                              )
+                <div class="para-con" :style="{ background: item.roleDetail.color.bg }">
+                  <div
+                    v-if="config.isShowEN && item.enwords && curQue.enPosition && curQue.enPosition == 'top'"
+                    class="enwords"
+                  >
+                    {{ item.enwords }}
+                  </div>
+                  <div style="overflow: hidden; clear: both"></div>
+                  <template v-if="item.type === 'text'">
+                    <div
+                      v-for="(pItem, pIndex) in item.wordsList"
+                      :key="'wordsList' + pIndex"
+                      class="NNPE-words"
+                      :class="[
+                        pItem.chs != '“' && pItem.wordIndex == 0 ? 'textLeft' : 'textCenter',
+                        pItem.chs == '“' ? 'textRight' : '',
+                      ]"
+                      @click="showWordDetail($event, pItem.chs, pItem.words)"
+                    >
+                      <template v-if="!pItem.width">
+                        <template v-if="pItem.isShow">
+                          <template
+                            v-if="
+                              item.wordsList[pIndex + 1] &&
+                              item.wordsList[pIndex + 1].chs &&
+                              (chsFhList.indexOf(item.wordsList[pIndex + 1].chs) > -1 ||
+                                NumberList.indexOf(item.wordsList[pIndex + 1].chs) > -1)
                             "
-                            >{{ item.wordsList[pIndex + 2].chs }}</span
                           >
-                          <span
-                            v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
-                            :class="[
-                              'NNPE-pinyin',
-                              noFont.indexOf(item.wordsList[pIndex + 2].pinyin) > -1 ? 'noFont' : '',
-                            ]"
-                            style="text-align: left"
-                            :style="{
-                              fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
-                              height:
-                                attrib && attrib.pinyin_size
-                                  ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
-                                  : '22px',
-                            }"
-                            @click.stop="viewNotes($event, item.wordsList[pIndex + 2].pinyin)"
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) === -1
-                                ? item.wordsList[pIndex + 2].pinyin
-                                : ''
-                            }}</span
-                          >
-                        </span>
+                            <span class="NNPE-words-box">
+                              <span
+                                v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
+                                class="NNPE-pinyin"
+                                :class="[
+                                  pItem.className ? pItem.className : '',
+                                  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',
+                                }"
+                                @click.stop="viewNotes($event, pItem.pinyin)"
+                                >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
+                              >
+                              <span
+                                class="NNPE-chs"
+                                :class="[
+                                  newWordList.indexOf(pItem.chs) > -1 ? 'newActive' : '',
+                                  pItem.words ? 'newActive' : '',
+                                ]"
+                                :style="{
+                                  fontFamily: pItem.config.fontFamily,
+                                  height:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                  fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
+                                  lineHeight:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                  color:
+                                    newWordList.indexOf(pItem.chs) > -1 || pItem.words
+                                      ? attrib
+                                        ? attrib.topic_color
+                                        : ''
+                                      : '',
+                                }"
+                                @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
+                                >{{ pItem.chs }}</span
+                              >
+                              <span
+                                v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
+                                class="NNPE-pinyin"
+                                :class="[
+                                  pItem.className ? pItem.className : '',
+                                  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',
+                                }"
+                                @click.stop="viewNotes($event, pItem.pinyin)"
+                                >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
+                              >
+                            </span>
+                            <span class="NNPE-words-box">
+                              <span
+                                v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
+                                class="NNPE-pinyin"
+                                style="text-align: left"
+                                :class="[noFont.indexOf(item.wordsList[pIndex + 1].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',
+                                }"
+                                @click.stop="viewNotes($event, item.wordsList[pIndex + 1].pinyin)"
+                                >{{
+                                  NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) === -1
+                                    ? item.wordsList[pIndex + 1].pinyin
+                                    : ''
+                                }}</span
+                              >
+                              <span
+                                class="NNPE-chs"
+                                style="text-align: left"
+                                :style="{
+                                  fontFamily: item.wordsList[pIndex + 1].config.fontFamily,
+                                  height:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                  fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
+                                  lineHeight:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                }"
+                                @click.stop="
+                                  viewNotes(
+                                    $event,
+                                    item.wordsList[pIndex + 1].words
+                                      ? item.wordsList[pIndex + 1].words
+                                      : item.wordsList[pIndex + 1].chs,
+                                  )
+                                "
+                                >{{ item.wordsList[pIndex + 1].chs }}</span
+                              >
+                              <span
+                                v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
+                                class="NNPE-pinyin"
+                                :class="[noFont.indexOf(item.wordsList[pIndex + 1].pinyin) > -1 ? 'noFont' : '']"
+                                style="text-align: left"
+                                :style="{
+                                  fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
+                                  height:
+                                    attrib && attrib.pinyin_size
+                                      ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
+                                      : '22px',
+                                }"
+                                @click.stop="viewNotes($event, item.wordsList[pIndex + 1].pinyin)"
+                                >{{
+                                  NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) === -1
+                                    ? item.wordsList[pIndex + 1].pinyin
+                                    : ''
+                                }}</span
+                              >
+                            </span>
+                            <span
+                              v-if="
+                                item.wordsList[pIndex + 2] &&
+                                item.wordsList[pIndex + 2].chs &&
+                                (chsFhList.indexOf(item.wordsList[pIndex + 2].chs) > -1 ||
+                                  NumberList.indexOf(item.wordsList[pIndex + 2].chs) > -1)
+                              "
+                              class="NNPE-words-box"
+                            >
+                              <span
+                                v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
+                                :class="[
+                                  'NNPE-pinyin',
+                                  noFont.indexOf(item.wordsList[pIndex + 2].pinyin) > -1 ? 'noFont' : '',
+                                ]"
+                                style="text-align: left"
+                                :style="{
+                                  fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
+                                  height:
+                                    attrib && attrib.pinyin_size
+                                      ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
+                                      : '22px',
+                                }"
+                                @click.stop="viewNotes($event, item.wordsList[pIndex + 2].pinyin)"
+                                >{{
+                                  NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) === -1
+                                    ? item.wordsList[pIndex + 2].pinyin
+                                    : ''
+                                }}</span
+                              >
+                              <span
+                                class="NNPE-chs"
+                                style="text-align: left"
+                                :class="[
+                                  pItem.chstimeList &&
+                                  pItem.chstimeList[pItem.leg - 1] &&
+                                  curTime >= pItem.chstimeList[pItem.leg - 1].wordBg &&
+                                  curQue.wordTime &&
+                                  curTime <= item.timeList[pItem.sentIndex].ed
+                                    ? 'wordActive'
+                                    : '',
+                                ]"
+                                :style="{
+                                  fontFamily: item.wordsList[pIndex + 2].config.fontFamily,
+                                  height:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                  fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
+                                  lineHeight:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                }"
+                                @click.stop="
+                                  viewNotes(
+                                    $event,
+                                    item.wordsList[pIndex + 2].words
+                                      ? item.wordsList[pIndex + 2].words
+                                      : item.wordsList[pIndex + 2].chs,
+                                  )
+                                "
+                                >{{ item.wordsList[pIndex + 2].chs }}</span
+                              >
+                              <span
+                                v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
+                                :class="[
+                                  'NNPE-pinyin',
+                                  noFont.indexOf(item.wordsList[pIndex + 2].pinyin) > -1 ? 'noFont' : '',
+                                ]"
+                                style="text-align: left"
+                                :style="{
+                                  fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
+                                  height:
+                                    attrib && attrib.pinyin_size
+                                      ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
+                                      : '22px',
+                                }"
+                                @click.stop="viewNotes($event, item.wordsList[pIndex + 2].pinyin)"
+                                >{{
+                                  NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) === -1
+                                    ? item.wordsList[pIndex + 2].pinyin
+                                    : ''
+                                }}</span
+                              >
+                            </span>
+                          </template>
+                          <template v-else>
+                            <span
+                              v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
+                              class="NNPE-pinyin"
+                              :class="[
+                                pItem.chs != '“' && pItem.padding ? 'padding' : '',
+                                pItem.className ? pItem.className : '',
+                                noFont.indexOf(pItem.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',
+                              }"
+                              @click.stop="viewNotes($event, pItem.pinyin)"
+                              >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
+                            >
+                            <span
+                              v-if="pItem.chs != '#'"
+                              class="NNPE-chs"
+                              :class="[
+                                newWordList.indexOf(pItem.chs) > -1 ? 'newActive' : '',
+                                pItem.chs != '“' && pItem.padding && config.isShowPY ? 'padding' : '',
+                                pItem.words ? 'newActive' : '',
+                              ]"
+                              :style="{
+                                fontFamily: pItem.config.fontFamily,
+                                height:
+                                  attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
+                                fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
+                                lineHeight:
+                                  attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
+                                color:
+                                  newWordList.indexOf(pItem.chs) > -1 || pItem.words
+                                    ? attrib
+                                      ? attrib.topic_color
+                                      : ''
+                                    : '',
+                              }"
+                              @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
+                              >{{ pItem.chs }}</span
+                            >
+                            <span
+                              v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
+                              class="NNPE-pinyin"
+                              :class="[
+                                pItem.chs != '“' && pItem.padding ? 'padding' : '',
+                                pItem.className ? pItem.className : '',
+                                noFont.indexOf(pItem.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',
+                              }"
+                              @click.stop="viewNotes($event, pItem.pinyin)"
+                              >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
+                            >
+                          </template>
+                        </template>
                       </template>
                       <template v-else>
                         <span
-                          v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
-                          class="NNPE-pinyin"
-                          :class="[
-                            pItem.chs != '“' && pItem.padding ? 'padding' : '',
-                            pItem.className ? pItem.className : '',
-                            noFont.indexOf(pItem.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',
+                            height: pItem.height + 'px',
+                            width: pItem.width + 'px',
                           }"
-                          @click.stop="viewNotes($event, pItem.pinyin)"
-                          >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
-                        >
-                        <span
-                          v-if="pItem.chs != '#'"
-                          class="NNPE-chs"
-                          :class="[
-                            newWordList.indexOf(pItem.chs) > -1 ? 'newActive' : '',
-                            pItem.chs != '“' && pItem.padding && config.isShowPY ? 'padding' : '',
-                            pItem.words ? 'newActive' : '',
-                          ]"
-                          :style="{
-                            fontFamily: pItem.config.fontFamily,
-                            height:
-                              attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                            fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
-                            lineHeight:
-                              attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                            color:
-                              newWordList.indexOf(pItem.chs) > -1 || pItem.words
-                                ? attrib
-                                  ? attrib.topic_color
-                                  : ''
-                                : '',
-                          }"
-                          @click.stop="viewNotes($event, pItem.words ? pItem.words : pItem.chs)"
-                          >{{ pItem.chs }}</span
-                        >
-                        <span
-                          v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
-                          class="NNPE-pinyin"
-                          :class="[
-                            pItem.chs != '“' && pItem.padding ? 'padding' : '',
-                            pItem.className ? pItem.className : '',
-                            noFont.indexOf(pItem.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',
-                          }"
-                          @click.stop="viewNotes($event, pItem.pinyin)"
-                          >{{ NumberList.indexOf(pItem.pinyin) === -1 ? pItem.pinyin : '' }}</span
-                        >
+                        ></span>
                       </template>
-                    </template>
+                    </div>
                   </template>
-                  <template v-else>
-                    <span
-                      :style="{
-                        height: pItem.height + 'px',
-                        width: pItem.width + 'px',
-                      }"
-                    ></span>
-                  </template>
-                </div>
-                <div style="overflow: hidden; clear: both"></div>
-                <div
-                  v-if="
-                    config.isShowEN &&
-                    item.enwords &&
-                    (!curQue.enPosition || (curQue.enPosition && curQue.enPosition == 'bottom'))
-                  "
-                  class="enwords"
-                >
-                  {{ item.enwords }}
-                </div>
-                <div
-                  v-if="curQue.property.multilingual_position === 'para'"
-                  class="multilingual-para"
-                  :class="[item.isTitle ? 'multilingual-para-center' : '']"
-                >
-                  {{
-                    curQue.detail[index].multilingualTextList && curQue.detail[index].multilingualTextList[multilingual]
-                      ? curQue.detail[index].multilingualTextList[multilingual].join(' ')
-                      : ''
-                  }}
+                  <img v-else :src="item.file_url_open" />
+                  <div style="overflow: hidden; clear: both"></div>
+                  <div
+                    v-if="
+                      config.isShowEN &&
+                      item.enwords &&
+                      (!curQue.enPosition || (curQue.enPosition && curQue.enPosition == 'bottom'))
+                    "
+                    class="enwords"
+                  >
+                    {{ item.enwords }}
+                  </div>
+                  <div
+                    v-if="curQue.property.multilingual_position === 'para'"
+                    class="multilingual-para"
+                    :class="[item.isTitle ? 'multilingual-para-center' : '']"
+                  >
+                    {{
+                      curQue.detail[index].multilingualTextList &&
+                      curQue.detail[index].multilingualTextList[multilingual]
+                        ? curQue.detail[index].multilingualTextList[multilingual].join(' ')
+                        : ''
+                    }}
+                  </div>
                 </div>
+                <img v-if="articleImg[index + 1]" :src="articleImg[index + 1]" />
               </div>
-              <img v-if="articleImg[index + 1]" :src="articleImg[index + 1]" />
-            </div>
+            </template>
           </div>
-          <div class="remarkBox remark-top">
+          <div
+            :class="[
+              'remarkBox',
+              item.roleDetail && item.roleDetail.detail && item.roleDetail.detail.wordsList.length > 0
+                ? 'remark-top'
+                : 'remark-top-8',
+            ]"
+          >
             <RemarkChs
               :remark-detail="item.remarkDetail"
-              :margin-top="item.roleDetail.detail && item.roleDetail.detail.wordsList.length > 0 ? 44 : 8"
+              :margin-top="
+                item.roleDetail && item.roleDetail.detail && item.roleDetail.detail.wordsList.length > 0 ? 44 : 8
+              "
             />
           </div>
         </div>
@@ -782,6 +816,9 @@ export default {
           roleDetail,
           remarkDetail,
           dhaspinyin,
+          type: dItem.type,
+          notice: dItem.notice,
+          file_url_open: dItem.file_url_open,
         };
         resArr.push(paraObj);
       });
@@ -1404,5 +1441,18 @@ export default {
     margin-top: -130px;
     box-shadow: none;
   }
+
+  .notice {
+    margin: 0;
+    font-size: 14px;
+    font-weight: 400;
+    line-height: 150%;
+    color: #000;
+    word-break: break-word;
+  }
+
+  img {
+    max-width: 100%;
+  }
 }
 </style>

+ 17 - 0
src/views/book/courseware/preview/components/dialogue_article/Practicechs.vue

@@ -1058,6 +1058,9 @@ export default {
             sentArr,
             enwords: dItem.sentencesEn && dItem.sentencesEn[sIndex] && dItem.sentencesEn[sIndex].replace(/'/g, '’'),
             dhaspinyin,
+            type: dItem.type,
+            notice: dItem.notice,
+            file_url_open: dItem.file_url_open,
           };
           sentArrTotal.push(sentArr);
           resArr.push(objs);
@@ -1067,6 +1070,7 @@ export default {
         this.mergeWordTime(sentArrTotal, wordTimeList);
       }
       this.resObj = { sentList: resArr };
+      console.log(resArr);
     },
     // 获取角色
     getRole(dItem) {
@@ -1521,5 +1525,18 @@ export default {
     // left: 0;
     // z-index: 9999;
   }
+
+  .notice {
+    margin: 0;
+    font-size: 14px;
+    font-weight: 400;
+    line-height: 150%;
+    color: #000;
+    word-break: break-word;
+  }
+
+  img {
+    max-width: 100%;
+  }
 }
 </style>

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

@@ -55,328 +55,356 @@
           <div :class="['empty-left']"></div>
           <div class="empty-right"></div>
         </div>
-        <p v-if="curQue.notice" class="notice">{{ curQue.notice }}</p>
         <div
           v-for="(item, index) in resArr"
           :key="'detail' + index"
           :class="['NNPE-detail', item.isTitle ? 'NNPE-detail-title' : '']"
         >
           <div class="article-content">
-            <RoleChs :cur-role="item.roleDetail" :type="curQue.property.role_img_type" />
-            <div class="wordsList-box">
-              <img v-if="articleImg[0] && index == 0" :src="articleImg[index]" />
-              <!-- <div class="roleDetail" v-if="item.roleDetail.detail && item.roleDetail.detail.wordsList.length > 0">
+            <template v-if="item.type === 'notice'">
+              <p :class="['notice']">
+                {{ item.notice }}
+              </p>
+            </template>
+            <template v-else>
+              <RoleChs :cur-role="item.roleDetail" :type="curQue.property.role_img_type" />
+              <div class="wordsList-box">
+                <img v-if="articleImg[0] && index == 0" :src="articleImg[index]" />
+                <!-- <div class="roleDetail" v-if="item.roleDetail.detail && item.roleDetail.detail.wordsList.length > 0">
                 <span class="pinyin">{{ item.roleDetail.detail.wordsList | handlePinyin }}</span>
                 <span class="chs">{{ item.roleDetail.detail.wordsList | handleChs }}</span>
               </div> -->
-              <div v-if="item.roleDetail.fullName || item.roleDetail.fullPinyin" class="roleDetail">
-                <span class="chs">{{ item.roleDetail.fullName }}</span>
-                <span class="pinyin">{{ item.roleDetail.fullPinyin }}</span>
-              </div>
-              <div class="para-con" :style="{ background: item.roleDetail.color.bg }">
-                <div
-                  v-if="config.isShowEN && item.enwords && curQue.enPosition && curQue.enPosition == 'top'"
-                  class="enwords"
-                >
-                  {{ item.enwords }}
+                <div v-if="item.roleDetail.fullName || item.roleDetail.fullPinyin" class="roleDetail">
+                  <span class="chs">{{ item.roleDetail.fullName }}</span>
+                  <span class="pinyin">{{ item.roleDetail.fullPinyin }}</span>
                 </div>
-                <div style="overflow: hidden; clear: both"></div>
-                <div
-                  v-for="(pItem, pIndex) in item.wordsList"
-                  :key="'wordsList' + pIndex"
-                  class="NNPE-words"
-                  :class="[
-                    pItem.chs != '“' && pItem.wordIndex == 0 ? 'textLeft' : 'textCenter',
-                    pItem.chs == '“' ? 'textRight' : '',
-                  ]"
-                >
-                  <template v-if="!pItem.width">
-                    <template v-if="pItem.isShow">
-                      <template
-                        v-if="
-                          (item.wordsList[pIndex + 1] &&
-                            item.wordsList[pIndex + 1].chs &&
-                            chsFhList.indexOf(item.wordsList[pIndex + 1].chs) > -1) ||
-                          (item.wordsList[pIndex + 1] &&
-                            item.wordsList[pIndex + 1].chs &&
-                            item.wordsList[pIndex + 1].chs == '#')
-                        "
-                      >
-                        <span class="NNPE-words-box" @click="showWordDetail($event, pItem)">
-                          <span
-                            v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
-                            class="NNPE-pinyin"
-                            :class="[
-                              pItem.className ? pItem.className : '',
-                              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
+                <div class="para-con" :style="{ background: item.roleDetail.color.bg }">
+                  <div
+                    v-if="config.isShowEN && item.enwords && curQue.enPosition && curQue.enPosition == 'top'"
+                    class="enwords"
+                  >
+                    {{ item.enwords }}
+                  </div>
+                  <div style="overflow: hidden; clear: both"></div>
+                  <template v-if="item.type === 'text'">
+                    <div
+                      v-for="(pItem, pIndex) in item.wordsList"
+                      :key="'wordsList' + pIndex"
+                      class="NNPE-words"
+                      :class="[
+                        pItem.chs != '“' && pItem.wordIndex == 0 ? 'textLeft' : 'textCenter',
+                        pItem.chs == '“' ? 'textRight' : '',
+                      ]"
+                    >
+                      <template v-if="!pItem.width">
+                        <template v-if="pItem.isShow">
+                          <template
+                            v-if="
+                              (item.wordsList[pIndex + 1] &&
+                                item.wordsList[pIndex + 1].chs &&
+                                chsFhList.indexOf(item.wordsList[pIndex + 1].chs) > -1) ||
+                              (item.wordsList[pIndex + 1] &&
+                                item.wordsList[pIndex + 1].chs &&
+                                item.wordsList[pIndex + 1].chs == '#')
+                            "
                           >
-                          <span
-                            class="NNPE-chs"
-                            :class="[
-                              'NNPE-chs',
-                              paraIndex == pItem.paraIndex &&
-                              sentIndex == pItem.sentIndex &&
-                              wordIndex == pItem.wordIndex
-                                ? 'wordActive'
-                                : '',
-                            ]"
-                            :style="{
-                              fontFamily: pItem.config.fontFamily,
-                              height:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                              fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
-                              lineHeight:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                              color:
+                            <span class="NNPE-words-box" @click="showWordDetail($event, pItem)">
+                              <span
+                                v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
+                                class="NNPE-pinyin"
+                                :class="[
+                                  pItem.className ? pItem.className : '',
+                                  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
+                              >
+                              <span
+                                class="NNPE-chs"
+                                :class="[
+                                  'NNPE-chs',
+                                  paraIndex == pItem.paraIndex &&
+                                  sentIndex == pItem.sentIndex &&
+                                  wordIndex == pItem.wordIndex
+                                    ? 'wordActive'
+                                    : '',
+                                ]"
+                                :style="{
+                                  fontFamily: pItem.config.fontFamily,
+                                  height:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                  fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
+                                  lineHeight:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                  color:
+                                    paraIndex == pItem.paraIndex &&
+                                    sentIndex == pItem.sentIndex &&
+                                    wordIndex == pItem.wordIndex &&
+                                    attrib
+                                      ? attrib.topic_color
+                                      : '',
+                                }"
+                                >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs : '' }}</span
+                              >
+                              <span
+                                v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
+                                class="NNPE-pinyin"
+                                :class="[
+                                  pItem.className ? pItem.className : '',
+                                  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
+                              >
+                            </span>
+                            <span class="NNPE-words-box" @click="showWordDetail($event, item.wordsList[pIndex + 1])">
+                              <span
+                                v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
+                                class="NNPE-pinyin"
+                                :class="[noFont.indexOf(item.wordsList[pIndex + 1].pinyin) > -1 ? 'noFont' : '']"
+                                style="text-align: left"
+                                :style="{
+                                  fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
+                                  height:
+                                    attrib && attrib.pinyin_size
+                                      ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
+                                      : '22px',
+                                }"
+                                >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                              >
+                              <span
+                                class="NNPE-chs"
+                                style="text-align: left"
+                                :style="{
+                                  fontFamily: item.wordsList[pIndex + 1].config.fontFamily,
+                                  height:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                  fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
+                                  lineHeight:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                }"
+                                >{{
+                                  NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
+                                    ? item.wordsList[pIndex + 1].chs
+                                    : ''
+                                }}</span
+                              >
+                              <span
+                                v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
+                                class="NNPE-pinyin"
+                                :class="[noFont.indexOf(item.wordsList[pIndex + 1].pinyin) > -1 ? 'noFont' : '']"
+                                style="text-align: left"
+                                :style="{
+                                  fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
+                                  height:
+                                    attrib && attrib.pinyin_size
+                                      ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
+                                      : '22px',
+                                }"
+                                >{{ item.wordsList[pIndex + 1].pinyin }}</span
+                              >
+                            </span>
+                            <span
+                              v-if="
+                                item.wordsList[pIndex + 2] &&
+                                item.wordsList[pIndex + 2].chs &&
+                                chsFhList.indexOf(item.wordsList[pIndex + 2].chs) > -1
+                              "
+                              class="NNPE-words-box"
+                              @click="showWordDetail($event, item.wordsList[pIndex + 2])"
+                            >
+                              <span
+                                v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
+                                :class="[
+                                  'NNPE-pinyin',
+                                  noFont.indexOf(item.wordsList[pIndex + 2].pinyin) > -1 ? 'noFont' : '',
+                                ]"
+                                style="text-align: left"
+                                :style="{
+                                  fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
+                                  height:
+                                    attrib && attrib.pinyin_size
+                                      ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
+                                      : '22px',
+                                }"
+                                >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                              >
+                              <span
+                                class="NNPE-chs"
+                                style="text-align: left"
+                                :class="[
+                                  pItem.paraIndex == paraIndex && pItem.sentIndex == sentIndex ? 'overActive' : '',
+                                  pItem.chstimeList &&
+                                  pItem.chstimeList[pItem.leg - 1] &&
+                                  curTime >= pItem.chstimeList[pItem.leg - 1].wordBg &&
+                                  curQue.wordTime &&
+                                  curTime <= item.timeList[pItem.sentIndex].ed
+                                    ? 'wordActive'
+                                    : '',
+                                ]"
+                                :style="{
+                                  fontFamily: item.wordsList[pIndex + 2].config.fontFamily,
+                                  height:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                  fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
+                                  lineHeight:
+                                    attrib && attrib.font_size
+                                      ? attrib.font_size.replace('pt', '') * 1.4 + 'pt'
+                                      : '28px',
+                                }"
+                                >{{
+                                  NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
+                                    ? item.wordsList[pIndex + 2].chs
+                                    : ''
+                                }}</span
+                              >
+                              <span
+                                v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
+                                :class="[
+                                  'NNPE-pinyin',
+                                  noFont.indexOf(item.wordsList[pIndex + 2].pinyin) > -1 ? 'noFont' : '',
+                                ]"
+                                style="text-align: left"
+                                :style="{
+                                  fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
+                                  height:
+                                    attrib && attrib.pinyin_size
+                                      ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
+                                      : '22px',
+                                }"
+                                >{{ item.wordsList[pIndex + 2].pinyin }}</span
+                              >
+                            </span>
+                          </template>
+                          <template v-else>
+                            <span
+                              v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
+                              class="NNPE-pinyin"
+                              :class="[
+                                pItem.chs != '“' && pItem.padding ? 'padding' : '',
+                                pItem.className ? pItem.className : '',
+                                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',
+                              }"
+                              @click="showWordDetail($event, pItem)"
+                              >{{ pItem.pinyin }}</span
+                            >
+                            <span
+                              v-if="pItem.chs != '#'"
+                              class="NNPE-chs"
+                              :class="[
+                                pItem.chs != '“' && pItem.padding && config.isShowPY ? 'padding' : '',
                                 paraIndex == pItem.paraIndex &&
                                 sentIndex == pItem.sentIndex &&
-                                wordIndex == pItem.wordIndex &&
-                                attrib
-                                  ? attrib.topic_color
+                                wordIndex == pItem.wordIndex
+                                  ? 'wordActive'
                                   : '',
-                            }"
-                            >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs : '' }}</span
-                          >
-                          <span
-                            v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
-                            class="NNPE-pinyin"
-                            :class="[
-                              pItem.className ? pItem.className : '',
-                              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
-                          >
-                        </span>
-                        <span class="NNPE-words-box" @click="showWordDetail($event, item.wordsList[pIndex + 1])">
-                          <span
-                            v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
-                            class="NNPE-pinyin"
-                            :class="[noFont.indexOf(item.wordsList[pIndex + 1].pinyin) > -1 ? 'noFont' : '']"
-                            style="text-align: left"
-                            :style="{
-                              fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
-                              height:
-                                attrib && attrib.pinyin_size
-                                  ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
-                                  : '22px',
-                            }"
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
-                          >
-                          <span
-                            class="NNPE-chs"
-                            style="text-align: left"
-                            :style="{
-                              fontFamily: item.wordsList[pIndex + 1].config.fontFamily,
-                              height:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                              fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
-                              lineHeight:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                            }"
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 1].pinyin) == -1
-                                ? item.wordsList[pIndex + 1].chs
-                                : ''
-                            }}</span
-                          >
-                          <span
-                            v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
-                            class="NNPE-pinyin"
-                            :class="[noFont.indexOf(item.wordsList[pIndex + 1].pinyin) > -1 ? 'noFont' : '']"
-                            style="text-align: left"
-                            :style="{
-                              fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
-                              height:
-                                attrib && attrib.pinyin_size
-                                  ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
-                                  : '22px',
-                            }"
-                            >{{ item.wordsList[pIndex + 1].pinyin }}</span
-                          >
-                        </span>
-                        <span
-                          v-if="
-                            item.wordsList[pIndex + 2] &&
-                            item.wordsList[pIndex + 2].chs &&
-                            chsFhList.indexOf(item.wordsList[pIndex + 2].chs) > -1
-                          "
-                          class="NNPE-words-box"
-                          @click="showWordDetail($event, item.wordsList[pIndex + 2])"
-                        >
-                          <span
-                            v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
-                            :class="[
-                              'NNPE-pinyin',
-                              noFont.indexOf(item.wordsList[pIndex + 2].pinyin) > -1 ? 'noFont' : '',
-                            ]"
-                            style="text-align: left"
-                            :style="{
-                              fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
-                              height:
-                                attrib && attrib.pinyin_size
-                                  ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
-                                  : '22px',
-                            }"
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
-                          >
-                          <span
-                            class="NNPE-chs"
-                            style="text-align: left"
-                            :class="[
-                              pItem.paraIndex == paraIndex && pItem.sentIndex == sentIndex ? 'overActive' : '',
-                              pItem.chstimeList &&
-                              pItem.chstimeList[pItem.leg - 1] &&
-                              curTime >= pItem.chstimeList[pItem.leg - 1].wordBg &&
-                              curQue.wordTime &&
-                              curTime <= item.timeList[pItem.sentIndex].ed
-                                ? 'wordActive'
-                                : '',
-                            ]"
-                            :style="{
-                              fontFamily: item.wordsList[pIndex + 2].config.fontFamily,
-                              height:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                              fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
-                              lineHeight:
-                                attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                            }"
-                            >{{
-                              NumberList.indexOf(item.wordsList[pIndex + 2].pinyin) == -1
-                                ? item.wordsList[pIndex + 2].chs
-                                : ''
-                            }}</span
-                          >
-                          <span
-                            v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
-                            :class="[
-                              'NNPE-pinyin',
-                              noFont.indexOf(item.wordsList[pIndex + 2].pinyin) > -1 ? 'noFont' : '',
-                            ]"
-                            style="text-align: left"
-                            :style="{
-                              fontSize: attrib && attrib.pinyin_size ? attrib.pinyin_size : '14px',
-                              height:
-                                attrib && attrib.pinyin_size
-                                  ? attrib.pinyin_size.replace('pt', '') * 1.5 + 'pt'
-                                  : '22px',
-                            }"
-                            >{{ item.wordsList[pIndex + 2].pinyin }}</span
-                          >
-                        </span>
+                              ]"
+                              :style="{
+                                fontFamily: pItem.config.fontFamily,
+                                height:
+                                  attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
+                                fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
+                                lineHeight:
+                                  attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
+                                color:
+                                  paraIndex == pItem.paraIndex &&
+                                  sentIndex == pItem.sentIndex &&
+                                  wordIndex == pItem.wordIndex &&
+                                  attrib
+                                    ? attrib.topic_color
+                                    : '',
+                              }"
+                              @click="showWordDetail($event, pItem)"
+                              >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs : '' }}</span
+                            >
+                            <span
+                              v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
+                              class="NNPE-pinyin"
+                              :class="[
+                                pItem.chs != '“' && pItem.padding ? 'padding' : '',
+                                pItem.className ? pItem.className : '',
+                                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',
+                              }"
+                              @click="showWordDetail($event, pItem)"
+                              >{{ pItem.pinyin }}</span
+                            >
+                          </template>
+                        </template>
                       </template>
                       <template v-else>
                         <span
-                          v-if="curQue.property.pinyin_position == 'top' && config.isShowPY && item.dhaspinyin"
-                          class="NNPE-pinyin"
-                          :class="[
-                            pItem.chs != '“' && pItem.padding ? 'padding' : '',
-                            pItem.className ? pItem.className : '',
-                            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',
-                          }"
-                          @click="showWordDetail($event, pItem)"
-                          >{{ pItem.pinyin }}</span
-                        >
-                        <span
-                          v-if="pItem.chs != '#'"
-                          class="NNPE-chs"
-                          :class="[
-                            pItem.chs != '“' && pItem.padding && config.isShowPY ? 'padding' : '',
-                            paraIndex == pItem.paraIndex && sentIndex == pItem.sentIndex && wordIndex == pItem.wordIndex
-                              ? 'wordActive'
-                              : '',
-                          ]"
                           :style="{
-                            fontFamily: pItem.config.fontFamily,
-                            height:
-                              attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                            fontSize: attrib && attrib.font_size ? attrib.font_size : '20px',
-                            lineHeight:
-                              attrib && attrib.font_size ? attrib.font_size.replace('pt', '') * 1.4 + 'pt' : '28px',
-                            color:
-                              paraIndex == pItem.paraIndex &&
-                              sentIndex == pItem.sentIndex &&
-                              wordIndex == pItem.wordIndex &&
-                              attrib
-                                ? attrib.topic_color
-                                : '',
+                            height: pItem.height + 'px',
+                            width: pItem.width + 'px',
                           }"
-                          @click="showWordDetail($event, pItem)"
-                          >{{ NumberList.indexOf(pItem.pinyin) == -1 ? pItem.chs : '' }}</span
-                        >
-                        <span
-                          v-if="curQue.property.pinyin_position == 'bottom' && config.isShowPY && item.dhaspinyin"
-                          class="NNPE-pinyin"
-                          :class="[
-                            pItem.chs != '“' && pItem.padding ? 'padding' : '',
-                            pItem.className ? pItem.className : '',
-                            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',
-                          }"
-                          @click="showWordDetail($event, pItem)"
-                          >{{ pItem.pinyin }}</span
-                        >
+                        ></span>
                       </template>
-                    </template>
+                    </div>
                   </template>
-                  <template v-else>
-                    <span
-                      :style="{
-                        height: pItem.height + 'px',
-                        width: pItem.width + 'px',
-                      }"
-                    ></span>
-                  </template>
-                </div>
-                <div style="overflow: hidden; clear: both"></div>
-                <div
-                  v-if="
-                    config.isShowEN &&
-                    item.enwords &&
-                    (!curQue.enPosition || (curQue.enPosition && curQue.enPosition == 'bottom'))
-                  "
-                  class="enwords"
-                >
-                  {{ item.enwords }}
-                </div>
-                <div
-                  v-if="curQue.property.multilingual_position === 'para'"
-                  class="multilingual-para"
-                  :class="[item.isTitle ? 'multilingual-para-center' : '']"
-                >
-                  {{
-                    curQue.detail[index].multilingualTextList && curQue.detail[index].multilingualTextList[multilingual]
-                      ? curQue.detail[index].multilingualTextList[multilingual].join(' ')
-                      : ''
-                  }}
+                  <img v-else :src="item.file_url_open" />
+                  <div style="overflow: hidden; clear: both"></div>
+                  <div
+                    v-if="
+                      config.isShowEN &&
+                      item.enwords &&
+                      (!curQue.enPosition || (curQue.enPosition && curQue.enPosition == 'bottom'))
+                    "
+                    class="enwords"
+                  >
+                    {{ item.enwords }}
+                  </div>
+                  <div
+                    v-if="curQue.property.multilingual_position === 'para'"
+                    class="multilingual-para"
+                    :class="[item.isTitle ? 'multilingual-para-center' : '']"
+                  >
+                    {{
+                      curQue.detail[index].multilingualTextList &&
+                      curQue.detail[index].multilingualTextList[multilingual]
+                        ? curQue.detail[index].multilingualTextList[multilingual].join(' ')
+                        : ''
+                    }}
+                  </div>
                 </div>
+                <img v-if="articleImg[index + 1]" :src="articleImg[index + 1]" />
               </div>
-              <img v-if="articleImg[index + 1]" :src="articleImg[index + 1]" />
-            </div>
+            </template>
           </div>
         </div>
         <div class="NPC-article-empty NPC-article-empty-bottom">
@@ -735,6 +763,9 @@ export default {
           roleDetail,
           remarkDetail,
           dhaspinyin,
+          type: dItem.type,
+          notice: dItem.notice,
+          file_url_open: dItem.file_url_open,
         };
         resArr.push(paraObj);
       });
@@ -1262,4 +1293,17 @@ export default {
   //   height: 200px;
   //   background: #cc0;
 }
+
+.notice {
+  margin: 0;
+  font-size: 14px;
+  font-weight: 400;
+  line-height: 150%;
+  color: #000;
+  word-break: break-word;
+}
+
+img {
+  max-width: 100%;
+}
 </style>

Неке датотеке нису приказане због велике количине промена