|  | @@ -1,15 +1,119 @@
 | 
	
		
			
				|  |  |  <!--  -->
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  | -  <div class="Big-Book-prev-Textdes InputHasRecord" v-if="curQue">
 | 
	
		
			
				|  |  | -      <div v-for="(items, indexs) in curQue.option" :key="indexs">
 | 
	
		
			
				|  |  | -          <p v-if="items.con">{{items.con}}</p>
 | 
	
		
			
				|  |  | -          <div class="inputInner">
 | 
	
		
			
				|  |  | -              <el-input :class="['textarea',items.record?'':'textareaNoRecord']" type="textarea" v-model="textareaCon" placeholder="输入"></el-input>
 | 
	
		
			
				|  |  | -              <div v-if="items.record" class="luyin-inner">
 | 
	
		
			
				|  |  | -                  <Soundrecord @handleWav="handleWav" type="promax" class="luyin-box"/>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -          </div>
 | 
	
		
			
				|  |  | -      </div>
 | 
	
		
			
				|  |  | +  <div class="Big-Book-prev-Textdes InputHasRecord NPC-zhedie" v-if="curQue">
 | 
	
		
			
				|  |  | +      <template v-if="curQue.guide">
 | 
	
		
			
				|  |  | +          <el-collapse v-model="wordShow">
 | 
	
		
			
				|  |  | +                <el-collapse-item name="1">
 | 
	
		
			
				|  |  | +                    <template #title>
 | 
	
		
			
				|  |  | +                    <div class="topTitle">
 | 
	
		
			
				|  |  | +                        <div class="NPC-top-left">
 | 
	
		
			
				|  |  | +                        <span class="NPC-topTitle-text">{{ curQue.guide }}</span>
 | 
	
		
			
				|  |  | +                        </div>
 | 
	
		
			
				|  |  | +                        <div class="NPC-top-right">
 | 
	
		
			
				|  |  | +                        <span class="NPC-top-right-text">{{
 | 
	
		
			
				|  |  | +                            wordShow.indexOf("1") != -1 ? "收起" : "展开"
 | 
	
		
			
				|  |  | +                        }}</span>
 | 
	
		
			
				|  |  | +                        <img
 | 
	
		
			
				|  |  | +                            v-if="wordShow.indexOf('1') != -1"
 | 
	
		
			
				|  |  | +                            src="../../../assets/NPC/down.png"
 | 
	
		
			
				|  |  | +                            alt=""
 | 
	
		
			
				|  |  | +                        />
 | 
	
		
			
				|  |  | +                        <img
 | 
	
		
			
				|  |  | +                            v-else
 | 
	
		
			
				|  |  | +                            class="rotate"
 | 
	
		
			
				|  |  | +                            src="../../../assets/NPC/down.png"
 | 
	
		
			
				|  |  | +                            alt=""
 | 
	
		
			
				|  |  | +                        />
 | 
	
		
			
				|  |  | +                        </div>
 | 
	
		
			
				|  |  | +                    </div>
 | 
	
		
			
				|  |  | +                    </template>
 | 
	
		
			
				|  |  | +                    <div
 | 
	
		
			
				|  |  | +                    class="NPC-word-list"
 | 
	
		
			
				|  |  | +                    v-if="curQue.option && curQue.option.length > 0"
 | 
	
		
			
				|  |  | +                    >
 | 
	
		
			
				|  |  | +                        <h2 v-if="curQue.title">{{curQue.title}}</h2>
 | 
	
		
			
				|  |  | +                        <div v-for="(items, indexs) in curQue.option" :key="indexs">
 | 
	
		
			
				|  |  | +                            <div class="item-content">
 | 
	
		
			
				|  |  | +                                    <b class="xuhao" v-if="items.number">{{items.number}}</b>
 | 
	
		
			
				|  |  | +                                    <template v-if="items.detail.wordsList.length==0">
 | 
	
		
			
				|  |  | +                                        <p :class="['content-con',items.font]" v-if="items.detail.sentence">{{items.detail.sentence}}</p>
 | 
	
		
			
				|  |  | +                                    </template>
 | 
	
		
			
				|  |  | +                                    <template v-else>
 | 
	
		
			
				|  |  | +                                        <div class="con-box">
 | 
	
		
			
				|  |  | +                                            <div :class="['con-item',indexCon===0?'con-item-0':'']" v-for="(itemCon,indexCon) in items.detail.resArr" :key="indexCon" v-show="itemCon.isShow">
 | 
	
		
			
				|  |  | +                                                <template v-if="items.detail.wordsList[indexCon + 1] && items.detail.wordsList[indexCon + 1].chs && chsFhList.indexOf(items.detail.wordsList[indexCon + 1].chs) > -1">
 | 
	
		
			
				|  |  | +                                                    <div class="synthesis-box">
 | 
	
		
			
				|  |  | +                                                        <div>
 | 
	
		
			
				|  |  | +                                                            <span class="pinyin">{{itemCon.pinyin}}</span>
 | 
	
		
			
				|  |  | +                                                            <span class="hanzi content-con">{{itemCon.chs}}</span>
 | 
	
		
			
				|  |  | +                                                        </div>
 | 
	
		
			
				|  |  | +                                                        <div style="text-align: left">
 | 
	
		
			
				|  |  | +                                                            <span class="pinyin">{{items.detail.wordsList[indexCon + 1].pinyin}}</span>
 | 
	
		
			
				|  |  | +                                                            <span class="hanzi content-con">{{items.detail.wordsList[indexCon + 1].chs}}</span>
 | 
	
		
			
				|  |  | +                                                        </div>
 | 
	
		
			
				|  |  | +                                                    </div>
 | 
	
		
			
				|  |  | +                                                    
 | 
	
		
			
				|  |  | +                                                </template>
 | 
	
		
			
				|  |  | +                                                <template v-else>
 | 
	
		
			
				|  |  | +                                                    <span class="pinyin">{{itemCon.pinyin}}</span>
 | 
	
		
			
				|  |  | +                                                    <span class="hanzi content-con">{{itemCon.chs}}</span>
 | 
	
		
			
				|  |  | +                                                </template>
 | 
	
		
			
				|  |  | +                                            </div>
 | 
	
		
			
				|  |  | +                                            </div>
 | 
	
		
			
				|  |  | +                                    </template>
 | 
	
		
			
				|  |  | +                                </div>
 | 
	
		
			
				|  |  | +                            <div class="inputInner">
 | 
	
		
			
				|  |  | +                                <el-input :class="['textarea',items.record?'':'textareaNoRecord']" type="textarea" v-model="textareaCon" placeholder="输入"></el-input>
 | 
	
		
			
				|  |  | +                                <div v-if="items.record" class="luyin-inner">
 | 
	
		
			
				|  |  | +                                    <Soundrecord @handleWav="handleWav" type="promax" class="luyin-box"/>
 | 
	
		
			
				|  |  | +                                </div>
 | 
	
		
			
				|  |  | +                            </div>
 | 
	
		
			
				|  |  | +                        </div>
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +                </el-collapse-item>
 | 
	
		
			
				|  |  | +            </el-collapse>
 | 
	
		
			
				|  |  | +      </template>
 | 
	
		
			
				|  |  | +      <template v-else>
 | 
	
		
			
				|  |  | +            <h2 v-if="curQue.title" style="margin-top:0">{{curQue.title}}</h2>
 | 
	
		
			
				|  |  | +            <div v-for="(items, indexs) in curQue.option" :key="indexs">
 | 
	
		
			
				|  |  | +                <div class="item-content">
 | 
	
		
			
				|  |  | +                        <b class="xuhao" v-if="items.number">{{items.number}}</b>
 | 
	
		
			
				|  |  | +                        <template v-if="items.detail.wordsList.length==0">
 | 
	
		
			
				|  |  | +                            <p :class="['content-con',items.font]" v-if="items.detail.sentence">{{items.detail.sentence}}</p>
 | 
	
		
			
				|  |  | +                        </template>
 | 
	
		
			
				|  |  | +                        <template v-else>
 | 
	
		
			
				|  |  | +                            <div class="con-box">
 | 
	
		
			
				|  |  | +                                <div :class="['con-item',indexCon===0?'con-item-0':'']" v-for="(itemCon,indexCon) in items.detail.resArr" :key="indexCon" v-show="itemCon.isShow">
 | 
	
		
			
				|  |  | +                                    <template v-if="items.detail.wordsList[indexCon + 1] && items.detail.wordsList[indexCon + 1].chs && chsFhList.indexOf(items.detail.wordsList[indexCon + 1].chs) > -1">
 | 
	
		
			
				|  |  | +                                        <div class="synthesis-box">
 | 
	
		
			
				|  |  | +                                            <div>
 | 
	
		
			
				|  |  | +                                                <span class="pinyin">{{itemCon.pinyin}}</span>
 | 
	
		
			
				|  |  | +                                                <span class="hanzi content-con">{{itemCon.chs}}</span>
 | 
	
		
			
				|  |  | +                                            </div>
 | 
	
		
			
				|  |  | +                                            <div style="text-align: left">
 | 
	
		
			
				|  |  | +                                                <span class="pinyin">{{items.detail.wordsList[indexCon + 1].pinyin}}</span>
 | 
	
		
			
				|  |  | +                                                <span class="hanzi content-con">{{items.detail.wordsList[indexCon + 1].chs}}</span>
 | 
	
		
			
				|  |  | +                                            </div>
 | 
	
		
			
				|  |  | +                                        </div>
 | 
	
		
			
				|  |  | +                                        
 | 
	
		
			
				|  |  | +                                    </template>
 | 
	
		
			
				|  |  | +                                    <template v-else>
 | 
	
		
			
				|  |  | +                                        <span class="pinyin">{{itemCon.pinyin}}</span>
 | 
	
		
			
				|  |  | +                                        <span class="hanzi content-con">{{itemCon.chs}}</span>
 | 
	
		
			
				|  |  | +                                    </template>
 | 
	
		
			
				|  |  | +                                </div>
 | 
	
		
			
				|  |  | +                                </div>
 | 
	
		
			
				|  |  | +                        </template>
 | 
	
		
			
				|  |  | +                    </div>
 | 
	
		
			
				|  |  | +                <div class="inputInner">
 | 
	
		
			
				|  |  | +                    <el-input :class="['textarea',items.record?'':'textareaNoRecord']" type="textarea" v-model="textareaCon" placeholder="输入"></el-input>
 | 
	
		
			
				|  |  | +                    <div v-if="items.record" class="luyin-inner">
 | 
	
		
			
				|  |  | +                        <Soundrecord @handleWav="handleWav" type="promax" class="luyin-box"/>
 | 
	
		
			
				|  |  | +                    </div>
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +      </template>
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -20,7 +124,9 @@ export default {
 | 
	
		
			
				|  |  |    props: ["curQue"],
 | 
	
		
			
				|  |  |    data() {
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  | +        wordShow: ["1"],
 | 
	
		
			
				|  |  |          textareaCon: '', // 输入框
 | 
	
		
			
				|  |  | +        chsFhList: [",", "。", "“", ":", "》", "《", "?", "!", ";"],
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    computed: {},
 | 
	
	
		
			
				|  | @@ -30,9 +136,39 @@ export default {
 | 
	
		
			
				|  |  |        handleWav(data) {
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | +    // 处理数据
 | 
	
		
			
				|  |  | +    handleData(){
 | 
	
		
			
				|  |  | +        let _this = this
 | 
	
		
			
				|  |  | +        let curQue = JSON.parse(JSON.stringify(this.curQue));
 | 
	
		
			
				|  |  | +        curQue.option.forEach((dItem, dIndex) => {
 | 
	
		
			
				|  |  | +            let paraArr = []
 | 
	
		
			
				|  |  | +            dItem.detail.wordsList.forEach((sItem, sIndex) => {
 | 
	
		
			
				|  |  | +                this.mergeWordSymbol(dItem.detail.wordsList, sItem, sIndex);
 | 
	
		
			
				|  |  | +                let obj = {
 | 
	
		
			
				|  |  | +                    pinyin: sItem.pinyin,
 | 
	
		
			
				|  |  | +                    chs: sItem.chs,
 | 
	
		
			
				|  |  | +                    isShow: sItem.isShow,
 | 
	
		
			
				|  |  | +                };
 | 
	
		
			
				|  |  | +                paraArr.push(obj);
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +            this.$set(_this.curQue.option[dIndex].detail,'resArr',paraArr)
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //词和标点合一起
 | 
	
		
			
				|  |  | +    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;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    //生命周期 - 创建完成(可以访问当前this实例)
 | 
	
		
			
				|  |  |    created() {
 | 
	
		
			
				|  |  | +      this.handleData()
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    //生命周期 - 挂载完成(可以访问DOM元素)
 | 
	
		
			
				|  |  |    mounted() {
 | 
	
	
		
			
				|  | @@ -50,6 +186,25 @@ export default {
 | 
	
		
			
				|  |  |  //@import url(); 引入公共css类
 | 
	
		
			
				|  |  |  .Big-Book-prev-Textdes{
 | 
	
		
			
				|  |  |      width: 100%;
 | 
	
		
			
				|  |  | +    h2{
 | 
	
		
			
				|  |  | +        font-weight: 700;
 | 
	
		
			
				|  |  | +        font-size: 16px;
 | 
	
		
			
				|  |  | +        line-height: 150%;
 | 
	
		
			
				|  |  | +        color: #000000;
 | 
	
		
			
				|  |  | +        margin: 16px 0 8px 0;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    b.xuhao{
 | 
	
		
			
				|  |  | +        background: #DE4444;
 | 
	
		
			
				|  |  | +        text-align: center;
 | 
	
		
			
				|  |  | +        width: 16px;
 | 
	
		
			
				|  |  | +        height: 16px;
 | 
	
		
			
				|  |  | +        color: #FFFFFF;
 | 
	
		
			
				|  |  | +        border-radius: 50%;
 | 
	
		
			
				|  |  | +        font-size: 12px;
 | 
	
		
			
				|  |  | +        font-family: 'robot';
 | 
	
		
			
				|  |  | +        line-height: 16px;
 | 
	
		
			
				|  |  | +        margin-right: 8px;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      .inputInner{
 | 
	
		
			
				|  |  |          border-radius: 8px;
 | 
	
		
			
				|  |  |          border: 1px solid rgba(0, 0, 0, 0.1);
 | 
	
	
		
			
				|  | @@ -60,11 +215,63 @@ export default {
 | 
	
		
			
				|  |  |              border-top: 1px solid rgba(0, 0, 0, 0.1);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    p{
 | 
	
		
			
				|  |  | +    >p.content-con{
 | 
	
		
			
				|  |  |          font-size: 16px;
 | 
	
		
			
				|  |  |          line-height: 150%;
 | 
	
		
			
				|  |  |          color: #000000;
 | 
	
		
			
				|  |  |          margin: 0 4px;
 | 
	
		
			
				|  |  | +        font-family: 'FZJCGFKTK';
 | 
	
		
			
				|  |  | +        &.py{
 | 
	
		
			
				|  |  | +            font-family: 'GB-PINYINOK-B';  
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        &.en{
 | 
	
		
			
				|  |  | +            font-family: 'robot';  
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    .item-content{
 | 
	
		
			
				|  |  | +        display: flex;
 | 
	
		
			
				|  |  | +        justify-content: flex-start;
 | 
	
		
			
				|  |  | +        align-items: center;
 | 
	
		
			
				|  |  | +        .content-con{
 | 
	
		
			
				|  |  | +            font-size: 20px;
 | 
	
		
			
				|  |  | +            line-height: 150%;
 | 
	
		
			
				|  |  | +            color: #000000;
 | 
	
		
			
				|  |  | +            font-family: 'FZJCGFKTK';
 | 
	
		
			
				|  |  | +            margin: 0;
 | 
	
		
			
				|  |  | +            &.pinyin{
 | 
	
		
			
				|  |  | +                font-family: 'GB-PINYINOK-B';  
 | 
	
		
			
				|  |  | +                font-size: 16px;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            &.en{
 | 
	
		
			
				|  |  | +                font-family: 'robot';  
 | 
	
		
			
				|  |  | +                font-size: 16px;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        .con-box{
 | 
	
		
			
				|  |  | +            display: flex;
 | 
	
		
			
				|  |  | +            flex-flow: wrap;
 | 
	
		
			
				|  |  | +            .con-item{
 | 
	
		
			
				|  |  | +                text-align: center;
 | 
	
		
			
				|  |  | +                padding: 0 3px;
 | 
	
		
			
				|  |  | +                &.con-item-0{
 | 
	
		
			
				|  |  | +                    text-align: left;
 | 
	
		
			
				|  |  | +                    padding-left: 0;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            span{
 | 
	
		
			
				|  |  | +                display: block;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            .pinyin{
 | 
	
		
			
				|  |  | +                font-family: 'GB-PINYINOK-B';
 | 
	
		
			
				|  |  | +                font-size: 16px;
 | 
	
		
			
				|  |  | +                line-height: 16px;
 | 
	
		
			
				|  |  | +                color: #000000;
 | 
	
		
			
				|  |  | +                height: 16px;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            .synthesis-box{
 | 
	
		
			
				|  |  | +                display: flex;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      .luyin-box{
 | 
	
		
			
				|  |  |          justify-content: start;
 | 
	
	
		
			
				|  | @@ -74,6 +281,68 @@ export default {
 | 
	
		
			
				|  |  |          justify-content: flex-start;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +.NPC-zhedie {
 | 
	
		
			
				|  |  | +  width: 780px;
 | 
	
		
			
				|  |  | +  margin-top: 16px;
 | 
	
		
			
				|  |  | +  .topTitle {
 | 
	
		
			
				|  |  | +    width: 100%;
 | 
	
		
			
				|  |  | +    display: flex;
 | 
	
		
			
				|  |  | +    justify-content: space-between;
 | 
	
		
			
				|  |  | +    padding-left: 24px;
 | 
	
		
			
				|  |  | +    padding-right: 16px;
 | 
	
		
			
				|  |  | +    .NPC-top-left {
 | 
	
		
			
				|  |  | +      display: flex;
 | 
	
		
			
				|  |  | +      justify-content: flex-start;
 | 
	
		
			
				|  |  | +      align-items: center;
 | 
	
		
			
				|  |  | +      .NPC-topTitle-text {
 | 
	
		
			
				|  |  | +        font-size: 16px;
 | 
	
		
			
				|  |  | +        color: #fff;
 | 
	
		
			
				|  |  | +        font-weight: bold;
 | 
	
		
			
				|  |  | +        margin-right: 8px;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    .NPC-top-right {
 | 
	
		
			
				|  |  | +      display: flex;
 | 
	
		
			
				|  |  | +      justify-content: flex-start;
 | 
	
		
			
				|  |  | +      align-items: center;
 | 
	
		
			
				|  |  | +      &-text {
 | 
	
		
			
				|  |  | +        font-weight: normal;
 | 
	
		
			
				|  |  | +        font-size: 14px;
 | 
	
		
			
				|  |  | +        line-height: 16px;
 | 
	
		
			
				|  |  | +        color: #ffffff;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    img {
 | 
	
		
			
				|  |  | +      width: 24px;
 | 
	
		
			
				|  |  | +      height: 24px;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    .rotate {
 | 
	
		
			
				|  |  | +      animation-name: firstrotate;
 | 
	
		
			
				|  |  | +      animation-direction: 2s;
 | 
	
		
			
				|  |  | +      animation-fill-mode: both;
 | 
	
		
			
				|  |  | +      animation-timing-function: linear;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  .NPC-word-list {
 | 
	
		
			
				|  |  | +    padding: 0px 24px;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +@keyframes firstrotate {
 | 
	
		
			
				|  |  | +  0% {
 | 
	
		
			
				|  |  | +    transform: rotateZ(0deg);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  100% {
 | 
	
		
			
				|  |  | +    transform: rotateZ(180deg);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +@keyframes huifuRotate {
 | 
	
		
			
				|  |  | +  0% {
 | 
	
		
			
				|  |  | +    transform: rotateZ(180deg);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  100% {
 | 
	
		
			
				|  |  | +    transform: rotateZ(0deg);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  </style>
 | 
	
		
			
				|  |  |  <style lang="scss">
 | 
	
		
			
				|  |  |  .InputHasRecord{
 |