bd 2 years ago
parent
commit
bf92e4425b
36 changed files with 817 additions and 549 deletions
  1. 13 0
      App.vue
  2. 4 1
      activityPages/activityDetail/activityDetail.vue
  3. 76 38
      activityPages/activityDetail/jurisdiction/components.vue
  4. 5 1
      activityPages/activitySearch/activitySearch.vue
  5. 5 0
      activityPages/editOutbound/editOutbound.vue
  6. 5 0
      activityPages/generationAsk/generationAsk.vue
  7. 4 1
      activityPages/themeActivity/themeActivity.vue
  8. 54 0
      components/freeCharge.vue
  9. 32 0
      components/freeMixin.js
  10. 26 13
      components/modalDialog.vue
  11. 29 7
      config/api.js
  12. 2 2
      main.js
  13. 5 0
      pageMy/advice/advice.vue
  14. 5 0
      pageMy/applyInterview/applyInterview.vue
  15. 5 0
      pageMy/browseHistory/browseHistory.vue
  16. 36 0
      pageMy/excessivePages/excessivePages.vue
  17. 150 0
      pageMy/freeTrial/freeTrial.vue
  18. 22 2
      pageMy/login/login.vue
  19. 5 0
      pageMy/myCollection/myCollection.vue
  20. 65 31
      pageMy/reportDetail/reportDetail.vue
  21. 37 7
      pageMy/reportPage/reportPage.vue
  22. 5 0
      pageMy/search/search.vue
  23. 17 1
      pages.json
  24. 7 6
      pages/activity/activity.vue
  25. 13 8
      pages/index/index.vue
  26. 0 341
      pages/login/login.vue
  27. 5 2
      pages/my/my.vue
  28. 1 1
      pages/pcWebViev/pcWebViev.vue
  29. 47 44
      pages/reportForm/reportForm.vue
  30. 6 1
      reportPages/IndustryReport/IndustryReport.vue
  31. 6 1
      reportPages/industrialReport/industrialReport.vue
  32. 5 0
      reportPages/myAskPage/myAskPage.vue
  33. 17 12
      reportPages/reportSearch/reportSearch.vue
  34. 49 11
      reportPages/reportSecretDetail/reportSecretDetail.vue
  35. 48 17
      reportPages/roadEssence/roadEssence.vue
  36. 6 1
      reportPages/secretDetails/secretDetails.vue

+ 13 - 0
App.vue

@@ -6,6 +6,7 @@ export default {
     // #ifdef MP
     this.checkVersion();
     // #endif
+    this.userIsShowShare()
   },
   onShow: function (optios) {
     uni.getSystemInfo({
@@ -260,4 +261,16 @@ button {
   -ms-user-select: none;
   user-select: none;
 }
+.free-charge {
+    position: fixed;
+    display: flex;
+    align-items: center;
+    bottom: 260rpx;
+    right: 41rpx;
+    height: 156rpx;
+    z-index: 999;
+}
+.footer-free-charge {
+  z-index: 99999;
+}
 </style>

+ 4 - 1
activityPages/activityDetail/activityDetail.vue

@@ -204,6 +204,7 @@
     <view v-else>
       <jurisdiction :idAct="id" :haveAuth="haveAuth" :industryMsg="industryMsg" :msgType="msgType" :sellerMobile="sellerMobile" :sellerName="sellerName"></jurisdiction>
     </view>
+    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
@@ -212,6 +213,7 @@ import { activity, User } from "@/config/api.js";
 import modalDialog from "@/components/modalDialog.vue";
 import areaCode from "@/activityPages/components/areaCode.vue";
 import jurisdiction from "./jurisdiction/components.vue";
+import freeCharge from "@/components/freeCharge";
 let app = getApp({ allowDefault: true });
 export default {
   data() {
@@ -254,6 +256,7 @@ export default {
     modalDialog,
     jurisdiction,
     areaCode,
+    freeCharge,
   },
   watch: {
     haveAuth: {
@@ -479,7 +482,7 @@ export default {
    */
   onShareAppMessage: function (res) {
     return {
-      title: "活动详情",
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" : "活动详情",
       path: "/activityPages/activityDetail/activityDetail?id=" + this.id,
       success: (res) => {},
       fail: (err) => {},

+ 76 - 38
activityPages/activityDetail/jurisdiction/components.vue

@@ -1,36 +1,37 @@
 <template>
   <view class="noauth-cont" v-if="haveAuth === 2 || haveAuth === 3 || haveAuth === 4 || haveAuth === 5">
-    <image src="https://hzstatic.hzinsights.com/cygx/czbk/noauth.png" class="noauth-ico"></image>
-    <block v-if="haveAuth == 3">
-      <view class="tip">{{ industryMsg }}</view>
-      <view class="btn-cont" @click="applyAuth"> 立即申请 </view>
+    <block v-if="!isShowAlert">
+      <image src="https://hzstatic.hzinsights.com/cygx/czbk/noauth.png" class="noauth-ico"></image>
+      <block v-if="haveAuth == 3">
+        <view class="tip">{{ industryMsg }}</view>
+        <view class="btn-cont" @click="applyAuth"> 立即申请 </view>
+      </block>
+      <block v-if="haveAuth == 4 || haveAuth == 5">
+        <view class="tip">{{ industryMsg }}</view>
+        <view class="btn-cont" @click="applyAuth"> 立即申请 </view>
+      </block>
+      <view class="tip" v-if="haveAuth === 2">
+        <text style="margin-bottom: 20rpx"> 您暂无权限参加此活动 </text>
+        <text>若想参加可以联系对口销售 </text>
+        <text @click="callPhone(sellerMobile)"
+          >{{ sellerName }}:<text style="color: #d4bf86; display: inline-block">{{ sellerMobile }}</text></text
+        >
+        <text>申请开通对应的试用权限</text>
+      </view>
+      <view v-if="haveAuth === 2" class="btn-cont" @click="sellerApplyAuth"> 立即申请 </view>
+      <view class="btn-cont back-btn" @click="backIndex"> 返回</view>
     </block>
-    <block v-if="haveAuth == 4 ">
-      <view class="tip">{{ industryMsg }}</view>
-      <view class="btn-cont" @click="applyAuth"> 立即申请 </view>
+    <block v-else>
+      <text class="moneh-text"> 上传名片并填写简单信息,24小时内我们会为您开通一个月的免费月卡 </text>
+      <img src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/month_card.png" class="month_card" alt="" />
+      <view class="btn-cont btn-dl" @click="applyAuth"> 立即上传 </view>
+      <view class="btn-cont month-back" @click="backIndex"> 返回</view>
     </block>
-     <block v-if="haveAuth == 5 ">
-      <view class="tip">{{ industryMsg }}</view>
-      <view class="btn-cont" @click="applyAuth"> 立即申请 </view>
-    </block>
-    <view class="tip" v-if="haveAuth === 2">
-      <text style="margin-bottom: 20rpx">
-        <!-- {{ industryMsg }} -->
-        您暂无权限参加此活动
-      </text>
-      <text>若想参加可以联系对口销售 </text>
-      <text @click="callPhone(sellerMobile)"
-        >{{ sellerName }}:<text style="color: #d4bf86; display: inline-block">{{ sellerMobile }}</text></text
-      >
-      <text>申请开通对应的试用权限</text>
-    </view>
-     <view v-if="haveAuth === 2" class="btn-cont" @click="sellerApplyAuth"> 立即申请 </view>
-    <view class="btn-cont back-btn" @click="backIndex"> 返回</view>
   </view>
 </template>
 
 <script>
-import { User } from "@/config/api.js";
+import { User, FreeButton } from "@/config/api.js";
 export default {
   props: {
     haveAuth: {
@@ -53,10 +54,15 @@ export default {
       type: String,
       required: true,
     },
-    idAct:{
+    idAct: {
       type: Number,
       required: true,
-    }
+    },
+  },
+  data() {
+    return {
+      isShowAlert: false,
+    };
   },
   methods: {
     /* 无权限申请开通权限 */
@@ -66,7 +72,9 @@ export default {
         ? uni.navigateTo({
             url: "/pageMy/applyTrial/applyTrial?tryType=Activity&detailId=" + this.idAct,
           })
-        : this.haveAuth === 5 ? this.sellerApplyAuth()  : uni.showModal({
+        : this.haveAuth === 5
+        ? this.sellerApplyAuth()
+        : uni.showModal({
             title: "",
             content: "您已经提交过申请了,请耐心等待",
             showCancel: false,
@@ -75,23 +83,23 @@ export default {
           });
     },
     //销售的立即申请
-    sellerApplyAuth(){
+    sellerApplyAuth() {
       User.applyTry({
-            TryType : 'Activity',
-            DetailId: this.idAct
+        TryType: "Activity",
+        DetailId: this.idAct,
       }).then((res) => {
-          if(res.Ret === 200) {
-            uni.showModal({
+        if (res.Ret === 200) {
+          uni.showModal({
             title: "",
             content: "提交申请成功,请耐心等待",
             showCancel: false,
             confirmColor: "#3385FF",
             success: function (res) {
-              this.backIndex()
+              this.backIndex();
             },
           });
-          }
-      })
+        }
+      });
     },
     // 返回首頁
     backIndex() {
@@ -108,6 +116,16 @@ export default {
         phoneNumber: num,
       });
     },
+    //获取权限弹窗是否展示免费月卡接口
+    async userIsShowAlert() {
+      const res = await FreeButton.userIsShowAlert();
+      if (res.Ret === 200) {
+        this.isShowAlert = res.Data.IsShow;
+      }
+    },
+  },
+  mounted() {
+    this.userIsShowAlert();
   },
 };
 </script>
@@ -150,8 +168,8 @@ export default {
 
     &.back-btn {
       background: #fff !important;
-      color: #2C83FF;
-      border: 1px solid #2C83FF;
+      color: #2c83ff;
+      border: 1px solid #2c83ff;
       margin-top: 30rpx;
     }
 
@@ -169,5 +187,25 @@ export default {
       z-index: 1;
     }
   }
+  .month_card {
+    width: 100%;
+    height: 565rpx;
+    padding-left: -20rpx;
+  }
+  .btn-dl {
+    background: linear-gradient(253deg, #fcf3e9 0%, #eedec8 100%) !important;
+    color: #333 !important;
+    margin: 30rpx auto !important;
+  }
+  .month-back {
+    background: #f6f6f6 !important;
+    color: #999 !important;
+  }
+  .moneh-text {
+    text-align: center;
+    width: 632rpx;
+    margin: 0 auto 20rpx;
+    color: #999999;
+  }
 }
 </style>

+ 5 - 1
activityPages/activitySearch/activitySearch.vue

@@ -215,6 +215,8 @@
 				<view style="color: #A9AFB8;" @click="selectShow=false">取消</view>
 			</u-popup>
 		</view>
+    
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
@@ -225,6 +227,7 @@ import modalDialog from "@/components/modalDialog.vue";
 import areaCode from "@/activityPages/components/areaCode.vue";
 import myMixin from "../components/index.js";
 import myActivityMixin from "../components/indexActivity.js";
+import freeCharge  from '@/components/freeCharge'
 let app = getApp({allowDefault: true});
 export default {
   data() {
@@ -245,6 +248,7 @@ export default {
   components: {
     modalDialog,
     areaCode,
+    freeCharge,
   },
   methods: {
     //获取快捷主题
@@ -544,7 +548,7 @@ export default {
   /* 用户点击分享  */
   onShareAppMessage: function (res) {
     return {
-      title: "活动搜索",
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" :  "活动搜索",
       path:
         "/activityPages/activitySearch/activitySearch?statesId=" +
         this.activeState +

+ 5 - 0
activityPages/editOutbound/editOutbound.vue

@@ -56,11 +56,13 @@
         <rich-text :nodes="content"></rich-text>
       </view>
     </u-modal>
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
 <script>
 import { activity } from "@/config/api.js";
+import freeCharge  from '@/components/freeCharge'
 export default {
   data() {
     return {
@@ -79,6 +81,9 @@ export default {
       cellphone: "",
     };
   },
+  components: {
+    freeCharge
+  },
   methods: {
     areaCode() {
       this.areacodeShow = true;

+ 5 - 0
activityPages/generationAsk/generationAsk.vue

@@ -5,11 +5,13 @@
       <text class="num-tag">{{ advice_content.length }}/100</text>
     </view>
     <view class="btn-cont" @click="submitHandle"> 提交 </view>
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
 <script>
 import { activity, Report } from "@/config/api.js";
+import freeCharge  from '@/components/freeCharge'
 export default {
   data() {
     return {
@@ -18,6 +20,9 @@ export default {
       type: "",
     };
   },
+  components: {
+    freeCharge
+  },
   computed: {
     titlePlaceholder() {
       return this.type == "文章" ? "请描述您的问题,销售会跟进问题,后期在线下为您解答" : "请描述您的问题,分析师会代您向专家提问。";

+ 4 - 1
activityPages/themeActivity/themeActivity.vue

@@ -90,6 +90,7 @@
       />
     </view>
     <areaCode :isAreaCode="isAreaCode" :areaCode="areaCode" />
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
@@ -100,6 +101,7 @@ import modalDialog from "@/components/modalDialog.vue";
 import myMixin from "../components/index.js";
 import myActivityMixin from "../components/indexActivity.js";
 import areaCode from "@/activityPages/components/areaCode.vue";
+import freeCharge  from '@/components/freeCharge'
 export default {
   mixins: [myMixin, myActivityMixin],
   data() {
@@ -116,6 +118,7 @@ export default {
   components: {
     areaCode,
     modalDialog,
+    freeCharge,
   },
   methods: {
     async getActivityList() {
@@ -184,7 +187,7 @@ export default {
   /** 用户点击分享 */
   onShareAppMessage: function (res) {
     return {
-      title: this.type || this.label,
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" : ( this.type || this.label),
       path: "/activityPages/themeActivity/themeActivity?title=" + this.label + "&permissionIds=" + this.permissionIds + "&whichDay="+ this.whichDay + "&type=" + this.type,
     };
   },

+ 54 - 0
components/freeCharge.vue

@@ -0,0 +1,54 @@
+<template>
+  <view class="container-freecharge" v-if="isShowFreeBtn">
+    <image @click="toggle" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/free_icon.png"></image>
+    <image @click="removeBton" class="remove-icon" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/free_%20remove.png"></image>
+  </view>
+</template>
+
+<script>
+import { FreeButton } from "@/config/api.js";
+export default {
+  data() {
+    return {};
+  },
+  props: {
+    isShowFreeBtn: {
+      type: Boolean,
+      default: false,
+    },
+  },
+  watch: {
+  },
+  methods: {
+    //跳转到免费送月卡页面
+    toggle() {
+      uni.navigateTo({
+        url: "/pageMy/freeTrial/freeTrial",
+      });
+    },
+    //隐藏当天的按钮
+    async removeBton() {
+      const res = await FreeButton.userFreeButtonUpdate();
+      if(res.Ret === 200){
+        this.$parent.isShowFree = false;
+      }
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+.container-freecharge {
+  position: relative;
+  image {
+    width: 156rpx;
+    height: 156rpx;
+  }
+  .remove-icon {
+    width: 31rpx;
+    height: 31rpx;
+    position: absolute;
+    right: 0;
+    top: 0;
+  }
+}
+</style>

+ 32 - 0
components/freeMixin.js

@@ -0,0 +1,32 @@
+// import freeCharge  from '@/components/freeCharge'
+import { FreeButton } from "@/config/api.js";
+export default {
+  //   components: {
+  //     freeCharge
+  // },
+  data() {
+    return {
+      isShowFree: false, //免费标签的隐现
+      isHorzMobile: false, //手机号是否是弘则的
+    };
+  },
+  onShow() {
+    this.isShowFreeButton();
+  },
+  methods: {
+    //免费标签的隐现
+    async isShowFreeButton() {
+      const res = await FreeButton.userIsShowFreeButton();
+      if (res.Ret === 200) {
+        this.isShowFree = res.Data.IsShow;
+      }
+    },
+    //判断手机号是否是弘则的
+    async userIsShowShare() {
+      const res = await FreeButton.userIsShowShare();
+      if (res.Ret === 200) {
+       this.isHorzMobile = res.Data.IsShow;
+      }
+    },
+  },
+};

+ 26 - 13
components/modalDialog.vue

@@ -41,7 +41,7 @@
       :content-style="{ fontSize: '32rpx' }"
       @confirm="applyIsShowBtn"
       :show-cancel-button="true"
-      confirm-text="立即申请"
+      :confirm-text="isShowAlert ? '立即上传' : '立即申请'"
       @cancel="applyIsShowCancel"
       :show-title="false"
       :cancel-style="{ borderRight: '1rpx solid #EBEBEB' }"
@@ -68,7 +68,9 @@
         <!-- <rich-text :nodes="hasPermissionText"></rich-text> -->
         <text>您暂无权限参加此活动</text>
         <text>若想参加可以联系对口销售</text>
-        <view>{{jurisdictionList.SellerName}} : <text @click="mobileDial" class="seller-mobile"> {{jurisdictionList.SellerMobile}}</text></view>
+        <view
+          >{{ jurisdictionList.SellerName }} : <text @click="mobileDial" class="seller-mobile"> {{ jurisdictionList.SellerMobile }}</text></view
+        >
         <text>申请开通对应的试用权限</text>
       </view>
     </u-modal>
@@ -112,7 +114,7 @@
 </template>
 
 <script>
-import { User,activity } from "@/config/api.js";
+import { User, activity, FreeButton } from "@/config/api.js";
 export default {
   data() {
     return {
@@ -132,6 +134,7 @@ export default {
       editIsShowDlg: false,
       mailboxBindingDlg: false,
       mailboxText: "您当前绑定的联系方式为邮箱,请先设置您的外呼号码",
+      isShowAlert: false, //获取权限弹窗是否展示免费月卡接口
     };
   },
   props: {
@@ -260,7 +263,7 @@ export default {
       this.cancelShow = this.isCancelShow;
     },
     applyForIsShow() {
-      this.jurisdictionText = this.jurisdictionList.PopupMsg;
+      this.jurisdictionText = this.isShowAlert ? "上传名片并填写简单信息,24小时内我们会为您开通一个月的免费月卡" : this.jurisdictionList.PopupMsg;
       this.applyIsShow = this.applyForIsShow;
     },
     isShowhasPermission() {
@@ -329,8 +332,8 @@ export default {
         });
       } else if (this.hasPermission == 4) {
         this.showRelation = true;
-      }else if (this.hasPermission == 5) {
-       this.showhasPermissionBtn()
+      } else if (this.hasPermission == 5) {
+        this.showhasPermissionBtn();
       }
     },
     applyIsShowCancel() {
@@ -339,15 +342,15 @@ export default {
     },
     showhasPermissionBtn() {
       User.applyTry({
-            TryType : 'Activity',
-            DetailId: this.jurisdictionList.ActivityId
+        TryType: "Activity",
+        DetailId: this.jurisdictionList.ActivityId,
       }).then((res) => {
-         this.showhasPermission = false;
-         this.$parent.isShowhasPermission = false;
-      })
+        this.showhasPermission = false;
+        this.$parent.isShowhasPermission = false;
+      });
     },
-    mobileDial(){
-       uni.makePhoneCall({
+    mobileDial() {
+      uni.makePhoneCall({
         phoneNumber: this.jurisdictionList.SellerMobile, //仅为示例
       });
       this.showhasPermission = false;
@@ -394,6 +397,16 @@ export default {
       this.$parent.mailboxBinding = false;
       this.mailboxBindingDlg = false;
     },
+    //获取权限弹窗是否展示免费月卡接口
+    async userIsShowAlert() {
+      const res = await FreeButton.userIsShowAlert();
+      if (res.Ret === 200) {
+        this.isShowAlert = res.Data.IsShow;
+      }
+    },
+  },
+  mounted() {
+    this.userIsShowAlert();
   },
 };
 </script>

+ 29 - 7
config/api.js

@@ -29,10 +29,10 @@ export const Report = {
   articleAskAdd: (params) => {
     return postHttp("/article/askAdd", params, 0);
   },
-   /* 下载PDF打水印接口*/
-   articlePdfwatermark: params => {
-    return getHttp('/article/pdfwatermark',params,1)
-},
+  /* 下载PDF打水印接口*/
+  articlePdfwatermark: (params) => {
+    return getHttp("/article/pdfwatermark", params, 1);
+  },
 };
 
 /* 用户 */
@@ -301,12 +301,34 @@ export const activity = {
   getActivityListNew: (params) => {
     return getHttp("/activity/listNew", params);
   },
-   /*获取活动类型下的主题列表接口(4.3版本)*/
-   getActivityLabelTypeList: (params) => {
+  /*获取活动类型下的主题列表接口(4.3版本)*/
+  getActivityLabelTypeList: (params) => {
     return getHttp("/activity/labelTypeList", params);
   },
   /* 校验活动带问是否有权限接口 */
   checkAskActivity: (params) => {
-    return postHttp("/activity/checkAsk", params,0);
+    return postHttp("/activity/checkAsk", params, 0);
+  },
+};
+export const FreeButton = {
+  /*获取是否展示免费试用按钮接口*/
+  userIsShowFreeButton: (params) => {
+    return getHttp("/user/isShow/freeButton", params, 0);
+  },
+  /* 隐藏当天的按钮接口 */
+  userFreeButtonUpdate: (params) => {
+    return postHttp("/user/freeButton/update", params, 0);
+  },
+  /*分享的时候判断是不是弘则的手机号*/
+  userIsShowShare: (params) => {
+    return getHttp("/user/isShow/share", params, 0);
+  },
+  /*获取权限弹窗是否展示免费月卡接口*/
+  userIsShowAlert: (params) => {
+    return getHttp("/user/isShow/alert", params, 0);
+  },
+  /*获取权限弹窗是否展示免费月卡接口*/
+  wechatShareImage: (params) => {
+    return postHttp("/wechat/shareImage", params, 0);
   },
 };

+ 2 - 2
main.js

@@ -4,7 +4,7 @@ import store from './store'
 import * as Db from './config/db.js';//缓存操作
 import * as Util from './config/util.js';//通用方法
 import uView from "uview-ui";
-
+import ferrMin from './components/freeMixin.js'
 Vue.use(uView);
 
 Vue.config.productionTip = false
@@ -13,7 +13,7 @@ Vue.prototype.$db = Db;
 Vue.prototype.$util = Util;
 Vue.prototype.$global = App.globalData;
 App.mpType = 'app'
-
+Vue.mixin(ferrMin)
 const app = new Vue({
    ...App,
 	store

+ 5 - 0
pageMy/advice/advice.vue

@@ -17,11 +17,13 @@
       </view>
     </view>
     <view class="btn-cont" @click="submitHandle"> 提交 </view>
+    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
 <script>
 import { uploadurl, Mine } from "@/config/api.js";
+import freeCharge from "@/components/freeCharge";
 export default {
   data() {
     return {
@@ -30,6 +32,9 @@ export default {
       advice_content: "",
     };
   },
+  components: {
+    freeCharge,
+  },
   methods: {
     init() {
       (this.fileList = []), (this.uploadIndex = 0);

+ 5 - 0
pageMy/applyInterview/applyInterview.vue

@@ -18,12 +18,14 @@
       <image src="@/static/img/nodata.png" mode="" class="nodata_ico"></image>
       <text>暂时没有访谈申请的内容</text>
     </view>
+    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
 <script>
 import { Mine } from "@/config/api.js";
 import { Throttle } from "@/config/util.js";
+import freeCharge from "@/components/freeCharge";
 export default {
   data() {
     return {
@@ -50,6 +52,9 @@ export default {
   onLoad() {
     this.getInterList();
   },
+  components: {
+    freeCharge,
+  },
   methods: {
     /* 获取列表 */
     getInterList() {

+ 5 - 0
pageMy/browseHistory/browseHistory.vue

@@ -14,12 +14,14 @@
       <image src="@/static/img/nodata.png" mode="" class="nodata_ico"></image>
       <text>暂时没有浏览历史</text>
     </view>
+    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
 <script>
 import { Mine } from "@/config/api.js";
 import { Throttle } from "@/config/util.js";
+import freeCharge from "@/components/freeCharge";
 export default {
   data() {
     return {
@@ -40,6 +42,9 @@ export default {
   onLoad() {
     this.gethistoryList();
   },
+  components: {
+    freeCharge,
+  },
   methods: {
     /* 获取列表 */
     gethistoryList() {

+ 36 - 0
pageMy/excessivePages/excessivePages.vue

@@ -0,0 +1,36 @@
+<template>
+  <view></view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      scene:''
+    };
+  },
+  methods: {
+     async onLoadInit(){
+          await this.$store.dispatch("checkHandle",'noGO')
+          if (!this.$store.state.isAuth && !this.$store.state.isBind) {
+            //已授权已绑定
+            uni.switchTab({
+                url:'/pages/index/index'
+            })
+          } else {
+            //已授权未绑定
+            uni.reLaunch({
+              url: "/pageMy/login/login?scene="+this.scene,
+            });
+          }
+      }
+  },
+  onLoad(options) {
+    wx.hideHomeButton();
+    this.onLoadInit()
+    this.scene = options.scene || ''
+  },
+};
+</script>
+
+<style></style>

+ 150 - 0
pageMy/freeTrial/freeTrial.vue

@@ -0,0 +1,150 @@
+<template>
+  <view class="container container-free">
+    <view class="nav-bar-wrap" :style="{ height: navBarStyle.height, paddingTop: navBarStyle.paddingTop, paddingBottom: navBarStyle.paddingBottom }">
+      <view class="content">
+        <van-icon custom-class="search-icon" name="arrow-left" size="24px" @click="goSearch" />
+        <view class="text">免费送试用</view>
+      </view>
+    </view>
+    <view class="img-code"> 
+      <image :src="wechatCode"></image>
+    </view>
+    <view class="btn-box">
+      <button class="bottom_in" open-type="share" plain="true">分享</button>
+      <view @click="goSearch" class="btn-back">返回</view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { FreeButton } from "@/config/api.js";
+
+export default {
+  data() {
+    return {
+      navBarStyle: {
+        height: 60 + "px",
+        paddingTop: 40 + "px",
+        paddingBottom: "4px",
+      },
+      wechatCode:'',//二维码
+      scene:"",//用户的id
+    };
+  },
+  methods: {
+    initNavBar() {
+      let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
+      this.navBarStyle = {
+        height: menuButtonInfo.height + menuButtonInfo.top + 8 + "px",
+        paddingTop: menuButtonInfo.top - 4 + "px",
+        paddingBottom: "4px",
+      };
+    },
+    goSearch() {
+      uni.navigateBack();
+    },
+    async wechatShareImage() {
+      const res = await FreeButton.wechatShareImage();
+      if(res.Ret === 200) {
+        this.wechatCode = res.Data.FileLink
+        this.scene = res.Data.Scene
+      }
+    },
+  },
+  onLoad() {
+    this.initNavBar();
+    this.wechatShareImage()
+  },
+  /**
+   * 用户点击分享
+   */
+  onShareAppMessage: function (res) {
+    return {
+      title: "送您一张免费查研试用月卡",
+      path: "/pageMy/excessivePages/excessivePages?scene="+this.scene,
+      imageUrl: "https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/share_month.png",
+    };
+  },
+};
+</script>
+<style lang="scss">
+.nav-bar-wrap {
+  color: #fff;
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  z-index: 999;
+  .content {
+    position: relative;
+    height: 100%;
+    .search-icon {
+      position: absolute;
+      left: 34rpx;
+      top: 50%;
+      transform: translateY(-50%);
+    }
+  }
+}
+</style>
+<style lang="scss" scoped>
+.container-free {
+  position: relative;
+  width: 100%;
+  height: 100%;
+  background: url("https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/background_image.jpg") no-repeat;
+  background-size: 100% 100%;
+  .btn-box {
+    position: absolute;
+    bottom: 115rpx;
+    left: 50%;
+    transform: translateX(-50%);
+    text-align: center;
+    font-size: 34rpx;
+    color: #fff;
+    padding-bottom: constant(safe-area-inset-bottom);
+    padding-bottom: env(safe-area-inset-bottom);
+  }
+  .bottom_in {
+    width: 379rpx;
+    height: 80rpx;
+    background: linear-gradient(180deg, #f8d083 0%, #f0b157 100%);
+    border: none;
+    font-weight: 600;
+    margin-bottom: 20rpx;
+    color: #fff;
+  }
+  .btn-back {
+    width: 379rpx;
+    height: 80rpx;
+    border: 1px solid #f1e2ce;
+    line-height: 78rpx;
+  }
+  .img-code {
+    width: 200rpx;
+    height: 200rpx;
+    position: absolute;
+    top: 46%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    image {
+      width: 100%;
+      height: 100%;
+    }
+  }
+}
+.nav-bar-wrap {
+  .content {
+    .text {
+      text-align: center;
+      width: 50vw;
+      position: absolute;
+      left: 50%;
+      top: 50%;
+      transform: translate(-50%, -50%);
+      font-weight: bold;
+      font-size: 16px;
+    }
+  }
+}
+</style>

+ 22 - 2
pageMy/login/login.vue

@@ -73,6 +73,7 @@ export default {
       showCountryCode: "+86",
       countryCode: "86", //区号
       isAreaCode: false,
+      scene: "", //分享人的分享码
     };
   },
   methods: {
@@ -115,7 +116,7 @@ export default {
           this.phoneIpt &&
             User.getPhoneCode({
               Mobile: this.phoneIpt,
-              AreaNum:this.countryCode
+              AreaNum: this.countryCode,
             }).then((res) => {
               if (res.Ret === 200) {
                 this.$refs.uCode.start();
@@ -142,6 +143,7 @@ export default {
           LoginType: 1,
           Mobile: this.phoneNum,
           CountryCode: this.countryCode,
+          ShareUserCode: this.scene,
         };
         User.Bind(params).then((res) => {
           if (res.Ret === 200) {
@@ -149,6 +151,11 @@ export default {
             this.$db.set("access_token", token);
             uni.navigateBack({
               delta: 1,
+              fail: (err) => {
+                uni.switchTab({
+                  url: "/pages/index/index",
+                });
+              },
             });
           }
         });
@@ -158,6 +165,7 @@ export default {
             Email: this.email,
             LoginType: 2,
             VCode: this.codeNum,
+            ShareUserCode: this.scene,
           };
           User.Bind(params).then((res) => {
             if (res.Ret === 200) {
@@ -165,6 +173,11 @@ export default {
               this.$db.set("access_token", token);
               uni.navigateBack({
                 delta: 1,
+                fail: (err) => {
+                  uni.switchTab({
+                    url: "/pages/index/index",
+                  });
+                },
               });
             }
           });
@@ -186,6 +199,7 @@ export default {
           LoginType: 3,
           VCode: this.phone_code,
           CountryCode: this.countryCode,
+          ShareUserCode: this.scene,
         };
         User.Bind(params).then((res) => {
           if (res.Ret === 200) {
@@ -193,6 +207,11 @@ export default {
             this.$db.set("access_token", token);
             uni.navigateBack({
               delta: 1,
+              fail: (err) => {
+                uni.switchTab({
+                  url: "/pages/index/index",
+                });
+              },
             });
           }
         });
@@ -209,7 +228,7 @@ export default {
       this.isAreaCode = false;
     },
   },
-  onLoad() {
+  onLoad(options) {
     /* 校验session */
     uni.checkSession({
       success: (res) => {
@@ -239,6 +258,7 @@ export default {
         });
       },
     });
+    this.scene = options.scene || "";
   },
   onShow() {
     // #ifdef MP-WEIXIN

+ 5 - 0
pageMy/myCollection/myCollection.vue

@@ -14,12 +14,14 @@
       <image src="@/static/img/nodata.png" mode="" class="nodata_ico"></image>
       <text>暂时没有收藏的内容</text>
     </view>
+    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
 <script>
 import { Mine } from "@/config/api.js";
 import { Throttle } from "@/config/util.js";
+import freeCharge from "@/components/freeCharge";
 export default {
   data() {
     return {
@@ -40,6 +42,9 @@ export default {
   onLoad() {
     this.getCollectList();
   },
+  components: {
+    freeCharge,
+  },
   methods: {
     /* 获取列表 */
     getCollectList() {

+ 65 - 31
pageMy/reportDetail/reportDetail.vue

@@ -5,38 +5,42 @@
       <web-view :src="linkurl + '?id=' + id + '&fromType=mpwechat&token=' + access_token"></web-view>
     </block>
     <view class="noauth-cont" v-else-if="haveAuth === 2 || haveAuth === 3 || haveAuth === 4 || haveAuth === 5">
-      <image src="https://hzstatic.hzinsights.com/cygx/czbk/noauth.png" class="noauth-ico"></image>
-      <block v-if="haveAuth !== 3">
-        <!-- <view class="tip">您暂无权限查看{{ industry }}内容,若想查看可以申请开通哦</view> -->
-        <view class="tip">您暂无权限查看此报告内容,若想查看可以申请开通对应的试用权限</view>
-        <view class="btn-cont" @click="applyAuth"> 立即申请 </view>
-      </block>
-      <view class="tip" v-if="haveAuth === 3">
-        <!-- 您暂无权限查看{{ industry }}内容 -->
-        您暂无权限查看此报告内容
-        <view class="contract">
-          若想查看可以联系对口销售
-          <text @click="callPhone(sale_number)"
-            >{{ sale_name }}:<text style="color: #d4bf86">{{ sale_number }}</text></text
-          >
+      <block v-if="!isShowAlert">
+        <image src="https://hzstatic.hzinsights.com/cygx/czbk/noauth.png" class="noauth-ico"></image>
+        <block v-if="haveAuth !== 3">
+          <view class="tip">您暂无权限查看此报告内容,若想查看可以申请开通对应的试用权限</view>
+          <view class="btn-cont" @click="applyAuth">{{ isShowAlert ? "立即上传" : "立即申请" }} </view>
+        </block>
+        <view class="tip" v-if="haveAuth === 3">
+          您暂无权限查看此报告内容
+          <view class="contract">
+            若想查看可以联系对口销售
+            <text @click="callPhone(sale_number)"
+              >{{ sale_name }}:<text style="color: #d4bf86">{{ sale_number }}</text></text
+            >
+          </view>
+          <view>申请开通对应的试用权限</view>
         </view>
-        <!-- <view>开通该行业的试用权限</view> -->
-        <view>申请开通对应的试用权限</view>      
-      </view>
-      <view v-if="haveAuth === 3" class="btn-cont" @click="sellerApplyAuth"> 立即申请 </view>
-      <view class="btn-cont back-btn" @click="backIndex"> 返回 </view>
+        <view v-if="haveAuth === 3" class="btn-cont" @click="sellerApplyAuth"> 立即申请</view>
+        <view class="btn-cont back-btn" @click="backIndex"> 返回 </view>
+      </block>
+      <block v-else>
+        <text class="moneh-text"> 上传名片并填写简单信息,24小时内我们会为您开通一个月的免费月卡 </text>
+        <img src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/month_card.png" class="month_card" alt="" />
+        <view class="btn-cont btn-dl" @click="applyAuth"> 立即上传 </view>
+        <view class="btn-cont month-back" @click="backIndex"> 返回</view>
+      </block>
     </view>
   </view>
 </template>
 
 <script>
-import { Report, User, Reports } from "@/config/api.js";
+import { Report, User, Reports, FreeButton } from "@/config/api.js";
 let app = getApp({ allowDefault: true });
 export default {
   data() {
     return {
       haveAuth: false,
-      // haveFree:false,//是否付费
       access_token: "", //用户标识
       isIphoneX: false, //判断机型
       reportInfo: "",
@@ -51,6 +55,7 @@ export default {
       industry: "", //行业
       readTiem: 0,
       setIntervalTiem: null,
+      isShowAlert: false,
     };
   },
   computed: {},
@@ -65,15 +70,16 @@ export default {
             title: res.Data.Detail.IsSummary == 1 ? "纪要详情" : "报告详情",
           });
           this.haveAuth = res.Data.HasPermission;
+          this.isShowWriter = res.Data.IsShow;
           this.industry = res.Data.Detail.CategoryName;
           this.sale_name = res.Data.Detail.SellerName;
           this.sale_number = res.Data.Detail.SellerMobile;
           if (res.Data.HasPermission === 1) {
             //有访问权限
-            if(res.Data.Detail.IsNeedJump){
+            if (res.Data.Detail.IsNeedJump) {
               uni.redirectTo({
-                  url: "/pageMy/reportPage/reportPage?id=" + this.id,
-              })
+                url: "/pageMy/reportPage/reportPage?id=" + this.id,
+              });
             }
             this.reportInfo = res.Data.Detail;
             this.access_token = this.access_token || this.$db.get("access_token");
@@ -115,17 +121,17 @@ export default {
         TryType: "Article",
         DetailId: Number(this.id),
       }).then((res) => {
-       if(res.Ret === 200) {
-         uni.showModal({
+        if (res.Ret === 200) {
+          uni.showModal({
             title: "",
             content: "提交申请成功,请耐心等待",
             showCancel: false,
             confirmColor: "#365595",
             success: function (res) {
-            this.backIndex()
+              this.backIndex();
             },
           });
-      }
+        }
       });
     },
     // 返回首頁
@@ -207,6 +213,13 @@ export default {
         },
       });
     },
+    //获取权限弹窗是否展示免费月卡接口
+    async userIsShowAlert() {
+      const res = await FreeButton.userIsShowAlert();
+      if (res.Ret === 200) {
+        this.isShowAlert = res.Data.IsShow;
+      }
+    },
   },
   async onShow() {
     this.readTiem = 0;
@@ -237,6 +250,7 @@ export default {
     if (!this.id && !+this.id > 0) {
       this.errorDetails();
     }
+    this.userIsShowAlert();
   },
   /**
    * 用户点击分享
@@ -244,7 +258,7 @@ export default {
   onShareAppMessage: function (res) {
     if (this.id) {
       return {
-        title: this.reportInfo.Title,
+        title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" : this.reportInfo.Title,
         path: "/pageMy/reportDetail/reportDetail?id=" + this.id,
         success: (res) => {},
         fail: (err) => {},
@@ -259,7 +273,7 @@ export default {
         ArticleId: Number(this.id),
         StopTime: this.readTiem,
         OutType: 2,
-        Source:'MOBILE'
+        Source: "MOBILE",
       }).then((res) => {});
     }
   },
@@ -271,7 +285,7 @@ export default {
         ArticleId: Number(this.id),
         StopTime: this.readTiem,
         OutType: 1,
-        Source:'MOBILE'
+        Source: "MOBILE",
       }).then((res) => {});
     }
   },
@@ -392,5 +406,25 @@ export default {
       }
     }
   }
+  .month_card {
+    width: 100%;
+    height: 565rpx;
+    padding-left: -20rpx;
+  }
+  .btn-dl {
+    background: linear-gradient(253deg, #fcf3e9 0%, #eedec8 100%) !important;
+    color: #333 !important;
+    margin: 30rpx auto !important;
+  }
+  .month-back {
+    background: #f6f6f6 !important;
+    color: #999 !important;
+  }
+  .moneh-text {
+    text-align: center;
+    width: 632rpx;
+    margin: 0 auto 20rpx;
+    color: #999999;
+  }
 }
 </style>

+ 37 - 7
pageMy/reportPage/reportPage.vue

@@ -24,13 +24,18 @@
             <cover-view>下载</cover-view>
           </cover-view>
         </cover-view>
+        <cover-view class="footer-free-charge free-charge" v-if="isShowFree">
+          <cover-image class="img" @click="toggle" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/free_icon.png"></cover-image>
+          <cover-image @click="removeBton" class="remove-icon" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/free_%20remove.png"></cover-image>
+        </cover-view>
       </web-view>
     </block>
   </view>
 </template>
 
 <script>
-import { Report, User, Reports } from "@/config/api.js";
+import { Report, User, Reports,FreeButton } from "@/config/api.js";
+import freeCharge from "@/components/freeCharge";
 let app = getApp({ allowDefault: true });
 export default {
   data() {
@@ -42,7 +47,7 @@ export default {
       reportInfo: "",
       showNav: false,
       id: "",
-      linkurl:'',
+      linkurl: "",
       isShowTip: false,
       sale_name: "", //可联系销售名称
       sale_number: "", //可联系销售电话
@@ -52,7 +57,9 @@ export default {
       fileLink: false,
     };
   },
-  computed: {},
+  components: {
+    freeCharge,
+  },
   methods: {
     /* 获取详情 */
     getDetail() {
@@ -212,9 +219,19 @@ export default {
         });
       }
     },
-    btnSearch(){
-        uni.navigateTo({ url: "/pageMy/search/search" });
-    }
+    btnSearch() {
+      uni.navigateTo({ url: "/pageMy/search/search" });
+    },
+    //跳转到免费送月卡页面
+    toggle() {
+      uni.navigateTo({
+        url: "/pageMy/freeTrial/freeTrial",
+      });
+    },
+    //隐藏当天的按钮
+    async removeBton() {
+      const res = await FreeButton.userFreeButtonUpdate();
+    },
   },
   async onShow() {
     this.readTiem = 0;
@@ -251,7 +268,7 @@ export default {
   onShareAppMessage: function (res) {
     if (this.id) {
       return {
-        title: this.reportInfo.Title,
+        title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" : this.reportInfo.Title,
         path: "/pageMy/reportDetail/reportDetail?id=" + this.id,
         success: (res) => {},
         fail: (err) => {},
@@ -340,5 +357,18 @@ export default {
       }
     }
   }
+  .footer-free-charge {
+    .img {
+      width: 156rpx;
+      height: 156rpx;
+    }
+    .remove-icon {
+      width: 31rpx;
+      height: 31rpx;
+      position: absolute;
+      right: 0;
+      top: 0;
+    }
+  }
 }
 </style>

+ 5 - 0
pageMy/search/search.vue

@@ -76,12 +76,14 @@
         </view>
       </template>
     </view>
+    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
 <script>
 import { Search } from "@/config/api.js";
 import { Debounce, Throttle } from "@/config/util.js";
+import freeCharge from "@/components/freeCharge";
 export default {
   data() {
     return {
@@ -134,6 +136,9 @@ export default {
       }
     },
   },
+  components: {
+    freeCharge,
+  },
   methods: {
     //tabs切换事件
     toggleTab(item, index) {

+ 17 - 1
pages.json

@@ -229,6 +229,21 @@
             "navigationBarTitleText": "报告详情",
             "enablePullDownRefresh": false
           }
+        },
+        {
+          "path": "freeTrial/freeTrial",
+          "style": {
+            "navigationBarTitleText": "免费送试用",
+            "enablePullDownRefresh": false,
+            "navigationStyle":"custom"
+          }
+        },
+        {
+          "path": "excessivePages/excessivePages",
+          "style": {
+            "navigationBarTitleText": "",
+            "enablePullDownRefresh": false
+          }
         }
       ]
     }
@@ -245,7 +260,8 @@
       "van-notice-bar": "/wxcomponents/vant/dist/notice-bar/index",
       "van-tab": "/wxcomponents/vant/dist/tab/index",
       "van-tabs": "/wxcomponents/vant/dist/tabs/index",
-      "van-transition": "/wxcomponents/vant/dist/transition/index"
+      "van-transition": "/wxcomponents/vant/dist/transition/index",
+      "van-icon": "/wxcomponents/vant/dist/icon/index"
     }
   },
   "tabBar": {

+ 7 - 6
pages/activity/activity.vue

@@ -161,7 +161,7 @@
         :applyForIsShow="applyForIsShow"
         :mailboxBinding="mailboxBinding"
       />
-
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
@@ -170,11 +170,12 @@ import { activity } from "@/config/api.js";
 import { Throttle } from "@/config/util.js";
 import myActivityMixin from "@/activityPages/components/indexActivity.js";
 import modalDialog from "@/components/modalDialog.vue";
+import freeCharge  from '@/components/freeCharge'
 let app = getApp();
 export default {
   mixins: [myActivityMixin],
   components: {
-    modalDialog,
+    modalDialog,freeCharge
   },
   data() {
     return {
@@ -202,7 +203,7 @@ export default {
       isShowJurisdiction: false, //
       isGetJurisdiction: 0,
       isrefresh: true,
-      activityTypeId:''
+      activityTypeId:'',
     };
   },
   computed: {
@@ -264,7 +265,7 @@ export default {
       }
     },
     //头部tabs切换
-        toggleTab(item, index) {
+  toggleTab(item, index) {
     if (!this.$store.state.isAuth && !this.$store.state.isBind) {
          //已授权已绑定
        if (index != this.tabsActive) {
@@ -282,7 +283,7 @@ export default {
          uni.navigateTo({
            url: "/pageMy/login/login",
          });
-       }
+    }
      
     },
     // 下拉的选择的关闭事件
@@ -419,7 +420,7 @@ export default {
   /** 用户点击分享 */
   onShareAppMessage: function (res) {
     return {
-      title: this.messageTitle,
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" :  this.messageTitle,
       path: "/pages/activity/activity?whichDay=" + this.whichDay + "&chartPermissionIds=" + this.chartPermissionIds + "&isGetJurisdiction=" + this.isGetJurisdiction,
     };
   },

+ 13 - 8
pages/index/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <view class="container Index-container">    
+  <view class="container Index-container">
     <view class="index-fixed">
       <view class="index-header">
         <input type="text" placeholder="搜索您想要的纪要" placeholder-class="sea_ipt_placeholder" class="sea_ipt" v-model="searchTxt" disabled @click="goSearch" />
@@ -19,7 +19,7 @@
           </view>
         </scroll-view>
       </view>
-    </view>  
+    </view>
     <block v-if="haveData">
       <view class="data-cont">
         <view class="report-ul">
@@ -92,12 +92,14 @@
       </van-transition>
       <image @click="showTransition = !showTransition" src="https://hzstatic.hzinsights.com/cygx/czbk/intimate-icon.png" mode=""></image>
     </view>
+    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
 <script>
 import { Home, Reports } from "@/config/api.js";
 import { Throttle } from "@/config/util.js";
+import freeCharge from "@/components/freeCharge";
 let app = getApp();
 export default {
   data() {
@@ -125,6 +127,9 @@ export default {
       reportShow: false, //绝密标签的隐现
     };
   },
+  components: {
+    freeCharge,
+  },
   watch: {
     tabAct_id: {
       handler() {
@@ -156,11 +161,11 @@ export default {
     // #endif
   },
   methods: {
-      gopc(){
-            uni.reLaunch({
-              url: "/pages/pcWebViev/pcWebViev",
-            });
-      },
+    gopc() {
+      uni.reLaunch({
+        url: "/pages/pcWebViev/pcWebViev",
+      });
+    },
     goSecretDetail(type) {
       uni.navigateTo({
         url: "/reportPages/secretDetails/secretDetails?type=" + type,
@@ -275,7 +280,7 @@ export default {
    */
   onShareAppMessage: function (res) {
     return {
-      title: "您手边的弘则研究素材检索库",
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" :  "您手边的弘则研究素材检索库",
       path: "/pages/index/index?tabid=" + this.tabAct_id,
       imageUrl: this.tabAct_id == 0 ? "https://hzstatic.hzinsights.com/cygx/czbk/home_share.png" : "",
       success: (res) => {},

+ 0 - 341
pages/login/login.vue

@@ -1,341 +0,0 @@
-<template>
-	<view class="container login-container">
-		<view class="bind-tab">
-			<text :class="['tab',{'act-tab':bind_type === 1}]" @click="toggleTab(1)">手机号</text>
-			<text :class="['tab',{'act-tab':bind_type === 2}]" @click="toggleTab(2)">邮箱</text>
-		</view>
-		<view class="bind-cont">
-			<view class="tel-bind" v-if="bind_type === 1">
-				<view class="ipt-item">
-					<label class="item-label item-iphone" @click="isAreaCode=true">{{showCountryCode}}   <u-icon :name="isAreaCode?'arrow-up':'arrow-down'" color="#B2B2B2" size="28"></u-icon></label>
-					<input type="number" v-model="phoneIpt" class="ipt" placeholder="请输入手机号" style="width: 300rpx;">
-          <button open-type="getPhoneNumber" value="用户授权" @getphonenumber="getPhoneNumber" class='code-btn'>微信手机号绑定</button> 
-				</view>
-				<view class="ipt-item">
-					<label class="item-label">验证码</label>
-					<input type="number" v-model="phone_code" class="ipt" placeholder="请输入4位验证码" maxlength="6" style="width: 300rpx;">
-					<u-verification-code :seconds="seconds" ref="uCode" 
-					@change="codeChange"></u-verification-code>
-					<button @click="getCode" class="code-btn">{{tips}}</button>
-				</view>
-				<view class="bind-bot">
-					<u-checkbox v-model="checked" :disabled="false" active-color="#07C160" size="34"></u-checkbox>
-					<view class="tip">我已阅读并同意<text @click="lookArgeement">《用户服务协议》</text> </view>
-				</view>
-				<button @click="bindPhoneHandle" class='infobutton bind-btn'>提交</button>
-<!-- 				<button v-if="checked" open-type="getPhoneNumber" value="用户授权" @getphonenumber="getPhoneNumber" class='infobutton plain-style'>微信手机号绑定</button> 
-				<button v-else value="用户授权"class='infobutton plain-style' @click="$util.toast('请先勾选用户服务协议')">微信手机号绑定</button> -->
-			</view>
-			<view class="email-bind" v-else>
-				<view class="ipt-item">
-					<label class="item-label">邮箱</label>
-					<input type="text" v-model="email" class="ipt" placeholder="请输入邮箱地址">
-				</view>
-				<view class="ipt-item">
-					<label class="item-label">验证码</label>
-					<input type="number" v-model="codeNum" class="ipt" placeholder="请输入4位验证码" maxlength="6" style="width: 300rpx;">
-					<u-verification-code :seconds="seconds" ref="uCode" 
-					@change="codeChange"></u-verification-code>
-					<button @click="getCode" class="code-btn">{{tips}}</button>
-				</view>
-				<view class="bind-bot">
-					<u-checkbox v-model="checked" :disabled="false" active-color="#07C160" size="34"></u-checkbox>
-					<view class="tip">我已阅读并同意<text @click="lookArgeement">《用户服务协议》</text> </view>
-				</view>
-				<button @click="bindHandle" class='infobutton bind-btn'>提交</button>
-			</view>
-		</view>
-		<view class="select-box">
-			<u-popup v-model="isAreaCode" mode="bottom"  @close="cancel">
-				<view class="box" style="color: #333333;font-size: 28rpxrpx;">请选择您的国际区号</view>
-				<view class="box" style="color: #2C83FF;" @click="areacode('86')">大陆+86</view>
-				<view class="box" style="color: #2C83FF;" @click="areacode('852')">香港+852</view>
-				<view class="box" style="color: #2C83FF;" @click="areacode('886')">台湾+886</view>
-				<view class="box" style="color: #2C83FF;" @click="areacode('1')">美国+1</view>
-				<view class="box" style="color: #2C83FF;" @click="areacode('65')">新加坡+65</view>
-				<view class="box box-bottom" style="color: #A9AFB8;" @click="cancel">取消</view>
-			</u-popup>
-		</view>
-	</view>
-</template>
-
-<script>
-	import { User } from '@/config/api.js';
-	export default {
-		data() {
-			return {
-				bind_type:1,//绑定方式
-				checked:false,
-				isArgee:false,
-				seconds:60,
-				tips:'获取验证码',
-				email:'',//邮箱
-				phoneNum:'',//手机号,
-				codeNum:'',//验证码
-				phoneIpt:'',
-				phone_code:'',
-				showCountryCode:'+86',
-				countryCode:'86',//区号
-				isAreaCode: false,
-				
-			};
-		},
-		methods:{
-			/* 切换方式 */
-			toggleTab(val) {
-				this.email = ''
-				this.phoneNum = ''
-				this.codeNum = ''
-				this.bind_type = val;
-				this.phoneIpt = '';
-				this.phone_code = '';
-				this.checked = false;
-			},
-			/* 授权获取手机号 */
-			getPhoneNumber(e) {
-				//console.log(e)
-				if(e.detail.errMsg == 'getPhoneNumber:ok') { // 点击了允许
-					User.getPhoneNum({
-						EncryptedData: e.detail.encryptedData,
-						Iv: e.detail.iv
-					}).then(res => {
-						if(res.Ret === 200) {
-							this.phoneNum = res.Data.PurePhoneNumber;
-							this.countryCode=res.Data.CountryCode
-                             this.phoneIpt=res.Data.PhoneNumber;
-							this.bindHandle()
-						}
-					})
-				}
-			},
-			codeChange(text) {
-				this.tips = text;
-			},
-			/* 获取邮箱验证码 */
-			getCode() {
-				if(this.$refs.uCode.canGetCode) {
-					if(this.bind_type === 1) {
-						!this.phoneIpt && this.$util.toast('请先输入手机号');
-						this.phoneIpt && User.getPhoneCode({
-							Mobile:this.phoneIpt,
-							AreaNum:this.countryCode
-						}).then(res => {
-							if(res.Ret === 200) {
-								this.$refs.uCode.start();
-							}
-						})
-					}else {
-						!this.email && this.$util.toast('请先输入邮箱');
-						this.email && User.getEmailCode({
-							Email:this.email
-						}).then(res => {
-							if(res.Ret === 200) {
-								this.$refs.uCode.start();
-							}
-						})						
-					}
-				}
-			},
-			/* 绑定 */
-			bindHandle() {
-				let params;
-				if(this.bind_type === 1) {
-					params = {
-						LoginType: 1,
-						Mobile: this.phoneNum,
-						CountryCode:this.countryCode
-					}
-					User.Bind(params).then(res => {
-						if(res.Ret === 200) {
-							let token = res.Data.Authorization;
-							this.$db.set('access_token',token)
-							uni.navigateBack({
-								delta:1
-							})
-						}
-					})
-				}else {
-					if(this.email && this.codeNum && this.checked) {
-						params = {
-							Email: this.email,
-							LoginType: 2,
-							VCode: this.codeNum
-						}
-						User.Bind(params).then(res => {
-							if(res.Ret === 200) {
-								let token = res.Data.Authorization;
-								this.$db.set('access_token',token)
-								uni.navigateBack({
-									delta:1
-								})
-							}
-						})
-					} else {
-						this.$util.toast(!this.checked?'请先勾选用户服务协议':!this.email?'请输入邮箱地址':'请输入验证码')
-					}
-                   
-				}
-			},
-			lookArgeement() {
-				uni.navigateTo({
-					url:'/pages/agreement/agreement'
-				})
-			},
-			/* 绑定手机号 */
-			bindPhoneHandle() {
-				if(this.phoneIpt && this.phone_code && this.checked) {
-					let params = {
-						Mobile: this.phoneIpt,
-						LoginType: 3,
-						VCode: this.phone_code,
-						CountryCode:this.countryCode
-					}
-					User.Bind(params).then(res => {
-						if(res.Ret === 200) {
-							let token = res.Data.Authorization;
-							this.$db.set('access_token',token)
-							uni.navigateBack({
-								delta:1
-							})
-						}
-					})
-				} else {
-					this.$util.toast(!this.checked?'请先勾选用户服务协议':!this.phoneIpt?'请输入手机号':'请输入验证码')
-				}
-			},
-			areacode(num){
-				this.showCountryCode= '+' + num
-				this.countryCode=num
-				this.isAreaCode=false
-			},
-			cancel(){
-				this.isAreaCode=false
-			}
-		},
-	 onLoad() {
-			/* 校验session */
-			uni.checkSession({
-				success: (res) => {
-					if(res.errMsg != 'checkSession:ok') {
-						uni.login({
-						   success: result=> {
-								User.wechatLog({
-									Code:result.code
-								}).then(res => {
-									let token = res.Data.Authorization;
-									this.$db.set('access_token',token);
-								})
-						  }
-						});
-					}
-				},
-				fail: (err) => {
-					uni.login({
-					   success: result=> {
-							User.wechatLog({
-								Code:result.code
-							}).then(res => {
-								let token = res.Data.Authorization;
-								this.$db.set('access_token',token);
-							})
-					  }
-					});
-				}
-			})
-		},
-		onShow() {
-			// #ifdef MP-WEIXIN
-				uni.hideHomeButton()
-			// #endif
-		}
-	}
-</script>
-
-<style lang="scss">
-.login-container {
-	color: #333;
-	.bind-tab {
-		padding: 30rpx 34rpx 0;
-		display: flex;
-		align-items: center;
-		font-size: 34rpx;
-		.tab {
-			margin-right: 60rpx;
-			padding-bottom: 8rpx;
-			&.act-tab {
-				border-bottom: 4rpx solid #07C160;
-			}	
-		}
-	}
-	.bind-cont {
-		.tel-bind {
-			padding: 40rpx 0 60rpx;
-		}
-		.infobutton {
-			width: 368rpx;
-			height: 80rpx;
-			line-height: 80rpx;
-			background-color: #07C160;
-			color: #fff;
-			margin: 40rpx auto 0;
-		}
-		.email-bind {
-			padding: 40rpx 0 60px;
-		}
-		.ipt-item {
-			padding: 33rpx 32rpx;
-			border-bottom: 1rpx solid #E5E5E5;
-			display: flex;
-			align-items: center;
-			font-size: 34rpx;
-			position: relative;
-			.item-label {
-				text-align: justify;
-				text-align-last: justify;
-				display: inline-block;
-				width: 106rpx;
-				margin-right: 40rpx;
-			}
-			.ipt {
-				width: 500rpx;
-				font-size: 32rpx;
-				color: #666;
-			}
-			.code-btn {
-				position: absolute;
-				right: 34rpx;
-				background-color: #fff;
-				font-size: 28rpx;
-				color: #07C160;
-			}
-		}
-		.bind-btn {
-			margin-top: 140rpx;
-		}
-		.bind-bot {
-			display: flex;
-			align-items: center;
-			font-size: 24rpx;
-			padding: 0 34rpx;
-			margin-top: 30rpx;
-			.check-sty {
-				transform:scale(0.7)
-			}
-			.tip {
-				text {
-					display: inline;
-					color: #07C160;
-				}
-			}
-		}
-	}
-	.item-iphone {
-		display: flex !important;
-		justify-content: space-between !important;
-		align-items: center !important;
-		width: 118rpx !important;
-		margin-right: 26rpx !important;
-	}
-
-}
-</style>

+ 5 - 2
pages/my/my.vue

@@ -21,9 +21,7 @@
         <template v-if="isLogin">
           <text class="info-label">我的权限:</text>
           <scroll-view scroll-x="true" scroll-with-animation class="auth-ul" v-if="userInfo.HasPermission === 0">
-            <!-- <view class="auth-ul" > -->
             <text class="auth-li" v-for="item in authList" :key="item">{{ item }}</text>
-            <!-- </view> -->
           </scroll-view>
           <block v-else>
             <text class="no-auth">{{ userInfo.HasPermission === 3 ? "权限申请已提交,请等待审核" : "暂未开通行业权限" }}</text>
@@ -53,13 +51,18 @@
         <u-icon name="arrow-right" color="#BDBDBD" size="34"></u-icon>
       </view>
     </view>
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
 <script>
 import { Mine, checkToken, User } from "@/config/api.js";
+import freeCharge  from '@/components/freeCharge'
 let app = getApp();
 export default {
+  components: {
+    freeCharge
+  },
   data() {
     return {
       isLogin: false, //是否绑定且授权

+ 1 - 1
pages/pcWebViev/pcWebViev.vue

@@ -57,7 +57,7 @@ export default {
   },
   onShareAppMessage(op) {
     return {
-      title: this.titleShare,
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" :  this.titleShare,
       path: this.urlShare,
     };
   },

+ 47 - 44
pages/reportForm/reportForm.vue

@@ -182,6 +182,7 @@
       </van-transition>
       <image @click="showTransition = !showTransition" src="https://hzstatic.hzinsights.com/cygx/czbk/intimate-icon.png" mode=""></image>
     </view>
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
@@ -190,6 +191,7 @@ import strategy from "./components/strategy.vue";
 import researchChoose from "./components/researchChoose.vue";
 import coverGuide from "./components/coverGuide.vue";
 import { Throttle, Debounce } from "@/config/util.js";
+import freeCharge  from '@/components/freeCharge'
 import { Reports } from "@/config/api.js";
 let app = getApp();
 export default {
@@ -197,6 +199,7 @@ export default {
     strategy,
     researchChoose,
     coverGuide,
+    freeCharge,
   },
   data() {
     return {
@@ -408,48 +411,48 @@ export default {
       await this.$store.dispatch("checkHandle", "/reportPages/IndustryReport/IndustryReport?id=" + id);
     },
     //点击关注的图标
-    reportFllow(id) {
-         if (!this.$store.state.isAuth && !this.$store.state.isBind) {
-           Reports.reportFllow({
-             IndustrialManagementId: id,
-           }).then((res) => {
-             if (res.Ret === 200) {
-               if (res.Data.Status == 1) {
-                 this.goFollowShow = true;
-                 this.confirmText = res.Data.GoFollow ? "去关注" : "知道了";
-                 if (res.Data.GoFollow) {
-                   this.accounts = `产业关注成功 <br> 想要及时获取该产业内容的更新推送,请关注【查研观向小助手】公众号`;
-                   this.isCancelBtn = true;
-                 } else {
-                   this.accounts = "产业关注成功<br>请关注【查研观向小助手】公众号,及时获取产业报告更新提醒";
-                 }
-               }
-               this.industryList.forEach((key) => {
-                 if (key.IndustrialManagementId == id) {
-                   if (key.IsFollow == 1) {
-                     key.IsFollow = 0;
-                     uni.showToast({
-                       title: "已取消关注",
-                       icon: "none",
-                       duration: 2000,
-                     });
-                   } else {
-                     key.IsFollow = 1;
-                   }
-                 }
-               });
-             }
-           });
-         }else if (this.$store.state.isAuth){
-             //未授权
-             uni.navigateTo({
-               url: "/pageMy/authGuide/authGuide",
-             });
-         } else if(!this.$store.state.isAuth && this.$store.state.isBind) {
-          //已授权未绑定
-          uni.navigateTo({
-            url: "/pageMy/login/login",
-          });
+    reportFllow(id) {
+         if (!this.$store.state.isAuth && !this.$store.state.isBind) {
+           Reports.reportFllow({
+             IndustrialManagementId: id,
+           }).then((res) => {
+             if (res.Ret === 200) {
+               if (res.Data.Status == 1) {
+                 this.goFollowShow = true;
+                 this.confirmText = res.Data.GoFollow ? "去关注" : "知道了";
+                 if (res.Data.GoFollow) {
+                   this.accounts = `产业关注成功 <br> 想要及时获取该产业内容的更新推送,请关注【查研观向小助手】公众号`;
+                   this.isCancelBtn = true;
+                 } else {
+                   this.accounts = "产业关注成功<br>请关注【查研观向小助手】公众号,及时获取产业报告更新提醒";
+                 }
+               }
+               this.industryList.forEach((key) => {
+                 if (key.IndustrialManagementId == id) {
+                   if (key.IsFollow == 1) {
+                     key.IsFollow = 0;
+                     uni.showToast({
+                       title: "已取消关注",
+                       icon: "none",
+                       duration: 2000,
+                     });
+                   } else {
+                     key.IsFollow = 1;
+                   }
+                 }
+               });
+             }
+           });
+         }else if (this.$store.state.isAuth){
+             //未授权
+             uni.navigateTo({
+               url: "/pageMy/authGuide/authGuide",
+             });
+         } else if(!this.$store.state.isAuth && this.$store.state.isBind) {
+          //已授权未绑定
+          uni.navigateTo({
+            url: "/pageMy/login/login",
+          });
          }
 
     },
@@ -572,7 +575,7 @@ export default {
     }
     wx.stopPullDownRefresh();
   }),
-  onShow() {
+  onShow() {
      this.$store.dispatch("checkHandle",'noGO')
     if (this.tabAct_id) {
       this.$store.dispatch("statistics", {
@@ -589,7 +592,7 @@ export default {
    */
   onShareAppMessage: function (res) {
     return {
-      title: "报告",
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" :  "报告",
       path: "/pages/reportForm/reportForm?tab=" + this.tabAct_id + "&tabs=" + this.tabAct_idTwo,
       success: (res) => {},
       fail: (err) => {},

+ 6 - 1
reportPages/IndustryReport/IndustryReport.vue

@@ -38,6 +38,7 @@
       <image src="@/static/img/nodata.png" mode="" class="nodata_ico"></image>
       <text>暂时没有报告的内容</text>
     </view>
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
@@ -45,6 +46,7 @@
 import { Mine } from "@/config/api.js"; //模拟
 import { Reports } from "@/config/api.js"; //模拟
 import { Throttle } from "@/config/util.js";
+import freeCharge  from '@/components/freeCharge'
 let app = getApp({ allowDefault: true });
 export default {
   data() {
@@ -80,6 +82,9 @@ export default {
   onShow() {
     this.$store.dispatch("statistics", { PageType: "IndustryList", IndustrialManagementId: this.industrialManagementId });
   },
+  components: {
+    freeCharge
+  },
   watch: {
     //监听tabs的变化
     tabAct_id: {
@@ -192,7 +197,7 @@ export default {
    */
   onShareAppMessage: function (res) {
     return {
-      title: this.titleReport,
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" :  this.titleReport,
       path: "/reportPages/IndustryReport/IndustryReport?id=" + this.industrialManagementId + "&tab=" + this.tabAct_id,
       success: (res) => {},
       fail: (err) => {},

+ 6 - 1
reportPages/industrialReport/industrialReport.vue

@@ -24,12 +24,14 @@
       <image src="@/static/img/nodata.png" mode="" class="nodata_ico"></image>
       <text>暂时没有报告的内容</text>
     </view>
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
 <script>
 import { Reports } from "@/config/api.js";
 import { Throttle } from "@/config/util.js";
+import freeCharge  from '@/components/freeCharge'
 let app = getApp({allowDefault: true});
 export default {
   data() {
@@ -125,6 +127,9 @@ export default {
       this.$store.dispatch("checkHandle","/pageMy/reportDetail/reportDetail?id=" + item.ArticleId)
     },
   },
+  components: {
+    freeCharge
+  },
   /* 触底 */
   onReachBottom: Throttle(function () {
     if (this.status === "nomore") return;
@@ -144,7 +149,7 @@ export default {
    */
   onShareAppMessage: function (res) {
     return {
-      title: this.titleReport,
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" :  this.titleReport,
       path:
         "/reportPages/industrialReport/industrialReport?id=" + this.categoryId + "&type=" + this.typeIsPost + "&isGenre=" + this.genreIs + "&idGenre=" + this.idGenre + "&idArticle=" + this.articleId,
       success: (res) => {},

+ 5 - 0
reportPages/myAskPage/myAskPage.vue

@@ -20,12 +20,17 @@
       <image src="@/static/img/nodata.png" mode="" class="nodata_ico"></image>
       <text>暂时没有提问的内容</text>
     </view>
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
 <script>
 import { User } from "@/config/api.js";
+import freeCharge  from '@/components/freeCharge'
 export default {
+  components: {
+    freeCharge
+  },
   data() {
     return {
       askList: [],

+ 17 - 12
reportPages/reportSearch/reportSearch.vue

@@ -98,13 +98,15 @@
         </view>
       </template>
     </view>
+    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
 <script>
 import { Search, Reports } from "@/config/api.js";
 import { Debounce, Throttle } from "@/config/util.js";
-let app = getApp({allowDefault: true});
+import freeCharge from "@/components/freeCharge";
+let app = getApp({ allowDefault: true });
 export default {
   data() {
     return {
@@ -140,6 +142,9 @@ export default {
       }
     },
   },
+  components: {
+    freeCharge,
+  },
   methods: {
     /* 获取关键词 */
     getKeyWord() {
@@ -228,19 +233,19 @@ export default {
       });
     },
     goDetailIndust(id) {
-      this.$store.dispatch("checkHandle","/pageMy/reportDetail/reportDetail?id=" + id)
+      this.$store.dispatch("checkHandle", "/pageMy/reportDetail/reportDetail?id=" + id);
     },
   },
   onLoad(options) {
-      if (options.text) {
-        this.searchTxt = options.text;
-        this.getDataList();
-      }
-      // 获取历史搜索记录
-      if (this.$db.get("historySearchListReport")) {
-        let historyList = JSON.parse(this.$db.get("historySearchListReport"));
-        this.historySearchList = historyList;
-      }
+    if (options.text) {
+      this.searchTxt = options.text;
+      this.getDataList();
+    }
+    // 获取历史搜索记录
+    if (this.$db.get("historySearchListReport")) {
+      let historyList = JSON.parse(this.$db.get("historySearchListReport"));
+      this.historySearchList = historyList;
+    }
   },
   onShow() {
     this.$store.dispatch("statistics", { PageType: "ReportSearch" });
@@ -251,7 +256,7 @@ export default {
    */
   onShareAppMessage: function (res) {
     return {
-      title: "报告",
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" :  "报告",
       path: "/reportPages/reportSearch/reportSearch?text=" + this.searchTxt,
       success: (res) => {},
       fail: (err) => {},

+ 49 - 11
reportPages/reportSecretDetail/reportSecretDetail.vue

@@ -53,13 +53,22 @@
       <statement :show="isShowStatement" />
     </block>
     <view class="noauth-cont" v-else-if="hasPermission == 3 || hasPermission == 4">
-      <image src="https://hzstatic.hzinsights.com/cygx/czbk/noauth.png" class="noauth-ico"></image>
-      <block>
-        <view class="tip">您暂无权限查看此文章内容,若想查看可以申请开通哦</view>
-        <view class="btn-cont" @click="applyAuth"> 立即申请 </view>
+      <block v-if="!isShowAlert">
+        <image src="https://hzstatic.hzinsights.com/cygx/czbk/noauth.png" class="noauth-ico"></image>
+        <block>
+          <view class="tip">您暂无权限查看此文章内容,若想查看可以申请开通哦</view>
+          <view class="btn-cont" @click="applyAuth"> 立即申请 </view>
+        </block>
+        <view class="btn-cont back-btn" @click="backIndex"> 返回首页 </view>
+      </block>
+      <block v-else>
+        <text class="moneh-text"> 上传名片并填写简单信息,24小时内我们会为您开通一个月的免费月卡 </text>
+        <img src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/month_card.png" class="month_card" alt="" />
+        <view class="btn-cont btn-dl" @click="applyAuth"> 立即上传 </view>
+        <view class="btn-cont month-back" @click="backIndex"> 返回</view>
       </block>
-      <view class="btn-cont back-btn" @click="backIndex"> 返回首页 </view>
     </view>
+    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
@@ -67,7 +76,8 @@
 import statement from "@/reportPages/components/statement.vue";
 import researchSummary from "./components/researchSummary.vue";
 import reportChoiceness from "./components/reportChoiceness.vue";
-import { Reports } from "@/config/api.js";
+import freeCharge from "@/components/freeCharge";
+import { Reports,FreeButton } from "@/config/api.js";
 let app = getApp({ allowDefault: true });
 export default {
   data() {
@@ -82,12 +92,12 @@ export default {
       dataListResearch: [], //本周数组
       hasPermission: "", //权限判断
       videoUrl: "",
-      //bgAudioManager:''
+      isShowAlert: false,
     };
   },
   methods: {
     audioPlay() {
-     if (this.videoUrl === app.globalData.bgAudioManager.src) {
+      if (this.videoUrl === app.globalData.bgAudioManager.src) {
         app.globalData.bgAudioManager.play();
       } else {
         app.globalData.bgAudioManager.title = this.detali.VideoName;
@@ -126,7 +136,7 @@ export default {
     applyAuth() {
       this.hasPermission === 4
         ? uni.navigateTo({
-            url: "/pageMy/applyTrial/applyTrial",
+            url: "/pageMy/applyTrial/applyTrial?tryType=Article&detailId=" + this.id,
           })
         : uni.showModal({
             title: "",
@@ -150,11 +160,19 @@ export default {
         url: "/pages/index/index",
       });
     },
+    //获取权限弹窗是否展示免费月卡接口
+    async userIsShowAlert() {
+      const res = await FreeButton.userIsShowAlert();
+      if (res.Ret === 200) {
+        this.isShowAlert = res.Data.IsShow;
+      }
+    },
   },
   components: {
     statement,
     researchSummary,
     reportChoiceness,
+    freeCharge,
   },
   onLoad(option) {
     this.isType = option.type;
@@ -162,7 +180,7 @@ export default {
     uni.setNavigationBarTitle({
       title: this.isType == 1 ? "报告精选" : this.isType == 2 ? "本周研究汇总" : "上周纪要汇总",
     });
-
+    this.userIsShowAlert();
     app.globalData.bgAudioManager.onEnded((res) => {
       this.isPlay = false;
     });
@@ -186,7 +204,7 @@ export default {
    */
   onShareAppMessage: function (res) {
     return {
-      title: this.detali.Title,
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" : this.detali.Title,
       path: "/reportPages/reportSecretDetail/reportSecretDetail?type=" + this.isType + "&id=" + this.id,
       success: (res) => {},
       fail: (err) => {},
@@ -284,5 +302,25 @@ export default {
       }
     }
   }
+  .month_card {
+    width: 100%;
+    height: 565rpx;
+    padding-left: -20rpx;
+  }
+  .btn-dl {
+    background: linear-gradient(253deg, #fcf3e9 0%, #eedec8 100%) !important;
+    color: #333 !important;
+    margin: 30rpx auto !important;
+  }
+  .month-back {
+    background: #f6f6f6 !important;
+    color: #999 !important;
+  }
+  .moneh-text {
+    text-align: center;
+    width: 632rpx;
+    margin: 0 auto 20rpx;
+    color: #999999;
+  }
 }
 </style>

+ 48 - 17
reportPages/roadEssence/roadEssence.vue

@@ -30,7 +30,6 @@
           </text>
         </view>
         <view class="content-boby">
-          <!-- <rich-text :nodes="detali.Body"></rich-text> -->
           <mp-html :content="detali.Body" />
         </view>
       </view>
@@ -38,19 +37,29 @@
       <statement :show="isShowStatement" />
     </block>
     <view class="noauth-cont" v-else-if="haveAuth === 3 || haveAuth === 4">
-      <image src="https://hzstatic.hzinsights.com/cygx/czbk/noauth.png" class="noauth-ico"></image>
-      <block>
-        <view class="tip">您暂无权限查看内容,若想查看可以申请开通哦</view>
-        <view class="btn-cont" @click="applyAuth"> 立即申请 </view>
+      <block v-if="!isShowAlert">
+        <image src="https://hzstatic.hzinsights.com/cygx/czbk/noauth.png" class="noauth-ico"></image>
+        <block>
+          <view class="tip">您暂无权限查看此文章内容,若想查看可以申请开通哦</view>
+          <view class="btn-cont" @click="applyAuth"> 立即申请 </view>
+        </block>
+        <view class="btn-cont back-btn" @click="backIndex"> 返回首页 </view>
+      </block>
+      <block v-else>
+        <text class="moneh-text"> 上传名片并填写简单信息,24小时内我们会为您开通一个月的免费月卡 </text>
+        <img src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/month_card.png" class="month_card" alt="" />
+        <view class="btn-cont btn-dl" @click="applyAuth"> 立即上传 </view>
+        <view class="btn-cont month-back" @click="backIndex"> 返回</view>
       </block>
-      <view class="btn-cont back-btn" @click="backIndex">返回首页</view>
     </view>
+    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
   </view>
 </template>
 
 <script>
-import { Reports, User } from "@/config/api.js";
+import { Reports, User, FreeButton } from "@/config/api.js";
 import statement from "@/reportPages/components/statement.vue";
+import freeCharge from "@/components/freeCharge";
 let app = getApp({ allowDefault: true });
 export default {
   data() {
@@ -62,6 +71,7 @@ export default {
       isShowStatement: false, //免责声明隐现
       haveAuth: "", //权限判断
       videoUrl: "",
+      isShowAlert: false,
     };
   },
   methods: {
@@ -87,7 +97,7 @@ export default {
     applyAuth() {
       this.haveAuth === 4
         ? uni.navigateTo({
-            url: "/pageMy/applyTrial/applyTrial",
+            url: "/pageMy/applyTrial/applyTrial?tryType=Article&detailId=" + this.id,
           })
         : uni.showModal({
             title: "",
@@ -124,9 +134,17 @@ export default {
       this.isPlay = false;
       app.globalData.bgAudioManager.pause();
     },
+    //获取权限弹窗是否展示免费月卡接口
+    async userIsShowAlert() {
+      const res = await FreeButton.userIsShowAlert();
+      if (res.Ret === 200) {
+        this.isShowAlert = res.Data.IsShow;
+      }
+    },
   },
   components: {
     statement,
+    freeCharge,
   },
   onLoad(option) {
     this.id = Number(option.id) || "";
@@ -142,6 +160,7 @@ export default {
     app.globalData.bgAudioManager.onStop((res) => {
       this.isPlay = false;
     });
+    this.userIsShowAlert();
   },
   async onShow() {
     await this.$store.dispatch("checkHandle");
@@ -160,7 +179,7 @@ export default {
    */
   onShareAppMessage: function (res) {
     return {
-      title: this.detali.Title,
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" : this.detali.Title,
       url: "reportPages/roadEssence/roadEssence?id=" + this.id,
       success: (res) => {},
       fail: (err) => {},
@@ -192,13 +211,11 @@ export default {
     .content-statement {
       display: flex;
       color: #707070;
-
       .statement {
         margin-left: 10rpx;
         color: #3385ff;
       }
     }
-
     .content-audio {
       margin: 60rpx 0;
       width: 682rpx;
@@ -209,7 +226,6 @@ export default {
       border-radius: 16rpx;
       display: flex;
       padding: 24rpx 21rpx 18rpx;
-
       .audio-img {
         width: 154rpx;
         height: 154rpx;
@@ -220,7 +236,6 @@ export default {
           height: 154rpx;
         }
       }
-
       .audio-title {
         font-size: 28rpx;
         color: #333;
@@ -235,7 +250,6 @@ export default {
         }
       }
     }
-
     .content-abstract {
       margin-bottom: 30rpx;
       font-size: 32rpx;
@@ -246,7 +260,6 @@ export default {
         font-weight: 700;
       }
     }
-
     .content-boby {
       font-size: 32rpx;
 
@@ -256,7 +269,6 @@ export default {
       }
     }
   }
-
   .content-link {
     width: 368rpx;
     height: 80rpx;
@@ -270,7 +282,26 @@ export default {
     box-sizing: border-box;
     margin: 100rpx auto;
   }
-
+  .month_card {
+    width: 100%;
+    height: 565rpx;
+    padding-left: -20rpx;
+  }
+  .btn-dl {
+    background: linear-gradient(253deg, #fcf3e9 0%, #eedec8 100%) !important;
+    color: #333 !important;
+    margin: 30rpx auto !important;
+  }
+  .month-back {
+    background: #f6f6f6 !important;
+    color: #999 !important;
+  }
+  .moneh-text {
+    text-align: center;
+    width: 632rpx;
+    margin: 0 auto 20rpx;
+    color: #999999;
+  }
   @import "../jurisdiction.scss";
 }
 </style>

+ 6 - 1
reportPages/secretDetails/secretDetails.vue

@@ -20,12 +20,14 @@
       <image src="@/static/img/nodata.png" mode="" class="nodata_ico"></image>
       <text>暂时没有报告的内容</text>
     </view>
+   <freeCharge class="free-charge" :isShowFreeBtn="isShowFree"/>
   </view>
 </template>
 
 <script>
 import { Reports } from "@/config/api.js";
 import { Throttle } from "@/config/util.js";
+import freeCharge  from '@/components/freeCharge'
 let app = getApp({allowDefault: true});
 export default {
   data() {
@@ -45,6 +47,9 @@ export default {
       },
     };
   },
+  components: {
+    freeCharge
+  },
   methods: {
     async getList() {
       const res = await Reports.reportListByType({
@@ -97,7 +102,7 @@ export default {
   }),
   onShareAppMessage(res) {
     return {
-      title: this.isType == 2 ? "本周研究汇总" : "上周纪要汇总",
+      title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费试用月卡!" :  this.isType == 2 ? "本周研究汇总" : "上周纪要汇总",
       path: "/reportPages/secretDetails/secretDetails?type=" + this.isType,
     };
   },