Browse Source

报告详情新增收藏

chenlei 3 months ago
parent
commit
6b8be8dc4e
3 changed files with 62 additions and 1 deletions
  1. 8 1
      src/api/modules/report.js
  2. 29 0
      src/views/report/Detail.vue
  3. 25 0
      src/views/report/PDF.vue

+ 8 - 1
src/api/modules/report.js

@@ -8,7 +8,14 @@ export default{
   getReportDisclaimer:params=>{
     return get('/auth/disclaimer',params)
   },
-
+  // 收藏报告
+  reportCollect:params=>{
+    return post('/user/bookMark',params)
+  },
+  // 取消收藏报告
+  reportCollectCancel:params=>{
+    return post('/user/unBookMark',params)
+  },
   // 获取PDF报告详情
   getPdfReportDetail:params=>{
     return get('/report/pdf/detail',params)

+ 29 - 0
src/views/report/Detail.vue

@@ -29,6 +29,7 @@ const productId = route.query.productId
 const isSubscribe=ref(true)
 const isFree=ref(true)
 const priceNum=ref('')
+const reportCollected = ref(false)
 const riskLevelInfo=ref('')
 const visible = ref(false);
 const subscribeStatus = ref('')//expired --过期 unSubscribe--未订阅 subscribed--订阅中
@@ -69,6 +70,7 @@ async function getReportInfo() {
     reportInfo.value = detail
     riskLevelInfo.value = riskLevel
     isLogin.value=res.data.login
+    reportCollected.value = res.data.isCollect || false
     riskLevelStatus.value=res.data.riskLevelStatus
     headImgStyle.value = reportInfo.value.headResource.style ? JSON.parse(reportInfo.value.headResource.style) : []
     endImgStyle.value = reportInfo.value.endResource.style ? JSON.parse(reportInfo.value.endResource.style) : []
@@ -154,6 +156,22 @@ function changeFollowStateList(item) {
     })
 }
 
+// 点击收藏
+async function handleCollect() {
+  const data = {
+    sourceType: 'report',
+    sourceId: Number(reportId)
+  }
+  const res = reportCollected.value ? await apiReport.reportCollectCancel(data) : await apiReport.reportCollect(data)
+  if (res.Ret === 200) {
+    Message.success(reportCollected.value ? '取消收藏成功' : '收藏成功')
+    reportCollected.value = !reportCollected.value
+    // 通知更新收藏列表
+    wx.miniProgram.postMessage({
+      data: 'refreshCollectList'
+    });
+  }
+}
 
 // 显示免责声明
 const isShowMZSM = ref(false)
@@ -384,6 +402,12 @@ function goDetails(item){
     </div>
     <!-- 右侧悬浮操作栏 -->
     <div class="right-fix-box">
+      <!-- 收藏 -->
+      <svg-icon
+        @click="handleCollect"
+        class="item collect-icon"
+        :name="reportCollected ? 'collected' : 'collect'"
+      />
       <!-- 返回顶部 -->
       <div class="item back-top-img">
         <svg-icon
@@ -642,6 +666,11 @@ function goDetails(item){
     .item {
       margin-top: 10px;
     }
+    .collect-icon {
+      width: 100px;
+      height: 100px;
+      display: block;
+    }
     .back-top-img {
       width: 100px;
       height: 100px;

+ 25 - 0
src/views/report/PDF.vue

@@ -28,6 +28,7 @@ const productId = route.query.productId
 const isSubscribe=ref(true)
 const isFree=ref(true)
 const pdfUrl = ref('')
+const reportCollected = ref(false)
 const authorInfoList=ref([])
 const visible = ref(false);
 const subscribeStatus = ref('')//expired --过期 unSubscribe--未订阅 subscribed--订阅中
@@ -42,6 +43,7 @@ async function getReportInfo() {
   if (res.Ret === 200 && res.ErrCode === 0) {
     reportInfo.value = res.data
     isLogin.value=res.data.login
+    reportCollected.value = res.data.isCollect || false
     riskLevelStatus.value=res.data.riskLevelStatus
     isSubscribe.value=res.data.isSubscribe
     isFree.value=res.data.isFree
@@ -116,6 +118,23 @@ function changeFollowStateList(item) {
     })
 }
 
+// 点击收藏
+async function handleCollect() {
+  const data = {
+    sourceType: 'report',
+    sourceId: Number(reportId)
+  }
+  const res = reportCollected.value ? await apiReport.reportCollectCancel(data) : await apiReport.reportCollect(data)
+  if (res.Ret === 200) {
+    Message.success(reportCollected.value ? '取消收藏成功' : '收藏成功')
+    reportCollected.value = !reportCollected.value
+    // 通知更新收藏列表
+    wx.miniProgram.postMessage({
+      data: 'refreshCollectList'
+    });
+  }
+}
+
 // 显示免责声明
 const isShowMZSM = ref(false)
 // 显示返回顶部
@@ -218,6 +237,12 @@ function goDetails(item){
     </div>
     <!-- 右侧悬浮操作栏 -->
     <div class="right-fix-box">
+      <!-- 收藏 -->
+      <svg-icon
+        @click="handleCollect"
+        class="item collect-icon"
+        :name="reportCollected ? 'collected' : 'collect'"
+      />
       <!-- 返回顶部 -->
       <div class="item back-top-img">
         <svg-icon