Prechádzať zdrojové kódy

Merge branch 'master' into loading

bding 1 rok pred
rodič
commit
2e06705dc1

+ 7 - 4
components/ItemComponent/activityItem.vue

@@ -10,10 +10,8 @@
       </block>
     </view>
     <view class="content-type"> {{ list.ActivityTypeName || "专项产业调研" }}</view>
-    <view :class="['content-title', 'text-Line', list.ResearchTheme && 'content-min-hight']" v-if="list.ActivityName || list.ResearchTheme">
-      <image style="width:83rpx;height:33rpx" v-if="list.IsResearchPoints" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/Research_Points.png"></image>
-      <image v-if="!list.IsResearchPoints && list.IsExternalLabel" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/activity_external.png"></image>
-      {{ list.ActivityName || list.ResearchTheme }}
+    <view :class="['content-title', list.ResearchTheme && 'content-min-hight']" v-if="list.ActivityName || list.ResearchTheme">
+      <mp-html :content="richTextClamp(3) + (list.ActivityName || list.ResearchTheme) + '</div>'" />
     </view>
     <view style="display: flex" class="content-text content-min-hight text_twoLine" v-if="list.ActivityTimeText && list.SourceType !== 1">
       <text> 活动时间:{{ list.ActivityTimeText }}</text>
@@ -554,6 +552,11 @@ export default {
       let index = this.$parent.newDataList.findIndex((key) => key.Activity && key.Activity.ActivityId === item.ActivityId);
       this.$parent.newDataList[index].Activity[value] = num;
     },
+    richTextClamp(val) {
+      return `<div style="${
+        val == 7 ? "min-height: 50px;" : ""
+      }line-clamp: ${val};-webkit-line-clamp: ${val};text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;word-wrap: break-word;word-break: break-all;">`;
+    },
     // 我要报名的请求拆分出来了
     async myIsApplyHandler(id, type, valName = "") {
       const res = await activity.signupAdd({

+ 8 - 1
components/ItemComponent/chartItem.vue

@@ -1,6 +1,8 @@
 <template>
   <view class="container-chart-item" @click="goDetail(list)">
-    <text class="chart-title text_twoLine">{{ list.Title }}</text>
+    <text class="chart-title">
+      <mp-html :content="richTextClamp(2) + list.Title + '</div>'" />
+    </text>
     <view class="item-content-img">
       <image :src="list.BodyHtml" mode=""></image>
     </view>
@@ -51,6 +53,11 @@ export default {
     myChartCollect(id) {
       this.$emit("myChartCollect", id);
     },
+    richTextClamp(val) {
+      return `<div style="${
+        val == 7 ? "min-height: 50px;" : ""
+      }line-clamp: ${val};-webkit-line-clamp: ${val};text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;word-wrap: break-word;word-break: break-all;">`;
+    },
   },
 };
 </script>

+ 21 - 25
components/ItemComponent/roadshowItem.vue

@@ -1,7 +1,7 @@
 <template>
   <view class="container-roadshow-item">
-    <view class="title">
-      <text class="text_twoLine">{{ list.Title }}</text>
+    <view class="title" @click="goDetails">
+       <mp-html :content="richTextClamp(2) + list.Title + '</div>'" />
     </view>
     <view class="cover-item" :style="{ 'background-image': 'url(' + list.BackgroundImg + ')' }">
       <block v-if="list.Type == 2 || list.Type == 3">
@@ -22,11 +22,7 @@
       <view :class="['identification', list.Type != 1 && 'identification-video']"> </view>
       <image
         class="identification-img"
-        :src="
-          list.Type == 1
-            ? 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/multimedia/video-iocn.png'
-            : 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/multimedia/audio-icon.png'
-        "
+        :src="list.Type == 1 ? 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/multimedia/video-iocn.png' : 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/multimedia/audio-icon.png'"
       ></image>
     </view>
     <view class="title-share">
@@ -34,11 +30,7 @@
         <image @click="myLeavingMessageHandler(list)" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/multimedia/leaving_message.png"></image>
         <image
           @click="isCollectionHandeler(list)"
-          :src="
-            list.IsCollect
-              ? 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/multimedia/collected_icon.png'
-              : 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/multimedia/not_collected.png'
-          "
+          :src="list.IsCollect ? 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/multimedia/collected_icon.png' : 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/multimedia/not_collected.png'"
         ></image>
         <button class="share-icon" open-type="share" :data-item="list">
           <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/multimedia/share-btn-icon.png"></image>
@@ -49,12 +41,7 @@
       <audioModule :showAudioPop.sync="showAudioPop" />
     </view>
     <videoModule :showVideoPop.sync="showVideoPop" :curVideoId="curVideoId" :videoPopList="videoPopList" />
-    <modalDialog
-      :isShowhasPermission="isShowhasPermission"
-      :applyForIsShow="applyForIsShow"
-      :jurisdictionList="jurisdictionList"
-      :hasPermission="hasPermission"
-    />
+    <modalDialog :isShowhasPermission="isShowhasPermission" :applyForIsShow="applyForIsShow" :jurisdictionList="jurisdictionList" :hasPermission="hasPermission" />
   </view>
 </template>
 
@@ -185,13 +172,7 @@ export default {
     async myLeavingMessageHandler(item) {
       await this.$store.dispatch("showLoginModal");
       uni.navigateTo({
-        url:
-          "/activityPages/generationAsk/generationAsk?id=" +
-          (item.Type == 3 ? item.Id : item.ActivityId) +
-          "&type=文章&roadshow=" +
-          item.Type +
-          "&roadshowTitle=" +
-          item.Title,
+        url: "/activityPages/generationAsk/generationAsk?id=" + (item.Type == 3 ? item.Id : item.ActivityId) + "&type=文章&roadshow=" + item.Type + "&roadshowTitle=" + item.Title,
       });
     },
 
@@ -199,6 +180,21 @@ export default {
     async isCollectionHandeler(item) {
       this.$emit("isCollectionHandeler", item);
     },
+    // 跳转
+    goDetails() {
+      console.log(this.list);
+      if (this.list.Type == 3) {
+        // 跳转产业资源包
+        uni.navigateTo({ url: "/reportPages/IndustryReport/IndustryReport?id=" + this.list.IndustryId });
+      } else {
+        uni.navigateTo({ url: "/activityPages/activityDetail/activityDetail?id=" + this.list.ActivityId });
+      }
+    },
+    richTextClamp(val) {
+      return `<div style="${
+        val == 7 ? "min-height: 50px;" : ""
+      }line-clamp: ${val};-webkit-line-clamp: ${val};text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;word-wrap: break-word;word-break: break-all;">`;
+    },
   },
 };
 </script>

+ 3 - 2
components/audioModule/index.vue

@@ -149,8 +149,9 @@ export default {
         this.curTime = parseInt(this.globalBgAudioManager.currentTime);
       }
       this.audioTime = curAudio.PlaySeconds;
-      this.title = curAudio.Name;
-      this.activityTitle = this.$store.state.audioBg.activityTitle;
+      this.title = curAudio.Name ? curAudio.Name.replace(/<\/?font.*?>/g, "") : "";
+      let activityTitle = this.$store.state.audioBg.activityTitle;
+      this.activityTitle = activityTitle ? activityTitle.replace(/<\/?font.*?>/g, "") : "";
       this.play = !this.globalBgAudioManager.paused;
       this.listenAudio();
     },

+ 4 - 0
config/api.js

@@ -75,6 +75,10 @@ export const Search = {
   getArtAndChartList: (params) => {
     return getHttp("/search/artAndChart/listPage", params, 0);
   },
+  /* 综合搜索接口 */
+  getComprehensiveList: (params) => {
+    return getHttp("/search/comprehensive/list", params, 0);
+  },
 };
 /* 图标 */
 export const Chart = {

+ 110 - 0
pages-search/components/ItemContent.vue

@@ -0,0 +1,110 @@
+<template>
+  <view class="morning-item" @click="isGoDetalisOfDlgHandler(list)">
+    <block v-if="list.Source == 'meetingreviewchapt'">
+      <view class="item-title" v-if="list.IndustryName">
+        <mp-html :content="richTextClamp(3) + `【${list.IndustryName}】晨会精华 ` + '</div>'" />
+      </view>
+      <view class="item-rich-text">
+        <mp-html :content="richTextClamp(10) + list.Content + '</div>'" />
+      </view>
+      <view class="item-time">
+        <text>{{ list.PublishTime }}</text>
+      </view>
+    </block>
+    <block v-else>
+      <view class="item-title" v-if="list.Title">
+        <mp-html :content="richTextClamp(3) + list.Title + '</div>'" />
+      </view>
+      <view class="item-rich-text" v-if="list.Source == 'productinterior'">
+        <mp-html :content="richTextClamp(10) + list.Body + '</div>'" />
+      </view>
+      <view class="item-rich-text" v-else>
+        <mp-html :content="richTextClamp(10) + list.Abstract + '</div>'" />
+      </view>
+      <view class="item-time">
+        <text>{{ list.Source == "productinterior" ? list.PublishTime : list.PublishDate }}</text>
+      </view>
+    </block>
+  </view>
+</template>
+
+<script>
+/*
+Source 字段的分别代表 
+researchsummary     本周研究汇总
+minutessummary      上周纪要汇总
+meetingreviewchapt  晨会精华
+productnterior      产品内测
+*/
+export default {
+  name: "",
+  props: {
+    list: {
+      type: Object,
+      default: {},
+      required: true,
+    },
+  },
+  methods: {
+    // 判断是跳转本周||上周||晨会弹框
+    isGoDetalisOfDlgHandler(item) {
+      // 判断是晨会文章、弹出弹框 通过传统方式进行操控兄弟之间传值
+      if (item.Source == "meetingreviewchapt") {
+        this.$emit("showMorningDialog", item);
+      } else if (item.Source == "productinterior") {
+        // 跳转产品内测详情
+        uni.navigateTo({
+          url: "/reportPages/internalDetials/internalDetials?id=" + item.ProductInteriorId,
+        });
+      } else {
+        let isType = item.Source == "researchsummary" ? 2 : 3;
+        this.$store.dispatch("checkHandle", "/reportPages/reportSecretDetail/reportSecretDetail?type=" + isType + "&id=" + item.ArticleId);
+      }
+    },
+    // 对返回的文本进行处理 多少行进行省略
+    richTextClamp(val) {
+      return `<div style="${
+        val >= 7 ? "min-height: 50px;" : ""
+      }line-clamp: ${val};-webkit-line-clamp: ${val};text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;word-wrap: break-word;word-break: break-all;">`;
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+.morning-item {
+  width: 100%;
+  background: #ffffff;
+  box-shadow: 0rpx 3rpx 8rpx 0rpx rgba(0, 0, 0, 0.16);
+  border-radius: 8rpx;
+  padding: 20rpx;
+  margin-bottom: 20rpx;
+  overflow: hidden;
+  .item-title {
+    position: relative;
+    font-size: 32rpx;
+    font-weight: 500;
+    color: #333333;
+    line-height: 38rpx;
+    text-indent: 0.5em;
+    &::before {
+      content: "";
+      position: absolute;
+      top: 5rpx;
+      left: 0;
+      width: 6rpx;
+      height: 31rpx;
+      background-color: #3385ff;
+    }
+  }
+  .item-rich-text {
+    margin: 10rpx 0;
+  }
+  .item-time {
+    display: flex;
+    align-items: center;
+    color: #acacac;
+    font-size: 24rpx;
+    line-height: 28rpx;
+  }
+}
+</style>

+ 120 - 0
pages-search/components/industrialsource.vue

@@ -0,0 +1,120 @@
+<template>
+  <view class="container-report-item" @click="goDetail(list)">
+    <view class="item-title" v-if="list.IndustryName">
+      <mp-html :content="richTextClamp(3) + list.IndustryName + isSourceText(list) + '</div>'" />
+    </view>
+    <view class="item-lable">
+      <view class="lable-list" v-for="item in list.IndustrialSubjectList" :key="item.IndustrialSubjectId">{{ item.SubjectName }}</view>
+    </view>
+    <view class="item-time">
+      <text>{{ list.PublishDate }} &nbsp;&nbsp;更新</text>
+    </view>
+  </view>
+</template>
+
+<script>
+import mpHtml from "@/uni_modules/mp-html/components/mp-html/mp-html.vue";
+export default {
+  name: "",
+  components: { mpHtml },
+  props: {
+    list: {
+      type: Object,
+      default: {},
+      required: true,
+    },
+  },
+  data() {
+    return {};
+  },
+  computed: {},
+  watch: {},
+  created() {},
+  mounted() {},
+  methods: {
+    goDetail(item) {
+      if (item.HomeType !== 1) {
+        /* 无需授权且已绑定 检验是或否有权限 */
+        uni.navigateTo({ url: "/reportPages/IndustryReport/IndustryReport?id=" + item.IndustrialManagementId });
+      }
+    },
+    isSourceText(list) {
+      let str = list.Source == 1 ? "(弘则资源包)" : list.Source == 2 ? "(买方研选主题)" : "";
+      return str;
+    },
+    richTextClamp(val) {
+      return `<div style="${
+        val == 7 ? "min-height: 50px;" : ""
+      }line-clamp: ${val};-webkit-line-clamp: ${val};text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;word-wrap: break-word;word-break: break-all;">`;
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+.container-report-item {
+  width: 100%;
+  background: #ffffff;
+  box-shadow: 0rpx 3rpx 8rpx 0rpx rgba(0, 0, 0, 0.16);
+  border-radius: 8rpx;
+  padding: 20rpx;
+  margin-bottom: 20rpx;
+  overflow: hidden;
+  .item-title {
+    position: relative;
+    font-size: 32rpx;
+    font-weight: 500;
+    color: #333333;
+    line-height: 38rpx;
+    text-indent: 0.5em;
+    &::before {
+      content: "";
+      position: absolute;
+      top: 5rpx;
+      left: 0;
+      width: 6rpx;
+      height: 31rpx;
+      background-color: #3385ff;
+    }
+  }
+  .item-lable {
+    margin-top: 20rpx;
+    height: 290rpx;
+    display: flex;
+    flex-direction: column;
+    flex-wrap: wrap;
+    overflow: hidden;
+    overflow-x: auto;
+    .lable-list {
+      width: 185rpx;
+      height: 42rpx;
+      border-radius: 39rpx;
+      margin-bottom: 30rpx;
+      margin-right: 30rpx;
+      text-align: center;
+      line-height: 39rpx;
+      background: url(~@/static/img/report_bg.png) no-repeat;
+      background-size: 100% 100%;
+      text-indent: 0em;
+    }
+  }
+
+  .text-Line {
+    text-overflow: -o-ellipsis-lastline;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    word-wrap: break-word;
+    word-break: break-all;
+  }
+
+  .item-time {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    color: #acacac;
+    font-size: 24rpx;
+    line-height: 28rpx;
+  }
+}
+</style>

+ 113 - 0
pages-search/components/morningDlg.vue

@@ -0,0 +1,113 @@
+<template>
+  <view class="morning-dlg">
+    <van-popup :show="isMorningShow" @close="onClose" round>
+      <view class="close-iocn">
+        <van-icon @click="onClose" color="#333" name="cross" />
+      </view>
+      <view class="content">
+        <view class="content-box">
+          <view class="report-content-title">{{ morningItem.IndustryName }}</view>
+          <view class="content-body">
+            <mp-html :content="strFontSize(morningItem.Content)" />
+          </view>
+        </view>
+        <view class="bottom-btn">
+          <view class="btn" @click="lookPrevious"> 查看往期汇总</view>
+          <view class="btn" @click="lookDetails"> 查看资源包</view>
+        </view>
+      </view>
+    </van-popup>
+  </view>
+</template>
+
+<script>
+export default {
+  props: {
+    isMorningShow: {
+      type: Boolean,
+      default: false,
+      required: true,
+    },
+    morningItem: {
+      type: Object,
+      default: {},
+      required: true,
+    },
+  },
+  data() {
+    return {
+      show: false,
+    };
+  },
+  methods: {
+    // 关闭弹框
+    onClose() {
+      this.$emit("update:isMorningShow", false);
+    },
+    // 查看往期汇总
+    lookPrevious() {
+      uni.navigateTo({
+        url: "/reportPages/morningAll/morningAll",
+      });
+      this.onClose();
+    },
+    // 查看资源包
+    lookDetails() {
+      uni.navigateTo({
+        url: "/reportPages/IndustryReport/IndustryReport?id=" + this.morningItem.IndustryId,
+      });
+      this.onClose();
+    },
+  },
+};
+</script>
+
+<style scope lang="scss">
+.morning-dlg {
+  .close-iocn {
+    padding: 25rpx 35rpx;
+    display: flex;
+    justify-content: flex-end;
+  }
+  .content {
+    width: 632rpx;
+    background-color: #fff;
+    padding: 0rpx 30rpx 100rpx 30rpx;
+    .content-box {
+      width: 100%;
+      min-height: 400rpx;
+      max-height: 830rpx;
+      overflow: hidden;
+      overflow-y: auto;
+    }
+    .bottom-btn {
+      position: fixed;
+      bottom: 0;
+      left: 0;
+      width: 100%;
+      height: 82rpx;
+      display: flex;
+      align-items: center;
+      background-color: #fff;
+      border-top: 1rpx solid #f0f0f0;
+      color: #3385ff;
+      .btn {
+        flex: 1;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        height: 100%;
+      }
+      :first-child {
+        border-right: 3rpx solid #f0f0f0;
+      }
+    }
+    .content-body {
+      margin-top: 15rpx;
+    }
+  }
+  .report-content-title {
+    text-align: center;
+  }
+}
+</style>

+ 163 - 0
pages-search/components/synthetical.vue

@@ -0,0 +1,163 @@
+<template>
+  <view>
+    <view class="content-ul" v-if="haveData">
+      <view class="item-ul">
+        <block v-for="(item, index) in newDataList" :key="index">
+          <view v-if="index % 2 == 0 && item.IsShowData">
+            <block v-if="item.Source === 'article'"> <ReportItem :list="item.Article" /></block>
+            <block v-if="item.Source === 'newchart'">
+              <ChartItem :list="item.Newchart" :isMyChartCollection="isMyChartCollection" @myChartIsTop="myChartIsTop" @myChartCollect="myChartCollect" />
+            </block>
+            <block v-if="item.Source === 'roadshow' || item.Source === 'activityvideo' || item.Source === 'activityvoice'">
+              <RoadshowItem :list="item.Roadshow" @isCollectionHandeler="isCollectionHandeler" />
+            </block>
+            <block v-if="item.Source === 'activity' || item.Source === 'activityspecial'">
+              <ActivityItem :list="item.Activity" />
+            </block>
+            <block v-if="item.Source === 'industrialsource'">
+              <Industrialsource :list="item.IndustrialResource" />
+            </block>
+            <block v-if="['researchsummary', 'minutessummary', 'meetingreviewchapt', 'productinterior'].includes(item.Source)">
+              <item-content :list="dataListItem(item)" @showMorningDialog="showMorningDialog" />
+            </block>
+          </view>
+        </block>
+      </view>
+      <view class="item-ul">
+        <block v-for="(item, index) in newDataList" :key="index">
+          <view v-if="index % 2 !== 0 && item.IsShowData">
+            <block v-if="item.Source === 'article'"> <ReportItem :list="item.Article" /></block>
+            <block v-if="item.Source === 'newchart'">
+              <ChartItem :list="item.Newchart" :isMyChartCollection="isMyChartCollection" @myChartIsTop="myChartIsTop" @myChartCollect="myChartCollect" />
+            </block>
+            <block v-if="item.Source === 'industrialsource'">
+              <Industrialsource :list="item.IndustrialResource" />
+            </block>
+            <block v-if="item.Source === 'roadshow' || item.Source === 'activityvideo' || item.Source === 'activityvoice'">
+              <RoadshowItem :list="item.Roadshow" @isCollectionHandeler="isCollectionHandeler" />
+            </block>
+            <block v-if="item.Source === 'activity' || item.Source === 'activityspecial'">
+              <ActivityItem :list="item.Activity" />
+            </block>
+            <block v-if="['researchsummary', 'minutessummary', 'meetingreviewchapt', 'productinterior'].includes(item.Source)">
+              <item-content :list="dataListItem(item)" @showMorningDialog="showMorningDialog" />
+            </block>
+          </view>
+        </block>
+      </view>
+    </view>
+    <view class="nodata" v-else>
+      <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/act_search.png" mode="" class="nodata_ico"></image>
+      <text>暂时没有符合条件的活动</text>
+    </view>
+    <morning-dlg v-if="isMorningShow" :isMorningShow.sync="isMorningShow" :morningItem.sync="morningItem" />
+  </view>
+</template>
+
+<script>
+import { Search } from "@/config/api";
+import ChartItem from "@/components/ItemComponent/chartItem.vue";
+import ReportItem from "@/components/ItemComponent/reportItem.vue";
+import RoadshowItem from "@/components/ItemComponent/roadshowItem.vue";
+import ActivityItem from "@/components/ItemComponent/activityItem.vue";
+import ItemContent from "./ItemContent.vue";
+import MorningDlg from "./morningDlg.vue";
+import Industrialsource from "./industrialsource.vue";
+export default {
+  components: { Industrialsource, ChartItem, ReportItem, RoadshowItem, ActivityItem, ItemContent, MorningDlg },
+  props: {
+    searchTxt: {
+      type: String,
+      default: "",
+    },
+    isSyntheticalShow: {
+      type: Boolean,
+      default: false,
+    },
+    pageNumSynthetical: {
+      type: Number,
+      default: "",
+    },
+  },
+  data() {
+    return {
+      newDataList: [],
+      isMorningShow: false, // 晨会的弹框
+      morningItem: {}, // 晨会的弹框
+      haveData: true,
+    };
+  },
+  watch: {
+    pageNumSynthetical: {
+      handler(val) {
+        if (this.isSyntheticalShow) {
+          this.getComprehensiveList();
+        }
+      },
+      deep: true,
+      immediate: true,
+    },
+  },
+  computed: {},
+  components: {},
+  methods: {
+    // 获取数据
+    async getComprehensiveList() {
+      const res = await Search.getComprehensiveList({
+        KeyWord: this.searchTxt.replace(/^\s+|\s+$/g, ""),
+        CurrentIndex: this.pageNumSynthetical,
+        PageSize: 10,
+      });
+      if (res.Ret === 200) {
+        this.$parent.status = !res.Data.Paging.IsEnd ? "loadmore" : "nomore";
+        let listArr = [];
+        res.Data.List &&
+          res.Data.List.forEach((item) => {
+            let obj = {
+              Source: item.Source,
+              Article: item.Article,
+              Newchart: item.Newchart,
+              Activity: item.Activity || item.Activityspecial,
+              Roadshow: item.Roadshow || item.Activityvideo || item.Activityvoice,
+              ThreeSummary: item.Researchsummary || item.Minutessummary || item.Meetingreviewchapt || item.ProductInterior,
+              IndustrialResource: item.IndustrialResource,
+            };
+            if (obj.Article && obj.Article.BodyHighlight) {
+              obj.Article.Body = obj.Article.BodyHighlight;
+            }
+            listArr.push({ ...obj, IsShowData: obj.Article || obj.Newchart || obj.Roadshow || obj.Activity || obj.ThreeSummary || obj.IndustrialResource });
+          });
+        this.newDataList = this.pageNumSynthetical === 1 ? listArr : [...this.newDataList, ...listArr];
+        this.haveData = this.newDataList && this.newDataList.length ? true : false;
+      }
+    },
+    // 晨会弹框显示
+    showMorningDialog(item) {
+      console.log(item);
+      if (item.Source == "meetingreviewchapt") {
+        this.isMorningShow = true;
+        this.morningItem = item;
+      }
+    },
+    // 处理数据
+    dataListItem(item) {
+      let obj = item.ThreeSummary ? { ...item.ThreeSummary, Source: item.Source } : {};
+      return obj;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.content-ul {
+  padding: 30rpx 10rpx;
+  display: flex;
+  justify-content: space-between;
+  .item-ul {
+    width: 49%;
+    &:first-child {
+      margin-right: 10rpx;
+    }
+  }
+}
+</style>

+ 33 - 92
pages-search/indedxSearch/indedxSearch.vue

@@ -20,41 +20,19 @@
             <text @click="searchHandle" style="color: #3385ff">搜索</text>
           </view>
         </view>
+        <!-- // 综合及各种类型的的tabs -->
         <view class="search-tabs" v-if="isResult">
           <view :class="['tabs-item', tabsActive == item.id && 'active']" v-for="item in tabsList" :key="item.id" @click="tabsHandel(item)">
             {{ item.title }}
             <view class="item-act" v-if="tabsActive == item.id"></view>
           </view>
         </view>
+        <!-- // 活动微路演的筛选 -->
         <block v-if="isResult">
-          <view class="more-summary more-box" v-if="tabsActive == 1 && haveResultSummary">
-            <view>
-              <text class="more-text"> 纪要/图表 </text>
-            </view>
-            <view style="display: flex; align-items: center">
-              <!-- <view class="summary-select">
-              <text @click="summarySelectHandler(item, '纪要')" :class="['select-item', summarySelectActive == item.value && 'active-item']" v-for="item in summarySelect" :key="item.value">{{
-                item.name
-              }}</text>
-            </view> -->
-              <view v-if="tabsActive == 1" class="more-rivet" @click="tabsActiveMore(2)">
-                更多 <u-icon name="arrow-right" color="#3385FF" size="28"></u-icon>
-              </view>
-            </view>
-          </view>
-          <view
-            class="activity-select"
-            style="display: flex; align-items: center; justify-content: flex-end"
-            v-if="tabsActive == 4 || tabsActive == 5"
-          >
+          <view class="activity-select" style="display: flex; align-items: center; justify-content: flex-end" v-if="tabsActive == 4 || tabsActive == 5">
             <block v-for="item in activitySelect" :key="item.type">
               <view :class="['summary-select', item.type == 5 && 'select-roadshow']" v-if="tabsActive == item.type">
-                <text
-                  @click="summarySelectHandler(key, item.name)"
-                  :class="['select-item', activitySelectActive == key.value && 'active-item']"
-                  v-for="key in item.list"
-                  :key="key.value"
-                >
+                <text @click="summarySelectHandler(key, item.name)" :class="['select-item', activitySelectActive == key.value && 'active-item']" v-for="key in item.list" :key="key.value">
                   {{ key.name }}
                 </text>
               </view>
@@ -68,12 +46,7 @@
           <view class="history" v-if="key.title !== '搜索历史' || (key.title == '搜索历史' && historySearchList.length)">
             <view class="history-title title">
               <text>{{ key.title }}</text>
-              <image
-                v-if="key.imgShown"
-                @click="clearHistory"
-                src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/empty_ico.png"
-                class="empty_ico"
-              ></image>
+              <image v-if="key.imgShown" @click="clearHistory" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/empty_ico.png" class="empty_ico"></image>
             </view>
             <view class="history-item">
               <block v-for="(item, index) in relyOn(key.title)" :key="item">
@@ -88,46 +61,14 @@
       </view>
       <view v-else class="content">
         <block v-if="haveResult">
-          <view>
-            <summary-chart
-              :resultList="tabsActive == 1 ? resultList.slice(0, 10) : resultList"
-              :tabsActiveChild="tabsActive"
-              v-if="resultList.length && (tabsActive == 2 || tabsActive == 1)"
-            />
-            <view class="more-report more-box" v-if="tabsActive === 1 && haveResultReport">
-              <text class="more-text"> 资源包/报告 </text>
-              <view>
-                <view class="more-rivet" @click="tabsActiveMore(3)"> 更多 <u-icon name="arrow-right" color="#3385FF" size="28"></u-icon> </view>
-              </view>
-            </view>
-            <reportPage
-              @updateFllow="updateFllow"
-              :reportPageData="reportPageData"
-              id="container-report-page"
-              v-if="Object.keys(reportPageData).length && (tabsActive == 3 || tabsActive == 1)"
-            />
-            <view class="more-activity more-box" v-if="tabsActive === 1 && haveResultActivity">
-              <text class="more-text"> 活动 </text>
-              <view>
-                <view class="more-rivet" @click="tabsActiveMore(4)"> 更多 <u-icon name="arrow-right" color="#3385FF" size="28"></u-icon> </view>
-              </view>
-            </view>
-            <activityBack
-              :collectLists="collectList"
-              :tabsActiveSearch="tabsActive"
-              v-if="collectList.length && (tabsActive == 4 || tabsActive == 1)"
-            />
-            <view class="more-activity more-box" v-if="tabsActive === 1 && haveResultRoadshow">
-              <text class="more-text"> 微路演 </text>
-              <view>
-                <view class="more-rivet" @click="tabsActiveMore(5)"> 更多 <u-icon name="arrow-right" color="#3385FF" size="28"></u-icon> </view>
-              </view>
-            </view>
-            <roadshowPage
-              :roadshowPageList="roadshowPageList"
-              :tabsRoadshowSearch="tabsActive"
-              v-if="roadshowPageList.length && (tabsActive == 5 || tabsActive == 1)"
-            />
+          <block v-if="tabsActive === 1">
+            <synthetical :searchTxt="searchTxt" :isSyntheticalShow="isSyntheticalShow" :pageNumSynthetical="pageNumSynthetical" />
+          </block>
+          <view v-else>
+            <summary-chart :resultList="tabsActive == 1 ? resultList.slice(0, 10) : resultList" :tabsActiveChild="tabsActive" v-if="resultList.length && (tabsActive == 2 || tabsActive == 1)" />
+            <reportPage @updateFllow="updateFllow" :reportPageData="reportPageData" id="container-report-page" v-if="Object.keys(reportPageData).length && (tabsActive == 3 || tabsActive == 1)" />
+            <activityBack :collectLists="collectList" :tabsActiveSearch="tabsActive" v-if="collectList.length && (tabsActive == 4 || tabsActive == 1)" />
+            <roadshowPage :roadshowPageList="roadshowPageList" :tabsRoadshowSearch="tabsActive" v-if="roadshowPageList.length && (tabsActive == 5 || tabsActive == 1)" />
           </view>
         </block>
         <view class="nodata" v-else>
@@ -150,9 +91,10 @@ import activityBack from "../components/activityBack.vue";
 import reportPage from "../components/report.vue";
 import roadshowPage from "../components/roadshow.vue";
 import NotHaveLogin from "../../components/notHaveLogin.vue";
+import Synthetical from "../components/synthetical.vue";
 
 export default {
-  components: { summaryChart, activityBack, reportPage, roadshowPage, NotHaveLogin },
+  components: { summaryChart, activityBack, reportPage, roadshowPage, NotHaveLogin, Synthetical },
   data() {
     return {
       searchTxt: "",
@@ -175,7 +117,8 @@ export default {
       activitySelectActive: "0",
       refresh: false, //正在下拉
       pageNum: 1,
-      pageSize: null,
+      pageNumSynthetical: 0,
+      pageSize: 10,
       totalPage: 0,
       status: "loadmore",
       loadText: {
@@ -184,6 +127,7 @@ export default {
         nomore: "已经到底了",
       },
       isSearchKeyWord: [],
+      isSyntheticalShow: false,
     };
   },
   computed: {
@@ -212,15 +156,7 @@ export default {
         : this.haveResultRoadshow;
     },
   },
-  watch: {
-    tabsActive: {
-      handler(val) {
-        val == 1 ? (this.pageSize = 5) : (this.pageSize = 10);
-      },
-      deep: true,
-      immediate: true,
-    },
-  },
+  watch: {},
   methods: {
     //搜索事件
     searchHandle() {
@@ -272,16 +208,16 @@ export default {
     },
     //搜索
     async getDataList() {
+      this.pageNumSynthetical = 0;
       this.isResult = true;
+      this.isSyntheticalShow = false;
       if (!this.isSearchKeyWord.includes(this.searchTxt)) {
         this.isSearchKeyWord.push(this.searchTxt);
         await User.userSearchKeyWordLog({ KeyWord: this.searchTxt });
       }
       if (this.tabsActive == 1) {
-        this.synthesiz();
-        this.getReportList();
-        this.getActivityBackList();
-        this.getRoadshowList();
+        this.isSyntheticalShow = true;
+        this.pageNumSynthetical = 1;
       } else if (this.tabsActive == 2) {
         this.synthesiz();
       } else if (this.tabsActive == 3) {
@@ -297,7 +233,7 @@ export default {
       const res = await Search.getArtAndChartList({
         KeyWord: this.searchTxt.replace(/^\s+|\s+$/g, ""),
         OrderColumn: this.summarySelectActive,
-        PageSize: 10,
+        PageSize: this.pageSize,
         CurrentIndex: this.pageNum,
         ListType: 1,
       });
@@ -376,7 +312,7 @@ export default {
     async getReportList() {
       const res = await Report.getSearchReportAndResource({
         KeyWord: this.searchTxt.replace(/^\s+|\s+$/g, ""),
-        PageSize: this.tabsActive == 1 ? 5 : "",
+        PageSize: "",
       });
       if (res.Ret === 200) {
         if (this.refresh) {
@@ -394,7 +330,7 @@ export default {
     //获取微路演
     async getRoadshowList() {
       const res = await Home.microRoadshowList({
-        PageSize: this.pageSize == 5 ? 6 : this.pageSize,
+        PageSize: this.pageSize,
         CurrentIndex: this.pageNum,
         KeyWord: this.searchTxt.replace(/^\s+|\s+$/g, ""),
         Filter: Number(this.activitySelectActive),
@@ -451,7 +387,7 @@ export default {
         duration: 300,
       });
       this.pageNum = 1;
-      this.pageSize = this.tabsActive == 1 ? 5 : 10;
+      this.pageNumSynthetical = 0;
       this.totalPage = 0;
       this.summarySelectActive = "Matching";
       this.activitySelectActive = "0";
@@ -510,9 +446,13 @@ export default {
   }),
   // 上拉加载this.resultList
   onReachBottom: Throttle(function () {
-    if (this.tabsActive == 1 || this.tabsActive == 3) return;
+    if (this.tabsActive == 3) return;
     if (this.status === "nomore") return;
     this.status = "loading";
+    if (this.tabsActive == 1) {
+      this.pageNumSynthetical++;
+      return;
+    }
     this.pageNum++;
     this.getDataList();
   }),
@@ -622,6 +562,7 @@ export default {
     }
     .history {
       height: 270rpx;
+      overflow: hidden;
       .history-title {
         display: flex;
         align-items: center;