Browse Source

Merge branch 'master' into 12.0.1

bding 1 year ago
parent
commit
5d009ed2a2

+ 60 - 8
activityPages/activityDetail/activityDetail.vue

@@ -122,7 +122,7 @@
               <view class="item-right dustrial-content">
                 <view class="item" v-for="item in detailData.Listndustrial" :key="item.IndustrialManagementId">
                   <view :class="['dustrial-li', item.IsJump && 'dustrial-item']" @click="goDustrialHandler(item)">{{ item.IndustryName }} </view>
-                  <image v-if="item.IndustryNewLabel"  class="new_icon" src="https://hzstatic.hzinsights.com/cygx/icon/new_report.png" mode=""></image>
+                  <image v-if="item.IndustryNewLabel" class="new_icon" src="https://hzstatic.hzinsights.com/cygx/icon/new_report.png" mode=""></image>
                 </view>
               </view>
             </view>
@@ -172,7 +172,7 @@
               <view class="item-left">网络参会:</view>
               <view class="item-right content-item-link" v-if="[1, 2].includes(detailData.ActivityTypeId) && detailData.IsLimitPeople && !detailData.IsSignup"> 请报名获取 </view>
               <view class="item-right content-item-link" style="color: #376cbb" v-else>
-                <view class="text_oneLine" @click="content - itemBtn">{{ detailData.OnlineParticipation }}</view>
+                <view class="text_oneLine" @click="networkBtn">{{ detailData.OnlineParticipation }}</view>
                 <view class="copy-link" @click="copyLink(1)">复制链接</view>
               </view>
             </view>
@@ -256,7 +256,7 @@
                 </view>
               </block>
               <view class="content-bottom" v-if="detailData.ActiveState == 2 && detailData.ActivityTypeId == 1">
-                <view class="make-conference" @click="askingGo('提问')">
+                <view class="make-conference make-conference-remind" @click="askingGo('提问')">
                   实时提问
                   <text>会议过程中,分析师可替您提问专家</text>
                 </view>
@@ -554,10 +554,14 @@ export default {
     // 跳转新的小程序
     networkBtn() {
       if (this.detailData.OnlineParticipation.includes("http")) {
+        console.log(1);
+
         uni.navigateTo({
-          url: "/activityPages/content-itemAttend/content-itemAttend?url=" + this.detailData.OnlineParticipation,
+          url: "/activityPages/networkAttend/networkAttend?url=" + this.detailData.OnlineParticipation,
         });
       } else {
+        console.log(2);
+
         uni.navigateToMiniProgram({
           appId: "wxade30ff0c4ee757d",
           path: this.detailData.OnlineParticipation,
@@ -578,10 +582,26 @@ export default {
     },
     // 提问
     async askingGo(type = "") {
-      await activity.checkAskActivity({ ActivityId: Number(this.id), PageRouter: this.$store.state.pageRouterActivity });
-      uni.navigateTo({
-        url: "/activityPages/generationAsk/generationAsk?id=" + this.id + "&type=" + type,
-      });
+      const res = await activity.checkAskActivity({ ActivityId: Number(this.id), PageRouter: this.$store.state.pageRouterActivity });
+      if (res.Ret === 200) {
+        if (res.Data.SignupStatus === "Success") {
+          uni.navigateTo({
+            url: "/activityPages/generationAsk/generationAsk?id=" + this.id + "&type=" + type,
+          });
+        } else {
+          uni.showModal({
+            confirmText: "知道了",
+            confirmColor: "#376cbb",
+            content: res.Msg || res.Data.PopupMsg,
+            showCancel: false,
+            success: (res) => {
+              if (res.confirm) {
+                this.getActivityDetail();
+              }
+            },
+          });
+        }
+      }
     },
 
     // 复制的操作
@@ -957,5 +977,37 @@ export default {
     height: 48rpx;
     margin: -20rpx 0 0 -30rpx;
   }
+  .sign-in-img-box {
+    width: 704rpx;
+    height: 1121rpx;
+    background-color: #fff;
+    border-radius: 8rpx;
+    overflow: hidden;
+    image {
+      width: 100%;
+      height: calc(100% - 108rpx);
+    }
+    .button-box {
+      display: flex;
+      align-items: center;
+      height: 102rpx;
+      border-top: 1rpx solid #f0f0f0;
+      text {
+        flex: 1;
+        height: 100%;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+      }
+      text:last-child {
+        border-left: 1rpx solid #f0f0f0;
+        color: #3385ff;
+      }
+    }
+  }
+  .custom-class-popup {
+    border-radius: 8rpx;
+    overflow: hidden;
+  }
 }
 </style>

+ 3 - 3
activityPages/activityDetail/manageMixin.js

@@ -81,7 +81,7 @@ export default {
             else if (res.Data.SignupStatus == "Success") this.isShow = true;
           }
           this.selectShow = false;
-          this.detailData.IsAppointment = 1;
+          res.Data.SignupStatus == "Success" && (this.detailData.IsAppointment = 1);
           this.synchronization();
         }
       } else {
@@ -113,7 +113,7 @@ export default {
               uni.showModal({
                 confirmText: "知道了",
                 confirmColor: "#376cbb",
-                content: res.Msg,
+                content: res.Msg || res.Data.PopupMsg,
                 showCancel: false,
                 success: (res) => {
                   if (res.confirm) {
@@ -139,7 +139,7 @@ export default {
             uni.showModal({
               confirmText: "知道了",
               confirmColor: "#376cbb",
-              content: res.Msg,
+              content: res.Msg || res.Data.PopupMsg,
               showCancel: false,
               success: (res) => {
                 if (res.confirm) {

+ 18 - 4
components/ItemComponent/activityItem.vue

@@ -329,7 +329,7 @@ export default {
                 state: 1,
                 name: "conference",
               };
-              this.parentDataEmit(item, "IsCancelMeetingReminder", 1);
+              res.Data.SignupStatus == "Success" && this.parentDataEmit(item, "IsCancelMeetingReminder", 1);
             } else if (this.hasPermission == 2) {
               this.isShowhasPermission = true;
             } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
@@ -370,9 +370,23 @@ export default {
         this.hasPermission = res.Data.HasPermission;
         this.jurisdictionList = res.Data;
         if (this.hasPermission == 1) {
-          uni.navigateTo({
-            url: "/activityPages/generationAsk/generationAsk?id=" + item.ActivityId + "&type=" + type,
-          });
+          if (res.Data.SignupStatus === "Success") {
+            uni.navigateTo({
+              url: "/activityPages/generationAsk/generationAsk?id=" + item.ActivityId + "&type=" + type,
+            });
+          } else {
+            uni.showModal({
+              confirmText: "知道了",
+              confirmColor: "#376cbb",
+              content: res.Msg || res.Data.PopupMsg,
+              showCancel: false,
+              success: (res) => {
+                if (res.confirm) {
+                  this.getActivityDetail();
+                }
+              },
+            });
+          }
         } else if (this.hasPermission == 2) {
           this.isShowhasPermission = true;
         } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {

+ 1 - 1
components/ItemComponent/reportItem.vue

@@ -21,7 +21,7 @@
     <view class="item-abstract text-Line" v-if="list.Abstract && list.ArticleResponse != 1"> 摘要:{{ list.Abstract }} </view>
     <view class="item-time">
       <text>{{ list.PublishDate }}</text>
-      <view class="item-examine" v-if="list.IsResearch">
+      <view class="item-examine" v-if="list.Source != 'yanxuanspecial'">
         <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/examine_icon.png"></image>
         <text>{{ list.Pv }}</text>
       </view>

+ 2 - 9
components/ItemComponent/roadshowItem.vue

@@ -37,9 +37,7 @@
         </button>
       </view>
     </view>
-    <view v-if="showAudioBox">
-      <audioModule :showAudioPop.sync="showAudioPop" />
-    </view>
+
     <videoModule :showVideoPop.sync="showVideoPop" :curVideoId="curVideoId" :videoPopList="videoPopList" />
     <modalDialog :isShowhasPermission="isShowhasPermission" :applyForIsShow="applyForIsShow" :jurisdictionList="jurisdictionList" :hasPermission="hasPermission" />
   </view>
@@ -48,7 +46,6 @@
 <script>
 import { Search, activity, Report, Home } from "@/config/api";
 import { MultimediaIcon } from "@/utils/styleClassify";
-import audioModule from "@/components/audioModule/index";
 import videoModule from "@/components/videoModule/index";
 import modalDialog from "@/components/modalDialog.vue";
 export default {
@@ -73,7 +70,6 @@ export default {
     };
   },
   components: {
-    audioModule,
     videoModule,
     modalDialog,
   },
@@ -86,9 +82,6 @@ export default {
       //当前音频是否暂停状态
       return this.$store.state.audioBg.paused;
     },
-    showAudioBox() {
-      return this.$store.state.audioBg.parseIntShow;
-    },
   },
   watch: {},
   created() {},
@@ -153,7 +146,7 @@ export default {
         };
         this.$store.commit("audioBg/addAudio", { list: VoiceList, indexId: item.ActivityId, activityTitle: item.Title });
       }
-      this.showAudioPop = true;
+      this.$parent.showAudioPop = true;
     },
     //音视频的图标
     classifyIcon(item) {

+ 42 - 29
components/activity/indexActivity.js

@@ -69,7 +69,7 @@ export default {
     signupIsAddOfCancel(item, type, valName = "") {
       let id = this.activityIdAdd || item.ActivityId;
       this.itemData = item;
-			console.log(this.itemData,item.IsSignup);
+      console.log(this.itemData, item.IsSignup);
       if (item && item.IsSignup == 1) {
         if (item.IsResearchPoints) {
           if (isTimeGreaterThanCurrent(item.CancelDeadline)) {
@@ -175,7 +175,7 @@ export default {
               };
               this.collectList.forEach((item) => {
                 if (id == item.ActivityId) {
-                  item.IsCancelMeetingReminder = 1;
+                  res.Data.SignupStatus == "Success" && (item.IsCancelMeetingReminder = 1);
                 }
               });
             } else if (this.hasPermission == 2) {
@@ -222,9 +222,23 @@ export default {
         this.hasPermission = res.Data.HasPermission;
         this.jurisdictionList = res.Data;
         if (this.hasPermission == 1) {
-          uni.navigateTo({
-            url: "/activityPages/generationAsk/generationAsk?id=" + item.ActivityId + "&type=" + type,
-          });
+          if (res.Data.SignupStatus === "Success") {
+            uni.navigateTo({
+              url: "/activityPages/generationAsk/generationAsk?id=" + item.ActivityId + "&type=" + type,
+            });
+          } else {
+            uni.showModal({
+              confirmText: "知道了",
+              confirmColor: "#376cbb",
+              content: res.Msg || res.Data.PopupMsg,
+              showCancel: false,
+              success: (res) => {
+                if (res.confirm) {
+                  this.getActivityDetail();
+                }
+              },
+            });
+          }
         } else if (this.hasPermission == 2) {
           this.isShowhasPermission = true;
         } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
@@ -255,7 +269,6 @@ export default {
               if (res.Data.GoFollow) this.goFollow = res.Data.GoFollow;
               else if (res.Data.SignupStatus == "Success") {
                 this.isShow = true;
-                item.IsAppointment = 1;
               }
               item.IsAppointment = 1;
             }
@@ -350,28 +363,28 @@ export default {
         this.isResearchModalShow = true;
       }
     },
-		async signupCheck(item,type,valName = ""){
-			await this.$store.dispatch("showLoginModal")
-			this.signupIsAddOfCancel(item,type,valName)
-		},
-		async summaryHandelCheck(item){
-			await this.$store.dispatch("showLoginModal")
-			this.summaryIsHandel(item)
-		},
-		async meetingReminderCheck(id, type){
-			await this.$store.dispatch("showLoginModal")
-			this.meetingReminderAdd(id, type)
-		},
-		async askingCheck(item, type = ""){
-			await this.$store.dispatch("showLoginModal")
-			this.askingGo(item, type)
-		},
-		async wanttosignupCheck(item){
-			await this.$store.dispatch("showLoginModal")
-			this.wanttosignup(item)
-		},
-		async goDetailCheck(item){
-			this.goDetail(item)
-		}
+    async signupCheck(item, type, valName = "") {
+      await this.$store.dispatch("showLoginModal");
+      this.signupIsAddOfCancel(item, type, valName);
+    },
+    async summaryHandelCheck(item) {
+      await this.$store.dispatch("showLoginModal");
+      this.summaryIsHandel(item);
+    },
+    async meetingReminderCheck(id, type) {
+      await this.$store.dispatch("showLoginModal");
+      this.meetingReminderAdd(id, type);
+    },
+    async askingCheck(item, type = "") {
+      await this.$store.dispatch("showLoginModal");
+      this.askingGo(item, type);
+    },
+    async wanttosignupCheck(item) {
+      await this.$store.dispatch("showLoginModal");
+      this.wanttosignup(item);
+    },
+    async goDetailCheck(item) {
+      this.goDetail(item);
+    },
   },
 };

+ 26 - 2
components/activity/purchaserActivityList.vue

@@ -1,7 +1,12 @@
 <template>
   <block v-if="isLoad">
     <view class="purchaser-activity-list" v-if="collectList && collectList.length > 0">
-      <view class="purchaser-activity-box" v-for="(item, index) in collectList" :key="item.ActivityId" :style="{ 'border-color': item.ActivityType == 1 ? '#8FA4C4' : '#E7E0CD' }">
+      <view class="purchaser-activity-box" v-for="item in collectList" :key="item.ActivityId" :style="{ 'border-color': item.ActivityType == 1 ? '#8FA4C4' : '#E7E0CD' }">
+        <view class="purchaser-activity-state">
+          <image v-if="item.ActiveState == 1" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/not_started_activity.png" class="img-status"></image>
+          <image v-else-if="item.ActiveState == 2" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/in_progress_activity.png" class="img-status"></image>
+          <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/end_activity.png" class="img-status"></image>
+        </view>
         <view class="purchaser-activity-head">
           <text :class="item.ActivityType == 1 ? 'online' : 'offline'" class="activity-which-line">{{ item.ActivityType == 1 ? "线上" : "线下" }}</text>
           <text class="activity-label-text">
@@ -12,8 +17,8 @@
           </text>
         </view>
         <view class="activity-title text_twoLine" @click="goDetailCheck(item)">
+          <image class="recommend-icon" v-if="item.TopTime > 0 && item.ActiveState == 1" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/recommend_YX.png"></image>
           <image v-if="item.IsResearchPoints" src="https://hzstatic.hzinsights.com/cygx/icon/Research_Points.png"></image>
-          <!-- <image v-else-if="item.IsResearch" src="https://hzstatic.hzinsights.com/cygx/icon/Research_normal.png"></image> -->
           <image v-else-if="item.IsExternalLabel" src="https://hzstatic.hzinsights.com/cygx/icon/activity_external.png"></image>
           {{ item.ActivityName }}
         </view>
@@ -153,6 +158,21 @@ export default {
   border-radius: 16rpx;
   background-color: white;
   margin-bottom: 20rpx;
+  position: relative;
+  .purchaser-activity-state {
+    position: absolute;
+    top: 0;
+    right: 0;
+    z-index: 2;
+    width: 100%;
+    display: flex;
+    justify-content: flex-end;
+    height: 42rpx;
+    image {
+      width: 122rpx;
+      height: 42rpx;
+    }
+  }
   .purchaser-activity-head {
     display: flex;
     align-items: center;
@@ -210,6 +230,10 @@ export default {
       margin-right: 8rpx;
       margin-bottom: 4rpx;
     }
+    .recommend-icon {
+      width: 30rpx;
+      height: 30rpx;
+    }
   }
   .activity-time-city-row {
     display: flex;

+ 4 - 1
components/modalDialog.vue

@@ -4,9 +4,9 @@
       v-model="isModalShow"
       :content-style="{ fontSize: '32rpx' }"
       @confirm="confirmModal"
-      :show-cancel-button="true"
       :confirm-text="confirmText"
       :cancel-text="editIsShowDlg ? '前去修改' : '取消'"
+      :show-cancel-button="show_cancel_button"
       @cancel="cancelModal"
       :show-title="false"
       :cancel-style="{ borderRight: '1rpx solid #EBEBEB' }"
@@ -208,6 +208,9 @@ export default {
       },
       set() {},
     },
+    show_cancel_button() {
+      return this.content == "该活动为非公开活动,如有专家访谈需求请联系对口销售" ? false : true;
+    },
   },
   methods: {
     /**

+ 9 - 5
components/report/timeLine.vue

@@ -116,11 +116,15 @@ export default {
     }, //展开收起晨会内容
     // 去往文章详情的
     async handleExpand(item, index) {
-      item.TimeLineId
-        ? await Reports.postTacticsHistory({
-            TimeLineId: item.TimeLineId,
-          })
-        : this.getRecordTracking("展开收起", { Id: item.Id });
+      if (item.TimeLineId) {
+        await Reports.postTacticsHistory({
+          TimeLineId: item.TimeLineId,
+        });
+      } else {
+      await  Reports.morning_meeting_history({ Id: item.Id, SourcePage: "展开" });
+        this.getRecordTracking("展开收起", { Id: item.Id });
+      }
+
       item.isExpand = !item.isExpand;
       this.$parent.timeLine.splice(index, 1, item);
     },

+ 4 - 0
config/modules/Reports.js

@@ -171,4 +171,8 @@ export const Reports = {
   collectionApplyDetail: (params) => {
     return getHttp("/collection/apply/detail", params, 0);
   },
+  // 晨会精华点击记录
+  morning_meeting_history: (params) => {
+    return postHttp("/morning_meeting/history/add", params, 0);
+  },
 };

+ 4 - 0
config/modules/purchaser.js

@@ -98,4 +98,8 @@ export const purchaserApi = {
   yanxuanSpecialCheck: (params) => {
     return postHttp("/yanxuan_special/check", params);
   },
+  // 活动类型列表
+  getActivityTypelist: (params) => {
+    return getHttp("/activity/activityTypelist", params);
+  },
 };

+ 7 - 0
pageMy/myCollection/myCollection.vue

@@ -60,6 +60,9 @@
     </view>
     <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
     <Loading />
+     <view v-if="showAudioBox">
+      <audioModule :showAudioPop.sync="showAudioPop" />
+    </view>
   </view>
 </template>
 
@@ -68,6 +71,8 @@ import { Mine, Report, Home, User, Chart, purchaserApi } from "@/config/api.js";
 import RoadshowItem from "@/components/ItemComponent/roadshowItem.vue";
 import freeCharge from "@/components/freeCharge";
 import ChartItem from "@/components/ItemComponent/chartItem.vue";
+import audioModule from "@/components/audioModule/index";
+
 export default {
   data() {
     return {
@@ -90,6 +95,7 @@ export default {
         { name: "图表", id: 3 },
       ],
       tabsActive: 1,
+      showAudioPop:false
     };
   },
   onLoad() {
@@ -100,6 +106,7 @@ export default {
     freeCharge,
     RoadshowItem,
     ChartItem,
+    audioModule
   },
   methods: {
     /* 获取列表 */

+ 176 - 168
pages-purchaser/purchaserActivity/purchaserActivity.vue

@@ -1,176 +1,184 @@
 <template>
-	<view class="purchaser-activity-container">
-		<view class="search-bar">
-			<text v-for="item in activityTimeList" :key="item.Id" :class="item.IsChoose ? 'active' : ''" 
-			@click="isActivityDate(item.Id)">{{ item.StatusName }}</text>
-			<text v-for="item in activityTypeList" :key="item.Id" :class="item.IsChoose ? 'active' : ''" 
-			@click="isActivityType(item.Id)">{{ item.StatusName }}</text>
-		</view>
-		<view class="purchaser-activity-list">
-			<purchaserActivityList style="width: 682rpx;" ref="purchaserActivityListRef" :whichDay="whichDay"
-			:typeName="typeName">
-				<view class="no-data-box">
-					<view class="no-data">
-						<image src="https://hzstatic.hzinsights.com/cygx/icon/activity-no-data.png" ></image>
-						<text>暂无对应活动</text>
-					</view>
-				</view>
-			</purchaserActivityList>
-		</view>
-		<Loading />
-	</view>
+  <view class="purchaser-activity-container">
+    <view class="search-bar">
+      <view>
+        <text v-for="item in activityTimeList" :key="item.Id" :class="item.IsChoose ? 'active' : ''" @click="isActivityDate(item.Id)">
+          {{ item.StatusName }}
+        </text>
+      </view>
+      <view class="type-box">
+        <text v-for="item in activityTypeList" :key="item.ActivityTypeId" :class="item.IsChoose ? 'active' : ''" @click="isActivityType(item)">
+          {{ item.ActivityTypeName }}
+        </text>
+      </view>
+    </view>
+    <view class="purchaser-activity-list">
+      <purchaserActivityList style="width: 682rpx" ref="purchaserActivityListRef" :whichDay="whichDay" :typeName="typeName">
+        <view class="no-data-box">
+          <view class="no-data">
+            <image src="https://hzstatic.hzinsights.com/cygx/icon/activity-no-data.png"></image>
+            <text>暂无对应活动</text>
+          </view>
+        </view>
+      </purchaserActivityList>
+    </view>
+    <Loading />
+  </view>
 </template>
 
 <script>
-	import purchaserActivityList from "@/components/activity/purchaserActivityList.vue"
-	import { Throttle } from "@/config/util.js";
-	import { activity } from "@/config/api";
-	
-	export default {
-		components:{purchaserActivityList},
-		data() {
-			return {
-				activityTimeList: [
-				  { Id: 1, IsChoose: false, StatusName: "今日活动" },
-				  { Id: 2, IsChoose: false, StatusName: "明日活动" },
-				],
-				activityTypeList: [
-				  { Id: 3, IsChoose: false, StatusName: "公司调研电话会" }
-				],
-				whichDay:'',
-				typeName:''
-			}
-		},
-		methods: {
-			// 今日明日的点击事件
-			isActivityDate(id) {
-			  this.activityTimeList.forEach((item) => {
-			    if (item.Id == id) item.IsChoose = !item.IsChoose;
-			  });
-			  const arr = [];
-			  this.activityTimeList.forEach((item) => item.IsChoose && arr.push(item.Id));
-			  this.whichDay = arr.join(",");
-				this.typeName=""
-				this.activityTypeList.map(item =>{
-					item.IsChoose=false
-				})
-				this.$nextTick(()=>{
-					this.$refs.purchaserActivityListRef.reloadActivityList();
-				})
-				
-			},
-			isActivityType(id){
-				this.activityTypeList.forEach((item) => {
-				  if (item.Id == id) item.IsChoose = !item.IsChoose;
-				});
-				const arr = [];
-				this.activityTypeList.forEach((item) => item.IsChoose && arr.push(item.Id));
-				this.typeName = arr.join(",");
-				this.whichDay=""
-				this.activityTimeList.map(item =>{
-					item.IsChoose=false
-				})
-				this.$nextTick(()=>{
-					this.$refs.purchaserActivityListRef.reloadActivityList();
-				})
-			},
-			loadShare(option){
-				// if(!option) return
-				this.whichDay = option.whichDay || ""
-				let whichDayArr = this.whichDay.split(',')
-				this.typeName = option.typeName || ""
-				let typeNameArr = this.typeName.split(',')
-				this.activityTimeList.map(item =>{
-					item.IsChoose=  whichDayArr.includes(item.Id+'') 
-				})
-				this.activityTypeList.forEach((item) => {
-				  item.IsChoose=  typeNameArr.includes(item.Id+'') 
-				});
-				this.$nextTick(()=>{
-					this.$refs.purchaserActivityListRef.reloadActivityList();
-				})
-			}
-		},
-		/** 用户点击分享 */
-		onShareAppMessage: function (res) {
-		  return {
-		    title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费月卡!" : "近期所有研选活动预告",
-		    path: "/pages-purchaser/purchaserActivity/purchaserActivity?whichDay=" + this.whichDay + "&typeName=" + this.typeName,
-		  };
-		},
-		onLoad(option) {
-			this.loadShare(option);
-		},
-		onReachBottom: Throttle(function () {
-		  if (this.$refs.purchaserActivityListRef.page_no >= this.$refs.purchaserActivityListRef.pages) return;
-		  this.$refs.purchaserActivityListRef.loadActivityMore();
-		}),
-	}
+import purchaserActivityList from "@/components/activity/purchaserActivityList.vue";
+import { Throttle } from "@/config/util.js";
+import { activity, purchaserApi } from "@/config/api";
+
+export default {
+  components: { purchaserActivityList },
+  data() {
+    return {
+      activityTimeList: [
+        { Id: 1, IsChoose: false, StatusName: "今日活动" },
+        { Id: 2, IsChoose: false, StatusName: "明日活动" },
+      ],
+      activityTypeList: [],
+      whichDay: "",
+      typeName: "",
+    };
+  },
+  methods: {
+    // 今日明日的点击事件
+    isActivityDate(id) {
+      this.activityTimeList.forEach((item) => {
+        if (item.Id == id) item.IsChoose = !item.IsChoose;
+      });
+      const arr = [];
+      this.activityTimeList.forEach((item) => item.IsChoose && arr.push(item.Id));
+      this.whichDay = arr.join(",");
+      // this.activityTypeList.map((item) => {
+      //   item.IsChoose = false;
+      // });
+      this.$nextTick(() => {
+        this.$refs.purchaserActivityListRef.reloadActivityList();
+      });
+    },
+    isActivityType(_item) {
+      _item.IsChoose = !_item.IsChoose;
+      const arr = [];
+      this.activityTypeList.forEach((item) => item.IsChoose && arr.push(item.ActivityTypeId));
+      this.typeName = arr.join(",");
+      // this.activityTimeList.map((item) => {
+      //   item.IsChoose = false;
+      // });
+      this.$nextTick(() => {
+        this.$refs.purchaserActivityListRef.reloadActivityList();
+      });
+    },
+    loadShare(option) {
+      // if(!option) return
+      this.whichDay = option.whichDay || "";
+      let whichDayArr = this.whichDay.split(",");
+      this.typeName = option.typeName || "";
+      let typeNameArr = this.typeName.split(",");
+      this.activityTimeList.map((item) => {
+        item.IsChoose = whichDayArr.includes(item.Id + "");
+      });
+      this.activityTypeList.forEach((item) => {
+        item.IsChoose = typeNameArr.includes(item.Id + "");
+      });
+      this.$nextTick(() => {
+        this.$refs.purchaserActivityListRef.reloadActivityList();
+      });
+    },
+    async getActivityTypelist() {
+      const res = await purchaserApi.getActivityTypelist({ IsResearch: true });
+      if (res.Ret === 200) {
+        this.activityTypeList = res.Data.List || [];
+      }
+      console.log(res);
+    },
+  },
+  /** 用户点击分享 */
+  onShareAppMessage: function (res) {
+    return {
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费月卡!" : "近期所有研选活动预告",
+      path: "/pages-purchaser/purchaserActivity/purchaserActivity?whichDay=" + this.whichDay + "&typeName=" + this.typeName,
+    };
+  },
+  onLoad(option) {
+    this.loadShare(option);
+    this.getActivityTypelist();
+  },
+  onReachBottom: Throttle(function () {
+    if (this.$refs.purchaserActivityListRef.page_no >= this.$refs.purchaserActivityListRef.pages) return;
+    this.$refs.purchaserActivityListRef.loadActivityMore();
+  }),
+};
 </script>
 
 <style lang="scss" scoped>
-	.purchaser-activity-container{
-		background-color: $uni-bg-color;
-		min-height: 100vh;
-		// height: 100vh;
-		.search-bar{
-			width: 100vw;
-			height: 82rpx;
-			display: flex;
-			align-items: center;
-			padding: 0 34rpx;
-			background-color: white;
-			position: sticky;
-			top: 0;
-			text {
-			  // width: 136rpx;
-				min-width: 136rpx;
-				padding: 4rpx 20rpx;
-				height: 42rpx;
-			  text-align: center;
-			  line-height: 34rpx;
-			  background-color: #f8f8fa;
-			  box-sizing: border-box;
-			  border-radius: 44rpx;
-				margin-right: 20rpx;
-				font-size: 24rpx;
-				white-space: nowrap;
-			}
-			.active {
-			  background-color: #376cbb;
-			  color: #fff;
-			}
-		}
-		.purchaser-activity-list{
-			padding: 20rpx 34rpx 36rpx;
-			.no-data-box{
-				width: 682rpx;
-				// height: 100%;
-				border-radius: 16rpx;
-				background-color: white;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				justify-content: center;
-				.no-data{
-					display: flex;
-					flex-direction: column;
-					align-items: center;
-					justify-content: center;
-					height: calc(100vh - 138rpx);
-					image{
-						width: 412rpx;
-						height: 380rpx;
-						margin-bottom: 40rpx;
-					}
-					text{
-						font-size: 24rpx;
-						line-height: 34rpx;
-						color: #999999;
-					}
-				}
-			}
-		}
-	}
-	
+.purchaser-activity-container {
+  background-color: $uni-bg-color;
+  min-height: 100vh;
+  .search-bar {
+    width: 100vw;
+    view {
+      display: flex;
+      align-items: center;
+      margin-bottom: 20rpx;
+    }
+    .type-box {
+      overflow: hidden;
+      overflow-x: auto;
+    }
+    padding: 0 34rpx 5rpx;
+    background-color: white;
+    position: sticky;
+    top: 0;
+    text {
+      padding: 4rpx 20rpx;
+      height: 42rpx;
+      text-align: center;
+      line-height: 34rpx;
+      background-color: #f8f8fa;
+      box-sizing: border-box;
+      border-radius: 44rpx;
+      margin-right: 20rpx;
+      font-size: 24rpx;
+      white-space: nowrap;
+    }
+    .active {
+      background-color: #376cbb;
+      color: #fff;
+    }
+  }
+  .purchaser-activity-list {
+    padding: 20rpx 34rpx 36rpx;
+    .no-data-box {
+      width: 682rpx;
+      // height: 100%;
+      border-radius: 16rpx;
+      background-color: white;
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      .no-data {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        height: calc(100vh - 138rpx);
+        image {
+          width: 412rpx;
+          height: 380rpx;
+          margin-bottom: 40rpx;
+        }
+        text {
+          font-size: 24rpx;
+          line-height: 34rpx;
+          color: #999999;
+        }
+      }
+    }
+  }
+}
 </style>

+ 36 - 18
pages-search/components/report.vue

@@ -94,7 +94,7 @@
                 <text @click.stop="themeDetails(item, val)" class="item-industry" v-for="val in item.List" :key="val.IndustrialManagementId"> # {{ val.IndustryName }} </text>
               </block>
               <block v-if="item.SpecialTags.length">
-                <text @click.stop="themeDetails(item, val)" class="item-industry" style="color:#90aeda" v-for="val in item.SpecialTags.split(',')" :key="val"> # {{ val }} </text>
+                <text @click.stop="themeDetails(item, val)" class="item-industry" style="color: #90aeda" v-for="val in item.SpecialTags.split(',')" :key="val"> # {{ val }} </text>
               </block>
             </view>
           </view>
@@ -105,7 +105,7 @@
                 <image class="pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/examine_icon.png"></image>
                 {{ item.Pv }}
               </view>
-              <view @click="collectClick(item)">
+              <view @click="collectClick(item, 'ListYxReport')">
                 <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/collect_act.png"></image>
                 <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/collect_ico.png"></image>
                 {{ item.CollectNum }}
@@ -125,8 +125,22 @@
             <text style="display: inline; margin-right: 10rpx" @click="goDetailReport(item)"> {{ item.Title }} </text>
             <text class="item-industry" v-for="key in item.List" :key="key.IndustrialManagementId" @click="themeDetails(key)">#{{ key.IndustryName }}&nbsp;&nbsp;&nbsp;</text>
           </view>
+          <!-- <view class="item-more">
+            <text>{{ item.PublishDate }}</text>
+          </view> -->
           <view class="item-more">
             <text>{{ item.PublishDate }}</text>
+            <view class="global_pv-ollect">
+              <view>
+                <image class="pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/examine_icon.png"></image>
+                {{ item.Pv }}
+              </view>
+              <view @click="collectClick(item, 'ListHzReport')">
+                <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/collect_act.png"></image>
+                <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/collect_ico.png"></image>
+                {{ item.CollectNum }}
+              </view>
+            </view>
           </view>
         </view>
       </block>
@@ -201,24 +215,28 @@ export default {
       }
     },
     //收藏
-    async collectClick(item) {
+    async collectClick(item, type) {
       const res = await Report.collectRpt({ ArticleId: item.ArticleId, PageRouter: this.$store.state.pageRouterReport });
       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.$parent.reportPageData[type].forEach((_) => {
+          if (item.ArticleId === _.ArticleId) {
+            _.IsCollect = !_.IsCollect;
+            _.IsCollect
+              ? (_.CollectNum += 1) &&
+                uni.showToast({
+                  title: "收藏成功",
+                  icon: "none",
+                  duration: 2000,
+                })
+              : (_.CollectNum -= 1);
+            !_.IsCollect &&
+              uni.showToast({
+                title: "已取消收藏",
+                icon: "none",
+                duration: 2000,
+              });
+          }
+        });
       }
     },
     //点击关注的图标

+ 13 - 3
pages-search/components/roadshow.vue

@@ -5,12 +5,16 @@
         <RoadshowItem :list="item" @isCollectionHandeler="isCollectionHandeler" />
       </view>
     </view>
+    <view v-if="showAudioBox">
+      <audioModule :showAudioPop.sync="showAudioPop" />
+    </view>
   </view>
 </template>
 
 <script>
 import { Home } from "@/config/api";
 import RoadshowItem from "@/components/ItemComponent/roadshowItem.vue";
+import audioModule from "@/components/audioModule/index";
 
 export default {
   props: {
@@ -25,10 +29,16 @@ export default {
     },
   },
   data() {
-    return {};
+    return {
+      showAudioPop: false,
+    };
+  },
+  computed: {
+    showAudioBox() {
+      return this.$store.state.audioBg.parseIntShow;
+    },
   },
-  computed: {},
-  components: { RoadshowItem },
+  components: { RoadshowItem, audioModule },
   methods: {
     // 微路演收藏
     async isCollectionHandeler(item) {

+ 14 - 6
pages-search/components/synthetical.vue

@@ -51,11 +51,14 @@
       <text>暂时没有符合条件的活动</text>
     </view>
     <morning-dlg v-if="isMorningShow" :isMorningShow.sync="isMorningShow" :morningItem.sync="morningItem" />
+    <view v-if="showAudioBox">
+      <audioModule :showAudioPop.sync="showAudioPop" />
+    </view>
   </view>
 </template>
 
 <script>
-import { Search } from "@/config/api";
+import { Search, Reports } from "@/config/api";
 import ChartItem from "@/components/ItemComponent/chartItem.vue";
 import ReportItem from "@/components/ItemComponent/reportItem.vue";
 import RoadshowItem from "@/components/ItemComponent/roadshowItem.vue";
@@ -63,8 +66,9 @@ import ActivityItem from "@/components/ItemComponent/activityItem.vue";
 import ItemContent from "./ItemContent.vue";
 import MorningDlg from "./morningDlg.vue";
 import Industrialsource from "./industrialsource.vue";
+import audioModule from "@/components/audioModule/index";
 export default {
-  components: { Industrialsource, ChartItem, ReportItem, RoadshowItem, ActivityItem, ItemContent, MorningDlg },
+  components: { Industrialsource, ChartItem, ReportItem, RoadshowItem, ActivityItem, ItemContent, MorningDlg, audioModule },
   props: {
     searchTxt: {
       type: String,
@@ -85,6 +89,7 @@ export default {
       isMorningShow: false, // 晨会的弹框
       morningItem: {}, // 晨会的弹框
       haveData: true,
+      showAudioPop: false,
     };
   },
   watch: {
@@ -98,8 +103,11 @@ export default {
       immediate: true,
     },
   },
-  computed: {},
-  components: {},
+  computed: {
+    showAudioBox() {
+      return this.$store.state.audioBg.parseIntShow;
+    },
+  },
   methods: {
     // 获取数据
     async getComprehensiveList() {
@@ -132,9 +140,9 @@ export default {
       }
     },
     // 晨会弹框显示
-    showMorningDialog(item) {
-      console.log(item);
+    async showMorningDialog(item) {
       if (item.Source == "meetingreviewchapt") {
+        await Reports.morning_meeting_history({ Id: item.Id, SourcePage: "首页" });
         this.isMorningShow = true;
         this.morningItem = item;
       }

+ 14 - 0
pages/index/components/ItemContent.vue

@@ -26,6 +26,10 @@
       </view>
       <view class="item-time">
         <text>{{ list.Source == "productinterior" ? list.PublishTime : list.PublishDate }}</text>
+        <view class="item-examine">
+          <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/examine_icon.png"></image>
+          <text>{{ list.Pv }}</text>
+        </view>
       </view>
     </block>
   </view>
@@ -109,9 +113,19 @@ export default {
   .item-time {
     display: flex;
     align-items: center;
+    justify-content: space-between;
     color: #999;
     font-size: 22rpx;
     line-height: 30rpx;
+    .item-examine {
+      display: flex;
+      align-items: center;
+      image {
+        width: 30rpx;
+        height: 30rpx;
+        margin: 0 10rpx 0 15rpx;
+      }
+    }
   }
 }
 </style>

+ 13 - 3
pages/index/index.vue

@@ -106,11 +106,14 @@
     </suspenButton>
     <Loading />
     <videoModule :showVideoPop.sync="showVideoPopUp" :videoPopList="videoPopListUp" />
+    <view v-if="showAudioBox">
+      <audioModule :showAudioPop.sync="showAudioPop" />
+    </view>
   </page-meta>
 </template>
 
 <script>
-import { Home, Mine } from "@/config/api";
+import { Home, Mine, Reports } from "@/config/api";
 import ChartItem from "@/components/ItemComponent/chartItem.vue";
 import ReportItem from "@/components/ItemComponent/reportItem.vue";
 import RoadshowItem from "@/components/ItemComponent/roadshowItem.vue";
@@ -120,6 +123,8 @@ import MorningDlg from "./components/morningDlg.vue";
 import ItemContent from "./components/ItemContent.vue";
 import videoModule from "@/components/videoModule/index";
 import suspenButton from "@/components/suspen_button.vue";
+import audioModule from "@/components/audioModule/index";
+
 export default {
   data() {
     return {
@@ -144,6 +149,7 @@ export default {
       actIdLable: "", // 标签选择后的ID
       isTopHeight: "",
       lableArrList: [],
+      showAudioPop: false,
     };
   },
   computed: {
@@ -173,6 +179,9 @@ export default {
 
       return rows;
     },
+    showAudioBox() {
+      return this.$store.state.audioBg.parseIntShow;
+    },
   },
   components: {
     ChartItem,
@@ -184,6 +193,7 @@ export default {
     ItemContent,
     videoModule,
     suspenButton,
+    audioModule,
   },
   methods: {
     // 获取最先数据
@@ -268,9 +278,9 @@ export default {
       }
     },
     // 晨会弹框显示
-    showMorningDialog(item) {
-      console.log(item);
+    async showMorningDialog(item) {
       if (item.Source == "meetingreviewchapt") {
+        const res = await Reports.morning_meeting_history({ Id: item.Id, SourcePage: "首页" });
         this.isMorningShow = true;
         this.morningItem = item;
       }

+ 6 - 5
pages/material/material.vue

@@ -78,6 +78,9 @@
       </block>
     </view>
     <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
+    <view v-if="showAudioBox">
+      <audioModule :showAudioPop.sync="showAudioPop" />
+    </view>
     <Loading />
   </view>
 </template>
@@ -87,7 +90,7 @@ import { Home, Reports, Chart, activity } from "@/config/api.js";
 import { Throttle, deepCopy } from "@/config/util.js";
 import freeCharge from "@/components/freeCharge";
 import SearchBar from "@/components/search-bar/searchBar.vue";
-
+import audioModule from "@/components/audioModule/index";
 import ChartItem from "@/components/ItemComponent/chartItem.vue";
 import ReportItem from "@/components/ItemComponent/reportItem.vue";
 import RoadshowItem from "@/components/ItemComponent/roadshowItem.vue";
@@ -121,10 +124,7 @@ export default {
       videoShareId: "", //通过分享单个视频点进页面时使用
       activityShareId: "",
       roadshowPageList: [], //音频  视频 list
-      // mediumSelect: [
-      //   { name: "音频", value: "2", isSelect: false },
-      //   { name: "视频", value: "1", isSelect: false },
-      // ],
+      showAudioPop: false,
       mediumActive: "",
     };
   },
@@ -134,6 +134,7 @@ export default {
     ReportItem,
     RoadshowItem,
     SearchBar,
+    audioModule,
   },
   watch: {},
   onLoad(optios) {

+ 57 - 12
reportPages/IndustryReport/IndustryReport.vue

@@ -25,12 +25,27 @@
         <!-- 其他tab -->
         <block v-if="tabAct_id !== 99999">
           <view class="global_card_content collect-ltem" v-for="(item, index) in collectList" :key="index" @click="goDetail(item, index)">
-            <view class="item-left">
-              <text class="title global_title text_twoLine">
-                {{ item.Title }}
-                <text class="reg-text" v-if="item.IsRed"></text>
-              </text>
-              <text class="text_twoLine desc">{{ item.PublishDate }}</text>
+            <view>
+              <view class="item-left">
+                <text class="title global_title text_twoLine">
+                  {{ item.Title }}
+                  <text class="reg-text" v-if="item.IsRed"></text>
+                </text>
+              </view>
+              <view class="item-more">
+                <text>{{ item.PublishDate }}</text>
+                <view class="global_pv-ollect">
+                  <view>
+                    <image class="pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/examine_icon.png"></image>
+                    {{ item.Pv }}
+                  </view>
+                  <view @click.stop="collectClick(item)">
+                    <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/collect_act.png"></image>
+                    <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/collect_ico.png"></image>
+                    {{ item.CollectNum }}
+                  </view>
+                </view>
+              </view>
             </view>
             <u-icon name="arrow-right" color="#BDBDBD" size="34"></u-icon>
           </view>
@@ -54,7 +69,7 @@
 </template>
 
 <script>
-import { Mine, Home, Reports } from "@/config/api.js";
+import { Mine, Home, Reports, Report } from "@/config/api.js";
 import freeCharge from "@/components/freeCharge";
 import modalDialog from "@/components/modalDialog.vue";
 import IsTrackFollow from "@/components/isTrackFollow.vue";
@@ -331,6 +346,27 @@ export default {
         }
       });
     },
+    // 收藏
+    async collectClick(item) {
+      const res = await Report.collectRpt({ ArticleId: item.ArticleId, PageRouter: this.$store.state.pageRouterReport });
+      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,
+          });
+      }
+    },
   },
   /* 触底 */
   onReachBottom() {
@@ -466,11 +502,14 @@ export default {
           z-index: 9;
         }
       }
-      .desc {
-        margin-top: 17rpx;
-        padding-left: 28rpx;
-        width: 625rpx;
-        color: #999;
+      .item-more {
+        width: 626rpx;
+        padding: 0 10rpx 0 20rpx;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        color: #cecece;
+        margin-top: 20rpx;
       }
     }
   }
@@ -495,4 +534,10 @@ export default {
     }
   }
 }
+.item-left {
+  flex: 1;
+  .item-more {
+    padding-left: 20rpx;
+  }
+}
 </style>

+ 33 - 1
reportPages/hotList/hotList.vue

@@ -62,6 +62,17 @@
               {{ item.PublishDate }}
               <view class="industry-color" :style="[classifyColor(item.PermissionName)]">{{ item.PermissionName }}</view>
             </view>
+            <view class="global_pv-ollect">
+              <view>
+                <image class="pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/examine_icon.png"></image>
+                {{ item.Pv }}
+              </view>
+              <view @click="collectClick(item)">
+                <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/collect_act.png"></image>
+                <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/collect_ico.png"></image>
+                {{ item.CollectNum }}
+              </view>
+            </view>
           </view>
         </view>
       </view>
@@ -89,7 +100,7 @@
 </template>
 
 <script>
-import { Reports } from "@/config/api.js";
+import { Reports, Report } from "@/config/api.js";
 import videoModule from "@/components/videoModule/index";
 import modalDialog from "@/components/modalDialog.vue";
 export default {
@@ -243,6 +254,27 @@ export default {
       let _isColor = { color: "#376CBB", "background-color": "#E5EFFF" };
       return _isColor;
     },
+    // 收藏
+    async collectClick(item) {
+      const res = await Report.collectRpt({ ArticleId: item.ArticleId, PageRouter: this.$store.state.pageRouterReport });
+      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,
+          });
+      }
+    },
   },
   onLoad() {
     this.$store.commit("setRouterReport", "产业关注榜");

+ 6 - 0
reportPages/index.scss

@@ -33,6 +33,12 @@
       width: 625rpx;
       color: #999;
     }
+    .item-more {
+      display: flex;
+      justify-content: space-between;
+      color: #cecece;
+      margin-top: 20rpx;
+    }
     .publishDate {
       margin-right: 30rpx;
       white-space: nowrap;

+ 39 - 5
reportPages/industrialReport/industrialReport.vue

@@ -9,11 +9,18 @@
             <text class="reg-text" v-if="item.IsRed"></text>
           </text>
           <view v-if="isShowAbstract" class="abstract-box text_twoLine">摘要:{{ item.Abstract }} </view>
-          <view class="desc">
+          <view class="item-more">
             <text :class="item.IsResearch ? 'publishDate' : ''">{{ item.PublishDate }}</text>
-            <view class="item-examine" v-if="item.IsResearch">
-              <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/examine_icon.png"></image>
-              <text>{{ item.Pv }}</text>
+            <view class="global_pv-ollect">
+              <view>
+                <image class="pv" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/examine_icon.png"></image>
+                {{ item.Pv }}
+              </view>
+              <view @click.stop="collectClick(item)" v-if="item.Resource == 1">
+                <image v-if="item.IsCollect" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/collect_act.png"></image>
+                <image v-else src="https://hzchart.oss-cn-shanghai.aliyuncs.com/new_cygx/collect_ico.png"></image>
+                {{ item.CollectNum }}
+              </view>
             </view>
             <text v-if="item.IsResearch" class="text_oneLine text-name">{{ item.IndustryName }}</text>
           </view>
@@ -32,7 +39,7 @@
 </template>
 
 <script>
-import { Reports } from "@/config/api.js";
+import { Reports, Report } from "@/config/api.js";
 import { Throttle } from "@/config/util.js";
 import freeCharge from "@/components/freeCharge";
 let app = getApp({ allowDefault: true });
@@ -142,6 +149,27 @@ export default {
         });
       }
     },
+    // 收藏
+    async collectClick(item) {
+      const res = await Report.collectRpt({ ArticleId: item.ArticleId, PageRouter: this.$store.state.pageRouterReport });
+      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,
+          });
+      }
+    },
   },
   components: {
     freeCharge,
@@ -203,4 +231,10 @@ export default {
     margin: 0 10rpx 0 15rpx;
   }
 }
+.item-left {
+  flex: 1;
+  .item-more {
+    padding-left: 20rpx;
+  }
+}
 </style>