瀏覽代碼

Merge branch 'dev4.6.2.1' of http://192.168.3.207:8080/qmx/jy into dev4.6.2.1

zhangyuhan 3 年之前
父節點
當前提交
c1c63a9e74
共有 45 個文件被更改,包括 2152 次插入437 次删除
  1. 0 1
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/ent_portrait.css
  2. 48 4
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/unit_portrayal.css
  3. 120 11
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/analysis_result.js
  4. 14 7
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js
  5. 50 11
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js
  6. 30 2
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/change_industry.js
  7. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/keyset-list.js
  8. 29 11
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/vip_index_new.js
  9. 40 9
      src/jfw/modules/app/src/web/templates/areaPack/page_set_area.html
  10. 4 4
      src/jfw/modules/app/src/web/templates/big-member/page_analysis_result.html
  11. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait.html
  12. 6 6
      src/jfw/modules/app/src/web/templates/big-member/page_free_high_set.html
  13. 41 41
      src/jfw/modules/app/src/web/templates/big-member/page_free_other_project.html
  14. 44 32
      src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html
  15. 6 6
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_index_new.html
  16. 2 2
      src/jfw/modules/app/src/web/templates/weixin/historypush.html
  17. 7 4
      src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go
  18. 242 38
      src/jfw/modules/bigmember/src/service/analysis/forecastproject.go
  19. 1 1
      src/jfw/modules/bigmember/src/service/portrait/subvipPortraitAction.go
  20. 1 1
      src/jfw/modules/bigmember/src/util/jylog.go
  21. 1 3
      src/jfw/modules/publicapply/src/subscribePush/entity/keyWords.go
  22. 44 0
      src/web/staticres/big-member/css/unit_portrayal.css
  23. 49 10
      src/web/staticres/big-member/js/unit_portrayal.js
  24. 36 1
      src/web/staticres/big-member/weixin/css/ent_portrait.css
  25. 2 1
      src/web/staticres/common-module/big-member/css/high_set.css
  26. 12 12
      src/web/staticres/common-module/big-member/js/ent_project_news.js
  27. 238 58
      src/web/staticres/common-module/big-member/js/high_set.js
  28. 63 38
      src/web/staticres/common-module/collection/js/ent_portrait.js
  29. 2 1
      src/web/staticres/common-module/collection/js/history-project.js
  30. 39 24
      src/web/staticres/common-module/collection/js/industry-mobile.js
  31. 72 36
      src/web/staticres/common-module/vipsubscribe/js/vip-subscribe-set-template.js
  32. 53 18
      src/web/staticres/js/superSearch.js
  33. 117 0
      src/web/staticres/vipsubscribe/css/vip_index_new.css
  34. 二進制
      src/web/staticres/vipsubscribe/image/gotolevelup.png
  35. 5 1
      src/web/staticres/vipsubscribe/js/common.js
  36. 28 2
      src/web/staticres/vipsubscribe/js/keyset-list.js
  37. 60 1
      src/web/staticres/vipsubscribe/js/vip_index_new.js
  38. 262 9
      src/web/templates/areaPack/wx/page_set_area.html
  39. 141 0
      src/web/templates/big-member/wx/page_free_high_set.html
  40. 24 9
      src/web/templates/big-member/wx/page_unit_portrayal.html
  41. 15 6
      src/web/templates/frontRouter/wx/collection/sess/ent_portrait.html
  42. 70 1
      src/web/templates/pc/proproject.html
  43. 41 7
      src/web/templates/pc/supsearch.html
  44. 20 6
      src/web/templates/weixin/vipsubscribe/vip_index_new.html
  45. 71 0
      src/web/templates/weixin/wxkeyset/index.html

+ 0 - 1
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/ent_portrait.css

@@ -397,7 +397,6 @@
   color: #171826;
   font-size: .36rem;
   line-height: .52rem;
-  font-weight: bold;
 }
 .win-bid-title::after{
   position: absolute;

+ 48 - 4
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/unit_portrayal.css

@@ -21,9 +21,54 @@
     font-size: .24rem;
     line-height: .36rem;
 }
+.win-analyse{
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: .24rem .32rem;
+  margin-top: .24rem;
+  background: #fff;
+}
+.win-bid-title{
+  position: relative;
+  padding-left: .16rem;
+  color: #171826;
+  font-size: .36rem;
+  line-height: .52rem;
+}
+.win-bid-title::after{
+  position: absolute;
+  content: '';
+  width:3px;
+  height: .32rem;
+  background: #2abed1;
+  border-radius: 11px;
+  left:0;
+  top: 50%;
+  transform: translateY(-50%);
+}
+.win-analyse .high-link{
+  display: flex;
+  align-items: center;
+  color: #2abed1;
+  font-size: .28rem;
+}
+.win-analyse .high-link > span{
+  margin-right: .08rem;
+}
+.buyer-statistic{
+  margin-top: 0.08rem;
+  background: #fff;
+}
+.statistic-title{
+  padding: .32rem .32rem .12rem;
+  color: #171826;
+  line-height: .52rem;
+  font-size: .36rem;
+}
 .buyer-type{
     margin-top: 0.04rem;
-    padding: 0 .32rem;
+    padding: 0 .32rem .24rem;
     color: #5F5E64;
     font-size: .24rem;
     line-height: .36rem;
@@ -33,11 +78,10 @@
     display: flex;
     align-items: center;
     justify-content: space-between;
-    margin-top: .24rem;
+    /* margin-top: .24rem; */
     padding: .24rem .16rem;
 }
 .buyer-info::after{
-    
     position: absolute;
     box-sizing: border-box;
     content: ' ';
@@ -47,7 +91,7 @@
     bottom: -50%;
     left: .32rem;
     border: 0 solid #ebedf0;
-    border-top-width: 1px;
+    /* border-top-width: 1px; */
     border-bottom-width: 1px;
     -webkit-transform: scaleY(.5);
     transform: scaleY(.5);

+ 120 - 11
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/analysis_result.js

@@ -102,7 +102,8 @@ var vNode = {
             activeNames: [],
             winnerVal: '',
             buyerVal: '',
-            scrollTop: 0
+            scrollTop: 0,
+            defaultProjectDetail: []
         }
     },
     computed: {
@@ -166,10 +167,22 @@ var vNode = {
         window.addEventListener('scroll', this.handleScroll, true);
     },
     methods: {
+        showLoading: function () {
+          var loading = this.$toast.loading({
+            duration: 0,
+            forbidClick: true,
+            message: 'loading...',
+          })
+          return loading
+        },
         // 金额转换
         formatterMoney: function(data) {
             return utils.moneyUnit(data);
         },
+        // 时间转换
+        formatterTime: function(data) {
+          return new Date(Number(data + '000')).pattern('yyyy/MM/dd')
+        },
         // 返回筛选条件
         setBack:function(){
             history.back()
@@ -409,6 +422,7 @@ var vNode = {
                                     item.firsttime = new Date(Number(item.firsttime + '000')).pattern('yyyy/MM/dd')
                                 }
                             })
+                            that.defaultProjectDetail = res.data.PDeatils
                             that.projectListDetail = res.data.PDeatils; // 类似项目明细
                         }
                         // 类似项目分析
@@ -431,6 +445,70 @@ var vNode = {
                 }
             })
         },
+        // 单独查类似项目明细接口
+        getProjectDetail: function(type, winner, buyer) {
+          var that = this;
+          var loading = that.showLoading()
+          var data = {
+              area: that.areaData,
+              buyerContent: that.contentData,
+              buyerClass: that.buyerClassData,
+              minPrice: utils.deepCompare(that.moneyData, []) ? '' : Number(that.moneyData[0]),
+              maxPrice: Number(that.moneyData[1]) || '',
+              industry: that.industriesData ? that.formatterIndustryData(that.industriesData).toString() : '',
+              pname: that.project.projectName,
+              pid: that.project.pId,
+              sid: that.project.infoId,
+              mobileModel: that.mobileModel,
+              appVersion: that.appVersion,
+              // 以下为新增
+              searchType: type,
+              winner: winner,
+              buyer: buyer,
+          }
+          $.ajax({
+            type:'POST',
+            url:'/bigmember/decision/projectInfoByBW',
+            contentType: 'application/json;charset=utf-8' ,
+            data:JSON.stringify(data),
+            success:function(res) {
+              if(res.error_code == 0) {
+                loading.clear()
+                // 类似项目明细数据
+                if(res.data){
+                  res.data.forEach(function (item,i) {
+                    if (item.budget && item.budget !== '') {
+                        item.budget = (item.budget / 10000).fixed(2)
+                    } else {
+                        item.budget = '-'
+                    }
+                    if (item.bidamount && item.bidamount !== '') {
+                        item.bidamount = (item.bidamount / 10000).fixed(2)
+                    } else {
+                        item.bidamount = '--'
+                    }
+                    if(item.review_experts){
+                        item.review_experts = item.review_experts.join(',')
+                    }
+                    if(item.project_rate){
+                        item.project_rate = (item.project_rate*100).fixed(2) + '%'
+                    }
+                    if(item.firsttime){
+                        item.firsttime = new Date(Number(item.firsttime + '000')).pattern('yyyy/MM/dd')
+                    }
+                  })
+                  that.projectListDetail = res.data;
+                }
+              } else {
+                loading.clear()
+              }
+            },
+            error:function(err) {
+              loading.clear()
+              console.log(err)
+            }
+          })
+        },
         // 初始化画像数据
         initChartData:function(){
             var item = this.cacheImgData;
@@ -855,6 +933,7 @@ var vNode = {
             var data = {
                 cacheImgData: this.cacheImgData,
                 projectListDetail: this.projectListDetail,
+                defaultProjectDetail: this.defaultProjectDetail,
                 skeletonShow: this.skeletonShow,
                 isShow: this.isShow,
                 minusRows: this.minusRows,
@@ -873,6 +952,7 @@ var vNode = {
                 $data = JSON.parse($data)
                 this.cacheImgData = $data.cacheImgData || {}
                 this.projectListDetail = $data.projectListDetail
+                this.defaultProjectDetail = $data.projectListDetail
                 this.skeletonShow = $data.skeletonShow
                 this.isShow = $data.isShow
                 this.minusRows = $data.minusRows
@@ -885,33 +965,62 @@ var vNode = {
             return !!$data
         },
         goDetail (winner, buyer) {
-          console.log(winner, buyer, $('#analysis-result').scrollTop())
           this.active = 1
           this.activeNames = ['1']
           this.winnerVal = winner ? winner : ''
           this.buyerVal = buyer ? buyer : ''
-          this.scrollTop = $('#analysis-result').scrollTop()
+          this.scrollTop = this.$refs.wrapper.scrollTop
+          if (buyer) {
+            this.getProjectDetail(2, winner, buyer)
+          } else {
+            this.getProjectDetail(1, winner)
+          }
         },
         onTabClick (page) {
-          if (page === this.active) return
-          this.activeNames = []
-          if (this.winnerVal || this.buyerVal) {
-            $('#analysis-result').scrollTop(this.scrollTop)
+          if (page == 1) {
+            this.projectListDetail = this.defaultProjectDetail
           } else {
-            $('#analysis-result').scrollTop(0)
+            var _this = this
+            this.$nextTick(function(){
+              _this.$refs.wrapper.scrollTop = this.scrollTop
+            })
           }
+          this.activeNames = []
           this.winnerVal = ''
           this.buyerVal = ''
-          this.scrollTop = 0
         },
+        // 类似项目明细搜素
         onSearch () {
           if (!this.winnerVal && !this.buyerVal) return
-          console.log(this.winnerVal, this.buyerVal)
+          if (this.winnerVal && this.buyerVal) {
+            this.getProjectDetail(2, this.winnerVal, this.buyerVal)
+          } else {
+            this.getProjectDetail(1, this.winnerVal, this.buyerVal)
+          }
         },
+        // 跳转其他项目明细页面
         goOtherDetail (winner, buyer) {
           this.savePageData()
+          var data = {
+            area: this.areaData,
+            buyerContent: this.contentData,
+            buyerClass: this.buyerClassData,
+            minPrice: utils.deepCompare(this.moneyData, []) ? '' : Number(this.moneyData[0]),
+            maxPrice: Number(this.moneyData[1]) || '',
+            industry: this.industriesData ? this.formatterIndustryData(this.industriesData).toString() : '',
+            pname: this.project.projectName,
+            pid: this.project.pId,
+            sid: this.project.infoId,
+            buyer: this.project.buyer,
+            mobileModel: this.mobileModel,
+            appVersion: this.appVersion,
+            // 以下为新增
+            winner: winner,
+            searchType: 3
+          }
           if (winner || buyer) {
-            location.href = "./analysis_result_other?winner=" + winner + '&buyer=' + buyer
+            sessionStorage.setItem('analysis_other_project', JSON.stringify(data))
+            location.href = "./free_other_project?winner=" + winner + '&buyer=' + buyer
           }
         }
     }

+ 14 - 7
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js

@@ -146,6 +146,12 @@ var vNode = {
       // 获取企业基本信息
       this.getEntBaseInfo()
     }
+    var storageId = sessionStorage.getItem('winner_high_eid')
+    // 判断如果url中的企业id和高级分析设置中存的企业id不一致就清除高级分析设置中存的筛选条件
+    if (storageId && storageId !== eId) {
+      sessionStorage.removeItem('winner_high_set')
+      sessionStorage.removeItem('winner_high_eid')
+    }
   },
   mounted: function () {
     var _this = this
@@ -311,6 +317,8 @@ var vNode = {
     },
     // 获取画像信息
     getEntPortrait: function (callback) {
+      var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+      if (!storageSet) return
       var _this = this
       var data = {
         entId: _this.entInfo.id
@@ -342,7 +350,7 @@ var vNode = {
       $.ajax({
         type: 'POST',
         url: urls,
-        data: data,
+        data: storageSet ? Object.assign(data, storageSet) : data,
         success: function (res) {
           if (res.error_code == 0) {
             _this.loading.clear()
@@ -418,6 +426,8 @@ var vNode = {
     },
     // 获取项目动态
     getProjectNews: function () {
+      var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+      if (!storageSet) return
       var _this = this
       var data = {
         entId: _this.entInfo.id,
@@ -432,7 +442,7 @@ var vNode = {
       $.ajax({
         type: 'POST',
         url: urls,
-        data: data,
+        data: storageSet ? Object.assign(data, storageSet) : data,
         success: function (res) {
           if (res.error_code == 0) {
             _this.loading.clear()
@@ -1091,9 +1101,8 @@ var vNode = {
     },
     // 高级分析设置
     goHighSet () {
-      console.log(this.conf._4)
       if (this.conf._4) {
-        location.href = './free_high_set'
+        location.href = './free_high_set?header=中标分析高级设置&eid=' + utils.getParam('eId')
       } else {
         this.$dialog.confirm({
           className:'promatch',
@@ -1102,9 +1111,7 @@ var vNode = {
           showCancelButton: false,
           confirmButtonColor: '#2cb7ca',
           confirmButtonText: '我知道了'
-        }).then(function () {
-          
-        })
+        }).then(function () {})
       }
     }
   }

+ 50 - 11
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js

@@ -162,9 +162,18 @@ var vNode = {
       this.init();
     },
     mounted: function () {
-        this.buyer.name = decodeURIComponent(utils.getParam('entName'));
-        this.getNewMsg(); // 中标动态
-        this.getChartData(); // 企业画像
+        this.buyer.name = decodeURIComponent(utils.getParam('entName'))
+        var storageSet = JSON.parse(sessionStorage.getItem('buyer_high_set'))
+        if (storageSet && !this.getStatus) {
+          this.getNewMsg(); // 中标动态
+          this.getChartData(); // 企业画像
+        }
+        var storageName = decodeURIComponent(sessionStorage.getItem('buyer_high_name'))
+        // 判断如果url中的采购单位和高级分析设置中采购单位不一致就清除高级分析设置中存的筛选条件
+        if (storageName && storageName !== this.buyer.name) {
+          sessionStorage.removeItem('buyer_high_set')
+          sessionStorage.removeItem('buyer_high_name')
+        }
     },
     beforeDestroy() {
         window.removeEventListener("resize", this.init,20);
@@ -183,6 +192,7 @@ var vNode = {
               type: 'GET',
               url: '/bigmember/use/isAdd?t=' + Date.now(),
               success: function (res) {
+                  _this.chartLoading = false
                   if (res.data) {
                     _this.power = res.data.power
                     _this.bigStatus = res.data.memberStatus
@@ -307,6 +317,7 @@ var vNode = {
         },
         // 获取中标动态数据
         getNewMsg: function(){
+          var storageSet = JSON.parse(sessionStorage.getItem('buyer_high_set'))
           var that = this;
           var data = {
               buyer: decodeURIComponent(utils.getParam('entName')),
@@ -316,7 +327,7 @@ var vNode = {
           $.ajax({
             type:'POST',
             url:'/bigmember/portrait/buyer/getNewMsg',
-            data:data,
+            data: storageSet ? Object.assign(data, storageSet) : data,
             success:function(res) {
               if(res.error_code == 0) {
                 if (res.data.list && res.data.list.length && res.data.list.length > 0) {
@@ -360,12 +371,15 @@ var vNode = {
         // 获取采购单位画像所有数据
         getChartData: function() {
           var that = this;
+          that.chartLoading = true
+          var storageSet = JSON.parse(sessionStorage.getItem('buyer_high_set'))
+          var data = {
+            buyer: decodeURIComponent(utils.getParam('entName'))
+          }
           $.ajax({
             type:'POST',
             url:'/bigmember/portrait/buyer/getData',
-            data:{
-              buyer: decodeURIComponent(utils.getParam('entName'))
-            },
+            data: storageSet ? Object.assign(data, storageSet) : data,
             success:function(res) {
                 if(res.error_code == 0) {
                   if(res.data && Object.keys(res.data).length > 0) {
@@ -494,16 +508,22 @@ var vNode = {
         formatYearsData: function(data) {
           if(data && Object.keys(data).length > 0){
             var rows = [];
+            var count = 0
             for (var key in data) {
               rows.push({
                 '年份': key,
                 '项目数量': data[key].Count,
                 '项目金额': (data[key].Money/10000).fixed(0),
               })
+              count += data[key].Count
+            }
+            if (count !== 0) {
+              this.projectData.columns = ['年份', '项目数量', '项目金额'];
+              this.projectData.rows = rows;
+              this.isShow.showYearData = true;
+            } else {
+              this.isShow.showYearData = false;
             }
-            this.projectData.columns = ['年份', '项目数量', '项目金额'];
-            this.projectData.rows = rows;
-            this.isShow.showYearData = true;
           }
         },
         // 3.处理月度采购规模数据
@@ -512,9 +532,13 @@ var vNode = {
             var rows = [];
             var columns = ['月份'];
             var count = 0;
+            var allNum = []
             var yearArr = []
             for (var key in data) {
               yearArr.push(parseInt(key))
+              for(var n in data[key]) {
+                allNum.push(data[key][n])
+              }
             }
             yearArr.sort(function (a, b) { return a - b })
             yearArr.forEach(function (item) {
@@ -537,8 +561,9 @@ var vNode = {
               })
               rows.push(columnsItem)
             }
+            var maxNum = Math.max.apply(Math, allNum.map(function(o) { return o }))
             // 数据总量为0,不赋值
-            if (count != 0) {
+            if (count != 0 && maxNum !== 0) {
               this.monthScaleData.columns = columns;
               this.monthScaleData.rows = rows;
               this.isShow.showMonthScale = true;
@@ -1247,6 +1272,20 @@ var vNode = {
             })
             return maxIndex
         },
+        goHighSet: function() {
+          if (!this.getStatus) {
+            location.href = './free_high_set?header=采购单位高级分析设置&entName=' + decodeURIComponent(utils.getParam('entName'))
+          } else {
+            this.$dialog.confirm({
+              className:'promatch',
+              title: '您暂无使用权限',
+              message: '您未购买此服务,如需使用请联系您的销售人员或客服升级套餐,谢谢!',
+              showCancelButton: false,
+              confirmButtonColor: '#2cb7ca',
+              confirmButtonText: '我知道了'
+            }).then(function () {})
+          }
+        }
     }
 }
 var unit = new Vue(vNode)

+ 30 - 2
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/change_industry.js

@@ -360,6 +360,9 @@ $(function () {
         } else {
           areaParams = data.data.industry.join(',')
         }
+        if (vSwitch === 'm') {
+          data.data.area = bigmemberArea
+        }
         var params = {
           area: JSON.stringify(data.data.area),
           industry: areaParams
@@ -413,8 +416,33 @@ $(function () {
           history.back()
         }
     })
-
-
+    var vSwitch = ''
+    var bigmemberArea = {}
+    function getBigmemberMsg() {
+      $.ajax({
+          type: 'POST',
+          url: '/bigmember/use/info?t=' + new Date().getTime(),
+          data: {
+          },
+          success: function(res) {
+            bigmemberArea = res.data.member_jy.o_area
+          }
+      })
+    }
+    getBigmemberMsg()
+    function switehAjax(data) {
+      $.ajax({
+          type: 'POST',
+          url: '/publicapply/subscribe/vipSwitch',
+          data: {
+              vt:data || ''
+          },
+          success: function(res) {
+            vSwitch = res.data.vt || 'f'
+          }
+      })
+    }
+    switehAjax()
     function getDataWitXHR() {
         $DoPost('/subscribepay/vipsubscribe/getSubBuyMsg', {}, function (res) {
             if (!res.success) return;

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/keyset-list.js

@@ -411,7 +411,7 @@ var keySet = new Vue({
     updateJump: function () {
       this.tipsType = false
       // location.replace('/jyapp/vipsubscribe/toSubVipSetPage?vSwitch=v')
-      location.replace('/jyapp/vipsubscribe/toSubVipSetPage?vSwitch=m')
+      location.replace('/jyapp/vipsubscribe/toSubVipSetPage')
     },
   }
 })

+ 29 - 11
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/vip_index_new.js

@@ -22,7 +22,8 @@ var subNode = new Vue({
             userAreaNum: 1, // 用户修改地区剩余次数
             userType: false, // 用户是否为付费用户
             userAreaAllNum: 1, // 用户可修改地区总次数
-            subscribeTime: '' // 用户订阅的时间
+            subscribeTime: '', // 用户订阅的时间
+            vSwitch: 'f' // 用户权限
         }
     },
     created () {
@@ -39,6 +40,15 @@ var subNode = new Vue({
         // this.userAreaAllNum = 1
     },
     methods: {
+        // 省份订阅包续费 
+        renewBtn: function () {
+            location.href = '/jyapp/areaPack/page/buy?type=renew'
+        },
+        // 省份订阅包升级 
+        updateBtn: function () {
+            location.href = '/jyapp/areaPack/page/buy?type=upgrade'
+        },
+        // 得到用户是否购买省份包
         getUserSubscribe: function () {
             let _this = this
             $.ajax({
@@ -63,17 +73,18 @@ var subNode = new Vue({
                     if(num && num > 0) {
                         $('.update_renew').hide()
                         if(num == 1) {
-                            // $('.custom-header-title').html('<span class="title-text"><em class="title_icon icon_zj"></em>订阅管理-免费订阅</span>')
-                            $('.custom-header-title').html('<span class="title-text"></em>订阅管理-免费订阅</span>')
+                            $('.custom-header-title').html('<span class="title-text"><em class="title_icon icon_zj"></em>订阅管理-大会员</span>')
+ 
                         } else if(num == 2) {
-                            // $('.custom-header-title').html('<span class="title-text"><em class="title_icon icon_zh"></em>订阅管理-免费订阅</span>')
-                            $('.custom-header-title').html('<span class="title-text"></em>订阅管理-免费订阅</span>')
+                            $('.custom-header-title').html('<span class="title-text"><em class="title_icon icon_zh"></em>订阅管理-大会员</span>')
+
                         } else if(num == 3) {
-                            // $('.custom-header-title').html('<span class="title-text"><em class="title_icon icon_sj"></em>订阅管理-免费订阅</span>')
+                            $('.custom-header-title').html('<span class="title-text"><em class="title_icon icon_sj"></em>订阅管理-大会员</span>')
+
+                        } else if(num <= 0) {
                             $('.custom-header-title').html('<span class="title-text"></em>订阅管理-免费订阅</span>')
                         } else {
-                            // $('.custom-header-title').html('<span class="title-text"><em class="title_icon icon_zj"></em>订阅管理-免费订阅</span>')
-                            $('.custom-header-title').html('<span class="title-text"></em>订阅管理-免费订阅</span>')
+                            $('.custom-header-title').html('<span class="title-text"><em class="title_icon icon_zj"></em>订阅管理-大会员</span>')
                         }
                         this.linkObj = {
                             area: '/jyapp/big/page/set_area?callback=setting_save',
@@ -127,16 +138,21 @@ var subNode = new Vue({
                 success: function(res) {
                     console.log(res)
                     if(res.data) {
+                        _this.vSwitch = res.data.vt || 'f'
                         if(res.data.vt == 'm') {
                             _this.vipLink = 'javascript:;'
                             _this.arrowShow = false
                             sessionStorage.setItem('switch-product','bigmember')
                             _this.subInfoAjax = '/bigmember/use/info?t=' + new Date().getTime()
-                        } else {
+                        } else if (res.data.vt == 'v') {
                             _this.vipLink = '/jyapp/vipsubscribe/vipsubscribe_renew'
                             _this.arrowShow = true
                             sessionStorage.setItem('switch-product','supervip')
                             _this.subInfoAjax = '/subscribepay/vipsubscribe/getSubBuyMsg?t=' + new Date().getTime()
+                        } else {
+                            _this.vipLink = 'javascript:;'
+                            _this.arrowShow = false
+                            _this.subInfoAjax = '/publicapply/free/subscribe'
                         }
                         let bms = sessionStorage.getItem('big_member_status')
                         _this.initPage(bms)
@@ -149,8 +165,10 @@ var subNode = new Vue({
         },
         // 点击广告跳转超级订阅落地页
         toPaySupSub: function() {
-            var href = '/jyapp/vipsubscribe/introducePage'
-            location.href = href
+            if (this.vSwitch === 'f') {
+                var href = '/jyapp/vipsubscribe/introducePage'
+                location.href = href
+            }
         }
     }
 })

+ 40 - 9
src/jfw/modules/app/src/web/templates/areaPack/page_set_area.html

@@ -117,7 +117,7 @@
     {{include "/big-member/component_set_area.html"}}
     <!-- 自定义set-header内容 -->
     <div id="set-header-template" v-cloak>
-        <div class="wrapper-header">
+        <div class="wrapper-header" id="thisAreaTips">
             <div class="content">
                 <div class="selectNumMax">可选择<span class="numColor" id="canSelect">1个省</span></div>
                 <div class="string"></div>
@@ -140,6 +140,28 @@
         </div>
     </div>
     <script>
+        var setAreaFn = {
+            conf: {
+                sKey: 'sub_vip_state'
+            },
+            buyPageInfo: {},
+            init: function () {
+                // 恢复页面状态
+                var pageInfo = sessionStorage.getItem(this.conf.sKey)
+                if (pageInfo) {
+                    this.buyPageInfo = JSON.parse(pageInfo)
+                    var areaInfo = this.buyPageInfo.area
+                    if (this.buyPageInfo && areaInfo && Object.keys(areaInfo).length !== 0) {
+                        vNode.data.initCityMap = areaInfo
+                        vueComponent.setCitySelected(areaInfo)
+                    }
+                }
+            },
+            saveToSessionStorage: function (data) {
+                sessionStorage.setItem(this.conf.sKey, JSON.stringify(data))
+            }
+        }
+        setAreaFn.init()
         var vm = new Vue({
             delimiters: ['${', '}'],
             el: '#set-header',
@@ -156,6 +178,11 @@
                 },
                 toPay: function () {
                     this.popupType = false
+                    if (userType) {
+                        location.href = '/jyapp/areaPack/page/buy?type=renew'
+                    } else {
+                        location.href = '/jyapp/areaPack/page/buy?type=buy'
+                    }
                 },
                 
             }
@@ -163,19 +190,22 @@
         var maxSelect = 1
         var thisSelectNum = 0
         var userType = true // 用户是否购买过省份包
-        var vSwitch = 'f' // 用户版本,f免费版,m大会员,v超级订阅
+        var vSwitch = 'f' // 用户版本,''免费版,m大会员,v超级订阅
         // 获取用户权限
         function getUserMsg() {
             $.ajax({
                 url: '/bigmember/use/isAdd',
                 type: 'POST',
                 success: function (res) {
-                    if (res.memberStatus > 0 && res.vipStatus < 0) {
+                    if (res.data.memberStatus > 0 && res.data.vipStatus <= 0) {
                         vSwitch = 'm'
-                    } else if (res.memberStatus < 0 && res.vipStatus > 0) {
+                        $('#thisAreaTips').hide()
+                    } else if (res.data.memberStatus <= 0 && res.data.vipStatus > 0) {
                         vSwitch = 'v'
-                    } else if (res.memberStatus < 0 && res.vipStatus < 0) {
+                        $('#thisAreaTips').hide()
+                    } else if (res.data.memberStatus <= 0 && res.data.vipStatus <= 0) {
                         vSwitch = 'f'
+                        $('#thisAreaTips').show()
                     }
                 }
             })
@@ -191,7 +221,7 @@
                     maxSelect = res.data.areanum !== -1 ? res.data.areanum + res.data.provincenum : res.data.areanum
                     // _this.$emit('UserSubscribe',res)
                     if (maxSelect === -1) {
-                        $('#canSelect').text(`无限制`)
+                        $('#canSelect').text(`全国`)
                     } else {
                         $('#canSelect').text(`${maxSelect}个省`)
                     }
@@ -202,7 +232,6 @@
         getUserSubscribe()
         function userUpdate(obj) {
             let _this = this
-            console.info(obj)
             $.ajax({
                 url: '/publicapply/subscribe/update',
                 type: 'POST',
@@ -222,7 +251,7 @@
         // 参数,是被初始化的数据
         function onReset (initData) {
             $('.selectChange').text('')
-            $('#thisSelect').text(`0个省`)
+            $('#thisSelect').text(`${thisSelectNum}个省`)
             $('.moreTips').hide()
         }
         // 被选中的数据
@@ -231,7 +260,7 @@
             for (const key in selectedData) {
                 selectDataList.push(key)
             }
-            if (selectDataList.length > maxSelect && maxSelect !== -1) {
+            if (selectDataList.length > maxSelect && maxSelect !== -1 && vSwitch === 'f') {
                 vm.popupType = true
                 if (!userType) {
                     $('#tips-text').text('您当前仅可订阅1个省,如需增加请购买【省份订阅包】')
@@ -248,7 +277,9 @@
                 })
                 areaData = JSON.stringify(areaData)
                 userUpdate(areaData)
+                sessionStorage.setItem('sub_vip_state', areaData)
             }
+            window.history.back()
         }
         // 页面选中状态改变时触发
         function onChange (selectedData) {

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

@@ -22,7 +22,7 @@
 <body>
 <div class="j-container">
     {{include "/big-member/header.html"}}
-    <div class="j-main" id="analysis-result" v-cloak>
+    <div class="j-main" id="analysis-result" v-cloak ref="wrapper">
         <!-- 骨架屏 -->
         <div class="skeleton" v-if="skeletonShow">
             <img class="working" src="/jyapp/big-member/image/working.gif" alt="">
@@ -143,7 +143,7 @@
                                                 <span>项目数量:${hs.doc_count}个</span>
                                                 <span>项目金额:${formatterMoney(hs.total_project)}</span>
                                                 <!-- <span>注册资本:${formatterMoney(hs.capital)}</span> -->
-                                                <span class="ellipsis">最近中标:</span>
+                                                <span class="ellipsis">最近中标:${formatterTime(hs.max_jytime)}</span>
                                               </div>
                                             </div>
                                             
@@ -277,7 +277,7 @@
                                                 <span>${item.project_rate || '--'}</span>
                                             </div>
                                         </div>
-                                        <div class="bid-company">
+                                        <div class="bid-company" v-if="item.winnerorder">
                                             <p>中标候选人:</p>
                                             <p v-for="sItem in item.winnerorder">
                                                 ${sItem || '--'}
@@ -287,7 +287,7 @@
                                 </div>
                                 <div class="empty" v-else>
                                     <div class="j-img img-empty empty-img"></div>
-                                    <p class="empty-text">暂无明细</p>
+                                    <p class="empty-text" style="padding-bottom: 0.32rem;">暂无明细</p>
                                 </div>
                             </div>
                         </van-tab>

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

@@ -461,7 +461,7 @@
   </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}}/jyapp/big-member/js/ent_portrait.js?v={{Msg "seo" "version"}}'>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/ent_portrait.js?v=0000{{Msg "seo" "version"}}'>
   </script>
 </body>
 

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

@@ -4,7 +4,7 @@
 <head>
   <!--引入公共资源头部-->
   {{include "/big-member/meta.html"}}
-  <title>中标分析高级设置</title>
+  <title></title>
   <!--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 />
@@ -81,8 +81,8 @@
         </div>
         <div class="j-footer">
           <div class="j-button-group">
-            <button class="j-button-cancel">重置</button>
-            <button class="j-button-confirm" :disabled="disabledConfirm">开始分析</button>
+            <button class="j-button-cancel" @click="onReset">重置</button>
+            <button class="j-button-confirm" :disabled="disabledConfirm" @click="startStatistic">开始分析</button>
           </div>
         </div>
         <van-popup 
@@ -96,13 +96,13 @@
           <div class="j-container">
             <div class="popup-header header-title">${popInfo.title}</div>
             <div v-show="popInfo.type == 'scope'">
-              <popup-select-component class="j-main fix-ios-scroll" :data-list="matchTypeList" multiple show-all-button ref="matchTypeSelector" @cancel="onCancel" @confirm="onConfirm"></popup-select-component>
+              <popup-select-component class="j-main fix-ios-scroll" :data-list="matchTypeList" multiple ref="matchTypeSelector" @reset="onCancel" @confirm="onConfirm"></popup-select-component>
             </div>
             <div v-show="popInfo.type == 'area'">
-              <area-component class="j-main fix-ios-scroll" :class="{'hide-all': filterInitData.areaArr.length == 2}" ref="projectAreaSelector" @cancel="onCancel" @confirm="onConfirm"></area-component>
+              <area-component class="j-main fix-ios-scroll" :class="{'hide-all': filterInitData.areaArr.length == 2}" ref="projectAreaSelector" :selectarealist="selectAreaList" @cancel="onCancel" @confirm="onConfirm"></area-component>
             </div>
             <div v-show="popInfo.type == 'industry'">
-              <industry-component class="j-main fix-ios-scroll" ref="industryCom" :selectindustrylist="selectIndustryList" @cancel="onCancel" @confirm="onConfirm"></industry-component>
+              <industry-component class="j-main fix-ios-scroll" ref="industryCom" :selectindustrylist="selectIndustryList" onlyshowsome= "true" @cancel="onCancel" @confirm="onConfirm"></industry-component>
             </div>
             <div v-show="popInfo.type == 'start'">
               <years-component ref="yearsItem" type="start" :cur-year="conf.start" :years="startRange" @cancel="onCancel" @confirm="onConfirm"></years-component>

+ 41 - 41
src/jfw/modules/app/src/web/templates/big-member/page_free_other_project.html

@@ -70,7 +70,7 @@
                   <span>中标企业:</span>
                   <span>${item.s_winner || '--'}</span>
                 </div>
-                <div class="pl-info">
+                <div class="pl-info" v-if="item.review_experts">
                   <span>评审专家:</span>
                   <span>${item.review_experts.join(',') || '--'}</span>
                 </div>
@@ -128,46 +128,7 @@
       el: '#analysis-result',
       data () {
         return {
-          lists: [
-            {
-              "_id": "ABCY2FdczIvLDksRGhhc3IwDyc4ASJjR1JyPw4gPToga3lzejtUCgs%3D",
-              "area": "海南",
-              "bidamount": 873000,
-              "bidcycle": 7,
-              "bidtype": "询价",
-              "budget": 1680000,
-              "buyer": "琼海市中医院",
-              "city": "琼海市",
-              "firsttime": 1597139803,
-              "infoid": "ABCY2FdczIvLDksRGhhc3IwDyc4ASJjR1JyPw4gPToga3lzejtUCgs%3D",
-              "projectname": "琼海市中医院-医疗设备",
-              "review_experts": [
-                "王传文",
-                "占达飞",
-                "王思坦"
-              ],
-              "s_winner": "江西兆安科技有限公司"
-            },
-            {
-              "_id": "ABCY2FddDJYNyg7AnRhc3IwDyc4ASJjR1JyP1g7ID0gUX5zZyNUChM%3D",
-              "area": "海南",
-              "bidamount": 1785700,
-              "bidcycle": 8,
-              "bidtype": "询价",
-              "budget": 1789600,
-              "buyer": "海南省安宁医院",
-              "city": "海口市",
-              "firsttime": 1595994487,
-              "infoid": "ABCY2FddDJYNyg7AnRhc3IwDyc4ASJjR1JyP1g7ID0gUX5zZyNUChM%3D",
-              "projectname": "2020年海南省安宁医院医疗设备一批采购项目",
-              "review_experts": [
-                "闫鹏",
-                "陈斌斌",
-                "张秋元"
-              ],
-              "s_winner": ":江西涵泊医疗器械有限公司"
-            }
-          ],
+          lists: [],
           winner: '',
           buyer: ''
         }
@@ -175,8 +136,47 @@
       created () {
         this.winner = decodeURIComponent(utils.getParam('winner'))
         this.buyer = decodeURIComponent(utils.getParam('buyer'))
+        this.getList()
       },
       methods: {
+        getList: function () {
+          var _this = this
+          var data = sessionStorage.getItem('analysis_other_project')
+          $.ajax({
+            type:'POST',
+            url:'/bigmember/decision/projectInfoByBW',
+            data: data,
+            contentType: 'application/json;charset=utf-8' ,
+            success:function(res) {
+              if(res.error_code == 0) {
+                res.data.forEach(function (item,i) {
+                  if (item.budget && item.budget !== '') {
+                    item.budget = (item.budget / 10000).fixed(2)
+                  } else {
+                    item.budget = '-'
+                  }
+                  if (item.bidamount && item.bidamount !== '') {
+                    item.bidamount = (item.bidamount / 10000).fixed(2)
+                  } else {
+                    item.bidamount = '--'
+                  }
+                  if(item.project_rate){
+                    item.project_rate = (item.project_rate*100).fixed(2) + '%'
+                  }
+                  if(item.firsttime){
+                    item.firsttime = new Date(Number(item.firsttime + '000')).pattern('yyyy/MM/dd')
+                  }
+                })
+                _this.lists = res.data
+              } else {
+                console.log(res.error_code)
+              }
+            },
+            error:function(err) {
+              console.log(err)
+            }
+          })
+        },
         goProjectDetail: function (id) {
           var that = this
           $.ajax({

+ 44 - 32
src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html

@@ -78,29 +78,50 @@
                 </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 v-if="getStatus">
+              <div class="vip_component" 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>
+            <!-- 采购单位通讯录 -->
+            <hispro-component v-else class="history-list" type="buyer" :buyer="buyer.name"></hispro-component>
+            <!-- 高级分析设置 -->
+            <!-- 高级分析 -->
+            <div class="win-analyse">
+              <span class="win-bid-title">采购单位分析</span>
+              <div class="high-link" @click="goHighSet">
+                <span>高级分析设置</span>
+                <van-icon name="arrow"></van-icon>
+              </div>
+            </div>
+            <div class="buyer-statistic">
+              <div class="statistic-title">统计信息</div>
+              <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>
@@ -128,17 +149,8 @@
                     </div>
                 </div>
             </div>
-            <!-- 历史项目联系人 -->
-            <div v-if="getStatus">
-              <div class="vip_component" 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>
             <!-- 数据部分 -->
             <div>
-              <!-- 历史项目联系人 -->
-              <hispro-component class="history-list" type="buyer" :buyer="buyer.name"></hispro-component>
               <!-- 年度项目统计 -->
               <div class="years" v-if="isShow.showYearData">
                   <div class="chart_title">年度项目统计</div>

+ 6 - 6
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_index_new.html

@@ -266,8 +266,8 @@
                 <i class="iconfont icon-arrow"></i>
               </div>
             </a>
-            <ul class="sub-info go_to_levelup" @click="toPaySupSub">
-              <!-- <li class="cycle">
+            <ul class="sub-info" :class="vSwitch !== 'm' && vSwitch !== 'v' ? 'go_to_levelup' : ''" @click="toPaySupSub">
+              <li class="cycle">
                 <a class="item-container" :href="vipLink">
                   <div class="item">
                     <span class="item-l">
@@ -288,10 +288,10 @@
                     </span>
                   </div>
                 </a>
-              </li> -->
+              </li>
             </ul>
           </li>
-          <sub-component :linkobj="linkObj" :initdata="initData"></sub-component>
+          <sub-component :linkobj="linkObj" :initdata="initData" :v-switch="vSwitch"></sub-component>
           <div class="provincePayWarp" v-show="userType">
             <span class="provincePayTips">省份订阅包</span>
             <div class="provincePay">
@@ -300,8 +300,8 @@
                 省份数量:<span class="provincePay-num">&nbsp;<span v-html="userAreaAllNum"></span>&nbsp;</span>个
               </div>
               <div class="provincePay-btnWrap">
-                <div class="privincePay-btn">续费</div>
-                <div class="privincePay-btn updateColor">升级</div>
+                <div class="privincePay-btn"  @click="renewBtn">续费</div>
+                <div class="privincePay-btn updateColor" @click="updateBtn">升级</div>
               </div>
             </div>
           </div>

+ 2 - 2
src/jfw/modules/app/src/web/templates/weixin/historypush.html

@@ -723,7 +723,7 @@
         $("#sub_manager").click(function() {
             sessionStorage.setItem(vm.sessStorageKey, JSON.stringify(vm.$data))
             if(vm.rootInfo.memberStatus > 0) {
-                location.href = '/jyapp/vipsubscribe/toSubVipSetPage?vSwitch=m'
+                location.href = '/jyapp/vipsubscribe/toSubVipSetPage'
             } else {
                 tokeyset()
             }
@@ -748,7 +748,7 @@
             console.log(vm.rootInfo, 'vmrootInfo')
             sessionStorage.setItem(vm.sessStorageKey, JSON.stringify(vm.$data))
             if(vm.selectPro) {
-                location.href = '/jyapp/vipsubscribe/toSubVipSetPage?vSwitch=m'
+                location.href = '/jyapp/vipsubscribe/toSubVipSetPage'
             } else {
                 tosetpage()
             }

+ 7 - 4
src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go

@@ -84,12 +84,13 @@ func BuyerPortraitSearch(screen *PortraitScreen) (map[string]interface{}, error)
 		},
 	}
 	var wg sync.WaitGroup
+	baseMsg := map[string]interface{}{}
 	go func() {
 		wg.Add(1)
 		city, province, buyerclass := GetBuyerMsg(screen.Ent) //获取采购单位地区行业信息
-		returnData["city"] = city
-		returnData["province"] = province
-		returnData["buyerclass"] = buyerclass
+		baseMsg["city"] = city
+		baseMsg["province"] = province
+		baseMsg["buyerclass"] = buyerclass
 		wg.Done()
 	}()
 
@@ -423,7 +424,9 @@ func BuyerPortraitSearch(screen *PortraitScreen) (map[string]interface{}, error)
 		}
 		returnData["rate"] = rataMap
 	}
-
+	for k, v := range baseMsg {
+		returnData[k] = v
+	}
 	go func() {
 		fmt.Printf("BuyerPortraitSearch: %s spend time %fs\n	doSearchSql: %s\n", screen.Ent, time.Since(tBegin).Seconds(), doSearchSql)
 	}()

+ 242 - 38
src/jfw/modules/bigmember/src/service/analysis/forecastproject.go

@@ -4,13 +4,29 @@ package analysis
 import (
 	. "api"
 	"db"
+	"encoding/json"
+	"fmt"
 	"log"
 	qutil "qfw/util"
+	"qfw/util/elastic"
 	"qfw/util/jy"
+	"strconv"
 	"strings"
+	"time"
 	"util"
 )
 
+const (
+	INDEX          = "forecast"
+	TYPE           = "forecast"
+	bidSearch_sort = `{"publishtime":-1}`
+	findfields     = `"title"`
+
+	view_maxPageNum = 20
+	view_pageSize   = 50
+	bidSearch_field = ``
+)
+
 //预测详情页
 func (this *Analysis) ForPContent() {
 	defer qutil.Catch()
@@ -208,47 +224,235 @@ func keysfilter(result []map[string]interface{}) (res []map[string]interface{})
 }
 
 //
-func getNewForecast(userId string, cpage int, o_member_jy map[string]interface{}) ([]map[string]interface{}, int) {
-	if cpage == 0 {
-		cpage = 1
+func getNewForecast(userId string, pageNum int, o_member_jy map[string]interface{}) (keys []interface{}, list *[]map[string]interface{}, count int64) {
+	if userId == "" {
+		return
 	}
-	var count int
-	log.Println(o_member_jy, count)
-	return nil, 0
+	sql := getSqlObjFromId(o_member_jy)
+	if sql == nil {
+		return
+	}
+	for _, v := range sql.Keyword {
+		var keys_one []string
+		for _, k := range v.Keyword {
+			keys_one = append(keys_one, k)
+		}
+		for _, k := range v.Appended {
+			keys_one = append(keys_one, k)
+		}
+		keys = append(keys, strings.Join(keys_one, "++"))
+	}
+	if len(keys) == 0 {
+		return
+	}
+	qstr := GetMemberForecastSql(sql)
+	count = elastic.Count(INDEX, TYPE, qstr)
+	list = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, bidSearch_field, (pageNum-1)*FP_Limit, FP_Limit, 0, false)
+	if list != nil {
+		for _, v := range *list {
+			v["_id"] = util.EncodeId(qutil.ObjToString(v["_id"]))
+		}
+	}
+	return
+}
+
+//获取大会员forecast 检索库查询语句
+func GetMemberForecastSql(scd *util.ViewCondition) string {
+	query := `{"query":{"bool":{"must":[%s],"should":[%s],"minimum_should_match": %d}}}`
+	query_bool_should := `{"bool":{"should":[%s],"minimum_should_match": 1}}`
+	multi_match := `{"multi_match": {"query": %s,"type": "phrase", "fields": [%s]}}`
+	query_bool_must_and := `{"bool":{"must":[%s]%s}}`
+	query_must_exists := `{"bool":{"should":{"filtered":{"filter":{"bool":{"must":[{"exists":{"field":"yuceendtime"}},{"range":{"yuceendtime":{"lte":%d}}}]}}}}}}`
+
+	bools := []string{}
+	musts := []string{}
+	//预测时间最新三个月
+	musts = append(musts, fmt.Sprintf(`{"range":{"yucetime":{"gte":%d}}}`, time.Now().AddDate(0, -3, 0).Unix()), fmt.Sprintf(query_must_exists, time.Now().Unix()))
+	//省份
+	areaCity := []string{}
+	if len(scd.Area) > 0 {
+		areaquery := `{"terms":{"area":[`
+		for k, v := range scd.Area {
+			if k > 0 {
+				areaquery += `,`
+			}
+			areaquery += `"` + v + `"`
+		}
+		areaquery += `]}}`
+		areaCity = append(areaCity, areaquery)
+	}
+
+	//城市
+	if len(scd.City) > 0 {
+		areaquery := `{"terms":{"city":[`
+		for k, v := range scd.City {
+			if k > 0 {
+				areaquery += `,`
+			}
+			areaquery += `"` + v + `"`
+		}
+		areaquery += `]}}`
+		areaCity = append(areaCity, areaquery)
+	}
+	if len(areaCity) > 0 {
+		musts = append(musts, fmt.Sprintf(query_bool_should, strings.Join(areaCity, ",")))
+	}
+	if len(scd.Subtype) > 0 {
+		subquery := `{"terms":{"subtype":[`
+		for k, v := range scd.Subtype {
+			if k > 0 {
+				subquery += `,`
+			}
+			subquery += `"` + v + `"`
+		}
+		subquery += `]}}`
+		musts = append(musts, subquery)
+	}
+	if len(scd.Buyerclass) > 0 {
+		Buyerclass := `{"terms":{"buyerclass":[`
+		for k, v := range scd.Buyerclass {
+			if k > 0 {
+				Buyerclass += `,`
+			}
+			Buyerclass += `"` + v + `"`
+		}
+		Buyerclass += `]}}`
+		musts = append(musts, Buyerclass)
+	}
+	boolsNum := 0 //should
+	if len(scd.Keyword) > 0 {
+		boolsNum = 1
+		multi_match = fmt.Sprintf(multi_match, "%s", `"results.purchasing.mypurchasing"`)
+
+		for _, v := range scd.Keyword {
+			shoulds := []string{}
+			must_not := []string{}
+			//附加词
+			for _, vv := range v.Keyword {
+				shoulds = append(shoulds, fmt.Sprintf(multi_match, "\""+vv+"\""))
+			}
+
+			for _, vv := range v.Appended {
+				shoulds = append(shoulds, fmt.Sprintf(multi_match, "\""+vv+"\""))
+			}
+
+			//排除词
+			for _, vv := range v.Exclude {
+				must_not = append(must_not, fmt.Sprintf(multi_match, "\""+vv+"\""))
+			}
+
+			//添加
+			if len(shoulds) > 0 {
+				notStr := ""
+				if len(must_not) > 0 {
+					notStr = fmt.Sprintf(`,"must_not":[%s]`, strings.Join(must_not, ","))
+				}
+				bools = append(bools, fmt.Sprintf(query_bool_must_and, strings.Join(shoulds, ","), notStr))
+			}
+		}
+	}
+
+	qstr := fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(bools, ","), boolsNum)
+	log.Println("------qstr", qstr)
+	return qstr
+}
+
+//
+
+//member_jy
+func getSqlObjFromId(o_member_jy map[string]interface{}) *util.ViewCondition {
+	if o_member_jy["a_items"] == nil {
+		return nil
+	}
+	a_items := []interface{}{}
+	if o_member_jy["a_items"] != nil {
+		a_items = o_member_jy["a_items"].([]interface{})
+	}
+	a_buyerclass := []interface{}{}
+	if o_member_jy["a_buyerclass"] != nil {
+		a_buyerclass = o_member_jy["a_buyerclass"].([]interface{})
+	}
+	if len(a_buyerclass) > 0 && qutil.IntAllDef(o_member_jy["i_matchbuyerclass_other"], 1) == 1 && len(a_items) > 0 {
+		a_buyerclass = append(a_buyerclass, "其它")
+	}
+	a_infotype := []interface{}{}
+	if o_member_jy["a_infotype"] != nil {
+		a_infotype = o_member_jy["a_infotype"].([]interface{})
+	}
+	o_area := map[string]interface{}{}
+	if o_member_jy["o_area"] != nil {
+		o_area = o_member_jy["o_area"].(map[string]interface{})
+	}
+	return &util.ViewCondition{
+		Keyword:    getKeyWordArr(a_items, "", -1),
+		Buyerclass: qutil.ObjArrToStringArr(a_buyerclass),
+		Subtype:    qutil.ObjArrToStringArr(a_infotype),
+		Area:       getStringArrFromDbResult(o_area, 1),
+		City:       getStringArrFromDbResult(o_area, 2),
+		SelectType: strconv.Itoa(qutil.IntAll(o_member_jy["i_matchway"])),
+	}
+}
+
+//关键词 附加词 排除词
+func getKeyWordArr(a_items []interface{}, item string, index int) (arr []util.ViewKeyWord) {
+	if a_items == nil {
+		return
+	}
+	for _, v := range a_items {
+		vm, _ := v.(map[string]interface{})
+		if item != "" && index >= 0 && item != qutil.ObjToString(vm["s_item"]) {
+			continue
+		}
+		kwsArr := vm["a_key"]
+		for i, k := range kwsArr.([]interface{}) {
+			if item != "" && index >= 0 && i != index {
+				continue
+			}
+			kw := util.ViewKeyWord{}
+			b, e := json.Marshal(k)
+			if e != nil {
+				log.Println(e.Error())
+			}
+			json.Unmarshal(b, &kw)
+			if kw.MatchWay == 1 {
+				for _, kk := range kw.Keyword {
+					arr = append(arr, util.ViewKeyWord{
+						Keyword: []string{kk},
+						Exclude: kw.Exclude,
+					})
+				}
+				for _, kk := range kw.Appended {
+					arr = append(arr, util.ViewKeyWord{
+						Keyword: []string{kk},
+						Exclude: kw.Exclude,
+					})
+				}
+			} else {
+				arr = append(arr, kw)
+			}
+		}
+	}
+	return
 }
 
 //
-func SubViewDatas(userId, allquery string, pageNum, pageSize int) (keys []interface{}, list *[]map[string]interface{}, hasNextPage bool, count int64) {
-	// if userId == "" {
-	// 	return
-	// }
-	// sql := GetSqlObjFromId(userId, "", -1)
-	// if sql == nil {
-	// 	return
-	// }
-	// //PC端
-	// if pageSize == 0 || pageSize > 100 {
-	// 	pageSize = view_pageSize
-	// }
-	// for _, v := range sql.Keyword {
-	// 	var keys_one []string
-	// 	for _, k := range v.Keyword {
-	// 		keys_one = append(keys_one, k)
-	// 	}
-	// 	//dev3.5 附加词也要高亮
-	// 	for _, k := range v.Appended {
-	// 		keys_one = append(keys_one, k)
-	// 	}
-	// 	keys = append(keys, strings.Join(keys_one, "++"))
-	// }
-	// qstr := GetMemberViewSql(sql)
-	// count = elastic.Count(INDEX, TYPE, qstr)
-	// list = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, bidSearch_field, (pageNum-1)*pageSize, pageSize, 0, false)
-	// if list != nil {
-	// 	for _, v := range *list {
-	// 		v["_id"] = EncodeId(qutil.ObjToString(v["_id"]))
-	// 	}
-	// }
-	// hasNextPage = list != nil && len(*list) == pageSize && pageNum < view_maxPageNum
+func getStringArrFromDbResult(area map[string]interface{}, i int) (arr []string) {
+	if area == nil {
+		return
+	}
+	var eareArr []string
+	var cityArr []string
+	for k, v := range area {
+		if len(v.([]interface{})) > 0 {
+			cityArr = append(cityArr, qutil.ObjArrToStringArr(v.([]interface{}))...)
+		} else {
+			eareArr = append(eareArr, k)
+		}
+	}
+	if i == 1 {
+		arr = eareArr
+	} else {
+		arr = cityArr
+	}
 	return
 }

+ 1 - 1
src/jfw/modules/bigmember/src/service/portrait/subvipPortraitAction.go

@@ -137,7 +137,7 @@ func (this *SubVipPortrait) SubVipPortrait() {
 			return nil, err
 		}
 		rData, err := cepm.WinnerPortraitData(&entity.PortraitScreen{
-			Ent:        util.DecodeId(entId),
+			Ent:        entId,
 			Match:      this.GetString("match"),
 			ExactMatch: this.GetString("exactMatch") == "1",
 			MatchRange: this.GetString("matchRange"),

+ 1 - 1
src/jfw/modules/bigmember/src/util/jylog.go

@@ -30,7 +30,7 @@ var LogPath = "./jylog"
 func init() {
 	os.Mkdir(LogPath, os.ModePerm)
 	//默认保留15天内的日志,-1为永久保留
-	// initLog(15)
+	initLog(15)
 }
 
 func initLog(saveDay int) {

+ 1 - 3
src/jfw/modules/publicapply/src/subscribePush/entity/keyWords.go

@@ -55,9 +55,7 @@ func (this *KeyWordsSet) UpdateKeyWords() map[string]interface{} {
 			return directSubKWS(types, this.KeyWordName, this.UserId)
 		}
 	} else {
-		if this.ClassifyIndex != "0" {
-			return map[string]interface{}{"flag": false, "msg": "分类异常"}
-		}
+		this.ClassifyIndex = "0"
 		this.ClassifyName = "未分类"
 		switch this.ActionType {
 		case "SK": //保存/修改关键词

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

@@ -20,6 +20,50 @@
     color: #5F5E64;
     font-size: .24rem;
     line-height: .36rem;
+}.win-analyse{
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: .24rem .32rem;
+  margin-top: .24rem;
+  background: #fff;
+}
+.win-bid-title{
+  position: relative;
+  padding-left: .16rem;
+  color: #171826;
+  font-size: .36rem;
+  line-height: .52rem;
+}
+.win-bid-title::after{
+  position: absolute;
+  content: '';
+  width:3px;
+  height: .32rem;
+  background: #2abed1;
+  border-radius: 11px;
+  left:0;
+  top: 50%;
+  transform: translateY(-50%);
+}
+.win-analyse .high-link{
+  display: flex;
+  align-items: center;
+  color: #2abed1;
+  font-size: .28rem;
+}
+.win-analyse .high-link > span{
+  margin-right: .08rem;
+}
+.buyer-statistic{
+  margin-top: 0.08rem;
+  background: #fff;
+}
+.statistic-title{
+  padding: .32rem .32rem .12rem;
+  color: #171826;
+  line-height: .52rem;
+  font-size: .36rem;
 }
 .buyer-type{
     margin-top: 0.04rem;

+ 49 - 10
src/web/staticres/big-member/js/unit_portrayal.js

@@ -163,8 +163,17 @@ var vNode = {
     },
     mounted: function () {
         this.buyer.name = decodeURIComponent(utils.getParam('entName'));
-        this.getNewMsg(); // 中标动态
-        this.getChartData(); // 企业画像
+        var storageSet = JSON.parse(sessionStorage.getItem('buyer_high_set'))
+        if (storageSet && !this.getStatus) {
+          this.getNewMsg(); // 中标动态
+          this.getChartData(); // 企业画像
+        }
+        var storageName = decodeURIComponent(sessionStorage.getItem('buyer_high_name'))
+        // 判断如果url中的采购单位和高级分析设置中采购单位不一致就清除高级分析设置中存的筛选条件
+        if (storageName && storageName !== this.buyer.name) {
+          sessionStorage.removeItem('buyer_high_set')
+          sessionStorage.removeItem('buyer_high_name')
+        }
     },
     beforeDestroy() {
         window.removeEventListener("resize", this.init,20);
@@ -183,6 +192,7 @@ var vNode = {
             type: 'GET',
             url: '/bigmember/use/isAdd?t=' + Date.now(),
             success: function (res) {
+              _this.chartLoading = false
               if (res.data) {
                 _this.power = res.data.power
                 _this.bigStatus = res.data.memberStatus
@@ -308,6 +318,7 @@ var vNode = {
         // 获取中标动态数据
         getNewMsg: function(){
           var that = this;
+          var storageSet = JSON.parse(sessionStorage.getItem('buyer_high_set'))
           var data = {
               buyer: decodeURIComponent(utils.getParam('entName')),
               count: that.dt.pageCount,
@@ -316,7 +327,7 @@ var vNode = {
           $.ajax({
             type:'POST',
             url:'/bigmember/portrait/buyer/getNewMsg',
-            data:data,
+            data:storageSet ? Object.assign(data, storageSet) : data,
             success:function(res) {
               if(res.error_code == 0) {
                 if (res.data.list && res.data.list.length && res.data.list.length > 0) {
@@ -360,12 +371,15 @@ var vNode = {
         // 获取采购单位画像所有数据
         getChartData: function() {
           var that = this;
+          var storageSet = JSON.parse(sessionStorage.getItem('buyer_high_set'))
+          var data = {
+            buyer: decodeURIComponent(utils.getParam('entName'))
+          }
+          that.chartLoading = true
           $.ajax({
             type:'POST',
             url:'/bigmember/portrait/buyer/getData',
-            data:{
-              buyer: decodeURIComponent(utils.getParam('entName'))
-            },
+            data:storageSet ? Object.assign(data, storageSet) : data,
             success:function(res) {
                 if(res.error_code == 0) {
                   if(res.data && Object.keys(res.data).length > 0) {
@@ -494,16 +508,22 @@ var vNode = {
         formatYearsData: function(data) {
           if(data && Object.keys(data).length > 0){
             var rows = [];
+            var count = 0
             for (var key in data) {
               rows.push({
                 '年份': key,
                 '项目数量': data[key].Count,
                 '项目金额': (data[key].Money/10000).fixed(0),
               })
+              count += data[key].Count
+            }
+            if (count !== 0) {
+              this.projectData.columns = ['年份', '项目数量', '项目金额'];
+              this.projectData.rows = rows;
+              this.isShow.showYearData = true;
+            } else {
+              this.isShow.showYearData = false;
             }
-            this.projectData.columns = ['年份', '项目数量', '项目金额'];
-            this.projectData.rows = rows;
-            this.isShow.showYearData = true;
           }
         },
         // 3.处理月度采购规模数据
@@ -512,9 +532,13 @@ var vNode = {
             var rows = [];
             var columns = ['月份'];
             var count = 0;
+            var allNum = []
             var yearArr = []
             for (var key in data) {
               yearArr.push(parseInt(key))
+              for(var n in data[key]) {
+                allNum.push(data[key][n])
+              }
             }
             yearArr.sort(function (a, b) { return a - b })
             yearArr.forEach(function (item) {
@@ -537,8 +561,9 @@ var vNode = {
               })
               rows.push(columnsItem)
             }
+            var maxNum = Math.max.apply(Math, allNum.map(function(o) { return o }))
             // 数据总量为0,不赋值
-            if (count != 0) {
+            if (count != 0 && maxNum !== 0) {
               this.monthScaleData.columns = columns;
               this.monthScaleData.rows = rows;
               this.isShow.showMonthScale = true;
@@ -1242,6 +1267,20 @@ var vNode = {
             })
             return maxIndex
         },
+        goHighSet: function() {
+          if (!this.getStatus) {
+            location.href = '/big/wx/page/free_high_set?header=采购单位高级分析设置&entName=' + decodeURIComponent(utils.getParam('entName'))
+          } else {
+            this.$dialog.confirm({
+              className:'promatch',
+              title: '您暂无使用权限',
+              message: '您未购买此服务,如需使用请联系您的销售人员或客服升级套餐,谢谢!',
+              showCancelButton: false,
+              confirmButtonColor: '#2cb7ca',
+              confirmButtonText: '我知道了'
+            }).then(function () {})
+          }
+        }
     }
 }
 var unit = new Vue(vNode)

+ 36 - 1
src/web/staticres/big-member/weixin/css/ent_portrait.css

@@ -105,7 +105,7 @@
     padding: .32rem 0 .12rem;
     width: 100%;
     font-size: .36rem;
-    font-weight: 700;
+    /* font-weight: 700; */
     line-height: .52rem;
     color: #171826;
 }
@@ -383,3 +383,38 @@
     text-decoration: underline;
     margin-right: .08rem;
 }
+.win-analyse{
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: .24rem .32rem;
+  margin-top: .24rem;
+  background: #fff;
+}
+.win-bid-title{
+  position: relative;
+  padding-left: .16rem;
+  color: #171826;
+  font-size: .36rem;
+  line-height: .52rem;
+}
+.win-bid-title::after{
+  position: absolute;
+  content: '';
+  width:3px;
+  height: .32rem;
+  background: #2abed1;
+  border-radius: 11px;
+  left:0;
+  top: 50%;
+  transform: translateY(-50%);
+}
+.win-analyse .high-link{
+  display: flex;
+  align-items: center;
+  color: #2abed1;
+  font-size: .28rem;
+}
+.win-analyse .high-link > span{
+  margin-right: .08rem;
+}

+ 2 - 1
src/web/staticres/common-module/big-member/css/high_set.css

@@ -101,7 +101,8 @@
   color: #2abed1;
 }
 .select-area-box .van-index-bar__sidebar{
-  top: 60%;
+  top: inherit;
+  bottom: 20%;
 }
 .van-index-bar__index{
   line-height: 18px;

+ 12 - 12
src/web/staticres/common-module/big-member/js/ent_project_news.js

@@ -240,22 +240,22 @@ var vConfig = {
             var _this = this
             var t = this.listState
             t.loading = true
-
+            var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
             var url = this.projectNewUrl
-
+            var data = {
+              entId: _this.entInfo.eid,
+              match: _this.searchInfo.content,
+              matchType: _this.searchFilters.matchType.join(','),
+              area: _this.searchFilters.area.join(','),
+              infoType: _this.searchFilters.infoType.join(','),
+              pushTime: _this.searchFilters.pushTime.join(','),
+              pageNum: _this.listState.pageNum,
+              pageSize: _this.listState.pageSize,
+            }
             $.ajax({
                 type: 'POST',
                 url: url,
-                data: {
-                    entId: _this.entInfo.eid,
-                    match: _this.searchInfo.content,
-                    matchType: _this.searchFilters.matchType.join(','),
-                    area: _this.searchFilters.area.join(','),
-                    infoType: _this.searchFilters.infoType.join(','),
-                    pushTime: _this.searchFilters.pushTime.join(','),
-                    pageNum: _this.listState.pageNum,
-                    pageSize: _this.listState.pageSize,
-                },
+                data: storageSet ? Object.assign(data, storageSet) : data,
                 success: function (res) {
                     if (res.data) {
                         // 判断是否为刷新

+ 238 - 58
src/web/staticres/common-module/big-member/js/high_set.js

@@ -1,21 +1,37 @@
-var matchTypeListForComputed = [
+var winnerMatchTypeList = [
   {
-      label: '项目名称/标的物',
-      value: 'purchasing'
+    label: '项目名称/标的物',
+    value: 'purchasing'
   },
   {
-    label: '中标企业',
-    value: 'winner'
+    label: '采购单位',
+    value: 'buyer'
+  },
+  {
+    label: '招标代理机构',
+    value: 'agency'
+  }
+]
+var buyerMatchTypeList = [
+  {
+    label: '项目名称/标的物',
+    value: 'purchasing'
   },
   {
-      label: '采购单位',
-      value: 'buyer'
+    label: '中标企业',
+    value: 'winner'
   },
   {
-      label: '招标代理机构',
-      value: 'agency'
+    label: '招标代理机构',
+    value: 'agency'
   }
 ]
+var matchTypeList = []
+if (utils.getParam('header').indexOf('采购单位') > -1) {
+  matchTypeList = buyerMatchTypeList
+} else {
+  matchTypeList = winnerMatchTypeList
+}
 var highSet = new Vue({
   delimiters: ['${', '}'],
   el: '#high-set',
@@ -30,11 +46,11 @@ var highSet = new Vue({
     return {
       conf: {
         keywords: '',
-        scope: '',
-        area: '',
-        industry: '',
-        start: '',
-        end: '',
+        scope: '项目名称/标的物',
+        area: '全国',
+        industry: '全部',
+        start: new Date().getFullYear() - 2 + '',
+        end: new Date().getFullYear() + '',
         match: 1
       },
       popInfo: {
@@ -43,7 +59,8 @@ var highSet = new Vue({
         type: ''
       },
       entInfo: {
-        eid: ''
+        eid: '',
+        entName: ''
       },
       reqSign: 'bigmember',
       filterInitData: {
@@ -52,8 +69,10 @@ var highSet = new Vue({
         timeRange: [],
         industry: []
       },
+      selectAreaList: ['全国'],
       selectIndustryList: [],
-      matchTypeList: matchTypeListForComputed,
+      selectScopeList: ['purchasing'],
+      matchTypeList: matchTypeList,
       startRange: [],
       endRange: []
     }
@@ -66,16 +85,22 @@ var highSet = new Vue({
       var industry = this.conf.industry
       var start = this.conf.start
       var end = this.conf.end
-      return !(key && scope && area && industry && start && end)
+      return !(key || scope || area || industry || start || end)
     },
     hasSpace () {
       var key = this.conf.keywords
       return key.length > 1 && key.replace(/^\s\s*/,'').indexOf(' ') > -1
     },
     filterInfoUrl: function () {
+      var path = ''
+      if (this.entInfo.eid) {
+        path = 'winner/selects'
+      } else if (this.entInfo.entName) {
+        path = 'buyer/selects'
+      }
       var urlMap = {
-          bigmember: '/bigmember/portrait/winner/getNewMsgSelects', // 大会员
-          svip: '/bigmember/portrait/subVipPortrait/getNewMsgSelects' // 超级订阅
+          bigmember: '/bigmember/portrait/' + path, // 大会员
+          svip: '/bigmember/portrait/subVipPortrait/selects' // 超级订阅
       }
       var url = urlMap.bigmember
       if (urlMap[this.reqSign]) {
@@ -87,17 +112,63 @@ var highSet = new Vue({
   created () {
     var eid = utils.getParam('eid')
     var reqSign = utils.getParam('reqSign')
+    var entName = decodeURIComponent(utils.getParam('entName'))
+    var winnerStorage = JSON.parse(sessionStorage.getItem('winner_high_set'))
+    var buyerStorage = JSON.parse(sessionStorage.getItem('buyer_high_set'))
     if (eid) {
       this.entInfo.eid = decodeURIComponent(eid)
+      if (winnerStorage) {
+        this.formatterStorage(winnerStorage)
+      }
+    }
+    if (entName) {
+      this.entInfo.entName = entName
+      if (buyerStorage) {
+        this.formatterStorage(buyerStorage)
+      }
     }
     if (reqSign) {
       this.reqSign = reqSign
     }
   },
   mounted () {
+    var header = decodeURIComponent(utils.getParam('header'))
+    this.setHeaderTitle(header)
     this.getFilterApi()
   },
   methods: {
+    // 设置title
+    setHeaderTitle: function setHeaderTitle (header) {
+      document.title = header || document.title
+    },
+    // 将缓存中的项目搜索范围英文字段转换为中文用于在输入框展示
+    formatterLabel: function(data) {
+      var arr = []
+      var list = this.matchTypeList
+      var sArr = data.split(',')
+      list.forEach(function(item){
+        sArr.forEach(function(v){
+          if(item.value == v) {
+            arr.push(item.label)
+          }
+        })
+      })
+      return arr.join(',')
+    },
+    // 回显缓存中的数据
+    formatterStorage: function (data) {
+      var timeRange = data.timeRange.split('_')
+      this.conf.keywords = data.match
+      this.conf.area = data.area ? data.area : '全国'
+      this.conf.scope = this.formatterLabel(data.matchRange)
+      this.conf.industry = data.scopeClass ? data.scopeClass : '全部'
+      this.conf.start = timeRange[0]
+      this.conf.end = timeRange[1]
+      this.conf.match = data.exactMatch
+      this.selectAreaList = data.area ? data.area.split(',') : ['全国']
+      this.selectScopeList = data.matchRange.split(',')
+      this.selectIndustryList = data.scopeClass.split(',')
+    },
     // 取近四年的年份
     getCurFourYears: function () {
       var endYear = new Date().getFullYear()
@@ -108,12 +179,12 @@ var highSet = new Vue({
       }
       return years
     },
+    // 处理截止日期
     getEndRangeYears: function () {
       var endArr = []
       var years = this.getCurFourYears()
       var start = this.conf.start
       if (start) {
-        // end = years.slice()
         endArr = years.filter(function (v) {
           return v.replace('年', '') >= start.replace('年', '')
         })
@@ -122,6 +193,13 @@ var highSet = new Vue({
       }
       return endArr
     },
+    showToast: function (message) {
+      this.$toast({
+          duration: 1500,
+          forbidClick: true,
+          message: message,
+      })
+    },
     showLoading: function () {
       var loading = this.$toast.loading({
         duration: 0,
@@ -130,15 +208,19 @@ var highSet = new Vue({
       })
       return loading
     },
+    // 获取筛选条件
     getFilterApi () {
       var _this = this
       var loading = this.showLoading()
+      var data = this.entInfo.eid ? {
+        entId: _this.entInfo.eid
+      } : {
+        buyer: _this.entInfo.entName
+      }
       $.ajax({
           type: 'POST',
           url: this.filterInfoUrl,
-          data: {
-            entId: _this.entInfo.eid
-          },
+          data: data,
           success: function (res) {
             if (res.error_code == 0) {
               loading.clear()
@@ -154,6 +236,37 @@ var highSet = new Vue({
           }
       })
     },
+    // 选择器
+    popClick: function (type) {
+      this.popInfo.type = type
+      switch (type) {
+        case 'scope':
+          this.popInfo.show = true
+          this.initSelector()
+          this.popInfo.title = '请选择项目搜索范围'
+          break;
+        case 'area':
+          this.popInfo.show = true
+          this.initSelector(this.filterInitData)
+          this.popInfo.title = '请选择项目地区'
+          break;
+        case 'industry':
+          this.popInfo.show = true
+          this.initSelector(this.filterInitData)
+          this.popInfo.title = '请选择行业'
+          break;
+        case 'start':
+          this.popInfo.show = true
+          this.initSelector()
+          this.popInfo.title = '请选择开始年份'
+          break;
+        case 'end':
+          this.popInfo.show = true
+          this.initSelector()
+          this.popInfo.title = '请选择结束年份'
+          break;
+      }
+    },
     initSelector: function (data) {
       var _this = this
       this.$nextTick(function() {
@@ -162,10 +275,12 @@ var highSet = new Vue({
             _this.initMatchTypeSelector()
             break;
           case 'area':
+            _this.filterInitData.areaArr = data.areaArr
             _this.initProjectAreaSelector(data.areaArr)
             break;
           case 'industry':
-            _this.selectIndustryList = ['建筑工程_勘察设计']
+            _this.filterInitData.industry = data.scopeArr
+            _this.initProjectIndustrySelector(data.scopeArr)
             break;
           case 'start':
             _this.startRange = _this.getCurFourYears()
@@ -176,9 +291,11 @@ var highSet = new Vue({
         }
       })
     },
+    // 项目搜索范围
     initMatchTypeSelector: function () {
-      // this.$refs.matchTypeSelector.setState(this.searchFilters.matchType)
+      this.$refs.matchTypeSelector.setState(this.selectScopeList)
     },
+    // 过滤地区
     initProjectAreaSelector: function (areaArr) {
       if (!Array.isArray(areaArr)) return
       if (areaArr.indexOf('全国') === -1) {
@@ -198,67 +315,87 @@ var highSet = new Vue({
         }
       }
       this.$refs.projectAreaSelector.arrangeListMap(map)
+      console.log(this.selectAreaList, '111')
+      this.$refs.projectAreaSelector.setState(this.selectAreaList)
+    },
+    // 过滤行业数据
+    initProjectIndustrySelector: function (data) {
+      var arr = []
+      data.forEach(function(s) {
+        var key = s.substring(0, s.indexOf('_'))
+        var value = s.substring(s.indexOf('_') + 1)
+        arr.push({
+          name: key,
+          value: value
+        })
+      })
+      var newArr = []
+      arr.forEach(function(item, index) {
+        let newItem = newArr.find(function(i) {
+          return i.name == item.name
+        })
+        if (!newItem) {
+          newArr.push({
+            name: item.name,
+            value: [item.value]
+          })
+        } else {
+          newItem.value.push(item.value)
+        }
+      })
+      var resArr = []
+      newArr.forEach(function(s) {
+        var obj = {}
+        obj[s.name] = s.value
+        resArr.push(obj)
+      })
+      console.log(resArr, '过滤好的行业数据')
+      this.$refs.industryCom.formatIndustryData(resArr)
+      this.$refs.industryCom.setState(this.selectIndustryList)
     },
+    // 分析方式
     checkMatch: function (item) {
       this.conf.match = item
     },
     onKeywords: function (val) {
+      // 过滤首个空格
       this.conf.keywords = val.replace(/^\s\s*/,'')
     },
-    popClick: function (type) {
-      this.popInfo.type = type
-      switch (type) {
-        case 'scope':
-          this.popInfo.show = true
-          this.initSelector(this.filterInitData)
-          this.popInfo.title = '请选择项目搜索范围'
-          break;
-        case 'area':
-          this.popInfo.show = true
-          this.initSelector(this.filterInitData)
-          this.popInfo.title = '请选择项目地区'
-          break;
-        case 'industry':
-          this.popInfo.show = true
-          this.popInfo.title = '请选择行业'
-          break;
-        case 'start':
-          this.popInfo.show = true
-          this.initSelector()
-          this.popInfo.title = '请选择开始年份'
-          break;
-        case 'end':
-          this.popInfo.show = true
-          this.initSelector()
-          this.popInfo.title = '请选择结束年份'
-          break;
+    onCancel: function (data) {
+      if (!data) {
+        this.selectScopeList = ['purchasing']
+        this.$refs.matchTypeSelector.setState(this.selectScopeList)
+      } else if (data.name == 'areaItem') {
+        this.$refs.projectAreaSelector.setState(this.selectAreaList)
+      } else if (data.name == 'industryItem') {
+        this.$refs.industryCom.setState(this.selectIndustryList)
       }
-    },
-    onCancel: function () {
-
     },
     onConfirm: function (data) {
-      console.log(data, 'data')
+      console.log(data)
       if (data.name === 'areaItem') {
         if (data.data.length === 0) {
           this.conf.area = '全国'
+          this.selectAreaList = ['全国']
         } else {
           this.conf.area = data.data.join(',')
+          this.selectAreaList = data.data
         }
       } else if (data.name === 'scopeItem') {
         if (data.data.length === 0) {
-          this.conf.scope = '全部'
+          this.conf.scope = ''
         } else {
           this.conf.scope = data.checkedList.map(function(v) {
             return v.label
           }).join(',')
+          this.selectScopeList = data.data
         }
-        
       } else if (data.name === 'industryItem') {
         if (data.data.length === 0) {
           this.conf.industry = '全部'
         } else {
           this.conf.industry = data.data.join(',')
+          this.selectIndustryList = data.data
         }
       } else if (data.name === 'yearsItem') {
         if (data.type === 'start') {
@@ -273,6 +410,49 @@ var highSet = new Vue({
     },
     setToggle: function() {
       this.popInfo.show = false
+    },
+    // 开始分析
+    startStatistic: function() {
+      var conf = this.conf
+      var list = this.matchTypeList
+      var arr = []
+      var sArr = conf.scope.split(',')
+      list.forEach(function(item){
+        sArr.forEach(function(v){
+          if(item.label == v) {
+            arr.push(item.value)
+          }
+        })
+      })
+      var obj = {
+        match: conf.keywords,
+        exactMatch: conf.match,
+        matchRange: arr.join(','),
+        area: conf.area.indexOf('全国') > -1 ? '' : conf.area,
+        scopeClass: conf.industry.indexOf('全部') > -1 ? '' : conf.industry,
+        timeRange: conf.start.replace('年', '') + '_' + conf.end.replace('年', '')
+      }
+      if (this.entInfo.entName) {
+        window.sessionStorage.setItem('buyer_high_set', JSON.stringify(obj))
+        window.sessionStorage.setItem('buyer_high_name', encodeURIComponent(this.entInfo.entName))
+      } else if (this.entInfo.eid) {
+        window.sessionStorage.setItem('winner_high_set', JSON.stringify(obj))
+        window.sessionStorage.setItem('winner_high_eid', this.entInfo.eid)
+      }
+      window.history.back()
+    },
+    // 重置
+    onReset: function () {
+      this.conf.keywords = ''
+      this.conf.scope = '项目名称/标的物'
+      this.conf.area = '全国'
+      this.conf.industry = '全部'
+      this.conf.start = new Date().getFullYear() - 2 + '年'
+      this.conf.end = new Date().getFullYear() + '年'
+      this.conf.match = 1
+      this.filterInitData.area = []
+      this.selectIndustryList = []
+      this.selectScopeList = ['purchasing']
     }
   }
 })

+ 63 - 38
src/web/staticres/common-module/collection/js/ent_portrait.js

@@ -144,6 +144,12 @@ var vNode = {
             // 获取企业基本信息
             this.getEntBaseInfo()
         }
+        var storageId = sessionStorage.getItem('winner_high_eid')
+        // 判断如果url中的企业id和高级分析设置中存的企业id不一致就清除高级分析设置中存的筛选条件
+        if (storageId && storageId !== eId) {
+          sessionStorage.removeItem('winner_high_set')
+          sessionStorage.removeItem('winner_high_eid')
+        }
 
     },
     mounted: function () {
@@ -161,42 +167,42 @@ var vNode = {
         })
     },
     watch: {
-        // tabActiveName: function (newVal, oldVal) {
-        //     var _this = this
-        //     if (newVal == '2') {
-        //         this.$nextTick(function () {
-        //             if (_this.gotTab2) {
-        //                 // 初始化图表
-        //                 if (_this.entPortraitInfo && _this.conf.showPortraitAll && !_this.singleTab) {
-        //                     _this.initChartsData();
-        //                 }
-        //             } else {
-        //                 if (_this.conf._4) {
-        //                     // 获取企业画像信息-4
-        //                     _this.getEntPortrait(function () {
-        //                         _this.initChartsData()
-        //                     })
-        //                     _this.gotTab2 = true
-        //                     console.log('获取企业全景分析...')
-        //                 }
-        //                 // 获取企业中标动态-13
-        //                 if (_this.conf._13) {
-        //                     _this.getProjectNews()
-        //                     _this.gotTab2 = true
-        //                     console.log('获取企业中标动态...')
-        //                 }
-        //                 if(_this.powerInfo.memberStatus <= 0) {
-        //                     // 不是大会员点击中标信息使用次数加一
-        //                     // if(!_this.entvisit.visited) {
-        //                     //     _this.entvisit.usage++
-        //                     //     _this.entvisit.visited = true
-        //                     // }
-        //                 }
-        //                 _this.gotTab2 = true
-        //             }
-        //         });
-        //     }
-        // },
+        tabActiveName: function (newVal, oldVal) {
+            var _this = this
+            if (newVal == '2') {
+                this.$nextTick(function () {
+                    if (_this.gotTab2) {
+                        // 初始化图表
+                        if (_this.entPortraitInfo && _this.conf.showPortraitAll && !_this.singleTab) {
+                            _this.initChartsData();
+                        }
+                    } else {
+                        if (_this.conf._4) {
+                            // 获取企业画像信息-4
+                            _this.getEntPortrait(function () {
+                                _this.initChartsData()
+                            })
+                            _this.gotTab2 = true
+                            console.log('获取企业全景分析...')
+                        }
+                        // 获取企业中标动态-13
+                        if (_this.conf._13) {
+                            _this.getProjectNews()
+                            _this.gotTab2 = true
+                            console.log('获取企业中标动态...')
+                        }
+                        if(_this.powerInfo.memberStatus <= 0) {
+                            // 不是大会员点击中标信息使用次数加一
+                            // if(!_this.entvisit.visited) {
+                            //     _this.entvisit.usage++
+                            //     _this.entvisit.visited = true
+                            // }
+                        }
+                        _this.gotTab2 = true
+                    }
+                });
+            }
+        },
     },
     computed: {
         // 3个权限有1个就为true(取反为3个权限1个都没有)
@@ -314,6 +320,8 @@ var vNode = {
         },
         // 获取画像信息
         getEntPortrait: function (callback) {
+            var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+            if (!storageSet) return
             var _this = this
             var data = {
                 entId: _this.entInfo.id
@@ -340,7 +348,7 @@ var vNode = {
             $.ajax({
                 type: 'POST',
                 url: urls,
-                data: data,
+                data: storageSet ? Object.assign(data, storageSet) : data,
                 success: function (res) {
                     if (res.error_code == 0) {
                         _this.loading.clear()
@@ -413,6 +421,8 @@ var vNode = {
           },
         // 获取项目动态
         getProjectNews: function () {
+            var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
+            if (!storageSet) return
             var _this = this
             var data = {
                 entId: _this.entInfo.id,
@@ -427,7 +437,7 @@ var vNode = {
             $.ajax({
                 type: 'POST',
                 url: urls,
-                data: data,
+                data: storageSet ? Object.assign(data, storageSet) : data,
                 success: function (res) {
                     if (res.error_code == 0) {
                         _this.loading.clear()
@@ -1083,6 +1093,21 @@ var vNode = {
                 sessionStorage.removeItem(this.sessKey)
             }
             return !!$data
+        },
+        // 高级分析设置
+        goHighSet () {
+          if (this.conf._4) {
+            location.href = '/big/wx/page/free_high_set?header=中标分析高级设置&eid=' + utils.getParam('eId')
+          } else {
+            this.$dialog.confirm({
+              className:'promatch',
+              title: '您暂无使用权限',
+              message: '您未购买此服务,如需使用请联系您的销售人员或客服升级套餐,谢谢!',
+              showCancelButton: false,
+              confirmButtonColor: '#2cb7ca',
+              confirmButtonText: '我知道了'
+            }).then(function () {})
+          }
         }
     }
 }

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

@@ -1,7 +1,8 @@
 var historyProTemplate = `
 <div style="width:100%" v-if="list.length !== 0">
   <div class="tab-card-title">
-    <span class="win-bid-title">企业通讯录</span>
+    <span class="win-bid-title" v-if="type=='buyer'">采购单位通讯录</span>
+    <span class="win-bid-title" v-else>企业通讯录</span>
   </div>
   <div class="tab-card-content">
       <ul class="project-info-list">

+ 39 - 24
src/web/staticres/common-module/collection/js/industry-mobile.js

@@ -70,6 +70,10 @@ var industryComponent = {
       default: function () {
         return []
       }
+    },
+    'onlyshowsome': {
+      type: Boolean,
+      default: false
     }
   },
   template: industryComponentTemplate,
@@ -77,7 +81,8 @@ var industryComponent = {
     return {
       tablist: [],
       checkedAll: false,
-      canClick: true
+      canClick: true,
+      industryData: []
     }
   },
   computed: {
@@ -91,38 +96,48 @@ var industryComponent = {
   },
   methods: {
     // 获取行业数据
-    getIndustryData: function(){
+    getIndustryData: function(datas){
       const _this = this
       $.ajax({
         url: '/publicapply/free/getindustrys',
         type:'POST',
         success: function(res){
-          let maxarr = []
-          res.data.forEach(function(item,index) {
-            let minarr = []
-            let keyname = Object.keys(item)[0]
-            let eachArr = item[Object.keys(item)[0]]
-            eachArr.forEach(function(data, i){
-              data = {
-                name: data,
-                type: false
-              }
-              minarr.push(data)
-            })
-            let obj = {
-              [keyname]: minarr,
-              type: false
-            }
-            maxarr.push(obj)
-          })
-          _this.tablist = maxarr
-          _this.setState()
+          if (res.error_code == 0) {
+            _this.industryData = res.data
+            _this.formatIndustryData(datas)
+          }
         },
         error: function(err){
           console.log(err)
         }
       })
     },
+    formatIndustryData: function(datas) {
+      if (!this.onlyshowsome && !datas) {
+        datas = this.industryData
+      }
+      if (!datas) return
+      let maxarr = []
+      datas.forEach(function(item,index) {
+        let minarr = []
+        let keyname = Object.keys(item)[0]
+        let eachArr = item[Object.keys(item)[0]]
+        eachArr.forEach(function(data, i){
+          data = {
+            name: data,
+            type: false
+          }
+          minarr.push(data)
+        })
+        let obj = {
+          [keyname]: minarr,
+          type: false
+        }
+        maxarr.push(obj)
+      })
+      this.tablist = maxarr
+      this.setState()
+    },
     // 回显数据
     setState: function() {
       let indArr = this.selectindustrylist
@@ -139,7 +154,7 @@ var industryComponent = {
         indArr.forEach(function(sum) {
           newindArr.push(sum.split('_')[1])
         })
-        console.log(newindArr)
+        // console.log(newindArr)
         this.tablist.forEach(function(item){
           item[Object.keys(item)[0]].forEach(function(data) {
             newindArr.forEach(function(sum) {
@@ -236,7 +251,7 @@ var industryComponent = {
         itemall[Object.keys(itemall)[0]].forEach(function(data) {
           let bool = true
           if(data.type) {
-            console.log(data)
+            // console.log(data)
             bool = false+''
           }
           boolArr.push(bool)

+ 72 - 36
src/web/staticres/common-module/vipsubscribe/js/vip-subscribe-set-template.js

@@ -14,7 +14,7 @@ var subScribeTemplate = `
         </span>
       </div>
     </a>
-    <div class="amendmentNum">
+    <div class="amendmentNum" v-show="vSwitch === 'f'">
       当年剩余可修改次数:<span class="numColor" v-show="userAreaNum != -1">{{userAreaNum}}&nbsp;</span><span v-show="userAreaNum != -1">次</span><span v-show="userAreaNum === -1">无限制</span>
       <i class="iconfont icon-bangzhu" @click="amendmentNumNotice"></i>
     </div>
@@ -25,7 +25,7 @@ var subScribeTemplate = `
         <span class="item-l">
           <span class="leading jy-icon-industry"></span>
           <span class="item-label">采购单位类型</span>
-          <span class="openVip">开通</span>
+          <span class="openVip" v-show="vSwitch === 'f'">开通</span>
         </span>
         <span class="item-r">
           <span class="keywords-text ellipsis">{{info.industry}}</span>
@@ -84,7 +84,7 @@ var subScribeTemplate = `
           <span class="item-label matching">
             <span class="label-text">项目匹配</span>
             <i class="iconfont icon-bangzhu" @click="projectNotice"></i>
-            <span class="openVip">开通</span>
+            <span class="openVip" v-show="vSwitch === 'f'">开通</span>
           </span>
         </span>
         <span class="item-r media_switch">
@@ -142,7 +142,7 @@ var subScribeTemplate = `
           <p class="cell_title">按标题匹配</p>
         </div>
         <div class="weui-actionsheet__cell allMacth" :class="{active:active==2}" @click="actionSheet('按全文匹配', 2)">
-          <p class="cell_title">按全文匹配<span class="openVip-keywords">开通</span></p>
+          <p class="cell_title">按全文匹配<span class="openVip-keywords" v-show="vSwitch === 'f'">开通</span></p>
           <p class="small-title">会产生无效信息,请根据需要选择</p>
         </div>
       </div>
@@ -192,9 +192,11 @@ var subComponent = {
     },
     "type": {
       type: String,
-      default: function() {
-        return ''
-      }
+      default: ''
+    },
+    vSwitch: {
+      type: String,
+      default: 'f'
     }
   },
   data: function() {
@@ -245,7 +247,7 @@ var subComponent = {
       infoTypeMenu: false, // 信息类型弹窗状态
       infoTypeData: ['全部'], // 信息类型选择列表
       isChange: false, // 信息类型是否做过更改
-      conf: {} // 信息类型数据
+      conf: {}, // 信息类型数据
     }
   },
   mounted () {
@@ -259,7 +261,6 @@ var subComponent = {
     }
     this.getData()
     this.$emit('mounted')
-    this.getUserSubscribe()
   },
   watch: {
     initdata: function(newVal, oldVal) {
@@ -268,6 +269,11 @@ var subComponent = {
         this.getData()
         this.setIosData()
       }
+    },
+    vSwitch: function (val) {
+      if (val === 'f') {
+        this.getUserSubscribe()
+      }
     }
   },
   methods: {
@@ -280,10 +286,11 @@ var subComponent = {
       this.getProjectMatch()
       this.iosBackRefresh()
     },
+    // 判断用户权限
+    
     // 设置区域
     setArea: function() {
       let _this = this
-      console.info(this.initdata)
       if(this.initdata.area) {
         if(_this.accStatus == 2) {
           sessionStorage.setItem('big-setArea', JSON.stringify(this.initdata.area))
@@ -417,10 +424,14 @@ var subComponent = {
     },
     switchs: function() {
       // 用户未购买项目匹配功能
-      if (!this.userType) {
+      if (this.vSwitch === 'f') {
         $('.switch').removeClass('checked')
         this.checkedflag = false
-        var href = '/jyapp/vipsubscribe/introducePage'
+        if (location.href.indexOf('front') !== -1) {
+          var href = '/front/vipsubscribe/introducePage'
+        } else {
+          var href = '/jyapp/vipsubscribe/introducePage'
+        }
         location.href = href
       } else {
         // switch点击切换
@@ -514,8 +525,14 @@ var subComponent = {
     actionSheet: function(title, index) {
       let _this = this
       let vswitch = 'v'
-      if (index === 2) {
-        location.href = '/jyapp/vipsubscribe/introducePage'
+      var href = ''
+      if (index === 2 && this.vSwitch === 'f') {
+        if (location.href.indexOf('front') !== -1) {
+          href = '/front/vipsubscribe/introducePage'
+        } else {
+          href = '/jyapp/vipsubscribe/introducePage'
+        }
+        location.href = href
       } else {
         if(_this.accStatus == 2) {
           vswitch = 'm'
@@ -593,19 +610,23 @@ var subComponent = {
     },
     // 用户未购买修改采购单位类型功能
     userNoIndustry: function () {
-      if (this.userType) {
+      if (this.vSwitch !== 'f') {
         var href = '/jyapp/vipsubscribe/toChangeIndustry?header=save'
       } else {
-        var href = '/jyapp/vipsubscribe/introducePage'
+        if (location.href.indexOf('front') !== -1) {
+          var href = '/front/vipsubscribe/introducePage'
+        } else {
+          var href = '/jyapp/vipsubscribe/introducePage'
+        }
       }
       this.linkobj.industry = href
     },
     // 修改地区无次数点击事件
     userNumOver: function () {
-      if (this.userAreaNum === 0) {
+      if (this.vSwitch === 'f' && this.userAreaNum === 0) {
         this.linkobj.area = 'javascript:;'
-        if (this.userType) {
-          var str = `对不起,您当月修改区域的机会(${this.userAreaAllNum}次)已消耗完毕,无法再次修改~可前往升级省份订阅包增加订阅省份和修改次数`
+        if (this.userAreaAllNum > 0) {
+          var str = `对不起,您当月修改区域的机会(${this.userAreaAllNum + this.userAreaNum}次)已消耗完毕,无法再次修改~可前往升级省份订阅包增加订阅省份和修改次数`
         } else {
           var str = `对不起,您今年修改免费订阅区域的机会(1次)已消耗完毕,无法再次修改~可前往购买省份订阅包增加订阅省份`
         }
@@ -616,9 +637,23 @@ var subComponent = {
                 label: '取消',
                 type: 'default'
             },{
-              label:'去购买',
+              label: this.userType ? '去升级' : '去购买',
               onClick: function(){
+                if (this.userType) {
+                  if (location.href.indexOf('front') !== -1) {
+                    var href = '/areaPack/wx/page/buy?type=upgrade'
+                  } else {
+                    var href = '/jyapp/areaPack/page/buy?type=upgrade'
+                  }
+                } else {
+                  if (location.href.indexOf('front') !== -1) {
+                    var href = '/areaPack/wx/page/buy?type=buy'
+                  } else {
+                    var href = '/jyapp/areaPack/page/buy?type=buy'
+                  }
+                }
                 
+                location.href = href
               }
             }]
         });
@@ -626,15 +661,15 @@ var subComponent = {
       else {
         // this.linkobj.area = '/jyapp/big/page/set_area?callback=setting_save'
         if (location.href.indexOf('front') !== -1) {
-          
+          this.linkobj.area = '/areaPack/wx/page/set_area'
         } else {
-          this.linkobj.area = '/jyapp/areaPack/set_area'
+          this.linkobj.area = '/jyapp/areaPack/page/set_area'
         }
       }
     },
     // 修改地区剩余次数问号点击事件
     amendmentNumNotice: function () {
-      if (this.userType) {
+      if (this.userAreaAllNum > 0) {
         var str = '每月可修改次数=可订阅省份数量,即每增加购买1个省份,可增加1次修改机会,次月清零重新计算,购买全国不限制每月修改次数。'
       } else {
         var str = '免费用户每年享有 1 次修改区域的机会'
@@ -707,10 +742,9 @@ var subComponent = {
           url: '/publicapply/free/subscribe',
           type: 'POST',
           success: function (res) {
-              console.info(res)             
               _this.userAreaNum = res.data.areanum
               _this.userType = res.data.provincenum === 0 ? false : true
-              _this.userAreaAllNum = res.data.areanum + res.data.provincenum
+              _this.userAreaAllNum = res.data.provincenum
               // _this.$emit('UserSubscribe',res)
               let areaArr = []
               for (const key in res.data.area) {
@@ -735,16 +769,18 @@ var subComponent = {
           vt = 'v'
         }
       }
-      this.initdata.items.forEach(function(item) {
-        item.a_key.forEach(function(r) {
-          keyArr.push(r.key[0])
-          if(r.notkey) {
-            r.notkey.forEach(function(nok) {
-              notKeyArr.push(nok)
-            })
-          }
+      if (this.initdata.items) {
+        this.initdata.items.forEach(function(item) {
+          item.a_key.forEach(function(r) {
+            keyArr.push(r.key[0])
+            if(r.notkey) {
+              r.notkey.forEach(function(nok) {
+                notKeyArr.push(nok)
+              })
+            }
+          })
         })
-      })
+      }
       let _this = this
       $.ajax({
         type: 'POST',
@@ -800,8 +836,8 @@ var setInfoTypeFn = {
       if (initData) {
           initData = JSON.parse(initData)
           console.log(initData)
-          vNode.data.initInfoType = initData
-          vueComponent.setInfoTypeState(vNode.data.initInfoType)
+          // vNode.data.initInfoType = initData
+          // vueComponent.setInfoTypeState(vNode.data.initInfoType)
       }
   },
   saveToSessionStorage: function (data) {

+ 53 - 18
src/web/staticres/js/superSearch.js

@@ -99,6 +99,7 @@ $(function() {
 	})
 	//全文检索和标题检索切换
 	$("#newsclass li:nth-child(2)").click(function(){
+    // searchInnerVue.listState.total = totalPage
     // 重置全选按钮
     $('.custom-checkbox.check-all').prop('checked', false)
 		$(".tabContainer-2 .lucene ul").html("");
@@ -109,7 +110,9 @@ $(function() {
 		currentPage=1;
 		if(submitflag){
 			$(".hasNoData").hide();
-			$(".working").show();
+      $(".working").show();
+      // 隐藏页码
+      searchInnerVue.showPage = false
 			$(".tabContainer").css("min-height","600px");
 			selectType = "all";
 			searchOnsubmit();
@@ -127,7 +130,9 @@ $(function() {
 		currentPage=1;
 		if(submitflag){
 			$(".hasNoData").hide();
-			$(".working").show();
+      $(".working").show();
+      // 隐藏页码
+      searchInnerVue.showPage = false
 			$(".tabContainer").css("min-height","600px");
 			selectType = "title";
 			searchOnsubmit();
@@ -230,14 +235,17 @@ function getNewBids(pnum){
 				$(".nbnext").addClass("disabled");
 			}else{
 				$(".nbnext").removeClass("disabled");
-			}
+      }
+      searchInnerVue.listState.total = Math.ceil(r.count/50)
 			appendDatas(r.list,false,true);
 		}else{
 			submitflag=true;
 			$(".tabContainer").hide();
 			$(".pagination").hide();
 			$(".working").hide();
-			$(".hasNoData").show();
+      $(".hasNoData").show();
+      // 隐藏页码
+      searchInnerVue.showPage = false
     }
     getBidIsColl()
 	})
@@ -267,7 +275,11 @@ function getNewBiddings(){
 		notkey: $(".not-key-input-group input").val().slice(0, 10)
       };
 	$.post("/front/pcAjaxReq",param,function(r){
+    // debugger
 		if(r&&r.list!=null&&r.list.length>0){
+      if (currentPage == 1) {
+        searchInnerVue.listState.total = Math.ceil(r.count/50)
+      }
 			$(".tabContainer").show();
 			//$(".pagination").show();
 			$(".hasNoData").hide();
@@ -291,7 +303,9 @@ function getNewBiddings(){
 			$(".tabContainer").hide();
 			$(".pagination").hide();
 			$(".working").hide();
-			$(".hasNoData").show();
+      $(".hasNoData").show();
+      // 隐藏页码
+      searchInnerVue.showPage = false
     }
     getBidIsColl()
 	})
@@ -304,7 +318,9 @@ function appendDatas(datas,flag,isNew,onlyUpdateTable){
 	var listHtml = '';
 	var tableHtml = '';
 	$(".working").hide();
-	$(".pagination").show();
+  $(".pagination").show();
+  // 显示页码
+  searchInnerVue.showPage = true
 	var searchvalueArray = searchvalue.split("+");
 	$(".pagination-inner").find("span").text(currentPage);
 	if(datas.length<pageSize){
@@ -664,10 +680,14 @@ function getVIPData(clickpaging){
 	$(".tabContainer-2 .lucene").hide();
   $("#allnews").hide();
 	$(".pagination").hide();
-	$(".working").show();
+  $(".working").show();
+  // 隐藏页码
+  searchInnerVue.showPage = false
 	if($("#zbSeatchT [name='keywords']").val()==""&&$("#zbSeatchT [name='keywords']").val()==""&&$("#zbSeatchT [name='industry']").val()==""){
 		$(".working").hide();
-		$(".pagination").show();
+    $(".pagination").show();
+    // 显示页码
+    searchInnerVue.showPage = true
 		return true;
 	}
 	var tabflag = false;
@@ -722,7 +742,9 @@ function getVIPData(clickpaging){
 				appendDatas(r.list,tlflag,true,true);
 			}else{
 				$(".working").hide();
-				$(".hasNoData").show();
+        $(".hasNoData").show();
+        // 隐藏页码
+        searchInnerVue.showPage = false
 			}
       tabflag = true;
       getBidIsColl()
@@ -735,7 +757,9 @@ function beforeSubmit(n){
   // 重置全选按钮
   $('.custom-checkbox.check-all').prop('checked', false)
 	$(".hasNoData").hide();
-	$(".working").show();
+  $(".working").show();
+  // 隐藏页码
+  searchInnerVue.showPage = false
 	//$(".tabContainer-2 .lucene ul").html("");
 	//$(".tabContainer-2 .lucene-table table tbody").html("");
 	$(".tabContainer .lucene ul").html("");
@@ -749,7 +773,9 @@ function beforeSubmit(n){
 	$("#allnews").hide();
 	$(".pagination").hide();
 	setTimeout(function(){
-		currentPage=1;
+    currentPage=1;
+    // 重置element ui页码为1
+    searchInnerVue.listState.num = 1
 		//时间
 		if(currentPage==1){
 			$(".nbprev").addClass("disabled");
@@ -949,11 +975,13 @@ function searchOnsubmit(clickpaging){
 			LimitClass.result = r;
 			LimitClass.list = r.list;
 			LimitClass.paging(currentPage);
-			LimitClass.prevNoLimitFlag = false;
+      LimitClass.prevNoLimitFlag = false;
+      // 重新分页
+      searchInnerVue.listState.total = r.totalPage
 		}else{
 			LimitClass.prevNoLimitFlag = true;
-			LimitClass.limitFlag = false;
-			pcAjaxReqCallBack(r);
+      LimitClass.limitFlag = false;
+      pcAjaxReqCallBack(r);
     }
     getBidIsColl()
 	});
@@ -1023,7 +1051,9 @@ function pcAjaxReqCallBack(r){
 		$(".tabContainer").hide();
 		$(".pagination").hide();
 		$(".working").hide();
-		$(".hasNoData").show();
+    $(".hasNoData").show();
+    // 隐藏页码
+    searchInnerVue.showPage = false
 		submitflag=true;
 	}else{
 		//$(".tabContainer").show();
@@ -1050,16 +1080,21 @@ function afterAjaxReq(r){
 		searchvalue = r.searchvalue;
 		totalPage = r.totalPage;
 		list= r.list;
-		secondList= r.secondList;
+    secondList= r.secondList;
+    // vue 重置总页数
+    searchInnerVue.listState.total = totalPage
 	}
 	if(secondFlag==""&&typeof(totalPage) != "undefined" && currentPage == 1){
 		if (r.totalPage==1){
 			totalPage = parseInt(r.count/pageSize)+1;
 			if(totalPage>10){
 				totalPage=10;
-			}
+      }
+      // vue 重置总页数
+      searchInnerVue.listState.total = totalPage
 		}else{
-			totalPage = r.totalPage;
+      totalPage = r.totalPage;
+      searchInnerVue.listState.total = totalPage
 		}
 	}
 }

+ 117 - 0
src/web/staticres/vipsubscribe/css/vip_index_new.css

@@ -113,6 +113,7 @@
 }
 
 .sub-info{
+  min-height: 1.48rem;
   border-radius: 8px;
   background: linear-gradient(270deg, #F1D090 0%, #FAE7CA 100%);
   box-shadow: 0px 12px 16px rgba(250, 231, 202, 0.32);
@@ -1256,3 +1257,119 @@
   left: .32rem;
   right: -16px;
 }
+
+.switchicon {
+  display: flex;
+  width: .48rem;
+  height: .48rem;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACrSURBVHgB7dfRCcIwEIDhixPoBm5mV3AEJz03aDc4rxjQhzRgEXtn/w9CC6GQvy+9igDArpjZxdfoS+d7yaYe/F2uiPr2LW2EH3awNiJ+iogoiIji6xH2+mJGsBhROgHql7PEMJVSTq2NQ+eho8QxLW30Aq6+7rK9+fA3AQDgExZnFlJjFtre6lkogvWzkPGnFAQRURARxT9HjJJJI0Ilmxqh9hz8BgGAXXkA6eITzq1YSq8AAAAASUVORK5CYII=) no-repeat;
+  background-size: contain;
+}
+.go_to_levelup {
+  background: url('../image/gotolevelup.png') no-repeat;
+  background-size: cover;
+  border: 0;
+}
+.amendmentNum {
+  font-size: 0.2rem;
+  font-weight: 500;
+  color: #9B9BA3;
+  margin-left: 0.75rem;
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+}
+.numColor {
+  color: #2ABDD1;
+}
+.amendmentNum .icon-bangzhu {
+  margin-left: 0.18rem;
+  color: #2cb7ca;
+  font-size: 0.36rem;
+}
+.area-alert .weui-dialog__bd {
+  font-size: 0.29rem;
+  line-height: 0.43rem;
+  font-weight: 500;
+  color: #161826;
+  text-align: left;
+  margin: 0.43rem 0.54rem 0.39rem;
+}
+.openVip {
+  border-radius: 0.14rem 0.14rem 0.14rem 0.14rem;
+  border: 0.02rem solid #FA483C;
+  font-size: 0.18rem;
+  font-weight: 500;
+  color: #FA483C;
+  width: 0.57rem;
+  text-align: center;
+  height: 0.29rem;
+  line-height: 0.29rem;
+  margin-left: 0.29rem;
+}
+.matching {
+  display: flex;
+  align-items: center;
+}
+.area-noNum .weui-dialog__bd {
+  text-align: left;
+  font-size: 0.29rem;
+  font-weight: 500;
+  color: #161826;
+  line-height: 0.43rem;
+  margin: 0.43rem 0.54rem 0.39rem;
+}
+.provincePayWarp {
+  padding: 0 0.21rem;
+  margin-top: 0.11rem;
+}
+.provincePayTips {
+  font-size: 0.21rem;
+  font-weight: 500;
+  color: #9B9BA3;
+}
+.provincePay {
+  margin-top: 0.14rem;
+  width: 100%;
+  height: 2.5rem;
+  background: #FFFFFF;
+  box-shadow: 0rem 0.04rem 0.14rem 0.02rem rgba(54, 147, 179, 0.050999999046325684);
+  border-radius: 0.14rem 0.14rem 0.14rem 0.14rem;
+  padding: 0.28rem 0;
+}
+.provincePay-text {
+  font-size: 0.2rem;
+  font-weight: 500;
+  color: #9B9BA3;
+  text-align: center;
+}
+.provincePay-num {
+  font-size: 0.32rem;
+  font-weight: bold;
+  color: #2ABDD1;
+}
+.provincePay-numText {
+  padding-top: 0.14rem;
+  padding-bottom: 0.2rem;
+}
+.provincePay-btnWrap {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.privincePay-btn {
+  width: 2.14rem;
+  height: 0.71rem;
+  background: #EDEEF2;
+  border-radius: 0.07rem 0.07rem 0.07rem 0.07rem;
+  font-size: 0.29rem;
+  font-weight: 500;
+  color: #161826;
+  text-align: center;
+  line-height: 0.71rem;
+}
+.updateColor {
+  background: #2ABDD1;
+  color: #fff;
+  margin-left: 0.36rem;
+}

二進制
src/web/staticres/vipsubscribe/image/gotolevelup.png


+ 5 - 1
src/web/staticres/vipsubscribe/js/common.js

@@ -83,7 +83,11 @@ function SortArr(arr) {
 //获取选择
 function getSelectBuyset(area, industry) {
     if (industry[0] === "全部行业") industry = [];
-    if (area["全国"]) area = {};
+    if (area) {
+        if (area["全国"]) area = {};
+    } else {
+        area = {}
+    }
     //计算地区数量
     var buyset = {
         "areacount": -1,  //省份数量

+ 28 - 2
src/web/staticres/vipsubscribe/js/keyset-list.js

@@ -138,7 +138,9 @@ var keySet = new Vue({
     // 关键词数组
     keyList: [],
     loading: '',
-    swiper: ''
+    swiper: '',
+    userNewType: false, // 1为新用户.0为老用户
+    tipsType: false // 提示升级弹窗状态
   },
   computed: {
     reverseList: function () {
@@ -150,6 +152,7 @@ var keySet = new Vue({
   created: function () {
     this.getKeyList()
     sessionStorage.removeItem('free-keyset-detail')
+    this.getUserType()
   },
   mounted: function () {
     pTools.iosBackRefresh()
@@ -358,7 +361,11 @@ var keySet = new Vue({
       if (index === -1) {
         index = this.keyList.length
       }
-      location.href = '/wxkeyset/keyset/filterset?type=' + type + '&index=' + index
+      if (!this.userNewType) {
+        this.tipsType = true
+      } else {
+        location.href = '/wxkeyset/keyset/filterset?type=' + type + '&index=' + index
+      }
     },
     // 调整底部按钮距离
     adjustAddButtonPadding: function () {
@@ -377,6 +384,25 @@ var keySet = new Vue({
         }
       }
     },
+    // 获取用户权限
+    getUserType: function () {
+      let _this = this
+      $.ajax({
+          url: '/bigmember/use/isAdd',
+          type: 'POST',
+          success: function (res) {
+              _this.userNewType = res.data.isUpgrade
+          }
+      })
+    },
+    hiddenTips: function () {
+      this.tipsType = false
+    },
+    updateJump: function () {
+      this.tipsType = false
+      // location.replace('/jyapp/vipsubscribe/toSubVipSetPage?vSwitch=v')
+      location.replace('/front/vipsubscribe/toSubVipSetPage')
+    },
     // 清除订阅页面缓存
     clearHistoryPushDataCache: function () {
       sessionStorage.removeItem('historypushDataCache')

+ 60 - 1
src/web/staticres/vipsubscribe/js/vip_index_new.js

@@ -14,12 +14,71 @@ var subNode = new Vue({
                 resultview: '/front/vipsubscribe/toVIPViewPage',
                 pushsetting: '/front/setting/push_detail?header=超级订阅推送设置&type=super_subscribe'
             },
-            initData: {}
+            initData: {},
+            userAreaNum: 1, // 用户修改地区剩余次数
+            userType: false, // 用户是否为付费用户
+            userAreaAllNum: 1, // 用户可修改地区总次数
+            subscribeTime: '', // 用户订阅的时间
+            vSwitch:'', // 用户版本权限
         }
     },
+    created () {
+        this.getUserSubscribe()
+        this.getUserType()
+    },
     methods: {
         superOrderTemplateMounted () {
             $('#pushResultPreview').attr('data-cl-event', 'c_wx_preview_buttonclick')
+        },
+        // 点击广告跳转超级订阅落地页
+        toPaySupSub: function() {
+            if (this.vSwitch !== 'v') {
+                var href = '/front/vipsubscribe/introducePage'
+                location.href = href
+            }
+            
+        },
+        // 得到用户是否购买省份包
+        getUserSubscribe: function () {
+            let _this = this
+            $.ajax({
+                url: '/publicapply/free/subscribe',
+                type: 'POST',
+                success: function (res) {
+                    _this.userAreaNum = res.data.areanum
+                    _this.userType = res.data.provincenum === 0 ? false : true
+                    _this.userAreaAllNum = res.data.areanum + res.data.provincenum
+                    // _this.$emit('UserSubscribe',res)
+                    _this.subscribeTime = new Date(res.data.ppstart * 1000).pattern('yyyy年MM月dd日') + "-" + new Date(res.data.ppend * 1000).pattern('yyyy年MM月dd日')
+                    _this.initdata = res.data
+                }
+            })
+        },
+        // 省份订阅包续费 
+        renewBtn: function () {
+            location.href = '/areaPack/wx/page/buy?type=renew'
+        },
+        // 省份订阅包升级 
+        updateBtn: function () {
+            location.href = '/areaPack/wx/page/buy?type=upgrade'
+        },
+        // 判断用户权限版本
+        getUserType: function (data) {
+            let  _this = this
+            $.ajax({
+                type: 'POST',
+                url: '/publicapply/subscribe/vipSwitch',
+                data: {
+                    vt:data || ''
+                },
+                success: function(res) {
+                    if (res.data.vt !== 'v' ) {
+                        _this.vSwitch = 'f'
+                    } else {
+                        _this.vSwitch = 'v'
+                    }
+                }
+            })
         }
     }
 })

+ 262 - 9
src/web/templates/areaPack/wx/page_set_area.html

@@ -5,6 +5,107 @@
 
     <!--引入公共资源头部-->
     {{include "/big-member/wx/meta.html"}}
+    <style>
+        .wrapper-header > .content {
+            width: 100%;
+            height: 2.2rem;
+            padding: 0 0.32rem;
+            background: #FFFFFF;
+            box-shadow: 0rem 0.04rem 0.16rem 0.02rem rgba(54, 147, 179, 0.05);
+        }
+        .wrapper-header .selectNumMax {
+            height: 0.84rem;
+            line-height: 0.84rem;
+            font-size: 0.26rem;
+            font-weight: 500;
+            color: #161826;
+        }
+        .wrapper-header .selectNumList {
+            line-height: 0.84rem;
+            font-size: 0.26rem;
+            font-weight: 500;
+            color: #161826;
+        }
+        .moreTips {
+            width: 4.72rem;
+            height: 0.4rem;
+            background: rgba(250,72,60,0.1);
+            border-radius: 0.2rem 0.2rem 0.2rem 0.2rem;
+            padding: 0.02rem 0.16rem;
+            font-size: 0.22rem;
+            font-weight: 500;
+            color: #FA483C;
+            box-sizing: border-box;
+            display: none;
+        }
+        .selectChange {
+            font-size: 0.24rem;
+            font-weight: 500;
+            color: #2ABDD1;
+            margin-left: 1.02rem;
+        }
+        .numColor {
+            color: #5E5E64;
+            padding-left: 0.24rem;
+        }
+        .string {
+            width: 100%;
+            height: 0.01rem;
+            background: rgba(0, 0, 0, 0.05);
+        }
+        .popup-wrap {
+            position: fixed;
+            top: 0;
+            left: 0;
+            right: 0;
+            bottom: 0;
+            z-index: 99999;
+            background-color:rgba(0, 0, 0, 0.7);
+        }
+        .popup-content {
+            width: 6.06rem;
+            height: 2.8rem;
+            background: #FFFFFF;
+            border-radius: 0.16rem 0.16rem 0.16rem 0.16rem;
+            position: fixed;
+            top: 50%;
+            left: 50%;
+            transform: translateX(-50%) translateY(-50%);
+            z-index: 100;
+        }
+        .popup-text{
+            text-align: left;
+            padding: 0.48rem 0.6rem 0.42rem;
+            line-height: 0.48rem;
+            font-size: 0.32rem;
+            font-weight: 500;
+            color: #161826;
+        }
+        .popup-btnWrap{
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            border-top:0.02rem solid rgba(0, 0, 0, 0.1) ;
+        }
+        .popup-btn{
+            font-size: 0.36rem;
+            font-weight: 500;
+            color: #161826;
+            width: 50%;
+            height: 0.92rem;
+            line-height: 0.92rem;
+            text-align: center;
+            cursor: pointer;
+        }
+        .popup-line{
+            height: 0.92rem;
+            width: 0.02rem;
+            background-color: rgba(0, 0, 0, 0.1);
+        }
+        .levelUp {
+            color: #2ABDD1;
+        }
+    </style>
 </head>
 <body>
     <script>
@@ -16,29 +117,181 @@
     {{include "/big-member/wx/component_set_area.html"}}
     <!-- 自定义set-header内容 -->
     <div id="set-header-template" v-cloak>
-        <div class="wrapper-header">
-            <div class="content">content</div>
+        <div class="wrapper-header" id="thisAreaTips">
+            <div class="content">
+                <div class="selectNumMax">可选择<span class="numColor" id="canSelect">1个省</span></div>
+                <div class="string"></div>
+                <div class="selectNumList">
+                    <span>已选择<span class="numColor" id="thisSelect">1个省</span></span>
+                    <span class="moreTips">超出可订阅省份数量,前往购买省份订阅包 ></span>
+                </div>
+                <div class="selectChange"></div>
+            </div>
+            <div class="popup-wrap" v-show="popupType">
+                <div class="popup-content">
+                    <div class="popup-text" id="tips-text">您当前仅可订阅1个省,如需增加请购买【省份订阅包】</div>
+                    <div class="popup-btnWrap">
+                        <div class="popup-btn" id="cancel" @click="hiddenTips">取消</div>
+                        <div class="popup-line"></div>
+                        <div class="popup-btn levelUp" id="btn-text" @click="toPay">去购买</div>
+                    </div>
+                </div>
+            </div>
         </div>
     </div>
     <script>
-        var vm = new Vue({
+        var setAreaFn = {
+            conf: {
+                sKey: 'sub_vip_state'
+            },
+            buyPageInfo: {},
+            init: function () {
+                // 恢复页面状态
+                var pageInfo = sessionStorage.getItem(this.conf.sKey)
+                if (pageInfo) {
+                    this.buyPageInfo = JSON.parse(pageInfo)
+                    var areaInfo = this.buyPageInfo.area
+                    if (this.buyPageInfo && areaInfo && Object.keys(areaInfo).length !== 0) {
+                        vNode.data.initCityMap = areaInfo
+                        vueComponent.setCitySelected(areaInfo)
+                    }
+                }
+            },
+            saveToSessionStorage: function (data) {
+                sessionStorage.setItem(this.conf.sKey, JSON.stringify(data))
+            }
+        }
+       var vm = new Vue({
             delimiters: ['${', '}'],
             el: '#set-header',
             template: '#set-header-template',
-            data: {},
+            data: {
+                popupType: false,
+                popupText: '您当前仅可订阅1个省,如需增加请购买【省份订阅包】',
+                popupPayBtn: '去购买'
+            },
             created: function () {},
-            methods: function () {}
+            methods: {
+                hiddenTips: function () {
+                    this.popupType = false
+                },
+                toPay: function () {
+                    this.popupType = false
+                    if (userType) {
+                        location.href = '/jyapp/areaPack/page/buy?type=renew'
+                    } else {
+                        location.href = '/jyapp/areaPack/page/buy?type=buy'
+                    }
+                },
+                
+            }
         })
-
+        var maxSelect = 1
+        var thisSelectNum = 0
+        var userType = true // 用户是否购买过省份包
+        var vSwitch = 'f' // 用户版本,'f'免费版,m大会员,v超级订阅
+        // 获取用户权限
+        function getUserMsg() {
+            $.ajax({
+                url: '/bigmember/use/isAdd',
+                type: 'POST',
+                success: function (res) {
+                    if (res.data.vipStatus <= 0) {
+                        vSwitch = 'f'
+                        $('#thisAreaTips').show()
+                    } else {
+                        vSwitch = 'v'
+                        $('#thisAreaTips').hide()
+                    }
+                }
+            })
+        }
+        getUserMsg()
+        // 获取用户购买省份包信息
+        function getUserSubscribe() {
+            $.ajax({
+                url: '/publicapply/free/subscribe',
+                type: 'POST',
+                success: function (res) {
+                    userType = res.data.provincenum === 0 ? false : true
+                    maxSelect = res.data.areanum !== -1 ? res.data.areanum + res.data.provincenum : res.data.areanum
+                    // _this.$emit('UserSubscribe',res)
+                    if (maxSelect === -1) {
+                        $('#canSelect').text(`全国`)
+                    } else {
+                        $('#canSelect').text(`${maxSelect}个省`)
+                    }
+                    
+                }
+            })
+        }
+        getUserSubscribe()
+        function userUpdate(obj) {
+            let _this = this
+            console.info(obj)
+            $.ajax({
+                url: '/publicapply/subscribe/update',
+                type: 'POST',
+                data: {
+                    vSwitch: vSwitch,
+                    area:obj
+                },
+                success: function (res) {
+                    console.info(res)             
+                }
+            })
+        }
+        $('#thisSelect').text(`${thisSelectNum}个省`)
+        $('#canSelect').text(`${maxSelect}个省`)
         // 以下均为示例:具体使用时候请删除
         // 定义重置方法:方法名必须为onReset/onConfirm
         // 参数,是被初始化的数据
-        function onReset (initData) {}
+        function onReset (initData) {
+            $('.selectChange').text('')
+            $('#thisSelect').text(`${thisSelectNum}个省`)
+            $('.moreTips').hide()
+        }
         // 被选中的数据
-        function onConfirm (selectedData) {}
+        function onConfirm (selectedData) {
+            var selectDataList = []
+            for (const key in selectedData) {
+                selectDataList.push(key)
+            }
+            if (selectDataList.length > maxSelect && maxSelect !== -1 && vSwitch === 'f') {
+                vm.popupType = true
+                if (!userType) {
+                    $('#tips-text').text('您当前仅可订阅1个省,如需增加请购买【省份订阅包】')
+                    $('#btn-text').text('去购买')
+                } else {
+                    $('#tips-text').text('已超出您可订阅的省份数量,是否升级【省份订阅包】')
+                    $('#btn-text').text('去升级')
+                }
+            } else {
+                var areaData = {}
+                selectDataList.forEach(function (item, index) {
+                    console.info(index, item)
+                    areaData[item] = []
+                })
+                areaData = JSON.stringify(areaData)
+                userUpdate(areaData)
+            }
+            window.history.back()
+        }
         // 页面选中状态改变时触发
         function onChange (selectedData) {
-            console.log(selectedData)
+            var selectDataList = []
+            for (const key in selectedData) {
+                selectDataList.push(key)
+            }
+            var arr = selectDataList.join('、')
+            $('.selectChange').text(`${arr}`)
+            thisSelectNum = selectDataList.length
+            $('#thisSelect').text(`${selectDataList.length}个省`)
+            if (thisSelectNum > maxSelect) {
+                $('.moreTips').show()
+            } else {
+                $('.moreTips').hide()
+            }
         }
     </script>
 </body>

+ 141 - 0
src/web/templates/big-member/wx/page_free_high_set.html

@@ -0,0 +1,141 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+<head>
+  <!--引入公共资源头部-->
+  {{include "/big-member/wx/meta.html"}}
+  <title></title>
+  <script src="/big-member/js/rem.js"></script>
+  <!--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 />
+  <!--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='{{Msg "seo" "cdn"}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/big-member/css/high_set.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/big-member/css/pop_group.css?v={{Msg "seo" "version"}}' />
+  <!--E-当前页面的css资源-->
+  <style>
+    /* 修复微信ios滚动不到最底部的问题,可在微信开发者工具ios下复现 */
+    .fix-ios-scroll {
+      height: unset;
+    }
+    .fix-ios-scroll > .j-main {
+      display: flex;
+      flex-direction: column;
+    }
+    .fix-ios-scroll > .j-main .area-list,
+    .fix-ios-scroll > .j-main .unitTab {
+      height: unset;
+      flex: 1;
+      overflow: auto;
+    }
+  </style>
+</head>
+
+<body>
+  <div class="j-container">
+    <div class="j-main" id="high-set" v-cloak>
+      <div class="j-container">
+        <div class="j-main">
+          <div class="key-container">
+            <p class="key-title">关键词</p>
+            <van-field
+              v-model="conf.keywords"
+              rows="2"
+              autosize
+              type="textarea"
+              maxlength="50"
+              placeholder="多个关键词,用空格隔开"
+              @input="onKeywords"
+              show-word-limit
+            ></van-field>
+            <div class="match-container" v-show="hasSpace">
+              <p class="match-title">分析方式</p>
+              <div class="match-content">
+                <div class="match-item" :class="conf.match == 1 ? 'active' : ''" @click="checkMatch(1)">
+                  <div class="match-value">模糊匹配</div>
+                  <div class="match-label">包含其中1个关键词即可</div>
+                </div>
+                <div class="match-item" :class="conf.match == 0 ? 'active' : ''" @click="checkMatch(0)">
+                  <div class="match-value">精准分析</div>
+                  <div class="match-label">同时包含所有关键词</div>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="data-container">
+            <van-cell title="项目搜索范围" is-link :value="conf.scope" @click="popClick('scope')"></van-cell>
+            <van-cell title="项目地区" is-link :value="conf.area" @click="popClick('area')"></van-cell>
+            <van-cell title="行业" is-link :value="conf.industry" @click="popClick('industry')"></van-cell>
+          </div>
+          <div class="years-container">
+            <span class="year-label">分析年份</span>
+            <van-field class="year-input" :class="conf.start ? 'border-active' : ''" v-model="conf.start" readonly @click="popClick('start')"></van-field>
+            <em style="color: #ccc;">—</em>
+            <van-field class="year-input"  :class="conf.end ? 'border-active' : ''" v-model="conf.end" readonly @click="popClick('end')"></van-field>
+          </div>
+        </div>
+        <div class="j-footer">
+          <div class="j-button-group">
+            <button class="j-button-cancel" @click="onReset">重置</button>
+            <button class="j-button-confirm" :disabled="disabledConfirm" @click="startStatistic">开始分析</button>
+          </div>
+        </div>
+        <van-popup 
+          class="j-popup collection"
+          v-model="popInfo.show" 
+          round position="bottom" 
+          closeable
+          close-icon="clear"
+          get-container="body"
+        >
+          <div class="j-container">
+            <div class="popup-header header-title">${popInfo.title}</div>
+            <div v-show="popInfo.type == 'scope'">
+              <popup-select-component class="j-main fix-ios-scroll" :data-list="matchTypeList" multiple ref="matchTypeSelector" @reset="onCancel" @confirm="onConfirm"></popup-select-component>
+            </div>
+            <div v-show="popInfo.type == 'area'">
+              <area-component class="j-main fix-ios-scroll" :class="{'hide-all': filterInitData.areaArr.length == 2}" ref="projectAreaSelector" :selectarealist="selectAreaList" @cancel="onCancel" @confirm="onConfirm"></area-component>
+            </div>
+            <div v-show="popInfo.type == 'industry'">
+              <industry-component class="j-main fix-ios-scroll" ref="industryCom" :selectindustrylist="selectIndustryList" onlyshowsome= "true" @cancel="onCancel" @confirm="onConfirm"></industry-component>
+            </div>
+            <div v-show="popInfo.type == 'start'">
+              <years-component ref="yearsItem" type="start" :cur-year="conf.start" :years="startRange" @cancel="onCancel" @confirm="onConfirm"></years-component>
+            </div>
+            <div v-show="popInfo.type == 'end'">
+              <years-component ref="yearsItem" type="end" :cur-year="conf.end" :years="endRange" @cancel="onCancel" @confirm="onConfirm"></years-component>
+            </div>
+          </div>
+        </van-popup>
+      </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 />
+  <!--E-必定需要预加载的资源-->
+
+  <!--S-有可能需要提前预加载的资源-->
+  <!--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='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/popup-select-mobile.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/date-mobile.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/area-mobile.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/industry-mobile.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/years-picker-mobile.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/big-member/js/high_set.js?v={{Msg "seo" "version"}}'></script>
+</body>
+
+</html>

+ 24 - 9
src/web/templates/big-member/wx/page_unit_portrayal.html

@@ -91,6 +91,28 @@
               </div>
               <p class="region">所在地:${statistics.province || '--'} ${statistics.city}</p>
               <p class="buyer-type">采购单位类型:${statistics.buyerClass || '--'}</p>
+          </div>
+          <!-- 采购单位通讯录 -->
+          <div>
+            <div v-if="getStatus" key="txl">
+              <div class="vip_component" 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 data-cl-event="c_wx_free_buttonclick" :status="bigStatus" :power="power" type="item_1" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/01.png'></buyer-example>
+              </div>
+            </div>
+            <hispro-component v-else class="history-list" type="buyer" :buyer="buyer.name" key="txl"></hispro-component>
+          </div>
+          <!-- 高级分析设置 -->
+            <!-- 高级分析 -->
+            <div class="win-analyse">
+              <span class="win-bid-title">采购单位分析</span>
+              <div class="high-link" @click="goHighSet">
+                <span>高级分析设置</span>
+                <van-icon name="arrow"></van-icon>
+              </div>
+            </div>
+            <div class="buyer-statistic">
+              <div class="statistic-title">统计信息</div>
               <div class="buyer-info">
                   <div class="bi-item">
                       <span>采购项目数量</span>
@@ -141,17 +163,10 @@
                   </div>
               </div>
           </div>
-          <div v-if="getStatus">
-            <!-- 历史项目联系人 -->
-            <div class="vip_component" 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 data-cl-event="c_wx_free_buttonclick" :status="bigStatus" :power="power" type="item_1" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/01.png'></buyer-example>
-            </div>
-          </div>
+
           <!-- 数据部分 -->
           <div>
-            <!-- 历史项目联系人 -->
-            <hispro-component class="history-list" type="buyer" :buyer="buyer.name"></hispro-component>
+            
             <!-- 年度项目统计 -->
             <div class="years" v-if="isShow.showYearData">
                 <div class="chart_title">年度项目统计</div>

+ 15 - 6
src/web/templates/frontRouter/wx/collection/sess/ent_portrait.html

@@ -209,7 +209,22 @@
                     <span v-if="isShowUpTip" class="bid_upgrade">升级</span>
                     <span v-if="isMember && (hasOnePower && surplus && isVip)" class="bid_surplus">剩余:${entvisit.total - entvisit.usage}</span>
                 </template>
+                <div class="vip_component" v-if="!showContacts" style="height:11.36rem;background:url('/common-module/collection/image/bg/vip_bg_9.png') no-repeat;background-size:100% 100%">
+                  <vip-component data-cl-event="c_wx_free_buttonclick" @tabactive="tabActive" :power="conf" type="item_9" :entvisit="entvisit" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_9.png'></vip-component>
+                </div>
+                <div class="bg-white tab-card cell-list history-list" v-else>
+                  <hispro-component type="winner" :id="entInfo.id"></hispro-component>
+                </div>
+                <!-- 高级分析 -->
+                <div class="win-analyse">
+                  <span class="win-bid-title">中标分析</span>
+                  <div class="high-link" @click="goHighSet">
+                    <span>高级分析设置</span>
+                    <van-icon name="arrow"></van-icon>
+                  </div>
+                </div>
                 <div class="bg-white tab-card" v-if="conf._4 && !getStatus" data-cl-event="c_wx_open_buttionclick">
+                    <div class="tab-card-title" style="padding: 0.16rem .32rem .12rem;">中标信息统计结果</div>
                     <div class="card-row zb-info">
                         <div class="card-column">
                             <div class="ent-info-label">项目数量</div>
@@ -279,12 +294,6 @@
                     </div>
                 </div>
               </div>
-                <div class="vip_component" v-if="!showContacts" style="height:11.36rem;background:url('/common-module/collection/image/bg/vip_bg_9.png') no-repeat;background-size:100% 100%">
-                    <vip-component data-cl-event="c_wx_free_buttonclick" @tabactive="tabActive" :power="conf" type="item_9" :entvisit="entvisit" :newvip="isVip" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/bg/vip_ex_9.png'></vip-component>
-                </div>
-                <div class="bg-white tab-card cell-list history-list" v-else>
-                  <hispro-component type="winner" :id="entInfo.id"></hispro-component>
-                </div>
                 <div class="bg-white tab-card charts" v-if="conf._4 && annualData.rows.length !== 0  && !getStatus">
                     <div class="tab-card-title">年度项目统计</div>
                     <!-- e-charts和sticky同时使用时候,需要手动降低css层级(z-index: 1),确保tooltip不遮挡固定定位头部 -->

+ 70 - 1
src/web/templates/pc/proproject.html

@@ -16,6 +16,8 @@
 <script language="javascript" type="text/javascript" src="{{Msg "seo" "cdn"}}/My97DatePicker/WdatePicker.js"></script>
 <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" />
 <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
+<link href="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/theme-chalk/index.css" rel="stylesheet" />
+<link href='{{Msg "seo" "cdn"}}/css/ele-reset.css?v={{Msg "seo" "version"}}' rel="stylesheet">
 <style type="text/css">
 /*j-wx-code Start*/
 .j-wx-code{
@@ -557,10 +559,25 @@ $(function(){
 				<span>1</span>
 				<a class="nbnext">下一页<i>></i></a>
 			</div>
-		</div>
+    </div>
+    <!-- element-ui分页 -->
+    <div class="el-pagination-container" v-show="showPage" style="width: 1200px;margin: 0 auto;display: none;">
+      <el-pagination
+        background
+        layout="prev, pager, next"
+        :page-size="listState.size"
+        :current-page="listState.num"
+        :page-count="listState.total"
+        :hide-on-single-page="true"
+        @current-change="onPageChange"
+      >
+      </el-pagination>
+    </div>
 	</div>
 	<!--招标搜索页面 END-->
 </section>
+<script src="https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js"></script>
+<script src="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/index.js"></script>
 {{include "/common/pcbottom.html"}}
 {{include "/common/baiducc.html"}}
 <script type="text/javascript">
@@ -603,5 +620,57 @@ document.querySelector(".searchControl").oncopy = function(){
     return false;
 }
 </script>
+<script>
+  // vue 用于element ui 分页
+  var searchInnerVue = new Vue({
+    el: '#searchInner',
+    delimiters: ['${', '}'],
+    components: {},
+    data () {
+      return {
+        showPage: false,
+        listState: {
+          size: pageSize,
+          num: currentPage,
+          total: totalPage
+        }
+      }
+    },
+    watch: {
+      'listState.num' (newVal) {
+        // console.log(newVal, '分页')
+      },
+      'listState.total' (newVal) {
+        console.log(newVal, '总页码')
+      }
+    },
+    mounted () {
+      console.log('总页码:' + totalPage + ',当前页:' + currentPage + ',一页数量:' + pageSize)
+    },
+    methods: {
+      onPageChange (p) {
+        currentPage = p
+        this.listState.num = p
+        // if($("#zbSeatchT [name='keywords']").val()==""&&$("#zbSeatchT [name='industry']").val()==""){
+        //   getNewBids(currentPage);
+        // }else{
+        //   // getNewBiddings()
+        //   if(!$("#right-table").hasClass("active")){
+        //     if(secondFlag=="T"){
+        //       $(".tabContainer").show();
+        //       $(".hasNoData").hide();
+        //       //$(".nbnext").addClass("disabled");
+        //       appendDatas(list,true,false);
+        //     }else if(!nbflag&&currentPage>0){
+        //       getNewBiddings();
+        //     }else{
+        //       searchOnsubmit(true);
+        //     }
+        //   }
+        // }
+      }
+    },
+  })
+</script>
 </body>
 </html>

+ 41 - 7
src/web/templates/pc/supsearch.html

@@ -239,6 +239,16 @@
 #searchInner .pagination{
 	margin-bottom:40px !important;
 }
+.el-pagination button, .el-pagination span:not([class*=suffix]),.el-pager li{
+  height: 36px;
+  line-height: 36px;
+}
+.el-pager li{
+  min-width: 36px!important;
+}
+.el-pagination-container .el-pagination{
+  top: 0;
+}
 </style>
 <script src='{{Msg "seo" "cdn"}}/common-module/selector/js/buyerClass.js?v={{Msg "seo" "version"}}'></script>
 <script>
@@ -329,6 +339,7 @@ var industrylist = {{.T.industrylist}}!=null?{{.T.industrylist}}:"";
 var sortArray = {{.T.sortArray}}!=null?{{.T.sortArray}}:"";
 var list = {{.T.list}}!=null?{{.T.list}}:"";
 var totalPage = {{.T.totalPage}}!=null?{{.T.totalPage}}:1;
+var totalCount = {{.T.count}}
 var searchvalue = {{.T.searchvalue}}!=null?{{.T.searchvalue}}:"";
 var secondFlag = {{.T.secondFlag}}!=null?{{.T.secondFlag}}:"";
 var secondList = ""
@@ -1432,21 +1443,22 @@ var IframeOnClick = {
       </div>
 		</div>
 		<!--分页-->
-		<div class="pagination clearfix w" style="display: none;">
+		<!-- <div class="pagination clearfix w" style="display: none;">
 			<div class="pagination-inner fr">
 				<a href="javascript:;" class="nbprev disabled"><i><</i>上一页</a>
 				<span>1</span>
 				<a class="nbnext">下一页<i>></i></a>
 			</div>
-    </div>
+    </div> -->
     <!-- ${listState.total} ${listState.num} -->
-    <div class="el-pagination-container" style="right:32px;display: none;">
+    <div class="el-pagination-container" v-show="showPage" style="width: 1200px;margin: 0 auto;">
       <el-pagination
         background
         layout="prev, pager, next"
         :page-size="listState.size"
         :current-page="listState.num"
-        :total="listState.total"
+        :page-count="listState.total"
+        :hide-on-single-page="true"
         @current-change="onPageChange"
       >
       </el-pagination>
@@ -2115,13 +2127,14 @@ document.querySelector(".searchControl").onselectstart = function(){
 document.querySelector(".searchControl").oncopy = function(){
     return false;
 }
-
+  // vue 用于element ui 分页
   var searchInnerVue = new Vue({
     el: '#searchInner',
     delimiters: ['${', '}'],
     components: {},
     data () {
       return {
+        showPage: true,
         listState: {
           size: pageSize,
           num: currentPage,
@@ -2131,15 +2144,36 @@ document.querySelector(".searchControl").oncopy = function(){
     },
     watch: {
       'listState.num' (newVal) {
-        console.log(newVal, '分页')
+        // console.log(newVal, '分页')
+      },
+      'listState.total' (newVal) {
+        console.log(newVal, '总页码')
       }
     },
     mounted () {
-      console.log('总页码:' + totalPage + ',当前页:' + currentPage + ',一页数量:' + pageSize)
+      console.log('总页码:' + totalPage + ',当前页:' + currentPage + ',一页数量:' + pageSize + ',总条数:' + totalCount)
     },
     methods: {
       onPageChange (p) {
+        currentPage = p
         this.listState.num = p
+        if($("#zbSeatchT [name='keywords']").val()==""&&$("#zbSeatchT [name='industry']").val()==""){
+          getNewBids(currentPage);
+        }else{
+          // getNewBiddings()
+          if(!$("#right-table").hasClass("active")){
+            if(secondFlag=="T"){
+              $(".tabContainer").show();
+              $(".hasNoData").hide();
+              //$(".nbnext").addClass("disabled");
+              appendDatas(list,true,false);
+            }else if(!nbflag&&currentPage>0){
+              getNewBiddings();
+            }else{
+              searchOnsubmit(true);
+            }
+          }
+        }
       }
     },
   })

+ 20 - 6
src/web/templates/weixin/vipsubscribe/vip_index_new.html

@@ -80,6 +80,7 @@
     .j-button-confirm:nth-child(1){
       margin-right: .16rem;
     }
+    
     </style>
 </head>
 
@@ -116,7 +117,8 @@
                 <i class="iconfont icon-arrow"></i>
             </div>
           </a>
-          <ul class="sub-info">
+          <ul class="sub-info"  @click="toPaySupSub"
+          :class="vSwitch !== 'v' ? 'go_to_levelup' : ''">
             <!-- <li class="area">
               <a class="item-container" href="/front/vipsubscribe/toChangeArea?header=save">
                   <div class="item">
@@ -161,7 +163,7 @@
                     </div>
                 </a>
             </li> -->
-            <li class="cycle" data-bind-renew data-cl-event="c_wx_buy_buttonclick">
+            <li class="cycle" data-bind-renew data-cl-event="c_wx_buy_buttonclick" v-show="vSwitch === 'v'">
                 <a class="item-container" href="/front/vipsubscribe/vipsubscribe_renew">
                     <div class="item">
                       <span class="item-l">
@@ -176,7 +178,6 @@
                       <span class="buy-cycle text ellipsis">0</span>
                     </div>
                     <div class="sub-item">
-                        <!-- 此处空span占位 -->
                         <span class="sub-l"></span>
                         <span class="sub-r">
                           <span class=""></span>
@@ -186,7 +187,20 @@
             </li>
           </ul>
         </li>
-        <sub-component :linkobj="linkObj" :initdata="initData" @mounted="superOrderTemplateMounted"></sub-component>
+        <sub-component :linkobj="linkObj" :initdata="initData" @mounted="superOrderTemplateMounted" :v-switch="vSwitch"></sub-component>
+        <div class="provincePayWarp" v-show="userType">
+            <span class="provincePayTips">省份订阅包</span>
+            <div class="provincePay">
+              <div class="provincePay-text">订阅周期:${subscribeTime}</div>
+              <div class="provincePay-text provincePay-numText">
+                省份数量:<span class="provincePay-num">&nbsp;<span v-html="userAreaAllNum"></span>&nbsp;</span>个
+              </div>
+              <div class="provincePay-btnWrap">
+                <div class="privincePay-btn" @click="renewBtn">续费</div>
+                <div class="privincePay-btn updateColor" @click="updateBtn">升级</div>
+              </div>
+            </div>
+        </div>
         <!-- <li class="body-item keywords">
             <a class="item-container" href="/front/vipsubscribe/toSetKeyWordPage">
                 <div class="item">
@@ -399,7 +413,7 @@
     </div> -->
 </div>
 <!-- 匹配方式 -->
-<div class="match-keywords-actionsheet">
+<!-- <div class="match-keywords-actionsheet">
   <div class="weui-mask" id="iosMask" style="opacity: 1;display: none;"></div>
   <div class="weui-actionsheet" id="iosActionsheet">
       <div class="weui-actionsheet__title">
@@ -416,7 +430,7 @@
           </div>
       </div>
   </div>
-</div>
+</div> -->
         <!-- 优惠明细 -->
         <div class="j-picker adaption discount-details" style="display:none;">
             <div class="weui-mask"></div>

+ 71 - 0
src/web/templates/weixin/wxkeyset/index.html

@@ -23,6 +23,66 @@
     <script>
         initShare({{.T.signature }}, {{.T.openid }}, 2, "jy_extend", {{.T.nickname }}, {{.T.avatar }});
     </script>
+    <style>
+        .oldUserTips{
+            position: fixed;
+            top: 0;
+            left: 0;
+            right: 0;
+            bottom: 0;
+            z-index: 99999;
+            background-color:rgba(0, 0, 0, 0.7);
+        }
+        .updateTips-wrap{
+            width: 6.06rem;
+            height: 3.4rem;
+            background: #FFFFFF;
+            border-radius: 0.16rem 0.16rem 0.16rem 0.16rem;
+            position: absolute;
+            top: 50%;
+            left: 50%;
+            transform: translateX(-50%) translateY(-50%);
+        }
+        .updateTips-title{
+            text-align: center;
+            padding-top: 0.48rem;
+            font-size: 0.36rem;
+            font-weight: 500;
+            color: #161826;
+        }
+        .updateTips-text{
+            text-align: center;
+            padding: 0.16rem 0.6rem 0;
+            font-size: 0.3rem;
+            font-weight: 500;
+            color: #5E5E64;
+        }
+        .updateTips-btnWrap{
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            margin-top: 0.32rem;
+            border-top:0.02rem solid rgba(0, 0, 0, 0.1) ;
+        }
+        .updateTips-btn{
+            font-size: 0.36rem;
+            font-weight: 500;
+            color: #161826;
+            width: 50%;
+            height: 0.92rem;
+            line-height: 0.92rem;
+            text-align: center;
+            cursor: pointer;
+        }
+        .updateTips-line{
+            height: 0.92rem;
+            width: 0.02rem;
+            background-color: rgba(0, 0, 0, 0.1);
+        }
+        .levelUp{
+            color: #2ABDD1;
+        }
+    </style>
 </head>
 
 <body>
@@ -90,6 +150,17 @@
                 <a class="remind-right" href="/front/vipsubscribe/introducePage" id="app-keyset-footer-banner">了解详情</a>
             </div>
         </div>
+        <div class="oldUserTips" v-show="tipsType">
+            <div class="updateTips-wrap">
+                <div class="updateTips-title">版本更新</div>
+                <div class="updateTips-text">免费订阅新版来了,请前往订阅设置更新功能后使用。</div>
+                <div class="updateTips-btnWrap">
+                    <div class="updateTips-btn" id="cancel" @click="hiddenTips">取消</div>
+                    <div class="updateTips-line"></div>
+                    <div class="updateTips-btn levelUp" id="newLevelUp"  @click="updateJump">立即升级</div>
+                </div>
+            </div>
+        </div>
     </div>
     <script>
         // 双11活动文案修改