Просмотр исходного кода

feat: p311企业画像优化调整

cuiyalong 1 год назад
Родитель
Сommit
4d53c4c38e
21 измененных файлов с 1718 добавлено и 1071 удалено
  1. 125 21
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/ent_portrait.css
  2. 100 52
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js
  3. 393 455
      src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait.html
  4. 17 6
      src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait_change.html
  5. 12 3
      src/jfw/modules/app/src/web/templates/big-member/page_free_high_set.html
  6. 1 1
      src/web/staticres/big-member/js/ent_portrait.js
  7. 134 18
      src/web/staticres/big-member/weixin/css/ent_portrait.css
  8. 28 3
      src/web/staticres/common-module/big-member/js/high_set.js
  9. 6 0
      src/web/staticres/common-module/collection/css/index.css
  10. BIN
      src/web/staticres/common-module/collection/image/bg/qy-zbtj-bg.png
  11. BIN
      src/web/staticres/common-module/collection/image/bg/qy-zbtj.png
  12. BIN
      src/web/staticres/common-module/collection/image/bg/vip_bg_1.png
  13. BIN
      src/web/staticres/common-module/collection/image/bg/vip_ex_1.png
  14. 377 0
      src/web/staticres/common-module/collection/js/buyerclass-mobile.js
  15. 99 58
      src/web/staticres/common-module/collection/js/ent_portrait.js
  16. 6 1
      src/web/staticres/common-module/collection/js/history-project.js
  17. 3 5
      src/web/staticres/common-module/collection/js/vip-dialog.js
  18. 3 0
      src/web/staticres/common-module/mainSearch/css/j-icons.css
  19. 11 2
      src/web/templates/big-member/wx/page_free_high_set.html
  20. 383 438
      src/web/templates/frontRouter/wx/collection/sess/ent_portrait.html
  21. 20 8
      src/web/templates/frontRouter/wx/collection/sess/ent_portrait_change.html

+ 125 - 21
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/ent_portrait.css

@@ -1,4 +1,4 @@
-/* 企业情报详情 + 企业情报历史记录 css */
+/* 企业情报详情 + 企业情报历史记录(工商变动) css */
 .j-main [class$=-label] {
     font-size: .24rem;
     line-height: .36rem;
@@ -39,11 +39,65 @@
 /* 企业情报详情 */
 .ent-header {
     /* min-height: 1.08rem; */
-    margin-bottom: .2rem;
     padding: .28rem .36rem;
     background-color: #fff;
 }
 
+
+.van-sticky .van-tabs__line {
+    display: none;
+}
+.van-sticky .van-tab {
+    flex-shrink: 0;
+    flex-grow: 0;
+    display: inline-block;
+    margin-right: .32rem;
+    height: .52rem;
+    padding: 0 .24rem;
+    color: #5F5E64;
+    font-size: 0.26rem;
+    line-height: 0.52rem;
+    border-radius: 0.3rem;
+    border: 1px solid #C0C4CC;
+}
+.van-sticky:not(.van-sticky--fixed) .van-tab {
+    margin-bottom: .24rem;
+}
+.van-sticky .van-tab--active {
+    color: #fff!important;
+    background-color: #2ABED1;
+    border-color: #2ABED1;
+}
+
+.van-sticky:not(.van-sticky--fixed) .van-tabs__wrap--scrollable .van-tabs__nav {
+    display: flex;
+    flex-wrap: wrap;
+    overflow: unset;
+}
+.van-sticky:not(.van-sticky--fixed) .van-tabs__wrap {
+    height: unset;
+}
+.van-sticky--fixed {
+    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+    box-shadow: 0px 2px 8px 0px rgba(54, 147, 179, 0.05);
+}
+.van-sticky--fixed .van-tabs__nav {
+    align-items: center;
+}
+.van-tab__pane {
+    margin-top: .24rem;
+}
+
+/* 解决首个tab点击后,定位顶部空白问题 */
+.ent-tabs-container > div {
+    height: unset!important;
+    min-height: 50px;
+}
+.van-tabs__nav--line {
+    padding-bottom: 4px;
+}
+
+
 .ent-title {
     flex: 1;
     margin: 0 .2rem;
@@ -76,14 +130,6 @@
     line-height: .4rem;
 }
 
-.van-tabs--line .van-tabs__wrap {
-    height: .96rem;
-}
-
-.van-tabs__line {
-    margin-bottom: .08rem;
-}
-
 .single-tab .van-tabs__line {
     display: none;
 }
@@ -176,6 +222,7 @@
 }
 
 .ent-change-history {
+    margin: .24rem 0;
     flex-direction: row;
     justify-content: space-between;
     padding: .3rem .32rem;
@@ -217,6 +264,7 @@
     font-size: .2rem;
     line-height: .28rem;
     color: #C0C4CC;
+    white-space: nowrap;
 }
 
 .project-info-item {
@@ -408,7 +456,7 @@
 }
 
 
-/* 企业情报历史记录 css */
+/* 企业情报历史记录(工商变动) css */
 .ent-change-list .header-time {
     display: flex;
     align-items: center;
@@ -478,15 +526,40 @@
     margin-right: .08rem;
 }
 
-.win-analyse {
+.module-title-container {
     display: flex;
     align-items: center;
     justify-content: space-between;
     padding: .24rem .32rem;
-    margin-top: .24rem;
     background: #fff;
+    width: 100%;
+}
+.module-title-container.pb-12 {
+    padding-bottom: .12rem;
+}
+.module-title-container .action-group {
+    display: flex;
+    align-items: center;
+}
+.module-title-container .action-group .action-button {
+    display: flex;
+    align-items: center;
+}
+.module-title-container .action-group .action-button:not(:last-of-type) {
+    margin-right: .24rem;
 }
 
+.module-title-container .action-group .action-button-text {
+    color: #2ABED1;
+}
+
+.action-group .j-icon {
+    margin-right: .08rem;
+    width: .32rem;
+    height: .32rem;
+}
+
+.module-title,
 .win-bid-title {
     position: relative;
     padding-left: .16rem;
@@ -495,6 +568,7 @@
     line-height: .52rem;
 }
 
+.module-title::after,
 .win-bid-title::after {
     position: absolute;
     content: '';
@@ -507,17 +581,47 @@
     transform: translateY(-50%);
 }
 
-.win-analyse .high-link {
-    display: flex;
-    align-items: center;
+.module-title-num {
     color: #2abed1;
-    font-size: .28rem;
 }
 
-.win-analyse .high-link > span {
-    margin-right: .08rem;
+.tip-text2 {
+    color: #9B9CA3;
+}
+
+.ent-info-detail .tab-card {
+    margin-top: 0;
+    padding-top: 0;
+}
+
+.module-notice-tip {
+    padding: 0 .32rem;
+    padding-bottom: 0.24rem;
+    color: #9B9CA3;
+    font-size: 0.24rem;
+    line-height: 0.28rem;
+}
+.zb-analysis-tab > .tab-card,
+.zb-analysis-tab .vip_component {
+    margin-top: .08rem;
+}
+.vip-ent-portrait-balance {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: .26rem .36rem;
+    line-height: 0.36rem;
+    background: linear-gradient(180deg, #F0FDFF 0%, #FFF 100%, #FFF 100%);
 }
-.win-analyse .default {
-    color: #999;
+.bid_upgrade {
+    flex: none;
+    width: 1.28rem;
+    height: .48rem;
+    color: #fff;
+    font-size: 0.24rem;
 }
 
+.bid_surplus {
+    font-size: .26rem;
+    color: #2abed1;
+}

+ 100 - 52
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js

@@ -29,12 +29,34 @@ var vNode = {
         _4: true,
         // 是否显示中标企业动态
         _13: false,
-        // 是否有企业情报历史记录权限
+        // 是否有企业情报历史记录(工商变动)权限
         _12: false,
         isMember: 0, // 是否是大会员
         arr: [], // 权限数组
         vipStatus: 0 // 是否是超级订阅
       },
+      moduleList: [
+        {
+          title: '工商信息',
+          name: '1',
+        },
+        {
+          title: '工商变动',
+          name: '2',
+        },
+        {
+          title: '企业通讯录',
+          name: '3',
+        },
+        {
+          title: '中标动态',
+          name: '4',
+        },
+        {
+          title: '中标分析',
+          name: '5',
+        },
+      ],
       powerInfo: {},
       tabActiveName: '1',
       // 企业信息
@@ -46,6 +68,9 @@ var vNode = {
       },
       // tab1中的企业基础信息
       entBaseInfo: {
+        _loaded: false, // 请求完成
+        _empty: true,
+
         type: null,
         status: null,
         creditNo: '',
@@ -68,11 +93,11 @@ var vNode = {
         list: [],
         count: 1, // 总共多少条数据
         pageSize: 5,
+        loaded: false,
         showGetNextButton: true
       },
       entPortraitInfo: {},
       stickyTop: 80,
-      singleTab: true,
       // 年度项目统计设置
       annualSetting: {
         showLine: ['项目金额'],
@@ -113,6 +138,12 @@ var vNode = {
       svip: false, // 判断是否是超级订阅的企业画像
       overlayShow: true, // 弹窗遮罩是否显示
       isVip: false, // 只是超级订阅
+      svipBuyset: {
+        areacount: 1,
+        buyerclasscount: -1,
+        newcitys: [],
+        upgrade: 1,
+      },
       bidcollPowerInfo: {
         vip: 0,
         text: '开通',
@@ -135,6 +166,8 @@ var vNode = {
         topShow: true,
         dt: true
       },
+      // 中标动态筛选条件缓存,也可以用来判断是否正在使用筛选项进行请求
+      winnerHighSet: '',
       canFreeExp: false,
       canFreeTrial: false,
       freeWinnerOpen: false,
@@ -150,7 +183,7 @@ var vNode = {
     }
   },
   created: function () {
-    // svip是超级订阅企业查询, 如果是超级订阅不能查看企业情报历史记录
+    // svip是超级订阅企业查询, 如果是超级订阅不能查看企业情报历史记录(工商变动)
     var svip = utils.getParam('svip')
     if (svip) {
       this.svip = true
@@ -198,36 +231,6 @@ var vNode = {
     clearTimeout(window.t)
     window.t = setTimeout(this.scrollHeight.bind(this), 300)
   },
-  watch: {
-    tabActiveName: function (newVal, oldVal) {
-      var _this = this
-      if (newVal == '2') {
-        this.$nextTick(function () {
-          if (_this.gotTab2) {
-            // 初始化图表
-            if (_this.entPortraitInfo && _this.conf.showPortraitAll && !_this.singleTab) {
-              _this.initChartsData();
-            }
-          } else {
-            if (_this.conf._4) {
-              // 获取企业画像信息-4
-              _this.getEntPortrait(function () {
-                _this.initChartsData()
-              })
-              _this.gotTab2 = true
-              console.log('获取企业全景分析...')
-            }
-            // 获取企业中标动态-13
-            if (_this.conf._13) {
-              // _this.getProjectNews()
-              _this.gotTab2 = true
-              console.log('获取企业中标动态...')
-            }
-          }
-        });
-      }
-    }
-  },
   computed: {
     // 3个权限有1个就为true(取反为3个权限1个都没有)
     hasOnePower: function () {
@@ -276,6 +279,15 @@ var vNode = {
       })
       return !isShow
     },
+    // 超级订阅画像余额是否展示
+    showPortraitBalance: function () {
+      return this.hasOnePower && this.surplus && this.isVip
+    },
+    // 超级订阅画像余额模块引导按钮
+    portraitBalance: function () {
+      // 购买的全国,则联系客服。否则去升级
+      return this.svipBuyset.areacount === -1 ? '联系客服' : '去升级'
+    },
     isFreeOrNotLogin () {
       return !this.isLogin || this.isFree
     }
@@ -311,7 +323,8 @@ var vNode = {
     }, 50),
     scrollHeight: function () {
       var storageClick = JSON.parse(sessionStorage.getItem('is-click-set'))
-      if ($('.win-analyse').length && $('.win-analyse').length > 0 && storageClick) {
+      var target = $('.project-news.tab-card .project-news-tip')
+      if (target.length && target.length > 0 && storageClick) {
         this.$nextTick(function () {
           // 有开通超级订阅banner时
           if (this.freeWinnerOpen) {
@@ -325,7 +338,8 @@ var vNode = {
               "margin-top": '2rem'
             })
           } else {
-            document.querySelector('.win-analyse').scrollIntoView()
+            // document.querySelector('.project-news.tab-card').scrollIntoView()
+            this.$refs.scrollspyTabs.scrollTo('4')
           }
           sessionStorage.removeItem('is-click-set')
         })
@@ -335,7 +349,7 @@ var vNode = {
       var _this = this
       this.$nextTick(function () {
         // 初始化图表
-        if (_this.entPortraitInfo && _this.conf.showPortraitAll && !_this.singleTab) {
+        if (_this.entPortraitInfo && _this.conf.showPortraitAll) {
           _this.initChartsData();
         }
 
@@ -409,12 +423,19 @@ var vNode = {
       }
       this.overlayShow = true
     },
+    getHighSet: function () {
+      var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+      this.winnerHighSet = storageSet
+      return storageSet
+    },
     // 获取画像信息
     getEntPortrait: function (callback) {
+      // console.trace(this.isLogin, this.isFree)
       if(!this.isLogin || this.isFree) {
+        // 此处可能出现isLogin未响应的情况。
         return
       }
-      var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+      var storageSet = this.getHighSet()
       var _this = this
       var data = {
         entId: _this.entInfo.id
@@ -449,7 +470,6 @@ var vNode = {
           if (res.error_code == 0) {
             _this.loading.clear()
             if (res.data && Object.keys(res.data).length !== 0) {
-              _this.singleTab = false
               // 将数据保存到data中
               for (var key in res.data) {
                 _this.entPortraitInfo[key] = res.data[key]
@@ -526,7 +546,7 @@ var vNode = {
     //数据导出
     onExport () {
       var _this = this
-      var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+      var storageSet = this.getHighSet()
       var data = {
         entId: this.entInfo.id,
         pageNum: 1,
@@ -609,7 +629,7 @@ var vNode = {
     },
     // 获取项目动态
     getProjectNews: function () {
-      var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+      var storageSet = this.getHighSet()
       var _this = this
       var data = {
         entId: _this.entInfo.id,
@@ -635,7 +655,6 @@ var vNode = {
               _this.show.dt = false
             }
             if (res.data.list && $.isArray(res.data.list)) {
-              _this.singleTab = false
               try {
                 res.data.list.forEach(function (item) {
                   item.visited = visitedPath.pathVisited(
@@ -666,7 +685,10 @@ var vNode = {
           setTimeout(function () {
             _this.getProjectNews()
           }, 3000)
-        }
+        },
+        complete: function () {
+          _this.topProject.loaded = true
+        },
       })
     },
     // 查询企业基础信息
@@ -689,6 +711,7 @@ var vNode = {
           if (res.error_code == 0) {
             if (res.data && Object.keys(res.data).length !== 0) {
               _this.entInfo.name = res.data.entName
+              _this.entBaseInfo._empty = false
               for (var key in res.data) {
                 _this.entBaseInfo[key] = res.data[key]
               }
@@ -703,7 +726,10 @@ var vNode = {
           // setTimeout(function() {
           //   _this.getEntBaseInfo()
           // }, 3000)
-        }
+        },
+        complete: function () {
+          _this.entBaseInfo._loaded = true
+        },
       })
     },
     // 查询企业是否存在和企业关注状态
@@ -793,15 +819,15 @@ var vNode = {
               //}
               _this.canReadConf13()
               if (power.indexOf(12) != -1) {
-                // 获取企业情报历史记录-12
+                // 获取企业情报历史记录(工商变动)-12
                 _this.conf._12 = true
               }
               // 所有身份均可关注(除未登录)
               // _this.getEntFollowState()
-              _this.singleTab = false
             }
 
             if (res.data.vipStatus > 0) {
+              _this.getVipBuyInfo()
               if (!res.data.viper) {
                 _this.bidcollPowerInfo.text = '升级'
                 _this.bidcollPowerInfo.btntext = '去升级'
@@ -861,6 +887,20 @@ var vNode = {
         }
       })
     },
+    getVipBuyInfo: function () {
+      var _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/subscribepay/vipsubscribe/getSubBuyMsg',
+        success: function (res) {
+          if(res && res.data) {
+            if (res.data.buyset) {
+              Object.assign(_this.svipBuyset, res.data.buyset)
+            }
+          }
+        }
+      })
+    },
     // 判断当前用户是登录
     getUserSimpleInfo() {
       const _this = this
@@ -933,7 +973,7 @@ var vNode = {
       this.arrangeImportantData(dataSet.topShow)
     },
     getStickyTop: function () {
-      this.stickyTop = '21.33333vw'
+      this.stickyTop = $('.j-header.jy-app-header').outerHeight() || '21.33333vw'
     },
     goToEntHistory: function () {
       // if (this.powerInfo.isSubCount) {
@@ -1397,7 +1437,6 @@ var vNode = {
         topProject: this.topProject,
         entPortraitInfo: this.entPortraitInfo,
         powerInfo: this.powerInfo,
-        singleTab: this.singleTab,
         scrollTop: this.scrollTop,
         gotTab2: this.gotTab2
       }
@@ -1420,7 +1459,6 @@ var vNode = {
         Object.assign(this.entPortraitInfo, $data.entPortraitInfo || {})
         Object.assign(this.powerInfo, $data.powerInfo || {})
         Object.assign(this.entvisit, $data.entvisit || {})
-        this.singleTab = $data.singleTab
         this.scrollTop = $data.scrollTop
         this.gotTab2 = $data.gotTab2
         sessionStorage.removeItem(this.sessKey)
@@ -1433,12 +1471,12 @@ var vNode = {
         return
       }
       sessionStorage.setItem('is-click-set', 1)
-      location.href = './free_high_set?header=中标信息高级分析设置&eid=' + utils.getParam('eId')
+      location.href = './free_high_set?header=中标动态筛选条件&from=ent_portrait&eid=' + utils.getParam('eId')
       // var url = this.getProjectNewsUrl()
       // var reqSign = url.indexOf('subVipPortrait') === -1 ? 'bigmember' : 'svip'
       // if (this.conf._4) {
       //   sessionStorage.setItem('is-click-set', 1)
-      //   location.href = './free_high_set?header=中标信息高级分析设置&eid=' + utils.getParam('eId') + '&reqSign=' + reqSign
+      //   location.href = './free_high_set?header=中标动态筛选条件&from=ent_portrait&eid=' + utils.getParam('eId') + '&reqSign=' + reqSign
       // } else {
       //   this.$dialog.confirm({
       //     className:'promatch',
@@ -1455,13 +1493,23 @@ var vNode = {
       location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=ent_portrait_freeuser';
     },
     goOpenVip: function () {
+      this.savePageState()
       // location.href = "/jyapp/vipsubscribe/vipsubscribe_new"
-      location.href = '/jy_mobile/common/order/create/svip?type=buy'
+      location.href = '/jy_mobile/common/order/create/svip'
+    },
+    portraitBalanceActionRight: function (key) {
+      this.savePageState()
+      if (key === '去升级') {
+        location.href = '/jy_mobile/common/order/create/svip?type=upgrade'
+      } else if (key === '联系客服') {
+        // utils.goToCustomerPage()
+        location.href = '/jyapp/free/customer'
+      }
     },
     // 跳转登录页
     goLogin: function () {
       window.location.href = "/jyapp/free/login?to=back";
-    }
+    },
   }
 }
 var vueComponent = new Vue(vNode)

+ 393 - 455
src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait.html

@@ -23,32 +23,6 @@
   <!--E-当前页面的css资源-->
 </head>
 <style>
-    .bidinfo {
-        font-size: 0.28rem;
-        font-weight: 500;
-        text-align: CENTER;
-        color: #c0c4cc;
-        line-height: 20px;
-    }
-
-    .bid_upgrade {
-        padding: 0.04rem 0.12rem;
-        border: 1px solid #fb483d;
-        border-radius: 0.18rem;
-        font-size: 0.2rem;
-        font-weight: 500;
-        color: #fb483d;
-        line-height: 0.4rem;
-    }
-
-    .bid_surplus {
-        height: .04rem;
-        opacity: 1;
-        font-size: .22rem;
-        font-weight: 500;
-        color: #2abed1;
-    }
-
     .vip_openDialog {
         position: relative;
         padding: 0 0 0.64rem;
@@ -82,99 +56,6 @@
         border-radius: 9px;
         line-height: 0.5rem;
     }
-
-    .go-text {
-        color: #2cb7ca !important;
-    }
-    .selected-export-box {
-      position: relative;
-      padding: 0.06rem .28rem 0 .34rem;
-      height: 0.9rem;
-      line-height: 0.9rem;
-      font-size: .26rem;
-      background-color: #fff;
-      z-index: 999;
-      display: flex;
-      width: 100%;
-      /*border-bottom: 0.008rem solid rgb(191,191,191);*/
-    }
-    .selected-export-box .selected-export{
-      margin-bottom: .2rem;
-    }
-    .selected-export-box .selected-export .select-show-type-group span{
-      padding: 0.32rem 0 0.12rem;
-      font-size: .36rem;
-      line-height: .52rem;
-      color: #171826;
-      height: 0.52rem;
-      box-sizing: border-box;
-    }
-    .selected-export-box .selected-export .select-show-type-group .active{
-      color: #2ABED1;
-      position: relative;
-      /*border-bottom: 2px solid #2ABED1;*/
-    }
-    .selected-export-box .selected-export .select-show-type-group .active:after {
-      content: '';
-      position: absolute;
-      left: 0.6rem;
-      top: auto;
-      bottom: 0.07rem;
-      /*right: auto;*/
-      height: .03rem;
-      width: .5rem;
-      background-color: #2ABED1;
-    }
-    .selected-export-box .selected-export .export #mainSearch-selLable-dataExport {
-      color: #2ABED1;
-      margin-left: 0.1rem;
-      font-size: .28rem;
-    }
-    .selected-export-box .selected-export .options .search-title i,
-    .selected-export-box .selected-export .options .show-list i {
-      position: absolute;
-      font-size: .15rem;
-      top: 50%;
-      -webkit-transform: translateY(-50%);
-      transform: translateY(-50%);
-      right: -0.22rem;
-    }
-    .selected-export-box .selected-export .options .search-title.active,
-    .selected-export-box .selected-export .options .show-list.active {
-      color: #2CB7CA;
-    }
-    .selected-export-box .selected-export .options .show-list {
-      margin-left: .74rem;
-    }
-    .selected-export-box .selected-export .export {
-      position: absolute;
-      top: 50%;
-      right: .28rem;
-      -webkit-transform: translateY(-50%);
-      transform: translateY(-50%);
-    }
-    .selected-export-box .selected-export .export span i {
-      width: .3rem;
-      height: .4rem;
-      position: absolute;
-      font-size: .1rem;
-      top: 50%;
-      left: -0.25rem;
-      -webkit-transform: translateY(-50%);
-      transform: translateY(-50%);
-    }
-    .selected-export-box .selected-export .export:before {
-      position: absolute;
-      /*content: '';*/
-      left: -0.66rem;
-      top: 50%;
-      -webkit-transform: translateY(-50%);
-      transform: translateY(-50%);
-      width: 1px;
-      height: 0.44rem;
-      background-color: #e0e0e0;
-      margin-left: 0.2rem;
-    }
     .head-group{
       display: flex;
       align-items: flex-start;
@@ -240,127 +121,143 @@
     <div class="j-header ent-header">
       <span class="j-icon icon-company"></span>
       <span class="ent-title">${ entInfo.name }</span>
-      <span style="margin-right: .32rem;" class="j-icon" :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
+      <span class="j-icon" :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
             @click="changeFollowState" v-if="!isLogin || (entInfo.followSearchFinish && entInfo.entExist)"></span>
       <van-loading v-if="isLogin && !entInfo.followSearchFinish" size="24px"></van-loading>
-      <forwardshare :params="entParams" :show-text="false" v-if="isLogin" ></forwardshare>
+      <forwardshare style="margin-left: .32rem;" :params="entParams" :show-text="false" v-if="isLogin" ></forwardshare>
     </div>
     <van-tabs
-            class="ent-tabs-container"
-            :class="singleTab ? 'single-tab' : ''"
-            v-model="tabActiveName"
-            scrollspy
-            sticky
-            color="#2cb7ca"
-            title-active-color="#2cb7ca"
-            title-inactive-color="#5F5E64"
-            line-width="0.48rem"
-            v-if="conf.powerLoaded && conf.showPortraitAll" :offset-top="stickyTop">
-      <van-tab name="1" title="企业信息">
-        <div class="bg-white tab-card">
-          <div class="card-row">
-            <div class="card-column social-credit-code">
-              <div class="ent-registration-label">统一社会信用代码</div>
-              <div class="ent-registration-text">${entBaseInfo.creditNo ? entBaseInfo.creditNo : '-'}</div>
-            </div>
-            <div class="card-column organization-code">
-              <div class="ent-info-label">联系方式</div>
-              <div class="ent-info-text">${entBaseInfo.phone ? entBaseInfo.phone : '-'}</div>
-            </div>
+      class="ent-tabs-container"
+      v-model="tabActiveName"
+      ref="scrollspyTabs"
+      scrollspy
+      sticky
+      color="#2cb7ca"
+      swipe-threshold="4"
+      title-active-color="#2cb7ca"
+      title-inactive-color="#5F5E64"
+      line-width="0.48rem"
+      v-if="conf.powerLoaded && conf.showPortraitAll" :offset-top="stickyTop">
+      <!-- 企业信息/工商信息 -->
+      <van-tab :name="moduleList[0].name" :title="moduleList[0].title">
+        <div class="module-container pb-12 ent-info-detail">
+          <div class="module-title-container">
+            <p class="module-title">工商信息</p>
           </div>
-          <div class="card-row">
-            <div class="card-column registered-capital">
-              <div class="ent-info-label">注册资本</div>
-              <div class="ent-info-text">${entBaseInfo.capital ? entBaseInfo.capital+'万元' : '-'}</div>
-            </div>
-            <div class="card-column registered-capital">
-              <div class="ent-info-label">法人姓名</div>
-              <div class="ent-info-text">${entBaseInfo.legal ? entBaseInfo.legal : '-'}</div>
-            </div>
-          </div>
-          <div class="card-row">
-            <div class="card-column ent-establish">
-              <div class="ent-info-label">成立日期</div>
-              <div class="ent-info-text">
-                ${(!entBaseInfo.establish || entBaseInfo.establish == -1) ? '-' : new
-                Date(entBaseInfo.establish*1000).pattern('yyyy/MM/dd')}
+          <div class="bg-white tab-card" v-if="!entBaseInfo._empty && entBaseInfo._loaded">
+            <div class="card-row">
+              <div class="card-column social-credit-code">
+                <div class="ent-registration-label">统一社会信用代码</div>
+                <div class="ent-registration-text">${entBaseInfo.creditNo ? entBaseInfo.creditNo : '-'}</div>
+              </div>
+              <div class="card-column organization-code">
+                <div class="ent-info-label">联系方式</div>
+                <div class="ent-info-text">${entBaseInfo.phone ? entBaseInfo.phone : '-'}</div>
               </div>
             </div>
-            <div class="card-column ent-status">
-              <div class="ent-info-label">经营状态</div>
-              <div class="ent-info-text">${entBaseInfo.status ? entBaseInfo.status : '-'}</div>
-            </div>
-          </div>
-          <div v-if="!showBaseInfo" class="show-more" @click="showBaseInfo = true">查看更多</div>
-          <div v-show="showBaseInfo" style="width: 100%;">
             <div class="card-row">
-              <div class="card-column ent-type">
-                <div class="ent-type-label">公司类型</div>
-                <div class="ent-type-text">${entBaseInfo.type ? entBaseInfo.type : '-'}</div>
+              <div class="card-column registered-capital">
+                <div class="ent-info-label">注册资本</div>
+                <div class="ent-info-text">${entBaseInfo.capital ? entBaseInfo.capital+'万元' : '-'}</div>
+              </div>
+              <div class="card-column registered-capital">
+                <div class="ent-info-label">法人姓名</div>
+                <div class="ent-info-text">${entBaseInfo.legal ? entBaseInfo.legal : '-'}</div>
               </div>
             </div>
             <div class="card-row">
-              <div class="card-column ent-business-term">
-                <div class="ent-business-term-label">营业期限</div>
-                <div class="ent-business-term-text">
-                    <span>${entBaseInfo.operStart == -1 ? '-' : new
-                      Date(entBaseInfo.operStart*1000).pattern('yyyy/MM/dd')}</span>
-                  <span> 至 </span>
-                  <span>${entBaseInfo.operEnd == -1 ? '-' : new
-                      Date(entBaseInfo.operEnd*1000).pattern('yyyy/MM/dd')}</span>
+              <div class="card-column ent-establish">
+                <div class="ent-info-label">成立日期</div>
+                <div class="ent-info-text">
+                  ${(!entBaseInfo.establish || entBaseInfo.establish == -1) ? '-' : new
+                  Date(entBaseInfo.establish*1000).pattern('yyyy/MM/dd')}
                 </div>
               </div>
-            </div>
-            <div class="card-row">
-              <div class="card-column tax-identification-number">
-                <div class="ent-registration-label">纳税人识别号</div>
-                <div class="ent-registration-text">${entBaseInfo.taxCode ? entBaseInfo.taxCode : '-'}</div>
+              <div class="card-column ent-status">
+                <div class="ent-info-label">经营状态</div>
+                <div class="ent-info-text">${entBaseInfo.status ? entBaseInfo.status : '-'}</div>
               </div>
             </div>
-            <div class="card-row">
-              <div class="card-column business-registration-number">
-                <div class="ent-registration-label">工商注册号</div>
-                <div class="ent-registration-text">${entBaseInfo.company_code ? entBaseInfo.company_code : '-'}</div>
+            <div v-if="!showBaseInfo" class="show-more" @click="showBaseInfo = true">查看更多</div>
+            <div v-show="showBaseInfo" style="width: 100%;">
+              <div class="card-row">
+                <div class="card-column ent-type">
+                  <div class="ent-type-label">公司类型</div>
+                  <div class="ent-type-text">${entBaseInfo.type ? entBaseInfo.type : '-'}</div>
+                </div>
               </div>
-            </div>
-            <div class="card-row">
-              <div class="card-column organization-code">
-                <div class="ent-info-label">组织机构代码</div>
-                <div class="ent-info-text">${entBaseInfo.org_code ? entBaseInfo.org_code : '-'}</div>
+              <div class="card-row">
+                <div class="card-column ent-business-term">
+                  <div class="ent-business-term-label">营业期限</div>
+                  <div class="ent-business-term-text">
+                      <span>${entBaseInfo.operStart == -1 ? '-' : new
+                        Date(entBaseInfo.operStart*1000).pattern('yyyy/MM/dd')}</span>
+                    <span> 至 </span>
+                    <span>${entBaseInfo.operEnd == -1 ? '-' : new
+                        Date(entBaseInfo.operEnd*1000).pattern('yyyy/MM/dd')}</span>
+                  </div>
+                </div>
               </div>
-            </div>
-            <div class="card-row">
-              <div class="card-column ent-employee">
-                <div class="ent-info-label">人员规模(工商年报-参保人数,仅供参考)</div>
-                <div class="ent-info-text">${entBaseInfo.employeeNo ? entBaseInfo.employeeNo : '-'}</div>
+              <div class="card-row">
+                <div class="card-column tax-identification-number">
+                  <div class="ent-registration-label">纳税人识别号</div>
+                  <div class="ent-registration-text">${entBaseInfo.taxCode ? entBaseInfo.taxCode : '-'}</div>
+                </div>
               </div>
-            </div>
-            <div class="card-row">
-              <div class="card-column registered-capital">
-                <div class="ent-info-label">注册地址</div>
-                <div class="ent-info-text">${entBaseInfo.address ? entBaseInfo.address : '-'}</div>
+              <div class="card-row">
+                <div class="card-column business-registration-number">
+                  <div class="ent-registration-label">工商注册号</div>
+                  <div class="ent-registration-text">${entBaseInfo.company_code ? entBaseInfo.company_code : '-'}</div>
+                </div>
               </div>
-            </div>
-            <div class="card-row">
-              <div class="card-column registered-capital">
-                <div class="ent-info-label">经营范围</div>
-                <div class="ent-info-text">${entBaseInfo.scope ? entBaseInfo.scope : '-'}</div>
+              <div class="card-row">
+                <div class="card-column organization-code">
+                  <div class="ent-info-label">组织机构代码</div>
+                  <div class="ent-info-text">${entBaseInfo.org_code ? entBaseInfo.org_code : '-'}</div>
+                </div>
+              </div>
+              <div class="card-row">
+                <div class="card-column ent-employee">
+                  <div class="ent-info-label">人员规模(工商年报-参保人数,仅供参考)</div>
+                  <div class="ent-info-text">${entBaseInfo.employeeNo ? entBaseInfo.employeeNo : '-'}</div>
+                </div>
+              </div>
+              <div class="card-row">
+                <div class="card-column registered-capital">
+                  <div class="ent-info-label">注册地址</div>
+                  <div class="ent-info-text">${entBaseInfo.address ? entBaseInfo.address : '-'}</div>
+                </div>
+              </div>
+              <div class="card-row">
+                <div class="card-column registered-capital">
+                  <div class="ent-info-label">经营范围</div>
+                  <div class="ent-info-text">${entBaseInfo.scope ? entBaseInfo.scope : '-'}</div>
+                </div>
               </div>
             </div>
           </div>
+          <div class="empty-container bg-white" v-if="entBaseInfo._empty && entBaseInfo._loaded">
+            <div class="empty-content-position">
+                <div class="image">
+                    <img src="/common-module/public/image/jy-back.png">
+                </div>
+                <div class="empty-main tip-text2">暂无数据</div>
+            </div>
+          </div>
         </div>
-        <div class="bg-white tab-card ent-change-history" @click="goToEntHistory">
-          <div class="ent-change-l">企业情报历史记录</div>
+      </van-tab>
+      <!-- 工商变动 -->
+      <van-tab :name="moduleList[1].name" :title="moduleList[1].title">
+        <div class="module-title-container bg-white tab-card ent-change-history" @click="goToEntHistory">
+          <div class="module-title ent-change-l">
+            <span>工商变动</span>
+            <!-- <span class="module-title-num">10</span> -->
+          </div>
           <div class="j-icon icon-back base-icon"></div>
         </div>
       </van-tab>
-      <van-tab name="2" v-if="!singleTab">
-        <template #title>
-          <span :class="{bidinfo:!hasOnePower}">中标分析</span>
-          <span v-if="isShowUpTip" class="bid_upgrade">升级</span>
-          <span v-if="(hasOnePower && surplus && isVip)"
-                class="bid_surplus">剩余:${entvisit.total - entvisit.usage}</span>
-        </template>
+      <!-- 企业通讯录 -->
+      <van-tab :name="moduleList[2].name" :title="moduleList[2].title">
         <div v-if="!showContacts" style="margin-top: .24rem;">
           <div style="background: #fff;padding: .24rem .32rem 0;">
             <span class="win-bid-title">企业通讯录</span>
@@ -375,290 +272,331 @@
         <div class="bg-white tab-card cell-list" v-else >
           <hispro-component class="history-list" type="winner" :id="entInfo.id" :ent-name="entInfo.name"></hispro-component>
         </div>
+      </van-tab>
+      <!-- 中标动态 -->
+      <van-tab :name="moduleList[3].name" :title="moduleList[3].title">
+        <div class="bg-white tab-card cell-list project-news">
+          <div class="module-title-container bg-white project-news-module">
+            <div class="module-title project-news-title">
+              <span>中标动态</span>
+              <!-- <span class="module-title-num">10</span> -->
+            </div>
+            <div class="action-group" v-if="conf._13">
+              <div class="action-button export" @click="onExport">
+                  <i class="j-icon base-icon icon-download"></i>
+                  <em class="action-button-text">数据导出</em>
+              </div>
+              <div class="action-button filters-button" @click="goHighSet" v-if="!getStatus">
+                <i class="j-icon base-icon icon-3hengxian"></i>
+                <em class="action-button-text">筛选条件</em>
+              </div>
+            </div>
+          </div>
+          <div class="module-notice-tip">注:1个项目如同时发布了中标、成交、合同等结果类公告,则有多条数据</div>
+          <div class="tab-card-content vip_component" v-if="getStatus && hideDt"
+            style="height:9.16rem;background:url('/common-module/collection/image/bg/vip_bg_1.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%"
+            key="dt">
+            <vip-component @tabactive="tabActive" :power="conf" type="item_1" :can-free-exp="canFreeExp"
+                          :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_1.png?v={{Msg "seo" "version"}}'>
+            </vip-component>
+          </div>
+          <div class="tab-card-content" key="dt" v-else>
+            <ul class="project-info-list" v-show="topProject.list.length !== 0">
+              <li class="project-info-item border-line-b clickable" :class="{ visited: item.visited }" v-for="(item,index) in topProject.list"
+                  @click="toProjectDetail(item)">
+                <div class="head-group">
+                  <p class="i_title visited-hd">${item.title}</p>
+                  <span class="icon weishoucang" :class="idx.indexOf(item.id) >-1 ? 'shoucang' : 'weishoucang'" @click.stop="addKeepStatus(item)"></span>
+                </div>
+               <div class="project-name" v-if="false">${item.title}</div>
+                <div class="project-info">
+                    <span class="tags">
+                      <span class="tag tag-success" v-if="item.area">${item.area}</span>
+                      <span class="tag tag-success" v-if="item.bidstatus">${item.bidstatus}</span>
+                      <span class="tag tag-success" v-if="item.bidamount">${utils.moneyUnit(item.bidamount)}</span>
+                    </span>
+                  <span class="project-time">${item.firsttime ? new Date(item.firsttime * 1000).pattern('yyyy-MM-dd')
+                      : '-'}</span>
+                </div>
+              </li>
+              <li class="show-more clickable"
+                  v-if="topProject.showGetNextButton && (isMemberAndSvip || canFreeTrial) && topProject.count > 3"
+                  @click="goToFilterProjectNews">查看更多
+              </li>
+            </ul>
+            <div class="empty-container bg-white" v-show="topProject.list.length === 0 && topProject.loaded">
+              <div class="empty-content-position">
+                  <div class="image">
+                      <img src="/common-module/public/image/jy-back.png">
+                  </div>
+                  <div class="empty-main tip-text2">
+                    <template v-if="winnerHighSet">
+                      <p>对不起,没有匹配到相关信息,</p>
+                      <p>修改时间范围或换个搜索词试试吧</p>
+                    </template>
+                    <template v-else>暂无数据</template>
+                  </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </van-tab>
+      <!-- 中标分析 -->
+      <van-tab :name="moduleList[4].name" :title="moduleList[4].title" class="zb-analysis-tab">
+        <template #title v-if="false">
+          <span :class="{bidinfo:!hasOnePower}">中标分析</span>
+          <span v-if="isShowUpTip" class="bid_upgrade">升级</span>
+          <span v-if="(hasOnePower && surplus && isVip)"
+                class="bid_surplus">剩余:${entvisit.total - entvisit.usage}</span>
+        </template>
+        <!-- 免费用户采购单位全景分析提示 -->
+       <div v-if="canFreeExp && isLogin" style="margin-top: .24rem; " class="free-give">
+         <div class="highlight-text"> 免费赠送1次【企业中标分析】权益体验机会!</div>
+         <div class="go-btn" @click="goGiveAnalysis">去解锁</div>
+       </div>
         <!-- 留完资的免费用户 已体验和未体验的展示去开通 -->
         <div v-if="freeWinnerOpen" class="banner-sticky" ref="bannerRef">
           <!-- <van-sticky offset-top="33.67vw"> -->
           <img @click="goOpenVip" src="/jyapp/big-member/image/winner-open.png" alt="">
           <!-- </van-sticky> -->
         </div>
-        <!-- 高级分析 -->
-        <div class="win-analyse" ref="setRef">
-          <span class="win-bid-title">中标分析</span>
-          <div class="high-link" :class="isLogin ? '' : 'default'" @click="goHighSet">
-            <span>高级分析设置</span>
-            <van-icon name="arrow"></van-icon>
+        <div class="bg-white tab-card cell-list zb-analysis-module">
+          <div class="module-title-container bg-white " ref="setRef">
+            <div class="module-title zb-analysis-title">
+              <span>中标分析</span>
+              <!-- <span class="module-title-num">10</span> -->
+            </div>
           </div>
+          <div class="module-notice-tip">注:1个项目如同时发布了中标、成交、合同等结果类公告,则有多条数据</div>
         </div>
-        <!-- 免费用户采购单位全景分析提示 -->
-<!--        <div v-if="canFreeExp && isLogin" style="margin-top: .24rem; " class="free-give">-->
-<!--          <div class="go-text"> 免费赠送1次【企业中标分析】权益体验机会!</div>-->
-<!--          <div class="go-btn" @click="goGiveAnalysis">去解锁</div>-->
-<!--        </div>-->
-        <!-- 中标信息统计结果-->
-        <div class="bg-white tab-card" v-if="!isFreeOrNotLogin">
-          <div class="tab-card-title" style="padding: 0.16rem .32rem .12rem;">中标信息统计结果</div>
-          <div class="card-row zb-info">
-            <div class="card-column">
-              <div class="ent-info-label">项目数量</div>
-              <div class="ent-info-text">${entPortraitInfo.project_count ? entPortraitInfo.project_count + '个' : '--'}
+        <!-- 有权限,并且数据为空。则展示空状态 -->
+        <div class="empty-container bg-white" key="zb-analysis-content" v-if="!getStatus && entPortraitInfo.project_count <= 0">
+          <div class="empty-content-position">
+              <div class="image">
+                  <img src="/common-module/public/image/jy-back.png">
               </div>
+              <p class="empty-main tip-text2">当前条件下暂无中标项目,无法进行中标分析</p>
+          </div>
+        </div>
+        <template v-else key="zb-analysis-content">
+          <!-- 中标信息统计结果概况-->
+          <div class="tab-card-container zb-overview-module" v-if="!isFreeOrNotLogin">
+            <div class="vip-ent-portrait-balance" v-if="showPortraitBalance">
+              <span class="bid_surplus highlight-text">当月企业画像余额:${entvisit.total - entvisit.usage}个</span>
+              <span v-if="isShowUpTip" class="j-button-confirm bid_upgrade" @click="portraitBalanceActionRight(portraitBalance)">${portraitBalance}</span>
             </div>
-            <div class="card-column">
-              <div class="ent-info-label">项目金额</div>
-              <div class="ent-info-text">${entPortraitInfo.bidamount_count ?
-                utils.moneyUnit(entPortraitInfo.bidamount_count) : '--'}
+            <div class="bg-white tab-card">
+              <div class="tab-card-title" style="padding: 0.16rem .32rem .12rem;">概况</div>
+              <div class="card-row zb-info">
+                <div class="card-column">
+                  <div class="ent-info-label">项目数量</div>
+                  <div class="ent-info-text">${entPortraitInfo.project_count ? entPortraitInfo.project_count + '个' : '--'}
+                  </div>
+                </div>
+                <div class="card-column">
+                  <div class="ent-info-label">项目金额</div>
+                  <div class="ent-info-text">${entPortraitInfo.bidamount_count ?
+                    utils.moneyUnit(entPortraitInfo.bidamount_count) : '--'}
+                  </div>
+                </div>
+                <div class="card-column">
+                  <div class="ent-info-label">项目省份</div>
+                  <div class="ent-info-text">${entPortraitInfo.area_count ? entPortraitInfo.area_count + '个' : '--'}</div>
+                </div>
+                <div class="card-column">
+                  <div class="ent-info-label">项目客户</div>
+                  <div class="ent-info-text">${entPortraitInfo.buyer_count ? entPortraitInfo.buyer_count + '个' : '--'}
+                  </div>
+                </div>
               </div>
-            </div>
-            <div class="card-column">
-              <div class="ent-info-label">项目省份</div>
-              <div class="ent-info-text">${entPortraitInfo.area_count ? entPortraitInfo.area_count + '个' : '--'}</div>
-            </div>
-            <div class="card-column">
-              <div class="ent-info-label">项目客户</div>
-              <div class="ent-info-text">${entPortraitInfo.buyer_count ? entPortraitInfo.buyer_count + '个' : '--'}
+              <div class="zb-time-frame border-line-t">
+                <span>数据统计范围:</span>
+                <span>${entPortraitInfo.timeRangeStart ? new Date(entPortraitInfo.timeRangeStart *
+                    1000).pattern('yyyy/MM/dd') : ''}</span>
+                <span>-</span>
+                <span>${entPortraitInfo.timeRangeEnd ? new Date(entPortraitInfo.timeRangeEnd * 1000).pattern('yyyy/MM/dd')
+                    : '至今'}</span>
+                <span>(结果类公告发布时间)</span>
               </div>
             </div>
           </div>
-          <div class="zb-time-frame border-line-t">
-            <span>数据统计范围:</span>
-            <span>${entPortraitInfo.timeRangeStart ? new Date(entPortraitInfo.timeRangeStart *
-                1000).pattern('yyyy/MM/dd') : ''}</span>
-            <span>-</span>
-            <span>${entPortraitInfo.timeRangeEnd ? new Date(entPortraitInfo.timeRangeEnd * 1000).pattern('yyyy/MM/dd')
-                : '至今'}</span>
-          </div>
-        </div>
-        <!-- 中标信息统计结果--未登录-->
-        <div class="bg-white tab-card charts"  style="margin-bottom: 10px;" v-if="isFreeOrNotLogin">
-            <div class="tab-card-title">中标信息统计结果</div>
+          <!-- 中标信息统计结果 -->
+          <div class="bg-white tab-card charts" v-if="isFreeOrNotLogin">
             <div class="vip_component" v-if="getStatus && hideDt"
-                 style="height:5.8rem;background:url('/common-module/collection/image/bg/qy-zbtj-bg.png?v={{Msg "seo" "version"}}') 40% 0 no-repeat;background-size:110% 100%;"
-            key="dt">
-            <vip-component @tabactive="tabActive" :power="conf" type="item_10" :can-free-exp="canFreeExp"
-                           :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
-                           imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/qy-zbtj.png?v={{Msg "seo" "version"}}'>
+                  style="height:5.8rem;background:url('/common-module/collection/image/bg/qy-zbtj-bg.png?v={{Msg "seo" "version"}}') 40% 0 no-repeat;background-size:110% 100%;"
+              key="dt">
+              <vip-component @tabactive="tabActive" :power="conf" type="item_10" :can-free-exp="canFreeExp"
+                            :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                            imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/qy-zbtj.png?v={{Msg "seo" "version"}}'>
+              </vip-component>
+            </div>
+          </div>
+          <!-- <div class="jy-empty" v-show="allNot && !getStatus">
+            <div class="jy-empty-img"></div>
+            <p class="jy-empty-text">对不起,没有匹配到相关信息, <br>修改时间范围或换个搜索词试试吧</p>
+          </div> -->
+          <div class="bg-white tab-card charts"
+              v-if="conf._4 && annualData.rows.length !== 0 && !getStatus">
+            <div class="tab-card-title">年度项目统计</div>
+            <!-- e-charts和sticky同时使用时候,需要手动降低css层级(z-index: 1),确保tooltip不遮挡固定定位头部 -->
+            <div class="tab-card-content">
+              <ve-histogram height="284px" :colors="colorGreen" :data="annualData" :init-options="initEchartsOptions"
+                            :after-config="annualConfig" :settings="annualSetting" :extend="barChart.chartExtend">
+              </ve-histogram>
+            </div>
+            <div class="tab-card-tip">注:项目金额指所有项目的中标金额之和,少数缺失的中标金额,用项目预算补充。</div>
+          </div>
+          <div class="vip_component" v-if="getStatus"
+              style="height:11.12rem;background:url('/common-module/collection/image/bg/vip_bg_2.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_2" :power="conf" :can-free-exp="canFreeExp"
+                          :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_2.png?v={{Msg "seo" "version"}}'>
             </vip-component>
-        </div>
-        </div>
-        <div class="jy-empty" v-show="allNot && !getStatus">
-          <div class="jy-empty-img"></div>
-          <p class="jy-empty-text">对不起,没有匹配到相关信息, <br>修改时间范围或换个搜索词试试吧</p>
-        </div>
-        <div class="vip_component" v-if="getStatus && hideDt"
-             style="height:9.16rem;background:url('/common-module/collection/image/bg/vip_bg_1.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%"
-             key="dt">
-          <vip-component @tabactive="tabActive" :power="conf" type="item_1" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
-                         imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_1.png?v={{Msg "seo" "version"}}'>
-          </vip-component>
-        </div>
-        <div v-else key="dt">
-          <div class="j-container empty" style="padding-bottom: .2rem;"
-               v-if="conf._13 && !conf._4 && topProject.list.length === 0">
-            <div class="j-img img-empty empty-img"></div>
-            <p class="empty-text">暂无项目动态</p>
           </div>
-          <div class="bg-white tab-card cell-list project-news" v-show="conf._13 && topProject.list.length !== 0">
-            <div class="selected-export-box">
-              <div class="selected-export">
-                <div class="select-show-type-group">
-                  <span class="d_title">项目动态</span>
-                </div>
-                <div class="export">
-	                        <span @click="onExport">
-	                            <i class="j-icon base-icon icon-download"></i>
-	                            <em id="mainSearch-selLable-dataExport">数据导出</em>
-	                        </span>
-                </div>
-              </div>
+          <div class="bg-white tab-card charts"
+              v-if="conf._4 && monthZbData.rows.length !== 0 && !getStatus">
+            <div class="tab-card-title">月度中标金额统计</div>
+            <div class="tab-card-content">
+              <ve-line height="284px" :data="monthZbData" :init-options="initEchartsOptions"
+                      :after-config="lineChartConfig" :extend="chartOptions.lineChart">
+              </ve-line>
             </div>
+            <div class="tab-card-tip">注:少数缺失的中标金额,用项目预算补充。</div>
+          </div>
+          <div class="vip_component" v-if="getStatus"
+              style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_3.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_3" :power="conf" :can-free-exp="canFreeExp"
+                          :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_3.png?v={{Msg "seo" "version"}}'>
+            </vip-component>
+          </div>
+          <div class="bg-white tab-card charts"
+              v-if="conf._4 && mapChartData.rows.length !== 0 && !getStatus">
+            <div class="tab-card-title">市场区域分布</div>
             <div class="tab-card-content">
-              <ul class="project-info-list">
-                <li class="project-info-item border-line-b clickable" :class="{ visited: item.visited }" v-for="(item,index) in topProject.list"
-                    @click="toProjectDetail(item)">
-                  <div class="head-group">
-                    <p class="i_title visited-hd">${item.title}</p>
-                    <span class="icon weishoucang" :class="idx.indexOf(item.id) >-1 ? 'shoucang' : 'weishoucang'" @click.stop="addKeepStatus(item)"></span>
-                  </div>
-<!--                  <div class="project-name">${item.title}</div>-->
-                  <div class="project-info">
-                      <span class="tags">
-                        <span class="tag tag-success" v-if="item.area">${item.area}</span>
-                        <span class="tag tag-success" v-if="item.bidstatus">${item.bidstatus}</span>
-                        <span class="tag tag-success" v-if="item.bidamount">${utils.moneyUnit(item.bidamount)}</span>
-                      </span>
-                    <span class="project-time">${item.firsttime ? new Date(item.firsttime * 1000).pattern('yyyy-MM-dd')
-                        : '-'}</span>
-                  </div>
-                </li>
-                <li class="show-more clickable"
-                    v-if="topProject.showGetNextButton && (isMemberAndSvip || canFreeTrial) && topProject.count > 3"
-                    @click="goToFilterProjectNews">查看更多
-                </li>
-              </ul>
+              <ve-map height="400px" :data="mapChartData" :init-options="initEchartsOptions" :after-config="mapConfig"
+                      :settings="mapSettings.chartSettings" :extend="mapSettings.chartExtend">
+              </ve-map>
             </div>
           </div>
-        </div>
-        <div class="bg-white tab-card charts"
-             v-if="conf._4 && annualData.rows.length !== 0 && !getStatus">
-          <div class="tab-card-title">年度项目统计</div>
-          <!-- e-charts和sticky同时使用时候,需要手动降低css层级(z-index: 1),确保tooltip不遮挡固定定位头部 -->
-          <div class="tab-card-content">
-            <ve-histogram height="284px" :colors="colorGreen" :data="annualData" :init-options="initEchartsOptions"
-                          :after-config="annualConfig" :settings="annualSetting" :extend="barChart.chartExtend">
-            </ve-histogram>
+          <div class="vip_component" v-if="getStatus"
+              style="height:10.56rem;background:url('/common-module/collection/image/bg/vip_bg_4.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_4" :power="conf" :can-free-exp="canFreeExp"
+                          :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_4.png?v={{Msg "seo" "version"}}'>
+            </vip-component>
           </div>
-          <div class="tab-card-tip">注:项目金额指所有项目的中标金额之和,少数缺失的中标金额,用项目预算补充。</div>
-        </div>
-        <div class="vip_component" v-if="getStatus"
-             style="height:11.12rem;background:url('/common-module/collection/image/bg/vip_bg_2.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-          <vip-component @tabactive="tabActive" type="item_2" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
-                         imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_2.png?v={{Msg "seo" "version"}}'>
-          </vip-component>
-        </div>
-        <div class="bg-white tab-card charts"
-             v-if="conf._4 && monthZbData.rows.length !== 0 && !getStatus">
-          <div class="tab-card-title">月度中标金额统计</div>
-          <div class="tab-card-content">
-            <ve-line height="284px" :data="monthZbData" :init-options="initEchartsOptions"
-                     :after-config="lineChartConfig" :extend="chartOptions.lineChart">
-            </ve-line>
+          <div class="bg-white tab-card charts"
+              v-if="conf._4 && rateData.rows.length !== 0 && !getStatus">
+            <div class="tab-card-title">各类客户平均折扣率</div>
+            <div class="tab-card-content">
+              <ve-line height="314px" :data="rateData" :init-options="initEchartsOptions" :after-config="rateConfig"
+                      :extend="chartOptions.lineChart">
+              </ve-line>
+            </div>
+            <div class="tab-card-tip">注:平均折扣率=(全部项目预算-全部中标金额)/全部项目预算,是指价格减让部分与原价的比率,仅统计预算和中标金额同时存在的项目。</div>
           </div>
-          <div class="tab-card-tip">注:少数缺失的中标金额,用项目预算补充。</div>
-        </div>
-        <div class="vip_component" v-if="getStatus"
-             style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_3.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-          <vip-component @tabactive="tabActive" type="item_3" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
-                         imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_3.png?v={{Msg "seo" "version"}}'>
-          </vip-component>
-        </div>
-        <div class="bg-white tab-card charts"
-             v-if="conf._4 && mapChartData.rows.length !== 0 && !getStatus">
-          <div class="tab-card-title">市场区域分布</div>
-          <div class="tab-card-content">
-            <ve-map height="400px" :data="mapChartData" :init-options="initEchartsOptions" :after-config="mapConfig"
-                    :settings="mapSettings.chartSettings" :extend="mapSettings.chartExtend">
-            </ve-map>
+          <div class="vip_component" v-if="getStatus"
+              style="height:11.24rem;background:url('/common-module/collection/image/bg/vip_bg_5.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_5" :power="conf" :can-free-exp="canFreeExp"
+                          :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_5.png?v={{Msg "seo" "version"}}'>
+            </vip-component>
           </div>
-        </div>
-        <div class="vip_component" v-if="getStatus"
-             style="height:10.56rem;background:url('/common-module/collection/image/bg/vip_bg_4.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-          <vip-component @tabactive="tabActive" type="item_4" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
-                         imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_4.png?v={{Msg "seo" "version"}}'>
-          </vip-component>
-        </div>
-        <div class="bg-white tab-card charts"
-             v-if="conf._4 && rateData.rows.length !== 0 && !getStatus">
-          <div class="tab-card-title">各类客户平均折扣率</div>
-          <div class="tab-card-content">
-            <ve-line height="314px" :data="rateData" :init-options="initEchartsOptions" :after-config="rateConfig"
-                     :extend="chartOptions.lineChart">
-            </ve-line>
+          <div class="bg-white tab-card charts"
+              v-show="conf._4 && entPortraitInfo.top10 && entPortraitInfo.top10.length != 0 && !getStatus">
+            <div class="tab-card-title">客户类型分布</div>
+            <div class="tab-card-content">
+              <div ref="pieChart" style="height: 360px;width: 320px;margin: 0 auto;"></div>
+            </div>
+            <div class="tab-card-tip">注:各客户类型占比以中标金额计算,最多展示占比排名前十的客户类型。</div>
           </div>
-          <div class="tab-card-tip">注:平均折扣率=(全部项目预算-全部中标金额)/全部项目预算,是指价格减让部分与原价的比率,仅统计预算和中标金额同时存在的项目。</div>
-        </div>
-        <div class="vip_component" v-if="getStatus"
-             style="height:11.24rem;background:url('/common-module/collection/image/bg/vip_bg_5.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-          <vip-component @tabactive="tabActive" type="item_5" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
-                         imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_5.png?v={{Msg "seo" "version"}}'>
-          </vip-component>
-        </div>
-        <div class="bg-white tab-card charts"
-             v-show="conf._4 && entPortraitInfo.top10 && entPortraitInfo.top10.length != 0 && !getStatus">
-          <div class="tab-card-title">客户类型分布</div>
-          <div class="tab-card-content">
-            <div ref="pieChart" style="height: 360px;width: 320px;margin: 0 auto;"></div>
+          <div class="vip_component" v-if="getStatus"
+              style="height:11.92rem;background:url('/common-module/collection/image/bg/vip_bg_6.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_6" :power="conf" :can-free-exp="canFreeExp"
+                          :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_6.png?v={{Msg "seo" "version"}}'>
+            </vip-component>
           </div>
-          <div class="tab-card-tip">注:各客户类型占比以中标金额计算,最多展示占比排名前十的客户类型。</div>
-        </div>
-        <div class="vip_component" v-if="getStatus"
-             style="height:11.92rem;background:url('/common-module/collection/image/bg/vip_bg_6.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-          <vip-component @tabactive="tabActive" type="item_6" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
-                         imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_6.png?v={{Msg "seo" "version"}}'>
-          </vip-component>
-        </div>
-        <div class="bg-white tab-card customers client"
-             v-show="conf._4 && importantCustomers.length !== 0 && !getStatus">
-          <div class="tab-card-title">重点及首次合作客户</div>
-          <div class="tab-card-content">
-            <div class="client-list" v-for="c in importantCustomers">
-              <div class="c-top">
-                <strong class="c-itemName">${c.title}</strong>
-                <div class="top-switch">
-                  <div :class="{active: !c.showLabels}" @click="c.showLabels=false">重点客户</div>
-                  <div :class="{active: c.showLabels}" @click="c.showLabels=true">首次合作客户</div>
-                </div>
-              </div>
-              <div class="progress-bar-container" v-show="!c.showLabels">
-                <div class="c-thead">
-                  <strong class="c-name">客户名称</strong>
-                  <span class="c-count">中标数量</span>
-                  <span class="c-rate">平均折扣率</span>
-                  <span class="c-time">最近合作日期</span>
-                </div>
-                <div class="progress-bar-item" v-for="(item,index) in c.list" :key="index" v-show="item.name">
-                  <div class="item-label">
-                    <span class="ellipsis-2 item-name" @click="toUnitPortrayal(item)">${item.name}</span>
-                    <span class="item-count">${item.count ? item.count + '个' : item.count}</span>
-                    <span class="item-rate">${(item.rate != null) ? item.rate + '%' : '--'}</span>
-                    <span class="item-time">${item.time}</span>
-                  </div>
-                  <div class="item-progress">
-                    <span class="item-money" v-if="item.money > 0">${utils.moneyUnit(item.money)}</span>
-                    <span class="item-progress-count active-progress" :style="{width: item.percent}"></span>
+          <div class="bg-white tab-card customers client"
+              v-show="conf._4 && importantCustomers.length !== 0 && !getStatus">
+            <div class="tab-card-title">重点及首次合作客户</div>
+            <div class="tab-card-content">
+              <div class="client-list" v-for="c in importantCustomers">
+                <div class="c-top">
+                  <strong class="c-itemName">${c.title}</strong>
+                  <div class="top-switch">
+                    <div :class="{active: !c.showLabels}" @click="c.showLabels=false">重点客户</div>
+                    <div :class="{active: c.showLabels}" @click="c.showLabels=true">首次合作客户</div>
                   </div>
                 </div>
-              </div>
-              <div class="progress-bar-container" v-show="c.showLabels">
-                <div v-if="c.firstList&&c.firstList.length>0">
+                <div class="progress-bar-container" v-show="!c.showLabels">
                   <div class="c-thead">
-                  <strong class="c-name">客户名称</strong>
-                  <span class="c-count">中标数量</span>
-                  <span class="c-rate">平均折扣率</span>
-                  <span class="c-time">最近合作日期</span>
-                </div>
-                  <div class="progress-bar-item" v-for="(item,index) in c.firstList" :key="index" v-show="item.name">
-                  <div class="item-label">
-                    <span class="ellipsis-2 item-name" @click="toUnitPortrayal(item)">${item.name}</span>
-                    <span class="item-count">${item.count ? item.count + '个' : item.count}</span>
-                    <span class="item-rate">${(item.rate != null) ? item.rate + '%' : '--'}</span>
-                    <span class="item-time">${item.time}</span>
+                    <strong class="c-name">客户名称</strong>
+                    <span class="c-count">中标数量</span>
+                    <span class="c-rate">平均折扣率</span>
+                    <span class="c-time">最近合作日期</span>
                   </div>
-                  <div class="item-progress">
-                    <span class="item-money" v-if="item.money > 0">${utils.moneyUnit(item.money)}</span>
-                    <span class="item-progress-count active-progress" :style="{width: item.percent}"></span>
+                  <div class="progress-bar-item" v-for="(item,index) in c.list" :key="index" v-show="item.name">
+                    <div class="item-label">
+                      <span class="ellipsis-2 item-name" @click="toUnitPortrayal(item)">${item.name}</span>
+                      <span class="item-count">${item.count ? item.count + '个' : item.count}</span>
+                      <span class="item-rate">${(item.rate != null) ? item.rate + '%' : '--'}</span>
+                      <span class="item-time">${item.time}</span>
+                    </div>
+                    <div class="item-progress">
+                      <span class="item-money" v-if="item.money > 0">${utils.moneyUnit(item.money)}</span>
+                      <span class="item-progress-count active-progress" :style="{width: item.percent}"></span>
+                    </div>
                   </div>
                 </div>
-                </div>
-                <div v-else style="display:flex;flex-direction:column;justify-content:center;align-items:center;padding:.4rem;">
-                  <div style="height:4rem;width:4rem;background:url('/common-module/collection/image/jy-back.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%"></div>
-                  <span style="font-size: .28rem;line-height: 20px;color: #9B9CA3;">该时间范围暂无首次合作过的客户</span>
+                <div class="progress-bar-container" v-show="c.showLabels">
+                  <div v-if="c.firstList&&c.firstList.length>0">
+                    <div class="c-thead">
+                    <strong class="c-name">客户名称</strong>
+                    <span class="c-count">中标数量</span>
+                    <span class="c-rate">平均折扣率</span>
+                    <span class="c-time">最近合作日期</span>
+                  </div>
+                    <div class="progress-bar-item" v-for="(item,index) in c.firstList" :key="index" v-show="item.name">
+                    <div class="item-label">
+                      <span class="ellipsis-2 item-name" @click="toUnitPortrayal(item)">${item.name}</span>
+                      <span class="item-count">${item.count ? item.count + '个' : item.count}</span>
+                      <span class="item-rate">${(item.rate != null) ? item.rate + '%' : '--'}</span>
+                      <span class="item-time">${item.time}</span>
+                    </div>
+                    <div class="item-progress">
+                      <span class="item-money" v-if="item.money > 0">${utils.moneyUnit(item.money)}</span>
+                      <span class="item-progress-count active-progress" :style="{width: item.percent}"></span>
+                    </div>
+                  </div>
+                  </div>
+                  <div v-else style="display:flex;flex-direction:column;justify-content:center;align-items:center;padding:.4rem;">
+                    <div style="height:4rem;width:4rem;background:url('/common-module/collection/image/jy-back.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%"></div>
+                    <span style="font-size: .28rem;line-height: 20px;color: #9B9CA3;">该时间范围暂无首次合作过的客户</span>
+                  </div>
                 </div>
               </div>
             </div>
           </div>
-        </div>
-        <div class="vip_component" v-if="getStatus"
-             style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_7.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-          <vip-component @tabactive="tabActive" type="item_7" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
-                         imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_7.png?v={{Msg "seo" "version"}}'>
-          </vip-component>
-        </div>
+          <div class="vip_component" v-if="getStatus"
+              style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_7.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_7" :power="conf" :can-free-exp="canFreeExp"
+                          :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_7.png?v={{Msg "seo" "version"}}'>
+            </vip-component>
+          </div>
+        </template>
       </van-tab>
     </van-tabs>
     <div class="j-main project-tab-container" v-if="conf.powerLoaded && !conf.showPortraitAll">
       <div class="j-container empty" v-show="topProject.list.length === 0">
         <div class="j-img img-empty empty-img"></div>
-        <p class="empty-text">暂无项目动态</p>
+        <p class="empty-text">暂无中标动态</p>
       </div>
       <div class="j-container bg-white tab-card cell-list" v-show="topProject.list.length !== 0">
-        <div class="j-header tab-card-title">项目动态</div>
+        <div class="j-header tab-card-title">中标动态</div>
         <div class="j-main tab-card-content">
           <ul class="project-info-list">
             <li class="project-info-item border-line-b clickable" :class="{ visited: item.visited }" v-for="(item,index) in topProject.list"

+ 17 - 6
src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait_change.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="zh-CN" style="font-size: 50px;">
 <head>
-    <title>企业情报历史记录</title>
+    <title>工商变动</title>
 
     <!--引入公共资源头部-->
     {{include "/big-member/meta.html"}}
@@ -37,11 +37,11 @@
 <div class="j-container">
     {{include "/big-member/header.html"}}
     <div id="ent-portrait-change" class="j-main" v-cloak>
-        <div class="j-container empty" v-if="changeList.length === 0 && getStatus" key="changeList">
+        <div class="j-container empty" v-if="noData" key="changeList">
             <div class="j-img img-empty empty-img"></div>
-            <p class="empty-text">暂无企业情报历史记录</p>
+            <p class="empty-text">暂无工商变动</p>
         </div>
-        <div class="vip_component bigVip_com" v-if="!getStatus" style="height:100%;background:url('/common-module/collection/image/bg/vip_bg_8.png') no-repeat;background-size:100% 100%">
+        <div class="vip_component bigVip_com" v-if="!hasPower && powerInfoLoaded" style="height:100%;background:url('/common-module/collection/image/bg/vip_bg_8.png') no-repeat;background-size:100% 100%">
             <vip-component type="item_8" :power="conf" :vipststus="vipststus" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_8.png' :islogin="isLogin"></vip-component>
         </div>
         <ul class="ent-change-list" v-else key="changeList">
@@ -89,12 +89,14 @@ var vNode = {
     data: {
         eId: '',
         changeList: [],
+        changeListLoaded: false,
         entvisit: {
             total: 0, // 本月画像次数总量
             usage: 0, // 本月已使用次数
             provin: 0 // 购买省份数量
         },
         powerInfo: {},
+        powerInfoLoaded: false,
         conf: {
             _12: false,
             isMember: 0
@@ -115,7 +117,10 @@ var vNode = {
         this.getEntHistory()
     },
     computed: {
-        getStatus: function () {
+        noData: function () {
+            return this.changeList.length === 0 && this.changeListLoaded && this.hasPower
+        },
+        hasPower: function () {
             // 超级订阅用户没有企业情报监控权限,显示购买页
             return this.conf._12 && this.isLogin
         }
@@ -146,12 +151,15 @@ var vNode = {
                             }
                         }
                         if (power.indexOf(12) != -1) {
-                            // 获取企业情报历史记录-12
+                            // 获取企业情报历史记录(工商变动)-12
                             _this.conf._12 = true
                             $('.bigVip_com').css({'display':'flex'})
                         }
                         _this.conf.isMember = res.data.memberStatus
                     }
+                },
+                complete: function () {
+                    _this.powerInfoLoaded = true
                 }
             })
         },
@@ -204,6 +212,9 @@ var vNode = {
                 },
                 error: function (error) {
                     console.log(error)
+                },
+                complete: function () {
+                    _this.changeListLoaded = true
                 }
             })
         },

+ 12 - 3
src/jfw/modules/app/src/web/templates/big-member/page_free_high_set.html

@@ -32,6 +32,10 @@
       flex: 1;
       overflow: auto;
     }
+    /* 解决行业和采购单位选择器的滚动问题 */
+    .van-tabs.unitType {
+      height: 50vh;
+    }
   </style>
 </head>
 
@@ -71,9 +75,10 @@
             <van-cell title="项目搜索范围" is-link :value="conf.scope" @click="popClick('scope')"></van-cell>
             <van-cell class="area-class" title="项目地区" is-link :value="conf.area" @click="popClick('area')"></van-cell>
             <van-cell title="行业" is-link :value="conf.industry" @click="popClick('industry')"></van-cell>
+            <van-cell title="采购单位类型" v-if="showBuyerClassCell" is-link :value="conf.buyerclass" @click="popClick('buyerclass')"></van-cell>
           </div>
           <div class="years-container">
-            <span class="year-label">分析年份</span>
+            <span class="year-label">发布时间</span>
             <van-field class="year-input" :class="conf.start ? 'border-active' : ''" v-model="conf.start" readonly @click="popClick('start')"></van-field>
             <em style="color: #ccc;">—</em>
             <van-field class="year-input"  :class="conf.end ? 'border-active' : ''" v-model="conf.end" readonly @click="popClick('end')"></van-field>
@@ -82,7 +87,7 @@
         <div class="j-footer">
           <div class="j-button-group">
             <button class="j-button-cancel" @click="onReset">重置</button>
-            <button class="j-button-confirm" :disabled="disabledConfirm" @click="startStatistic">开始分析</button>
+            <button class="j-button-confirm" :disabled="disabledConfirm" @click="startStatistic">确定</button>
           </div>
         </div>
         <van-popup 
@@ -102,7 +107,10 @@
               <area-component class="j-main fix-ios-scroll" :class="{'hide-all': filterInitData.areaArr.length == 2}" ref="projectAreaSelector" :selectarealist="selectAreaList" @cancel="onCancel" @confirm="onConfirm"></area-component>
             </div>
             <div v-show="popInfo.type == 'industry'">
-              <industry-component class="j-main fix-ios-scroll" ref="industryCom" :selectindustrylist="selectIndustryList" onlyshowsome= "true" @cancel="onCancel" @confirm="onConfirm"></industry-component>
+              <industry-component class="j-main fix-ios-scroll" ref="industryCom" :selectindustrylist="selectIndustryList" onlyshowsome @cancel="onCancel" @confirm="onConfirm"></industry-component>
+            </div>
+            <div v-show="popInfo.type == 'buyerclass'">
+              <buyerclass-component class="j-main fix-ios-scroll" ref="buyerclassCom" :selected-list="selectedBuyerclassList" @cancel="onCancel" @confirm="onConfirm"></industry-component>
             </div>
             <div v-show="popInfo.type == 'start'">
               <years-component ref="yearsItem" type="start" :cur-year="conf.start" :years="startRange" @cancel="onCancel" @confirm="onConfirm"></years-component>
@@ -135,6 +143,7 @@
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/date-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/area-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/industry-mobile.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/buyerclass-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/years-picker-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/big-member/js/high_set.js?v={{Msg "seo" "version"}}'></script>
 </body>

+ 1 - 1
src/web/staticres/big-member/js/ent_portrait.js

@@ -105,7 +105,7 @@ var vNode = {
         }
     },
     created: function () {
-        // svip是超级订阅企业查询, 如果是超级订阅不能查看企业情报历史记录
+        // svip是超级订阅企业查询, 如果是超级订阅不能查看企业情报历史记录(工商变动)
         var svip = utils.getParam('svip')
         if (svip) {
             this.svip = true

+ 134 - 18
src/web/staticres/big-member/weixin/css/ent_portrait.css

@@ -1,4 +1,4 @@
-/* 企业情报详情 + 企业情报历史记录 css */
+/* 企业情报详情 + 企业情报历史记录(工商变动) css */
 .j-main [class$=-label] {
     font-size: .24rem;
     line-height: .36rem;
@@ -34,10 +34,64 @@
 /* 企业情报详情 */
 .ent-header {
     /* min-height: 1.08rem; */
-    margin-bottom: .2rem;
     padding: .28rem .36rem;
     background-color: #fff;
 }
+
+
+.van-sticky .van-tabs__line {
+    display: none;
+}
+.van-sticky .van-tab {
+    flex-shrink: 0;
+    flex-grow: 0;
+    display: inline-block;
+    margin-right: .32rem;
+    height: .52rem;
+    padding: 0 .24rem;
+    color: #5F5E64;
+    font-size: 0.26rem;
+    line-height: 0.52rem;
+    border-radius: 0.3rem;
+    border: 1px solid #C0C4CC;
+}
+.van-sticky:not(.van-sticky--fixed) .van-tab {
+    margin-bottom: .24rem;
+}
+.van-sticky .van-tab--active {
+    color: #fff!important;
+    background-color: #2ABED1;
+    border-color: #2ABED1;
+}
+
+.van-sticky:not(.van-sticky--fixed) .van-tabs__wrap--scrollable .van-tabs__nav {
+    display: flex;
+    flex-wrap: wrap;
+    overflow: unset;
+}
+.van-sticky:not(.van-sticky--fixed) .van-tabs__wrap {
+    height: unset;
+}
+.van-sticky--fixed {
+    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+    box-shadow: 0px 2px 8px 0px rgba(54, 147, 179, 0.05);
+}
+.van-sticky--fixed .van-tabs__nav {
+    align-items: center;
+}
+.van-tab__pane {
+    margin-top: .24rem;
+}
+
+/* 解决首个tab点击后,定位顶部空白问题 */
+.ent-tabs-container > div {
+    height: unset!important;
+    min-height: 50px;
+}
+.van-tabs__nav--line {
+    padding-bottom: 4px;
+}
+
 .ent-title {
     flex: 1;
     margin: 0 .2rem;
@@ -55,6 +109,7 @@
 .ent-tabs-container {
     flex: 1;
 }
+
 .ent-tabs-container .van-tabs__content {
     /* @extends  .j-main */
     flex: 1;
@@ -67,12 +122,7 @@
     font-size: .28rem;
     line-height: .4rem;
 }
-.van-tabs--line .van-tabs__wrap {
-    height: .96rem;
-}
-.van-tabs__line {
-    margin-bottom: .08rem;
-}
+
 .single-tab .van-tabs__line {
     display: none;
 }
@@ -151,6 +201,7 @@
 }
 
 .ent-change-history {
+    margin: .24rem 0;
     flex-direction: row;
     justify-content: space-between;
     padding: .3rem .32rem;
@@ -190,6 +241,7 @@
     font-size: .2rem;
     line-height: .28rem;
     color: #C0C4CC;
+    white-space: nowrap;
 }
 
 .project-info-item {
@@ -328,7 +380,7 @@
 }
 
 
-/* 企业情报历史记录 css */
+/* 企业情报历史记录(工商变动) css */
 .ent-change-list .header-time {
     display: flex;
     align-items: center;
@@ -390,14 +442,40 @@
     text-decoration: underline;
     margin-right: .08rem;
 }
-.win-analyse{
+.module-title-container {
   display: flex;
   align-items: center;
   justify-content: space-between;
   padding: .24rem .32rem;
-  margin-top: .24rem;
   background: #fff;
+  width: 100%;
 }
+.module-title-container.pb-12 {
+    padding-bottom: .12rem;
+}
+.module-title-container .action-group {
+    display: flex;
+    align-items: center;
+}
+.module-title-container .action-group .action-button {
+    display: flex;
+    align-items: center;
+}
+.module-title-container .action-group .action-button:not(:last-of-type) {
+    margin-right: .24rem;
+}
+
+.module-title-container .action-group .action-button-text {
+    color: #2ABED1;
+}
+
+.action-group .j-icon {
+    margin-right: .08rem;
+    width: .32rem;
+    height: .32rem;
+}
+
+.module-title,
 .win-bid-title{
   position: relative;
   padding-left: .16rem;
@@ -405,6 +483,7 @@
   font-size: .36rem;
   line-height: .52rem;
 }
+.module-title::after,
 .win-bid-title::after{
   position: absolute;
   content: '';
@@ -416,15 +495,52 @@
   top: 50%;
   transform: translateY(-50%);
 }
-.win-analyse .high-link{
-  display: flex;
-  align-items: center;
-  color: #2abed1;
-  font-size: .28rem;
+
+.module-title-num {
+    color: #2abed1;
+}
+
+.tip-text2 {
+    color: #9B9CA3;
 }
-.win-analyse .high-link > span{
-  margin-right: .08rem;
+
+.ent-info-detail .tab-card {
+    margin-top: 0;
+    padding-top: 0;
+}
+
+.module-notice-tip {
+    padding: 0 .32rem;
+    padding-bottom: 0.24rem;
+    color: #9B9CA3;
+    font-size: 0.24rem;
+    line-height: 0.28rem;
 }
+.zb-analysis-tab > .tab-card,
+.zb-analysis-tab .vip_component {
+    margin-top: .08rem;
+}
+.vip-ent-portrait-balance {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: .26rem .36rem;
+    line-height: 0.36rem;
+    background: linear-gradient(180deg, #F0FDFF 0%, #FFF 100%, #FFF 100%);
+}
+.bid_upgrade {
+    flex: none;
+    width: 1.28rem;
+    height: .48rem;
+    color: #fff;
+    font-size: 0.24rem;
+}
+
+.bid_surplus {
+    font-size: .26rem;
+    color: #2abed1;
+}
+
 
 .c-top, .top-switch {
   display: flex;

+ 28 - 3
src/web/staticres/common-module/big-member/js/high_set.js

@@ -36,6 +36,7 @@ var highSet = new Vue({
   delimiters: ['${', '}'],
   el: '#high-set',
   components: {
+    buyerclassComponent: buyerclassComponent,
     popupSelectComponent: popupSelectComponent,
     areaComponent: areaComponent,
     industryComponent: industryComponent,
@@ -44,12 +45,14 @@ var highSet = new Vue({
   },
   data() {
     return {
+      from: '', // ent_portrait/unit_portrayal
       conf: {
+        buyerclass: '全部',
         keywords: '',
         scope: '项目名称/标的物',
         area: '全国',
         industry: '全部',
-        start: new Date().getFullYear() - 2,
+        start: 2018,
         end: new Date().getFullYear(),
         match: 0
       },
@@ -69,6 +72,7 @@ var highSet = new Vue({
       },
       selectAreaList: ['全国'],
       selectIndustryList: [],
+      selectedBuyerclassList: [],
       selectScopeList: ['purchasing'],
       matchTypeList: matchTypeList,
       startRange: [],
@@ -109,6 +113,9 @@ var highSet = new Vue({
       var key = this.conf.keywords
       return key && key.replace(/^\s\s*/, '').indexOf(' ') > -1
     },
+    showBuyerClassCell: function () {
+      return this.from === 'ent_portrait'
+    },
     filterInfoUrl: function () {
       var urlMap = {
         'isMember': {
@@ -128,6 +135,7 @@ var highSet = new Vue({
   created() {
     var eid = utils.getParam('eid')
     var reqSign = utils.getParam('reqSign')
+    this.from = utils.getParam('from')
     var entName = decodeURIComponent(utils.getParam('entName'))
     var winnerStorage = JSON.parse(sessionStorage.getItem('winner_high_set'))
     var buyerStorage = JSON.parse(sessionStorage.getItem('buyer_high_set'))
@@ -206,14 +214,17 @@ var highSet = new Vue({
       this.conf.start = timeRange[0]
       this.conf.end = timeRange[1]
       this.conf.match = data.exactMatch
+      this.conf.buyerclass = data.buyerClass || '全部'
       this.selectAreaList = data.area ? data.area.split(',') : ['全国']
       this.selectScopeList = data.matchRange.split(',')
       this.selectIndustryList = data.scopeClass.split(',')
+      this.selectedBuyerclassList = data.buyerClass.split(',')
     },
     // 取近四年的年份
     getCurFourYears: function () {
       var endYear = new Date().getFullYear()
-      var startYear = endYear - 4
+      // var startYear = endYear - 4
+      var startYear = 2018
       var years = []
       for (var i = startYear; i <= endYear; i++) {
         years.push(i + '年')
@@ -297,6 +308,11 @@ var highSet = new Vue({
           this.initSelector(this.filterInitData)
           this.popInfo.title = '请选择行业'
           break;
+        case 'buyerclass':
+          this.popInfo.show = true
+          this.initSelector(this.filterInitData)
+          this.popInfo.title = '请选择采购单位类型'
+          break;
         case 'start':
           this.popInfo.show = true
           this.initSelector()
@@ -454,6 +470,13 @@ var highSet = new Vue({
         } else if (data.type === 'end') {
           this.conf.end = data.data
         }
+      } else if (data.name === 'buyerclassItem') {
+        this.selectedBuyerclassList = data.data
+        if (data.data.length === 0) {
+          this.conf.buyerclass = '全部'
+        } else {
+          this.conf.buyerclass = data.data.join(',')
+        }
       } else {
         return console.log('暂无数据')
       }
@@ -481,6 +504,7 @@ var highSet = new Vue({
         matchRange: arr.join(','),
         area: conf.area.indexOf('全国') > -1 ? '' : conf.area,
         scopeClass: conf.industry.indexOf('全部') > -1 ? '' : conf.industry,
+        buyerClass: conf.buyerclass.indexOf('全部') > -1 ? '' : conf.buyerclass,
         timeRange: conf.start.replace('年', '') + '_' + conf.end.replace('年', '')
       }
       if (this.entInfo.entName) {
@@ -498,12 +522,13 @@ var highSet = new Vue({
       this.conf.scope = '项目名称/标的物'
       this.conf.area = '全国'
       this.conf.industry = '全部'
-      this.conf.start = new Date().getFullYear() - 2
+      this.conf.start = 2018
       this.conf.end = new Date().getFullYear()
       this.conf.match = 0
       this.filterInitData.area = []
       this.selectAreaList = ['全国']
       this.selectIndustryList = []
+      this.selectedBuyerclassList = []
       this.selectScopeList = ['purchasing']
     }
   }

+ 6 - 0
src/web/staticres/common-module/collection/css/index.css

@@ -1473,6 +1473,12 @@
   margin-top: .12rem;
   text-align: center;
 }
+.empty-container .tip-text2 {
+    color: #9B9CA3;
+    font-size: .26rem;
+    line-height: .4rem;
+    text-align: center;
+}
 
 .empty-container .image {
   width: 4rem;

BIN
src/web/staticres/common-module/collection/image/bg/qy-zbtj-bg.png


BIN
src/web/staticres/common-module/collection/image/bg/qy-zbtj.png


BIN
src/web/staticres/common-module/collection/image/bg/vip_bg_1.png


BIN
src/web/staticres/common-module/collection/image/bg/vip_ex_1.png


+ 377 - 0
src/web/staticres/common-module/collection/js/buyerclass-mobile.js

@@ -0,0 +1,377 @@
+var buyerclassComponentTemplate = `<div class="j-container">
+<div class="j-main">
+  <div class="unitTab">
+    <van-tabs type="card" class="unitType" v-model="active">
+      <van-tab title="全部">
+        <van-cell-group>
+          <van-cell
+          clickable
+          type="primary"
+          title="全选"
+          :class="{checkActive:checkedAll==true}"
+          @click="checkBoxAll"
+          >
+          <template #right-icon>
+            <van-checkbox checked-color="#2ABED1" :bind-group="false" v-model="checkedAll"></van-checkbox>
+          </template>
+          </van-cell>
+        </van-cell-group>
+      </van-tab>
+      <van-tab v-for="(item, index) in tablist" :key="index">
+        <template #title>
+          <div class="tabtitle">
+            {{Object.keys(item)[0]}}
+          </div>
+          <div class="optionnum" v-show="selectNum(item)!=0">{{selectNum(item)}}/{{item[Object.keys(item)[0]].length}}</div>
+        </template>
+        <van-cell
+            clickable
+            title="全选"
+            :class="{checkActive:item[Object.keys(item)[1]]==true}"
+            @click="checkAll(item)"
+            >
+            <template #right-icon>
+              <van-checkbox checked-color="#2ABED1" :bind-group="false" v-model="item[Object.keys(item)[1]]"></van-checkbox>
+            </template>
+        </van-cell>
+        <van-cell-group>
+          <van-cell
+            v-for="(iitem, i) in item[Object.keys(item)[0]]"
+            clickable
+            label-disabled="false"
+            :key="i"
+            :class="{checkActive:iitem.type==true}"
+            :title="iitem.name"
+            @click="toggleCheck(iitem, item)"
+          >
+            <template #right-icon>
+              <van-checkbox checked-color="#2ABED1" :bind-group="false" v-model="iitem.type" :name="iitem.name" ref="checkboxes" />
+            </template>
+          </van-cell>
+        </van-cell-group>
+      </van-tab>
+    </van-tabs>
+  </div>
+</div>
+<div class="j-footer">
+  <div class="j-button-group">
+    <button class="j-button-cancel" @click="resetAll">重置</button>
+    <button class="j-button-confirm" :disabled="canClick"  @click="onConfirm">确认</button>
+  </div>
+</div>
+</div>
+`
+
+var buyerclassSourceMap = {
+  "党政机关事业单位": [
+    '人大', '政协', '党委办', '组织', '宣传', '统战', '纪委',
+    '政府办', '发改委', '财政', '教育', '科技', '工信', '民政',
+    '民宗', '人社', '公安', '检察院', '法院', '司法', '应急管理',
+    '军队', '自然资源', '生态环境', '住建', '市政', '城管', '交通',
+    '水利', '农业', '气象', '文旅', '卫健委', '医疗', '学校', '档案',
+    '体育', '政务中心', '机关事务', '国资委', '海关', '税务', '市场监管',
+    '商务', '人行', '银保监', '证监', '审计', '出版广电', '统计', '公共资源交易', '社会团体'
+  ],
+  "企业": [
+    '传媒', '采矿业', '电信行业', '金融业', '建筑业', '能源化工',
+    '农林牧渔', '批发零售', '信息技术', '运输物流', '制造业', '住宿餐饮'
+  ]
+}
+
+var buyerclassComponent = {
+  name: 'buyerclass-mobile',
+  props: {
+    // 默认选中列表
+    selectedList: {
+      type: Array,
+      default: function () {
+        return []
+      }
+    },
+    onlyshowsome: {
+      type: Boolean,
+      default: false
+    },
+    isAll: {
+      type: Boolean,
+      default: false
+    }
+  },
+  template: buyerclassComponentTemplate,
+  data:function () {
+    return {
+      tablist: [],
+      checkedAll: false,
+      canClick: true,
+      buyerclassData: []
+    }
+  },
+  computed: {
+    active: function() {
+      return 1
+    }
+  },
+  mounted () {
+    this.getSourceList()
+    this.getbBtnClick()
+  },
+  methods: {
+    // 获取基础数据
+    getSourceList: function(datas){
+      var sourceMap = buyerclassSourceMap
+      var sourceList = []
+      for (var key in sourceMap) {
+        sourceList.push({
+          [key]: sourceMap[key]
+        })
+      }
+      this.buyerclassData = sourceList
+      this.formatBuyerclassData(datas)
+    },
+    formatBuyerclassData: function(datas) {
+      if (!this.onlyshowsome && !datas) {
+        datas = this.buyerclassData
+      }
+      if (!datas) return
+      let maxarr = []
+      datas.forEach(function(item,index) {
+        let minarr = []
+        let keyname = Object.keys(item)[0]
+        let eachArr = item[Object.keys(item)[0]]
+        eachArr.forEach(function(data, i){
+          data = {
+            name: data,
+            type: false
+          }
+          minarr.push(data)
+        })
+        let obj = {
+          [keyname]: minarr,
+          type: false
+        }
+        maxarr.push(obj)
+      })
+      this.tablist = maxarr
+      this.setState()
+    },
+    getParentWithChildName: function (childName) {
+      var parentName = ''
+      for (var key in buyerclassSourceMap) {
+        if (buyerclassSourceMap[key].indexOf(childName) === -1) {
+          continue
+        } else {
+          parentName = key
+          break
+        }
+      }
+      return parentName
+    },
+    // 回显数据
+    setState: function(data) {
+      var _this = this
+      let indArr = data ? data : this.selectedList
+      let newindArr = []
+      let bool = true
+      if(indArr && indArr.length == 0) {
+        this.tablist.forEach(function(item){
+          item[Object.keys(item)[0]].forEach(function(data) {
+            data.type = false
+          })
+        })
+        this.canClick = bool
+      } else {
+        if(JSON.stringify(indArr) !== "{}") {
+          indArr.forEach(function(sum) {
+            newindArr.push({
+              key: _this.getParentWithChildName(sum),
+              value:sum
+            })
+          })
+          this.tablist.forEach(function(item){
+            item[Object.keys(item)[0]].forEach(function(data) {
+              newindArr.forEach(function(sum) {
+                if(data.name == sum.value && Object.keys(item)[0] == sum.key) {
+                  data.type = true
+                  bool = false
+                }
+              })
+            })
+          })
+        }
+        this.canClick = bool
+      }
+      // this.checkSelectedAll()
+    },
+    // 检查是否全选
+    checkSelectedAll: function () {
+      this.tablist.forEach(function(item){
+        var children = item[Object.keys(item)[0]]
+        var childrenState = []
+        children.forEach(function(child) {
+          childrenState.push(child)
+        })
+
+        if (childrenState.indexOf(false) === -1) {
+          // 已全选
+          item.type = true
+        } else {
+          item.type = false
+        }
+      })
+    },
+    // 总全选
+    checkBoxAll:function() {
+      if(this.checkedAll){
+        this.tablist.forEach(function(item, index){
+          item[Object.keys(item)[0]].forEach(function(data, i){
+            item.type = false
+            data.type = false
+          })
+        })
+        this.checkedAll = false
+      }else{
+        this.tablist.forEach(function(item, index){
+          item[Object.keys(item)[0]].forEach(function(data, i){
+            item.type = true
+            data.type = true
+          })
+        })
+        this.checkedAll = true
+      }
+      this.getbBtnClick()
+    },
+    // 模块全选
+    checkAll: function(data){
+      let selectBool = data[Object.keys(data)[1]]
+      let dataArr = data[Object.keys(data)[0]]
+      console.log(selectBool, dataArr)
+      if(selectBool) {
+        data[Object.keys(data)[1]] = false
+        dataArr.forEach(function(item, index){
+          item.type = false
+        })
+      }else{
+        data[Object.keys(data)[1]] = true
+        dataArr.forEach(function(item, index){
+          item.type = true
+        })
+      }
+      this.getbBtnClick()
+    },
+    // 模块单选
+    toggleCheck: function (data, item) {
+      if(data.type){
+        data.type = false
+      }else{
+        data.type = true
+        this.selectNum(item)
+      }
+      // 模块全部选中,全选自动勾选
+      const allselect = item[Object.keys(item)[0]].some(function(sum, index){
+        if(sum.type == false){
+          return true
+        }
+      })
+      item[Object.keys(item)[1]] = !allselect
+
+      // 只要有一个没有选中,总全选不勾选
+      let selectAll = this.tablist.some(function(itemall, index){
+        if(itemall.type == false) {
+          return true
+        }
+      })
+      this.checkedAll = !selectAll
+      this.getbBtnClick()
+    },
+    // 选择的数量
+    selectNum: function(item) {
+      let numArr = []
+      item[Object.keys(item)[0]].forEach(function(data) {
+        if(data.type) {
+          numArr.push(data.type)
+        }
+      })
+      return numArr.length
+    },
+    // 只要有一个选中,确认按钮可点击
+    getbBtnClick: function() {
+      let boolnum = -1
+      let boolArr = []
+      this.tablist.forEach(function(itemall, index){
+        itemall[Object.keys(itemall)[0]].forEach(function(data) {
+          let bool = true
+          if(data.type) {
+            // console.log(data)
+            bool = false+''
+          }
+          boolArr.push(bool)
+        })
+      })
+      boolnum = boolArr.indexOf('false')
+      if (boolnum == -1) {
+        this.canClick = true
+      } else {
+        this.canClick = false
+      }
+    },
+    resetAll:function() {
+      this.canClick = true
+      let params = {
+        name: 'buyerclassItem',
+        data: ''
+      }
+      this.setState()
+      this.$emit('cancel', params)
+      return params
+    },
+    getSelected: function () {
+      var selected = {}
+      this.tablist.forEach(function(item, index){
+        var key = Object.keys(item)[0]
+        item[key].forEach(function(data, i) {
+          if(data.type){
+            if (selected[key]) {
+              selected[key] = selected[key].concat([data.name])
+            } else {
+              selected[key] = [data.name]
+            }
+          }
+        })
+      })
+      return selected
+    },
+    // 确定按钮
+    onConfirm:function() {
+      let buyerclassArr = []
+      let t = ''
+      this.tablist.forEach(function(item, index){
+        item[Object.keys(item)[0]].forEach(function(data, i) {
+          if(data.type){
+            // let str = Object.keys(item)[0] +'_'+data.name
+            str = data.name
+            buyerclassArr.push(str)
+          }
+        })
+      })
+      t = '采购单位类型' + buyerclassArr.length
+      let params = {
+        name: 'buyerclassItem',
+        data: buyerclassArr,
+        detail: this.getSelected(),
+        t: t
+      }
+      if(this.isAll) {
+        if(this.checkedAll) {
+          params = {
+            name: 'buyerclassItem',
+            data: [],
+            detail: {},
+            t: t
+          }
+        }
+      }
+      this.$emit('confirm', params)
+      return params
+    }
+  }
+}

+ 99 - 58
src/web/staticres/common-module/collection/js/ent_portrait.js

@@ -29,12 +29,36 @@ var vNode = {
         _4: false,
         // 是否显示中标企业动态
         _13: false,
+        // 是否有企业情报历史记录(工商变动)权限
+        _12: false,
         isMember: 0, // 是否是大会员
         arr: [], // 权限列表
         vipStatus: 0 // 是否是超级订阅
       },
+      moduleList: [
+        {
+          title: '工商信息',
+          name: '1',
+        },
+        {
+          title: '工商变动',
+          name: '2',
+        },
+        {
+          title: '企业通讯录',
+          name: '3',
+        },
+        {
+          title: '中标动态',
+          name: '4',
+        },
+        {
+          title: '中标分析',
+          name: '5',
+        },
+      ],
       powerInfo: {},
-      tabActiveName: '',
+      tabActiveName: '1',
       // 企业信息
       entInfo: {
         name: '',
@@ -44,6 +68,9 @@ var vNode = {
       },
       // tab1中的企业基础信息
       entBaseInfo: {
+        _loaded: false, // 请求完成
+        _empty: true,
+
         type: null,
         status: null,
         creditNo: '',
@@ -63,6 +90,7 @@ var vNode = {
       },
       // tab2中的项目动态
       topProject: {
+        loaded: false,
         list: [],
         count: 0, // 总共多少条数据
         pageSize: 5,
@@ -70,7 +98,6 @@ var vNode = {
       },
       entPortraitInfo: {},
       stickyTop: 0,
-      singleTab: true,
       // 年度项目统计设置
       annualSetting: {
         showLine: ['项目金额'],
@@ -113,6 +140,12 @@ var vNode = {
       isVip: false, // 只是超级订阅
       canFreeExp: false, // 免费用户体验标识
       canFreeTrial: false,
+      svipBuyset: {
+        areacount: 1,
+        buyerclasscount: -1,
+        newcitys: [],
+        upgrade: 1,
+      },
       bidcollPowerInfo: {
         vip: 0,
         text: '开通',
@@ -135,6 +168,8 @@ var vNode = {
         topShow: true,
         dt: true
       },
+      // 中标动态筛选条件缓存,也可以用来判断是否正在使用筛选项进行请求
+      winnerHighSet: '',
       freeWinnerOpen: false,
       colList:[],
       isSC:0, //0未收藏 1收藏
@@ -148,7 +183,7 @@ var vNode = {
     }
   },
   created: function () {
-    // svip是超级订阅企业查询, 如果是超级订阅不能查看企业情报历史记录
+    // svip是超级订阅企业查询, 如果是超级订阅不能查看企业情报历史记录(工商变动)
     var svip = utils.getParam('svip')
     if (svip) {
       this.svip = true
@@ -193,44 +228,6 @@ var vNode = {
     clearTimeout(window.t)
     window.t = setTimeout(this.scrollHeight.bind(this), 300)
   },
-  watch: {
-    tabActiveName: function (newVal, oldVal) {
-      var _this = this
-      if (newVal == '2') {
-        this.$nextTick(function () {
-          if (_this.gotTab2) {
-            // 初始化图表
-            if (_this.entPortraitInfo && _this.conf.showPortraitAll && !_this.singleTab) {
-              _this.initChartsData();
-            }
-          } else {
-            if (_this.conf._4) {
-              // 获取企业画像信息-4
-              _this.getEntPortrait(function () {
-                _this.initChartsData()
-              })
-              _this.gotTab2 = true
-              console.log('获取企业全景分析...')
-            }
-            // 获取企业中标动态-13
-            if (_this.conf._13) {
-                _this.getProjectNews()
-                _this.gotTab2 = true
-                console.log('获取企业中标动态...')
-            }
-            if (_this.powerInfo.memberStatus <= 0) {
-              // 不是大会员点击中标信息使用次数加一
-              // if(!_this.entvisit.visited) {
-              //     _this.entvisit.usage++
-              //     _this.entvisit.visited = true
-              // }
-            }
-            _this.gotTab2 = true
-          }
-        });
-      }
-    },
-  },
   computed: {
     // 3个权限有1个就为true(取反为3个权限1个都没有)
     hasOnePower: function () {
@@ -282,6 +279,15 @@ var vNode = {
       })
       return !isShow
     },
+    // 超级订阅画像余额是否展示
+    showPortraitBalance: function () {
+      return this.hasOnePower && this.surplus && this.isVip
+    },
+    // 超级订阅画像余额模块引导按钮
+    portraitBalance: function () {
+      // 购买的全国,则联系客服。否则去升级
+      return this.svipBuyset.areacount === -1 ? '联系客服' : '去升级'
+    },
     isFreeOrNotLogin () {
       return this.isFree
     }
@@ -317,7 +323,8 @@ var vNode = {
     }, 50),
     scrollHeight: function () {
       var storageClick = JSON.parse(sessionStorage.getItem('is-click-set'))
-      if ($('.win-analyse').length && $('.win-analyse').length > 0 && storageClick) {
+      var target = $('.project-news.tab-card .project-news-tip')
+      if (target.length && target.length > 0 && storageClick) {
         this.$nextTick(function(){
           // 有开通超级订阅banner时
           if (this.freeWinnerOpen) {
@@ -331,7 +338,8 @@ var vNode = {
               "margin-top": '2rem'
             })
           } else {
-            document.querySelector('.win-analyse').scrollIntoView()
+            // document.querySelector('.project-news.tab-card').scrollIntoView()
+            this.$refs.scrollspyTabs.scrollTo('4')
           }
           sessionStorage.removeItem('is-click-set')
         })
@@ -414,12 +422,17 @@ var vNode = {
       }
       this.overlayShow = true
     },
+    getHighSet: function () {
+      var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+      this.winnerHighSet = storageSet
+      return storageSet
+    },
     // 获取画像信息
     getEntPortrait: function (callback) {
       if (this.isFree) {
         return
       }
-      var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+      var storageSet = this.getHighSet()
       // if (!storageSet) return
       var _this = this
       var data = {
@@ -454,7 +467,6 @@ var vNode = {
           if (res.error_code == 0) {
             _this.loading.clear()
             if (res.data && Object.keys(res.data).length !== 0) {
-              _this.singleTab = false
               // 将数据保存到data中
               for (var key in res.data) {
                 _this.entPortraitInfo[key] = res.data[key]
@@ -540,7 +552,7 @@ var vNode = {
     //数据导出
     onExport(){
       var _this = this
-      var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+      var storageSet = this.getHighSet()
       var data = {
         entId: this.entInfo.id,
         pageNum: 1,
@@ -600,7 +612,7 @@ var vNode = {
     },
     // 获取项目动态
     getProjectNews: function () {
-      var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+      var storageSet = this.getHighSet()
       var _this = this
       var data = {
         entId: _this.entInfo.id,
@@ -625,7 +637,6 @@ var vNode = {
               _this.show.dt = false
             }
             if (res.data.list && $.isArray(res.data.list)) {
-              _this.singleTab = false
               try {
                 res.data.list.forEach(function (item) {
                   item.visited = visitedPath.pathVisited(
@@ -652,7 +663,10 @@ var vNode = {
         },
         error: function (error) {
           _this.loading.clear()
-        }
+        },
+        complete: function () {
+          _this.topProject.loaded = true
+        },
       })
     },
     // 去中标单位画像
@@ -682,6 +696,7 @@ var vNode = {
             _this.loading.clear()
             if (res.data && Object.keys(res.data).length !== 0) {
               _this.entInfo.name = res.data.entName
+              _this.entBaseInfo._empty = false
               for (var key in res.data) {
                 _this.entBaseInfo[key] = res.data[key]
               }
@@ -693,7 +708,10 @@ var vNode = {
         },
         error: function (error) {
           _this.loading.clear()
-        }
+        },
+        complete: function () {
+          _this.entBaseInfo._loaded = true
+        },
       })
     },
     // 查询企业是否存在和企业关注状态
@@ -782,7 +800,8 @@ var vNode = {
               //}
               _this.canReadConf13()
               if (power.indexOf(12) != -1) {
-                // 获取企业情报历史记录-12
+                // 获取企业情报历史记录(工商变动)-12
+                _this.getVipBuyInfo()
                 _this.conf._12 = true
               }
               // // follow的权限:4.12.13只要有一个就可以
@@ -828,7 +847,6 @@ var vNode = {
                   }
                 })
               }
-              _this.singleTab = false
             }
 
             if (res.data.vipStatus > 0) {
@@ -857,6 +875,20 @@ var vNode = {
         }
       })
     },
+    getVipBuyInfo: function () {
+      var _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/subscribepay/vipsubscribe/getSubBuyMsg',
+        success: function (res) {
+          if(res && res.data) {
+            if (res.data.buyset) {
+              Object.assign(_this.svipBuyset, res.data.buyset)
+            }
+          }
+        }
+      })
+    },
     // 修改企业关注状态
     changeFollowStateRequest: function () {
       var _this = this
@@ -911,6 +943,7 @@ var vNode = {
     },
     getStickyTop: function () {
       // this.stickyTop = $('.jy-app-header').height() - 1
+      // this.stickyTop = $('.j-header.jy-app-header').outerHeight()
     },
     goToEntHistory: function () {
       // if (this.powerInfo.isSubCount) {
@@ -1357,7 +1390,6 @@ var vNode = {
         topProject: this.topProject,
         entPortraitInfo: this.entPortraitInfo,
         powerInfo: this.powerInfo,
-        singleTab: this.singleTab,
         scrollTop: this.scrollTop,
         gotTab2: this.gotTab2
       }
@@ -1380,7 +1412,6 @@ var vNode = {
         Object.assign(this.entPortraitInfo, $data.entPortraitInfo || {})
         Object.assign(this.powerInfo, $data.powerInfo || {})
         Object.assign(this.entvisit, $data.entvisit || {})
-        this.singleTab = $data.singleTab
         this.scrollTop = $data.scrollTop
         this.gotTab2 = $data.gotTab2
         sessionStorage.removeItem(this.sessKey)
@@ -1390,12 +1421,12 @@ var vNode = {
     // 高级分析设置
     goHighSet () {
       sessionStorage.setItem('is-click-set', 1)
-      location.href = '/big/wx/page/free_high_set?header=中标信息高级分析设置&eid=' + utils.getParam('eId')
+      location.href = '/big/wx/page/free_high_set?header=中标动态筛选条件&from=ent_portrait&eid=' + utils.getParam('eId')
       // var url = this.getProjectNewsUrl()
       // var reqSign = url.indexOf('subVipPortrait') === -1 ? 'bigmember' : 'svip'
       // if (this.conf._4) {
       //   sessionStorage.setItem('is-click-set', 1)
-      //   location.href = '/big/wx/page/free_high_set?header=中标信息高级分析设置&eid=' + utils.getParam('eId') + '&reqSign=' + reqSign
+      //   location.href = '/big/wx/page/free_high_set?header=中标动态筛选条件&from=ent_portrait&eid=' + utils.getParam('eId') + '&reqSign=' + reqSign
       // } else {
       //   this.$dialog.confirm({
       //     className: 'promatch',
@@ -1408,9 +1439,19 @@ var vNode = {
       // }
     },
     goOpenVip: function() {
+      this.savePageState()
       // location.href = "/front/vipsubscribe/vipsubscribe_new"
-      location.href = '/jy_mobile/common/order/create/svip?type=buy'
-    }
+      location.href = '/jy_mobile/common/order/create/svip'
+    },
+    portraitBalanceActionRight: function (key) {
+      this.savePageState()
+      if (key === '去升级') {
+        location.href = '/jy_mobile/common/order/create/svip?type=upgrade'
+      } else if (key === '联系客服') {
+        // utils.goToCustomerPage()
+        location.href = '/big/wx/page/customer'
+      }
+    },
   }
 }
 var vueComponent = new Vue(vNode)

+ 6 - 1
src/web/staticres/common-module/collection/js/history-project.js

@@ -52,7 +52,7 @@ var historyProTemplate = `
             <div class="image">
                 <img src="/common-module/public/image/jy-back.png">
             </div>
-            <div class="empty-main tip-text">暂无数据</div>
+            <div class="empty-main tip-text2">{{ afterFiltering ? '对不起,没有匹配到相关数据' : '暂无数据' }}</div>
         </div>
       </div>
     </div>
@@ -102,6 +102,11 @@ var hisproComponent = {
             filterList: []
         }
     },
+    computed: {
+        afterFiltering: function () {
+            return !!this.entName
+        }
+    },
     watch: {
       'entName': function (val) {
         if (val) {

+ 3 - 5
src/web/staticres/common-module/collection/js/vip-dialog.js

@@ -134,9 +134,7 @@ var vipComponent = {
 
         // (2)【立即解锁】:未体验过企业画像的免费用户,中标分析各模块,点击进行“欢迎体验企业中标分析”留资;
         if (this.canFreeExp) {
-          // textMap.btnText = '立即解锁'
-          // 免费体验功能已经下掉,此处改为引导购买
-          textMap.btnText = '去开通'
+          textMap.btnText = '立即解锁'
         } else {
           if (this.power.vipStatus <= 0) {
             textMap.btnText = '去开通'
@@ -208,7 +206,7 @@ var vipComponent = {
           textMap.source = 'ent_portrait_topShow_freeuser'
           break
         }
-          // 企业情报历史记录
+          // 企业情报历史记录(工商变动)
         case 'item_8': {
           textMap.titleText = '开通大会员'
           textMap.btnText = this.power.isMember > 0 && !this.power._12 ? '联系客服' : '免费体验'
@@ -229,7 +227,7 @@ var vipComponent = {
         // 统计信息-概况
         case 'item_10': {
           textMap.titleText = ''
-          textMap.btnText = this.power.isFree ? '去开通' : '前往升级'
+          textMap.btnText = this.power.isMember > 0 && this.power.arr.indexOf(4) == -1 ? '联系客服' : '免费体验'
           textMap.headText.top = '全面透视企业历史中标项目、中标'
           textMap.headText.bot = '金额、客户数量'
           textMap.source = 'ent_portrait_bidInfoDesc'

+ 3 - 0
src/web/staticres/common-module/mainSearch/css/j-icons.css

@@ -362,6 +362,9 @@
 .icon-download-999 {
     background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdhJREFUWEftlT9oFEEUxr83xwVsRGwsTSqLtLEV7W0sLCJBc0hmZkUbtdHG2GiT2BicPyGcSkiKFEFIlcaQ2tbCSi0tBLERPG6ejEwg5M7bvbmDSNhtdoed932/+Wb3DeGYLzpmf9QA2Qm02+0znU5nO25hs9m81mq1fuRsZzaAMeayEOJ9NA0hXCmKYq8GqBOoEziZCRhj5onoohDilZTy48EqB/UB7/10COEOEb1TSu0OSqa0ETnnvgM4C+ATM89prT9EwX8BWGtniGgdwAUAX5RSU6MCPAGwmES+MvNNrfV+PwBr7SUiegvgfOqQT4uiOKjty1GaQKyy1j4jokdJ4RsRtbrd7q/DrbjRaJxi5jaAc3EeMz/XWj8u+zArASSIZSK6n8R/ArhNRFtpfB3AGhGdTuMXWusHZebxfWWAONk59xLA3ST8G8BEn+cVpdS9KuZDA6QkPBEt9DNg5lWttaxqngWQkngN4NYRozdKqflhzLMBYqH3foOZZ/+KEG1KKW8Maz4SQEpiKd6VUg9zzEcGyDU9XDfUXzAOw6MaPQDe+6sAKv3DGUDLUsqdgQk45z4DmMwQr1LSczb0JGCMWRRCxP4/9iuE0HM2/H/fwNiXXSJYJ/AHOebkIY4bPMkAAAAASUVORK5CYII=');
 }
+.icon-3hengxian {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACgSURBVHgB7dQ9EsIgFATgBcfKhiNQxp/ReAI1F/Co3oDoCUAnhWOjR9DagZgUROzp3K96vGJ51QJE/06kj8JcNgHyeasW57jTB6smSu6RybsduTR/OGBumlUL7/o5QGyv1fLUz1Pj7gJCI6M0X8alRFDDLPzre6FAbr/5iVlty+4i1ezWx7graqvHQOm7PXJ8DjzSfCL2AHuAiD3AHiCiD/+CfeztWHJSAAAAAElFTkSuQmCC);
+}
 
 /******** img背景图 **********/
 .j-img {

+ 11 - 2
src/web/templates/big-member/wx/page_free_high_set.html

@@ -33,6 +33,10 @@
       flex: 1;
       overflow: auto;
     }
+    /* 解决行业和采购单位选择器的滚动问题 */
+    .van-tabs.unitType {
+      height: 50vh;
+    }
   </style>
 </head>
 
@@ -71,6 +75,7 @@
             <van-cell title="项目搜索范围" is-link :value="conf.scope" @click="popClick('scope')"></van-cell>
             <van-cell class="area-class" title="项目地区" is-link :value="conf.area" @click="popClick('area')"></van-cell>
             <van-cell title="行业" is-link :value="conf.industry" @click="popClick('industry')"></van-cell>
+            <van-cell title="采购单位类型" v-if="showBuyerClassCell" is-link :value="conf.buyerclass" @click="popClick('buyerclass')"></van-cell>
           </div>
           <div class="years-container">
             <span class="year-label">分析年份</span>
@@ -82,7 +87,7 @@
         <div class="j-footer">
           <div class="j-button-group">
             <button class="j-button-cancel" @click="onReset">重置</button>
-            <button class="j-button-confirm" :disabled="disabledConfirm" @click="startStatistic">开始分析</button>
+            <button class="j-button-confirm" :disabled="disabledConfirm" @click="startStatistic">确定</button>
           </div>
         </div>
         <van-popup 
@@ -102,7 +107,10 @@
               <area-component class="j-main fix-ios-scroll" :class="{'hide-all': filterInitData.areaArr.length == 2}" ref="projectAreaSelector" :selectarealist="selectAreaList" @cancel="onCancel" @confirm="onConfirm"></area-component>
             </div>
             <div v-show="popInfo.type == 'industry'">
-              <industry-component class="j-main fix-ios-scroll" ref="industryCom" :selectindustrylist="selectIndustryList" onlyshowsome= "true" @cancel="onCancel" @confirm="onConfirm"></industry-component>
+              <industry-component class="j-main fix-ios-scroll" ref="industryCom" :selectindustrylist="selectIndustryList" onlyshowsome @cancel="onCancel" @confirm="onConfirm"></industry-component>
+            </div>
+            <div v-show="popInfo.type == 'buyerclass'">
+              <buyerclass-component class="j-main fix-ios-scroll" ref="buyerclassCom" :selected-list="selectedBuyerclassList" @cancel="onCancel" @confirm="onConfirm"></industry-component>
             </div>
             <div v-show="popInfo.type == 'start'">
               <years-component ref="yearsItem" type="start" :cur-year="conf.start" :years="startRange" @cancel="onCancel" @confirm="onConfirm"></years-component>
@@ -134,6 +142,7 @@
   <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/date-mobile.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/area-mobile.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/industry-mobile.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/buyerclass-mobile.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/years-picker-mobile.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Msg "seo" "cdn"}}/common-module/big-member/js/high_set.js?v={{Msg "seo" "version"}}'></script>
 </body>

+ 383 - 438
src/web/templates/frontRouter/wx/collection/sess/ent_portrait.html

@@ -29,22 +29,6 @@
         <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/mainSearch/css/j-icons.css?v={{Msg "seo" "version"}}' />
 </head>
 <style>
-    .bidinfo{
-        font-size: 0.28rem;
-        font-weight: 500;
-        text-align: CENTER;
-        color: #c0c4cc;
-        line-height: 20px;
-    }
-    .bid_upgrade{
-        padding: 0.04rem 0.12rem;
-        border: 1px solid #fb483d;
-        border-radius: 0.18rem;
-        font-size: 0.2rem;
-        font-weight: 500;
-        color: #fb483d;
-        line-height: 0.4rem;
-    }
     .vip_openDialog{
         position: relative;
         padding: 0 0 0.64rem;
@@ -58,13 +42,6 @@
         width:100%;
         text-align: center;
     }
-    .bid_surplus{
-        height: .04rem;
-        opacity: 1;
-        font-size: .22rem;
-        font-weight: 500;
-        color: #2abed1;
-    }
     .freeExper{
       display: flex;
       align-items: center;
@@ -80,95 +57,7 @@
       border-radius: 4px;
       padding: 0.07rem 0.1rem;
     }
-    .selected-export-box {
-      position: relative;
-      padding: 0.06rem .28rem 0 .34rem;
-      height: 0.9rem;
-      line-height: 0.9rem;
-      font-size: .26rem;
-      background-color: #fff;
-      z-index: 999;
-      display: flex;
-      width: 100%;
-      /*border-bottom: 0.008rem solid rgb(191,191,191);*/
-    }
-    .selected-export-box .selected-export{
-      margin-bottom: .2rem;
-    }
-    .selected-export-box .selected-export .select-show-type-group span{
-      padding: 0.32rem 0 0.12rem;
-      font-size: .36rem;
-      line-height: .52rem;
-      color: #171826;
-      height: 0.52rem;
-      box-sizing: border-box;
-    }
-    .selected-export-box .selected-export .select-show-type-group .active{
-      color: #2ABED1;
-      position: relative;
-      /*border-bottom: 2px solid #2ABED1;*/
-    }
-    .selected-export-box .selected-export .select-show-type-group .active:after {
-      content: '';
-      position: absolute;
-      left: 0.6rem;
-      top: auto;
-      bottom: 0.07rem;
-      /*right: auto;*/
-      height: .03rem;
-      width: .5rem;
-      background-color: #2ABED1;
-    }
-    .selected-export-box .selected-export .export #mainSearch-selLable-dataExport {
-      color: #2ABED1;
-      margin-left: 0.1rem;
-      font-size: .28rem;
-    }
-    .selected-export-box .selected-export .options .search-title i,
-    .selected-export-box .selected-export .options .show-list i {
-      position: absolute;
-      font-size: .15rem;
-      top: 50%;
-      -webkit-transform: translateY(-50%);
-      transform: translateY(-50%);
-      right: -0.22rem;
-    }
-    .selected-export-box .selected-export .options .search-title.active,
-    .selected-export-box .selected-export .options .show-list.active {
-      color: #2CB7CA;
-    }
-    .selected-export-box .selected-export .options .show-list {
-      margin-left: .74rem;
-    }
-    .selected-export-box .selected-export .export {
-      position: absolute;
-      top: 50%;
-      right: .28rem;
-      -webkit-transform: translateY(-50%);
-      transform: translateY(-50%);
-    }
-    .selected-export-box .selected-export .export span i {
-      width: .3rem;
-      height: .4rem;
-      position: absolute;
-      font-size: .1rem;
-      top: 50%;
-      left: -0.25rem;
-      -webkit-transform: translateY(-50%);
-      transform: translateY(-50%);
-    }
-    .selected-export-box .selected-export .export:before {
-      position: absolute;
-      /*content: '';*/
-      left: -0.66rem;
-      top: 50%;
-      -webkit-transform: translateY(-50%);
-      transform: translateY(-50%);
-      width: 1px;
-      height: 0.44rem;
-      background-color: #e0e0e0;
-      margin-left: 0.2rem;
-    }
+
     .head-group{
       display: flex;
       align-items: flex-start;
@@ -236,402 +125,458 @@
                 class="j-icon"
                 :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
                 @click="changeFollowState"
-                style="margin-right: .32rem;"
                 v-if="entInfo.followSearchFinish && entInfo.entExist"
             ></span>
             <van-loading v-if="!entInfo.followSearchFinish" size="24px"></van-loading>
-            <forwardshare :params="entParams" :show-text="false"></forwardshare>
+            <forwardshare style="margin-left: .32rem;" :params="entParams" :show-text="false"></forwardshare>
         </div>
         <van-tabs
             class="ent-tabs-container"
-            :class="singleTab ? 'single-tab' : ''"
             v-model="tabActiveName"
             sticky
             scrollspy
             color="#2cb7ca"
+            swipe-threshold="4"
             title-active-color="#2cb7ca"
             title-inactive-color="#5F5E64"
             line-width="0.48rem"
             v-if="conf.powerLoaded && conf.showPortraitAll"
             :offset-top="stickyTop">
-            <van-tab name="1" title="企业信息">
-              <div class="bg-white tab-card">
-                <div class="card-row">
-                  <div class="card-column social-credit-code">
-                    <div class="ent-registration-label">统一社会信用代码</div>
-                    <div class="ent-registration-text">${entBaseInfo.creditNo ? entBaseInfo.creditNo : '-'}</div>
-                  </div>
-                  <div class="card-column organization-code">
-                    <div class="ent-info-label">联系方式</div>
-                    <div class="ent-info-text">${entBaseInfo.phone ? entBaseInfo.phone : '-'}</div>
-                  </div>
-                </div>
-                <div class="card-row">
-                  <div class="card-column registered-capital">
-                    <div class="ent-info-label">注册资本</div>
-                    <div class="ent-info-text">${entBaseInfo.capital ? entBaseInfo.capital+'万元' : '-'}</div>
-                  </div>
-                  <div class="card-column registered-capital">
-                    <div class="ent-info-label">法人姓名</div>
-                    <div class="ent-info-text">${entBaseInfo.legal ? entBaseInfo.legal : '-'}</div>
-                  </div>
-                </div>
-                <div class="card-row">
-                  <div class="card-column ent-establish">
-                    <div class="ent-info-label">成立日期</div>
-                    <div class="ent-info-text">
-                      ${(!entBaseInfo.establish || entBaseInfo.establish == -1) ? '-' : new
-                      Date(entBaseInfo.establish*1000).pattern('yyyy/MM/dd')}
+            <!-- 企业信息/工商信息 -->
+            <van-tab :name="moduleList[0].name" :title="moduleList[0].title">
+                <div class="module-container pb-12 ent-info-detail">
+                    <div class="module-title-container">
+                        <p class="module-title">工商信息</p>
                     </div>
-                  </div>
-                  <div class="card-column ent-status">
-                    <div class="ent-info-label">经营状态</div>
-                    <div class="ent-info-text">${entBaseInfo.status ? entBaseInfo.status : '-'}</div>
-                  </div>
-                </div>
-                <div v-if="!showBaseInfo" class="show-more" @click="showBaseInfo = true">查看更多</div>
-                <div v-show="showBaseInfo" style="width: 100%;">
-                  <div class="card-row">
-                    <div class="card-column ent-type">
-                      <div class="ent-type-label">公司类型</div>
-                      <div class="ent-type-text">${entBaseInfo.type ? entBaseInfo.type : '-'}</div>
-                    </div>
-                  </div>
-                  <div class="card-row">
-                    <div class="card-column ent-business-term">
-                      <div class="ent-business-term-label">营业期限</div>
-                      <div class="ent-business-term-text">
-                        <span>${entBaseInfo.operStart == -1 ? '-' : new
-                          Date(entBaseInfo.operStart*1000).pattern('yyyy/MM/dd')}</span>
-                        <span> 至 </span>
-                        <span>${entBaseInfo.operEnd == -1 ? '-' : new
-                          Date(entBaseInfo.operEnd*1000).pattern('yyyy/MM/dd')}</span>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="card-row">
-                    <div class="card-column tax-identification-number">
-                      <div class="ent-registration-label">纳税人识别号</div>
-                      <div class="ent-registration-text">${entBaseInfo.taxCode ? entBaseInfo.taxCode : '-'}</div>
+                    <div class="bg-white tab-card"  v-if="!entBaseInfo._empty && entBaseInfo._loaded">
+                        <div class="card-row">
+                            <div class="card-column social-credit-code">
+                            <div class="ent-registration-label">统一社会信用代码</div>
+                            <div class="ent-registration-text">${entBaseInfo.creditNo ? entBaseInfo.creditNo : '-'}</div>
+                        </div>
+                        <div class="card-column organization-code">
+                            <div class="ent-info-label">联系方式</div>
+                            <div class="ent-info-text">${entBaseInfo.phone ? entBaseInfo.phone : '-'}</div>
+                        </div>
                     </div>
-                  </div>
-                  <div class="card-row">
-                    <div class="card-column business-registration-number">
-                      <div class="ent-registration-label">工商注册号</div>
-                      <div class="ent-registration-text">${entBaseInfo.company_code ? entBaseInfo.company_code : '-'}</div>
+                    <div class="card-row">
+                        <div class="card-column registered-capital">
+                            <div class="ent-info-label">注册资本</div>
+                            <div class="ent-info-text">${entBaseInfo.capital ? entBaseInfo.capital+'万元' : '-'}</div>
+                        </div>
+                        <div class="card-column registered-capital">
+                            <div class="ent-info-label">法人姓名</div>
+                            <div class="ent-info-text">${entBaseInfo.legal ? entBaseInfo.legal : '-'}</div>
+                        </div>
                     </div>
-                  </div>
-                  <div class="card-row">
-                    <div class="card-column organization-code">
-                      <div class="ent-info-label">组织机构代码</div>
-                      <div class="ent-info-text">${entBaseInfo.org_code ? entBaseInfo.org_code : '-'}</div>
+                    <div class="card-row">
+                        <div class="card-column ent-establish">
+                            <div class="ent-info-label">成立日期</div>
+                            <div class="ent-info-text">
+                                ${(!entBaseInfo.establish || entBaseInfo.establish == -1) ? '-' : new
+                                Date(entBaseInfo.establish*1000).pattern('yyyy/MM/dd')}
+                            </div>
+                        </div>
+                        <div class="card-column ent-status">
+                            <div class="ent-info-label">经营状态</div>
+                            <div class="ent-info-text">${entBaseInfo.status ? entBaseInfo.status : '-'}</div>
+                        </div>
                     </div>
-                  </div>
-                  <div class="card-row">
-                    <div class="card-column ent-employee">
-                      <div class="ent-info-label">人员规模(工商年报-参保人数,仅供参考)</div>
-                      <div class="ent-info-text">${entBaseInfo.employeeNo ? entBaseInfo.employeeNo : '-'}</div>
+                    <div v-if="!showBaseInfo" class="show-more" @click="showBaseInfo = true">查看更多</div>
+                    <div v-show="showBaseInfo" style="width: 100%;">
+                        <div class="card-row">
+                            <div class="card-column ent-type">
+                                <div class="ent-type-label">公司类型</div>
+                                <div class="ent-type-text">${entBaseInfo.type ? entBaseInfo.type : '-'}</div>
+                            </div>
+                        </div>
+                        <div class="card-row">
+                            <div class="card-column ent-business-term">
+                                <div class="ent-business-term-label">营业期限</div>
+                                <div class="ent-business-term-text">
+                                <span>${entBaseInfo.operStart == -1 ? '-' : new
+                                    Date(entBaseInfo.operStart*1000).pattern('yyyy/MM/dd')}</span>
+                                <span> 至 </span>
+                                <span>${entBaseInfo.operEnd == -1 ? '-' : new
+                                    Date(entBaseInfo.operEnd*1000).pattern('yyyy/MM/dd')}</span>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="card-row">
+                            <div class="card-column tax-identification-number">
+                                <div class="ent-registration-label">纳税人识别号</div>
+                                <div class="ent-registration-text">${entBaseInfo.taxCode ? entBaseInfo.taxCode : '-'}</div>
+                            </div>
+                        </div>
+                        <div class="card-row">
+                            <div class="card-column business-registration-number">
+                                <div class="ent-registration-label">工商注册号</div>
+                                <div class="ent-registration-text">${entBaseInfo.company_code ? entBaseInfo.company_code : '-'}</div>
+                            </div>
+                        </div>
+                        <div class="card-row">
+                            <div class="card-column organization-code">
+                                <div class="ent-info-label">组织机构代码</div>
+                                <div class="ent-info-text">${entBaseInfo.org_code ? entBaseInfo.org_code : '-'}</div>
+                            </div>
+                        </div>
+                        <div class="card-row">
+                            <div class="card-column ent-employee">
+                                <div class="ent-info-label">人员规模(工商年报-参保人数,仅供参考)</div>
+                                <div class="ent-info-text">${entBaseInfo.employeeNo ? entBaseInfo.employeeNo : '-'}</div>
+                            </div>
+                        </div>
+                        <div class="card-row">
+                            <div class="card-column registered-capital">
+                                <div class="ent-info-label">注册地址</div>
+                                <div class="ent-info-text">${entBaseInfo.address ? entBaseInfo.address : '-'}</div>
+                            </div>
+                        </div>
+                        <div class="card-row">
+                            <div class="card-column registered-capital">
+                                <div class="ent-info-label">经营范围</div>
+                                <div class="ent-info-text">${entBaseInfo.scope ? entBaseInfo.scope : '-'}</div>
+                            </div>
+                        </div>
                     </div>
-                  </div>
-                  <div class="card-row">
-                    <div class="card-column registered-capital">
-                      <div class="ent-info-label">注册地址</div>
-                      <div class="ent-info-text">${entBaseInfo.address ? entBaseInfo.address : '-'}</div>
                     </div>
-                  </div>
-                  <div class="card-row">
-                    <div class="card-column registered-capital">
-                      <div class="ent-info-label">经营范围</div>
-                      <div class="ent-info-text">${entBaseInfo.scope ? entBaseInfo.scope : '-'}</div>
+                    <div class="empty-container bg-white" v-if="entBaseInfo._empty && entBaseInfo._loaded">
+                        <div class="empty-content-position">
+                            <div class="image">
+                                <img src="/common-module/public/image/jy-back.png">
+                            </div>
+                            <div class="empty-main tip-text2">暂无数据</div>
+                        </div>
                     </div>
-                  </div>
                 </div>
-              </div>
-                <div class="bg-white tab-card ent-change-history" @click="goToEntHistory">
-                    <div class="ent-change-l">企业情报历史记录</div>
+            </van-tab>
+            <!-- 工商变动 -->
+            <van-tab :name="moduleList[1].name" :title="moduleList[1].title">
+                <div class="module-title-container bg-white tab-card ent-change-history" @click="goToEntHistory">
+                    <div class="module-title ent-change-l">
+                        <span>工商变动</span>
+                        <!-- <span class="module-title-num">10</span> -->
+                    </div>
                     <div class="j-icon icon-back base-icon"></div>
                 </div>
             </van-tab>
-            <van-tab name="2" >
-                <template #title>
-                    <span :class="{bidinfo:!hasOnePower}">中标分析</span>
-                    <span v-if="isShowUpTip" class="bid_upgrade">升级</span>
-                    <span v-if="(hasOnePower && surplus && isVip)" class="bid_surplus">剩余:${entvisit.total - entvisit.usage}</span>
-                </template>
+            <!-- 企业通讯录 -->
+            <van-tab :name="moduleList[2].name" :title="moduleList[2].title">
                 <div v-if="!showContacts">
-                  <div style="background: #fff;padding: .24rem .32rem 0;">
-                    <span class="win-bid-title">企业通讯录</span>
-                  </div>
-                  <div class="vip_component" style="height:11.04rem;background:url('/common-module/collection/image/bg/vip_bg_9.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-                    <vip-component :islogin="isLogin" data-cl-event="c_wx_free_buttonclick" @tabactive="tabActive" :power="conf" type="item_9" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_9.png?v={{Msg "seo" "version"}}'></vip-component>
-                  </div>
+                    <div style="background: #fff;padding: .24rem .32rem 0;">
+                        <span class="win-bid-title">企业通讯录</span>
+                    </div>
+                    <div class="vip_component" style="height:11.04rem;background:url('/common-module/collection/image/bg/vip_bg_9.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+                        <vip-component :islogin="isLogin" data-cl-event="c_wx_free_buttonclick" @tabactive="tabActive" :power="conf" type="item_9" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_9.png?v={{Msg "seo" "version"}}'></vip-component>
+                    </div>
                 </div>
                 <div class="bg-white tab-card cell-list" v-else>
-                  <hispro-component class="history-list" type="winner" :id="entInfo.id" :ent-name="entInfo.name"></hispro-component>
-                </div>
-                <!-- 留完资的免费用户 已体验和未体验的展示去开通 -->
-                <div v-if="freeWinnerOpen" class="banner-sticky" ref="bannerRef">
-                  <!-- <van-sticky offset-top="33.67vw"> -->
-                    <img @click="goOpenVip" src="/big-member/image/winner-open.png" alt="">
-                  <!-- </van-sticky> -->
+                    <hispro-component class="history-list" type="winner" :id="entInfo.id" :ent-name="entInfo.name"></hispro-component>
                 </div>
-                <!-- 高级分析 -->
-                <div class="win-analyse" ref="setRef">
-                  <span class="win-bid-title">中标分析</span>
-                  <div class="high-link" @click="goHighSet">
-                    <span>高级分析设置</span>
-                    <van-icon name="arrow"></van-icon>
-                  </div>
-                </div>
-                <!--免费用户体验-->
-<!--                <div v-if="canFreeExp" class="freeExper">-->
-<!--                    <p class="freeRemark">免费赠送1次【企业中标分析】权益体验机会!</p>-->
-<!--                    <span @click="goExpAnalysis">去解锁</span>-->
-<!--                </div>-->
-                <div class="bg-white tab-card" data-cl-event="c_wx_open_buttionclick" v-if="!isFreeOrNotLogin">
-                    <div class="tab-card-title" style="padding: 0.16rem .32rem .12rem;">中标信息统计结果</div>
-                    <div class="card-row zb-info">
-                        <div class="card-column">
-                            <div class="ent-info-label">项目数量</div>
-                            <div class="ent-info-text">${entPortraitInfo.project_count ? entPortraitInfo.project_count + '个' : '--'}</div>
-                        </div>
-                        <div class="card-column">
-                            <div class="ent-info-label">项目金额</div>
-                            <div class="ent-info-text">${entPortraitInfo.bidamount_count ? utils.moneyUnit(entPortraitInfo.bidamount_count) : '--'}</div>
+            </van-tab>
+            <!-- 中标动态 -->
+            <van-tab :name="moduleList[3].name" :title="moduleList[3].title">
+                <!-- <div class="jy-empty" v-show="allNot && !getStatus">
+                    <div class="jy-empty-img"></div>
+                    <p class="jy-empty-text">对不起,没有匹配到相关信息, <br>修改时间范围或换个搜索词试试吧</p>
+                </div> -->
+                <div class="bg-white tab-card cell-list project-news">
+                    <div class="module-title-container bg-white project-news-module">
+                        <div class="module-title project-news-title">
+                            <span>中标动态</span>
+                            <!-- <span class="module-title-num">10</span> -->
                         </div>
-                        <div class="card-column">
-                            <div class="ent-info-label">项目省份</div>
-                            <div class="ent-info-text">${entPortraitInfo.area_count ? entPortraitInfo.area_count + '个' : '--'}</div>
+                    <div class="action-group" v-if="conf._13">
+                        <div class="action-button export" @click="onExport">
+                            <i class="j-icon base-icon icon-download"></i>
+                            <em class="action-button-text">数据导出</em>
                         </div>
-                        <div class="card-column">
-                            <div class="ent-info-label">项目客户</div>
-                            <div class="ent-info-text">${entPortraitInfo.buyer_count ? entPortraitInfo.buyer_count + '个' : '--'}</div>
+                        <div class="action-button filters-button" @click="goHighSet" v-if="!getStatus">
+                            <i class="j-icon base-icon icon-3hengxian"></i>
+                            <em class="action-button-text">筛选条件</em>
                         </div>
                     </div>
-                    <div class="zb-time-frame border-line-t">
-                        <span>数据统计范围:</span>
-                        <span>${entPortraitInfo.timeRangeStart ? new Date(entPortraitInfo.timeRangeStart * 1000).pattern('yyyy/MM/dd') : ''}</span>
-                        <span>-</span>
-                        <span>${entPortraitInfo.timeRangeEnd ? new Date(entPortraitInfo.timeRangeEnd * 1000).pattern('yyyy/MM/dd') : '至今'}</span>
-          </div>
-        </div>
-        <!-- 中标信息统计结果--未登录-->
-        <div class="bg-white tab-card charts"  style="margin-bottom: 10px;" v-if="isFreeOrNotLogin">
-            <div class="tab-card-title">中标信息统计结果</div>
-            <div class="vip_component" v-if="getStatus && hideDt"
-                 style="height:5.8rem;background:url('/common-module/collection/image/bg/qy-zbtj-bg.png?v={{Msg "seo" "version"}}') 40% 0 no-repeat;background-size:110% 100%;"
-            key="dt">
-            <vip-component @tabactive="tabActive" :power="conf" type="item_10" :can-free-exp="canFreeExp"
-                           :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
-                           imgurl='/common-module/collection/image/bg/qy-zbtj.png?v={{Msg "seo" "version"}}'>
-            </vip-component>
                     </div>
-                </div>
-                <div class="jy-empty" v-show="allNot && !getStatus">
-                  <div class="jy-empty-img"></div>
-                  <p class="jy-empty-text">对不起,没有匹配到相关信息, <br>修改时间范围或换个搜索词试试吧</p>
-                </div>
-                <!-- 项目动态 -->
-                <div class="vip_component test" v-if="getStatus && hideDt" style="height:9.16rem;background:url('/common-module/collection/image/bg/vip_bg_1.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%" key="dt">
-                  <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_1" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip"  imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_1.png?v={{Msg "seo" "version"}}'></vip-component>
-              </div>
-              <div v-else key="dt">
-                <div class="j-container empty" style="padding-bottom: .2rem;"  v-if="conf._13 && !conf._4 && topProject.list.length === 0">
-                    <div class="j-img img-empty empty-img"></div>
-                    <p class="empty-text">暂无项目动态</p>
-                </div>
-                <div class="bg-white tab-card cell-list project-news" v-show="conf._13 && topProject.list.length !== 0">
-                  <div class="selected-export-box">
-                    <div class="selected-export">
-                      <div class="select-show-type-group">
-                        <span class="d_title">项目动态</span>
-                      </div>
-                      <div class="export">
-	                        <span @click="onExport">
-	                            <i class="j-icon base-icon icon-download"></i>
-	                            <em id="mainSearch-selLable-dataExport">数据导出</em>
-	                        </span>
-                      </div>
+                    <div class="module-notice-tip">注:1个项目如同时发布了中标、成交、合同等结果类公告,则有多条数据</div>
+                    <div class="tab-card-content vip_component" v-if="getStatus && hideDt"
+                        style="height:9.16rem;background:url('/common-module/collection/image/bg/vip_bg_1.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%"
+                        key="dt">
+                        <vip-component @tabactive="tabActive" :power="conf" type="item_1" :can-free-exp="canFreeExp" data-cl-event="c_wx_open_buttionclick"
+                                        :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                                        imgurl='/common-module/collection/image/bg/vip_ex_1.png?v={{Msg "seo" "version"}}'>
+                        </vip-component>
                     </div>
-                  </div>
-                    <div class="tab-card-content">
-                        <ul class="project-info-list">
-                            <li
-                                class="project-info-item border-line-b clickable"
-                                :class="{ visited: item.visited }"
-                                v-for="(item,index) in topProject.list"
-                                @click="toProjectDetail(item)"
-                            >
-                              <div class="head-group">
-                                <p class="i_title project-name visited-hd">${item.title}</p>
-                                <span class="icon weishoucang" :class="idx.indexOf(item.id) >-1 ? 'shoucang' : 'weishoucang'" @click.stop="addKeepStatus(item)"></span>
-                              </div>
+                    <div class="tab-card-content" key="dt" v-else>
+                        <ul class="project-info-list" v-show="topProject.list.length !== 0">
+                            <li class="project-info-item border-line-b clickable" :class="{ visited: item.visited }" v-for="(item,index) in topProject.list"
+                                @click="toProjectDetail(item)">
+                                <div class="head-group">
+                                    <p class="i_title visited-hd">${item.title}</p>
+                                    <span class="icon weishoucang" :class="idx.indexOf(item.id) >-1 ? 'shoucang' : 'weishoucang'" @click.stop="addKeepStatus(item)"></span>
+                                </div>
+                                <div class="project-name" v-if="false">${item.title}</div>
                                 <div class="project-info">
                                     <span class="tags">
                                         <span class="tag tag-success" v-if="item.area">${item.area}</span>
                                         <span class="tag tag-success" v-if="item.bidstatus">${item.bidstatus}</span>
                                         <span class="tag tag-success" v-if="item.bidamount">${utils.moneyUnit(item.bidamount)}</span>
                                     </span>
-                                    <span class="project-time">${item.firsttime ? new Date(item.firsttime * 1000).pattern('yyyy-MM-dd') : '-'}</span>
+                                    <span class="project-time">${item.firsttime ? new Date(item.firsttime * 1000).pattern('yyyy-MM-dd')
+                                    : '-'}</span>
                                 </div>
                             </li>
-                            <li
-                                class="show-more clickable"
+                            <li class="show-more clickable"
                                 v-if="topProject.showGetNextButton && (isMemberAndSvip || canFreeTrial) && topProject.count > 3"
-                                @click="goToFilterProjectNews">查看更多</li>
+                                @click="goToFilterProjectNews">查看更多
+                            </li>
                         </ul>
+                        <div class="empty-container bg-white" v-show="topProject.list.length === 0 && topProject.loaded">
+                            <div class="empty-content-position">
+                                <div class="image">
+                                    <img src="/common-module/public/image/jy-back.png">
+                                </div>
+                                <div class="empty-main tip-text2">
+                                    <template v-if="winnerHighSet">
+                                        <p>对不起,没有匹配到相关信息,</p>
+                                        <p>修改时间范围或换个搜索词试试吧</p>
+                                    </template>
+                                    <template v-else>暂无数据</template>
+                                </div>
+                            </div>
+                        </div>
                     </div>
                 </div>
-              </div>
-                <div class="bg-white tab-card charts" v-if="conf._4 && annualData.rows.length !== 0  && !getStatus">
-                    <div class="tab-card-title">年度项目统计</div>
-                    <!-- e-charts和sticky同时使用时候,需要手动降低css层级(z-index: 1),确保tooltip不遮挡固定定位头部 -->
-                    <div class="tab-card-content">
-                        <ve-histogram
-                            height="284px"
-                            :colors="colorGreen"
-                            :data="annualData"
-                            :init-options="initEchartsOptions"
-                            :after-config="annualConfig"
-                            :settings="annualSetting"
-                            :extend="barChart.chartExtend">
-                        </ve-histogram>
-                    </div>
-                    <div class="tab-card-tip">注:项目金额指所有项目的中标金额之和,少数缺失的中标金额,用项目预算补充。</div>
-                </div>
-                <div class="vip_component" v-if="getStatus" style="height:11.12rem;background:url('/common-module/collection/image/bg/vip_bg_2.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-                  <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_2" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_2.png?v={{Msg "seo" "version"}}'></vip-component>
+            </van-tab>
+            <!-- 中标分析 -->
+            <van-tab :name="moduleList[4].name" :title="moduleList[4].title" class="zb-analysis-tab">
+                <!--免费用户体验-->
+                <!-- <div v-if="canFreeExp" class="freeExper">
+                    <p class="freeRemark">免费赠送1次【企业中标分析】权益体验机会!</p>
+                    <span @click="goExpAnalysis">去解锁</span>
+                </div> -->
+                <!-- 留完资的免费用户 已体验和未体验的展示去开通 -->
+                <div v-if="freeWinnerOpen" class="banner-sticky" ref="bannerRef">
+                    <!-- <van-sticky offset-top="33.67vw"> -->
+                        <img @click="goOpenVip" src="/big-member/image/winner-open.png" alt="">
+                    <!-- </van-sticky> -->
                 </div>
-                <div class="bg-white tab-card charts"  v-if="conf._4 && monthZbData.rows.length !== 0  && !getStatus">
-                    <div class="tab-card-title">月度中标金额统计</div>
-                    <div class="tab-card-content">
-                        <ve-line
-                            height="284px"
-                            :data="monthZbData"
-                            :init-options="initEchartsOptions"
-                            :after-config="lineChartConfig"
-                            :extend="chartOptions.lineChart">
-                        </ve-line>
+                <div class="bg-white tab-card cell-list zb-analysis-module">
+                    <div class="module-title-container bg-white " ref="setRef">
+                        <div class="module-title zb-analysis-title">
+                        <span>中标分析</span>
+                         <!-- <span class="module-title-num">10</span> -->
+                        </div>
                     </div>
-                    <div class="tab-card-tip">注:少数缺失的中标金额,用项目预算补充。</div>
+                    <div class="module-notice-tip">注:1个项目如同时发布了中标、成交、合同等结果类公告,则有多条数据</div>
                 </div>
-                <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_3.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-                  <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_3" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_3.png?v={{Msg "seo" "version"}}'></vip-component>
-                </div>
-                <div class="bg-white tab-card charts" v-if="conf._4 && mapChartData.rows.length !== 0  && !getStatus">
-                    <div class="tab-card-title">市场区域分布</div>
-                    <div class="tab-card-content">
-                        <ve-map
-                            height="400px"
-                            :data="mapChartData"
-                            :init-options="initEchartsOptions"
-                            :after-config="mapConfig"
-                            :settings="mapSettings.chartSettings"
-                            :extend="mapSettings.chartExtend">
-                        </ve-map>
+                <!-- 有权限,并且数据为空。则展示空状态 -->
+                <div class="empty-container bg-white" key="zb-analysis-content" v-if="!getStatus && entPortraitInfo.project_count <= 0">
+                    <div class="empty-content-position">
+                        <div class="image">
+                            <img src="/common-module/public/image/jy-back.png">
+                        </div>
+                        <p class="empty-main tip-text2">当前条件下暂无中标项目,无法进行中标分析</p>
                     </div>
                 </div>
-                <div class="vip_component" v-if="getStatus" style="height:10.56rem;background:url('/common-module/collection/image/bg/vip_bg_4.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-                    <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_4" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_4.png?v={{Msg "seo" "version"}}'></vip-component>
-                </div>
-                <div class="bg-white tab-card charts"  v-if="conf._4 && rateData.rows.length !== 0  && !getStatus">
-                    <div class="tab-card-title">各类客户平均折扣率</div>
-                    <div class="tab-card-content">
-                        <ve-line
-                            height="314px"
-                            :data="rateData"
-                            :init-options="initEchartsOptions"
-                            :after-config="rateConfig"
-                            :extend="chartOptions.lineChart">
-                        </ve-line>
+                <template v-else key="zb-analysis-content">
+                    <!-- 中标统计结果--登登录 -->
+                    <div class="bg-white tab-card" data-cl-event="c_wx_open_buttionclick" v-if="!isFreeOrNotLogin">
+                        <div class="tab-card-title" style="padding: 0.16rem .32rem .12rem;">概况</div>
+                        <div class="card-row zb-info">
+                            <div class="card-column">
+                                <div class="ent-info-label">项目数量</div>
+                                <div class="ent-info-text">${entPortraitInfo.project_count ? entPortraitInfo.project_count + '个' : '--'}</div>
+                            </div>
+                            <div class="card-column">
+                                <div class="ent-info-label">项目金额</div>
+                                <div class="ent-info-text">${entPortraitInfo.bidamount_count ? utils.moneyUnit(entPortraitInfo.bidamount_count) : '--'}</div>
+                            </div>
+                            <div class="card-column">
+                                <div class="ent-info-label">项目省份</div>
+                                <div class="ent-info-text">${entPortraitInfo.area_count ? entPortraitInfo.area_count + '个' : '--'}</div>
+                            </div>
+                            <div class="card-column">
+                                <div class="ent-info-label">项目客户</div>
+                                <div class="ent-info-text">${entPortraitInfo.buyer_count ? entPortraitInfo.buyer_count + '个' : '--'}</div>
+                            </div>
+                        </div>
+                        <div class="zb-time-frame border-line-t">
+                            <span>数据统计范围:</span>
+                            <span>${entPortraitInfo.timeRangeStart ? new Date(entPortraitInfo.timeRangeStart * 1000).pattern('yyyy/MM/dd') : ''}</span>
+                            <span>-</span>
+                            <span>${entPortraitInfo.timeRangeEnd ? new Date(entPortraitInfo.timeRangeEnd * 1000).pattern('yyyy/MM/dd') : '至今'}</span>
+                            <span>(结果类公告发布时间)</span>
+                        </div>
                     </div>
-                    <div class="tab-card-tip">注:平均折扣率=(全部项目预算-全部中标金额)/全部项目预算,是指价格减让部分与原价的比率,仅统计预算和中标金额同时存在的项目。</div>
-                </div>
-                <div class="vip_component" v-if="getStatus" style="height:11.24rem;background:url('/common-module/collection/image/bg/vip_bg_5.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-                  <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_5" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_5.png?v={{Msg "seo" "version"}}'></vip-component>
-                </div>
-                <div class="bg-white tab-card charts"  v-show="conf._4 && entPortraitInfo.top10 && entPortraitInfo.top10.length != 0  && !getStatus">
-                    <div class="tab-card-title">客户类型分布</div>
-                    <div class="tab-card-content">
-                        <div ref="pieChart" style="height: 360px;width: 320px;margin: 0 auto;"></div>
+                    <!-- 中标信息统计结果--未登录-->
+                    <div class="bg-white tab-card charts"  style="margin-bottom: 10px;" v-if="isFreeOrNotLogin">
+                        <div class="tab-card-title">概况</div>
+                        <div class="vip_component" v-if="getStatus && hideDt"
+                            style="height:5.8rem;background:url('/common-module/collection/image/bg/qy-zbtj-bg.png?v={{Msg "seo" "version"}}') 40% 0 no-repeat;background-size:110% 100%;"
+                            key="dt">
+                            <vip-component @tabactive="tabActive" :power="conf" type="item_10" :can-free-exp="canFreeExp"
+                                        :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                                        imgurl='/common-module/collection/image/bg/qy-zbtj.png?v={{Msg "seo" "version"}}'>
+                            </vip-component>
+                        </div>
+                        
                     </div>
-                    <div class="tab-card-tip">注:各客户类型占比以中标金额计算,最多展示占比排名前十的客户类型。</div>
-                </div>
-                <div class="vip_component" v-if="getStatus" style="height:11.92rem;background:url('/common-module/collection/image/bg/vip_bg_6.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-                  <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_6" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_6.png?v={{Msg "seo" "version"}}'></vip-component>
-                </div>
-                <div class="bg-white tab-card customers client"  v-show="conf._4 && importantCustomers.length !== 0  && !getStatus">
-                    <div class="tab-card-title">重点及首次合作客户</div>
-                    <div class="tab-card-content">
-                    <div class="client-list" v-for="c in importantCustomers">
-                      <div class="c-top">
-                        <strong class="c-itemName">${c.title}</strong>
-                        <div class="top-switch">
-                          <div :class="{active: !c.showLabels}" @click="c.showLabels=false">重点客户</div>
-                          <div :class="{active: c.showLabels}" @click="c.showLabels=true">首次合作客户</div>
+                    <!-- 年度项目统计 -->
+                    <div class="bg-white tab-card charts" v-if="conf._4 && annualData.rows.length !== 0  && !getStatus">
+                        <div class="tab-card-title">年度项目统计</div>
+                        <!-- e-charts和sticky同时使用时候,需要手动降低css层级(z-index: 1),确保tooltip不遮挡固定定位头部 -->
+                        <div class="tab-card-content">
+                            <ve-histogram
+                                height="284px"
+                                :colors="colorGreen"
+                                :data="annualData"
+                                :init-options="initEchartsOptions"
+                                :after-config="annualConfig"
+                                :settings="annualSetting"
+                                :extend="barChart.chartExtend">
+                            </ve-histogram>
                         </div>
-                      </div>
-                      <div class="progress-bar-container" v-show="!c.showLabels">
-                        <div class="c-thead">
-                          <strong class="c-name">客户名称</strong>
-                          <span class="c-count">中标数量</span>
-                          <span class="c-rate">平均折扣率</span>
-                          <span class="c-time">最近合作日期</span>
+                        <div class="tab-card-tip">注:项目金额指所有项目的中标金额之和,少数缺失的中标金额,用项目预算补充。</div>
+                    </div>
+                    <div class="vip_component" v-if="getStatus" style="height:11.12rem;background:url('/common-module/collection/image/bg/vip_bg_2.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+                        <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_2" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_2.png?v={{Msg "seo" "version"}}'></vip-component>
+                    </div>
+                    <!-- 月度中标金额统计 -->
+                    <div class="bg-white tab-card charts"  v-if="conf._4 && monthZbData.rows.length !== 0  && !getStatus">
+                        <div class="tab-card-title">月度中标金额统计</div>
+                        <div class="tab-card-content">
+                            <ve-line
+                                height="284px"
+                                :data="monthZbData"
+                                :init-options="initEchartsOptions"
+                                :after-config="lineChartConfig"
+                                :extend="chartOptions.lineChart">
+                            </ve-line>
                         </div>
-                        <div class="progress-bar-item" v-for="(item,index) in c.list" :key="index" v-show="item.name">
-                          <div class="item-label">
-                            <span class="ellipsis-2 item-name" @click="toUnitPortrayal(item)">${item.name}</span>
-                            <span class="item-count">${item.count ? item.count + '个' : item.count}</span>
-                            <span class="item-rate">${(item.rate != null) ? item.rate + '%' : '--'}</span>
-                            <span class="item-time">${item.time}</span>
-                          </div>
-                          <div class="item-progress">
-                            <span class="item-money" v-if="item.money > 0">${utils.moneyUnit(item.money)}</span>
-                            <span class="item-progress-count active-progress" :style="{width: item.percent}"></span>
-                          </div>
+                        <div class="tab-card-tip">注:少数缺失的中标金额,用项目预算补充。</div>
+                    </div>
+                    <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_3.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+                        <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_3" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_3.png?v={{Msg "seo" "version"}}'></vip-component>
+                    </div>
+                    <!-- 市场区域分布 -->
+                    <div class="bg-white tab-card charts" v-if="conf._4 && mapChartData.rows.length !== 0  && !getStatus">
+                        <div class="tab-card-title">市场区域分布</div>
+                        <div class="tab-card-content">
+                            <ve-map
+                                height="400px"
+                                :data="mapChartData"
+                                :init-options="initEchartsOptions"
+                                :after-config="mapConfig"
+                                :settings="mapSettings.chartSettings"
+                                :extend="mapSettings.chartExtend">
+                            </ve-map>
+                        </div>
+                    </div>
+                    <div class="vip_component" v-if="getStatus" style="height:10.56rem;background:url('/common-module/collection/image/bg/vip_bg_4.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+                        <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_4" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_4.png?v={{Msg "seo" "version"}}'></vip-component>
+                    </div>
+                    <!-- 各类客户平均折扣率 -->
+                    <div class="bg-white tab-card charts"  v-if="conf._4 && rateData.rows.length !== 0  && !getStatus">
+                        <div class="tab-card-title">各类客户平均折扣率</div>
+                        <div class="tab-card-content">
+                            <ve-line
+                                height="314px"
+                                :data="rateData"
+                                :init-options="initEchartsOptions"
+                                :after-config="rateConfig"
+                                :extend="chartOptions.lineChart">
+                            </ve-line>
+                        </div>
+                        <div class="tab-card-tip">注:平均折扣率=(全部项目预算-全部中标金额)/全部项目预算,是指价格减让部分与原价的比率,仅统计预算和中标金额同时存在的项目。</div>
+                    </div>
+                    <div class="vip_component" v-if="getStatus" style="height:11.24rem;background:url('/common-module/collection/image/bg/vip_bg_5.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+                        <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_5" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_5.png?v={{Msg "seo" "version"}}'></vip-component>
+                    </div>
+                    <!-- 客户类型分布 -->
+                    <div class="bg-white tab-card charts"  v-show="conf._4 && entPortraitInfo.top10 && entPortraitInfo.top10.length != 0  && !getStatus">
+                        <div class="tab-card-title">客户类型分布</div>
+                        <div class="tab-card-content">
+                            <div ref="pieChart" style="height: 360px;width: 320px;margin: 0 auto;"></div>
                         </div>
-                      </div>
-                      <div class="progress-bar-container" v-show="c.showLabels">
-                        <div v-if="c.firstList&&c.firstList.length>0">
-                          <div class="c-thead">
-                            <strong class="c-name">客户名称</strong>
-                            <span class="c-count">中标数量</span>
-                            <span class="c-rate">平均折扣率</span>
-                            <span class="c-time">最近合作日期</span>
-                          </div>
-                          <div class="progress-bar-item" v-for="(item,index) in c.firstList" :key="index" v-show="item.name">
-                            <div class="item-label">
-                              <span class="ellipsis-2 item-name" @click="toUnitPortrayal(item)">${item.name}</span>
-                              <span class="item-count">${item.count ? item.count + '个' : item.count}</span>
-                              <span class="item-rate">${(item.rate != null) ? item.rate + '%' : '--'}</span>
-                              <span class="item-time">${item.time}</span>
+                        <div class="tab-card-tip">注:各客户类型占比以中标金额计算,最多展示占比排名前十的客户类型。</div>
+                    </div>
+                    <div class="vip_component" v-if="getStatus" style="height:11.92rem;background:url('/common-module/collection/image/bg/vip_bg_6.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+                        <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_6" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_6.png?v={{Msg "seo" "version"}}'></vip-component>
+                    </div>
+                    <!-- 重点及首次合作客户 -->
+                    <div class="bg-white tab-card customers client"  v-show="conf._4 && importantCustomers.length !== 0  && !getStatus">
+                        <div class="tab-card-title">重点及首次合作客户</div>
+                        <div class="tab-card-content">
+                        <div class="client-list" v-for="c in importantCustomers">
+                            <div class="c-top">
+                                <strong class="c-itemName">${c.title}</strong>
+                                <div class="top-switch">
+                                    <div :class="{active: !c.showLabels}" @click="c.showLabels=false">重点客户</div>
+                                    <div :class="{active: c.showLabels}" @click="c.showLabels=true">首次合作客户</div>
+                                </div>
                             </div>
-                            <div class="item-progress">
-                              <span class="item-money" v-if="item.money > 0">${utils.moneyUnit(item.money)}</span>
-                              <span class="item-progress-count active-progress" :style="{width: item.percent}"></span>
+                            <div class="progress-bar-container" v-show="!c.showLabels">
+                                <div class="c-thead">
+                                    <strong class="c-name">客户名称</strong>
+                                    <span class="c-count">中标数量</span>
+                                    <span class="c-rate">平均折扣率</span>
+                                    <span class="c-time">最近合作日期</span>
+                                </div>
+                                <div class="progress-bar-item" v-for="(item,index) in c.list" :key="index" v-show="item.name">
+                                    <div class="item-label">
+                                        <span class="ellipsis-2 item-name" @click="toUnitPortrayal(item)">${item.name}</span>
+                                        <span class="item-count">${item.count ? item.count + '个' : item.count}</span>
+                                        <span class="item-rate">${(item.rate != null) ? item.rate + '%' : '--'}</span>
+                                        <span class="item-time">${item.time}</span>
+                                    </div>
+                                    <div class="item-progress">
+                                        <span class="item-money" v-if="item.money > 0">${utils.moneyUnit(item.money)}</span>
+                                        <span class="item-progress-count active-progress" :style="{width: item.percent}"></span>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="progress-bar-container" v-show="c.showLabels">
+                                <div v-if="c.firstList&&c.firstList.length>0">
+                                <div class="c-thead">
+                                    <strong class="c-name">客户名称</strong>
+                                    <span class="c-count">中标数量</span>
+                                    <span class="c-rate">平均折扣率</span>
+                                    <span class="c-time">最近合作日期</span>
+                                </div>
+                                <div class="progress-bar-item" v-for="(item,index) in c.firstList" :key="index" v-show="item.name">
+                                    <div class="item-label">
+                                        <span class="ellipsis-2 item-name" @click="toUnitPortrayal(item)">${item.name}</span>
+                                        <span class="item-count">${item.count ? item.count + '个' : item.count}</span>
+                                        <span class="item-rate">${(item.rate != null) ? item.rate + '%' : '--'}</span>
+                                        <span class="item-time">${item.time}</span>
+                                    </div>
+                                    <div class="item-progress">
+                                        <span class="item-money" v-if="item.money > 0">${utils.moneyUnit(item.money)}</span>
+                                        <span class="item-progress-count active-progress" :style="{width: item.percent}"></span>
+                                    </div>
+                                </div>
+                                </div>
+                                <div v-else style="display:flex;flex-direction:column;justify-content:center;align-items:center;padding:.4rem;">
+                                    <div style="height:4rem;width:4rem;background:url('/common-module/collection/image/jy-back.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%"></div>
+                                    <span style="font-size: .28rem;line-height: 20px;color: #9B9CA3;">该时间范围暂无首次合作过的客户</span>
+                                </div>
                             </div>
-                          </div>
                         </div>
-                        <div v-else style="display:flex;flex-direction:column;justify-content:center;align-items:center;padding:.4rem;">
-                          <div style="height:4rem;width:4rem;background:url('/common-module/collection/image/jy-back.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%"></div>
-                          <span style="font-size: .28rem;line-height: 20px;color: #9B9CA3;">该时间范围暂无首次合作过的客户</span>
                         </div>
-                      </div>
                     </div>
-                  </div>
-                </div>
-                <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_7.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-                  <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_7" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_7.png?v={{Msg "seo" "version"}}'></vip-component>
-                </div>
+                    <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_7.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+                        <vip-component :islogin="isLogin" data-cl-event="c_wx_open_buttionclick" @tabactive="tabActive" :power="conf" type="item_7" :entvisit="entvisit" :can-free-exp="canFreeExp" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_7.png?v={{Msg "seo" "version"}}'></vip-component>
+                    </div>
+                </template>
             </van-tab>
         </van-tabs>
         <div class="j-main project-tab-container" v-if="conf.powerLoaded && !conf.showPortraitAll">
             <div class="j-container empty" v-show="topProject.list.length === 0">
                 <div class="j-img img-empty empty-img"></div>
-                <p class="empty-text">暂无项目动态</p>
+                <p class="empty-text">暂无中标动态</p>
             </div>
             <div class="j-container bg-white tab-card cell-list" v-show="topProject.list.length !== 0">
-                <div class="j-header tab-card-title">项目动态</div>
+                <div class="j-header tab-card-title">中标动态</div>
                 <div class="j-main tab-card-content">
                     <ul class="project-info-list">
                         <li

+ 20 - 8
src/web/templates/frontRouter/wx/collection/sess/ent_portrait_change.html

@@ -10,7 +10,7 @@
     <meta name="apple-mobile-web-app-status-bar-style" content="black">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
-    <title>企业情报历史记录</title>
+    <title>工商变动</title>
     <script src="/big-member/js/rem.js"></script>
     <script src="/big-member/js/utils.js"></script>
     <!--S 加载百度统计及剑鱼自定义埋点 -->
@@ -53,16 +53,16 @@
 <div class="j-container">
     {{include "/big-member/header.html"}}
     <div id="ent-portrait-change" class="j-main" v-cloak>
-        <div class="j-container" v-show="changeList.length === 0 && getStatus" key="changeList">
+        <div class="j-container" v-if="noData" key="changeList">
             <div class="empty-group">
                 <div class="j-img img-empty empty-img"></div>
-                <p class="empty-text">暂无企业情报历史记录</p>
+                <p class="empty-text">暂无工商变动</p>
             </div>
         </div>
-        <div class="vip_component bigVip_com" v-show="!getStatus" style="height:100%;background:url('/common-module/collection/image/bg/vip_bg_8.png') no-repeat;background-size:100% 100%">
-            <vip-component data-cl-event="c_wx_free_buttonclick" type="item_8" :power="conf" :vipststus="vipststus" :entvisit="entvisit" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_8.png'></vip-component>
+        <div class="vip_component bigVip_com" v-if="!hasPower" style="height:100%;background:url('/common-module/collection/image/bg/vip_bg_8.png') no-repeat;background-size:100% 100%">
+            <vip-component data-cl-event="c_wx_free_buttonclick" islogin type="item_8" :power="conf" :vipststus="vipststus" :entvisit="entvisit" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_8.png'></vip-component>
         </div>
-        <ul class="ent-change-list" v-show="!(changeList.length === 0 && getStatus)" key="changeList">
+        <ul class="ent-change-list" v-else key="changeList">
             <li class="ent-change-item" v-for="(item,index) in changeList" :key="item.changeTime">
                 <div class="header-time">${new Date(item.changeTime).pattern('yyyy.MM.dd')}</div>
                 <ul class="change-type-list bg-white" v-for="(iitem, iindex) in item.changeTerms" :key="iindex">
@@ -100,12 +100,14 @@ var vNode = {
     data: {
         eId: '',
         changeList: [],
+        changeListLoaded: false,
         entvisit: {
             total: 0, // 本月画像次数总量
             usage: 0, // 本月已使用次数
             provin: 0 // 购买省份数量
         },
         powerInfo: {},
+        powerInfoLoaded: false,
         conf: {
             _12: false,
             isMember: 0
@@ -125,7 +127,11 @@ var vNode = {
         this.getEntHistory()
     },
     computed: {
-        getStatus: function () {
+        noData: function () {
+            return this.changeList.length === 0 && this.changeListLoaded && this.hasPower
+        },
+        hasPower: function () {
+            // 超级订阅用户没有企业情报监控权限,显示购买页
             return this.conf._12
         }
     },
@@ -155,12 +161,15 @@ var vNode = {
                             }
                         }
                         if (power.indexOf(12) != -1) {
-                            // 获取企业情报历史记录-12
+                            // 获取企业情报历史记录(工商变动)-12
                             _this.conf._12 = true
                             $('.bigVip_com').css({'display':'flex'})
                         }
                         _this.conf.isMember = res.data.memberStatus
                     }
+                },
+                complete: function () {
+                    _this.powerInfoLoaded = true
                 }
             })
         },
@@ -198,6 +207,9 @@ var vNode = {
                 },
                 error: function (error) {
                     console.log(error)
+                },
+                complete: function () {
+                    _this.changeListLoaded = true
                 }
             })
         },