Explorar el Código

Merge branch 'master' of http://8.136.199.33:3000/hongze/horzi_rai_wxa into share

bd hace 2 años
padre
commit
b44ec5a6ac

+ 21 - 7
App.vue

@@ -205,6 +205,11 @@ button {
     height: 288rpx;
     margin-bottom: 30rpx;
   }
+  .nodata_img {
+    width: 374rpx;
+    height: 288rpx;
+    margin-bottom: 50rpx;
+  }
 }
 .nodata2 {
   margin-top: 300rpx;
@@ -260,14 +265,23 @@ button {
   -ms-user-select: none;
   user-select: none;
 }
+.cancel-attention {
+  flex-shrink: 0;
+  padding: 5rpx 28rpx;
+  border-radius: 37rpx 37rpx 37rpx 37rpx;
+  font-weight: 400;
+  font-size: 24rpx;
+  background-color: #f0f0f0;
+  color: #999999;
+}
 .free-charge {
-    position: fixed;
-    display: flex;
-    align-items: center;
-    bottom: 260rpx;
-    right: 41rpx;
-    height: 156rpx;
-    z-index: 999;
+  position: fixed;
+  display: flex;
+  align-items: center;
+  bottom: 260rpx;
+  right: 41rpx;
+  height: 156rpx;
+  z-index: 999;
 }
 .footer-free-charge {
   z-index: 99999;

+ 39 - 3
config/api.js

@@ -182,13 +182,18 @@ export const Reports = {
   getTradeList: (params) => {
     return getHttp("/report/home/tradeList", params, 0);
   },
+  /* 报告搜索接口*/
+  getReportSearchReport: (params) => {
+    return getHttp("/report/searchReport", params, 0);
+  },
+
   /* 获取产业报告分类列表接口*/
   getIndustryList: (params) => {
     return getHttp("/report/home/industryList", params, 0);
   },
   /* 获取产业文章列表接口*/
   getIndustryAndArticle: (params) => {
-    return getHttp("/report/industryAndArticle/list", params, 0);
+    return getHttp("/report/searchResource", params, 0);
   },
   /* 是否置顶*/
   postToptt: (params) => {
@@ -317,6 +322,36 @@ export const activity = {
   checkAskActivity: (params) => {
     return postHttp("/activity/checkAsk", params, 0);
   },
+};
+export const Research = {
+  /* 近期更新主题列表接口 */
+  researchNewList: (params) => {
+    return getHttp("/research/theme/newList", params, 0);
+  },
+  /* 用户收藏列表接口 */
+  researchCollectionList: (params) => {
+    return getHttp("/research/collectionList", params, 0);
+  },
+  /* 主题热度/近期更新更多,列表接口 */
+  researchHotList: (params) => {
+    return getHttp("/research/hotList", params, 0);
+  },
+  /* KOL榜列表接口 */
+  researchKolList: (params) => {
+    return getHttp("/research/kolList", params, 0);
+  },
+  /* 研选作者详情接口 */
+  departmentIdDetail: (params) => {
+    return getHttp("/research/departmentId/detail", params, 0);
+  },
+  /* 研选作者详情接口 */
+  researchThemeDetail: (params) => {
+    return getHttp("/research/theme/detail", params, 0);
+  },
+  /* 热搜关键词接口 */
+  researchHotKeyWord: (params) => {
+    return getHttp("/research/hotKeyWord", params, 0);
+  },
   /*获取专项产业调研列表接口*/
   getSpecialList: (params) => {
     return getHttp("/activity/special/list", params);
@@ -356,6 +391,7 @@ export const FreeButton = {
     return postHttp("/wechat/shareImage", params, 0);
   },
 };
+
 export const Chart = {
   /*图表标签分类接口*/
   getChartPatg: (params) => {
@@ -373,8 +409,8 @@ export const Chart = {
   myChartDetail: (params) => {
     return getHttp("/chart/detail", params);
   },
-   /*图表的详情*/
-   myChartTop: (params) => {
+  /*图表的详情*/
+  myChartTop: (params) => {
     return postHttp("/chart/top", params);
   },
 };

+ 2 - 2
config/config.js

@@ -1,5 +1,5 @@
-export const baseUrl = 'http://8.136.199.33:8500/api';//小程序开发接口地址
-//export const baseUrl = 'https://cygx.hzinsights.com/api';//小程序线上接口地址
+//export const baseUrl = 'http://8.136.199.33:8500/api';//小程序开发接口地址
+export const baseUrl = 'https://cygx.hzinsights.com/api';//小程序线上接口地址
 // #ifdef H5
 export const H5baseUrl=process.env.NODE_ENV === 'development'?window.location.origin+'/':baseUrl
 // #endif 

+ 2 - 3
pageMy/reportDetail/reportDetail.vue

@@ -44,9 +44,8 @@ export default {
       access_token: "", //用户标识
       isIphoneX: false, //判断机型
       reportInfo: "",
-      //linkurl:'https://details.hzinsights.com/raiReportDtl',//线上链接地址
-      //linkurl:'http://192.168.20.72:3000/xcx_h5/raiReportDtl',//线上链接地址
-      linkurl: "http://advisoryadmin.brilliantstart.cn/xcx_h5/raiReportDtl", //链接地址
+      linkurl:'https://details.hzinsights.com/raiReportDtl',//线上链接地址
+      //linkurl: "http://advisoryadmin.brilliantstart.cn/xcx_h5/raiReportDtl", //链接地址
       showNav: false,
       id: "",
       isShowTip: false,

+ 22 - 0
pages.json

@@ -160,6 +160,27 @@
             "navigationBarTitleText": "我的提问",
             "enablePullDownRefresh": false
           }
+        },
+        {
+          "path": "recentPages/recentPages",
+          "style": {
+            "navigationBarTitleText": "近期更新主题",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "authorPages/authorPages",
+          "style": {
+            "navigationBarTitleText": "研选作者",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "researchTheme/researchTheme",
+          "style": {
+            "navigationBarTitleText": "主题详情",
+            "enablePullDownRefresh": false
+          }
         }
       ]
     },
@@ -298,6 +319,7 @@
       "van-tab": "/wxcomponents/vant/dist/tab/index",
       "van-tabs": "/wxcomponents/vant/dist/tabs/index",
       "van-transition": "/wxcomponents/vant/dist/transition/index",
+      "van-tag": "/wxcomponents/vant/dist/tag/index",
       "van-icon": "/wxcomponents/vant/dist/icon/index",
       "van-radio": "/wxcomponents/vant/dist/radio/index",
       "van-radio-group": "/wxcomponents/vant/dist/radio-group/index"

+ 404 - 201
pages/reportForm/components/researchChoose.vue

@@ -1,49 +1,106 @@
 <template>
-  <view class="resear-container" v-if="haveResearch">
+  <view class="container resear-container">
     <view class="theme">
-      <view class="theme-title">最新主题关键词</view>
-      <view class="theme-item">
-        <text @click="goDetail(item, '标的')" v-for="item in listNew" :key="item.ArticleId">{{ item.IndustryName }}</text>
+      <view class="theme-top">
+        <text class="title"> 近期更新主题: </text>
+        <view class="" @click="goRecent">
+          更多
+          <u-icon name="arrow-right" color="#BDBDBD" size="28"></u-icon>
+        </view>
+      </view>
+      <view class="theme-content">
+        <view class="theme-ul" v-for="item in themeNewList" :key="item.IndustrialManagementId">
+          <text class="text_oneLine" @click="themeDetails(item)"> # {{ item.IndustryName }}</text>
+          <image v-if="item.IsHot" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/host_report.png"></image>
+        </view>
       </view>
     </view>
-    <view class="author-list" v-for="item in dataList" :key="item.DepartmentId">
-      <view class="author-item">
-        <view class="img-box">
-          <image :src="item.ImgUrl" @click="goDetail(item, '作者')"></image>
+    <view class="announcement">
+      <view class="tab-cont">
+        <scroll-view scroll-x="true" @scroll="scrollMove" :scroll-left="scrollLeft" scroll-with-animation class="scroll-tab" :scroll-into-view="'_' + tabIndex">
+          <block v-for="(item, index) in tabBars" :key="index">
+            <view class="scroll-tab-item" :class="{ active: tagActive == item.name }" @click.stop="typeChange(item)">
+              {{ item.titel }}
+              <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/border_act.png" mode="" class="border_act" v-if="tagActive == item.name"></image>
+            </view>
+          </block>
+        </scroll-view>
+      </view>
+      <view class="content-ul" v-if="collectionList.length && tagActive == '用户'">
+        <view class="user-li" v-for="(item, index) in collectionList" :key="item.ArticleId">
+          <view class="li-item">
+            <text class="li-serial" :style="{ background: serialBackground(index) }">
+              {{ index + 1 }}
+            </text>
+            <view>
+              <text @click="goDetail(item)" style="display: inline">{{ item.Title }}</text>
+              <text class="li-industry" @click="themeDetails(item)"> # {{ item.IndustryName }} </text>
+            </view>
+          </view>
+          <view class="li-item li-bottom" style="color: #999999">
+            <view class="li-user text_oneLine" @click="authorDetails(item)">
+              <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/user_report.png"></image>
+              {{ item.NickName }}
+            </view>
+            <view class="li-item user-img">
+              <view class="img-box">
+                <image class="user-pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/examine_icon.png"></image>
+                <text>
+                  {{ item.Pv }}
+                </text>
+              </view>
+              <view class="img-box" @click="collectClick(item)">
+                <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_act.png"></image>
+                <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_ico.png"></image>
+                <text class=""> {{ item.CollectNum }}人收藏 </text>
+              </view>
+            </view>
+          </view>
         </view>
-        <text style="font-size: 28rpx; margin-top: 5rpx" @click="goDetail(item, '作者')">{{ item.NickName }}</text>
-        <text class="attention attention-cancel" @click="reportFllowDepartment(item.DepartmentId)" v-if="item.IsMyFollow">取消关注</text>
-        <text class="attention" @click="reportFllowDepartment(item.DepartmentId)" v-else>+关注</text>
       </view>
-      <view class="label-item">
-        <text v-for="val in item.List" :key="val.ArticleId" @click="goDetail(val)">{{ val.IndustryName }}</text>
+      <view class="content-ul" v-if="hotList.length && tagActive == '主题'">
+        <view class="hot-li" v-for="(item, index) in hotList" :key="item.IndustrialManagementId">
+          <view class="li-item hot-item">
+            <view style="display: flex" class="text_oneLine hot-new" @click="themeDetails(item)">
+              <text class="li-serial serial-number" :style="{ background: serialBackground(index) }">
+                {{ index + 1 }}
+              </text>
+              <text class="text_oneLine" style="display: inline"> # {{ item.IndustryName }} </text>
+              <image class="new-img" v-if="item.IsNew" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/new_icon.png"></image>
+            </view>
+            <text :class="item.IsFollw ? 'cancel-attention' : 'attention'" @click="isAttention(item, '主题')">{{ item.IsFollw ? "取消关注" : "+ 关注" }}</text>
+          </view>
+          <view class="li-item read-more" @click="themeDetails(item)">
+            <text class="text-box text_oneLine" v-for="val in item.IndustrialSubjectList" :key="val.IndustrialSubjectId">
+              {{ val.SubjectName }}
+            </text>
+          </view>
+        </view>
       </view>
-      <view class="lucency">
-        <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/broadside-ico.png" mode=""></image>
+      <view class="content-ul" v-if="kolList.length && tagActive == '专家'">
+        <view class="kol-li" v-for="(item, index) in kolList" :key="item.DepartmentId">
+          <text class="li-serial serial-number" :style="{ background: serialBackground(index) }">
+            {{ index + 1 }}
+          </text>
+          <image @click="authorDetails(item)" :src="item.ImgUrl" v-if="item.ImgUrl"></image>
+          <view class="li-item kol-item">
+            <view class="item-top">
+              <text @click="authorDetails(item)">
+                {{ item.NickName }}
+              </text>
+              <text :class="item.IsFollw ? 'cancel-attention' : 'attention'" @click="isAttention(item, '专家')">{{ item.IsFollw ? "取消关注" : "+ 关注" }}</text>
+            </view>
+            <text @click="themeDetails(val)" class="kol-text text_oneLine" v-for="val in item.List" :key="val.IndustrialManagementId"> # {{ val.IndustryName }} </text>
+          </view>
+        </view>
       </view>
     </view>
-    <u-loadmore :status="status" icon-type="flower" :load-text="loadText" margin-top="20" v-if="totalPage > 1" />
-    <view class="bottom-env"> 【研选系列】是机构投资者分享研究内容和原创观点的平台,试行阶段,限时免费,欢迎有内容贡献意愿的客户联系对口销售了解参与方式 </view>
-    <u-modal
-      v-model="goFollowShow"
-      :content-style="{ fontSize: '32rpx' }"
-      @confirm="goFollowShowBtn"
-      :show-cancel-button="isCancelBtn"
-      :confirm-text="confirmText"
-      @cancel="isCancelBtn = false"
-      :show-title="false"
-      :cancel-style="{ borderRight: '1rpx solid #EBEBEB' }"
-      :confirm-style="{ fontWeight: '700' }"
-    >
-      <view class="slot-content">
-        <rich-text :nodes="accounts"></rich-text>
-      </view>
-    </u-modal>
+    <view class="content-bottom">最新榜单您已掌握,明天再刷刷看~</view>
   </view>
 </template>
 
 <script>
-import { Reports } from "@/config/api.js";
+import { Reports, Research, Report } from "@/config/api.js";
 import { Throttle } from "@/config/util.js";
 export default {
   props: {
@@ -67,30 +124,23 @@ export default {
   },
   data() {
     return {
-      dataList: [],
-      pageSize: 10,
-      page_no: 1,
-      listNew: [],
-      haveData: true,
-      status: "loadmore",
-      loadText: {
-        loadmore: "上拉加载更多",
-        loading: "加载中",
-        nomore: "已经到底了",
-      },
-      totalPage: "",
-      haveResearch: false,
-      goFollowShow: false,
-      accounts: "",
-      confirmText: "知道了",
-      isCancelBtn: false,
+      themeNewList: [],
+      tagActive: "用户",
+      collectionList: [], //用户收藏
+      hotList: [],
+      kolList: [],
+      tabBars: [
+        { titel: "用户收藏榜", name: "用户" },
+        { titel: "主题热度榜", name: "主题" },
+        { titel: "KOL榜", name: "专家" },
+      ],
     };
   },
   watch: {
     strategyIndex: {
       handler(val) {
         if (val == 5) {
-          this.industryListByDepartment();
+          this.researchNewList();
         }
       },
       immediate: true,
@@ -115,195 +165,348 @@ export default {
         }
       },
     },
+    tagActive: {
+      handler(val) {
+        val == "用户" ? this.researchCollectionList() : val == "主题" ? this.researchHotList() : this.researchKolList();
+      },
+      immediate: true,
+    },
   },
   methods: {
-    reportFllowDepartment(id) {
-      if (!this.$store.state.isAuth && !this.$store.state.isBind) {
-          Reports.reportFllowDepartment({
-            DepartmentId: id,
-          }).then((res) => {
-            if (res.Ret == 200) {
-              if (res.Data.Status == 1) {
-                this.goFollowShow = true;
-                this.confirmText = res.Data.GoFollow ? "去关注" : "知道了";
-                if (res.Data.GoFollow) {
-                  this.accounts = `作者关注成功 <br> 想要及时获取该作者新发报告时的消息推送,请关注【查研观向小助手】公众号`;
-                  this.isCancelBtn = true;
-                } else {
-                  this.accounts = `作者关注成功 <br> 请关注【查研观向小助手】公众号,及时获取该作者的报告更新提醒`;;
-                }
-              } else {
-                uni.showToast({
-                  title: "已取消关注",
-                  duration: 2000,
-                  icon: "none",
-                });
-              }
-              this.dataList.forEach((item) => {
-                if (item.DepartmentId == id) {
-                  item.IsMyFollow = !item.IsMyFollow;
-                }
-              });
-            }
-          });
-      }else if (this.$store.state.isAuth){
-             //未授权
-             uni.navigateTo({
-               url: "/pageMy/authGuide/authGuide",
-             });
-         } else if(!this.$store.state.isAuth && this.$store.state.isBind) {
-          //已授权未绑定
-          uni.navigateTo({
-            url: "/pageMy/login/login",
-          });
-         }
-     
+    //近期更新主题
+    async researchNewList() {
+      const res = await Research.researchNewList({ ChartPermissionId: this.tabAct });
+      if (res.Ret === 200) {
+        this.themeNewList = res.Data.List || [];
+      }
     },
-    industryListByDepartment() {
-      Reports.industryListByDepartment({
-        PageSize: this.pageSize,
-        CurrentIndex: this.page_no,
-        ChartPermissionId: this.tabAct,
-      }).then((res) => {
-        if (res.Ret === 200) {
-          this.haveResearch = res.Data.HaveResearch;
-          if (!res.Data.HaveResearch) {
-            this.$util.modalShow("", "您暂无查看研选权限", "", () => {
-              uni.reLaunch({
-                url: "/pages/index/index",
-              });
-            });
-          }
-          this.status = this.page_no < res.Data.Paging.Pages ? "loadmore" : "nomore";
-          this.totalPage = res.Data.Paging.Pages; //总页数
-          this.listNew = res.Data.ListnNew || [];
-          if (this.page_no === 1) {
-            this.dataList = res.Data.List || [];
-            this.haveData = this.dataList.length ? true : false;
-            if (this.refresh) {
-              uni.stopPullDownRefresh();
-              this.refresh = false;
-            }
+    //用户收藏榜
+    async researchCollectionList() {
+      const res = await Research.researchCollectionList({ ChartPermissionId: this.tabAct });
+      if (res.Ret === 200) {
+        this.collectionList = res.Data.List || [];
+      }
+    },
+    //主题热度/近期更新更多
+    async researchHotList() {
+      const res = await Research.researchHotList({ ChartPermissionId: this.tabAct, ThemeType: 1 });
+      if (res.Ret === 200) {
+        this.hotList = res.Data.List || [];
+      }
+    },
+    //KOL榜列表接口
+    async researchKolList() {
+      const res = await Research.researchKolList({ ChartPermissionId: this.tabAct });
+      if (res.Ret === 200) {
+        this.kolList = res.Data.List || [];
+      }
+    },
+    //tabs切换
+    typeChange(item) {
+      this.tagActive = item.name;
+    },
+    //关注
+    async isAttention(item, val) {
+      const res = val === "主题" ? await Reports.reportFllow({ IndustrialManagementId: item.IndustrialManagementId }) : await Reports.reportFllowDepartment({ DepartmentId: item.DepartmentId });
+      if (res.Ret === 200) {
+        item.IsFollw = !item.IsFollw;
+        if (res.Data.Status == 1) {
+          this.$parent.goFollowShow = true;
+          this.$parent.confirmText = res.Data.GoFollow ? "去关注" : "知道了";
+          if (res.Data.GoFollow) {
+            this.$parent.accounts = `${val == "主题" ? "产业" : "作者"}关注成功 <br> 想要及时获取该${val === "主题" ? "产业内容的更新推送" : "作者的报告更新提示"},请关注【查研观向小助手】公众号`;
+            this.$parent.isCancelBtn = true;
           } else {
-            this.dataList = this.dataList.concat(res.Data.List);
+            this.$parent.accounts = `${val == "主题" ? "产业" : "作者"}` + `关注成功<br>请关注【查研观向小助手】公众号,及时获取${val === "主题" ? "产业" : "作者"}报告更新提醒`;
           }
+        } else {
+          uni.showToast({
+            title: "已取消关注",
+            icon: "none",
+            duration: 2000,
+          });
         }
-      });
+      }
     },
-    goDetail(item, genre = "") {
-      const { ArticleId, IndustrialManagementId, DepartmentId } = item;
-      let id = IndustrialManagementId || "";
-      let article = ArticleId || "";
-      let genreId = DepartmentId || "";
+    //去往更多主题
+    goRecent() {
       uni.navigateTo({
-        url: "/reportPages/industrialReport/industrialReport?id=" + id + "&idArticle=" + article + "&idGenre=" + genreId + "&type=研选" + "&isGenre=" + genre,
+        url: "/reportPages/recentPages/recentPages?id=" + this.tabAct,
       });
     },
-    goFollowShowBtn() {
-      if (this.confirmText == "去关注") {
-        uni.navigateTo({
-          url: "/activityPages/accountsOfficial/accountsOfficial",
-        });
+    //收藏
+    async collectClick(item) {
+      const res = await Report.collectRpt({ ArticleId: item.ArticleId });
+      if (res.Ret === 200) {
+        item.IsCollect = !item.IsCollect;
+        item.IsCollect
+          ? (item.CollectNum += 1) &&
+            uni.showToast({
+              title: "收藏成功",
+              icon: "none",
+              duration: 2000,
+            })
+          : (item.CollectNum -= 1);
+        !item.IsCollect &&
+          uni.showToast({
+            title: "已取消收藏",
+            icon: "none",
+            duration: 2000,
+          });
       }
-      this.goFollowShow = false;
+    },
+    //去往作者详情
+    authorDetails(item) {
+      uni.navigateTo({
+        url: "/reportPages/authorPages/authorPages?id=" + item.DepartmentId,
+      });
+    },
+    //去往文章详情页面
+    goDetail(item) {
+      this.$store.dispatch("checkHandle", "/pageMy/reportDetail/reportDetail?id=" + item.ArticleId);
+    },
+    //去往主题详情
+    themeDetails(item) {
+      this.$store.dispatch("checkHandle", "/reportPages/researchTheme/researchTheme?id=" + item.IndustrialManagementId);
+    },
+    //计算遍历的颜色
+    serialBackground(index) {
+      index += 1;
+      return index == 1 ? "#D7584F" : index == 2 ? "#E98033" : index == 3 ? "#FDD367" : "#D3D3D3";
     },
   },
 };
 </script>
 
-<style lang="scss" scoped>
+<style lang="scss">
 .resear-container {
   padding: 220rpx 0 0;
   background-color: #f7f7f7;
   .theme {
-    padding: 30rpx 34rpx 0;
-    margin-bottom: 20rpx;
-    background: #ffffff;
-    .theme-title {
-      font-size: 32rpx;
-      font-weight: bold;
-      margin-bottom: 20rpx;
-      color: #333333;
+    background-color: #fff;
+    padding: 0 30rpx 15rpx;
+    margin-bottom: 8rpx;
+    .theme-top {
+      display: flex;
+      color: #999999;
+      align-items: center;
+      font-size: 28rpx;
+      height: 95rpx;
+      justify-content: space-between;
+      .title {
+        color: #333;
+        font-size: 32rpx;
+        font-weight: 500;
+      }
     }
-    .theme-item {
+    .theme-content {
       display: flex;
       flex-wrap: wrap;
-      text {
-        box-sizing: border-box;
-        padding: 13rpx 45rpx;
-        color: #2c83ff;
-        font-size: 28rpx;
-        background: #ebf4ff;
-        border-radius: 35rpx;
-        margin: 0 30rpx 30rpx 0;
-        overflow: hidden;
-        white-space: nowrap;
-        text-overflow: ellipsis;
+      .theme-ul {
+        width: 50%;
+        display: flex;
+        align-items: center;
+        padding-right: 15rpx;
+        line-height: 59rpx;
+        image {
+          width: 26rpx;
+          height: 28rpx;
+          margin-left: 8rpx;
+          flex-shrink: 0;
+        }
       }
     }
   }
-  .author-list {
-    position: relative;
-    margin-bottom: 10rpx;
-    padding: 20rpx 30rpx 20rpx 55rpx;
-    background: #ffffff;
-    display: flex;
-    .author-item {
-      height: 240rpx;
-      padding: 0rpx 78rpx 0rpx 0;
-      border-right: 2rpx solid #e5e5e5;
-      text-align: center;
+
+  .content-ul {
+    margin: 20rpx 0 0;
+    border-top: 1px solid #f6f6f6;
+    .user-li,
+    .hot-li,
+    .kol-li {
+      padding: 30rpx 0 20rpx;
+      border-bottom: 1px solid #f6f6f6;
+    }
+    .user-img {
+      width: 40%;
+      justify-content: space-between;
       .img-box {
-        width: 140rpx;
-        height: 140rpx;
+        display: flex;
+        align-items: center;
+      }
+      .user-pv {
+        width: 21rpx;
+        height: 16rpx;
+      }
+    }
+    .kol-li {
+      display: flex;
+      align-items: center;
+      padding-bottom: 30rpx;
+      image {
+        width: 120rpx;
+        height: 120rpx;
+        border-radius: 8rpx;
+        margin: 0 20rpx 0 15rpx;
         overflow: hidden;
-        border-radius: 10rpx;
-        image {
-          width: 100%;
-          height: 100%;
-        }
+        flex-shrink: 0;
       }
-
-      .attention {
-        margin-top: 6rpx;
-        padding: 4rpx 20rpx;
-        font-size: 24rpx;
-        border-radius: 30rpx;
-        color: #ffffff;
-        background: #2c83ff;
+    }
+    .kol-item {
+      display: flex;
+      flex-wrap: wrap;
+      width: 480rpx;
+      height: 120rpx;
+      align-items: baseline;
+      margin-bottom: 20rpx;
+      .item-top {
+        width: 100%;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        font-size: 29rpx;
+        font-weight: 700;
       }
-      .attention-cancel {
-        color: #666666 !important;
-        background: #f8f8fa !important;
+      .kol-text {
+        width: 50%;
+        margin-top: 10rpx;
+        flex-shrink: 0;
       }
     }
-    .label-item {
-      padding: 10rpx 0 0 34rpx;
-      overflow: hidden;
-      white-space: nowrap;
-      text {
-        color: #2c83ff;
-        font-size: 28rpx;
-        margin-bottom: 12rpx;
+
+    .li-serial {
+      width: 26rpx;
+      height: 26rpx;
+      line-height: 26rpx;
+      color: #fff;
+      font-size: 20rpx;
+      text-align: center;
+      border-radius: 4rpx 4rpx 4rpx 4rpx;
+      margin: 7rpx 10rpx 0 20rpx;
+      flex-shrink: 0;
+    }
+    .serial-number {
+      margin-top: 0 !important;
+    }
+    .li-item {
+      display: flex;
+      .li-industry {
+        color: #3385ff;
+        margin-left: 20rpx;
+        display: inline-block;
+      }
+      .li-user {
+        margin-left: 46rpx;
+      }
+      .li-title {
+        display: flex;
       }
     }
-    .lucency {
-      position: absolute;
-      top: 0;
-      right: 0;
-      width: 80rpx;
-      height: 100%;
+    .li-bottom {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      margin-top: 30rpx;
+      width: 100%;
       image {
+        width: 23rpx;
+        height: 26rpx;
+        margin-right: 10rpx;
+      }
+    }
+    .read-more {
+      margin-left: 30rpx;
+      margin-top: 20rpx;
+      display: flex;
+      flex-wrap: wrap;
+      .text-box {
+        margin-bottom: 27rpx;
+        margin-right: 40rpx;
+        padding: 0;
+        font-size: 24rpx;
+        color: #408fff;
+        width: 170rpx;
+        height: 46rpx;
+        line-height: 46rpx;
+        text-align: center !important;
+        background: url(~@/static/img/report_bg.png) no-repeat;
+        background-size: 100% 100%;
+        text-indent: 0em;
+      }
+    }
+    .attention {
+      flex-shrink: 0;
+      padding: 5rpx 28rpx;
+      border-radius: 37rpx 37rpx 37rpx 37rpx;
+      color: #fff;
+      background: #3385ff;
+      font-weight: 400;
+      font-size: 24rpx;
+    }
+    .hot-item {
+      justify-content: space-between;
+      align-items: center;
+      .hot-new {
+        align-items: center;
+        flex: 1;
+        padding-right: 20rpx;
+      }
+      .new-img {
+        width: 26rpx;
+        height: 28rpx;
+        margin-left: 15rpx;
+        flex-shrink: 0;
+      }
+    }
+  }
+  .announcement {
+    background: #fff;
+    padding: 0 30rpx;
+    .tab-cont {
+      height: 115rpx;
+      background-color: #fff;
+      font-size: 32rpx;
+      .scroll-tab {
+        position: relative;
         width: 100%;
-        height: 100%;
+        white-space: nowrap;
+        display: flex;
+        justify-content: space-around;
+      }
+      .scroll-tab-item {
+        text-align: center;
+        display: inline-block;
+        padding: 32rpx 8rpx 30rpx 8rpx;
+        border-bottom: 8rpx solid transparent;
+        margin-right: 60rpx;
+        position: relative;
+        color: #999999;
+        font-size: 32rpx;
+        &:last-child {
+          margin-right: 0;
+        }
+        &.active {
+          border-bottom: none;
+          color: #333;
+          font-weight: 500;
+        }
+        .border_act {
+          width: 80%;
+          height: 8rpx;
+          position: absolute;
+          bottom: 0;
+          left: 50%;
+          transform: translateX(-50%);
+        }
       }
     }
   }
-  .bottom-env {
-    background: #f7f7f7;
-    padding: 10rpx 50rpx;
-    color: #999999;
-    font-size: 26rpx;
+  .content-bottom {
+    background-color: #fff;
+    text-align: center;
+    line-height: 100rpx;
+    color: #c4c4c4;
+    font-size: 20rpx;
   }
 }
 </style>

+ 47 - 49
pages/reportForm/reportForm.vue

@@ -412,49 +412,48 @@ export default {
     },
     //点击关注的图标
     reportFllow(id) {
-         if (!this.$store.state.isAuth && !this.$store.state.isBind) {
-           Reports.reportFllow({
-             IndustrialManagementId: id,
-           }).then((res) => {
-             if (res.Ret === 200) {
-               if (res.Data.Status == 1) {
-                 this.goFollowShow = true;
-                 this.confirmText = res.Data.GoFollow ? "去关注" : "知道了";
-                 if (res.Data.GoFollow) {
-                   this.accounts = `产业关注成功 <br> 想要及时获取该产业内容的更新推送,请关注【查研观向小助手】公众号`;
-                   this.isCancelBtn = true;
-                 } else {
-                   this.accounts = "产业关注成功<br>请关注【查研观向小助手】公众号,及时获取产业报告更新提醒";
-                 }
-               }
-               this.industryList.forEach((key) => {
-                 if (key.IndustrialManagementId == id) {
-                   if (key.IsFollow == 1) {
-                     key.IsFollow = 0;
-                     uni.showToast({
-                       title: "已取消关注",
-                       icon: "none",
-                       duration: 2000,
-                     });
-                   } else {
-                     key.IsFollow = 1;
-                   }
-                 }
-               });
-             }
-           });
-         }else if (this.$store.state.isAuth){
-             //未授权
-             uni.navigateTo({
-               url: "/pageMy/authGuide/authGuide",
-             });
-         } else if(!this.$store.state.isAuth && this.$store.state.isBind) {
-          //已授权未绑定
-          uni.navigateTo({
-            url: "/pageMy/login/login",
-          });
-         }
-
+      if (!this.$store.state.isAuth && !this.$store.state.isBind) {
+        Reports.reportFllow({
+          IndustrialManagementId: id,
+        }).then((res) => {
+          if (res.Ret === 200) {
+            if (res.Data.Status == 1) {
+              this.goFollowShow = true;
+              this.confirmText = res.Data.GoFollow ? "去关注" : "知道了";
+              if (res.Data.GoFollow) {
+                this.accounts = `产业关注成功 <br> 想要及时获取该产业内容的更新推送,请关注【查研观向小助手】公众号`;
+                this.isCancelBtn = true;
+              } else {
+                this.accounts = "产业关注成功<br>请关注【查研观向小助手】公众号,及时获取产业报告更新提醒";
+              }
+            }
+            this.industryList.forEach((key) => {
+              if (key.IndustrialManagementId == id) {
+                if (key.IsFollow == 1) {
+                  key.IsFollow = 0;
+                  uni.showToast({
+                    title: "已取消关注",
+                    icon: "none",
+                    duration: 2000,
+                  });
+                } else {
+                  key.IsFollow = 1;
+                }
+              }
+            });
+          }
+        });
+      } else if (this.$store.state.isAuth) {
+        //未授权
+        uni.navigateTo({
+          url: "/pageMy/authGuide/authGuide",
+        });
+      } else if (!this.$store.state.isAuth && this.$store.state.isBind) {
+        //已授权未绑定
+        uni.navigateTo({
+          url: "/pageMy/login/login",
+        });
+      }
     },
     goFollowShowBtn() {
       if (this.confirmText == "去关注") {
@@ -503,7 +502,7 @@ export default {
     }),
     /* 搜索 */
     async goSearch() {
-      await this.$store.dispatch("checkHandle", "/reportPages/reportSearch/reportSearch");
+      await this.$store.dispatch("checkHandle", "/reportPages/reportSearch/reportSearch?id="+this.tabAct_id);
     },
     /* 初始 */
     initList() {
@@ -552,7 +551,7 @@ export default {
   },
   /* 触底 */
   onReachBottom: Throttle(function () {
-    if (this.strategyIndex == 4 || this.strategyIndex == 5) {
+    if (this.strategyIndex == 4) {
       this.isNum++;
       return;
     }
@@ -576,7 +575,7 @@ export default {
     wx.stopPullDownRefresh();
   }),
   onShow() {
-     this.$store.dispatch("checkHandle",'noGO')
+    this.$store.dispatch("checkHandle", "noGO");
     if (this.tabAct_id) {
       this.$store.dispatch("statistics", {
         PageType: "Report",
@@ -617,9 +616,8 @@ export default {
 };
 </script>
 
-<style scoped lang="scss">
+<style lang="scss" scoped>
 @import "./index.scss";
-
 .content-intimate {
   position: fixed;
   display: flex;
@@ -646,7 +644,7 @@ export default {
       text-align: center;
     }
   }
-
+  
   image {
     width: 156rpx;
     height: 100%;

+ 246 - 0
reportPages/authorPages/authorPages.vue

@@ -0,0 +1,246 @@
+<template>
+  <view class="container author-container">
+    <view class="author-box">
+      <view class="author-img">
+        <image :src="list.ImgUrl"></image>
+        <text class="">{{ list.NickName }}</text>
+      </view>
+      <text :class="!isFollw ? 'cancel-attention' : 'attention'" @click="isAttention">
+        {{ isFollw ? "+ 关注": "取消关注"  }}
+      </text>
+    </view>
+    <view class="author-num">
+      <view class="num-box">
+        <text class="">{{ list.FllowNum }}</text>
+        <text class="text">粉丝</text>
+      </view>
+      <view class="num-box">
+        <text class="">{{ list.ArticleNum }}</text>
+        <text class="text">报告</text>
+      </view>
+      <view class="num-box">
+        <text class="">{{ list.CollectNum }}</text>
+        <text class="text">获得收藏</text>
+      </view>
+    </view>
+    <view class="content-item" v-for="item in list.List" :key="item.ArticleId">
+      <view class="item-title">
+        <text style="display: inline" @click="goDetail(item)">
+          {{ item.Title }}
+        </text>
+        <text class="item-industry" @click="themeDetails(item)">&nbsp;&nbsp;&nbsp;#{{ item.IndustryName }}</text>
+      </view>
+      <view class="item-more">
+        <text>{{ item.PublishDate }}</text>
+        <view class="pv-ollect">
+          <view>
+            <image class="pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/examine_icon.png"></image>
+            {{ item.Pv }}
+          </view>
+          <view @click="collectClick(item)">
+            <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_act.png"></image>
+            <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_ico.png"></image>
+            {{ item.CollectNum }}人收藏
+          </view>
+        </view>
+      </view>
+    </view>
+    <u-modal
+      v-model="goFollowShow"
+      :content-style="{ fontSize: '32rpx' }"
+      @confirm="goFollowShowBtn"
+      :show-cancel-button="isCancelBtn"
+      :confirm-text="confirmText"
+      @cancel="isCancelBtn = false"
+      :show-title="false"
+      :cancel-style="{ borderRight: '1rpx solid #EBEBEB' }"
+      :confirm-style="{ fontWeight: '700' }"
+    >
+      <view class="slot-content">
+        <rich-text :nodes="accounts"></rich-text>
+      </view>
+    </u-modal>
+  </view>
+</template>
+
+<script>
+import { Reports, Research, Report } from "@/config/api.js";
+
+export default {
+  data() {
+    return {
+      list: [],
+      isFollw: false,
+      goFollowShow: false,
+      confirmText: "知道了",
+      isCancelBtn: false,
+      accounts: "",
+    };
+  },
+  methods: {
+    async departmentIdDetail(id) {
+      const res = await Research.departmentIdDetail({
+        DepartmentId: id || 56,
+      });
+      if (res.Ret === 200) {
+        this.list = res.Data || {};
+        this.isFollw = res.Data.IsFollw;
+      }
+    },
+    //关注
+    async isAttention() {
+      const res = await Reports.reportFllowDepartment({ DepartmentId: this.list.DepartmentId });
+      if (res.Ret === 200) {
+        this.isFollw = !this.isFollw;
+        if (res.Data.Status == 1) {
+          this.goFollowShow = true;
+          this.confirmText = res.Data.GoFollow ? "去关注" : "知道了";
+          if (res.Data.GoFollow) {
+            this.accounts = `作者关注成功 <br> 想要及时获取该作者的报告更新提示,请关注【查研观向小助手】公众号`;
+            this.isCancelBtn = true;
+          } else {
+            this.accounts = "作者关注成功<br>请关注【查研观向小助手】公众号,及时获取作者的报告更新提示";
+          }
+        } else {
+          uni.showToast({
+            title: "已取消关注",
+            icon: "none",
+            duration: 2000,
+          });
+        }
+      }
+    },
+    //收藏
+    async collectClick(item) {
+      const res = await Report.collectRpt({ ArticleId: item.ArticleId });
+      if (res.Ret === 200) {
+        item.IsCollect = !item.IsCollect;
+        item.IsCollect
+          ? (item.CollectNum += 1) &&
+            uni.showToast({
+              title: "收藏成功",
+              icon: "none",
+              duration: 2000,
+            })
+          : (item.CollectNum -= 1);
+        !item.IsCollect &&
+          uni.showToast({
+            title: "已取消收藏",
+            icon: "none",
+            duration: 2000,
+          });
+      }
+    },
+    //点击了去关注
+    goFollowShowBtn() {
+      if (this.confirmText == "去关注") {
+        uni.navigateTo({
+          url: "/activityPages/accountsOfficial/accountsOfficial",
+        });
+      }
+      this.goFollowShow = false;
+    },
+    //去往文章详情页面
+    goDetail(item) {
+      this.$store.dispatch("checkHandle", "/pageMy/reportDetail/reportDetail?id=" + item.ArticleId);
+    },
+    //去往主题详情
+    themeDetails(item) {
+      this.$store.dispatch("checkHandle", "/reportPages/researchTheme/researchTheme?id=" + item.IndustrialManagementId);
+    },
+  },
+  onLoad(options) {
+    this.departmentIdDetail(options.id);
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.author-container {
+  background-color: #f5f5f5;
+  color: #333333;
+  padding: 30rpx;
+  .author-box {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-bottom: 30rpx;
+    .author-img {
+      display: flex;
+      align-items: center;
+      font-size: 34rpx;
+      font-weight: 600;
+      image {
+        width: 81rpx;
+        height: 81rpx;
+        border-radius: 8rpx;
+        margin-right: 30rpx;
+      }
+    }
+  }
+  .attention {
+    flex-shrink: 0;
+    padding: 7rpx 28rpx;
+    border-radius: 37rpx 37rpx 37rpx 37rpx;
+    color: #fff;
+    background: #3385ff;
+    font-weight: 400;
+    font-size: 24rpx;
+  }
+  .cancel-attention {
+    background-color: #d3d3d3 !important;
+  }
+  .author-num {
+    padding: 25rpx 48rpx 25rpx 77rpx;
+    margin-bottom: 20rpx;
+    background-color: #fff;
+    display: flex;
+    justify-content: space-between;
+    border-radius: 4rpx;
+    .num-box {
+      text-align: center;
+      font-size: 28rpx;
+      font-weight: 600;
+      .text {
+        font-size: 24rpx;
+        font-weight: 400;
+        color: #999999;
+      }
+    }
+  }
+  .content-item {
+    background-color: #fff;
+    padding: 30rpx 20rpx 0;
+    .item-title {
+      font-weight: 500;
+      .item-industry {
+        margin-left: 10rpx;
+        color: #3385ff;
+        display: inline-block;
+      }
+    }
+    .item-more {
+      display: flex;
+      justify-content: space-between;
+      color: #cecece;
+      margin: 20rpx 0 0;
+      padding-bottom: 30rpx;
+      border-bottom: 1rpx solid #ececec;
+      .pv-ollect {
+        display: flex;
+        align-items: center;
+        width: 40%;
+        justify-content: space-between;
+        image {
+          width: 22rpx;
+          height: 21rpx;
+          margin-right: 10rpx;
+        }
+        .pv {
+          height: 16rpx;
+        }
+      }
+    }
+  }
+}
+</style>

+ 170 - 0
reportPages/recentPages/recentPages.vue

@@ -0,0 +1,170 @@
+<template>
+  <view class="container recent-content">
+    <view class="hot-li" v-for="(item, index) in hotList" :key="item.IndustrialManagementId">
+      <view class="li-item hot-item">
+        <view style="display: flex" class="text_oneLine hot-new" @click="themeDetails(item)">
+          <text class="li-serial" :style="{ background: serialBackground(index) }">
+            {{ index + 1 }}
+          </text>
+          <text class="text_oneLine" style="display: inline"> # {{ item.IndustryName }} </text>
+          <image  class="new-img" v-if="item.IsHot" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/host_report.png"></image>
+        </view>
+        <text :class="item.IsFollw ? 'cancel-attention' : 'attention'" @click="isAttention(item)">{{ item.IsFollw ? "取消关注" : "+ 关注" }}</text>
+      </view>
+      <view class="li-item read-more" @click="themeDetails(item)">
+        <text class="text-box text_oneLine" v-for="val in item.IndustrialSubjectList" :key="val.IndustrialSubjectId">
+          {{ val.SubjectName }}
+        </text>
+      </view>
+    </view>
+    <u-modal
+      v-model="goFollowShow"
+      :content-style="{ fontSize: '32rpx' }"
+      @confirm="goFollowShowBtn"
+      :show-cancel-button="isCancelBtn"
+      :confirm-text="confirmText"
+      @cancel="isCancelBtn = false"
+      :show-title="false"
+      :cancel-style="{ borderRight: '1rpx solid #EBEBEB' }"
+      :confirm-style="{ fontWeight: '700' }"
+    >
+      <view class="slot-content">
+        <rich-text :nodes="accounts"></rich-text>
+      </view>
+    </u-modal>
+  </view>
+</template>
+
+<script>
+import { Reports, Research } from "@/config/api.js";
+export default {
+  data() {
+    return {
+      hotList: [],
+      goFollowShow: false,
+      confirmText: "知道了",
+      isCancelBtn: false,
+      accounts: "",
+    };
+  },
+  methods: {
+    //主题热度/近期更新更多
+    async researchHotList(id) {
+      const res = await Research.researchHotList({ ChartPermissionId: id, ThemeType: 2 });
+      if (res.Ret === 200) {
+        this.hotList = res.Data.List || [];
+      }
+    },
+    //关注
+    async isAttention(item) {
+      const res = await Reports.reportFllow({ IndustrialManagementId: item.IndustrialManagementId });
+      if (res.Ret === 200) {
+        item.IsFollw = !item.IsFollw;
+        if (res.Data.Status == 1) {
+          this.goFollowShow = true;
+          this.confirmText = res.Data.GoFollow ? "去关注" : "知道了";
+          if (res.Data.GoFollow) {
+            this.accounts = `产业关注成功 <br> 想要及时获取该产业内容的更新推送,请关注【查研观向小助手】公众号`;
+            this.isCancelBtn = true;
+          } else {
+            this.accounts = "产业关注成功<br>请关注【查研观向小助手】公众号,及时获取产业报告更新提醒";
+          }
+        } else {
+          uni.showToast({
+            title: "已取消关注",
+            icon: "none",
+            duration: 2000,
+          });
+        }
+      }
+    },
+    //点击了去关注
+    goFollowShowBtn() {
+      if (this.confirmText == "去关注") {
+        uni.navigateTo({
+          url: "/activityPages/accountsOfficial/accountsOfficial",
+        });
+      }
+      this.goFollowShow = false;
+    },
+    //计算遍历的颜色
+    serialBackground(index) {
+      index += 1;
+      return index == 1 ? "#D7584F" : index == 2 ? "#E98033" : index == 3 ? "#FDD367" : "#D3D3D3";
+    },
+    //去往主题详情
+    themeDetails(item) {
+      this.$store.dispatch("checkHandle", "/reportPages/researchTheme/researchTheme?id=" + item.IndustrialManagementId);
+    },
+  },
+  onLoad(options) {
+    this.researchHotList(options.id);
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.recent-content {
+  padding: 30rpx 30rpx 50rpx;
+  .hot-li {
+    padding: 30rpx 0 20rpx;
+    border-bottom: 1px solid #f6f6f6;
+  }
+  .hot-item {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .hot-new {
+      align-items: center;
+      flex: 1;
+      padding-right: 20rpx;
+    }
+    .new-img {
+      width: 26rpx;
+      height: 28rpx;
+      margin-left: 15rpx;
+      flex-shrink: 0;
+    }
+  }
+  .li-serial {
+    width: 26rpx;
+    height: 26rpx;
+    line-height: 26rpx;
+    color: #fff;
+    font-size: 20rpx;
+    text-align: center;
+    border-radius: 4rpx 4rpx 4rpx 4rpx;
+    margin: 0rpx 10rpx 0 20rpx;
+    flex-shrink: 0;
+  }
+  .attention {
+    flex-shrink: 0;
+    padding: 5rpx 28rpx;
+    border-radius: 37rpx 37rpx 37rpx 37rpx;
+    color: #fff;
+    background: #3385ff;
+    font-weight: 400;
+    font-size: 24rpx;
+  }
+  .read-more {
+    margin-left: 30rpx;
+    margin-top: 20rpx;
+    display: flex;
+    flex-wrap: wrap;
+    .text-box {
+      margin-bottom: 27rpx;
+      margin-right: 40rpx;
+      padding: 0;
+      font-size: 24rpx;
+      color: #408fff;
+      width: 170rpx;
+      height: 46rpx;
+      line-height: 46rpx;
+      text-align: center !important;
+      background: url(~@/static/img/report_bg.png) no-repeat;
+      background-size: 100% 100%;
+      text-indent: 0em;
+    }
+  }
+}
+</style>

+ 308 - 161
reportPages/reportSearch/reportSearch.vue

@@ -1,16 +1,7 @@
 <template>
   <view class="searchTarget-container container">
     <view class="searchTarget-header">
-      <input
-        type="text"
-        placeholder="请输入产业名称或标的名称"
-        placeholder-class="sea_ipt_placeholder"
-        class="sea_ipt"
-        v-model="searchTxt"
-        focus="true"
-        confirm-type="search"
-        @confirm="searchHandle"
-      />
+      <input type="text" placeholder="请输入关键字" placeholder-class="sea_ipt_placeholder" class="sea_ipt" v-model="searchTxt" focus="true" confirm-type="search" @confirm="searchHandle" />
       <icon type="search" size="15" class="sea_ico" />
       <view class="ipt-right">
         <icon type="clear" size="16" color="#E0E0E0" v-show="searchTxt" @click="clearIpt" />
@@ -18,92 +9,191 @@
         <text @click="searchHandle" style="color: #3385ff">搜索</text>
       </view>
     </view>
+    <view class="radio-content">
+      <van-radio-group :value="radioSelect" @change="onChangeRadio" direction="horizontal">
+        <van-radio icon-size="16" name="1">搜报告</van-radio>
+        <van-radio icon-size="16" name="2">搜资源包</van-radio>
+      </van-radio-group>
+    </view>
     <view class="search-cont">
       <template v-if="!isResult">
-        <view class="search-cont-top" v-if="historySearchList.length">
+        <view class="search-cont-top">
           <view class="cont-tit">
-            <text>搜索历史</text>
-            <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/empty_ico.png" class="empty_ico" @click="clearHistory"></image>
+            <text>热搜关键词:</text>
           </view>
           <view class="targetList">
-            <view class="target-item" v-for="(item, index) in historySearchList" :key="index" @click="chooseTarget(item)">{{ item }}</view>
+            <view class="target-item" v-for="(item, index) in hotKeyWord" :key="index" @click="chooseTarget(item.KeyWord)"># {{ item.KeyWord }}</view>
           </view>
         </view>
         <view class="search-cont-top">
           <view class="cont-tit">
-            <text>弘则推荐</text>
+            <text>弘则推荐:</text>
+          </view>
+          <view class="targetList">
+            <view class="target-item" v-for="(item, index) in keywordList" :key="index" @click="chooseTarget(item)"># {{ item }}</view>
+          </view>
+        </view>
+        <view class="search-cont-top" v-if="historySearchList.length">
+          <view class="cont-tit">
+            <text>搜索历史:</text>
+            <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/empty_ico.png" class="empty_ico" @click="clearHistory"></image>
           </view>
           <view class="targetList">
-            <view class="target-item" v-for="(item, index) in keywordList" :key="index" @click="chooseTarget(item)">{{ item }}</view>
+            <block v-for="(item, index) in historySearchList" :key="index">
+              <view v-if="index < 8" class="target-item" @click="chooseTarget(item)"># {{ item }}</view>
+            </block>
           </view>
         </view>
       </template>
       <template v-else>
         <block v-if="haveResult">
-          <view class="">
-            <view class="report-ul" v-if="resultList.length > 0">
+          <view class="content-list" v-if="radioSelect == '2'">
+            <block v-if="ListHz.length">
               <view class="resource">
-                <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/zybico.jpg" mode=""></image>
+                <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/zybico.jpg"></image>
                 <text>弘则资源包</text>
               </view>
-              <view class="report-item" v-for="(item, index) in resultList" :key="index">
-                <view class="box-text" @click="goDetail(item)">
-                  <view class="" style="padding-left: 30rpx">
+              <text style="height: 1rpx; background: #ececec"></text>
+              <view class="list-ui" v-for="item in ListHz" :key="item.IndustrialManagementId" @click="themeDetails(item)">
+                <view class="item-title">
+                  <text>
                     {{ item.IndustryName }}
+                  </text>
+                  <view class="publish">
+                    {{ item.PublishDate }}更新
+                    <u-icon name="arrow-right" color="#BDBDBD" size="34"></u-icon>
                   </view>
-                  <view class="text-time">
-                    <text style="padding-right: 20rpx">{{ item.UpdateTime }}更新</text>
+                </view>
+                <view class="read-more" v-if="item.IndustrialSubjectList">
+                  <text class="text-box text_oneLine" v-for="val in item.IndustrialSubjectList" :key="val.IndustrialSubjectId">
+                    {{ val.SubjectName }}
+                  </text>
+                </view>
+              </view>
+            </block>
+            <block v-if="ListYx.length">
+              <text style="height: 10rpx; background: #ececec"></text>
+              <view class="resource">
+                <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/zybico.jpg"></image>
+                <text>研选主题</text>
+              </view>
+              <text style="height: 1rpx; background: #ececec"></text>
+              <view class="list-ui" v-for="item in ListYx" :key="item.IndustrialManagementId" @click="themeDetails(item)">
+                <view class="item-title">
+                  <text>
+                    {{ item.IndustryName }}
+                  </text>
+                  <view class="publish">
+                    {{ item.PublishDate }}更新
                     <u-icon name="arrow-right" color="#BDBDBD" size="34"></u-icon>
                   </view>
                 </view>
-                <view class="" v-if="item.IndustrialSubjectList.length > 6">
-                  <u-read-more :shadow-style="shadowStyle" close-text="展开" color="#D1D1D1" :show-height="item.IndustrialSubjectList.length > 6 ? 170 : 200" :toggle="true">
-                    <view class="arrow-box">
-                      <view @click="goDetail(item)" class="box-subject" v-for="key in item.IndustrialSubjectList" :key="key.RecommendedIndex">
-                        {{ key.SubjectName }}
-                      </view>
-                    </view>
-                  </u-read-more>
+                <view class="read-more" @click="themeDetails(item)" v-if="item.IndustrialSubjectList">
+                  <text class="text-box text_oneLine" v-for="val in item.IndustrialSubjectList" :key="val.IndustrialSubjectId">
+                    {{ val.SubjectName }}
+                  </text>
+                </view>
+              </view>
+            </block>
+          </view>
+          <view class="content-report" v-if="radioSelect == '1'">
+            <block v-if="ListYx.length">
+              <view class="resource">
+                <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/report_Yx.png"></image>
+                <text>研选报告</text>
+              </view>
+              <text style="height: 1rpx; background: #ececec"></text>
+              <view class="content-item" v-for="item in ListYx" :key="item.ArticleId">
+                <view class="item-user">
+                  <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/user_report.png"></image>
+                  <text> {{ item.NickName }}</text>
                 </view>
-                <view class="" v-else @click="goDetail(item)">
-                  <view class="arrow-box">
-                    <view class="box-subject" v-for="key in item.IndustrialSubjectList" :key="key.RecommendedIndex">
-                      {{ key.SubjectName }}
+                <view class="item-title">
+                  <text style="display: inline" @click="goDetailReport(item)">
+                    {{ item.Title }}
+                  </text>
+                  <text class="item-industry" v-if="item.IndustryName" @click="themeDetails(item)">&nbsp;&nbsp;&nbsp;#{{ item.IndustryName }}</text>
+                </view>
+                <view class="item-more">
+                  <text>{{ item.PublishDate }}</text>
+                  <view class="pv-ollect">
+                    <view>
+                      <image class="pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/examine_icon.png"></image>
+                      {{ item.Pv }}
+                    </view>
+                    <view @click="collectClick(item)">
+                      <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_act.png"></image>
+                      <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_ico.png"></image>
+                      {{ item.CollectNum }}人收藏
                     </view>
                   </view>
                 </view>
               </view>
-            </view>
-            <view class="report-ul" v-if="indList.length > 0">
-              <view class="resource industry-box">
-                <image src="https://hongze.oss-cn-shanghai.aliyuncs.com/static/images/202111/20211104/QbTGTNhD9MxYp24cJ7V5WpCN0oNl.png" mode=""></image>
-                <text>研选报告</text>
+            </block>
+            <block v-if="ListHz.length">
+              <text style="height: 10rpx; background: #ececec"></text>
+              <view class="resource">
+                <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/report_Hz.png"></image>
+                <text>弘则报告</text>
               </view>
-              <view class="ind-item" v-for="item in indList" :key="item.ArticleId" @click="goDetailIndust(item.ArticleId)">
-                <view class="">
-                  <text>{{ item.Title }}</text>
-                  <view class="time-industry">
-                    <text class="time">{{ item.PublishDate }}</text>
-                    <text>{{ item.IndustryName }}</text>
+              <text style="height: 1rpx; background: #ececec"></text>
+              <view class="content-item" v-for="item in ListHz" :key="item.ArticleId">
+                <!--    <view class="item-user">
+                  <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/user_report.png"></image>
+                  <text> {{ item.NickName }}</text>
+                </view> -->
+                <view class="item-title">
+                  <text style="display: inline" @click="goDetailReport(item)">
+                    {{ item.Title }}
+                  </text>
+                  <text class="item-industry" @click="themeDetails(item)" v-if="item.IndustryName">&nbsp;&nbsp;&nbsp;#{{ item.IndustryName }}</text>
+                </view>
+                <view class="item-more">
+                  <text>{{ item.PublishDate }}</text>
+                  <view class="pv-ollect">
+                    <view>
+                      <image class="pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/examine_icon.png"></image>
+                      {{ item.Pv }}
+                    </view>
+                    <view @click="collectClick(item)">
+                      <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_act.png"></image>
+                      <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_ico.png"></image>
+                      {{ item.CollectNum }}人收藏
+                    </view>
                   </view>
                 </view>
-                <u-icon class="ico" name="arrow-right" color="#BDBDBD" size="34"></u-icon>
               </view>
-            </view>
+            </block>
           </view>
         </block>
         <view class="nodata" v-else>
-          <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/act_search.png" mode="" class="nodata_ico"></image>
+          <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/act_search.png" mode="" class="nodata_img"></image>
           <text>未找到您想搜索的内容</text>
+          <text> 正式客户可联系销售免费发起新调研主题 </text>
         </view>
       </template>
     </view>
+    <u-modal
+      v-model="goFollowShow"
+      :content-style="{ fontSize: '32rpx' }"
+      @confirm="goFollowShowBtn"
+      :show-cancel-button="isCancelBtn"
+      :confirm-text="confirmText"
+      @cancel="isCancelBtn = false"
+      :show-title="false"
+      :cancel-style="{ borderRight: '1rpx solid #EBEBEB' }"
+      :confirm-style="{ fontWeight: '700' }"
+    >
+      <view class="slot-content">
+        <rich-text :nodes="accounts"></rich-text>
+      </view>
+    </u-modal>
     <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
 <script>
-import { Search, Reports } from "@/config/api.js";
+import { Search, Reports, Research, Report } from "@/config/api.js";
 import { Debounce, Throttle } from "@/config/util.js";
 import freeCharge from "@/components/freeCharge";
 let app = getApp({ allowDefault: true });
@@ -124,6 +214,7 @@ export default {
       page_no: 1,
       pageSize: 10,
       totalPage: 0,
+      hotKeyWord: [],
       loadText: {
         loadmore: "上拉加载更多",
         loading: "加载中",
@@ -133,6 +224,13 @@ export default {
       shadowStyle: {
         backgroundImage: "none",
       },
+      radioSelect: "",
+      ListHz: [],
+      ListYx: [],
+      goFollowShow: false,
+      confirmText: "知道了",
+      isCancelBtn: false,
+      accounts: "",
     };
   },
   watch: {
@@ -146,6 +244,16 @@ export default {
     freeCharge,
   },
   methods: {
+    async researchHotKeyWord() {
+      const res = await Research.researchHotKeyWord();
+      if (res.Ret === 200) {
+        this.hotKeyWord = res.Data.List || [];
+      }
+    },
+    onChangeRadio(value) {
+      this.radioSelect = value.detail;
+      this.clearIpt();
+    },
     /* 获取关键词 */
     getKeyWord() {
       Search.getKeys().then((res) => {
@@ -160,6 +268,10 @@ export default {
       this.SecName = item;
       this.resultList = [];
       this.indList = [];
+      if (!this.historySearchList.includes(this.searchTxt)) {
+        this.historySearchList.unshift(this.searchTxt);
+        this.$db.set("historySearchListReport", JSON.stringify(this.historySearchList));
+      }
       this.getDataList();
     },
     // 键盘输入过程中
@@ -197,17 +309,22 @@ export default {
       }
     }),
     // 查找数据
-    getDataList() {
+    async getDataList() {
       this.isResult = true;
-      Reports.getIndustryAndArticle({
-        KeyWord: this.searchTxt,
-      }).then((res) => {
-        if (res.Ret === 200) {
-          this.resultList = res.Data.IndList || [];
-          this.indList = res.Data.ArtList || [];
-          this.haveResult = this.resultList.length > 0 || this.indList.length > 0;
-        }
-      });
+      const res =
+        this.radioSelect == 2
+          ? await Reports.getIndustryAndArticle({
+              KeyWord: this.searchTxt,
+            })
+          : await Reports.getReportSearchReport({
+              KeyWord: this.searchTxt,
+            });
+      if (res.Ret === 200) {
+        this.ListHz = res.Data.ListHz || [];
+        this.ListYx = res.Data.ListYx || [];
+        console.log(this.ListHz, this.ListYx);
+        this.haveResult = this.ListHz.length > 0 || this.ListYx.length > 0;
+      }
     },
     // 点击数据列表修改数据
     itemClick(item) {
@@ -226,6 +343,10 @@ export default {
       this.historySearchList = [];
       this.$db.del("historySearchListReport");
     },
+    //去往文章详情页面
+    goDetailReport(item) {
+      this.$store.dispatch("checkHandle", "/pageMy/reportDetail/reportDetail?id=" + item.ArticleId);
+    },
     /* 进入详情 校验是否有该品种权限 */
     goDetail(item) {
       uni.navigateTo({
@@ -235,8 +356,43 @@ export default {
     goDetailIndust(id) {
       this.$store.dispatch("checkHandle", "/pageMy/reportDetail/reportDetail?id=" + id);
     },
+    //去往主题详情
+    themeDetails(item) {
+      this.$store.dispatch("checkHandle", "/reportPages/researchTheme/researchTheme?id=" + item.IndustrialManagementId);
+    },
+    //收藏
+    async collectClick(item) {
+      const res = await Report.collectRpt({ ArticleId: item.ArticleId });
+      if (res.Ret === 200) {
+        item.IsCollect = !item.IsCollect;
+        item.IsCollect
+          ? (item.CollectNum += 1) &&
+            uni.showToast({
+              title: "收藏成功",
+              icon: "none",
+              duration: 2000,
+            })
+          : (item.CollectNum -= 1);
+        !item.IsCollect &&
+          uni.showToast({
+            title: "已取消收藏",
+            icon: "none",
+            duration: 2000,
+          });
+      }
+    },
+    //点击了去关注
+    goFollowShowBtn() {
+      if (this.confirmText == "去关注") {
+        uni.navigateTo({
+          url: "/activityPages/accountsOfficial/accountsOfficial",
+        });
+      }
+      this.goFollowShow = false;
+    },
   },
   onLoad(options) {
+    this.radioSelect = options.id == 31 ? "1" : "2";
     if (options.text) {
       this.searchTxt = options.text;
       this.getDataList();
@@ -250,6 +406,7 @@ export default {
   onShow() {
     this.$store.dispatch("statistics", { PageType: "ReportSearch" });
     this.getKeyWord();
+    this.researchHotKeyWord();
   },
   /**
    * 用户点击分享
@@ -267,11 +424,8 @@ export default {
 
 <style lang="scss">
 .searchTarget-container {
-  background-color: #f6f6f6;
+  background-color: #fff;
   padding-bottom: 30rpx;
-  .report-ul {
-    margin-bottom: 20rpx;
-  }
   .searchTarget-header {
     padding: 0 34rpx;
     width: 100%;
@@ -321,14 +475,26 @@ export default {
       }
     }
   }
+  .radio-content {
+    width: 100%;
+    padding-left: 58rpx;
+    background-color: #fff;
+    position: fixed;
+    height: 70rpx;
+    top: 128rpx;
+    left: 0;
+    z-index: 99;
+    display: flex;
+  }
   .resource {
+    padding: 0 30rpx;
+    background-color: #fff;
     margin-top: 4rpx;
     height: 91rpx;
     width: 100%;
     display: flex;
     align-items: center;
     justify-content: center;
-    background-color: #fff;
     color: #333333;
     font-size: 30rpx;
     image {
@@ -337,69 +503,49 @@ export default {
       margin-right: 10rpx;
     }
   }
-  .report-item {
-    margin-top: 10rpx;
-    width: 100%;
-    background-color: #fff;
-    .box-text {
-      display: flex;
-      justify-content: space-between;
+  .content-list {
+    .list-ui {
       background-color: #fff;
+      margin-top: 2rpx;
+    }
+    .item-title {
+      display: flex;
       align-items: center;
+      justify-content: space-between;
+      height: 100rpx;
+      border-bottom: 1px solid #f6f6f6;
       padding: 0 30rpx;
-      height: 91rpx;
-      color: #333333;
-      font-size: 30rpx;
-      .text-time {
+      background-color: #fff;
+      .publish {
         display: flex;
+        align-items: center;
         color: #999999;
-        font-size: 26rpx;
+        font-style: 26rpx;
       }
     }
-    .arrow-box {
+    .read-more {
+      margin-top: 20rpx;
       display: flex;
       flex-wrap: wrap;
-      border-top: 3rpx solid #f6f6f6;
-      padding: 30rpx 30rpx 0;
-      .box-subject {
-        margin-bottom: 30rpx;
-        margin-left: 40rpx;
-        background: url(../../static/img/report_bg.png) no-repeat;
-        background-size: 100% 100%;
-        width: 170rpx;
-        height: 46rpx;
-        color: #408fff;
-        text-align: center !important;
+      margin-left: 30rpx;
+      .text-box {
+        margin-bottom: 27rpx;
+        margin-right: 15rpx;
+        padding: 0;
         font-size: 24rpx;
+        color: #408fff;
+        width: 216rpx;
+        height: 46rpx;
         line-height: 46rpx;
+        text-align: center !important;
+        background: url(~@/static/img/report_bg.png) no-repeat;
+        background-size: 100% 100%;
         text-indent: 0em;
       }
     }
   }
-  .industry-box {
-    margin-bottom: 3rpx;
-  }
-  .ind-item {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    padding: 30rpx 30rpx 28rpx 58rpx;
-    background-color: #fff;
-    margin-bottom: 10rpx;
-    .time-industry {
-      display: flex;
-      margin-top: 30rpx;
-      font-size: 26rpx;
-      color: #2c83ff;
-      .time {
-        color: #666666;
-        margin-right: 20rpx;
-        flex-shrink: 0;
-      }
-    }
-  }
   .search-cont {
-    padding-top: 130rpx;
+    padding-top: 180rpx;
     .search-cont-top {
       padding: 0 34rpx 0;
       margin-bottom: 10rpx;
@@ -408,9 +554,9 @@ export default {
         margin-bottom: 0;
       }
       .cont-tit {
-        color: #666;
-        font-size: 28rpx;
-        margin-bottom: 30rpx;
+        font-size: 32rpx;
+        margin-bottom: 20rpx;
+        font-weight: 500;
         display: flex;
         justify-content: space-between;
         .empty_ico {
@@ -421,16 +567,10 @@ export default {
       .targetList {
         display: flex;
         flex-wrap: wrap;
-        // justify-content: space-between;
+        font-size: 28rpx;
         .target-item {
-          padding: 4rpx 18rpx;
-          color: #4a4a4a;
-          font-size: 26rpx;
-          // border: 1rpx solid #3385ff;
-          background-color: #f7f7f7;
-          margin-bottom: 30rpx;
-          margin-right: 30rpx;
-          border-radius: 20rpx;
+          width: 50%;
+          margin-bottom: 20rpx;
         }
       }
     }
@@ -465,46 +605,53 @@ export default {
       background-color: #f7f7f7;
     }
   }
-  .tab-cont {
-    position: fixed;
-    top: 128rpx;
-    width: 100%;
-    padding: 0 26rpx;
-    background-color: #fff;
-    font-size: 32rpx;
-    z-index: 99;
-    box-shadow: 0 3rpx 6rpx rgba(187, 216, 255, 0.2);
-    .scroll-tab {
-      width: 100%;
-      white-space: nowrap;
-    }
-    .scroll-tab-item {
-      // flex-grow: 1;
-      text-align: center;
-      display: inline-block;
-      padding: 0 8rpx 30rpx 8rpx;
-      margin-right: 40rpx;
-      border-bottom: 8rpx solid transparent;
-      position: relative;
-      &:last-child {
-        margin-right: 0;
+  .content-report {
+    .content-item {
+      background-color: #fff;
+      padding: 35rpx 20rpx 0;
+      .item-title {
+        font-weight: 500;
+        .item-industry {
+          margin-left: 10rpx;
+          color: #3385ff;
+          display: inline-block;
+        }
       }
-      &.active {
-        border-bottom: none;
-        color: #2c83ff;
-        font-weight: 700;
+      .item-user {
+        display: flex;
+        align-items: center;
+        color: #999999;
+        font-size: 28rpx;
+        margin-bottom: 20rpx;
+        image {
+          width: 23rpx;
+          height: 26rpx;
+          margin-right: 20rpx;
+        }
       }
-      .border_act {
-        width: 100%;
-        height: 8rpx;
-        position: absolute;
-        bottom: 0;
-        left: 0;
+      .item-more {
+        display: flex;
+        justify-content: space-between;
+        color: #cecece;
+        margin: 20rpx 0 0;
+        padding-bottom: 30rpx;
+        border-bottom: 1rpx solid #ececec;
+        .pv-ollect {
+          display: flex;
+          align-items: center;
+          width: 40%;
+          justify-content: space-between;
+          image {
+            width: 22rpx;
+            height: 21rpx;
+            margin-right: 10rpx;
+          }
+          .pv {
+            height: 16rpx;
+          }
+        }
       }
     }
   }
-  .u-line {
-    display: none !important;
-  }
 }
 </style>

+ 261 - 0
reportPages/researchTheme/researchTheme.vue

@@ -0,0 +1,261 @@
+<template>
+  <view class="container theme-content">
+    <view class="content-top">
+      <text class="text_oneLine"> # {{ themeList.IndustryName }}</text>
+      <text :class="!isFollw ? 'cancel-attention' : 'attention'" class="follw" @click="isAttention">
+        {{ isFollw ? "取消关注" : "+ 关注" }}
+      </text>
+    </view>
+    <view class="read-more">
+      <text class="text-box text_oneLine" @click="scrollGo(item.IndustrialSubjectId)" v-for="item in themeList.ListSubject" :key="item.IndustrialSubjectId">
+        {{ item.SubjectName }}
+      </text>
+    </view>
+    <view class="content-item" :id="'tabItem-' + item.IndustrialSubjectId" v-for="item in themeList.List" :key="item.ArticleId">
+      <view class="item-user" @click="authorDetails(item)">
+        <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/user_report.png"></image>
+        <text> {{ item.NickName }}</text>
+      </view>
+      <view class="item-title">
+        <text style="display: inline" @click="goDetail(item)">
+          {{ item.Title }}
+        </text>
+        <text class="item-industry" v-if="item.SubjectName">&nbsp;&nbsp;&nbsp;#{{ item.SubjectName }}</text>
+      </view>
+      <view class="item-more">
+        <text>{{ item.PublishDate }}</text>
+        <view class="pv-ollect">
+          <view>
+            <image class="pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/examine_icon.png"></image>
+            {{ item.Pv }}
+          </view>
+          <view @click="collectClick(item)">
+            <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_act.png"></image>
+            <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/collect_ico.png"></image>
+            {{ item.CollectNum }}人收藏
+          </view>
+        </view>
+      </view>
+    </view>
+    <u-modal
+      v-model="goFollowShow"
+      :content-style="{ fontSize: '32rpx' }"
+      @confirm="goFollowShowBtn"
+      :show-cancel-button="isCancelBtn"
+      :confirm-text="confirmText"
+      @cancel="isCancelBtn = false"
+      :show-title="false"
+      :cancel-style="{ borderRight: '1rpx solid #EBEBEB' }"
+      :confirm-style="{ fontWeight: '700' }"
+    >
+      <view class="slot-content">
+        <rich-text :nodes="accounts"></rich-text>
+      </view>
+    </u-modal>
+  </view>
+</template>
+
+<script>
+import { Reports, Research, Report } from "@/config/api.js";
+export default {
+  data() {
+    return {
+      themeList: [],
+      isFollw: false,
+      goFollowShow: false,
+      confirmText: "知道了",
+      isCancelBtn: false,
+      accounts: "",
+    };
+  },
+  methods: {
+    async researchThemeDetail(id) {
+      const res = await Research.researchThemeDetail({ IndustrialManagementId: id });
+      if (res.Ret === 200) {
+        this.themeList = res.Data || {};
+        this.isFollw = res.Data.IsFollw;
+      }
+    },
+    //关注
+    async isAttention(item) {
+      const res = await Reports.reportFllow({ IndustrialManagementId: this.themeList.IndustrialManagementId });
+      if (res.Ret === 200) {
+        this.isFollw = !this.isFollw;
+        if (res.Data.Status == 1) {
+          this.goFollowShow = true;
+          this.confirmText = res.Data.GoFollow ? "去关注" : "知道了";
+          if (res.Data.GoFollow) {
+            this.accounts = `主题关注成功 <br> 想要及时获取该主题内容的更新推送,请关注【查研观向小助手】公众号`;
+            this.isCancelBtn = true;
+          } else {
+            this.accounts = "主题关注成功<br>请关注【查研观向小助手】公众号,及时获取产业报告更新提醒";
+          }
+        } else {
+          uni.showToast({
+            title: "已取消关注",
+            icon: "none",
+            duration: 2000,
+          });
+        }
+      }
+    },
+    //点击了去关注
+    goFollowShowBtn() {
+      if (this.confirmText == "去关注") {
+        uni.navigateTo({
+          url: "/activityPages/accountsOfficial/accountsOfficial",
+        });
+      }
+      this.goFollowShow = false;
+    },
+    //收藏
+    async collectClick(item) {
+      const res = await Report.collectRpt({ ArticleId: item.ArticleId });
+      if (res.Ret === 200) {
+        item.IsCollect = !item.IsCollect;
+        item.IsCollect
+          ? (item.CollectNum += 1) &&
+            uni.showToast({
+              title: "收藏成功",
+              icon: "none",
+              duration: 2000,
+            })
+          : (item.CollectNum -= 1);
+        !item.IsCollect &&
+          uni.showToast({
+            title: "已取消收藏",
+            icon: "none",
+            duration: 2000,
+          });
+      }
+    },
+    //去往文章详情页面
+    goDetail(item) {
+      this.$store.dispatch("checkHandle", "/pageMy/reportDetail/reportDetail?id=" + item.ArticleId);
+    },
+    //去往作者详情
+    authorDetails(item) {
+      uni.navigateTo({
+        url: "/reportPages/authorPages/authorPages?id=" + item.DepartmentId,
+      });
+    },
+    //点击后滚动
+    scrollGo(item) {
+      uni.pageScrollTo({
+        duration: 300,
+        selector: "#" + "tabItem-" + item,
+      });
+    },
+  },
+  onLoad(options) {
+    this.researchThemeDetail(options.id);
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.theme-content {
+  padding: 20rpx;
+  .content-top {
+    height: 88rpx;
+    width: 100%;
+    padding: 0 20rpx;
+    background-color: #f2f2f2;
+    text-align: center;
+    line-height: 88rpx;
+    position: relative;
+    color: #000;
+    .follw {
+      position: absolute;
+      right: 30rpx;
+      top: 50%;
+      transform: translateY(-50%);
+    }
+    .attention {
+      flex-shrink: 0;
+      padding: 0 28rpx;
+      line-height: 46rpx;
+      height: 48rpx;
+      border-radius: 37rpx 37rpx 37rpx 37rpx;
+      color: #fff;
+      font-weight: 400;
+      font-size: 24rpx;
+      background-color: #999;
+
+    }
+    .cancel-attention {
+      background: #3385ff;
+      color: #fff;
+      height: 48rpx;
+      line-height: 40rpx;
+    }
+  }
+  .read-more {
+    margin-top: 40rpx;
+    display: flex;
+    flex-wrap: wrap;
+    padding-bottom: 10rpx;
+    border-bottom: 1px solid #ececec;
+    .text-box {
+      margin-bottom: 27rpx;
+      margin-right: 20rpx;
+      padding: 0;
+      font-size: 24rpx;
+      color: #408fff;
+      width: 217rpx;
+      height: 46rpx;
+      line-height: 46rpx;
+      text-align: center !important;
+      background: url(~@/static/img/report_bg.png) no-repeat;
+      background-size: 100% 100%;
+      text-indent: 0em;
+    }
+  }
+  .content-item {
+    background-color: #fff;
+    padding: 30rpx 20rpx 0;
+    .item-title {
+      font-weight: 500;
+      .item-industry {
+        margin-left: 10rpx;
+        color: #3385ff;
+        display: inline-block;
+      }
+    }
+    .item-user {
+      display: flex;
+      align-items: center;
+      color: #999999;
+      font-size: 28rpx;
+      margin-bottom: 20rpx;
+      image {
+        width: 23rpx;
+        height: 26rpx;
+        margin-right: 20rpx;
+      }
+    }
+    .item-more {
+      display: flex;
+      justify-content: space-between;
+      color: #cecece;
+      margin: 20rpx 0 0;
+      padding-bottom: 30rpx;
+      border-bottom: 1rpx solid #ececec;
+      .pv-ollect {
+        display: flex;
+        align-items: center;
+        width: 40%;
+        justify-content: space-between;
+        image {
+          width: 22rpx;
+          height: 21rpx;
+          margin-right: 10rpx;
+        }
+        .pv {
+          height: 16rpx;
+        }
+      }
+    }
+  }
+}
+</style>