bding 1 year ago
parent
commit
ca413bdb53

+ 17 - 1
config/modules/Reports.js

@@ -131,4 +131,20 @@ export const Reports = {
   reportClickHistory: (params) => {
     return postHttp("/report_selection/click/history", params, 0);
   },
-};
+  /* 产品内测 列表 */
+  getProductInteriorList: (params) => {
+    return getHttp("/product_interior/list", params, 0);
+  },
+  /* 产品内测 详情 */
+  getProductInteriorDetail: (params) => {
+    return getHttp("/product_interior/detail", params, 0);
+  },
+  /* 晨会精华汇总列表 */
+  getMorningMeetingList: (params) => {
+    return getHttp("/morning_meeting/gather/list", params, 0);
+  },
+  /* 晨会精华汇总详情 */
+  getMorningMeetingDetail: (params) => {
+    return getHttp("/morning_meeting/gather/detail", params, 0);
+  },
+};

+ 32 - 12
pages/index/components/ItemContent.vue

@@ -1,14 +1,27 @@
 <template>
   <view class="morning-item" @click="isGoDetalisOfDlgHandler(list)">
-    <view class="item-title" v-if="list.Title">
-      <mp-html :content="richTextClamp(3) + list.Title + '</div>'" />
-    </view>
-    <view class="item-rich-text">
-      <mp-html :content="richTextClamp(10) + list.Annotation + '</div>'" />
-    </view>
-    <view class="item-time">
-      <text>{{ list.PublishDate }}</text>
-    </view>
+    <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">
+        <mp-html :content="richTextClamp(10) + list.Abstract + '</div>'" />
+      </view>
+      <view class="item-time">
+        <text>{{ list.PublishDate }}</text>
+      </view>
+    </block>
   </view>
 </template>
 
@@ -25,15 +38,22 @@ export default {
   data() {
     return {};
   },
+  watch: {
+    list: {
+      handler(newval) {
+        console.log(newval);
+      },
+      deep: true,
+    },
+  },
   methods: {
     // 判断是跳转本周||上周||晨会弹框
     isGoDetalisOfDlgHandler(item) {
       // 判断是晨会文章、弹出弹框 通过传统方式进行操控兄弟之间传值
-      if (1 == 1) {
+      if (item.Source == "meetingreviewchapt") {
         this.$emit("showMorningDialog", item);
       } else {
-        // 2 ? "本周研究汇总" : "上周纪要汇总"
-        let isType = "";
+        let isType = item.Source == "researchsummary" ? 2 : 3;
         this.$store.dispatch("checkHandle", "/reportPages/reportSecretDetail/reportSecretDetail?type=" + isType + "&id=" + item.ArticleId);
       }
     },

+ 15 - 11
pages/index/components/morningDlg.vue

@@ -5,12 +5,11 @@
         <van-icon @click="onClose" color="#333" name="cross" />
       </view>
       <view class="content">
-        <view class="report-content-title">【连锁咖啡】晨会精华</view>
-        <view class="content-body">
-          未来2-3年继续看好【瑞幸咖啡】 1)扩张节奏积极:截至2022年公司保持30%+的拓店速度,预计未来仍有1-2倍拓店空间;
-          2)同店增长强劲:20Q3以来实现至少连续9个季度的强劲同店增长,且在23年有望延续;
-          3)单店模型标准高效:快取店标准且高效,直营模式下投资回收期不超过10个月;
-          4)竞争风险:幸运咖价格更低、加速扩张中,且背后有蜜雪冰城非常成熟的加盟体系支撑。
+        <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>
@@ -55,7 +54,7 @@ export default {
     // 查看资源包
     lookDetails() {
       uni.navigateTo({
-        url: "/reportPages/morningDetails/morningDetails",
+        url: "/reportPages/IndustryReport/IndustryReport?id=" + this.morningItem.IndustryId,
       });
       this.onClose();
     },
@@ -71,20 +70,25 @@ export default {
     justify-content: flex-end;
   }
   .content {
-    position: relative;
-    min-height: 400rpx;
-    max-height: 1000rpx;
     width: 632rpx;
     background-color: #fff;
     padding: 0rpx 30rpx 100rpx 30rpx;
+    .content-box {
+      width: 100%;
+      min-height: 400rpx;
+      max-height: 1000rpx;
+      overflow: hidden;
+      overflow-y: auto;
+    }
     .bottom-btn {
-      position: absolute;
+      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 {

+ 15 - 7
pages/index/index.vue

@@ -46,8 +46,8 @@
               <block v-if="item.Source === 'activity' || item.Source === 'activityspecial'">
                 <ActivityItem :list="item.Activity" />
               </block>
-              <block v-if="item.Source === 'article'">
-                <item-content :list="item.Article" @showMorningDialog="showMorningDialog" />
+              <block v-if="['researchsummary', 'minutessummary', 'meetingreviewchapt'].includes(item.Source)">
+                <item-content :list="dataListItem(item)" @showMorningDialog="showMorningDialog" />
               </block>
             </view>
           </block>
@@ -70,8 +70,8 @@
               <block v-if="item.Source === 'activity' || item.Source === 'activityspecial'">
                 <ActivityItem :list="item.Activity" />
               </block>
-              <block v-if="item.Source === 'article'">
-                <item-content :list="item.Article" @showMorningDialog="showMorningDialog" />
+              <block v-if="['researchsummary', 'minutessummary', 'meetingreviewchapt'].includes(item.Source)">
+                <item-content :list="dataListItem(item)" @showMorningDialog="showMorningDialog" />
               </block>
             </view>
           </block>
@@ -80,7 +80,7 @@
       <u-loadmore :status="status" icon-type="flower" :load-text="loadText" margin-top="20" v-if="page_no > 1" />
       <view v-if="newDataList.length === 4" class="bind-btn" @click="goLogin">绑定联系方式后查看更多内容>></view>
       <!-- <suspenButton :show.sync="wholeShowListData.IsShow" v-if="wholeShowListData.IsShow" /> -->
-      <morning-dlg :isMorningShow.sync="isMorningShow" :morningItem.sync="morningItem" />
+      <morning-dlg v-if="isMorningShow" :isMorningShow.sync="isMorningShow" :morningItem.sync="morningItem" />
     </view>
   </page-meta>
 </template>
@@ -153,6 +153,7 @@ export default {
               Newchart: item.Newchart,
               Activity: item.Activity || item.Activityspecial,
               Roadshow: item.Roadshow || item.Activityvideo || item.Activityvoice,
+              ThreeSummary: item.Researchsummary || item.Minutessummary || item.Meetingreviewchapt,
             });
           });
         this.newDataList = this.page_no === 1 ? listArr : [...this.newDataList, ...listArr];
@@ -202,8 +203,15 @@ export default {
     },
     // 晨会弹框显示
     showMorningDialog(item) {
-      this.isMorningShow = true;
-      this.morningItem = 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;
     },
   },
   mounted() {

+ 43 - 5
reportPages/internalDetials/internalDetials.vue

@@ -10,8 +10,18 @@
         <text>注:请务必阅读</text>
         <text class="statement" @click="isShowStatement = true">免责声明 </text>
       </view>
-      <view class="content-abstract"> 摘要:{{ reportDetail.ProductDescription }} </view>
+      <view class="content-abstract"> 摘要:{{ reportDetail.Abstract }}</text> </view>
       <statement :show="isShowStatement" />
+      <view>
+        <view
+          v-for="(item, index) in reportDetail.BodySlice"
+          :key="index"
+          @click="goIsTypeDetails(item)"
+          :style="{ color: item.Type > 1 && '#3385FF', 'word-wrap': 'break-word' }"
+        >
+          <mp-html :content="strFontSize(item.Body)" />
+        </view>
+      </view>
     </view>
     <view class="nodata" v-else>
       <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/report_loading_icon.png" class="nodata_img"></image>
@@ -46,13 +56,14 @@ export default {
       isShowStatement: false,
       haveData: true,
       hasPermission: "",
+      reportId: 0,
     };
   },
   components: { statement },
   methods: {
     async reportSelectionDetail() {
-      const res = await Reports.reportSelectionDetail({
-        IsBestNew: true,
+      const res = await Reports.getProductInteriorDetail({
+        ProductInteriorId: this.reportId,
       });
       if (res.Ret === 200) {
         this.hasPermission = res.Data.HasPermission;
@@ -84,9 +95,33 @@ export default {
             },
           });
     },
+    // 去往不同的详情页
+    goIsTypeDetails(item) {
+      if (item.Type == 1) return;
+      switch (item.Type) {
+        case 2:
+          uni.navigateTo({
+            url: "/pageMy/reportDetail/reportDetail?id=" + item.SourceId,
+          });
+          break;
+        case 3:
+          uni.navigateTo({
+            url: "/activityPages/activityDetail/activityDetail?id=" + item.SourceId,
+          });
+          break;
+        case 4:
+          uni.navigateTo({
+            url: "/reportPages/IndustryReport/IndustryReport?id=" + item.SourceId,
+          });
+          break;
+        default:
+          "";
+      }
+    },
   },
-  onLoad() {
-    this.reportSelectionDetail();
+  onLoad(options) {
+    this.reportId = Number(options.id) || "";
+    this.reportId > 0 && this.reportSelectionDetail();
   },
   async onShow() {
     await this.$store.dispatch("checkHandle");
@@ -136,6 +171,9 @@ export default {
       left: 0;
       background-color: #3385ff;
     }
+    // .abstract {
+    //   display: inline-block;
+    // }
   }
   .nodata-tip {
     color: #999;

+ 6 - 6
reportPages/internalTesting/internalTesting.vue

@@ -1,15 +1,15 @@
 <template>
   <view class="container intemal-container">
-    <view class="content-ul" v-for="item in collectList" :key="item.ArticleId" @click="goDetail">
+    <view class="content-ul" v-for="item in collectList" :key="item.ProductInteriorId" @click="goDetail(item)">
       <view class="li-title">{{ item.Title }}</view>
-      <view class="li-tiem">{{ item.PublishDate }}</view>
+      <view class="li-tiem">{{ item.PublishTime }}</view>
     </view>
     <u-loadmore :status="status" icon-type="flower" :load-text="loadText" margin-top="20" v-if="page_no > 1" />
   </view>
 </template>
 
 <script>
-import { Mine } from "@/config/api.js";
+import { Reports } from "@/config/api.js";
 
 export default {
   data() {
@@ -29,7 +29,7 @@ export default {
   methods: {
     // 获取列表数据
     async getList() {
-      const res = await Mine.getHistory({
+      const res = await Reports.getProductInteriorList({
         PageSize: this.pageSize,
         CurrentIndex: this.page_no,
       });
@@ -42,9 +42,9 @@ export default {
       }
     },
     // 去往详情
-    goDetail() {
+    goDetail(item) {
       uni.navigateTo({
-        url: "/reportPages/internalDetials/internalDetials",
+        url: "/reportPages/internalDetials/internalDetials?id=" + item.ProductInteriorId,
       });
     },
   },

+ 23 - 29
reportPages/morningAll/morningAll.vue

@@ -1,9 +1,9 @@
 <template>
   <view class="container morning-all-content">
-    <view class="content-ul" v-for="item in collectList" :key="item.title" @click="lookDetails">
-      <view class="title">{{ item.title }}</view>
+    <view class="content-ul" v-for="item in collectList" :key="item.Id" @click="lookDetails(item)">
+      <view class="title">{{ item.Title }}</view>
       <view class="body">
-        <text style="flex: 1">{{ item.body }}</text>
+        <text style="flex: 1">{{ item.IndustryName }}</text>
         <view><van-icon name="arrow" /></view>
       </view>
     </view>
@@ -16,45 +16,39 @@ import { Reports } from "@/config/api.js";
 export default {
   data() {
     return {
-      collectList: [
-        {
-          title: "03.06(周一)丨晨会精华",
-          body: "【xx产业】、【xx产业】、【xx产业】、【xx产业】、【xx产业】",
-        },
-        {
-          title: "03.03(周五)丨晨会精华",
-          body: "【xx产业】、【xx产业】、【xx产业】、【xx产业】、【xx产业】",
-        },
-        {
-          title: "03.02(周四)丨晨会精华",
-          body: "【xx产业】、【xx产业】、【xx产业】、【xx产业】、【xx产业】",
-        },
-        {
-          title: "03.01(周三)丨晨会精华",
-          body: "【xx产业】",
-        },
-      ],
+      collectList: [],
       page_no: 1,
       pageSize: 10,
+      status: "loadmore",
+      loadText: {
+        loadmore: "上拉加载更多",
+        loading: "加载中",
+        nomore: "已经到底了",
+      },
     };
   },
   methods: {
     // 获取数据
     async getDataList() {
-      const res = await Reports.reportSelectionDetail();
-      if (res.Ret === 200) { 
-        this.status = res.Paging.IsEnd ? "nomore" : "loadmore";
-        this.collectList = this.page_no === 1 ? res.Data.list || [] : [...this.collectList, ...res.Data.list];
+      const res = await Reports.getMorningMeetingList({
+        PageSize: this.pageSize,
+        CurrentIndex: this.page_no,
+      });
+      if (res.Ret === 200) {
+        this.status = res.Data.Paging.IsEnd ? "nomore" : "loadmore";
+        this.collectList = this.page_no == 1 ? res.Data.List || [] : this.collectList.concat(res.Data.List);
       }
     },
-        // 查看资源包
-    lookDetails() {
+    // 查看资源包
+    lookDetails(item) {
       uni.navigateTo({
-        url: "/reportPages/morningDetails/morningDetails",
+        url: "/reportPages/morningDetails/morningDetails?id=" + item.Id,
       });
     },
   },
-  onload(){},
+  onLoad() {
+    this.getDataList();
+  },
   // 上滑触底触发分页
   onReachBottom() {
     if (this.status === "nomore") return;

+ 21 - 13
reportPages/morningDetails/morningDetails.vue

@@ -1,18 +1,17 @@
 <template>
   <view class="container morning-details-content">
-    <view class="report-content-title">本周研究汇总(2月10日至2月17日) </view>
+    <view class="report-content-title">{{ reportDetails.Title }} </view>
     <view class="content-time">
-      <text>弘则产品组</text>
-      <text class="time">03.06 10:30:00</text>
+      <text>{{ reportDetails.Department }} </text>
+      <text class="time">{{ reportDetails.PublishTime }} </text>
     </view>
     <!-- 这里是循环的盒子 -->
-    <view class="report-ul">
-      <view class="li-title">【风电海缆】</view>
+    <view class="report-ul" v-for="item in reportDetails.List" :key="item.Id">
+      <view class="li-title">{{ item.IndustryName }}</view>
       <view class="li-text">
-        1. 年报结果符合预期:四季度受军事影响、航道影响、疫情影响, 2. 在手订单支撑23年业绩增长:公司在手海缆与海工订单约70亿元,若 3.
-        后续亮点在出口和扩产:22年中标海外订单6.3亿,今年中标金额有望创新高,关注出口海外的风电海缆、海油脐带的
+        <mp-html :content="strFontSize(item.Content)" />
       </view>
-      <view class="li-look" @click="goDustrialHandler">查看资源包</view>
+      <view class="li-look" @click="goDustrialHandler(item.IndustryId)">查看资源包</view>
     </view>
   </view>
 </template>
@@ -23,22 +22,30 @@ export default {
   data() {
     return {
       reportDetails: {},
+      reportId: "",
     };
   },
   methods: {
     // 跳转产业标签
-    goDustrialHandler() {
-      this.$store.dispatch("checkHandle", "/reportPages/IndustryReport/IndustryReport?id=");
+    goDustrialHandler(id) {
+      uni.navigateTo({
+        url: "/reportPages/IndustryReport/IndustryReport?id=" + id,
+      });
     },
     // 获取文章详情
     async getDetalis() {
-      const res = await Reports.xxxx({});
+      const res = await Reports.getMorningMeetingDetail({
+        Id: this.reportId,
+      });
       if (res.Ret === 200) {
-        this.reportDetails = res.Date || {};
+        this.reportDetails = res.Data.Detail || {};
       }
     },
   },
-  onLoad() {},
+  onLoad(options) {
+    this.reportId = Number(options.id) || 8;
+    this.getDetalis();
+  },
 };
 </script>
 
@@ -70,6 +77,7 @@ export default {
       justify-content: flex-end;
       font-size: 28rpx;
       color: #3385ff;
+      margin-bottom: 70rpx;
     }
   }
 }