瀏覽代碼

Merge branch 'dev4.5.5' of http://127.0.0.1:8080/qmx/jy into dev4.5.5

zhangxinlei1996 4 年之前
父節點
當前提交
8b69d0083e
共有 57 個文件被更改,包括 2902 次插入72 次删除
  1. 1 1
      src/jfw/front/frontRouter.go
  2. 145 10
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js
  3. 二進制
      src/jfw/modules/app/src/web/staticres/jyapp/images/big-drain.png
  4. 22 1
      src/jfw/modules/app/src/web/templates/big-member/page_buy_commit.html
  5. 75 4
      src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html
  6. 23 1
      src/jfw/modules/app/src/web/templates/commonPay/checkout.html
  7. 10 6
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  8. 18 17
      src/jfw/modules/bigmember/src/entity/portrait.go
  9. 1 1
      src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go
  10. 23 11
      src/jfw/modules/bigmember/src/service/portrait/memberPortraitAction.go
  11. 8 1
      src/jfw/modules/bigmember/src/service/use/use.go
  12. 1 1
      src/jfw/modules/common/src/qfw/util/jy/bigVipPower.go
  13. 2 1
      src/jfw/modules/publicapply/src/drainage/biddingtype.json
  14. 58 0
      src/jfw/modules/publicapply/src/drainage/entity/buyerunit.go
  15. 4 3
      src/jfw/modules/publicapply/src/drainage/initjson/initjson.go
  16. 4 3
      src/jfw/modules/publicapply/src/drainage/service/action.go
  17. 34 0
      src/jfw/modules/publicapply/src/drainage/service/buyerunit.go
  18. 487 0
      src/web/staticres/big-member/css/unit_portrayal.css
  19. 二進制
      src/web/staticres/big-member/image/working.gif
  20. 1245 0
      src/web/staticres/big-member/js/unit_portrayal.js
  21. 二進制
      src/web/staticres/common-module/collection/image/buyer/01-bg.png
  22. 二進制
      src/web/staticres/common-module/collection/image/buyer/01.png
  23. 二進制
      src/web/staticres/common-module/collection/image/buyer/02-bg.png
  24. 二進制
      src/web/staticres/common-module/collection/image/buyer/02.png
  25. 二進制
      src/web/staticres/common-module/collection/image/buyer/03-bg.png
  26. 二進制
      src/web/staticres/common-module/collection/image/buyer/03.png
  27. 二進制
      src/web/staticres/common-module/collection/image/buyer/04-bg.png
  28. 二進制
      src/web/staticres/common-module/collection/image/buyer/04.png
  29. 二進制
      src/web/staticres/common-module/collection/image/buyer/05-bg.png
  30. 二進制
      src/web/staticres/common-module/collection/image/buyer/05.png
  31. 二進制
      src/web/staticres/common-module/collection/image/buyer/06-bg.png
  32. 二進制
      src/web/staticres/common-module/collection/image/buyer/06.png
  33. 二進制
      src/web/staticres/common-module/collection/image/buyer/07-bg.png
  34. 二進制
      src/web/staticres/common-module/collection/image/buyer/07.png
  35. 二進制
      src/web/staticres/common-module/collection/image/buyer/08-bg.png
  36. 二進制
      src/web/staticres/common-module/collection/image/buyer/08.png
  37. 二進制
      src/web/staticres/common-module/collection/image/buyer/09-bg.png
  38. 二進制
      src/web/staticres/common-module/collection/image/buyer/09.png
  39. 二進制
      src/web/staticres/common-module/collection/image/buyer/10-bg.png
  40. 二進制
      src/web/staticres/common-module/collection/image/buyer/10.png
  41. 二進制
      src/web/staticres/common-module/collection/image/buyer/11-bg.png
  42. 二進制
      src/web/staticres/common-module/collection/image/buyer/11.png
  43. 二進制
      src/web/staticres/common-module/collection/image/buyer/12-bg.png
  44. 二進制
      src/web/staticres/common-module/collection/image/buyer/12.png
  45. 206 0
      src/web/staticres/common-module/collection/js/buyer-example.js
  46. 3 1
      src/web/staticres/common-module/collection/js/history-project.js
  47. 21 1
      src/web/staticres/css/wxcontentinfo.css
  48. 二進制
      src/web/staticres/images/big-drain.png
  49. 二進制
      src/web/staticres/images/pc-drainage-bg.png
  50. 18 2
      src/web/templates/big-member/pc/page_buy_commit.html
  51. 29 3
      src/web/templates/big-member/pc/page_index.html
  52. 23 2
      src/web/templates/big-member/wx/page_buy_commit.html
  53. 390 0
      src/web/templates/big-member/wx/page_unit_portrayal.html
  54. 14 0
      src/web/templates/order/pc/orderPay.html
  55. 2 1
      src/web/templates/pc/member_orderDetail.html
  56. 22 0
      src/web/templates/weixin/commonPay/checkout.html
  57. 13 1
      src/web/templates/weixin/wxinfocontent_rec.html

+ 1 - 1
src/jfw/front/frontRouter.go

@@ -156,7 +156,7 @@ func (this *CommonRouter) BigpcPage(htmlPage string) error {
 	return this.doPcBigPage(htmlPage)
 }
 
-var bigVipFreePageReg = regexp.MustCompile(`set_*|free_*`)
+var bigVipFreePageReg = regexp.MustCompile(`set_*|free_*|unit_portrayal`)
 
 func (this *CommonRouter) doPcBigPage(pageSign string) error {
 	userid, _ := this.GetSession("userId").(string)

+ 145 - 10
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js

@@ -4,7 +4,8 @@ var vNode = {
     delimiters: ['${', '}'],
     el: '#unit_portrayal',
     components: {
-      hisproComponent: hisproComponent
+      hisproComponent: hisproComponent,
+      buyerExample: buyerExample,
     },
     data() {
         // 修改柱状条颜色为渐变色
@@ -113,7 +114,10 @@ var vNode = {
             timer: null,
             initRendererSvg:{
                 renderer:'svg'
-            }
+            },
+            bigStatus: 0,
+            encryptId: '', // 首次埋点返回的加密id 用于点击去开通传参
+            power: []
         }
     },
     computed: {
@@ -130,7 +134,7 @@ var vNode = {
             var show_10 = this.isShow.showAge;
             var show_11 = this.isShow.showArea;
             var show_12 = this.isShow.showAgency;
-            if(!show_1 && !show_2 && !show_3 && !show_4 && !show_5 && !show_6 && !show_7 && !show_8 && !show_9 && !show_10 && !show_11 && !show_12) {
+            if(!show_1 && !show_2 && !show_3 && !show_4 && !show_5 && !show_6 && !show_7 && !show_8 && !show_9 && !show_10 && !show_11 && !show_12 && this.power.indexOf(5) > -1) {
                 return true;
             } else {
                 return false;
@@ -148,10 +152,14 @@ var vNode = {
             }).filter(function (v,i) {
                 return v.topData.length
             })
-        }
+        },
+        getStatus: function () {
+          return this.power.indexOf(5)  == -1 // power == 5
+        },
     },
     created () {
-        this.init();
+      this.getPowerInfo()
+      this.init();
     },
     mounted: function () {
         this.buyer.name = decodeURIComponent(utils.getParam('entName'));
@@ -168,6 +176,96 @@ var vNode = {
         }
     },
     methods: {
+        // 获取权限信息
+        getPowerInfo: function () {
+            var _this = this
+            $.ajax({
+              type: 'GET',
+              url: '/bigmember/use/isAdd?t=' + Date.now(),
+              success: function (res) {
+                  if (res.data) {
+                    _this.power = res.data.power
+                    _this.bigStatus = res.data.memberStatus
+                    var entniche = res.data.entniche
+                    var member = res.data.memberStatus
+                    var vip = res.data.vipStatus
+                    var userType = ''
+                    if (vip > 0) {
+                      userType = '1'
+                    }
+                    if (member > 0) {
+                      if (userType !== '') {
+                        userType += ','
+                      }
+                      userType += '2'
+                    }
+                    if (entniche) {
+                      if (userType !== '') {
+                        userType += ','
+                      }
+                      userType += '3'
+                    }
+                    if (userType === '') {
+                      userType = '0'
+                    }
+                    // 没有采购单位画像权限的 则添加埋点
+                    if (res.data.power.indexOf(5) === -1) {
+                      _this.getBuried(userType)
+                    }
+                  }
+              },
+              error: function (error) {
+                console.log(error)
+              }
+            })
+        },
+        // 进入页面埋点 非大会员用户请求
+        getBuried: function(type) {
+          var _this = this
+          var params = {
+            userType: type,
+            platform: utils.isIos ? 'AI' : 'AA'
+          }
+          $.ajax({
+            type: 'POST',
+            url: '/publicapply/drainage/buyerunit',
+            contentType: "application/json",
+            data: JSON.stringify(params),
+            success: function (res) {
+                if (res.data && res.data.status) {
+                  _this.encryptId = res.data.id
+                }
+            },
+            error: function (error) {
+              console.log(error)
+            }
+          })
+        },
+        // 点击去开通埋点方法
+        goBuyBuried: function(text) {
+          var _this = this
+          var params = {
+            mold: 'isCBBT',
+            id: _this.encryptId,
+            introduce: text
+          }
+          $.ajax({
+            type: 'POST',
+            url: '/publicapply/drainage/buyerunit',
+            contentType: "application/json",
+            data: JSON.stringify(params),
+            success: function (res) {
+              console.log(res)
+              setTimeout(function() {
+                location.href = '/jyapp/big/page/buy_commit?bid=' + _this.encryptId
+              }, 200)
+            },
+            error: function (error) {
+              console.log(error)
+              location.href = '/jyapp/big/page/buy_commit?bid=' + _this.encryptId
+            }
+          })
+        },
         init() {
             setTimeout(function() {
                 window.addEventListener('resize', function() {
@@ -234,6 +332,10 @@ var vNode = {
                             that.dt.isNext = false
                         }
                     } else if (that.dt.isMore === 'more') {
+                        if (that.power.indexOf(5) == -1) {
+                          that.openDialog()
+                          return
+                        }
                         that.dt.isMore = 'max'
                         if(res.data.count <= 23) {
                             that.dt.isNext = false
@@ -378,8 +480,8 @@ var vNode = {
           this.statistics.province = data.province ? data.province.replace(/省|市|自治区|特别行政区|壮族|回族|维吾尔/g, '') : '--';
           this.statistics.city = data.city;
           this.statistics.buyerClass = data.buyerclass ? data.buyerclass : '--';
-          this.statistics.start = new Date(Number(data.timeRange.start + '000')).pattern('yyyy/MM/dd');
-          this.statistics.end = new Date(Number(data.timeRange.end + '000')).pattern('yyyy/MM/dd');
+          this.statistics.start = data.timeRange ? new Date(Number(data.timeRange.start + '000')).pattern('yyyy/MM/dd'): '';
+          this.statistics.end = data.timeRange ? new Date(Number(data.timeRange.end + '000')).pattern('yyyy/MM/dd') : '';
           this.statistics.buyerCount = data.project_count ? data.project_count + '个' : '--';
           this.statistics.winnerCount = data.winner_count ? data.winner_count + '个' : '--';
           this.statistics.otherWinner = data.otherProvincesWinnerCount ? data.otherProvincesWinnerCount + '个' : '--';
@@ -1088,12 +1190,45 @@ var vNode = {
             item.positionTop = (index + 1)*20 + 'px'
             this.doubleBar.info = item
         },
+        // dialog
+        openDialog: function () {
+          var _this = this
+          this.$dialog.confirm({
+            width: 303,
+            className: 'custom-dialog',
+            title: '您暂无使用权限',
+            message: '开通大会员,采购单位项目动态全面获取,帮助企业洞察采购需求,开发新客户!',
+            messageAlign:'left',
+            confirmButtonText: _this.power.indexOf(5) < 0 && _this.bigStatus > 0 ? '联系客服' : '去开通',
+            confirmButtonColor: '#2ABED1',
+            showCancelButton: true,
+            cancelButtonText: '取消'
+          }).then(function(){
+            if (_this.power.indexOf(5) < 0 && _this.bigStatus > 0) {
+              try {
+                JyObj.callPhone('400-108-6670');
+              } catch (error) {
+                console.log(error)
+              }
+            } else {
+              _this.goBuyBuried('开通大会员,采购单位项目动态全面获取,帮助企业洞察采购需求,开发新客户!')
+            }
+          }).catch(function(err) {
+            console.log(err)
+          });
+        },
         // 跳转三级页
         goDetail: function(item){
-            if (item.id) {
-                var href = '/jyapp/article/content/' + item.id + '.html'
-                location.href = href
+          if (item.id) {
+            var href = '/jyapp/article/content/' + item.id + '.html'
+            location.href = href
+          } else {
+            if (this.power.indexOf(5) == -1) {
+              this.openDialog()
+            } else {
+              console.log('没有id')
             }
+          }
         },
         // 求最大项目数量
         getMaxProjectCount: function (analysisArr) {

二進制
src/jfw/modules/app/src/web/staticres/jyapp/images/big-drain.png


+ 22 - 1
src/jfw/modules/app/src/web/templates/big-member/page_buy_commit.html

@@ -465,6 +465,7 @@
                     level = 1
                 }
                 var paramsMid = utils.getParam('mid') //引流语文案id
+                var buyerId = utils.getParam('bid') //采购单位画像跳转携带的参数
                 $.ajax({
                     type:'POST',
                     url:'/jypay/bigmember/createOrder',
@@ -494,9 +495,29 @@
                                 console.log(error)
                               }
                             }
+                            // 采购单位画像跳转过来的埋点
+                            if (buyerId) {
+                              var params = {
+                                mold: 'isOBT',
+                                price: Number(_this.afterall.replace(',', ''))*100,
+                                orderCode: res.data.order_code
+                              }
+                              $.ajax({
+                                type: 'POST',
+                                url: '/publicapply/drainage/buyerunit',
+                                contentType: "application/json",
+                                data: JSON.stringify(params),
+                                success: function (res) {
+                                  console.log(res)
+                                },
+                                error: function (error) {
+                                  console.log(error)
+                                }
+                              })
+                            }
                             setTimeout(function() {
                               history.replaceState({}, '', '/jyapp/big/page/orderdetail_member?order_code=' + res.data.order_code);
-                            location.href = '/jyapp/pay/checkout_member?orderCode='+res.data.order_code+'&from=buy&mid=' + paramsMid;
+                            location.href = '/jyapp/pay/checkout_member?orderCode='+res.data.order_code+'&from=buy&mid=' + paramsMid + '&bid=' + buyerId;
                             }, 300)
                         }else {
                             alert(res.error_msg)

+ 75 - 4
src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html

@@ -40,6 +40,27 @@
             z-index: 999;
             min-height: 284px;
         }
+        .vip_component{
+          position: relative;
+          margin-top: -1px;
+        }
+        .example-title{
+          position: absolute;
+          top:.32rem;
+          left:0.32rem;
+          font-size: .36rem;
+        }
+        .d_title{
+          font-weight: normal;
+        }
+        .vip_openDialog{
+            padding: 0.56rem 0 0.64rem;
+            width: 6.06rem;
+            /* height: 6.88rem; */
+            background: url('{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/image/openVip.png') no-repeat;
+            background-size: 100% 100%;
+            box-sizing: border-box;
+        }
     </style>
 </head>
 <body>
@@ -85,10 +106,6 @@
                 <div class="j-img img-empty empty-img"></div>
                 <p class="empty-text">暂无画像信息</p>
             </div>
-            <!-- 历史项目联系人 -->
-            <div class="history-list">
-                <hispro-component type="buyer" :buyer="buyer.name"></hispro-component>
-            </div>
             <!-- 招标动态 -->
             <div class="dynamic" v-if="isShow.showDynamic">
                 <div class="d_title">招标动态</div>
@@ -111,6 +128,14 @@
                     </div>
                 </div>
             </div>
+            <!-- 历史项目联系人 -->
+            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">历史项目联系方式</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_1" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/01.png'></buyer-example>
+            </div>
+            <div v-else>
+              <hispro-component class="history-list" type="buyer" :buyer="buyer.name"></hispro-component>
+            </div>
             <!-- 年度项目统计 -->
             <div class="years" v-if="isShow.showYearData">
                 <div class="chart_title">年度项目统计</div>
@@ -126,6 +151,10 @@
                 </ve-histogram>
                 <div class="bar-tip">注:项目金额指所有项目的中标金额之和,少数缺失的中标金额,用项目预算补充。</div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/02-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">年度项目统计</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_2" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/02.png'></buyer-example>
+            </div>
             <!-- 月度采购规模统计 -->
             <div class="month-scale" v-if="isShow.showMonthScale">
                 <div class="chart_title">月度采购规模统计</div>
@@ -135,6 +164,10 @@
                 </div>
                 <div class="bar-tip">注:采购规模指中标金额,少数缺失的中标金额,用项目预算补充。</div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/03-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">月度采购规模统计</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_3" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/03.png'></buyer-example>
+            </div>
             <!-- 采购规模分布 -->
             <div class="scale-distribute" v-if="isShow.showScaleFb">
                 <div class="chart_title">采购规模分布</div>
@@ -143,6 +176,10 @@
                 </div>
                 <div class="bar-tip">注:平均节支率=(全部项目预算-全部中标金额)/全部项目预算,是指价格减让部分与原价的比率,仅统计预算和中标金额同时存在的项目。</div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/04-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">采购规模分布</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_4" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/04.png'></buyer-example>
+            </div>
             <!-- 各类招标方式占比(双柱图) -->
             <div class="double-bar" v-if="isShow.showBidType">
                 <div class="chart_title">各类招标方式占比</div>
@@ -193,6 +230,10 @@
                     </div>
                 </div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:8.8rem;background:url('/common-module/collection/image/buyer/05-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">各类招标方式占比</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_5" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/05.png'></buyer-example>
+            </div>
             <!-- 各行业项目平均节支率 -->
             <div class="savings-rate" v-if="isShow.showSaveRate">
                 <div class="chart_title">各行业项目平均节支率</div>
@@ -200,6 +241,10 @@
                     <ve-line :init-options="initRendererSvg" :data="savingsRateData" height="314px" :after-config="savingsRateConfig" :extend="chartOptions.lineChart"></ve-line>
                 </div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/06-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">各行业项目平均节支率</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_6" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/06.png'></buyer-example>
+            </div>
             <!-- 各行业项目规模占比 -->
             <div class="industry-scale-rate" v-if="isShow.showScaleRate">
                 <p class="chart_title">各行业项目规模占比</p>
@@ -207,6 +252,10 @@
                     <div ref="pieChart" style="height: 360px;"></div>
                 </div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:11.2rem;background:url('/common-module/collection/image/buyer/07-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">各行业项目规模占比</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_7" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/07.png'></buyer-example>
+            </div>
             <!-- 重点合作企业 -->
             <div class="client" v-if="computedClientList && computedClientList.length> 0">
                 <div class="client-title">重点合作企业</div>
@@ -235,6 +284,10 @@
                     </div>
                 </div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/08-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">重点合作企业</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_8" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/08.png'></buyer-example>
+            </div>
             <!-- 合作企业注册资本分布 -->
             <div class="industry-scale-rate" v-if="isShow.showCapital">
                 <p class="chart_title">合作企业注册资本分布</p>
@@ -242,6 +295,10 @@
                     <ve-histogram :init-options="initRendererSvg" height="284px" set-option-opts :data="regCapitalData" :after-config="regCapConfig" :settings="regCapSettings" :extend="chartOptions.barLineChart.chartExtend"> </ve-histogram>
                 </div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/09-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">合作企业注册资本分布</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_9" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/09.png'></buyer-example>
+            </div>
             <!-- 合作企业年龄分布 -->
             <div class="industry-scale-rate" v-if="isShow.showAge">
                 <p class="chart_title">合作企业年龄分布</p>
@@ -249,6 +306,10 @@
                     <ve-histogram :init-options="initRendererSvg" height="284px" :data="workingAgeData" :after-config="workingAgeConfig" :extend="chartOptions.barLineChart.chartExtend"> </ve-histogram>
                 </div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/10-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">合作企业年龄分布</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_10" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/10.png'></buyer-example>
+            </div>
             <!-- 合作企业注册地分布 -->
             <div class="industry-scale-rate" v-if="isShow.showArea">
                 <p class="chart_title">合作企业注册地分布</p>
@@ -263,6 +324,10 @@
                     </ve-map>
                 </div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/11-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">合作企业注册地分布</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_11" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/11.png'></buyer-example>
+            </div>
             <!-- 重点合作代理机构 -->
             <div class="agency" v-if="isShow.showAgency">
                 <div class="agency-title">重点合作代理机构</div>
@@ -286,6 +351,10 @@
                     </div>
                 </div>
             </div>
+            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/12-bg.png') no-repeat;background-size:100% 100%">
+              <p class="example-title">重点合作代理机构</p>
+              <buyer-example :status="bigStatus" :power="power" type="item_12" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/12.png'></buyer-example>
+            </div>
         </div>
     </div>
 </div>
@@ -307,7 +376,9 @@
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/echarts_option.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/chart_options.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/buyer-example.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/history-project.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/unit_portrayal.js?v={{Msg "seo" "version"}}'></script>
 {{include "/common/baiducc.html"}}
 </body>

+ 23 - 1
src/jfw/modules/app/src/web/templates/commonPay/checkout.html

@@ -309,7 +309,7 @@
                                     iconHide: true,
                                     duration: 1500,
                                     callback: function () {
-                                      // 支付成功 判断有没有引流语id,有 需要埋点
+                                      // 三级页引流过来的埋点
                                       if (checkout.getUrlParam('mid')) {
                                         try {
                                           $.ajax({
@@ -325,6 +325,28 @@
                                         } catch (error) {
                                           console.log(error)
                                         }
+                                      }
+                                      // 采购单位画像引流过来的埋点
+                                      if (checkout.getUrlParam('bid')) {
+                                        try {
+                                          var params = {
+                                            mold: 'isPaid'
+                                          }
+                                          $.ajax({
+                                            type: 'POST',
+                                            url: '/publicapply/drainage/buyerunit',
+                                            contentType: "application/json",
+                                            data: JSON.stringify(params),
+                                            success: function (res) {
+                                              console.log(res)
+                                            },
+                                            error: function (error) {
+                                              console.log(error)
+                                            }
+                                          })
+                                        } catch (error) {
+                                          console.log(error)
+                                        }
                                       }
                                        var  bigmemberBid=checkout.getUrlParam("b");
                                         var href="/jyapp/{{.T.doType}}/paySuccess?orderCode=" + res.orderCode + "&email=" + res.email + "&payTime=" + res.payTime + "&pay_way=" + res.pay_way + "&price=" + res.price + "&t={{.T.t}}"

+ 10 - 6
src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html

@@ -1490,12 +1490,16 @@
                 anchor: '采购单位全景分析',
                 landname: rerbuyer
             }
-            if(bigstatus <= 0 || hasServiceArr.indexOf(5) == -1){
-                location.href = '/jyapp/big/page/landingPage'
-                sessionStorage.setItem('landinfo',JSON.stringify(landinfo))
-            }else {
-                location.href = "/jyapp/big/page/unit_portrayal?entName="+encodeURIComponent(rerbuyer)
-            }
+            /*
+              if(bigstatus <= 0 || hasServiceArr.indexOf(5) == -1){
+                  location.href = '/jyapp/big/page/landingPage'
+                  sessionStorage.setItem('landinfo',JSON.stringify(landinfo))
+              }else {
+                  location.href = "/jyapp/big/page/unit_portrayal?entName="+encodeURIComponent(rerbuyer)
+              }
+            */
+            //  大会员用户、非大会员用户都可跳转采购单位画像
+            location.href = "/jyapp/big/page/unit_portrayal?entName="+encodeURIComponent(rerbuyer)
         }
 
       })

+ 18 - 17
src/jfw/modules/bigmember/src/entity/portrait.go

@@ -20,22 +20,22 @@ const (
 )
 
 //大会员
-func CreatePortraitManager(userid string, pageFlag string) (*Portrait, error) {
+func CreatePortraitManager(userid string, pageFlag string) (*Portrait, bool, error) {
 	if userid == "" {
-		return nil, errors.New("未登录")
+		return nil, false, errors.New("未登录")
 	}
 	bigMsg := jy.GetBigVipUserBaseMsg(userid, db.Mysql, db.Mgo)
 
 	if pageFlag == "" {
-		return nil, errors.New("未知请求")
+		return nil, false, errors.New("未知请求")
 	}
 	if pageFlag != "entDetail" { ////企业基本信息接口 无权限控制
 		if bigMsg.Status <= 0 || !bigMsg.CheckBigVipBackPower(pageFlag) {
-			return nil, errors.New("非法请求")
+			return &Portrait{userid}, false, nil
 		}
 	}
 	uid := qutil.If(bigMsg.Pid == "", userid, bigMsg.Pid).(string) //若为子账号则显示主账号行业信息
-	return &Portrait{uid}, nil
+	return &Portrait{uid}, true, nil
 }
 
 //超级订阅
@@ -183,14 +183,14 @@ func (this *Portrait) WinnerPortraitData(entId string) (map[string]interface{},
 }
 
 //采购单位画像-查询最新项目动态
-func (this *Portrait) GetBuyerNewMsg(buyer string, start, limit int) ([]map[string]interface{}, error) {
+func (this *Portrait) GetBuyerNewMsg(buyer string, start, limit int, hasPower bool) ([]map[string]interface{}, error) {
 	if buyer == "" {
 		return nil, errors.New("企业名称异常")
 	}
 	if start > PortraitNewMegsLimit || start+limit > PortraitNewMegsLimit {
 		return nil, errors.New("超出检索限制")
 	}
-	return GetBuyerNewProject(buyer, start, limit), nil
+	return GetBuyerNewProject(buyer, start, limit, hasPower), nil
 }
 
 //采购单位画像
@@ -218,7 +218,7 @@ func (this *Portrait) GetBuyerNewCount(buyer string) int64 {
 //a段数据=timeRange、city、province、buyerclass、bidamount_count、fail_count、project_count、winner_count、otherProvincesWinnerCount、yearData、monthData、moneyRange、bidtypeData、rate、top12、topAgencyData
 //b段数据=topShow
 //c段数据=withCapitalData、withAreaData、withEstablishData
-func (this *Portrait) BuyerPortraitData(buyer string, flag string) (map[string]interface{}, error) {
+func (this *Portrait) BuyerPortraitData(buyer string, flag string, hasPower bool) (map[string]interface{}, error) {
 	if buyer == "" {
 		return nil, errors.New("企业名称异常")
 	}
@@ -226,16 +226,17 @@ func (this *Portrait) BuyerPortraitData(buyer string, flag string) (map[string]i
 	if !(flag == "a" || flag == "b" || flag == "c" || flag == "") {
 		return nil, errors.New("参数异常")
 	}
-
-	//buyerPortraitData := TryFunc(GetPortraitCache, buyer, "buyer", 2)
-	//buyerPortraitData, err := GetBuyerPortraitData(buyer)
-	//if err != nil {
-	//	return nil, err
-	//}
-	//
-
+	if !hasPower { //免费返回字段
+		if buyerPortraitAllData := TryFunc(GetPortraitCacheByStep, buyer, fmt.Sprintf("buyer"), 2); buyerPortraitAllData != nil {
+			freeReturnMap := map[string]interface{}{}
+			for _, key := range []string{"timeRange", "city", "province", "buyerclass", "fail_count", "project_count", "winner_count", "otherProvincesWinnerCount"} {
+				freeReturnMap[key] = buyerPortraitAllData[key]
+			}
+			return freeReturnMap, nil
+		}
+		return nil, nil
+	}
 	buyerPortraitData := TryFunc(GetPortraitCacheByStep, buyer, fmt.Sprintf("buyer_%s", flag), 2)
-
 	if flag == "" || flag == "b" { //只有查询全部或者查询b分布画像时,返回内容有重点合作企业
 		if buyerPortraitData != nil {
 			//重点合作企业 展示读者行业

+ 1 - 1
src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go

@@ -25,7 +25,7 @@ const (
 )
 
 //采购单位最新中标动态查询
-func GetBuyerNewProject(buyer string, start, size int) []map[string]interface{} {
+func GetBuyerNewProject(buyer string, start, size int, hasPower bool) []map[string]interface{} {
 	defer qutil.Catch()
 	res := elastic.GetPage("projectset", "projectset", `{"TERM_buyer":"`+buyer+`"}`, `{"firsttime":-1}`, buyerNewProjectSearchFields, start, size)
 	if res == nil || len(*res) == 0 {

+ 23 - 11
src/jfw/modules/bigmember/src/service/portrait/memberPortraitAction.go

@@ -3,6 +3,7 @@ package portrait
 import (
 	. "api"
 	"entity"
+	"fmt"
 	"github.com/go-xweb/xweb"
 	"log"
 	qutil "qfw/util"
@@ -27,7 +28,7 @@ type EntPortrait struct {
 func (this *EntPortrait) EntDetail() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
-		cepm, err := entity.CreatePortraitManager(userId, "entDetail")
+		cepm, _, err := entity.CreatePortraitManager(userId, "entDetail")
 		if err != nil {
 			return nil, err
 		}
@@ -36,7 +37,6 @@ func (this *EntPortrait) EntDetail() {
 		if err != nil {
 			return nil, err
 		}
-		//entInfo["showEntChange"] = jy.GetBigVipUserBaseMsg(userid, db.Mysql, db.Mgo)//xxxxxxx
 		return entInfo, nil
 	}()
 	if errMsg != nil {
@@ -48,10 +48,13 @@ func (this *EntPortrait) EntDetail() {
 func (this *EntPortrait) WinnerContacts() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
-		cepm, err := entity.CreatePortraitManager(userId, "entPortrait")
+		cepm, hasPower, err := entity.CreatePortraitManager(userId, "entPortrait")
 		if err != nil {
 			return nil, err
 		}
+		if !hasPower {
+			return nil, fmt.Errorf("非法请求")
+		}
 		entId := util.DecodeId(this.GetString("entId"))
 		rData, err := cepm.GetWinnerContactsMsg(entId)
 		if err != nil {
@@ -71,10 +74,13 @@ func (this *EntPortrait) WinnerContacts() {
 func (this *EntPortrait) WinnerNewMsg() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
-		cepm, err := entity.CreatePortraitManager(userId, "entNewMsg")
+		cepm, hasPower, err := entity.CreatePortraitManager(userId, "entNewMsg")
 		if err != nil {
 			return nil, err
 		}
+		if !hasPower {
+			return nil, fmt.Errorf("非法请求")
+		}
 		entId := util.DecodeId(this.GetString("entId"))
 		count, _ := this.GetInt("count")
 
@@ -120,10 +126,13 @@ func (this *EntPortrait) WinnerNewMsg() {
 func (this *EntPortrait) WinnerPortrait() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
-		cepm, err := entity.CreatePortraitManager(userId, "entPortrait")
+		cepm, hasPower, err := entity.CreatePortraitManager(userId, "entPortrait")
 		if err != nil {
 			return nil, err
 		}
+		if !hasPower {
+			return nil, fmt.Errorf("非法请求")
+		}
 		entId := this.GetString("entId")
 		rData, err := cepm.WinnerPortraitData(util.DecodeId(entId))
 		if err != nil {
@@ -141,7 +150,7 @@ func (this *EntPortrait) WinnerPortrait() {
 func (this *EntPortrait) BuyerNewMsg() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
-		cepm, err := entity.CreatePortraitManager(userId, "buyerPortrait")
+		cepm, hasPower, err := entity.CreatePortraitManager(userId, "buyerPortrait")
 		if err != nil {
 			return nil, err
 		}
@@ -159,7 +168,7 @@ func (this *EntPortrait) BuyerNewMsg() {
 			start = (pageNum - 1) * limit
 		}
 
-		if pageSign := this.GetString("pageSign"); pageSign != "" { //more:4-23条;max:24-50条(移动端)
+		if pageSign := this.GetString("pageSign"); pageSign != "" && hasPower { //more:4-23条;max:24-50条(移动端)
 			if pageSign == "more" {
 				start = 3
 				limit = 20
@@ -169,7 +178,7 @@ func (this *EntPortrait) BuyerNewMsg() {
 			}
 		}
 
-		rData, err := cepm.GetBuyerNewMsg(buyer, start, limit)
+		rData, err := cepm.GetBuyerNewMsg(buyer, start, limit, hasPower)
 		if err != nil {
 			return nil, err
 		}
@@ -191,10 +200,13 @@ func (this *EntPortrait) BuyerNewMsg() {
 func (this *EntPortrait) BuyerContacts() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
-		cepm, err := entity.CreatePortraitManager(userId, "buyerPortrait")
+		cepm, hasPower, err := entity.CreatePortraitManager(userId, "buyerPortrait")
 		if err != nil {
 			return nil, err
 		}
+		if !hasPower {
+			return nil, fmt.Errorf("非法请求")
+		}
 		buyerName := this.GetString("buyer")
 		rData, err := cepm.GetBuyerContactsMsg(buyerName)
 		if err != nil {
@@ -214,13 +226,13 @@ func (this *EntPortrait) BuyerContacts() {
 func (this *EntPortrait) BuyerPortrait() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
-		cepm, err := entity.CreatePortraitManager(userId, "buyerPortrait")
+		cepm, hasPower, err := entity.CreatePortraitManager(userId, "buyerPortrait")
 		if err != nil {
 			return nil, err
 		}
 		entName := this.GetString("buyer")
 		flag := this.GetString("flag") //分段请求标识
-		rData, err := cepm.BuyerPortraitData(entName, flag)
+		rData, err := cepm.BuyerPortraitData(entName, flag, hasPower)
 		if err != nil {
 			return nil, err
 		}

+ 8 - 1
src/jfw/modules/bigmember/src/service/use/use.go

@@ -566,13 +566,20 @@ func (u *Use) IsAdd() {
 			return Result{Data: d}
 		}
 		//获取用户所在企业 : 如有多个企业,仅显示一个企业,显示顺序为:购买商机管理的企业>企业认证的企业>普通 企业,同一类型存在多个时,任意展示一个企业
-		res := db.Mysql.SelectBySql(`SELECT i.name,i.phone,i.status,i.auth_status FROM entniche_user u LEFT JOIN entniche_info i
+		res := db.Mysql.SelectBySql(`SELECT i.name,i.phone,i.status,i.auth_status,u.power FROM entniche_user u LEFT JOIN entniche_info i
 			ON u.ent_id=i.id
 			WHERE u.phone=? 
 			ORDER BY  i.status DESC,i.auth_status DESC, CASE WHEN i.phone=? THEN 0  ELSE 1 END  ASC`, phone, phone)
 		if res != nil && len(*res) > 0 {
 			entname := qu.ObjToString((*res)[0]["name"])
 			d["entname"] = entname
+			//已购买企业未过期-商机管理用户
+			for _, v := range *res {
+				if qu.IntAll(v["status"]) == 1 && qu.IntAll(v["power"]) == 1 {
+					d["entniche"] = true
+					break
+				}
+			}
 		}
 		return Result{Data: d}
 	}()

+ 1 - 1
src/jfw/modules/common/src/qfw/util/jy/bigVipPower.go

@@ -160,7 +160,7 @@ func GetBigVipUserBaseMsg(userId string, mysql *mysql.Mysql, mg MongodbSim) *Big
 
 //权限判断
 func (this *BigVipBaseMsg) CheckBigVipFrontPower(reqFlag string) (pass bool) {
-	if reqFlag == "ent_portrait" { //画像页面无权限控制
+	if reqFlag == "ent_portrait" || reqFlag == "unit_portrayal" { //画像页面无权限控制
 		return true
 	}
 	if this.Vip_BuySet.Upgrade == 1 {

+ 2 - 1
src/jfw/modules/publicapply/src/drainage/biddingtype.json

@@ -1,5 +1,6 @@
 {
 	"subtypecoll":"biddingtype",
 	"cwcollotion":"drainage_content_config",
-	"cwlogcoll":"drainage_content_log"
+	"cwlogcoll":"drainage_content_log",
+	"butlogcoll":"drainage_buyerunit_log"
 }

+ 58 - 0
src/jfw/modules/publicapply/src/drainage/entity/buyerunit.go

@@ -0,0 +1,58 @@
+package drainage
+
+import (
+	"db"
+	. "drainage/initjson"
+	"log"
+	"qfw/util"
+	"time"
+)
+
+//引流用户信息等
+type BuyerUnit struct {
+	UserId    string `json:"userId"`    //用户id
+	UserType  string `json:"userType"`  //用户类型0:普通;1:超级订阅;2:大会员;3:商机管理;(可以存在1,2)
+	Introduce string `json:"introduce"` //采购单位画像功能文案
+	Mold      string `json:"mold"`      //更新参数
+	Platform  string `json:"platform"`  //平台P:PC;W:微信;AA:APPAndroid;AI:APPIOS
+	Price     string `json:"price"`     //购买大会员价格
+	Id        string `json:"id"`        //日志id
+	OrderCode string `json:"orderCode"` //订单号
+}
+
+func SaveBuyerUnitInfo(BUT BuyerUnit) (string, bool) {
+	if BUT.Id == "" {
+		butInfo := map[string]interface{}{
+			"date":      time.Now().Unix(), //时间
+			"userId":    BUT.UserId,        //用户id
+			"isPaid":    0,                 //是否支付-4
+			"isOBT":     0,                 //是否下单-3
+			"price":     BUT.Price,         //实际支付价格-3
+			"isCBBT":    0,                 //点击去购买按钮-2
+			"introduce": BUT.Introduce,     //功能按钮文案-2
+			"userType":  BUT.UserType,      //用户类型0:普通;1:超级订阅;2:大会员;3:商机管理;(可以存在1,2)-1
+			"platform":  BUT.Platform,      //平台P:PC;W:微信;AA:APPAndroid;AI:APPIOS-1
+			"orderCode": "",                //订单号 3
+		}
+		if id := db.Mgo_Log.Save(BidType.Butlogcoll, butInfo); id != "" {
+			return util.SE2.EncodeString(id), true
+		}
+	} else {
+		id := util.SE2.DecodeString(BUT.Id)
+		set := map[string]interface{}{
+			BUT.Mold: 1,
+		}
+		switch BUT.Mold {
+		case "isCBBT":
+			set["introduce"] = BUT.Introduce
+		case "isOBT":
+			set["price"] = BUT.Price
+			set["orderCode"] = BUT.OrderCode
+		}
+		log.Println("set:", set)
+		return "", db.Mgo_Log.UpdateById(BidType.Butlogcoll, id, map[string]interface{}{
+			"$set": set,
+		})
+	}
+	return "", false
+}

+ 4 - 3
src/jfw/modules/publicapply/src/drainage/initjson/initjson.go

@@ -9,9 +9,10 @@ import (
 )
 
 type bidType struct {
-	Subtypecoll string `json:"subtypecoll"` //招标信息类型
-	Cwcollotion string `json:"cwcollotion"` //快照页引流文案库
-	Cwlogcoll   string `json:"cwlogcoll"`   //引流文案点击日志
+	Subtypecoll string `json:"subtypecoll"` //招标信息类型 mysql
+	Cwcollotion string `json:"cwcollotion"` //快照页引流文案库 mysql
+	Cwlogcoll   string `json:"cwlogcoll"`   //引流文案点击日志 mongo
+	Butlogcoll  string `json:"butlogcoll"`  //采购单位日志表 mongo
 }
 
 var BidType *bidType

+ 4 - 3
src/jfw/modules/publicapply/src/drainage/service/action.go

@@ -6,7 +6,8 @@ import (
 
 type DrainageStruct struct {
 	*xweb.Action
-	copywriting xweb.Mapper `xweb:"/drainage/copywriting"` //快照页引流文案和链接信息
-	behaviorLog xweb.Mapper `xweb:"/drainage/behaviorLog"` //快照页引流文案点击信息
-	bmbutinfo   xweb.Mapper `xweb:"/drainage/bmt/(.*)"`    //大会员介绍页购买按钮点击事件
+	copywriting  xweb.Mapper `xweb:"/drainage/copywriting"` //快照页引流文案和链接信息
+	behaviorLog  xweb.Mapper `xweb:"/drainage/behaviorLog"` //快照页引流文案点击信息
+	bmbutinfo    xweb.Mapper `xweb:"/drainage/bmt/(.*)"`    //大会员介绍页购买按钮点击事件
+	buyerUnitLog xweb.Mapper `xweb:"/drainage/buyerunit"`   //采购单位画像引流日志
 }

+ 34 - 0
src/jfw/modules/publicapply/src/drainage/service/buyerunit.go

@@ -0,0 +1,34 @@
+package service
+
+import (
+	. "api"
+	. "drainage/entity"
+	"encoding/json"
+	qu "qfw/util"
+)
+
+//
+func (this *DrainageStruct) BuyerUnitLog() {
+	defer qu.Catch()
+	r := func() Result {
+		if this.Method() != "POST" {
+			return Result{Data: nil, Error_msg: Error_msg_1005}
+		}
+		buyerUnit := new(BuyerUnit)
+		if string(this.Body()) == "" {
+			return Result{Data: nil, Error_msg: Error_msg_1003}
+		}
+		//接收参数
+		json.Unmarshal(this.Body(), &buyerUnit)
+		if (*buyerUnit).Id == "" && (*buyerUnit).Introduce == "" && (*buyerUnit).Platform == "" {
+			return Result{Data: nil, Error_msg: Error_msg_1002}
+		}
+		(*buyerUnit).UserId, _ = this.GetSession("userId").(string)
+		m, b := SaveBuyerUnitInfo(*buyerUnit)
+		return Result{Data: map[string]interface{}{
+			"id":     m,
+			"status": b,
+		}}
+	}()
+	this.ServeJson(r)
+}

+ 487 - 0
src/web/staticres/big-member/css/unit_portrayal.css

@@ -0,0 +1,487 @@
+.u-header{
+    padding-top: .24rem;
+    background-color: #fff;
+}
+.company{
+    display: flex;
+    align-items: center;
+    padding: 0 .32rem;
+    background: #fff;
+}
+.ent-title{
+    margin-left: .2rem;
+    font-size: .28rem;
+    line-height: .4rem;
+    color: #171826;
+}
+.region{
+    margin-top: .16rem;
+    padding: 0 .32rem;
+    color: #5F5E64;
+    font-size: .24rem;
+    line-height: .36rem;
+}
+.buyer-type{
+    margin-top: 0.04rem;
+    padding: 0 .32rem;
+    color: #5F5E64;
+    font-size: .24rem;
+    line-height: .36rem;
+}
+.buyer-info{
+    position: relative;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-top: .24rem;
+    padding: .24rem .16rem;
+}
+.buyer-info::after{
+    
+    position: absolute;
+    box-sizing: border-box;
+    content: ' ';
+    pointer-events: none;
+    top: -50%;
+    right: .32rem;
+    bottom: -50%;
+    left: .32rem;
+    border: 0 solid #ebedf0;
+    border-top-width: 1px;
+    border-bottom-width: 1px;
+    -webkit-transform: scaleY(.5);
+    transform: scaleY(.5);
+}
+.bi-item{
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    white-space: nowrap;
+    text-align: center;
+}
+.bi-item span:nth-child(1){
+    font-size: .2rem;
+    color: #5F5E64;
+    line-height: .28rem;
+}
+.bi-item span:nth-child(2){
+    margin-top: .16rem;
+    font-size: .28rem;
+    color: #171826;
+    line-height: .4rem;
+}
+.static-scope{
+    padding: .16rem 0;
+    font-size: .2rem;
+    color: #9B9CA3;
+    line-height: .28rem;
+    text-align: center;
+}
+.dynamic{
+    position: relative;
+    margin-top:.16rem;
+    background-color: #fff;
+}
+.d_title{
+    padding: .32rem .32rem .12rem;
+    font-weight: bold;
+    font-size: .36rem;
+    line-height: .52rem;
+    color: #171826;
+    height: 0.96rem;
+    box-sizing: border-box;
+}
+.d_list{
+    position: relative;
+    padding: .24rem .32rem;
+}
+.d_list::after{
+    position: absolute;
+    box-sizing: border-box;
+    content: ' ';
+    pointer-events: none;
+    right: 0;
+    bottom: 0;
+    left: 16px;
+    border-bottom: 1px solid #ebedf0;
+    -webkit-transform: scaleY(0.5);
+    transform: scaleY(0.5);
+}
+.i_title{
+    font-size: .28rem;
+    line-height: .4rem;
+    color: #171826;
+}
+.i_info{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-top: .16rem;
+}
+
+.i_area,.i_type{
+    display: inline-block;
+    margin-right: 0.08rem;
+    height: .4rem;
+    padding: 0 .16rem;
+    line-height: .4rem;
+    min-width: .8rem;
+    text-align: center;
+    background-color: rgba(42, 190, 209, 0.08);
+    color: #2ABED1;
+    font-size: .24rem;
+    border-radius: 4px;
+    font-weight: bold;
+}
+.i_time{
+    font-size: .2rem;
+    line-height: .36rem;
+    color: #9B9CA3;
+    text-align: right;
+}
+.more{
+    padding: .12rem 0 .28rem;
+    text-align: center;
+    color: #2ABED1;
+    font-size: .28rem;
+    line-height: .4rem;
+}
+
+.month-scale,.scale-distribute,.double-bar,.savings-rate,.industry-scale-rate{
+    margin-top: .16rem;
+    background-color: #fff;
+}
+
+.bar-tip{
+    padding: 0 .32rem .32rem;
+    text-align: justify;
+    color: #9B9CA3;
+    font-size: .2rem;
+    line-height: .28rem;
+}
+
+.double-bar .bar-content{
+    position: relative;
+    padding: 0 .16rem .38rem;
+    background: #fff;
+}
+.double-bar .rate-item{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-top: .24rem;
+}
+.double-bar .item-label{
+    width: 1.6rem;
+    white-space: nowrap;
+    text-align: right;
+    font-size: .2rem;
+    color: #5F5E64;
+    margin-right: .24rem;
+}
+.double-bar .item-chart{
+    position: relative;
+    flex: 1;
+    height: .4rem;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+}
+.double-bar .left-chart,.double-bar .right-chart{
+    flex: 1;
+    height: 100%;
+    overflow: hidden;
+}
+.double-bar .left-chart{
+    margin-right: 2px;
+}
+.double-bar .item-progress{
+    position: relative;
+    flex: 1;
+    width: 100%;
+    height: .4rem;
+    overflow: hidden;
+    font-size: .2rem;
+    line-height: .4rem;
+    display: flex;
+    justify-content: flex-end;
+}
+.double-bar .right-chart .item-progress{
+    justify-content: flex-start;
+}
+.double-bar .blue-progress-bg,.double-bar .yellow-progress-bg{
+    color: #fff;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    box-sizing: border-box;
+}
+.double-bar .blue-progress-bg{
+    background: #05A6F3;
+}
+.double-bar .yellow-progress-bg{
+    text-align: right;
+    background: #FF9F40;
+}
+.double-bar .blue-padding{
+    padding-left: 0.08rem;
+}
+.double-bar .yellow-padding{
+    padding-right: 0.08rem;
+}
+.double-bar .blue-progress-text{
+    padding-right:.08rem;
+    color: #05A6F3;
+}
+.double-bar .yellow-progress-text{
+    padding-left:.08rem;
+    color: #FF9F40;
+}
+.double-bar .tooltip{
+    position: absolute;
+    display: block;
+    white-space: nowrap;
+    z-index: 9999999;
+    transition: left 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s, top 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s;
+    background-color: rgb(255, 255, 255);
+    border: 2px solid #F5F6F7;
+    box-sizing: border-box;
+    border-radius: 4px;
+    color: rgb(23, 24, 38);
+    font: 12px / 18px "Microsoft YaHei";
+    padding: 7px 12px;
+    box-shadow: 0px 4px 16px rgba(8, 31, 38, 0.08);
+    pointer-events: none;
+}
+.double-bar .tooltip-item{
+    display: flex;
+    align-items: center;
+    font-size: .24rem;
+    color: #171826;
+    line-height: .36rem;
+}
+.double-bar .tooltip-circle{
+    display: inline-block;
+    width: 8px;
+    height: 8px;
+    border-radius: 8px;
+    margin-right: 4px;
+}
+.double-bar .custom-legend{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-top: .4rem;
+    padding: 0 0.8rem 0 1.6rem;
+}
+.double-bar .tooltip-name{
+    text-align: center;
+    color: #9B9CA3;
+    font-size: .2rem;
+    margin-top: 0.08rem;
+}
+.double-bar .legend-item{
+    display: flex;
+    align-items: center;
+    font-size: .22rem;
+    color: #5F5E64;
+}
+.double-bar .blue-circle{
+    background-color: #05A6F3;
+}
+.double-bar .yellow-circle{
+    background-color: #FF9F40;
+}
+
+.years,.amount,.rank,.distribute{
+    position: relative;
+    margin-top: .16rem;
+    background-color: #fff;
+}
+.chart_title,.rank_title,.distribute_title{
+    padding: .32rem .32rem .12rem;
+    font-weight: bold;
+    font-size: .36rem;
+    line-height: .52rem;
+    color: #171826;
+    height: 0.96rem;
+    box-sizing: border-box;
+}
+
+.client,.agency{
+    margin-top: .16rem;
+}
+.client-title,.agency-title{
+    padding: .32rem .32rem .12rem;
+    font-weight: bold;
+    font-size: .36rem;
+    line-height: .52rem;
+    color: #171826;
+    height: 0.96rem;
+    box-sizing: border-box;
+    background-color: #fff;
+}
+.client-list{
+    margin-bottom: .16rem;
+    background-color: #fff;
+}
+.client .c-thead{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: .2rem .32rem 0;
+}
+.client .c-name,.client .item-name{
+    width: 4rem;
+    margin-right: .24rem;
+}
+.client .c-count,.client .item-count{
+    width: .9rem;
+    font-size: .22rem;
+    text-align: center;
+    margin-right: .24rem;
+}
+.client .c-rate,.client .item-rate{
+    width: 1.1rem;
+    font-size: .22rem;
+    text-align: center;
+    margin-right: .24rem;
+}
+.client .c-time,.client .item-time{
+    flex: 1;
+    font-size: .22rem;
+    text-align: center;
+}
+.client .c-name{
+    font-weight: bold;
+    font-size: .3rem;
+    color: #171826;
+}
+.client .c-count,.client .c-rate,.client .c-time{
+    color: #9B9CA3;
+    white-space: nowrap;
+}
+
+.client .progress-bar-container {
+    background-color: #fff;
+    padding: 0 .32rem;
+}
+
+.client .progress-bar-item {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-around;
+    padding-bottom: .2rem;
+}
+
+.client .progress-bar-item .item-label {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 0.16rem 0 0.04rem;
+}
+
+.client .item-name {
+    font-size: .22rem;
+    line-height:.36rem;
+    color: #171826;
+    text-decoration: underline;
+}
+
+.client .item-count {
+    font-size: .22rem;
+    color: #171826;
+    line-height:.36rem;
+}
+
+.client .item-progress {
+    position: relative;
+    height: .4rem;
+    line-height: .4rem;
+    background-color: #EDEFF2;
+    border-radius: 0 .28rem .28rem 0;
+    overflow: hidden;
+}
+.client .item-money{
+    position: absolute;
+    left: .16rem;
+    top: 50%;
+    transform: translateY(-50%);
+    color: #8F5828;
+    font-size: .22rem;
+    z-index: 10;
+}
+.client .item-progress-count {
+    position: absolute;
+    top: 0;
+    left: 0;
+    height: 100%;
+    border-radius: 0 .28rem .28rem 0;
+    z-index: 9;
+}
+.client .active-progress{
+    background: #FAE7CA;
+}
+
+.agency-container{
+    padding: 0 .32rem;
+    background: #fff;
+}
+.agency-thead{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: .2rem 0 0;
+}
+.agency-thead .a-name,.agency-tbody .ab-name{
+    display: inline-block;
+    width: 4.2rem;
+    padding-right: .24rem;
+    line-height: .36rem;
+}
+
+.agency-thead .a-count,.agency-tbody .ab-count{
+    width: 1rem;
+    margin-right: .24rem;
+    white-space: nowrap;
+    font-size: .22rem;
+    color: #9B9CA3;
+    text-align: center;
+    line-height: .36rem;
+}
+.agency-thead .a-time,.agency-tbody .ab-time{
+    flex: 1;
+    white-space: nowrap;
+    font-size: .22rem;
+    color: #9B9CA3;
+    text-align: center;
+    line-height: .36rem;
+}
+.agency-tbody .ab-name,.agency-tbody .ab-count,.agency-tbody .ab-time{
+    color: #171826;
+}
+
+.agency-tbody .ab-list{
+    padding: .16rem 0 .2rem;
+}
+.agency-tbody .ab-label{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+}
+.agency-tbody .ab-progress{
+    display: flex;
+    justify-content: start;
+    align-items: center;
+    margin-top: 0.04rem;
+    height: .2rem;
+    background-color: #F5F6F7;
+    border-radius: 0 .28rem .28rem 0;
+    overflow: hidden;
+}
+.agency-tbody .progress-active{
+    height: 100%;
+    background: linear-gradient(270deg, #2ABED1 0.81%, #8DE0EB 100%);
+    border-radius: 0 .28rem .28rem 0;
+}

二進制
src/web/staticres/big-member/image/working.gif


+ 1245 - 0
src/web/staticres/big-member/js/unit_portrayal.js

@@ -0,0 +1,1245 @@
+var hotChart = null;
+var pieChart = null;
+var vNode = {
+    delimiters: ['${', '}'],
+    el: '#unit_portrayal',
+    components: {
+      hisproComponent: hisproComponent,
+      buyerExample: buyerExample,
+    },
+    data() {
+        // 修改柱状条颜色为渐变色
+        this.colorGreen = [new echarts.graphic.LinearGradient(
+            0, 0, 0, 1,
+            [
+                {offset: 1, color: '#2ABED1'},
+                {offset: 0.5, color: '#2ABED1'},
+                {offset: 0, color: '#8DE0EB'}
+            ], false
+        ), '#FF9F40']
+        return {
+            chartLoading: true,
+            showAll:false,
+            buyer:{
+                name:'',
+                area: '',
+                city: '',
+            },
+            // 采购单位统计信息
+            statistics: {
+                province: '',
+                city: '',
+                buyerClass:'',
+                buyerCount: '',
+                buyerScale: '',
+                winnerCount:'',
+                otherWinner:'',
+                fail_count: '',
+                start: '',
+                end: ''
+            },
+            projectChartSettings:{
+                showLine: ['项目金额'],
+                axisSite: { right: ['项目金额'] }
+            },
+            // hotChart: null,
+            isShow:{
+                showDynamic: false,
+                showYearData: false,
+                showMonthScale: false,
+                showScaleFb:false,
+                showBidType: false,
+                showSaveRate: false,
+                showScaleRate: false,
+                showClient: false,
+                showCapital: false,
+                showAge:false,
+                showArea:false,
+                showAgency: false
+            },
+            // 中标动态
+            dt:{
+                list: [],
+                isMore:'',
+                pageCount: '',
+                isNext: true
+            },
+            regCapSettings:{
+                showLine: ['累计采购规模'],
+                axisSite: { right: ['累计采购规模'] },
+                // stack: { '注册资本分布': ['注册资本','企业数量', '采购项目数量', '平均节支率'] }
+            },
+            // 合作企业注册资本分布
+            regCapitalData:{
+                columns: ['注册资本', '企业数量', '累计采购规模'],
+                rows: [],
+                customData:[]
+            },
+            // 年度项目统计
+            projectData: {
+                columns: [],
+                rows: []
+            },
+            // 月度采购规模统计
+            monthScaleData: {
+                columns: [],
+                rows: []
+            },
+            doubleBar:{
+                list:[],
+                info:{},
+                showTooltip:false
+            },
+            savingsRateData:{
+                columns: [],
+                rows: []
+            },
+            // 重点合作企业
+            clientList:[],
+            workingAgeData:{
+                columns: ['企业年龄', '企业数量'],
+                rows: [],
+                customData:[]
+            },
+            mapChartData:{
+                columns: ['企业注册地', '企业数量','累计采购规模','采购项目数量','平均节支率'],
+                rows: [],
+                customData:[]
+            },
+            // 重点合作代理机构
+            agencyList: [],
+            // 热力图减去数据为0的行
+            minusRows:0,
+            reqCount: 0,
+            timer: null,
+            initRendererSvg:{
+                renderer:'svg'
+            },
+            bigStatus: 0,
+            encryptId: '', // 首次埋点返回的加密id 用于点击去开通传参
+            power: []
+        }
+    },
+    computed: {
+        allNot: function() {
+            var show_1 = this.isShow.showDynamic;
+            var show_2 = this.isShow.showYearData;
+            var show_3 = this.isShow.showMonthScale;
+            var show_4 = this.isShow.showScaleFb;
+            var show_5 = this.isShow.showBidType;
+            var show_6 = this.isShow.showSaveRate;
+            var show_7 = this.isShow.showScaleRate;
+            var show_8 = this.isShow.showClient;
+            var show_9 = this.isShow.showCapital;
+            var show_10 = this.isShow.showAge;
+            var show_11 = this.isShow.showArea;
+            var show_12 = this.isShow.showAgency;
+            if(!show_1 && !show_2 && !show_3 && !show_4 && !show_5 && !show_6 && !show_7 && !show_8 && !show_9 && !show_10 && !show_11 && !show_12 && this.power.indexOf(5) > -1) {
+                return true;
+            } else {
+                return false;
+            }
+        },
+        heatMapHeight: function(){
+            return 320 - 22*this.minusRows  + 'px'
+        },
+        computedClientList: function (){
+            return this.clientList.map(function (v) {
+                v.topData = v.topData.filter(function(s) {
+                    return s.winnerName && s.winnerName.trim().length
+                })
+                return v
+            }).filter(function (v,i) {
+                return v.topData.length
+            })
+        },
+        getStatus: function () {
+          return this.power.indexOf(5)  == -1 // power == 5
+        },
+    },
+    created () {
+      this.getPowerInfo()
+        this.init();
+    },
+    mounted: function () {
+        this.buyer.name = decodeURIComponent(utils.getParam('entName'));
+        this.getNewMsg(); // 中标动态
+        this.getChartData(); // 企业画像
+    },
+    beforeDestroy() {
+        window.removeEventListener("resize", this.init,20);
+        if(hotChart) {
+            hotChart.dispose();
+        }
+        if(pieChart) {
+            pieChart.dispose();
+        }
+    },
+    methods: {
+        // 获取权限信息
+        getPowerInfo: function () {
+          var _this = this
+          $.ajax({
+            type: 'GET',
+            url: '/bigmember/use/isAdd?t=' + Date.now(),
+            success: function (res) {
+              if (res.data) {
+                _this.power = res.data.power
+                _this.bigStatus = res.data.memberStatus
+                var entniche = res.data.entniche
+                var member = res.data.memberStatus
+                var vip = res.data.vipStatus
+                var userType = ''
+                if (vip > 0) {
+                  userType = '1'
+                }
+                if (member > 0) {
+                  if (userType !== '') {
+                    userType += ','
+                  }
+                  userType += '2'
+                }
+                if (entniche) {
+                  if (userType !== '') {
+                    userType += ','
+                  }
+                  userType += '3'
+                }
+                if (userType === '') {
+                  userType = '0'
+                }
+                // 没有采购单位画像权限的 则添加埋点
+                if (res.data.power.indexOf(5) === -1) {
+                  _this.getBuried(userType)
+                }
+              }
+            },
+            error: function (error) {
+              console.log(error)
+            }
+          })
+        },
+        // 进入页面埋点 非大会员用户请求
+        getBuried: function(type) {
+          var _this = this
+          var params = {
+            userType: type,
+            platform: 'W'
+          }
+          $.ajax({
+            type: 'POST',
+            url: '/publicapply/drainage/buyerunit',
+            contentType: "application/json",
+            data: JSON.stringify(params),
+            success: function (res) {
+                if (res.data && res.data.status) {
+                  _this.encryptId = res.data.id
+                }
+            },
+            error: function (error) {
+              console.log(error)
+            }
+          })
+        },
+        // 点击去开通埋点方法
+        goBuyBuried: function(text) {
+          var _this = this
+          var params = {
+            mold: 'isCBBT',
+            id: _this.encryptId,
+            introduce: text
+          }
+          $.ajax({
+            type: 'POST',
+            url: '/publicapply/drainage/buyerunit',
+            contentType: "application/json",
+            data: JSON.stringify(params),
+            success: function (res) {
+              console.log(res)
+              setTimeout(function() {
+                location.href = '/big/wx/page/buy_commit?bid=' + _this.encryptId
+              }, 200)
+            },
+            error: function (error) {
+              console.log(error)
+              location.href = '/big/wx/page/buy_commit?bid=' + _this.encryptId
+            }
+          })
+        },
+        init() {
+            setTimeout(function() {
+                window.addEventListener('resize', function() {
+                    hotChart.resize();
+                })
+            }, 20)
+        },
+        goEntInfo: function(item) {
+            location.href = "/weixin/frontPage/collection/sess/ent_portrait?eId=" + encodeURIComponent(item.entId)
+        },
+        // 查询采购单位地址(暂不需要)
+        getBuyer:function(){
+            var that = this;
+            $.ajax({
+                type:'POST',
+                url:'/bigmember/portrait/ent/buyerAddress',
+                data:{
+                    entName: decodeURIComponent(utils.getParam('entName'))
+                },
+                success:function(res) {
+                    // console.log(res)
+                    if(res.error_code == 0) {
+                        if(res.data.province) {
+                            that.buyer.area = res.data.province.replace(/省|市|自治区|特别行政区|壮族|回族|维吾尔/g, '');
+                        }
+                        if(res.data.city){
+                            that.buyer.city = res.data.city;
+                        }
+                    }else{
+                        console.log("未获取到")
+                    }
+                },
+                error:function(err) {
+                    console.log(err)
+                }
+            })
+        },
+        // 获取中标动态数据
+        getNewMsg: function(){
+          var that = this;
+          var data = {
+              buyer: decodeURIComponent(utils.getParam('entName')),
+              count: that.dt.pageCount,
+              pageSign: that.dt.isMore
+          }
+          $.ajax({
+            type:'POST',
+            url:'/bigmember/portrait/buyer/getNewMsg',
+            data:data,
+            success:function(res) {
+              if(res.error_code == 0) {
+                if (res.data.list && res.data.list.length && res.data.list.length > 0) {
+                  that.dt.pageCount = res.data.count
+                  if (res.data.list && $.isArray(res.data.list)) {
+                    that.isShow.showDynamic = true;
+                    res.data.list.forEach(function(v,i){
+                        v.firsttime = new Date(Number(v.firsttime + '000')).pattern('yyyy/MM/dd');
+                        v.bidamount = v.bidamount ? utils.moneyUnit(v.bidamount) : ''
+                    })
+                    if (!that.dt.isMore) {
+                        that.dt.list = []
+                        that.dt.isMore = 'more'
+                        if(res.data.count <= 3) {
+                            that.dt.isNext = false
+                        }
+                    } else if (that.dt.isMore === 'more') {
+                        if (that.power.indexOf(5) == -1) {
+                          that.openDialog()
+                          return
+                        }
+                        that.dt.isMore = 'max'
+                        if(res.data.count <= 23) {
+                            that.dt.isNext = false
+                        }
+                    } else if (that.dt.isMore === 'max') {
+                        that.dt.isNext = false
+                    }
+                    that.dt.list = that.dt.list.concat(res.data.list)
+                  }
+                }
+              } else {
+                console.log(res.error_code)
+              }
+            },
+            error:function(err) {
+              console.log(err)
+            }
+          })
+        },
+        // 获取采购单位画像所有数据
+        getChartData: function() {
+          var that = this;
+          $.ajax({
+            type:'POST',
+            url:'/bigmember/portrait/buyer/getData',
+            data:{
+              buyer: decodeURIComponent(utils.getParam('entName'))
+            },
+            success:function(res) {
+                if(res.error_code == 0) {
+                  if(res.data && Object.keys(res.data).length > 0) {
+                      that.chartLoading = false;
+                      that.initChartData('', res.data)
+                  } else {
+                    that.getSectionChartData('a')
+                  }
+                }
+            },
+            error:function(err) {
+              console.log(err)
+            }
+          })
+        },
+        // 分段获取画像数据
+        getSectionChartData: function(type) {
+          var that = this;
+          $.ajax({
+            type:'POST',
+            url:'/bigmember/portrait/buyer/getData',
+            data:{
+              buyer: decodeURIComponent(utils.getParam('entName')),
+              flag: type
+            },
+            success:function(res) {
+                if(res.error_code == 0) {
+                  that.reqCount++;
+                  if(res.data && Object.keys(res.data).length > 0) {
+                    that.chartLoading = false;
+                    that.initChartData(type, res.data)
+                    if (type === 'a') {
+                      that.reqCount = 0
+                      that.getSectionChartData('b')
+                    } else if (type === 'b') {
+                      that.reqCount = 0
+                      that.getSectionChartData('c')
+                    }
+                  } else {
+                    console.log('请求了获取不到data数据,再次请求')
+                    if (that.reqCount < 5) {
+                      that.getSectionChartData(type)
+                    } else {
+                      that.chartLoading = false;
+                    }
+                  }
+                }
+            },
+            error:function(err) {
+              console.log(err)
+            }
+          })
+        },
+        initChartData: function(flag, res) {
+          // a段数据 timeRange、city、province、buyerclass、bidamount_count、fail_count、project_count、winner_count、otherProvincesWinnerCount、yearData、monthData、moneyRange、bidtypeData、rate、top12、topAgencyData
+          // b段数据 topShow
+          // c段数据 withCapitalData、withAreaData、withEstablishData
+          if (flag === 'a') {
+            // 1.初始化画像基本信息
+            this.formatBaseInfo(res)
+            // 2.初始化年度统计数据
+            this.formatYearsData(res.yearData)
+            // 3.初始化月度统计数据
+            this.formatterMonthData(res.monthData)
+            // 4.初始化采购规模分布数据
+            this.formatHotData(res.moneyRange)
+            // 5.格式化各类招标方式占比数据
+            this.formatBidTypeData(res.bidtypeData)
+            // 6.初始化各行业项目平均节支率数据
+            this.formatSaveRateData(res.rate)
+            // 7.初始化各行业项目规模占比数据
+            this.formatTopData(res.top12)
+            // 12.初始化重点合作代理机构数据
+            this.formatAgencyData(res.topAgencyData)
+          } else if (flag === 'b') {
+            // 8.初始化重点合作企业数据
+            this.formatClientData(res.topShow)
+          } else if (flag === 'c') {
+             // 9.初始化合作企业注册资本分布数据
+            this.formatCapitalData(res.withCapitalData)
+            // 10.初始化合作企业年龄分布数据
+            this.formatAgeData(res.withEstablishData)
+            // 11.初始化合作企业注册地分布数据
+            this.formatAreaData(res.withAreaData)
+          } else {
+            // 1.初始化画像基本信息
+            this.formatBaseInfo(res)
+            // 2.初始化年度统计数据
+            this.formatYearsData(res.yearData)
+            // 3.初始化月度统计数据
+            this.formatterMonthData(res.monthData)
+            // 4.初始化采购规模分布数据
+            this.formatHotData(res.moneyRange)
+            // 5.格式化各类招标方式占比数据
+            this.formatBidTypeData(res.bidtypeData)
+            // 6.初始化各行业项目平均节支率数据
+            this.formatSaveRateData(res.rate)
+            // 7.初始化各行业项目规模占比数据
+            this.formatTopData(res.top12)
+            // 8.初始化重点合作企业数据
+            this.formatClientData(res.topShow)
+            // 9.初始化合作企业注册资本分布数据
+            this.formatCapitalData(res.withCapitalData)
+            // 10.初始化合作企业年龄分布数据
+            this.formatAgeData(res.withEstablishData)
+            // 11.初始化合作企业注册地分布数据
+            this.formatAreaData(res.withAreaData)
+            // 12.初始化重点合作代理机构数据
+            this.formatAgencyData(res.topAgencyData)
+          }
+        },
+        // 1.处理画像基本信息数据
+        formatBaseInfo: function(data) {
+          this.statistics.province = data.province ? data.province.replace(/省|市|自治区|特别行政区|壮族|回族|维吾尔/g, '') : '--';
+          this.statistics.city = data.city;
+          this.statistics.buyerClass = data.buyerclass ? data.buyerclass : '--';
+          this.statistics.start = data.timeRange ? new Date(Number(data.timeRange.start + '000')).pattern('yyyy/MM/dd'): '';
+          this.statistics.end = data.timeRange ? new Date(Number(data.timeRange.end + '000')).pattern('yyyy/MM/dd') : '';
+          this.statistics.buyerCount = data.project_count ? data.project_count + '个' : '--';
+          this.statistics.winnerCount = data.winner_count ? data.winner_count + '个' : '--';
+          this.statistics.otherWinner = data.otherProvincesWinnerCount ? data.otherProvincesWinnerCount + '个' : '--';
+          this.statistics.buyerScale = data.bidamount_count ? utils.moneyUnit(data.bidamount_count) : '--';
+          this.statistics.fail_count = data.fail_count ? data.fail_count + '条': '--';
+        },
+        // 2.处理年度统计数据
+        formatYearsData: function(data) {
+          if(data && Object.keys(data).length > 0){
+            var rows = [];
+            for (var key in data) {
+              rows.push({
+                '年份': key,
+                '项目数量': data[key].Count,
+                '项目金额': (data[key].Money/10000).fixed(0),
+              })
+            }
+            this.projectData.columns = ['年份', '项目数量', '项目金额'];
+            this.projectData.rows = rows;
+            this.isShow.showYearData = true;
+          }
+        },
+        // 3.处理月度采购规模数据
+        formatterMonthData: function(data) {
+          if (data && Object.keys(data).length > 0) {
+            var rows = [];
+            var columns = ['月份'];
+            var count = 0;
+            var yearArr = []
+            for (var key in data) {
+              yearArr.push(parseInt(key))
+            }
+            yearArr.sort(function (a, b) { return a - b })
+            yearArr.forEach(function (item) {
+              columns.push(item + '年')
+            })
+            for (var i = 1; i <= 12; i++) {
+              var columnsItem = {}
+              columns.forEach(function (item) {
+                var value = ''
+                if (item == '月份') {
+                    value = i + '月'
+                } else if (/年/g.test(item)) {
+                  if (data[item.slice(0, -1)]) {
+                    value = data[item.slice(0, -1)][i];
+                    value = (value /10000).fixed(2);
+                    count += value
+                  }
+                }
+                columnsItem[item] = value
+              })
+              rows.push(columnsItem)
+            }
+            // 数据总量为0,不赋值
+            if (count != 0) {
+              this.monthScaleData.columns = columns;
+              this.monthScaleData.rows = rows;
+              this.isShow.showMonthScale = true;
+            } else {
+              this.isShow.showMonthScale = false;
+            }
+          }
+        },
+        // 4.处理采购规模分布数据
+        formatHotData: function(res) {
+          var that = this
+          if(res && res.length > 0) {
+            // 数据都为0 隐藏
+            var countArr = res.map(function(v){
+              return v.project_count;
+            })
+            var max = Math.max.apply(null,countArr);
+            console.log(max,'max')
+            if(max == 0) {
+              that.isShow.showScaleFb = false
+            } else {
+              that.isShow.showScaleFb = true;
+              that.$nextTick(function(){
+                that.getHotChartData(res);
+              })
+            }
+          }
+        },
+        // 5.处理各类招标方式占比数据
+        formatBidTypeData: function(data) {
+          // 各类招标方式占比
+          if(data && data.length > 0) {
+            data.forEach(function(item){
+              item.money = (item.money / 10000).fixed(2);
+              item.moneyShare = (item.moneyShare*100).fixed(2);
+              item.numShare  = (item.numShare *100).fixed(2)
+              switch (item.type) {
+                case '招标':
+                  item.type = '公开招标'
+                  break;
+                case '邀标':
+                  item.type = '邀请招标'
+                  break;
+                case '询价':
+                  item.type = '询价采购'
+                  break;
+                case '单一':
+                  item.type = '单一来源采购'
+                  break;
+                case '竞价':
+                  item.type = '竞价采购'
+                  break;
+                case '竞谈':
+                  item.type = '竞争性谈判'
+                  break;
+              }
+            })
+            var maxLeftNum = Math.max.apply(Math, data.map(function(o) {return o.numShare}))
+            var maxRightNum = Math.max.apply(Math, data.map(function(o) {return o.moneyShare}))
+            data.forEach(function(v,i){
+              v.lPercent = (v.numShare/maxLeftNum*100).fixed(2);
+              v.rPercent = (v.moneyShare/maxRightNum*100).fixed(2);
+            })
+            this.doubleBar.list = data;
+            this.isShow.showBidType = true;
+          }
+        },
+        // 6.处理行业项目平均节支率数据
+        formatSaveRateData: function(data) {
+          if (data && Object.keys(data).length > 0) {
+            var rows = [];
+            var columns = ['日期','全部行业'];
+            var count = 0;
+            for (var key in data) {
+              if(key !== '全部行业') {
+                columns.push(key)
+              }
+            }
+            var industryArr = []
+            for (var key in data['全部行业']) {
+              industryArr.push(key)
+            }
+            industryArr.sort(function (a, b) { return a - b })
+            industryArr.forEach(function (item) {
+              var rowsItem = {
+                '日期': item + '年'
+              }
+              for (var k in data) {
+                count += (data[k][item] * 100)
+                rowsItem[k] = data[k][item] == null  ? null : (data[k][item] * 100).fixed(2)
+              }
+              rows.push(rowsItem)
+            })
+            // 数据总量为0,不赋值
+            if (count != 0) {
+              this.savingsRateData.columns = columns;
+              this.savingsRateData.rows = rows;
+              this.isShow.showSaveRate = true
+            }
+          }
+        },
+        // 7.处理各行业项目规模占比数据
+        formatTopData : function(data) {
+          var that = this
+          if (data && data.length > 0) {
+            that.isShow.showScaleRate = true
+            that.$nextTick(function(){
+              that.getPieCharData(data)
+            })
+          }
+        },
+        // 8.处理重点合作企业数据
+        formatClientData: function(data) {
+          if (data && data.length > 0) {
+            data.forEach(function(v,i){
+              v.topData.forEach(function(s,j){
+                s.parent = s.countMoney / v.topData[0].countMoney*100 + "%";
+                s.lastTime = new Date(Number(s.lastTime + '000')).pattern('yyyy/MM/dd')
+              })
+            })
+            this.clientList = data;
+            this.isShow.showClient = true;
+          }
+        },
+        // 9.处理合作企业注册资本分布数据
+        formatCapitalData: function (data) {
+          var that = this
+          if(data && data.length > 0) {
+            var columns = ['注册资本', '企业数量', '累计采购规模'];
+            var rows = [];
+            var capData = [];
+            data.forEach(function(item){
+              rows.push({
+                '注册资本': that.formatMoneyRange(item.key),
+                '企业数量': item.ent_count,
+                '累计采购规模': (item.money_count /10000).fixed(2)
+              })
+              capData.push({
+                '注册资本': that.formatMoneyRange(item.key),
+                '企业数量': item.ent_count,
+                '累计采购规模': (item.money_count /10000).fixed(2),
+                '采购项目数量': item.project_count,
+                '平均节支率': item.rate_avg
+              })
+            })
+            that.regCapitalData.columns = columns;
+            that.regCapitalData.rows = rows;
+            that.regCapitalData.customData = capData;
+            that.isShow.showCapital = true;
+          }
+        },
+        // 10.处理合作企业年龄分布数据
+        formatAgeData: function(data) {
+          if (data && data.length > 0) {
+            var ageRows = [];
+            var customRows = []
+            data.forEach(function(item){
+              if(item.key == '0_1'){
+                item.key = '<1'
+              }
+              if(item.key == '40'){
+                item.key = '≥40'
+              }
+              ageRows.push({
+                '企业年龄': item.key.replace('_','-'),
+                '企业数量': item.ent_count
+              })
+              customRows.push({
+                '企业年龄': item.key.replace('_','-'),
+                '企业数量': item.ent_count,
+                '累计采购规模': (item.money_count /10000).fixed(2),
+                '采购项目数量': item.project_count,
+                '平均节支率': item.rate_avg
+              })
+            })
+            this.workingAgeData.rows = ageRows;
+            this.workingAgeData.customData = customRows;
+            this.isShow.showAge = true;
+          }
+        },
+        // 11.处理合作企业注册地分布数据
+        formatAreaData: function(data) {
+          if (data && data.length > 0) {
+            var areaRows = []
+            var custom = []
+            data.forEach(function(item){
+              areaRows.push({
+                '企业注册地': item.area_name,
+                '企业数量': item.ent_count
+              })
+              custom.push({
+                '企业注册地': item.area_name,
+                '企业数量': item.ent_count,
+                '累计采购规模': (item.money_count /10000).fixed(2),
+                '采购项目数量': item.project_count,
+                '平均节支率': item.rate_avg
+              })
+            })
+            this.mapChartData.rows = areaRows;
+            this.mapChartData.customData = custom;
+            this.isShow.showArea = true;
+          }
+        },
+        // 12.处理重点合作代理机构数据
+        formatAgencyData: function(data) {
+          if(data && data.length > 0) {
+            data.forEach(function(v,i){
+              v.last_with_time = new Date(Number(v.last_with_time + '000')).pattern('yyyy/MM/dd')
+              v.parent = v.project_count / data[0].project_count*100 + "%";
+            })
+            this.agencyList = data;
+            this.isShow.showAgency = true
+          }
+        },
+        // 处理金额区间转换
+        formatMoneyRange: function(key){
+            if(!key) return;
+            if(key.indexOf('_')) {
+                key = key.split('_');
+            } else {
+                key = key.split('-');
+            }
+            if(!key[1]) return '>' + (key[0] / 100000000).fixed(2) + '亿';
+            key[0] = key[0] >= 100000000 ? (key[0] / 100000000).fixed(2) : (key[0] / 10000).fixed(2);
+            key[1] = key[1] >= 100000000 ? (key[1] / 100000000).fixed(2) + '亿' : (key[1] / 10000).fixed(2) + '万';
+            return key[0] + '-' + key[1];
+        },
+        /* ***** 配置项部分 ******* */
+        // 1.年度项目统计配置
+        projectConfig:function(options){
+            var that = this;
+            options.grid = {
+                left:16,
+                right: 16,
+                top: 20,
+                bottom: 60
+            }
+            options.yAxis[1].axisLabel.formatter = function(value, index) {
+                return value.toString().replace(/,/,'');
+            }
+            options.tooltip.axisPointer.shadowStyle.color = 'rgba(42, 190, 209,0.1)';
+            options.legend.show = true;
+            options.yAxis[1].axisLabel.show = true; // 显示右侧y轴刻度
+            options.series[1].lineStyle.width = 2 // 折线
+            options.series[1].lineStyle.color = '#FF9F40'
+            var maxCountList = this.projectData.rows.map(function(v){
+                return v['项目数量']
+            })
+            var maxPriceList = this.projectData.rows.map(function(v){
+                return v['项目金额']
+            })
+            var maxCount = Math.ceil(Math.max.apply(null,maxCountList)).toString();// 取出数量中最大值
+            var maxPrice = Math.ceil(Math.max.apply(null,maxPriceList)).toString();// 取出金额中最大值
+            // var minPrice = Math.min.apply(null,maxPriceList);// 去除金额最小值
+            maxPrice = Math.ceil(maxPrice / (Math.pow(10,maxPrice.length -1))) * Math.pow(10,maxPrice.length -1)
+            maxCount = Math.ceil(maxCount / (Math.pow(10,maxCount.length -1))) * Math.pow(10,maxCount.length -1)
+            var item = options.yAxis
+            item[0].min = 0;
+            item[1].min = 0;
+            item[0].max = maxCount;
+            item[0].interval = Math.ceil(maxCount / 5);
+            item[1].max = maxPrice;
+            item[1].interval = Math.ceil((maxPrice - 0) / 5);
+            options.tooltip.formatter = function(params) {
+                return that.formatter(params)
+            }
+            options.legend.formatter = function(name) {
+                if(name == '项目金额') {
+                    name = name + '(万元)-右轴'
+                }
+                if(name == '项目数量') {
+                    name =  name + '(个)'
+                }
+                return name;
+            }
+            return options
+        },
+        // 修改年度项目统计里点击浮窗显示效果
+        formatter: function (params) {
+            var tip = '';
+            for (var i = 0; i < params.length; i++) {
+                // 因柱状图颜色为渐变色,此处获取到的柱状图颜色,css不能识别,需单独设置小圆点的颜色
+                params[0].marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:#2ABED1"></span>'
+                if( i=== 0) {
+                    tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value + '个' + '<br/>';
+                }else if(i == 1){
+                    tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value + '万元' + '<br/>';
+                }
+            }
+            tip += '<div style="padding-top:2px;text-align:center;color:#9B9CA3;">' + ' - ' + params[0].name + ' - ' + '</div>'
+            return tip;
+        },
+        // 2.月度采购规模统计配置(折线图)
+        lineChartConfig: function(options) {
+            options.grid.top = 15;
+            options.yAxis[0].splitNumber = 5;
+            options.tooltip.formatter = function(params) {
+                var tip = '';
+                for (var i = 0; i < params.length; i++) {
+                    params[i].marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params[i].color + ';"></span>'
+                    if(!params[i].value[1] && params[i].value[1] != 0) {
+                        tip = tip + ''
+                    } else {
+                        tip = tip + params[i].marker + params[i].seriesName + params[i].name + '采购规模:' + params[i].value[1].toString().replace(/,/,'') + '万元' +'<br/>';
+                    }
+                }
+                tip += '<div style="padding-top:2px;text-align:center;color:#9B9CA3;">' + ' - ' + params[0].name + ' - ' + '</div>'
+                return tip;
+            }
+            return options;
+        },
+        // 3.采购规模分布(热力图)
+        getHotChartData:function(arr){
+            var that = this;
+            var data = [];
+            var waitDelCount = 0;
+            var yAxis = chartOptions.hotChart.yAxis;
+            data = arr.map((v,i) => {
+                v.bidamount_avg = v.bidamount_avg == null ? '0' : v.bidamount_avg
+                var x = i % 10
+                var y = 10 - Math.ceil((i + 1)/10)
+                return [x,y,v.bidamount_avg,v.project_count,v.range]
+            })
+
+            for (var i = 9;i > -1;i--) {
+                var nowArr = data.slice(i*10, (i + 1)*10)
+                var nowDelStatus = nowArr.filter(function(v) { return v[3] > 0})
+                if (nowDelStatus.length > 0) {
+                    break
+                } else {
+                    waitDelCount ++
+                    data.splice(i*10, 10)
+                    yAxis[0].data.splice(0,1)
+                    yAxis[1].data.splice(0,1)
+                }
+            }
+            data.map(v => {
+                v[1] = v[1] - waitDelCount;
+                return v
+            })
+            console.log(waitDelCount,'减掉几行')
+            that.minusRows = waitDelCount;
+            chartOptions.hotChart.series[0].data = data;
+            var maxNum = Math.max.apply(Math, data.map(function(o) {return o[3]}))
+            chartOptions.hotChart.visualMap.max = maxNum < 10 ? 10 : maxNum;
+            var opt = chartOptions.hotChart;
+            opt.graphic[opt.graphic.length - 2].children[0].style.text = maxNum > 10 ? maxNum.toString() : '10';
+            opt.graphic[0].children[0].style.text = '项目数量(个)';
+            var  pj = Math.floor((opt.visualMap.max / 5)*100)/100;
+            opt.visualMap[0].pieces = [
+                {min: 0, max: 0, color: '#FFF4EB',symbol:'rect'},
+                {min: 1, max: pj*1, color: '#FFE7CF',symbol:'rect'},
+                {min: pj*1, max: pj*2,color: '#FFCF9F',symbol:'rect'},
+                {min: pj*2, max: pj*3,color: '#FFB366',symbol:'rect'},
+                {min: pj*3, max: pj*4,color: '#F48A5D',symbol:'rect'},
+                {min: pj*4, color: '#F06326',symbol:'rect'},
+            ];
+            opt.series[0].tooltip.formatter = function(params){
+                // console.log(params.value[2])
+                var data = params.value[4];
+                var newRange = data.split('-');
+                var sRange = utils.moneyUnit(newRange[0]);
+                var mRange = utils.moneyUnit(newRange[1]);
+                var totalRange;
+                if(sRange == '10000元') {
+                    sRange = '1万元'
+                }
+                if(mRange == '10000元') {
+                    mRange = '1万元'
+                }
+                if(sRange == '10000万元') {
+                    sRange = '1亿元'
+                }
+                if(mRange == '10000万元') {
+                    mRange = '1亿元'
+                }
+                if(sRange == '100亿元') {
+                    totalRange = sRange + '以上'
+                } else {
+                    totalRange = sRange + '-' + mRange
+                }
+                var tip = '';
+                var count = '<span>项目数量:' + params.value[3] + '个</span></br>';
+                var rate = (typeof params.value[2] === 'number' && !isNaN(params.value[2])) ? '<span>平均节支率:' + (params.value[2]*100).fixed(2) + '%</span></br>' : '';
+                var budget = '<span>采购规模:' + totalRange + '</span></br>';
+                tip = budget + count + rate;
+                return tip;
+            }
+            chartOptions.hotChart.series.pop();
+            chartOptions.hotChart.graphic.pop();
+            var index;
+            that.$nextTick(function(){
+                var ref = that.$refs.hotChart;
+                hotChart = echarts.init(ref,null,{renderer: "svg"});
+                hotChart.setOption(chartOptions.hotChart);
+                setTimeout(function(){
+                    // 默认展示某一个tooltip
+                    hotChart.dispatchAction({
+                        type: 'highlight',
+                        seriesIndex: 0,  // 显示第几个series
+                        dataIndex: that.getMaxProjectCount(data) // 显示第几个数据
+                    });
+                },20)
+                hotChart.on("mouseover", function(e) {
+                    index = that.getMaxProjectCount(data)
+                    if (e.dataIndex != index) {
+                        hotChart.dispatchAction({
+                            type: "downplay",
+                            seriesIndex: 0,
+                            dataIndex: index
+                        });
+                    }
+                });
+                hotChart.on("mouseout", function(e) {
+                    index = that.getMaxProjectCount(data)
+                    if (e.dataIndex != index) {
+                        hotChart.dispatchAction({
+                            type: "highlight",
+                            seriesIndex: 0,
+                            dataIndex: that.getMaxProjectCount(data)
+                        });
+                    }
+                });
+            })
+        },
+        // 4.各行业项目平均节支率
+        savingsRateConfig: function(options) {
+            var data = this.savingsRateData.rows;
+            var arr = [];
+            for (var i = 0; i < data.length; i++) {
+                var obj = data[i];
+                for (var key in obj) {
+                    if(key !== '日期' && obj[key]){
+                        arr.push(obj[key])
+                    }
+                }
+            }
+            var maxRate = Math.ceil(Math.max.apply(null,arr)).toString();
+            maxRate = Math.ceil(maxRate / (Math.pow(10,maxRate.length -1))) * Math.pow(10,maxRate.length -1);
+            console.log(maxRate)
+            options.color = ['#FB483D', '#05A6F3', '#0BD991', '#FF9F40','#8E6DF2','#C0C4CC'];
+            options.xAxis[0].axisLabel.margin = 12
+            options.yAxis[0].axisLabel.formatter = '{value}%';
+            options.yAxis[0].min = 0;
+            options.yAxis[0].max = maxRate;
+            options.yAxis[0].interval = Math.ceil(maxRate / 5);
+            options.grid = {
+                top: 20,
+                right: 16,
+                bottom: 70,
+                left: 10
+            }
+            options.legend.textStyle.padding = [0, 18, 0,0];
+            options.legend.left = 16;
+            options.legend.bottom = 10;
+            options.tooltip.formatter = function(params) {
+                var tip = '';
+                for (var i = 0; i < params.length; i++) {
+                    params[i].marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params[i].color + ';"></span>'
+                    if(params[i].value[1] === undefined || params[i].value[1] === null || isNaN(params[i].value[1])) {
+                        tip = tip + params[i].marker + params[i].seriesName + ':--<br/>';
+                    } else {
+                        tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value[1] +'%<br/>';
+                    }
+                }
+                tip += '<div style="padding-top:2px;text-align:center;color:#9B9CA3;">' + ' - ' + params[0].name + ' - ' + '</div>'
+                return tip;
+            }
+            return options;
+        },
+        // 5.各行业项目规模占比(饼图自定义配置)
+        getPieCharData: function(data) {
+            var that = this;
+            var arr = [];
+            // 降序排列
+            data.sort(function(a,b){
+                return b.bidamount_share - a.bidamount_share
+            })
+            data.forEach(function(item){
+                arr.push(item.scopeclassName,item.bidamount_share,item.bidamount_count,item.project_count,item.rate_avg)
+            })
+            var normal =['行业','采购规模占比','采购规模', '采购项目数量','平均节支率'];
+            var newArr = that.arrTrans(5,arr);
+            newArr.unshift(normal)
+            chartOptions.deformPieChart.dataset.source = newArr;
+            chartOptions.deformPieChart.tooltip.formatter = function(params){
+                var tip = '';
+                var data = params.data;
+                params.marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params.color +'"></span>';
+                var percent = '<span style="padding-left:13px;">采购规模占比:' + (data[1]*100).fixed(2) + '%</span></br>';
+                var scale = '<span style="padding-left:13px;">采购规模:' + utils.moneyUnit(data[2].fixed(2)) + '</span></br>';
+                var count = '<span style="padding-left:13px;">采购项目数量:' + data[3] + '个</span></br>';
+                var rate = (typeof data[4] === 'number' && !isNaN(data[4])) ? '<span style="padding-left:13px;">平均节支率:' + (data[4]*100).fixed(2) + '%</span></br>' : '';
+                tip = params.marker + params.name +'<br/>' + percent + scale + count + rate
+                return tip;
+            }
+            that.$nextTick(function(){
+                var ref = that.$refs.pieChart;
+                pieChart = echarts.init(ref,null,{renderer: "svg"});
+                pieChart.setOption(chartOptions.deformPieChart);
+                pieChart.resize();
+            })
+        },
+        arrTrans: function(num, arr) { // 一维数组转换为二维数组
+            var iconsArr = [];
+            arr.forEach(function(item, index) {
+                var page = Math.floor(index / num); // 计算该元素为第几个素组内
+                if (!iconsArr[page]) { // 判断是否存在
+                    iconsArr[page] = [];
+                }
+                iconsArr[page].push(item);
+            });
+            return iconsArr;
+        },
+        // 6.合作企业注册资本分布(柱状图+折线图配置)
+        regCapConfig: function (options) {
+            // console.log(options,'合作企业注册资本分布(柱状图+折线图)')
+            var customData = this.regCapitalData.customData;
+
+            var maxCountList = this.regCapitalData.rows.map(function(v){
+                return v['企业数量'];
+            })
+            var maxPriceList = this.regCapitalData.rows.map(function(v){
+                return v['累计采购规模'];
+            })
+            var maxLeft = Math.max.apply(null,maxCountList);
+            var maxRight = Math.max.apply(null,maxPriceList);
+            maxLeft = Math.ceil(maxLeft).toString();
+            maxRight = Math.ceil(maxRight).toString();
+            var l = Math.ceil(maxLeft / (Math.pow(10,maxLeft.length -1))) * Math.pow(10,maxLeft.length -1);
+            var r = Math.ceil(maxRight / (Math.pow(10,maxRight.length -1))) * Math.pow(10,maxRight.length -1);
+            var item = options.yAxis
+            item[0].min = 0;
+            item[1].min = 0;
+            item[0].max = l;
+            item[0].interval = Math.ceil(l / 5);
+            item[1].max = Math.ceil(r);
+            item[1].interval = Math.ceil((r - 0) / 5);
+            item[0].minInterval = 1;
+            options.tooltip.formatter = function(params) {
+                var obj = {}
+                var tip = '';
+                customData.forEach(function(v) {
+                    if(v['注册资本'] == params[0].name) {
+                        for(var key in v){
+                            obj[key] = v[key];
+                        }
+                    }
+                })
+                var regMoney = '<span>注册资本:' + obj['注册资本'] + '</span></br>';
+                var count = '<span>企业数量:' + obj['企业数量'] + '个</span></br>';
+                var scale = '<span>累计采购规模:' + obj['累计采购规模'] + '万元</span></br>';
+                var pCount = '<span>采购项目数量:' + obj['采购项目数量'] + '个</span></br>';
+                var rate = (typeof obj['平均节支率'] === 'number' && !isNaN(obj['平均节支率'])) ? '<span>平均节支率:' + (obj['平均节支率']*100).fixed(2) + '%</span></br>' : '';
+                tip = regMoney + count + scale + pCount + rate
+                return tip;
+            }
+            options.series.forEach(function(item) {
+                if(item.name == "累计采购规模") {
+                    item.type = 'line'
+                } else {
+                    item.type= 'bar'
+                    item.barWidth = 12
+                }
+            })
+            options.legend.formatter =  function(name){
+                if(name == "累计采购规模" ) {
+                    name = "累计采购规模(万元)-右轴"
+                }
+                if(name == "企业数量" ) {
+                    name = "企业数量(个)"
+                }
+                return name;
+            }
+            return options;
+        },
+        // 7.合作企业年龄分布配置项
+        workingAgeConfig: function(options) {
+            for (var i = 0; i < options.series.length; i++) {
+                options.series[i].barWidth = 20;
+                options.series[i].stack = '企业年龄分布'
+            }
+            var arr = this.workingAgeData.customData;
+            options.yAxis[0].minInterval = 1;
+            options.xAxis[0].name = '企业年龄(年)'
+            options.xAxis[0].axisLabel.interval = 0
+            options.tooltip.formatter = function(params) {
+                var obj = {}
+                var tip = '';
+                arr.forEach(function(v) {
+                    if(v['企业年龄'] == params[0].name) {
+                        for(var key in v){
+                            obj[key] = v[key];
+                        }
+                    }
+                })
+                var regMoney = '<span>企业年龄:' + obj['企业年龄'] + '</span></br>';
+                var count = '<span>企业数量:' + obj['企业数量'] + '个</span></br>';
+                var scale = '<span>累计采购规模:' + obj['累计采购规模'] + '万元</span></br>';
+                var pCount = '<span>采购项目数量:' + obj['采购项目数量'] + '个</span></br>';
+                var rate = (typeof obj['平均节支率'] == 'number' && !isNaN(obj['平均节支率'])) ? '<span>平均节支率:' + (obj['平均节支率']*100).fixed(2) + '%</span></br>' : '';
+                tip = regMoney + count + scale + pCount + rate
+                return tip;
+            }
+            options.color = ['#05A6F3']
+            return options;
+        },
+        // 8.合作企业注册地分布(地图配单独置项)
+        mapConfig: function(options) {
+            // console.log(options, '地图配置')
+            options.grid = {
+                left: 16,
+                right: 16
+            }
+            var arr = this.mapChartData.customData;
+            var maxNum = Math.max.apply(Math, arr.map(function(o) {return o['企业数量']}))
+            options.visualMap.min = 1;
+            options.visualMap.max = maxNum < 100 ? 100 : maxNum;
+            options.graphic[0].children[0].style.text = '企业数量(个)'
+            options.graphic[options.graphic.length - 1].children[0].style.text = maxNum > 100 ? maxNum : 100;
+            options.graphic[options.graphic.length - 1].children[1].style.text = 1;
+            options.tooltip.formatter = function(params) {
+                var obj = {}
+                var tip = '';
+                arr.forEach(function(v) {
+                    if(v['企业注册地'] == params.name) {
+                        for(var key in v){
+                            obj[key] = v[key];
+                        }
+                    }
+                })
+                if(Object.keys(obj).length > 0) {
+                    var regArea = '<span>企业注册地:' + obj['企业注册地'] + '</span></br>';
+                    var count = '<span>企业数量:' + obj['企业数量'] + '个</span></br>';
+                    var scale = '<span>累计采购规模:' + obj['累计采购规模'] + '万元</span></br>';
+                    var pCount = '<span>采购项目数量:' + obj['采购项目数量'] + '个</span></br>';
+                    var rate = (typeof obj['平均节支率'] == 'number' && !isNaN(obj['平均节支率']))? '<span>平均节支率:' + (obj['平均节支率']*100).fixed(2) + '%</span></br>' : '';
+                    tip = regArea + count + scale + pCount + rate
+                } else {
+                    tip = ''
+                }
+                return tip;
+            }
+            return options
+        },
+        // 4.各类招标方式占比图自定义tooltip
+        tooltipHandle:function(item,index){
+            // console.log(item,index)
+            this.doubleBar.showTooltip = true
+            item.positionLeft = Math.random()*100 + 'px'
+            item.positionTop = (index + 1)*20 + 'px'
+            this.doubleBar.info = item
+        },
+        openDialog: function () {
+          var _this = this
+          this.$dialog.confirm({
+            width: 303,
+            className: 'custom-dialog',
+            title: '您暂无使用权限',
+            message: '开通大会员,采购单位项目动态全面获取,帮助企业洞察采购需求,开发新客户!',
+            messageAlign:'left',
+            confirmButtonText: _this.power.indexOf(5) < 0 && _this.bigStatus > 0 ? '联系客服' : '去开通',
+            confirmButtonColor: '#2ABED1',
+            showCancelButton: true,
+            cancelButtonText: '取消'
+          }).then(function(){
+            if (_this.power.indexOf(5) < 0 && _this.bigStatus > 0) {
+              location.href = "tel: 400-108-6670"
+            } else {
+              _this.goBuyBuried('开通大会员,采购单位项目动态全面获取,帮助企业洞察采购需求,开发新客户!')
+            }
+          }).catch(function(err) {
+            console.log(err)
+          });
+        },
+        // 跳转三级页
+        goDetail: function(item){
+          if (item.id) {
+            var href = '/article/content/' + item.id + '.html'
+            location.href = href
+          } else {
+            if (this.power.indexOf(5) == -1) {
+              this.openDialog()
+            } else {
+              console.log('没有id')
+            }
+          }
+        },
+        // 求最大项目数量
+        getMaxProjectCount: function (analysisArr) {
+            if (!analysisArr || !$.isArray(analysisArr)) return
+            var itemMaxKey = 3  // 每一项中要比较大小的索引
+            var arr = JSON.parse(JSON.stringify(analysisArr))
+            utils.bSort(arr, itemMaxKey)
+            var maxCount = arr[arr.length - 1][itemMaxKey];
+            var maxIndex = -1
+            analysisArr.some(function (item, index) {
+                var gotIt = item[itemMaxKey] == maxCount
+                if (gotIt) maxIndex = index
+                return gotIt
+            })
+            return maxIndex
+        },
+    }
+}
+var unit = new Vue(vNode)

二進制
src/web/staticres/common-module/collection/image/buyer/01-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/01.png


二進制
src/web/staticres/common-module/collection/image/buyer/02-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/02.png


二進制
src/web/staticres/common-module/collection/image/buyer/03-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/03.png


二進制
src/web/staticres/common-module/collection/image/buyer/04-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/04.png


二進制
src/web/staticres/common-module/collection/image/buyer/05-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/05.png


二進制
src/web/staticres/common-module/collection/image/buyer/06-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/06.png


二進制
src/web/staticres/common-module/collection/image/buyer/07-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/07.png


二進制
src/web/staticres/common-module/collection/image/buyer/08-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/08.png


二進制
src/web/staticres/common-module/collection/image/buyer/09-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/09.png


二進制
src/web/staticres/common-module/collection/image/buyer/10-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/10.png


二進制
src/web/staticres/common-module/collection/image/buyer/11-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/11.png


二進制
src/web/staticres/common-module/collection/image/buyer/12-bg.png


二進制
src/web/staticres/common-module/collection/image/buyer/12.png


+ 206 - 0
src/web/staticres/common-module/collection/js/buyer-example.js

@@ -0,0 +1,206 @@
+var vipDialog = `
+<div class="vip_openDialog">
+  <div class="vip_head">
+      <span>{{getTextMap.titleText}}</span>
+      <span class="vip_extend"><span>{{getTextMap.headText.top}}</span><br/>{{getTextMap.headText.bot}}</span>
+  </div>
+  <div class="vip_content">
+    <div class="vip_content_div">
+      <img class="vip_img" :src="imgurl" />
+      <span class="vip_example">示例</span>
+    </div>
+  </div>
+  <div class="openBtn">
+      <button class="goBtn" @click="goOpen(getTextMap.headText.top,getTextMap.headText.bot)">{{getTextMap.btnText}}</button>
+  </div>
+</div>
+`
+
+var buyerExample = {
+  name: 'buyer-example',
+  template: vipDialog,
+  props: {
+    'imgurl': {
+      type: String,
+      default: function() {
+        return ''
+      }
+    },
+    "type": {
+      type: String,
+      default: function () {
+        return ''
+      }
+    },
+    "power": {
+      type: Array,
+      default: function () {
+        return []
+      }
+    },
+    "status": {
+      type: Number,
+      default: function () {
+        return 0
+      }
+    }
+  },
+  data: function() {
+    return {
+      titleText: '开通大会员',
+      btnText: '去开通',
+      headText: {
+        top: '通过实时监控项目的招标、中标、合同等',
+        bot: '信息,全面挖掘更多潜在商机!'
+      }
+    }
+  },
+  computed: {
+    getTextMap () {
+      var textMap = {
+        titleText: '开通大会员',
+        btnText: '去开通',
+        headText: {
+          top: '通过实时监控项目的招标、中标、合同等',
+          bot: '信息,全面挖掘更多潜在商机!'
+        }
+      }
+      if (this.power.indexOf(5) < 0 && this.status > 0) {
+        textMap.btnText = '联系客服'
+      }
+      switch (this.type) {
+          // 历史项目联系方式
+        case 'item_1': {
+          textMap.headText.top = ' 获取采购单位类似项目联系人、'
+          textMap.headText.bot = '联系方式等,一键拨打!'
+          break
+        }
+          // 年度项目统计
+        case 'item_2': {
+          textMap.headText.top = '采购单位年度项目规模、增长趋势'
+          textMap.headText.bot = '一目了然,快速分析市场!'
+          break
+        }
+          // 月度采购规模统计
+        case 'item_3': {
+          textMap.headText.top = '通过纵向对比近3年月度中标金额,'
+          textMap.headText.bot = '快速分析行业月度采购趋势!'
+          break
+        }
+          // 采购规模分布
+        case 'item_4': {
+          textMap.headText.top = '全面了解采购单位的年度采购规划、'
+          textMap.headText.bot = '项目预算,帮助投标人制定投标策略!'
+          break
+        }
+          // 各类招标方式占比
+        case 'item_5': {
+          textMap.headText.top = '洞察采购单位招标方式、数量、金额占比,'
+          textMap.headText.bot = '综合了解采购单位,帮企业决策是否投标!'
+          break
+        }
+          // 各行业项目平均节支率
+        case 'item_6': {
+          textMap.headText.top = '分析行业项目的预算、中标价格差额比率,'
+          textMap.headText.bot = '帮助企业核算采购项目的利润率!'
+          break
+        }
+          // 各行业项目规模占比
+        case 'item_7': {
+          textMap.headText.top = '通过行业采购项目的规模、数量、利润率,'
+          textMap.headText.bot = '洞悉采购单位的采购状况!'
+          break
+        }
+          // 重点合作企业
+        case 'item_8': {
+          textMap.headText.top = '通过挖掘重点合作企业,直观了解采购单位'
+          textMap.headText.bot = '与企业关系远近,辅助投标决策!'
+          break
+        }
+          // 合作企业注册资本分布
+        case 'item_9': {
+          textMap.headText.top = '通过分析合作企业注册资本、采购项目规模、'
+          textMap.headText.bot = '利润率,全面洞察采购单位合作企业!'
+          break
+        }
+         // 合作企业年龄分布
+        case 'item_10': {
+          textMap.headText.top = '通过分析合作企业年龄、数量、规模分布情况,'
+          textMap.headText.bot = '全面洞察采购单位合作企业!'
+          break
+        }
+        // 合作企业注册地分布
+        case 'item_11': {
+          textMap.headText.top = '通过分析合作企业的地址、数量、采购规模,'
+          textMap.headText.bot = '了解采购单位营商环境,辅助投标决策!'
+          break
+        }
+        // 重点合作代理机构
+        case 'item_12': {
+          textMap.headText.top = '通过提供合作代理机构的名录、数量,全面洞察'
+          textMap.headText.bot = '采购单位合作环境,辅助投标决策!'
+          break
+        }
+        default: {
+          textMap.headText.top = '采购单位项目动态全面获取,帮助企业'
+          textMap.headText.bot = '洞察采购需求,开发新客户!'
+          break
+        }
+      }
+      return textMap
+    },
+  },
+  methods: {
+    linkFn: function(id) {
+      var isWeixin = utils.isWeiXinBrowser
+      if(!isWeixin) {
+        if (this.getTextMap.btnText == '去开通') {
+          // 跳转到大会员
+          location.href = '/jyapp/big/page/buy_commit?bid=' + id
+        } else if (this.getTextMap.btnText == '联系客服') {
+          try {
+            JyObj.callPhone('400-108-6670');
+          } catch (error) {
+            console.log(error)
+          }
+        }
+      } else {
+        if (this.getTextMap.btnText == '去开通') {
+          // 跳转到大会员
+          location.href = '/big/wx/page/buy_commit?bid=' + id
+        } else if (this.getTextMap.btnText == '联系客服') {
+          location.href = 'tel:400-108-6670'
+        }
+      }
+    },
+    goOpen: function(top, bot) {
+      console.log(this.$parent.encryptId)
+      var params = {
+        mold: 'isCBBT',
+        id: this.$parent.encryptId,
+        introduce: top + bot
+      }
+      var _this = this
+      console.log(_this.getTextMap.btnText)
+      if (_this.getTextMap.btnText == '去开通') {
+        $.ajax({
+          type: 'POST',
+          url: '/publicapply/drainage/buyerunit',
+          contentType: "application/json",
+          data: JSON.stringify(params),
+          success: function (res) {
+            console.log(res)
+            _this.linkFn(_this.$parent.encryptId)
+          },
+          error: function (error) {
+            console.log(error)
+            _this.linkFn(_this.$parent.encryptId)
+          }
+        })
+      } else if (_this.getTextMap.btnText == '联系客服') {
+        _this.linkFn(_this.$parent.encryptId)
+      }
+      
+    }
+  }
+}

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

@@ -12,7 +12,7 @@ var historyProTemplate = `
                   <div class="his-contact-list" v-for="(data,index) in item.contacts">
                       <div class="contact-top">
                           <div class="contactlabel">联系人:</div>
-                          <div class="contact-name">{{data[Object.keys(data)]}}</div>
+                          <div class="contact-name">{{data[Object.keys(data)] || '--'}}</div>
                       </div>
                       <a :href="'tel:'+Object.keys(data)[0]" class="contact-bot" v-if="Object.keys(data)[0]!==''" @click="telPhoneClick($event,Object.keys(data)[0])">
                           <div class="con-left">
@@ -128,6 +128,8 @@ var hisproComponent = {
                 _this.list = res.data.list
               }
             }
+          } else {
+            loading.clear()
           }
         }
       })

文件差異過大導致無法顯示
+ 21 - 1
src/web/staticres/css/wxcontentinfo.css


二進制
src/web/staticres/images/big-drain.png


二進制
src/web/staticres/images/pc-drainage-bg.png


+ 18 - 2
src/web/templates/big-member/pc/page_buy_commit.html

@@ -507,6 +507,7 @@
                 return openLoginDig()
             }
             var paramsMid = getParam('mid')
+            var paramsUnit = getParam('unit')
             $.ajax({
                 type: 'POST',
                 url: '/jypay/bigmember/createOrder',
@@ -516,6 +517,21 @@
                     order_phone: OrderPhoneCheck.phone
                 },
                 success: function (res) {
+                  // 采购单位画像引流
+                    if (paramsUnit && res.data && res.data.order_code) {
+                        $.ajax({
+                            type: 'POST',
+                            url: '/publicapply/drainage/buyerunit',
+                            data: JSON.stringify({
+                                mold: 'isOBT',
+                                price: getDisPrice(getParams.level, getParams.cycle)*100,
+                                orderCode: res.data.order_code,
+                                id: paramsUnit
+                            }),
+                            contentType: "application/json",
+                            dataType: "json"
+                        })
+                    }
                   // 判断url里是否有引导语文案id,如果有就需要埋点
                   if (paramsMid && res.data && res.data.order_code) {
                       try {
@@ -548,8 +564,8 @@
                       })
                     }
                     setTimeout(function() {
-                      history.replaceState({"flag": "pay"}, '', '/front/member/memberDetail?order_code=' + res.data.order_code);
-                      location.href = '/front/member/orderPay/' + res.data.order_code + '?mid=' + paramsMid;
+                      history.replaceState({"flag": "pay"}, '', '/front/member/memberDetail?order_code=' + res.data.order_code + (paramsUnit ? ('&unit=' + paramsUnit): ''));
+                      location.href = '/front/member/orderPay/' + res.data.order_code + '?mid=' + paramsMid + (paramsUnit ? ('&unit=' + paramsUnit): '');
                     }, 300)
                 }
             })

+ 29 - 3
src/web/templates/big-member/pc/page_index.html

@@ -1219,9 +1219,12 @@
         })
         $('*[data-go-buy]').on('click', function () {
             var member_pc=getMemberSource(source);
+            var i = 0
+            var introduce = '';
             try {
-                var i = $(this).attr('id').split('go-buy-')[1] || 0
-                _hmt.push(['_trackEvent',member_pc, 'click', corrMap[i]]);
+                i = $(this).attr('id').split('go-buy-')[1] || 0
+                introduce = corrMap[i]
+                _hmt.push(['_trackEvent',member_pc, 'click', introduce]);
             } catch (e) {
                 console.log('未初始化百度统计', e)
             }
@@ -1234,6 +1237,27 @@
                 openLoginDig()
                 return
             }
+            // 采购单位画像引流
+            var paramsUnit = getParam('unit')
+            if (paramsUnit) {
+                $.ajax({
+                    type: 'POST',
+                    url: '/publicapply/drainage/buyerunit',
+                    data: JSON.stringify({
+                        mold: 'isCBBT',
+                        introduce: introduce,
+                        id: paramsUnit
+                    }),
+                    contentType: "application/json",
+                    dataType: "json",
+                    success: function (r) {
+                        toNextPage()
+                    },
+                    error: function (r) {
+                        toNextPage()
+                    }
+                })
+            }
             // 判断是不是从有没有引流文案
             if (getParam('id')) {
               try {
@@ -1268,7 +1292,9 @@
                 // 购买过
                 location.href = '/swordfish/page_big_pc'
             } else {
-                var buy_commit_href ='/big/pc/page/buy_commit?mid=' + getParam('id');
+                // 采购单位画像引流
+                var paramsUnit = getParam('unit')
+                var buy_commit_href ='/big/pc/page/buy_commit?mid=' + getParam('id') + (paramsUnit ? ('&unit=' + paramsUnit): '');
                 if(source!=null&&source!=undefined){
                   buy_commit_href+="&source="+source;//baidusem
                 }

+ 23 - 2
src/web/templates/big-member/wx/page_buy_commit.html

@@ -450,6 +450,7 @@
                     level = 1
                 }
                 var paramsMid = utils.getParam('mid') //引流语文案id
+                var buyerId = utils.getParam('bid') // 从采购单位画像页面携带的加密id
                 $.ajax({
                     type:'POST',
                     url:'/jypay/bigmember/createOrder',
@@ -461,7 +462,7 @@
                     success:function(res){
                         if( res.error_code >= 0 ){
                           // 判断url里是否有引导语文案id,如果有就需要埋点
-                          if (paramsMid) {
+                            if (paramsMid) {
                               try {
                                 $.ajax({
                                   type: "POST",
@@ -479,9 +480,29 @@
                                 console.log(error)
                               }
                             }
+                            // 采购单位画像跳转过来的埋点
+                            if (buyerId) {
+                              var params = {
+                                mold: 'isOBT',
+                                price: Number(_this.afterall.replace(',', ''))*100,
+                                orderCode: res.data.order_code
+                              }
+                              $.ajax({
+                                type: 'POST',
+                                url: '/publicapply/drainage/buyerunit',
+                                contentType: "application/json",
+                                data: JSON.stringify(params),
+                                success: function (res) {
+                                  console.log(res)
+                                },
+                                error: function (error) {
+                                  console.log(error)
+                                }
+                              })
+                            }
                             setTimeout(function(){
                               history.replaceState({"flag": "pay"}, '', '/front/wxMyOrder/memberDetail/' + res.data.order_code);
-                              location.href = '/weixin/pay/checkout_member?orderCode='+res.data.order_code + '&mid=' +paramsMid;
+                              location.href = '/weixin/pay/checkout_member?orderCode='+res.data.order_code + '&mid=' +paramsMid + '&bid=' + buyerId;;
                             },300)
                         }else {
                             alert(res.error_msg)

+ 390 - 0
src/web/templates/big-member/wx/page_unit_portrayal.html

@@ -0,0 +1,390 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+<head>
+    <title>采购单位画像 </title>
+
+    <!--引入公共资源头部-->
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="format-detection" content="telephone=yes"/>
+    <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">
+
+    <!--S-当前页必定需要预加载的资源-->
+    <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+    <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+    <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+    <link rel="preload" as="style" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
+    <!--E-当前页必定需要预加载的资源-->
+    <script src="/big-member/js/rem.js"></script>
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
+    <!--E-当前页面的css资源-->
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/unit_portrayal.css?v={{Msg "seo" "version"}}' />
+    <style>
+        .skeleton{
+            height: 100%;
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+            align-content: center;
+            background-color: #fff;
+        }
+        .working{
+            width: 4rem;
+            height: 4rem;
+            margin: -0.4rem auto 0;
+        }
+        .v-charts-component-loading{
+            top:0.96rem;
+            z-index: 999;
+            min-height: 284px;
+        }
+        .vip_component{
+          position: relative;
+          margin-top: -1px;
+        }
+        .example-title{
+          position: absolute;
+          top:.32rem;
+          left:0.32rem;
+          font-size: .36rem;
+        }
+        .d_title{
+          font-weight: normal;
+        }
+        .vip_openDialog{
+            padding: 0.56rem 0 0.64rem;
+            width: 6.06rem;
+            /* height: 6.88rem; */
+            background: url('{{Msg "seo" "cdn"}}/big-member/image/openVip.png') no-repeat;
+            background-size: 100% 100%;
+            box-sizing: border-box;
+        }
+    </style>
+</head>
+<body>
+<div class="j-container">
+    <div id="unit_portrayal" class="j-main" v-cloak @click="doubleBar.showTooltip = false">
+        <div v-if="chartLoading" class="skeleton">
+            <img class="working"  src="/big-member/image/working.gif" alt="">
+        </div>
+        <div v-else>
+          <div class="u-header">
+              <div class="company">
+                  <span class="j-icon icon-company"></span>
+                  <span class="ent-title">${buyer.name || '--'}</span>
+              </div>
+              <p class="region">所在地:${statistics.province || '--'} ${statistics.city}</p>
+              <p class="buyer-type">采购单位类型:${statistics.buyerClass || '--'}</p>
+              <div class="buyer-info">
+                  <div class="bi-item">
+                      <span>采购项目数量</span>
+                      <span>${statistics.buyerCount || '--'}</span>
+                  </div>
+                  <div class="bi-item">
+                      <span>采购规模</span>
+                      <span>${statistics.buyerScale || '--'}</span>
+                  </div>
+                  <div class="bi-item">
+                      <span>中标企业数量</span>
+                      <span>${statistics.winnerCount || '--'}</span>
+                  </div>
+                  <div class="bi-item">
+                      <span>外省中标企业</span>
+                      <span>${statistics.otherWinner || '--'}</span>
+                  </div>
+                  <div class="bi-item">
+                      <span>流标记录数</span>
+                      <span>${statistics.fail_count || '--'}</span>
+                  </div>
+              </div>
+              <div class="static-scope">数据统计范围:${statistics.start || '-'}-${statistics.end}</div>
+          </div>
+          <div class="empty" v-show="allNot">
+              <div class="j-img img-empty empty-img"></div>
+              <p class="empty-text">暂无画像信息</p>
+          </div>
+          <!-- 招标动态 -->
+          <div class="dynamic" v-if="isShow.showDynamic">
+              <div class="d_title">招标动态</div>
+              <div class="d_content">
+                  <div class="d_list" v-for="(item,index) in dt.list" @click="goDetail(item)">
+                      <p class="i_title">${item.title}</p>
+                      <div class="i_info">
+                          <p class="area_type">
+                              <span v-if="item.area" class="i_area">${item.area}</span>
+                              <span v-if="item.bidstatus" class="i_type">${item.bidstatus}</span>
+                              <span v-if="item.bidamount" class="i_type">${item.bidamount}</span>
+                          </p>
+                          <p class="i_time">${item.firsttime}</p>
+                      </div>
+                  </div>
+                  <div v-show="dt.isNext">
+                      <div class="more">
+                          <span @click.stop="getNewMsg">查看更多</span>
+                      </div>
+                  </div>
+              </div>
+          </div>
+          <!-- 历史项目联系人 -->
+          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png?v=1') no-repeat;background-size:100% 100%;">
+            <p class="example-title">历史项目联系方式</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_1" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/01.png'></buyer-example>
+          </div>
+          <div v-else>
+            <hispro-component class="history-list" type="buyer" :buyer="buyer.name"></hispro-component>
+          </div>
+          <!-- 年度项目统计 -->
+          <div class="years" v-if="isShow.showYearData">
+              <div class="chart_title">年度项目统计</div>
+              <ve-histogram
+                  ref="projectDataCharts"
+                  height="284px"
+                  :colors="colorGreen"
+                  :data="projectData"
+                  :init-options="initRendererSvg"
+                  :after-config="projectConfig"
+                  :settings="projectChartSettings"
+                  :extend="barChart.chartExtend">
+              </ve-histogram>
+              <div class="bar-tip">注:项目金额指所有项目的中标金额之和,少数缺失的中标金额,用项目预算补充。</div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/02-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">年度项目统计</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_2" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/02.png'></buyer-example>
+          </div>
+          <!-- 月度采购规模统计 -->
+          <div class="month-scale" v-if="isShow.showMonthScale">
+              <div class="chart_title">月度采购规模统计</div>
+              <div class="lineChart">
+                  <div style="padding: 6px 12px 0;font-size: 10px;color: #9B9CA3;">采购规模(万元)</div>
+                  <ve-line :init-options="initRendererSvg" :data="monthScaleData" height="300px" :after-config="lineChartConfig" :extend="chartOptions.lineChart"></ve-line>
+              </div>
+              <div class="bar-tip">注:采购规模指中标金额,少数缺失的中标金额,用项目预算补充。</div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/03-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">月度采购规模统计</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_3" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/03.png'></buyer-example>
+          </div>
+          <!-- 采购规模分布 -->
+          <div class="scale-distribute" v-if="isShow.showScaleFb">
+              <div class="chart_title">采购规模分布</div>
+              <div class="hotMapChart">
+                  <div id="myChart" ref="hotChart" :style="{height: heatMapHeight}"></div>
+              </div>
+              <div class="bar-tip">注:平均节支率=(全部项目预算-全部中标金额)/全部项目预算,是指价格减让部分与原价的比率,仅统计预算和中标金额同时存在的项目。</div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/04-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">采购规模分布</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_4" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/04.png'></buyer-example>
+          </div>
+          <!-- 各类招标方式占比(双柱图) -->
+          <div class="double-bar" v-if="isShow.showBidType">
+              <div class="chart_title">各类招标方式占比</div>
+              <div class="bar-content">
+                  <div class="rate-item" v-for="(item,index) in doubleBar.list" @click.stop="tooltipHandle(item,index)">
+                      <div class="item-label">${item.type}</div>
+                      <div class="item-chart">
+                          <div class="left-chart">
+                              <div class="item-progress" v-if="item.lPercent > 50">
+                                  <span class="blue-progress-bg blue-padding" :style="{width: item.lPercent + '%'}">${item.num}(${item.numShare  + '%'})</span>
+                              </div>
+                              <div class="item-progress" v-else>
+                                  <span class="blue-progress-text">${item.num}(${item.numShare  + '%'})</span>
+                                  <span class="blue-progress-bg" :style="{width: item.lPercent + '%'}"></span>
+                              </div>
+                          </div>
+                          <div class="right-chart">
+                              <div class="item-progress" v-if="item.rPercent > 50">
+                                  <span class="yellow-progress-bg yellow-padding" :style="{width: item.rPercent + '%'}">${item.money}(${item.moneyShare + '%'})</span>
+                              </div>
+                              <div class="item-progress" v-else>
+                                  <span class="yellow-progress-bg" :style="{width: item.rPercent + '%'}"></span>
+                                  <span class="yellow-progress-text">${item.money}(${item.moneyShare + '%'})</span>
+                              </div>
+                          </div>
+                      </div>
+                  </div>
+                  <div class="tooltip" v-show="doubleBar.showTooltip" :style="{left:doubleBar.info.positionLeft,top:doubleBar.info.positionTop}">
+                      <div class="tooltip-item">
+                          <span class="tooltip-circle blue-circle"></span>
+                          <span>数量(个)及占比:${doubleBar.info.num}(${doubleBar.info.numShare + '%'})</span>
+                      </div>
+                      <div class="tooltip-item">
+                          <span class="tooltip-circle yellow-circle"></span>
+                          <span>金额(万元)及占比:${doubleBar.info.money}(${doubleBar.info.moneyShare + '%'})</span>
+                      </div>
+                      <div class="tooltip-name">- ${doubleBar.info.type} -</div>
+                  </div>
+                  <div class="custom-legend">
+                      <div class="legend-item">
+                          <span class="tooltip-circle blue-circle"></span>
+                          <span>数量(个)及占比</span>
+                      </div>
+                      <div class="legend-item">
+                          <span class="tooltip-circle yellow-circle"></span>
+                          <span>金额(万元)及占比</span>
+                      </div>
+                  </div>
+              </div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:8.8rem;background:url('/common-module/collection/image/buyer/05-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">各类招标方式占比</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_5" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/05.png'></buyer-example>
+          </div>
+          <!-- 各行业项目平均节支率 -->
+          <div class="savings-rate" v-if="isShow.showSaveRate">
+              <div class="chart_title">各行业项目平均节支率</div>
+              <div class="lineChart">
+                  <ve-line :init-options="initRendererSvg" :data="savingsRateData" height="314px" :after-config="savingsRateConfig" :extend="chartOptions.lineChart"></ve-line>
+              </div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/06-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">各行业项目平均节支率</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_6" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/06.png'></buyer-example>
+          </div>
+          <!-- 各行业项目规模占比 -->
+          <div class="industry-scale-rate" v-if="isShow.showScaleRate">
+              <p class="chart_title">各行业项目规模占比</p>
+              <div class="pieChart">
+                  <div ref="pieChart" style="height: 360px;"></div>
+              </div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:11.2rem;background:url('/common-module/collection/image/buyer/07-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">各行业项目规模占比</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_7" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/07.png'></buyer-example>
+          </div>
+          <!-- 重点合作企业 -->
+          <div class="client" v-if="computedClientList && computedClientList.length> 0">
+              <div class="client-title">重点合作企业</div>
+              <div class="client-content">
+                  <div class="client-list" v-for="c in computedClientList" >
+                      <div class="c-thead">
+                          <strong class="c-name">${c.class}</strong>
+                          <span class="c-count">项目数量</span>
+                          <!-- <span class="c-rate">平均折扣率</span> -->
+                          <span class="c-time">最近合作日期</span>
+                      </div>
+                      <div class="progress-bar-container">
+                          <div class="progress-bar-item" v-for="(item,index) in c.topData" :key="index">
+                              <div class="item-label">
+                                  <span @click="goEntInfo(item)" class="ellipsis-2 item-name">${item.winnerName}</span>
+                                  <span class="item-count">${item.countProject}个</span>
+                                  <!-- <span class="item-rate">${item.rate}</span> -->
+                                  <span class="item-time">${item.lastTime}</span>
+                              </div>
+                              <div class="item-progress">
+                                  <span class="item-money"  v-if="item.countMoney > 0">${utils.moneyUnit(item.countMoney)}</span>
+                                  <span class="item-progress-count active-progress" :style="{width: item.parent}"></span>
+                              </div>
+                          </div>
+                      </div>
+                  </div>
+              </div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/08-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">重点合作企业</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_8" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/08.png'></buyer-example>
+          </div>
+          <!-- 合作企业注册资本分布 -->
+          <div class="industry-scale-rate" v-if="isShow.showCapital">
+              <p class="chart_title">合作企业注册资本分布</p>
+              <div class="barChart">
+                  <ve-histogram :init-options="initRendererSvg" height="284px" set-option-opts :data="regCapitalData" :after-config="regCapConfig" :settings="regCapSettings" :extend="chartOptions.barLineChart.chartExtend"> </ve-histogram>
+              </div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/09-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">合作企业注册资本分布</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_9" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/09.png'></buyer-example>
+          </div>
+          <!-- 合作企业年龄分布 -->
+          <div class="industry-scale-rate" v-if="isShow.showAge">
+              <p class="chart_title">合作企业年龄分布</p>
+              <div class="barChart">
+                  <ve-histogram :init-options="initRendererSvg" height="284px" :data="workingAgeData" :after-config="workingAgeConfig" :extend="chartOptions.barLineChart.chartExtend"> </ve-histogram>
+              </div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/10-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">合作企业年龄分布</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_10" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/10.png'></buyer-example>
+          </div>
+          <!-- 合作企业注册地分布 -->
+          <div class="industry-scale-rate" v-if="isShow.showArea">
+              <p class="chart_title">合作企业注册地分布</p>
+              <div class="map" style="padding: 0 .32rem;">
+                  <ve-map
+                      :init-options="initRendererSvg"
+                      height="302px"
+                      :after-config="mapConfig"
+                      :data="mapChartData"
+                      :settings="mapSettings.chartSettings"
+                      :extend="mapSettings.chartExtend">
+                  </ve-map>
+              </div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/11-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">合作企业注册地分布</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_11" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/11.png'></buyer-example>
+          </div>
+          <!-- 重点合作代理机构 -->
+          <div class="agency" v-if="isShow.showAgency">
+              <div class="agency-title">重点合作代理机构</div>
+              <div class="agency-container">
+                  <div class="agency-thead">
+                      <strong class="a-name"></strong>
+                      <span class="a-count">项目数量</span>
+                      <span class="a-time">最近合作日期</span>
+                  </div>
+                  <div class="agency-tbody">
+                      <div v-for="item in agencyList" class="ab-list">
+                          <div class="ab-label">
+                              <span class="ellipsis-2 ab-name">${item.agency_name}</span>
+                              <span class="ab-count">${item.project_count}个</span>
+                              <span class="ab-time">${item.last_with_time}</span>
+                          </div>
+                          <div class="ab-progress">
+                              <span class="ab-progress-default progress-active" :style="{width: item.parent}"></span>
+                          </div>
+                      </div>
+                  </div>
+              </div>
+          </div>
+          <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/12-bg.png?v=1') no-repeat;background-size:100% 100%">
+            <p class="example-title">重点合作代理机构</p>
+            <buyer-example :status="bigStatus" :power="power" type="item_12" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/12.png'></buyer-example>
+          </div>
+      </div>
+    </div>
+</div>
+
+<!--S-必定需要预加载的资源-->
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js />
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js />
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js />
+<link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js />
+<link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js />
+<!--E-必定需要预加载的资源-->
+
+<!--S-当前页面的资源-->
+<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
+<script src=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js></script>
+<script src=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js></script>
+<script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/collection/js/echarts_option.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/collection/js/chart_options.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/collection/js/buyer-example.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/collection/js/history-project.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/big-member/js/unit_portrayal.js?v={{Msg "seo" "version"}}'></script>
+{{include "/common/baiducc.html"}}
+</body>
+</html>

+ 14 - 0
src/web/templates/order/pc/orderPay.html

@@ -249,6 +249,20 @@
                     }, function (r) {
                         if (r.success) {
                             var from = '' // 从那个页面过来orderList(订单列表)
+                            // 采购单位画像引流
+                            var paramsUnit = getParam('unit')
+                            if (paramsUnit) {
+                                $.ajax({
+                                    type: 'POST',
+                                    url: '/publicapply/drainage/buyerunit',
+                                    data: JSON.stringify({
+                                        mold: 'isPaid',
+                                        id: paramsUnit
+                                    }),
+                                    contentType: "application/json",
+                                    dataType: "json"
+                                })
+                            }
                             // 判断url里是否有引导语文案id,如果有就需要埋点
                             if (getParam('mid')) {
                                 try {

+ 2 - 1
src/web/templates/pc/member_orderDetail.html

@@ -325,7 +325,8 @@
             })
 
             $(".payOrder").on("click", function () {
-                location.href = "/front/member/orderPay/" + orderCode
+                var paramsUnit = getParam('unit')
+                location.href = "/front/member/orderPay/" + orderCode + (paramsUnit ? ('?unit=' + paramsUnit): '')
             })
         })
 

+ 22 - 0
src/web/templates/weixin/commonPay/checkout.html

@@ -322,6 +322,28 @@
                                         } catch (error) {
                                           console.log(error)
                                         }
+                                      }
+                                      // 采购单位画像引流过来的埋点
+                                      if (checkout.getUrlParam('bid')) {
+                                        try {
+                                          var params = {
+                                            mold: 'isPaid'
+                                          }
+                                          $.ajax({
+                                            type: 'POST',
+                                            url: '/publicapply/drainage/buyerunit',
+                                            contentType: "application/json",
+                                            data: JSON.stringify(params),
+                                            success: function (res) {
+                                              console.log(res)
+                                            },
+                                            error: function (error) {
+                                              console.log(error)
+                                            }
+                                          })
+                                        } catch (error) {
+                                          console.log(error)
+                                        }
                                       }
                                         var  bigmemberBid=checkout.getUrlParam("b");
                                         var href ="/weixin/{{.T.doType}}/paySuccess?orderCode=" + res.orderCode + "&email=" + res.email + "&payTime=" + res.payTime + "&price=" + res.price + "&t={{.T.t}}"

+ 13 - 1
src/web/templates/weixin/wxinfocontent_rec.html

@@ -1652,7 +1652,7 @@ $(function(){
 		if(rerbuyertel==undefined||rerbuyertel==null){
 			rerbuyertel=""
 		}
-		outhtml +='<li><p class="name">采购单位</p><p class="textcontent">'+rerbuyer+'</p><a dataName="采购单位" dataCont="'+rerbuyer+'" dataCode="buyer" onClick="recoveryAction(this)">纠错</a></li>'
+		outhtml +='<li><p class="name">采购单位</p><div class="unitcenter caigouunit"><p class="textcontent">'+rerbuyer+'</p></div><a dataName="采购单位" dataCont="'+rerbuyer+'" dataCode="buyer" onClick="recoveryAction(this)">纠错</a></li>'
 		outhtml +='<li><p class="name">采购联系人</p><p class="textcontent">'+rerbuyerperson+'</p><a dataName="采购联系人" dataCont="'+rerbuyerperson+'" dataCode="buyerperson" onClick="recoveryAction(this)">纠错</a></li>'+
 					'<li class="bbm0"><p class="name">采购电话</p><p class="textcontent">'+rerbuyertel+'</p><a dataName="采购电话" dataCont="'+rerbuyertel+'" dataCode="buyertel" onClick="recoveryAction(this)">纠错</a></li>'
 		if(packageCon==""){
@@ -1828,6 +1828,18 @@ $(function(){
     $.get("/front/shorturl/replication");
     });
 
+    // 采购单位跳转
+    $('.caigouunit').on('click',function(){
+      if(rerbuyer != ''&&rerbuyer!=null){
+          var landinfo = {
+              anchor: '采购单位全景分析',
+              landname: rerbuyer
+          }
+          //  大会员用户、非大会员用户都可跳转采购单位画像
+          location.href = "/big/wx/page/unit_portrayal?entName="+encodeURIComponent(rerbuyer)
+      }
+
+    })
 		// 中标单位跳转
 		$('.zhongbiaounit').on('click',function(){
         if (rerwinner!=""&&rerwinner!=null){

部分文件因文件數量過多而無法顯示