浏览代码

feat: 超级订阅画像权限判断

cuiyalong 4 年之前
父节点
当前提交
a4be151b71

+ 9 - 0
src/api/modules/user.js

@@ -8,6 +8,15 @@ export function getUserPower () {
   })
 }
 
+// 获取entSearch权限信息
+export function getEntSearchPower () {
+  return request({
+    baseURL: '/publicapply',
+    url: '/bidcoll/power',
+    method: 'POST'
+  })
+}
+
 // 获取广告位图片和链接
 export function getAdList (data) {
   data = qs.stringify(data)

二进制
src/assets/images/ent-portrait-bg.jpg


二进制
src/assets/images/ent-protrait-tab2-mask.jpg


+ 2 - 1
src/components/common/ContentLayout.vue

@@ -59,7 +59,8 @@ export default {
         ent_portrait: 'jy-pc-bigmember-entportrayal-content-right', // 企业情报详情页右侧广告位code
         unit_portrayal: 'jy-pc-bigmember-unitportrayal-content-right', // 采购单位全景分析详情页右侧广告位code
         bigvip_subreport_month: 'jy-pc-bigmember-month-content-right', // 数据月报右侧
-        bigvip_subreport_week: 'jy-pc-bigmember-week-content-right' // 数据周报右侧
+        bigvip_subreport_week: 'jy-pc-bigmember-week-content-right', // 数据周报右侧
+        ent_ser_portrait: 'jy-pc-bigmember-entportrayal-content-right'
       },
       adList: [
         // {

+ 1 - 1
src/components/forecast/ForLayout.vue

@@ -89,7 +89,7 @@ export default {
             if (data.events === 'select') {
               // 联想跳转
               this.$router.push({
-                path: '/svip/ent_ser_portrait/' + data.data.entId + '?svip=' + 1
+                path: '/svip/ent_ser_portrait/' + data.data.entId
               })
             } else {
               this.$store.commit('forcast/setType', this.type)

+ 105 - 22
src/views/portrayal/EntSearchPortrayal.vue

@@ -4,22 +4,45 @@
       <div class="name">{{entName}}</div>
     </div>
     <div class="ent-content">
-      <el-tabs v-model="activeName" @tab-click="handleClick">
+      <el-tabs v-model="activeName">
         <el-tab-pane label="企业信息" name="1">
           <EntSubVipForm :id="eId" @entname="entname"></EntSubVipForm>
-          <EntHistoryForm v-if="!svip" :id="eId"></EntHistoryForm>
+          <EntHistoryForm v-if="false" :id="eId"></EntHistoryForm>
         </el-tab-pane>
         <el-tab-pane label="中标信息" name="2">
-          <div class="pro_info">
-            <ul class="pro_info_ul">
-              <li class="pro_list" v-for="(item, index) in proData" :key="index">
-                <div class="pro_li_con">{{item.count}}</div>
-                <div class="pro_li_label">{{item.label}}</div>
-              </li>
-            </ul>
-            <div class="pro_info_tip">数据统计范围:{{dateRange.start}}-{{dateRange.end}}</div>
+          <div class="ent-tab2-content" v-if="power" key="tab2">
+            <div class="pro_info">
+              <ul class="pro_info_ul">
+                <li class="pro_list" v-for="(item, index) in proData" :key="index">
+                  <div class="pro_li_con">{{item.count}}</div>
+                  <div class="pro_li_label">{{item.label}}</div>
+                </li>
+              </ul>
+              <div class="pro_info_tip">数据统计范围:{{dateRange.start}}-{{dateRange.end}}</div>
+            </div>
+            <ent-chart :active="activeName" v-on:entInfo="getEntInfo"></ent-chart>
+          </div>
+          <div class="ent-tab2-content mask" v-else key="tab2">
+            <img src="@/assets/images/ent-protrait-tab2-mask.jpg">
+            <div class="m-banner">
+              <div class="banner-header">
+                <div>您暂无使用权限 开通超级订阅</div>
+                <div>查看企业画像,竞争对手实力尽展示。</div>
+              </div>
+              <div class="banner-content">
+                <div>中标信息统计</div>
+                <div>重点客户分析</div>
+                <div>客户类型分布</div>
+                <div>年度项目统计</div>
+                <div>年度项目统计</div>
+                <div>市场区域分布</div>
+                <div>...</div>
+              </div>
+              <div class="banner-footer">
+                <div class="button-confirm" @click="openVipPage">去开通</div>
+              </div>
+            </div>
           </div>
-          <ent-chart :active="activeName" v-on:entInfo="getEntInfo"></ent-chart>
         </el-tab-pane>
       </el-tabs>
     </div>
@@ -32,6 +55,7 @@ import EntHistoryForm from './components/EntHistoryForm'
 import Layout from '@/components/common/ContentLayout.vue'
 import { Tabs, TabPane } from 'element-ui'
 import { moneyUnit, dateFormatter } from '@/utils'
+import { getEntSearchPower } from '@/api/modules'
 export default {
   name: 'ent-portrayal',
   components: {
@@ -41,7 +65,6 @@ export default {
     EntSubVipForm,
     EntHistoryForm,
     Layout
-    // ProActive
   },
   data () {
     return {
@@ -57,18 +80,27 @@ export default {
       },
       eId: this.$route.params.eId,
       entName: '',
-      svip: false
+      powerInfo: {
+        entniche: '',
+        member: '',
+        vip: ''
+      }
     }
   },
-  computed: {},
-  created () {
-    if (this.$route.query.svip) {
-      this.svip = true
+  computed: {
+    power () {
+      return this.powerInfo.vip !== 0 || this.powerInfo.member
     }
   },
+  created () {
+    this.getPower()
+  },
   methods: {
-    handleClick () {
-      console.log(this.activeName)
+    async getPower () {
+      const { error_code: code, data } = await getEntSearchPower()
+      if (code === 0 && data) {
+        Object.assign(this.powerInfo, data)
+      }
     },
     entname (data) {
       this.entName = data
@@ -95,6 +127,9 @@ export default {
       ]
       this.dateRange.start = dateFormatter(data.timeRange.start * 1000, 'yyyy/MM/dd')
       this.dateRange.end = dateFormatter(data.timeRange.end * 1000, 'yyyy/MM/dd')
+    },
+    openVipPage () {
+      window.open('/front/subscribe.html')
     }
   }
 }
@@ -140,6 +175,12 @@ export default {
       }
     }
   }
+  .ent-tab2-content {
+    margin: 0 40px 32px;
+  }
+  ::v-deep .entsubvipform {
+    margin: 32px 40px;
+  }
   .ent-content{
     margin-top: 16px;
     background: #fff;
@@ -161,9 +202,6 @@ export default {
       height: 1px;
       background-color: #ECECEC;
     }
-    ::v-deep.el-tabs__content{
-      padding: 0 40px 32px;
-    }
     .pro_info{
       width: 100%;
       height: 171px;
@@ -228,4 +266,49 @@ export default {
     }
   }
 }
+.ent-tab2-content.mask {
+  position: relative;
+  margin: 0;
+  &>img {
+    width: 100%;
+  }
+  .m-banner {
+    position: absolute;
+    top: 60px;
+    left: 50%;
+    width: 540px;
+    height: 370px;
+    transform: translateX(-50%);
+    background-image: url('~@/assets/images/ent-portrait-bg.jpg');
+    background-size: 100% 100%;
+    border-radius: 9px;
+    text-align: center;
+    box-shadow: 0px 0px 28px 0px rgba(0,0,0,0.08);
+    .banner-header {
+      padding: 28px 0;
+      color: #fff;
+      font-size: 16px;
+      line-height: 24px;
+    }
+    .banner-content {
+      margin-top: 40px;
+      margin-bottom: 16px;
+      font-size: 14px;
+      color: #686868;
+      line-height: 22px;
+    }
+    .button-confirm {
+      display: inline-block;
+      padding: 6px 42px;
+      color: #fff;
+      font-size: 16px;
+      background-color: #2cb7ca;
+      border-radius: 6px;
+      text-align: center;
+      box-shadow: 0px 0px 28px 0px rgba(0,0,0,0.08);
+      cursor: pointer;
+      user-select: none;
+    }
+  }
+}
 </style>

+ 7 - 2
vue.config.js

@@ -39,7 +39,7 @@ module.exports = {
       //   logLevel: 'debug'
       // },
       '^/bigmember': {
-        target: 'https://web2-jytest.jydev.jianyu360.com',
+        target: 'https://web-jytest.jydev.jianyu360.com',
         // target: 'http://192.168.20.178:8800',
         changeOrigin: true,
         logLevel: 'debug',
@@ -48,7 +48,12 @@ module.exports = {
         }
       },
       '^/jypay': {
-        target: 'https://web2-jytest.jydev.jianyu360.com',
+        target: 'https://web-jytest.jydev.jianyu360.com',
+        changeOrigin: true,
+        logLevel: 'debug'
+      },
+      '^/publicapply': {
+        target: 'http://192.168.20.241:828',
         changeOrigin: true,
         logLevel: 'debug'
       }