|  | @@ -1,11 +1,18 @@
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  |    <div class="word-card" v-loading="loading">
 | 
	
		
			
				|  |  |      <div class="word-card-top">
 | 
	
		
			
				|  |  | -        <span class="progress">1 / 10</span>
 | 
	
		
			
				|  |  | +        <ul>
 | 
	
		
			
				|  |  | +            <li class="active">
 | 
	
		
			
				|  |  | +                <label>本文释义</label>
 | 
	
		
			
				|  |  | +                <span></span>
 | 
	
		
			
				|  |  | +            </li>
 | 
	
		
			
				|  |  | +        </ul>
 | 
	
		
			
				|  |  |          <div class="btn-box">
 | 
	
		
			
				|  |  | -            <svg-icon icon-class="arrow-left-line"></svg-icon>
 | 
	
		
			
				|  |  | -            <svg-icon icon-class="arrow-right-line"></svg-icon>
 | 
	
		
			
				|  |  | -            <svg-icon icon-class="like-line"></svg-icon>
 | 
	
		
			
				|  |  | +            <svg-icon icon-class="arrow-left-line" :class="[phraseActiveIndex===0?'not-allow':'']" v-if="wordList&&wordList.length>0" @click="changeIndex('-')"></svg-icon>
 | 
	
		
			
				|  |  | +            <span class="progress" v-if="wordList&&wordList.length>0">{{(phraseActiveIndex+1)+' / '+wordList.length}}</span>
 | 
	
		
			
				|  |  | +            <svg-icon icon-class="arrow-right-line" :class="[phraseActiveIndex===wordList.length-1?'not-allow':'']" v-if="wordList&&wordList.length>0" @click="changeIndex('+')"></svg-icon>
 | 
	
		
			
				|  |  | +            <svg-icon icon-class="like-line" className="icon-like" v-if="!data.collect" @click="handleCollect(data)"></svg-icon>
 | 
	
		
			
				|  |  | +            <svg-icon icon-class="like" className="icon-like active" v-else @click="handleCollect(data)"></svg-icon>
 | 
	
		
			
				|  |  |              <i class="el-icon-close" @click="closeWord"></i>
 | 
	
		
			
				|  |  |          </div>
 | 
	
		
			
				|  |  |      </div>
 | 
	
	
		
			
				|  | @@ -120,7 +127,7 @@ import { getLogin } from "@/api/ajax";
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |    //import引入的组件需要注入到对象中才能使用
 | 
	
		
			
				|  |  |    components: { },
 | 
	
		
			
				|  |  | -  props: ["data"],
 | 
	
		
			
				|  |  | +  props: ["dataObj","wordList","activeObjIndex","likePhrase"],
 | 
	
		
			
				|  |  |    data() {
 | 
	
		
			
				|  |  |      //这里存放数据
 | 
	
		
			
				|  |  |      return {
 | 
	
	
		
			
				|  | @@ -135,6 +142,8 @@ export default {
 | 
	
		
			
				|  |  |        voicePlaySrc: require("../../../assets/voice-play-gray.png"),
 | 
	
		
			
				|  |  |        sentKwicData: null,
 | 
	
		
			
				|  |  |        allList: [],
 | 
	
		
			
				|  |  | +      phraseActiveIndex: this.activeObjIndex, //JSON.parse(JSON.stringify(this.activeObjIndex))
 | 
	
		
			
				|  |  | +      data: JSON.parse(JSON.stringify(this.dataObj))
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    //计算属性 类似于data概念
 | 
	
	
		
			
				|  | @@ -211,6 +220,75 @@ export default {
 | 
	
		
			
				|  |  |          .catch(() => {
 | 
	
		
			
				|  |  |              this.loading = false
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    handleCollect(item){
 | 
	
		
			
				|  |  | +        if(item.collect){
 | 
	
		
			
				|  |  | +            let MethodName = "/ShopServer/Client/CollectManager/CancelCollect_Word";
 | 
	
		
			
				|  |  | +            let data = {
 | 
	
		
			
				|  |  | +                word: item.word,
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            getLogin(MethodName, data)
 | 
	
		
			
				|  |  | +            .then((res) => {
 | 
	
		
			
				|  |  | +                this.loading = false
 | 
	
		
			
				|  |  | +                if(res.status===1){
 | 
	
		
			
				|  |  | +                    item.collect = false
 | 
	
		
			
				|  |  | +                    this.$forceUpdate()
 | 
	
		
			
				|  |  | +                    this.$message({
 | 
	
		
			
				|  |  | +                        message: "取消收藏",
 | 
	
		
			
				|  |  | +                        type: "success",
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                    this.likePhrase.splice(this.likePhrase.indexOf(item.word),1)
 | 
	
		
			
				|  |  | +                    this.$emit('changeLike','likeWordList',this.likePhrase)
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +            .catch(() => {
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +            let MethodName = "/ShopServer/Client/CollectManager/AddCollect_Word";
 | 
	
		
			
				|  |  | +            let data = {
 | 
	
		
			
				|  |  | +                word: item.word,
 | 
	
		
			
				|  |  | +                pinyin: item.symbol,
 | 
	
		
			
				|  |  | +                explain: JSON.stringify(item.paraList),
 | 
	
		
			
				|  |  | +                is_new: "true",
 | 
	
		
			
				|  |  | +                audio_file_id: item.word_explain&&item.word_explain.ph_mp3_id?item.word_explain.ph_mp3_id:'',
 | 
	
		
			
				|  |  | +                audio_file_url: item.word_explain&&item.word_explain.ph_file_url?item.word_explain.ph_file_url:'',
 | 
	
		
			
				|  |  | +                article_id: this.$route.query.id,
 | 
	
		
			
				|  |  | +                word_id: item.id
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            getLogin(MethodName, data)
 | 
	
		
			
				|  |  | +            .then((res) => {
 | 
	
		
			
				|  |  | +                this.loading = false
 | 
	
		
			
				|  |  | +                if(res.status===1){
 | 
	
		
			
				|  |  | +                    item.collect = true
 | 
	
		
			
				|  |  | +                    this.$forceUpdate()
 | 
	
		
			
				|  |  | +                    this.$message({
 | 
	
		
			
				|  |  | +                        message: "收藏成功",
 | 
	
		
			
				|  |  | +                        type: "success",
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                    this.likePhrase.push(item.word)
 | 
	
		
			
				|  |  | +                    this.$emit('changeLike','likeWordList',this.likePhrase)
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +            .catch(() => {
 | 
	
		
			
				|  |  | +            }); 
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    changeIndex(type){
 | 
	
		
			
				|  |  | +        if(type==='-'){
 | 
	
		
			
				|  |  | +            if(this.phraseActiveIndex>0){
 | 
	
		
			
				|  |  | +                this.phraseActiveIndex--
 | 
	
		
			
				|  |  | +                this.data = this.wordList[this.phraseActiveIndex]
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                return
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +            if(this.phraseActiveIndex<this.wordList.length-1){
 | 
	
		
			
				|  |  | +                this.phraseActiveIndex++
 | 
	
		
			
				|  |  | +                this.data = this.wordList[this.phraseActiveIndex]
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                return
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    //生命周期 - 创建完成(可以访问当前this实例)
 | 
	
	
		
			
				|  | @@ -274,6 +352,15 @@ export default {
 | 
	
		
			
				|  |  |                  cursor: pointer;
 | 
	
		
			
				|  |  |                  width: 32px;
 | 
	
		
			
				|  |  |                  height: 16px;
 | 
	
		
			
				|  |  | +                &.not-allow{
 | 
	
		
			
				|  |  | +                    color: rgba(78, 89, 105, 0.3);
 | 
	
		
			
				|  |  | +                    cursor: not-allowed;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            .icon-like{
 | 
	
		
			
				|  |  | +                &.active{
 | 
	
		
			
				|  |  | +                    color: #F2555A;  
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 |