Ver código fonte

得到文章收藏信息

natasha 1 ano atrás
pai
commit
30faaf1a53

+ 44 - 10
src/views/bookShelf/articleDetail.vue

@@ -23,7 +23,7 @@
                 <normal-model :titleFontsize="wordFontsize+30" :wordFontsize="wordFontsize" :colorObj="bgColorList[activeIndex]" :articleType="articleType" :style="{'padding':'0 40px'}" v-if="menuType==='original'"></normal-model>
                 <div class="article-btn">
                     <div class="left">
-                        <span :class="['support colloct-article',support?'active':'']" @click="changeStatus('support')"><svg-icon icon-class="like-line"></svg-icon>2847</span>
+                        <span :class="['support colloct-article',!noRead?'active':'']" @click="changeStatus('noRead')"><svg-icon icon-class="like-line"></svg-icon>2847</span>
                         <!-- <span :class="['oppose',oppose?'active':'']" @click="changeStatus('oppose')"><svg-icon icon-class="oppose"></svg-icon></span> -->
                     </div>
                     <div class="center">
@@ -31,12 +31,12 @@
                         <el-button type="text" class="btn-right" @click="handlePage('+')">下一篇<svg-icon icon-class="arrow-right-line"></svg-icon></el-button>
                     </div>
                     <div class="right">
-                        <template v-if="noRead">
+                        <!-- <template v-if="noRead">
                             <span class="support" @click="handleReadArticle"><svg-icon icon-class="no-read"></svg-icon>标记为已读</span>
                         </template>
                         <template v-else>
                             <span class="support readed"><svg-icon icon-class="readed"></svg-icon>已读</span>
-                        </template>
+                        </template> -->
                     </div>
                 </div>
             </div>
@@ -49,9 +49,9 @@
                 <el-collapse-transition >
                     <div v-if="showGlossary">
                         <h4 :style="{color:bgColorList[activeIndex].glossarySubtitle}">生词</h4>
-                        <new-word-list class="newWord-list" :list="articleInfo.art_voc_data" :style="{background:bgColorList[activeIndex].glossaryBg}" :colorObj="bgColorList[activeIndex]"></new-word-list>
+                        <new-word-list class="newWord-list" :list="articleInfo.art_voc_data" :style="{background:bgColorList[activeIndex].glossaryBg}" :colorObj="bgColorList[activeIndex]" :likeWordList="likeWordList" @changeLike="changeLike"></new-word-list>
                         <h4 :style="{color:bgColorList[activeIndex].glossarySubtitle}">短语</h4>
-                        <phrase-list class="newWord-list" :list="articleInfo.art_phrase_data" :style="{background:bgColorList[activeIndex].glossaryBg}" :colorObj="bgColorList[activeIndex]"></phrase-list>
+                        <phrase-list class="newWord-list" :list="articleInfo.art_phrase_data" :style="{background:bgColorList[activeIndex].glossaryBg}" :colorObj="bgColorList[activeIndex]" :likePhraseList="likePhraseList" @changeLike="changeLike"></phrase-list>
                         <h4 :style="{color:bgColorList[activeIndex].glossarySubtitle}">注释</h4>
                         <annotation-list class="newWord-list" :list="articleInfo.art_explain_data" :style="{background:bgColorList[activeIndex].glossaryBg}" :colorObj="bgColorList[activeIndex]"></annotation-list>
                     </div>
@@ -517,7 +517,10 @@ export default {
         menuFeature: '', // 功能
         shareSrc: '', // 分享图片
         share_url: '', // 分享链接
-        shareLoading: false
+        shareLoading: false,
+        likeWordList: [], // 收藏短语list
+        likePhraseList: [],
+        likeSentencelist: [],
     }
   },
   methods: {
@@ -619,17 +622,28 @@ export default {
         .catch(() => {
             this.loading = false
         }); 
-        getLogin('/ShopServer/Client/ReadingRecordManager/GetReadingStatus_Article', {
-            goods_type: 21,
+        getLogin('/ShopServer/Client/CollectManager/GetMyCollectIntegrateInfo_Article', {
             article_id: this.articleId,
         })
         .then((res) => {
             if(res.status===1){
-                this.noRead = res.reading_info.is_reading === 'false'
+                this.noRead = res.is_collect_article === 'false'
                 if(!this.noRead){
                     clearInterval(this_.timer);
                     this_.timer = null;
                 }
+                this.likeWordList = []
+                res.word_list.forEach(item=>{
+                    this.likeWordList.push(item.word)
+                })
+                this.likePhraseList = []
+                res.phrase_list.forEach(item=>{
+                    this.likePhraseList.push(item.phrase)
+                })
+                this.likeSentencelist = []
+                res.sentence_list.forEach(item=>{
+                    this.likeSentencelist.push(item.sentence_id)
+                })
             }
         })
         .catch(() => {
@@ -657,7 +671,7 @@ export default {
         }); 
     },
     changeStatus(flag){
-        if(!this[flag]){
+        if(this[flag]){
             let MethodName = "/ShopServer/Client/CollectManager/AddCollect_Article";
             let data = {
                 article_id: this.articleId
@@ -688,6 +702,23 @@ export default {
             })
             .catch(() => {
             }); 
+        }else{
+            let MethodName = "/ShopServer/Client/CollectManager/CancelCollect_Article"
+            getLogin(MethodName, {
+                article_id: this.articleId
+            })
+            .then((res) => {
+                if(res.status===1){
+                    this[flag] = !this[flag]
+                    this.$message({
+                        message: "取消收藏",
+                        type: "success",
+                    });
+                }
+            })
+            .catch(() => {
+                this.loading = false
+            });
         }
     },
     changeArticleType(type,e){
@@ -762,6 +793,9 @@ export default {
         .catch(() => {
             this.shareLoading = false
         }); 
+    },
+    changeLike(type,list){
+        this[type] = list
     }
   },
   created(){

+ 9 - 4
src/views/bookShelf/components/NewWordList.vue

@@ -47,7 +47,7 @@ import WordCard from "../../personalCenter/components/WordCard.vue"
 export default {
   //import引入的组件需要注入到对象中才能使用
   components: {WordCard},
-  props: ["list","colorObj"],
+  props: ["list","colorObj","likeWordList"],
   data() {
     //这里存放数据
     return {
@@ -57,7 +57,8 @@ export default {
         voiceSrc: "",
         voicePauseSrc: '',
         voicePlaySrc: require("../../../assets/voice-play-gray.png"),
-        activeIndex: null
+        activeIndex: null,
+        likeWord: JSON.parse(JSON.stringify(this.likeWordList))
     }
   },
   //计算属性 类似于data概念
@@ -89,11 +90,12 @@ export default {
                 this.loading = false
                 if(res.status===1){
                     item.collect = false
-                    this.$forceUpdate()
                     this.$message({
                         message: "取消收藏",
                         type: "success",
                     });
+                    this.likeWord.splice(this.likeWord.indexOf(item.word),1)
+                    this.$emit('changeLike','likeWordList',this.likeWord)
                 }
             })
             .catch(() => {
@@ -120,6 +122,8 @@ export default {
                         message: "收藏成功",
                         type: "success",
                     });
+                    this.likeWord.push(item.word)
+                    this.$emit('changeLike','likeWordList',this.likeWord)
                 }
             })
             .catch(() => {
@@ -176,7 +180,8 @@ export default {
                 rate: items.word_explain.star?items.word_explain.star:null,
                 originalObj: items,
                 hasVoice: items.word_explain.ph_mp3_id||items.word_explain.ph_file_url?true:false,
-                id: items.id
+                id: items.id,
+                collect: this.likeWord.indexOf(items.word_name)>-1?true:false
             }
             this.wordList.push(obj)
         });

+ 32 - 4
src/views/bookShelf/components/PhraseList.vue

@@ -1,6 +1,6 @@
 <template>
     <ul>
-        <li v-for="(itemW,indexW) in list" :key="indexW">
+        <li v-for="(itemW,indexW) in phraseList" :key="indexW">
             <div class="word-info">
                 <div class="word-info-top">
                     <b class="phrase" :style="{color:colorObj.phraseColor}">{{itemW.exp_title}}</b>
@@ -26,18 +26,29 @@ import WordCard from "../../personalCenter/components/WordCard.vue"
 export default {
   //import引入的组件需要注入到对象中才能使用
   components: {WordCard},
-  props: ["list","colorObj"],
+  props: ["list","colorObj","likePhraseList"],
   data() {
     //这里存放数据
     return {
         wordcardShow: false, // 词汇卡片flag
+        likePhrase: JSON.parse(JSON.stringify(this.likePhraseList)),
+        phraseList: []
     }
   },
   //计算属性 类似于data概念
   computed: {},
   //监控data中数据变化
   watch: {
-
+    list:{
+      handler(val, oldVal) {
+        const _this = this;
+        if (val) {
+          this.handleData()
+        }
+      },
+      // 深度观察监听
+      deep: true,
+    },
   },
   //方法集合
   methods: {
@@ -57,6 +68,8 @@ export default {
                         message: "取消收藏",
                         type: "success",
                     });
+                    this.likePhrase.splice(this.likePhrase.indexOf(item.exp_title),1)
+                    this.$emit('changeLike','likePhraseList',this.likePhrase)
                 }
             })
             .catch(() => {
@@ -72,22 +85,37 @@ export default {
             getLogin(MethodName, data)
             .then((res) => {
                 this.loading = false
-                this.$forceUpdate()
                 if(res.status===1){
                     item.collect = true
                     this.$message({
                         message: "收藏成功",
                         type: "success",
                     });
+                    this.likePhrase.push(item.exp_title)
+                    this.$emit('changeLike','likePhraseList',this.likePhrase)
                 }
             })
             .catch(() => {
             }); 
         }
     },
+    handleData(){
+        this.phraseList = []
+        let wordList = JSON.parse(JSON.stringify(this.list))
+        wordList.forEach(items => {
+            let obj = {
+                exp_title: items.exp_title,
+                exp_content: items.exp_content,
+                id: items.id,
+                collect: this.likePhraseList.indexOf(items.exp_title)>-1?true:false
+            }
+            this.phraseList.push(obj)
+        });
+    }
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {
+    this.handleData()
   },
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {

+ 61 - 38
src/views/bookStore/Subscribe.vue

@@ -49,11 +49,11 @@
                 <div class="info-box">
                     <div class="info-item">
                         <label>适合年龄</label>
-                        <span>{{info.issue_info.age_desc}}</span>
+                        <span>{{info.issue_info.age_desc||info.iread_info.age_desc}}</span>
                     </div>
                     <div class="info-item">
                         <label>期刊页数</label>
-                        <span>{{info.issue_info.page_count_desc}}</span>
+                        <span>{{info.issue_info.page_count_desc||info.iread_info.article_count_desc}}</span>
                         <el-tooltip placement="right" v-if="bookType==='baozhi'">
                             <div slot="content">双刊、特辑、寒暑假合刊除外</div>
                             <el-button class="tooltip-btn"><svg-icon icon-class="icon-mark"></svg-icon></el-button>
@@ -61,12 +61,12 @@
                     </div>
                     <div class="info-item">
                         <label>出版周期</label>
-                        <span>{{info.issue_info.period_desc}}</span>
+                        <span>{{info.issue_info.period_desc||info.iread_info.period_desc}}</span>
                     </div>
                     <div class="info-item">
                         <label>期刊定价</label>
                         <span v-if="bookType==='baozhi'">{{info.issue_info.price}}元/期</span>
-                        <span v-else-if="bookType==='jingdu'">{{info.issue_info.price}}元/年</span>
+                        <span v-else-if="bookType==='jingdu'">{{info.iread_info.price}}元/年</span>
                         <el-tooltip placement="right" v-if="bookType==='baozhi'">
                             <div slot="content">双刊、特辑、寒暑假合刊除外</div>
                             <el-button class="tooltip-btn"><svg-icon icon-class="icon-mark"></svg-icon></el-button>
@@ -74,7 +74,7 @@
                     </div>
                     <div class="info-item" style="width:100%;">
                         <label>主办单位</label>
-                        <span>{{info.issue_info.organizer}}</span>
+                        <span>{{info.issue_info.organizer||info.iread_info.organizer}}</span>
                     </div>
                 </div>
                 <div class="info-box order-box">
@@ -167,11 +167,11 @@
                             </el-tooltip>
                         </div>
                     </div>
-                    <div class="info-item order-item" v-if="settlement">
+                    <div class="info-item order-item" v-if="settlement||info.settlement_price">
                         <label>结算价格</label>
                         <div class="order-content">
-                            <span class="OPPOSans">¥{{settlement.price_settlement|cutMoneyFiter}}</span>
-                            <span class="old-price" v-if="settlement.price&&settlement.price_settlement!==settlement.price">¥{{settlement.price|cutMoneyFiter}}</span>
+                            <span class="OPPOSans">¥{{settlement.price_settlement||info.settlement_price.price_settlement|cutMoneyFiter}}</span>
+                            <span class="old-price" v-if="(settlement&&settlement.price&&settlement.price_settlement!==settlement.price)||(info.settlement_price&&info.settlement_price.price!==info.settlement_price.price_settlement)">¥{{settlement.price||info.settlement_price.price|cutMoneyFiter}}</span>
                         </div>
                     </div>
                 </div>
@@ -475,36 +475,59 @@ export default {
     // 详情
     getInfo(){
         this.loading = true
-        let MethodName = "/ShopServer/Client/ReservationQuery/GetReservationInfo_Issue";
-        let data = {
-            study_phase: this.studyType,
-            period_count: this.orderTotalNumber!==-1?this.orderTotalNumber:this.customOrderNumberList.length,
-            is_custom_select_issue_no: this.orderTotalNumber!==-1?'false':'true'
-        }
-        getLogin(MethodName, data)
-        .then((res) => {
-            this.loading = false
-            if(res.status===1){
-                this.info = res
-                this.orderTable = res.issue_no_list
-                res.issue_no_school_year_list.forEach(item=>{
-                    item.issue_no_list.forEach((items,indexs)=>{
-                        const regex = /[\u4e00-\u9fa5]/g;
-                        if(regex.test(items.issue_no)){
-                            items.width = Math.ceil(items.issue_no.length/3)
-                            items.number = item.issue_no_list[indexs-1]?item.issue_no_list[indexs-1].number + Math.ceil(items.issue_no.length/3) : Math.ceil(items.issue_no.length/3)
-                        }else{
-                            items.width = 1
-                            items.number = item.issue_no_list[indexs-1]?item.issue_no_list[indexs-1].number + 1 : 1
+        if(this.bookType===2){
+            let MethodName = "/ShopServer/Client/ReservationQuery/GetReservationInfo_Issue";
+            let data = {
+                study_phase: this.studyType,
+                period_count: this.orderTotalNumber!==-1?this.orderTotalNumber:this.customOrderNumberList.length,
+                is_custom_select_issue_no: this.orderTotalNumber!==-1?'false':'true'
+            }
+            getLogin(MethodName, data)
+            .then((res) => {
+                this.loading = false
+                if(res.status===1){
+                    this.info = res
+                    this.orderTable = res.issue_no_list
+                    res.issue_no_school_year_list.forEach(item=>{
+                        item.issue_no_list.forEach((items,indexs)=>{
+                            const regex = /[\u4e00-\u9fa5]/g;
+                            if(regex.test(items.issue_no)){
+                                items.width = Math.ceil(items.issue_no.length/3)
+                                items.number = item.issue_no_list[indexs-1]?item.issue_no_list[indexs-1].number + Math.ceil(items.issue_no.length/3) : Math.ceil(items.issue_no.length/3)
+                            }else{
+                                items.width = 1
+                                items.number = item.issue_no_list[indexs-1]?item.issue_no_list[indexs-1].number + 1 : 1
+                            }
+                        })
+                    })
+                }
+            })
+            .catch(() => {
+                this.loading = false
+            }); 
+            this.handleOrderPrice()
+        }else{
+            let MethodName = "/ShopServer/Client/ReservationQuery/GetReservationValidPeriodList_Iread";
+            getLogin(MethodName, {})
+            .then((res) => {
+                this.loading = false
+                if(res.status===1){
+                    getLogin('/ShopServer/Client/ReservationQuery/GetReservationInfo_Iread', {
+                        study_phase: this.studyType,
+                        valid_period_id: res.valid_period_list[0]?res.valid_period_list[0].valid_period_id:''
+                    }).then((ress) => {
+                        if(ress.status===1){
+                            this.info = ress
                         }
                     })
-                })
-            }
-        })
-        .catch(() => {
-            this.loading = false
-        }); 
-        this.handleOrderPrice()
+                    .catch(() => {
+                    }); 
+                }
+            })
+            .catch(() => {
+                this.loading = false
+            }); 
+        }
     },
     // 计算结算价格
     handleOrderPrice(){
@@ -548,7 +571,7 @@ export default {
         this.getInfo()
     },
     getDiscountRule(){
-        let MethodName = "/OrgServer/Manager/SysConfigManager/GetSysConfig_DiscountRule";
+        let MethodName = "/OrgServer/Client/SysConfigQuery/GetSysConfig_DiscountRule";
         getLogin(MethodName, {})
         .then((res) => {
             if(res.status===1){
@@ -581,7 +604,7 @@ export default {
         let MethodName = "/ShopServer/Client/OrderManager/CreateOrder";
         let data = {
             is_reservation: 'true',
-            goods_type: 2,
+            goods_type: this.bookType==='jingdu'?3:2,
             goods_id_list: [this.id],
             pay_type: this.payWay==='wei'?3:this.payWay==='zhi'?4:null
         }