Browse Source

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

zhangxinlei1996 3 years ago
parent
commit
1228157f45
100 changed files with 3500 additions and 2742 deletions
  1. 10 0
      1.html
  2. 0 1
      src/db.json
  3. 3 3
      src/jfw/front/pcIndex.go
  4. 57 40
      src/jfw/front/shorturl.go
  5. 8 4
      src/jfw/front/supsearch.go
  6. 34 13
      src/jfw/front/swordfish.go
  7. 29 20
      src/jfw/modules/app/src/app/front/shorturl.go
  8. 5 3
      src/jfw/modules/app/src/app/front/swordfish.go
  9. 1044 964
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js
  10. 28 2
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/set_infotype.js
  11. 22 7
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/utils.js
  12. 4 4
      src/jfw/modules/app/src/web/staticres/jyapp/css/appbutton.css
  13. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/css/searchindex.css
  14. 26 11
      src/jfw/modules/app/src/web/staticres/jyapp/css/wxinfocontent.css
  15. 102 1
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  16. 131 38
      src/jfw/modules/app/src/web/staticres/jyapp/js/historypush.js
  17. 77 16
      src/jfw/modules/app/src/web/staticres/jyapp/js/searchindex.js
  18. 3 1
      src/jfw/modules/app/src/web/staticres/jyapp/js/track/track.js
  19. 3 2
      src/jfw/modules/app/src/web/staticres/jyapp/js/track/track.umd.min.js
  20. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_ai_add.html
  21. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_ai_balance.html
  22. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_ai_result.html
  23. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_ai_search.html
  24. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_ai_unit.html
  25. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_analysis_filter.html
  26. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_analysis_result.html
  27. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_analysis_search.html
  28. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_bid_balance.html
  29. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_bid_recharge.html
  30. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_bid_use_intro.html
  31. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_bigVip_detail.html
  32. 2 2
      src/jfw/modules/app/src/web/templates/big-member/page_big_subscribe.html
  33. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_bigvip_subreport_month.html
  34. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_bigvip_subreport_week.html
  35. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_bigvip_viewpage.html
  36. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_buy_commit.html
  37. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_contrast.html
  38. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_demo.html
  39. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_ent_follow.html
  40. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_ent_follow_search.html
  41. 393 366
      src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait.html
  42. 2 2
      src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait_change.html
  43. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_forecast_detail.html
  44. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_forecast_list.html
  45. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_free_contrast_trial.html
  46. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_full.html
  47. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_init.html
  48. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_land_setting.html
  49. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_landingPage.html
  50. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_landingPage_old.html
  51. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_main_root.html
  52. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_ontrial_commit.html
  53. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_ontrial_landingPage.html
  54. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_orderdetail_aiForecastPack.html
  55. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_orderdetail_member.html
  56. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_orderdetail_subAccount.html
  57. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_potential_cor.html
  58. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_potential_cor_list.html
  59. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_pro_follow_detail.html
  60. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_pro_follow_list.html
  61. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_push_setting_detail.html
  62. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_push_settings.html
  63. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_report_detail_month.html
  64. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_report_detail_week.html
  65. 247 224
      src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html
  66. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_voucher_center.html
  67. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_write_infor.html
  68. 4 0
      src/jfw/modules/app/src/web/templates/common/js.html
  69. 6 1
      src/jfw/modules/app/src/web/templates/dataExport/dataExport_subType.html
  70. 0 1
      src/jfw/modules/app/src/web/templates/dataPack/index.html
  71. 5 1
      src/jfw/modules/app/src/web/templates/dataPack/recharge.html
  72. 0 1
      src/jfw/modules/app/src/web/templates/dataPack/recordList.html
  73. 1 1
      src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info.html
  74. 1 1
      src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_push.html
  75. 23 4
      src/jfw/modules/app/src/web/templates/vipsubscribe/messageType.html
  76. 134 58
      src/jfw/modules/app/src/web/templates/weixin/historypush.html
  77. 2 2
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  78. 153 29
      src/jfw/modules/app/src/web/templates/weixin/search/tabSearch.html
  79. 5 5
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  80. 58 18
      src/jfw/modules/bigmember/src/entity/portrait.go
  81. 2 2
      src/jfw/modules/bigmember/src/entity/portraitBuyerSearch.go
  82. 5 5
      src/jfw/modules/bigmember/src/entity/portraitWinnerSearch.go
  83. 120 22
      src/jfw/modules/bigmember/src/service/portrait/memberPortraitAction.go
  84. 1 1
      src/jfw/modules/bigmember/src/service/portrait/subvipPortraitAction.go
  85. 21 7
      src/jfw/modules/common/src/qfw/util/bidsearch/search.go
  86. 101 0
      src/jfw/modules/entsesearch/src/web/staticres/jylab/entsesearch/js/common.js
  87. 100 0
      src/jfw/modules/followent/src/web/staticres/jylab/followent/js/common.js
  88. 26 2
      src/jfw/modules/subscribepay/src/entity/dataExportPackStruct.go
  89. 20 0
      src/jfw/modules/subscribepay/src/service/dataExportPay.go
  90. 1 0
      src/jfw/modules/subscribepay/src/service/dataexportPack.go
  91. 11 11
      src/jfw/modules/weixin/src/config.json
  92. 21 6
      src/web/staticres/big-member/js/utils.js
  93. 125 4
      src/web/staticres/common-module/collection/css/index.css
  94. 4 4
      src/web/staticres/common-module/collection/js/buyer-example.js
  95. 30 2
      src/web/staticres/common-module/collection/js/date-mobile.js
  96. 124 51
      src/web/staticres/common-module/collection/js/ent_portrait.js
  97. 71 3
      src/web/staticres/common-module/collection/js/money-mobile.js
  98. 5 11
      src/web/staticres/common-module/collection/js/notice-mobile.js
  99. 0 701
      src/web/staticres/common-module/collection/js/utils.js
  100. 45 19
      src/web/staticres/common-module/collection/js/vip-dialog.js

+ 10 - 0
1.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <title>$Title$</title>
+</head>
+<body>
+$END$
+</body>
+</html>

+ 0 - 1
src/db.json

@@ -68,6 +68,5 @@
 			"maxOpenConns": 5,
 			"maxIdleConns": 5
 	    }
-
     }
 }

+ 3 - 3
src/jfw/front/pcIndex.go

@@ -151,7 +151,7 @@ func GetNewArticle(typ int) (list []map[string]interface{}) {
 	if l, ok := redis.Get("other", rediskey).([]interface{}); ok && l != nil && len(l) > 0 {
 		list = util.ObjArrToMapArr(l)
 	} else {
-		_, _, lists := bidsearch.GetPcBidSearchData("", "", "", subtype, "", "", "", "", "", "", "", 1, bidsearch.SearchPageSize_PC, false, nil, bidSearch_field_1)
+		_, _, lists := bidsearch.GetPcBidSearchData("", "", "", subtype, "", "", "", "", "", "", "", 1, bidsearch.SearchPageSize_PC, false, nil, bidSearch_field_1, "")
 		if lists != nil && len(*lists) > 5 {
 			*lists = (*lists)[0:6]
 			for _, v := range *lists {
@@ -160,7 +160,7 @@ func GetNewArticle(typ int) (list []map[string]interface{}) {
 				delete(v, "toptype")
 				delete(v, "s_subscopeclass")
 				tmpdate := v["publishtime"]
-				v["publishtime"] = util.TimeDiff(time.Unix(util.Int64All(tmpdate.(float64)), 0))
+				v["publishtime"] = util.Int64All(tmpdate.(float64))
 				if v["budget"] != nil {
 					v["budget"] = ConversionMoeny(v["budget"])
 				} else if v["bidamount"] != nil {
@@ -415,7 +415,7 @@ func (f *PcIndex) SearchResult(at, name string) error {
 
 			} else {
 				//关键词
-				_, _, datas = bidsearch.GetPcBidSearchData(keywords, "", "", "", key_industry, "", "", "", "", "", "", 0, bidsearch.SearchPageSize_PC, false, nil, bidSearch_field_1)
+				_, _, datas = bidsearch.GetPcBidSearchData(keywords, "", "", "", key_industry, "", "", "", "", "", "", 0, bidsearch.SearchPageSize_PC, false, nil, bidSearch_field_1, "")
 				if datas != nil && len(*datas) > limitcount {
 					*datas = (*datas)[0:limitcount]
 				}

+ 57 - 40
src/jfw/front/shorturl.go

@@ -12,6 +12,7 @@ import (
 	. "mongodb"
 	"net/url"
 	"qfw/util"
+	"qfw/util/elastic"
 
 	"qfw/util/jy"
 	"qfw/util/redis"
@@ -265,28 +266,36 @@ func (s *Short) Article(stype, id string) error {
 
 			s.T["obj"] = obj
 			if obj["entidlist"] != nil { //大会员中标企业跳转至画像
-				winner := util.ObjToString(obj["winner"])
-				s_winner := util.ObjToString(obj["s_winner"])
-				idObjs, _ := obj["entidlist"].([]interface{})
-				winnerId := ""
-				if names := strings.Split(s_winner, ","); len(names) > 1 {
-					index := 0
-					for i := 0; i < len(names); i++ {
-						if names[i] == winner {
-							index = i
-							break
+				if winner := util.ObjToString(obj["winner"]); winner != "" {
+					//临时更改为企业名称查询企业id
+					rData := elastic.Get("qyxy", "qyxy", fmt.Sprintf(`{"query":{"bool":{"should":[{"term":{"company_name":"%s"}},{"term":{"hname":"%s"}}],"minimum_should_match":1}},"_source":["name","_id","capital","company_phone"],"size":1}`, winner, winner))
+					if rData != nil && len(*rData) == 1 {
+						if entId := util.ObjToString((*rData)[0]["_id"]); entId != "" {
+							obj["entId"] = util.EncodeArticleId2ByCheck(util.ObjToString((*rData)[0]["_id"]))
 						}
 					}
-					if len(idObjs) > index {
-						winnerId = util.ObjToString(idObjs[index])
-					}
-				} else { //中标企业仅一个
-					if len(idObjs) > 0 {
-						winnerId = util.ObjToString(idObjs[0])
-					}
-				}
-				if winnerId != "" {
-					obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
+					//s_winner := util.ObjToString(obj["s_winner"])
+					//idObjs, _ := obj["entidlist"].([]interface{})
+					//winnerId := ""
+					//if names := strings.Split(s_winner, ","); len(names) > 1 {
+					//	index := 0
+					//	for i := 0; i < len(names); i++ {
+					//		if names[i] == winner {
+					//			index = i
+					//			break
+					//		}
+					//	}
+					//	if len(idObjs) > index {
+					//		winnerId = util.ObjToString(idObjs[index])
+					//	}
+					//} else { //中标企业仅一个
+					//	if len(idObjs) > 0 {
+					//		winnerId = util.ObjToString(idObjs[0])
+					//	}
+					//}
+					//if winnerId != "" {
+					//	obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
+					//}
 				}
 			}
 			if from_userid != "" && se.Decode4Hex(from_userid) != "" && from_userid != userId && util.ObjToString(obj["subtype"]) != "拟建" { //分享开打的
@@ -365,28 +374,36 @@ func (s *Short) Article(stype, id string) error {
 					s.SetSession("projectname", obj["projectname"])
 				}
 				if obj["entidlist"] != nil { //大会员中标企业跳转至画像
-					winner := util.ObjToString(obj["winner"])
-					s_winner := util.ObjToString(obj["s_winner"])
-					idObjs, _ := obj["entidlist"].([]interface{})
-					winnerId := ""
-					if names := strings.Split(s_winner, ","); len(names) > 1 {
-						index := 0
-						for i := 0; i < len(names); i++ {
-							if names[i] == winner {
-								index = i
-								break
+					if winner := util.ObjToString(obj["winner"]); winner != "" {
+						//临时更改为企业名称查询企业id
+						rData := elastic.Get("qyxy", "qyxy", fmt.Sprintf(`{"query":{"bool":{"should":[{"term":{"company_name":"%s"}},{"term":{"hname":"%s"}}],"minimum_should_match":1}},"_source":["name","_id","capital","company_phone"],"size":1}`, winner, winner))
+						if rData != nil && len(*rData) == 1 {
+							if entId := util.ObjToString((*rData)[0]["_id"]); entId != "" {
+								obj["entId"] = util.EncodeArticleId2ByCheck(util.ObjToString((*rData)[0]["_id"]))
 							}
 						}
-						if len(idObjs) > index {
-							winnerId = util.ObjToString(idObjs[index])
-						}
-					} else { //中标企业仅一个
-						if len(idObjs) > 0 {
-							winnerId = util.ObjToString(idObjs[0])
-						}
-					}
-					if winnerId != "" {
-						obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
+						//s_winner := util.ObjToString(obj["s_winner"])
+						//idObjs, _ := obj["entidlist"].([]interface{})
+						//winnerId := ""
+						//if names := strings.Split(s_winner, ","); len(names) > 1 {
+						//	index := 0
+						//	for i := 0; i < len(names); i++ {
+						//		if names[i] == winner {
+						//			index = i
+						//			break
+						//		}
+						//	}
+						//	if len(idObjs) > index {
+						//		winnerId = util.ObjToString(idObjs[index])
+						//	}
+						//} else { //中标企业仅一个
+						//	if len(idObjs) > 0 {
+						//		winnerId = util.ObjToString(idObjs[0])
+						//	}
+						//}
+						//if winnerId != "" {
+						//	obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
+						//}
 					}
 				}
 

+ 8 - 4
src/jfw/front/supsearch.go

@@ -113,7 +113,7 @@ func (p *Pcsearch) ProposedProject() error {
 	if len(s_word) > 0 {
 		status = 2
 		var count int64
-		count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, "", "", "", "", "", "", "", 0, bidsearch.SearchPageSize_PC, true, nil, bidSearch_field_1)
+		count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, "", "", "", "", "", "", "", 0, bidsearch.SearchPageSize_PC, true, nil, bidSearch_field_1, "")
 		listSize := 0
 		if list != nil {
 			listSize = len(*list)
@@ -248,6 +248,8 @@ func (p *Pcsearch) PcSearchIndex() error {
 	//高级筛选 仅vip用户可查询
 	var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 	var buyerclass string = ""                    //采购单位类别
+	var notkey string = ""                        //排除词
+
 	selectType := p.GetString("selectType")
 	if selectType == "" {
 		selectType = "title,content"
@@ -274,6 +276,7 @@ func (p *Pcsearch) PcSearchIndex() error {
 	if isPayedUser {
 		buyerclass = p.GetString("buyerclass")
 		hasBuyerTel, hasWinnerTel = p.GetString("buyertel"), p.GetString("winnertel")
+		notkey = p.GetString("notkey")
 	} else {
 		//时间自定义选择默认是vip 大会员 等权限
 		if len(strings.Split(publishtime, "_")) == 2 {
@@ -292,7 +295,7 @@ func (p *Pcsearch) PcSearchIndex() error {
 	secondKWS := ""
 	if len(s_word) > 0 || len(industry) > 0 {
 		status = 2
-		count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, queryItems, bidSearch_field_1)
+		count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, queryItems, bidSearch_field_1, notkey)
 		listSize := 0
 		if list != nil {
 			listSize = len(*list)
@@ -309,7 +312,7 @@ func (p *Pcsearch) PcSearchIndex() error {
 			if secondSearch {
 				secondKWS = jy.HttpEs(s_word, "ik_smart", public.DbConf.Elasticsearch.Main.Address)
 				findfields := `"title"`
-				qstr := bidsearch.GetSearchQuery(secondKWS, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, bidsearch.GetBidSearchQuery(area, publishtime, subtype, "", buyerclass))
+				qstr := bidsearch.GetSearchQuery(secondKWS, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, bidsearch.GetBidSearchQuery(area, publishtime, subtype, "", buyerclass), notkey)
 				secRel := elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, bidSearch_field, 0, 2*bidsearch.SearchPageSize_PC, 0, false)
 				if secRel != nil {
 					public.BidListConvert(industry, secRel)
@@ -391,6 +394,7 @@ func (p *Pcsearch) PcSearchIndex() error {
 		p.T["buyerclass"] = buyerclass
 		p.T["buyertel"] = hasBuyerTel
 		p.T["winnertel"] = hasWinnerTel
+		p.T["notkey"] = notkey
 		p.SetSession("paramkey", b_word)
 		switch publishtime {
 		case "lately-7":
@@ -451,7 +455,7 @@ func Newbids(p string) []interface{} {
 		}
 
 		for i := 0; i < 10; i++ {
-			_, list = getLastNewsData("", "", "", subtype, "", "", "", "", "", "", "Y", intns[i], true, false)
+			_, list = getLastNewsData("", "", "", subtype, "", "", "", "", "", "", "Y", intns[i], true, false, "")
 			for k, v := range *list {
 				v["k"] = (k + 1) + i*50
 				t := time.Unix(util.Int64All(v["publishtime"]), 0)

+ 34 - 13
src/jfw/front/swordfish.go

@@ -112,6 +112,7 @@ func (m *Front) PcAjaxReq() {
 	//高级筛选 仅vip用户可查询
 	var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 	var buyerclass string = ""                    //采购单位类别
+	var notkey string = ""                        //排除词
 
 	vipStatus := jy.GetVipState(public.Mysql, public.MQFW, userId)
 	isPayedUser := vipStatus.IsPayedUser()
@@ -119,6 +120,7 @@ func (m *Front) PcAjaxReq() {
 	if isPayedUser {
 		buyerclass = m.GetString("buyerclass")
 		hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
+		notkey = m.GetString("notkey")
 	} else {
 		//时间自定义选择默认是vip 大会员 等权限
 		if len(strings.Split(publishtime, "_")) == 2 {
@@ -151,7 +153,7 @@ func (m *Front) PcAjaxReq() {
 	if len(s_word) > 0 || len(industry) > 0 {
 		if reqType == "filter" {
 			if status == 1 {
-				count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, queryItems, field)
+				count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, queryItems, field, notkey)
 			}
 		} else if reqType == "bidSearch" {
 			//全文检索限制
@@ -166,7 +168,7 @@ func (m *Front) PcAjaxReq() {
 				if limitFlag {
 					if start == 0 {
 						limit_count := public.Lst.TotalPage * bidsearch.SearchPageSize_PC
-						count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, limit_count, true, queryItems, field)
+						count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, limit_count, true, queryItems, field, notkey)
 						if totalPage > int64(public.Lst.TotalPage) {
 							totalPage = int64(public.Lst.TotalPage)
 						}
@@ -175,7 +177,7 @@ func (m *Front) PcAjaxReq() {
 						}
 					}
 				} else {
-					count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, start, bidsearch.SearchPageSize_PC, true, queryItems, field)
+					count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, start, bidsearch.SearchPageSize_PC, true, queryItems, field, notkey)
 				}
 				listSize := 0
 				if list != nil {
@@ -192,7 +194,7 @@ func (m *Front) PcAjaxReq() {
 					if secondSearch {
 						secondKWS = jy.HttpEs(s_word, "ik_smart", public.DbConf.Elasticsearch.Main.Address)
 						findfields := `"title"`
-						qstr := bidsearch.GetSearchQuery(secondKWS, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, bidsearch.GetBidSearchQuery(area, publishtime, subtype, "", buyerclass))
+						qstr := bidsearch.GetSearchQuery(secondKWS, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, bidsearch.GetBidSearchQuery(area, publishtime, subtype, "", buyerclass), notkey)
 						secRel := elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, bidSearch_field, 0, 2*bidsearch.SearchPageSize_PC, 0, false)
 						if secRel != nil {
 							public.BidListConvert(industry, secRel)
@@ -223,7 +225,7 @@ func (m *Front) PcAjaxReq() {
 				})
 			}
 		} else if reqType == "lastNews" {
-			_, list = getLastNewsData(s_word, area, publishtime, subtype, industry, minprice, maxprice, buyerclass, hasBuyerTel, hasWinnerTel, tabularflag, start, false, true)
+			_, list = getLastNewsData(s_word, area, publishtime, subtype, industry, minprice, maxprice, buyerclass, hasBuyerTel, hasWinnerTel, tabularflag, start, false, true, "")
 		}
 	}
 	if list != nil && len(*list) > 0 {
@@ -276,10 +278,10 @@ func (m *Front) PcAjaxReq() {
 	})
 }
 
-func getLastNewsData(searchvalue, area, publishtime, subtype, industry, minprice, maxprice, buyerclass, hasBuyerTel, hasWinnerTel, tabularflag string, start int, isGetCount bool, highlight bool) (count int64, list *[]map[string]interface{}) {
+func getLastNewsData(searchvalue, area, publishtime, subtype, industry, minprice, maxprice, buyerclass, hasBuyerTel, hasWinnerTel, tabularflag string, start int, isGetCount bool, highlight bool, notkey string) (count int64, list *[]map[string]interface{}) {
 	//最新招标信息
 	findfields := `"title"`
-	qstr := bidsearch.GetSearchQuery(searchvalue, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, bidsearch.GetBidSearchQuery(area, publishtime, subtype, "", buyerclass))
+	qstr := bidsearch.GetSearchQuery(searchvalue, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, bidsearch.GetBidSearchQuery(area, publishtime, subtype, "", buyerclass), notkey)
 	if isGetCount {
 		count = elastic.Count(INDEX, TYPE, qstr)
 	}
@@ -447,6 +449,7 @@ func (m *Front) WxsearchlistPaging() {
 			//高级筛选 仅vip用户可查询
 			var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 			var buyerclass string = ""                    //采购单位类别
+			var notkey string = ""                        //排除词
 
 			vipStatus := jy.GetVipState(public.Mysql, public.MQFW, userId)
 			isPayedUser := vipStatus.IsPayedUser()
@@ -454,6 +457,7 @@ func (m *Front) WxsearchlistPaging() {
 			if isPayedUser {
 				buyerclass = m.GetString("buyerclass")
 				hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
+				notkey = m.GetString("notkey")
 			} else {
 				//时间自定义选择默认是vip 大会员 等权限
 				if len(strings.Split(publishtime, "_")) == 2 {
@@ -474,10 +478,10 @@ func (m *Front) WxsearchlistPaging() {
 				s_word := ""
 				if limitFlag {
 					if pageNum == 1 {
-						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_WX, queryItems, filed)
+						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_WX, queryItems, filed, notkey)
 					}
 				} else {
-					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_WX, queryItems, filed)
+					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_WX, queryItems, filed, notkey)
 				}
 				listSize := 0
 				if list != nil {
@@ -1645,8 +1649,16 @@ func SearhWebContentblog(querymap map[string]string) (*[]map[string]interface{},
 			res[i]["releasetime"] = util.TimeDiff(time.Unix(util.Int64All(tmpdate1.(float64)), 0))
 			reltime := time.Unix(util.Int64All(tmpdate1.(float64)), 0)
 			res[i]["time"] = reltime.Format(util.Date_Short_Layout) //首页展示
-			res[i]["s_pic"] = config.Seoconfig["jyadd"].(string) + res[i]["s_pic"].(string)
-			res[i]["s_pic1"] = config.Seoconfig["jyadd"].(string) + res[i]["s_pic1"].(string)
+			s_pic, _ := res[i]["s_pic"].(string)
+			if s_pic != "" {
+				s_pic = config.Seoconfig["jyadd"].(string) + s_pic
+			}
+			res[i]["s_pic"] = s_pic
+			s_pic1, _ := res[i]["s_pic1"].(string)
+			if s_pic1 != "" {
+				s_pic1 = config.Seoconfig["jyadd"].(string) + s_pic1
+			}
+			res[i]["s_pic1"] = s_pic1
 			res[i]["_id"] = se.EncodeString(res[i]["_id"].(string))
 		}
 	}
@@ -1713,7 +1725,7 @@ func (f *Front) Jybdetail(_id string) error {
 		f.T["data"] = retlist
 	} else {
 		id := se.DecodeString(_id)
-		r := elastic.GetByIdField("content", "content", id, `"_id","s_title","l_createdate","s_pic","s_author","s_editorname","s_contenttype","praise","releasetime","s_subcontent","s_url","s_content","s_source","s_keywords","s_description","s_contenttype"`)
+		r := elastic.GetByIdField("content", "content", id, `"_id","s_title","l_createdate","s_pic","s_author","s_editorname","s_contenttype","praise","releasetime","s_subcontent","s_url","s_content","s_source","s_keywords","s_description","s_contenttype","s_pic1"`)
 		if r != nil {
 			tmpdate1, _ := (*r)["l_createdate"]
 			(*r)["l_createdate"] = util.TimeDiff(time.Unix(util.Int64All(tmpdate1.(float64)), 0))
@@ -1721,7 +1733,16 @@ func (f *Front) Jybdetail(_id string) error {
 			(*r)["releasetime"] = util.TimeDiff(time.Unix(util.Int64All(tmpdate2.(float64)), 0))
 			(*r)["s_content"] = template.HTML((*r)["s_content"].(string))
 			(*r)["_id"] = se.EncodeString((*r)["_id"].(string))
-			(*r)["s_pic"] = (*r)["s_pic"].(string)
+			s_pic, _ := (*r)["s_pic"].(string)
+			if s_pic != "" {
+				s_pic = config.Seoconfig["jyadd"].(string) + s_pic
+			}
+			(*r)["s_pic"] = s_pic
+			s_pic1, _ := (*r)["s_pic1"].(string)
+			if s_pic1 != "" {
+				s_pic1 = config.Seoconfig["jyadd"].(string) + s_pic1
+			}
+			(*r)["s_pic1"] = s_pic1
 		}
 		f.DisableHttpCache()
 		redis.Put("other", "jyblog_"+_id, r, 2*60*60)

+ 29 - 20
src/jfw/modules/app/src/app/front/shorturl.go

@@ -4,6 +4,7 @@ import (
 	"database/sql"
 	"fmt"
 	"jfw/config"
+	"qfw/util/elastic"
 	"strconv"
 	"strings"
 	"time"
@@ -153,28 +154,36 @@ func (s *Short) Article(stype, id string) error {
 		obj["industry"] = industry
 		obj["ucbsId"] = util.EncodeArticleId2ByCheck("ucbs#" + userId + "#" + id)
 		if obj["entidlist"] != nil { //大会员中标企业跳转至画像
-			winner := util.ObjToString(obj["winner"])
-			s_winner := util.ObjToString(obj["s_winner"])
-			idObjs, _ := obj["entidlist"].([]interface{})
-			winnerId := ""
-			if names := strings.Split(s_winner, ","); len(names) > 1 {
-				index := 0
-				for i := 0; i < len(names); i++ {
-					if names[i] == winner {
-						index = i
-						break
+			if winner := util.ObjToString(obj["winner"]); winner != "" {
+				//临时更改为企业名称查询企业id
+				rData := elastic.Get("qyxy", "qyxy", fmt.Sprintf(`{"query":{"bool":{"should":[{"term":{"company_name":"%s"}},{"term":{"hname":"%s"}}],"minimum_should_match":1}},"_source":["name","_id","capital","company_phone"],"size":1}`, winner, winner))
+				if rData != nil && len(*rData) == 1 {
+					if entId := util.ObjToString((*rData)[0]["_id"]); entId != "" {
+						obj["entId"] = util.EncodeArticleId2ByCheck(util.ObjToString((*rData)[0]["_id"]))
 					}
 				}
-				if len(idObjs) > index {
-					winnerId = util.ObjToString(idObjs[index])
-				}
-			} else { //中标企业仅一个
-				if len(idObjs) > 0 {
-					winnerId = util.ObjToString(idObjs[0])
-				}
-			}
-			if winnerId != "" {
-				obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
+				//s_winner := util.ObjToString(obj["s_winner"])
+				//idObjs, _ := obj["entidlist"].([]interface{})
+				//winnerId := ""
+				//if names := strings.Split(s_winner, ","); len(names) > 1 {
+				//	index := 0
+				//	for i := 0; i < len(names); i++ {
+				//		if names[i] == winner {
+				//			index = i
+				//			break
+				//		}
+				//	}
+				//	if len(idObjs) > index {
+				//		winnerId = util.ObjToString(idObjs[index])
+				//	}
+				//} else { //中标企业仅一个
+				//	if len(idObjs) > 0 {
+				//		winnerId = util.ObjToString(idObjs[0])
+				//	}
+				//}
+				//if winnerId != "" {
+				//	obj["entId"] = util.EncodeArticleId2ByCheck(winnerId)
+				//}
 			}
 		}
 		s.T["userId"] = se.Encode2Hex(userId) //加密用户userid

+ 5 - 3
src/jfw/modules/app/src/app/front/swordfish.go

@@ -266,6 +266,7 @@ func (m *Front) WxsearchlistPaging() {
 			//高级筛选 仅vip用户可查询
 			var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 			buyerclass := ""                              //采购单位类别
+			var notkey string = ""                        //排除词
 
 			vipStatus := jy.GetVipState(public.Mysql, public.MQFW, userid)
 			isPayedUser := vipStatus.IsPayedUser()
@@ -273,6 +274,7 @@ func (m *Front) WxsearchlistPaging() {
 			if isPayedUser {
 				buyerclass = m.GetString("buyerclass")
 				hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
+				notkey = m.GetString("notkey")
 			} else {
 				//时间自定义选择默认是vip 大会员 等权限
 				if len(strings.Split(publishtime, "_")) == 2 {
@@ -301,10 +303,10 @@ func (m *Front) WxsearchlistPaging() {
 				s_word := ""
 				if limitFlag {
 					if pageNum == 1 {
-						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_APP, queryItems, feld)
+						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_APP, queryItems, feld, notkey)
 					}
 				} else {
-					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_APP, queryItems, feld)
+					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_APP, queryItems, feld, notkey)
 				}
 				listSize := 0
 				if list != nil {
@@ -321,7 +323,7 @@ func (m *Front) WxsearchlistPaging() {
 					if secondSearch {
 						secondKWS = jy.HttpEs(s_word, "ik_smart", public.DbConf.Elasticsearch.Main.Address)
 						findfields := `"title"`
-						qstr := bidsearch.GetSearchQuery(secondKWS, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, bidsearch.GetBidSearchQuery(scope, publishtime, subtype, winner, buyerclass))
+						qstr := bidsearch.GetSearchQuery(secondKWS, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, bidsearch.GetBidSearchQuery(scope, publishtime, subtype, winner, buyerclass), notkey)
 						secRel = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, feld, 0, 2*bidsearch.SearchPageSize_APP, 0, false)
 						if secRel != nil && len(*secRel) > 0 {
 							public.BidListConvert(industry, secRel)

+ 1044 - 964
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js

@@ -1,1022 +1,1102 @@
 var vNode = {
-    delimiters: ['${', '}'],
-    el: '#ent-portrait',
-    components: {
-        vipComponent: vipComponent,
-        hisproComponent: hisproComponent
-    },
-    data () {
-        // 修改柱状条颜色为渐变色
-        this.colorGreen = [new echarts.graphic.LinearGradient(
-            0, 0, 0, 1,
-            [
-                {offset: 1, color: '#2ABED1'},
-                {offset: 0.5, color: '#2ABED1'},
-                {offset: 0, color: '#8DE0EB'}
-            ], false
-        ), '#FF9F40']
+  delimiters: ['${', '}'],
+  el: '#ent-portrait',
+  components: {
+    vipComponent: vipComponent,
+    hisproComponent: hisproComponent
+  },
+  data () {
+    // 修改柱状条颜色为渐变色
+    this.colorGreen = [new echarts.graphic.LinearGradient(
+      0, 0, 0, 1,
+      [
+        { offset: 1, color: '#2ABED1' },
+        { offset: 0.5, color: '#2ABED1' },
+        { offset: 0, color: '#8DE0EB' }
+      ], false
+    ), '#FF9F40']
 
-        return {
-            sessKey: '$data-ent_portrait',
-            conf: {
-                // 权限查询是否完成
-                powerLoaded: false,
-                // 是否只显示完整的企业画像
-                showPortraitAll: true,
-                // 是否显示,企业全景分析
-                _4: false,
-                // 是否显示中标企业动态
-                _13: false,
-                // 是否有企业情报历史记录权限
-                _12: false,
-                isMember: 0 // 是否是大会员
-            },
-            powerInfo: {},
-            tabActiveName: '1',
-            // 企业信息
-            entInfo: {
-                name: '',
-                follow: 0,
-                followSearchFinish: false,
-                entExist: true
-            },
-            // tab1中的企业基础信息
-            entBaseInfo: {
-                type: null,
-                status: null,
-                creditNo: '',
-                capital: '',
-                employeeNo: '',
-                address: '',
-                scope: '',
-                operStart: -1,
-                operEnd: -1,
-                establish: '',
-                showEntChange: false,
-                org_code: '',
-                company_code: '',
-                legal: '',
-                phone: '',
-                taxCode: ''
-            },
-            // tab2中的项目动态
-            topProject: {
-                list: [],
-                count: '',
-                pageSign: '',
-                showGetNextButton: true
-            },
-            entPortraitInfo: {},
-            stickyTop: 80,
-            singleTab: true,
-            // 年度项目统计设置
-            annualSetting:{
-                showLine: ['项目金额'],
-                axisSite: { right: ['项目金额'] }
-            },
-            // 地图配置项
-            mapSettings: mapSettings,
-            // 年度项目统计数据
-            annualData: {
-                columns: ["日期","项目数量","项目金额"],
-                rows: []
-            },
-            // 地图数据
-            mapChartData: {
-                columns: ['name', 'value'],
-                rows: []
-            },
-            // 月度中标金额
-            monthZbData: {
-                columns: [],
-                rows: []
-            },
-            // 平均折扣率
-            rateData: {
-                columns: [],
-                rows: []
-            },
-            pieChartSettings: {
-                roseType: 'radius'
-            },
-            importantCustomers: [],
-            scrollTop: 0,
-            getEntPortraitInfoTimes: 0,
-            initEchartsOptions: {
-                renderer: 'svg'
-            },
-            gotTab2: false, // 是否已经获取到tab2的数据了
-            svip: false, // 判断是否是超级订阅的企业画像
-            overlayShow: true, // 弹窗遮罩是否显示
-            isVip: false, // 只是超级订阅
-            bidcollPowerInfo: {
-                vip: 0,
-                text: '开通',
-                btntext: '去开通'
-            },
-            entvisit: {
-                total: 0, // 本月画像次数总量
-                usage: 0, // 本月已使用次数
-                provin: 0, // 购买省份数量
-                visited: false // 是否查看中标信息
-            },
-            portrait:'winner'
-        }
+    return {
+      sessKey: '$data-ent_portrait',
+      conf: {
+        // 权限查询是否完成
+        powerLoaded: false,
+        // 是否只显示完整的企业画像
+        showPortraitAll: true,
+        // 是否显示,企业全景分析
+        _4: false,
+        // 是否显示中标企业动态
+        _13: false,
+        // 是否有企业情报历史记录权限
+        _12: false,
+        isMember: 0, // 是否是大会员
+        arr: [], // 权限数组
+        vipStatus: 0 // 是否是超级订阅
+      },
+      powerInfo: {},
+      tabActiveName: '1',
+      // 企业信息
+      entInfo: {
+        name: '',
+        follow: 0,
+        followSearchFinish: false,
+        entExist: true
+      },
+      // tab1中的企业基础信息
+      entBaseInfo: {
+        type: null,
+        status: null,
+        creditNo: '',
+        capital: '',
+        employeeNo: '',
+        address: '',
+        scope: '',
+        operStart: -1,
+        operEnd: -1,
+        establish: '',
+        showEntChange: false,
+        org_code: '',
+        company_code: '',
+        legal: '',
+        phone: '',
+        taxCode: ''
+      },
+      // tab2中的项目动态
+      topProject: {
+        list: [],
+        count: '',
+        pageSign: '',
+        showGetNextButton: true
+      },
+      entPortraitInfo: {},
+      stickyTop: 80,
+      singleTab: true,
+      // 年度项目统计设置
+      annualSetting: {
+        showLine: ['项目金额'],
+        axisSite: { right: ['项目金额'] }
+      },
+      // 地图配置项
+      mapSettings: mapSettings,
+      // 年度项目统计数据
+      annualData: {
+        columns: ["日期", "项目数量", "项目金额"],
+        rows: []
+      },
+      // 地图数据
+      mapChartData: {
+        columns: ['name', 'value'],
+        rows: []
+      },
+      // 月度中标金额
+      monthZbData: {
+        columns: [],
+        rows: []
+      },
+      // 平均折扣率
+      rateData: {
+        columns: [],
+        rows: []
+      },
+      pieChartSettings: {
+        roseType: 'radius'
+      },
+      importantCustomers: [],
+      scrollTop: 0,
+      getEntPortraitInfoTimes: 0,
+      initEchartsOptions: {
+        renderer: 'svg'
+      },
+      gotTab2: false, // 是否已经获取到tab2的数据了
+      svip: false, // 判断是否是超级订阅的企业画像
+      overlayShow: true, // 弹窗遮罩是否显示
+      isVip: false, // 只是超级订阅
+      bidcollPowerInfo: {
+        vip: 0,
+        text: '开通',
+        btntext: '去开通'
+      },
+      entvisit: {
+        total: 0, // 本月画像次数总量
+        usage: 0, // 本月已使用次数
+        provin: 0, // 购买省份数量
+        visited: false // 是否查看中标信息
+      },
+      portrait: 'winner',
+      showBaseInfo: false
+    }
+  },
+  created: function () {
+    // svip是超级订阅企业查询, 如果是超级订阅不能查看企业情报历史记录
+    var svip = utils.getParam('svip')
+    if (svip) {
+      this.svip = true
+    }
+    // 企业名称恢复
+    var eId = utils.getParam('eId')
+    if (eId) {
+      eId = decodeURIComponent(eId)
+    }
+    this.entInfo.id = eId
+    this.entInfo.name = ''
+    this.restore = this.reStoreState()
+    this.getEntVisits()
+    this.getPowerInfo()
+    if (!this.restore) {
+      // 获取企业基本信息
+      this.getEntBaseInfo()
+    }
+  },
+  mounted: function () {
+    var _this = this
+    // 动态调整sticky距离顶部的高度
+    this.getStickyTop()
+    if (this.scrollTop) {
+      setTimeout(function () {
+        $('#ent-portrait').scrollTop(_this.scrollTop)
+      }, 0)
+    }
+
+    window.addEventListener('resize', function () {
+      _this.getStickyTop()
+    })
+  },
+  watch: {
+    // tabActiveName: function (newVal, oldVal) {
+    //   console.log(newVal)
+    //     var _this = this
+    //     if (newVal == '2' || newVal == '1') {
+    //         this.$nextTick(function () {
+    //             if (_this.gotTab2) {
+    //                 // 初始化图表
+    //                 if (_this.entPortraitInfo && _this.conf.showPortraitAll && !_this.singleTab) {
+    //                     _this.initChartsData();
+    //                 }
+    //             } else {
+    //                 if (_this.conf._4) {
+    //                     // 获取企业画像信息-4
+    //                     _this.getEntPortrait(function () {
+    //                         _this.initChartsData()
+    //                     })
+    //                     _this.gotTab2 = true
+    //                     console.log('获取企业全景分析...')
+    //                 }
+    //                 // 获取企业中标动态-13
+    //                 if (_this.conf._13) {
+    //                     // _this.getProjectNews()
+    //                     _this.gotTab2 = true
+    //                     console.log('获取企业中标动态...')
+    //                 }
+    //                 if(_this.powerInfo.memberStatus <= 0) {
+    //                     // 不是大会员点击中标信息使用次数加一
+    //                     // if(!_this.entvisit.visited) {
+    //                     //     _this.entvisit.usage++
+    //                     //     _this.entvisit.visited = true
+    //                     // }
+    //                 }
+    //                 _this.gotTab2 = true
+    //             }
+    //         });
+    //     }
+    // },
+  },
+  computed: {
+    // 3个权限有1个就为true(取反为3个权限1个都没有)
+    hasOnePower: function () {
+      return this.conf._4 || this.conf._12 || this.conf._13
+    },
+    setShow: function () {
+      // 必须在tab2,并且三个权限都没有,就用显示
+      return this.tabActiveName == '2' && !this.hasOnePower
+    },
+    // 查看次数为零,显示遮罩
+    getStatus: function () {
+      return (!this.conf._4 && !this.isVip) || (this.entvisit.total <= this.entvisit.usage && this.powerInfo.memberStatus <= 0 && !this.entvisit.visited) || (this.entvisit.total <= this.entvisit.usage && !this.showContacts && !this.entvisit.visited)
+    },
+    isMember () {
+      return this.powerInfo.memberStatus <= 0 || !this.conf._4
+    },
+    isShowUpTip () {
+      // 出现升级提醒 是新超级订阅买的不是全国、次数已用完 、不是大会员
+      return this.entvisit.provin == -1 ? false : true && !this.surplus && this.isVip && this.powerInfo.memberStatus <= 0 && !this.entvisit.visited
     },
-    created: function () {
-        // svip是超级订阅企业查询, 如果是超级订阅不能查看企业情报历史记录
-        var svip = utils.getParam('svip')
-        if (svip) {
-            this.svip = true
+    surplus: function () {
+      return this.entvisit.total > this.entvisit.usage
+    },
+    showContacts: function () {
+      return this.conf.arr.indexOf(4) > -1 && this.powerInfo.memberStatus > 0
+    },
+    // 是否隐藏动态 显示遮罩
+    hideDt: function() {
+      // 是新超级订阅 且不是大会员且次数已用完   或大会员没有项目动态权限
+      return this.isVip && this.powerInfo.memberStatus <= 0 && this.entvisit.total <= this.entvisit.usage || this.conf.arr.indexOf(13) === -1
+    }
+  },
+  methods: {
+    getDataFn: function () {
+      var _this = this
+      this.$nextTick(function () {
+        // 初始化图表
+        if (_this.entPortraitInfo && _this.conf.showPortraitAll && !_this.singleTab) {
+          _this.initChartsData();
         }
-        // 企业名称恢复
-        var eId = utils.getParam('eId')
-        if (eId) {
-          eId = decodeURIComponent(eId)
+
+        if (_this.conf._4) {
+          // 获取企业画像信息-4
+          _this.getEntPortrait(function () {
+            _this.initChartsData()
+          })
+          _this.gotTab2 = true
+          console.log('获取企业全景分析...')
         }
-        this.entInfo.id = eId
-        this.entInfo.name = ''
-        this.restore = this.reStoreState()
-        this.getPowerInfo()
-        if (!this.restore) {
-            // 获取企业基本信息
-            this.getEntBaseInfo()
+        // 获取企业中标动态-13
+        if (_this.conf._13) {
+          _this.getProjectNews()
+          _this.gotTab2 = true
+          console.log('获取企业中标动态...')
         }
-    },
-    mounted: function () {
-        var _this = this
-        // 动态调整sticky距离顶部的高度
-        this.getStickyTop()
-        if (this.scrollTop) {
-            setTimeout(function () {
-                $('#ent-portrait').scrollTop(_this.scrollTop)
-            }, 0)
+        if (_this.powerInfo.memberStatus <= 0) {
+          // 不是大会员点击中标信息使用次数加一
+          // if(!_this.entvisit.visited) {
+          //     _this.entvisit.usage++
+          //     _this.entvisit.visited = true
+          // }
         }
+        _this.gotTab2 = true
 
-        window.addEventListener('resize', function() {
-            _this.getStickyTop()
-        })
+      });
     },
-    watch: {
-        tabActiveName: function (newVal, oldVal) {
-            var _this = this
-            if (newVal == '2') {
-                this.$nextTick(function () {
-                    if (_this.gotTab2) {
-                        // 初始化图表
-                        if (_this.entPortraitInfo && _this.conf.showPortraitAll && !_this.singleTab) {
-                            _this.initChartsData();
-                        }
-                    } else {
-                        if (_this.conf._4) {
-                            // 获取企业画像信息-4
-                            _this.getEntPortrait(function () {
-                                _this.initChartsData()
-                            })
-                            _this.gotTab2 = true
-                            console.log('获取企业全景分析...')
-                        }
-                        // 获取企业中标动态-13
-                        if (_this.conf._13) {
-                            _this.getProjectNews()
-                            _this.gotTab2 = true
-                            console.log('获取企业中标动态...')
-                        }
-                        if(_this.powerInfo.memberStatus <= 0) {
-                            // 不是大会员点击中标信息使用次数加一
-                            // if(!_this.entvisit.visited) {
-                            //     _this.entvisit.usage++
-                            //     _this.entvisit.visited = true
-                            // }
-                        }
-                        _this.gotTab2 = true
-                    }
-                });
-            }
-        },
+    // 点击去开通记住tab栏下标
+    tabActive: function (data) {
+      this.savePageState()
     },
-    computed: {
-        // 3个权限有1个就为true(取反为3个权限1个都没有)
-        hasOnePower: function () {
-            return this.conf._4 || this.conf._12 || this.conf._13
-        },
-        setShow: function() {
-            // 必须在tab2,并且三个权限都没有,就用显示
-            return this.tabActiveName == '2' && !this.hasOnePower
-        },
-        // 查看次数为零,显示遮罩
-        getStatus: function () {
-            return (!this.conf._4 && !this.isVip) || (this.entvisit.total <= this.entvisit.usage && this.powerInfo.memberStatus <= 0 && !this.entvisit.visited)
-        },
-        isMember () {
-          return this.powerInfo.memberStatus <= 0 || !this.conf._4
-        },
-        isShowUpTip () {
-          return this.entvisit.provin == -1 ? false : !this.surplus
-        },
-        surplus: function () {
-            return this.entvisit.total > this.entvisit.usage
+    showToast: function (message) {
+      this.$toast({
+        duration: 1500,
+        forbidClick: true,
+        message: message,
+      })
+    },
+    showLoading: function () {
+      var loading = this.$toast.loading({
+        duration: 0,
+        forbidClick: true,
+        message: '',
+      })
+      return loading
+    },
+    // 超级订阅提示弹窗取消按钮事件
+    beforeClose: function (e, done) {
+      console.log(e)
+      if (e === 'cancel') {
+        this.tabActiveName = '1'
+        done(false)
+        this.overlayShow = true
+      } else if (e === 'confirm') {
+        try {
+          _hmt.push(['_trackEvent', '超级订阅-app', 'click', '企业画像中标信息-去开通']);
+        } catch (e) {
+          console.log('未初始化百度统计')
+        }
+        // 去开通
+        if (this.bidcollPowerInfo.vip == 1) {
+          location.href = '/jyapp/vipsubscribe/upgradePage'
+        } else {
+          location.href = '/jyapp/vipsubscribe/vipsubscribe_new'
         }
+      }
+      this.overlayShow = true
     },
-    methods: {
-        // 点击去开通记住tab栏下标
-        tabActive: function(data) {
-            this.savePageState()
-        },
-        showToast: function (message) {
-            this.$toast({
-                duration: 1500,
-                forbidClick: true,
-                message: message,
-            })
-        },
-        showLoading: function() {
-            var loading = this.$toast.loading({
-                duration: 0,
-                forbidClick: true,
-                message: '',
-            })
-            return loading
-        },
-        // 超级订阅提示弹窗取消按钮事件
-        beforeClose: function (e, done) {
-            console.log(e)
-            if (e === 'cancel') {
-                this.tabActiveName = '1'
-                done(false)
-                this.overlayShow = true
-            } else if (e === 'confirm') {
-                try {
-                  _hmt.push(['_trackEvent','超级订阅-app', 'click', '企业画像中标信息-去开通']);
-                } catch (e) {
-                  console.log('未初始化百度统计')
-                }
-                // 去开通
-                if(this.bidcollPowerInfo.vip == 1) {
-                    location.href = '/jyapp/vipsubscribe/upgradePage'
-                } else {
-                    location.href = '/jyapp/vipsubscribe/vipsubscribe_new'
-                }
-            }
-            this.overlayShow = true
-        },
-        // 获取画像信息
-        getEntPortrait: function (callback) {
-            var _this = this
-            var data = {
-                entId: _this.entInfo.id
-            }
-            let urls = ''
-            if(_this.powerInfo.memberStatus <= 0 || _this.svip) {
-                urls = '/bigmember/portrait/subVipPortrait/winner'
+    // 获取画像信息
+    getEntPortrait: function (callback) {
+      var _this = this
+      var data = {
+        entId: _this.entInfo.id
+      }
+      let urls = ''
+      // 如果专家版、智慧版 调大会员接口,如果是专家版、自定义版,同时是超级订阅 根据可查看次数判断 调大会员还是超级订阅接口
+      if (_this.powerInfo.memberStatus > 0 && _this.powerInfo.memberStatus <= 2) {
+        urls = '/bigmember/portrait/winner/getData'
+      } else if (_this.powerInfo.memberStatus > 2) {
+        if ( _this.isVip) { // 超级订阅
+          if(_this.entvisit.total <= _this.entvisit.usage && !_this.entvisit.visited) {
+            urls = '/bigmember/portrait/winner/getData'
+          } else {
+            urls = '/bigmember/portrait/subVipPortrait/winner'
+          }
+        } else {
+          urls = '/bigmember/portrait/winner/getData'
+           // 商机版、自定义版
+        }
+      } else {
+        urls = '/bigmember/portrait/subVipPortrait/winner'
+      }
+      // if (_this.powerInfo.memberStatus <= 0 || _this.svip || _this.isVip) {
+      //   urls = '/bigmember/portrait/subVipPortrait/winner'
+      // } else {
+      //   urls = '/bigmember/portrait/winner/getData'
+      // }
+      _this.getEntPortraitInfoTimes++
+      $.ajax({
+        type: 'POST',
+        url: urls,
+        data: data,
+        success: function (res) {
+          if (res.error_code == 0) {
+            _this.loading.clear()
+            if (res.data && Object.keys(res.data).length !== 0) {
+              _this.singleTab = false
+              // 将数据保存到data中
+              for (var key in res.data) {
+                _this.entPortraitInfo[key] = res.data[key]
+              }
+
+              if (res.data.timeRange && res.data.timeRange.start) {
+                _this.entPortraitInfo.timeRangeStart = res.data.timeRange.start
+              }
+              if (res.data.timeRange && res.data.timeRange.end) {
+                _this.entPortraitInfo.timeRangeEnd = res.data.timeRange.end
+              }
 
+              callback && callback()
             } else {
-                urls = '/bigmember/portrait/winner/getData'
+              if (_this.getEntPortraitInfoTimes < 5) {
+                _this.getEntPortrait()
+              }
             }
-            _this.getEntPortraitInfoTimes++
-            $.ajax({
-                type: 'POST',
-                url: urls,
-                data: data,
-                success: function (res) {
-                    if (res.error_code == 0) {
-                        _this.loading.clear()
-                        if (res.data && Object.keys(res.data).length !== 0) {
-                            _this.singleTab = false
-                            // 将数据保存到data中
-                            for (var key in res.data) {
-                                _this.entPortraitInfo[key] = res.data[key]
-                            }
-
-                            if (res.data.timeRange && res.data.timeRange.start) {
-                                _this.entPortraitInfo.timeRangeStart = res.data.timeRange.start
-                            }
-                            if (res.data.timeRange && res.data.timeRange.end) {
-                                _this.entPortraitInfo.timeRangeEnd = res.data.timeRange.end
-                            }
-
-                            callback && callback()
-                        } else {
-                            if (_this.getEntPortraitInfoTimes < 5) {
-                                _this.getEntPortrait()
-                            }
-                        }
-                    }
-                },
-                error: function (error) {
-                    _this.$toast('请求失败')
-                }
-            })
+          }
         },
-        // 企业画像访问量查询
-        getEntVisits: function() {
-            let _this = this
-            $.ajax({
-                type: "POST",
-                url: "/bigmember/portrait/subVipPortrait/usage",
-                data: {
-                    entId: _this.entInfo.id
-                },
-                success: function (res) {
-                    console.log(res)
-                    if(res.error_code == 0) {
-                        if(res.data) {
-                            _this.entvisit = res.data
-                        }
-                    }
-                }
-            });
+        error: function (error) {
+          _this.$toast('请求失败')
+        }
+      })
+    },
+    // 企业画像访问量查询
+    getEntVisits: function () {
+      let _this = this
+      $.ajax({
+        type: "POST",
+        url: "/bigmember/portrait/subVipPortrait/usage",
+        data: {
+          entId: _this.entInfo.id
         },
-        // 获取项目动态
-        getProjectNews: function () {
-            var _this = this
-            var data = {
-                entId: _this.entInfo.id,
-                count: _this.topProject.count,
-                pageSign: _this.topProject.pageSign
-            }
-
-            if (data.pageSign) {
-                this.loading = this.showLoading()
-            }
-
-            var urls = ''
-            if (this.isVip) {
-                urls = '/bigmember/portrait/subVipPortrait/winnerNewMsg'
-            } else {
-                urls = '/bigmember/portrait/winner/getNewMsg'
+        success: function (res) {
+          if (res.error_code == 0) {
+            if (res.data) {
+              // res.data.provin = 1
+              // res.data.total = 1
+              // res.data.usage = 2
+              // res.data.visited = false
+              _this.entvisit = res.data
             }
+          }
+        }
+      });
+    },
+    // 获取项目动态
+    getProjectNews: function () {
+      var _this = this
+      var data = {
+        entId: _this.entInfo.id,
+        count: _this.topProject.count,
+        pageSign: _this.topProject.pageSign
+      }
 
-            $.ajax({
-                type: 'POST',
-                url: urls,
-                data: data,
-                success: function (res) {
-                    if (res.error_code == 0) {
-                        _this.loading.clear()
-                        _this.topProject.count = res.data.count
-                        if (res.data.list && $.isArray(res.data.list)) {
-                            if (!_this.topProject.pageSign) {
-                                _this.singleTab = false
-                            }
+      if (data.pageSign) {
+        this.loading = this.showLoading()
+      }
 
-                            // 修改当前pageSign值
-                            if (!_this.topProject.pageSign) {
-                                _this.topProject.list = []
-                                _this.topProject.pageSign = 'more'
-                                if(res.data.count <= 3) {
-                                    _this.topProject.showGetNextButton = false
-                                }
-                            } else if (_this.topProject.pageSign === 'more') {
-                                _this.topProject.pageSign = 'max'
-                                if(res.data.count <= 23) {
-                                    _this.topProject.showGetNextButton = false
-                                }
-                            } else if (_this.topProject.pageSign === 'max') {
-                                _this.topProject.showGetNextButton = false
-                            }
+      var urls = ''
+      // 判断专家版、智慧版; 商机版和自定义版时判断是不是超级订阅 
+      if (_this.powerInfo.memberStatus > 0 && _this.powerInfo.memberStatus <= 2) {
+        urls = '/bigmember/portrait/winner/getNewMsg'
+      } else if (_this.powerInfo.memberStatus > 2) {
+        if (_this.isVip) {
+          console.log(_this.entvisit.total,_this.entvisit.usage)
+          if (_this.entvisit.total <= _this.entvisit.usage && !_this.entvisit.visited) {
+            urls = '/bigmember/portrait/winner/getNewMsg'
+          } else {
+            urls = '/bigmember/portrait/subVipPortrait/winnerNewMsg'
+          }
+        } else {
+          urls = '/bigmember/portrait/winner/getNewMsg'
+        }
+      } else {
+        urls = '/bigmember/portrait/subVipPortrait/winnerNewMsg'
+      }
+      $.ajax({
+        type: 'POST',
+        url: urls,
+        data: data,
+        success: function (res) {
+          if (res.error_code == 0) {
+            _this.loading.clear()
+            _this.topProject.count = res.data.count
+            if (res.data.list && $.isArray(res.data.list)) {
+              if (!_this.topProject.pageSign) {
+                _this.singleTab = false
+              }
 
-                            _this.topProject.list = _this.topProject.list.concat(res.data.list)
-                        }
-                    } else {
-                        _this.$toast(res.error_msg)
-                    }
-                },
-                error: function (error) {
-                    _this.$toast('请求失败')
-                }
-            })
-        },
-        // 查询企业基础信息
-        getEntBaseInfo: function () {
-            var _this = this
-            let urls = ''
-            if(_this.powerInfo.memberStatus <= 0 || _this.svip) {
-                urls = '/bigmember/portrait/subVipPortrait/entDetail'
-            } else {
-                urls = '/bigmember/portrait/ent/detail'
-            }
-            $.ajax({
-                type: 'POST',
-                url: urls,
-                data: {
-                    entId: _this.entInfo.id
-                },
-                success: function (res) {
-                    if (res.error_code == 0) {
-                        _this.loading.clear()
-                        if (res.data && Object.keys(res.data).length !== 0) {
-                            _this.entInfo.name = res.data.entName
-                            for (var key in res.data) {
-                                _this.entBaseInfo[key] = res.data[key]
-                            }
-                        }
-                    } else {
-                        // 不显示提示信息
-                        // _this.$toast(res.error_msg)
-                    }
-                },
-                error: function (error) {
-                    console.log(error)
+              // 修改当前pageSign值
+              if (!_this.topProject.pageSign) {
+                _this.topProject.list = []
+                _this.topProject.pageSign = 'more'
+                if (res.data.count <= 3) {
+                  _this.topProject.showGetNextButton = false
                 }
-            })
-        },
-        // 查询企业是否存在和企业关注状态
-        getEntFollowState: function () {
-            var _this = this
-            _this.entInfo.followSearchFinish = false
-            $.ajax({
-                type: 'POST',
-                url: '/bigmember/follow/ent/followCheck',
-                data: {
-                  entId: _this.entInfo.id
-                },
-                success: function (res) {
-                    if (res.error_code == 0) {
-                        _this.entInfo.followSearchFinish = true
-                        if (res.data) {
-                            _this.entInfo.follow = !!res.data.followed
-                            _this.entInfo.entExist = !!res.data.isShow
-                        } else {
-                            _this.entInfo.entExist = false
-                        }
-                    } else {
-                        _this.$toast(res.error_msg)
-                    }
-                },
-                error: function (error) {
-                    console.log(error)
+              } else if (_this.topProject.pageSign === 'more') {
+                _this.topProject.pageSign = 'max'
+                if (res.data.count <= 23) {
+                  _this.topProject.showGetNextButton = false
                 }
-            })
-        },
-        changeFollowState: function () {
-            var _this = this
-            if (this.entInfo.follow) {
-                this.$dialog.confirm({
-                    title: '提示信息',
-                    message: '取消对“' + _this.entInfo.name + '”的关注?',
-                    confirmButtonColor: '#2cb7ca'
-                }).then(function () {
-                    _this.changeFollowStateRequest()
-                })
-                .catch(function () {
-                    console.log('取消操作')
-                })
-            } else {
-                this.changeFollowStateRequest()
+              } else if (_this.topProject.pageSign === 'max') {
+                _this.topProject.showGetNextButton = false
+              }
+
+              _this.topProject.list = _this.topProject.list.concat(res.data.list)
             }
+          } else {
+            _this.$toast(res.error_msg)
+          }
         },
-        // 获取权限信息
-        getPowerInfo: function () {
-            var _this = this
-            this.loading = this.showLoading()
-            $.ajax({
-                type: 'GET',
-                url: '/bigmember/use/isAdd',
-                success: function (res) {
-                    if (res.error_code == 0) {
-                        _this.conf.powerLoaded = true
-                        if (res.data) {
-                            _this.powerInfo = res.data
-                        }
-                        if (res.data && $.isArray(res.data.power)) {
-                            // 显示完整企业画像(不完整的企业画像只有中标动态)
-                            // _this.conf.showPortraitAll = true
-                            // 根据power判断权限,企业画像包含权限(4,12,13)
-                            var power = res.data.power
-                            if (res.data.viper) {
-                                _this.isVip = true
-                            }
-                            if (power.indexOf(4) != -1 || res.data.viper) {
-                                // 获取企业画像信息-4
-                                _this.conf._4 = true
-                            }
-                            if (power.indexOf(13) != -1 || res.data.viper) {
-                                // 获取企业中标动态-13
-                                _this.conf._13 = true
-                            }
-                            if (power.indexOf(12) != -1) {
-                                // 获取企业情报历史记录-12
-                                _this.conf._12 = true
-                            }
-                            // follow的权限:4.12.13只要有一个就可以
-                            if (res.data.memberStatus > 0 && (power.indexOf(4) != -1||power.indexOf(12) != -1||power.indexOf(13) != -1)) {
-                                _this.getEntFollowState()
-                            } else {
-                                _this.entInfo.followSearchFinish = true
-                                _this.entInfo.entExist = false
-                                _this.getEntVisits()
-                                _this.portrait = 'winnerVip'
-                            }
-                            _this.singleTab = false
-                        }
-                        
-                        if (res.data.vipStatus > 0) {
-                            if (!res.data.viper) {
-                                _this.bidcollPowerInfo.text = '升级'
-                                _this.bidcollPowerInfo.btntext = '去升级'
-                                _this.bidcollPowerInfo.vip = 1
-                            }
-                        }
-                        _this.conf.isMember = res.data.memberStatus
-                    } else {
-                        _this.$toast(res.error_msg)
-                    }
-                },
-                complete: function () {
-                    if (_this.loading) {
-                        _this.loading.clear()
-                    }
-                },
-                error: function (error) {
-                    console.log(error)
-                }
-            })
+        error: function (error) {
+          _this.$toast('请求失败')
+        }
+      })
+    },
+    // 查询企业基础信息
+    getEntBaseInfo: function () {
+      var _this = this
+      let urls = ''
+      if (_this.powerInfo.memberStatus <= 0 || _this.svip) {
+        urls = '/bigmember/portrait/subVipPortrait/entDetail'
+      } else {
+        urls = '/bigmember/portrait/ent/detail'
+      }
+      $.ajax({
+        type: 'POST',
+        url: urls,
+        data: {
+          entId: _this.entInfo.id
         },
-        // 修改企业关注状态
-        changeFollowStateRequest: function () {
-            var _this = this
-            var loading = this.showLoading()
-            var urls = {
-                addFollow: '/bigmember/follow/ent/addFollow',
-                delFollow: '/bigmember/follow/ent/delFollow'
+        success: function (res) {
+          if (res.error_code == 0) {
+            _this.loading.clear()
+            if (res.data && Object.keys(res.data).length !== 0) {
+              _this.entInfo.name = res.data.entName
+              for (var key in res.data) {
+                _this.entBaseInfo[key] = res.data[key]
+              }
             }
-            var url = !!this.entInfo.follow ? urls.delFollow : urls.addFollow
-            $.ajax({
-                type: 'POST',
-                url: url,
-                data: {
-                  entId: _this.entInfo.id
-                },
-                success: function (res) {
-                    if (res.error_code == 0) {
-                        // 清除上个页面缓存
-                     sessionStorage.removeItem('$data-ent_follow')
-                        loading.clear()
-                        if (res.data && res.data == 'success') {
-                            _this.entInfo.follow = !_this.entInfo.follow
-                        }
-
-                        if (!_this.entInfo.follow) {
-                            history.back()
-                        }
-                    } else {
-                        _this.showToast(res.error_msg)
-                    }
-                },
-                error: function (error) {
-                    console.log(error)
-                }
-            })
+          } else {
+            // 不显示提示信息
+            // _this.$toast(res.error_msg)
+          }
         },
-        // 初始化图标数据
-        initChartsData: function () {
-            var dataSet = this.entPortraitInfo
-            // 初始化 年度项目统计数据
-            this.arrangeAnnualData(dataSet.yearData)
-            // 初始化 月度统计数据
-            this.arrangeMonthZbData(dataSet.monthData)
-            // 初始化 地图数据
-            this.arrangeMapData(dataSet.areaData)
-            // 初始化 平局折扣率数据
-            this.arrangeRateData(dataSet.rate)
-            // 初始化 饼图 客户类型分布
-            this.initPieChartData(dataSet.top10)
-            // 初始化 重要客户数据
-            this.arrangeImportantData(dataSet.topShow)
-        },
-        getStickyTop: function () {
-            this.stickyTop = $('.jy-app-header').height() - 1
+        error: function (error) {
+          console.log(error)
+        }
+      })
+    },
+    // 查询企业是否存在和企业关注状态
+    getEntFollowState: function () {
+      var _this = this
+      _this.entInfo.followSearchFinish = false
+      $.ajax({
+        type: 'POST',
+        url: '/bigmember/follow/ent/followCheck',
+        data: {
+          entId: _this.entInfo.id
         },
-        goToEntHistory: function () {
-            // if (this.powerInfo.isSubCount) {
-            //     return this.showToast('子账号无法使用企业情报监控')
-            // }
-
-            this.savePageState()
-            var info = {
-                anchor: '企业情报监控'
+        success: function (res) {
+          if (res.error_code == 0) {
+            _this.entInfo.followSearchFinish = true
+            if (res.data) {
+              _this.entInfo.follow = !!res.data.followed
+              _this.entInfo.entExist = !!res.data.isShow
+            } else {
+              _this.entInfo.entExist = false
             }
-            sessionStorage.setItem('landinfo',JSON.stringify(info))
-            location.href = './ent_portrait_change?eId=' + encodeURIComponent(this.entInfo.id)
+          } else {
+            _this.$toast(res.error_msg)
+          }
         },
-        // 修改年度项目统计里点击浮窗显示效果
-        formatter: function (params) {
-            //移除重复的数据
-            for (var i = 0; i < params.length; i++) {
-                for (var j = params.length - 1; j > i; j--) {
-                    if (params[j].data == params[i].data) {
-                        params.splice(j, 1);
-                        break;
-                    }
-                }
+        error: function (error) {
+          console.log(error)
+        }
+      })
+    },
+    changeFollowState: function () {
+      var _this = this
+      if (this.entInfo.follow) {
+        this.$dialog.confirm({
+          title: '提示信息',
+          message: '取消对“' + _this.entInfo.name + '”的关注?',
+          confirmButtonColor: '#2cb7ca'
+        }).then(function () {
+          _this.changeFollowStateRequest()
+        })
+          .catch(function () {
+            console.log('取消操作')
+          })
+      } else {
+        this.changeFollowStateRequest()
+      }
+    },
+    // 获取权限信息
+    getPowerInfo: function () {
+      var _this = this
+      this.loading = this.showLoading()
+      $.ajax({
+        type: 'GET',
+        url: '/bigmember/use/isAdd',
+        success: function (res) {
+          if (res.error_code == 0) {
+            _this.conf.powerLoaded = true
+            if (res.data) {
+              _this.powerInfo = res.data
             }
-            var tip = '';
-            for (var i = 0; i < params.length; i++) {
-                // 因柱状图颜色为渐变色,此处获取到的柱状图颜色,css不能识别,需单独设置小圆点的颜色
-                params[0].marker = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:#2ABED1"></span>'
-                if( i=== 0) {
-                    tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value + '个' + '<br/>';
-                }else if(i == 1){
-                    tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value + '万元' + '<br/>';
-                }
+            if (res.data && $.isArray(res.data.power)) {
+              // 显示完整企业画像(不完整的企业画像只有中标动态)
+              // _this.conf.showPortraitAll = true
+              // 根据power判断权限,企业画像包含权限(4,12,13)
+              var power = res.data.power
+              if (res.data.viper) {
+                _this.isVip = true
+              }
+              if (power.indexOf(4) != -1 || res.data.viper) {
+                // 获取企业画像信息-4
+                _this.conf._4 = true
+              }
+              if (power.indexOf(13) != -1 || res.data.viper) {
+                // 获取企业中标动态-13
+                _this.conf._13 = true
+              }
+              if (power.indexOf(12) != -1) {
+                // 获取企业情报历史记录-12
+                _this.conf._12 = true
+              }
+              // follow的权限:4.12.13只要有一个就可以
+              if (res.data.memberStatus > 0 && (power.indexOf(4) != -1 || power.indexOf(12) != -1 || power.indexOf(13) != -1)) {
+                _this.getEntFollowState()
+              } else {
+                _this.entInfo.followSearchFinish = true
+                _this.entInfo.entExist = false
+                // _this.getEntVisits()
+                _this.portrait = 'winnerVip'
+              }
+              _this.singleTab = false
             }
-            tip += '<div style="padding-top:2px;text-align:center;color:#9B9CA3;">' + ' - ' + params[0].name + ' - ' + '</div>'
-            return tip;
-        },
-        // 1. 年度项目统计图表单独配置
-        annualConfig: function (options) {
-            var that = this;
-            options.grid.bottom = 60
-            options.tooltip.axisPointer.shadowStyle.color = 'rgba(42, 190, 209,0.1)' // 修改点击柱条后背景颜色
-            options.legend.show = true // 显示底部数量、金额、圆点
-            options.yAxis[1].axisLabel.show = true; // 显示右侧y轴刻度
-            options.yAxis[1].axisLabel.formatter = function(value, index) {
-                return value.toString().replace(/,/, '')
-            }  // 去掉右轴逗号分割
-            options.series[1].lineStyle.width = 2 // 折线
-            options.series[1].lineStyle.color = '#FF9F40'
-            // 以下代码为:处理左侧y轴与右侧y轴刻度保持在同一X轴水平线上
-            var maxCountList = this.annualData.rows.map(function(v){
-                return v['项目数量']
-            })
-            var maxPriceList = this.annualData.rows.map(function(v){
-                return v['项目金额']
-            })
-
-            var maxCount = Math.ceil(Math.max.apply(null,maxCountList)).toString();// 取出数量中最大值
-            var maxPrice = Math.ceil(Math.max.apply(null,maxPriceList)).toString();// 取出金额中最大值
-            // var minPrice = Math.min.apply(null,maxPriceList);// 去除金额最小值
-            maxPrice = Math.ceil(maxPrice / (Math.pow(10,maxPrice.length -1))) * Math.pow(10,maxPrice.length -1)
-            maxCount = Math.ceil(maxCount / (Math.pow(10,maxCount.length -1))) * Math.pow(10,maxCount.length -1)
-            var item = options.yAxis
-            item[0].min = 0;
-            item[1].min = 0;
-            item[0].max = maxCount;
-            item[0].interval = Math.ceil(maxCount / 5);
-            item[1].max = maxPrice;
-            item[1].interval = Math.ceil((maxPrice - 0) / 5);
 
-            // 处理点击浮窗显示效果
-            options.tooltip.formatter = function(params) {
-                return that.formatter(params)
+            if (res.data.vipStatus > 0) {
+              if (!res.data.viper) {
+                _this.bidcollPowerInfo.text = '升级'
+                _this.bidcollPowerInfo.btntext = '去升级'
+                _this.bidcollPowerInfo.vip = 1
+              }
             }
-            options.legend.formatter = function (name) {
-                var wnYuan = ['金额', '项目金额']
-                var ge = ['数量', '项目数量']
-                if (wnYuan.indexOf(name) !== -1) {
-                    name += '(万元)-右轴'
-                } else if (ge.indexOf(name) !== -1) {
-                    name += '(个)'
-                }
-                return name;
-            }
-            return options
+            _this.conf.isMember = res.data.memberStatus
+            _this.conf.arr = res.data.power
+            _this.conf.vipStatus = res.data.vipStatus
+            _this.getDataFn()
+          } else {
+            _this.$toast(res.error_msg)
+          }
         },
-        // 2. 月度中标金额(折线图)
-        lineChartConfig: function (options) {
-            options.yAxis[0].name = '中标金额(万元)';
-            options.legend.itemGap = 20;
-            options.tooltip.formatter = function(params) {
-                var tip = '';
-                for (var i = 0; i < params.length; i++) {
-                    params[i].marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params[i].color + ';"></span>'
-                    if(params[i].value[1] !== undefined && params[i].value[1] !== null && !isNaN(params[i].value[1])) {
-                        tip = tip + params[i].marker + params[i].seriesName + params[i].name + '中标金额:' + params[i].value[1].toString().replace(/,/,'') + '万元' +'<br/>';
-                    }
-                }
-                tip += '<div style="padding-top:2px;text-align:center;color:#9B9CA3;">' + ' - ' + params[0].name + ' - ' + '</div>'
-                return tip;
-            }
-            return options;
+        complete: function () {
+          if (_this.loading) {
+            _this.loading.clear()
+          }
         },
-        // 3. 地图配置项
-        mapConfig: function (options) {
-            var _this = this
-            var arr = this.mapChartData.rows
-            // 最大值、最小值
-            var maxNum = Math.max.apply(Math, arr.map(function(o) {return o.value}))
-            var minNum = Math.min.apply(Math, arr.map(function(o) {return o.value}))
-
-            options.visualMap.min = minNum;
-            options.visualMap.max = maxNum < 100 ? 100 : maxNum;
-
-            // 设置最大值
-            options.graphic[options.graphic.length - 1].children[0].style.text = maxNum > 100 ? maxNum : 100
-            options.graphic[options.graphic.length - 1].children[1].style.text = 1;
-            options.visualMap.min = 1;
-            options.visualMap.max = maxNum < 100 ? 100 : maxNum;
-            options.graphic[0].children[0].style.text = '项目数量(个)'
-            options.tooltip.formatter = function (params) {
-                var index = params.dataIndex
-                var item = _this.mapChartData.rows[index]
-                var string = ''
-                if (item) {
-                    if (item.value && item.amount) {
-                        string = item.name + '<br/>项目数量:' + item.value + '个<br/>中标金额:' + item.amount + '万元'
-                    } else if (item.value) {
-                        string = item.name + '<br/>项目数量:' + item.value + '个'
-                    } else if (item.amount) {
-                        string = item.name + '<br/>中标金额:' + item.amount + '万元'
-                    }
-                }
-                return string
-            }
-            return options
+        error: function (error) {
+          console.log(error)
+        }
+      })
+    },
+    // 修改企业关注状态
+    changeFollowStateRequest: function () {
+      var _this = this
+      var loading = this.showLoading()
+      var urls = {
+        addFollow: '/bigmember/follow/ent/addFollow',
+        delFollow: '/bigmember/follow/ent/delFollow'
+      }
+      var url = !!this.entInfo.follow ? urls.delFollow : urls.addFollow
+      $.ajax({
+        type: 'POST',
+        url: url,
+        data: {
+          entId: _this.entInfo.id
         },
-        // 4. 客户平均折扣率配置
-        rateConfig: function (options) {
-            options.color = ['#FB483D', '#05A6F3', '#0BD991', '#FF9F40','#8E6DF2','#C0C4CC'];
-            options.xAxis[0].axisLabel.margin = 12
-            options.yAxis[0].axisLabel.formatter = '{value}%'
-            options.grid = {
-                top: 20,
-                right: 16,
-                bottom: 70,
-                left: 10
+        success: function (res) {
+          if (res.error_code == 0) {
+            // 清除上个页面缓存
+            sessionStorage.removeItem('$data-ent_follow')
+            loading.clear()
+            if (res.data && res.data == 'success') {
+              _this.entInfo.follow = !_this.entInfo.follow
             }
-            options.legend.textStyle.padding = [0, 18, 0,0];
-            options.legend.left = 16;
-            options.legend.bottom = 10;
-            options.tooltip.formatter = function(params) {
-                var tip = '';
-                for (var i = 0; i < params.length; i++) {
-                    params[i].marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params[i].color + ';"></span>'
-                    if(params[i].value[1] === undefined || params[i].value[1] == null) {
-                        tip = tip + params[i].marker + params[i].seriesName + ':--<br/>';
-                    } else {
-                        tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value[1] + '%<br/>';
-                    }
-                }
-                tip += '<div style="padding-top:2px;text-align:center;color:#9B9CA3;">' + ' - ' + params[0].name + ' - ' + '</div>'
-                return tip;
+
+            if (!_this.entInfo.follow) {
+              history.back()
             }
-            return options;
+          } else {
+            _this.showToast(res.error_msg)
+          }
         },
-        // 整理年度项目统计数据
-        arrangeAnnualData: function (data) {
-            if (!data) return
+        error: function (error) {
+          console.log(error)
+        }
+      })
+    },
+    // 初始化图标数据
+    initChartsData: function () {
+      var dataSet = this.entPortraitInfo
+      // 初始化 年度项目统计数据
+      this.arrangeAnnualData(dataSet.yearData)
+      // 初始化 月度统计数据
+      this.arrangeMonthZbData(dataSet.monthData)
+      // 初始化 地图数据
+      this.arrangeMapData(dataSet.areaData)
+      // 初始化 平局折扣率数据
+      this.arrangeRateData(dataSet.rate)
+      // 初始化 饼图 客户类型分布
+      this.initPieChartData(dataSet.top10)
+      // 初始化 重要客户数据
+      this.arrangeImportantData(dataSet.topShow)
+    },
+    getStickyTop: function () {
+      this.stickyTop = '21.33333vw'
+    },
+    goToEntHistory: function () {
+      // if (this.powerInfo.isSubCount) {
+      //     return this.showToast('子账号无法使用企业情报监控')
+      // }
 
-            var rows = [];
-            var count = 0;
-            for (var key in data) {
-                var item = data[key]
-                // 统计数据总数是否为0
-                count += item.Count
-                count += item.Money
-                rows.push({
-                    '日期': parseInt(key),
-                    '项目数量': item.Count,
-                    '项目金额': Math.round(item.Money / 10000)
-                })
-            }
+      this.savePageState()
+      var info = {
+        anchor: '企业情报监控'
+      }
+      sessionStorage.setItem('landinfo', JSON.stringify(info))
+      location.href = './ent_portrait_change?eId=' + encodeURIComponent(this.entInfo.id)
+    },
+    // 修改年度项目统计里点击浮窗显示效果
+    formatter: function (params) {
+      //移除重复的数据
+      for (var i = 0; i < params.length; i++) {
+        for (var j = params.length - 1; j > i; j--) {
+          if (params[j].data == params[i].data) {
+            params.splice(j, 1);
+            break;
+          }
+        }
+      }
+      var tip = '';
+      for (var i = 0; i < params.length; i++) {
+        // 因柱状图颜色为渐变色,此处获取到的柱状图颜色,css不能识别,需单独设置小圆点的颜色
+        params[0].marker = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:#2ABED1"></span>'
+        if (i === 0) {
+          tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value + '个' + '<br/>';
+        } else if (i == 1) {
+          tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value + '万元' + '<br/>';
+        }
+      }
+      tip += '<div style="padding-top:2px;text-align:center;color:#9B9CA3;">' + ' - ' + params[0].name + ' - ' + '</div>'
+      return tip;
+    },
+    // 1. 年度项目统计图表单独配置
+    annualConfig: function (options) {
+      var that = this;
+      options.grid.bottom = 60
+      options.tooltip.axisPointer.shadowStyle.color = 'rgba(42, 190, 209,0.1)' // 修改点击柱条后背景颜色
+      options.legend.show = true // 显示底部数量、金额、圆点
+      options.yAxis[1].axisLabel.show = true; // 显示右侧y轴刻度
+      options.yAxis[1].axisLabel.formatter = function (value, index) {
+        return value.toString().replace(/,/, '')
+      }  // 去掉右轴逗号分割
+      options.series[1].lineStyle.width = 2 // 折线
+      options.series[1].lineStyle.color = '#FF9F40'
+      // 以下代码为:处理左侧y轴与右侧y轴刻度保持在同一X轴水平线上
+      var maxCountList = this.annualData.rows.map(function (v) {
+        return v['项目数量']
+      })
+      var maxPriceList = this.annualData.rows.map(function (v) {
+        return v['项目金额']
+      })
 
-            // rows = utils.bSort(rows, '日期').reverse()
-            rows = utils.bSort(rows, '日期')
+      var maxCount = Math.ceil(Math.max.apply(null, maxCountList)).toString();// 取出数量中最大值
+      var maxPrice = Math.ceil(Math.max.apply(null, maxPriceList)).toString();// 取出金额中最大值
+      // var minPrice = Math.min.apply(null,maxPriceList);// 去除金额最小值
+      maxPrice = Math.ceil(maxPrice / (Math.pow(10, maxPrice.length - 1))) * Math.pow(10, maxPrice.length - 1)
+      maxCount = Math.ceil(maxCount / (Math.pow(10, maxCount.length - 1))) * Math.pow(10, maxCount.length - 1)
+      var item = options.yAxis
+      item[0].min = 0;
+      item[1].min = 0;
+      item[0].max = maxCount;
+      item[0].interval = Math.ceil(maxCount / 5);
+      item[1].max = maxPrice;
+      item[1].interval = Math.ceil((maxPrice - 0) / 5);
 
-            // 数据总量为0,不赋值
-            if (count != 0) {
-                this.annualData.rows = rows;
-            }
-        },
-        // 整理月度项目统计数据
-        arrangeMonthZbData: function (data) {
-            if (!data) return
-            var rows = []
-            var columns = ['月份']
-            var count = 0
-            var allNum = []
-            // 1. 先将月份提取出来, 并排序
-            var yearArr = []
-            for (var key in data) {
-                yearArr.push(parseInt(key))
-                for (var n in data[key]) {
-                  allNum.push(data[key][n])
-                }
-            }
-            yearArr.sort(function (a, b) { return a - b })
+      // 处理点击浮窗显示效果
+      options.tooltip.formatter = function (params) {
+        return that.formatter(params)
+      }
+      options.legend.formatter = function (name) {
+        var wnYuan = ['金额', '项目金额']
+        var ge = ['数量', '项目数量']
+        if (wnYuan.indexOf(name) !== -1) {
+          name += '(万元)-右轴'
+        } else if (ge.indexOf(name) !== -1) {
+          name += '(个)'
+        }
+        return name;
+      }
+      return options
+    },
+    // 2. 月度中标金额(折线图)
+    lineChartConfig: function (options) {
+      options.yAxis[0].name = '中标金额(万元)';
+      options.legend.itemGap = 20;
+      options.tooltip.formatter = function (params) {
+        var tip = '';
+        for (var i = 0; i < params.length; i++) {
+          params[i].marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params[i].color + ';"></span>'
+          if (params[i].value[1] !== undefined && params[i].value[1] !== null && !isNaN(params[i].value[1])) {
+            tip = tip + params[i].marker + params[i].seriesName + params[i].name + '中标金额:' + params[i].value[1].toString().replace(/,/, '') + '万元' + '<br/>';
+          }
+        }
+        tip += '<div style="padding-top:2px;text-align:center;color:#9B9CA3;">' + ' - ' + params[0].name + ' - ' + '</div>'
+        return tip;
+      }
+      return options;
+    },
+    // 3. 地图配置项
+    mapConfig: function (options) {
+      var _this = this
+      var arr = this.mapChartData.rows
+      // 最大值、最小值
+      var maxNum = Math.max.apply(Math, arr.map(function (o) { return o.value }))
+      var minNum = Math.min.apply(Math, arr.map(function (o) { return o.value }))
 
-            // 2. 循环12个月份,并进行处理
-            yearArr.forEach(function (item) {
-                columns.push(item + '年')
-            })
-            for (var i = 1; i <= 12; i++) {
-                var columnsItem = {}
-                columns.forEach(function (item) {
-                    var value = ''
-                    if (item == '月份') {
-                        value = i + '月'
-                    } else if (/年/g.test(item)) {
-                        if (data[item.slice(0, -1)]) {
-                            value = data[item.slice(0, -1)][i]
-                            value = (value / 10000).fixed(2)
-                            count += parseInt(value)
-                        }
-                    }
-                    columnsItem[item] = value
-                })
-                rows.push(columnsItem)
-            }
-            var maxNum = Math.max.apply(Math, allNum.map(function(o) { return o }))
-            // 数据总量为0,不赋值
-            if (count != 0 && maxNum !== 0) {
-                this.monthZbData.columns = columns;
-                this.monthZbData.rows = rows;
-            }
-        },
-        // 整理主要市场分布(中国地图)数据
-        arrangeMapData: function(data) {
-            if (!data) return
+      options.visualMap.min = minNum;
+      options.visualMap.max = maxNum < 100 ? 100 : maxNum;
 
-            var mapRows = []
-            var count = 0
-            if (data && $.isArray(data)) {
-                data.forEach(function (n) {
-                    count += n.projectCount
+      // 设置最大值
+      options.graphic[options.graphic.length - 1].children[0].style.text = maxNum > 100 ? maxNum : 100
+      options.graphic[options.graphic.length - 1].children[1].style.text = 1;
+      options.visualMap.min = 1;
+      options.visualMap.max = maxNum < 100 ? 100 : maxNum;
+      options.graphic[0].children[0].style.text = '项目数量(个)'
+      options.tooltip.formatter = function (params) {
+        var index = params.dataIndex
+        var item = _this.mapChartData.rows[index]
+        var string = ''
+        if (item) {
+          if (item.value && item.amount) {
+            string = item.name + '<br/>项目数量:' + item.value + '个<br/>中标金额:' + item.amount + '万元'
+          } else if (item.value) {
+            string = item.name + '<br/>项目数量:' + item.value + '个'
+          } else if (item.amount) {
+            string = item.name + '<br/>中标金额:' + item.amount + '万元'
+          }
+        }
+        return string
+      }
+      return options
+    },
+    // 4. 客户平均折扣率配置
+    rateConfig: function (options) {
+      options.color = ['#FB483D', '#05A6F3', '#0BD991', '#FF9F40', '#8E6DF2', '#C0C4CC'];
+      options.xAxis[0].axisLabel.margin = 12
+      options.yAxis[0].axisLabel.formatter = '{value}%'
+      options.grid = {
+        top: 20,
+        right: 16,
+        bottom: 70,
+        left: 10
+      }
+      options.legend.textStyle.padding = [0, 18, 0, 0];
+      options.legend.left = 16;
+      options.legend.bottom = 10;
+      options.tooltip.formatter = function (params) {
+        var tip = '';
+        for (var i = 0; i < params.length; i++) {
+          params[i].marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params[i].color + ';"></span>'
+          if (params[i].value[1] === undefined || params[i].value[1] == null) {
+            tip = tip + params[i].marker + params[i].seriesName + ':--<br/>';
+          } else {
+            tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value[1] + '%<br/>';
+          }
+        }
+        tip += '<div style="padding-top:2px;text-align:center;color:#9B9CA3;">' + ' - ' + params[0].name + ' - ' + '</div>'
+        return tip;
+      }
+      return options;
+    },
+    // 整理年度项目统计数据
+    arrangeAnnualData: function (data) {
+      if (!data) return
 
-                    mapRows.push({
-                        name: n.areaName,
-                        value: n.projectCount,
-                        amount: (n.bidamountCount / 10000).fixed(2)
-                    })
-                })
-            }
+      var rows = [];
+      var count = 0;
+      for (var key in data) {
+        var item = data[key]
+        // 统计数据总数是否为0
+        count += item.Count
+        count += item.Money
+        rows.push({
+          '日期': parseInt(key),
+          '项目数量': item.Count,
+          '项目金额': Math.round(item.Money / 10000)
+        })
+      }
 
-            // 数据总量为0,不赋值
-            if (count != 0) {
-                this.mapChartData.rows = mapRows;
-            }
-        },
-        // 整理平均折扣率数据
-        arrangeRateData: function (data) {
-            if (!data) return
-            var rows = []
-            var columns = ['日期', '全部客户']
-            var count = 0
+      // rows = utils.bSort(rows, '日期').reverse()
+      rows = utils.bSort(rows, '日期')
 
-            for (var c in data) {
-                if (c !== '全部客户') {
-                    columns.push(c)
-                }
-            }
-            // 获取年份数组
-            var yearArr = []
-            for (var key in data['全部客户']) {
-                yearArr.push(key)
+      // 数据总量为0,不赋值
+      if (count != 0) {
+        this.annualData.rows = rows;
+      }
+    },
+    // 整理月度项目统计数据
+    arrangeMonthZbData: function (data) {
+      if (!data) return
+      var rows = []
+      var columns = ['月份']
+      var count = 0
+      var allNum = []
+      // 1. 先将月份提取出来, 并排序
+      var yearArr = []
+      for (var key in data) {
+        yearArr.push(parseInt(key))
+        for (var n in data[key]) {
+          allNum.push(data[key][n])
+        }
+      }
+      yearArr.sort(function (a, b) { return a - b })
+
+      // 2. 循环12个月份,并进行处理
+      yearArr.forEach(function (item) {
+        columns.push(item + '年')
+      })
+      for (var i = 1; i <= 12; i++) {
+        var columnsItem = {}
+        columns.forEach(function (item) {
+          var value = ''
+          if (item == '月份') {
+            value = i + '月'
+          } else if (/年/g.test(item)) {
+            if (data[item.slice(0, -1)]) {
+              value = data[item.slice(0, -1)][i]
+              value = (value / 10000).fixed(2)
+              count += parseInt(value)
             }
-            yearArr.sort(function (a, b) { return a - b })
+          }
+          columnsItem[item] = value
+        })
+        rows.push(columnsItem)
+      }
+      var maxNum = Math.max.apply(Math, allNum.map(function (o) { return o }))
+      // 数据总量为0,不赋值
+      if (count != 0 && maxNum !== 0) {
+        this.monthZbData.columns = columns;
+        this.monthZbData.rows = rows;
+      }
+    },
+    // 整理主要市场分布(中国地图)数据
+    arrangeMapData: function (data) {
+      if (!data) return
 
-            yearArr.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 mapRows = []
+      var count = 0
+      if (data && $.isArray(data)) {
+        data.forEach(function (n) {
+          count += n.projectCount
 
-            // 数据总量为0,不赋值
-            if (count != 0) {
-                this.rateData.columns = columns;
-                this.rateData.rows = rows;
-            }
-        },
-        // 初始化饼图
-        initPieChartData: function (d) {
-            if (!d) return
-            var that = this
-            var arr = []
-            var data = JSON.parse(JSON.stringify(d))
-            // 降序排列
-            data.sort(function (a, b) {
-                return b.bidamount_share - a.bidamount_share
-            })
-            data.forEach(function (item){
-              arr.push(item.buyerClass,item.bidamount_share,item.bidamount_count,item.project_count,item.rate_avg)
-            })
-            var normal =['行业','中标金额占比','中标金额','项目数量','平均折扣率'];
-            var newArr = that.arrTrans(5,arr);
-            newArr.unshift(normal)
-            chartOptions.deformPieChart.dataset.source = newArr;
-            chartOptions.deformPieChart.tooltip.formatter = function(params){
-                var tip = '';
-                var data = params.data;
-                params.marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params.color +'"></span>';
-                var percent = '<span style="padding-left:13px;">中标金额占比:' + (data[1]*100).fixed(2) + '%</span></br>';
-                var scale = '<span style="padding-left:13px;">中标金额:' + utils.moneyUnit(data[2].fixed(2)) + '</span></br>';
-                var count = '<span style="padding-left:13px;">项目数量:' + data[3] + '个</span></br>';
-                var rate = (typeof data[4] === 'number' && !isNaN(data[4])) ? '<span style="padding-left:13px;">平均折扣率:' + (data[4]*100).fixed(2) + '%</span></br>' : '';
-                tip = params.marker + params.name +'<br/>' + percent + scale + count + rate
-                return tip;
-            }
-            chartOptions.deformPieChart.legend.formatter = null
-            that.$nextTick(function(){
-                var ref = that.$refs.pieChart;
-                var pieChart = echarts.init(ref, null, that.initEchartsOptions);
-                pieChart.setOption(chartOptions.deformPieChart);
-                pieChart.resize();
+          mapRows.push({
+            name: n.areaName,
+            value: n.projectCount,
+            amount: (n.bidamountCount / 10000).fixed(2)
+          })
+        })
+      }
+
+      // 数据总量为0,不赋值
+      if (count != 0) {
+        this.mapChartData.rows = mapRows;
+      }
+    },
+    // 整理平均折扣率数据
+    arrangeRateData: function (data) {
+      if (!data) return
+      var rows = []
+      var columns = ['日期', '全部客户']
+      var count = 0
+
+      for (var c in data) {
+        if (c !== '全部客户') {
+          columns.push(c)
+        }
+      }
+      // 获取年份数组
+      var yearArr = []
+      for (var key in data['全部客户']) {
+        yearArr.push(key)
+      }
+      yearArr.sort(function (a, b) { return a - b })
+
+      yearArr.forEach(function (item) {
+        var rowsItem = {
+          '日期': item + '年'
+        }
+        for (var k in data) {
+          count += (data[k][item] * 100)
+          rowsItem[k] = data[k][item] == null ? null : (data[k][item] * 100).fixed(2)
+        }
+        rows.push(rowsItem)
+      })
+
+      // 数据总量为0,不赋值
+      if (count != 0) {
+        this.rateData.columns = columns;
+        this.rateData.rows = rows;
+      }
+    },
+    // 初始化饼图
+    initPieChartData: function (d) {
+      if (!d) return
+      var that = this
+      var arr = []
+      var data = JSON.parse(JSON.stringify(d))
+      // 降序排列
+      data.sort(function (a, b) {
+        return b.bidamount_share - a.bidamount_share
+      })
+      data.forEach(function (item) {
+        arr.push(item.buyerClass, item.bidamount_share, item.bidamount_count, item.project_count, item.rate_avg)
+      })
+      var normal = ['行业', '中标金额占比', '中标金额', '项目数量', '平均折扣率'];
+      var newArr = that.arrTrans(5, arr);
+      newArr.unshift(normal)
+      chartOptions.deformPieChart.dataset.source = newArr;
+      chartOptions.deformPieChart.tooltip.formatter = function (params) {
+        var tip = '';
+        var data = params.data;
+        params.marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params.color + '"></span>';
+        var percent = '<span style="padding-left:13px;">中标金额占比:' + (data[1] * 100).fixed(2) + '%</span></br>';
+        var scale = '<span style="padding-left:13px;">中标金额:' + utils.moneyUnit(data[2].fixed(2)) + '</span></br>';
+        var count = '<span style="padding-left:13px;">项目数量:' + data[3] + '个</span></br>';
+        var rate = (typeof data[4] === 'number' && !isNaN(data[4])) ? '<span style="padding-left:13px;">平均折扣率:' + (data[4] * 100).fixed(2) + '%</span></br>' : '';
+        tip = params.marker + params.name + '<br/>' + percent + scale + count + rate
+        return tip;
+      }
+      chartOptions.deformPieChart.legend.formatter = null
+      that.$nextTick(function () {
+        var ref = that.$refs.pieChart;
+        var pieChart = echarts.init(ref, null, that.initEchartsOptions);
+        pieChart.setOption(chartOptions.deformPieChart);
+        pieChart.resize();
+      })
+    },
+    arrTrans: function (num, arr) { // 一维数组转换为二维数组
+      var iconsArr = [];
+      arr.forEach(function (item, index) {
+        var page = Math.floor(index / num); // 计算该元素为第几个素组内
+        if (!iconsArr[page]) { // 判断是否存在
+          iconsArr[page] = [];
+        }
+        iconsArr[page].push(item);
+      });
+      return iconsArr;
+    },
+    // 整理重要客户数据
+    arrangeImportantData: function (data) {
+      if (!data) return
+      var arr = []
+      if ($.isArray(data)) {
+        data.forEach(function (list) {
+          var i1 = {
+            title: list.buyerclass,
+            list: []
+          }
+          if (list.topData && $.isArray(list.topData)) {
+            list.topData.forEach(function (item) {
+              i1.list.push({
+                name: item.BuyerName,
+                money: item.CountMoney,
+                count: item.CountProject,
+                rate: item.AvgRate ? (item.AvgRate * 100).fixed(2) : item.AvgRate,
+                time: new Date(item.lastTime * 1000).pattern('yyyy/MM/dd'),
+                percent: item.CountMoney / list.topData[0].CountMoney * 100 + '%'
+              })
             })
-        },
-        arrTrans: function(num, arr) { // 一维数组转换为二维数组
-            var iconsArr = [];
-            arr.forEach(function(item, index) {
-                var page = Math.floor(index / num); // 计算该元素为第几个素组内
-                if (!iconsArr[page]) { // 判断是否存在
-                    iconsArr[page] = [];
-                }
-                iconsArr[page].push(item);
-            });
-            return iconsArr;
-        },
-        // 整理重要客户数据
-        arrangeImportantData: function (data) {
-            if (!data) return
-            var arr = []
-            if ($.isArray(data)) {
-                data.forEach(function (list) {
-                    var i1 = {
-                        title: list.buyerclass,
-                        list: []
-                    }
-                    if (list.topData && $.isArray(list.topData)) {
-                        list.topData.forEach(function (item) {
-                            i1.list.push({
-                                name: item.BuyerName,
-                                money: item.CountMoney,
-                                count: item.CountProject,
-                                rate: item.AvgRate ? (item.AvgRate*100).fixed(2) : item.AvgRate,
-                                time: new Date(item.lastTime * 1000).pattern('yyyy/MM/dd'),
-                                percent: item.CountMoney / list.topData[0].CountMoney*100 + '%'
-                            })
-                        })
-                    }
+          }
 
-                    if (!list.buyerclass || ($.isArray(list.topData) && list.topData.length === 0)) {
-                        // console.log('此数据为空')
-                    } else {
-                        arr.push(i1)
-                    }
-                })
-            }
-            this.importantCustomers = arr
-        },
-        // 去公告详情页
-        toProjectDetail: function (item) {
-            this.savePageState()
-            if (item.id) {
-                var href = '/jyapp/article/content/' + item.id + '.html'
-                location.href = href
-            }
-        },
-        // 去中标单位画像
-        toUnitPortrayal: function (item) {
-            this.savePageState()
-            if (item.name) {
-                location.href = 'unit_portrayal?entName=' + item.name
-            }
-        },
-        savePageState: function () {
-            this.scrollTop = $('#ent-portrait').scrollTop()
-            var data = {
-                conf: this.conf,
-                tabActiveName: this.tabActiveName,
-                entInfo: this.entInfo,
-                entBaseInfo: this.entBaseInfo,
-                topProject: this.topProject,
-                entPortraitInfo: this.entPortraitInfo,
-                powerInfo: this.powerInfo,
-                singleTab: this.singleTab,
-                scrollTop: this.scrollTop,
-                gotTab2: this.gotTab2
-            }
-            sessionStorage.setItem(this.sessKey, JSON.stringify(data))
-        },
-        reStoreState: function () {
-            var $data = sessionStorage.getItem(this.sessKey)
-            if ($data) {
-                $data = JSON.parse($data)
-                // 如果恢复的企业名称和当前url企业名称不同,则清除缓存,重新请求
-                if (this.entInfo.id !== $data.entInfo.id) {
-                    sessionStorage.removeItem(this.sessKey)
-                    return false
-                }
-                this.tabActiveName = $data.tabActiveName
-                Object.assign(this.conf, $data.conf || {})
-                Object.assign(this.entInfo, $data.entInfo || {})
-                Object.assign(this.entBaseInfo, $data.entBaseInfo || {})
-                Object.assign(this.topProject, $data.topProject || {})
-                Object.assign(this.entPortraitInfo, $data.entPortraitInfo || {})
-                Object.assign(this.powerInfo, $data.powerInfo || {})
-                Object.assign(this.entvisit, $data.entvisit || {})
-                this.singleTab = $data.singleTab
-                this.scrollTop = $data.scrollTop
-                this.gotTab2 = $data.gotTab2
-                sessionStorage.removeItem(this.sessKey)
-            }
-            return !!$data
+          if (!list.buyerclass || ($.isArray(list.topData) && list.topData.length === 0)) {
+            // console.log('此数据为空')
+          } else {
+            arr.push(i1)
+          }
+        })
+      }
+      this.importantCustomers = arr
+    },
+    // 去公告详情页
+    toProjectDetail: function (item) {
+      this.savePageState()
+      if (item.id) {
+        var href = '/jyapp/article/content/' + item.id + '.html'
+        location.href = href
+      }
+    },
+    // 去中标单位画像
+    toUnitPortrayal: function (item) {
+      this.savePageState()
+      if (item.name) {
+        location.href = 'unit_portrayal?entName=' + item.name
+      }
+    },
+    savePageState: function () {
+      this.scrollTop = $('#ent-portrait').scrollTop()
+      var data = {
+        conf: this.conf,
+        tabActiveName: this.tabActiveName,
+        entInfo: this.entInfo,
+        entBaseInfo: this.entBaseInfo,
+        topProject: this.topProject,
+        entPortraitInfo: this.entPortraitInfo,
+        powerInfo: this.powerInfo,
+        singleTab: this.singleTab,
+        scrollTop: this.scrollTop,
+        gotTab2: this.gotTab2
+      }
+      sessionStorage.setItem(this.sessKey, JSON.stringify(data))
+    },
+    reStoreState: function () {
+      var $data = sessionStorage.getItem(this.sessKey)
+      if ($data) {
+        $data = JSON.parse($data)
+        // 如果恢复的企业名称和当前url企业名称不同,则清除缓存,重新请求
+        if (this.entInfo.id !== $data.entInfo.id) {
+          sessionStorage.removeItem(this.sessKey)
+          return false
         }
+        this.tabActiveName = $data.tabActiveName
+        Object.assign(this.conf, $data.conf || {})
+        Object.assign(this.entInfo, $data.entInfo || {})
+        Object.assign(this.entBaseInfo, $data.entBaseInfo || {})
+        Object.assign(this.topProject, $data.topProject || {})
+        Object.assign(this.entPortraitInfo, $data.entPortraitInfo || {})
+        Object.assign(this.powerInfo, $data.powerInfo || {})
+        Object.assign(this.entvisit, $data.entvisit || {})
+        this.singleTab = $data.singleTab
+        this.scrollTop = $data.scrollTop
+        this.gotTab2 = $data.gotTab2
+        sessionStorage.removeItem(this.sessKey)
+      }
+      return !!$data
     }
+  }
 }
 var vueComponent = new Vue(vNode)

+ 28 - 2
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/set_infotype.js

@@ -20,9 +20,35 @@ var vNode = {
             },
             {
                 name: '招标预告',
-                value: '预告',
+                value: '',
                 level: 1,
-                children: []
+                children: [
+                    {
+                        name: '预告',
+                        value: '预告',
+                        level: 2,
+                    },
+                    {
+                        name: '预审',
+                        value: '预审',
+                        level: 2,
+                    },
+                    {
+                        name: '预审结果',
+                        value: '预审结果',
+                        level: 2,
+                    },
+                    {
+                        name: '论证意见',
+                        value: '论证意见',
+                        level: 2,
+                    },
+                    {
+                        name: '需求公示',
+                        value: '需求公示',
+                        level: 2,
+                    },
+                ]
             },
             {
                 name: '招标公告',

+ 22 - 7
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/utils.js

@@ -1,5 +1,5 @@
 /**
- * utils.js v0.0.1
+ * utils.js
  * 各类js工具函数
  */
 
@@ -90,10 +90,15 @@ var popupTip = {
     }
 }
 
+var versionChangeLog = {
+    '0.0.1': 'init',
+    '0.0.2': 'utils.dateFromNow 函数逻辑修改,具体修改内容查看函数注释'
+}
+
 
 var utils = {
     // utils版本号
-    version: '0.0.1',
+    version: '0.0.2',
     isWeiXinBrowser: navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1,
     isAndroid: navigator.userAgent.toLowerCase().indexOf('android') !== -1,
     isIos: /iphone|ipod|ipad|ios/.test(navigator.userAgent.toLowerCase()),
@@ -425,10 +430,10 @@ var utils = {
         }
     },
     /**
-     * 时间戳转换 多少秒、多少分、多少小时前、多少天前  超出10天显示年月日
+     * 时间戳转换 多少秒、多少分、多少小时前  昨天以及昨天之前的显示年月日(今年的时间不显示年份)
      * @param {Date} originTime 要转换的时间对象(或者时间戳)
      */
-    dateFromNow: function (originTime) {
+    dateFromNow: function (originTime, useOld) {
         if (!originTime) return
         // 原始时间 - 传入的时间戳
         var originTimeStamp = +new Date(originTime)
@@ -454,8 +459,18 @@ var utils = {
         }
 
         var timeString = ''
-        if (diffTimeStampAbsS > days11) {
-            // 大于10天,则使用正常日期显示
+        // 10天前
+        var tenDaysAgo = diffTimeStampAbsS > days11
+        // 是否是当天
+        var isCurrentDay = new Date(originTimeStamp).pattern('yyyy.MM.dd') === new Date().pattern('yyyy.MM.dd')
+
+        var condition = !isCurrentDay
+        if (useOld) {
+            condition = tenDaysAgo
+        }
+
+        if (condition) {
+            // 不是当天,则使用正常日期显示
             var originDate = new Date(originTimeStamp)
             var nowDate = new Date()
             // 是否同年
@@ -464,7 +479,7 @@ var utils = {
             var patternString = sameYear ? 'MM-dd' : 'yyyy-MM-dd'
             timeString = originDate.pattern(patternString)
         } else {
-            for (var i = 0; i < 7; i++) {
+            for (var i = 0; i < dataMap.number.length; i++) {
                 var inm = Math.floor(diffTimeStampAbsS / dataMap.number[i])
                 if (inm != 0) {
                     timeString = inm + dataMap.zh[i] + postfix

+ 4 - 4
src/jfw/modules/app/src/web/staticres/jyapp/css/appbutton.css

@@ -55,11 +55,11 @@
 .j-button-confirm,
 .j-button-cancel {
   width: 48%!important;
-  height: 0.8rem!important;
+  height: 0.88rem!important;
   line-height: 0.8rem;
   font-size: 0.32rem!important;
   text-align: center;
-  border-radius: 0.16rem;
+  border-radius: 0.08rem!important;
 }
 .j-button-confirm[disabled]{
   background-color: #87DFE9;
@@ -82,11 +82,11 @@
   justify-content: center;
   /* flex: 1; */
   width: 48%!important;
-  height: 0.8rem!important;
+  height: 0.88rem!important;
   line-height: 0.8rem;
   font-size: 0.32rem!important;
   text-align: center;
-  border-radius: 0.16rem;
+  border-radius: 0.08rem!important;
   flex: none!important;
 }
 .j-button-confirm1[disabled]{

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/css/searchindex.css

@@ -3626,7 +3626,7 @@ body{
 }
 .p13 .home .top .home_search .home_search_left span {
     color: #C0C4CC;
-    font-size: 16px;
+    font-size: 14px;
 }
 .p13 .home_search.fixed-top .jy_sprite_main.sprite_home_search {
     width: 0.4rem;

+ 26 - 11
src/jfw/modules/app/src/web/staticres/jyapp/css/wxinfocontent.css

@@ -1136,8 +1136,8 @@ ul {
 
 .bigvip_drain{
 	display: flex;
-	align-items: center;
-	justify-content: center;
+	/* align-items: center; */
+	/* justify-content: space-between; */
 	padding: .24rem .3rem;
 	width: 100%;
 	min-height: .96rem;
@@ -1145,19 +1145,34 @@ ul {
 }
 
 .bigvip_drain .bigvip_text{
-    text-align: left;
-	font-size: .34rem;
-	font-family: YouShe;
+  width: 100%;
+  text-align: left;
+	font-size: .26rem;
+	/* font-family: YouShe; */
 	font-weight: 400;
-	color: #ffffff;
-	line-height: .48rem;
+	/* color: #ffffff; */
+  line-height: .4rem;
+  color: #171826;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.bigvip_drain  .bigvip_ad{
+  flex: 1;
+  margin-right: 0.08rem;
 }
 .bigvip_drain .bigvip_btn{
-	font-size: .34rem;
-	font-family: YouShe;
+  display: inline-block;
+  padding: 0 .12rem;
+  font-size: .26rem;
+  height: .48rem;
+	/* font-family: YouShe; */
 	font-weight: 400;
-	color: #ff9f40;
-	line-height: .48rem;
+	color: #fff;
+  line-height: .48rem;
+  background: #2abed1;
+  border-radius: 8px;
+  text-align: center;
 }
 
 #baseInfoTitle {

+ 102 - 1
src/jfw/modules/app/src/web/staticres/jyapp/js/common.js

@@ -661,7 +661,9 @@ $(function () {
   //	});
   //	if(!mySysIsIos()){
   try {
-    afterPageInit();
+    if (location.href.indexOf('/follow/set/list') == -1) {
+      afterPageInit();
+    }
     //发送渠道统计
     sendChannelSign();
   } catch (e) {
@@ -733,7 +735,106 @@ var Verification = {
     return /^[1][3-9][0-9]{9}$/.test(value);
   }
 }
+// 部分页面没有全局工具函数
+if (typeof utils !== 'object') {
+  utils = {}
+}
+Date.prototype.pattern = function (fmt) {
+  if (!fmt) return ''
+  var o = {
+    'y+': this.getFullYear(),
+    'M+': this.getMonth() + 1, // 月份
+    'd+': this.getDate(), // 日
+    // 12小时制
+    'h+': this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, // 小时
+    // 24小时制
+    'H+': this.getHours(), // 小时
+    'm+': this.getMinutes(), // 分
+    's+': this.getSeconds(), // 秒
+    'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
+    'S': this.getMilliseconds(), // 毫秒
+    'E+': this.getDay(), // 周
+  };
+  var week = {
+    '0': '日',
+    '1': '一',
+    '2': '二',
+    '3': '三',
+    '4': '四',
+    '5': '五',
+    '6': '六'
+  };
+  if (/(y+)/.test(fmt)) {
+    fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
+  }
+  if (/(E+)/.test(fmt)) {
+    fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '星期' : '周') : '') + week[
+    this.getDay() + '']);
+  }
+  for (var k in o) {
+    if (new RegExp('(' + k + ')').test(fmt)) {
+      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k])
+          .length)));
+    }
+  }
+  return fmt;
+}
+utils.dateFromNow = function (originTime, useOld) {
+  if (!originTime) return
+  // 原始时间 - 传入的时间戳
+  var originTimeStamp = +new Date(originTime)
+  // 当前时间戳
+  var nowTimeStamp = +new Date()
+  // 时间戳相差多少
+  var diffTimeStamp = nowTimeStamp - originTimeStamp
+
+  var postfix = diffTimeStamp > 0 ? '前' : '后'
+  // 求绝对值 ms(毫秒)
+  var diffTimeStampAbsMs = Math.abs(diffTimeStamp)
+  var diffTimeStampAbsS = Math.round(diffTimeStampAbsMs / 1000)
+
+  // 10天的秒数
+  var days11 = 11 * 24 * 60 * 60
+  // var dataMap = {
+  //     zh: ['年', '个月', '星期', '天', '小时', '分钟', '秒'],
+  //     number: [365*24*60*60, 30*24*60*60, 7*24*60*60, 24*60*60, 60*60, 60, 1]
+  // }
+  var dataMap = {
+    zh: ['天', '小时', '分钟', '秒'],
+    number: [24 * 60 * 60, 60 * 60, 60, 1]
+  }
+
+  var timeString = ''
+  // 10天前
+  var tenDaysAgo = diffTimeStampAbsS > days11
+  // 是否是当天
+  var isCurrentDay = new Date(originTimeStamp).pattern('yyyy.MM.dd') === new Date().pattern('yyyy.MM.dd')
+
+  var condition = !isCurrentDay
+  if (useOld) {
+    condition = tenDaysAgo
+  }
 
+  if (condition) {
+    // 不是当天,则使用正常日期显示
+    var originDate = new Date(originTimeStamp)
+    var nowDate = new Date()
+    // 是否同年
+    var sameYear = originDate.getFullYear() === nowDate.getFullYear()
+    // 如果是当年,则不显示年
+    var patternString = sameYear ? 'MM-dd' : 'yyyy-MM-dd'
+    timeString = originDate.pattern(patternString)
+  } else {
+    for (var i = 0; i < dataMap.number.length; i++) {
+      var inm = Math.floor(diffTimeStampAbsS / dataMap.number[i])
+      if (inm != 0) {
+        timeString = inm + dataMap.zh[i] + postfix
+        break
+      }
+    }
+  }
+  return timeString
+}
 //计算时差
 function timeDiff (date) {
   var date1 = date;//开始时间

+ 131 - 38
src/jfw/modules/app/src/web/staticres/jyapp/js/historypush.js

@@ -56,10 +56,31 @@ var vm = new Vue({
         keytimer: '',
         noticetimer: ''
       },
+      // 选择项value显示内容
+      moreFiltersText: {
+        cateItem: '',
+        keywordItem: '',
+        noticeItem: ''
+      },
+      moreFiltersTextCache: {
+        cateItem: '',
+        keywordItem: '',
+        noticeItem: ''
+      },
+      moreFiltersShow: {
+        cateItem: false, // 采购单位类型
+        keywordItem: false, // 关键词
+        noticeItem: false, // 公告类型
+      },
       iosMeauStyle: false,
       goUpText: ''
     }
   },
+  computed: {
+    selectedMoreCancelDisabled: function () {
+      return !(this.buyerclass || this.key || this.subtype)
+    }
+  },
   created () {
     this.getHasWeekMonthData()
     this.getUserRoot()
@@ -88,6 +109,33 @@ var vm = new Vue({
     this.addEventListerWeb()
   },
   methods: {
+    showDialog: function (conf) {
+      var defaultConf = {
+        title: '提示',
+        message: 'message',
+        className: 'j-confirm-dialog',
+        overlayClass: 'j-overlay',
+        showConfirmButton: true,
+        showCancelButton: true,
+        confirmButtonText: '确定',
+        confirmButtonColor: '#2abed1'
+      }
+      if (conf) {
+        Object.assign(defaultConf, conf)
+      }
+      return this.$dialog.confirm(defaultConf)
+    },
+    // 显示去开通超级订阅弹框
+    showSuperVipDialog: function () {
+      this.showDialog({
+        title: '开通超级订阅',
+        message: '立享更多搜索权限\n寻找商机更精准',
+        confirmButtonText: '去开通',
+        className: 'j-confirm-dialog text-center super-vip-dialog',
+      }).then(function () {
+        topay()
+      }).catch(function() {})
+    },
     addEventListerWeb: function() {
       let _this = this
       //监听浏览器tab切换,以便在tab切换之后,页面隐藏的时候,把弹幕停止
@@ -102,7 +150,7 @@ var vm = new Vue({
       }, false);
     },
     recover: function () {
-      var excludeKey = ['sessStorageKey']
+      var excludeKey = ['sessStorageKey', 'moreFiltersShow']
       var $data = sessionStorage.getItem(this.sessStorageKey)
       if ($data) {
           $data = JSON.parse($data)
@@ -128,10 +176,8 @@ var vm = new Vue({
           }
           // 采购单位类型
           if(res.buyerclass != '') {
-            setTimeout(() => {
-              $('.cateText').html(res.tagText.cateText)
-            })
             this.selectCateList = res.buyerclass.split(',')
+            this.moreFiltersText.cateItem = this.selectCateList.length
           }
           // 行业
           if(res.subscopeclass != '') {
@@ -142,17 +188,13 @@ var vm = new Vue({
           }
           // 关键词
           if(res.key != '') {
-            setTimeout(() => {
-              $('.keywordText').html(res.tagText.keywordText)
-            })
             this.selectKeyWordList = res.key.split(',')
+            this.moreFiltersText.keywordItem = this.selectKeyWordList.length
           }
           // 公告类型
           if(res.subtype != '') {
-            setTimeout(() => {
-              $('.noticeText').html(res.tagText.noticeText)
-            })
             this.selectNoticeList = res.subtype.split(',')
+            this.moreFiltersText.noticeItem = this.selectNoticeList.length
           }
           sessionStorage.removeItem(this.sessStorageKey)
       }
@@ -182,6 +224,17 @@ var vm = new Vue({
     close: function() {
       this.iosMeauStyle = false
     },
+    calcSelected: function (which) {
+      return this.moreFiltersText[which] || '全部'
+    },
+    moreFiltersItemShow: function (which, text) {
+      this.goUpText = text
+      if (this.screenShow) {
+        this.moreFiltersShow[which] = true
+      } else {
+        this.showSuperVipDialog()
+      }
+    },
     // 订阅推送消息展示数据
     setPushTime: function(time) {
       console.log(time)
@@ -235,8 +288,29 @@ var vm = new Vue({
         }
       })
     },
+    selectedMoreConfirmed: function () {
+      this.$refs.moreDropdownItems.toggle(false)
+      if (this.screenShow) {
+        this.buyerclass = this.moreFiltersTextCache.cateItem
+        this.key = this.moreFiltersTextCache.keywordItem
+        this.subtype = this.moreFiltersTextCache.noticeItem
+        this.doSearch()
+      }
+    },
+    selectedMoreCancel: function () {
+      this.cancel({ name: 'cateItem' })
+      this.cancel({ name: 'keywordItem' })
+      this.cancel({ name: 'noticeItem' })
+      this.$refs.moreDropdownItems.toggle(false)
+
+      if (this.screenShow) {
+        this.buyerclass = ''
+        this.key = ''
+        this.subtype = ''
+        this.doSearch()
+      }
+    },
     confirm: function(data){
-      console.log(data)
       if(data.name === 'dateItem'){
         const timeRange = {
           start: (data.data.start / 1000).toFixed(0),
@@ -275,6 +349,9 @@ var vm = new Vue({
             break
           }
         }
+
+        this.setToggle()
+        this.doSearch()
       } else if(data.name === 'areaCityItem'){
         var areaCityRes = data.data
         var count = data.count
@@ -298,22 +375,28 @@ var vm = new Vue({
           this.area = obj.p.join(',')
           this.city = obj.c.join(',')
         }
+
+        this.setToggle()
+        this.doSearch()
       } else if(data.name === 'industryItem'){
         $('.industryText').html(data.t)
         this.tagText.industryText = data.t
         this.subscopeclass = data.data.join(',')
+
+        this.setToggle()
+        this.doSearch()
       } else if(data.name === 'cateItem'){
-        $('.cateText').html('采购单位' + data.t)
-        this.tagText.cateText = '采购单位' + data.t
-        this.buyerclass = data.data.join(',')
+        this.moreFiltersText.cateItem = data.t
+        this.moreFiltersTextCache.cateItem = data.data.join(',')
+        this.moreFiltersShow.cateItem = false
       } else if(data.name === 'keywordItem'){
-        $('.keywordText').html(data.t)
-        this.tagText.keywordText = data.t
-        this.key = data.data.join(',')
+        this.moreFiltersText.keywordItem = data.t.replace('关键词', '')
+        this.moreFiltersTextCache.keywordItem = data.data.join(',')
+        this.moreFiltersShow.keywordItem = false
       } else if(data.name === 'noticeItem'){
-        $('.noticeText').html(data.t)
-        this.tagText.noticeText = data.t
-        this.subtype = data.data.join(',')
+        this.moreFiltersText.noticeItem = data.t.replace('公告类型', '')
+        this.moreFiltersTextCache.noticeItem = data.data.join(',')
+        this.moreFiltersShow.noticeItem = false
       } else if(data.name === 'rootItem'){
         try {
           _hmt.push(['_trackEvent','超级订阅-app', 'click', '推送列表页' + this.goUpText + '-去开通']);
@@ -324,13 +407,8 @@ var vm = new Vue({
       } else {
         return console.log('暂无数据')
       }
-      this.setToggle()
-      setTimeout(()=>{
-        this.getAjaXParams()
-      }, 500)
     },
     cancel: function(data){
-      console.log(data)
       if(data.name === 'dateItem'){
         this.time = ''
         this.tagText.timeText = '时间'
@@ -338,32 +416,49 @@ var vm = new Vue({
         this.selectDate.end = ''
         this.selectDate.exact = 'all'
         this.setTimer.datetimer = new Date().getTime()
+
+        this.setToggle()
+        this.doSearch()
       } else if(data.name === 'areaCityItem'){
         this.area = ''
         this.city = ''
         $('.areaText').html('地区')
         this.setTimer.areatimer = new Date().getTime()
+
+        this.setToggle()
+        this.doSearch()
       } else if(data.name === 'industryItem'){
         this.subscopeclass = ''
         $('.industryText').html('行业')
         this.setTimer.industrytimer = new Date().getTime()
+
+        this.setToggle()
+        this.doSearch()
       } else if(data.name === 'cateItem'){
-        this.buyerclass = ''
-        $('.cateText').html('采购单位')
+        this.selectCateList = []
+        this.moreFiltersTextCache.cateItem = ''
+        this.moreFiltersText.cateItem = ''
         this.setTimer.catetimer = new Date().getTime()
+        this.moreFiltersShow.cateItem = false
       } else if(data.name === 'keywordItem'){
-        this.key = ''
-        $('.keywordText').html('关键词')
+        this.selectKeyWordList = []
+        this.moreFiltersTextCache.keywordItem = ''
+        this.moreFiltersText.keywordItem = ''
         this.setTimer.keytimer = new Date().getTime()
+        this.moreFiltersShow.keywordItem = false
       } else if(data.name === 'noticeItem'){
-        this.subtype = ''
-        $('.noticeText').html('公告类型')
+        this.selectNoticeList = []
+        this.moreFiltersTextCache.noticeItem = ''
+        this.moreFiltersText.noticeItem = ''
         this.setTimer.noticetimer = new Date().getTime()
+        this.moreFiltersShow.noticeItem = false
+      } else if(data.name === 'rootItem') {
+        this.setToggle()
       }
-      this.setToggle()
-      setTimeout(()=>{
-        this.getAjaXParams()
-      }, 500)
+    },
+    doSearch: function (delay) {
+      delay = delay || 500
+      setTimeout(this.getAjaXParams, delay)
     },
     getAjaXParams: function() {
       ajaxFun(this.time, this.area, this.city, this.subscopeclass, this.buyerclass, this.key, this.subtype)
@@ -372,9 +467,7 @@ var vm = new Vue({
       this.$refs.dateItem.toggle(false)
       this.$refs.areaCityItem.toggle(false)
       this.$refs.industryItem.toggle(false)
-      this.$refs.cateItem.toggle(false)
-      this.$refs.keywordItem.toggle(false)
-      this.$refs.noticeItem.toggle(false)
+      this.$refs.moreDropdownItems.toggle(false)
     }
   }
 })

+ 77 - 16
src/jfw/modules/app/src/web/staticres/jyapp/js/searchindex.js

@@ -107,6 +107,53 @@ var MoneyUnit = {
   }
 }
 
+function getDefaultRangeForLocal () {
+  function changeDefaultForSearchRange (type, key, value) {
+    var prefixForKey = 'mainSearchRangeFor'
+    if (type === 'set') {
+      localStorage.setItem(prefixForKey + key, value)
+    } else {
+      return localStorage.getItem(prefixForKey + key)
+    }
+  }
+  var tempList = []
+  if (changeDefaultForSearchRange('get', 'Title') == 'true') {
+    tempList.push('title')
+  }
+  if (changeDefaultForSearchRange('get', 'Content') == 'true') {
+    tempList.push('content')
+  }
+  if (!tempList.length) {
+    tempList = ['title', 'content']
+  }
+  return tempList.join(',')
+}
+function showSearchTipForTimeRange () {
+  var tempDom = $("#supersearchPage #hasNoData_tiptext>font:eq(0)")
+  var tipMap = {
+    'thisyear': '近一年',
+    'lately-7': '近7天',
+    'lately-30': '近30天'
+  }
+  var tempStr = ''
+  var defaultRange =  sessionStorage.superSearch_publishtime || SuperSearch.reqParam.publishtime || 'thisyear'
+  if (tipMap[defaultRange]) {
+      tempStr = tipMap[defaultRange]
+  } else {
+    var tempTimeList = defaultRange.split('_')
+    if (tempTimeList[0]) {
+      tempStr = new Date(tempTimeList[0] * 1000).pattern('yyyy/MM/dd')
+    }
+    if (tempTimeList[1]) {
+      if (tempStr.length) {
+        tempStr += '-'
+      }
+      tempStr += new Date(tempTimeList[1] * 1000).pattern('yyyy/MM/dd')
+    }
+  }
+  tempDom.find('span').text(tempStr)
+  tempDom.show();
+}
 var SuperSearch = {
   // 筛选企业信息
   filterWin: {},
@@ -135,7 +182,7 @@ var SuperSearch = {
     "subtype": "",
     "scope": "",
     "publishtime": "thisyear",
-    "selectType": "title,content",
+    "selectType": getDefaultRangeForLocal(),
     "minprice":"",
     "maxprice":"",
     "industry":"",
@@ -228,13 +275,22 @@ var SuperSearch = {
     });
     //筛选菜单展示or隐藏
     $("#supersearchPage").on("tap" , "#clickFilter", function(){
+      // 企业搜索
+      if ($(".tabs-nav .active").index() === 1 && $("#search-header-input").val().trim() != '') {
+        $("#supersearchPage input[name=super_searchinput]").blur();
+        window.isKeyDownToEntSearch = true
+        if (vEntSearchComponent) {
+          vEntSearchComponent.toggleEntShow(true)
+        }
+        return
+      }
       if ($(this).text().trim() !== '筛选' || $("#search-header-input").val().trim() === '') {
         return
       }
       $("#supersearchPage input[name=super_searchinput]").blur();
-      if (vMainSearchComponent) {
-        vMainSearchComponent.toggleEntShow(true)
-      }
+      // if (vMainSearchComponent) {
+      //   vMainSearchComponent.toggleEntShow(true)
+      // }
       return;
       hideTab();
       SuperSearch.inputBlur();
@@ -296,6 +352,15 @@ var SuperSearch = {
     });
     //提交查询
     $("#supersearchPage").on('click', "#clickFilter",function(){
+      // 企业搜索
+      if ($(".tabs-nav .active").index() === 1 && $("#search-header-input").val().trim() != '') {
+        $("#supersearchPage input[name=super_searchinput]").blur();
+        window.isKeyDownToEntSearch = true
+        if (vEntSearchComponent) {
+          vEntSearchComponent.toggleEntShow(true)
+        }
+        return
+      }
       if ($(this).text().trim() !== '搜索' || $("#search-header-input").val().trim() === '') {
         return
       }
@@ -810,7 +875,7 @@ var SuperSearch = {
       "subtype": "",
       "scope": "",
       "publishtime": "thisyear",
-      "selectType": "title,content",
+      "selectType": getDefaultRangeForLocal(),
       "minprice":"",
       "maxprice":"",
       "industry":"",
@@ -896,7 +961,7 @@ var SuperSearch = {
       if (isMaxHeight < defaultHeight) {
         isMaxHeight = defaultHeight
       }
-      $("#supersearchPage .app-layout-content-b #wrapper").css({height: isMaxHeight, 'overflow-y': 'auto'})
+      $("#supersearchPage .app-layout-content-b #wrapper").css({height: isMaxHeight - 44, 'overflow-y': 'auto'})
       $(".loading_").hide();
       $("#supersearchPage #working").addClass("hidden");
       $("#wrapper").css('opacity', 'unset')
@@ -1226,7 +1291,7 @@ var SuperSearch = {
     $("#supersearchPage .app-layout-content-b #wrapper").css({height: nowClientHeight, 'overflow-y': 'auto'})
     // 切换显示
     $("#supersearchPage .tabs-box").addClass("hidden")
-    $("#supersearchPage #clickFilter").text('筛选')
+    $("#supersearchPage #clickFilter").text('搜索')
     // 隐藏table 查看更多
     $("#wrapper .shade_table").css("display","none");
     $("#supersearchPage #working").removeClass("hidden");
@@ -1325,7 +1390,7 @@ var SuperSearch = {
           }else if (data.status==-2){
             $("#supersearchPage #hasNoData_tiptext>font:eq(2)").show();
           }else{
-            $("#supersearchPage #hasNoData_tiptext>font:eq(0)").show();
+            showSearchTipForTimeRange()
           }
           if($(".newdialog .tab-box .sub-search-title").find("li.active").attr('dataVal')=="searchtitle"){
             $("#supersearchPage #allSearchModel").show();
@@ -1468,11 +1533,7 @@ var SuperSearch = {
       var tdf = list[i].publishtime;
       var fullTime="";
       if(tdf){
-        var thisTime=new Date(Number(tdf+"000"))
-        var month=(thisTime.getMonth()+1)>=10?(thisTime.getMonth()+1):"0"+(thisTime.getMonth()+1);
-        var date=(thisTime.getDate())>=10?(thisTime.getDate()):"0"+(thisTime.getDate());
-        fullTime=thisTime.getFullYear()+"<br>"+month+date;
-        tdf = timeDiff(new Date(Number(tdf+"000")));
+        tdf = utils.dateFromNow(tdf * 1000)
         if(tdf != null){
           tdf='<span><i class="jyapp-icon jyapp-icon-bofangjilu" style="color:#7a7a7a;margin-right:2px;"></i>'+tdf+'</span>'
         }
@@ -1580,7 +1641,7 @@ var SuperSearch = {
         var diff = "";
         if(projectinfo&&projectinfo.approvetime){
           approvetime = projectinfo.approvetime.replace(/-/g,"/");
-          diff = timeDiff(new Date(approvetime));
+          diff = utils.dateFromNow(approvetime);
         }
         var industry = "";
         if(projectinfo&&projectinfo.industry){
@@ -2060,7 +2121,7 @@ var SuperSearch = {
         }else if(sessionStorage.superSearch_hasNoData_tiptext=="-2"){
           $("#supersearchPage #hasNoData_tiptext>font:eq(2)").show();
         }else{
-          $("#supersearchPage #hasNoData_tiptext>font:eq(0)").show();
+          showSearchTipForTimeRange()
         }
         if(sessionStorage.superSearch_allSearchModel_isshow=="true"){
           $("#supersearchPage #allSearchModel").show();
@@ -2672,7 +2733,7 @@ var SuperSearch = {
         //时间
         var publishtime = _list["publishtime"];
         if(publishtime&&Number(publishtime)>=1000000){
-          publishtime = timeDiff(new Date(Number(publishtime+"000")));
+          publishtime = utils.dateFromNow(Number(publishtime+"000"));
         }else{
           publishtime = ""
         }

+ 3 - 1
src/jfw/modules/app/src/web/staticres/jyapp/js/track/track.js

@@ -1351,4 +1351,6 @@ function initGlobal() {
   })
 }
 
-initGlobal()
+if (localStorage.getItem('env') !== 'development') {
+  initGlobal()
+}

+ 3 - 2
src/jfw/modules/app/src/web/staticres/jyapp/js/track/track.umd.min.js

@@ -179,5 +179,6 @@ function initGlobal() {
     checkDiffDateTn.start()
   })
 }
-
-initGlobal()
+if (localStorage.getItem('env') !== 'development') {
+  initGlobal()
+}

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

@@ -890,6 +890,6 @@
     }
     var aiAdd = new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -251,6 +251,6 @@
     }
     var balance = new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -422,6 +422,6 @@
     }
     new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -530,6 +530,6 @@
     }
     new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -206,6 +206,6 @@
     }
     new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -119,6 +119,6 @@
 <!--E-当前页面的资源-->
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/analysis_filter.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -295,6 +295,6 @@
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/chart_options.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/analysis_result.js?v={{Msg "seo" "version"}}'></script>
 <!--小于100行同css,减少请求数-->
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -285,6 +285,6 @@
     }
     new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -272,6 +272,6 @@
     }
     var balance = new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -312,6 +312,6 @@
     }
     var voucher = new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -62,7 +62,7 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
 <!--E-当前页面的资源-->
 {{include "/big-member/commonjs.html"}}
-{{include "/common/baiducc.html"}}
+
 <script>
     var vNode = {
         delimiters: ['${', '}'],

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

@@ -138,6 +138,6 @@
     <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js> </script>
     {{include "/big-member/commonjs.html"}}
     <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/bigvip_detail.js?v={{Msg "seo" "version"}}'></script>
-    {{include "/common/baiducc.html"}}
+
 </body>
 </html>

+ 2 - 2
src/jfw/modules/app/src/web/templates/big-member/page_big_subscribe.html

@@ -106,7 +106,7 @@
                             </div>
                             <div class="pro_time">
                                 <!-- <span class="j-icon icon-bell"></span> -->
-                                <span class="aftertime">${new Date(item.publishtime*1000).pattern('yyyy/MM/dd')}</span>
+                                <span class="aftertime">${item.publishtime ? utils.dateFromNow(item.publishtime * 1000) : ''}</span>
                             </div>
                         </div>
                     </div>
@@ -142,7 +142,7 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/big_subscribe.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 
 </body>
 </html>

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

@@ -136,6 +136,6 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js> </script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/bigvip_subreport_month.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -136,6 +136,6 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js> </script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/bigvip_subreport_week.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -474,6 +474,6 @@
   		</div>
 		</span>
 	</div>
-	{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -629,7 +629,7 @@
     }
     new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 
 </html>

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

@@ -306,6 +306,6 @@
         })
     })
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -190,6 +190,6 @@
     }
     LogPage()
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -107,6 +107,6 @@
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/ent_follow.js?v={{Msg "seo" "mod_version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -110,6 +110,6 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/ent_follow_search.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -1,59 +1,67 @@
 <!DOCTYPE html>
 <html lang="zh-CN" style="font-size: 50px;">
+
 <head>
-    <title>企业画像</title>
+  <title>企业画像</title>
 
-    <!--引入公共资源头部-->
-    {{include "/big-member/meta.html"}}
+  <!--引入公共资源头部-->
+  {{include "/big-member/meta.html"}}
 
-    <!--S-当前页面的css资源-->
-    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
-    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
-    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
-    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
-    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/vant-reset.css?v={{Msg "seo" "version"}}' />
-    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/ent_portrait.css?v={{Msg "seo" "version"}}' />
-    <!--E-当前页面的css资源-->
+  <!--S-当前页面的css资源-->
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+  <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
+  <link rel="stylesheet"
+    href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet"
+    href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/vant-reset.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet"
+    href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/ent_portrait.css?v={{Msg "seo" "version"}}' />
+  <!--E-当前页面的css资源-->
 </head>
 <style>
-    .bidinfo{
-        font-size: 0.28rem;
-        font-weight: 500;
-        text-align: CENTER;
-        color: #c0c4cc;
-        line-height: 20px;
-    }
-    .bid_upgrade{
-        padding: 0.04rem 0.12rem;
-        border: 1px solid #fb483d;
-        border-radius: 0.18rem;
-        font-size: 0.2rem;
-        font-weight: 500;
-        color: #fb483d;
-        line-height: 0.4rem;
-    }
-    .bid_surplus{
-        height: .04rem;
-        opacity: 1;
-        font-size: .22rem;
-        font-weight: 500;
-        color: #2abed1;
-    }
-    .vip_openDialog{
-        padding: 0.56rem 0 0.64rem;
-        width: 6.06rem;
-        /* height: 6.88rem; */
-        background: url('{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/image/openVip.png') no-repeat;
-        background-size: 100% 100%;
-        box-sizing: border-box;
-    }
+  .bidinfo {
+    font-size: 0.28rem;
+    font-weight: 500;
+    text-align: CENTER;
+    color: #c0c4cc;
+    line-height: 20px;
+  }
+
+  .bid_upgrade {
+    padding: 0.04rem 0.12rem;
+    border: 1px solid #fb483d;
+    border-radius: 0.18rem;
+    font-size: 0.2rem;
+    font-weight: 500;
+    color: #fb483d;
+    line-height: 0.4rem;
+  }
+
+  .bid_surplus {
+    height: .04rem;
+    opacity: 1;
+    font-size: .22rem;
+    font-weight: 500;
+    color: #2abed1;
+  }
+
+  .vip_openDialog {
+    padding: 0 0 0.64rem;
+    width: 6.06rem;
+    /* height: 6.88rem; */
+    background: url('{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/image/openVip.png') no-repeat;
+    background-size: 100% 100%;
+    box-sizing: border-box;
+  }
 </style>
+
 <body>
-<div class="j-container">
+  <div class="j-container">
     {{include "/big-member/header.html"}}
     <div id="ent-portrait" class="j-main" v-cloak>
-        <!-- <van-dialog
+      <!-- <van-dialog
         v-model="setShow"
         show-cancel-button
         width="6.06rem"
@@ -77,348 +85,367 @@
                 <span>...</span>
             </div>
         </van-dialog> -->
-        <div class="j-header ent-header">
-            <span class="j-icon icon-company"></span>
-            <span class="ent-title">${ entInfo.name }</span>
-            <span
-                class="j-icon"
-                :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
-                @click="changeFollowState"
-                v-if="entInfo.followSearchFinish && entInfo.entExist"
-            ></span>
-            <van-loading v-if="!entInfo.followSearchFinish" size="24px"></van-loading>
-        </div>
-        <van-tabs
-            class="ent-tabs-container"
-            :class="singleTab ? 'single-tab' : ''"
-            v-model="tabActiveName"
-            sticky
-            color="#2cb7ca"
-            title-active-color="#2cb7ca"
-            title-inactive-color="#5F5E64"
-            line-width="0.48rem"
-            v-if="conf.powerLoaded && conf.showPortraitAll"
-            :offset-top="stickyTop">
-            <van-tab name="1" title="企业信息">
-                <div class="bg-white tab-card">
-                    <div class="card-row">
-                        <div class="card-column ent-type">
-                            <div class="ent-type-label">公司类型</div>
-                            <div class="ent-type-text">${entBaseInfo.type ? entBaseInfo.type : '-'}</div>
-                        </div>
-                    </div>
-                    <div class="card-row">
-                        <div class="card-column ent-business-term">
-                            <div class="ent-business-term-label">营业期限</div>
-                            <div class="ent-business-term-text">
-                                <span>${entBaseInfo.operStart == -1 ? '-' : new Date(entBaseInfo.operStart*1000).pattern('yyyy/MM/dd')}</span>
-                                <span> 至 </span>
-                                <span>${entBaseInfo.operEnd == -1 ? '-' : new Date(entBaseInfo.operEnd*1000).pattern('yyyy/MM/dd')}</span>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="card-row">
-                        <div class="card-column social-credit-code">
-                            <div class="ent-registration-label">统一社会信用代码</div>
-                            <div class="ent-registration-text">${entBaseInfo.creditNo ? entBaseInfo.creditNo : '-'}</div>
-                        </div>
-                    </div>
-                    <div class="card-row">
-                        <div class="card-column tax-identification-number">
-                            <div class="ent-registration-label">纳税人识别号</div>
-                            <div class="ent-registration-text">${entBaseInfo.taxCode ? entBaseInfo.taxCode : '-'}</div>
-                        </div>
-                    </div>
-                    <div class="card-row">
-                        <div class="card-column business-registration-number">
-                            <div class="ent-registration-label">工商注册号</div>
-                            <div class="ent-registration-text">${entBaseInfo.company_code ? entBaseInfo.company_code : '-'}</div>
-                        </div>
-                    </div>
-                    <div class="card-row">
-                        <div class="card-column organization-code">
-                            <div class="ent-info-label">组织机构代码</div>
-                            <div class="ent-info-text">${entBaseInfo.org_code ? entBaseInfo.org_code : '-'}</div>
-                        </div>
-                        <div class="card-column organization-code">
-                            <div class="ent-info-label">联系方式</div>
-                            <div class="ent-info-text">${entBaseInfo.phone ? entBaseInfo.phone : '-'}</div>
-                        </div>
-                    </div>
-                    <div class="card-row">
-                        <div class="card-column registered-capital">
-                            <div class="ent-info-label">注册资本</div>
-                            <div class="ent-info-text">${entBaseInfo.capital ? entBaseInfo.capital+'万元' : '-'}</div>
-                        </div>
-                        <div class="card-column registered-capital">
-                            <div class="ent-info-label">法人姓名</div>
-                            <div class="ent-info-text">${entBaseInfo.legal ? entBaseInfo.legal : '-'}</div>
-                        </div>
-                    </div>
-                    <div class="card-row">
-                        <div class="card-column ent-establish">
-                            <div class="ent-info-label">成立日期</div>
-                            <div class="ent-info-text">
-                                ${(!entBaseInfo.establish || entBaseInfo.establish == -1) ? '-' : new Date(entBaseInfo.establish*1000).pattern('yyyy/MM/dd')}
-                            </div>
-                        </div>
-                        <div class="card-column ent-status">
-                            <div class="ent-info-label">经营状态</div>
-                            <div class="ent-info-text">${entBaseInfo.status ? entBaseInfo.status : '-'}</div>
-                        </div>
-                    </div>
-                    <div class="card-row">
-                        <div class="card-column ent-employee">
-                            <div class="ent-info-label">人员规模(工商年报-参保人数,仅供参考)</div>
-                            <div class="ent-info-text">${entBaseInfo.employeeNo ? entBaseInfo.employeeNo : '-'}</div>
-                        </div>
-                    </div>
-                    <div class="card-row">
-                        <div class="card-column registered-capital">
-                            <div class="ent-info-label">注册地址</div>
-                            <div class="ent-info-text">${entBaseInfo.address ? entBaseInfo.address : '-'}</div>
-                        </div>
-                    </div>
-                    <div class="card-row">
-                        <div class="card-column registered-capital">
-                            <div class="ent-info-label">经营范围</div>
-                            <div class="ent-info-text">${entBaseInfo.scope ? entBaseInfo.scope : '-'}</div>
-                        </div>
-                    </div>
-                </div>
-                <div class="bg-white tab-card ent-change-history" @click="goToEntHistory">
-                    <div class="ent-change-l">企业情报历史记录</div>
-                    <div class="j-icon icon-back base-icon"></div>
-                </div>
-            </van-tab>
-            <van-tab name="2" v-if="!singleTab">
-                <template #title>
-                    <span :class="{bidinfo:!hasOnePower}">中标信息</span>
-                    <span v-if="!hasOnePower && isShowUpTip" class="bid_upgrade">升级</span>
-                    <span v-if="isMember && (hasOnePower && surplus && isVip)" class="bid_surplus">剩余:${entvisit.total - entvisit.usage}</span>
-                </template>
-                <div class="bg-white tab-card" v-if="conf._4 && !getStatus">
-                    <div class="card-row zb-info">
-                        <div class="card-column">
-                            <div class="ent-info-label">项目数量</div>
-                            <div class="ent-info-text">${entPortraitInfo.project_count ? entPortraitInfo.project_count + '个' : '0'}</div>
-                        </div>
-                        <div class="card-column">
-                            <div class="ent-info-label">项目金额</div>
-                            <div class="ent-info-text">${entPortraitInfo.bidamount_count ? utils.moneyUnit(entPortraitInfo.bidamount_count) : '0'}</div>
-                        </div>
-                        <div class="card-column">
-                            <div class="ent-info-label">项目省份</div>
-                            <div class="ent-info-text">${entPortraitInfo.area_count ? entPortraitInfo.area_count + '个' : '-'}</div>
-                        </div>
-                        <div class="card-column">
-                            <div class="ent-info-label">项目客户</div>
-                            <div class="ent-info-text">${entPortraitInfo.buyer_count ? entPortraitInfo.buyer_count + '个' : '-'}</div>
-                        </div>
-                    </div>
-                    <div class="zb-time-frame border-line-t">
-                        <span>数据统计范围:</span>
-                        <span>${entPortraitInfo.timeRangeStart ? new Date(entPortraitInfo.timeRangeStart * 1000).pattern('yyyy/MM/dd') : '2016'}</span>
-                        <span>-</span>
-                        <span>${entPortraitInfo.timeRangeEnd ? new Date(entPortraitInfo.timeRangeEnd * 1000).pattern('yyyy/MM/dd') : '至今'}</span>
-                    </div>
+      <div class="j-header ent-header">
+        <span class="j-icon icon-company"></span>
+        <span class="ent-title">${ entInfo.name }</span>
+        <span class="j-icon" :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
+          @click="changeFollowState" v-if="entInfo.followSearchFinish && entInfo.entExist"></span>
+        <van-loading v-if="!entInfo.followSearchFinish" size="24px"></van-loading>
+      </div>
+      <van-tabs 
+        class="ent-tabs-container" 
+        :class="singleTab ? 'single-tab' : ''" 
+        v-model="tabActiveName" 
+        scrollspy
+        sticky 
+        color="#2cb7ca" 
+        title-active-color="#2cb7ca" 
+        title-inactive-color="#5F5E64" 
+        line-width="0.48rem"
+        v-if="conf.powerLoaded && conf.showPortraitAll" :offset-top="stickyTop">
+        <van-tab name="1" title="企业信息">
+          <div class="bg-white tab-card">
+            <div class="card-row">
+              <div class="card-column social-credit-code">
+                <div class="ent-registration-label">统一社会信用代码</div>
+                <div class="ent-registration-text">${entBaseInfo.creditNo ? entBaseInfo.creditNo : '-'}</div>
+              </div>
+              <div class="card-column organization-code">
+                <div class="ent-info-label">联系方式</div>
+                <div class="ent-info-text">${entBaseInfo.phone ? entBaseInfo.phone : '-'}</div>
+              </div>
+            </div>
+            <div class="card-row">
+              <div class="card-column registered-capital">
+                <div class="ent-info-label">注册资本</div>
+                <div class="ent-info-text">${entBaseInfo.capital ? entBaseInfo.capital+'万元' : '-'}</div>
+              </div>
+              <div class="card-column registered-capital">
+                <div class="ent-info-label">法人姓名</div>
+                <div class="ent-info-text">${entBaseInfo.legal ? entBaseInfo.legal : '-'}</div>
+              </div>
+            </div>
+            <div class="card-row">
+              <div class="card-column ent-establish">
+                <div class="ent-info-label">成立日期</div>
+                <div class="ent-info-text">
+                  ${(!entBaseInfo.establish || entBaseInfo.establish == -1) ? '-' : new
+                  Date(entBaseInfo.establish*1000).pattern('yyyy/MM/dd')}
                 </div>
-                <div class="vip_component" v-if="getStatus" style="height:2.12rem;background:url('/common-module/collection/image/bg/vip_bg_0.png') no-repeat;background-size:100% 100%"></div>
-                <div class="j-container empty" style="padding-bottom: .2rem;" v-if="conf._13 && !conf._4 && topProject.list.length === 0">
-                    <div class="j-img img-empty empty-img"></div>
-                    <p class="empty-text">暂无项目动态</p>
+              </div>
+              <div class="card-column ent-status">
+                <div class="ent-info-label">经营状态</div>
+                <div class="ent-info-text">${entBaseInfo.status ? entBaseInfo.status : '-'}</div>
+              </div>
+            </div>
+            <div v-if="!showBaseInfo" class="show-more" @click="showBaseInfo = true">查看更多</div>
+            <div v-show="showBaseInfo" style="width: 100%;">
+              <div class="card-row">
+                <div class="card-column ent-type">
+                  <div class="ent-type-label">公司类型</div>
+                  <div class="ent-type-text">${entBaseInfo.type ? entBaseInfo.type : '-'}</div>
                 </div>
-                <div class="bg-white tab-card cell-list" v-show="conf._13 && topProject.list.length !== 0">
-                    <div class="tab-card-title">项目动态</div>
-                    <div class="tab-card-content">
-                        <ul class="project-info-list">
-                            <li
-                                class="project-info-item border-line-b clickable"
-                                v-for="(item,index) in topProject.list"
-                                @click="toProjectDetail(item)"
-                            >
-                                <div class="project-name">${item.title}</div>
-                                <div class="project-info">
-                                    <span class="tags">
-                                        <span class="tag tag-success" v-if="item.area">${item.area}</span>
-                                        <span class="tag tag-success" v-if="item.bidstatus">${item.bidstatus}</span>
-                                        <span class="tag tag-success" v-if="item.bidamount">${utils.moneyUnit(item.bidamount)}</span>
-                                    </span>
-                                    <span class="project-time">${item.firsttime ? new Date(item.firsttime * 1000).pattern('yyyy-MM-dd') : '-'}</span>
-                                </div>
-                            </li>
-                            <li
-                                class="show-more"
-                                v-if="topProject.showGetNextButton"
-                                @click="getProjectNews">查看更多</li>
-                        </ul>
-                    </div>
+              </div>
+              <div class="card-row">
+                <div class="card-column ent-business-term">
+                  <div class="ent-business-term-label">营业期限</div>
+                  <div class="ent-business-term-text">
+                    <span>${entBaseInfo.operStart == -1 ? '-' : new
+                      Date(entBaseInfo.operStart*1000).pattern('yyyy/MM/dd')}</span>
+                    <span> 至 </span>
+                    <span>${entBaseInfo.operEnd == -1 ? '-' : new
+                      Date(entBaseInfo.operEnd*1000).pattern('yyyy/MM/dd')}</span>
+                  </div>
                 </div>
-                <div class="vip_component" v-if="getStatus && !conf._13" style="height:9.16rem;background:url('/common-module/collection/image/bg/vip_bg_1.png') no-repeat;background-size:100% 100%">
-                    <vip-component @tabactive="tabActive" :power="conf" type="item_1" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_1.png'></vip-component>
+              </div>
+              <div class="card-row">
+                <div class="card-column tax-identification-number">
+                  <div class="ent-registration-label">纳税人识别号</div>
+                  <div class="ent-registration-text">${entBaseInfo.taxCode ? entBaseInfo.taxCode : '-'}</div>
                 </div>
-                <div class="vip_component" v-if="isMember" style="height:11.36rem;background:url('/common-module/collection/image/bg/vip_bg_9.png') no-repeat;background-size:100% 100%">
-                    <vip-component @tabactive="tabActive" :power="conf" type="item_9" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_9.png'></vip-component>
+              </div>
+              <div class="card-row">
+                <div class="card-column business-registration-number">
+                  <div class="ent-registration-label">工商注册号</div>
+                  <div class="ent-registration-text">${entBaseInfo.company_code ? entBaseInfo.company_code : '-'}</div>
                 </div>
-                <div class="bg-white tab-card cell-list history-list" v-else>
-                  <hispro-component type="winner" :id="entInfo.id"></hispro-component>
               </div>
-                <div class="bg-white tab-card charts" v-if="conf._4 && tabActiveName == '2' && annualData.rows.length !== 0 && !getStatus">
-                    <div class="tab-card-title">年度项目统计</div>
-                    <!-- e-charts和sticky同时使用时候,需要手动降低css层级(z-index: 1),确保tooltip不遮挡固定定位头部 -->
-                    <div class="tab-card-content">
-                        <ve-histogram
-                            height="284px"
-                            :colors="colorGreen"
-                            :data="annualData"
-                            :init-options="initEchartsOptions"
-                            :after-config="annualConfig"
-                            :settings="annualSetting"
-                            :extend="barChart.chartExtend">
-                        </ve-histogram>
-                    </div>
-                    <div class="tab-card-tip">注:项目金额指所有项目的中标金额之和,少数缺失的中标金额,用项目预算补充。</div>
+              <div class="card-row">
+                <div class="card-column organization-code">
+                  <div class="ent-info-label">组织机构代码</div>
+                  <div class="ent-info-text">${entBaseInfo.org_code ? entBaseInfo.org_code : '-'}</div>
                 </div>
-                <div class="vip_component" v-if="getStatus" style="height:11.12rem;background:url('/common-module/collection/image/bg/vip_bg_2.png') no-repeat;background-size:100% 100%">
-                    <vip-component @tabactive="tabActive" type="item_2" :power="conf" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_2.png'></vip-component>
+              </div>
+              <div class="card-row">
+                <div class="card-column ent-employee">
+                  <div class="ent-info-label">人员规模(工商年报-参保人数,仅供参考)</div>
+                  <div class="ent-info-text">${entBaseInfo.employeeNo ? entBaseInfo.employeeNo : '-'}</div>
                 </div>
-                <div class="bg-white tab-card charts"  v-if="conf._4 && tabActiveName == '2' && monthZbData.rows.length !== 0 && !getStatus">
-                    <div class="tab-card-title">月度中标金额统计</div>
-                    <div class="tab-card-content">
-                        <ve-line
-                            height="284px"
-                            :data="monthZbData"
-                            :init-options="initEchartsOptions"
-                            :after-config="lineChartConfig"
-                            :extend="chartOptions.lineChart">
-                        </ve-line>
-                    </div>
-                    <div class="tab-card-tip">注:少数缺失的中标金额,用项目预算补充。</div>
+              </div>
+              <div class="card-row">
+                <div class="card-column registered-capital">
+                  <div class="ent-info-label">注册地址</div>
+                  <div class="ent-info-text">${entBaseInfo.address ? entBaseInfo.address : '-'}</div>
                 </div>
-                <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_3.png') no-repeat;background-size:100% 100%">
-                    <vip-component @tabactive="tabActive" type="item_3" :power="conf" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_3.png'></vip-component>
+              </div>
+              <div class="card-row">
+                <div class="card-column registered-capital">
+                  <div class="ent-info-label">经营范围</div>
+                  <div class="ent-info-text">${entBaseInfo.scope ? entBaseInfo.scope : '-'}</div>
                 </div>
-                <div class="bg-white tab-card charts" v-if="conf._4 && tabActiveName == '2' && mapChartData.rows.length !== 0 && !getStatus">
-                    <div class="tab-card-title">市场区域分布</div>
-                    <div class="tab-card-content">
-                        <ve-map
-                            height="300px"
-                            :data="mapChartData"
-                            :init-options="initEchartsOptions"
-                            :after-config="mapConfig"
-                            :settings="mapSettings.chartSettings"
-                            :extend="mapSettings.chartExtend">
-                        </ve-map>
-                    </div>
+              </div>
+            </div>
+          </div>
+          <div class="bg-white tab-card ent-change-history" @click="goToEntHistory">
+            <div class="ent-change-l">企业情报历史记录</div>
+            <div class="j-icon icon-back base-icon"></div>
+          </div>
+        </van-tab>
+        <van-tab name="2" v-if="!singleTab">
+          <template #title>
+            <span :class="{bidinfo:!hasOnePower}">中标信息</span>
+            <span v-if="isShowUpTip" class="bid_upgrade">升级</span>
+            <span v-if="isMember && (hasOnePower && surplus && isVip)" class="bid_surplus">剩余:${entvisit.total -
+              entvisit.usage}</span>
+          </template>
+          <div class="bg-white tab-card" v-if="conf._4 && !getStatus">
+            <div class="card-row zb-info">
+              <div class="card-column">
+                <div class="ent-info-label">项目数量</div>
+                <div class="ent-info-text">${entPortraitInfo.project_count ? entPortraitInfo.project_count + '个' : '0'}
                 </div>
-                <div class="vip_component" v-if="getStatus" style="height:10.56rem;background:url('/common-module/collection/image/bg/vip_bg_4.png') no-repeat;background-size:100% 100%">
-                    <vip-component @tabactive="tabActive" type="item_4" :power="conf" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_4.png'></vip-component>
+              </div>
+              <div class="card-column">
+                <div class="ent-info-label">项目金额</div>
+                <div class="ent-info-text">${entPortraitInfo.bidamount_count ?
+                  utils.moneyUnit(entPortraitInfo.bidamount_count) : '0'}</div>
+              </div>
+              <div class="card-column">
+                <div class="ent-info-label">项目省份</div>
+                <div class="ent-info-text">${entPortraitInfo.area_count ? entPortraitInfo.area_count + '个' : '-'}</div>
+              </div>
+              <div class="card-column">
+                <div class="ent-info-label">项目客户</div>
+                <div class="ent-info-text">${entPortraitInfo.buyer_count ? entPortraitInfo.buyer_count + '个' : '-'}
                 </div>
-                <div class="bg-white tab-card charts"  v-if="conf._4 && tabActiveName == '2' && rateData.rows.length !== 0 && !getStatus">
-                    <div class="tab-card-title">各类客户平均折扣率</div>
-                    <div class="tab-card-content">
-                        <ve-line
-                            height="314px"
-                            :data="rateData"
-                            :init-options="initEchartsOptions"
-                            :after-config="rateConfig"
-                            :extend="chartOptions.lineChart">
-                        </ve-line>
+              </div>
+            </div>
+            <div class="zb-time-frame border-line-t">
+              <span>数据统计范围:</span>
+              <span>${entPortraitInfo.timeRangeStart ? new Date(entPortraitInfo.timeRangeStart *
+                1000).pattern('yyyy/MM/dd') : '2016'}</span>
+              <span>-</span>
+              <span>${entPortraitInfo.timeRangeEnd ? new Date(entPortraitInfo.timeRangeEnd * 1000).pattern('yyyy/MM/dd')
+                : '至今'}</span>
+            </div>
+          </div>
+          <div class="vip_component" v-if="getStatus"
+            style="height:2.12rem;background:url('/common-module/collection/image/bg/vip_bg_0.png') no-repeat;background-size:100% 100%">
+          </div>
+          <div class="vip_component" v-if="getStatus && hideDt"
+            style="height:9.16rem;background:url('/common-module/collection/image/bg/vip_bg_1.png') no-repeat;background-size:100% 100%" key="dt">
+            <vip-component @tabactive="tabActive" :power="conf" type="item_1" :entvisit="entvisit" :newvip="isVip"
+              imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_1.png'>
+            </vip-component>
+          </div>
+          <div v-else key="dt">
+            <div class="j-container empty" style="padding-bottom: .2rem;"
+              v-if="conf._13 && !conf._4 && topProject.list.length === 0">
+              <div class="j-img img-empty empty-img"></div>
+              <p class="empty-text">暂无项目动态</p>
+            </div>
+            <div class="bg-white tab-card cell-list" v-show="conf._13 && topProject.list.length !== 0">
+              <div class="tab-card-title">项目动态</div>
+              <div class="tab-card-content">
+                <ul class="project-info-list">
+                  <li class="project-info-item border-line-b clickable" v-for="(item,index) in topProject.list"
+                    @click="toProjectDetail(item)">
+                    <div class="project-name">${item.title}</div>
+                    <div class="project-info">
+                      <span class="tags">
+                        <span class="tag tag-success" v-if="item.area">${item.area}</span>
+                        <span class="tag tag-success" v-if="item.bidstatus">${item.bidstatus}</span>
+                        <span class="tag tag-success" v-if="item.bidamount">${utils.moneyUnit(item.bidamount)}</span>
+                      </span>
+                      <span class="project-time">${item.firsttime ? new Date(item.firsttime * 1000).pattern('yyyy-MM-dd')
+                        : '-'}</span>
                     </div>
-                    <div class="tab-card-tip">注:平均折扣率=(全部项目预算-全部中标金额)/全部项目预算,是指价格减让部分与原价的比率,仅统计预算和中标金额同时存在的项目。</div>
-                </div>
-                <div class="vip_component" v-if="getStatus" style="height:11.24rem;background:url('/common-module/collection/image/bg/vip_bg_5.png') no-repeat;background-size:100% 100%">
-                    <vip-component @tabactive="tabActive" type="item_5" :power="conf" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_5.png'></vip-component>
+                  </li>
+                  <li class="show-more" v-if="topProject.showGetNextButton" @click="getProjectNews">查看更多</li>
+                </ul>
+              </div>
+            </div>
+          </div>
+          <div class="vip_component" v-if="!showContacts"
+            style="height:11.36rem;background:url('/common-module/collection/image/bg/vip_bg_9.png') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" :power="conf" type="item_9" :entvisit="entvisit" :newvip="isVip"
+              imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_9.png'>
+            </vip-component>
+          </div>
+          <div class="bg-white tab-card cell-list history-list" v-else>
+            <hispro-component type="winner" :id="entInfo.id"></hispro-component>
+          </div>
+          <div class="bg-white tab-card charts"
+            v-if="conf._4 && annualData.rows.length !== 0 && !getStatus">
+            <div class="tab-card-title">年度项目统计</div>
+            <!-- e-charts和sticky同时使用时候,需要手动降低css层级(z-index: 1),确保tooltip不遮挡固定定位头部 -->
+            <div class="tab-card-content">
+              <ve-histogram height="284px" :colors="colorGreen" :data="annualData" :init-options="initEchartsOptions"
+                :after-config="annualConfig" :settings="annualSetting" :extend="barChart.chartExtend">
+              </ve-histogram>
+            </div>
+            <div class="tab-card-tip">注:项目金额指所有项目的中标金额之和,少数缺失的中标金额,用项目预算补充。</div>
+          </div>
+          <div class="vip_component" v-if="getStatus"
+            style="height:11.12rem;background:url('/common-module/collection/image/bg/vip_bg_2.png') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_2" :power="conf" :entvisit="entvisit" :newvip="isVip"
+              imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_2.png'>
+            </vip-component>
+          </div>
+          <div class="bg-white tab-card charts"
+            v-if="conf._4 && monthZbData.rows.length !== 0 && !getStatus">
+            <div class="tab-card-title">月度中标金额统计</div>
+            <div class="tab-card-content">
+              <ve-line height="284px" :data="monthZbData" :init-options="initEchartsOptions"
+                :after-config="lineChartConfig" :extend="chartOptions.lineChart">
+              </ve-line>
+            </div>
+            <div class="tab-card-tip">注:少数缺失的中标金额,用项目预算补充。</div>
+          </div>
+          <div class="vip_component" v-if="getStatus"
+            style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_3.png') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_3" :power="conf" :entvisit="entvisit" :newvip="isVip"
+              imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_3.png'>
+            </vip-component>
+          </div>
+          <div class="bg-white tab-card charts"
+            v-if="conf._4 && mapChartData.rows.length !== 0 && !getStatus">
+            <div class="tab-card-title">市场区域分布</div>
+            <div class="tab-card-content">
+              <ve-map height="300px" :data="mapChartData" :init-options="initEchartsOptions" :after-config="mapConfig"
+                :settings="mapSettings.chartSettings" :extend="mapSettings.chartExtend">
+              </ve-map>
+            </div>
+          </div>
+          <div class="vip_component" v-if="getStatus"
+            style="height:10.56rem;background:url('/common-module/collection/image/bg/vip_bg_4.png') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_4" :power="conf" :entvisit="entvisit" :newvip="isVip"
+              imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_4.png'>
+            </vip-component>
+          </div>
+          <div class="bg-white tab-card charts"
+            v-if="conf._4 && rateData.rows.length !== 0 && !getStatus">
+            <div class="tab-card-title">各类客户平均折扣率</div>
+            <div class="tab-card-content">
+              <ve-line height="314px" :data="rateData" :init-options="initEchartsOptions" :after-config="rateConfig"
+                :extend="chartOptions.lineChart">
+              </ve-line>
+            </div>
+            <div class="tab-card-tip">注:平均折扣率=(全部项目预算-全部中标金额)/全部项目预算,是指价格减让部分与原价的比率,仅统计预算和中标金额同时存在的项目。</div>
+          </div>
+          <div class="vip_component" v-if="getStatus"
+            style="height:11.24rem;background:url('/common-module/collection/image/bg/vip_bg_5.png') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_5" :power="conf" :entvisit="entvisit" :newvip="isVip"
+              imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_5.png'>
+            </vip-component>
+          </div>
+          <div class="bg-white tab-card charts"
+            v-show="conf._4 && entPortraitInfo.top10 && entPortraitInfo.top10.length != 0 && !getStatus">
+            <div class="tab-card-title">客户类型分布</div>
+            <div class="tab-card-content">
+              <div ref="pieChart" style="height: 360px;width: 320px;margin: 0 auto;"></div>
+            </div>
+            <div class="tab-card-tip">注:各客户类型占比以中标金额计算,最多展示占比排名前十的客户类型。</div>
+          </div>
+          <div class="vip_component" v-if="getStatus"
+            style="height:11.92rem;background:url('/common-module/collection/image/bg/vip_bg_6.png') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_6" :power="conf" :entvisit="entvisit" :newvip="isVip"
+              imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_6.png'>
+            </vip-component>
+          </div>
+          <div class="bg-white tab-card customers client"
+            v-show="conf._4 && importantCustomers.length !== 0 && !getStatus">
+            <div class="tab-card-title">重点客户</div>
+            <div class="tab-card-content">
+              <div class="client-list" v-for="c in importantCustomers">
+                <div class="c-thead">
+                  <strong class="c-name">${c.title}</strong>
+                  <span class="c-count">中标数量</span>
+                  <span class="c-rate">平均折扣率</span>
+                  <span class="c-time">最近合作日期</span>
                 </div>
-                <div class="bg-white tab-card charts"  v-show="conf._4 && tabActiveName == '2' && entPortraitInfo.top10 && entPortraitInfo.top10.length != 0 && !getStatus">
-                    <div class="tab-card-title">客户类型分布</div>
-                    <div class="tab-card-content">
-                        <div ref="pieChart" style="height: 360px;"></div>
+                <div class="progress-bar-container">
+                  <div class="progress-bar-item" v-for="(item,index) in c.list" :key="index" v-show="item.name">
+                    <div class="item-label">
+                      <span class="ellipsis-2 item-name" @click="toUnitPortrayal(item)">${item.name}</span>
+                      <span class="item-count">${item.count ? item.count + '个' : item.count}</span>
+                      <span class="item-rate">${(item.rate != null) ? item.rate + '%' : '--'}</span>
+                      <span class="item-time">${item.time}</span>
                     </div>
-                    <div class="tab-card-tip">注:各客户类型占比以中标金额计算,最多展示占比排名前十的客户类型。</div>
-                </div>
-                <div class="vip_component" v-if="getStatus" style="height:11.92rem;background:url('/common-module/collection/image/bg/vip_bg_6.png') no-repeat;background-size:100% 100%">
-                    <vip-component @tabactive="tabActive" type="item_6" :power="conf" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_6.png'></vip-component>
-                </div>
-                <div class="bg-white tab-card customers client"  v-show="conf._4 && tabActiveName == '2' && importantCustomers.length !== 0 && !getStatus">
-                    <div class="tab-card-title">重点客户</div>
-                    <div class="tab-card-content">
-                        <div class="client-list" v-for="c in importantCustomers">
-                            <div class="c-thead">
-                                <strong class="c-name">${c.title}</strong>
-                                <span class="c-count">中标数量</span>
-                                <span class="c-rate">平均折扣率</span>
-                                <span class="c-time">最近合作日期</span>
-                            </div>
-                            <div class="progress-bar-container">
-                                <div class="progress-bar-item" v-for="(item,index) in c.list" :key="index" v-show="item.name">
-                                    <div class="item-label">
-                                        <span class="ellipsis-2 item-name" @click="toUnitPortrayal(item)">${item.name}</span>
-                                        <span class="item-count">${item.count ? item.count + '个' : item.count}</span>
-                                        <span class="item-rate">${(item.rate != null) ? item.rate + '%' : '--'}</span>
-                                        <span class="item-time">${item.time}</span>
-                                    </div>
-                                    <div class="item-progress">
-                                        <span class="item-money" v-if="item.money > 0">${utils.moneyUnit(item.money)}</span>
-                                        <span class="item-progress-count active-progress" :style="{width: item.percent}"></span>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
+                    <div class="item-progress">
+                      <span class="item-money" v-if="item.money > 0">${utils.moneyUnit(item.money)}</span>
+                      <span class="item-progress-count active-progress" :style="{width: item.percent}"></span>
                     </div>
+                  </div>
                 </div>
-                <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_7.png') no-repeat;background-size:100% 100%">
-                    <vip-component @tabactive="tabActive" type="item_7" :power="conf" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_7.png'></vip-component>
-                </div>
-            </van-tab>
-        </van-tabs>
-        <div class="j-main project-tab-container" v-if="conf.powerLoaded && !conf.showPortraitAll">
-            <div class="j-container empty" v-show="topProject.list.length === 0">
-                <div class="j-img img-empty empty-img"></div>
-                <p class="empty-text">暂无项目动态</p>
+              </div>
             </div>
-            <div class="j-container bg-white tab-card cell-list" v-show="topProject.list.length !== 0">
-                <div class="j-header tab-card-title">项目动态</div>
-                <div class="j-main tab-card-content">
-                    <ul class="project-info-list">
-                        <li
-                            class="project-info-item border-line-b clickable"
-                            v-for="(item,index) in topProject.list"
-                            @click="toProjectDetail(item)"
-                        >
-                            <div class="project-name">${item.title}</div>
-                            <div class="project-info">
-                                <span class="tags">
-                                    <span class="tag tag-success" v-if="item.area">${item.area}</span>
-                                    <span class="tag tag-success" v-if="item.bidstatus">${item.bidstatus}</span>
-                                    <span class="tag tag-success" v-if="item.bidamount">${utils.moneyUnit(item.bidamount)}</span>
-                                </span>
-                                <span class="project-time">${item.firsttime ? new Date(item.firsttime * 1000).pattern('yyyy-MM-dd') : '-'}</span>
-                            </div>
-                        </li>
-                        <li
-                            class="show-more"
-                            v-if="topProject.showGetNextButton"
-                            @click="getProjectNews">查看更多</li>
-                    </ul>
+          </div>
+          <div class="vip_component" v-if="getStatus"
+            style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_7.png') no-repeat;background-size:100% 100%">
+            <vip-component @tabactive="tabActive" type="item_7" :power="conf" :entvisit="entvisit" :newvip="isVip"
+              imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_7.png'>
+            </vip-component>
+          </div>
+        </van-tab>
+      </van-tabs>
+      <div class="j-main project-tab-container" v-if="conf.powerLoaded && !conf.showPortraitAll">
+        <div class="j-container empty" v-show="topProject.list.length === 0">
+          <div class="j-img img-empty empty-img"></div>
+          <p class="empty-text">暂无项目动态</p>
+        </div>
+        <div class="j-container bg-white tab-card cell-list" v-show="topProject.list.length !== 0">
+          <div class="j-header tab-card-title">项目动态</div>
+          <div class="j-main tab-card-content">
+            <ul class="project-info-list">
+              <li class="project-info-item border-line-b clickable" v-for="(item,index) in topProject.list"
+                @click="toProjectDetail(item)">
+                <div class="project-name">${item.title}</div>
+                <div class="project-info">
+                  <span class="tags">
+                    <span class="tag tag-success" v-if="item.area">${item.area}</span>
+                    <span class="tag tag-success" v-if="item.bidstatus">${item.bidstatus}</span>
+                    <span class="tag tag-success" v-if="item.bidamount">${utils.moneyUnit(item.bidamount)}</span>
+                  </span>
+                  <span class="project-time">${item.firsttime ? new Date(item.firsttime * 1000).pattern('yyyy-MM-dd') :
+                    '-'}</span>
                 </div>
-            </div>
+              </li>
+              <li class="show-more" v-if="topProject.showGetNextButton" @click="getProjectNews">查看更多</li>
+            </ul>
+          </div>
         </div>
+      </div>
     </div>
-</div>
+  </div>
 
-<!--S-当前页面的资源-->
-<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
-<script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
-<script src=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js></script>
-<script src=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js></script>
-{{include "/big-member/commonjs.html"}}
-<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/antiRes/js/mainHook.js?v={{Msg "seo" "version"}}'></script>
-<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/vip-dialog.js?v={{Msg "seo" "version"}}'></script>
-<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/history-project.js?v={{Msg "seo" "version"}}'></script>
-<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/echarts_option.js?v={{Msg "seo" "version"}}'></script>
-<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/chart_options.js?v={{Msg "seo" "version"}}'></script>
-<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/ent_portrait.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+  <!--S-当前页面的资源-->
+  <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js> </script> <script
+    src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js> </script> <script
+    src=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js> </script> <script
+    src=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js> </script> {{include "/big-member/commonjs.html"}}
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/antiRes/js/mainHook.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/vip-dialog.js?v={{Msg "seo" "version"}}'>
+  </script>
+  <script
+    src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/history-project.js?v={{Msg "seo" "version"}}'>
+  </script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/echarts_option.js?v={{Msg "seo" "version"}}'>
+  </script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/chart_options.js?v={{Msg "seo" "version"}}'>
+  </script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/ent_portrait.js?v={{Msg "seo" "version"}}'>
+  </script>
 </body>
+
 </html>

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

@@ -22,7 +22,7 @@
 </head>
 <style>
     .vip_openDialog{
-        padding: 0.56rem 0 0.64rem;
+        padding: 0 0 0.64rem;
         width: 6.06rem;
         /* height: 6.88rem; */
         background: url('{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/image/openVip.png') no-repeat;
@@ -213,6 +213,6 @@ var vNode = {
 var vueComponent = new Vue(vNode)
 </script>
 
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -343,6 +343,6 @@
     }
     new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -357,6 +357,6 @@
     }
     var forecastList =new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -78,6 +78,6 @@
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/contrast_trial.js?v={{Msg "seo" "version"}}'></script>
 <!--<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/check-bind-phone.js?v={{Msg "seo" "version"}}'></script>-->
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -401,7 +401,7 @@
 
 
 </script>
-{{include "/common/baiducc.html"}}
+
 <!--<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>-->
 
 </body>

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

@@ -138,6 +138,6 @@
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/page_init.js?v={{Msg "seo" "version"}}'></script>
 <!--E-当前页面的资源-->
 
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -382,6 +382,6 @@
     }
     var components =  new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -674,7 +674,7 @@
         }
         getOfflineMessageCount()
     </script>
-    {{include "/common/baiducc.html"}}
+
 </body>
 
 </html>

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

@@ -306,7 +306,7 @@
             location.href = "/jyapp/free/customer"
         })
     </script>
-    {{include "/common/baiducc.html"}}
+
 </body>
 
 </html>

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

@@ -136,7 +136,7 @@
     {{include "/big-member/commonjs.html"}}
     <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/main_root_data.js?v={{Msg "seo" "version"}}'></script>
     <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/main_root.js?v={{Msg "seo" "version"}}'></script>
-    {{include "/common/baiducc.html"}}
+
 </body>
 
 </html>

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

@@ -113,7 +113,7 @@
     {{include "/big-member/commonjs.html"}}
     <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/ontrial-commit.js?v={{Msg "seo" "version"}}'></script>
     <!--<script src='{{Msg "seo" "cdn"}}/js/check-bind-phone.js?v={{Msg "seo" "version"}}'></script>-->
-    {{include "/common/baiducc.html"}}
+
 </body>
 
 </html>

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

@@ -215,7 +215,7 @@
             location.href = './ontrial_commit'
         })
     </script>
-    {{include "/common/baiducc.html"}}
+
 </body>
 
 </html>

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

@@ -472,4 +472,4 @@
         $("body").append('<div id="showImgDiv" onclick="$(this).remove()" style="overflow-y:scroll;display: flex;background: #00000070;height: 100%;width: 100%;position: absolute;z-index: 9999;padding: .5rem;top: 0px;box-sizing: border-box;align-items: center;"><img src="' + imgSrc + '"></div>')
     }
 </script>
-{{include "/common/baiducc.html"}}
+

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

@@ -549,4 +549,4 @@
         $(".page.pinch-zoom-parent").css("display", "").css("z-index", "999")
     }
 </script>
-{{include "/common/baiducc.html"}}
+

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

@@ -454,4 +454,4 @@
         $("body").append('<div id="showImgDiv" onclick="$(this).remove()" style="overflow-y:scroll;display: flex;background: #00000070;height: 100%;width: 100%;position: absolute;z-index: 9999;padding: .5rem;top: 0px;box-sizing: border-box;align-items: center;"><img src="' + imgSrc + '"></div>')
     }
 </script>
-{{include "/common/baiducc.html"}}
+

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

@@ -111,6 +111,6 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/potential_cor.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -270,6 +270,6 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/potential_cor_list.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -621,6 +621,6 @@
     }
     new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -302,6 +302,6 @@
     }
     var vueComponent = new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -132,6 +132,6 @@
 <script>
     var vueComponent = new Vue(pushDetailSettingConf)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -91,6 +91,6 @@
 <script>
     var vueComponent = new Vue(pushSettingVueConf)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -488,6 +488,6 @@
 <!-- mock数据(与后端返回数据结构一致) 联调后可删除 -->
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/month-report-example.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/report_detail_month.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -339,6 +339,6 @@
 <!-- mock数据(与后端返回数据结构一致) 联调后可删除 -->
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/mock.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/report_detail_week.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

+ 247 - 224
src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html

@@ -54,7 +54,7 @@
           font-weight: normal;
         }
         .vip_openDialog{
-            padding: 0.56rem 0 0.64rem;
+            padding: 0 0 0.64rem;
             width: 6.06rem;
             /* height: 6.88rem; */
             background: url('{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/image/openVip.png') no-repeat;
@@ -129,231 +129,254 @@
                 </div>
             </div>
             <!-- 历史项目联系人 -->
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">历史项目联系方式</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_1" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/01.png'></buyer-example>
+            <div v-if="getStatus">
+              <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">历史项目联系方式</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_1" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/01.png'></buyer-example>
+              </div>
             </div>
-            <div v-else>
+            <!-- 数据部分 -->
+            <div>
+              <!-- 历史项目联系人 -->
               <hispro-component class="history-list" type="buyer" :buyer="buyer.name"></hispro-component>
+              <!-- 年度项目统计 -->
+              <div class="years" v-if="isShow.showYearData">
+                  <div class="chart_title">年度项目统计</div>
+                  <ve-histogram
+                      ref="projectDataCharts"
+                      height="284px"
+                      :colors="colorGreen"
+                      :data="projectData"
+                      :init-options="initRendererSvg"
+                      :after-config="projectConfig"
+                      :settings="projectChartSettings"
+                      :extend="barChart.chartExtend">
+                  </ve-histogram>
+                  <div class="bar-tip">注:项目金额指所有项目的中标金额之和,少数缺失的中标金额,用项目预算补充。</div>
+              </div>
+              <!-- 月度采购规模统计 -->
+              <div class="month-scale" v-if="isShow.showMonthScale">
+                  <div class="chart_title">月度采购规模统计</div>
+                  <div class="lineChart">
+                      <div style="padding: 6px 12px 0;font-size: 10px;color: #9B9CA3;">采购规模(万元)</div>
+                      <ve-line :init-options="initRendererSvg" :data="monthScaleData" height="300px" :after-config="lineChartConfig" :extend="chartOptions.lineChart"></ve-line>
+                  </div>
+                  <div class="bar-tip">注:采购规模指中标金额,少数缺失的中标金额,用项目预算补充。</div>
+              </div>
+              <!-- 采购规模分布 -->
+              <div class="scale-distribute" v-if="isShow.showScaleFb">
+                  <div class="chart_title">采购规模分布</div>
+                  <div class="hotMapChart">
+                      <div id="myChart" ref="hotChart" :style="{height: heatMapHeight}"></div>
+                  </div>
+                  <div class="bar-tip">注:平均节支率=(全部项目预算-全部中标金额)/全部项目预算,是指价格减让部分与原价的比率,仅统计预算和中标金额同时存在的项目。</div>
+              </div>
+              <!-- 各类招标方式占比(双柱图) -->
+              <div class="double-bar" v-if="isShow.showBidType">
+                  <div class="chart_title">各类招标方式占比</div>
+                  <div class="bar-content">
+                      <div class="rate-item" v-for="(item,index) in doubleBar.list" @click.stop="tooltipHandle(item,index)">
+                          <div class="item-label">${item.type}</div>
+                          <div class="item-chart">
+                              <div class="left-chart">
+                                  <div class="item-progress" v-if="item.lPercent > 50">
+                                      <span class="blue-progress-bg blue-padding" :style="{width: item.lPercent + '%'}">${item.num}(${item.numShare  + '%'})</span>
+                                  </div>
+                                  <div class="item-progress" v-else>
+                                      <span class="blue-progress-text">${item.num}(${item.numShare  + '%'})</span>
+                                      <span class="blue-progress-bg" :style="{width: item.lPercent + '%'}"></span>
+                                  </div>
+                              </div>
+                              <div class="right-chart">
+                                  <div class="item-progress" v-if="item.rPercent > 50">
+                                      <span class="yellow-progress-bg yellow-padding" :style="{width: item.rPercent + '%'}">${item.money}(${item.moneyShare + '%'})</span>
+                                  </div>
+                                  <div class="item-progress" v-else>
+                                      <span class="yellow-progress-bg" :style="{width: item.rPercent + '%'}"></span>
+                                      <span class="yellow-progress-text">${item.money}(${item.moneyShare + '%'})</span>
+                                  </div>
+                              </div>
+                          </div>
+                      </div>
+                      <div class="tooltip" v-show="doubleBar.showTooltip" :style="{left:doubleBar.info.positionLeft,top:doubleBar.info.positionTop}">
+                          <div class="tooltip-item">
+                              <span class="tooltip-circle blue-circle"></span>
+                              <span>数量(个)及占比:${doubleBar.info.num}(${doubleBar.info.numShare + '%'})</span>
+                          </div>
+                          <div class="tooltip-item">
+                              <span class="tooltip-circle yellow-circle"></span>
+                              <span>金额(万元)及占比:${doubleBar.info.money}(${doubleBar.info.moneyShare + '%'})</span>
+                          </div>
+                          <div class="tooltip-name">- ${doubleBar.info.type} -</div>
+                      </div>
+                      <div class="custom-legend">
+                          <div class="legend-item">
+                              <span class="tooltip-circle blue-circle"></span>
+                              <span>数量(个)及占比</span>
+                          </div>
+                          <div class="legend-item">
+                              <span class="tooltip-circle yellow-circle"></span>
+                              <span>金额(万元)及占比</span>
+                          </div>
+                      </div>
+                  </div>
+              </div>
+              <!-- 各行业项目平均节支率 -->
+              <div class="savings-rate" v-if="isShow.showSaveRate">
+                  <div class="chart_title">各行业项目平均节支率</div>
+                  <div class="lineChart">
+                      <ve-line :init-options="initRendererSvg" :data="savingsRateData" height="314px" :after-config="savingsRateConfig" :extend="chartOptions.lineChart"></ve-line>
+                  </div>
+              </div>
+              <!-- 各行业项目规模占比 -->
+              <div class="industry-scale-rate" v-if="isShow.showScaleRate">
+                  <p class="chart_title">各行业项目规模占比</p>
+                  <div class="pieChart">
+                      <div ref="pieChart" style="height: 360px;"></div>
+                  </div>
+              </div>
+              <!-- 重点合作企业 -->
+              <div class="client" v-if="computedClientList && computedClientList.length> 0">
+                  <div class="client-title">重点合作企业</div>
+                  <div class="client-content">
+                      <div class="client-list" v-for="c in computedClientList" >
+                          <div class="c-thead">
+                              <strong class="c-name">${c.class}</strong>
+                              <span class="c-count">项目数量</span>
+                              <!-- <span class="c-rate">平均折扣率</span> -->
+                              <span class="c-time">最近合作日期</span>
+                          </div>
+                          <div class="progress-bar-container">
+                              <div class="progress-bar-item" v-for="(item,index) in c.topData" :key="index">
+                                  <div class="item-label">
+                                      <span @click="goEntInfo(item)" class="ellipsis-2 item-name">${item.winnerName}</span>
+                                      <span class="item-count">${item.countProject}个</span>
+                                      <!-- <span class="item-rate">${item.rate}</span> -->
+                                      <span class="item-time">${item.lastTime}</span>
+                                  </div>
+                                  <div class="item-progress">
+                                      <span class="item-money"  v-if="item.countMoney > 0">${utils.moneyUnit(item.countMoney)}</span>
+                                      <span class="item-progress-count active-progress" :style="{width: item.parent}"></span>
+                                  </div>
+                              </div>
+                          </div>
+                      </div>
+                  </div>
+              </div>
+              <!-- 合作企业注册资本分布 -->
+              <div class="industry-scale-rate" v-if="isShow.showCapital">
+                  <p class="chart_title">合作企业注册资本分布</p>
+                  <div class="barChart">
+                      <ve-histogram :init-options="initRendererSvg" height="284px" set-option-opts :data="regCapitalData" :after-config="regCapConfig" :settings="regCapSettings" :extend="chartOptions.barLineChart.chartExtend"> </ve-histogram>
+                  </div>
+              </div>
+              <!-- 合作企业年龄分布 -->
+              <div class="industry-scale-rate" v-if="isShow.showAge">
+                  <p class="chart_title">合作企业年龄分布</p>
+                  <div class="barChart">
+                      <ve-histogram :init-options="initRendererSvg" height="284px" :data="workingAgeData" :after-config="workingAgeConfig" :extend="chartOptions.barLineChart.chartExtend"> </ve-histogram>
+                  </div>
+              </div>
+              <!-- 合作企业注册地分布 -->
+              <div class="industry-scale-rate" v-if="isShow.showArea">
+                  <p class="chart_title">合作企业注册地分布</p>
+                  <div class="map" style="padding: 0 .32rem;">
+                      <ve-map
+                          :init-options="initRendererSvg"
+                          height="302px"
+                          :after-config="mapConfig"
+                          :data="mapChartData"
+                          :settings="mapSettings.chartSettings"
+                          :extend="mapSettings.chartExtend">
+                      </ve-map>
+                  </div>
+              </div>
+              <!-- 重点合作代理机构 -->
+              <div class="agency" v-if="isShow.showAgency">
+                  <div class="agency-title">重点合作代理机构</div>
+                  <div class="agency-container">
+                      <div class="agency-thead">
+                          <strong class="a-name"></strong>
+                          <span class="a-count">项目数量</span>
+                          <span class="a-time">最近合作日期</span>
+                      </div>
+                      <div class="agency-tbody">
+                          <div v-for="item in agencyList" class="ab-list">
+                              <div class="ab-label">
+                                  <span class="ellipsis-2 ab-name">${item.agency_name}</span>
+                                  <span class="ab-count">${item.project_count}个</span>
+                                  <span class="ab-time">${item.last_with_time}</span>
+                              </div>
+                              <div class="ab-progress">
+                                  <span class="ab-progress-default progress-active" :style="{width: item.parent}"></span>
+                              </div>
+                          </div>
+                      </div>
+                  </div>
+              </div>
             </div>
-            <!-- 年度项目统计 -->
-            <div class="years" v-if="isShow.showYearData">
-                <div class="chart_title">年度项目统计</div>
-                <ve-histogram
-                    ref="projectDataCharts"
-                    height="284px"
-                    :colors="colorGreen"
-                    :data="projectData"
-                    :init-options="initRendererSvg"
-                    :after-config="projectConfig"
-                    :settings="projectChartSettings"
-                    :extend="barChart.chartExtend">
-                </ve-histogram>
-                <div class="bar-tip">注:项目金额指所有项目的中标金额之和,少数缺失的中标金额,用项目预算补充。</div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/02-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">年度项目统计</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_2" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/02.png'></buyer-example>
-            </div>
-            <!-- 月度采购规模统计 -->
-            <div class="month-scale" v-if="isShow.showMonthScale">
-                <div class="chart_title">月度采购规模统计</div>
-                <div class="lineChart">
-                    <div style="padding: 6px 12px 0;font-size: 10px;color: #9B9CA3;">采购规模(万元)</div>
-                    <ve-line :init-options="initRendererSvg" :data="monthScaleData" height="300px" :after-config="lineChartConfig" :extend="chartOptions.lineChart"></ve-line>
-                </div>
-                <div class="bar-tip">注:采购规模指中标金额,少数缺失的中标金额,用项目预算补充。</div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/03-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">月度采购规模统计</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_3" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/03.png'></buyer-example>
-            </div>
-            <!-- 采购规模分布 -->
-            <div class="scale-distribute" v-if="isShow.showScaleFb">
-                <div class="chart_title">采购规模分布</div>
-                <div class="hotMapChart">
-                    <div id="myChart" ref="hotChart" :style="{height: heatMapHeight}"></div>
-                </div>
-                <div class="bar-tip">注:平均节支率=(全部项目预算-全部中标金额)/全部项目预算,是指价格减让部分与原价的比率,仅统计预算和中标金额同时存在的项目。</div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/04-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">采购规模分布</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_4" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/04.png'></buyer-example>
-            </div>
-            <!-- 各类招标方式占比(双柱图) -->
-            <div class="double-bar" v-if="isShow.showBidType">
-                <div class="chart_title">各类招标方式占比</div>
-                <div class="bar-content">
-                    <div class="rate-item" v-for="(item,index) in doubleBar.list" @click.stop="tooltipHandle(item,index)">
-                        <div class="item-label">${item.type}</div>
-                        <div class="item-chart">
-                            <div class="left-chart">
-                                <div class="item-progress" v-if="item.lPercent > 50">
-                                    <span class="blue-progress-bg blue-padding" :style="{width: item.lPercent + '%'}">${item.num}(${item.numShare  + '%'})</span>
-                                </div>
-                                <div class="item-progress" v-else>
-                                    <span class="blue-progress-text">${item.num}(${item.numShare  + '%'})</span>
-                                    <span class="blue-progress-bg" :style="{width: item.lPercent + '%'}"></span>
-                                </div>
-                            </div>
-                            <div class="right-chart">
-                                <div class="item-progress" v-if="item.rPercent > 50">
-                                    <span class="yellow-progress-bg yellow-padding" :style="{width: item.rPercent + '%'}">${item.money}(${item.moneyShare + '%'})</span>
-                                </div>
-                                <div class="item-progress" v-else>
-                                    <span class="yellow-progress-bg" :style="{width: item.rPercent + '%'}"></span>
-                                    <span class="yellow-progress-text">${item.money}(${item.moneyShare + '%'})</span>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="tooltip" v-show="doubleBar.showTooltip" :style="{left:doubleBar.info.positionLeft,top:doubleBar.info.positionTop}">
-                        <div class="tooltip-item">
-                            <span class="tooltip-circle blue-circle"></span>
-                            <span>数量(个)及占比:${doubleBar.info.num}(${doubleBar.info.numShare + '%'})</span>
-                        </div>
-                        <div class="tooltip-item">
-                            <span class="tooltip-circle yellow-circle"></span>
-                            <span>金额(万元)及占比:${doubleBar.info.money}(${doubleBar.info.moneyShare + '%'})</span>
-                        </div>
-                        <div class="tooltip-name">- ${doubleBar.info.type} -</div>
-                    </div>
-                    <div class="custom-legend">
-                        <div class="legend-item">
-                            <span class="tooltip-circle blue-circle"></span>
-                            <span>数量(个)及占比</span>
-                        </div>
-                        <div class="legend-item">
-                            <span class="tooltip-circle yellow-circle"></span>
-                            <span>金额(万元)及占比</span>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:8.8rem;background:url('/common-module/collection/image/buyer/05-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">各类招标方式占比</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_5" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/05.png'></buyer-example>
-            </div>
-            <!-- 各行业项目平均节支率 -->
-            <div class="savings-rate" v-if="isShow.showSaveRate">
-                <div class="chart_title">各行业项目平均节支率</div>
-                <div class="lineChart">
-                    <ve-line :init-options="initRendererSvg" :data="savingsRateData" height="314px" :after-config="savingsRateConfig" :extend="chartOptions.lineChart"></ve-line>
-                </div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/06-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">各行业项目平均节支率</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_6" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/06.png'></buyer-example>
-            </div>
-            <!-- 各行业项目规模占比 -->
-            <div class="industry-scale-rate" v-if="isShow.showScaleRate">
-                <p class="chart_title">各行业项目规模占比</p>
-                <div class="pieChart">
-                    <div ref="pieChart" style="height: 360px;"></div>
-                </div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:11.2rem;background:url('/common-module/collection/image/buyer/07-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">各行业项目规模占比</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_7" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/07.png'></buyer-example>
-            </div>
-            <!-- 重点合作企业 -->
-            <div class="client" v-if="computedClientList && computedClientList.length> 0">
-                <div class="client-title">重点合作企业</div>
-                <div class="client-content">
-                    <div class="client-list" v-for="c in computedClientList" >
-                        <div class="c-thead">
-                            <strong class="c-name">${c.class}</strong>
-                            <span class="c-count">项目数量</span>
-                            <!-- <span class="c-rate">平均折扣率</span> -->
-                            <span class="c-time">最近合作日期</span>
-                        </div>
-                        <div class="progress-bar-container">
-                            <div class="progress-bar-item" v-for="(item,index) in c.topData" :key="index">
-                                <div class="item-label">
-                                    <span @click="goEntInfo(item)" class="ellipsis-2 item-name">${item.winnerName}</span>
-                                    <span class="item-count">${item.countProject}个</span>
-                                    <!-- <span class="item-rate">${item.rate}</span> -->
-                                    <span class="item-time">${item.lastTime}</span>
-                                </div>
-                                <div class="item-progress">
-                                    <span class="item-money"  v-if="item.countMoney > 0">${utils.moneyUnit(item.countMoney)}</span>
-                                    <span class="item-progress-count active-progress" :style="{width: item.parent}"></span>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/08-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">重点合作企业</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_8" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/08.png'></buyer-example>
-            </div>
-            <!-- 合作企业注册资本分布 -->
-            <div class="industry-scale-rate" v-if="isShow.showCapital">
-                <p class="chart_title">合作企业注册资本分布</p>
-                <div class="barChart">
-                    <ve-histogram :init-options="initRendererSvg" height="284px" set-option-opts :data="regCapitalData" :after-config="regCapConfig" :settings="regCapSettings" :extend="chartOptions.barLineChart.chartExtend"> </ve-histogram>
-                </div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/09-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">合作企业注册资本分布</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_9" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/09.png'></buyer-example>
-            </div>
-            <!-- 合作企业年龄分布 -->
-            <div class="industry-scale-rate" v-if="isShow.showAge">
-                <p class="chart_title">合作企业年龄分布</p>
-                <div class="barChart">
-                    <ve-histogram :init-options="initRendererSvg" height="284px" :data="workingAgeData" :after-config="workingAgeConfig" :extend="chartOptions.barLineChart.chartExtend"> </ve-histogram>
-                </div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/10-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">合作企业年龄分布</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_10" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/10.png'></buyer-example>
-            </div>
-            <!-- 合作企业注册地分布 -->
-            <div class="industry-scale-rate" v-if="isShow.showArea">
-                <p class="chart_title">合作企业注册地分布</p>
-                <div class="map" style="padding: 0 .32rem;">
-                    <ve-map
-                        :init-options="initRendererSvg"
-                        height="302px"
-                        :after-config="mapConfig"
-                        :data="mapChartData"
-                        :settings="mapSettings.chartSettings"
-                        :extend="mapSettings.chartExtend">
-                    </ve-map>
-                </div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/11-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">合作企业注册地分布</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_11" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/11.png'></buyer-example>
-            </div>
-            <!-- 重点合作代理机构 -->
-            <div class="agency" v-if="isShow.showAgency">
-                <div class="agency-title">重点合作代理机构</div>
-                <div class="agency-container">
-                    <div class="agency-thead">
-                        <strong class="a-name"></strong>
-                        <span class="a-count">项目数量</span>
-                        <span class="a-time">最近合作日期</span>
-                    </div>
-                    <div class="agency-tbody">
-                        <div v-for="item in agencyList" class="ab-list">
-                            <div class="ab-label">
-                                <span class="ellipsis-2 ab-name">${item.agency_name}</span>
-                                <span class="ab-count">${item.project_count}个</span>
-                                <span class="ab-time">${item.last_with_time}</span>
-                            </div>
-                            <div class="ab-progress">
-                                <span class="ab-progress-default progress-active" :style="{width: item.parent}"></span>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="vip_component" v-if="getStatus" style="height:10.8rem;background:url('/common-module/collection/image/buyer/12-bg.png') no-repeat;background-size:100% 100%">
-              <p class="example-title">重点合作代理机构</p>
-              <buyer-example :status="bigStatus" :power="power" type="item_12" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/12.png'></buyer-example>
+            <!-- 遮罩部分 -->
+            <div v-if="getStatus">
+              <!-- 历史项目联系人 -->
+              <!-- <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">历史项目联系方式</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_1" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/01.png'></buyer-example>
+              </div> -->
+              <!-- 合作企业注册资本分布 -->
+              <!-- <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/09-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">合作企业注册资本分布</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_9" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/09.png'></buyer-example>
+              </div> -->
+              <!-- 合作企业年龄分布 -->
+              <!-- <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/10-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">合作企业年龄分布</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_10" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/10.png'></buyer-example>
+              </div> -->
+              <!-- 合作企业注册地分布 -->
+              <!-- <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/11-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">合作企业注册地分布</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_11" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/11.png'></buyer-example>
+              </div> -->
+              <!-- 年度项目统计 -->
+              <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/02-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">年度项目统计</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_2" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/02.png'></buyer-example>
+              </div>
+              <!-- 月度采购规模统计 -->
+              <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/03-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">月度采购规模统计</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_3" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/03.png'></buyer-example>
+              </div>
+              <!-- 采购规模分布 -->
+              <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/04-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">采购规模分布</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_4" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/04.png'></buyer-example>
+              </div>
+              <!-- 各类招标方式占比(双柱图) -->
+              <div class="vip_component" style="height:8.8rem;background:url('/common-module/collection/image/buyer/05-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">各类招标方式占比</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_5" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/05.png'></buyer-example>
+              </div>
+              <!-- 各行业项目平均节支率 -->
+              <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/06-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">各行业项目平均节支率</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_6" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/06.png'></buyer-example>
+              </div>
+              <!-- 重点合作代理机构 -->
+              <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/12-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">重点合作代理机构</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_12" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/12.png'></buyer-example>
+              </div>
+              <!-- 重点合作企业 -->
+              <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/08-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">重点合作企业</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_8" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/08.png'></buyer-example>
+              </div>
+              <!-- 各行业项目规模占比 -->
+              <div class="vip_component" style="height:11.2rem;background:url('/common-module/collection/image/buyer/07-bg.png') no-repeat;background-size:100% 100%">
+                <p class="example-title">各行业项目规模占比</p>
+                <buyer-example :status="bigStatus" :power="power" type="item_7" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/07.png'></buyer-example>
+              </div>
             </div>
         </div>
     </div>
@@ -380,6 +403,6 @@
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/history-project.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/unit_portrayal.js?v={{Msg "seo" "version"}}'></script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -312,6 +312,6 @@
     }
     var voucher = new Vue(vNode)
 </script>
-{{include "/common/baiducc.html"}}
+
 </body>
 </html>

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

@@ -300,5 +300,5 @@ function freesubmit() {
     }
 </script>
 <!--百度统计end-->
-{{include "/common/baiducc.html"}}
+
 </html>

+ 4 - 0
src/jfw/modules/app/src/web/templates/common/js.html

@@ -4,5 +4,9 @@
 <script>
   if (typeof window._jyGlobal !== 'object') { window._jyGlobal = {} }
   try { window._jyGlobal.baseURL = {{Msg "seo" "buryingPointUrl"}} } catch (e) { window._jyGlobal.baseURL = '' }
+  // 屏蔽console.log输出, 如需查看手动 localStorage.setItem('env', 'development') 刷新页面
+  if (localStorage.getItem('env') !== 'development') {
+      console.log = function () {}
+  }
 </script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/track/track.umd.min.js?v={{Msg "seo" "mod_version"}}'></script>

+ 6 - 1
src/jfw/modules/app/src/web/templates/dataExport/dataExport_subType.html

@@ -112,7 +112,12 @@
                     </li>
                     <li>
                     <dl>
-                    <dt class="question" data-value="预告">招标预告</dt>
+                      <dt data-value="预告">招标预告</dt>
+                      <dd>预告</dd>
+                      <dd>预审</dd>
+                      <dd>预审结果</dd>
+                      <dd>论证意见</dd>
+                      <dd>需求公示</dd>
                     </dl>
                     </li>
                     <li>

+ 0 - 1
src/jfw/modules/app/src/web/templates/dataPack/index.html

@@ -124,7 +124,6 @@
   <!--E-当前页面的资源-->
   {{include "/big-member/commonjs.html"}}
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/data-pack/js/index.js?v={{Msg "seo" "version"}}'></script>
-  {{include "/common/baiducc.html"}}
 </body>
 
 </html>

+ 5 - 1
src/jfw/modules/app/src/web/templates/dataPack/recharge.html

@@ -43,6 +43,11 @@
                 <van-icon name="question-o" @click="showQuestion"></van-icon>
               </div>
             </div>
+            <div class="order-phone-group" :class="{ error: !validatorPhonePass }">
+              <label for="order_phone">手机号码</label>
+              <input id="order_phone" v-model="userInfo.phone" autocomplete='off' placeholder='请输入手机号码' maxlength='11' type='tel' />
+              <p class="error-message">手机号码输入错误</p>
+            </div>
             <div class="notes-to-buy">
               购买须知:<br />
               1、数据流量包是数据自助导出充值服务,最低1000条起充,仅针对线上自助充值使用(与线下企业数据充值账户不可共享);<br />
@@ -114,7 +119,6 @@
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/coupon/js/pay-order-template.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/data-pack/js/recharge.js?v={{Msg "seo" "version"}}'></script>
   <!--E-当前页面的资源-->
-  {{include "/common/baiducc.html"}}
 </body>
 
 </html>

+ 0 - 1
src/jfw/modules/app/src/web/templates/dataPack/recordList.html

@@ -77,7 +77,6 @@
   <!--E-当前页面的资源-->
   {{include "/big-member/commonjs.html"}}
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/my_data_export/js/index.js?v={{Msg "seo" "version"}}'></script>
-  {{include "/common/baiducc.html"}}
 </body>
 
 </html>

+ 1 - 1
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info.html

@@ -1006,7 +1006,7 @@
                 } else {
                   _this.$dialog.close()
                   _this.$dialog.confirm({
-                    message: '您的申请已提交,我们的客户经理会在24小时内尽快与您联系。',
+                    message: '您的申请已提交,我们会尽快联系您并预约演示时间,请耐心等待~您将获得免费体验大会员全部功能!',
                     className: 'ent-search-dialog max-54',
                     overlayClass: 'z-2030',
                     showCancelButton: false,

+ 1 - 1
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_push.html

@@ -441,7 +441,7 @@
             if (r.error_msg === '') {
               _this.$dialog.close()
               _this.$dialog.confirm({
-                message: '您的申请已提交,我们的客户经理会在24小时内尽快与您联系。',
+                message: '您的申请已提交,我们会尽快联系您并预约演示时间,请耐心等待~您将获得免费体验大会员全部功能!',
                 className: 'ent-search-dialog max-54',
                 overlayClass: 'z-2030',
                 showCancelButton: false,

+ 23 - 4
src/jfw/modules/app/src/web/templates/vipsubscribe/messageType.html

@@ -102,7 +102,12 @@
                 </li>
                 <li>
                     <dl>
-                        <dt dataValue="预告">招标预告</dt>
+                        <dt>招标预告</dt>
+                        <dd>预告</dd>
+                        <dd>预审</dd>
+                        <dd>预审结果</dd>
+                        <dd>论证意见</dd>
+                        <dd>需求公示</dd>
                     </dl>
                 </li>
                 <li>
@@ -155,12 +160,14 @@
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "mod_version"}}"></script>
     <script>
+		var hasZBYG = ''
 		var hasZBGG = ""
 		var hasZBJG = ""
 		var hasZBXYXX = ""
 		var hasStr = ""
         function hasActive(){
             var arr = "";
+			hasZBYG = ''
 			hasZBGG = ""
 			hasZBJG = ""
 			hasZBXYXX = ""
@@ -168,6 +175,12 @@
             $(".list ul li dl dd").each(function(index){
                 if($(this).hasClass('active')){
                     arr = arr + "," + $(this).text()
+					if ($(this).prevAll("dt").text()=="招标预告") {
+						if (hasZBYG) {
+							hasZBYG += '、'
+						}
+						hasZBYG += $(this).text()
+					}
 					if($(this).prevAll("dt").text()=="招标公告"){
 						if(hasZBGG!=""){
 							hasZBGG+="、"
@@ -189,9 +202,9 @@
                 }
             })
             $(".list ul li dl dt").each(function(index){
-                if($(this).hasClass('active')&&($(this).text()=="招标预告"||$(this).text()=="拟建项目")){
+                if($(this).hasClass('active')&&$(this).text()=="拟建项目"){
                     arr = arr + "," + $(this).attr("dataValue")
-					if($(this).text()=="招标预告"||$(this).text()=="拟建项目"){
+					if($(this).text()=="拟建项目"){
 						if (hasStr!=""){
 							hasStr += "、"
 						}
@@ -228,7 +241,13 @@
 		//
 		function getChecked(){
 			hasActive();
-			if (hasZBGG!=""||hasZBJG!=""|hasZBXYXX!=""){
+			if (hasZBYG || hasZBGG!=""||hasZBJG!=""|hasZBXYXX!=""){
+				if(hasZBYG){
+					if(hasStr != ""){
+						hasStr +="、"
+					}
+					hasStr+="招标预告 ("+hasZBYG+")"
+				}
 				if(hasZBGG!=""){
 					if(hasStr != ""){
 						hasStr +="、"

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

@@ -23,6 +23,13 @@
         .weui-mask{
           z-index: 99999;
         }
+
+        .van-dialog,
+        .j-popup,
+        .j-overlay {
+            z-index: 99999!important;
+        }
+        
         .jymobile-setting-dialog .weui-dialog__hd{
           text-align: center !important;
         }
@@ -73,15 +80,20 @@
         .iosMeau{
             height: 100%;
         }
-       .app-layout-content-b {
+        .app-layout-content-b {
             height: calc(100vh - 70px);
-            /* height: auto; */
             overflow: hidden;
-       }
-       #dropDownItemGroup .van-dropdown-item__content {
-         max-height: 70vh;
-         overflow: hidden;
-       }
+        }
+        .collection .van-dropdown-menu__item {
+           flex: 1;
+           padding-left: 0;
+           padding-right: 0;
+        }
+        .collection .van-dropdown-item:nth-of-type(4) .van-dropdown-item__content {
+            max-height: unset;
+            overflow: unset;
+            height: 100%;
+        }
     </style>
 </head>
 <body class="p13" id="viperSuper" style="background: #fff;overflow: hidden;">
@@ -129,14 +141,14 @@
         <div class="_header collection" id="select-meau">
             <!-- 筛选条件 -->
             <div class="filter_tab">
-                    <van-dropdown-menu style="width: auto;overflow-x: auto;"  >
+                    <van-dropdown-menu style="width: 100%;" :close-on-click-outside="false">
                         <van-dropdown-item get-container="#dropDownItemGroup" :lazy-render="false" :title="tagText.timeText"  ref="dateItem" @open="open('时间')" @close="close">
                             <date-component type="only-picker" :key="setTimer.datetimer" @cancel="cancel" @confirm="confirm" :selectdate="selectDate"/>
                         </van-dropdown-item>
-                        <van-dropdown-item get-container="#dropDownItemGroup" :lazy-render="false" ref="areaCityItem" @open="open('地区')" @close="close">
+                        <van-dropdown-item :disabled="!screenShow" get-container="#dropDownItemGroup" :lazy-render="false" ref="areaCityItem" @open="open('地区')" @close="close">
                             <template #title>
                                 <span v-if="screenShow" class="areaText">地区</span>
-                                <span v-if="!screenShow" class="rootstyletitle">
+                                <span v-if="!screenShow" class="rootstyletitle" @click="showSuperVipDialog">
                                     <span>地区</span>
                                     <span class="root_open">开通</span>
                                 </span>
@@ -144,10 +156,10 @@
                             <area-city-mobile :key="setTimer.areatimer" v-if="screenShow" @cancel="cancel" @confirm="confirm" ref="areaCitySelector"></area-city-mobile>
                             <root-component v-if="!screenShow" @cancel="cancel" @confirm="confirm"></root-component>
                         </van-dropdown-item>
-                        <van-dropdown-item get-container="#dropDownItemGroup" :lazy-render="false" ref="industryItem" @open="open('行业')" @close="close">
+                        <van-dropdown-item :disabled="!screenShow" get-container="#dropDownItemGroup" :lazy-render="false" ref="industryItem" @open="open('行业')" @close="close">
                             <template #title>
                                 <span v-if="screenShow" class="industryText">行业</span>
-                                <span v-if="!screenShow" class="rootstyletitle">
+                                <span v-if="!screenShow" class="rootstyletitle" @click="showSuperVipDialog">
                                     <span>行业</span>
                                     <span class="root_open">开通</span>
                                 </span>
@@ -155,42 +167,104 @@
                             <industry-component :key="setTimer.industrytimer" v-if="screenShow" @cancel="cancel" @confirm="confirm" :selectindustrylist="selectIndustryList"></industry-component>
                             <root-component v-if="!screenShow" @cancel="cancel" @confirm="confirm"></root-component>
                         </van-dropdown-item>
-                        <van-dropdown-item get-container="#dropDownItemGroup" :lazy-render="false"  ref="cateItem" @open="open('采购单位')" @close="close">
-                            <template #title>
-                                <span v-if="screenShow" class="cateText">采购单位</span>
-                                <span v-if="!screenShow" class="rootstyletitle">
-                                    <span>采购单位</span>
-                                    <span class="root_open">开通</span>
-                                </span>
-                            </template>
-                            <cate-component @cancel="cancel" v-if="screenShow" @confirm="confirm" :key="setTimer.catetimer" :selectcatelist="selectCateList"></cate-component>
-                            <root-component v-if="!screenShow" @cancel="cancel" @confirm="confirm"></root-component>
+                        <van-dropdown-item get-container="#dropDownItemGroup" :lazy-render="false" ref="moreDropdownItems" @open="open('更多筛选')" @close="close">
+                            <template #title>更多筛选</template>
+                            <div class="filter-list-container j-container">
+                                <div class="j-main">
+                                    <van-cell-group>
+                                        <van-cell :value="'已选:' + calcSelected('cateItem')" center is-link @click="moreFiltersItemShow('cateItem', '采购单位')">
+                                            <template #title>
+                                                <span v-if="screenShow" class="cateText">采购单位类型</span>
+                                                <span v-else class="rootstyletitle">
+                                                    <span>采购单位类型</span>
+                                                    <span class="root_open">开通</span>
+                                                </span>
+                                            </template>
+                                        </van-cell>
+                                        <van-cell :value="'已选:' + calcSelected('keywordItem')" center is-link @click="moreFiltersItemShow('keywordItem', '关键词')">
+                                            <template #title>
+                                                <span v-if="screenShow" class="keywordText">关键词</span>
+                                                <span v-else class="rootstyletitle">
+                                                    <span>关键词</span>
+                                                    <span class="root_open">开通</span>
+                                                </span>
+                                            </template>
+                                        </van-cell>
+                                        <van-cell :value="'已选:' + calcSelected('noticeItem')" center is-link @click="moreFiltersItemShow('noticeItem', '公告类型')">
+                                            <template #title>
+                                                <span v-if="screenShow" class="noticeText">公告类型</span>
+                                                <span v-else class="rootstyletitle">
+                                                    <span>公告类型</span>
+                                                    <span class="root_open">开通</span>
+                                                </span>
+                                            </template>
+                                        </van-cell>
+                                    </van-cell-group>
+                                </div>
+                                <div class="j-footer j-button-group">
+                                    <button class="j-button-cancel" :disabled="selectedMoreCancelDisabled" @click="selectedMoreCancel">重置</button>
+                                    <button class="j-button-confirm" @click="selectedMoreConfirmed">确认</button>
+                                </div>
+                            </div>
                         </van-dropdown-item>
-                        <van-dropdown-item get-container="#dropDownItemGroup" :lazy-render="false" title="关键词" ref="keywordItem" @open="open('关键词')" @close="close">
-                            <template #title>
-                                <span v-if="screenShow" class="keywordText">关键词</span>
-                                <span v-if="!screenShow" class="rootstyletitle">
-                                    <span>关键词</span>
-                                    <span class="root_open">开通</span>
-                                </span>
-                            </template>
+                    </van-dropdown-menu>
+                </div>
+                <div class="screen"></div>
+                <!-- popup * 3 -->
+                <van-popup
+                    v-model="moreFiltersShow.cateItem"
+                    closeable
+                    round
+                    position="bottom"
+                    close-icon="clear"
+                    class="j-popup collection"
+                    overlay-class="j-overlay"
+                    :style="{ height: '60%' }"
+                    get-container="body">
+                    <div class="j-container">
+                        <div class="popup-header header-title">采购单位类型</div>
+                        <div class="j-main">
+                            <cate-component @cancel="cancel" v-if="screenShow" @confirm="confirm" :key="setTimer.catetimer" :selectcatelist="selectCateList"></cate-component>
+                            <root-component v-else @cancel="cancel" @confirm="confirm"></root-component>
+                        </div>
+                    </div>
+                </van-popup>
+                <van-popup
+                    v-model="moreFiltersShow.keywordItem"
+                    closeable
+                    round
+                    position="bottom"
+                    close-icon="clear"
+                    class="j-popup collection"
+                    overlay-class="j-overlay"
+                    :style="{ height: '60%' }"
+                    get-container="body">
+                    <div class="j-container">
+                        <div class="popup-header header-title">关键词</div>
+                        <div class="j-main">
                             <keyword-component :key="setTimer.keytimer" @cancel="cancel" v-if="screenShow" @confirm="confirm"  :selectkeywordlist="selectKeyWordList"></keyword-component>
                             <root-component v-if="!screenShow" @cancel="cancel" @confirm="confirm"></root-component>
-                        </van-dropdown-item>
-                        <van-dropdown-item get-container="#dropDownItemGroup" :lazy-render="false" title="公告类型" ref="noticeItem" @open="open('公告类型')" @close="close">
-                            <template #title>
-                                <span v-if="screenShow" class="noticeText">公告类型</span>
-                                <span v-if="!screenShow" class="rootstyletitle">
-                                    <span>公告类型</span>
-                                    <span class="root_open">开通</span>
-                                </span>
-                            </template>
+                        </div>
+                    </div>
+                </van-popup>
+                <van-popup
+                    v-model="moreFiltersShow.noticeItem"
+                    closeable
+                    round
+                    position="bottom"
+                    close-icon="clear"
+                    class="j-popup collection"
+                    overlay-class="j-overlay"
+                    :style="{ height: '60%' }"
+                    get-container="body">
+                    <div class="j-container">
+                        <div class="popup-header header-title">公告类型</div>
+                        <div class="j-main">
                             <notice-component :key="setTimer.noticetimer" @cancel="cancel" v-if="screenShow" @confirm="confirm" :selectnoticelist="selectNoticeList"></notice-component>
                             <root-component v-if="!screenShow" @cancel="cancel" @confirm="confirm"></root-component>
-                        </van-dropdown-item>
-                    </van-dropdown-menu>
-                </div>
-                <div class="screen"></div>
+                        </div>
+                    </div>
+                </van-popup>
             </div>
         </div>
         <div class="color_top" style="display:none;"></div>
@@ -887,27 +961,29 @@
       });
     }
   }
-  //
+
 function extend(i){
-window.listScroll = function() {
-  if (i==0){
+  window.listScroll = function() {
+    if (i==0){
       var nowT = $(".listcontent").scrollTop()
       if (nowT > 0) {
+        if (nowT > 50) {
+          // 修复非超级订阅用户,但是大会员会用户。在筛选结果只有4条数据时候滚动产生的无限循环
+          // 无限循环触发条件:nowT<50,设置高度,触发scroll事件,nowT<50 ...以此无限循环触发
           $(".header_header").css({height: (60 - nowT) +'px'})
-          if (nowT > 50) {
-              $(".header_header").hide();
-        $(".switch").fadeIn();
-          }else{
-        $(".header_header").show();
-        $(".switch").fadeOut();
-      }
+          $(".header_header").hide();
+          $(".switch").fadeIn();
+        }else{
+          $(".header_header").show();
+          $(".switch").fadeOut();
+        }
       } else {
-          $(".header_header").css({height: (60) +'px'})
-          $(".header_header").show()
-      $(".switch").fadeOut();
+        $(".header_header").css({height: (60) +'px'})
+        $(".header_header").show()
+        $(".switch").fadeOut();
       }
+    }
   }
- }
 }
   //下拉刷新
   function reloadFirstPage(me) {
@@ -1125,7 +1201,7 @@ function hasNoData() {
           var showdateTable = ""
 
           if (obj.publishtime) {
-              showdateList = timeDiff(new Date(Number(obj.publishtime + "000")));
+              showdateList = utils.dateFromNow(obj.publishtime * 1000);
               showdateTable = formatDate(obj.publishtime)
               if (showdateList != null) {
                   showdateList = '<span><i class="jyapp-icon jyapp-icon-bofangjilu" style="color:#7a7a7a;margin-right:2px;"></i>' + showdateList + '</span>'

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

@@ -129,7 +129,7 @@
         <div class="home_search fixed-top">
             <div class="home_search_left inp-search">
                 <div class="jy_sprite_main sprite_home_search icon_search"></div>
-                <span>示例:税务局 软件</span>
+                <span>多个关键词用空格隔开,如:税务局 软件</span>
             </div>
         </div>
     </div>
@@ -150,7 +150,7 @@
                     <div class="home_search_left inp-search">
                         <div class="jy_sprite_main sprite_home_search icon_search"></div>
                         <!--	                    <img class="icon_search" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/search/home_search.png?v={{Msg "seo" "version"}}" alt="">-->
-                        <span>示例:税务局 软件</span>
+                        <span>多个关键词用空格隔开,如:税务局 软件</span>
                     </div>
                 </div>
                 <div class="home_banner">

+ 153 - 29
src/jfw/modules/app/src/web/templates/weixin/search/tabSearch.html

@@ -563,6 +563,31 @@
             transform: rotate(20deg);
         }
     }
+    #feedback button {
+        width: 3.3rem;
+        height: 0.8rem;
+        border-radius: 0.08rem;
+        font-size: 0.32rem;
+        font-family: PingFang SC, PingFang SC-Medium;
+        font-weight: 500;
+        text-align: CENTER;
+        color: #2abed1;
+        line-height: 0.8rem;
+        background: transparent;
+        border: 1px solid #2ABED1;
+        margin-top: 0.96rem;
+    }
+    #hasNoData_tiptext .tip-text-for-group {
+        font-size: 0.3rem;
+        font-family: PingFang SC, PingFang SC-Medium;
+        font-weight: 500;
+        text-align: center;
+        color: #5f5e64;
+        line-height: 0.44rem;
+    }
+    #hasNoData_tiptext .tip-text-for-group .tip-text-for-search {
+        color: #2ABED1;
+    }
 </style>
 
 <!--S-Loading-->
@@ -577,7 +602,7 @@
     </div>
     <form data-name="input-clear-box" class="search-header-box" action="javascript:return true">
         <span class="j-icon base-icon icon-search"></span>
-        <input id="search-header-input" name="super_searchinput" type="search" placeholder="税务局软件">
+        <input id="search-header-input" name="super_searchinput" type="search" placeholder="多个关键词用空格隔开">
         <div class="padding-icon">
             <span class="j-icon base-icon icon-delete-gray"></span>
         </div>
@@ -611,7 +636,7 @@
                 <div id="v-ent-search-group" :key="entSearchKey"  class="v-ent-search-group" v-cloak>
                     <div v-show="showEntSearch">
                         <van-tabs @click="onClickTabs" :ellipsis="false" line-height="0" v-model="activeTabIndex">
-                            <van-tab v-for="(tab, index) in entTabs"  :key="tab.title">
+                            <van-tab v-for="(tab, index) in getTabs"  :key="tab.title">
                                 <template #title>
                                     <div class="ent-search-tab-item" :class="{'ent-p-select': isSelectConditionTabs[index], 'ent-p-close': !showPop, 'ent-p-disabled': tab.disabled}" v-show="tab.title">
                                         <span>@@ tab.title @@</span>
@@ -624,15 +649,25 @@
                                 </template>
                             </van-tab>
                         </van-tabs>
+                        <div v-show="showPopForArea" class="popForArea">
+                            <div @click="togglePopForArea(false)" style="z-index: 2033;" class="van-overlay"></div>
+                            <div class="van-popup van-popup--bottom j-container" style="z-index: 2034;max-height: 80%;">
+                                <div class="area-pop-title-group">
+                                    <span>请选择中标区域</span>
+                                    <div class="padding-icon" @click="togglePopForArea(false)"><i class="j-icon base-icon icon-delete-gray"></i></div>
+                                </div>
+                                <area-component class="j-main" :multiple="false" ref="areaRadioComponent" @cancel="onCancelArea" @confirm="onConfirmArea" @select="updateScrollTop"></area-component>
+                            </div>
+                        </div>
                         <div v-show="showPop" class="jy-diy-pop ent-search-pop">
                             <div @click="togglePop(false)" class="van-overlay"></div>
-                            <div class="van-popup">
-                                <div class="popup-content">
+                            <div class="van-popup"  :class="{'j-container': isMoreContent}">
+                                <div class="popup-content" :class="{'j-main': isMoreContent}">
                                     <div class="wait-buy-tip-group" v-if="isWaitBuy">
                                         <h3>您暂无使用权限</h3>
                                         <p>开通超级订阅,全国企业随手查,<br>搜索信息更高效!</p>
                                     </div>
-                                    <div class="condition-select-group" :class="{more: isMoreSelect}" v-show="!isWaitBuy && conditionMap[activeTabIndex]">
+                                    <div class="condition-select-group" :class="{more: isMoreSelect}" v-show="!isWaitBuy && !isMoreContent && conditionMap[activeTabIndex]">
                                         <div class="condition-select-item" @click="onSelectItem(item, activeTabIndex)" v-for="(item,i) in conditionMap[activeTabIndex]" :class="{checked: item.checked, 'disabled': item.disabled}">
                                             <div class="row-item-group">
                                                 <span>@@item.title@@</span>
@@ -647,8 +682,22 @@
                                         </div>
                                     </div>
                                     <area-component ref="areaComponent" @select="updateScrollTop" v-show="activeTabIndex === 2"></area-component>
-                                    <money-component :radio="false" :tags="moneyTags" ref="moneyComponent"  v-show="activeTabIndex === 3"></money-component>
-                                    <area-component :multiple="false" ref="areaRadioComponent" @select="updateScrollTop" v-show="!isWaitBuy && activeTabIndex === 6"></area-component>
+                                    <money-component :radio="false" :all="true" :tags="moneyTags" ref="moneyComponent"  v-show="activeTabIndex === 3"></money-component>
+                                    <div class="more-popup-content" v-show="isMoreContent">
+                                        <div class="select-more-tag-group" @click="onSelectMoreGroup(item)"  v-for="(item,i) in moreContentList" :class="{'row-group': !conditionMap[item]}">
+                                            <div class="select-tag-title">
+                                                @@entTabs[item].title@@
+                                                <div class="disabled-tag"  v-if="entTabs[item].disabled === true">开通</div>
+                                            </div>
+                                            <div class="select-tag-content" v-if="conditionMap[item]">
+                                                <div class="select-more-tag-item" @click.stop="onSelectMoreItem(item, tags, ii)" v-for="(tags,ii) in conditionMap[item]" :class="{active: tags.checked}">@@tags.title@@</div>
+                                            </div>
+                                            <div class="select-area-content" v-else>
+                                                已选:@@conditionStrMap.biddingArea || '全国'@@
+                                                <van-icon name="arrow"></van-icon>
+                                            </div>
+                                        </div>
+                                    </div>
                                 </div>
                                 <div class="pop-bottom" v-show="!isWaitBuy && isMoreSelect">
                                     <van-button type="default" @click="resetCondition">重置</van-button>
@@ -740,7 +789,7 @@
         <div id="v-search-group" :key="searchComponentKey" class="v-ent-search-group" v-cloak>
             <div v-show="showEntSearch">
                 <van-tabs @click="onClickTabs" :ellipsis="false" line-height="0" v-model="activeTabIndex">
-                    <van-tab v-for="(tab, index) in entTabs"  :key="tab.title">
+                    <van-tab v-for="(tab, index) in getTabs"  :key="tab.title">
                         <template #title>
                             <div class="ent-search-tab-item" :class="{'ent-p-select': isSelectConditionTabs[index], 'ent-p-close': !showPop, 'ent-p-disabled': tab.disabled}" v-show="!tab.hide && tab.title">
                                 <span>@@ tab.title @@</span>
@@ -752,14 +801,25 @@
                             </div>
                         </template>
                     </van-tab>
-                    <div v-show="isShowScrollIcon" class="tip-icon-box-bg">
-                        <div class="tip-icon-box"></div>
-                    </div>
                 </van-tabs>
+                <div v-show="showPopForMore" class="popForArea">
+                    <div @click="togglePopForMore(false)" style="z-index: 2033;" class="van-overlay"></div>
+                    <div class="van-popup van-popup--bottom j-container" style="z-index: 2034;max-height: 80%;height: auto;">
+                        <div class="area-pop-title-group">
+                            <span v-show="showPopTitle == '类型'">请选择信息类型</span>
+                            <span v-show="showPopTitle == '采购单位'">请选择采购单位类型</span>
+                            <div class="padding-icon" @click="togglePopForMore(false)"><i class="j-icon base-icon icon-delete-gray"></i></div>
+                        </div>
+                        <div class="collection j-main">
+                            <cate-component @cancel="cancelCatePop" @confirm="confirmCatePop" v-show="showPopTitle == '采购单位'" :key="'cate' + cateComponentKey" ref="cateComponent"></cate-component>
+                            <notice-component @cancel="cancelNoticePop" @confirm="confirmNoticePop" v-show="showPopTitle == '类型'"  :key="'notice' + noticeComponentKey" ref="noticeComponent"></notice-component>
+                        </div>
+                    </div>
+                </div>
                 <div v-show="showPop" class="jy-diy-pop ent-search-pop">
                     <div @click="togglePop(false)" class="van-overlay"></div>
-                    <div class="van-popup">
-                        <div class="popup-content">
+                    <div class="van-popup"  :class="{'j-container': isMoreContent}">
+                        <div class="popup-content" :class="{'j-main': isMoreContent}">
                             <div class="wait-buy-tip-group" v-if="isWaitBuy">
                                 <h3>您暂无使用权限</h3>
                                 <p>开通超级订阅,全国企业随手查,<br>搜索信息更高效!</p>
@@ -779,14 +839,70 @@
                                 </div>
                             </div>
                             <div class="collection">
-                                <industry-component v-show="isActiveForTab['行业']" :key="'industry' + industryComponentKey" ref="industryComponent"></industry-component>
-                                <date-component :times="times" :rootopen="!conditionMap[1][4].disabled" :selectdate="selectDate" v-show="isActiveForTab['时间']" :key="'date' + dateComponentKey" ref="dateComponent"></date-component>
-                                <notice-component v-show="isActiveForTab['类型']" :key="'notice' + noticeComponentKey" ref="noticeComponent"></notice-component>
-                                <cate-component v-show="!isWaitBuy && isActiveForTab['采购单位']" :key="'cate' + cateComponentKey" ref="cateComponent"></cate-component>
+                                <industry-component v-show="activeTabIndex == 2" :key="'industry' + industryComponentKey" ref="industryComponent"></industry-component>
                             </div>
-                            <area-component ref="areaComponent" @select="updateScrollTop" v-show="isActiveForTab['地区']"></area-component>
-                            <money-component extra="万元" :tags="moneyTags" ref="moneyComponent"  v-show="isActiveForTab['金额']"></money-component>
-                            <div v-show="isActiveForTab['中标企业']" style="min-height: 4.8rem">
+                            <div class="more-popup-content" v-show="isMoreContent">
+                                <div class="select-more-tag-group">
+                                    <div class="select-tag-title">
+                                        金额
+                                    </div>
+                                    <div class="select-tag-content">
+                                        <money-component :diy="true" extra="万元" :tags="moneyTags" ref="moneyComponent"  ></money-component>
+                                    </div>
+                                </div>
+                                <div class="select-more-tag-group">
+                                    <div class="select-tag-title">
+                                        时间
+                                    </div>
+                                    <div class="select-tag-content collection">
+                                        <date-component :diy="true" :times="times" :rootopen="!conditionMap[1][4].disabled" :selectdate="selectDate" :key="'date' + dateComponentKey" ref="dateComponent"></date-component>
+                                    </div>
+                                </div>
+                                <div class="select-more-tag-group row-group" @click="onSelectMoreGroup(6, '类型')">
+                                    <div class="select-tag-title">
+                                         信息类型
+                                    </div>
+                                    <div class="select-area-content">
+                                        已选:@@getSelectSubType@@
+                                        <van-icon name="arrow"></van-icon>
+                                    </div>
+                                </div>
+                                <div class="select-more-tag-group row-group" @click="onSelectMoreGroup(8, '采购单位')">
+                                    <div class="select-tag-title">
+                                        采购单位类型
+                                        <div class="disabled-tag" v-if="entTabs[8].disabled === true">开通</div>
+                                    </div>
+                                    <div class="select-area-content">
+                                        已选:@@getSelectCate@@
+                                        <van-icon name="arrow"></van-icon>
+                                    </div>
+                                </div>
+                                <div class="select-more-tag-group" @click="onSelectMoreGroup(item, entTabs[item].title)"  v-for="(item,i) in moreContentList" :class="{'row-group': !conditionMap[item]}">
+                                    <div class="select-tag-title">
+                                        @@entTabs[item].title@@
+                                        <div class="disabled-tag"  v-if="entTabs[item].disabled === true">开通</div>
+                                    </div>
+                                    <div class="select-tag-content" v-if="conditionMap[item]">
+                                        <div class="select-more-tag-item" @click.stop="onSelectMoreItem(item, tags, ii)" v-for="(tags,ii) in conditionMap[item]" :class="{active: tags.checked}">@@tags.title@@</div>
+                                    </div>
+                                </div>
+                                <div class="select-more-tag-group" @click="onSelectMoreGroup(11, '排除词')">
+                                    <div class="select-tag-title">
+                                        排除词
+                                        <div class="disabled-tag" v-if="entTabs[11].disabled === true">开通</div>
+                                    </div>
+                                    <div class="select-tag-content input-group" :class="{stop: entTabs[11].disabled === true}">
+                                        <van-field
+                                                v-model="notkeyInput"
+                                                placeholder="搜索结果不希望包含的关键词"
+                                                maxlength="10"
+                                                show-word-limit
+                                        ></van-field>
+                                    </div>
+                                </div>
+                            </div>
+                            <area-component ref="areaComponent" @select="updateScrollTop" v-show="activeTabIndex == 3"></area-component>
+                            <div v-show="showPopTitle == '中标企业'" style="min-height: 4.8rem">
                                 <ul class="ent-search-list-box" id="select-win-list"></ul>
                                 <form data-name="input-clear-box" class="search-win-box" action="javascript:return true">
                                     <input type="search" id="search-win-input" placeholder="输入中标企业名称">
@@ -1343,15 +1459,14 @@
         </div>
         <div style="font-size:16px;color:#1d1d1d;">
 				<span id="hasNoData_tiptext">
-					<font>没有找到和该关键词匹配的信息</font>
+					<font class="tip-text-for-group">对不起,没有找到 <span class="tip-text-for-search">近一年</span> 相关匹配的信息,修改时间范围或换个搜索词试试吧</font>
 					<font style="display: none;">抱歉!由于系统繁忙暂时无法进行搜索,请1分钟后再试!</font>
 					<font style="display: none;">抱歉!由于系统繁忙暂时无法进行搜索,请稍后再试!</font>
 				</span><br>
 <!--            <div style="display:none;" id="allSearchModel">试试<span style="color:#2cb7ca;text-decoration:underline;line-height: 30px">全文搜索</span></div>-->
         </div>
         <div class="text-center" id="feedback" style="width:100%;">
-            <div class="jy_sprite_main sprite_jyyjfk" style="transform: scale(1.21);margin-top: 15px;"></div>
-            <!--				<img style="width: 200px;margin-top: 15px;" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/wx/jyyjfk.png?v={{Msg "seo" "version"}}">-->
+            <button>意见反馈</button>
         </div>
     </div>
     <div class="easypopup" id="nijianTip">
@@ -1382,7 +1497,7 @@
 <!--E-页面-->
 
 <!--S-脚本-->
-<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/mainSearch/js/utils.js'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js'></script>
 <script>
 
     function ajaxQueryAssociateList (data, callback) {
@@ -1444,6 +1559,10 @@
             vEntSearchComponent.toggleEntShow(false)
           }
         }
+        if (vMainSearchComponent) {
+            vMainSearchComponent.toggleEntTabShow(false)
+            vMainSearchComponent.toggleEntShow(false)
+        }
         window.isKeyDownToEntSearch = false
         var nowIndex = $(".tabs-box .tabs-nav .active").index()
         var nowInput = $("#search-header-input").val().trim()
@@ -1513,8 +1632,11 @@
         var isNewPage = $("#selLable").hasClass('hidden') && $("#super_search").hasClass('hidden')
         console.log(!isNewPage && isSearchList, '显示筛选/搜索')
         if (!isNewPage && isSearchList) {
-            $("#clickFilter").text('筛选')
+            $("#clickFilter").text('搜索')
             $(".app-layout-content-b .tabs-box").addClass('hidden')
+            if (vMainSearchComponent) {
+                vMainSearchComponent.toggleEntTabShow(true)
+            }
             // sessionStorage.removeItem('isSearchListPage')
         } else {
             $("#clickFilter").text('搜索')
@@ -1643,17 +1765,19 @@
         $(".tabs-nav div").on('click', function () {
             $(this).addClass('active').siblings().removeClass('active')
             var nowIndex = $(this).index()
-            var tipArr = ['税务局软件', '企业名称', '采购单位名称']
+            var tipArr = ['多个关键词用空格隔开', '企业名称', '采购单位名称']
             $("#search-header-input").attr('placeholder', tipArr[nowIndex])
             $(".tabs-content > .tabs-content-page").eq(nowIndex).addClass('active').siblings().removeClass('active')
             if (nowIndex !== 0) {
                 var type = nowIndex === 1 ? 'ent' : 'buyer'
+                $(".search-header-box").addClass('m-r')
                 if (nowIndex !== 1) {
-                  $(".search-header-box").removeAttr("action")
+                    $(".search-header-box").removeAttr("action")
+                    $(".search-header-box").next().hide()
                 } else {
-                  $(".search-header-box").attr("action", "javascript:return true")
+                    $(".search-header-box").attr("action", "javascript:return true")
+                    $(".search-header-box").next().show()
                 }
-                $(".search-header-box").addClass('m-r').next().hide()
                 createSearchResultList()
             } else {
                 $(".search-header-box").removeClass('m-r').attr("action", "javascript:return true").next().show()

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

@@ -306,7 +306,7 @@
                         <script>
                             var l_publishtime = {{.T.obj.l_publishtime}};
                             if(l_publishtime != ""){
-                                var tdf = timeDiff(new Date(Number(l_publishtime+"000")))
+                                var tdf = utils.dateFromNow(Number(l_publishtime+"000"))
                                 if(tdf != null){
                                     // document.write("<div class='timebefore_vip'><i class='glyphicon bofangjilu'></i>"+tdf+"</div>");
                                     document.write("<div class='timebefore_vip'>"+tdf+"</div>");
@@ -387,7 +387,7 @@
                         <script>
                             var l_publishtime = {{.T.obj.l_publishtime}};
                             if(l_publishtime != ""){
-                                var tdf = timeDiff(new Date(Number(l_publishtime+"000")))
+                                var tdf = utils.dateFromNow(Number(l_publishtime+"000"))
                                 if(tdf != null){
                                     document.write("<span class='timebefore'>"+tdf+"</span>");
                                 }
@@ -527,10 +527,10 @@
                     <a class="iconarrow"></a>
                 </div>
                 <!--s 大会员引流 s-->
-                <div class="bigvip_drain lead_drain" style='background: url("{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/big-drain.png") no-repeat; background-size: 100% 100%'>
+                <div class="bigvip_drain lead_drain" style="background: #f5f6f7;">
                     <div class="bigvip_text">
                         <span class="bigvip_ad">想让剑鱼帮你找合作伙伴吗?</span>
-                        <span class="bigvip_btn">点这里</span>
+                        <span class="bigvip_btn">点这里!</span>
                     </div>
                 </div>
                 <!-- e 大会员引流 e -->
@@ -555,7 +555,7 @@
                 <a class="iconarrow"></a>
             </div>
             <!--s 大会员引流 s-->
-            <div class="bigvip_drain" style='background: url("{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/big-drain.png") no-repeat; background-size: 100% 100%'>
+            <div class="bigvip_drain" style="background: #f5f6f7;">
                 <div class="bigvip_text">
                     <span class="bigvip_ad">想让剑鱼帮你找合作伙伴吗?</span>
                     <span class="bigvip_btn">点这里</span>

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

@@ -151,9 +151,9 @@ func (this *Portrait) GetWinnerNewMsg(entId string, start, limit int) ([]map[str
 	if entId == "" {
 		return nil, errors.New("企业名称异常")
 	}
-	if start > PortraitNewMegsLimit || start+limit > PortraitNewMegsLimit {
-		return nil, errors.New("超出检索限制")
-	}
+	//if start > PortraitNewMegsLimit || start+limit > PortraitNewMegsLimit {
+	//	return nil, errors.New("超出检索限制")
+	//}
 	return GetWinnerNewProject(entId, start, limit), nil
 }
 
@@ -163,33 +163,52 @@ func (this *Portrait) GetWinnerNewCount(entId string) int64 {
 		return -1
 	}
 	count := GetWinnerNewProjectCount(entId)
-	if count > PortraitNewMegsLimit {
-		count = PortraitNewMegsLimit
-	}
+	//if count > PortraitNewMegsLimit {
+	//	count = PortraitNewMegsLimit
+	//}
 	return count
 }
 
 //企业画像-查询
-func (this *Portrait) WinnerPortraitData(entId string) (map[string]interface{}, error) {
+func (this *Portrait) WinnerPortraitData(entId string, hasPower bool) (map[string]interface{}, error) {
 	if entId == "" {
 		return nil, errors.New("企业名称异常")
 	}
 	winnerPortraitData := TryFunc(GetPortraitCache, entId, "winner", 2)
-	//winnerPortraitData, err := GetWinnerPortraitSearch(entId)
-	//if err != nil {
-	//	return nil, err
-	//}
+	if !hasPower && winnerPortraitData != nil { //无权限 仅返回免费字段(市场区域分布字段)
+		freeReturnMap := map[string]interface{}{}
+		for _, key := range []string{"timeRange", "buyer_count", "bidamount_count", "project_count", "area_count"} {
+			freeReturnMap[key] = winnerPortraitData[key]
+		}
+		return freeReturnMap, nil
+	}
 	return winnerPortraitData, nil
 }
 
+//WinnerMiniPortraitData 三级页引流
+func (this *Portrait) WinnerMiniPortraitData(entId string) (map[string]interface{}, error) {
+	if entId == "" {
+		return nil, errors.New("企业名称异常")
+	}
+	winnerPortraitData := TryFunc(GetPortraitCache, entId, "winner", 2)
+	if winnerPortraitData == nil {
+		return nil, nil
+	}
+	miniReturnMap := map[string]interface{}{}
+	for _, key := range []string{"bidamount_count", "project_count"} {
+		miniReturnMap[key] = winnerPortraitData[key]
+	}
+	return miniReturnMap, nil
+}
+
 //采购单位画像-查询最新项目动态
 func (this *Portrait) GetBuyerNewMsg(buyer string, start, limit int, hasPower bool) ([]map[string]interface{}, error) {
 	if buyer == "" {
 		return nil, errors.New("企业名称异常")
 	}
-	if start > PortraitNewMegsLimit || start+limit > PortraitNewMegsLimit {
-		return nil, errors.New("超出检索限制")
-	}
+	//if start > PortraitNewMegsLimit || start+limit > PortraitNewMegsLimit {
+	//	return nil, errors.New("超出检索限制")
+	//}
 	return GetBuyerNewProject(buyer, start, limit, hasPower), nil
 }
 
@@ -207,9 +226,9 @@ func (this *Portrait) GetBuyerNewCount(buyer string) int64 {
 		return -1
 	}
 	count := GetBuyerNewProjectCount(buyer)
-	if count > PortraitNewMegsLimit {
-		count = PortraitNewMegsLimit
-	}
+	//if count > PortraitNewMegsLimit {
+	//	count = PortraitNewMegsLimit
+	//}
 	return count
 }
 
@@ -227,11 +246,18 @@ func (this *Portrait) BuyerPortraitData(buyer string, flag string, hasPower bool
 		return nil, errors.New("参数异常")
 	}
 	if !hasPower { //免费返回字段
-		if buyerPortraitAllData := TryFunc(GetPortraitCacheByStep, buyer, fmt.Sprintf("buyer"), 2); buyerPortraitAllData != nil {
+		if buyerPortraitAllData := TryFunc(GetPortraitCacheByStep, buyer, fmt.Sprintf("buyer_%s", flag), 2); buyerPortraitAllData != nil {
 			freeReturnMap := map[string]interface{}{}
+			//第一阶段免费数据
 			for _, key := range []string{"timeRange", "city", "province", "buyerclass", "fail_count", "project_count", "winner_count", "otherProvincesWinnerCount"} {
 				freeReturnMap[key] = buyerPortraitAllData[key]
 			}
+			//第三阶段免费字段
+			if flag == "" || flag == "c" {
+				for _, key := range []string{"withCapitalData", "withAreaData", "withEstablishData"} {
+					freeReturnMap[key] = buyerPortraitAllData[key]
+				}
+			}
 			return freeReturnMap, nil
 		}
 		return nil, nil
@@ -249,3 +275,17 @@ func (this *Portrait) BuyerPortraitData(buyer string, flag string, hasPower bool
 	}
 	return buyerPortraitData, nil
 }
+
+func (this *Portrait) BuyerMiniPortraitData(buyer string) (map[string]interface{}, error) {
+	if buyer == "" {
+		return nil, errors.New("企业名称异常")
+	}
+	miniReturnMap := map[string]interface{}{}
+	if buyerPortraitAllData := TryFunc(GetPortraitCacheByStep, buyer, "buyer_a", 2); buyerPortraitAllData != nil {
+		for _, key := range []string{"province", "city", "buyerclass", "bidamount_count", "project_count"} {
+			miniReturnMap[key] = buyerPortraitAllData[key]
+		}
+		return miniReturnMap, nil
+	}
+	return miniReturnMap, nil
+}

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

@@ -27,7 +27,7 @@ const (
 //采购单位最新中标动态查询
 func GetBuyerNewProject(buyer string, start, size int, hasPower bool) []map[string]interface{} {
 	defer qutil.Catch()
-	res := elastic.GetPage("projectset", "projectset", `{"TERM_buyer":"`+buyer+`"}`, `{"firsttime":-1}`, buyerNewProjectSearchFields, start, size)
+	res := elastic.GetPage("projectset", "projectset", fmt.Sprintf(`{"TERM_buyer":"%s","$and":[{"firsttime":{"$gte":%d}}]}`, buyer, time.Now().AddDate(-5, 0, 0).Unix()), `{"firsttime":-1}`, buyerNewProjectSearchFields, start, size)
 	if res == nil || len(*res) == 0 {
 		return []map[string]interface{}{}
 	}
@@ -57,7 +57,7 @@ func GetBuyerNewProject(buyer string, start, size int, hasPower bool) []map[stri
 //采购单位最新中标动态数量查询
 func GetBuyerNewProjectCount(buyer string) int64 {
 	defer qutil.Catch()
-	return elastic.Count("projectset", "projectset", `{"query":{"bool":{"must":[{"term": {"buyer": "`+buyer+`"}}]}}}`)
+	return elastic.Count("projectset", "projectset", fmt.Sprintf(`{"query":{"bool":{"must":[{"term": {"buyer": "%s"}},{"range":{"firsttime":{"gte":%d}}}]}}}`, buyer, time.Now().AddDate(-5, 0, 0).Unix()))
 }
 
 //获取采购单位基本信息

+ 5 - 5
src/jfw/modules/bigmember/src/entity/portraitWinnerSearch.go

@@ -31,13 +31,13 @@ func GetWinnerIdByName(entName string) (entId string) {
 	return
 }
 
-//中标企业最新中标动态查询【若id不存在,则用名字查询】
+//GetWinnerNewProject 中标企业最新中标动态查询【若id不存在,则用名字查询】(近五年)
 func GetWinnerNewProject(entId string, start, size int) []map[string]interface{} {
 	defer qutil.Catch()
 	if entId == "" {
 		return []map[string]interface{}{}
 	}
-	newData := elastic.GetPage("bidding", "bidding", `{"TERM_entidlist":"`+entId+`"}`, `{"publishtime":-1}`, newProject_fields, start, size)
+	newData := elastic.GetPage("bidding", "bidding", fmt.Sprintf(`{"TERM_entidlist":"%s","$and":[{"publishtime":{"$gte":%d}}]}`, entId, time.Now().AddDate(-5, 0, 0).Unix()), `{"publishtime":-1}`, newProject_fields, start, size)
 	if newData == nil || len(*newData) == 0 {
 		return []map[string]interface{}{}
 	}
@@ -70,10 +70,10 @@ func GetWinnerNewProject(entId string, start, size int) []map[string]interface{}
 	return *newData
 }
 
-//企业中标-中标动态数量
+//GetWinnerNewProjectCount 企业中标-中标动态数量(近五年)
 func GetWinnerNewProjectCount(entId string) int64 {
 	defer qutil.Catch()
-	return elastic.Count("bidding", "bidding", `{"query":{"bool":{"must":[{"term": {"entidlist": "`+entId+`"}}]}}}`)
+	return elastic.Count("bidding", "bidding", fmt.Sprintf(`{"query":{"bool":{"must":[{"term": {"entidlist": "%s"}},{"range":{"publishtime":{"gte":%d}}}]}}}`, entId, time.Now().AddDate(-5, 0, 0).Unix()))
 }
 
 //项目联系方式 查询最新200条记录 筛选获取联系方式
@@ -91,7 +91,7 @@ func GetProjectContactsMsg(buyerName, entId string) (list []map[string]interface
 		return list
 	}
 	searchSql := fmt.Sprintf(`{"query":{"bool":{"must":[%s]}},"_source":["_id","zbtime","projectname","list"],"sort":[{"zbtime":"desc"}],"size":200}`, strings.Join(musts, ","))
-	fmt.Println("searchSql", searchSql)
+	//fmt.Println("searchSql", searchSql)
 	projectList := elastic.Get("projectset", "projectset", searchSql)
 	if projectList == nil || len(*projectList) == 0 {
 		return list

+ 120 - 22
src/jfw/modules/bigmember/src/service/portrait/memberPortraitAction.go

@@ -11,21 +11,23 @@ import (
 	"github.com/go-xweb/xweb"
 )
 
-//大会员画像接口
+//EntPortrait 大会员画像接口
 type EntPortrait struct {
 	*xweb.Action
 	//中标企业画像
-	entDetail      xweb.Mapper `xweb:"/portrait/ent/detail"`       //企业基本信息
-	winnerNewMsg   xweb.Mapper `xweb:"/portrait/winner/getNewMsg"` //最新项目动态(需购买项目进度监控)
-	winnerContacts xweb.Mapper `xweb:"/portrait/winner/contacts"`  //历史项目联系方式
-	winnerPortrait xweb.Mapper `xweb:"/portrait/winner/getData"`   //最新项目动态
+	entDetail          xweb.Mapper `xweb:"/portrait/ent/detail"`       //企业基本信息
+	winnerNewMsg       xweb.Mapper `xweb:"/portrait/winner/getNewMsg"` //最新项目动态(需购买项目进度监控)
+	winnerContacts     xweb.Mapper `xweb:"/portrait/winner/contacts"`  //历史项目联系方式
+	winnerPortrait     xweb.Mapper `xweb:"/portrait/winner/getData"`   //最新项目动态
+	winnerMiniPortrait xweb.Mapper `xweb:"/portrait/winner/miniData"`  //三级页展示中标企业基础画像信息
 	//采购单位画像
-	buyerNewMsg   xweb.Mapper `xweb:"/portrait/buyer/getNewMsg"` //最新项目动态
-	buyerContacts xweb.Mapper `xweb:"/portrait/buyer/contacts"`  //采购项目联系方式
-	buyerPortrait xweb.Mapper `xweb:"/portrait/buyer/getData"`   //最新项目动态
+	buyerNewMsg       xweb.Mapper `xweb:"/portrait/buyer/getNewMsg"` //最新项目动态
+	buyerContacts     xweb.Mapper `xweb:"/portrait/buyer/contacts"`  //采购项目联系方式
+	buyerPortrait     xweb.Mapper `xweb:"/portrait/buyer/getData"`   //最新项目动态
+	buyerMiniPortrait xweb.Mapper `xweb:"/portrait/buyer/miniData"`  //三级页展示采购单位基础画像信息
 }
 
-//企业基本信息
+//EntDetail 企业基本信息
 func (this *EntPortrait) EntDetail() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
@@ -46,6 +48,7 @@ func (this *EntPortrait) EntDetail() {
 	this.ServeJson(NewResult(rData, errMsg))
 }
 
+//WinnerContacts 中标企业历史联系人
 func (this *EntPortrait) WinnerContacts() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
@@ -53,7 +56,7 @@ func (this *EntPortrait) WinnerContacts() {
 		if err != nil {
 			return nil, err
 		}
-		if false && !hasPower {
+		if !hasPower {
 			return nil, fmt.Errorf("非法请求")
 		}
 		entId := util.DecodeId(this.GetString("entId"))
@@ -71,7 +74,7 @@ func (this *EntPortrait) WinnerContacts() {
 	this.ServeJson(NewResult(rData, errMsg))
 }
 
-//企业画像-最新项目动态
+//WinnerNewMsg 企业画像-最新项目动态
 func (this *EntPortrait) WinnerNewMsg() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
@@ -123,7 +126,7 @@ func (this *EntPortrait) WinnerNewMsg() {
 	this.ServeJson(NewResult(rData, errMsg))
 }
 
-//企业画像-画像数据查询
+//WinnerPortrait 企业画像-画像数据查询
 func (this *EntPortrait) WinnerPortrait() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
@@ -131,14 +134,43 @@ func (this *EntPortrait) WinnerPortrait() {
 		if err != nil {
 			return nil, err
 		}
-		if !hasPower {
-			return nil, fmt.Errorf("非法请求")
-		}
 		entId := this.GetString("entId")
-		rData, err := cepm.WinnerPortraitData(util.DecodeId(entId))
+		rData, err := cepm.WinnerPortraitData(util.DecodeId(entId), hasPower)
+		if err != nil {
+			return nil, err
+		}
+		return rData, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s WinnerPortrait获取企业画像标信息出错:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
+//WinnerMiniPortrait 三级页中标单位引流数据展示(免费)
+func (this *EntPortrait) WinnerMiniPortrait() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		cepm, _, err := entity.CreatePortraitManager(userId, "entPortrait")
 		if err != nil {
 			return nil, err
 		}
+		entId := util.DecodeId(this.GetString("entId"))
+		rData, err := cepm.WinnerMiniPortraitData(entId) //项目个数,项目金额
+		if err != nil {
+			return nil, err
+		}
+		//公司状态
+		if entInfo, err := cepm.GetEntInfo(entId); err == nil {
+			rData["status"] = entInfo["status"]
+			rData["type"] = entInfo["type"]
+		}
+		//项目动态数量
+		rData["biddingCount"] = cepm.GetWinnerNewCount(entId)
+		//历史联系人
+		if contactList, err := cepm.GetWinnerContactsMsg(entId); err == nil {
+			rData["contactList"], rData["contactCount"] = formatContact(contactList)
+		}
 		return rData, nil
 	}()
 	if errMsg != nil {
@@ -147,7 +179,7 @@ func (this *EntPortrait) WinnerPortrait() {
 	this.ServeJson(NewResult(rData, errMsg))
 }
 
-//采购单位画像-最新招标动态
+//BuyerNewMsg 采购单位画像-最新招标动态(免费用户仅可查看3条记录,付费50条)
 func (this *EntPortrait) BuyerNewMsg() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
@@ -178,7 +210,7 @@ func (this *EntPortrait) BuyerNewMsg() {
 				limit = entity.PortraitNewMegsLimit - start
 			}
 		}
-
+		//免费用户仅可查看三条记录
 		rData, err := cepm.GetBuyerNewMsg(buyer, start, limit, hasPower)
 		if err != nil {
 			return nil, err
@@ -197,7 +229,7 @@ func (this *EntPortrait) BuyerNewMsg() {
 	this.ServeJson(NewResult(rData, errMsg))
 }
 
-//采购单位联系人
+//BuyerContacts 采购单位联系人(必须开通会员)
 func (this *EntPortrait) BuyerContacts() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
@@ -205,7 +237,7 @@ func (this *EntPortrait) BuyerContacts() {
 		if err != nil {
 			return nil, err
 		}
-		if false && !hasPower {
+		if !hasPower {
 			return nil, fmt.Errorf("非法请求")
 		}
 		buyerName := this.GetString("buyer")
@@ -223,7 +255,7 @@ func (this *EntPortrait) BuyerContacts() {
 	this.ServeJson(NewResult(rData, errMsg))
 }
 
-//采购单位画像-数据
+//BuyerPortrait 采购单位画像-数据(免费用户可查看基本信息、项目统计、合作企业资本、年龄及地区分布)
 func (this *EntPortrait) BuyerPortrait() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
@@ -240,7 +272,73 @@ func (this *EntPortrait) BuyerPortrait() {
 		return rData, nil
 	}()
 	if errMsg != nil {
-		log.Printf("%s WinnerPortrait获取采购单位画像标信息出错:%s\n", userId, errMsg.Error())
+		log.Printf("%s BuyerPortrait获取采购单位画像标信息出错:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
+//BuyerMiniPortrait 三级页采购单位引流数据展示(免费)
+func (this *EntPortrait) BuyerMiniPortrait() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		cepm, _, err := entity.CreatePortraitManager(userId, "buyerPortrait")
+		if err != nil {
+			return nil, err
+		}
+		entName := this.GetString("buyer")
+		//所在地(省、市)、采购单位类型、采购项目数量、采购规模
+		rData, err := cepm.BuyerMiniPortraitData(entName)
+		if err != nil {
+			return nil, err
+		}
+		//招标动态数量
+		rData["biddingCount"] = cepm.GetBuyerNewCount(entName)
+		//采购联系人数量及历史联系人方式,成交时间(加密展示2条)
+		if contactList, err := cepm.GetBuyerContactsMsg(entName); err == nil {
+			rData["contactList"], rData["contactCount"] = formatContact(contactList)
+		}
+		return rData, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s BuyerMiniPortrait获取采购单位画像标信息出错:%s\n", userId, errMsg.Error())
 	}
 	this.ServeJson(NewResult(rData, errMsg))
 }
+
+//formatContact 格式化混淆联系人电话
+func formatContact(contactList []map[string]interface{}) (confusing []map[string]interface{}, total int) {
+	total = len(contactList)
+	deConfusingMap := make(map[string]bool) //去重
+	for _, contactMap := range contactList {
+		var thePhone string
+		rowData, _ := contactMap["contacts"].(map[string]string)
+		for phone := range rowData {
+			if !deConfusingMap[phone] && phone != "" {
+				thePhone = phone
+			}
+		}
+		if len(thePhone) < 7 {
+			continue
+		}
+
+		var confusingPhone string
+		if len([]rune(thePhone)) == 11 {
+			confusingPhone = thePhone[:3] + "****" + thePhone[8:]
+		} else if len([]rune(thePhone)) == 7 {
+			confusingPhone = thePhone[:2] + "***" + thePhone[5:]
+		} else {
+			confusingPhone = thePhone[:5] + "***" + thePhone[8:]
+		}
+		deConfusingMap[confusingPhone] = true
+
+		confusing = append(confusing, map[string]interface{}{
+			"contact": confusingPhone,
+			"date":    contactMap["date"],
+		})
+		//仅返回两条
+		if len(confusing) == 2 {
+			break
+		}
+	}
+	return
+}

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

@@ -115,7 +115,7 @@ func (this *SubVipPortrait) SubVipPortrait() {
 		if err = bigMsg.SubVipPortraitTimesCheck(db.Mysql, entId); err != nil {
 			return nil, err
 		}
-		rData, err := cepm.WinnerPortraitData(entId)
+		rData, err := cepm.WinnerPortraitData(entId, true)
 		if err != nil {
 			return nil, err
 		}

+ 21 - 7
src/jfw/modules/common/src/qfw/util/bidsearch/search.go

@@ -3,6 +3,7 @@ package bidsearch
 import (
 	"fmt"
 	"jfw/public"
+	"log"
 	"qfw/util"
 	"qfw/util/elastic"
 	"qfw/util/jy"
@@ -30,7 +31,7 @@ const (
 )
 
 //GetWxsearchlistData 移动端招标信息搜索
-func GetWxsearchlistData(keywords, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel string, pageNum, pageSize int, selectTypeArr []string, field string) (list *[]map[string]interface{}, b_word, a_word, s_word string) {
+func GetWxsearchlistData(keywords, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel string, pageNum, pageSize int, selectTypeArr []string, field, notkey string) (list *[]map[string]interface{}, b_word, a_word, s_word string) {
 	var hightlightContent bool = false //是否高亮正文
 	for _, v := range selectTypeArr {
 		if v == "detail" {
@@ -48,7 +49,7 @@ func GetWxsearchlistData(keywords, scope, publishtime, subtype, industry, minpri
 	} else {
 		findfields = fmt.Sprintf(`"%s"`, strings.Join(selectTypeArr, "\",\""))
 	}
-	qstr := GetSearchQuery(s_word, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, GetBidSearchQuery(scope, publishtime, subtype, winner, buyerclass))
+	qstr := GetSearchQuery(s_word, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, GetBidSearchQuery(scope, publishtime, subtype, winner, buyerclass), notkey)
 	if hightlightContent { //全文搜索
 		list = elastic.GetAllByNgram(INDEX, TYPE, qstr, `"detail"`, bidSearch_sort, field, (pageNum-1)*pageSize, pageSize, 100, true)
 	} else { //标题搜索
@@ -64,7 +65,7 @@ func GetWxsearchlistData(keywords, scope, publishtime, subtype, industry, minpri
 }
 
 //GetPcBidSearchData pc端招标信息搜索
-func GetPcBidSearchData(searchvalue, area, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel string, start, pageSize int, isGetCount bool, selectTypeArr []string, field string) (count, totalPage int64, list *[]map[string]interface{}) {
+func GetPcBidSearchData(searchvalue, area, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel string, start, pageSize int, isGetCount bool, selectTypeArr []string, field, notkey string) (count, totalPage int64, list *[]map[string]interface{}) {
 	var findfields string
 	var hightlightContent bool = false //是否高亮正文
 	for _, v := range selectTypeArr {
@@ -78,7 +79,7 @@ func GetPcBidSearchData(searchvalue, area, publishtime, subtype, industry, minpr
 	} else {
 		findfields = fmt.Sprintf(`"%s"`, strings.Join(selectTypeArr, "\",\""))
 	}
-	qstr := GetSearchQuery(searchvalue, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, GetBidSearchQuery(area, publishtime, subtype, winner, buyerclass))
+	qstr := GetSearchQuery(searchvalue, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, GetBidSearchQuery(area, publishtime, subtype, winner, buyerclass), notkey)
 	if isGetCount && qstr != "" && start == 0 {
 		count = elastic.Count(INDEX, TYPE, qstr)
 	}
@@ -191,7 +192,7 @@ func GetBidSearchQuery(area, publishtime, subtype, winner, buyerclass string) st
 	return query
 }
 
-func GetSearchQuery(keyword, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, mustquery string) (qstr string) {
+func GetSearchQuery(keyword, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, mustquery, notkey string) (qstr string) {
 	multi_match := `{"multi_match": {"query": "%s","type": "phrase", "fields": [%s]}}`
 	query := `{"query":{"bool":{"must":[%s],"must_not":[%s]}}}`
 	query_bool_should := `{"bool":{"should":[%s],"minimum_should_match": 1}}`
@@ -205,10 +206,10 @@ func GetSearchQuery(keyword, industry, minprice, maxprice, hasBuyerTel, hasWinne
 		musts = append(musts, mustquery)
 	}
 	if keyword != "" {
-		multi_match = fmt.Sprintf(multi_match, "%s", findfields)
+		keyword_multi_match := fmt.Sprintf(multi_match, "%s", findfields)
 		shoulds := []string{}
 		for _, v := range strings.Split(keyword, "+") {
-			shoulds = append(shoulds, fmt.Sprintf(multi_match, elastic.ReplaceYH(v)))
+			shoulds = append(shoulds, fmt.Sprintf(keyword_multi_match, elastic.ReplaceYH(v)))
 		}
 		musts = append(musts, fmt.Sprintf(elastic.NgramMust, strings.Join(shoulds, ",")))
 	}
@@ -260,6 +261,19 @@ func GetSearchQuery(keyword, industry, minprice, maxprice, hasBuyerTel, hasWinne
 			musts = append(musts, fmt.Sprintf(query_missing, "winnertel"))
 		}
 	}
+	if notkey = strings.TrimSpace(notkey); notkey != "" {
+		notkey_multi_match := fmt.Sprintf(multi_match, "%s", findfields)
+		notkey_must_not := []string{}
+		for _, v := range strings.Split(notkey, " ") {
+			v = strings.TrimSpace(v)
+			if v == "" {
+				continue
+			}
+			notkey_must_not = append(notkey_must_not, fmt.Sprintf(notkey_multi_match, elastic.ReplaceYH(v)))
+		}
+		must_not = append(must_not, fmt.Sprintf(query_bool_should, strings.Join(notkey_must_not, ",")))
+	}
 	qstr = fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(must_not, ","))
+	log.Println(qstr)
 	return
 }

+ 101 - 0
src/jfw/modules/entsesearch/src/web/staticres/jylab/entsesearch/js/common.js

@@ -38,6 +38,107 @@ var EasyPopup = function(id){
 		$("#"+this.id).fadeOut();
 	}
 }
+// 部分页面没有全局工具函数
+if (typeof utils !== 'object') {
+	utils = {}
+}
+Date.prototype.pattern = function (fmt) {
+	if (!fmt) return ''
+	var o = {
+		'y+': this.getFullYear(),
+		'M+': this.getMonth() + 1, // 月份
+		'd+': this.getDate(), // 日
+		// 12小时制
+		'h+': this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, // 小时
+		// 24小时制
+		'H+': this.getHours(), // 小时
+		'm+': this.getMinutes(), // 分
+		's+': this.getSeconds(), // 秒
+		'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
+		'S': this.getMilliseconds(), // 毫秒
+		'E+': this.getDay(), // 周
+	};
+	var week = {
+		'0': '日',
+		'1': '一',
+		'2': '二',
+		'3': '三',
+		'4': '四',
+		'5': '五',
+		'6': '六'
+	};
+	if (/(y+)/.test(fmt)) {
+		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
+	}
+	if (/(E+)/.test(fmt)) {
+		fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '星期' : '周') : '') + week[
+		this.getDay() + '']);
+	}
+	for (var k in o) {
+		if (new RegExp('(' + k + ')').test(fmt)) {
+			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k])
+				.length)));
+		}
+	}
+	return fmt;
+}
+utils.dateFromNow = function (originTime, useOld) {
+	if (!originTime) return
+	// 原始时间 - 传入的时间戳
+	var originTimeStamp = +new Date(originTime)
+	// 当前时间戳
+	var nowTimeStamp = +new Date()
+	// 时间戳相差多少
+	var diffTimeStamp = nowTimeStamp - originTimeStamp
+
+	var postfix = diffTimeStamp > 0 ? '前' : '后'
+	// 求绝对值 ms(毫秒)
+	var diffTimeStampAbsMs = Math.abs(diffTimeStamp)
+	var diffTimeStampAbsS = Math.round(diffTimeStampAbsMs / 1000)
+
+	// 10天的秒数
+	var days11 = 11 * 24 * 60 * 60
+	// var dataMap = {
+	//     zh: ['年', '个月', '星期', '天', '小时', '分钟', '秒'],
+	//     number: [365*24*60*60, 30*24*60*60, 7*24*60*60, 24*60*60, 60*60, 60, 1]
+	// }
+	var dataMap = {
+		zh: ['天', '小时', '分钟', '秒'],
+		number: [24 * 60 * 60, 60 * 60, 60, 1]
+	}
+
+	var timeString = ''
+	// 10天前
+	var tenDaysAgo = diffTimeStampAbsS > days11
+	// 是否是当天
+	var isCurrentDay = new Date(originTimeStamp).pattern('yyyy.MM.dd') === new Date().pattern('yyyy.MM.dd')
+
+	var condition = !isCurrentDay
+	if (useOld) {
+		condition = tenDaysAgo
+	}
+
+	if (condition) {
+		// 不是当天,则使用正常日期显示
+		var originDate = new Date(originTimeStamp)
+		var nowDate = new Date()
+		// 是否同年
+		var sameYear = originDate.getFullYear() === nowDate.getFullYear()
+		// 如果是当年,则不显示年
+		var patternString = sameYear ? 'MM-dd' : 'yyyy-MM-dd'
+		timeString = originDate.pattern(patternString)
+	} else {
+		for (var i = 0; i < dataMap.number.length; i++) {
+			var inm = Math.floor(diffTimeStampAbsS / dataMap.number[i])
+			if (inm != 0) {
+				timeString = inm + dataMap.zh[i] + postfix
+				break
+			}
+		}
+	}
+	return timeString
+}
+
 //计算时差
 function timeDiff(date){
 	var date1 = date;//开始时间

+ 100 - 0
src/jfw/modules/followent/src/web/staticres/jylab/followent/js/common.js

@@ -39,6 +39,106 @@ var EasyPopup = function(id){
 		$("#"+this.id).fadeOut();
 	}
 }
+// 部分页面没有全局工具函数
+if (typeof utils !== 'object') {
+	utils = {}
+}
+Date.prototype.pattern = function (fmt) {
+	if (!fmt) return ''
+	var o = {
+		'y+': this.getFullYear(),
+		'M+': this.getMonth() + 1, // 月份
+		'd+': this.getDate(), // 日
+		// 12小时制
+		'h+': this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, // 小时
+		// 24小时制
+		'H+': this.getHours(), // 小时
+		'm+': this.getMinutes(), // 分
+		's+': this.getSeconds(), // 秒
+		'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
+		'S': this.getMilliseconds(), // 毫秒
+		'E+': this.getDay(), // 周
+	};
+	var week = {
+		'0': '日',
+		'1': '一',
+		'2': '二',
+		'3': '三',
+		'4': '四',
+		'5': '五',
+		'6': '六'
+	};
+	if (/(y+)/.test(fmt)) {
+		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
+	}
+	if (/(E+)/.test(fmt)) {
+		fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '星期' : '周') : '') + week[
+		this.getDay() + '']);
+	}
+	for (var k in o) {
+		if (new RegExp('(' + k + ')').test(fmt)) {
+			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k])
+				.length)));
+		}
+	}
+	return fmt;
+}
+utils.dateFromNow = function (originTime, useOld) {
+	if (!originTime) return
+	// 原始时间 - 传入的时间戳
+	var originTimeStamp = +new Date(originTime)
+	// 当前时间戳
+	var nowTimeStamp = +new Date()
+	// 时间戳相差多少
+	var diffTimeStamp = nowTimeStamp - originTimeStamp
+
+	var postfix = diffTimeStamp > 0 ? '前' : '后'
+	// 求绝对值 ms(毫秒)
+	var diffTimeStampAbsMs = Math.abs(diffTimeStamp)
+	var diffTimeStampAbsS = Math.round(diffTimeStampAbsMs / 1000)
+
+	// 10天的秒数
+	var days11 = 11 * 24 * 60 * 60
+	// var dataMap = {
+	//     zh: ['年', '个月', '星期', '天', '小时', '分钟', '秒'],
+	//     number: [365*24*60*60, 30*24*60*60, 7*24*60*60, 24*60*60, 60*60, 60, 1]
+	// }
+	var dataMap = {
+		zh: ['天', '小时', '分钟', '秒'],
+		number: [24 * 60 * 60, 60 * 60, 60, 1]
+	}
+
+	var timeString = ''
+	// 10天前
+	var tenDaysAgo = diffTimeStampAbsS > days11
+	// 是否是当天
+	var isCurrentDay = new Date(originTimeStamp).pattern('yyyy.MM.dd') === new Date().pattern('yyyy.MM.dd')
+
+	var condition = !isCurrentDay
+	if (useOld) {
+		condition = tenDaysAgo
+	}
+
+	if (condition) {
+		// 不是当天,则使用正常日期显示
+		var originDate = new Date(originTimeStamp)
+		var nowDate = new Date()
+		// 是否同年
+		var sameYear = originDate.getFullYear() === nowDate.getFullYear()
+		// 如果是当年,则不显示年
+		var patternString = sameYear ? 'MM-dd' : 'yyyy-MM-dd'
+		timeString = originDate.pattern(patternString)
+	} else {
+		for (var i = 0; i < dataMap.number.length; i++) {
+			var inm = Math.floor(diffTimeStampAbsS / dataMap.number[i])
+			if (inm != 0) {
+				timeString = inm + dataMap.zh[i] + postfix
+				break
+			}
+		}
+	}
+	return timeString
+}
 //计算时差
 function timeDiff(date){
 	var date1 = date;//开始时间

+ 26 - 2
src/jfw/modules/subscribepay/src/entity/dataExportPackStruct.go

@@ -276,6 +276,28 @@ func (this *dataExportPackStruct) GetDataExportRecordList(userId, memberPid stri
 				if filterId, _ := filterMap["FilterId"].(string); filterId != "" {
 					returnRow["search"] = getSearchValueById(filterId)
 				} else {
+					filterMap["area"] = filterMap["Area"]
+					t, _ := filterMap["Time"].(string)
+					if strings.Contains(t, "_") {
+						t1 := strings.Split(t, "_")[0]
+						t2 := strings.Split(t, "_")[1]
+						if len([]rune(t1)) > 10 {
+							t1 = string([]rune(t)[:10])
+						}
+						if len([]rune(t2)) > 10 {
+							t2 = string([]rune(t2)[:10])
+						}
+						t = t1 + "_" + t2
+					} else {
+						if len([]rune(t)) > 10 {
+							t = string([]rune(t)[:10])
+						}
+					}
+					filterMap["publishtime"] = t
+					filterMap["buyerclass"] = filterMap["Buyerclass"]
+					delete(filterMap, "Area")
+					delete(filterMap, "Time")
+					delete(filterMap, "Buyerclass")
 					returnRow["search"] = filterMap
 				}
 			}
@@ -526,12 +548,14 @@ func getCurrEntCount(entName, entPhone string) int {
 
 //根据筛选id获取筛选条件
 func getSearchValueById(filterId string) (searchMap map[string]interface{}) {
-	filter, _ := util.MQFW.FindById("export_search", filterId, `{"industry":1,"publishtime":1,"area":1}`)
+	filter, _ := util.MQFW.FindById("export_search", filterId, `{"buyerclass":1,"publishtime":1,"area":1,"comeinfrom":1}`)
 	if filter != nil && len(*filter) > 0 {
 		searchMap = make(map[string]interface{})
-		searchMap["industry"] = (*filter)["industry"]
+		searchMap["buyerclass"] = (*filter)["buyerclass"]
 		searchMap["publishtime"] = (*filter)["publishtime"]
 		searchMap["area"] = (*filter)["area"]
+		searchMap["id"] = qutil.SE.Encode2Hex(filterId)
+		searchMap["comeinfrom"] = (*filter)["comeinfrom"]
 	}
 	return
 }

+ 20 - 0
src/jfw/modules/subscribepay/src/service/dataExportPay.go

@@ -26,6 +26,7 @@ type DataExportPay struct {
 	createOrder xweb.Mapper `xweb:"/dataExport/createOrder"` //移动端创建订单
 	//vipDailyDataExport        xweb.Mapper `xweb:"/dataExport/vipDaily"`        //大会员数据包数据导出
 	//vipDailyDataExportSuccess xweb.Mapper `xweb:"/dataExport/vipDailySuccess"` //大会员数据包导出生成是否成功
+	historyById xweb.Mapper `xweb:"/dataExport/historyById"` //历史条件
 }
 
 var reg *regexp.Regexp //匹配特殊字符
@@ -253,6 +254,25 @@ func (p *DataExportPay) GetPrice() {
 	})
 }
 
+//根据id获取导出条件
+func (p *DataExportPay) HistoryById() {
+	id := p.GetString("id")
+	id = qutil.SE.Decode4Hex(id)
+	if id != "" {
+		data, _ := util.MQFW.FindById("export_search", id, nil)
+		if data != nil {
+			delete(*data, "_id")
+			delete(*data, "comeintime")
+			delete(*data, "comeinfrom")
+			delete(*data, "s_openid")
+			delete(*data, "s_userid")
+		}
+		p.ServeJson(data)
+		return
+	}
+	p.ServeJson(map[string]interface{}{})
+}
+
 //
 //func (this *DataExportPay) VipDailyDataExport() {
 //	userId, _ := this.GetSession("userId").(string)

+ 1 - 0
src/jfw/modules/subscribepay/src/service/dataexportPack.go

@@ -90,6 +90,7 @@ func (this *DataExportPack) CreateOrder() {
 			"service_status": 0,
 			"user_nickname":  nickname,
 			"user_openid":    openId,
+			"user_phone":     this.GetString("order_phone"),
 			"order_code":     orderCode,
 			"product_type":   "数据流量包",
 			"create_time":    qutil.FormatDate(&now, qutil.Date_Full_Layout),

+ 11 - 11
src/jfw/modules/weixin/src/config.json

@@ -1,26 +1,26 @@
 {
-    "mongodbServers": "127.0.0.1:27080",
+    "mongodbServers": "192.168.3.206:27080",
     "mongodbPoolSize": "5",
     "mongodbName": "qfw",
   	"mongodblog": {
-			"address": "127.0.0.1:27090",
+			"address": "192.168.3.206:27090",
 	 		"size": 5,
 	 		"dbName": "qfw",
 			"replSet": "",
 			"userName": "admin",
 			"password": "123456"
 	},
-    "redisServers": "sso=127.0.0.1:1712,other=127.0.0.1:1712,jyop_other=127.0.0.1:1712,push=127.0.0.1:1712,wxtoken=127.0.0.1:1712",
-    "redisLogin": "login=127.0.0.1:1712",
+    "redisServers": "sso=192.168.3.206:1712,other=192.168.3.206:1712,jyop_other=192.168.3.206:1712,push=192.168.3.206:1712,wxtoken=192.168.3.206:1712",
+    "redisLogin": "login=192.168.3.206:1712",
     "weixinport": "82",
     "weixinrpcport": "8083",
     "webrpcport": "127.0.0.1:8084",
     "jyop_webrpcport": "127.0.0.1:8012",
-    "webdomain": "https://web-ws.jydev.jianyu360.com",
-    "appid":"wx5b1c6e7cc4dac0e4",
-    "appsecret":"b026103ffebd2291b3edb7a269612112",
-    "apptoken": "top2022top2022",
-    "proxysess": "https://web-ws.jydev.jianyu360.com/front/sess/%s",
+    "webdomain": "https://wcj.jydev.jianyu360.com",
+    "appid":"wx76e1309b01a7b17e",
+    "appsecret":"dd00e71cb2370432d9de848b674eb8e7",
+    "apptoken": "top2020top2020",
+    "proxysess": "https://wcj.jydev.jianyu360.com/front/sess/%s",
     "followCompany": 10,
     "welcomemsg": "用剑鱼标讯,所有功能完全免费,\n和传统的会员制说再见!\n\n<a href='%s'>点击这里</a>设置关键词,或直接回复“订阅 关键词”,如“订阅 教学设备”,您将随时随地接收招标信息!\n\n剑鱼标讯,让投标无限可能!",
     "tpl_subscribe_push_id": "IY_RWWzMlwDK6hcd6RAzTec6qre8n5r8PNOOUM_hgk0",
@@ -66,8 +66,8 @@
         "project_fail": "抱歉!无法添加项目“%s”,<a href='%s'>因为您关注的项目,达到了系统上限,您可以点击此处删除多余的项目,然后重新添加。</a>"
     },
     "vipSubscribeReply": {
-        "href": "/swordfish/SingleLogin?toHref=/front/vipsubscribe/introducePage",
-        "content": "<a href='%s'>点击立即体验超级订阅。</a>"
+        "href": "/swordfish/SingleLogin?toHref=/front/vipsubscribe/vipsubscribe_new",
+        "content": "<a href='%s'>点击立即购买超级订阅。</a>"
     },
     "structureData": {
         "href": "/swordfish/SingleLogin?toHref=/front/structed/index?adv_from=wx_reply",

+ 21 - 6
src/web/staticres/big-member/js/utils.js

@@ -1,5 +1,5 @@
 /**
- * utils.js v0.0.1
+ * utils.js
  * 各类js工具函数
  */
 
@@ -74,9 +74,14 @@ Number.prototype.fixed = function(len){
     return Math.round(this*num) / num
 }
 
+var versionChangeLog = {
+    '0.0.1': 'init',
+    '0.0.2': 'utils.dateFromNow 函数逻辑修改,具体修改内容查看函数注释'
+}
+
 var utils = {
     // utils版本号
-    version: '0.0.1',
+    version: '0.0.2',
     isWeiXinBrowser: navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1,
     isAndroid: navigator.userAgent.toLowerCase().indexOf('android') !== -1,
     isIos: /iphone|ipod|ipad|ios/.test(navigator.userAgent.toLowerCase()),
@@ -408,10 +413,10 @@ var utils = {
         }
     },
     /**
-     * 时间戳转换 多少秒、多少分、多少小时前、多少天前  超出10天显示年月日
+     * 时间戳转换 多少秒、多少分、多少小时前  昨天以及昨天之前的显示年月日(今年的时间不显示年份)
      * @param {Date} originTime 要转换的时间对象(或者时间戳)
      */
-    dateFromNow: function (originTime) {
+    dateFromNow: function (originTime, useOld) {
         if (!originTime) return
         // 原始时间 - 传入的时间戳
         var originTimeStamp = +new Date(originTime)
@@ -437,7 +442,17 @@ var utils = {
         }
 
         var timeString = ''
-        if (diffTimeStampAbsS > days11) {
+        // 10天前
+        var tenDaysAgo = diffTimeStampAbsS > days11
+        // 是否是当天
+        var isCurrentDay = new Date(originTimeStamp).pattern('yyyy.MM.dd') === new Date().pattern('yyyy.MM.dd')
+
+        var condition = !isCurrentDay
+        if (useOld) {
+            condition = tenDaysAgo
+        }
+        // 是否是当天
+        if (condition) {
             // 大于10天,则使用正常日期显示
             var originDate = new Date(originTimeStamp)
             var nowDate = new Date()
@@ -447,7 +462,7 @@ var utils = {
             var patternString = sameYear ? 'MM-dd' : 'yyyy-MM-dd'
             timeString = originDate.pattern(patternString)
         } else {
-            for (var i = 0; i < 7; i++) {
+            for (var i = 0; i < dataMap.number.length; i++) {
                 var inm = Math.floor(diffTimeStampAbsS / dataMap.number[i])
                 if (inm != 0) {
                     timeString = inm + dataMap.zh[i] + postfix

+ 125 - 4
src/web/staticres/common-module/collection/css/index.css

@@ -5,6 +5,105 @@
 * Browsers: iOS >= 7,Android >= 4
 */
 
+/* vant-reset */
+.van-dialog {
+    width: 6rem;
+    border-radius: .16rem;
+}
+.van-dialog__header {
+    font-weight: 700;
+    font-size: 18px;
+    line-height: 26px;
+    color: #171826;
+}
+.van-dialog__content {
+    padding: .16rem .6rem;
+}
+.van-dialog__message {
+    padding-left: 0;
+    padding-right: 0;
+    font-size: .3rem;
+    line-height: .44rem;
+    color: #5F5E64;
+}
+.van-dialog .van-button {
+    font-size: 18px;
+    line-height: 26px;
+}
+
+.van-dialog  .van-button--default {
+    color: #171826;
+}
+
+.van-toast {
+    max-width: 4.2rem;
+    line-height: 1.6;
+}
+
+/* vant-custom */
+.j-confirm-dialog {
+    border-radius: 8px;
+}
+.j-confirm-dialog .van-dialog__message {
+    font-size: .32rem;
+    color: #171826;
+    line-height: .48rem;
+    text-align: left;
+}
+.j-confirm-dialog.text-center .van-dialog__message {
+    text-align: center;
+}
+.j-confirm-dialog .van-button {
+    font-size: .36rem;
+    color: #171826;
+    line-height: .52rem;
+}
+
+/* popup */
+.j-popup .van-popup__close-icon {
+    top: .48rem;
+}
+.j-popup .popup-header {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    height: 1.28rem;
+    padding: 0 .32rem;
+}
+.j-popup .header-title {
+    font-size: .4rem;
+    color: #171826;
+}
+.j-popup .select-group {
+    padding-left: .32rem;
+}
+.j-popup .select-item {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 0.24rem 0.32rem;
+    padding-left: 0;
+    font-size: 0.28rem;
+    line-height: 0.4rem;
+    color: #5f5e64;
+}
+.j-popup .select-item .j-icon {
+    opacity: 0;
+    transform: opacity .5s ease;
+}
+.j-popup .select-item.active {
+    color: #2abed1;
+}
+.j-popup .select-item.active .j-icon {
+    opacity: 1;
+}
+.j-popup .select-item:not(:last-of-type) {
+    border-bottom: 0.5px solid rgba(0, 0, 0, 0.05);
+}
+.j-popup.collection .unitTab {
+    height: 100%;
+}
+
 .collection{
     width: 100%;
 }
@@ -746,9 +845,10 @@
     line-height: 0.48rem;
 }
 .vip_openDialog  .vip_content{
+    padding: 0.32rem;
     display: flex;
     justify-content: center;
-    margin-top: 0.4rem;
+    /* margin-top: 0.4rem; */
     font-size: 0.28rem;
     font-weight: 400;
     text-align: CENTER;
@@ -758,10 +858,10 @@
 }
 .vip_openDialog .vip_content .vip_content_div{
     position: relative;
-    width: 4.82rem;
+    width: 5.42rem;
 }
 .vip_openDialog .vip_content .vip_img{
-    width: 4.82rem;
+    width: 5.42rem;
 }
 .vip_openDialog .vip_content .vip_example{
     position: absolute;
@@ -780,6 +880,7 @@
 }
 .vip_openDialog  .vip_head .vip_extend{
     font-size: 0.26rem;
+    color: #171826;
 }
 .vip_openDialog .openBtn{
     width: 100%;
@@ -842,6 +943,7 @@
     background: #2abed1;
     border-radius: .08rem;
 }
+.area-card-item .root_open,
 .customTime .root_open{
     padding: .04rem .12rem;
     border: 1px solid #fb483d;
@@ -935,4 +1037,23 @@
     font-size: .28rem;
     line-height: .4rem;
     color: #2ABED1;
-}
+}
+
+/* 订阅页面第四个占满全屏的filter-tab */
+.filter-list-container .van-cell {
+    height: 1.08rem;
+    font-size: .28rem;
+}
+.filter-list-container .van-cell .van-cell__value {
+    font-size: .26rem;
+}
+.filter-list-container .van-cell:not(:last-of-type) {
+    border-bottom: 1px solid rgba(0,0,0,0.05);
+}
+.filter-list-container .rootstyletitle {
+    height: .48rem;
+}
+
+.super-vip-dialog .van-dialog__message {
+    color: #5f5e64;
+}

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

@@ -1,14 +1,14 @@
 var vipDialog = `
 <div class="vip_openDialog">
-  <div class="vip_head">
-      <span>{{getTextMap.titleText}}</span>
-      <span class="vip_extend"><span>{{getTextMap.headText.top}}</span><br/>{{getTextMap.headText.bot}}</span>
-  </div>
   <div class="vip_content">
     <div class="vip_content_div">
       <img class="vip_img" :src="imgurl" />
       <span class="vip_example">示例</span>
     </div>
+  </div>  
+  <div class="vip_head">
+      <span style="display:none;">{{getTextMap.titleText}}</span>
+      <span class="vip_extend"><span>{{getTextMap.headText.top}}</span><br/>{{getTextMap.headText.bot}}</span>
   </div>
   <div class="openBtn">
       <button class="goBtn" @click="goOpen(getTextMap.headText.top,getTextMap.headText.bot, getTextMap.source)">{{getTextMap.btnText}}</button>

+ 30 - 2
src/web/staticres/common-module/collection/js/date-mobile.js

@@ -3,12 +3,16 @@ var dateComponentTemplate = `
   <div class="dateTags j-main" v-if="type === 'more-picker'">
       <div class="timeTag">
           <div class="area-card-item" :class="{active:item.selected==true}" v-for="(item, index) in timeSelectList" :key="index" @click="selectFixedDate(item)">{{item.name}}</div>
+          <div v-show="diy" class="area-card-item diy-item" :class="{active:dateStyle==true}"  @click="dateShowEvent">
+                自定义
+                <span class="root_open" v-if="!rootopen">开通</span>
+          </div>
       </div>
       <div class="customTime">
         <span class="customTime-title">自定义时间</span>
         <span class="root_open" v-if="!rootopen">开通</span>
       </div>
-      <div class="timePicker" @click="dateShowEvent" :class="{clickactive:dateStyle==true}">
+      <div v-show="getShowDiyInput" class="timePicker" @click.self="dateShowEvent" :class="{clickactive:dateStyle==true}">
         <van-field @focus="getStratFocus" v-model="dateTimePickerState.startPlaceHolder" placeholder="开始时间"></van-field>
         <div class="line"></div>
         <van-field @focus="getEndFocus" v-model="dateTimePickerState.endPlaceHolder" placeholder="结束时间"></van-field>
@@ -129,6 +133,10 @@ var dateComponent = {
       type: Boolean,
       default: true
     },
+    "diy": {
+      type: Boolean,
+      default: false
+    },
     'times': {
       type: Array,
       default: function () {
@@ -183,6 +191,11 @@ var dateComponent = {
     }
     this.setState()
   },
+  computed: {
+    getShowDiyInput () {
+      return this.diy ? this.dateStyle : true
+    }
+  },
   methods: {
     setState () {
       // {
@@ -355,7 +368,19 @@ var dateComponent = {
         this.dateStyle = true
         this.datePicker.startshow = true
       } else {
-        this.getWeixin()
+        if (this.diy) {
+          var _this = this
+          this.$dialog.close()
+          this.$dialog.confirm({
+            title: '开通超级订阅',
+            message: '立享更多搜索权限<br>寻找商机更精准',
+            className: 'ent-search-dialog center-text',
+            overlayClass: 'z-2030',
+            confirmButtonText: '去开通',
+          }).then(function () {
+            _this.getWeixin()
+          }).catch(function () {});
+        }
       }
     },
     formatter: function(type, val) {
@@ -389,6 +414,7 @@ var dateComponent = {
     },
     getStratFocus: function() {
       if(this.rootopen) {
+        this.datePicker.startshow = true
         document.activeElement.blur()
       } else {
         this.getWeixin()
@@ -414,11 +440,13 @@ var dateComponent = {
     resetStart: function() {
       this.datePicker.startshow = false
       this.dateTimePickerState.startPlaceHolder = ''
+      this.dateTimePickerState.start = ''
     },
     // 重置结束时间
     resetEnd: function() {
       this.datePicker.endshow = false
       this.dateTimePickerState.endPlaceHolder = ''
+      this.dateTimePickerState.end = ''
     },
     // 选择开始时间弹窗确认按钮
     onStartConfirm:function() {

+ 124 - 51
src/web/staticres/common-module/collection/js/ent_portrait.js

@@ -27,10 +27,12 @@ var vNode = {
                 _4: false,
                 // 是否显示中标企业动态
                 _13: false,
-                isMember: 0 // 是否是大会员
+                isMember: 0, // 是否是大会员
+                arr: [], // 权限列表
+                vipStatus: 0 // 是否是超级订阅
             },
             powerInfo: {},
-            tabActiveName: '1',
+            tabActiveName: '',
             // 企业信息
             entInfo: {
                 name: '',
@@ -65,7 +67,7 @@ var vNode = {
                 showGetNextButton: true
             },
             entPortraitInfo: {},
-            stickyTop: 80,
+            stickyTop: 0,
             singleTab: true,
             // 年度项目统计设置
             annualSetting:{
@@ -118,7 +120,8 @@ var vNode = {
                 provin: 0, // 购买省份数量
                 visited: false // 是否查看中标信息
             },
-            portrait:'winner'
+            portrait:'winner',
+            showBaseInfo: false
         }
     },
     created: function () {
@@ -135,6 +138,7 @@ var vNode = {
         this.entInfo.id = eId
         this.entInfo.name = ''
         this.restore = this.reStoreState()
+        this.getEntVisits()
         this.getPowerInfo()
         if (!this.restore) {
             // 获取企业基本信息
@@ -157,42 +161,42 @@ var vNode = {
         })
     },
     watch: {
-        tabActiveName: function (newVal, oldVal) {
-            var _this = this
-            if (newVal == '2') {
-                this.$nextTick(function () {
-                    if (_this.gotTab2) {
-                        // 初始化图表
-                        if (_this.entPortraitInfo && _this.conf.showPortraitAll && !_this.singleTab) {
-                            _this.initChartsData();
-                        }
-                    } else {
-                        if (_this.conf._4) {
-                            // 获取企业画像信息-4
-                            _this.getEntPortrait(function () {
-                                _this.initChartsData()
-                            })
-                            _this.gotTab2 = true
-                            console.log('获取企业全景分析...')
-                        }
-                        // 获取企业中标动态-13
-                        if (_this.conf._13) {
-                            _this.getProjectNews()
-                            _this.gotTab2 = true
-                            console.log('获取企业中标动态...')
-                        }
-                        if(_this.powerInfo.memberStatus <= 0) {
-                            // 不是大会员点击中标信息使用次数加一
-                            // if(!_this.entvisit.visited) {
-                            //     _this.entvisit.usage++
-                            //     _this.entvisit.visited = true
-                            // }
-                        }
-                        _this.gotTab2 = true
-                    }
-                });
-            }
-        },
+        // tabActiveName: function (newVal, oldVal) {
+        //     var _this = this
+        //     if (newVal == '2') {
+        //         this.$nextTick(function () {
+        //             if (_this.gotTab2) {
+        //                 // 初始化图表
+        //                 if (_this.entPortraitInfo && _this.conf.showPortraitAll && !_this.singleTab) {
+        //                     _this.initChartsData();
+        //                 }
+        //             } else {
+        //                 if (_this.conf._4) {
+        //                     // 获取企业画像信息-4
+        //                     _this.getEntPortrait(function () {
+        //                         _this.initChartsData()
+        //                     })
+        //                     _this.gotTab2 = true
+        //                     console.log('获取企业全景分析...')
+        //                 }
+        //                 // 获取企业中标动态-13
+        //                 if (_this.conf._13) {
+        //                     _this.getProjectNews()
+        //                     _this.gotTab2 = true
+        //                     console.log('获取企业中标动态...')
+        //                 }
+        //                 if(_this.powerInfo.memberStatus <= 0) {
+        //                     // 不是大会员点击中标信息使用次数加一
+        //                     // if(!_this.entvisit.visited) {
+        //                     //     _this.entvisit.usage++
+        //                     //     _this.entvisit.visited = true
+        //                     // }
+        //                 }
+        //                 _this.gotTab2 = true
+        //             }
+        //         });
+        //     }
+        // },
     },
     computed: {
         // 3个权限有1个就为true(取反为3个权限1个都没有)
@@ -205,19 +209,64 @@ var vNode = {
         },
         // 查看次数为零,显示遮罩
         getStatus: function () {
-            return (!this.conf._4 && !this.isVip) || (this.entvisit.total <= this.entvisit.usage && this.powerInfo.memberStatus <= 0 && !this.entvisit.visited)
+            return (!this.conf._4 && !this.isVip) || (this.entvisit.total <= this.entvisit.usage && this.powerInfo.memberStatus <= 0 && !this.entvisit.visited) || (this.entvisit.total <= this.entvisit.usage && !this.showContacts && !this.entvisit.visited)
         },
         isMember () {
           return this.powerInfo.memberStatus <= 0 || !this.conf._4
         },
         isShowUpTip () {
-            return this.entvisit.provin == -1 ? false : !this.surplus
+          return this.entvisit.provin == -1 ? false : true && !this.surplus && this.isVip && this.powerInfo.memberStatus <= 0 && !this.entvisit.visited
         },
         surplus: function () {
             return this.entvisit.total > this.entvisit.usage
+        },
+        showContacts: function () {
+          return this.conf.arr.indexOf(4) > -1 && this.powerInfo.memberStatus > 0
+        },
+        // 是否展示升级提示 是新超级订阅用户且购买的不是全国且浏览次数已用完
+        showUpdateTip: function() {
+          return this.isVip && this.entvisit.provin !== -1 && !this.surplus && this.conf._4 && this.powerInfo.memberStatus <= 0
+        },
+        // 是否隐藏动态 显示遮罩
+        hideDt: function() {
+          // 是新超级订阅 且不是大会员且次数已用完   或大会员没有项目动态权限
+          return this.isVip && this.powerInfo.memberStatus <= 0 && this.entvisit.total <= this.entvisit.usage || this.conf.arr.indexOf(13) === -1
         }
     },
     methods: {
+        getDataFn: function () {
+          var _this = this
+          this.$nextTick(function () {
+            // 初始化图表
+            if (_this.entPortraitInfo && _this.conf.showPortraitAll) {
+              _this.initChartsData();
+            }
+    
+            if (_this.conf._4) {
+              // 获取企业画像信息-4
+              _this.getEntPortrait(function () {
+                _this.initChartsData()
+              })
+              _this.gotTab2 = true
+              console.log('获取企业全景分析...')
+            }
+            // 获取企业中标动态-13
+            if (_this.conf._13) {
+              _this.getProjectNews()
+              _this.gotTab2 = true
+              console.log('获取企业中标动态...')
+            }
+            if (_this.powerInfo.memberStatus <= 0) {
+              // 不是大会员点击中标信息使用次数加一
+              // if(!_this.entvisit.visited) {
+              //     _this.entvisit.usage++
+              //     _this.entvisit.visited = true
+              // }
+            }
+            _this.gotTab2 = true
+    
+          });
+        },
         // 点击去开通记住tab栏下标
         tabActive: function(data) {
             this.savePageState()
@@ -267,10 +316,22 @@ var vNode = {
                 entId: _this.entInfo.id
             }
             let urls = ''
-            if(_this.powerInfo.memberStatus <= 0 || _this.svip) {
-                urls = '/bigmember/portrait/subVipPortrait/winner'
-            } else {
+            // 如果专家版、智慧版 调大会员接口,如果是专家版、自定义版,同时是超级订阅 根据可查看次数判断 调大会员还是超级订阅接口
+            if (_this.powerInfo.memberStatus > 0 && _this.powerInfo.memberStatus <= 2) {
+              urls = '/bigmember/portrait/winner/getData'
+            } else if (_this.powerInfo.memberStatus > 2) {
+              if ( _this.isVip) { // 超级订阅
+                if(_this.entvisit.total <= _this.entvisit.usage && !_this.entvisit.visited) {
+                  urls = '/bigmember/portrait/winner/getData'
+                } else {
+                  urls = '/bigmember/portrait/subVipPortrait/winner'
+                }
+              } else {
                 urls = '/bigmember/portrait/winner/getData'
+                // 商机版、自定义版
+              }
+            } else {
+              urls = '/bigmember/portrait/subVipPortrait/winner'
             }
             _this.getEntPortraitInfoTimes++
             $.ajax({
@@ -338,14 +399,23 @@ var vNode = {
             if (data.pageSign) {
                 this.loading = this.showLoading()
             }
-
             var urls = ''
-            if (this.isVip) {
-                urls = '/bigmember/portrait/subVipPortrait/winnerNewMsg'
-            } else {
+            // 判断专家版、智慧版; 商机版和自定义版时判断是不是超级订阅 
+            if (_this.powerInfo.memberStatus > 0 && _this.powerInfo.memberStatus <= 2) {
+              urls = '/bigmember/portrait/winner/getNewMsg'
+            } else if (_this.powerInfo.memberStatus > 2) {
+              if (_this.isVip) {
+                if (_this.entvisit.total <= _this.entvisit.usage && !_this.entvisit.visited) {
+                  urls = '/bigmember/portrait/winner/getNewMsg'
+                } else {
+                  urls = '/bigmember/portrait/subVipPortrait/winnerNewMsg'
+                }
+              } else {
                 urls = '/bigmember/portrait/winner/getNewMsg'
+              }
+            } else {
+              urls = '/bigmember/portrait/subVipPortrait/winnerNewMsg'
             }
-
             $.ajax({
                 type: 'POST',
                 url: urls,
@@ -518,6 +588,9 @@ var vNode = {
                             }
                         }
                         _this.conf.isMember = res.data.memberStatus
+                        _this.conf.arr = res.data.power
+                        _this.conf.vipStatus = res.data.memberStatus
+                        _this.getDataFn()
                     } else {
                         _this.$toast(res.error_msg)
                     }
@@ -585,7 +658,7 @@ var vNode = {
             this.arrangeImportantData(dataSet.topShow)
         },
         getStickyTop: function () {
-            this.stickyTop = $('.jy-app-header').height() - 1
+            // this.stickyTop = $('.jy-app-header').height() - 1
         },
         goToEntHistory: function () {
             // if (this.powerInfo.isSubCount) {

+ 71 - 3
src/web/staticres/common-module/collection/js/money-mobile.js

@@ -99,13 +99,14 @@ var moneyComponentTemplate = `<div class="j-container">
 <div class="money-component-group j-main">
     <div class="select-tag-group">
         <div class="select-tag-item" :class="{active:item.selected==true}" v-for="(item, index) in selectTags" :key="index" @click="selectFixedTag(item)">{{item.name}}</div>
+        <div v-show="diy" class="select-tag-item" :class="{active: inputSelected==true}" @click="selectInput(true)">自定义</div>
     </div>
-    <div class="select-picker-group" @click="selectInput(false)" :class="{'click-active':inputSelected==true}">
-      <van-field :formatter="formatterDigit" @blur="formatInput" @click.stop="selectInput(true)" type="digit" v-model.number="inputMap.start" :placeholder="placeholder">
+    <div v-show="getShowDiyInput" class="select-picker-group" @click="selectInput(false)" :class="{'click-active':inputSelected==true}">
+      <van-field :formatter="formatterDigit" @focus="toggleInput(true)" @blur="formatInput" @click.stop="selectInput(true)" type="digit" v-model.number="inputMap.start" :placeholder="placeholder">
         <template #extra><span class="extra-text-tip">{{extra}}</span></template>
       </van-field>
       <div class="line"></div>
-      <van-field :formatter="formatterDigit" @blur="formatInput" @click.stop="selectInput(true)" type="digit" v-model.number="inputMap.end" :placeholder="placeholder">
+      <van-field :formatter="formatterDigit" @focus="toggleInput(true)" @blur="formatInput" @click.stop="selectInput(true)" type="digit" v-model.number="inputMap.end" :placeholder="placeholder">
         <template #extra><span class="extra-text-tip">{{extra}}</span></template>
       </van-field>
     </div>
@@ -127,6 +128,14 @@ var moneyComponent = {
       type: Boolean,
       default: true
     },
+    all: {
+      type: Boolean,
+      default: false
+    },
+    diy: {
+      type: Boolean,
+      default: false
+    },
     tags: {
       type: Array,
       default: function () {
@@ -162,6 +171,25 @@ var moneyComponent = {
   },
   mounted () {
     $('head').append(tempMoneyStyleComponent)
+    // 输入框问题处理
+    var fixedHeight = document.documentElement.clientHeight || 0
+    var _this = this
+    window.addEventListener('resize', function () {
+      var tempH = document.documentElement.clientHeight || 0
+      if (tempH < fixedHeight) {
+        _this.changeViewForHeight(true)
+      } else {
+        _this.changeViewForHeight(false)
+      }
+    });
+    window.addEventListener('popstate',function () {
+      $(document.activeElement).trigger('blur')
+    })
+  },
+  computed: {
+    getShowDiyInput () {
+      return this.diy ? this.inputSelected : true
+    }
   },
   methods: {
     formatInput () {
@@ -175,6 +203,7 @@ var moneyComponent = {
           end: maxN
         }
       }
+      this.toggleInput(false)
     },
     formatterDigit (value) {
       return value.replace(/\D/g, '').replace(/^0+/g, '0')
@@ -197,12 +226,50 @@ var moneyComponent = {
         return resultList.join(',')
       }
     },
+    checkAllStatus (item) {
+      if (this.all) {
+        if (item.name === '不限') {
+          this.resetSelected()
+          item.selected = true
+        } else {
+          this.selectTags[0].selected = this.getState() == ''
+        }
+      }
+    },
+    changeViewForHeight (type) {
+      $(".app-layout-content-b").scrollTop(0)
+      $("#v-search-group .popup-content").scrollTop(0)
+      var tempDom = $("#v-search-group .ent-search-pop")
+      if (type) {
+        var minHeightList = [document.documentElement.clientHeight || 0, document.body.clientHeight || 0, $(".app-layout-content-b").height() || 0].sort()
+        if (!tempDom.attr('data-height')) {
+          tempDom.attr('data-height', tempDom.height())
+        }
+        tempDom.css({height: minHeightList[0] - 44})
+      } else {
+        tempDom.css({height: tempDom.attr('data-height')})
+        tempDom.removeAttr('data-height')
+      }
+    },
+    toggleInput (type) {
+     this.changeViewForHeight(type)
+      document.activeElement.scrollIntoViewIfNeeded();
+      var _this = this
+      setTimeout(function (){
+        _this.changeViewForHeight(type)
+        document.activeElement.scrollIntoViewIfNeeded();
+      }, 120)
+    },
     selectInput (type) {
       if (this.radio) {
         this.resetSelected()
         this.inputSelected = true
       } else {
         this.inputSelected = type ? type : !this.inputSelected
+        this.checkAllStatus({
+          name: '自定义',
+          selected: false
+        })
       }
     },
     selectFixedTag: function(item) {
@@ -213,6 +280,7 @@ var moneyComponent = {
         item.selected = true
       } else {
         item.selected = !item.selected
+        this.checkAllStatus(item)
       }
     },
     resetSelected (type) {

+ 5 - 11
src/web/staticres/common-module/collection/js/notice-mobile.js

@@ -99,7 +99,11 @@ var noticeComponent = {
         },
         {
           "招标预告": [
-            "招标预告"
+            "预告",
+            "预审",
+            "预审结果",
+            "论证意见",
+            "需求公示",
           ]
         },
         {
@@ -167,13 +171,6 @@ var noticeComponent = {
                   bool = false
                 })
               }
-            } else if(data == '预告') {
-              if(Object.keys(item)[0] == '招标预告') {
-                item[Object.keys(item)[0]].forEach(function(d) {
-                  d.type = true
-                  bool = false
-                })
-              }
             }
           });
         })
@@ -295,9 +292,6 @@ var noticeComponent = {
             if (data.name === '拟建项目') {
               str = '拟建'
               noticeArr.push(str)
-            } else if(data.name === '招标预告') {
-              str = '预告'
-              noticeArr.push(str)
             } else {
               str = data.name
               noticeArr.push(str)

+ 0 - 701
src/web/staticres/common-module/collection/js/utils.js

@@ -1,701 +0,0 @@
-/**
- * utils.js v0.0.1
- * 各类js工具函数
- */
-
-/*
-   * 时间格式化函数(将时间格式化为,2019年08月12日,2019-08-12,2019/08/12的形式)
-   *
-   *
-   *   pattern参数(想要什么格式的数据就传入什么格式的数据)
-   *     · 'yyyy-MM-dd'  ---> 输出如2019-09-20
-   *     · 'yyyy-MM-dd hh:mm'  --->  输出如2019-09-20 08:20
-   *     · 'yyyy-MM-dd HH:mm:ss'  --->  输出如2019-09-20 18:20:23
-   *     · 'yyyy/MM/dd'  --->  输出如2019/09/20
-   *     · 'yyyy年MM月dd日'  --->  输出如2019年09月20日
-   *     · 'yyyy年MM月dd日 hh时mm分'  --->  输出如2019年09月20日 08时20分
-   *     · 'yyyy年MM月dd日 hh时mm分ss秒'  --->  输出如2019年09月20日 08时20分23秒
-   *     · 'yyyy年MM月dd日 hh时mm分ss秒 EE'  --->  输出如2019年09月20日 08时20分23秒 周二
-   *     · 'yyyy年MM月dd日 hh时mm分ss秒 EEE'  --->  输出如2019年09月20日 08时20分23秒 星期二
-   *
-   *  参考: https://www.cnblogs.com/mr-wuxiansheng/p/6296646.html
-   */
-Date.prototype.pattern = function (fmt) {
-    if (!fmt) return ''
-    var o = {
-        'y+': this.getFullYear(),
-        'M+': this.getMonth() + 1, // 月份
-        'd+': this.getDate(), // 日
-        // 12小时制
-        'h+': this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, // 小时
-        // 24小时制
-        'H+': this.getHours(), // 小时
-        'm+': this.getMinutes(), // 分
-        's+': this.getSeconds(), // 秒
-        'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
-        'S': this.getMilliseconds(), // 毫秒
-        'E+': this.getDay(), // 周
-    };
-    var week = {
-        '0': '日',
-        '1': '一',
-        '2': '二',
-        '3': '三',
-        '4': '四',
-        '5': '五',
-        '6': '六'
-    };
-    if (/(y+)/.test(fmt)) {
-        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
-    }
-    if (/(E+)/.test(fmt)) {
-        fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '星期' : '周') : '') + week[
-            this.getDay() + '']);
-    }
-    for (var k in o) {
-        if (new RegExp('(' + k + ')').test(fmt)) {
-            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k])
-                .length)));
-        }
-    }
-    return fmt;
-}
-/*  挂载到Number原型上,格式化小数用tofixed会造成位数不够补零的情况(处理不让自动补零)
-    栗子: 不是number类型的需要转一下
-        Number('').fixed()
-        Number('213412DDD').fixed()
-        1234.152354.fixed()
-        1234.152354.fixed(2)
-        1234.152354.fixed(10)
-*/
-Number.prototype.fixed = function(len){
-    len = isNaN(len)?  0 : len
-    var num = Math.pow(10,len)
-    return Math.round(this*num) / num
-}
-
-var utils = {
-    // utils版本号
-    version: '0.0.1',
-    isWeiXinBrowser: navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1,
-    isAndroid: navigator.userAgent.toLowerCase().indexOf('android') !== -1,
-    isIos: /iphone|ipod|ipad|ios/.test(navigator.userAgent.toLowerCase()),
-    // 传入你要获取的参数的名字
-    getParam: function (name) {
-        var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
-        var r = window.location.search.substr(1).match(reg); //获取url中'?'符后的字符串并正则匹配
-
-        var context = '';
-        if (r != null) context = r[2];
-        // 释放变量
-        reg = null;
-        r = null;
-        return context == null || context == '' || context == 'undefined' ? '' : context;
-    },
-    // 取[m, n]随机数
-    getRandomNumber: function (min, max) {
-        return Math.floor(Math.random() * (max - min + 1) + min);
-    },
-    // 获取唯一的uuid
-    // https://www.kancloud.cn/ifeng/js100/622666
-    getRandomUuid: function () {
-        var s = [];
-        var hexDigits = "0123456789abcdef";
-        for (var i = 0; i < 36; i++) {
-            s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
-        }
-        s[14] = "4";  // bits 12-15 of the time_hi_and_version field to 0010
-        s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);  // bits 6-7 of the clock_seq_hi_and_reserved to 01
-        s[8] = s[13] = s[18] = s[23] = "-";
-
-        var uuid = s.join("");
-        return uuid;
-    },
-    // 获取随机字符串
-    // 不传参数则获取长度不固定的字符串
-    getRandomString: function (len) {
-        var randomString = '';
-        if (len) {
-            /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
-            var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
-            var maxPos = $chars.length;
-            for (i = 0; i < len; i++) {
-                randomString += $chars.charAt(Math.floor(Math.random() * maxPos));
-            }
-        } else {
-            // Math.random()  生成随机数字, eg: 0.123456
-            // .toString(36)  转化成36进制 : "0.4fzyo82mvyr"
-            // .substring(2)  去掉前面两位 : "yo82mvyr"
-            // .slice(-8)  截取最后八位 : "yo82mvyr"
-            randomString = Math.random().toString(36).substring(2)
-        }
-        return randomString;
-    },
-    // FROM: https://www.jianshu.com/p/90ed8b728975
-    // 比较两个对象是否相等
-    // 返回true为相等,返回false为不相等
-    deepCompare: function (x, y) {
-        var i, l, leftChain, rightChain;
-        function compare2Objects(x, y) {
-            var p;
-            // remember that NaN === NaN returns false
-            // and isNaN(undefined) returns true
-            if (isNaN(x) && isNaN(y) && typeof x === 'number' && typeof y === 'number') {
-                return true;
-            }
-
-            // Compare primitives and functions.
-            // Check if both arguments link to the same object.
-            // Especially useful on the step where we compare prototypes
-            if (x === y) {
-                return true;
-            }
-
-            // Works in case when functions are created in constructor.
-            // Comparing dates is a common scenario. Another built-ins?
-            // We can even handle functions passed across iframes
-            if ((typeof x === 'function' && typeof y === 'function') ||
-                (x instanceof Date && y instanceof Date) ||
-                (x instanceof RegExp && y instanceof RegExp) ||
-                (x instanceof String && y instanceof String) ||
-                (x instanceof Number && y instanceof Number)) {
-                return x.toString() === y.toString();
-            }
-
-            // At last checking prototypes as good as we can
-            if (!(x instanceof Object && y instanceof Object)) {
-                return false;
-            }
-
-            if (x.isPrototypeOf(y) || y.isPrototypeOf(x)) {
-                return false;
-            }
-
-            if (x.constructor !== y.constructor) {
-                return false;
-            }
-
-            if (x.prototype !== y.prototype) {
-                return false;
-            }
-
-            // Check for infinitive linking loops
-            if (leftChain.indexOf(x) > -1 || rightChain.indexOf(y) > -1) {
-                return false;
-            }
-
-            // Quick checking of one object being a subset of another.
-            // todo: cache the structure of arguments[0] for performance
-            for (p in y) {
-                if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {
-                    return false;
-                } else if (typeof y[p] !== typeof x[p]) {
-                    return false;
-                }
-            }
-
-            for (p in x) {
-                if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {
-                    return false;
-                } else if (typeof y[p] !== typeof x[p]) {
-                    return false;
-                }
-
-                switch (typeof (x[p])) {
-                    case 'object':
-                    case 'function':
-
-                        leftChain.push(x);
-                        rightChain.push(y);
-
-                        if (!compare2Objects(x[p], y[p])) {
-                            return false;
-                        }
-
-                        leftChain.pop();
-                        rightChain.pop();
-                        break;
-
-                    default:
-                        if (x[p] !== y[p]) {
-                            return false;
-                        }
-                        break;
-                }
-            }
-
-            return true;
-        }
-
-        if (arguments.length < 1) {
-            return true; //Die silently? Don't know how to handle such case, please help...
-            // throw "Need two or more arguments to compare";
-        }
-
-        for (i = 1, l = arguments.length; i < l; i++) {
-
-            leftChain = []; //Todo: this can be cached
-            rightChain = [];
-
-            if (!compare2Objects(arguments[0], arguments[i])) {
-                return false;
-            }
-        }
-
-        return true;
-    },
-    // 判断变量是否是数组
-    isArray: function (o){
-        return Object.prototype.toString.call(o) == '[object Array]';
-    },
-    // 数组对象根据某一个值进行从小到大冒泡排序
-    // arr 数组
-    // value 字符串
-    bSort: function (arr, value) {
-        var len = arr.length;
-        for (var i = 0; i < len - 1; i++) {
-            for (var j = 0; j < len - 1 - i; j++) {
-                // 相邻元素两两对比,元素交换,大的元素交换到后面
-                if (arr[j][value] > arr[j + 1][value]) {
-                    var temp = arr[j];
-                    arr[j] = arr[j + 1];
-                    arr[j + 1] = temp;
-                }
-            }
-        }
-        return arr;
-    },
-    // 数组去重
-    unique: function (arr) {
-        if (!this.isArray(arr)) {
-            console.log('type error!')
-            return
-        }
-        var array = [];
-        for (var i = 0; i < arr.length; i++) {
-            if (array .indexOf(arr[i]) === -1) {
-                array .push(arr[i])
-            }
-        }
-        return array
-    },
-    // 数组乱序
-    shuffle: function (arr) {
-        var targetArr = JSON.parse(JSON.stringify(arr || []))
-        var hitArr = []
-        var len = targetArr.length
-        for (var i = 0; i < len; i++) {
-            // 获取随机下标
-            var index = Math.floor(Math.random() * targetArr.length)
-            hitArr.push(targetArr[index])
-            targetArr.splice(index, 1)
-        }
-        return hitArr.concat(targetArr)
-    },
-    // 解决ios返回不刷新页面的问题
-    iosBackRefresh: function () {
-        var isPageHide = false;
-        window.addEventListener('pageshow', function () {
-            if (isPageHide) {
-                location.reload();
-            }
-        });
-        window.addEventListener('pagehide', function () {
-            isPageHide = true;
-        });
-    },
-    // ios返回调用函数
-    iosBackInvoke: function (callback) {
-        var isPageHide = false;
-        window.addEventListener('pageshow', function () {
-            if (isPageHide) {
-                callback && callback();
-            }
-        });
-        window.addEventListener('pagehide', function () {
-            isPageHide = true;
-        });
-    },
-    /**
-     * 格式化金钱的函数
-     * @param {number} s 金额必传
-     * @param {int:0-100} n 保留小数的位数(int:0-100)
-     */
-    formatMoney: function (s, n) {
-        if (n === undefined) {
-            n = -1
-        } else {
-            n = n > 0 && n <= 20 ? n : 2;
-        }
-        var intS = parseInt(s)
-        var point = '.'
-        var left;
-        var right;
-        s = parseFloat((s + '').replace(/[^\d\.-]/g, ''))
-        // 没传n,默认(如果为整数,则不保留小数。如果为浮点数,则保留两位小数)
-        if (n === -1) {
-            if (s === intS) {
-                n = 0
-                right = ''
-                point = ''
-            } else {
-                n = 2
-                s = s.toFixed(n);
-                right = s.split('.')[1];
-            }
-            s = s + ''
-            left = s.split('.')[0].split('').reverse();
-        } else {
-            s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';
-            left = s.split('.')[0].split('').reverse();
-            right = s.split('.')[1];
-        }
-
-        t = '';
-        for (i = 0; i < left.length; i++) {
-            t += left[i] + ((i + 1) % 3 == 0 && (i + 1) != left.length ? ',' : '');
-        }
-
-        var money = t.split('').reverse().join('') + point + right;
-        return money;
-    },
-    // 金额大写,链接:https://juejin.im/post/5a2a7a5051882535cd4abfce
-    // upDigit(1682) result:"人民币壹仟陆佰捌拾贰元整"
-    // upDigit(-1693) result:"欠壹仟陆佰玖拾叁元整"
-    upPrice: function (n) {
-        var fraction = ['角', '分', '厘']
-        var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
-        var unit = [
-            ['元', '万', '亿'],
-            ['', '拾', '佰', '仟']
-        ]
-        // var head = n < 0 ? '欠人民币' : '人民币'
-        var head = ''
-        n = Math.abs(n)
-        var s = ''
-        for (var i = 0; i < fraction.length; i++) {
-            s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '')
-        }
-        s = s || '整'
-        n = Math.floor(n)
-        for (var i = 0; i < unit[0].length && n > 0; i++) {
-            var p = ''
-            for (var j = 0; j < unit[1].length && n > 0; j++) {
-                p = digit[n % 10] + unit[1][j] + p
-                n = Math.floor(n / 10)
-            }
-            s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s
-            // s = p + unit[0][i] + s;
-        }
-        return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
-    },
-    // 手机号中间4位加*
-    addConfusionForTel: function (tel) {
-        var reg = /^(\d{3})\d{4}(\d{4})$/
-        return tel.replace(reg, '$1****$2')
-    },
-    // 手机号加空格
-    addSpaceForTel: function (tel) {
-        var regMap = {
-            isConfuse: /^(\d{3})\*{4}(\d{4})$/,
-            addSpace: /^(\d{3})(\d{4})(\d{4})$/
-        }
-        var confusion = regMap.isConfuse.test(tel)
-        if (confusion) {
-            return tel.replace(regMap.isConfuse, '$1 **** $2')
-        } else {
-            return tel.replace(regMap.addSpace, '$1 $2 $3')
-        }
-    },
-    /**
-     * 时间戳转换 多少秒、多少分、多少小时前、多少天前  超出10天显示年月日
-     * @param {Date} originTime 要转换的时间对象(或者时间戳)
-     */
-    dateFromNow: function (originTime) {
-        if (!originTime) return
-        // 原始时间 - 传入的时间戳
-        var originTimeStamp = +new Date(originTime)
-        // 当前时间戳
-        var nowTimeStamp = +new Date()
-        // 时间戳相差多少
-        var diffTimeStamp = nowTimeStamp - originTimeStamp
-
-        var postfix = diffTimeStamp > 0 ? '前' : '后'
-        // 求绝对值 ms(毫秒)
-        var diffTimeStampAbsMs = Math.abs(diffTimeStamp)
-        var diffTimeStampAbsS = Math.round(diffTimeStampAbsMs / 1000)
-
-        // 10天的秒数
-        var days11 = 11 * 24 * 60 * 60
-        // var dataMap = {
-        //     zh: ['年', '个月', '星期', '天', '小时', '分钟', '秒'],
-        //     number: [365*24*60*60, 30*24*60*60, 7*24*60*60, 24*60*60, 60*60, 60, 1]
-        // }
-        var dataMap = {
-            zh: ['天', '小时', '分钟', '秒'],
-            number: [24 * 60 * 60, 60 * 60, 60, 1]
-        }
-
-        var timeString = ''
-        if (diffTimeStampAbsS > days11) {
-            // 大于10天,则使用正常日期显示
-            var originDate = new Date(originTimeStamp)
-            var nowDate = new Date()
-            // 是否同年
-            var sameYear = originDate.getFullYear() === nowDate.getFullYear()
-            // 如果是当年,则不显示年
-            var patternString = sameYear ? 'MM-dd' : 'yyyy-MM-dd'
-            timeString = originDate.pattern(patternString)
-        } else {
-            for (var i = 0; i < 7; i++) {
-                var inm = Math.floor(diffTimeStampAbsS / dataMap.number[i])
-                if (inm != 0) {
-                    timeString = inm + dataMap.zh[i] + postfix
-                    break
-                }
-            }
-        }
-        return timeString
-    },
-    /**
-     * 输入框获取焦点,隐藏底部固定按钮方法
-     * @param {Array} inputs 传入输入框的DOM对象
-     * @param {Object} footer 按键弹起要隐藏的footer的 DOM对象
-     */
-    inputFocusHideFooter: function (inputs, footer) {
-        var isShowBtn = function (f) {
-            if (f) {
-                footer.style.display = ''
-            } else {
-                footer.style.display = 'none'
-            }
-        }
-
-        // ios监听输入框的软键盘弹起和收起事件
-        if (this.isIos) {
-            inputs.forEach(function (item) {
-                item.addEventListener('focus', function () {
-                    console.log('IOS 键盘弹出')
-                    // IOS 键盘弹起后操作
-                    isShowBtn(false)
-                }, false)
-
-                // IOS 键盘收起:IOS 点击输入框以外区域或点击收起按钮,输入框都会失去焦点,键盘会收起,
-                item.addEventListener('blur', function () {
-                    console.log('IOS 键盘收起')
-                    // IOS 键盘收起后操作
-                    isShowBtn(true)
-                })
-            })
-        }
-
-        // Android 键盘收起:Android 键盘弹起或收起页面高度会发生变化,以此为依据获知键盘收起
-        if (this.isAndroid) {
-            var clientHeight = document.documentElement.clientHeight || document.body.clientHeight
-            window.addEventListener('resize', function () {
-                var nowClientHeight = document.documentElement.clientHeight || document.body.clientHeight
-                if (clientHeight > nowClientHeight) {
-                    // 键盘弹出的事件处理
-                    console.log('Android 键盘弹出')
-                    isShowBtn(false)
-                } else {
-                    console.log('Android 键盘收起')
-                    // 键盘收起的事件处理
-                    isShowBtn(true)
-                }
-            }, false)
-        }
-    },
-    /**
-     * 通用关键字高亮替换
-     * @param {String} value 要高亮的字符串
-     * @param {String|Array} oldChar 要被替换的字符串(或数组)
-     * @param {String|Array} newChar 要替换成的字符串(或数组)
-     *
-     * 比如:要将 - `剑鱼标讯工具函数` 字符串中的 `工具` 高亮
-     * 则此时 value -> `剑鱼标讯工具函数`
-     *        oldChar -> `工具`
-     *        newChar -> `<span class="highlight-text">工具</span>`
-     *
-     * 批量高亮-----
-     * 比如:要将 - `剑鱼标讯工具函数` 字符串中的 `工具` `剑鱼` 高亮
-     * 则此时 value -> `剑鱼标讯工具函数批量高亮`
-     *        oldChar -> ['工具', '剑鱼']
-     *        newChar -> ['<span class="highlight-text">', '</span>']
-     *
-     *   注意:此时newChar为一个长度为2的数组,数组中为高亮标签的起始标签和结束标签
-     *
-     */
-    replaceKeyword: function (value, oldChar, newChar) {
-        var _this = this
-        if (!oldChar || !newChar) return value
-        // oldChar的字符串数组,用来循环替换
-        var oldCharArr = []
-
-        if (this.isArray(oldChar)) {
-            oldCharArr = oldChar.concat()
-        } else {
-            oldCharArr.push(oldChar)
-        }
-
-        // 数组去重
-        oldCharArr = this.unique(oldCharArr)
-
-        try {
-            oldCharArr.forEach(function (item) {
-                // 去空格之后为空字符串,则直接跳过当前替换
-                if (item.replace(/\s+/g, '')) {
-                    var oc = item
-                    oc = oc.replace(/\$/g, '\\$')
-                        .replace(/\(/g, '\\(')
-                        .replace(/\)/g, '\\)')
-                        .replace(/\*/g, '\\*')
-                        .replace(/\+/g, '\\+')
-                        .replace(/\./g, '\\.')
-                        .replace(/\[/g, '\\[')
-                        .replace(/\]/g, '\\]')
-                        .replace(/\?/g, '\\?')
-                        .replace(/\\/g, '\\')
-                        .replace(/\//g, '\\/')
-                        .replace(/\^/g, '\\^')
-                        .replace(/\{/g, '\\{')
-                        .replace(/\}/g, '\\}')
-                        .replace(/\|/g, '\\|')
-
-                    if (_this.isArray(newChar)) {
-                        // 批量高亮
-                        var tempV = value
-                        value = value.replace(new RegExp('(' + oc + ')', 'gmi'), newChar[0] + oc + newChar[1])
-                        if (value === tempV && oc.indexOf('+') !== -1) {
-                          var splitReg = oc.split('\\+')
-                          splitReg.map(function (v) {
-                            value = value.replace(new RegExp('('+v+')', 'gmi'), newChar[0] + v + newChar[1])
-                          })
-                        }
-                    } else {
-                        // 普通单个高亮
-                        value = value.replace(new RegExp('(' + oc + ')', 'gmi'), newChar)
-                    }
-                }
-            })
-        } catch (e) {
-            console.log(e)
-            return value
-        }
-        return value
-    },
-    /**
-     * 批量删除sessionStorage中的数据
-     * @param {RegExp} reg 传入一个要匹配的正则表达式
-     */
-    clearBatchSessionStorage: function (reg) {
-        if (sessionStorage) {
-            var sessKeys = Object.keys(sessionStorage)
-            sessKeys.forEach(function (item) {
-                if (reg.test(item)) {
-                    sessionStorage.removeItem(item)
-                }
-            })
-        }
-    },
-    /**
-     * 获取图片原始宽高
-     * @param {Image/Object} img
-     * @param {Function} callback
-     */
-    getImgNaturalDimensions: function (img, callback) {
-        var naturalSize = {}
-        if (img.naturalWidth && img.naturalHeight) { // 现代浏览器
-            naturalSize.with = img.naturalWidth
-            naturalSize.height = img.naturalHeight
-        } else { // IE6/7/8
-            var image = new Image()
-            image.src = img.src
-            image.onload = function() {
-                naturalSize.with = image.width
-                naturalSize.height = image.height
-                callback && callback(naturalSize)
-            }
-        }
-        return naturalSize
-    },
-    moneyUnit: function (num, type, lv) {
-        if (num === '' || num == null || num == undefined || isNaN(num)) return ''
-        var levelArr = ['元', '万元', '亿元', '万亿元']
-        if (type === void 0) {
-            type = 'string';
-        }
-
-        if (lv === void 0) {
-            lv = 0;
-        }
-
-        if (num === 0) {
-            if (type === 'string') {
-                return '0';
-            }
-
-            if (type === 'lv') {
-                return levelArr[lv];
-            }
-
-            if (type === 'number') {
-                return 0;
-            }
-
-            if (type === 'index') {
-                return lv;
-            }
-        }
-
-        var result = num / Math.pow(10000, lv);
-
-        if (result > 10000 && lv < 2) {
-            return this.moneyUnit(num, type, lv + 1)
-        } else {
-            if (type === 'string') {
-                return String(Math.floor(result * 100) / 100).replace('.00', '') + levelArr[lv];
-            }
-
-            if (type === 'lv') {
-                return levelArr[lv];
-            }
-
-            if (type === 'index') {
-                return lv;
-            }
-
-            if (type === 'number') {
-                return String(Math.floor(result * 100) / 100).replace('.00', '');
-            }
-        }
-    },
-    /**
-     * 防抖
-     * @param {Function} func 函数
-     * @param {Number} delay 延时间隔 默认 200ms
-     * @param {Boolean} immediate 是否首次执行
-     */
-    debounce: function (func, delay, immediate){
-        var timer = null;
-        delay = delay || 200
-        return function() {
-            var context = this;
-            var args = arguments;
-            if(timer) clearTimeout(timer);
-            if(immediate){
-                var doNow = !timer;
-                timer = setTimeout(function(){
-                    timer = null;
-                },delay);
-                if(doNow){
-                    func.apply(context,args);
-                }
-            }else{
-                timer = setTimeout(function(){
-                    func.apply(context,args);
-                },delay);
-            }
-        }
-    }
-}

+ 45 - 19
src/web/staticres/common-module/collection/js/vip-dialog.js

@@ -1,15 +1,15 @@
 var vipDialog = `
 <div class="vip_openDialog">
-  <div class="vip_head">
-      <span>{{getTextMap.titleText}}</span>
-      <span class="vip_extend"><span>{{getTextMap.headText.top}}</span><br/>{{getTextMap.headText.bot}}</span>
-  </div>
   <div class="vip_content">
     <div class="vip_content_div">
       <img class="vip_img" :src="imgurl" />
       <span class="vip_example">示例</span>
     </div>
   </div>
+  <div class="vip_head">
+      <span style="display:none;">{{getTextMap.titleText}}</span>
+      <span class="vip_extend"><span>{{getTextMap.headText.top}}</span><br/>{{getTextMap.headText.bot}}</span>
+  </div>
   <div class="openBtn">
       <button class="goBtn" @click="goOpen(getTextMap.source)">{{getTextMap.btnText}}</button>
   </div>
@@ -53,6 +53,12 @@ var vipComponent = {
       default: function () {
         return {}
       }
+    },
+    'newvip': {
+      type: Boolean,
+      default: function() {
+        return false
+      }
     }
   },
   data: function() {
@@ -67,6 +73,7 @@ var vipComponent = {
   },
   computed: {
     getTextMap () {
+      // console.log(this.power)
       var textMap = {
         titleText: '开通超级订阅',
         btnText: '去开通',
@@ -76,15 +83,34 @@ var vipComponent = {
         },
         source: ''
       }
-      if (this.entvisit.total <= this.entvisit.usage || this.vipststus > 0) {
-        if (this.entvisit.provin == 0) {
-          textMap.btnText = '去开通'
-        } else if (this.entvisit.provin != -1) {
-          textMap.titleText = '超级订阅'
-          textMap.btnText = '去升级'
-        } else if(this.entvisit.provin == -1) {
-          textMap.titleText = '超级订阅'
+      console.log(this.power, this.power.isMember, this.power._4, this.power._13, this.newvip,this.entvisit, this.power.vipStatus)
+      if (this.power.isMember > 0 ) {
+        if (this.entvisit.total <= this.entvisit.usage && this.newvip) {
           textMap.btnText = '联系客服'
+        } else {
+          if (this.type === 'item_1') {
+            textMap.btnText = !this.newvip && this.power.vipStatus > 0  ? '去升级' : '去开通'
+          } else {
+            textMap.btnText = '联系客服'
+          }
+        }
+      } else {
+        if (this.entvisit.total <= this.entvisit.usage && this.newvip) {
+          if (this.entvisit.provin == 0) {
+            textMap.btnText = '去开通'
+          } else if (this.entvisit.provin != -1) {
+            textMap.titleText = '超级订阅'
+            textMap.btnText = this.type === 'item_1' ? '去升级' : '免费体验'
+          } else if(this.entvisit.provin == -1) {
+            textMap.titleText = '超级订阅'
+            textMap.btnText = this.type === 'item_1' ? '联系客服' : '免费体验'
+          }
+        } else {
+          if (this.type === 'item_1') {
+            textMap.btnText = !this.newvip && this.power.vipStatus > 0  ? '去升级' : '去开通'
+          } else {
+            textMap.btnText = '免费体验'
+          }
         }
       }
       switch (this.type) {
@@ -97,7 +123,7 @@ var vipComponent = {
           // 年度项目统计
         case 'item_2': {
           textMap.titleText = '开通大会员'
-          textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
+          // textMap.btnText =  this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
           textMap.headText.top = '年度项目规模、增长趋势一目了然,'
           textMap.headText.bot = '快速分析市场!'
           textMap.source = 'ent_portrait_yearData'
@@ -106,7 +132,7 @@ var vipComponent = {
           // 月度中标金额统计
         case 'item_3': {
           textMap.titleText = '开通大会员'
-          textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
+          // textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
           textMap.headText.top = '纵向对比采购单位近三年月度采购规模,'
           textMap.headText.bot = '不错过任何商机!'
           textMap.source = 'ent_portrait_monthData'
@@ -115,7 +141,7 @@ var vipComponent = {
           // 市场区域分布
         case 'item_4': {
           textMap.titleText = '开通大会员'
-          textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
+          // textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
           textMap.headText.top = '通过企业市场规模、市场格局,'
           textMap.headText.bot = '分析企业的市场发展现状!'
           textMap.source = 'ent_portrait_areaData'
@@ -124,7 +150,7 @@ var vipComponent = {
           // 各类客户平均折扣率
         case 'item_5': {
           textMap.titleText = '开通大会员'
-          textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
+          // textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
           textMap.headText.top = '通过近3年各类客户平均折扣率范围,'
           textMap.headText.bot = '透视企业的行业盈利能力!'
           textMap.source = 'ent_portrait_discountRate'
@@ -133,7 +159,7 @@ var vipComponent = {
           // 客户类型分布
         case 'item_6': {
           textMap.titleText = '开通大会员'
-          textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
+          // textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
           textMap.headText.top = '通过企业主要客户类型分析,'
           textMap.headText.bot = '洞悉企业业务模式、经营状况!'
           textMap.source = 'ent_portrait_top10'
@@ -142,7 +168,7 @@ var vipComponent = {
           // 重点客户
         case 'item_7': {
           textMap.titleText = '开通大会员'
-          textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
+          // textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
           textMap.headText.top = '通过挖掘企业重点客户,直观了解采购单位'
           textMap.headText.bot = '与供应商关系远近,辅助投标决策!'
           textMap.source = 'ent_portrait_topShow'
@@ -160,7 +186,7 @@ var vipComponent = {
           // 历史项目联系方式
         case 'item_9': {
           textMap.titleText = '开通大会员'
-          textMap.btnText = this.power.isMember > 0 && !this.power._4 ? '联系客服' : '免费体验'
+          textMap.btnText = this.power.isMember > 0 && this.power.arr.indexOf(4) == -1 ? '联系客服' : '免费体验'
           textMap.headText.top = '获取企业历史项目联系人信息,'
           textMap.headText.bot = '直接与甲方或渠道商项目负责人对接!'
           textMap.source = 'ent_portrait_contacts'

Some files were not shown because too many files changed in this diff