Ver Fonte

Merge branch 'master' of http://60.205.254.193:3000/GCLS/eep_page

dsy há 2 meses atrás
pai
commit
b58b25ca95

+ 62 - 6
src/views/book/courseware/preview/components/dialogue_article/NormalModelChs.vue

@@ -4,7 +4,10 @@
     <div
       class="aduioLine-box aduioLine-practice-npc"
       v-if="
-        (curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) || config.isHasPY || config.isHasEN
+        ((curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) ||
+          config.isHasPY ||
+          config.isHasEN) &&
+        curQue.property.mp3_position === 'top'
       "
     >
       <div class="aduioLine-content">
@@ -415,7 +418,19 @@
                 >
                   {{ item.enwords }}
                 </div>
+                <div
+                  class="multilingual-para"
+                  :class="[item.isTitle ? 'multilingual-para-center' : '']"
+                  v-if="curQue.property.multilingual_position === 'para'"
+                >
+                  {{
+                    curQue.detail[index].multilingualTextList[multilingual]
+                      ? curQue.detail[index].multilingualTextList[multilingual].join(' ')
+                      : ''
+                  }}
+                </div>
               </div>
+
               <img :src="articleImg[index + 1]" v-if="articleImg[index + 1]" />
             </div>
           </div>
@@ -436,9 +451,18 @@
           <div :class="['empty-left', isHasRemark ? 'hasRemark' : '']"></div>
           <div class="empty-right"></div>
         </div>
-        <div class="multilingual" v-for="(items, indexs) in multilingualTextList" :key="indexs">
-          {{ items }}
-        </div>
+
+        <template v-for="(items, indexs) in curQue.detail">
+          <div
+            class="multilingual"
+            :key="indexs"
+            v-if="curQue.property.multilingual_position === 'all' && items.multilingualTextList[multilingual]"
+          >
+            <div class="multilingual-para" :class="[items.isTitle ? 'multilingual-para-center' : '']">
+              {{ items.multilingualTextList[multilingual] ? items.multilingualTextList[multilingual].join(' ') : '' }}
+            </div>
+          </div>
+        </template>
         <div class="dia-article-record" v-if="curQue.Bookanswer">
           <Soundrecord
             type="promax"
@@ -450,7 +474,39 @@
         </div>
       </div>
     </template>
-
+    <div
+      class="aduioLine-box aduioLine-practice-npc aduioLine-box-bottom"
+      v-if="
+        ((curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) ||
+          config.isHasPY ||
+          config.isHasEN) &&
+        curQue.property.mp3_position === 'bottom'
+      "
+    >
+      <div class="aduioLine-content">
+        <template v-if="curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url">
+          <AudioLine
+            audioId="diaNormalAudio"
+            :mp3="curQue.mp3_list[0].url"
+            :getCurTime="getCurTime"
+            :mp3Source="curQue.mp3_list[0].source"
+            :width="colLength == 2 ? 200 : isPhone ? 200 : 790"
+            :ed="ed"
+            type="audioLine"
+            ref="audioLine"
+            @emptyEd="emptyEd"
+          />
+        </template>
+      </div>
+      <div class="aduioLine-right">
+        <span
+          :class="['pinyin-16', config.isShowPY ? '' : 'disabled']"
+          @click="changePinyin"
+          v-if="config.isHasPY"
+        ></span>
+        <span :class="['EN-16', config.isShowEN ? '' : 'disabled']" @click="changeEN" v-if="config.isHasEN"></span>
+      </div>
+    </div>
     <template v-if="isNoteShow">
       <div
         ref="notecard"
@@ -486,7 +542,7 @@ export default {
     'TaskModel',
     'colLength',
     'isPhone',
-    'multilingualTextList',
+    'multilingual',
   ],
   components: {
     AudioLine,

+ 57 - 5
src/views/book/courseware/preview/components/dialogue_article/PhraseModelChs.vue

@@ -4,7 +4,10 @@
     <div
       class="aduioLine-box aduioLine-practice-npc"
       v-if="
-        (curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) || config.isHasPY || config.isHasEN
+        ((curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) ||
+          config.isHasPY ||
+          config.isHasEN) &&
+        curQue.property.mp3_position === 'top'
       "
     >
       <div class="aduioLine-content">
@@ -278,6 +281,17 @@
                 >
                   {{ item.enwords }}
                 </div>
+                <div
+                  class="multilingual-para"
+                  :class="[item.isTitle ? 'multilingual-para-center' : '']"
+                  v-if="curQue.property.multilingual_position === 'para'"
+                >
+                  {{
+                    curQue.detail[index].multilingualTextList[multilingual]
+                      ? curQue.detail[index].multilingualTextList[multilingual].join(' ')
+                      : ''
+                  }}
+                </div>
               </div>
               <img :src="articleImg[index + 1]" v-if="articleImg[index + 1]" />
             </div>
@@ -293,14 +307,52 @@
           <div :class="['empty-left', isHasRemark ? 'hasRemark' : '']"></div>
           <div class="empty-right"></div>
         </div>
-        <div class="multilingual" v-for="(items, indexs) in multilingualTextList" :key="indexs">
-          {{ items }}
-        </div>
+        <template v-for="(items, indexs) in curQue.detail">
+          <div
+            class="multilingual"
+            :key="indexs"
+            v-if="curQue.property.multilingual_position === 'all' && items.multilingualTextList[multilingual]"
+          >
+            <div class="multilingual-para" :class="[items.isTitle ? 'multilingual-para-center' : '']">
+              {{ items.multilingualTextList[multilingual] ? items.multilingualTextList[multilingual].join(' ') : '' }}
+            </div>
+          </div>
+        </template>
         <div class="dia-article-record" v-if="1 == 2">
           <Soundrecord @handleWav="handleWav" type="promax" class="luyin-box" />
         </div>
       </div>
     </template>
+    <div
+      class="aduioLine-box aduioLine-practice-npc aduioLine-box-bottom"
+      v-if="
+        ((curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) ||
+          config.isHasPY ||
+          config.isHasEN) &&
+        curQue.property.mp3_position === 'bottom'
+      "
+    >
+      <div class="aduioLine-content">
+        <template v-if="curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url">
+          <AudioLine
+            audioId="diaPhraAudio"
+            :mp3="curQue.mp3_list[0].url"
+            :getCurTime="getCurTime"
+            :mp3Source="curQue.mp3_list[0].source"
+            :width="colLength == 2 ? 200 : isPhone ? 200 : 790"
+            ref="audioLine"
+          />
+        </template>
+      </div>
+      <div class="aduioLine-right">
+        <span
+          :class="['pinyin-16', config.isShowPY ? '' : 'disabled']"
+          @click="changePinyin"
+          v-if="config.isHasPY"
+        ></span>
+        <span :class="['EN-16', config.isShowEN ? '' : 'disabled']" @click="changeEN" v-if="config.isHasEN"></span>
+      </div>
+    </div>
     <template v-if="isShow">
       <div
         ref="dialogueWordcard"
@@ -368,7 +420,7 @@ export default {
     'colLength',
     'NpcNewWordMp3',
     'isPhone',
-    'multilingualTextList',
+    'multilingual',
   ],
   components: {
     AudioLine,

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

@@ -5,7 +5,10 @@
     <div
       class="aduioLine-box aduioLine-practice-npc"
       v-if="
-        (curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) || config.isHasPY || config.isHasEN
+        ((curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) ||
+          config.isHasPY ||
+          config.isHasEN) &&
+        curQue.property.mp3_position === 'top'
       "
     >
       <div class="aduioLine-content">
@@ -390,6 +393,17 @@
                 >
                   {{ item.enwords }}
                 </div>
+                <div
+                  class="multilingual-para"
+                  :class="[item.isTitle ? 'multilingual-para-center' : '']"
+                  v-if="curQue.property.multilingual_position === 'para'"
+                >
+                  {{
+                    multilingualTextList[multilingual] && multilingualTextList[multilingual][index]
+                      ? multilingualTextList[multilingual][index]
+                      : ''
+                  }}
+                </div>
               </div>
             </div>
           </div>
@@ -430,11 +444,59 @@
             <span class="full-screen-icon" @click="fullScreen"> </span>
           </div>
         </div>
-        <div class="multilingual" v-for="(items, indexs) in multilingualTextList" :key="indexs">
+        <!-- <div class="multilingual" v-for="(items, indexs) in multilingualTextList" :key="indexs">
           {{ items }}
+        </div> -->
+      </div>
+    </template>
+    <template v-for="(items, indexs) in curQue.detail">
+      <div
+        class="multilingual"
+        :key="indexs"
+        v-if="curQue.property.multilingual_position === 'all' && items.multilingualTextList[multilingual]"
+      >
+        <div class="multilingual-para" :class="[items.isTitle ? 'multilingual-para-center' : '']">
+          {{ items.multilingualTextList[multilingual] ? items.multilingualTextList[multilingual].join(' ') : '' }}
         </div>
       </div>
     </template>
+    <div
+      class="aduioLine-box aduioLine-practice-npc aduioLine-box-bottom"
+      v-if="
+        ((curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) ||
+          config.isHasPY ||
+          config.isHasEN) &&
+        curQue.property.mp3_position === 'bottom'
+      "
+    >
+      <div class="aduioLine-content">
+        <template v-if="curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url">
+          <AudioLine
+            audioId="diaPraAudio"
+            :mp3="curQue.mp3_list[0].url"
+            :getCurTime="getCurTime"
+            ref="audioLine"
+            :stopAudio="stopAudio"
+            :width="colLength == 2 ? 175 : isPhone ? 200 : 750"
+            :isRepeat="isRepeat"
+            :mp3Source="curQue.mp3_list[0].source"
+            :ed="ed"
+            type="audioLine"
+            @handleChangeStopAudio="handleChangeStopAudio"
+            @emptyEd="emptyEd"
+          />
+        </template>
+      </div>
+      <div class="aduioLine-right">
+        <span :class="['Repeat-16', isRepeat ? '' : 'disabled']" @click="changeRepeat"></span>
+        <span
+          :class="['pinyin-16', config.isShowPY ? '' : 'disabled']"
+          @click="changePinyin"
+          v-if="config.isHasPY"
+        ></span>
+        <span :class="['EN-16', config.isShowEN ? '' : 'disabled']" @click="changeEN" v-if="config.isHasEN"></span>
+      </div>
+    </div>
     <div class="voice-full-screen" :id="'screen-' + mathNum">
       <Voicefullscreen
         v-if="isFull && resObj"
@@ -481,7 +543,7 @@ export default {
     'colLength',
     'NpcNewWordMp3',
     'isPhone',
-    'multilingualTextList',
+    'multilingual',
   ],
   components: {
     AudioLine,
@@ -535,6 +597,7 @@ export default {
       highWordsArr: [],
       highIndex: 0,
       newWordList: [],
+      multilingualTextList: {},
     };
   },
   computed: {
@@ -669,7 +732,10 @@ export default {
       }
     },
     handleData() {
-      console.log(this.curQue);
+      this.curQue.multilingual.forEach((item) => {
+        let trans_arr = item.translation.split('\n');
+        this.$set(this.multilingualTextList, item.type, trans_arr);
+      });
       let resArr = [],
         sentArrTotal = [];
       let curQue = JSON.parse(JSON.stringify(this.curQue));

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

@@ -4,7 +4,10 @@
     <div
       class="aduioLine-box aduioLine-practice-npc"
       v-if="
-        (curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) || config.isHasPY || config.isHasEN
+        ((curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) ||
+          config.isHasPY ||
+          config.isHasEN) &&
+        curQue.property.mp3_position === 'top'
       "
     >
       <div class="aduioLine-content">
@@ -260,6 +263,17 @@
                 >
                   {{ item.enwords }}
                 </div>
+                <div
+                  class="multilingual-para"
+                  :class="[item.isTitle ? 'multilingual-para-center' : '']"
+                  v-if="curQue.property.multilingual_position === 'para'"
+                >
+                  {{
+                    curQue.detail[index].multilingualTextList[multilingual]
+                      ? curQue.detail[index].multilingualTextList[multilingual].join(' ')
+                      : ''
+                  }}
+                </div>
               </div>
               <img :src="articleImg[index + 1]" v-if="articleImg[index + 1]" />
             </div>
@@ -269,9 +283,17 @@
           <div :class="['empty-left', isHasRemark ? 'hasRemark' : '']"></div>
           <div class="empty-right"></div>
         </div>
-        <div class="multilingual" v-for="(items, indexs) in multilingualTextList" :key="indexs">
-          {{ items }}
-        </div>
+        <template v-for="(items, indexs) in curQue.detail">
+          <div
+            class="multilingual"
+            :key="indexs"
+            v-if="curQue.property.multilingual_position === 'all' && items.multilingualTextList[multilingual]"
+          >
+            <div class="multilingual-para" :class="[items.isTitle ? 'multilingual-para-center' : '']">
+              {{ items.multilingualTextList[multilingual] ? items.multilingualTextList[multilingual].join(' ') : '' }}
+            </div>
+          </div>
+        </template>
         <div class="dia-article-record" v-if="curQue.Bookanswer">
           <Soundrecord
             @handleWav="handleWav"
@@ -283,6 +305,36 @@
         </div>
       </div>
     </template>
+    <div
+      class="aduioLine-box aduioLine-practice-npc aduioLine-box-bottom"
+      v-if="
+        ((curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url) ||
+          config.isHasPY ||
+          config.isHasEN) &&
+        curQue.property.mp3_position === 'bottom'
+      "
+    >
+      <div class="aduioLine-content">
+        <template v-if="curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].url">
+          <AudioLine
+            audioId="diaPhraAudio"
+            :mp3="curQue.mp3_list[0].url"
+            :getCurTime="getCurTime"
+            :mp3Source="curQue.mp3_list[0].source"
+            :width="colLength == 2 ? 200 : isPhone ? 200 : 790"
+            ref="audioLine"
+          />
+        </template>
+      </div>
+      <div class="aduioLine-right">
+        <span
+          :class="['pinyin-16', config.isShowPY ? '' : 'disabled']"
+          @click="changePinyin"
+          v-if="config.isHasPY"
+        ></span>
+        <span :class="['EN-16', config.isShowEN ? '' : 'disabled']" @click="changeEN" v-if="config.isHasEN"></span>
+      </div>
+    </div>
     <template v-if="isShow">
       <div
         ref="wordcard"
@@ -345,7 +397,7 @@ export default {
     'TaskModel',
     'colLength',
     'isPhone',
-    'multilingualTextList',
+    'multilingual',
   ],
   components: {
     AudioLine,

+ 28 - 7
src/views/book/courseware/preview/components/dialogue_article/index.vue

@@ -74,7 +74,7 @@
             @changeConfig="changeConfig"
             :NNPEAnnotationList="NNPEAnnotationList"
             :colLength="colLength"
-            :multilingualTextList="showLang && multilingualTextList[getLang()] ? multilingualTextList[getLang()] : []"
+            :multilingual="showLang && getLang() ? getLang() : ''"
           />
           <PhraseModel
             :curQue="data"
@@ -91,7 +91,7 @@
             :NNPEAnnotationList="NNPEAnnotationList"
             :colLength="colLength"
             :NpcNewWordMp3="NpcNewWordMp3"
-            :multilingualTextList="showLang && multilingualTextList[getLang()] ? multilingualTextList[getLang()] : []"
+            :multilingual="showLang && getLang() ? getLang() : ''"
           />
           <Practice
             :curQue="data"
@@ -107,7 +107,7 @@
             :colLength="colLength"
             :NpcNewWordMp3="NpcNewWordMp3"
             :isFull="isFull"
-            :multilingualTextList="showLang && multilingualTextList[getLang()] ? multilingualTextList[getLang()] : []"
+            :multilingual="showLang && getLang() ? getLang() : ''"
           />
           <WordModel
             :curQue="data"
@@ -123,7 +123,7 @@
             @changeConfig="changeConfig"
             :TaskModel="isJudgingRightWrong ? 'ANSWER' : ''"
             :colLength="colLength"
-            :multilingualTextList="showLang && multilingualTextList[getLang()] ? multilingualTextList[getLang()] : []"
+            :multilingual="showLang && getLang() ? getLang() : ''"
           />
         </div>
         <div class="voice-full-screen" :id="'screen-' + mathNum">
@@ -209,7 +209,7 @@ export default {
               this.config.isHasEN = true;
             }
             let pinyin = this.handleObj(this.data.detail[i].wordsList);
-            if (pinyin) {
+            if (pinyin && this.data.property.is_enable_pinyin) {
               this.config.isShowPY = true;
               this.config.isHasPY = true;
             }
@@ -389,7 +389,16 @@ export default {
       if (this.showLang) {
         this.data.multilingual.forEach((item) => {
           let trans_arr = item.translation.split('\n');
-          this.$set(this.multilingualTextList, item.type, trans_arr);
+          this.data.detail.forEach((items) => {
+            let items_trans_arr = [];
+            if (!items.hasOwnProperty('multilingualTextList')) {
+              this.$set(items, 'multilingualTextList', {});
+            }
+            if (items.para) {
+              items_trans_arr = trans_arr.splice(0, items.sentences.length);
+            }
+            this.$set(items.multilingualTextList, item.type, items_trans_arr);
+          });
         });
       }
       let userAnswer = JSON.parse(JSON.stringify(this.userAnswer));
@@ -466,7 +475,9 @@ export default {
           resArr.push(objs);
         });
         timeArr.push(dItem.timeList);
-        dhaspinyinArr.push(dhaspinyin);
+        if (curQue.property.is_enable_pinyin) {
+          dhaspinyinArr.push(dhaspinyin);
+        }
       });
       if (wordTimeList && wordTimeList.length > 0) {
         this.mergeWordTime(sentArrTotal, wordTimeList);
@@ -657,6 +668,11 @@ export default {
       .aduioLine-box {
         width: 100%;
         border-bottom: 1px solid rgba(0, 0, 0, 10%);
+
+        &-bottom {
+          border-top: 1px solid rgba(0, 0, 0, 10%);
+          border-bottom: none;
+        }
       }
     }
   }
@@ -723,6 +739,11 @@ export default {
   .aduioLine-box {
     width: 100%;
     border-bottom: 1px solid rgba(0, 0, 0, 10%);
+
+    &-bottom {
+      border-top: 1px solid rgba(0, 0, 0, 10%);
+      border-bottom: none;
+    }
   }
 }
 </style>