Forráskód Böngészése

fix: PC端内容页标签排序

zhangyuhan 4 éve
szülő
commit
ae66bf541f
2 módosított fájl, 38 hozzáadás és 4 törlés
  1. 1 1
      jydocs-pc/src/api/mock/detail.json
  2. 37 3
      jydocs-pc/src/views/Content.vue

+ 1 - 1
jydocs-pc/src/api/mock/detail.json

@@ -10,7 +10,7 @@
       "price": 359,
       "docFileSize": 387,
       "docPageSize": 5,
-      "tags": "法律法规,行政法规",
+      "tags": "招标,测试,行业报告,1,2,3,4,行政法规",
       "uploadDate": "2021-03-17 15:46:04",
       "viewTimes": 55,
       "downTimes": 6,

+ 37 - 3
jydocs-pc/src/views/Content.vue

@@ -10,7 +10,7 @@
             </h3>
             <div class="tips">
                 <ul>
-                    <li class="tags" v-for="item in datas.tags" :key="item">{{item}}</li>
+                    <li class="tags" v-for="item in getContentTags" :key="item">{{item}}</li>
                     <li>{{datas.viewTimes}}次浏览<el-divider direction="vertical"></el-divider></li>
                     <li>{{datas.downTimes}}次下载<el-divider direction="vertical"></el-divider></li>
                     <li>共{{datas.docPageSize}}页<el-divider direction="vertical"></el-divider></li>
@@ -91,6 +91,8 @@ import { Button, Tooltip, Divider, Message } from 'element-ui'
 import { getDetails, getShow, getRecommend, getDown, getAdverse, getCoin, getAdd, getRemove } from '../api/modules/detail'
 import { formatSize, dateFormatter } from '@/utils/'
 import vRecommend from '@/components/recommend'
+import { getSearchTag } from "../api/modules/home";
+import { recoveryPageData } from "../utils";
 export default {
   components: {
     [Button.name]: Button,
@@ -128,7 +130,8 @@ export default {
       },
       pData: {
         heightList: []
-      }
+      },
+      tabs: []
     }
   },
   created () {
@@ -142,9 +145,27 @@ export default {
     // 监听滚轮
     window.addEventListener('scroll', this.initHeight)
   },
+  beforeMount () {
+    this.tabs = recoveryPageData('jy-docs-search-tags-pc')
+    this.getTags()
+  },
   destroyed () { // 移除监听
     window.removeEventListener('scroll', this.initHeight)
   },
+  computed: {
+    getContentTags () {
+      const a=new Set(this.datas.tags)
+      const b=new Set(this.tabs.map(v => v.type))
+      const arr = Array.from(new Set([...b].filter(x => a.has(x))))
+
+      const oldArr = Array.from(a)
+      arr.forEach(v => {
+        oldArr.splice(oldArr.indexOf(v), 1)
+      })
+      const nArr = arr.concat(oldArr)
+      return nArr.splice(0,3)
+    }
+  },
   methods: {
     initHeight () {
       // 获取页面滚动距离
@@ -254,6 +275,19 @@ export default {
         })
       })
     },
+    getTags () {
+      getSearchTag().then(res => {
+        if (!res.data.error_msg.length) {
+          this.tabs = res.data.data.map(v => {
+            return {
+              type: v,
+              label: v
+            }
+          })
+          sessionStorage.setItem('jy-docs-search-tags-pc', JSON.stringify(this.tabs))
+        }
+      })
+    },
     details () {
       getDetails({ docId: this.docIds, from: this.$route.query.from }).then(res => {
         if (res.data.error_code === 0) {
@@ -261,7 +295,7 @@ export default {
           this.datas.docFileSize = formatSize(this.datas.docFileSize)
           this.datas.uploadDate = dateFormatter(this.datas.uploadDate, 'yyyy-MM-dd')
           this.datas.docSummary = this.datas.docSummary.split('').length >= 500 ? this.datas.docSummary + '...' : this.datas.docSummary
-          this.datas.tags = this.datas.tags.split(',').slice(0, 3)
+          this.datas.tags = this.datas.tags.split(',')
           this.buyed = res.data.data.status
           if (this.buyed === 1) {
             document.getElementById('fixedTop').style.display = 'block'