bding 1 year ago
parent
commit
b05d6064cb

+ 12 - 0
src/api/report.js

@@ -281,3 +281,15 @@ export const apiPublicBannerMark = params=>{
     return post('/public/banner/mark',params)
 }
 
+
+
+/**
+ * banner图列表
+ * @param  "banner_url": "wwwwwwww",
+ * @param   "first_source": 1, //一级来源 1小程序移动 2小程序pc 3研报官网
+ * @param   "second_source": 1 //二级来源 1首页 2研报详情页
+ * @returns 
+ */
+export const apiPublicBannerList = params=>{
+    return get('/public/banner/list',params)
+}

+ 23 - 8
src/views/report/ChapterDetail.vue

@@ -7,7 +7,8 @@ import {
     apiReportDetailBanner,
     apiRddpShareImg,
     apiReportPPtImgs,
-    apiPublicBannerMark
+    apiPublicBannerMark,
+    apiPublicBannerList
 } from '@/api/report'
 import {apiApplyPermission} from '@/api/user'
 import {apiGetWechatQRCode} from '@/api/common'
@@ -292,6 +293,7 @@ onMounted(()=>{
             showPreViewImg.value=true
 	    }
     })
+    getBannerlist()
 })
 
 onBeforeRouteUpdate((to,from)=>{
@@ -366,23 +368,36 @@ const handleGoApply=async ()=>{
 
 let showDisclaimers=ref(false)//显示免责声明
 
+// banner data
+const bannerDataList =ref([])
+
 /* 点击了banner */
-const bannerClickHandler = async () => {
+const bannerClickHandler = async (item) => {
   let source = sessionStorage.getItem('platformSource')
   const res = await apiPublicBannerMark({
-    banner_url: "https://hzstatic.hzinsights.com/yb_xcx/pc_01.png",
     first_source: source == 'xcx' ? 2 : 3, //一级来源 1小程序移动 2小程序pc 3研报官网
-    second_source: 2 //二级来源 1首页 2研报详情页
+    second_source: 1 ,//二级来源 1首页 2研报详情页
+    id:item.id
   })
   if(res.code ==200){
     router.push({
       path:'/report/disseminatePage',
+      query: {
+        imgBg:item.jump_url_pc
+      }
     })
   }
-  // 详情页面
 }
 
 
+// banner 获取列表
+const getBannerlist = async () => {
+    const res = await apiPublicBannerList()
+    if(res.code ==200){
+        bannerDataList.value = res.data
+    }
+}
+
 const code_scene=computed(()=>{
     return JSON.stringify({chapterId:chapterId.value})
 })
@@ -401,9 +416,9 @@ const posterParams=computed(()=>{
     <div class="report-chapter-detail-page" v-if="info">
         <div class="hasrightaside-box">
             <div class="content-box">
-                <el-carousel height="66px" style="margin-bottom:20px;" indicator-position="none"  arrow="never">
-                    <el-carousel-item @click="bannerClickHandler">
-                        <img style="width:100%;height:66px;cursor:pointer;" src="https://hzstatic.hzinsights.com/yb_xcx/pc_01.png" alt="">
+                <el-carousel height="66px" style="margin-bottom:20px;" :interval="4000" :indicator-position="bannerDataList.length==0?'none':''" :arrow="bannerDataList.length==0?'never':''">
+                    <el-carousel-item @click="bannerClickHandler(item)" v-for="item in bannerDataList" :key="item.id">
+                        <img style="width:100%;height:66px;cursor:pointer;" :src="item.image_url_pc" alt="">
                     </el-carousel-item>
                 </el-carousel>
                 <div class="report-box">

+ 21 - 8
src/views/report/Detail.vue

@@ -6,7 +6,7 @@ import 'moment/dist/locale/zh-cn'
 import AudioBox from './components/AudioBox.vue'
 import SharePoster from '@/components/SharePoster.vue'
 import Comment from '@/components/Comment.vue'
-import {apiReportDetail,apiReportMoreRecmd,apiReportDetailBanner,apiRddpShareImg,apiReportPPtImgs,apiReportChapterAudioSet,apiPublicBannerMark} from '@/api/report'
+import {apiReportDetail,apiReportMoreRecmd,apiReportDetailBanner,apiRddpShareImg,apiReportPPtImgs,apiReportChapterAudioSet,apiPublicBannerMark,apiPublicBannerList} from '@/api/report'
 import {apiGetWechatQRCode} from '@/api/common'
 import {apiApplyPermission} from '@/api/user'
 import preLoadImg from '@/utils/preLoadImg.js'
@@ -242,6 +242,7 @@ onMounted(()=>{
             showPreViewImg.value=true
 	    }
     })
+    getBannerlist()
 })
 
 onBeforeRouteUpdate((to,from)=>{
@@ -424,22 +425,34 @@ const handleAudioSet=(item)=>{
     })
 }
 
+// banner data
+const bannerDataList =ref([])
+
 /* 点击了banner */
-const bannerClickHandler = async () => {
+const bannerClickHandler = async (item) => {
   let source = sessionStorage.getItem('platformSource')
   const res = await apiPublicBannerMark({
-    banner_url: "https://hzstatic.hzinsights.com/yb_xcx/pc_01.png",
     first_source: source == 'xcx' ? 2 : 3, //一级来源 1小程序移动 2小程序pc 3研报官网
-    second_source: 2 //二级来源 1首页 2研报详情页
+    second_source: 1 ,//二级来源 1首页 2研报详情页
+    id:item.id
   })
   if(res.code ==200){
     router.push({
       path:'/report/disseminatePage',
+      query: {
+        imgBg:item.jump_url_pc
+      }
     })
   }
-  // 详情页面
 }
 
+// banner 获取列表
+const getBannerlist = async () => {
+    const res = await apiPublicBannerList()
+    if(res.code ==200){
+        bannerDataList.value = res.data
+    }
+}
 
 // 显示引导
 let showAttention=ref(localStorage.getItem('showAttention')?false:true)
@@ -551,9 +564,9 @@ const closeShowAttentionPop=()=>{
                 </div>
                 <!-- 报告详情 -->
                 <div class="report-box" v-else>
-                    <el-carousel height="66px" style="margin-bottom:20px;" indicator-position="none"  arrow="never">
-                        <el-carousel-item @click="bannerClickHandler">
-                            <img style="width:100%;height:66px;cursor:pointer;" src="https://hzstatic.hzinsights.com/yb_xcx/pc_01.png" alt="">
+                    <el-carousel height="66px" style="margin-bottom:20px;" :interval="4000" :indicator-position="bannerDataList.length==0?'none':''" :arrow="bannerDataList.length==0?'never':''">
+                        <el-carousel-item @click="bannerClickHandler(item)" v-for="item in bannerDataList" :key="item.id">
+                            <img style="width:100%;height:66px;cursor:pointer;" :src="item.image_url_pc" alt="">
                         </el-carousel-item>
                     </el-carousel>
                     <div class="title">{{formatTitle(info.report_info)}}</div>

+ 24 - 7
src/views/report/Index.vue

@@ -4,7 +4,8 @@ import {
   apiReportIndexPageList,
   apiReportIndexNewbanner,
   apiLatestNews,
-  apiPublicBannerMark
+  apiPublicBannerMark,
+  apiPublicBannerList
 } from '@/api/report'
 import { onActivated, onMounted,onUnmounted, reactive, ref,nextTick} from "vue"
 import Search from "@/components/Search.vue"
@@ -246,27 +247,43 @@ const resetHeaderWidthHandle = () => {
   headerHight.value = headerRef.value.offsetHeight-10+'px'
 }
 
+// banner data
+const bannerDataList =ref([])
+
 /* 点击了banner */
-const bannerClickHandler = async () => {
+const bannerClickHandler = async (item) => {
   let source = sessionStorage.getItem('platformSource')
   const res = await apiPublicBannerMark({
-    banner_url: "https://hzstatic.hzinsights.com/yb_xcx/pc_01.png",
     first_source: source == 'xcx' ? 2 : 3, //一级来源 1小程序移动 2小程序pc 3研报官网
-    second_source: 1 //二级来源 1首页 2研报详情页
+    second_source: 1 ,//二级来源 1首页 2研报详情页
+    id:item.id
   })
   if(res.code ==200){
     router.push({
       path:'/report/disseminatePage',
+      query: {
+        imgBg:item.jump_url_pc
+      }
     })
   }
   // 首页
 }
 
+
+// banner 获取列表
+const getBannerlist = async () => {
+    const res = await apiPublicBannerList()
+    if(res.code ==200){
+        bannerDataList.value = res.data
+    }
+}
+
 let isMounted = ref(false);
 onMounted(() => {
   isMounted.value = true;
   handleDataToXcx()
   window.addEventListener('resize',resetHeaderWidthHandle)
+  getBannerlist()
 });
 
 onUnmounted(() => {
@@ -305,9 +322,9 @@ onActivated(()=>{
   <div class="hasrightaside-box report-index-page">
     <div class="content-box report-main" ref="contentRef">
       <div class="top-nav-wrap" ref="headerRef" :style="{'width':contentWidth}">
-        <el-carousel height="66px" style="margin-bottom:20px;padding-right: 30px" indicator-position="none" arrow="never" >
-          <el-carousel-item @click="bannerClickHandler" >
-            <img style="width:100%;height:66px;cursor:pointer;" src="https://hzstatic.hzinsights.com/yb_xcx/pc_01.png" alt="">
+        <el-carousel height="66px" style="margin-bottom:20px;padding-right: 30px" :interval="4000" :indicator-position="bannerDataList.length==0?'none':''" :arrow="bannerDataList.length==0?'never':''" >
+          <el-carousel-item @click="bannerClickHandler(item)" v-for="item in bannerDataList" :key="item.id" >
+            <img style="width:100%;height:66px;cursor:pointer;" :src="item.image_url_pc" alt="">
           </el-carousel-item>
         </el-carousel>
         <div class="flex first-nav">

+ 12 - 2
src/views/report/disseminatePage.vue

@@ -1,8 +1,18 @@
-<script setup></script>
+<script setup>
+import { ref, onMounted } from "vue";
+import { useRoute } from "vue-router";
+
+const route = useRoute();
+const imgBg = ref('');
+onMounted(() => {
+  imgBg.value = route.query.imgBg;
+
+});
+</script>
 
 <template>
   <div class="container-disseminate">
-    <img src="https://hzstatic.hzinsights.com/yb_xcx/PC_HB_01.png" alt="" />
+    <img :src="imgBg" alt="" />
   </div>
 </template>