|
@@ -1,9 +1,14 @@
|
|
|
<!-- -->
|
|
|
<template>
|
|
|
<div class="NNPE-ArticleView" v-if="curQue">
|
|
|
- <div class="aduioLine-box">
|
|
|
+ <div
|
|
|
+ class="aduioLine-box"
|
|
|
+ v-if="
|
|
|
+ curQue.mp3_list && curQue.mp3_list.length > 0 && curQue.mp3_list[0].id
|
|
|
+ "
|
|
|
+ >
|
|
|
<AudioLine
|
|
|
- :mp3="curQue.mp3_list[0].url"
|
|
|
+ :mp3="curQue.mp3_list[0].id"
|
|
|
:getCurTime="getCurTime"
|
|
|
ref="audioLine"
|
|
|
/>
|
|
@@ -17,13 +22,19 @@
|
|
|
>
|
|
|
<div class="wordsList-box">
|
|
|
<img :src="articleImg[index]" v-if="articleImg[0] && index == 0" />
|
|
|
- <div>
|
|
|
+ <div :class="[item.isTitle ? 'NNPE-title' : '']">
|
|
|
<div
|
|
|
class="NNPE-words"
|
|
|
v-for="(pItem, pIndex) in item.wordsList"
|
|
|
:key="'wordsList' + pIndex"
|
|
|
:class="[pItem.wordIndex == 0 ? 'textLeft' : 'textCenter']"
|
|
|
- @click="handleChangeTime(item.timeList[pItem.sentIndex].bg)"
|
|
|
+ @click="
|
|
|
+ handleChangeTime(
|
|
|
+ item.timeList &&
|
|
|
+ item.timeList[pItem.sentIndex] &&
|
|
|
+ item.timeList[pItem.sentIndex].bg
|
|
|
+ )
|
|
|
+ "
|
|
|
@mouseover="handleMouseover(pItem)"
|
|
|
@mouseleave="handleMouseleave"
|
|
|
>
|
|
@@ -38,13 +49,19 @@
|
|
|
>
|
|
|
<span class="NNPE-words-box">
|
|
|
<span
|
|
|
- class="NNPE-pinyin"
|
|
|
- :class="[pItem.className ? pItem.className : '']"
|
|
|
+ v-if="curQue.pyPosition == 'top'"
|
|
|
+ :class="[
|
|
|
+ 'NNPE-pinyin',
|
|
|
+ pItem.className ? pItem.className : '',
|
|
|
+ noFont.indexOf(pItem.pinyin) > -1 ? 'noFont' : '',
|
|
|
+ ]"
|
|
|
>{{ pItem.pinyin }}</span
|
|
|
>
|
|
|
<span
|
|
|
class="NNPE-chs"
|
|
|
:class="[
|
|
|
+ item.timeList &&
|
|
|
+ item.timeList[pItem.sentIndex] &&
|
|
|
curTime >= item.timeList[pItem.sentIndex].bg &&
|
|
|
curTime <= item.timeList[pItem.sentIndex].ed
|
|
|
? 'active'
|
|
@@ -53,6 +70,8 @@
|
|
|
pItem.sentIndex == sentIndex
|
|
|
? 'overActive'
|
|
|
: '',
|
|
|
+ item.timeList &&
|
|
|
+ item.timeList[pItem.sentIndex] &&
|
|
|
curTime >=
|
|
|
item.timeList[pItem.sentIndex].wordsResultList[
|
|
|
pItem.wordIndex
|
|
@@ -63,15 +82,35 @@
|
|
|
]"
|
|
|
>{{ pItem.chs }}</span
|
|
|
>
|
|
|
+ <span
|
|
|
+ v-if="curQue.pyPosition == 'bottom'"
|
|
|
+ :class="[
|
|
|
+ 'NNPE-pinyin',
|
|
|
+ pItem.className ? pItem.className : '',
|
|
|
+ noFont.indexOf(pItem.pinyin) > -1 ? 'noFont' : '',
|
|
|
+ ]"
|
|
|
+ >{{ pItem.pinyin }}</span
|
|
|
+ >
|
|
|
</span>
|
|
|
<span class="NNPE-words-box">
|
|
|
- <span class="NNPE-pinyin" style="text-align: left">{{
|
|
|
- item.wordsList[pIndex + 1].pinyin
|
|
|
- }}</span>
|
|
|
+ <span
|
|
|
+ v-if="curQue.pyPosition == 'top'"
|
|
|
+ :class="[
|
|
|
+ 'NNPE-pinyin',
|
|
|
+ noFont.indexOf(item.wordsList[pIndex + 1].pinyin) >
|
|
|
+ -1
|
|
|
+ ? 'noFont'
|
|
|
+ : '',
|
|
|
+ ]"
|
|
|
+ style="text-align: left"
|
|
|
+ >{{ item.wordsList[pIndex + 1].pinyin }}</span
|
|
|
+ >
|
|
|
<span
|
|
|
class="NNPE-chs"
|
|
|
style="text-align: left"
|
|
|
:class="[
|
|
|
+ item.timeList &&
|
|
|
+ item.timeList[pItem.sentIndex] &&
|
|
|
curTime >= item.timeList[pItem.sentIndex].bg &&
|
|
|
curTime <= item.timeList[pItem.sentIndex].ed
|
|
|
? 'active'
|
|
@@ -80,30 +119,47 @@
|
|
|
pItem.sentIndex == sentIndex
|
|
|
? 'overActive'
|
|
|
: '',
|
|
|
- curTime >=
|
|
|
- item.timeList[pItem.sentIndex].wordsResultList[
|
|
|
- pItem.wordIndex
|
|
|
- ].wordBg &&
|
|
|
+ curTime >= item.timeList &&
|
|
|
+ item.timeList[pItem.sentIndex] &&
|
|
|
+ item.timeList[pItem.sentIndex].wordsResultList[
|
|
|
+ pItem.wordIndex
|
|
|
+ ].wordBg &&
|
|
|
curTime <= item.timeList[pItem.sentIndex].ed
|
|
|
? 'wordActive'
|
|
|
: '',
|
|
|
]"
|
|
|
>{{ item.wordsList[pIndex + 1].chs }}</span
|
|
|
>
|
|
|
+ <span
|
|
|
+ v-if="curQue.pyPosition == 'bottom'"
|
|
|
+ :class="[
|
|
|
+ 'NNPE-pinyin',
|
|
|
+ noFont.indexOf(item.wordsList[pIndex + 1].pinyin) >
|
|
|
+ -1
|
|
|
+ ? 'noFont'
|
|
|
+ : '',
|
|
|
+ ]"
|
|
|
+ style="text-align: left"
|
|
|
+ >{{ item.wordsList[pIndex + 1].pinyin }}</span
|
|
|
+ >
|
|
|
</span>
|
|
|
</template>
|
|
|
<template v-else>
|
|
|
<span
|
|
|
+ v-if="curQue.pyPosition == 'top'"
|
|
|
class="NNPE-pinyin"
|
|
|
:class="[
|
|
|
pItem.padding ? 'padding' : '',
|
|
|
pItem.className ? pItem.className : '',
|
|
|
+ noFont.indexOf(pItem.pinyin) > -1 ? 'noFont' : '',
|
|
|
]"
|
|
|
>{{ pItem.pinyin }}</span
|
|
|
>
|
|
|
<span
|
|
|
class="NNPE-chs"
|
|
|
:class="[
|
|
|
+ item.timeList &&
|
|
|
+ item.timeList[pItem.sentIndex] &&
|
|
|
curTime >= item.timeList[pItem.sentIndex].bg &&
|
|
|
curTime <= item.timeList[pItem.sentIndex].ed
|
|
|
? 'active'
|
|
@@ -113,16 +169,27 @@
|
|
|
pItem.sentIndex == sentIndex
|
|
|
? 'overActive'
|
|
|
: '',
|
|
|
- curTime >=
|
|
|
- item.timeList[pItem.sentIndex].wordsResultList[
|
|
|
- pItem.wordIndex
|
|
|
- ].wordBg &&
|
|
|
+ curTime >= item.timeList &&
|
|
|
+ item.timeList[pItem.sentIndex] &&
|
|
|
+ item.timeList[pItem.sentIndex].wordsResultList[
|
|
|
+ pItem.wordIndex
|
|
|
+ ].wordBg &&
|
|
|
curTime <= item.timeList[pItem.sentIndex].ed
|
|
|
? 'wordActive'
|
|
|
: '',
|
|
|
]"
|
|
|
>{{ pItem.chs }}</span
|
|
|
>
|
|
|
+ <span
|
|
|
+ v-if="curQue.pyPosition == 'bottom'"
|
|
|
+ class="NNPE-pinyin"
|
|
|
+ :class="[
|
|
|
+ pItem.padding ? 'padding' : '',
|
|
|
+ pItem.className ? pItem.className : '',
|
|
|
+ noFont.indexOf(pItem.pinyin) > -1 ? 'noFont' : '',
|
|
|
+ ]"
|
|
|
+ >{{ pItem.pinyin }}</span
|
|
|
+ >
|
|
|
</template>
|
|
|
</template>
|
|
|
</template>
|
|
@@ -149,7 +216,7 @@ import { timeStrToSen } from "@/utils/index";
|
|
|
import AudioLine from "../AudioLine.vue";
|
|
|
export default {
|
|
|
name: "NormalModelChs",
|
|
|
- props: ["curQue"],
|
|
|
+ props: ["curQue","noFont"],
|
|
|
components: {
|
|
|
AudioLine,
|
|
|
},
|
|
@@ -160,6 +227,7 @@ export default {
|
|
|
chsFhList: [",", "。", "“", ":", "》", "《", "?", "!", ";"],
|
|
|
enFhList: [",", ".", ";", "?", "!", ":", ">", "<"],
|
|
|
newWords: ["鱼", "辩礼义"],
|
|
|
+
|
|
|
oldHz: "",
|
|
|
hz: "",
|
|
|
top: 0,
|
|
@@ -198,7 +266,7 @@ export default {
|
|
|
dItem.wordsList.forEach((sItem, sIndex) => {
|
|
|
sItem.forEach((wItem, wIndex) => {
|
|
|
//this.judgePad(sItem, wItem, wIndex);
|
|
|
- this.mergeWordSymbol(sItem, wItem, wIndex);
|
|
|
+ this.mergeWordSymbol(wItem);
|
|
|
let obj = {
|
|
|
paraIndex: dIndex, //段落索引
|
|
|
sentIndex: sIndex, //在段落中句子索引
|
|
@@ -222,6 +290,7 @@ export default {
|
|
|
let paraObj = {
|
|
|
wordsList: paraArr,
|
|
|
timeList: timeList,
|
|
|
+ isTitle: dItem.isTitle,
|
|
|
};
|
|
|
resArr.push(paraObj);
|
|
|
});
|
|
@@ -237,14 +306,11 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
//词和标点合一起
|
|
|
- mergeWordSymbol(sItem, wItem, curIndex) {
|
|
|
- let leg = sItem.length;
|
|
|
- if (curIndex < leg - 1) {
|
|
|
- if (this.chsFhList.indexOf(wItem.chs) > -1) {
|
|
|
- wItem.isShow = false;
|
|
|
- } else {
|
|
|
- wItem.isShow = true;
|
|
|
- }
|
|
|
+ mergeWordSymbol(wItem) {
|
|
|
+ if (this.chsFhList.indexOf(wItem.chs) > -1) {
|
|
|
+ wItem.isShow = false;
|
|
|
+ } else {
|
|
|
+ wItem.isShow = true;
|
|
|
}
|
|
|
},
|
|
|
//判断是否有padding
|
|
@@ -277,8 +343,10 @@ export default {
|
|
|
},
|
|
|
//点击播放某个句子
|
|
|
handleChangeTime(time) {
|
|
|
- this.curTime = time;
|
|
|
- this.$refs.audioLine.onTimeupdateTime(time / 1000);
|
|
|
+ if (time) {
|
|
|
+ this.curTime = time;
|
|
|
+ this.$refs.audioLine.onTimeupdateTime(time / 1000);
|
|
|
+ }
|
|
|
},
|
|
|
//经过每个词,高亮句子
|
|
|
handleMouseover(pItem) {
|
|
@@ -334,6 +402,9 @@ export default {
|
|
|
line-height: 22px;
|
|
|
color: #000000;
|
|
|
height: 21px;
|
|
|
+ &.noFont {
|
|
|
+ font-family: initial;
|
|
|
+ }
|
|
|
&.textLeft {
|
|
|
text-align: left;
|
|
|
}
|
|
@@ -398,6 +469,9 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
&.NNPE-detail-title {
|
|
|
+ .NNPE-title {
|
|
|
+ margin: 0 auto;
|
|
|
+ }
|
|
|
.wordsList-box {
|
|
|
> div {
|
|
|
display: flex;
|
|
@@ -426,8 +500,9 @@ export default {
|
|
|
overflow: hidden;
|
|
|
}
|
|
|
> img {
|
|
|
- width: 100%;
|
|
|
+ max-width: 100%;
|
|
|
display: block;
|
|
|
+ margin: 8px auto;
|
|
|
}
|
|
|
}
|
|
|
}
|