Parcourir la source

Merge branch 'release' into dev3.9.5

lianbingjie il y a 4 ans
Parent
commit
2db1c1119f
38 fichiers modifiés avec 1076 ajouts et 747 suppressions
  1. 12 0
      src/jfw/modules/app/src/app/front/login.go
  2. 8 1
      src/jfw/modules/app/src/app/front/vipsubscribe.go
  3. 15 3
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js
  4. 96 82
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/set_cate.js
  5. 424 375
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js
  6. 1 0
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/change_industry.js
  7. 2 2
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/vip_renew.js
  8. 4 5
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/vip_upgrade.js
  9. 10 8
      src/jfw/modules/app/src/web/templates/commonPay/myOrder.html
  10. 1 0
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_index_new.html
  11. 1 1
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  12. 24 8
      src/jfw/modules/bigmember/src/entity/portrait.go
  13. 84 61
      src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go
  14. 28 1
      src/jfw/modules/bigmember/src/entity/portrait_manager.go
  15. 1 0
      src/jfw/modules/bigmember/src/service/analysis/analysis.go
  16. 25 20
      src/jfw/modules/bigmember/src/service/analysis/forecastproject.go
  17. 2 2
      src/jfw/modules/bigmember/src/service/analysis/forecastwinner.go
  18. 28 4
      src/jfw/modules/bigmember/src/service/portrait/entPortraitAction.go
  19. 23 1
      src/jfw/modules/bigmember/src/service/portrait/portraitActionNew.go
  20. 0 5
      src/jfw/modules/common/src/qfw/util/jy/bigVipPower.go
  21. 1 1
      src/web/staticres/common-module/coupon/js/pay-order-template.js
  22. 2 2
      src/web/staticres/css/pc.css
  23. BIN
      src/web/staticres/images/pc/public-close-grey.png
  24. BIN
      src/web/staticres/images/pc/public-close-light.png
  25. BIN
      src/web/staticres/images/pc/public-close-white.png.png
  26. 61 20
      src/web/staticres/js/index_content.js
  27. 10 2
      src/web/staticres/js/login.js
  28. 66 14
      src/web/staticres/pccss/index.css
  29. 6 7
      src/web/staticres/pccss/public-nav-1200.css
  30. 1 0
      src/web/staticres/vipsubscribe/js/change_industry.js
  31. 2 2
      src/web/staticres/vipsubscribe/js/vip_renew.js
  32. 2 2
      src/web/staticres/vipsubscribe/js/vip_upgrade.js
  33. 12 2
      src/web/templates/big-member/pc/page_index.html
  34. 14 19
      src/web/templates/common/pcbottom.html
  35. 32 20
      src/web/templates/common/pchead.html
  36. 9 9
      src/web/templates/pc/biddetail_bd.html
  37. 9 9
      src/web/templates/pc/biddetail_rec.html
  38. 60 59
      src/web/templates/pc/index.html

+ 12 - 0
src/jfw/modules/app/src/app/front/login.go

@@ -166,6 +166,18 @@ func (l *Login) Login() error {
 			if phone == "" || l.GetSession("identCodeValue") == nil || l.GetString("identCode") != l.GetSession("identCodeValue") { //验证码不正确
 				return -1
 			} else {
+				RegLock.Lock()
+				reg := RegMap[phone]
+				if reg == nil {
+					reg = &RegStruct{}
+					reg.Lock = sync.Mutex{}
+					reg.MapR = make(map[string]int64)
+					reg.MapR[phone] = time.Now().Unix()
+					RegMap[phone] = reg
+				}
+				RegLock.Unlock()
+				reg.Lock.Lock()
+				defer reg.Lock.Unlock()
 				ok, user := getPhoneUser(phone)
 				//登录成功
 				if !ok {

+ 8 - 1
src/jfw/modules/app/src/app/front/vipsubscribe.go

@@ -45,13 +45,20 @@ type Subscribepay struct {
 	msgremind xweb.Mapper `xweb:"/jyapp/vipsubscribe/msgremind"`
 
 	//超级订阅企业搜索
-	entSearch xweb.Mapper `xweb:"/jyapp/vipsubscribe/entSearch"` //企业搜索
+	entSearch   xweb.Mapper `xweb:"/jyapp/vipsubscribe/entSearch"`   //企业搜索
+	entPortrait xweb.Mapper `xweb:"/jyapp/vipsubscribe/entPortrait"` //超级订阅企业画像
 }
 
 func init() {
 	xweb.AddAction(&Subscribepay{})
 }
 
+//超级订阅企业画像
+func (s *Subscribepay) EntPortrait() {
+	s.Render("/vipsubscribe/vip_entPortrait.html")
+}
+
+//企业搜索
 func (s *Subscribepay) EntSearch() {
 	s.Render("/vipsubscribe/vip_entSearch.html")
 }

+ 15 - 3
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js

@@ -170,10 +170,16 @@ var vNode = {
             var data = {
                 entId: _this.entInfo.id
             }
+            let urls = ''
+            if (_this.svip) {
+                urls = '/bigmember/portrait/subVipPortrait/winner'
+            } else {
+                urls = '/bigmember/portrait/winner/getData'
+            }
             _this.getEntPortraitInfoTimes++
             $.ajax({
                 type: 'POST',
-                url: '/bigmember/portrait/winner/getData',
+                url: urls,
                 data: data,
                 success: function (res) {
                     if (res.error_code == 0) {
@@ -197,7 +203,7 @@ var vNode = {
                                 _this.initChartsData()
                             }
                         } else {
-                            if (_this.getEntPortraitInfoTimes < 3) {
+                            if (_this.getEntPortraitInfoTimes < 5) {
                                 _this.getEntPortrait()
                             }
                         }
@@ -264,9 +270,15 @@ var vNode = {
         // 查询企业基础信息
         getEntBaseInfo: function () {
             var _this = this
+            let urls = ''
+            if (_this.svip) {
+                urls = '/bigmember/portrait/subVipPortrait/entDetail'
+            } else {
+                urls = '/bigmember/portrait/ent/detail'
+            }
             $.ajax({
                 type: 'POST',
-                url: '/bigmember/portrait/ent/detail',
+                url: urls,
                 data: {
                     entId: _this.entInfo.id
                 },

+ 96 - 82
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/set_cate.js

@@ -50,6 +50,18 @@ var vNode = {
             {name:'城管',names:'市政'},
             {name:'人行',names:'金融业'},
         ],
+        needPopverTipMap: [
+            ['教育', '学校'],
+            ['卫健委', '医疗'],
+            ['交通', '运输物流'],
+            ['工信', '信息技术', '电信行业'],
+            ['农业', '农林牧渔'],
+            ['住建', '建筑业'],
+            ['城管', '市政'],
+            ['人行', '金融业']
+        ],
+        nowSelectIndex: -1,
+        allNeedTipIndexMap: {},
         commond_industry: [],
     },
     computed: {
@@ -61,6 +73,12 @@ var vNode = {
     created: function () {
         this.initCateMap()
         this.setCateState(this.initCate)
+        let _this = this
+        _this.needPopverTipMap.map(function (v, index) {
+            v.map(function (s) {
+                _this.allNeedTipIndexMap[s] = index
+            })
+        })
     },
     //销毁事件
     destroyed() {
@@ -73,7 +91,7 @@ var vNode = {
     methods: {
         // 监听页面滚动事件
         handleScroll(e){
-            this.popupShow = false
+            this.showNeedPopver(false)
         },
         // 整理数据列表
         initCateMap: function () {
@@ -102,76 +120,70 @@ var vNode = {
                 this.$set(this.cateListMap, k, cateListMap[k])
             }
         },
-        // 按钮点击事件
-        changeCateState: function (e,item) {
-          var _this = this
-
-          function showComPop (show) {
-            console.log(item.selected, '111')
-              if (item.selected) {
-                _this.popupShow = false
-                return
-              }
-              _this.popupShow = true
-              var tempW = $(".add_alert").show().offset().width / 2
-              var tempH = $(".add_alert").offset().height
-              var a = $(e.target).offset()
-              var xx = a.left
-              var yy = a.top + a.height + 8
-              var cW = $(e.target).width() / 2
-              var tW = tempW
-              // 小三角位置
-              $('.triangle').css('left', 8)
-              // 监听按钮点击位置
-              if (xx >= document.body.offsetWidth / 3) {
-                xx = xx - tW
-                $('.triangle').css('left',xx + tW - cW +'px')
-              }
-              // 如果高度大于620,弹窗在上边显示
-              if(e.clientY >= (document.body.offsetHeight / 2)) {
-                yy = a.top - tempH - 8
-                $('.triangle').css('bottom',-14)
-                $('.triangle').css('top','inherit')
-                $('.triangle').css('transform','rotate(0)')
-              }else{
-                yy = a.top + a.height + 8
-                $('.add_alert').removeClass('negative')
-                $('.triangle').css('top',-14)
-                $('.triangle').css('bottom','inherit')
-                $('.triangle').css('transform','rotate(180deg)')
-              }
-              $('.add_alert').css('top',yy)
-              $('.add_alert').css('left',xx)
+        // 获取提示文字
+        getNeedPopverTip (str) {
+            str = str.trim()
+            var findIndex = this.allNeedTipIndexMap[str]
+            if (typeof findIndex === 'number') {
+            this.nowSelectIndex = findIndex
+            var outTip = this.needPopverTipMap[findIndex].filter(function (v) {
+                return v !== str
+            })
+            return '根据您的选择,推荐添加【'+ outTip.join(',') +'】'
+            } else {
+                this.nowSelectIndex = -1
+            return ''
             }
-
-            var addArr;
-            _this.popupShow = false
-            _this.industryObj.forEach(function(sum){
-                if(item.name == sum.name){
-                    if(sum.typename != undefined) {
-                        _this.add_option = '根据您的选择,推荐添加【'+sum.names+','+sum.typename+'】'
-                        addArr = [sum.names,sum.typename]
-                    }else{
-                        _this.add_option = '根据您的选择,推荐添加【'+sum.names+'】'
-                        addArr = [sum.names]
+        },
+        // 控制提示框
+        showNeedPopver (show, item, e) {
+            if (show) {
+                var nowStr = this.getNeedPopverTip(item.name)
+                if (nowStr !== '') {
+                    var tipDom = $('.add_alert')
+                    tipDom.show().attr('data-index', this.allNeedTipIndexMap[item.name])
+                    tipDom.find('.add_option').text(nowStr)
+                    // 计算及调整显示位置
+                    var computeCoordinateForPop = {
+                        w: tipDom[0].offsetWidth,
+                        h: tipDom[0].offsetHeight
                     }
-                    showComPop(true)
-                }else if(item.name == sum.names){
-                    if(sum.typename != undefined) {
-                        _this.add_option = '根据您的选择,推荐添加【'+sum.name+','+sum.typename+'】'
-                        addArr = [sum.name,sum.typename]
-                    }else{
-                        _this.add_option = '根据您的选择,推荐添加【'+sum.name+'】'
-                        addArr = [sum.name]
+                    var nowSelectDom = $(e.currentTarget)
+                    var computeCoordinateForNow = {
+                        w: nowSelectDom[0].offsetWidth,
+                        h: nowSelectDom[0].offsetHeight,
+                        t: nowSelectDom.offset().top,
+                        l: nowSelectDom.offset().left
                     }
-                    showComPop(true)
-                }else if(item.name == sum.typename){
-                    _this.add_option = '根据您的选择,推荐添加【'+sum.name+','+sum.names+'】'
-                    addArr = [sum.name,sum.names]
-                    showComPop(true)
+
+                    var isTop = e.clientY <= (document.documentElement.clientHeight / 2)
+                    var isLeft = e.clientX <= (document.documentElement.clientWidth / 2)
+                    var cententValue = (document.body.offsetWidth - computeCoordinateForPop.w) / 2
+
+                    tipDom.css({
+                        top: isTop ? (computeCoordinateForNow.t + computeCoordinateForNow.h + 8) : (computeCoordinateForNow.t - computeCoordinateForPop.h - 8),
+                        left: isLeft ? computeCoordinateForNow.l : cententValue
+                    })
+
+                    var arrowDom = tipDom.find('.triangle')
+                    arrowDom.css({
+                        top: isTop ? '-14px' : 'initial',
+                        bottom: !isTop ? '-14px' : 'initial',
+                        transform: isTop ? 'rotate(180deg)' : 'rotate(0)',
+                        left: isLeft ? (computeCoordinateForNow.l + 'px') : (computeCoordinateForNow.l - computeCoordinateForNow.w / 2) + 'px'
+                    })
+
+                } else {
+                    return this.showNeedPopver(false)
                 }
-                _this.commond_industry = addArr
-            })
+            } else {
+                $('.add_alert').hide()
+            }
+        },
+        // 按钮点击事件
+        changeCateState: function (e,item) {
+          var _this = this
+            _this.showNeedPopver(true, item, e)
             // 循环所有数据,判断并改变状态
             switch (item.level) {
                 case 0: {
@@ -180,7 +192,7 @@ var vNode = {
                 }
                 case 1: {
                     if(item.selected){
-                        _this.popupShow = false
+                        _this.showNeedPopver(false)
                     }
                     this.cateListMap['#'][0].selected = false
 
@@ -201,23 +213,24 @@ var vNode = {
         },
         // 弹窗取消事件
         setCancel: function () {
-            this.popupShow = false
+            this.showNeedPopver(false)
         },
         // 弹窗确定事件
         setConfirm: function () {
-            for(var itemcate in this.cateListMap) {
-                for(var i=0;i<this.cateListMap[itemcate].length;i++ ) {
-                    var datas = this.cateListMap[itemcate][i]
-                    this.commond_industry.forEach(function(pro){
-                        if(datas.level !== 0) {
-                            if(pro == datas.name) {
-                                datas.selected = true
-                            }
-                        }
-                    })
-                }
-            }
-            this.popupShow = false
+            this.showNeedPopver(false)
+            let buttons = $('.cate-item-container .cate-items button')
+            let _this = this
+            this.needPopverTipMap[this.nowSelectIndex].map(function (v) {
+              for (var key in _this.cateListMap) {
+                // 跳过全部进行查找
+                if (key === '#') continue
+                _this.cateListMap[key].forEach(function (item) {
+                  if (item.name === v) {
+                    item.selected = true
+                  }
+                })
+              }
+            })
             $('.add_toast').show()
             setTimeout(() => {
                 $('.add_toast').hide()
@@ -299,6 +312,7 @@ var vNode = {
             })
         },
         onReset: function () {
+            this.showNeedPopver(false)
             this.setCateState(this.initCate)
             try {
                 onReset && onReset(this.initCate)

+ 424 - 375
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js

@@ -40,18 +40,18 @@ var vNode = {
             },
             // hotChart: null,
             isShow:{
-                showDynamic: true,
-                showYearData: true,
-                showMonthScale: true,
-                showScaleFb:true,
-                showBidType: true,
-                showSaveRate: true,
-                showScaleRate: true,
-                showClient: true,
-                showCapital: true,
-                showAge:true,
-                showArea:true,
-                showAgency: true
+                showDynamic: false,
+                showYearData: false,
+                showMonthScale: false,
+                showScaleFb:false,
+                showBidType: false,
+                showSaveRate: false,
+                showScaleRate: false,
+                showClient: false,
+                showCapital: false,
+                showAge:false,
+                showArea:false,
+                showAgency: false
             },
             // 中标动态
             dt:{
@@ -138,7 +138,7 @@ var vNode = {
         },
         computedClientList: function (){
             return this.clientList.map(function (v) {
-                 v.topData = v.topData.filter(function(s) {
+                v.topData = v.topData.filter(function(s) {
                     return s.winnerName && s.winnerName.trim().length
                 })
                 return v
@@ -204,400 +204,460 @@ var vNode = {
         },
         // 获取中标动态数据
         getNewMsg: function(){
-            var that = this;
-            var data = {
-                buyer: decodeURIComponent(utils.getParam('entName')),
-                count: that.dt.pageCount,
-                pageSign: that.dt.isMore
-            }
-            $.ajax({
-                type:'POST',
-                url:'/bigmember/portrait/buyer/getNewMsg',
-                data:data,
-                success:function(res) {
-                    if(res.error_code == 0) {
-                        if (res.data.list && res.data.list.length && res.data.list.length > 0) {
-                            that.dt.pageCount = res.data.count
-                            if (res.data.list && $.isArray(res.data.list)) {
-                                res.data.list.forEach(function(v,i){
-                                    v.firsttime = new Date(Number(v.firsttime + '000')).pattern('yyyy/MM/dd');
-                                    v.bidamount = v.bidamount ? utils.moneyUnit(v.bidamount) : ''
-                                })
-                                if (!that.dt.isMore) {
-                                    that.dt.list = []
-                                    that.dt.isMore = 'more'
-                                    if(res.data.count <= 3) {
-                                        that.dt.isNext = false
-                                    }
-                                } else if (that.dt.isMore === 'more') {
-                                    that.dt.isMore = 'max'
-                                    if(res.data.count <= 23) {
-                                        that.dt.isNext = false
-                                    }
-                                } else if (that.dt.isMore === 'max') {
-                                    that.dt.isNext = false
-                                }
-                                that.dt.list = that.dt.list.concat(res.data.list)
-                            }
-                        } else {
-                            that.isShow.showDynamic = false;
+          var that = this;
+          var data = {
+              buyer: decodeURIComponent(utils.getParam('entName')),
+              count: that.dt.pageCount,
+              pageSign: that.dt.isMore
+          }
+          $.ajax({
+            type:'POST',
+            url:'/bigmember/portrait/buyer/getNewMsg',
+            data:data,
+            success:function(res) {
+              if(res.error_code == 0) {
+                if (res.data.list && res.data.list.length && res.data.list.length > 0) {
+                  that.dt.pageCount = res.data.count
+                  if (res.data.list && $.isArray(res.data.list)) {
+                    that.isShow.showDynamic = true;
+                    res.data.list.forEach(function(v,i){
+                        v.firsttime = new Date(Number(v.firsttime + '000')).pattern('yyyy/MM/dd');
+                        v.bidamount = v.bidamount ? utils.moneyUnit(v.bidamount) : ''
+                    })
+                    if (!that.dt.isMore) {
+                        that.dt.list = []
+                        that.dt.isMore = 'more'
+                        if(res.data.count <= 3) {
+                            that.dt.isNext = false
                         }
-                    } else {
-                        console.log(res.error_code)
+                    } else if (that.dt.isMore === 'more') {
+                        that.dt.isMore = 'max'
+                        if(res.data.count <= 23) {
+                            that.dt.isNext = false
+                        }
+                    } else if (that.dt.isMore === 'max') {
+                        that.dt.isNext = false
                     }
-                },
-                error:function(err) {
-                    console.log(err)
+                    that.dt.list = that.dt.list.concat(res.data.list)
+                  }
                 }
-            })
+              } else {
+                console.log(res.error_code)
+              }
+            },
+            error:function(err) {
+              console.log(err)
+            }
+          })
         },
         // 获取采购单位画像所有数据
         getChartData: function() {
-            var that = this;
-            $.ajax({
-                type:'POST',
-                url:'/bigmember/portrait/buyer/getData',
-                data:{
-                    buyer: decodeURIComponent(utils.getParam('entName'))
-                },
-                success:function(res) {
-                    // console.log(res)
-                    if(res.error_code == 0) {
-                        that.reqCount++;
-                        if(res.data && Object.keys(res.data).length > 0) {
-                            that.chartLoading = false;
-                            // 统计信息
-                            that.statistics.province = res.data.province ? res.data.province.replace(/省|市|自治区|特别行政区|壮族|回族|维吾尔/g, '') : '--';
-                            that.statistics.city = res.data.city;
-                            that.statistics.buyerClass = res.data.buyerclass ? res.data.buyerclass : '--';
-                            that.statistics.start = new Date(Number(res.data.timeRange.start + '000')).pattern('yyyy/MM/dd');
-                            that.statistics.end = new Date(Number(res.data.timeRange.end + '000')).pattern('yyyy/MM/dd');
-                            that.statistics.buyerCount = res.data.project_count ? res.data.project_count + '个' : '--';
-                            that.statistics.winnerCount = res.data.winner_count ? res.data.winner_count + '个' : '--';
-                            that.statistics.otherWinner = res.data.otherProvincesWinnerCount ? res.data.otherProvincesWinnerCount + '个' : '--';
-                            that.statistics.buyerScale = res.data.bidamount_count ? utils.moneyUnit(res.data.bidamount_count) : '--';
-                            that.statistics.fail_count = res.data.fail_count ? res.data.fail_count + '条': '--';
-
-                            // 年度项目统计图表数据
-                            if(res.data.yearData && Object.keys(res.data.yearData).length > 0){
-                                var rows = [];
-                                var data = res.data.yearData;
-                                for (var key in data) {
-                                    rows.push({
-                                        '年份': key,
-                                        '项目数量': data[key].Count,
-                                        '项目金额': (data[key].Money/10000).fixed(0),
-                                    })
-                                }
-                                that.projectData.columns = ['年份', '项目数量', '项目金额'];
-                                that.projectData.rows = rows;
-                            } else {
-                                that.isShow.showYearData = false;
-                            }
-                            // 月度采购规模统计
-                            if(res.data.monthData && Object.keys(res.data.monthData).length > 0) {
-                                that.formatterMonthData(res.data.monthData)
-                            } else {
-                                that.isShow.showMonthScale = false;
-                            }
-
-                            // 采购规模分布
-                            if(res.data.moneyRange && res.data.moneyRange.length > 0) {
-                                // 数据都为0 隐藏
-                                var countArr = res.data.moneyRange.map(function(v){
-                                    return v.project_count;
-                                })
-                                var max = Math.max.apply(null,countArr);
-                                console.log(max,'max')
-                                if(max == 0) {
-                                    that.isShow.showScaleFb = false
-                                }
-                                that.$nextTick(function(){
-                                    that.getHotChartData(res.data.moneyRange);
-                                })
-                            } else {
-                                that.isShow.showScaleFb = false;
-                            }
-
-                            // 各类招标方式占比
-                            if(res.data.bidtypeData && res.data.bidtypeData.length > 0) {
-                                var data = res.data.bidtypeData;
-                                data.forEach(function(item){
-                                    item.money = (item.money / 10000).fixed(2);
-                                    item.moneyShare = (item.moneyShare*100).fixed(2);
-                                    item.numShare  = (item.numShare *100).fixed(2)
-                                    switch (item.type) {
-                                        case '招标':
-                                            item.type = '公开招标'
-                                            break;
-                                        case '邀标':
-                                            item.type = '邀请招标'
-                                            break;
-                                        case '询价':
-                                            item.type = '询价采购'
-                                            break;
-                                        case '单一':
-                                            item.type = '单一来源采购'
-                                            break;
-                                        case '竞价':
-                                            item.type = '竞价采购'
-                                            break;
-                                        case '竞谈':
-                                            item.type = '竞争性谈判'
-                                            break;
-                                    }
-                                })
-                                that.doubleBar.list = res.data.bidtypeData;
-                                that.formatterBarChart();
-                            } else {
-                                that.isShow.showBidType = false;
-                            }
-                            // 各行业项目平均节支率
-                            if(res.data.rate && Object.keys(res.data.rate).length > 0) {
-                                that.formatterSaveRateData(res.data.rate)
-                            } else {
-                                that.isShow.showSaveRate = false
-                            }
-                            // 各行业项目规模占比
-                            if (res.data.top12 && res.data.top12.length > 0) {
-                                that.$nextTick(function(){
-                                    that.getPieCharData(res.data.top12)
-                                })
-                            } else {
-                                that.isShow.showScaleRate = false
-                            }
-                            // 重点客户
-                            if (res.data.topShow && res.data.topShow.length > 0) {
-                                var data = res.data.topShow;
-                                data.forEach(function(v,i){
-                                    v.topData.forEach(function(s,j){
-                                        s.parent = s.countMoney / v.topData[0].countMoney*100 + "%";
-                                        s.lastTime = new Date(Number(s.lastTime + '000')).pattern('yyyy/MM/dd')
-                                    })
-                                })
-                                that.clientList = res.data.topShow;
-                            } else {
-                                that.isShow.showClient = false;
-                            }
-                            // 合作企业注册资本分布
-                            if(res.data.withCapitalData && res.data.withCapitalData.length > 0) {
-                                var columns = ['注册资本', '企业数量', '累计采购规模'];
-                                var rows = [];
-                                var capData = [];
-                                res.data.withCapitalData.forEach(function(item){
-                                    rows.push({
-                                        '注册资本': that.formatMoneyRange(item.key),
-                                        '企业数量': item.ent_count,
-                                        '累计采购规模': (item.money_count /10000).fixed(2)
-                                    })
-                                    capData.push({
-                                        '注册资本': that.formatMoneyRange(item.key),
-                                        '企业数量': item.ent_count,
-                                        '累计采购规模': (item.money_count /10000).fixed(2),
-                                        '采购项目数量': item.project_count,
-                                        '平均节支率': item.rate_avg
-                                    })
-                                })
-                                that.regCapitalData.columns = columns;
-                                that.regCapitalData.rows = rows;
-                                that.regCapitalData.customData = capData;
-                            } else {
-                                that.isShow.showCapital = false;
-                            }
-                            // 合作企业年龄分布
-                            if (res.data.withEstablishData && res.data.withEstablishData) {
-                                var ageRows = [];
-                                var customRows = []
-                                res.data.withEstablishData.forEach(function(item){
-                                    if(item.key == '0_1'){
-                                        item.key = '<1'
-                                    }
-                                    if(item.key == '40'){
-                                        item.key = '≥40'
-                                    }
-                                    ageRows.push({
-                                        '企业年龄': item.key.replace('_','-'),
-                                        '企业数量': item.ent_count
-                                    })
-                                    customRows.push({
-                                        '企业年龄': item.key.replace('_','-'),
-                                        '企业数量': item.ent_count,
-                                        '累计采购规模': (item.money_count /10000).fixed(2),
-                                        '采购项目数量': item.project_count,
-                                        '平均节支率': item.rate_avg
-                                    })
-                                })
-                                that.workingAgeData.rows = ageRows;
-                                that.workingAgeData.customData = customRows;
-                            } else {
-                                that.isShow.showAge = false;
-                            }
-                            // 合作企业注册地分布
-                            if (res.data.withAreaData && res.data.withAreaData.length > 0) {
-                                var areaRows = [];
-                                var custom = []
-                                res.data.withAreaData.forEach(function(item){
-                                    areaRows.push({
-                                        '企业注册地': item.area_name,
-                                        '企业数量': item.ent_count
-                                    })
-                                    custom.push({
-                                        '企业注册地': item.area_name,
-                                        '企业数量': item.ent_count,
-                                        '累计采购规模': (item.money_count /10000).fixed(2),
-                                        '采购项目数量': item.project_count,
-                                        '平均节支率': item.rate_avg
-                                    })
-                                })
-                                that.mapChartData.rows = areaRows;
-                                that.mapChartData.customData = custom;
-                            } else {
-                                that.isShow.showArea = false;
-                            }
-
-                            // 重点合作代理机构
-                            if(res.data.topAgencyData && res.data.topAgencyData.length > 0) {
-                                var data = res.data.topAgencyData;
-                                data.forEach(function(v,i){
-                                    v.last_with_time = new Date(Number(v.last_with_time + '000')).pattern('yyyy/MM/dd')
-                                    v.parent = v.project_count / data[0].project_count*100 + "%";
-                                })
-                                that.agencyList = res.data.topAgencyData;
-                            } else {
-                                that.isShow.showAgency = false
-                            }
-                        } else {
-                            console.log('请求了获取不到data数据,再次请求')
-                            if(that.reqCount < 3) {
-                                that.timer = setTimeout(function() {
-                                    that.getChartData();
-                                })
-                            } else {
-                                console.log('请求了仍获取不到图表数据,不再请求')
-                                clearTimeout(that.timer);
-                                that.chartLoading = false;
-                                that.isShow.showDynamic = false
-                                that.isShow.showYearData = false
-                                that.isShow.showMonthScale = false
-                                that.isShow.showScaleFb = false
-                                that.isShow.showBidType = false
-                                that.isShow.showSaveRate = false
-                                that.isShow.showScaleRate = false
-                                that.isShow.showClient = false
-                                that.isShow.showCapital = false
-                                that.isShow.showAge = false
-                                that.isShow.showArea = false
-                                that.isShow.showAgency = false
-                            }
-                        }
-                        console.log(that.reqCount)
-                    }else{
-                        that.chartLoading = false;
-                        that.isShow.showDynamic = false
-                        that.isShow.showYearData = false
-                        that.isShow.showMonthScale = false
-                        that.isShow.showScaleFb = false
-                        that.isShow.showBidType = false
-                        that.isShow.showSaveRate = false
-                        that.isShow.showScaleRate = false
-                        that.isShow.showClient = false
-                        that.isShow.showCapital = false
-                        that.isShow.showAge = false
-                        that.isShow.showArea = false
-                        that.isShow.showAgency = false
+          var that = this;
+          $.ajax({
+            type:'POST',
+            url:'/bigmember/portrait/buyer/getData',
+            data:{
+              buyer: decodeURIComponent(utils.getParam('entName'))
+            },
+            success:function(res) {
+                if(res.error_code == 0) {
+                  if(res.data && Object.keys(res.data).length > 0) {
+                      that.chartLoading = false;
+                      that.initChartData('', res.data)
+                  } else {
+                    that.getSectionChartData('a')
+                  }
+                }
+            },
+            error:function(err) {
+              console.log(err)
+            }
+          })
+        },
+        // 分段获取画像数据
+        getSectionChartData: function(type) {
+          var that = this;
+          $.ajax({
+            type:'POST',
+            url:'/bigmember/portrait/buyer/getData',
+            data:{
+              buyer: decodeURIComponent(utils.getParam('entName')),
+              flag: type
+            },
+            success:function(res) {
+                if(res.error_code == 0) {
+                  that.reqCount++;
+                  if(res.data && Object.keys(res.data).length > 0) {
+                    that.chartLoading = false;
+                    that.initChartData(type, res.data)
+                    if (type === 'a') {
+                      that.reqCount = 0
+                      that.getSectionChartData('b')
+                    } else if (type === 'b') {
+                      that.reqCount = 0
+                      that.getSectionChartData('c')
                     }
-                },
-                error:function(err) {
-                    console.log(err)
+                  } else {
+                    console.log('请求了获取不到data数据,再次请求')
+                    if (that.reqCount < 5) {
+                      that.getSectionChartData(type)
+                    } else {
+                      that.chartLoading = false;
+                    }
+                  }
                 }
-            })
+            },
+            error:function(err) {
+              console.log(err)
+            }
+          })
         },
-        // 处理金额区间转换
-        formatMoneyRange: function(key){
-            if(!key) return;
-            if(key.indexOf('_')) {
-                key = key.split('_');
-            } else {
-                key = key.split('-');
+        initChartData: function(flag, res) {
+          // a段数据 timeRange、city、province、buyerclass、bidamount_count、fail_count、project_count、winner_count、otherProvincesWinnerCount、yearData、monthData、moneyRange、bidtypeData、rate、top12、topAgencyData
+          // b段数据 topShow
+          // c段数据 withCapitalData、withAreaData、withEstablishData
+          if (flag === 'a') {
+            // 1.初始化画像基本信息
+            this.formatBaseInfo(res)
+            // 2.初始化年度统计数据
+            this.formatYearsData(res.yearData)
+            // 3.初始化月度统计数据
+            this.formatterMonthData(res.monthData)
+            // 4.初始化采购规模分布数据
+            this.formatHotData(res.moneyRange)
+            // 5.格式化各类招标方式占比数据
+            this.formatBidTypeData(res.bidtypeData)
+            // 6.初始化各行业项目平均节支率数据
+            this.formatSaveRateData(res.rate)
+            // 7.初始化各行业项目规模占比数据
+            this.formatTopData(res.top12)
+            // 12.初始化重点合作代理机构数据
+            this.formatAgencyData(res.topAgencyData)
+          } else if (flag === 'b') {
+            // 8.初始化重点合作企业数据
+            this.formatClientData(res.topShow)
+          } else if (flag === 'c') {
+             // 9.初始化合作企业注册资本分布数据
+            this.formatCapitalData(res.withCapitalData)
+            // 10.初始化合作企业年龄分布数据
+            this.formatAgeData(res.withEstablishData)
+            // 11.初始化合作企业注册地分布数据
+            this.formatAreaData(res.withAreaData)
+          } else {
+            // 1.初始化画像基本信息
+            this.formatBaseInfo(res)
+            // 2.初始化年度统计数据
+            this.formatYearsData(res.yearData)
+            // 3.初始化月度统计数据
+            this.formatterMonthData(res.monthData)
+            // 4.初始化采购规模分布数据
+            this.formatHotData(res.moneyRange)
+            // 5.格式化各类招标方式占比数据
+            this.formatBidTypeData(res.bidtypeData)
+            // 6.初始化各行业项目平均节支率数据
+            this.formatSaveRateData(res.rate)
+            // 7.初始化各行业项目规模占比数据
+            this.formatTopData(res.top12)
+            // 8.初始化重点合作企业数据
+            this.formatClientData(res.topShow)
+            // 9.初始化合作企业注册资本分布数据
+            this.formatCapitalData(res.withCapitalData)
+            // 10.初始化合作企业年龄分布数据
+            this.formatAgeData(res.withEstablishData)
+            // 11.初始化合作企业注册地分布数据
+            this.formatAreaData(res.withAreaData)
+            // 12.初始化重点合作代理机构数据
+            this.formatAgencyData(res.topAgencyData)
+          }
+        },
+        // 1.处理画像基本信息数据
+        formatBaseInfo: function(data) {
+          this.statistics.province = data.province ? data.province.replace(/省|市|自治区|特别行政区|壮族|回族|维吾尔/g, '') : '--';
+          this.statistics.city = data.city;
+          this.statistics.buyerClass = data.buyerclass ? data.buyerclass : '--';
+          this.statistics.start = new Date(Number(data.timeRange.start + '000')).pattern('yyyy/MM/dd');
+          this.statistics.end = new Date(Number(data.timeRange.end + '000')).pattern('yyyy/MM/dd');
+          this.statistics.buyerCount = data.project_count ? data.project_count + '个' : '--';
+          this.statistics.winnerCount = data.winner_count ? data.winner_count + '个' : '--';
+          this.statistics.otherWinner = data.otherProvincesWinnerCount ? data.otherProvincesWinnerCount + '个' : '--';
+          this.statistics.buyerScale = data.bidamount_count ? utils.moneyUnit(data.bidamount_count) : '--';
+          this.statistics.fail_count = data.fail_count ? data.fail_count + '条': '--';
+        },
+        // 2.处理年度统计数据
+        formatYearsData: function(data) {
+          if(data && Object.keys(data).length > 0){
+            var rows = [];
+            for (var key in data) {
+              rows.push({
+                '年份': key,
+                '项目数量': data[key].Count,
+                '项目金额': (data[key].Money/10000).fixed(0),
+              })
             }
-            if(!key[1]) return '>' + (key[0] / 100000000).fixed(2) + '亿';
-            key[0] = key[0] >= 100000000 ? (key[0] / 100000000).fixed(2) : (key[0] / 10000).fixed(2);
-            key[1] = key[1] >= 100000000 ? (key[1] / 100000000).fixed(2) + '亿' : (key[1] / 10000).fixed(2) + '万';
-            return key[0] + '-' + key[1];
+            this.projectData.columns = ['年份', '项目数量', '项目金额'];
+            this.projectData.rows = rows;
+            this.isShow.showYearData = true;
+          }
         },
-        // 处理月度采购规模数据
+        // 3.处理月度采购规模数据
         formatterMonthData: function(data) {
-            if (!data) return;
+          if (data && Object.keys(data).length > 0) {
             var rows = [];
             var columns = ['月份'];
             var count = 0;
             var yearArr = []
             for (var key in data) {
-                yearArr.push(parseInt(key))
+              yearArr.push(parseInt(key))
             }
             yearArr.sort(function (a, b) { return a - b })
             yearArr.forEach(function (item) {
-                columns.push(item + '年')
+              columns.push(item + '年')
             })
             for (var i = 1; i <= 12; i++) {
-                var columnsItem = {}
-                columns.forEach(function (item) {
-                    var value = ''
-                    if (item == '月份') {
-                        value = i + '月'
-                    } else if (/年/g.test(item)) {
-                        if (data[item.slice(0, -1)]) {
-                            value = data[item.slice(0, -1)][i];
-                            value = (value /10000).fixed(2);
-                            count += value
-                        }
-                    }
-                    columnsItem[item] = value
-                })
-                rows.push(columnsItem)
+              var columnsItem = {}
+              columns.forEach(function (item) {
+                var value = ''
+                if (item == '月份') {
+                    value = i + '月'
+                } else if (/年/g.test(item)) {
+                  if (data[item.slice(0, -1)]) {
+                    value = data[item.slice(0, -1)][i];
+                    value = (value /10000).fixed(2);
+                    count += value
+                  }
+                }
+                columnsItem[item] = value
+              })
+              rows.push(columnsItem)
             }
-
             // 数据总量为0,不赋值
             if (count != 0) {
-                this.monthScaleData.columns = columns;
-                this.monthScaleData.rows = rows;
+              this.monthScaleData.columns = columns;
+              this.monthScaleData.rows = rows;
+              this.isShow.showMonthScale = true;
             } else {
-                this.isShow.showMonthScale = false;
+              this.isShow.showMonthScale = false;
             }
+          }
         },
-        // 处理行业项目平均节支率数据
-        formatterSaveRateData: function(data) {
-            if (!data) return;
+        // 4.处理采购规模分布数据
+        formatHotData: function(res) {
+          var that = this
+          if(res && res.length > 0) {
+            // 数据都为0 隐藏
+            var countArr = res.map(function(v){
+              return v.project_count;
+            })
+            var max = Math.max.apply(null,countArr);
+            console.log(max,'max')
+            if(max == 0) {
+              that.isShow.showScaleFb = false
+            } else {
+              that.isShow.showScaleFb = true;
+              that.$nextTick(function(){
+                that.getHotChartData(res);
+              })
+            }
+          }
+        },
+        // 5.处理各类招标方式占比数据
+        formatBidTypeData: function(data) {
+          // 各类招标方式占比
+          if(data && data.length > 0) {
+            data.forEach(function(item){
+              item.money = (item.money / 10000).fixed(2);
+              item.moneyShare = (item.moneyShare*100).fixed(2);
+              item.numShare  = (item.numShare *100).fixed(2)
+              switch (item.type) {
+                case '招标':
+                  item.type = '公开招标'
+                  break;
+                case '邀标':
+                  item.type = '邀请招标'
+                  break;
+                case '询价':
+                  item.type = '询价采购'
+                  break;
+                case '单一':
+                  item.type = '单一来源采购'
+                  break;
+                case '竞价':
+                  item.type = '竞价采购'
+                  break;
+                case '竞谈':
+                  item.type = '竞争性谈判'
+                  break;
+              }
+            })
+            var maxLeftNum = Math.max.apply(Math, data.map(function(o) {return o.numShare}))
+            var maxRightNum = Math.max.apply(Math, data.map(function(o) {return o.moneyShare}))
+            data.forEach(function(v,i){
+              v.lPercent = (v.numShare/maxLeftNum*100).fixed(2);
+              v.rPercent = (v.moneyShare/maxRightNum*100).fixed(2);
+            })
+            this.doubleBar.list = data;
+            this.isShow.showBidType = true;
+          }
+        },
+        // 6.处理行业项目平均节支率数据
+        formatSaveRateData: function(data) {
+          if (data && Object.keys(data).length > 0) {
             var rows = [];
             var columns = ['日期','全部行业'];
             var count = 0;
             for (var key in data) {
-                if(key !== '全部行业') {
-                    columns.push(key)
-                }
+              if(key !== '全部行业') {
+                columns.push(key)
+              }
             }
             var industryArr = []
             for (var key in data['全部行业']) {
-                industryArr.push(key)
+              industryArr.push(key)
             }
             industryArr.sort(function (a, b) { return a - b })
             industryArr.forEach(function (item) {
-                var rowsItem = {
-                    '日期': item + '年'
-                }
-                for (var k in data) {
-                    count += (data[k][item] * 100)
-                    rowsItem[k] = data[k][item] == null  ? null : (data[k][item] * 100).fixed(2)
-                }
-                rows.push(rowsItem)
+              var rowsItem = {
+                '日期': item + '年'
+              }
+              for (var k in data) {
+                count += (data[k][item] * 100)
+                rowsItem[k] = data[k][item] == null  ? null : (data[k][item] * 100).fixed(2)
+              }
+              rows.push(rowsItem)
             })
             // 数据总量为0,不赋值
             if (count != 0) {
-                this.savingsRateData.columns = columns;
-                this.savingsRateData.rows = rows;
+              this.savingsRateData.columns = columns;
+              this.savingsRateData.rows = rows;
+              this.isShow.showSaveRate = true
+            }
+          }
+        },
+        // 7.处理各行业项目规模占比数据
+        formatTopData : function(data) {
+          var that = this
+          if (data && data.length > 0) {
+            that.isShow.showScaleRate = true
+            that.$nextTick(function(){
+              that.getPieCharData(data)
+            })
+          }
+        },
+        // 8.处理重点合作企业数据
+        formatClientData: function(data) {
+          if (data && data.length > 0) {
+            data.forEach(function(v,i){
+              v.topData.forEach(function(s,j){
+                s.parent = s.countMoney / v.topData[0].countMoney*100 + "%";
+                s.lastTime = new Date(Number(s.lastTime + '000')).pattern('yyyy/MM/dd')
+              })
+            })
+            this.clientList = data;
+            this.isShow.showClient = true;
+          }
+        },
+        // 9.处理合作企业注册资本分布数据
+        formatCapitalData: function (data) {
+          var that = this
+          if(data && data.length > 0) {
+            var columns = ['注册资本', '企业数量', '累计采购规模'];
+            var rows = [];
+            var capData = [];
+            data.forEach(function(item){
+              rows.push({
+                '注册资本': that.formatMoneyRange(item.key),
+                '企业数量': item.ent_count,
+                '累计采购规模': (item.money_count /10000).fixed(2)
+              })
+              capData.push({
+                '注册资本': that.formatMoneyRange(item.key),
+                '企业数量': item.ent_count,
+                '累计采购规模': (item.money_count /10000).fixed(2),
+                '采购项目数量': item.project_count,
+                '平均节支率': item.rate_avg
+              })
+            })
+            that.regCapitalData.columns = columns;
+            that.regCapitalData.rows = rows;
+            that.regCapitalData.customData = capData;
+            that.isShow.showCapital = true;
+          }
+        },
+        // 10.处理合作企业年龄分布数据
+        formatAgeData: function(data) {
+          if (data && data.length > 0) {
+            var ageRows = [];
+            var customRows = []
+            data.forEach(function(item){
+              if(item.key == '0_1'){
+                item.key = '<1'
+              }
+              if(item.key == '40'){
+                item.key = '≥40'
+              }
+              ageRows.push({
+                '企业年龄': item.key.replace('_','-'),
+                '企业数量': item.ent_count
+              })
+              customRows.push({
+                '企业年龄': item.key.replace('_','-'),
+                '企业数量': item.ent_count,
+                '累计采购规模': (item.money_count /10000).fixed(2),
+                '采购项目数量': item.project_count,
+                '平均节支率': item.rate_avg
+              })
+            })
+            this.workingAgeData.rows = ageRows;
+            this.workingAgeData.customData = customRows;
+            this.isShow.showAge = true;
+          }
+        },
+        // 11.处理合作企业注册地分布数据
+        formatAreaData: function(data) {
+          if (data && data.length > 0) {
+            var areaRows = []
+            var custom = []
+            data.forEach(function(item){
+              areaRows.push({
+                '企业注册地': item.area_name,
+                '企业数量': item.ent_count
+              })
+              custom.push({
+                '企业注册地': item.area_name,
+                '企业数量': item.ent_count,
+                '累计采购规模': (item.money_count /10000).fixed(2),
+                '采购项目数量': item.project_count,
+                '平均节支率': item.rate_avg
+              })
+            })
+            this.mapChartData.rows = areaRows;
+            this.mapChartData.customData = custom;
+            this.isShow.showArea = true;
+          }
+        },
+        // 12.处理重点合作代理机构数据
+        formatAgencyData: function(data) {
+          if(data && data.length > 0) {
+            data.forEach(function(v,i){
+              v.last_with_time = new Date(Number(v.last_with_time + '000')).pattern('yyyy/MM/dd')
+              v.parent = v.project_count / data[0].project_count*100 + "%";
+            })
+            this.agencyList = data;
+            this.isShow.showAgency = true
+          }
+        },
+        // 处理金额区间转换
+        formatMoneyRange: function(key){
+            if(!key) return;
+            if(key.indexOf('_')) {
+                key = key.split('_');
             } else {
-                this.isShow.showSaveRate = false
+                key = key.split('-');
             }
+            if(!key[1]) return '>' + (key[0] / 100000000).fixed(2) + '亿';
+            key[0] = key[0] >= 100000000 ? (key[0] / 100000000).fixed(2) : (key[0] / 10000).fixed(2);
+            key[1] = key[1] >= 100000000 ? (key[1] / 100000000).fixed(2) + '亿' : (key[1] / 10000).fixed(2) + '万';
+            return key[0] + '-' + key[1];
         },
         /* ***** 配置项部分 ******* */
         // 1.年度项目统计配置
@@ -1017,17 +1077,6 @@ var vNode = {
             }
             return options
         },
-        // 各类招标方式占比数据(双向柱图)
-        formatterBarChart:function(){
-            var that = this;
-            var maxLeftNum = Math.max.apply(Math, that.doubleBar.list.map(function(o) {return o.numShare}))
-            var maxRightNum = Math.max.apply(Math, that.doubleBar.list.map(function(o) {return o.moneyShare}))
-            that.doubleBar.list.forEach(function(v,i){
-                v.lPercent = (v.numShare/maxLeftNum*100).fixed(2);
-                v.rPercent = (v.moneyShare/maxRightNum*100).fixed(2);
-            })
-        },
-
         // 4.各类招标方式占比图自定义tooltip
         tooltipHandle:function(item,index){
             // console.log(item,index)

+ 1 - 0
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/change_industry.js

@@ -184,6 +184,7 @@ $(function () {
 
   // 控制提示框
   function showNeedPopver (show, e) {
+    console.log(e)
     if (show) {
       var nowStr = getNeedPopverTip($(e.target).text())
       if (nowStr !== '') {

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

@@ -113,7 +113,7 @@ var renew = {
     // 设置价格
     setPrice: function (price) {
         this.price = parseInt(price)
-        coupon.updatePrice(parseInt(this.price / 100))
+        coupon.updatePrice(this.price / 100)
     },
     // 根据选中结果得到续费了多长时间的字符串
     getDuration: function (timeSelect) {
@@ -534,7 +534,7 @@ var coupon = new Vue({
     // 更新价格相关
     updatePrice: function (before) {
       console.log( '原价:' + before)
-      this.initPrice = parseInt(before);
+      this.initPrice = before;
       // 调用子组件查询最优卡券
       this.$refs.couponRef.getCoupon();
     },

+ 4 - 5
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/vip_upgrade.js

@@ -16,8 +16,7 @@ var purchase = {
   initData: function () {
     //已选择
     try {
-      //即将到期 回显已购买
-      if (!sessionStorage.getItem("pay_read_cache")) {
+      if (!sessionStorage.getItem("vipSub_oldBuySet")) {
         $DoPost("/subscribepay/vipsubscribe/getSubBuyMsg", {}, function (r) {
           if (r.success) {
             if (!$.isEmptyObject(r.data.area)) {
@@ -49,7 +48,7 @@ var purchase = {
           }
         }, false)
       } else {
-        sessionStorage.removeItem("pay_read_cache");
+        // sessionStorage.removeItem("pay_read_cache");
         if (sessionStorage.getItem("vipSubSelectArea")) {
           this.areaSelect = JSON.parse(sessionStorage.getItem("vipSubSelectArea"));
         }
@@ -571,7 +570,7 @@ $(function () {
       "area": flag ? JSON.stringify(area) : '',
       'area_count': flag ? 0 : areaCount,
       // "industry": industry.join(","),
-      'price': Number((coupon.initPrice*100).toFixed(2)),
+      'price': parseInt(coupon.initPrice*100),
       "time": purchase.timeValue.trim(),
       // "orderType": 5,
       "disWord": GetQueryString("disWord"),
@@ -678,7 +677,7 @@ var coupon = new Vue({
     // 更新价格相关
     updatePrice: function (before) {
       console.log('原价:' + before)
-      this.initPrice = parseInt(before);
+      this.initPrice = before;
       // 调用子组件查询最优卡券
       this.$refs.couponRef.getCoupon();
     },

+ 10 - 8
src/jfw/modules/app/src/web/templates/commonPay/myOrder.html

@@ -1988,14 +1988,16 @@
                       orderStatusHtml = "待付完";
                       orderStatusHtmls = "notpay";
                     }
-                    if (source === "" && applybill_status === 0) {
-                        lastHtml = '<div class="card-footer">'
-                            + '<a onclick="invoiceAdd(this)" class="btn  gray-btn">开发票</a>'
-                            + '</div>'
-                    } else if (applybill_status === 1 || applybill_status === 2) {
-                        lastHtml = '<div class="card-footer">'
-                            + '<a onclick="checkinvoice(this,' + applybill_status + ')" class="btn  gray-btn">查看发票</a>'
-                            + '</div>'
+                    if (source === "" ){
+                      if (applybill_status === 0) {
+                          lastHtml = '<div class="card-footer">'
+                              + '<a onclick="invoiceAdd(this)" class="btn  gray-btn">开发票</a>'
+                              + '</div>'
+                      } else if (applybill_status === 1 || applybill_status === 2) {
+                          lastHtml = '<div class="card-footer">'
+                              + '<a onclick="checkinvoice(this,' + applybill_status + ')" class="btn  gray-btn">查看发票</a>'
+                              + '</div>'
+                      }
                     }
                 } else {
                     orderStatusHtml = "已取消";

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

@@ -698,6 +698,7 @@
       })
       // 直接跳转到升级页面
       $('*[data-bind-update]').on('click',function() {
+        sessionStorage.removeItem('vipSub_oldBuySet')
         location.href = '/jyapp/vipsubscribe/upgradePage'
       })
     </script>

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

@@ -1765,7 +1765,7 @@
                       }
                   }else{
                       sessionStorage.removeItem('$data-ent_portrait')
-                      if (entId) {
+                      if (entId&&entId!="null"&&entId!="undefined") {
                         window.location.href = '/jyapp/big/page/ent_portrait?eId='+encodeURIComponent(entId)
                       } else {
                         EasyAlert.show("暂无数据");

+ 24 - 8
src/jfw/modules/bigmember/src/entity/portrait.go

@@ -3,6 +3,7 @@ package entity
 import (
 	"db"
 	"errors"
+	"fmt"
 	qutil "qfw/util"
 	"qfw/util/jy"
 	"strings"
@@ -195,22 +196,37 @@ func (this *Portrait) GetBuyerNewCount(buyer string) int64 {
 }
 
 //采购单位画像-查询
-func (this *Portrait) BuyerPortraitData(buyer string) (map[string]interface{}, error) {
+//flag 分段请求标识 a年度统计和节支率等 b重点合作企业 c合作企业注册资本、地区、年份分布
+//a段数据=timeRange、city、province、buyerclass、bidamount_count、fail_count、project_count、winner_count、otherProvincesWinnerCount、yearData、monthData、moneyRange、bidtypeData、rate、top12、topAgencyData
+//b段数据=topShow
+//c段数据=withCapitalData、withAreaData、withEstablishData
+func (this *Portrait) BuyerPortraitData(buyer string, flag string) (map[string]interface{}, error) {
 	if buyer == "" {
 		return nil, errors.New("企业名称异常")
 	}
-	buyerPortraitData := TryFunc(GetPortraitCache, buyer, "buyer", 2)
+
+	if !(flag == "a" || flag == "b" || flag == "c" || flag == "") {
+		return nil, errors.New("参数异常")
+	}
+
+	//buyerPortraitData := TryFunc(GetPortraitCache, buyer, "buyer", 2)
 	//buyerPortraitData, err := GetBuyerPortraitData(buyer)
 	//if err != nil {
 	//	return nil, err
 	//}
-	if buyerPortraitData != nil {
-		//重点合作企业 展示读者行业
-		if topShow, ok := buyerPortraitData["topShow"]; ok {
-			buyerPortraitData["topShow"] = formatUserTopShowList(this.UserId, topShow)
+	//
+
+	buyerPortraitData := TryFunc(GetPortraitCacheByStep, buyer, fmt.Sprintf("buyer_%s", flag), 2)
+
+	if flag == "" || flag == "b" { //只有查询全部或者查询b分布画像时,返回内容有重点合作企业
+		if buyerPortraitData != nil {
+			//重点合作企业 展示读者行业
+			if topShow, ok := buyerPortraitData["topShow"]; ok {
+				buyerPortraitData["topShow"] = formatUserTopShowList(this.UserId, topShow)
+			}
+			//删除多余数据
+			delete(buyerPortraitData, "allWinnerList")
 		}
-		//删除多余数据
-		delete(buyerPortraitData, "allWinnerList")
 	}
 	return buyerPortraitData, nil
 }

+ 84 - 61
src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go

@@ -21,7 +21,7 @@ const (
 	queryTermByIdSql            = `{"terms":{"_id":[%s]}}`
 	queryMustSql                = `{"query":{"filtered":{"filter":{"bool":{"must":[%s]}}}}}`
 	buyerWithEntThreadSearchNum = 50
-	buyerWithEntPortraitSqlPage = `{"query":{"filtered":{"filter":{"bool":{"must":[%s]}}}},"_source":["_id","company_area","capital","establish_date"],from:%d,size:%d}`
+	buyerWithEntPortraitSqlPage = `{"query":{"filtered":{"filter":{"bool":{"must":[%s]}}}},"_source":["_id","company_area","capital","establish_date"],"from":%d,"size":%d}`
 )
 
 //采购单位最新中标动态查询
@@ -79,12 +79,13 @@ func GetBuyerPortraitData(buyer string) (map[string]interface{}, error) {
 	if err != nil {
 		return nil, err
 	}
-	city, province, buyerclass := GetBuyerMsg(buyer) //获取采购单位地区行业信息
-	buyerPortraitData["city"] = city
-	buyerPortraitData["province"] = province
-	buyerPortraitData["buyerclass"] = buyerclass
+	hxObj := getInitPortraitSearch(buyer, "buyer")
+	//分段存储——b阶段
+	buyerPortraitData["step_b"] = time.Now().Unix()
+	go upDataQxhxRedis(hxObj.RedisKey, buyerPortraitData)
 
 	if AllWinner, ok := buyerPortraitData["allWinnerList"]; ok {
+		province := qutil.ObjToString(buyerPortraitData["province"])
 		withPorTraitData, thisProvincesWinnerCount, withErr := GetWithEntPortraitData(AllWinner, province)
 		if withErr != nil {
 			log.Println("GetWithEntPortraitData err", withErr)
@@ -98,7 +99,9 @@ func GetBuyerPortraitData(buyer string) (map[string]interface{}, error) {
 			buyerPortraitData["otherProvincesWinnerCount"] = allWinnerCount - thisProvincesWinnerCount
 		}
 	}
-
+	//分段存储——c阶段
+	buyerPortraitData["step_c"] = time.Now().Unix()
+	go upDataQxhxRedis(hxObj.RedisKey, buyerPortraitData)
 	return buyerPortraitData, nil
 }
 
@@ -109,12 +112,6 @@ func BuyerPortraitSearch(buyer string) (map[string]interface{}, error) {
 	fiveYearTime := startTime.AddDate(-2, 0, 0) //需要中标金额统计开始年份之前两年
 	bidamountTimeRange := getBidamountStatistics(fiveYearTime, startTime, endTime)
 	comminTimeRange := getCommonYearStatistics(startTime, endTime)
-	tBegin := time.Now()
-	doSearchSql := fmt.Sprintf(buyerPortraitSearchSql, buyer, endTime.Unix(), fiveYearTime.Unix(), bidamountTimeRange, startTime.Unix(), getMoneyRange(), comminTimeRange, comminTimeRange)
-	res, _ := GetAggs("projectset", "projectset", doSearchSql)
-	if res == nil {
-		return nil, errors.New(fmt.Sprintf("%s采购单位画像查询异常\n", buyer))
-	}
 
 	returnData := map[string]interface{}{
 		"timeRange": map[string]int64{
@@ -122,6 +119,23 @@ func BuyerPortraitSearch(buyer string) (map[string]interface{}, error) {
 			"end":   endTime.Unix() - 1,
 		},
 	}
+	var wg sync.WaitGroup
+	go func() {
+		wg.Add(1)
+		city, province, buyerclass := GetBuyerMsg(buyer) //获取采购单位地区行业信息
+		returnData["city"] = city
+		returnData["province"] = province
+		returnData["buyerclass"] = buyerclass
+		wg.Done()
+	}()
+
+	tBegin := time.Now()
+	doSearchSql := fmt.Sprintf(buyerPortraitSearchSql, buyer, endTime.Unix(), fiveYearTime.Unix(), bidamountTimeRange, startTime.Unix(), getMoneyRange(), comminTimeRange, comminTimeRange)
+	res, _ := GetAggs("projectset", "projectset", doSearchSql)
+	if res == nil {
+		return nil, errors.New(fmt.Sprintf("%s采购单位画像查询异常\n", buyer))
+	}
+
 	//五年数据 年度项目统计&近三年月度中标金额
 	if g, ok := res.Children("five_year_data_bidamount"); ok {
 		bidamountData := YearBidamount{}
@@ -279,6 +293,60 @@ func BuyerPortraitSearch(buyer string) (map[string]interface{}, error) {
 					} `json:"topScopeclassWinner"` //行业前5中标单位
 				} `json:"buckets"`
 			}{}
+
+			//重点合作代理机构
+			if topAgencyDataBytes, err := g.Aggregations["topAgencyData"].MarshalJSON(); err == nil {
+				topAgencyData := struct {
+					Buckets []struct {
+						AgencyName   string `json:"key"`
+						ProjectCount int    `json:"doc_count"`
+						NewWithTime  struct {
+							Time interface{} `json:"value"`
+						} `json:"last_with_time"`
+					} `json:"buckets"`
+				}{}
+				if json.Unmarshal(topAgencyDataBytes, &topAgencyData) == nil {
+					topAgencyReturnData := []map[string]interface{}{}
+					for _, oneAgency := range topAgencyData.Buckets {
+						topAgencyReturnData = append(topAgencyReturnData, map[string]interface{}{
+							"agency_name":    oneAgency.AgencyName,
+							"project_count":  oneAgency.ProjectCount,
+							"last_with_time": oneAgency.NewWithTime.Time,
+						})
+					}
+					returnData["topAgencyData"] = topAgencyReturnData
+				}
+			}
+
+			//统计合作企业数据
+			returnAllWinnerList := []AllWinner{}
+			if allWinnerListBytes, err := g.Aggregations["allWinnerList"].MarshalJSON(); err == nil {
+				allWinnerListData := struct {
+					Buckets []struct {
+						WinnerId       string       `json:"key"`
+						ProjectCount   int          `json:"doc_count"`
+						BidamountCount AggsValue    `json:"count_bidamount"`
+						RateData       PortraitRate `json:"avg_data"`
+					} `json:"buckets"`
+				}{}
+				if json.Unmarshal(allWinnerListBytes, &allWinnerListData) == nil {
+					for _, bucket := range allWinnerListData.Buckets {
+						returnAllWinnerList = append(returnAllWinnerList, AllWinner{
+							bucket.WinnerId,
+							bucket.ProjectCount,
+							bucket.BidamountCount.Value,
+							bucket.RateData.BudgetCount.Value,
+							bucket.RateData.BidamountCount.Value,
+						})
+					}
+					returnData["allWinnerList"] = returnAllWinnerList
+				}
+			}
+			wg.Wait()
+			//分段存储——a阶段
+			returnData["step_a"] = time.Now().Unix()
+			go upDataQxhxRedis(getInitPortraitSearch(buyer, "buyer").RedisKey, returnData)
+
 			if json.Unmarshal(topScopeclassBytes, &topScopeclassData) == nil {
 				//折扣率 优先取三年都有数据的
 				rateBuyerCount := 0
@@ -353,55 +421,6 @@ func BuyerPortraitSearch(buyer string) (map[string]interface{}, error) {
 				returnData["top12"] = top12Share //前12行业数据分析
 			}
 			returnData["rate"] = rataMap
-
-			//重点合作代理机构
-			if topAgencyDataBytes, err := g.Aggregations["topAgencyData"].MarshalJSON(); err == nil {
-				topAgencyData := struct {
-					Buckets []struct {
-						AgencyName   string `json:"key"`
-						ProjectCount int    `json:"doc_count"`
-						NewWithTime  struct {
-							Time interface{} `json:"value"`
-						} `json:"last_with_time"`
-					} `json:"buckets"`
-				}{}
-				if json.Unmarshal(topAgencyDataBytes, &topAgencyData) == nil {
-					topAgencyReturnData := []map[string]interface{}{}
-					for _, oneAgency := range topAgencyData.Buckets {
-						topAgencyReturnData = append(topAgencyReturnData, map[string]interface{}{
-							"agency_name":    oneAgency.AgencyName,
-							"project_count":  oneAgency.ProjectCount,
-							"last_with_time": oneAgency.NewWithTime.Time,
-						})
-					}
-					returnData["topAgencyData"] = topAgencyReturnData
-				}
-			}
-
-			//统计合作企业数据
-			returnAllWinnerList := []AllWinner{}
-			if allWinnerListBytes, err := g.Aggregations["allWinnerList"].MarshalJSON(); err == nil {
-				allWinnerListData := struct {
-					Buckets []struct {
-						WinnerId       string       `json:"key"`
-						ProjectCount   int          `json:"doc_count"`
-						BidamountCount AggsValue    `json:"count_bidamount"`
-						RateData       PortraitRate `json:"avg_data"`
-					} `json:"buckets"`
-				}{}
-				if json.Unmarshal(allWinnerListBytes, &allWinnerListData) == nil {
-					for _, bucket := range allWinnerListData.Buckets {
-						returnAllWinnerList = append(returnAllWinnerList, AllWinner{
-							bucket.WinnerId,
-							bucket.ProjectCount,
-							bucket.BidamountCount.Value,
-							bucket.RateData.BudgetCount.Value,
-							bucket.RateData.BidamountCount.Value,
-						})
-					}
-					returnData["allWinnerList"] = returnAllWinnerList
-				}
-			}
 		}
 	}
 	go func() {
@@ -692,6 +711,7 @@ func formatUserTopShowList(userId string, allTopShow interface{}) []TopShow {
 
 //根据id获取企业名称
 func GetWinnerNamesByIds(ids []string) (returnMap map[string]string) {
+	tBegin := time.Now()
 	returnMap = map[string]string{}
 	if len(ids) == 0 {
 		return
@@ -708,5 +728,8 @@ func GetWinnerNamesByIds(ids []string) (returnMap map[string]string) {
 			returnMap[id] = name
 		}
 	}
+	go func() {
+		fmt.Printf("GetWinnerNamesByIds: spend time %fs\n	queryLen: %d\n queryArrIds:%v\n", time.Since(tBegin).Seconds(), len(ids), ids)
+	}()
 	return
 }

+ 28 - 1
src/jfw/modules/bigmember/src/entity/portrait_manager.go

@@ -3,14 +3,17 @@ package entity
 import (
 	"config"
 	"encoding/json"
+	"fmt"
 	"log"
+	qutil "qfw/util"
 	"qfw/util/redis"
+	"strings"
 	"sync"
 	"time"
 )
 
 const (
-	tryAgaintSleep = 2 //查询出错休息时间
+	tryAgaintSleep = 1 //查询出错休息时间
 )
 
 var (
@@ -166,3 +169,27 @@ func GetPortraitCache(winner, doType string) map[string]interface{} {
 	go Qyhx_search_prior(hxObj, 1)
 	return nil
 }
+
+//采购单位画像分阶段查询
+func GetPortraitCacheByStep(buyer, doType string) map[string]interface{} {
+	flag := ""
+	if arr := strings.Split(doType, "_"); len(arr) == 2 {
+		doType, flag = arr[0], arr[1]
+	}
+	hxObj := getInitPortraitSearch(buyer, doType)
+	if rBytes, err := redis.GetBytes("other", hxObj.RedisKey); err == nil && len(*rBytes) != 0 {
+		data := map[string]interface{}{}
+		err := json.Unmarshal(*rBytes, &data)
+		if err == nil {
+			if _, ok := data[fmt.Sprintf("step_%s", qutil.If(flag == "", "c", flag))]; ok { //传入空时 需要全部数据,必须等到所有值都用时才返回
+				log.Printf("%s分段请求%s 返回内容", buyer, flag)
+				return data
+			}
+		}
+		log.Printf("Get%sPortraitCacheByStep %s step:%s Unmarshal [e] %v \n", doType, buyer, flag, err)
+	}
+	if flag == "" || flag == "a" { //仅当查询画像全部 或第一部分画像时 开始查询画像
+		go Qyhx_search_prior(hxObj, 1)
+	}
+	return nil
+}

+ 1 - 0
src/jfw/modules/bigmember/src/service/analysis/analysis.go

@@ -190,6 +190,7 @@ func (this *Analysis) PInfo() {
 						ArrPS["bidopentime"] = qutil.FormatDateWithObj(&bidopentime, "2006/01/02") //开标时间
 					}
 					ArrPS["area"] = area
+					ArrPS["city"] = city
 					ArrPS["bidcycle"] = ptdata["bidcycle"] //标书周期
 				}
 				var buyerclass_arr = []string{}

+ 25 - 20
src/jfw/modules/bigmember/src/service/analysis/forecastproject.go

@@ -108,33 +108,38 @@ func (this *Analysis) ForPList() {
 		list := []map[string]interface{}{}
 		count := 0
 		userId, _ := this.GetSession("userId").(string)
-		mainId := userId
+		main_userId, _, _ := util.MainUserId(userId, "", 0)
 		isSubCount := false
-		//查库获得大会员用户的信息
-		o_mb, ok := db.Mgo.FindById(C_User, userId, `{"o_member_jy":1,"s_member_mainid":1,"i_member_sub_status":1}`)
-		if ok && o_mb != nil && (*o_mb) != nil && (*o_mb)["s_member_mainid"] != nil && qutil.IntAllDef((*o_mb)["i_member_sub_status"], 0) == 1 {
-			mainId = qutil.ObjToString((*o_mb)["s_member_mainid"])
-			o_mb, ok = db.Mgo.FindById(C_User, mainId, `{"o_member_jy":1}`)
+		//子账号
+		if userId != main_userId {
 			isSubCount = true
 		}
-		if ok && o_mb != nil && (*o_mb) != nil && (*o_mb)["o_member_jy"] != nil {
-			pageNum, _ := this.GetInteger("pageNum")
-			list, count = getNewProjects(mainId, pageNum)
-			o_member_jy := qutil.ObjToMap((*o_mb)["o_member_jy"])
-			if pageNum == 1 {
-				if (*o_member_jy)["a_items"] != nil {
-					a_items := qutil.ObjArrToMapArr((*o_member_jy)["a_items"].([]interface{}))
-					if len(a_items) == 0 {
+		//查库获得大会员用户的信息
+		o_mb, ok := db.Mgo.FindById(C_User, main_userId, `{"o_member_jy":1}`)
+		if ok && o_mb != nil && (*o_mb) != nil {
+			if (*o_mb)["o_member_jy"] != nil {
+				pageNum, _ := this.GetInteger("pageNum")
+				list, count = getNewProjects(main_userId, pageNum)
+				o_member_jy := qutil.ObjToMap((*o_mb)["o_member_jy"])
+				if pageNum == 1 {
+					if (*o_member_jy)["a_items"] != nil {
+						a_items := qutil.ObjArrToMapArr((*o_member_jy)["a_items"].([]interface{}))
+						if len(a_items) == 0 {
+							msg = "暂无设置订阅关键词,无法进行预测"
+							code = 1
+						} else if list == nil || len(list) == 0 {
+							msg = "您设置的订阅关键词无法进行预测"
+							code = 2
+						}
+					} else {
 						msg = "暂无设置订阅关键词,无法进行预测"
 						code = 1
-					} else if list == nil || len(list) == 0 {
-						msg = "您设置的订阅关键词无法进行预测"
-						code = 2
 					}
-				} else {
-					msg = "暂无设置订阅关键词,无法进行预测"
-					code = 1
 				}
+			} else {
+				//PC端大会员 没有进行初始化
+				msg = "暂无设置订阅关键词,无法进行预测"
+				code = 1
 			}
 		}
 		regMap.Data = map[string]interface{}{

+ 2 - 2
src/jfw/modules/bigmember/src/service/analysis/forecastwinner.go

@@ -324,10 +324,10 @@ func (this *Analysis) FWStatus() {
 							s_nickname, _ = this.GetSession("app_name").(string)
 						}
 						SaveFalseLogAndSendMail(userId, falseMsg, f_id, s_nickname, *getRes)
-						//预测失败 清除redis数据
-						ClearRedisInfo(userId)
 					}()
 				}
+				//预测失败 清除redis数据
+				ClearRedisInfo(userId)
 				regMap.Data = map[string]interface{}{
 					"id":      "",
 					"success": false,

+ 28 - 4
src/jfw/modules/bigmember/src/service/portrait/entPortraitAction.go

@@ -12,11 +12,14 @@ import (
 //企业画像接口
 type EntPortrait struct {
 	*xweb.Action
-	entDetail xweb.Mapper `xweb:"/portrait/ent/detail"` //企业基本信息
+	entDetail       xweb.Mapper `xweb:"/portrait/ent/detail"`               //企业基本信息
+	subVipEntDetail xweb.Mapper `xweb:"/portrait/subVipPortrait/entDetail"` //企业基本信息
 	//新画像接口
-	winnerContacts xweb.Mapper `xweb:"/portrait/winner/contacts"`  //历史项目联系方式 dev4.0pc端新增接口
-	winnerNewMsg   xweb.Mapper `xweb:"/portrait/winner/getNewMsg"` //最新项目动态(需购买项目进度监控)
-	winnerPortrait xweb.Mapper `xweb:"/portrait/winner/getData"`   //最新项目动态
+	winnerContacts xweb.Mapper `xweb:"/portrait/winner/contacts"`       //历史项目联系方式 dev4.0pc端新增接口
+	winnerNewMsg   xweb.Mapper `xweb:"/portrait/winner/getNewMsg"`      //最新项目动态(需购买项目进度监控)
+	winnerPortrait xweb.Mapper `xweb:"/portrait/winner/getData"`        //最新项目动态
+	subVipPortrait xweb.Mapper `xweb:"/portrait/subVipPortrait/winner"` //升级版超级订阅查看画像
+
 	//新采购单位画像
 	buyerNewMsg   xweb.Mapper `xweb:"/portrait/buyer/getNewMsg"` //最新项目动态
 	buyerPortrait xweb.Mapper `xweb:"/portrait/buyer/getData"`   //最新项目动态
@@ -43,3 +46,24 @@ func (this *EntPortrait) EntDetail() {
 	}
 	this.ServeJson(NewResult(rData, errMsg))
 }
+
+//升级版超级订阅查询基本信息
+func (this *EntPortrait) SubVipEntDetail() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		cepm, err := entity.CreatePortraitManager(userId, "entDetail")
+		if err != nil {
+			return nil, err
+		}
+		entId := this.GetString("entId")
+		entInfo, err := cepm.GetEntInfo(util.DecodeId(entId))
+		if err != nil {
+			return nil, err
+		}
+		return entInfo, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s 企业画像-查询企业基本信息:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}

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

@@ -110,6 +110,27 @@ func (this *EntPortrait) WinnerPortrait() {
 	this.ServeJson(NewResult(rData, errMsg))
 }
 
+//超级订阅升级版查看企业画像
+func (this *EntPortrait) SubVipPortrait() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		cepm, err := entity.CreatePortraitManager(userId, "entPortrait")
+		if err != nil {
+			return nil, err
+		}
+		entId := this.GetString("entId")
+		rData, err := cepm.WinnerPortraitData(util.DecodeId(entId))
+		if err != nil {
+			return nil, err
+		}
+		return rData, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s SubVipPortrait获取企业画像标信息出错:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
 //采购单位画像-最新招标动态
 func (this *EntPortrait) BuyerNewMsg() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
@@ -169,7 +190,8 @@ func (this *EntPortrait) BuyerPortrait() {
 			return nil, err
 		}
 		entName := this.GetString("buyer")
-		rData, err := cepm.BuyerPortraitData(entName)
+		flag := this.GetString("flag") //分段请求标识
+		rData, err := cepm.BuyerPortraitData(entName, flag)
 		if err != nil {
 			return nil, err
 		}

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

@@ -132,11 +132,6 @@ func GetBigVipUserBaseMsg(userId string, mysql *mysql.Mysql, mg MongodbSim) *Big
 		userPower.ProNum = pCount
 	}
 
-	//升级版超级订阅查看画像权限
-	if userPower.Viper {
-
-	}
-
 	//存储缓存
 	go func() {
 		if bytes, err := json.Marshal(userPower); err == nil && bytes != nil {

+ 1 - 1
src/web/staticres/common-module/coupon/js/pay-order-template.js

@@ -251,7 +251,7 @@ var couponTem = {
           data:{
             pId: _this.getProductId(),
             // 单位:分  数据导出有折扣价  应传折扣后价格 其他产品为现价
-            price: _this.config.type == 'dataExport' ? _this.config.disPrice*100 : _this.config.initPrice*100 
+            price: _this.config.type == 'dataExport' ? parseInt(_this.config.disPrice*100) : parseInt(_this.config.initPrice*100 )
           },
           success:function(res) {
             if (res.data) {

+ 2 - 2
src/web/staticres/css/pc.css

@@ -1877,7 +1877,7 @@ form{
 	margin-right: 40px;
 }
 .jy_friendlink_content ul li img{
-	width: 84px;
+	height: 28px;
 }
 
 
@@ -2013,7 +2013,7 @@ form{
   position: absolute;
 	bottom: 0;
 	left: 50%;
-	transform: translate(-50%,105%);
+	transform: translate(-20%,106%);
 	width:80px;
 	height: 98px;
 	background: #fff;

BIN
src/web/staticres/images/pc/public-close-grey.png


BIN
src/web/staticres/images/pc/public-close-light.png


BIN
src/web/staticres/images/pc/public-close-white.png.png


+ 61 - 20
src/web/staticres/js/index_content.js

@@ -10,26 +10,25 @@ function toThousands(num) {
 }
 
 $(function () {
-
   // 搜索框类型选择
-$("#index .search .tips span").on("click",function(){
-  var i = $(this).index();
-  $(this).parent().find('i').animate({
-    left: 14+(95*i) +'px'
-  },200)
-  $("#index .search .tips span").removeClass('active')
-  $(this).addClass('active')
-  if(i == 0){
-    $("#zbIndex").attr("action", '/jylab/supsearch/index.html');
-    $("#zbIndex .ser").attr("name",'keywords')
-    $("#index .search .index_search_thikn").hide()
-    $("#zbIndex input").attr('placeholder', '请输入您想要查询的招标信息')
-  }else{
-    $("#zbIndex").attr("action", '/jylab/bidsearchforent/index.html');
-    $("#zbIndex .ser").attr("name",'searchvalue')
-    $("#zbIndex input").attr('placeholder', '请输入中标企业名称')
-  }
-})
+  $("#index .search .tips span").on("click",function(){
+    var i = $(this).index();
+    $(this).parent().find('i').animate({
+      left: 14+(95*i) +'px'
+    },200)
+    $("#index .search .tips span").removeClass('active')
+    $(this).addClass('active')
+    if(i == 0){
+      $("#zbIndex").attr("action", '/jylab/supsearch/index.html');
+      $("#zbIndex .ser").attr("name",'keywords')
+      $("#index .search .index_search_thikn").hide()
+      $("#zbIndex input").attr('placeholder', '请输入您想要查询的招标信息')
+    }else{
+      $("#zbIndex").attr("action", '/jylab/bidsearchforent/index.html');
+      $("#zbIndex .ser").attr("name",'searchvalue')
+      $("#zbIndex input").attr('placeholder', '请输入中标企业名称')
+    }
+  })
 
 
 function thinkList(){
@@ -76,7 +75,49 @@ $("#index .ser").bind("input propertychange",function(){
 })
 
 
+});
+
 
+(function animateUp(){
+  var obj = $('.CfadeInUp');
+  var objH= $('.CfadeInUp').outerHeight();
+  var num = [];
+  var wH  = $(window).height();
+  var wScrollTop = $(window).scrollTop();
 
+  // 获取页面所有obj的top位置,存入数组
+  for(var i=0; i<obj.length;i++){
+      num.push(obj.eq(i).offset().top+(objH/3));
+  }
+  // console.log(num)
+  // 循环数组,判断obj的位置是否在可视区中
+  function judgeTop(){
+      for(var j=0; j<num.length;j++){
+          if (num[j] >= wScrollTop && num[j] < (wScrollTop+wH-50)) {
+            console.log(j)
+              if(j == 0){
+                obj.eq(j).css({
+                    'animation-name':'CfadeInUp',
+                    'animation-duration':  0.8 +'s',
+                    'opacity':'1'
+                });
+              }else{
+                obj.eq(j).css({
+                  'animation-name':'CfadeInUp',
+                  'animation-duration':  1.4 +'s',
+                  'opacity':'1'
+              });
+              }
+          }
+      }
+  };
+  // 页面初始化时先调用一次
+  judgeTop();
 
-});
+  // 触发滚动事件调用判断函数
+  $(window).scroll(function(event) {
+      wH = $(window).height();
+      wScrollTop = $(window).scrollTop();
+      judgeTop();
+  });
+})();

+ 10 - 2
src/web/staticres/js/login.js

@@ -693,9 +693,17 @@ var haslogin = function(num,kyorpn,url){
 }
 function loginBtnType(){
 	var href = window.location.pathname;
+    var curTheme =$("#public-nav").attr('data-theme')
 	if (href=="/"||href.indexOf("subscribe")>-1||href.indexOf("advservices")>-1||href.indexOf("aboutus")>-1||href.indexOf("busicooperation")>-1||href.indexOf("pcindex.html")>-1||window.location.pathname==="/jyxspc/"||window.location.pathname==="/entpc/"){
-		$(".loginBtn").attr("onmouseover","this.style.borderColor='#2cb7ca'; this.style.color='#2cb7ca';");
-		$(".loginBtn").attr("onmouseout","this.style.borderColor='#fff'; this.style.color='#fff';");
+		if(curTheme == 'dark'){
+            $(".loginBtn").attr("onmouseover","this.style.borderColor='#2cb7ca'; this.style.color='#2cb7ca';");
+            $(".loginBtn").attr("onmouseout","this.style.borderColor='#fff'; this.style.color='#fff';");
+        }else{
+            $(".loginBtn").css({"border-color":"#e0e0e0","color":"rgb(37, 38, 39)"});
+            $(".loginBtn").attr("onmouseover","this.style.borderColor='#2cb7ca'; this.style.color='#2cb7ca';");
+            $(".loginBtn").attr("onmouseout","this.style.borderColor='#e0e0e0'; this.style.color='#252627';");
+        }
+       
 	}else if(href.indexOf("topics")>-1){
 		$(".loginBtn").css({"border":"none"});
 	}else{

+ 66 - 14
src/web/staticres/pccss/index.css

@@ -8,6 +8,40 @@
   line-clamp: 2;
   -webkit-box-orient: vertical;
 }
+
+@keyframes CfadeInUp{
+    from {
+      transform: translateY(50px);
+    }
+    to {
+      transform: translateY(0px);
+      opacity:1;
+    }
+}
+.CfadeInUp{
+    opacity: 0;
+    animation: 1s ease  forwards  alternate;
+}
+
+/* 滚动条样式 */
+::-webkit-scrollbar {
+  /*滚动条整体样式*/
+  width: 6px;
+  height: 1px;
+}
+::-webkit-scrollbar-thumb {
+  /*滚动条里面小方块*/
+  border-radius: 10px;
+  background: #e0e0e0;
+}
+::-webkit-scrollbar-track {
+  /*滚动条里面轨道*/
+  box-shadow: inset 0 0 5px #fff;
+  border-radius: 10px;
+  background: transparent;
+}
+
+
 #index {
   font-family: "微软雅黑";
   width: 100%;
@@ -132,14 +166,14 @@ font-size: 14px;
   height: 30px;
   cursor: pointer;
 }
-#index .search .tips span.active{
+#index .search .tips span.active,#index .search .tips span:hover{
   color: #2CB7CA;
 }
 
 #index .projectList{
   display: flex;
   justify-content: center;
-  margin-top: 120px;
+  margin-top: 108px;
 }
 #index .projectList ul{
   display: flex;
@@ -184,6 +218,9 @@ font-size: 14px;
   color: #1d1d1d;
   padding-left: 10px;
 }
+#index .projectList ul li:hover p{
+  color: #2CB7CA;
+}
 
 #index .jy-banner{
   width: 1200px;
@@ -248,6 +285,9 @@ font-size: 14px;
   color: #1d1d1d;
   cursor: pointer;
 }
+#index .jy-area .tab-header span:hover{
+  color: #2CB7CA;
+}
 #index .jy-area .tab-header span.active{
   color: #2CB7CA;
 }
@@ -256,12 +296,13 @@ font-size: 14px;
   background-color: #fff;
   border-radius: 6px;
   margin-top: 40px;
-  padding: 24px;
+  padding: 24px 4px;
 }
 #index .jy-area .tab-content .tab-content-area{
   display: none;
   height: 100%;
   overflow-y: auto;
+  padding: 0 20px;
 }
 #index .jy-area .tab-content .tab-content-area:nth-child(1){
   display: block;
@@ -359,7 +400,8 @@ font-size: 14px;
   color: #1d1d1d;
   cursor: pointer;
 }
-#index .newNotice .newNotice-header span.active{
+
+#index .newNotice .newNotice-header span.active,#index .newNotice .newNotice-header span:hover{
   color: #2CB7CA;
 }
 #index .newNotice .newNotice-content .tab-content-list{
@@ -446,10 +488,15 @@ font-size: 14px;
   height: 370px;
   background: #fff; 
   position: relative;
+  top: 0px;
   margin-left: 24px;
+  transition-property: top,box-shadow,transform;
+  transition-duration: 0.3s;
 }
 #index .newLatest .newLatest-content ul li:hover{
+  top: -4px;
   box-shadow: 0px 0px 28px 0px rgba(0,0,0,0.16);
+  transform: scale(1.01);
 }
 #index .newLatest .newLatest-content ul li:first-child{
   margin-left: 0;
@@ -495,7 +542,7 @@ font-size: 14px;
   color: #999;
   line-height: 22px;
   min-height: 44px;
-  margin-top: 12px;
+  margin-top: 8px;
 }
 #index .newLatest .newLatest-content ul li:hover h4{
   color: #2CB7CA;
@@ -539,7 +586,7 @@ font-size: 14px;
   padding: 0 16px 0px;
 }
 #index .newLatest .newLatest-content ul li.newLatest-content-bottom h4{
-  margin-top: 16px;
+  margin-top: 0px;
 }
 #index .newLatest .newLatest-content ul li.newLatest-content-bottom:hover h4{
   color: #1d1d1d;
@@ -554,16 +601,19 @@ font-size: 14px;
   height: 214px;
   width: 584px;
   background: #fff;
+  padding: 20px 16px;
 }
 #index .newLatest .newLatest-content ul li.newLatest-content-bottom a{
   display: flex;
   align-items: baseline;
   padding: 0 16px;
-  height: 107px;
+  height: 96px;
 }
 #index .newLatest .newLatest-content ul li.newLatest-content-bottom .dates{
   color: #999;
   font-size: 16px;
+  padding: 2px;
+  border-bottom: 1px solid #e0e0e0;
 }
 #index .newLatest .newLatest-content ul li.newLatest-content-bottom .dates span{
   color: #1d1d1d;
@@ -593,7 +643,8 @@ font-size: 14px;
   width: 280px;
   height: 360px;
   padding: 32px;
-  transition: ease 0.3s;
+  transition-property: transform,top ;
+  transition-duration: 1s,0.3s;
 }
 .jy-advantage .jy-advantage-content ul li.one{
   background: url(/images/pc/trust-grey.png) no-repeat;
@@ -623,18 +674,18 @@ font-size: 14px;
   margin-top: 16px;
 }
 .jy-advantage .jy-advantage-content ul li:hover{
+  position: relative;
+  top: 10px;
   transform: scale(1.18);
-  transition: ease 0.3s;
   color: rgba(255,255,255,0.80);
 }
+.jy-advantage .jy-advantage-content ul li:hover p,.jy-advantage .jy-advantage-content ul li:hover h4{
+  color: #fff;
+}
 .jy-advantage .jy-advantage-content ul li.one:hover{
-  transition: ease 0.3s;
   background: url(/images/pc/trust-light.png) no-repeat;
   background-size: 100%;
 }
-.jy-advantage .jy-advantage-content ul li:hover p,.jy-advantage .jy-advantage-content ul li:hover h4{
-  color: #fff;
-}
 .jy-advantage .jy-advantage-content ul li.two:hover{
   background: url(/images/pc/Massive-light.png) no-repeat;
   background-size: 100%;
@@ -695,11 +746,12 @@ font-size: 14px;
   margin: 0 auto 70px;
 }
 .jy-partners h3{
-  font-size: 32px;
+  font-size: 24px;
   padding: 66px 0 20px;
   text-align: center;
 }
 .jy-partners ul{
+  height: 350px;
   margin: -2px;
   padding: 20px 0;
 }

+ 6 - 7
src/web/staticres/pccss/public-nav-1200.css

@@ -8,10 +8,10 @@
   background-color: rgba(255, 255, 255, 0.08);
   border-bottom: 1px solid rgba(255, 255, 255, 0.2);
   z-index: 101;
-  transition: all 0.3;
 }
 
 .public-nav .iner {
+  /* transition: all 0.3s; */
   width: 1200px;
   height: 63px;
   line-height: 63px;
@@ -28,9 +28,8 @@
 }
 
 .public-nav .iner .logo img {
-  margin-top: 15px;
-  width: 130px !important;
-  height: 32px;
+  margin-top: 16px;
+  width: 120px !important;
 }
 
 .public-nav .iner .search {
@@ -71,7 +70,7 @@
 /*  width: 480px;*/
   float: left;
   position: relative;
-  transition: all 1s;
+  /* transition: all 1s; */
 }
 
 .public-nav .iner .jynav li {
@@ -93,7 +92,7 @@
   bottom: -2px;
   height: 2px;
 /*  background-color: #2cb7ca;*/
-  transition: all 0.5s;
+  /* transition: all 0.5s; */
 }
 
 .public-nav .iner .login {
@@ -180,4 +179,4 @@ input:-ms-input-placeholder {
     border-left: 5px solid transparent;
     border-right: 5px solid transparent;
     border-bottom: 8px solid #fff;
-}
+}

+ 1 - 0
src/web/staticres/vipsubscribe/js/change_industry.js

@@ -181,6 +181,7 @@ $(function () {
 
   // 控制提示框
   function showNeedPopver (show, e) {
+    console.log(e)
     if (show) {
       var nowStr = getNeedPopverTip($(e.target).text())
       if (nowStr !== '') {

+ 2 - 2
src/web/staticres/vipsubscribe/js/vip_renew.js

@@ -113,7 +113,7 @@ var renew = {
     // 设置价格
     setPrice: function (price) {
         this.price = parseInt(price)
-        coupon.updatePrice(parseInt(this.price / 100))
+        coupon.updatePrice(this.price / 100)
     },
     // 根据选中结果得到续费了多长时间的字符串
     getDuration: function (timeSelect) {
@@ -534,7 +534,7 @@ var coupon = new Vue({
     // 更新价格相关
     updatePrice: function (before) {
       console.log( '原价:' + before)
-      this.initPrice = parseInt(before);
+      this.initPrice = before;
       // 调用子组件查询最优卡券
       this.$refs.couponRef.getCoupon();
     },

+ 2 - 2
src/web/staticres/vipsubscribe/js/vip_upgrade.js

@@ -578,7 +578,7 @@ $(function () {
       "area": flag ? JSON.stringify(area) : '',
       'area_count': flag ? 0 : areaCount,
       // "industry": industry.join(","),
-      'price': Number((coupon.initPrice*100).toFixed(2)),
+      'price': parseInt(coupon.initPrice*100),
       "time": purchase.timeValue.trim(),
       // "orderType": 5,
       "activeCode": activeCodes,
@@ -725,7 +725,7 @@ var coupon = new Vue({
     // 更新价格相关
     updatePrice: function (before) {
       console.log( '原价:' + before)
-      this.initPrice = parseInt(before);
+      this.initPrice = before;
       // 调用子组件查询最优卡券
       this.$refs.couponRef.getCoupon();
     },

+ 12 - 2
src/web/templates/big-member/pc/page_index.html

@@ -46,6 +46,9 @@
             height: 608px;
             border-radius: 24px;
         }
+        .footer-banner {
+            display: none;
+        }
     </style>
 </head>
 <body>
@@ -985,13 +988,20 @@
     if (pageUserInfo.memberStatus > 0) {
         $(".footer-banner .w1200 img").attr('src', '/big-member/image/new_index/footer-banner.png')
         $(".footer-banner .w1200 map area[data-free-week]").remove()
-
     }
     if (pageUserInfo.memberStatus > 0) {
       $('.footer-banner').hide()
       $("*[data-go-buy]").text('立即使用')
       $('.click-button-box.free').hide()
     }
+    // 修改底部横幅广告
+    if (pageUserInfo.memberTrial) {
+      $(".footer-banner .w1200 img").attr('src', '/big-member/image/new_index/banner-buy.png')
+      $(".footer-banner .w1200 map area[data-free-week]").remove()
+    }
+    if (pageUserInfo.memberStatus < 0 || !pageUserInfo.memberStatus) {
+      $('.footer-banner').show()
+    }
     var canBindPhone = false
     // 此时无法获取绑定状态和登陆状态,只能同步请求已保证跳转判断正常运行
     $.ajax({
@@ -1109,7 +1119,7 @@
               validateInput()
             })
             // 信息提交事件
-            $('#collect-dialog .go-confirm').on('click', function() {
+            $('#collect-dialog .go-confirm').unbind('click').bind('click', function() {
               $(this).attr('disabled', true)
               var obj = {
                 name: $('.name-val').val(),

+ 14 - 19
src/web/templates/common/pcbottom.html

@@ -32,13 +32,13 @@
                         <dt>百宝箱</dt>
                         <dd><a href="/jyxspc">中标必听课</a></dd>
                         <dd><a href="/swordfish/docs">剑鱼文库</a></dd>
-                        <dd><a href="/big/page/index#zb">中标预测</a></dd>
+                        <dd><a href="/big/page/index#jc">中标预测</a></dd>
                         <dd><a href="/big/page/index#qz">潜在客户挖掘</a></dd>
-                        <dd><a href="/big/page/index#qz">潜在合作伙伴挖掘</a></dd>
+                        <dd><a href="/big/page/index?name=qz_1#qz">潜在合作伙伴挖掘</a></dd>
                         <dd><a href="/big/page/index#jc">投标决策分析</a></dd>
-                        <dd><a href="/big/page/index#jc">竞争对手分析</a></dd>
+                        <dd><a href="/big/page/index#fx">竞争对手分析</a></dd>
                         <dd><a href="/big/page/index#fx">市场分析</a></dd>
-                        <dd><a href="/big/page/index#fx">客户分析</a></dd>
+                        <dd><a href="/big/page/index?name=fx_2#fx">客户分析</a></dd>
                     </dl>
                     <dl>
                         <dt>联系我们</dt>
@@ -86,10 +86,6 @@
                             </li>
                             <li>
                                 <span id="share-sqq" ></span>
-                                <!-- <div>
-                                    <img src='{{Msg "seo" "cdn"}}/images/pc/wxshare.png?v={{Msg "seo" "version"}}' alt="">
-                                    <p>扫码下载</p>
-                                </div> -->
                             </li>
                         </ul>
                     </div>
@@ -142,7 +138,9 @@
 			thisCla.flag = true;
 		}
 }
-new pcShare()
+if (location.href.indexOf('jyblog') === -1) {
+  new pcShare()
+}
 </script>
 
 <div class="modal fade bidcommunity j-modal-dialog" id="bidcommunity"  tabindex="-1" role="dialog" aria-labelledby="bidcommunity" aria-hidden="true" >
@@ -228,20 +226,14 @@ new pcShare()
         border: none;
         box-sizing: border-box;
         position: fixed;
-        z-index: 99;
+        z-index: 100;
         min-width: 56px;
         bottom: 108px;
-        right: initial;
-        left: calc(50% + 680px);
+        left: initial;
+        right: 16px;
         transition: all 0.75s;
     }
 
-    @media screen and (max-width: 1500px) {
-        .right-side-box {
-            left: initial;
-            right: 58px;
-        }
-    }
 
     .right-side-box .hover-open-box {
         position: absolute;
@@ -379,6 +371,9 @@ new pcShare()
         text-align: center;
     }
 
+    .right-side-box > .right-side-item:last-child {
+        margin-bottom: 0;
+    }
     .right-side-box > .right-side-item {
         width: 100%;
         position: relative;
@@ -615,7 +610,7 @@ new pcShare()
                     }
                 }
             } catch (e) {
-                console.log('!not call message')
+                // console.log('!not call message')
             }
         }
     };

+ 32 - 20
src/web/templates/common/pchead.html

@@ -325,9 +325,11 @@
         align-items: center;
     }
     #public-nav .iner .fl .search-box i{
-        font-weight: normal;
-        padding: 0 10px 0 8px;
-        color: rgba(255,255,255,0.5);
+        background: rgba(255,255,255,0.5);
+        display: inline-block;
+        margin: 0 8px;
+        width: 1px;
+        height: 14px;
     }
     #public-nav .iner .fl .search-box img{
         width: 20px;
@@ -341,9 +343,9 @@
     }
     #public-nav .iner .fl .search-box .public-nav-close{
         border: none;
-        background: url(/images/pc/public-close-white.png) no-repeat center 24px;
-        background-size: 30px;
-        width: 30px;
+        background: url(/images/pc/public-close-white.png) no-repeat center 22px;
+        background-size: 36px;
+        width: 36px;
         height: 100%;
         cursor: pointer
     }
@@ -355,6 +357,7 @@
         border:none;
         box-sizing: border-box;
         background-color: transparent;
+        padding-left: 16px;
     }
     #public-nav[data-theme="light"]{
         border-bottom: 1px solid #ECECEC;
@@ -363,9 +366,11 @@
         background: #F2F2F4;
     }
     #public-nav[data-theme="light"] .iner .fl .search-box i{
-        padding: 0 10px 0 8px;
-        color: #ccc;
-        font-style: normal;
+        background: #ccc;
+        display: inline-block;
+        margin: 0 8px;
+        width: 1px;
+        height: 14px;;
     }
     #public-nav[data-theme="light"] .iner .fl .jynav-search{
         color: #2F2B39;
@@ -375,18 +380,31 @@
         background: url(/images/pc/public-search-grey.png) no-repeat center 22px;
         background-size: 20px;
     }
+    #public-nav[data-theme="light"] .iner .fl .search-box .public-nav-search:hover{
+        background: url(/images/pc/public-search-light.png) no-repeat center 22px;
+        background-size: 20px;
+    }
     #public-nav[data-theme="light"] .iner .fl .search-box .public-nav-close{
-        background: url(/images/pc/public-close-grey.png) no-repeat center 24px;
-        background-size: 30px;
+        background: url(/images/pc/public-close-grey.png) no-repeat left 21px;
+        background-size: 22px;
+    }
+    #public-nav[data-theme="light"] .iner .fl .search-box .public-nav-close:hover{
+        background: url(/images/pc/public-close-light.png) no-repeat left 21px;
+        background-size: 22px;
     }
     #public-nav[data-theme="light"]  .iner .fl .jy_nav_searchBtn{
+        background: url(/images/pc/public-search-grey.png) no-repeat center center;
+        background-size: 20px 20px;
+    }
+    #public-nav[data-theme="light"]  .iner .fl .jy_nav_searchBtn:hover{
         background: url(/images/pc/public-search-light.png) no-repeat center center;
-        background-size: 20px;
+        background-size: 20px 20px;
     }
     #public-nav[data-theme="light"] .iner .fl .jynav-search::placeholder{
         color: #ccc;
         font-style: 14px;
     }
+    
 
 
     #public-nav .iner .jynav{
@@ -668,7 +686,7 @@
                 <form method="post" action="/jylab/supsearch/index.html" id="public_header">
                     <input class="jynav-search" autocomplete="off" placeholder="请输入您想要查询的招标信息" value="" type="text" name="keywords" />
                     <input type="hidden" name="searchvalue">
-                    <button class="public-nav-search" type="submit" onclick="zbSeatch('public_header')" ></button><i>|</i>
+                    <button class="public-nav-search" type="submit" onclick="zbSeatch('public_header')" ></button><i></i>
                     <span class="public-nav-close search-close"></span>
                 </form>
             </div>
@@ -893,12 +911,6 @@
                     setNavTheme('dark')
                 }
             }
-            // 是否在首页
-            if(isEnableCheck&&isEnableCheck.content != '首页'){
-                $("#public-nav .iner .jy_nav_searchBtn").hide();
-                $("#public-nav .iner .search-box").fadeIn()
-
-            }
 
             // 导航栏是否固定
             var noFixedArr = ['/article/indexcontent','/article/content']
@@ -944,7 +956,7 @@ $(function(){
     // 搜索框显示、隐藏
     $("#public-nav .iner .fl .jy_nav_searchBtn").on("click",function(){
         $(this).hide()
-        $("#public-nav .iner .fl .search-box").fadeIn()
+        $("#public-nav .iner .fl .search-box").show()
     })
     $("#public-nav .iner .fl .search-box .search-close").on('click',function(){
         $(this).parents('.search-box').hide()

+ 9 - 9
src/web/templates/pc/biddetail_bd.html

@@ -201,13 +201,13 @@ $(function(){
               var stArr = AD.o_extend.startTime.split("-");
               if (stArr.length==6){
                 var stStr = stArr[0]+"-"+stArr[1]+"-"+stArr[2]+" "+stArr[3]+":"+stArr[4]+":"+stArr[5]
-                var stTime = new Date(stStr).getTime();
+                var stTime = new Date(stStr.replace(/-/g, '/')).getTime();
                 //未开始
                 if (stTime>nowTime){
                   if (ExcludeList!=""){
                     ExcludeList +="-"
                   }
-                  ExcludeList = ExcludeList+ random 
+                  ExcludeList = ExcludeList+ random
                   continue
                 }
               }
@@ -216,13 +216,13 @@ $(function(){
               var etArr = AD.o_extend.endTime.split("-");
               if (etArr.length==6){
                 var etStr = etArr[0]+"-"+etArr[1]+"-"+etArr[2]+" "+etArr[3]+":"+etArr[4]+":"+etArr[5]
-                var etTime = new Date(etStr).getTime();
+                var etTime = new Date(etStr.replace(/-/g, '/')).getTime();
                 //已结束
                 if (etTime<nowTime){
                   if (ExcludeList!=""){
                     ExcludeList +="-"
                   }
-                  ExcludeList = ExcludeList+ random 
+                  ExcludeList = ExcludeList+ random
                   continue
                 }
               }
@@ -250,7 +250,7 @@ $(function(){
 <div  onclick="adv_statistics(this)" adv_name="PC快照页-底部"  class="adv-pccontent-bottom" id="B2" style="cursor:default;">
 	<script>
 		{{$s:=(Ad "jy-pccontent-bottom" -1)}}
-		var ADList={{$s}}; 
+		var ADList={{$s}};
     var ExcludeList = ""
     if (ADList.length>0){
       for (var i=0;i<ADList.length;i++ ){
@@ -268,13 +268,13 @@ $(function(){
             var stArr = AD.o_extend.startTime.split("-");
             if (stArr.length==6){
               var stStr = stArr[0]+"-"+stArr[1]+"-"+stArr[2]+" "+stArr[3]+":"+stArr[4]+":"+stArr[5]
-              var stTime = new Date(stStr).getTime();
+              var stTime = new Date(stStr.replace(/-/g, '/')).getTime();
               //未开始
               if (stTime>nowTime){
                 if (ExcludeList!=""){
                   ExcludeList +="-"
                 }
-                ExcludeList = ExcludeList+ random 
+                ExcludeList = ExcludeList+ random
                 continue
               }
             }
@@ -283,13 +283,13 @@ $(function(){
             var etArr = AD.o_extend.endTime.split("-");
             if (etArr.length==6){
               var etStr = etArr[0]+"-"+etArr[1]+"-"+etArr[2]+" "+etArr[3]+":"+etArr[4]+":"+etArr[5]
-              var etTime = new Date(etStr).getTime();
+              var etTime = new Date(etStr.replace(/-/g, '/')).getTime();
               //已结束
               if (etTime<nowTime){
                 if (ExcludeList!=""){
                   ExcludeList +="-"
                 }
-                ExcludeList = ExcludeList+ random 
+                ExcludeList = ExcludeList+ random
                 continue
               }
             }

+ 9 - 9
src/web/templates/pc/biddetail_rec.html

@@ -654,13 +654,13 @@ function isWechat() {
               var stArr = AD.o_extend.startTime.split("-");
               if (stArr.length==6){
                 var stStr = stArr[0]+"-"+stArr[1]+"-"+stArr[2]+" "+stArr[3]+":"+stArr[4]+":"+stArr[5]
-                var stTime = new Date(stStr).getTime();
+                var stTime = new Date(stStr.replace(/-/g, '/')).getTime();
                 //未开始
                 if (stTime>nowTime){
                   if (ExcludeList!=""){
                     ExcludeList +="-"
                   }
-                  ExcludeList = ExcludeList+ random 
+                  ExcludeList = ExcludeList+ random
                   continue
                 }
               }
@@ -669,13 +669,13 @@ function isWechat() {
               var etArr = AD.o_extend.endTime.split("-");
               if (etArr.length==6){
                 var etStr = etArr[0]+"-"+etArr[1]+"-"+etArr[2]+" "+etArr[3]+":"+etArr[4]+":"+etArr[5]
-                var etTime = new Date(etStr).getTime();
+                var etTime = new Date(etStr.replace(/-/g, '/')).getTime();
                 //已结束
                 if (etTime<nowTime){
                   if (ExcludeList!=""){
                     ExcludeList +="-"
                   }
-                  ExcludeList = ExcludeList+ random 
+                  ExcludeList = ExcludeList+ random
                   continue
                 }
               }
@@ -778,7 +778,7 @@ function isWechat() {
 <div   onclick="adv_statistics(this)" adv_name="PC快照页-底部"  class="adv-pccontent-bottom" id="B2" style="cursor:default;">
 	<script>
 		{{$s:=(Ad "jy-pccontent-bottom" -1)}}
-		var ADList={{$s}}; 
+		var ADList={{$s}};
     var ExcludeList = ""
     if (ADList.length>0){
       for (var i=0;i<ADList.length;i++ ){
@@ -796,13 +796,13 @@ function isWechat() {
             var stArr = AD.o_extend.startTime.split("-");
             if (stArr.length==6){
               var stStr = stArr[0]+"-"+stArr[1]+"-"+stArr[2]+" "+stArr[3]+":"+stArr[4]+":"+stArr[5]
-              var stTime = new Date(stStr).getTime();
+              var stTime = new Date(stStr.replace(/-/g, '/')).getTime();
               //未开始
               if (stTime>nowTime){
                 if (ExcludeList!=""){
                   ExcludeList +="-"
                 }
-                ExcludeList = ExcludeList+ random 
+                ExcludeList = ExcludeList+ random
                 continue
               }
             }
@@ -811,13 +811,13 @@ function isWechat() {
             var etArr = AD.o_extend.endTime.split("-");
             if (etArr.length==6){
               var etStr = etArr[0]+"-"+etArr[1]+"-"+etArr[2]+" "+etArr[3]+":"+etArr[4]+":"+etArr[5]
-              var etTime = new Date(etStr).getTime();
+              var etTime = new Date(etStr.replace(/-/g, '/')).getTime();
               //已结束
               if (etTime<nowTime){
                 if (ExcludeList!=""){
                   ExcludeList +="-"
                 }
-                ExcludeList = ExcludeList+ random 
+                ExcludeList = ExcludeList+ random
                 continue
               }
             }

+ 60 - 59
src/web/templates/pc/index.html

@@ -136,7 +136,7 @@
         </div>
 			</div>
 
-      <div class="projectList">
+      <div class="projectList CfadeInUp">
         <ul>
           <li>
             <a href="">
@@ -147,24 +147,17 @@
         </ul>
       </div>
 
-      <script>
-
-
-
-      </script>
-
       <!-- 剑鱼广告位轮播 -->
-      <div class="jy-banner">
+      <div class="jy-banner CfadeInUp">
         <div class="jy-banner-l" id="jy-pc-index-leftad">
-          <div  class="carousel slide center-block" data-ride="carousel">
+          <div  class="carousel slide center-block" id="slidershow" data-ride="carousel">
             <div class="carousel-inner" role="listbox">
             </div>
-            <ol class="carousel-indicators">
-						</ol>
+            <ol class="carousel-indicators"></ol>
           </div>
         </div>
         <div class="jy-banner-r"  id="jy-pc-index-rightad">
-          <div  class="carousel-one slide center-block" data-ride="carousel">
+          <div  class="carousel-one slide center-block" id="slidershow1" data-ride="carousel">
             <div class="carousel-inner" role="listbox">
 
             </div>
@@ -176,13 +169,13 @@
 
       <!-- 剑鱼区域链接 -->
       <div class="nav-tab jy-area">
-        <div class="tab-header">
+        <div class="tab-header CfadeInUp">
            <span class="active">按地域</span>
            <span>按信息类型</span>
            <span>热门招标</span>
            <i></i>
         </div>
-        <div class="tab-content">
+        <div class="tab-content CfadeInUp">
            <div class="tab-content-area">
              <ul>
               <li class="zxs">
@@ -219,7 +212,7 @@
            <div class="tab-content-area">
             <ul>
               {{range $i, $v := .T.labUrl_2}}
-              <li class="provice industry">
+              <li class="provice">
                 {{range $y, $x := $v}}
                    {{range $yi, $xi := $x}}
                       {{if eq $yi 0}}<a href="{{$xi.url}}" target="_blank">{{$xi.key}}</a>
@@ -254,15 +247,15 @@
 
       <!-- 最新公告信息 -->
       <div class="newNotice">
-        <h3>最新公告信息</h3>
-          <div class="newNotice-header">
+        <h3 class="CfadeInUp">最新公告信息</h3>
+          <div class="newNotice-header CfadeInUp">
             <span class="active">拟建项目</span>
             <span>招标预告</span>
             <span>招标公告</span>
             <span>招标结果</span>
             <i></i>
          </div>
-         <div class="newNotice-content">
+         <div class="newNotice-content CfadeInUp">
             <div class="tab-content-list" style="display: block;">
               <ul>
                 {{range $i, $v := .T.newArticle_1}}
@@ -329,8 +322,8 @@
 
       <!-- 最新资讯 -->
 		  <div class="newLatest">
-        <h3>最新资讯</h3>
-         <div class="newLatest-content">
+        <h3 class="CfadeInUp">最新资讯</h3>
+         <div class="newLatest-content CfadeInUp">
             <ul>
               {{range $i, $v := .T.blog}}
                 {{if lt $i 3}}
@@ -377,7 +370,7 @@
       </div>
 
 
-      <div class="jy-advantage">
+      <div class="jy-advantage CfadeInUp">
         <div class="jy-advantage-content">
           <ul>
             <li class="one">
@@ -401,22 +394,22 @@
       </div>
 
       <div class="jy-onlineData">
-        <div class="jy-onlineData-content">
+        <div class="jy-onlineData-content CfadeInUp">
            <ul>
                 <li>
                     <h4>自上线以来</h4>
                     <p>剑鱼标讯为用户成功推送了信息</p>
-                    <strong><mark id="flip-number-1">{{.T.infoNum.i_push}}</mark> <i>条</i></strong>
+                    <strong><mark id="flip-number-1">{{.T.infoNum.i_push}}</mark><i>条</i></strong>
                   </li>
                   <li>
                   <h4>最近三十天</h4>
                   <p>剑鱼标讯从{{.T.infoNum.i_site}}个招标网站收录了</p>
-                  <strong><mark id="flip-number-2">{{.T.infoNum.i_bidmonth}} </mark><i>条</i></strong>
+                  <strong><mark id="flip-number-2">{{.T.infoNum.i_bidmonth}}</mark><i>条</i></strong>
                 </li>
                 <li>
                   <h4>今天</h4>
                   <p>剑鱼标讯成功为用户推送了信息</p>
-                  <strong><mark id="flip-number-3">{{.T.infoNum.i_bidtoday}} </mark><i>条</i></strong>
+                  <strong><mark id="flip-number-3">{{.T.infoNum.i_bidtoday}}</mark><i>条</i></strong>
                 </li>
 
            </ul>
@@ -425,7 +418,7 @@
       </div>
 
       <!-- 合作伙伴 -->
-      <div class="jy-partners">
+      <div class="jy-partners CfadeInUp">
           <h3>合作伙伴</h3>
           <ul>
             <li>
@@ -634,7 +627,7 @@ if (ADList.length>0){
         var stArr = AD.o_extend.startTime.split("-");
         if (stArr.length==6){
           var stStr = stArr[0]+"-"+stArr[1]+"-"+stArr[2]+" "+stArr[3]+":"+stArr[4]+":"+stArr[5]
-          var stTime = new Date(stStr).getTime();
+          var stTime = new Date(stStr.replace(/-/g, '/')).getTime();
           //未开始
           if (stTime>nowTime){
             continue
@@ -645,7 +638,7 @@ if (ADList.length>0){
         var etArr = AD.o_extend.endTime.split("-");
         if (etArr.length==6){
           var etStr = etArr[0]+"-"+etArr[1]+"-"+etArr[2]+" "+etArr[3]+":"+etArr[4]+":"+etArr[5]
-          var etTime = new Date(etStr).getTime();
+          var etTime = new Date(etStr.replace(/-/g, '/')).getTime();
           //已结束
           if (etTime<nowTime){
             continue
@@ -685,32 +678,34 @@ var str_projectList = ""
 {{end}}
 $(".projectList ul").html(str_projectList)
 var timer=null,timer1 = null
-        $(".projectList li span").mouseenter(function(){
+        $(".projectList li").mouseenter(function(){
           clearInterval(timer)
           clearInterval(timer1)
-            var that = this; l = 0
+            var that = this; l = $(this).find('img').position().top
               timer = setInterval(function(){
-                if(l<1536){
-                    l += 64
-                    $(that).find('img').css("top",-l +'px')
+                if(l > -1536){
+                    l -= 64
+                    $(that).find('img').css("top",l +'px')
                   }else{
+                  $(that).find('img').css("top",'-1536px')
                   clearInterval(timer)
                 }
-              },1000/20)
+              },1000/25)
         })
-        $(".projectList li span").mouseleave(function(){
+        $(".projectList li").mouseleave(function(){
           clearInterval(timer)
           clearInterval(timer1)
-          var that = this,l = 1536
+          var that = this,l = $(this).find('img').position().top
+          console.log($(this).find('img').position().top)
               timer1 = setInterval(function(){
-                if(l > 0){
-                    l -= 64;
-                    $(that).find('img').css("top",-l +'px')
+                if(l < 0){
+                    l += 64;
+                    $(that).find('img').css("top",l +'px')
                 }else{
-                  // $(that).find('img').css("top",'0px')
+                  $(that).find('img').css("top",'0px')
                   clearInterval(timer1)
                 }
-              },1000/20)
+              },1000/25)
         })
 
 
@@ -745,14 +740,14 @@ var str_left_img = "",str_left_ = "",left_img_index = -1;
     var stArr = left_img.o_extend.startTime.split("-");
     if (stArr.length==6){
       var stStr = stArr[0]+"-"+stArr[1]+"-"+stArr[2]+" "+stArr[3]+":"+stArr[4]+":"+stArr[5]
-       stTime = new Date(stStr).getTime();
+       stTime = new Date(stStr.replace(/-/g, '/')).getTime();
     }
   }
   if (left_img.o_extend.endTime!=undefined){
     var etArr = left_img.o_extend.endTime.split("-");
     if (etArr.length==6){
       var etStr = etArr[0]+"-"+etArr[1]+"-"+etArr[2]+" "+etArr[3]+":"+etArr[4]+":"+etArr[5]
-      etTime = new Date(etStr).getTime();
+      etTime = new Date(etStr.replace(/-/g, '/')).getTime();
 
     }
   }
@@ -773,7 +768,10 @@ var str_left_img = "",str_left_ = "",left_img_index = -1;
   }
 {{end}}
 $(".jy-banner-l .carousel-inner").html(str_left_img)
-$(".jy-banner-l  .carousel-indicators").html(str_left_)
+if(left_img_index>0){
+  $(".jy-banner-l  .carousel-indicators").html(str_left_)
+}
+
 
 var str_right_img = "",right_img_index = -1,str_right_ = '';
 {{$s:=(Ad "jy-pc-index-rightad" -1)}}
@@ -784,14 +782,14 @@ var stTime = nowTime -1000,etTime = nowTime + 1000
     var stArr = right_img.o_extend.startTime.split("-");
     if (stArr.length==6){
       var stStr = stArr[0]+"-"+stArr[1]+"-"+stArr[2]+" "+stArr[3]+":"+stArr[4]+":"+stArr[5]
-       stTime = new Date(stStr).getTime();
+       stTime = new Date(stStr.replace(/-/g, '/')).getTime();
     }
   }
   if (right_img.o_extend.endTime!=undefined){
     var etArr = right_img.o_extend.endTime.split("-");
     if (etArr.length==6){
       var etStr = etArr[0]+"-"+etArr[1]+"-"+etArr[2]+" "+etArr[3]+":"+etArr[4]+":"+etArr[5]
-      etTime = new Date(etStr).getTime();
+      etTime = new Date(etStr.replace(/-/g, '/')).getTime();
 
     }
   }
@@ -799,22 +797,25 @@ var stTime = nowTime -1000,etTime = nowTime + 1000
   if(nowTime>stTime && etTime>nowTime){
     right_img_index += 1
     if(right_img_index == 0){
-    str_right_img  += '<div class="item active">'
-      str_right_ += '<li class="active" data-target="#slidershow" data-slide-to="'+left_img_index+'"></li>'
-  }else{
-    str_right_img  += '<div class="item">'
-      str_right_ += '<li  data-target="#slidershow" data-slide-to="'+left_img_index+'"></li>'
-  }
-  if(right_img.s_link){
-    str_right_img += '<a href="'+right_img.s_link+'"><img src="'+right_img.s_pic+'" alt="..."></a></div>'
-  }else{
-    str_right_img += '<span><img src="'+right_img.s_pic+'" alt="..."></span></div>'
-  }
+      str_right_img  += '<div class="item active">'
+      str_right_ += '<li class="active" data-target="#slidershow1" data-slide-to="'+left_img_index+'"></li>'
+    }else{
+      str_right_img  += '<div class="item">'
+      str_right_ += '<li  data-target="#slidershow1" data-slide-to="'+left_img_index+'"></li>'
+    }
+    if(right_img.s_link){
+      str_right_img += '<a href="'+right_img.s_link+'"><img src="'+right_img.s_pic+'" alt="..."></a></div>'
+    }else{
+      str_right_img += '<span><img src="'+right_img.s_pic+'" alt="..."></span></div>'
+    }
   }
 
 {{end}}
 $(".jy-banner-r .carousel-inner").html(str_right_img)
-$(".jy-banner-r  .carousel-indicators").html(str_right_)
+if(right_img_index > 0){
+  $(".jy-banner-r  .carousel-indicators").html(str_right_)
+}
+
 
 
 
@@ -902,7 +903,7 @@ window._bd_share_config = {
 $(function(){
 	setTimeout("document.getElementById(\"keywords\").focus()",50);
 	haslogin({{.T.logid}});
-	new pcShare();
+    new pcShare();
 	$("#share-weixinF").mouseover(function(){
 		$("#share-weixin").removeClass("hidden");
 	});