Sfoglia il codice sorgente

Merge branch 'master' of http://192.168.3.207:10080/jianyu/jy-docs

TANGSHIZHE 4 anni fa
parent
commit
02241d6fb3

+ 1 - 0
jydocs-back/config.json

@@ -33,5 +33,6 @@
       ]
     }
   },
+  "indexSearchTag": ["全部","招标","法律法规","行业报告","测试"],
   "shareUrl": "https://web-jydev-wky.jianyu360.cn/swordfish/docs/index/content/%s"
 }

+ 2 - 1
jydocs-back/config/config.go

@@ -17,7 +17,8 @@ type appConfig struct {
 		Points  rpcConfig `json:"points"`  //剑鱼积分rpc接口
 		JyFile  rpcConfig `json:"jyFile"`  //剑鱼文件rpc接口
 	} `json:"rpcServers"` //rpc服务配置
-	ShareUrl string `json:"shareUrl"`
+	IndexSearchTag []string `json:"indexSearchTag"`
+	ShareUrl       string   `json:"shareUrl"`
 }
 
 type rpcConfig struct {

+ 1 - 1
jydocs-back/go.mod

@@ -4,7 +4,7 @@ go 1.13
 
 require (
 	app.yhyue.com/moapp/jyPoints v0.0.0-20210319072011-5430a201e0aa
-	app.yhyue.com/moapp/jy_docs v0.0.0-20210319063914-d48d51e0cc46
+	app.yhyue.com/moapp/jy_docs v0.0.0-20210322023024-a4be186876a3
 	app.yhyue.com/moapp/jybase v0.0.0-20210319015107-fe59d2046cf8
 	app.yhyue.com/moapp/jyfs v0.0.0-20210319011832-6cf539ddc5cd
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67

+ 10 - 0
jydocs-back/go.sum

@@ -11,6 +11,8 @@ app.yhyue.com/moapp/jyPoints v0.0.0-20210318074134-d0acc7d915bf h1:Idufrw6D2Kr2G
 app.yhyue.com/moapp/jyPoints v0.0.0-20210318074134-d0acc7d915bf/go.mod h1:nz39UQcXwZV90vOC7rIfos4LgrjGDcywHo96rdywdzk=
 app.yhyue.com/moapp/jyPoints v0.0.0-20210319020458-484a38074edd h1:O/QPSt7jIG5KKshbGhQnbcFTL/Hbu5SL7EpQuTYiDCQ=
 app.yhyue.com/moapp/jyPoints v0.0.0-20210319020458-484a38074edd/go.mod h1:nz39UQcXwZV90vOC7rIfos4LgrjGDcywHo96rdywdzk=
+app.yhyue.com/moapp/jyPoints v0.0.0-20210319072011-5430a201e0aa h1:SsH/bCryyvPUuorQqBPBDWFlz8jAO94DTvIb0mjfiEg=
+app.yhyue.com/moapp/jyPoints v0.0.0-20210319072011-5430a201e0aa/go.mod h1:ZuQoeKgip9OrJPRDpXkv4XOHV/oFIqL1aK+tcfIN+KQ=
 app.yhyue.com/moapp/jy_docs v0.0.0-20210317071040-be6d030d6122 h1:KzsaloFf6dT2JdcshC4CvYMFPVrpF1dD/pQ1H0wRAHk=
 app.yhyue.com/moapp/jy_docs v0.0.0-20210317071040-be6d030d6122/go.mod h1:PfrdcgOFwgvShGRVjDaMnv5masAd8Hl0URHFARyeqZ8=
 app.yhyue.com/moapp/jy_docs v0.0.0-20210317080833-0136e1a73ba8 h1:xizJ4BYH42vmYrgteaPNPcwF7/9G7uJO6uGgeuRDrwk=
@@ -39,6 +41,12 @@ app.yhyue.com/moapp/jy_docs v0.0.0-20210319051808-4dbf6fa54ca3 h1:s1VG+J/YGo+z6+
 app.yhyue.com/moapp/jy_docs v0.0.0-20210319051808-4dbf6fa54ca3/go.mod h1:jfOmPb/ZELpHsA39HDAhCkBPUH/3Jaix7JhzPzcmK6A=
 app.yhyue.com/moapp/jy_docs v0.0.0-20210319060022-e324f5108395 h1:JE5AFxIg6h111Iobzbvdu+lTIWFeY6sFCQkr8qKC+Eg=
 app.yhyue.com/moapp/jy_docs v0.0.0-20210319060022-e324f5108395/go.mod h1:jfOmPb/ZELpHsA39HDAhCkBPUH/3Jaix7JhzPzcmK6A=
+app.yhyue.com/moapp/jy_docs v0.0.0-20210319063914-d48d51e0cc46 h1:PoSBG2//3NYHwMpu0n9RtN9CZteMvnBv/SrnleSraC4=
+app.yhyue.com/moapp/jy_docs v0.0.0-20210319063914-d48d51e0cc46/go.mod h1:jfOmPb/ZELpHsA39HDAhCkBPUH/3Jaix7JhzPzcmK6A=
+app.yhyue.com/moapp/jy_docs v0.0.0-20210322014639-b4fe40444b05 h1:Dy0xuYezteDAkrAuZjc759487JOLavqnvSiPcBpPZVw=
+app.yhyue.com/moapp/jy_docs v0.0.0-20210322014639-b4fe40444b05/go.mod h1:jfOmPb/ZELpHsA39HDAhCkBPUH/3Jaix7JhzPzcmK6A=
+app.yhyue.com/moapp/jy_docs v0.0.0-20210322023024-a4be186876a3 h1:5BhmeUgOf9lA8lXifqMcIJ70v+vMpPBEQfZvZbzySMA=
+app.yhyue.com/moapp/jy_docs v0.0.0-20210322023024-a4be186876a3/go.mod h1:jfOmPb/ZELpHsA39HDAhCkBPUH/3Jaix7JhzPzcmK6A=
 app.yhyue.com/moapp/jybase v0.0.0-20210317020927-18b0165f5ff9 h1:LVIuqXMqcclMwBbSmqEzXi0nIEiir+a2GpWAqksmfzk=
 app.yhyue.com/moapp/jybase v0.0.0-20210317020927-18b0165f5ff9/go.mod h1:29ShuI8y7qEyg2KviHSx1iamiCioBKdTMm2ndVzWAhk=
 app.yhyue.com/moapp/jybase v0.0.0-20210318061912-f5594310c8fe h1:RSQIrriyi534CCrI/sSLGW+Rd0X/0W4VDDXIalHVo8c=
@@ -56,6 +64,8 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
 github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
+github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67 h1:x98/gnpyNAiuvg/gX3KgdfKxnZj3t9pIl3BCVJg3qwg=
+github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67/go.mod h1:g1VZ0nbzBvfsWw22gNVOxWxJxpBR+CBiFNK2n2ogeUo=
 github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
 github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
 github.com/StackExchange/wmi v0.0.0-20170410192909-ea383cf3ba6e/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=

+ 1 - 0
jydocs-back/rpc/stdDocRpc.go

@@ -84,6 +84,7 @@ func GeActivityList(userId string, code, pageNum, pageSize int64) ([]*stdlib.Doc
 		ActivityId: code,
 		PageNum:    pageNum,
 		PageSize:   pageSize,
+		UserId:     userId,
 	})
 	if err != nil {
 		log.Printf("%s GeActivityList call error %v\n", userId, err)

+ 22 - 7
jydocs-back/servers/stdDoc.go

@@ -14,11 +14,12 @@ import (
 
 type StdDoc struct {
 	*xweb.Action
-	search       xweb.Mapper `xweb:"/search"`       //检索文库
-	detail       xweb.Mapper `xweb:"/detail"`       //文库详情
-	content      xweb.Mapper `xweb:"/content"`      //文库内容
-	topList      xweb.Mapper `xweb:"/topList"`      //最新文档&热门下载
-	activityList xweb.Mapper `xweb:"/activityList"` //活动文库(精品推荐、兑换榜)
+	search       xweb.Mapper `xweb:"/search"`         //检索文库
+	indexTag     xweb.Mapper `xweb:"/indexTag"`       //首页搜索标签
+	detail       xweb.Mapper `xweb:"/detail"`         //文库详情
+	getDoc       xweb.Mapper `xweb:"/get(Show|Down)"` //文库在线查看 or 下载
+	topList      xweb.Mapper `xweb:"/topList"`        //最新文档&热门下载
+	activityList xweb.Mapper `xweb:"/activityList"`   //活动文库(精品推荐、兑换榜)
 }
 
 func (stdDoc *StdDoc) Search() {
@@ -36,6 +37,9 @@ func (stdDoc *StdDoc) Search() {
 		if keyWord == "" {
 			return nil, fmt.Errorf("检索内容不能为空")
 		}
+		if tag == "全部" {
+			tag = ""
+		}
 		list, total, err := rpc.GetDocQuery(userId, keyWord, tag, pageNum, pageSize, sort)
 		if err != nil {
 			return nil, err
@@ -51,6 +55,10 @@ func (stdDoc *StdDoc) Search() {
 	stdDoc.ServeJson(NewResult(rData, errMsg))
 }
 
+func (stdDoc *StdDoc) IndexTag() {
+	stdDoc.ServeJson(NewResult(config.JyDocsAppConfig.IndexSearchTag, nil))
+}
+
 func (stdDoc *StdDoc) Detail() {
 	userId := common.ObjToString(stdDoc.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
@@ -64,6 +72,8 @@ func (stdDoc *StdDoc) Detail() {
 		}
 		//ossId清除
 		detail.OssPdfId = ""
+		detail.OssDocId = ""
+		detail.PreviewImgId = fmt.Sprintf("https://%s.%s/%s", config.JyDocsAppConfig.OssBucket.Priv, config.JyDocsAppConfig.OssAdmin, detail.PreviewImgId)
 		return map[string]interface{}{
 			"status": common.If(isBuy, 1, 0),
 			"detail": detail,
@@ -75,9 +85,10 @@ func (stdDoc *StdDoc) Detail() {
 	stdDoc.ServeJson(NewResult(rData, errMsg))
 }
 
-func (stdDoc *StdDoc) Content() {
+func (stdDoc *StdDoc) GetDoc(sign string) {
 	userId := common.ObjToString(stdDoc.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
+		log.Println(sign)
 		docId := stdDoc.GetString("docId")
 		if docId == "" {
 			return nil, fmt.Errorf("参数异常")
@@ -89,7 +100,11 @@ func (stdDoc *StdDoc) Content() {
 		if !isBuy {
 			return nil, fmt.Errorf("请先兑换文档")
 		}
-		url, err := rpc.GetFileContext(userId, detail.OssPdfId)
+		fileId := detail.OssPdfId
+		if sign == "Down" {
+			fileId = detail.OssDocId
+		}
+		url, err := rpc.GetFileContext(userId, fileId)
 		if err != nil {
 			return nil, err
 		}

+ 7 - 1
jydocs-back/servers/userDoc.go

@@ -9,6 +9,7 @@ import (
 	"jy-docs/public"
 	"jy-docs/rpc"
 	"log"
+	"time"
 )
 
 type UserDoc struct {
@@ -127,7 +128,12 @@ func (userDoc *UserDoc) DocBuy() {
 		if err != nil {
 			return nil, err
 		}
-		return "success", nil
+		return map[string]interface{}{
+			"code":    docId,
+			"balance": userPoint - docPoint,
+			"payTime": time.Now().Unix(),
+			"payWay":  "剑鱼币",
+		}, nil
 	}()
 	if errMsg != nil {
 		log.Printf("%s UserDoc docBuy err:%s\n", userId, errMsg.Error())

+ 29 - 0
jydocs-mobile/src/api/main.ts

@@ -46,6 +46,35 @@ export function getDetails (data: any) {
   })
 }
 
+export function getAdd (data: any) {
+  console.log(data)
+  // data = qs.stringify(data)
+  return $request({
+    url: '/userCollectAdd',
+    method: 'post',
+    data
+  })
+}
+
+export function getRemove (data: any) {
+  console.log(data)
+  // data = qs.stringify(data)
+  return $request({
+    url: '/userCollectRemove',
+    method: 'post',
+    data
+  })
+}
+
+export function getCoin (data: any) {
+  console.log(data)
+  return $request({
+    url: '/coin',
+    method: 'post',
+    data
+  })
+}
+
 // 文库购买
 export function getDocPay (data: any) {
   data = qs.stringify(data)

+ 14 - 0
jydocs-mobile/src/api/mock/coin.json

@@ -0,0 +1,14 @@
+{
+    "error_code": 0,
+    "data": {
+        "code": 1,
+        "message": "积分明细查询成功",
+        "count": 42,
+        "data": {
+            "points": {
+                "balance": 200,
+                "expire": 0
+            }
+        }
+    }
+}

+ 3 - 2
jydocs-mobile/src/api/mock/detail.json

@@ -2,7 +2,8 @@
   "error_code": 0,
   "error_msg": "",
   "data": {
-    "status": 1,
+    "status": 0,
+    "docCang": 1,
     "detail": {
       "docId": "RJ82241sM3DyHwrupW7w",
       "total": 10,
@@ -13,7 +14,7 @@
       "docPageSize": 5,
       "tags": "信息技术",
       "uploadDate": "2021-03-17 15:46:04",
-      "docFileType": 6,
+      "docFileType": 2,
       "docSummary": "公告软件单元、组装、确认测试系统-中标候选人公示(招标编号:ZKX20210231A002)公示开始时间:2021年01月28日09时00分00秒公示结束时间:2021年02月01日23时59分59秒本软件单元、组装、确认测试系统(招标项目"
     }
   }

+ 11 - 0
jydocs-mobile/src/api/mock/indexTag.json

@@ -0,0 +1,11 @@
+{
+  "error_code": 0,
+  "error_msg": "",
+  "data": [
+    "全部",
+    "招标",
+    "法律法规",
+    "行业报告",
+    "测试"
+  ]
+}

+ 0 - 0
jydocs-mobile/src/api/mock/user$collect$add.json → jydocs-mobile/src/api/mock/userCollectAdd.json


+ 0 - 0
jydocs-mobile/src/api/mock/user$collect$remove.json → jydocs-mobile/src/api/mock/userCollectRemove.json


+ 11 - 9
jydocs-mobile/src/components/Recharge.vue

@@ -3,14 +3,14 @@
         <div class="recharge_top">
             <div class="recharge_title">
                 <div class="thumbnail">
-                    <img src="../assets/images/banner.png" class="thumbnail_img" alt="">
+                    <img :src="detailData.previewImgId" class="thumbnail_img" alt="">
                 </div>
                 <div class="recharge_t_right">
-                    <div class="t_right_name">优化招投标市场营商环境与国企采购</div>
+                    <div class="t_right_name">{{detailData.docName}}</div>
                     <div class="t_right_active">
-                        <span>500剑鱼币</span>
-                        <span>共18页</span>
-                        <span>123k</span>
+                        <span>{{detailData.price}}剑鱼币</span>
+                        <span>共{{detailData.docPageSize}}页</span>
+                        <span>{{detailData.docFileSize}}k</span>
                     </div>
                 </div>
             </div>
@@ -24,18 +24,18 @@
             </div>
             <div class="jianyu_pay">
                 <span class="jy_money">剑鱼币</span>
-                <span class="jy_tip">(剑鱼币不足,剩余20剑鱼币)</span>
+                <span class="jy_tip">(剑鱼币不足,剩余{{coins.balance}}剑鱼币)</span>
             </div>
         </div>
         <div class="recharge_footer">
-                <button class="j-button-cancel btn_active" @click="closePopup()">取消</button>
-                <button class="j-button-sure btn_active">去充值</button>
+            <button class="j-button-cancel btn_active" @click="closePopup()">取消</button>
+            <button class="j-button-sure btn_active">去充值</button>
         </div>
     </van-popup>
 </template>
 
 <script lang="ts">
-import { Component, Vue } from 'vue-property-decorator'
+import { Component, Prop, Vue } from 'vue-property-decorator'
 import { Icon, Popup, Sticky } from 'vant'
 
 // @ is an alias to /src
@@ -51,6 +51,8 @@ import { Icon, Popup, Sticky } from 'vant'
     }
   })
 export default class extends Vue {
+    @Prop() detailData: any
+    @Prop() coins: any
     show = false
     closePopup () {
       this.show = false

+ 21 - 10
jydocs-mobile/src/components/RechargeHave.vue

@@ -3,14 +3,14 @@
         <div class="rechargehave_top">
             <div class="rechargehave_title">
                 <div class="thumbnail">
-                    <img src="../assets/images/banner.png" class="thumbnail_img" alt="">
+                    <img :src="detailData.previewImgId" class="thumbnail_img" alt="">
                 </div>
                 <div class="rechargehave_t_right">
-                    <div class="t_right_name">优化招投标市场营商环境与国企采购</div>
+                    <div class="t_right_name">{{detailData.docName}}</div>
                     <div class="t_right_active">
-                        <span>500剑鱼币</span>
-                        <span>共18页</span>
-                        <span>123k</span>
+                        <span>{{detailData.price}}剑鱼币</span>
+                        <span>共{{detailData.docPageSize}}页</span>
+                        <span>{{detailData.docFileSize}}k</span>
                     </div>
                 </div>
             </div>
@@ -25,7 +25,7 @@
             <div class="jianyu_pay">
                 <div class="jy_pay_left">
                     <span class="jy_money">剑鱼币</span>
-                    <span class="jy_tip">(剩余2020剑鱼币)</span>
+                    <span class="jy_tip">(剩余{{coins.balance}}剑鱼币)</span>
                 </div>
                 <div class="jy_pay_icon">
                     <img src="../assets/icon/checked.png" class="icon_right_option" />
@@ -38,23 +38,24 @@
                 支付积分:
                 </div>
                 <div class="det_right">
-                <span class="det_money">500</span>
+                <span class="det_money">{{detailData.price}}</span>
                 <span>剑鱼币</span>
                 </div>
             </div>
             <div class="readly">
-                <van-checkbox v-model="checked" checked-color="#2ABED1" >我已阅读,理解并接受<a href="javascript:;" class="clause" @click="clause()">《剑鱼伙伴服务条款》</a></van-checkbox>
+                <van-checkbox v-model="checked" checked-color="#2ABED1" >我已阅读,理解并接受</van-checkbox><a href="javascript:;" class="clause" @click="clause()">《剑鱼伙伴服务条款》</a>
             </div>
             <div class="apply_footer">
                 <button class="j-button-cancel btn_active" @click="closePopup()">取消</button>
-                <button class="j-button-sure btn_active" :disabled="!this.checked" @click="exchange()">剑鱼币购买</button>
+                <button class="j-button-sure btn_active" :disabled="!checked" @click="exchange()">去兑换</button>
+                <!-- <button class="j-button-sure btn_active" :disabled="!this.checked" @click="exchange()">剑鱼币购买</button> -->
             </div>
         </div>
     </van-popup>
 </template>
 
 <script lang="ts">
-import { Component, Vue } from 'vue-property-decorator'
+import { Component, Prop, Vue } from 'vue-property-decorator'
 import { Icon, Popup, Checkbox } from 'vant'
 
 // @ is an alias to /src
@@ -70,11 +71,21 @@ import { Icon, Popup, Checkbox } from 'vant'
     }
   })
 export default class extends Vue {
+    @Prop() detailData: any
+    @Prop() coins: any
     show = false
     checked = false
     closePopup () {
       this.show = false
     }
+
+    clause () {
+      console.log('0000')
+    }
+
+    exchange () {
+      console.log('99999')
+    }
 }
 </script>
 

+ 28 - 1
jydocs-mobile/src/store/modules/main.ts

@@ -7,7 +7,10 @@ import {
   submitCashOutInfo,
   getDocPay,
   getDetails,
-  getListDetail
+  getListDetail,
+  getRemove,
+  getAdd,
+  getCoin,
 } from '@/api/main'
 
 interface InterfaceStore<S> extends StoreOptions<S> {
@@ -165,6 +168,30 @@ const modulesOption: modulesOption = {
         console.log(res)
         return res.data
       } catch (error) {}
+    },
+    // 文库收藏
+    async getAdd (state, data) {
+      try {
+        const res = await getAdd(data)
+        console.log(res)
+        return res.data
+      } catch (error) {}
+    },
+    // 文库取消收藏
+    async getRemove (state, data) {
+      try {
+        const res = await getRemove(data)
+        console.log(res)
+        return res.data
+      } catch (error) {}
+    },
+    // 剑鱼币
+    async getCoin (state, data) {
+      try {
+        const res = await getCoin(data)
+        console.log(res)
+        return res.data
+      } catch (error) {}
     }
   },
   getters: {}

+ 72 - 17
jydocs-mobile/src/views/details/details.vue

@@ -2,16 +2,16 @@
     <div class="details-p">
         <div class="tops">
             <h3>
-                <van-icon class="word01" name="diy-word" />
+                <van-icon class="word01" :name="'diy-' + fileType(detailData.docFileType)" />
                 {{detailData.docName}}
             </h3>
         </div>
         <div class="middles">
             <h3>摘要</h3>
             <p>{{detailData.docSummary}}</p>
-            <div class="continue">全文共18页,<span>继续阅读<van-icon name="arrow-down" size="18" /></span></div>
+            <div class="continue" v-show="!buyed">全文共{{detailData.docPageSize}}页,<span @click="continued">继续阅读<van-icon name="arrow-down" size="18" /></span></div>
         </div>
-        <div class="botts">
+        <div class="botts" v-show="buyed">
             <div class="cont-page">
                 优化招投标市场营商环境与国企采购人主体责任、采购与招标培训资料摘要摘要。优化招投标市场营商环境与国企采购人主体责任、采购与招标培训资料摘要摘要。优化招投标市场营商环境与国企采购人主体责任、采购与招标培训资料摘要摘要。优化招投标市场营商环境与国企采购人主体责任、采购与招标培训资料摘要摘要。优化招投标市场营商环境与国企采购人主体责任、采购与招标培训资料摘要摘要。优化招投标市场营商环境与国企采购人主体责任、采购与招标培训资料摘要摘要。
             </div>
@@ -20,17 +20,17 @@
             <van-goods-action-icon class="no-icon">
                 <template #default>
                     <p class="p1">剑鱼币</p>
-                    <p class="p2">500</p>
+                    <p class="p2">{{detailData.price}}</p>
                 </template>
             </van-goods-action-icon>
             <van-goods-action-icon icon="diy-jubao" text="投诉举报" @click="jubaod" />
-            <van-goods-action-icon :icon="collectd?'diy-weiguanzhu':'diy-guanzhu'" text="收藏" @click="canged" />
+            <van-goods-action-icon :icon="collectd==1?'diy-guanzhu':'diy-weiguanzhu'" text="收藏" @click="canged" />
             <van-goods-action-button text="下载文档" @click="uploaded" />
         </van-goods-action>
         <!-- 充值 -->
-        <recharge ref="charge"></recharge>
+        <recharge ref="charge" :detailData="detailData" :coins="coins"></recharge>
         <!-- 购买 -->
-        <purchase ref="buys"></purchase>
+        <purchase ref="buys" :detailData="detailData" :coins="coins"></purchase>
     </div>
 </template>
 
@@ -52,15 +52,22 @@ import Purchase from '@/components/RechargeHave.vue'
   },
   methods: {
     ...mapActions({
-      getDetails: 'main/getDetails'
+      getDetails: 'main/getDetails',
+      getCoin: 'main/getCoin',
+      getAdd: 'main/getAdd',
+      getRemove: 'main/getRemove'
     })
   }
 })
 export default class extends Vue {
   getDetails: any
+  getCoin: any
+  coins: any = []
+  getAdd: any
+  getRemove: any
   detailData: any = []
-  collectd = true
-  nums = 1
+  collectd = 0
+  buyed = 0
   created () {
     this.onList()
   }
@@ -69,6 +76,12 @@ export default class extends Vue {
     this.getDetails({ docId: '111' }).then((res: any) => {
       console.log(res.data)
       this.detailData = res.data.detail
+      this.buyed = res.data.status
+      this.collectd = res.data.docCang
+    })
+    this.getCoin({ L: true }).then((res: any) => {
+      console.log(res.data.data)
+      this.coins = res.data.data.points
     })
   }
 
@@ -80,21 +93,64 @@ export default class extends Vue {
   }
 
   canged () {
-    this.collectd = !this.collectd
+    if (this.collectd === 0) {
+      this.getAdd({ docId: '111' }).then((res: any) => {
+        console.log(res)
+        if (res.error_code === 0) {
+          this.collectd = 1
+          Toast('收藏成功')
+        }
+      })
+    } else {
+      this.getRemove({ docId: '111' }).then((res: any) => {
+        console.log(res)
+        if (res.error_code === 0) {
+          this.collectd = 0
+          Toast('取消收藏')
+        }
+      })
+    }
+  }
+
+  continued () {
+    this.uploaded()
   }
 
   uploaded () {
-    if (this.nums === 0) {
-      ;(this.$refs.charge as any).show = true
+    if (this.buyed === 1) {
+      this.$router.push('/')
+    } else {
+      if (this.coins.balance < this.detailData.price) {
+        ;(this.$refs.charge as any).show = true
+      } else {
+        ;(this.$refs.buys as any).show = true
+      }
+    }
+  }
+
+  fileType (val: any) {
+    if (val === 1) {
+      return 'word'
+    } else if (val === 2) {
+      return 'pdf'
+    } else if (val === 3) {
+      return 'excel'
+    } else if (val === 4) {
+      return 'ppt'
+    } else if (val === 5) {
+      return 'txt'
     } else {
-      ;(this.$refs.buys as any).show = true
+      return ''
     }
   }
 }
 </script>
 
 <style lang="scss" scoped>
+@include diy-icon('pdf', 24, 24);
 @include diy-icon('word', 24, 24);
+@include diy-icon('excel', 24, 24);
+@include diy-icon('ppt', 24, 24);
 @include diy-icon('jubao', 20, 20);
 @include diy-icon('weiguanzhu', 20, 20);
 @include diy-icon('guanzhu', 20, 20);
@@ -167,16 +223,15 @@ export default class extends Vue {
         display: flex;
         justify-content: space-between;
         .no-icon {
-            p {
-                color:#2ABED1;
-            }
             .p1 {
                 font-size: 12px;
                 line-height: 18px;
+                color: #5F5E64;
             }
             .p2 {
                 font-size: 18px;
                 line-height: 26px;
+                color: #FB483D;
             }
             .van-icon {
                 display: none!important;

+ 8 - 0
jydocs-mobile/vue.config.js

@@ -60,6 +60,14 @@ module.exports = {
         pathRewrite: {
           '^/distribution': '/distribution'
         }
+      },
+      '^/jydocs': {
+        target: '192.168.20.180:821',
+        changeOrigin: true,
+        logLevel: 'debug',
+        pathRewrite: {
+          '^/jydocs': '/jydocs'
+        }
       }
     }
   },

+ 14 - 0
jydocs-pc/src/api/mock/coin.json

@@ -0,0 +1,14 @@
+{
+    "error_code": 0,
+    "data": {
+        "code": 1,
+        "message": "积分明细查询成功",
+        "count": 42,
+        "data": {
+            "points": {
+                "balance": 200,
+                "expire": 0
+            }
+        }
+    }
+}

+ 5 - 2
jydocs-pc/src/api/mock/detail.json

@@ -3,15 +3,18 @@
   "error_msg": "",
   "data": {
     "status": 1,
+    "docCang": 1,
     "detail": {
       "docId": "RJ82241sM3DyHwrupW7w",
       "docName": "软件单元、组装、确认测试系统-中标候选人公示",
       "price": 359,
       "docFileSize": 387,
       "docPageSize": 5,
-      "tags": "信息技术",
+      "tags": "法律法规,行政法规",
       "uploadDate": "2021-03-17 15:46:04",
-      "docFileType": 6,
+      "viewTimes": 55,
+      "downTimes": 6,
+      "docFileType": 1,
       "docSummary": "公告软件单元、组装、确认测试系统-中标候选人公示(招标编号:ZKX20210231A002)公示开始时间:2021年01月28日09时00分00秒公示结束时间:2021年02月01日23时59分59秒本软件单元、组装、确认测试系统(招标项目"
     }
   }

+ 11 - 0
jydocs-pc/src/api/mock/indexTag.json

@@ -0,0 +1,11 @@
+{
+  "error_code": 0,
+  "error_msg": "",
+  "data": [
+    "全部",
+    "招标",
+    "法律法规",
+    "行业报告",
+    "测试"
+  ]
+}

+ 0 - 0
jydocs-pc/src/api/mock/user$collect$add.json → jydocs-pc/src/api/mock/userCollectAdd.json


+ 0 - 0
jydocs-pc/src/api/mock/user$collect$remove.json → jydocs-pc/src/api/mock/userCollectRemove.json


+ 53 - 0
jydocs-pc/src/api/modules/detail.js

@@ -0,0 +1,53 @@
+import httpRequest from '@/api'
+import mockRequest from '@/api/mock'
+// import qs from 'qs'
+
+let request = httpRequest
+if (process.env.NODE_ENV === 'development' && process.env.VUE_APP_MOCK === 'true') {
+  // @ts-ignore
+  request = mockRequest
+}
+
+export function getDetails (data) {
+//   data = qs.stringify(data)
+  return request({
+    url: '/detail',
+    method: 'post',
+    data: data
+  })
+}
+
+export function getAdverse (data) {
+  return request({
+    url: '/getAdvertisement',
+    method: 'post',
+    data: data
+  })
+}
+
+export function getAdd (data) {
+  console.log(data)
+  return request({
+    url: '/userCollectAdd',
+    method: 'post',
+    data
+  })
+}
+
+export function getRemove (data) {
+  console.log(data)
+  return request({
+    url: '/userCollectRemove',
+    method: 'post',
+    data
+  })
+}
+
+export function getCoin (data) {
+  console.log(data)
+  return request({
+    url: '/coin',
+    method: 'post',
+    data
+  })
+}

+ 7 - 0
jydocs-pc/src/api/modules/home.js

@@ -17,6 +17,13 @@ export function getHomeHot (data) {
   })
 }
 
+export function getSearchTag () {
+  return request({
+    url: '/indexTag',
+    method: 'post'
+  })
+}
+
 export function getHomeActivity (data) {
   return request({
     url: '/activityList',

+ 22 - 20
jydocs-pc/src/components/Search.vue

@@ -7,7 +7,7 @@
                 clearable>
             <el-button @click="submitSearch" slot="append" icon="el-icon-jy-search"></el-button>
         </el-input>
-        <el-tabs v-model="type">
+        <el-tabs v-model="type" v-show="tabs.length">
           <el-tab-pane v-for="item in tabs" :key="item.type" :label="item.label" :name="item.type"></el-tab-pane>
         </el-tabs>
     </div>
@@ -15,6 +15,9 @@
 
 <script>
 import { Input, Button, Tabs, TabPane } from 'element-ui'
+import { getSearchTag } from '../api/modules/home'
+import { recoveryPageData } from '../utils'
+
 export default {
   name: 'Search-Input',
   props: {
@@ -29,28 +32,13 @@ export default {
   data () {
     return {
       input: '',
-      type: 'all',
-      tabs: [
-        {
-          type: 'all',
-          label: '全部'
-        },
-        {
-          type: '招标',
-          label: '招标'
-        },
-        {
-          type: '法律法规',
-          label: '法律法规'
-        },
-        {
-          type: '行业报告',
-          label: '行业报告'
-        }
-      ]
+      type: '全部',
+      tabs: []
     }
   },
   beforeMount () {
+    this.tabs = recoveryPageData('jy-docs-search-tags-pc')
+    this.getTags()
     const qUrl = this.$route.query
     qUrl && qUrl.type && (this.type = qUrl.type)
     if (qUrl && qUrl.text) {
@@ -62,6 +50,20 @@ export default {
     }
   },
   methods: {
+    async getTags () {
+      getSearchTag().then(res => {
+        if (!res.data.error_msg.length) {
+          this.tabs = res.data.data.map(v => {
+            return {
+              type: v,
+              label: v
+            }
+          })
+          this.type = this.tabs[0].type
+          sessionStorage.setItem('jy-docs-search-tags-pc', JSON.stringify(this.tabs))
+        }
+      })
+    },
     submitSearch () {
       if (!this.input.length) {
         return

+ 1 - 1
jydocs-pc/src/router.js

@@ -1,6 +1,6 @@
 import Vue from 'vue'
 import Router from 'vue-router'
-import Home from './views/Home.vue'
+// import Home from './views/Home.vue'
 
 Vue.use(Router)
 

+ 4 - 0
jydocs-pc/src/utils/globalFunctions.js

@@ -328,3 +328,7 @@ export function replaceKeyword (value, oldChar, newChar) {
   }
   return value
 }
+
+export function recoveryPageData (key, defaultValues = {}) {
+  return sessionStorage.getItem(key) ? JSON.parse(sessionStorage.getItem(key) || '') : defaultValues
+}

+ 190 - 177
jydocs-pc/src/views/Content.vue

@@ -3,24 +3,25 @@
       <div class="d-left">
           <div class="tops">
               <h3>
-                  <i class="el-icon-jy-word"></i>
-                  优化招投标市场营商环境与国企采购人主体责任、采购与招标培训资料
+                  <i :class="'el-icon-jy-' + fileType(datas.docFileType)"></i>
+                  {{datas.docName}}
               </h3>
               <div class="tips">
                   <ul>
-                      <li class="tags" v-for="(item,index) in datas" :key="index">{{item.name}}</li>
-                      <li>11222次浏览<el-divider direction="vertical"></el-divider></li>
-                      <li>222次下载<el-divider direction="vertical"></el-divider></li>
-                      <li>共13页<el-divider direction="vertical"></el-divider></li>
-                      <li>22k<el-divider direction="vertical"></el-divider></li>
-                      <li class="no-line">2021-02-23上传</li>
+                      <li class="tags" v-for="item in datas.tags" :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>
+                      <li>{{datas.docFileSize}}k<el-divider direction="vertical"></el-divider></li>
+                      <li class="no-line">{{datas.uploadDate | dateFormatter}}上传</li>
                   </ul>
-                  <div class="coin"><span>200</span>剑鱼币</div>
+                  <div class="coin"><i class="el-icon-jy-iconJianYu"></i><span>{{datas.price}}</span></div>
               </div>
               <div class="buyed" v-if="buyed">您已兑换过该文档,可直接下载</div>
-              <div class="buyed no-buyed" v-else>剑鱼币余额不足,现有 50 剑鱼币,还需 150 剑鱼币,请先充值</div>
+              <div class="buyed no-buyed" v-else-if="datas.price > coinNum && !buyed">剑鱼币余额不足,现有 {{coinNum}} 剑鱼币,还需 {{datas.price - coinNum}} 剑鱼币,请先充值</div>
+              <el-divider class="heng-line" v-else></el-divider>
               <div class="load-doc">
-                  <el-button type="primary">下载文档</el-button>
+                  <el-button type="primary">{{btnName}}</el-button>
                   <div class="icons">
                       <el-tooltip placement="bottom" effect="light" popper-class="f-share">
                           <span class="spa1"><i class="el-icon-jy-share"></i>分享</span>
@@ -29,7 +30,7 @@
                               <p style="color: #686868;font-size: 14px;text-align:center;">微信扫码分享</p>
                           </div>
                       </el-tooltip>
-                      <span class="spa1 spa2" @click="collectd=!collectd"><i :class="collectd?'el-icon-jy-weiguanzhu':'el-icon-jy-guanzhu'"></i>收藏</span>
+                      <span class="spa1 spa2" @click="shoucang"><i :class="collectd==1?'el-icon-jy-guanzhu':'el-icon-jy-weiguanzhu'"></i>收藏</span>
                       <el-tooltip content="如果您发现此内容有侵权行为,请联系客服400-108-6670进行投诉" placement="top" effect="dark">
                           <span class="spa1"><i class="el-icon-jy-jubao"></i>投诉举报</span>
                       </el-tooltip>
@@ -38,18 +39,19 @@
           </div>
           <div class="middles">
               <h3>摘要</h3>
-              <p>优化招投标市场营商环境与国企采购人主体责任、采购与招标培训资料摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要。</p>
+              <p>{{datas.docSummary}}</p>
               <div class="continue" v-show="!buyed">全文共18页,<span @click="continued">继续阅读<i class="el-icon-arrow-down"></i></span></div>
           </div>
+          <div class="head-tip" id="fixedTop" :class="{'is-fixed':fixed}">
+                <h3 v-show="fixed">
+                <i :class="'el-icon-jy-' + fileType(datas.docFileType)"></i>
+                <span>{{datas.docName}}</span>
+                </h3>
+                <span><i>1</i> / {{datas.docPageSize}}</span>
+          </div>
           <div class="bottoms" id="colWidth" v-show="buyed">
               <div class="page">
-                  <div class="head-tip" id="fixedCard" :class="{'is-fixed':fixed}">
-                      <h3 v-show="fixed">
-                          <i class="el-icon-jy-word"></i>
-                          <span>优化招投标市场营商环境与国企采购人主体责任、采购与招标培训资料优化招投标市场营商环境与国企采购人主体责任、采购与招标培训资料</span>
-                      </h3>
-                      <span><i>1</i> / 8</span>
-                  </div>
+                  
                   <div class="cont-p"></div>
               </div>
               <div class="foot-tip tops">
@@ -62,101 +64,168 @@
                                   <p style="color: #686868;font-size: 14px;text-align:center;">微信扫码分享</p>
                               </div>
                           </el-tooltip>
-                          <span class="spa1 spa2" @click="collectd=!collectd"><i :class="collectd?'el-icon-jy-weiguanzhu':'el-icon-jy-guanzhu'"></i>收藏</span>
+                          <span class="spa1 spa2" @click="shoucang"><i :class="collectd==1?'el-icon-jy-guanzhu':'el-icon-jy-weiguanzhu'"></i>收藏</span>
                           <el-tooltip content="如果您发现此内容有侵权行为,请联系客服400-108-6670进行投诉" placement="top" effect="dark">
                               <span class="spa1"><i class="el-icon-jy-jubao"></i>投诉举报</span>
                           </el-tooltip>
                       </div>
-                      <el-button type="primary">下载文档</el-button>
+                      <el-button type="primary">{{btnName}}</el-button>
                   </div>
               </div>
           </div>
       </div>
       <div class="d-right">
           <div class="r-tops">
-
-          </div>
-          <div class="r-bott">
-              <h3>相关推荐</h3>
-              <div class="docs">
-                  <div class="imgs">
-                      <img src="../assets/images/123.png" alt="">
-                      <i class="el-icon-jy-word"></i>
-                  </div>
-                  <div class="conts">
-                      <h5>优化招投标市场营商环境与国企采购人主体优化招投标市场营商环境与国企采购人主体</h5>
-                      <p>贡献者:刘梅里</p>
-                      <div class="d-tip">
-                          <p>2022次下载</p>
-                          <el-divider direction="vertical"></el-divider>
-                          <p>共18页</p>
-                          <el-divider direction="vertical"></el-divider>
-                          <p>220k</p>
-                      </div>
-                      <div class="r-coin">500剑鱼币</div>
-                  </div>
-              </div>
+              <router-link v-for="item in adsUrl" :key="item.s_pic" :to="item.s_link">
+                <img :src="item.s_pic">
+              </router-link>
           </div>
       </div>
   </div>
 </template>
 
 <script>
-import { Button, Tooltip, Divider } from 'element-ui'
+import { Button, Tooltip, Divider, Message } from 'element-ui'
+import { getDetails, getAdverse, getCoin, getAdd, getRemove } from '../api/modules/detail'
 export default {
   components: {
     [Button.name]: Button,
     [Tooltip.name]: Tooltip,
-    [Divider.name]: Divider
+    [Divider.name]: Divider,
+    [Message.name]: Message
   },
   data () {
     return {
-      datas: [{ name: '招标' }, { name: '培训' }],
-      buyed: true,
-      collectd: true,
+      datas: [],
+      adsUrl: [],
+      coinNum: 0,
+      btnName: '',
+      buyed: false,
+      collectd: 0,
       offsetTop: 0,
       offsetWidth: 0,
       colWidth: 0,
       fixed: false
     }
   },
+  created () {
+    this.details()
+    this.adverse()
+    this.setTop()
+  },
   mounted () {
     // 监听滚轮
     window.addEventListener('scroll', this.initHeight)
-    this.setTop()
+    
   },
   destroyed () { // 移除监听
     window.removeEventListener('scroll', this.initHeight)
   },
   methods: {
+    details () {
+      getDetails({ docId: '123132' }).then(res => {
+        console.log(res)
+        if (res.data.error_code === 0) {
+          this.datas = res.data.data.detail
+          this.datas.tags = this.datas.tags.split(',')
+          this.buyed = !!(res.data.data.status)
+          this.collectd = res.data.data.docCang
+        }
+      })
+      getCoin({L: true}).then(res => {
+        console.log(res)
+        if (res.data.error_code === 0) {
+          this.coinNum = res.data.data.data.points.balance
+          if (this.buyed) {
+           this.btnName = '下载文档'
+          } else {
+            if (this.coinNum < this.datas.price) {
+                this.btnName = '立即充值'
+            } else {
+                this.btnName = '立即兑换'
+            }
+          }
+        }
+      })
+      
+    },
+    adverse () {
+      getAdverse({ code: '1233456', num: 1 }).then(res => {
+        console.log(res)
+        this.adsUrl = res.data.data
+      })
+    },
     setTop () {
       this.$nextTick(() => {
         // 获取到达页面顶端的值
-        const height = document.getElementById('fixedCard')
-        this.offsetTop = height.offsetTop
+        const height = document.getElementById('fixedTop')
+        this.offsetTop = height.getBoundingClientRect().top
         console.log(this.offsetTop)
       })
     },
     initHeight () {
       // 获取页面滚动距离
       const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
-      // 判断滚动距离是否大于元素到顶端距离
       this.fixed = !!(scrollTop > this.offsetTop && this.buyed)
     },
+    shoucang () {
+      if (this.collectd === 0) {
+        getAdd({ docId: '111' }).then(res => {
+          console.log(res)
+          if (res.data.error_code === 0) {
+            this.collectd = 1
+            Message({
+              message: '收藏成功',
+              type: 'success'
+            })
+          }
+        })
+      } else {
+        getRemove({ docId: '111' }).then(res => {
+          console.log(res)
+          if (res.data.error_code === 0) {
+            this.collectd = 0
+            Message({
+              message: '取消收藏',
+              type: 'warning'
+            })
+          }
+        })
+      }
+    },
     continued () {
       // this.buyed = !this.buyed;
       // this.setTop();
+    },
+    fileType (val) {
+      if (val === 1) {
+        return 'word'
+      } else if (val === 2) {
+        return 'pdf'
+      } else if (val === 3) {
+        return 'excel'
+      } else if (val === 4) {
+        return 'ppt'
+      } else if (val === 5) {
+        return 'txt'
+      } else {
+        return ''
+      }
     }
   }
 }
 </script>
 
 <style lang="scss" scoped>
+@include diy-icon('pdf', 24);
+@include diy-icon('word', 24);
+@include diy-icon('excel', 24);
+@include diy-icon('ppt', 24);
 @include diy-icon('share', 18);
 @include diy-icon('jubao', 18);
 @include diy-icon('weiguanzhu', 18);
 @include diy-icon('guanzhu', 18);
-@include diy-icon('word', 24);
+@include diy-icon('iconJianYu', 24);
 
 .c-details {
   width: 1200px;
@@ -193,11 +262,12 @@ export default {
                   flex-direction: initial;
                   align-items: center;
                   li {
+                      display: flex;
                       list-style-type: none;
+                      align-items: center;
                   }
                   .tags {
-                      width: 40px;
-                      height: 22px;
+                      padding: 2px 8px;
                       border-radius: 4px;
                       background: rgba(44, 167, 227, 0.08);
                       color: #2cb7ca;
@@ -216,13 +286,12 @@ export default {
                   }
               }
               .coin {
+                  display: flex;
+                  align-items: center;
                   span {
-                      font-size: 24px;
-                      margin-right: 4px;
+                      font-size: 20px;
+                      color: #FF3A20;
                   }
-                  color: rgba(44,183,202,1);
-                  font-size: 12px;
-                  line-height: 20px;
               }
           }
           .buyed {
@@ -239,6 +308,10 @@ export default {
               background: rgba(255,58,32,0.05)!important;
               color: rgb(255,58,32)!important;
           }
+          .heng-line {
+            margin: 8px 0;
+            background-color: #ECECEC;
+          }
           .load-doc {
               height: 52px;
               display: flex;
@@ -308,59 +381,59 @@ export default {
               }
           }
       }
+      .head-tip {
+            width: 920px;
+            height: 42px;
+            background: #fcfcfc;
+            // filter:alpha(opacity=80); //IE
+            // opacity: 0.8;   //Chrome
+            display: flex;
+            justify-content: flex-end;
+            align-items: center;
+            padding: 0 40px;
+            border-bottom: 1px solid #F2F2F4;
+            h3 {
+                display: flex;
+                align-items: center;
+                span {
+                    width: 700px;
+                    color: #686868;
+                    font-weight: 500;
+                    font-size: 16px;
+                    line-height: 24px;
+                    overflow: hidden;
+                    text-overflow:ellipsis;
+                    white-space: nowrap;
+                }
+                i {
+                    margin-right: 8px;
+                }
+            }
+            span {
+                color: #686868;
+                font-size: 14px;
+                i {
+                    display: inline-block;
+                    font-style: normal;
+                    width: 22px;
+                    height: 22px;
+                    line-height: 24px;
+                    text-align: center;
+                    border-radius: 2px;
+                    background: #FFFFFF;
+                    border: 1px solid #ECECEC;
+                }
+            }
+        }
+        .is-fixed {
+            position: fixed;
+            top: 0;
+            justify-content: space-between;
+        }
       .bottoms {
           display: flex;
           flex-direction: column;
           .page {
-              .head-tip {
-                  width: 920px;
-                  height: 42px;
-                  background: #fcfcfc;
-                  // filter:alpha(opacity=80); //IE
-                  // opacity: 0.8;   //Chrome
-                  display: flex;
-                  justify-content: flex-end;
-                  align-items: center;
-                  padding: 0 40px;
-                  border-bottom: 1px solid #F2F2F4;
-                  h3 {
-                      display: flex;
-                      align-items: center;
-                      span {
-                          width: 700px;
-                          color: #686868;
-                          font-weight: 500;
-                          font-size: 16px;
-                          line-height: 24px;
-                          overflow: hidden;
-                          text-overflow:ellipsis;
-                          white-space: nowrap;
-                      }
-                      i {
-                          margin-right: 8px;
-                      }
-                  }
-                  span {
-                      color: #686868;
-                      font-size: 14px;
-                      i {
-                          display: inline-block;
-                          font-style: normal;
-                          width: 22px;
-                          height: 22px;
-                          line-height: 24px;
-                          text-align: center;
-                          border-radius: 2px;
-                          background: #FFFFFF;
-                          border: 1px solid #ECECEC;
-                      }
-                  }
-              }
-              .is-fixed {
-                  position: fixed;
-                  top: 0;
-                  justify-content: space-between;
-              }
               .cont-p {
                   height: 1248px;
                   background: #fff;
@@ -389,76 +462,16 @@ export default {
       width: 264px;
       margin-left: 16px;
       .r-tops {
+          overflow: hidden;
           min-height: 456px;
           border-radius: 4px;
-          background: #c4c4c4;
-      }
-      .r-bott {
-          min-height: 448px;
-          border-radius: 4px;
-          background: #fff;
-          margin-top: 16px;
-          padding: 15px 12px;
-          h3 {
-              color: #686868;
-              font-size: 16px;
-              line-height: 24px;
-              font-weight: 500;
-              margin-bottom: 13px;
+        //   background: #c4c4c4;
+          img {
+              width: 100%;
+              cursor: pointer;
           }
-          .docs {
-              display: flex;
-              .imgs {
-                  position: relative;
-                  border-radius: 4px;
-                  border: 1px solid #ECECEC;
-                  img {
-                      width: 78px;
-                      height: 112px;
-                      border: 0;
-                  }
-                  i {
-                      position: absolute;
-                      right: 0;
-                      bottom: 0;
-                  }
-              }
-              .conts {
-                  margin-left: 8px;
-                  h5 {
-                      font-size: 14px;
-                      line-height: 24px;
-                      font-weight: 500;
-                      display: -webkit-box;
-                      -webkit-line-clamp:2;
-                      overflow: hidden;
-                      text-overflow: ellipsis;
-                      -webkit-box-orient: vertical;
-                  }
-                  p {
-                      color: #999999;
-                      font-size: 12px;
-                      line-height: 20px;
-                  }
-                  .d-tip {
-                      display: flex;
-                      flex-direction: initial;
-                      align-items: center;
-                      .el-divider--vertical {
-                          height: 0.8em;
-                          margin: 0 2px;
-                      }
-                      p {
-                          padding: 0 2px;
-                      }
-                  }
-                  .r-coin {
-                      color: #2CB7CA;
-                      font-size: 14px;
-                      line-height: 24px;
-                      margin-top: 2px;
-                  }
-              }
+          img:not(:last-child) {
+              margin-bottom: 5px;
           }
       }
   }

+ 1 - 3
jydocs-pc/src/views/Home.vue

@@ -125,9 +125,7 @@ import { ajaxGetTest } from '../api/modules/user'
 import { Button } from 'element-ui'
 import SearchInput from '../components/Search'
 import { getHomeActivity, getHomeHot } from '../api/modules/home'
-function recoveryPageData (key, defaultValues = {}) {
-  return sessionStorage.getItem(key) ? JSON.parse(sessionStorage.getItem(key) || '') : defaultValues
-}
+import { recoveryPageData } from '../utils'
 
 function checkType (type) {
   let typeStr = ''