瀏覽代碼

分支合并

lianbingjie 2 年之前
父節點
當前提交
fcf814ba67
共有 100 個文件被更改,包括 3446 次插入572 次删除
  1. 0 0
      src/config.json
  2. 6 0
      src/jfw/filter/pcfilter.go
  3. 20 2
      src/jfw/front/classificationTag.go
  4. 10 0
      src/jfw/front/entsearch.go
  5. 5 7
      src/jfw/front/frontRouter.go
  6. 5 4
      src/jfw/front/pcIndex.go
  7. 128 84
      src/jfw/front/shorturl.go
  8. 3 3
      src/jfw/front/supsearch.go
  9. 5 12
      src/jfw/front/swordfish.go
  10. 19 4
      src/jfw/front/tags.go
  11. 2 0
      src/jfw/modules/app/src/app/filter/loginfilter.go
  12. 74 93
      src/jfw/modules/app/src/app/front/shorturl.go
  13. 1 1
      src/jfw/modules/app/src/app/front/swordfish.go
  14. 21 1
      src/jfw/modules/app/src/config.json
  15. 2 2
      src/jfw/modules/app/src/phoneFilter.json
  16. 4 0
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/ent_portrait.css
  17. 43 12
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js
  18. 22 5
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js
  19. 3 3
      src/jfw/modules/app/src/web/staticres/jyapp/css/wxinfocontent.css
  20. 二進制
      src/jfw/modules/app/src/web/staticres/jyapp/images/focontent/ad_bigmember.png
  21. 二進制
      src/jfw/modules/app/src/web/staticres/jyapp/images/focontent/ad_bigmember2.png
  22. 7 1
      src/jfw/modules/app/src/web/templates/big-member/page_client_follow_detail.html
  23. 6 0
      src/jfw/modules/app/src/web/templates/big-member/page_client_follow_list.html
  24. 33 14
      src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait.html
  25. 24 8
      src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait_change.html
  26. 33 4
      src/jfw/modules/app/src/web/templates/big-member/page_pro_follow_detail.html
  27. 31 2
      src/jfw/modules/app/src/web/templates/big-member/page_pro_follow_list.html
  28. 48 14
      src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html
  29. 5 0
      src/jfw/modules/app/src/web/templates/frontRouter/collection/sess/index.html
  30. 2 1
      src/jfw/modules/app/src/web/templates/me/login.html
  31. 2 1
      src/jfw/modules/app/src/web/templates/me/register.html
  32. 153 68
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  33. 29 3
      src/jfw/modules/bigmember/src/entity/portrait.go
  34. 46 40
      src/jfw/modules/bigmember/src/filter/sessionfilter.go
  35. 3 3
      src/jfw/modules/bigmember/src/go.mod
  36. 6 6
      src/jfw/modules/bigmember/src/go.sum
  37. 29 0
      src/jfw/modules/bigmember/src/service/portrait/memberPortraitAction.go
  38. 13 0
      src/jfw/modules/bigmember/src/service/portrait/subvipPortraitAction.go
  39. 15 5
      src/jfw/modules/bigmember/src/service/use/use.go
  40. 13 22
      src/jfw/modules/publicapply/src/config.json
  41. 4 3
      src/jfw/modules/publicapply/src/config/config.go
  42. 63 21
      src/jfw/modules/publicapply/src/enterpriseSearch/entity/entQuery.go
  43. 1 1
      src/jfw/modules/publicapply/src/enterpriseSearch/service/search.go
  44. 3 2
      src/jfw/modules/publicapply/src/filter/sessionfilter.go
  45. 76 13
      src/seo.json
  46. 2 1
      src/web/staticres/big-member/js/analysis_filter.js
  47. 106 0
      src/web/staticres/common-module/bidstatus-update/css/bid-status-update.css
  48. 二進制
      src/web/staticres/common-module/bidstatus-update/image/right.png
  49. 617 0
      src/web/staticres/common-module/bidstatus-update/js/bid-status-update.js
  50. 1 0
      src/web/staticres/common-module/big-member/js/client_portrayal.js
  51. 27 3
      src/web/staticres/common-module/big-member/js/page_client_follow_detail.js
  52. 23 2
      src/web/staticres/common-module/big-member/js/page_client_follow_list.js
  53. 二進制
      src/web/staticres/common-module/collection/image/bg/qy-zbtj-bg.png
  54. 二進制
      src/web/staticres/common-module/collection/image/bg/qy-zbtj.png
  55. 二進制
      src/web/staticres/common-module/collection/image/buyer/09.png
  56. 二進制
      src/web/staticres/common-module/collection/image/buyer/10.png
  57. 二進制
      src/web/staticres/common-module/collection/image/buyer/11.png
  58. 二進制
      src/web/staticres/common-module/collection/image/buyer/cg-tjxx-bg.png
  59. 二進制
      src/web/staticres/common-module/collection/image/buyer/cg-tjxx.png
  60. 二進制
      src/web/staticres/common-module/collection/image/buyer/cg-zbdt-bg.jpg
  61. 二進制
      src/web/staticres/common-module/collection/image/buyer/cg-zbdt.png
  62. 20 6
      src/web/staticres/common-module/collection/js/buyer-example.js
  63. 11 9
      src/web/staticres/common-module/collection/js/ent_portrait.js
  64. 23 2
      src/web/staticres/common-module/collection/js/index-wx.js
  65. 24 3
      src/web/staticres/common-module/collection/js/index.js
  66. 24 0
      src/web/staticres/common-module/collection/js/vip-dialog.js
  67. 3 0
      src/web/staticres/common-module/mainSearch/css/j-icons.css
  68. 1 1
      src/web/staticres/common-module/mainSearch/css/third-party-verify-mobile.css
  69. 二進制
      src/web/staticres/common-module/personDialog/img/checked.png
  70. 二進制
      src/web/staticres/common-module/personDialog/img/half.png
  71. 301 0
      src/web/staticres/common-module/personDialog/personDialog.css
  72. 356 0
      src/web/staticres/common-module/personDialog/personDialog.scss
  73. 46 1
      src/web/staticres/common-module/public/js/setTdk.js
  74. 7 3
      src/web/staticres/css/dev2/biddingSearch.css
  75. 21 2
      src/web/staticres/css/pc.css
  76. 14 1
      src/web/staticres/frontRouter/pc/collection/js/index-pc.js
  77. 二進制
      src/web/staticres/images/biddingSearch/distribute.png
  78. 二進制
      src/web/staticres/images/focontent/ad_bigmember.png
  79. 二進制
      src/web/staticres/images/focontent/ad_bigmember2.png
  80. 二進制
      src/web/staticres/images/pc/caigouyixiang-guide.png
  81. 二進制
      src/web/staticres/images/pc/nijian-guide.png
  82. 12 12
      src/web/staticres/js/biddingSearch.js
  83. 72 32
      src/web/staticres/js/ent-search-index-pc.js
  84. 5 0
      src/web/staticres/js/login.js
  85. 59 5
      src/web/staticres/js/superSearch.js
  86. 11 1
      src/web/staticres/pccss/ent-search-index-pc.css
  87. 15 11
      src/web/staticres/public-pc/js/article-content.js
  88. 1 1
      src/web/staticres/public-pc/js/header-nav.js
  89. 16 0
      src/web/staticres/tags/css/no-login-detail.css
  90. 2 1
      src/web/staticres/tags/js/no-login-detail.js
  91. 2 1
      src/web/templates/big-member/wx/commonjs.html
  92. 6 0
      src/web/templates/big-member/wx/page_client_follow_detail.html
  93. 5 0
      src/web/templates/big-member/wx/page_client_follow_list.html
  94. 33 5
      src/web/templates/big-member/wx/page_pro_follow_detail.html
  95. 33 3
      src/web/templates/big-member/wx/page_pro_follow_list.html
  96. 103 0
      src/web/templates/common/BidrenewalDialog.html
  97. 413 0
      src/web/templates/common/personDialog.html
  98. 2 1
      src/web/templates/frontRouter/pc/collection/sess/index.html
  99. 6 0
      src/web/templates/frontRouter/wx/collection/sess/ent_portrait.html
  100. 5 0
      src/web/templates/frontRouter/wx/collection/sess/index.html

File diff suppressed because it is too large
+ 0 - 0
src/config.json


+ 6 - 0
src/jfw/filter/pcfilter.go

@@ -37,6 +37,12 @@ func (this *pcFilter) Do() bool {
 		//wx
 		return true
 	}
+	//企业搜索
+	if strings.Contains(this.R.RequestURI, "/jylab/entSearch/index.html") ||
+		strings.Contains(this.R.RequestURI, "/swordfish/page_big_pc/ent_portrait/") ||
+		strings.Contains(this.R.RequestURI, "/swordfish/page_big_pc/svip/ent_ser_portrait/") {
+		return true
+	}
 	//pc助手订阅消息、招标搜索两个菜单链接过滤掉
 	if strings.HasPrefix(this.R.RequestURI, "/jypc/toAct/") || strings.Contains(this.R.RequestURI, "/exhibition/") {
 		return true

+ 20 - 2
src/jfw/front/classificationTag.go

@@ -35,7 +35,6 @@ type KeyType struct {
 func RegionAndInformationAndTender() map[string]interface{} {
 	if bytes, err := redis.GetBytes(RedisNameNew, "regionAndInformationAndTender"); err == nil && bytes != nil {
 		rData := map[string]interface{}{}
-		log.Println()
 		if err := json.Unmarshal(*bytes, &rData); err != nil {
 			log.Printf("[MANAGER-ERR]RegionAndInformationAndTender  GetData Error %v \n", err)
 			return nil
@@ -68,6 +67,25 @@ func HotSubjectMatter() []map[string]interface{} {
 	return subjectMatter
 }
 
+// 随机展示200中标企业
+func GetWinnerInfo() (data []BuyerList) {
+	randGen := rand.New(rand.NewSource(time.Now().UnixNano()))
+	from := randGen.Intn(100)
+
+	//关联中标企业
+	r := elastic.Get("winner", "winner", fmt.Sprintf(`{"query": {"bool": {"must": []}},"_source": ["_id","name"],"from": %d,"size": 200}`, from))
+	if r != nil {
+		for _, v := range *r {
+			var vs BuyerList
+			id := encrypt.EncodeArticleId2ByCheck(qu.InterfaceToStr(v["_id"]))
+			vs.Name = qu.InterfaceToStr(v["name"])
+			vs.Url = fmt.Sprintf("/swordfish/page_big_pc/ent_portrait/%s", id)
+			data = append(data, vs)
+		}
+	}
+	return
+}
+
 // ContentRecommendation 实用内容推荐
 func ContentRecommendation() []KeyType {
 	if bytes, err := redis.GetBytes(RedisNameNew, "contentRecommendation"); err == nil && bytes != nil {
@@ -286,7 +304,7 @@ func HotBuyerList(entIsNew bool) []*BuyerList {
 	buyerQuery := fmt.Sprintf(`{"query": {"bool": {"must": [{"exists": {"field": "name"}}]}},"from": %d,"size": %d}`, start, 200)
 	log.Println("buyerQuery:", buyerQuery)
 	data := elastic.Get("buyer", "buyer", buyerQuery)
-	if len(*data) > 0 {
+	if data != nil && len(*data) > 0 {
 		var buyerList []*BuyerList
 		for _, b := range *data {
 			name := qu.ObjToString(b["name"])

+ 10 - 0
src/jfw/front/entsearch.go

@@ -37,6 +37,16 @@ func (e *Entsearch) EntSearchIndex() error {
 	if len(shareid) == 0 {
 		shareid = "10"
 	}
+	e.T["isLogin"] = 0
+	if userId, _ := e.GetSession("userId").(string); userId != "" {
+		userInfo := jy.GetVipState(e.Session(), *config.Middleground, userId)
+		e.T["isVip"] = userInfo.VipState > 0
+		e.T["isMember"] = userInfo.BigMember > 0
+		e.T["isEntniche"] = userInfo.EntMember > 0
+		e.T["isEntnicheNew"] = userInfo.IsNewEnt
+		e.T["isEntService"] = userInfo.EntService
+		e.T["isLogin"] = 1
+	}
 	e.T["shareid"] = se.EncodeString(shareid)
 	e.T["searchvalue"] = e.GetString("searchvalue")
 	e.T["logid"] = config.Seoconfig["jyzbqyss"].(string)

+ 5 - 7
src/jfw/front/frontRouter.go

@@ -1,15 +1,13 @@
 package front
 
 import (
+	"app.yhyue.com/moapp/jypkg/public"
 	"fmt"
 	"jy/src/jfw/config"
 	"jy/src/jfw/jyutil"
 	"jy/src/jfw/wx"
 	"net/url"
 	"regexp"
-	"strings"
-
-	"app.yhyue.com/moapp/jypkg/public"
 
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 
@@ -213,11 +211,11 @@ var bigVipFreePageReg = regexp.MustCompile(`set_.*|free|unit_portrayal|analysis_
 // 工作桌面需求 不需要判断用户权限
 func (this *CommonRouter) doPcBigPage(pageSign, types string) error {
 	//page := pageSign
-	userid, _ := this.GetSession("userId").(string)
+	//userid, _ := this.GetSession("userId").(string)
 	//没有登录跳转登录页面(采购单位画像除外)
-	if !strings.Contains(pageSign, "unit_portrayal") && userid == "" {
-		return this.Redirect("/notin/page")
-	}
+	//if !strings.Contains(pageSign, "unit_portrayal") && userid == "" {
+	//	return this.Redirect("/notin/page")
+	//}
 	return this.Render(fmt.Sprintf("/frontRouter/pc/page_big_pc/sess/index.html"))
 }
 

+ 5 - 4
src/jfw/front/pcIndex.go

@@ -126,6 +126,7 @@ func (m *PcIndex) NewSordfish(flag string) error {
 			m.T["hotBuyers"] = HotBuyerList(entIsNew)
 			m.T["hasLogin"] = util.ObjToString(m.GetSession("userId")) != ""
 			m.T["includedInfo"] = GetIncludedInfo()
+			m.T["hotWinner"] = GetWinnerInfo()
 			m.T["newbids"] = NewIndexbids(m.Session(), m.Request)
 			m.T["hotkey"] = hotKeyArr
 			return m.Render("/pc/index.html", &m.T)
@@ -382,8 +383,7 @@ func (f *PcIndex) SearchResult(at, name string) error {
 			}
 		}
 	}
-	if stype == "" && userId == "" {
-	}
+
 	f.T["seoarea"] = area
 	f.T["seostype"] = stype
 	f.T["seotitle"] = seotitle
@@ -417,10 +417,11 @@ func (f *PcIndex) SearchResult(at, name string) error {
 			query1 += `{"term":{"city":"` + city + `"}}`
 		}
 		query1 += `],"should": [],"minimum_should_match": 0}}}`
+		//p353包含采购意向与拟建
 		//获取到昨天数据
 		if stype == "" && userId == "" {
 			// stype = "招标预告,招标公告,招标结果,招标信用信息"
-			stype = "招标,询价,竞谈,变更,单一,竞价,邀标,成交,中标,废标,流标,结果变更,合同,验收,违规,预告,需求公示,预审,论证意见,预审结果"
+			stype = "拟建,招标,询价,竞谈,变更,单一,竞价,邀标,成交,中标,废标,流标,结果变更,合同,验收,违规,预告,需求公示,预审,论证意见,预审结果"
 		}
 
 		var datas *[]map[string]interface{}
@@ -504,7 +505,7 @@ func getstypeMap() []map[string][]map[string]interface{} {
 		}
 	}
 	m2 := []map[string][]map[string]interface{}{} //结构整理 返给前端
-	stype_1reg := []string{"招标公告", "招标结果", "招标信用信息", "招标预告"}
+	stype_1reg := []string{"招标公告", "招标结果", "招标信用信息", "招标预告", "拟建项目"}
 	hotlabstypSort := config.Seoconfig["hotlabstypSort"].([]interface{})
 	notice := util.ObjArrToStringArr(hotlabstypSort[0].([]interface{}))
 	result := util.ObjArrToStringArr(hotlabstypSort[1].([]interface{}))

+ 128 - 84
src/jfw/front/shorturl.go

@@ -388,7 +388,7 @@ func (s *Short) LoginCommon(userId, stype, id string) error {
 			s.T["canRead"] = canRead
 		}
 		if len(obj) > 0 {
-			if canRead {
+			if canRead || util.ObjToString(obj["subtype"]) == "拟建" {
 				FieldProcessing(obj, ssOpenid, industry, id, from_userid, userId, stype, true)
 				//免费用户正文手机号替换
 				if obj["site"] == "剑鱼信息发布平台" && !isMember {
@@ -431,6 +431,11 @@ func (s *Short) LoginCommon(userId, stype, id string) error {
 						obj["entIds"] = winnerIdArr
 					}
 				}
+				if !canRead { //登录拟建&采购不展示遮罩 只打码
+					//canRead = true
+					//打码显示引导
+					otherFilter(obj, userId != "")
+				}
 				s.T["advertcode"] = s.GetString("advertcode")
 			} else {
 				obj = map[string]interface{}{
@@ -515,7 +520,7 @@ func (s *Short) LoginCommon(userId, stype, id string) error {
 				}
 				s.T["canRead"] = canRead
 			}
-			if node {
+			if node || util.ObjToString(obj["subtype"]) == "拟建" {
 				if len(po) > 0 {
 					s.T["projectOther"] = po
 				}
@@ -578,6 +583,11 @@ func (s *Short) LoginCommon(userId, stype, id string) error {
 						obj["entIds"] = winnerIdArr
 					}
 				}
+				if !node {
+					//打码遮罩
+					//s.T["canRead"] = true
+					otherFilter(obj, userId != "")
+				}
 			} else {
 				obj = map[string]interface{}{
 					"title":    obj["title"],
@@ -979,6 +989,9 @@ func Filter(obj map[string]interface{}) map[string]interface{} {
 	//	}
 	//}
 	//
+	if detailNeedMosaic == nil {
+		detailNeedMosaic, _ = config.Sysconfig["detailNeedMosaic"].(map[string]interface{})
+	}
 	for dk, dv := range detailNeedMosaic {
 		if !dv.(bool) {
 			continue
@@ -1013,6 +1026,65 @@ func Filter(obj map[string]interface{}) map[string]interface{} {
 	return obj
 }
 
+// 拟建采购意向用户进行数据过滤 name 配置文件
+func otherFilter(obj map[string]interface{}, isLogin bool) map[string]interface{} {
+	txt := util.If(isLogin, "解锁会员查看", "登陆后解锁会员查看").(string)
+	detail := fmt.Sprint(obj["detail"])
+	mosaicText := fmt.Sprintf(`<span class="highlight-text otherMosaic">%s</span>`, txt)
+	detailText := fmt.Sprintf(`<span class="highlight-text otherMosaic">%s</span>`, txt)
+	var (
+		projectinfo map[string]interface{}
+	)
+
+	var otherMosaic map[string]interface{}
+	if obj["subtype"] == "拟建" {
+		otherMosaic, _ = config.Sysconfig["planBuildMosaic"].(map[string]interface{})
+		projectinfo, _ = obj["projectinfo"].(map[string]interface{}) //1.项目信息打码处理
+	} else if obj["subtype"] == "采购意向" {
+		otherMosaic, _ = config.Sysconfig["purchaseMosaic"].(map[string]interface{})
+		procurementlist, _ := obj["procurementlist"].([]interface{})
+		for _, vs := range procurementlist { //1.采购意向清单数据集打码处理
+			vsMap, _ := vs.(map[string]interface{})
+			for _, vsq := range vsMap {
+				if vs1, ok := vsq.(string); ok && vs1 != "" {
+					detail = strings.ReplaceAll(detail, util.InterfaceToStr(vsq), detailText)
+				}
+			}
+		}
+		delete(obj, "procurementlist")
+	}
+
+	for dk, dv := range otherMosaic {
+		if !dv.(bool) {
+			continue
+		}
+		if vs, ok := projectinfo[dk]; ok && vs != nil && vs != "" {
+			detail = strings.ReplaceAll(detail, util.InterfaceToStr(vs), detailText)
+			projectinfo[dk] = mosaicText
+		}
+		if vs, ok := obj[dk]; ok && vs != nil && vs != "" {
+			value, b := obj[dk].(float64)
+			if b {
+				replaceStr := fmt.Sprintf("%v", int64(value))
+				detail = strings.ReplaceAll(detail, replaceStr, detailText)
+			} else {
+				detail = strings.ReplaceAll(detail, util.InterfaceToStr(obj[dk]), detailText)
+			}
+		}
+		obj[dk] = mosaicText
+	}
+	if obj["subtype"] == "拟建" {
+		for k := range projectinfo {
+			if _, ok := otherMosaic[k]; !ok {
+				delete(projectinfo, k)
+			}
+		}
+		obj["projectinfo"] = projectinfo
+	}
+	obj["detail"] = detail
+	return obj
+}
+
 // 未登录用户进行数据过滤 name 配置文件
 func SearchFilter(obj map[string]interface{}) map[string]interface{} {
 	//detail := fmt.Sprint(obj["detail"])
@@ -1085,94 +1157,66 @@ func (s *Short) NologinArticle(stype, id string) error {
 func (s *Short) NologinCommon(userId, stype, id, sid string) error {
 	tg := &Tags{}
 	catchKey := fmt.Sprintf("jypcdetail_nologin_%s_%s", stype, sid)
-	if res := redis.Get("newother", catchKey); res == nil || res == "" {
-		industry := s.GetString("industry")
-		var shareid = s.GetString("id")
-		if len(shareid) == 0 {
-			shareid = "10"
-		}
-		s.T["logid"] = config.Seoconfig["jysskzy"].(string)
-		s.T["shareid"] = se.EncodeString(shareid)
-		//s.T["keywords"] = s.GetString("kds")
+	//if res := redis.Get("newother", catchKey); res == nil || res == "" {
+	industry := s.GetString("industry")
+	var shareid = s.GetString("id")
+	if len(shareid) == 0 {
+		shareid = "10"
+	}
+	s.T["logid"] = config.Seoconfig["jysskzy"].(string)
+	s.T["shareid"] = se.EncodeString(shareid)
+	//s.T["keywords"] = s.GetString("kds")
 
-		s.DisableHttpCache()
-		po, bo, wo, obj := pcVRT(sid, industry, stype, false)
-		if obj != nil && len(obj) > 0 {
-			if len(po) > 0 {
-				s.T["projectOther"] = po
-			}
-			if len(bo) > 0 {
-				s.T["buyerOther"] = bo
-			}
-			if len(wo) > 0 {
-				s.T["winnerOther"] = wo
-			}
-			FieldProcessing(obj, "", industry, id, "", userId, stype, false)
-			obj["urlpath"] = s.Uri()
-			obj["industry"] = industry
+	s.DisableHttpCache()
+	po, bo, wo, obj := pcVRT(sid, industry, stype, false)
+	if obj != nil && len(obj) > 0 {
+		if len(po) > 0 {
+			s.T["projectOther"] = po
+		}
+		if len(bo) > 0 {
+			s.T["buyerOther"] = bo
+		}
+		if len(wo) > 0 {
+			s.T["winnerOther"] = wo
+		}
+		FieldProcessing(obj, "", industry, id, "", userId, stype, false)
+		obj["urlpath"] = s.Uri()
+		obj["industry"] = industry
 
-			if userId == "" {
-				obj["winnerTitle"] = obj["winner"]
-				obj["buyerTitle"] = obj["buyer"]
-				obj["projectnameTitle"] = obj["projectname"]
-				obj["projectcodeTitle"] = obj["projectcode"]
-				log.Println(time.Now().UnixNano())
+		if userId == "" {
+			obj["winnerTitle"] = obj["winner"]
+			obj["buyerTitle"] = obj["buyer"]
+			obj["projectnameTitle"] = obj["projectname"]
+			obj["projectcodeTitle"] = obj["projectcode"]
+			log.Println(time.Now().UnixNano())
+			if obj["subtype"] == "拟建" {
+				otherFilter(obj, false)
+			} else {
 				obj = Filter(obj)
-				//obj["description"] = fmt.Sprintf("%s,%s。", obj["title"], baseInfo(obj))
-			}
-			obj["agency"] = ""
-			if obj["publishtime"] != nil {
-				obj["publishtimeShorDate"] = time.Unix(util.Int64All(obj["publishtime"]), 0).Format(date.Date_Short_Layout)
-			}
-			obj["keywords"] = KeyWordHandle(obj)
-			obj["description"] = DescriptionHandle("nologin", obj)
-			s.T["obj"] = obj
-			s.T["url"] = s.Uri()
-			s.T["newBidInfoList"] = tg.GetNewBidInfo()
-			s.T["industryInfoList"] = tg.GetConsult()
-			s.T["hotLabelList"] = tg.GetHotLabel(30)
-			s.T["simpleTemplateData"] = map[string]interface{}{
-				"obj": map[string]interface{}{
-					"subtype":         obj["subtype"],
-					"purchasing":      obj["purchasing"],
-					"package":         obj["package"],
-					"fwtscode":        obj["fwtscode"],
-					"fwtsname":        obj["fwtsname"],
-					"s_winner":        obj["s_winner"],
-					"projectname":     obj["projectname"],
-					"title":           obj["title"],
-					"area":            obj["area"],
-					"city":            obj["city"],
-					"agency":          obj["agency"],
-					"buyer":           obj["buyer"],
-					"buyerperson":     obj["buyerperson"],
-					"buyertel":        obj["buyertel"],
-					"winnertel":       obj["winnertel"],
-					"winner_enttel":   obj["winner_enttel"],
-					"bidamount":       obj["bidamount"],
-					"winner":          obj["winner"],
-					"budget":          obj["budget"],
-					"_id":             obj["_id"],
-					"projectinfo":     obj["projectinfo"],
-					"href":            obj["href"],
-					"winnerMap":       obj["winnerMap"],
-					"entId":           obj["entId"],
-					"publishtime":     obj["publishtime"],
-					"industry":        obj["industry"],
-					"s_subscopeclass": obj["s_subscopeclass"],
-					"areaadd":         obj["areaadd"],
-					"stypeadd":        obj["stypeadd"],
-					"indadd":          obj["indadd"],
-					"type":            obj["type"],
-				},
 			}
-			content, _ := s.Render4Cache("/pc/tags/detail.html", &s.T)
-			redis.Put("newother", catchKey, string(content), 60*2)
-			return s.SetBody(content)
+			//obj["description"] = fmt.Sprintf("%s,%s。", obj["title"], baseInfo(obj))
 		}
-	} else {
-		return s.SetBody([]byte(res.(string)))
+		obj["agency"] = ""
+		if obj["publishtime"] != nil {
+			obj["publishtimeShorDate"] = time.Unix(util.Int64All(obj["publishtime"]), 0).Format(date.Date_Short_Layout)
+		}
+		obj["keywords"] = KeyWordHandle(obj)
+		obj["description"] = DescriptionHandle("nologin", obj)
+		s.T["obj"] = obj
+		s.T["url"] = s.Uri()
+		s.T["newBidInfoList"] = tg.GetNewBidInfo()
+		s.T["industryInfoList"] = tg.GetConsult()
+		s.T["hotLabelList"] = tg.GetHotLabel(30)
+		s.T["simpleTemplateData"] = map[string]interface{}{
+			"obj": obj,
+		}
+		content, _ := s.Render4Cache("/pc/tags/detail.html", &s.T)
+		redis.Put("newother", catchKey, string(content), 60*2)
+		return s.SetBody(content)
 	}
+	//} else {
+	//	return s.SetBody([]byte(res.(string)))
+	//}
 	return nil
 }
 

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

@@ -101,7 +101,6 @@ func PCS_task() {
 			}
 		}
 	}
-
 }
 
 // 返回内存中列表也的数据,只获取首页,其他页面访问量暂时不多
@@ -344,11 +343,12 @@ func (p *Pcsearch) PcSearchIndex(module string) error {
 	//--end--
 	userId, _ := p.GetSession("userId").(string)
 	phone, _ := p.GetSession("phone").(string)
+	//p353包含采购意向与拟建
 	noLoginBl := false
 	if userId == "" {
 		//未登录用户访问全部信息类型 需要过滤掉 拟建和采购意向
 		if subtype == "" {
-			subtype = "招标预告,招标公告,招标结果,招标信用信息"
+			subtype = "拟建,招标预告,招标公告,招标结果,招标信用信息"
 			noLoginBl = true
 		}
 	}
@@ -596,7 +596,7 @@ func Newbids(p, userId string) []map[string]interface{} {
 			}
 			//未登录用户访问全部信息类型 需要过滤掉 拟建和采购意向
 			if subtype == "" {
-				subtype = "招标预告,招标公告,招标结果,招标信用信息"
+				subtype = "拟建,招标预告,招标公告,招标结果,招标信用信息"
 			}
 		}
 		//查询置顶信息

+ 5 - 12
src/jfw/front/swordfish.go

@@ -142,12 +142,7 @@ func (m *Front) PcAjaxReq() {
 		notkey = m.GetString("notkey")
 		city = m.GetString("city")
 	}
-	if userId == "" {
-		//未登录用户访问全部信息类型 需要过滤掉 拟建和采购意向
-		if subtype == "" {
-			subtype = "招标预告,招标公告,招标结果,招标信用信息"
-		}
-	}
+
 	// p329  非反爬白名单用户不放开  需要处理通用词
 	onList, _ := jyutil.IsOnTheWhitelist(m.Session())
 	searchValueString := m.GetString("searchvalue")
@@ -187,7 +182,6 @@ func (m *Front) PcAjaxReq() {
 		list, count, total = so.GetBidSearchListByCache()
 
 	}
-	log.Println("userId:+++", userId)
 	if userId == "" {
 		for _, v := range list {
 			*v = SearchFilter(*v)
@@ -284,7 +278,7 @@ func (m *Front) PcAjaxReq_Bak() {
 	if userId == "" {
 		//未登录用户访问全部信息类型 需要过滤掉 拟建和采购意向
 		if subtype == "" {
-			subtype = "招标预告,招标公告,招标结果,招标信用信息"
+			subtype = "拟建,招标预告,招标公告,招标结果,招标信用信息"
 		}
 	}
 	m.SetSession("selectType", selectType)
@@ -705,13 +699,12 @@ func ObjData(isPayUser bool, sid, content string, lent int) (t bool, obj map[str
 		t = true
 		if !isPayUser && (content != "indexcontent") && (util.ObjToString(obj["subtype"]) == "拟建" || util.ObjToString(obj["subtype"]) == "采购意向") {
 			if lent == 0 {
-				delete(obj, "detail")
-				delete(obj, "projectinfo")
+				//delete(obj, "detail")
+				//delete(obj, "projectinfo")
 				goto env
 			}
 			for k, _ := range obj {
-				if k != "title" && k != "area" && k != "subtype" && k != "toptype" && k != "publishtime" && k != "budget" && k != "bidamount" && k != "site" && k != "spidercode" && k != "recommended_service" &&
-					//"owner":1,"total_investment":1,"projectaddr":1,"projectperiod":1,"approvedept":1,"approvecontent":1,"approvecode":1,"approvenumber":1,"approvetime":1,"approvestatus":1,"project_scale":1
+				if k != "title" && k != "area" && k != "detail" && k != "projecttype" && k != "approvecity" && k != "procurementlist" && k != "projectinfo" && k != "subtype" && k != "toptype" && k != "publishtime" && k != "budget" && k != "bidamount" && k != "site" && k != "spidercode" && k != "recommended_service" &&
 					k != "owner" && k != "total_investment" && k != "projectaddr" && k != "projectperiod" && k != "approvedept" && k != "approvecontent" && k != "approvecode" && k != "approvenumber" && k != "approvetime" && k != "approvestatus" && k != "project_scale" && k != "projectname" {
 					delete(obj, k)
 				}

+ 19 - 4
src/jfw/front/tags.go

@@ -489,7 +489,7 @@ func (this *Tags) GetNewBidInfo() (list []map[string]interface{}) {
 	if l, ok := redis.Get("seoCache", rediskey).([]interface{}); ok && l != nil && len(l) > 0 {
 		list = qu.ObjArrToMapArr(l)
 	} else {
-		_, _, lists := bidsearch.GetPcBidSearchData("", "", "", "", "招标预告,招标公告,招标结果,招标信用信息", "", "", "", "", "", "", "", "", 1, false, nil, bidSearch_field_1, "", false, false, "", 50, "")
+		_, _, lists := bidsearch.GetPcBidSearchData("", "", "", "", "拟建,招标预告,招标公告,招标结果,招标信用信息", "", "", "", "", "", "", "", "", 1, false, nil, bidSearch_field_1, "", false, false, "", 50, "")
 		if lists != nil && len(*lists) > 10 {
 			*lists = (*lists)[0:10]
 			for _, v := range *lists {
@@ -519,13 +519,26 @@ func (this *Tags) GetStype(href string) (list []map[string]interface{}) {
 		list = qu.ObjArrToMapArr(l)
 	} else {
 		m := []map[string]interface{}{}
+<<<<<<< HEAD
 		data := public.BaseMysql.SelectBySql(`select id,name,pid from seo_words.seo_stype where name !="拟建项目" and name != "采购意向" and pid=0 order by id`)
+=======
+		var data []map[string]interface{}
+		//newData := public.BaseMysql.SelectBySql(`select id,name,pid from seo_words.seo_stype where name = "拟建项目" or name = "采购意向" order by id`)
+		//if newData != nil && len(*newData) > 0 {
+		//	data = append(data, *newData...)
+		//}
+		//oldData := public.BaseMysql.SelectBySql(`-- select id,name,pid from seo_words.seo_stype where  name != "拟建项目" and name != "采购意向" order by id`)
+		oldData := public.BaseMysql.SelectBySql(`select id,name,pid from seo_words.seo_stype order by id`)
+		if oldData != nil && len(*oldData) > 0 {
+			data = append(data, *oldData...)
+		}
+>>>>>>> master
 		codeMap := map[int64][]int64{}
 		level1 := []int64{}
 		nameToCode := map[string]int64{}
 		codeToName := map[int64]string{}
-		if data != nil && len(*data) > 0 {
-			for _, v := range *data {
+		if len(data) > 0 {
+			for _, v := range data {
 				name := qu.ObjToString(v["name"])
 				pid := qu.Int64All(v["pid"])
 				id := qu.Int64All(v["id"])
@@ -784,9 +797,11 @@ func (this *Tags) GetInsturyKeywords(idstr string) (name, class_1, class_2 strin
 }
 
 // 获取信息类型 【全部是虚假的全部、实则是不包含拟建和采购意向的全部】
+// p353包含采购意向与拟建
 func (this *Tags) GetInfoType(idstr string) (string, string) {
 	if idstr == "all" {
-		return "招标,邀标,询价,竞谈,单一,竞价,变更,中标,成交,废标,流标,合同,验收,违规,预告,需求公示,预审,论证意见,预审结果", ""
+		return "拟建,招标,邀标,询价,竞谈,单一,竞价,变更,中标,成交,废标,流标,合同,验收,违规,预告,需求公示,预审,论证意见,预审结果", ""
+		//return "", ""
 	}
 	id, _ := strconv.Atoi(idstr)
 	data := public.BaseMysql.SelectBySql(`select id,name from seo_words.seo_stype where id =?`, id)

+ 2 - 0
src/jfw/modules/app/src/app/filter/loginfilter.go

@@ -28,6 +28,8 @@ var urls = []*regexp.Regexp{
 	regexp.MustCompile("^/jyapp/datasmt"),
 	regexp.MustCompile("^/jyapp/big/page/unit_portrayal"),
 	regexp.MustCompile("^/jyapp/big/page/free_high_set"),
+	regexp.MustCompile("^/jyapp/big/page/ent_portrait$"),
+	regexp.MustCompile("^/jyapp/big/page/ent_portrait_change$"),
 }
 
 type loginFilter struct {

+ 74 - 93
src/jfw/modules/app/src/app/front/shorturl.go

@@ -74,8 +74,7 @@ func (s *Short) Article(stype, id string) error {
 	disWord := s.GetString("disWord")
 	userPower := jy.GetBigVipUserBaseMsg(s.Session(), *config.Middleground)
 	var (
-		belongUserId, email string
-
+		belongUserId, email                                                string
 		isEntnicheNew, isOldVip, isVip, isMember, isEntniche, isEntService bool
 	)
 	//userId = "637dcf3ff143ed326e9e1589"
@@ -86,13 +85,15 @@ func (s *Short) Article(stype, id string) error {
 		if b {
 			return s.Redirect("/jyapp/free/mob/err")
 		}
-		isEntnicheNew = userPower.EntIsNew                                                          //新版超级订阅
-		isOldVip = false                                                                            //新购超级订阅不能查看拟建项目详情页
-		isVip = userPower.VipStatus > 0                                                             //超级订阅
-		isMember = userPower.Status > 0                                                             //大会员
-		isEntniche = userPower.EntnicheStatus > 0                                                   //商机管理
-		email = userPower.Email                                                                     //用户邮箱
-		isEntService = userPower.Data.Ent.PowerSource > 0 && userPower.Data.Entniche.IsEntPower > 0 //商机管理服务
+		isEntnicheNew = userPower.EntIsNew        //新版超级订阅
+		isOldVip = false                          //新购超级订阅不能查看拟建项目详情页
+		isVip = userPower.VipStatus > 0           //超级订阅
+		isMember = userPower.Status > 0           //大会员
+		isEntniche = userPower.EntnicheStatus > 0 //商机管理
+		email = userPower.Email
+		if userPower.Data != nil && userPower.Data.Ent != nil && userPower.Data.Entniche != nil {
+			isEntService = userPower.Data.Ent.PowerSource > 0 && userPower.Data.Entniche.IsEntPower > 0 //商机管理服务
+		} //用户邮箱
 		_, isOldVip, _, _, _ = UserPermission(userId)
 		entId := util.IntAll(s.GetSession("entId"))
 		if entId > 0 && userPower.EntInfo[entId] != nil {
@@ -187,11 +188,7 @@ func (s *Short) Article(stype, id string) error {
 			}
 			s.T["canRead"] = canRead
 		}
-		if userId == "" {
-			canRead = true
-			s.T["canRead"] = canRead
-		}
-		if canRead {
+		if canRead || userId == "" || util.ObjToString(obj["subtype"]) == "拟建" {
 			if belongUserId != "" && belongUserId != userId && util.ObjToString(obj["subtype"]) != "拟建" && userId != "" { //分享开打的
 				article_id := encrypt.CommonDecodeArticle(stype, id)[0]
 				key := fmt.Sprintf("integral_article_%s_%s_%s", article_id, belongUserId, userId)
@@ -268,9 +265,13 @@ func (s *Short) Article(stype, id string) error {
 					obj["detail"] = strings.ReplaceAll(strings.ReplaceAll(detail3, `<span class="freeView">点击查看</span><span class="freeView">点击查看</span>`, `<span class="freeView">点击查看</span>`), "*********", code)
 				}
 			}
-			if userId == "" {
+			if !canRead && util.ObjToString(obj["subtype"]) == "拟建" { //登录拟建&采购不展示遮罩 只打码
+				otherFilter(obj, userId != "")
+				//s.T["canRead"] = true
+			} else if userId == "" {
 				obj = Filter(obj)
 				obj["description"] = fmt.Sprintf("%s,%s。", obj["title"], baseInfo(obj))
+				s.T["canRead"] = true
 			}
 			if obj["l_publishtime"] != nil {
 				obj["publishtimeShorDate"] = time.Unix(util.Int64All(obj["l_publishtime"]), 0).Format(date.Date_Short_Layout)
@@ -307,66 +308,6 @@ func (s *Short) Article(stype, id string) error {
 	return s.Redirect("/jyapp/free/mob/err")
 }
 
-func NoLoginArticle(stype, sid string) map[string]interface{} {
-	obj := make(map[string]interface{})
-	catchKey := fmt.Sprintf("jypcdetail_nologin_app_%s_%s", stype, sid)
-	//if res := redis.Get("other", catchKey); res != nil && res != "" {
-	//	if data := util.ObjToMap(res); data != nil {
-	//		obj = *data
-	//		return obj
-	//	}
-	//}
-	obj = wxvisitD(sid, "", false)
-	if len(obj) > 0 {
-		if obj["entidlist"] != nil { //大会员中标企业跳转至画像
-			entIdArr, winnerMap := []string{}, map[string]interface{}{}
-			eidList, _ := obj["entidlist"].([]interface{})
-			swinnerArr := strings.Split(util.ObjToString(obj["s_winner"]), ",")
-			//先查询entlist 如果长度和s_winner不一致 根据企业名称查询id
-			if len(eidList) != len(swinnerArr) {
-				for _, v := range swinnerArr {
-					winnerMap[v] = ""
-					//临时更改为企业名称查询企业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}`, v, v))
-					if rData != nil && len(*rData) == 1 {
-						if entId := util.ObjToString((*rData)[0]["_id"]); entId != "" {
-							entIdArr = append(entIdArr, encrypt.EncodeArticleId2ByCheck(util.ObjToString((*rData)[0]["_id"])))
-							winnerMap[v] = encrypt.EncodeArticleId2ByCheck(util.ObjToString((*rData)[0]["_id"]))
-						}
-					}
-				}
-			} else {
-				for k, v := range eidList {
-					vstr := util.ObjToString(v)
-					if vstr == "-" {
-						continue
-					}
-					winnerMap[swinnerArr[k]] = encrypt.EncodeArticleId2ByCheck(vstr)
-				}
-			}
-			obj["entId"] = entIdArr
-			obj["winnerMap"] = winnerMap
-		}
-		//判断是否公开联系人信息
-		if util.Int64All(obj["buyerhint"]) == 2 {
-			obj["buyerperson"] = ""
-			obj["buyertel"] = ""
-		}
-		if obj["l_publishtime"] != nil {
-			obj["publishtimeShorDate"] = time.Unix(util.Int64All(obj["l_publishtime"]), 0).Format(date.Date_Short_Layout)
-		}
-		obj["winnerTitle"] = obj["winner"]
-		obj["buyerTitle"] = obj["buyer"]
-		obj["projectnameTitle"] = obj["projectname"]
-		obj["projectcodeTitle"] = obj["projectcode"]
-		obj["keywords"] = KeyWordHandle(obj)
-		obj["description"] = DescriptionHandle("nologin", obj)
-		obj = Filter(obj)
-		redis.Put("other", catchKey, obj, 60*2)
-	}
-	return obj
-}
-
 // 未登录用户进行数据过滤
 func Filter(obj map[string]interface{}) map[string]interface{} {
 	detail := fmt.Sprint(obj["detail"])
@@ -374,24 +315,6 @@ func Filter(obj map[string]interface{}) map[string]interface{} {
 	mosaicText := fmt.Sprintf(`<span style="color: #2ABED1;">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
 	detailText := fmt.Sprintf(`<span class="noLoginMosaic" style="color: #2ABED1;">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
 	detailNeedMosaic, _ := config.Sysconfig["detailNeedMosaic"].(map[string]interface{})
-	//for k, _ := range obj {
-	//	if ok, _ := detailNeedMosaic[k].(bool); ok {
-	//		if util.ObjToString(obj[k]) != "" {
-	//			detail = strings.ReplaceAll(detail, util.ObjToString(obj[k]), detailText)
-	//		}
-	//		//中标企业信息
-	//		if k == "winnerMap" && obj[k] != nil {
-	//			winnerNewMap := map[string]interface{}{}
-	//			winnerMap := util.ObjToMap(obj[k])
-	//			for _, wv := range *winnerMap {
-	//				winnerNewMap[mosaicText] = wv
-	//			}
-	//			obj[k] = winnerNewMap
-	//		} else {
-	//			obj[k] = mosaicText
-	//		}
-	//	}
-	//}
 	for dk, dv := range detailNeedMosaic {
 		if !dv.(bool) {
 			continue
@@ -426,6 +349,64 @@ func Filter(obj map[string]interface{}) map[string]interface{} {
 	return obj
 }
 
+// 拟建采购意向用户进行数据过滤 name 配置文件
+func otherFilter(obj map[string]interface{}, isLogin bool) map[string]interface{} {
+	txt := util.If(isLogin, "解锁会员查看", "登陆后解锁会员查看").(string)
+	detail := fmt.Sprint(obj["detail"])
+	mosaicText := fmt.Sprintf(`<span class="highlight-text otherMosaic">%s</span>`, txt)
+	detailText := fmt.Sprintf(`<span class="highlight-text otherMosaic">%s</span>`, txt)
+	var (
+		projectinfo map[string]interface{}
+	)
+	var otherMosaic map[string]interface{}
+	if obj["subtype"] == "拟建" {
+		otherMosaic, _ = config.Sysconfig["planBuildMosaic"].(map[string]interface{})
+		projectinfo, _ = obj["projectinfo"].(map[string]interface{}) //1.项目信息打码处理
+	} else if obj["subtype"] == "采购意向" {
+		otherMosaic, _ = config.Sysconfig["purchaseMosaic"].(map[string]interface{})
+		procurementlist, _ := obj["procurementlist"].([]interface{})
+		for _, vs := range procurementlist { //1.采购意向清单数据集打码处理
+			vsMap, _ := vs.(map[string]interface{})
+			for _, vsq := range vsMap {
+				if vs1, ok := vsq.(string); ok && vs1 != "" {
+					detail = strings.ReplaceAll(detail, util.InterfaceToStr(vsq), detailText)
+				}
+			}
+		}
+		delete(obj, "procurementlist")
+	}
+
+	for dk, dv := range otherMosaic {
+		if !dv.(bool) {
+			continue
+		}
+		if vs, ok := projectinfo[dk]; ok && vs != nil && vs != "" {
+			detail = strings.ReplaceAll(detail, util.InterfaceToStr(vs), detailText)
+			projectinfo[dk] = mosaicText
+		}
+		if vs, ok := obj[dk]; ok && vs != nil && vs != "" {
+			value, b := obj[dk].(float64)
+			if b {
+				replaceStr := fmt.Sprintf("%v", int64(value))
+				detail = strings.ReplaceAll(detail, replaceStr, detailText)
+			} else {
+				detail = strings.ReplaceAll(detail, util.InterfaceToStr(obj[dk]), detailText)
+			}
+		}
+		obj[dk] = mosaicText
+	}
+	if obj["subtype"] == "拟建" {
+		for k := range projectinfo {
+			if _, ok := otherMosaic[k]; !ok {
+				delete(projectinfo, k)
+			}
+		}
+		obj["projectinfo"] = projectinfo
+	}
+	obj["detail"] = detail
+	return obj
+}
+
 func ReplaceStringByRegex(str, rule, replace string) (string, error) {
 	reg, err := regexp.Compile(rule)
 	if reg == nil || err != nil {

+ 1 - 1
src/jfw/modules/app/src/app/front/swordfish.go

@@ -525,7 +525,7 @@ func wxvisitD(sid, userId string, isPayUser bool) (objdata map[string]interface{
 		if ok && obj != nil && len(obj) >= 3 {
 			if !isPayUser && (util.ObjToString(obj["subtype"]) == "拟建" || util.ObjToString(obj["subtype"]) == "采购意向") {
 				for k, _ := range obj {
-					if k != "title" && k != "area" && k != "subtype" && k != "toptype" && k != "publishtime" && k != "budget" && k != "bidamount" && k != "site" && k != "spidercode" && k != "recommended_service" &&
+					if k != "title" && k != "area" && k != "subtype" && k != "detail" && k != "procurementlist" && k != "toptype" && k != "publishtime" && k != "budget" && k != "bidamount" && k != "site" && k != "spidercode" && k != "recommended_service" && k != "projectinfo" &&
 						k != "owner" && k != "total_investment" && k != "projectaddr" && k != "projectperiod" && k != "approvedept" && k != "approvecontent" && k != "approvecode" && k != "approvenumber" && k != "approvetime" && k != "approvestatus" && k != "project_scale" && k != "projectname" {
 						delete(obj, k)
 					}

+ 21 - 1
src/jfw/modules/app/src/config.json

@@ -231,5 +231,25 @@
   "detail_element": [
     "table",
     "div"
-  ]
+  ],
+  "purchaseMosaic":{
+    "projectname": true,
+    "bidamount": true,
+    "budget": true,
+    "item": true,
+    "projectscope": true,
+    "reserved_amount": true,
+    "totalprice": true,
+    "expurasingtime": true
+  },
+  "planBuildMosaic": {
+    "approvecode": true,
+    "approvedept": true,
+    "approvestatus": true,
+    "approvetime": true,
+    "approvenumber": true,
+    "approvecontent": true,
+    "projecttype": true,
+    "approvecity": true
+  }
 }

+ 2 - 2
src/jfw/modules/app/src/phoneFilter.json

@@ -11,5 +11,5 @@
 		"^/swordfish/frontPage/(.*)",
 		"^/jyapp/frontPage/(.*)",
 		"^//jyapp/errLogs/Receive$"
-	]
-}
+  ]
+}

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

@@ -517,3 +517,7 @@
 .win-analyse .high-link > span {
     margin-right: .08rem;
 }
+.win-analyse .default {
+    color: #999;
+}
+

+ 43 - 12
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js

@@ -141,7 +141,11 @@ var vNode = {
       isSC: 0, //0未收藏 1收藏
       idx: [],
       list: [],
-      entParams: {}
+      entParams: {},
+      // 用户是否登录
+      isLogin: false,
+      // 是否是免费用户
+      isFree: false
     }
   },
   created: function () {
@@ -158,6 +162,8 @@ var vNode = {
     this.entInfo.id = eId
     this.entInfo.name = ''
     this.restore = this.reStoreState()
+    // 判断用户是否登录
+    this.getUserSimpleInfo()
     this.getPowerInfo()
     if (!this.restore) {
       // 获取企业基本信息
@@ -401,6 +407,9 @@ var vNode = {
     },
     // 获取画像信息
     getEntPortrait: function (callback) {
+      if(!this.isLogin) {
+        return
+      }
       var storageSet = JSON.parse(sessionStorage.getItem('winner_high_set'))
       var _this = this
       var data = {
@@ -660,7 +669,7 @@ var vNode = {
     getEntBaseInfo: function () {
       var _this = this
       let urls = ''
-      if (_this.powerInfo.memberStatus <= 0 || _this.svip) {
+      if (_this.powerInfo.memberStatus <= 0 || _this.svip || _this.isFree || !_this.isLogin) {
         urls = '/bigmember/portrait/subVipPortrait/entDetail'
       } else {
         urls = '/bigmember/portrait/ent/detail'
@@ -724,6 +733,10 @@ var vNode = {
     },
     changeFollowState: function () {
       var _this = this
+      if(!this.isLogin) {
+        window.location.href = "/jyapp/free/login?to=back";
+        return
+      }
       if (this.entInfo.follow) {
         this.$dialog.confirm({
           title: '提示信息',
@@ -779,15 +792,8 @@ var vNode = {
                 // 获取企业情报历史记录-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.getEntFollowState()
               _this.singleTab = false
             }
 
@@ -799,7 +805,7 @@ var vNode = {
               }
             }
             _this.conf.isMember = res.data.memberStatus
-            _this.conf.arr = res.data.power
+            _this.conf.arr = res.data.power || []
             _this.conf.vipStatus = res.data.vipStatus
             // 新版超级订阅用户获取访问量
             if (res.data.viper && (_this.conf.isMember <= 0 || res.data.power.indexOf(4) == -1)) {
@@ -811,6 +817,7 @@ var vNode = {
           }
           //免费用户体验权限
           if (res.data.isFree) {
+            _this.isFree = true
             if (res.data.freeEntPort == 0) {
               _this.canFreeExp = true
             } else {
@@ -848,6 +855,23 @@ var vNode = {
         }
       })
     },
+    // 判断当前用户是登录
+    getUserSimpleInfo() {
+      const _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/jypay/user/getSimpleData',
+        success: function (res) {
+          if(res && res.userId) {
+            _this.isLogin = true
+            // 所有身份均可关注(除未登录)
+            _this.getEntFollowState()
+          }
+        },error:function (e) {
+          _this.isLogin = false
+        }
+      })
+    },
     // 修改企业关注状态
     changeFollowStateRequest: function () {
       var _this = this
@@ -1399,6 +1423,9 @@ var vNode = {
     },
     // 高级分析设置
     goHighSet () {
+      if(!this.isLogin) {
+        return
+      }
       sessionStorage.setItem('is-click-set', 1)
       location.href = './free_high_set?header=中标信息高级分析设置&eid=' + utils.getParam('eId')
       // var url = this.getProjectNewsUrl()
@@ -1424,6 +1451,10 @@ var vNode = {
     goOpenVip: function () {
       // location.href = "/jyapp/vipsubscribe/vipsubscribe_new"
       location.href = '/jy_mobile/common/order/create/svip?type=buy'
+    },
+    // 跳转登录页
+    goLogin: function () {
+      window.location.href = "/jyapp/free/login?to=back";
     }
   }
 }

+ 22 - 5
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js

@@ -19,7 +19,7 @@ var vNode = {
       ], false
     ), '#FF9F40']
     return {
-      chartLoading: true,
+      chartLoading: false,
       showAll: false,
       buyer: {
         name: '',
@@ -190,7 +190,7 @@ var vNode = {
       // 免费用户是否查看过该画像
       var freeTrial = info.isFree && info.freeBuyerPort < 0 && this.freeTrial
       // 免费用户无体验次数的、超级订阅用户无剩余次数的、没有大会员浏览权限的 显示遮罩
-      return !isFreeAuth && !isVipAuth && !isMember && !freeTrial && !vipTrial
+      return (!isFreeAuth && !isVipAuth && !isMember && !freeTrial && !vipTrial) || !this.userInfo.isLogin
     },
     // 展示免费用户体验
     getfreeBuyerPort: function () {
@@ -256,7 +256,9 @@ var vNode = {
   },
   created () {
     this.getUserSimpleInfo()
-    this.getPowerInfo()
+    setTimeout(() => {
+      this.getPowerInfo()
+    }, 1000)
     setTimeout(() => {
       this.getIsSc()
     }, 1000)
@@ -386,9 +388,13 @@ var vNode = {
             if (res.data.power.indexOf(5) === -1) {
               _this.getBuried(userType)
             }
+            if( _this.userInfo.isLogin) {
+              _this.getNewMsg(); // 中标动态
+              _this.getChartData(); // 企业画像
+            }
             _this.getUsage(); // 超级订阅用户剩余次数
-            _this.getNewMsg(); // 中标动态
-            _this.getChartData(); // 企业画像
+            // _this.getNewMsg(); // 中标动态
+            // _this.getChartData(); // 企业画像
           } else {
             _this.userInfo.isLogin = false
           }
@@ -711,6 +717,7 @@ var vNode = {
         buyer: decodeURIComponent(utils.getParam('entName'))
       }
       var isMember = this.bigStatus > 0 && this.power.indexOf(5) > -1
+      that.chartLoading = true;
       $.ajax({
         type: 'POST',
         url: isMember ? '/bigmember/portrait/buyer/getData' : '/bigmember/subVipPortrait/buyer/getData',
@@ -733,10 +740,13 @@ var vNode = {
                 that.chartLoading = false;
               }
             }
+          } else {
+            that.chartLoading = false;
           }
           that.getUsage(); // 超级订阅用户剩余次数
         },
         error: function (err) {
+          that.chartLoading = false;
           console.log(err)
           // setTimeout(function() {
           //   that.getChartData()
@@ -747,6 +757,7 @@ var vNode = {
     // 分段获取画像数据
     getSectionChartData: function (type) {
       var that = this;
+      that.chartLoading = true;
       $.ajax({
         type: 'POST',
         url: '/bigmember/portrait/buyer/getData',
@@ -775,9 +786,12 @@ var vNode = {
                 that.chartLoading = false;
               }
             }
+          } else {
+            that.chartLoading = false;
           }
         },
         error: function (err) {
+          that.chartLoading = false;
           console.log(err)
         }
       })
@@ -1715,6 +1729,9 @@ var vNode = {
       return maxIndex
     },
     goHighSet: function () {
+      if(!this.userInfo.isLogin) {
+        return
+      }
       sessionStorage.setItem('is-click-set', 1)
       location.href = './free_high_set?header=采购单位高级分析设置&entName=' + decodeURIComponent(utils.getParam('entName'))
     },

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

@@ -297,6 +297,7 @@ body .loading_ p span {
 .toolbar .tool_bottom {
     display: flex;
     margin-top: 13px;
+    margin-bottom:16px;
     align-items: center;
     justify-content: space-between;
 }
@@ -676,7 +677,6 @@ pre {
 .onlyone img {
     width: 100%;
 }
-
 .adv-appcontent-bottom::after {
     content: "广告";
     position: absolute;
@@ -692,7 +692,7 @@ pre {
     line-height: 12px;
 }
 
-.adv-appcontent-bottom {
+.adv-appcontent-bottom{
     width: 100%;
     margin: auto;
     text-align: center;
@@ -701,7 +701,7 @@ pre {
     position: relative;
 }
 
-.adv-appcontent-bottom img {
+.adv-appcontent-bottom img{
     width: 100%;
 }
 

二進制
src/jfw/modules/app/src/web/staticres/jyapp/images/focontent/ad_bigmember.png


二進制
src/jfw/modules/app/src/web/staticres/jyapp/images/focontent/ad_bigmember2.png


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

@@ -20,6 +20,8 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
     <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
+    <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}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
     <!--E-当前页面的css资源-->
 </head>
 <body>
@@ -223,7 +225,7 @@
           </div>
           <div class="view-result-tip">
             <span>想知道谁最有可能参标吗?</span>
-            <span @click="location.href='/jyapp/big/page/analysis_search'" style="text-decoration: underline;">点这里查看分析结果</span>
+            <span @click="location.href='/jyapp/big/page/analysis_result'" style="text-decoration: underline;">点这里查看分析结果</span>
           </div>
           <van-form :readonly="editBtnStatus.status == 1" @submit="onSubmit">
             <van-field
@@ -370,6 +372,9 @@
                 <van-button class="c-btns" @click="sendMail">确认</van-button>
             </div>
         </van-dialog>
+        <van-popup class="j-container" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+          <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+        </van-popup>
     </div>
     <!--S-Vue-->
 </div>
@@ -389,6 +394,7 @@
     var localEmail =  {{.T.email}} || sessionStorage.getItem('reportEmail') || ''
 </script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/big-member/js/page_client_follow_detail.js?v={{Msg "seo" "version"}}'></script>
 
 </body>

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

@@ -17,6 +17,8 @@
     <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='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/big-member/css/page_client_follow_list.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}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
     <!--E-当前页面的css资源-->
 </head>
 <body>
@@ -89,6 +91,9 @@
                     <div class="j-button-manycancel" @click="manycancel()">批量取消关注30天无更新的项目</div>
                 </div>
             </div>
+            <van-popup class="j-container" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+              <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+            </van-popup>
         </div>
     </div>
     <!--S-Vue-->
@@ -111,6 +116,7 @@
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/area-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>
 {{include "/big-member/commonjs.html"}}
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/big-member/js/page_client_follow_list.js?v={{Msg "seo" "version"}}'></script>
 <!-- <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/demo.js?v={{Msg "seo" "version"}}'></script> -->
 

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

@@ -50,6 +50,7 @@
     }
 
     .vip_openDialog {
+        position: relative;
         padding: 0 0 0.64rem;
         width: 6.06rem;
         /* height: 6.88rem; */
@@ -57,6 +58,11 @@
         background-size: 100% 100%;
         box-sizing: border-box;
     }
+    .no-login-tip{
+        position:absolute;
+        width:100%;
+        text-align: center;
+    }
 
     .free-give {
         padding: 0.24rem 0.32rem;
@@ -235,9 +241,9 @@
       <span class="j-icon icon-company"></span>
       <span class="ent-title">${ entInfo.name }</span>
       <span style="margin-right: .32rem;" class="j-icon" :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
-            @click="changeFollowState" v-if="entInfo.followSearchFinish && entInfo.entExist"></span>
-      <van-loading v-if="!entInfo.followSearchFinish" size="24px"></van-loading>
-      <forwardshare :params="entParams" :show-text="false"></forwardshare>
+            @click="changeFollowState" v-if="!isLogin || (entInfo.followSearchFinish && entInfo.entExist)"></span>
+      <van-loading v-if="isLogin && !entInfo.followSearchFinish" size="24px"></van-loading>
+      <forwardshare :params="entParams" :show-text="false" v-if="isLogin" ></forwardshare>
     </div>
     <van-tabs
             class="ent-tabs-container"
@@ -362,7 +368,7 @@
           <div class="vip_component"
                style="height:11.04rem;background:url('/common-module/collection/image/bg/vip_bg_9.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
             <vip-component @tabactive="tabActive" :power="conf" type="item_9" :can-free-exp="canFreeExp"
-                           :entvisit="entvisit" :newvip="isVip"
+                           :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
                            imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_9.png?v={{Msg "seo" "version"}}'></vip-component>
           </div>
         </div>
@@ -378,17 +384,18 @@
         <!-- 高级分析 -->
         <div class="win-analyse" ref="setRef">
           <span class="win-bid-title">中标分析</span>
-          <div class="high-link" @click="goHighSet">
+          <div class="high-link" :class="isLogin ? '' : 'default'" @click="goHighSet">
             <span>高级分析设置</span>
             <van-icon name="arrow"></van-icon>
           </div>
         </div>
         <!-- 免费用户采购单位全景分析提示 -->
-        <div v-if="canFreeExp" style="margin-top: .24rem; " class="free-give">
+        <div v-if="canFreeExp && isLogin" style="margin-top: .24rem; " class="free-give">
           <div class="go-text"> 免费赠送1次【企业中标分析】权益体验机会!</div>
           <div class="go-btn" @click="goGiveAnalysis">去解锁</div>
         </div>
-        <div class="bg-white tab-card">
+        <!-- 中标信息统计结果-->
+        <div class="bg-white tab-card" v-if="isLogin">
           <div class="tab-card-title" style="padding: 0.16rem .32rem .12rem;">中标信息统计结果</div>
           <div class="card-row zb-info">
             <div class="card-column">
@@ -421,6 +428,18 @@
                 : '至今'}</span>
           </div>
         </div>
+        <!-- 中标信息统计结果--未登录-->
+        <div class="bg-white tab-card charts"  style="margin-bottom: 10px;" v-if="!isLogin">
+            <div class="tab-card-title">中标信息统计结果</div>
+            <div class="vip_component" v-if="getStatus && hideDt"
+                 style="height:5.8rem;background:url('/common-module/collection/image/bg/qy-zbtj-bg.png?v={{Msg "seo" "version"}}') 40% 0 no-repeat;background-size:110% 100%;"
+            key="dt">
+            <vip-component @tabactive="tabActive" :power="conf" type="item_10" :can-free-exp="canFreeExp"
+                           :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
+                           imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/qy-zbtj.png?v={{Msg "seo" "version"}}'>
+            </vip-component>
+        </div>
+        </div>
         <div class="jy-empty" v-show="allNot && !getStatus">
           <div class="jy-empty-img"></div>
           <p class="jy-empty-text">对不起,没有匹配到相关信息, <br>修改时间范围或换个搜索词试试吧</p>
@@ -429,7 +448,7 @@
              style="height:9.16rem;background:url('/common-module/collection/image/bg/vip_bg_1.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%"
              key="dt">
           <vip-component @tabactive="tabActive" :power="conf" type="item_1" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip"
+                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_1.png?v={{Msg "seo" "version"}}'>
           </vip-component>
         </div>
@@ -494,7 +513,7 @@
         <div class="vip_component" v-if="getStatus"
              style="height:11.12rem;background:url('/common-module/collection/image/bg/vip_bg_2.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
           <vip-component @tabactive="tabActive" type="item_2" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip"
+                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_2.png?v={{Msg "seo" "version"}}'>
           </vip-component>
         </div>
@@ -511,7 +530,7 @@
         <div class="vip_component" v-if="getStatus"
              style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_3.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
           <vip-component @tabactive="tabActive" type="item_3" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip"
+                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_3.png?v={{Msg "seo" "version"}}'>
           </vip-component>
         </div>
@@ -527,7 +546,7 @@
         <div class="vip_component" v-if="getStatus"
              style="height:10.56rem;background:url('/common-module/collection/image/bg/vip_bg_4.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
           <vip-component @tabactive="tabActive" type="item_4" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip"
+                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_4.png?v={{Msg "seo" "version"}}'>
           </vip-component>
         </div>
@@ -544,7 +563,7 @@
         <div class="vip_component" v-if="getStatus"
              style="height:11.24rem;background:url('/common-module/collection/image/bg/vip_bg_5.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
           <vip-component @tabactive="tabActive" type="item_5" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip"
+                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_5.png?v={{Msg "seo" "version"}}'>
           </vip-component>
         </div>
@@ -559,7 +578,7 @@
         <div class="vip_component" v-if="getStatus"
              style="height:11.92rem;background:url('/common-module/collection/image/bg/vip_bg_6.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
           <vip-component @tabactive="tabActive" type="item_6" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip"
+                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_6.png?v={{Msg "seo" "version"}}'>
           </vip-component>
         </div>
@@ -627,7 +646,7 @@
         <div class="vip_component" v-if="getStatus"
              style="height:10.8rem;background:url('/common-module/collection/image/bg/vip_bg_7.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
           <vip-component @tabactive="tabActive" type="item_7" :power="conf" :can-free-exp="canFreeExp"
-                         :entvisit="entvisit" :newvip="isVip"
+                         :entvisit="entvisit" :newvip="isVip" :islogin="isLogin"
                          imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_7.png?v={{Msg "seo" "version"}}'>
           </vip-component>
         </div>

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

@@ -29,9 +29,9 @@
         background-size: 100% 100%;
         box-sizing: border-box;
     }
-    .bigVip_com{
-        display: none;
-    }
+    /*.bigVip_com{*/
+    /*    display: none;*/
+    /*}*/
 </style>
 <body>
 <div class="j-container">
@@ -42,7 +42,7 @@
             <p class="empty-text">暂无企业情报历史记录</p>
         </div>
         <div class="vip_component bigVip_com" v-if="!getStatus" style="height:100%;background:url('/common-module/collection/image/bg/vip_bg_8.png') no-repeat;background-size:100% 100%">
-            <vip-component type="item_8" :power="conf" :vipststus="vipststus" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_8.png'></vip-component>
+            <vip-component type="item_8" :power="conf" :vipststus="vipststus" :entvisit="entvisit" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/bg/vip_ex_8.png' :islogin="isLogin"></vip-component>
         </div>
         <ul class="ent-change-list" v-else key="changeList">
             <li class="ent-change-item" v-for="(item,index) in changeList" :key="item.changeTime">
@@ -100,8 +100,8 @@ var vNode = {
             isMember: 0
         },
         isVip: false,
-        vipststus: 0
-
+        vipststus: 0,
+        isLogin: false
     },
     created: function () {
         var eId = utils.getParam('eId')
@@ -110,13 +110,14 @@ var vNode = {
             this.eId = eId
         }
         this.getUserInfo()
+        this.getUserSimpleInfo()
         this.getEntVisits()
         this.getEntHistory()
     },
     computed: {
         getStatus: function () {
             // 超级订阅用户没有企业情报监控权限,显示购买页
-            return this.conf._12
+            return this.conf._12 && this.isLogin
         }
     },
     methods: {
@@ -133,7 +134,7 @@ var vNode = {
                     }
                     if (res.data && $.isArray(res.data.power)) {
                         // 根据power判断权限,企业画像包含权限(12)
-                        var power = res.data.power
+                        var power = res.data.power || []
                         // 判断是否是超级订阅会员、老用户还是新用户
                         if (res.data.viper) {
                             $('.bigVip_com').css({'display':'flex'})
@@ -154,6 +155,21 @@ var vNode = {
                 }
             })
         },
+          // 判断当前用户是登录
+          getUserSimpleInfo() {
+            const _this = this
+            $.ajax({
+              type: 'POST',
+              url: '/jypay/user/getSimpleData',
+              success: function (res) {
+                if(res && res.userId) {
+                  _this.isLogin = true
+                }
+              },error:function (e) {
+                _this.isLogin = false
+              }
+            })
+          },
         // 企业画像访问量查询
         getEntVisits: function() {
             let _this = this

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

@@ -20,6 +20,8 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
     <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
+    <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}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
     <!--E-当前页面的css资源-->
 </head>
 <body>
@@ -222,7 +224,7 @@
           </div>
           <div class="view-result-tip">
             <span>想知道谁最有可能参标吗?</span>
-            <span @click="location.href='/jyapp/big/page/analysis_search'" style="text-decoration: underline;">点这里查看分析结果</span>
+            <span @click="location.href='/jyapp/big/page/analysis_result'" style="text-decoration: underline;">点这里查看分析结果</span>
           </div>
           <van-form :readonly="editBtnStatus.status == 1" @submit="onSubmit">
             <van-field
@@ -369,6 +371,9 @@
                 <van-button class="c-btns" @click="sendMail">确认</van-button>
             </div>
         </van-dialog>
+        <van-popup class="j-container" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+          <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+        </van-popup>
     </div>
     <!--S-Vue-->
 </div>
@@ -384,6 +389,7 @@
 {{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}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
 <!-- <script src="https://cdn.bootcss.com/vConsole/3.3.4/vconsole.min.js"></script>
 <script> new VConsole(); </script> -->
 <script>
@@ -466,7 +472,8 @@
         delimiters: ['${', '}'],
         el: '#v-pro',
         components: {
-          forwardshare: vmForward
+          forwardshare: vmForward,
+          bidStatusNode: bidStatusNode
         },
         data: {
             powerInfo: {
@@ -552,7 +559,10 @@
               status: 0
             },
             rownum: 1,
-            proParams: {}
+            proParams: {},
+            showBidStatus: false,
+            popupHeight: 'height: 8.8rem',
+            projectCellInfo: {}
         },
         created() {
             this.isOpening()
@@ -637,6 +647,23 @@
             // params.channelPerson = legal_person || ''
           },
 
+          setHeight: function (data) {
+            if(data === 2) {
+              this.popupHeight = 'height: 10.92rem'
+            } else {
+              this.popupHeight = 'height: 8.8rem'
+            }
+          },
+          // 更新投标状态成功
+          saveSuccess: function () {
+            this.showBidStatus = false
+            this.getBidContent()
+          },
+          // 取消更新投标状态
+          cancelUpdate: function () {
+            this.showBidStatus = false
+          },
+
           /**
            * 获取模糊渠道名称列表
            * @param str
@@ -963,6 +990,7 @@
               }
             }
             const _this = this
+            _this.projectCellInfo.sid = this.sid
             const type = weicanbiao ? 'in' : 'out';
             const url = '/jyapi/jybx/core/participate/'+ type + '/info'
             const params = {
@@ -983,7 +1011,8 @@
                     _this.getCanBiaoInfo()
                     if (type === 'in') {
                       _this.getHaveActionHistory()
-                      _this.$toast('已参标,请前往我的参标项目列表查看')
+                      _this.showBidStatus = true
+                      // _this.$toast('已参标,请前往我的参标项目列表查看')
                     }
                     // 更新收藏列表
                     const updateCBStatus = {

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

@@ -17,6 +17,8 @@
     <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='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_pro_follow_list.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}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
     <!--E-当前页面的css资源-->
 </head>
 <body>
@@ -87,6 +89,9 @@
                     <div class="j-button-manycancel" @click="manycancel()">批量取消关注30天无更新的项目</div>
                 </div>
             </div>
+            <van-popup class="j-container" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+              <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+            </van-popup>
         </div>
     </div>
     <!--S-Vue-->
@@ -107,6 +112,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}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
 <!--E-当前页面的资源-->
 <!--小于100行同css,减少请求数-->
 <script>
@@ -117,6 +123,9 @@
     var vNode = {
         delimiters: ['${', '}'],
         el: '#v-node',
+        components: {
+          bidStatusNode: bidStatusNode
+        },
         data: {
             sessStorageKey:'$data-pro_follow_list',
             scrollTop:0,//页面滚动高度
@@ -131,7 +140,10 @@
             bi: {
                 addedIds: []
             },
-            isFree:false
+            isFree:false,
+            showBidStatus: false,
+            popupHeight: 'height: 8.8rem',
+            projectCellInfo: {}
         },
         computed: {
             biEnv: function () {
@@ -193,6 +205,21 @@
                     }
                 })
             },
+            setHeight: function (data) {
+              if(data === 2) {
+                this.popupHeight = 'height: 10.92rem'
+              } else {
+                this.popupHeight = 'height: 8.8rem'
+              }
+            },
+            // 更新投标状态成功
+            saveSuccess: function () {
+              this.showBidStatus = false
+            },
+            // 取消更新投标状态
+            cancelUpdate: function () {
+              this.showBidStatus = false
+            },
             manycancel:function() {
                 this.$dialog.confirm({
                     className:'caredialog',
@@ -468,6 +495,7 @@
                     return
                 }
                 var _this = this
+                _this.projectCellInfo = item
                 var params = { bidIds: item.sid }
                 $.ajax({
                     url: '/jyapi/jybx/core/participate/in/info',
@@ -476,11 +504,12 @@
                     data: JSON.stringify(params),
                     success: function (res) {
                         if (res.error_code === 0 && res.data) {
-                            _this.$toast('已参标,请前往我的参标项目列表查看。')
+                            // _this.$toast('已参标,请前往我的参标项目列表查看。')
                             _this.$set(item, 'isCB', {
                                 id: item.sid,
                                 value: true
                             })
+                            _this.showBidStatus = true
                         } else {
                           _this.$toast(res.error_msg)
                         }

+ 48 - 14
src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html

@@ -227,6 +227,24 @@
     .vip_openDialog{
         margin-top:.3rem;
     }
+    .win-analyse .default {
+        color: #999;
+    }
+    .example-export{
+        position: absolute;
+        top:0;
+        right:.28rem;
+        color:#999;
+        margin-top:.3rem;
+        font-size:.28rem;
+        line-height:.4rem;
+        /*vertical-align: middle;*/
+    }
+    .example-export .j-icon{
+        width:.32rem;
+        height:.32rem;
+        vertical-align: text-bottom;
+    }
 
   </style>
 </head>
@@ -283,12 +301,12 @@
         <!-- 高级分析 -->
         <div class="win-analyse" ref="setRefs">
           <span class="win-bid-title">采购单位分析</span>
-          <div class="high-link" @click="goHighSet" v-if="isLogin">
+          <div class="high-link" :class="{default: !userInfo.isLogin}" @click="goHighSet">
             <span>高级分析设置</span>
             <van-icon name="arrow"></van-icon>
           </div>
         </div>
-        <div class="buyer-statistic">
+        <div class="buyer-statistic" v-if="userInfo.isLogin">
           <div class="statistic-title">统计信息</div>
           <div class="buyer-info">
             <div class="bi-item">
@@ -319,7 +337,7 @@
           <p class="jy-empty-text">对不起,没有匹配到相关信息, <br>修改时间范围或换个搜索词试试吧</p>
         </div>
         <!-- 招标动态 -->
-        <div class="dynamic" v-if="isShow.showDynamic">
+        <div class="dynamic" v-if="isShow.showDynamic && userInfo.isLogin">
           <!--                <div class="d_title">招标动态</div>-->
           <div class="selected-export-box">
             <div class="selected-export">
@@ -616,26 +634,42 @@
         </div>
         <!-- 遮罩部分 -->
         <div v-if="getStatus">
+<!--            招标动态-->
+          <div class="vip_component" style="height:8.8rem;background:#fff url('/common-module/collection/image/buyer/cg-zbdt-bg.jpg?v={{Msg "seo" "version"}}') no-repeat center 50px;background-size:100% 100%;position:relative;">
+            <p class="example-title">招标动态</p>
+            <div class="example-export">
+                <span>
+                  <i class="j-icon base-icon icon-download-999"></i>
+                  <em style="color:#999;">数据导出</em>
+                </span>
+            </div>
+             <buyer-example style="margin-top:1rem;"  :useage="usageInfo" :userinfo="userInfo" :status="bigStatus" :power="power" type="item_14" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/cg-zbdt.png?v={{Msg "seo" "version"}}'></buyer-example>
+          </div>
+<!--            统计信息-->
+         <div class="vip_component" style="height:7.56rem;background:#fff url('/common-module/collection/image/buyer/cg-tjxx-bg.png?v={{Msg "seo" "version"}}') no-repeat center 50px;background-size:100% 100%">
+            <p class="example-title">统计信息</p>
+            <buyer-example  :useage="usageInfo" :userinfo="userInfo" :status="bigStatus" :power="power" type="item_13" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/cg-tjxx.png?v={{Msg "seo" "version"}}'></buyer-example>
+         </div>
           <!-- 历史项目联系人 -->
-          <!-- <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-                <p class="example-title">历史项目联系方式</p>
-                <buyer-example :useage="usageInfo" :userinfo="userInfo" :status="bigStatus" :power="power" type="item_1" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/01.png?v={{Msg "seo" "version"}}'></buyer-example>
-              </div> -->
+<!--           <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">-->
+<!--                <p class="example-title">历史项目联系方式</p>-->
+<!--                <buyer-example :useage="usageInfo" :userinfo="userInfo" :status="bigStatus" :power="power" type="item_1" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/01.png?v={{Msg "seo" "version"}}'></buyer-example>-->
+<!--              </div>-->
           <!-- 合作企业注册资本分布 -->
-          <!-- <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/09-bg.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+          <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/09-bg.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
                 <p class="example-title">合作企业注册资本分布</p>
                 <buyer-example :useage="usageInfo" :userinfo="userInfo" :status="bigStatus" :power="power" type="item_9" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/09.png?v={{Msg "seo" "version"}}'></buyer-example>
-              </div> -->
+          </div>
           <!-- 合作企业年龄分布 -->
-          <!-- <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/10-bg.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+           <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/10-bg.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
                 <p class="example-title">合作企业年龄分布</p>
                 <buyer-example :useage="usageInfo" :userinfo="userInfo" :status="bigStatus" :power="power" type="item_10" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/10.png?v={{Msg "seo" "version"}}'></buyer-example>
-              </div> -->
+           </div>
           <!-- 合作企业注册地分布 -->
-          <!-- <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/11-bg.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
-                <p class="example-title">合作企业注册地分布</p>
+          <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/11-bg.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">
+<!--                <p class="example-title">合作企业注册地分布</p>-->
                 <buyer-example :useage="usageInfo" :userinfo="userInfo" :status="bigStatus" :power="power" type="item_11" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/11.png?v={{Msg "seo" "version"}}'></buyer-example>
-              </div> -->
+          </div>
           <!-- 年度项目统计 -->
           <div class="vip_component"
             style="height:10.8rem;background:url('/common-module/collection/image/buyer/02-bg.png?v={{Msg "seo" "version"}}') no-repeat;background-size:100% 100%">

+ 5 - 0
src/jfw/modules/app/src/web/templates/frontRouter/collection/sess/index.html

@@ -11,6 +11,7 @@
     <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='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
 </head>
 <style>
   .list-mian{
@@ -152,6 +153,9 @@
           </div>
         </div>
       </div>
+      <van-popup class="j-container" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+        <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+      </van-popup>
     </div>
   </div>
   <!--S-当前页面的资源-->
@@ -166,6 +170,7 @@
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/root-mobile.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/phone-mobile.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/index.js?v={{Msg "seo" "version"}}'></script>
   {{include "/common/baiducc.html"}}
 </body>

+ 2 - 1
src/jfw/modules/app/src/web/templates/me/login.html

@@ -2,6 +2,7 @@
 <html lang="zh">
 <head>
 	{{include "/common/meta.html"}}
+    <meta name="description" content="登录剑鱼标讯,免费查看全国招标采购项目详情。">
 	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css" />
 <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/me/css/reset.css?v={{Msg "seo" "version"}}" />
 	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
@@ -10,7 +11,7 @@
 	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/ad/css/index.css?v={{Msg "seo" "version"}}"/>
 	<script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js" type="text/javascript" charset="utf-8"></script>
 	{{include "/common/js.html"}}
-	<title>登录</title>
+	<title>登录  -  剑鱼标讯</title>
 </head>
 <style type="text/css">
   body{

+ 2 - 1
src/jfw/modules/app/src/web/templates/me/register.html

@@ -3,6 +3,7 @@
 
 	<head>
 		{{include "/common/meta.html"}}
+        <meta name="description" content="注册剑鱼标讯,免费查看全国招标采购项目详情。">
 		<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css" />
 <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/me/css/reset.css?v={{Msg "seo" "version"}}" />
 		<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/me/css/register.css?v={{Msg "seo" "version"}}" />
@@ -10,7 +11,7 @@
 		<script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js" type="text/javascript"></script>
 		{{include "/common/js.html"}}
 
-		<title>注册</title>
+		<title>立即注册  -  剑鱼标讯</title>
 	</head>
 	<style>
     .register_body{

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

@@ -4,19 +4,23 @@
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
     <meta name="keywords" content="{{.T.obj.keywords}}">
     <meta name="description" content="{{.T.obj.description}}">
-    <title>公告信息</title>
+    <title>{{.T.obj.title}} - 剑鱼标讯</title>
     <link href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/alertPopShow.css?v={{Msg "seo" "version"}}" rel="stylesheet">
     <link href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/bootstrap.min.css?v={{Msg "seo" "version"}}" rel="stylesheet">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css" />
     <link href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}" rel="stylesheet">
     <link href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/common.css?v={{Msg "seo" "version"}}" rel="stylesheet">
     <link href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/wxswordfish/style.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+    <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/public.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/j-icons.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/share.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/wxinfocontent.css?v={{Msg "seo" "version"}}1"/>
     <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/nps-common/css/nps.css?v={{Msg "seo" "version"}}'/>
     <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
     <link rel="stylesheet" href="//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css">
     <link rel="stylesheet" type="text/css" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/mainSearch/css/third-party-verify-mobile.css?v={{Msg "seo" "version"}}'/>
+    <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}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
     <script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/fastclick.min.js"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/jquery.cookie.js?v={{Msg "seo" "version"}}"></script>
@@ -27,6 +31,9 @@
 
     {{include "/common/js.html"}}
     <style>
+      html > body {
+        background: #fff;
+      }
       .unitbtn{
         margin-left: .28rem;
         font-size: 0.26rem;
@@ -57,6 +64,9 @@
       .custom-dialog{
         z-index: 100001!important;
       }
+      .popup-bid-update, .popupTime{
+        z-index: 100001!important;
+      }
       .custom-dialog .van-dialog__header{
         font-size: 18px;
         color: #161826;
@@ -193,6 +203,14 @@
         color: #FF3A20;
         margin-bottom: -19px;
       }
+      .big-ad-img {
+          display: none;
+      }
+      .big-ad-img img{
+          width:100%;
+          cursor: pointer;
+          display:none
+      }
     </style>
 </head>
 <body>
@@ -229,56 +247,56 @@
         <span class="app-back jyapp-icon jyapp-icon-zuojiantou share-back"></span>
         <span class="header-title">公告信息</span>
         <span class="header-share" id="share">
-		<img class="share-gift" src="/jyapp/images/jianyubi.png">
-		<p class="share-gift" style="font-size: 10px; line-height: 12px">分享有礼</p>
-    <div class="overlay">
-      <div class="share-sheet">
-        <div class="title">
-          <h4>分享有礼</h4>
-          <img src="/jyapp/images/img/close.png" alt="" class="close">
-        </div>
-        <!-- <div class="description">
-          <img src="/jyapp/images/hongbao.png" alt="">
-          <p>分享剑鱼标讯产品给好友,购买成功您得佣金</p>
-          <a href="/page_partner/partner/partner.html?flag=1">了解详情</a>
-        </div> -->
-        <div class="description">
-          <img src="/jyapp/images/jianyubi.png" alt="">
-          <p>分享招标信息及文档,好友访问立得剑鱼币</p>
-          <a href="/page_points_mobile/share">了解详情</a>
-        </div>
-        <div class="sheet-option">
-          <ul class="shareType">
-            <li id="weixin " class="Software">
-              <img src="/jyapp/images/img/weixin.png" alt="">
-              <span>微信</span>
-            </li>
-            <li id="pengyouquan" class="Software">
-              <img src="/jyapp/images/img/pengyouquan.png" alt="">
-              <span>朋友圈</span>
-            </li>
-            <li id="qq"  class="Software">
-              <img src="/jyapp/images/img/qq.png" alt="">
-              <span>QQ</span>
-            </li>
-            <!-- <li id="kouling">
-              <img src="/jyapp/images/img/kouling.png" alt="">
-              <span>口令分享</span>
-            </li>
-            <li id="lianjie">
-              <img src="/jyapp/images/img/lianjie.png" alt="">
-              <span>链接分享</span>
-            </li>
-            <li id="tupian1">
-              <img src="/jyapp/images/img/tupian.png" alt="">
-              <span>图片分享</span>
-            </li> -->
-          </ul>
+            <img class="share-gift" src="/jyapp/images/jianyubi.png">
+            <p class="share-gift" style="font-size: 10px; line-height: 12px">分享有礼</p>
+            <div class="overlay">
+              <div class="share-sheet">
+                <div class="title">
+                  <h4>分享有礼</h4>
+                  <img src="/jyapp/images/img/close.png" alt="" class="close">
+                </div>
+                <!-- <div class="description">
+                  <img src="/jyapp/images/hongbao.png" alt="">
+                  <p>分享剑鱼标讯产品给好友,购买成功您得佣金</p>
+                  <a href="/page_partner/partner/partner.html?flag=1">了解详情</a>
+                </div> -->
+                <div class="description">
+                  <img src="/jyapp/images/jianyubi.png" alt="">
+                  <p>分享招标信息及文档,好友访问立得剑鱼币</p>
+                  <a href="/page_points_mobile/share">了解详情</a>
+                </div>
+                <div class="sheet-option">
+                  <ul class="shareType">
+                    <li id="weixin " class="Software">
+                      <img src="/jyapp/images/img/weixin.png" alt="">
+                      <span>微信</span>
+                    </li>
+                    <li id="pengyouquan" class="Software">
+                      <img src="/jyapp/images/img/pengyouquan.png" alt="">
+                      <span>朋友圈</span>
+                    </li>
+                    <li id="qq"  class="Software">
+                      <img src="/jyapp/images/img/qq.png" alt="">
+                      <span>QQ</span>
+                    </li>
+                    <!-- <li id="kouling">
+                      <img src="/jyapp/images/img/kouling.png" alt="">
+                      <span>口令分享</span>
+                    </li>
+                    <li id="lianjie">
+                      <img src="/jyapp/images/img/lianjie.png" alt="">
+                      <span>链接分享</span>
+                    </li>
+                    <li id="tupian1">
+                      <img src="/jyapp/images/img/tupian.png" alt="">
+                      <span>图片分享</span>
+                    </li> -->
+                  </ul>
+                </div>
+              </div>
         </div>
-      </div>
-    </div>
             <!-- 分享 end -->
-	</span>
+	    </span>
     </div>
     <div class="app-layout-content-b">
         <div class="mask"></div>
@@ -445,10 +463,10 @@
                             // }
 
                             // 金额标签处理
-                            if(typeof(moneyTag.budget) != "undefined" && moneyTag.budget != null && moneyTag.budget != "" && userId){
+                            if(typeof(moneyTag.budget) != "undefined" && moneyTag.budget != null && moneyTag.budget != "" && userId && isNaN(moneyTag.budget) == false){
                                 moneyTag.content = MoneyUnit.test(moneyTag.budget);
                             }
-                            if(typeof(moneyTag.bidamount) != "undefined" && moneyTag.bidamount != null && moneyTag.bidamount != ""  && userId){
+                            if(typeof(moneyTag.bidamount) != "undefined" && moneyTag.bidamount != null && moneyTag.bidamount != ""  && userId &&  isNaN(moneyTag.bidamount) == false){
                                 moneyTag.content = MoneyUnit.test(moneyTag.bidamount);
                             }
                             if(moneyTag.content){
@@ -479,7 +497,7 @@
                               <span class="icon weishoucang"></span>
                               <span class="icon-text">收藏</span>
                           </div>
-                          {{if or .T.obj.projectname .T.obj.projectcode}}<div class="follow" style="top:1px !important;display: none">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</div><!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
+                          {{if or .T.obj.projectname .T.obj.projectcode}}<div class="follow" style="top:1px !important;">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</div><!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
                           <div class="forward-share">
                             <forwardshare :params="params"></forwardshare>
                           </div>
@@ -497,6 +515,11 @@
                         <img style="display: none;margin-left: .16rem;" class="canbiao" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/canbiao.png?v={{Msg "seo" "version"}}" alt="">
                         <span style="display: none;" class="isCB canbiao">终止参标</span>
                       </div>
+                      <van-popup class="popup-bid-update" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+                        <div class="j-container">
+                          <bid-status-node :show-bid-status="showBidStatus" @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+                        </div>
+                      </van-popup>
                     </div>
                 {{else}}
                     <!--非付费用户-->
@@ -546,10 +569,10 @@
                                 budget: {{.T.obj.budget}}
                             }
                             // 金额标签处理
-                            if(typeof(moneyTag.budget) != "undefined" && moneyTag.budget != null && moneyTag.budget != "" && userId){
+                            if(typeof(moneyTag.budget) != "undefined" && moneyTag.budget != null && moneyTag.budget != "" && userId  && isNaN(moneyTag.budget) == false){
                                 moneyTag.content = MoneyUnit.test(moneyTag.budget);
                             }
-                            if(typeof(moneyTag.bidamount) != "undefined" && moneyTag.bidamount != null && moneyTag.bidamount != "" && userId){
+                            if(typeof(moneyTag.bidamount) != "undefined" && moneyTag.bidamount != null && moneyTag.bidamount != "" && userId  && isNaN(moneyTag.bidamount) == false){
                                 moneyTag.content = MoneyUnit.test(moneyTag.bidamount);
                             }
                             if(moneyTag.content){
@@ -565,22 +588,23 @@
                     <!-- 标签列表 -->
                     <div class="collec_list"></div>
                     <div class="tool_bottom">
+                        <script>
+                          var l_publishtime = {{.T.obj.publishtimeShorDate}};
+                          if(l_publishtime != "" && l_publishtime!=null){
+                            document.write("<span class='timebefore'>"+l_publishtime+"</span>");
+                          }
+                        </script>
                         <div class="right-container">
                             <div class="collec_star">
                                 <span class="icon weishoucang"></span>
                                 <span class="icon-text">收藏</span>
                             </div>
-                            {{if or .T.obj.projectname .T.obj.projectcode}}<span class="follow" style="display: none">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</span><!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
+                            {{if or .T.obj.projectname .T.obj.projectcode}}<span class="follow">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</span><!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
                             <div class="forward-share">
                               <forwardShare :params="params"></forwardShare>
                             </div>
                         </div>
-                        <script>
-                            var l_publishtime = {{.T.obj.publishtimeShorDate}};
-                            if(l_publishtime != "" && l_publishtime!=null){
-                                    document.write("<span class='timebefore'>"+l_publishtime+"</span>");
-                            }
-                        </script>
+
                     </div>
                     <div class="refer_stand">
                       <div class="r-s-left">
@@ -592,6 +616,11 @@
                         <img class="canbiao" style="display: none;" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/canbiao.png?v={{Msg "seo" "version"}}" alt="">
                         <span class="isCB"></span>
                       </div>
+                      <van-popup class="popup-bid-update" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+                        <div class="j-container">
+                          <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+                        </div>
+                      </van-popup>
                     </div>
                 {{end}}
                 <div class="forecast" style="display: none">
@@ -600,6 +629,13 @@
                 </div>
             </div>
         </div>
+        <!--    免费用户或未登录-->
+        <div class="big-ad-img free-btn-reword">
+            <!--        拟建项目显示-->
+            <img class="nj-ad" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/focontent/ad_bigmember2.png"/>
+            <!--        采购意向显示-->
+            <img class="cgyx-ad" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/focontent/ad_bigmember.png"/>
+        </div>
         <div class="newuser hidden">
             <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/wx/newuser.png?v={{Msg "seo" "version"}}"/>
         </div>
@@ -975,6 +1011,7 @@
 <script src='/common-module/mainSearch/js/advanced-project-table-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='/common-module/nps-common/js/nps.js?v={{Msg "seo" "version"}}'></script>
 <script src='/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
+<script src='/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
 <!-- <script src="https://cdn.bootcss.com/vConsole/3.3.4/vconsole.min.js"></script>
 <script> new VConsole(); </script> -->
 <script>
@@ -1037,7 +1074,7 @@
     // 未登录展示登录模块
     if(!userId) {
       $('.noLoginShow').show()
-      $('.share-gift').hide()
+      // $('.share-gift').hide()
       $('.bid-dec-in').hide()
       $('.bigvip_drain').hide()
       $('.abs').hide()
@@ -1255,6 +1292,7 @@
                 hasServiceArr = res.data.power ? res.data.power : []
                 isFollow()
                 checkShowDialog()
+                showTopAd()
                 var isVip = {{.T.isVip}}
                 //是大会员
                 var bigWinnerTel = checkFreeView({{.T.obj.winnertel}});
@@ -1391,11 +1429,14 @@
         // 显示隐藏
         if (!canRead) {
             // $(".prebuilt").remove()
-            $('#tab2').hide() // 摘要tab1+正文tab2
-            $(".tab-ct").hide() // 正文信息
-            $(".abs").hide() // 阅读原文和意见反馈
-            $(".atta-list").hide() // 附件列表
-            $(".mask-zz").removeClass("hidden");
+            if(subtype != '拟建') {
+              $('#tab2').hide() // 摘要tab1+正文tab2
+              $(".tab-ct").hide() // 正文信息
+              $(".abs").hide() // 阅读原文和意见反馈
+              $(".atta-list").hide() // 附件列表
+              $(".mask-zz").removeClass("hidden");
+            }
+
         } else {
             $(".prebuilt").css('height', 'unset')
             if(userId) {
@@ -1405,6 +1446,13 @@
             }
         }
     }
+  // 是否展示详情上方的广告位
+  function showTopAd () {
+    if(!canRead && userId && subtype == '拟建') {
+      $('.big-ad-img').show()
+      $('.nj-ad').show()
+    }
+  }
     function appAutoLogin(){
       // 去登录
         const url = `/jyapp/article/content/${id}.html`
@@ -1628,6 +1676,35 @@
     //     }
     //   })
     // }
+    // 参标展示更新投标状态弹窗
+    var showUpdateBid = new Vue({
+      el: '.refer_stand',
+      components: {
+        bidStatusNode: bidStatusNode
+      },
+      data: {
+        showBidStatus: false,
+        popupHeight: 'height: 8.8rem;z-index:100001!important',
+        projectCellInfo: {}
+      },
+      methods: {
+        setHeight: function (data) {
+          if(data === 2) {
+            this.popupHeight = 'height: 10.92rem;z-index:100001!important'
+          } else {
+            this.popupHeight = 'height: 8.8rem;z-index:100001!important'
+          }
+        },
+        // 更新投标状态成功
+        saveSuccess: function () {
+          this.showBidStatus = false
+        },
+        // 取消更新投标状态
+        cancelUpdate: function () {
+          this.showBidStatus = false
+        },
+      }
+    })
 
     // 点击参标
     $('.refer_stand .r-s-right').on('click', function(e) {
@@ -1646,6 +1723,7 @@
       const params = {
         bidIds: id
       }
+      showUpdateBid.projectCellInfo.sid = id
       const outParams = {
         projectIds: canBiaoInfo.projectId
       }
@@ -1659,7 +1737,8 @@
             if(res.data) {
               getCanBiaoInfo()
               if (type === 'in') {
-                EasyAlert.show('已参标,请前往我的参标项目列表查看')
+                showUpdateBid.showBidStatus = true
+                // EasyAlert.show('已参标,请前往我的参标项目列表查看')
               }
               // 更新收藏列表
               const updateCBStatus = {
@@ -2333,6 +2412,12 @@
           },100)
       });
       $(".header-share").click(function(){
+         if(!userId){
+           $('.overlay').hide()
+           const url = `/jyapp/article/content/${id}.html`
+           autoLogin(url)
+           return
+         }
           $(".depthread-share").hide();
           $("#sharelist").toggleClass("hide");
       });

+ 29 - 3
src/jfw/modules/bigmember/src/entity/portrait.go

@@ -1,12 +1,14 @@
 package entity
 
 import (
+	"app.yhyue.com/moapp/jybase/es"
 	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
 	"errors"
 	"fmt"
 	"jy/src/jfw/modules/bigmember/src/config"
 	"jy/src/jfw/modules/bigmember/src/db"
 	"log"
+	"math/rand"
 	"strings"
 	"time"
 
@@ -112,15 +114,39 @@ func CreatePortraitManagerForContacts(session *httpsession.Session, entType int6
 	return &Portrait{uid, session}, nil
 }
 
+func NoLoginAssociatedInfo(entId string) []map[string]interface{} {
+	var (
+		winnerData []map[string]interface{}
+	)
+	entinfo, ok := db.Mgo_Ent.FindOneByField("qyxy_std", map[string]interface{}{"_id": entId}, map[string]interface{}{
+		"company_area": 1, //城市
+	})
+	if ok && entinfo != nil && len(*entinfo) > 0 {
+		randGen := rand.New(rand.NewSource(time.Now().UnixNano()))
+		from := randGen.Intn(100)
+		//关联中标企业
+		r := es.Get("winner", "winner", fmt.Sprintf(`{"query": {"bool": {"must": [{"query_string": {"default_field": "city","query": "%s*"}}]}},"_source": ["_id","name"],"from": %d,"size": 30}`, qutil.InterfaceToStr((*entinfo)["company_area"]), from))
+		if r != nil {
+			winnerData = *r
+		}
+
+		for _, v := range winnerData {
+			v["_id"] = encrypt.EncodeArticleId2ByCheck(qutil.InterfaceToStr(v["_id"]))
+		}
+	}
+	return winnerData
+}
+
 // CreateSubVipPortraitManager 超级订阅权限校验
 // int -1无权限 1免费权限 2超级订阅次数&采购单位流量包 3使用体验
 func CreateSubVipPortraitManager(userid string, pageFlag, searchValue string, isWinner bool, session *httpsession.Session) (*Portrait, int, error, bool) {
 	if userid == "" {
+		if pageFlag == "entDetail" { //未登录用户获取基本信息 与基础分析信息
+			return &Portrait{userid, session}, 1, nil, true
+		}
 		return nil, -1, errors.New("未登录"), true
 	}
-	if pageFlag == "" {
-		return nil, -1, errors.New("未知请求"), true
-	}
+
 	if pageFlag != "entDetail" { //需要权限校验的接口
 		bigMsg := jy.GetBigVipUserBaseMsg(session, *config.Middleground)
 		if bigMsg.VipStatus <= 0 || bigMsg.Vip_BuySet.Upgrade != 1 { //免费用户留资体验

+ 46 - 40
src/jfw/modules/bigmember/src/filter/sessionfilter.go

@@ -1,57 +1,63 @@
 package filter
 
 import (
-    "jy/src/jfw/modules/bigmember/src/config"
-    "jy/src/jfw/modules/bigmember/src/db"
-    "net/http"
-    "regexp"
+	"jy/src/jfw/modules/bigmember/src/config"
+	"jy/src/jfw/modules/bigmember/src/db"
+	"net/http"
+	"regexp"
+	"strings"
 
-    . "app.yhyue.com/moapp/jybase/api"
-    util "app.yhyue.com/moapp/jybase/common"
-    "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
+	. "app.yhyue.com/moapp/jybase/api"
+	util "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 
-    "app.yhyue.com/moapp/jybase/go-xweb/xweb"
+	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
 )
 
-//登录限制
+// 登录限制
 type sessionfilter struct {
-    App *xweb.App
+	App *xweb.App
 }
 
-//需要权限判断的地址
+// 需要权限判断的地址
 var needReg = regexp.MustCompile("^/bigmember/(potential|forecast|decision|analysis|subscribe)/.+$") //画像接口中判断权限
 
 func init() {
-    jy.InitBigVipService(db.Mysql)
+	jy.InitBigVipService(db.Mysql)
 }
 
 func (l *sessionfilter) Do(w http.ResponseWriter, req *http.Request) bool {
-    session := l.App.SessionManager.Session(req, w)
-    getSession := session.GetMultiple()
-    if getSession["userId"] != nil && getSession["mgoUserId"] == nil && util.Int64All(getSession["positionType"]) == 0 {
-        session.Set("mgoUserId", getSession["userId"])
-    }
-    match := needReg.FindStringSubmatch(req.URL.Path)
-    if len(match) == 0 {
-        return true
-    }
-    //免费用户搜索词订阅接口开放
-    if req.URL.Path == "/bigmember/subscribe/freeUser/searchSubscribe" || req.URL.Path == "/bigmember/subscribe/freeUser/subscribeSearch" {
-        return true
-    }
-    userId, ok := getSession["userId"].(string)
-    if !ok || userId == "" {
-        R.ServeJson(w, req, &Result{Error_code_1004, Error_msg_1004, nil})
-        return false
-    }
-    //投标决策分析前置接口开放
-    if req.URL.Path == "/bigmember/decision/freeDecInfo" || req.URL.Path == "/bigmember/analysis/projectName" || req.URL.Path == "/bigmember/analysis/projectInfo" || req.URL.Path == "/bigmember/project/getPdfDetail" {
-        return true
-    }
-    bigMeg := jy.GetBigVipUserBaseMsg(session, *config.Middleground)
-    if !bigMeg.CheckBigVipBackPower(match[1]) {
-        R.ServeJson(w, req, &Result{Error_code_1004, Error_msg_1004, nil})
-        return false
-    }
-    return true
+	session := l.App.SessionManager.Session(req, w)
+	getSession := session.GetMultiple()
+	if getSession["userId"] != nil && getSession["mgoUserId"] == nil && util.Int64All(getSession["positionType"]) == 0 {
+		session.Set("mgoUserId", getSession["userId"])
+	}
+	match := needReg.FindStringSubmatch(req.URL.Path)
+	if len(match) == 0 {
+		return true
+	}
+	//免费用户搜索词订阅接口开放
+	if req.URL.Path == "/bigmember/subscribe/freeUser/searchSubscribe" || req.URL.Path == "/bigmember/subscribe/freeUser/subscribeSearch" {
+		return true
+	}
+	userId, ok := getSession["userId"].(string)
+	if !ok || userId == "" {
+		R.ServeJson(w, req, &Result{Error_code_1004, Error_msg_1004, nil})
+		return false
+	}
+	//投标决策分析前置接口开放
+	if strings.Contains(req.URL.Path, "/bigmember/decision/freeDecInfo") || strings.Contains(req.URL.Path, "/bigmember/analysis/projectName") ||
+		strings.Contains(req.URL.Path, "/bigmember/analysis/projectInfo") || strings.Contains(req.URL.Path, "/bigmember/project/getPdfDetail") {
+		return true
+	}
+	//企业画像部分免费功能接口开放
+	if strings.Contains(req.URL.Path, "/bigmember/portrait/subVipPortrait/entDetail") { //超级订阅页面基本信息接口
+		return true
+	}
+	bigMeg := jy.GetBigVipUserBaseMsg(session, *config.Middleground)
+	if !bigMeg.CheckBigVipBackPower(match[1]) {
+		R.ServeJson(w, req, &Result{Error_code_1004, Error_msg_1004, nil})
+		return false
+	}
+	return true
 }

+ 3 - 3
src/jfw/modules/bigmember/src/go.mod

@@ -5,7 +5,7 @@ go 1.19
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20230614085041-f8f20842d5cb
 	app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545
-	app.yhyue.com/moapp/jypkg v0.0.0-20230627060822-53aa53e4d064
+	app.yhyue.com/moapp/jypkg v0.0.0-20230710012638-0d2f7219700e
 	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.13
 	github.com/donnie4w/go-logger v0.0.0-20230316073421-36a48f87a69a
 	github.com/gogf/gf/v2 v2.4.2
@@ -125,7 +125,7 @@ require (
 	google.golang.org/appengine v1.6.7 // indirect
 	google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
 	google.golang.org/grpc v1.56.1 // indirect
-	google.golang.org/protobuf v1.30.0 // indirect
+	google.golang.org/protobuf v1.31.0 // indirect
 	gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/ini.v1 v1.67.0 // indirect
@@ -134,7 +134,7 @@ require (
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	gorm.io/driver/mysql v1.0.5 // indirect
 	gorm.io/gorm v1.21.3 // indirect
-	jygit.jydev.jianyu360.cn/ApplicationCenter/publicService v0.0.0-20230626055559-2b719f6c6602 // indirect
+	jygit.jydev.jianyu360.cn/ApplicationCenter/publicService v0.0.0-20230630032508-eefb06a4588e // indirect
 	k8s.io/api v0.26.3 // indirect
 	k8s.io/apimachinery v0.27.0-alpha.3 // indirect
 	k8s.io/client-go v0.26.3 // indirect

+ 6 - 6
src/jfw/modules/bigmember/src/go.sum

@@ -9,8 +9,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20230614085041-f8f20842d5cb h1:fT7FIKElKjkRHTm
 app.yhyue.com/moapp/jybase v0.0.0-20230614085041-f8f20842d5cb/go.mod h1:D40Ae0rQilH8Hc5o2Vtt04Tjh/DNEFpcS3/WkJMPJb8=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545 h1:+Lak4m1zgsigQloOsvp8AJ+0XeX/+PGp9QP550xlbBQ=
 app.yhyue.com/moapp/jylog v0.0.0-20230522075550-05d7230ca545/go.mod h1:uFrsdUBFbETiJlEmr4PtJWPsZlUpPj2bHQRhryu6ggk=
-app.yhyue.com/moapp/jypkg v0.0.0-20230627060822-53aa53e4d064 h1:iHqmyjzumVbeWeN1f4l+cpuRBizCO/VZvOUyGD5b/EM=
-app.yhyue.com/moapp/jypkg v0.0.0-20230627060822-53aa53e4d064/go.mod h1:JBkMSnaOQbfV80laTPwjzjfP6nLXOQpJBaNUdvKV2tw=
+app.yhyue.com/moapp/jypkg v0.0.0-20230710012638-0d2f7219700e h1:phO8+opFgz3p1XebtdLepM1u8q/TE/EgLYjP4Ebt/jU=
+app.yhyue.com/moapp/jypkg v0.0.0-20230710012638-0d2f7219700e/go.mod h1:wbDWBpLODtGhkQw4dCShvmRr6G8CazuW8kWq42paQOM=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae h1:6rDDaz6yxvE8viTSzEBwKYOFWq14TMfuBivSazUZMz4=
 app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
 bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e h1:h+VEI3o1qC0jeCzkFGTrLI4f27cfa/W/y+0sXokWMgE=
@@ -1358,8 +1358,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
-google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
+google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
 gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
@@ -1420,8 +1420,8 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
 honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
 honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-jygit.jydev.jianyu360.cn/ApplicationCenter/publicService v0.0.0-20230626055559-2b719f6c6602 h1:lZ0XCzRDSOBaoJczQudZ3KZhRs4zm5sjboDpwuYZUVM=
-jygit.jydev.jianyu360.cn/ApplicationCenter/publicService v0.0.0-20230626055559-2b719f6c6602/go.mod h1:Jjhym3U0MFdSgeafHPm758NefCPZpekg2sWPh6Gy6Jk=
+jygit.jydev.jianyu360.cn/ApplicationCenter/publicService v0.0.0-20230630032508-eefb06a4588e h1:1O11hFuKvLD3Ls+9wxssUpMV3fG9qD4EfeeAy92dsWY=
+jygit.jydev.jianyu360.cn/ApplicationCenter/publicService v0.0.0-20230630032508-eefb06a4588e/go.mod h1:wBxeFODhYtGenkxXJGThN/VrFaxPvvHMxzpS09pxApM=
 k8s.io/api v0.22.9/go.mod h1:rcjO/FPOuvc3x7nQWx29UcDrFJMx82RxDob71ntNH4A=
 k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU=
 k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE=

+ 29 - 0
src/jfw/modules/bigmember/src/service/portrait/memberPortraitAction.go

@@ -34,6 +34,7 @@ type EntPortrait struct {
 	buyerMiniPortrait xweb.Mapper `xweb:"/portrait/buyer/miniData"`        //三级页展示采购单位基础画像信息
 	portraitContacts  xweb.Mapper `xweb:"/portrait/contacts"`              // 画像通讯录接口
 
+	noLoginAssociatedInfo xweb.Mapper `xweb:"/portrait/winner/noLoginAssociatedInfo"` //未登录用户画像详情页、关联标讯动态&关联中标企业
 }
 
 // EntDetail 企业基本信息
@@ -510,6 +511,34 @@ func (this *EntPortrait) PortraitContacts() {
 	this.ServeJson(NewResult(rData, errMsg))
 }
 
+func (this *EntPortrait) NoLoginAssociatedInfo() {
+	rData := func() interface{} {
+		entId := util.DecodeId(this.GetString("entId"))
+		if entId == "" {
+			return nil
+		}
+		// 未登录用户关联中标企业
+		data := entity.NoLoginAssociatedInfo(entId)
+		var cepm *entity.Portrait
+		rData, _, _ := cepm.GetWinnerNewMsg(&entity.PortraitProjectScreen{
+			Screen: &entity.PortraitScreen{
+				Ent:        entId,
+				Match:      this.GetString("match"),
+				ExactMatch: this.GetString("exactMatch") == "1",
+				MatchRange: this.GetString("matchRange"),
+				Area:       this.GetString("area"),
+				ScopeClass: this.GetString("scopeClass"),
+				TimeRange:  this.GetString("timeRange"),
+				HasPower:   true,
+			},
+			PageNum:  1,
+			PageSize: 10,
+		})
+		return map[string]interface{}{"hostWinner": data, "newWinner": rData}
+	}()
+	this.ServeJson(NewResult(rData, nil))
+}
+
 // formatContact 格式化混淆联系人电话
 func formatContact(contactList []map[string]interface{}) (confusing []map[string]interface{}, total int) {
 	total = len(contactList)

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

@@ -332,6 +332,9 @@ func (this *SubVipPortrait) BuyerNewMsg() {
 		if buyer == "" {
 			return nil, fmt.Errorf("参数异常")
 		}
+		if userId == "" {
+			return nil, fmt.Errorf("未登录")
+		}
 		pageNum, _ := this.GetInteger("pageNum")
 		pageSize, _ := this.GetInteger("pageSize")
 		cepm, power, err, _ := entity.CreateSubVipPortraitManagerForOpen(userId, "buyerPortrait", buyer, false, this.Session())
@@ -484,7 +487,17 @@ func (this *SubVipPortrait) BuyerPortrait() {
 		if power == 3 {
 			rData["onTrial"] = true
 		}
+<<<<<<< HEAD
 		rData["name"] = buyerName
+=======
+		if userId == "" { //未登录用户限制字段
+			rData = map[string]interface{}{
+				"city":       rData["city"],
+				"buyerclass": rData["buyerclass"],
+				"province":   rData["province"],
+			}
+		}
+>>>>>>> master
 		return rData, nil
 	}()
 	if errMsg != nil {

+ 15 - 5
src/jfw/modules/bigmember/src/service/use/use.go

@@ -663,6 +663,7 @@ type UserInfo struct {
 	MemberPowerType int64                 `json:"memberPowerType"` ////大会员权益类型 0无 1个人 2企业
 	VipPowerType    int64                 `json:"vipPowerType"`    ////超级订阅权益类型 0无 1个人 2企业
 	VipBefore202209 bool                  `json:"vipBefore202209"` //超级订阅:超前项目权限
+	EntSubscribe    int64                 `json:"entSubscribe"`    // 是否有企业订阅权限;0:否 1:是
 }
 
 // 是否使用过首次使用
@@ -693,19 +694,28 @@ func (u *Use) IsAdd() {
 			FreeFile:        bigPower.FreeFile,
 			FreeHasKey:      bigPower.FreeHasKey,
 			VipBefore202209: bigPower.VipStatus > 0 && bigPower.VipStartDate < config.Config.ContextOldVipLimit, //超级订阅 超前项目权限
+			EntSubscribe:    bigPower.EntSubscribe,
 		}
-		userInfo.EntName = bigPower.Data.Ent.Name
-		userInfo.EntRoleId = int(bigPower.Data.Ent.EntRoleId)
+		var (
+			//Name string
+			IsEntPower, PowerSource int64
+		)
+		if bigPower.Data != nil {
+			userInfo.EntName = bigPower.Data.Ent.Name
+			userInfo.EntRoleId = int(bigPower.Data.Ent.EntRoleId)
+			IsEntPower, PowerSource = bigPower.Data.Entniche.IsEntPower, bigPower.Data.Ent.PowerSource
+		}
+
 		//是否是商机管理有效用户:1、管理员和员工已分配功能
-		userInfo.EntNiche = bigPower.EntnicheStatus == 1 && bigPower.Data.Entniche.IsEntPower > 0
+		userInfo.EntNiche = bigPower.EntnicheStatus == 1 && IsEntPower > 0
 		userInfo.EntIsNew = bigPower.EntIsNew && userInfo.EntNiche
 		//有商机管理服务的用户 就不是商机管理用户
-		if userInfo.IsEntService = bigPower.Data.Ent.PowerSource > 0 && bigPower.Data.Entniche.IsEntPower > 0; userInfo.IsEntService {
+		if userInfo.IsEntService = PowerSource > 0 && IsEntPower > 0; userInfo.IsEntService {
 			userInfo.EntIsNew = false
 			userInfo.EntNiche = false
 		}
 		power := []int{}
-		for k, _ := range bigPower.PowerMap {
+		for k := range bigPower.PowerMap {
 			power = append(power, k)
 		}
 		userInfo.Powers = power

+ 13 - 22
src/jfw/modules/publicapply/src/config.json

@@ -20,27 +20,17 @@
     "微信"
   ],
   "defaultEntList": [
-    "744fb1d7cc3561e11c639fcc2ad955c0",
-    "d47dc00fc4453115d4562ab7ce3144c2",
-    "eb1998800775782e1e80e55a325a42ca",
-    "118b315754f688151b1b2b82c2fb7511",
-    "dd049424278d809c5f5ebc1980c254bf",
-    "5e79625afc8952e7123459e9826ed3c1",
-    "372fd29ec10178affd656996ced9480f",
-    "11c4fe5273ab36ee4ee1a5b1a779d543",
-    "66264174942f9e958ee65b98bcd63f1b",
-    "bf2d5bb853e7935d9e8714a34b53cae1",
-    "8945af2c1a25e9138cb64774cf66fa4b",
-    "971ee9b68eb80fc001258d6bd0bbc57a",
-    "8426311c8e40dc50e5583ce686d4d5bc",
-    "434ab2c08bd8b8c84f2946dc9bae3630",
-    "899ba5bb52a17a92bb9b1868fe30cf08",
-    "c882c88dcb108f2445773b0aad030edc",
-    "ddb4a8abeebd2702a64d0aa4e9172e4a",
-    "ea5547e5826dac4253c00901019a31c5",
-    "9ae1bcd5e1c5c24631515a1193073fa5",
-    "4c9a591604f1a3eb74857fc9de35e9ff",
-    "3613232bc702d011232ed57f0027af1c"
+    "f7d9f7d154b23dd9c452f524de7acdbf",
+    "6ff2aa1d5e6a6c204c73f1f6ca81e48c",
+    "f7771fbf5d58d45666c04e6d3b114d2b",
+    "3c6d8861c7fea94b70f26a479eb8fa4e",
+    "247656122264aa9a2a695fdd1582b461",
+    "11d5ad68a5bb0fa8b0888e48284a8495",
+    "379d50aa0a11aac4df87a8fd760f993e",
+    "3f84f8fb2ef64accfa28bce6ca0b752b",
+    "7bef6e00b6fc361ad19fe976e0c4bfdc",
+    "4a4e368b498926aeb42c171c5ebaa5e2"
+
   ],
   "bidSearchOldUserLimit": 1626105600,
   "attachmentRPC": "192.168.3.206:10082",
@@ -60,5 +50,6 @@
     "^[)\\)>》】\\]}}〕,,;;::'\"“”。.\\??、/+=\\_—*&……\\^%$¥@!!`~·(\\(<《【\\[{{〔]+$",
     "^([0-9]{1,3}|[零一二三四五六七八九十]{1,2}|联系人?|电话|地址|编号|采购|政府采购|成交|更正|招标|中标|变更|结果)$",
     "^[的人号时元万公告项目地址电话邮编日期联系招标中结果成交项目项目采购采购项目政府采购公告更正公告]+$"
-  ]
+  ],
+  "entSearchLimit": 100
 }

+ 4 - 3
src/jfw/modules/publicapply/src/config/config.go

@@ -31,9 +31,10 @@ type config struct {
 		CustomerNumb   int
 		EnterpriseNumb int
 	}
-	ExhibitionLog string
-	TipInfo       map[string]int64
-	FilterReg     []string
+	ExhibitionLog  string
+	TipInfo        map[string]int64
+	FilterReg      []string
+	EntSearchLimit int64
 }
 type BidColl struct {
 	PayUserCollLimit      int    //付费用户收藏数量最大限制

+ 63 - 21
src/jfw/modules/publicapply/src/enterpriseSearch/entity/entQuery.go

@@ -70,7 +70,7 @@ var (
 	}
 )
 
-//Check 校验查询参数是否合法
+// Check 校验查询参数是否合法
 func (es *EnterpriseSearch) Check() (*EnterpriseSearch, error) {
 	if es.PageSize == 0 { //默认十条
 		es.PageSize = 10
@@ -118,7 +118,7 @@ func (es *EnterpriseSearch) Check() (*EnterpriseSearch, error) {
 	return es, nil
 }
 
-//判断是否是空查询
+// 判断是否是空查询
 func (es *EnterpriseSearch) isEmptySearch() bool {
 	if es.Match == "" &&
 		es.EntArea == "" &&
@@ -135,9 +135,9 @@ func (es *EnterpriseSearch) isEmptySearch() bool {
 	return false
 }
 
-//GetQuerySql 获取检索语句
-//return  company_name、company_status、legal_person、capital、company_address、id、company_shortname
-//返回字段 企业名称、企业状态、法人、注册资本、地址、企业id、企业简称
+// GetQuerySql 获取检索语句
+// return  company_name、company_status、legal_person、capital、company_address、id、company_shortname
+// 返回字段 企业名称、企业状态、法人、注册资本、地址、企业id、企业简称
 func (es *EnterpriseSearch) GetQuerySql() (string, string) {
 	musts := make([]string, 0, 0)
 	//仅展示公司类型小于等于22的 company_type_int  22
@@ -251,10 +251,20 @@ func (es *EnterpriseSearch) GetQuerySql() (string, string) {
 	return fmt.Sprintf(entQueryCount, strings.Join(musts, ","), ""), fmt.Sprintf(entQuery, strings.Join(musts, ","), "")
 }
 
-//DoQuery 根据EnterpriseSearch参数进行企业相关查询
+// DoQuery 根据EnterpriseSearch参数进行企业相关查询
 func (es *EnterpriseSearch) DoQuery() (list *[]map[string]interface{}, total int64, err error) {
 	if es.isEmptySearch() { //是否是空查询,返回默认企业
 		list = GetEntIndexShow()
+		if list != nil {
+			total = int64(len(*list))
+			start := es.PageNum * es.PageSize
+			end := start + es.PageSize
+			if start+es.PageSize > len(*list) {
+				end = len(*list) - 1
+			}
+			listData := (*list)[start:end]
+			list = &listData
+		}
 		return
 	}
 	countSql, sql := es.GetQuerySql()
@@ -262,26 +272,29 @@ func (es *EnterpriseSearch) DoQuery() (list *[]map[string]interface{}, total int
 	start, limit := es.PageNum*es.PageSize, es.PageSize
 	total = -1
 
-	if !es.IsVip {
-		start, limit = 0, freeSearchNum
-	} else if start == 0 {
-		total = elastic.Count(index, itype, countSql)
-		if total == 0 {
-			return
-		}
+	/*if !es.IsVip {
+	  	start, limit = 0, freeSearchNum
+	  } else if start == 0 {
+	  	total = elastic.Count(index, itype, countSql)
+	  	if total == 0 {
+	  		return
+	  	}
+	  }*/
+	total = elastic.Count(index, itype, countSql)
+	if total == 0 {
+		return
 	}
 	sql = sql[:len(sql)-1] + fmt.Sprintf(`,"from":%d,"size":%d}`, start, limit)
 	list = elastic.Get(index, itype, sql)
 
 	list = formatData(list)
-
-	if total > searchMaxLimit {
-		total = searchMaxLimit
+	if total > config.Config.EntSearchLimit {
+		total = config.Config.EntSearchLimit
 	}
 	return
 }
 
-////格式化字段,加密id
+// //格式化字段,加密id
 func formatData(list *[]map[string]interface{}) *[]map[string]interface{} {
 	if list != nil {
 		for index, _ := range *list {
@@ -303,7 +316,7 @@ func formatData(list *[]map[string]interface{}) *[]map[string]interface{} {
 	return list
 }
 
-//暂不处理前端处理
+// 暂不处理前端处理
 func getCompanyShortName(entName string) string {
 	if entName == "" {
 		return ""
@@ -313,6 +326,15 @@ func getCompanyShortName(entName string) string {
 	return ""
 }
 
+type entIds struct {
+	Entids struct {
+		Buckets []struct {
+			Key      string `json:"key"`
+			DocCount int    `json:"doc_count"`
+		} `json:"buckets"`
+	} `json:"entids"`
+}
+
 func GetEntIndexShow() (list *[]map[string]interface{}) {
 	bytes, err := redis.GetBytes(entSearchCacheDB, entSearchCacheKey)
 	if err == nil {
@@ -320,8 +342,28 @@ func GetEntIndexShow() (list *[]map[string]interface{}) {
 			return
 		}
 	}
-	sql := fmt.Sprintf(entQuery, fmt.Sprintf(`{"terms":{"_id":["%s"]}}`, strings.Join(config.Config.DefaultEntList, "\",\"")), "")
-	sql = sql[:len(sql)-1] + fmt.Sprintf(`,"from":%d,"size":%d}`, 0, 50)
+	var thisRow entIds
+	entSql := fmt.Sprintf(`{"query": {"bool": {"must": []}},"aggs": {"entids": {"terms": {"field": "entidlist","size": 100,"exclude": ["-",""]}}},"size": 0}`)
+	entAggs, _, _ := elastic.GetAggs("projectset", "projectset", entSql)
+	if entAggs != nil {
+		for name, object := range entAggs {
+			bArr, err := object.MarshalJSON()
+			if len(bArr) == 0 || err != nil {
+				continue
+			}
+			if name == "entids" {
+				if json.Unmarshal(bArr, &thisRow.Entids) != nil {
+					continue
+				}
+			}
+		}
+	}
+	var ids []string
+	for _, v := range thisRow.Entids.Buckets {
+		ids = append(ids, v.Key)
+	}
+	sql := fmt.Sprintf(entQuery, fmt.Sprintf(`{"terms":{"_id":["%s"]}}`, strings.Join(ids, "\",\"")), "")
+	sql = sql[:len(sql)-1] + fmt.Sprintf(`,"from":%d,"size":%d}`, 0, 100)
 	listTmp := elastic.Get(index, itype, sql)
 	if listTmp != nil && len(*listTmp) > 0 {
 		list = formatData(listTmp)
@@ -330,7 +372,7 @@ func GetEntIndexShow() (list *[]map[string]interface{}) {
 	return
 }
 
-//formatEstablishTime 格式化成立时间
+// formatEstablishTime 格式化成立时间
 // Year range
 // [start]y-[end]y
 // Timestamp range

+ 1 - 1
src/jfw/modules/publicapply/src/enterpriseSearch/service/search.go

@@ -39,7 +39,7 @@ func (esa *EnterpriseSearchAction) DoEntSearch() {
 			return nil, err
 		}
 		//查询是否是会员
-		if vipData := jy.GetBigVipUserBaseMsg( esa.Session(),*config.Middleground); vipData.Status > 0 || vipData.VipStatus > 0 {
+		if vipData := jy.GetBigVipUserBaseMsg(esa.Session(), *config.Middleground); vipData.Status > 0 || vipData.VipStatus > 0 {
 			entSearch.IsVip = true
 		}
 		//查询

+ 3 - 2
src/jfw/modules/publicapply/src/filter/sessionfilter.go

@@ -12,7 +12,7 @@ import (
 	"app.yhyue.com/moapp/jypkg/identity"
 )
 
-//登录限制
+// 登录限制
 type sessionfilter struct {
 	App *xweb.App
 }
@@ -21,6 +21,7 @@ var reg = regexp.MustCompile("^/publicapply/free/.*")
 var reg_share = regexp.MustCompile("^/publicapply/shareFission/.*")
 var reg_nps = regexp.MustCompile("^/publicapply/nps/.*")
 var regWhiteList = regexp.MustCompile("^/publicapply/userbase/whitelist$")
+var regEntSearch = regexp.MustCompile("^/publicapply/enterpriseSearch/doQuery") //企业搜索接口
 
 func (l *sessionfilter) Do(w http.ResponseWriter, req *http.Request) bool {
 	session := l.App.SessionManager.Session(req, w)
@@ -31,7 +32,7 @@ func (l *sessionfilter) Do(w http.ResponseWriter, req *http.Request) bool {
 	if getSession["base_user_id"] != nil && getSession["positionId"] == nil {
 		identity.SwitchToBest(util.Int64All(getSession["base_user_id"]), session, Middleground, &Mgo, false)
 	}
-	if reg.MatchString(req.URL.Path) || reg.MatchString(req.URL.Path) || reg_share.MatchString(req.URL.Path) || reg_nps.MatchString(req.URL.Path) {
+	if regEntSearch.MatchString(req.URL.Path) || reg.MatchString(req.URL.Path) || reg.MatchString(req.URL.Path) || reg_share.MatchString(req.URL.Path) || reg_nps.MatchString(req.URL.Path) {
 		return true
 	}
 	if regWhiteList.MatchString(req.URL.Path) { // 判断用户是不是白名单接口不拦截

+ 76 - 13
src/seo.json

@@ -1,16 +1,73 @@
 {
     "cdn": "",
     "qfw": {
-        "swordfish": {
-            "description": "剑鱼标讯是国内专业的招标大数据服务平台,专注于全国招标采购信息的搜索查询、订阅推送和数据定制化服务。提供涵盖拟在建项目、招标预告、招标公告、中标公告、政府采购、企业工商信息等多种信息类型,帮助企业全方位掌握市场动态变化。招投标大数据平台就用剑鱼标讯。",
-            "key": "招标,招标网,招投标,招标信息,招标采购,政府采购,拟在建项目,中标信息,中标公示,大数据,人工智能,剑鱼,剑鱼招标,剑鱼招标订阅,剑鱼标讯",
-            "title": "剑鱼标讯-招标信息查询_全国招标采购信息订阅推送_专业招标大数据服务平台"
-        },
-        "swordfishsl": {
-            "description": "剑鱼标讯搜索功能依据用户输入的招标关键词,快速展现最新最全的行业招标信息搜索结果,招标公告与中标公告,一应俱全。",
-            "key": "招标搜索结果,招标搜索,剑鱼标讯",
-            "title": "_剑鱼标讯,全行业招标信息智能推送领导者!"
+      "swordfish": {
+        "description": "行业资讯栏目提供全网最全的招投标新闻资讯、舆情信息、行业动态、采购案例,覆盖建筑工程、弱电安防、能源化工、医疗卫生、信息技术、办公文教、机械设备、水利水电、交通运输、市政设施等",
+        "key": "招投标资讯,招投标新闻舆情,建筑工程资讯,招标采购动态,剑鱼标讯",
+        "title": "剑鱼标讯-招标信息查询_全国招标采购信息订阅推送_专业招标大数据服务平台"
+      },
+      "swordfishsl": {
+        "description": "剑鱼标讯搜索功能依据用户输入的招标关键词,快速展现最新最全的行业招标信息搜索结果,招标公告与中标公告,一应俱全。",
+        "key": "招标搜索结果,招标搜索,剑鱼标讯",
+        "title": "_剑鱼标讯,全行业招标信息智能推送领导者!"
+      },
+      "hyzx": {
+        "xxjs": {
+          "description": "信息技术频道为您提供全国信息技术行业资讯新闻、行业动态、知识、应用、发展趋势、政策法规等内容,查看信息技术应用,信息技术发展趋势等相关内容就上剑鱼标讯。",
+          "key": "信息技术资讯,信息技术知识,信息技术应用,信息技术发展趋势,剑鱼标讯",
+          "title": "信息技术行业资讯 - 剑鱼标讯"
+        },
+        "slsd": {
+          "description": "剑鱼标讯水利水电频道为您提供全国水利水电行业资讯新闻、行业动态、知识、技术、应用、发展趋势、政策法规等内容,查看水利水电技术,水利水电应用等相关内容就上剑鱼标讯。",
+          "key": "水利水电资讯,水利水电知识,水利水电技术,水利水电应用,剑鱼标讯",
+          "title": "水利水电行业资讯 - 剑鱼标讯"
+        },
+        "jzgc": {
+          "description": "建筑工程频道为您提供全国建筑工程行业资讯新闻、行业动态、知识、技术,应用、发展趋势、政策法规等内容,查看建筑工程技术,建筑工程管理等相关内容就上剑鱼标讯。",
+          "key": "建筑工程资讯,建筑工程知识,建筑工程技术,建筑工程管理,剑鱼标讯",
+          "title": "建筑工程行业资讯 - 剑鱼标讯"
+        },
+        "jtys": {
+          "description": "交通运输频道为您提供全国交通运输行业资讯新闻、行业动态、知识,技术、应用、政策法规等内容,查看交通运输动态,交通运输政策等相关内容就上剑鱼标讯。",
+          "key": "交通运输资讯,交通运输知识,交通运输动态,交通运输政策,剑鱼标讯",
+          "title": "交通运输行业资讯 - 剑鱼标讯"
+        },
+        "ylws": {
+          "description": "医疗卫生频道为您提供全国医疗卫生行业资讯新闻、行业动态、知识,技术、应用、政策法规等内容,查看医疗卫生装备,医疗卫生改革信息等相关内容就上剑鱼标讯。",
+          "key": "医疗卫生资讯,医疗卫生知识,医疗卫生装备,医疗卫生改革,剑鱼标讯",
+          "title": "医疗卫生行业资讯 - 剑鱼标讯"
+        },
+        "jxsb": {
+          "description": "机械设备频道为您提供全国机械设备行业资讯新闻、行业动态、知识、技术、应用、政策法规等内容,查看机械设备公司,机械设备维修,机械设备回收等相关内容就上剑鱼标讯。",
+          "key": "机械设备资讯,机械设备知识,机械设备公司,机械设备维修,机械设备回收,剑鱼标讯",
+          "title": "机械设备行业资讯 - 剑鱼标讯"
+        },
+        "rdaf": {
+          "description": "弱电安防频道为您提供全国弱电安防行业资讯新闻、行业动态、知识,技术、应用、政策法规等内容,查看安防知识,安防设备、安防公司动态等相关内容就上剑鱼标讯。",
+          "key": "弱电资讯,弱电知识,弱电施工,安防资讯,安防知识,安防设备,剑鱼标讯",
+          "title": "弱电安防行业资讯 - 剑鱼标讯"
+        },
+        "nyhg": {
+          "description": "能源化工频道为您提供全国能源化工行业资讯新闻、行业动态、知识、技术、应用、政策法规等内容,查看能源管理,化工产品,化工原料等相关内容就上剑鱼标讯。",
+          "key": "能源化工资讯,能源化工知识,能源管理,化工产品,化工原料 ,剑鱼标讯",
+          "title": "能源化工行业资讯 - 剑鱼标讯"
+        },
+        "szss": {
+          "description": "市政设施频道为您提供全国市政设施行业资讯新闻,行业动态、知识、技术、应用、政策法规等内容,查看市政基础设施,市政设施管理条例等相关内容就上剑鱼标讯。",
+          "key": "市政设施资讯,市政设施知识,市政基础设施,市政设施管理条例,剑鱼标讯",
+          "title": "市政设施行业资讯 - 剑鱼标讯"
+        },
+        "bgwj": {
+          "description": "办公文教频道为您提供全国办公文教行业资讯新闻、行业动态、知识、技术、应用、政策法规等内容,查看文教用品,文教资料等相关内容就上剑鱼标讯。",
+          "key": "办公资讯,办公知识,办公软件,文教用品,文教资料,剑鱼标讯",
+          "title": "办公文教行业资讯 - 剑鱼标讯"
         }
+      },
+      "planbuild": {
+        "description": "剑鱼标讯拟建项目专栏,包含国家发改委和各部委提供的尚处于前期立项、审批阶段的招投标项目,各供应商应在立项阶段就开始掌握最新的项目信息,做到早介入,早准备,稳拿单。",
+        "key": "拟建项目,拟在建项目,拟建项目网,拟建项目信息,剑鱼标讯",
+        "title": "剑鱼标讯官网-全国拟建项目信息"
+      }
     },
     "version": "1421",
     "sites": {
@@ -242,10 +299,16 @@
     "stype": {
         "NJXM": {
             "NAME": "拟建",
-            "TITLE": "全国拟建项目",
-            "KEYWORDS": "拟建项目,拟在建项目,拟建项目网,拟建项目信息",
+            "TITLE": "全国拟建项目信息",
+            "KEYWORDS": "拟建项目,拟在建项目,拟建项目网,拟建项目信息,剑鱼标讯",
             "DESCRIPTION": "剑鱼标讯拟建项目专栏,包含国家发改委和各部委提供的尚处于前期立项、审批阶段的招投标项目,各供应商应在立项阶段就开始掌握最新的项目信息,做到早介入,早准备,稳拿单。"
         },
+      "CGYX": {
+        "NAME": "采购意向",
+        "TITLE": "全国采购意向信息",
+        "KEYWORDS": "采购意向,政府采购意向,采购意向公告,采购意向书,剑鱼标讯",
+        "DESCRIPTION": "剑鱼标讯采购意向栏目,提供全国各省各行业政府采购意向、采购意向公告、采购意向书等信息,可以帮助用户轻松查询到想看的采购意向信息,好用又省心。"
+      },
         "ZBYG": {
             "NAME": "招标预告",
             "TITLE": "全国招标预告信息",
@@ -417,8 +480,8 @@
         "ZBCGYX":{
         	"NAME": "采购意向",
             "TITLE": "全国采购意向信息",
-            "KEYWORDS": "公开招标,公开招标信息,公开招标公告,公开招标网",
-            "DESCRIPTION": "剑鱼标讯公开招标栏目,提供国内各行业最新最全的公开招标信息,出色的搜索查询服务,可以让用户更加快速高效的获取想要的信息。"
+            "KEYWORDS": "采购意向,政府采购意向,采购意向公告,采购意向书,剑鱼标讯",
+            "DESCRIPTION": "剑鱼标讯采购意向栏目,提供全国各省各行业政府采购意向、采购意向公告、采购意向书等信息,可以帮助用户轻松查询到想看的采购意向信息,好用又省心。"
         }
     },
     "industry": {

+ 2 - 1
src/web/staticres/big-member/js/analysis_filter.js

@@ -434,7 +434,8 @@ var vNode = {
             }
             localStorage.setItem('BIG_ANALYSIS_LIST',JSON.stringify(local))
             if (this.power.indexOf(6) > -1) {
-              location.href = './analysis_result'
+              // location.href = './analysis_result'
+              location.href = '/weixin/frontPage/bigmember/free/perfect_info?source=' + utils.getParam('source')
             } else {
               location.href = '/weixin/frontPage/bigmember/free/perfect_info?source=' + utils.getParam('source')
             }

+ 106 - 0
src/web/staticres/common-module/bidstatus-update/css/bid-status-update.css

@@ -0,0 +1,106 @@
+.bid_component  .van-cell{
+  display: flex;
+  align-items: flex-start;
+  padding: .3rem 0;
+}
+.bid_component  .van-cell .van-field__label{
+  font-size: .3rem;
+}
+.bid_component  .van-cell .van-field__body textarea {
+  min-height: .48rem;
+}
+.bid_component  .van-cell .van-field__control{
+  font-size: .32rem;
+}
+.bid_component  .van-cell--required::before{
+  left: -.16rem;
+}
+.bid_component  .van-field__label {
+  margin-right: .32rem;
+}
+.bid_component .view-result-tip{
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  line-height: .4rem;
+  padding: .2rem .32rem;
+  font-size: .28rem;
+  color: #686868;
+  background: #F1FDFF;
+}
+
+.bid_component .popupTime-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: flex-start;
+  line-height: 0.6rem;
+  padding: 0.44rem 0.32rem 0.24rem;
+}
+
+.bid_component .popupTime-header .header-title {
+  display: flex;
+  flex-direction: column;
+  position: initial;
+  transform: none;
+  font-size: 0.36rem;
+  color: #171826;
+}
+.bid_component .popupTime-header .header-title .label-tip {
+  font-size: .24rem;
+  color: #5F5E64;
+}
+.bid_component .popupTime-header .header-close {
+  margin-top: .1rem;
+  width: 0.4rem;
+  height: 0.4rem;
+}
+
+.bid_component .popupTime-header .header-close .icon-delete-gray {
+  display: flex;
+  width: 0.4rem;
+  height: 0.4rem;
+}
+
+.bid_component .van-cell::after{
+  border-bottom: 0.5px solid #F2F2F2;
+  left: 0;
+}
+
+.bid_component .van-form{
+  padding: 0 .32rem;
+}
+
+.popupTime{
+  height: 7.68rem;
+}
+.popupTime .popupTime-main{
+  padding: 0 .32rem;
+}
+.popupTime .popupTime-main .bid_ul .bid_select{
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: 0 16px;
+  height: 1.08rem;
+  color: #171826;
+  font-size: 16px;
+}
+.bid_select>img{
+  width: .48rem;
+  height: .48rem;
+}
+
+.popupTime.popupIsBid .header-title {
+  flex-direction: row;
+}
+
+.cancel_select{
+  font-size: .28rem;
+  color: #2ABED1;
+  margin-left: .32rem;
+}
+
+.popupTime .van-checkbox__icon--checked .van-icon.van-icon-success{
+  background-color: #2ABED1;
+  border-color: #2ABED1;
+}

二進制
src/web/staticres/common-module/bidstatus-update/image/right.png


+ 617 - 0
src/web/staticres/common-module/bidstatus-update/js/bid-status-update.js

@@ -0,0 +1,617 @@
+var bidTemp = `
+  <div class='bid_component j-container'>
+    <div class="popupTime-header j-header">
+        <div class="header-title">
+          <span style="line-height: .56rem">已参标,请更新投标状态</span>
+          <span style="line-height: .36rem;margin-top: .04rem" class="label-tip">可前往“我的参标项目”查看已参标项目</span>
+        </div>
+        <div class="header-close" @click="$emit('cancel-update')">
+            <span class="j-icon base-icon icon-delete-gray"></span>
+        </div>
+    </div>
+    <div class="j-main">
+      <div class="view-result-tip">
+        <span>想知道谁最有可能参标吗?</span>
+        <span @click="linkAnalysis" style="color:#2ABED1">点这里查看分析结果</span>
+      </div>
+      <van-form @submit="onSubmit">
+        <van-field
+          @click="bidTypePopup = true"
+          required
+          readonly
+          is-link
+          v-model="bidParams.bidType"
+          name="bidType"
+          label="投标类型"
+          placeholder="请选择投标类型"
+        ></van-field>
+        <van-field
+          @click="bidProject = true"
+          is-link
+          v-model="bidParams.bidStage"
+          name="bidStage"
+          readonly
+          :rows="rownum"
+          autosize
+          type="textarea"
+          label="投标项目阶段"
+          placeholder="请选择投标项目阶段"
+        ></van-field>
+        <van-field
+          @click="isBidPopup = true"
+          is-link
+          placeholder="请选择是否中标"
+          readonly
+          v-model="bidParams.isWin"
+          name="isWin"
+          :label="showChannel? '渠道是否中标':'是否中标'"
+        ></van-field>
+        <div class="channel_module" v-if="showChannel">
+          <div class="acc-input-group">
+            <van-field type="textarea" autosize :rows="rownum" placeholder="请输入渠道名称" v-model.trim="bidParams.channelName" name="channelName" label="渠道名称"></van-field>
+            <div class="popover-acc-input-group" v-show="showAccEntList">
+              <div class="popover-acc-input-group--item" v-for="(item, index) in accEntList" v-bind:key="index" @click="doSelectEnt(item)">{{item.value}}</div>
+            </div>
+          </div>
+          <van-field type="textarea" autosize :rows="rownum" placeholder="请输入联系人姓名" v-model.trim="bidParams.channelPerson" name="channelPerson" label="联系人"></van-field>
+          <van-field maxlength="11" type="tel" placeholder="请输入联系电话" v-model.trim="bidParams.channelPhone" name="channelPhone" label="联系电话"></van-field>
+          <van-field type="textarea" autosize :rows="rownum" placeholder="请输入中标单位名称" v-model.trim="bidParams.winner" name="winner" label="中标单位"></van-field>
+        </div>
+      </van-form>
+    </div>
+    <div class="j-footer">
+        <div class="j-button-group">
+          <button class="j-button-cancel" @click="$emit('cancel-update')">取消</button>
+          <button round type="primary" :disabled="showDisbaled" class="j-button-confirm submitBtn" @click="onSubmit()">确认</button>
+        </div>
+    </div>
+    <van-popup class="popupTime j-container" v-model="bidTypePopup" round position="bottom">
+          <div class="popupTime-header">
+              <div class="header-title">选择投标类型</div>
+              <div class="header-close" @click="bidTypePopupClose()">
+                  <span class="j-icon base-icon icon-delete-gray"></span>
+              </div>
+          </div>
+          <div class="popupTime-main j-main">
+            <ul class="bid_ul">
+              <li class="bid_select" @click="selectBidType(1)">
+                <span>直接投标</span>
+                <img v-show="copyBidParams.bidType == 1" src="/common-module/bidstatus-update/image/right.png" alt="" />
+              </li>
+              <li class="bid_select" @click="selectBidType(2)">
+                <span>渠道投标</span>
+                <img v-show="copyBidParams.bidType == 2" src="/common-module/bidstatus-update/image/right.png" alt="" />
+              </li>
+            </ul>
+          </div>
+          <div class="j-footer">
+              <div class="j-button-group">
+                  <div class="j-button-confirm" @click="saveStatus('0')">确认</div>
+              </div>
+          </div>
+      </van-popup>
+      <van-popup class="popupTime j-container popupIsBid" v-model="isBidPopup" round position="bottom">
+          <div class="popupTime-header">
+              <div class="header-title">
+                <span>是否中标</span>
+                <span @click="cancelSelect()" class="cancel_select">取消选择</span>
+              </div>
+              <div class="header-close" @click="isBidPopupClose()">
+                  <span class="j-icon base-icon icon-delete-gray"></span>
+              </div>
+          </div>
+          <div class="popupTime-main j-main">
+            <ul class="bid_ul">
+              <li class="bid_select" @click="selectBidStatus(1)">
+                <span>是</span>
+                <img v-if="copyBidParams.isWin === 1" src="/common-module/bidstatus-update/image/right.png" alt="" />
+              </li>
+              <li class="bid_select" @click="selectBidStatus(2)">
+                <span>否</span>
+                <img v-if="copyBidParams.isWin === 2" src="/common-module/bidstatus-update/image/right.png" alt="" />
+              </li>
+            </ul>
+          </div>
+          <div class="j-footer">
+              <div class="j-button-group">
+                  <div class="j-button-confirm" @click="saveStatus('2')">确认</div>
+              </div>
+          </div>
+      </van-popup>
+      <van-popup class="popupTime j-container" v-model="bidProject" round position="bottom">
+        <div class="popupTime-header">
+            <div class="header-title">投标项目阶段</div>
+            <div class="header-close" @click="BidProjectPopupClose()">
+                <span class="j-icon base-icon icon-delete-gray"></span>
+            </div>
+        </div>
+        <div class="popupTime-main j-main">
+          <van-cell-group>
+            <van-cell
+              :class="{'cell_checked': item.checked}"
+              v-for="item in bidStageOptions"
+              :key="item.value"
+              :title="item.label"
+              :label-align="labelAlign"
+              icon-size="16px"
+              @click="onCellClick(item)"
+            >
+              <template #right-icon>
+                <van-checkbox v-model="item.checked" :name="item.value" />
+              </template>
+            </van-cell>
+          </van-cell-group>
+        </div>
+        <div class="j-footer">
+            <div class="j-button-group">
+              <div class="j-button-cancel" @click="cancelBidStage()">重置</div>
+              <div class="j-button-confirm" @click="saveStatus('1')">确认</div>
+            </div>
+        </div>
+    </van-popup>
+  </div>
+`
+
+var bidStatusNode = {
+  name: 'bid_component',
+  template: bidTemp,
+  props: {
+    projectCellInfo: {
+      type: Object,
+      default: {}
+    },
+    showBidStatus: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    return {
+      cbInfo: {
+        isShowRefer: false,
+        canBiaoInfo: {
+          showStopParticipate: false
+        },
+        setTime: '',
+        countdownTimer: null
+      },
+      bidTypePopup: false,
+      isBidPopup: false,
+      bidProject: false,
+      showBidType: true,
+      showChannel: false,
+      copyBidParams: {
+        bidType: '',
+        bidStage: '',
+        isWin: '',
+        channelName: '',
+        channelPerson: '',
+        channelPhone: '',
+        winner: '',
+        sid: ''
+      },
+      bidParams: {
+        bidType: '',
+        bidStage: '',
+        isWin: '',
+        channelName: '',
+        channelPerson: '',
+        channelPhone: '',
+        winner: '',
+        sid: ''
+      },
+      isWinBid: false,
+      checkedList: [],
+      formSchemaOptions: {
+        bidStage: [],
+        'bidStage-1': [],
+        checkedListMap: {
+          1: [],
+          2: []
+        }
+      },
+      showAccEntList: false,
+      accEntList: [],
+      labelAlign: 'left',
+      editBtnStatus: {
+        show: false,
+        status: 0
+      },
+      rownum: 1,
+      proParams: {},
+      prodetail: {}
+    }
+  },
+  computed: {
+    bidStageOptions: function () {
+      const result = this.formSchemaOptions['bidStage' + (this.copyBidParams.bidType == 1 ? '-1' : '')].map(option => ({
+        checked: this.checkedList.includes(option),
+        value: option,
+        label: option
+      }))
+      return result
+    },
+    showDisbaled: function () {
+      return this.bidParams.bidType === ''
+    }
+  },
+  watch: {
+    projectCellInfo: {
+      handler (newval) {
+        this.resetUpdate()
+        this.getProDetail()
+      },
+      immediate: true
+    },
+    showBidStatus: {
+      handler (newval) {
+        this.resetUpdate()
+        this.getBidContent()
+      },
+      immediate: true
+    }
+  },
+  created: function () {
+    this.getOptionsInfo()
+  },
+  mounted: function() {
+  },
+  methods: {
+    onSubmit: function() {
+      // 在这里处理表单提交逻辑
+      const _this = this
+      this.copyBidParams.bidType = parseInt(this.copyBidParams.bidType)
+      this.copyBidParams.isWin = this.copyBidParams.isWin ? parseInt(this.copyBidParams.isWin) : 0
+      // this.bidParams.winner = this.prodetail.s_winner
+      this.bidParams.sid = this.prodetail.sid
+      const {channelName, channelPerson, channelPhone, winner, sid, bidStage, isWin } = this.bidParams
+      let tranWin = 0
+      if (isWin === '是') {
+        tranWin = 1
+      } else if (isWin === '否') {
+        tranWin = 2
+      } else {
+        tranWin = 0
+      }
+      const ajaxParams = {
+        bidType: parseInt(this.copyBidParams.bidType),
+        bidStage: bidStage ? bidStage.split('、') : [],
+        isWin: tranWin,
+        channelName: channelName,
+        channelPerson: channelPerson,
+        channelPhone: channelPhone,
+        winner: winner,
+        sid: sid
+      }
+      $.ajax({
+        type: 'POST',
+        url: '/jyapi/jybx/core/participate/updateBidStatus',
+        contentType: 'application/json',
+        data: JSON.stringify(ajaxParams),
+        success: function(res) {
+          if(res.error_code === 0) {
+            _this.$toast('保存成功')
+            _this.editBtnStatus.show = true
+            _this.editBtnStatus.status = 1
+            _this.$emit('save-success')
+          } else {
+            _this.$toast(res.error_msg)
+          }
+        }
+      })
+    },
+    // 获取项目详情
+    getProDetail: function () {
+      var _this = this
+      $.ajax({
+          type: 'POST',
+          url: '/bigmember/follow/project/detail',
+          data: {
+              sid: _this.projectCellInfo.sid || _this.projectCellInfo.id || _this.projectCellInfo._id,
+              // fid: _this.fid
+          },
+          success: function (res) {
+              if (res.error_code == 0) {
+                _this.prodetail = res.data
+              } else {
+                _this.$toast(res.error_msg)
+              }
+          },
+          error: function (err) {
+              console.log(err)
+          }
+      })
+    },
+    // 获取选项
+    getOptionsInfo () {
+      const _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/jyapi/jybx/core/participate/setUpInfo',
+        contentType: 'application/json',
+        data: JSON.stringify({
+          sid: _this.sid
+        }),
+        success: function (res) {
+          if (res.error_code === 0) {
+            const data = res.data || {}
+            if (data.bidType) {
+              _this.formSchemaOptions.bidStage = data.bidType.find(v => v.name === '渠道投标').content || []
+              _this.formSchemaOptions['bidStage-1'] = data.bidType.find(v => v.name === '直接投标').content || []
+            }
+          }
+        }
+      })
+    },
+    linkAnalysis () {
+      if (utils.$envs.inApp || utils.$envs.inH5) {
+        location.href = '/jyapp/big/page/analysis_result'
+      } else {
+        location.href = '/big/wx/page/analysis_search?source=wx_analysis_ProjectDetails'
+      }
+    },
+    doQueryAccEntName (str) {
+      // TODO 需添加防抖
+      this.showAccEntList = false
+      this.fetchChannelNameList(str, list => {
+        this.showAccEntList = list.length > 0
+        this.accEntList = list
+      })
+    },
+    // 重置投标阶段变更
+    cancelBidStage () {
+      const resetList = (this.formSchemaOptions.checkedListMap[this.copyBidParams.bidType] || []).map(v => v)
+      this.checkedList = resetList
+    },
+    // 重置投标状态
+    resetUpdate: function () {
+      this.bidParams = {
+        bidType: '',
+        bidStage: '',
+        isWin: '',
+        channelName: '',
+        channelPerson: '',
+        channelPhone: '',
+        winner: '',
+        sid: ''
+      }
+      this.copyBidParams = {
+        bidType: 0,
+        bidStage: '',
+        isWin: '',
+        channelName: '',
+        channelPerson: '',
+        channelPhone: '',
+        winner: '',
+        sid: ''
+      }
+      this.showChannel = false
+    },
+    saveStatus: function (str) {
+      switch (str) {
+        case '0':
+          if(this.bidParams.bidType) {
+            if (!((this.bidParams.bidType.indexOf('直接') !== -1 && parseInt(this.copyBidParams.bidType) === 1) || (this.bidParams.bidType.indexOf('渠道') !== -1 && parseInt(this.copyBidParams.bidType) === 2))) {
+              this.bidParams = {
+                bidType: this.copyBidParams.bidType,
+                bidStage: '',
+                isWin: '',
+                channelName: '',
+                channelPerson: '',
+                channelPhone: '',
+                winner: '',
+                sid: ''
+              }
+              this.copyBidParams = {
+                bidType: this.copyBidParams.bidType,
+                bidStage: '',
+                isWin: '',
+                channelName: '',
+                channelPerson: '',
+                channelPhone: '',
+                winner: '',
+                sid: ''
+              }
+              this.checkedList = []
+            }
+          }
+          this.$emit('set-height', this.copyBidParams.bidType)
+          break;
+        case '1':
+          if (this.checkedList.length > 0) {
+            this.copyBidParams.bidStage = this.checkedList.join('、')
+          } else {
+            this.copyBidParams.bidStage = ''
+          }
+          break
+        default:
+          break;
+      }
+      const { channelName, channelPhone, channelPerson, winner } = this.bidParams || {};
+      this.copyBidParams.channelName = channelName || ''
+      this.copyBidParams.channelPhone = channelPhone || ''
+      this.copyBidParams.channelPerson = channelPerson || ''
+      this.copyBidParams.winner = winner || ''
+
+      Object.assign(this.bidParams, this.copyBidParams)
+      if (this.copyBidParams.bidType == 1) {
+        this.bidParams.bidType = '直接投标'
+        this.showChannel = false
+      } else if (this.copyBidParams.bidType == 2) {
+        this.bidParams.bidType = '渠道投标'
+        this.showChannel = true
+      } else {
+        this.bidParams.bidType = ''
+        this.showChannel = false
+      }
+      // 带出中标单位
+      if (this.bidParams.isWin == 1) {
+        this.bidParams.isWin = '是'
+        const sWin = this.prodetail.projectInfo.s_winner || ''
+        if (sWin && !winner) {
+          this.bidParams.winner = sWin
+        }
+      } else if (this.bidParams.isWin == 2) {
+        this.bidParams.isWin = '否'
+        this.bidParams.winner = ''
+      } else {
+        this.bidParams.isWin = ''
+        this.bidParams.winner = ''
+      }
+      this.bidTypePopupClose()
+      this.BidProjectPopupClose()
+      this.isBidPopupClose()
+    },
+    // 选择是否中标
+    selectBidStatus: function(data) {
+      this.copyBidParams.isWin = data
+    },
+    // 是否中标取消选择
+    cancelSelect () {
+      this.bidParams.isWin = ''
+      this.copyBidParams.isWin = ''
+      this.bidParams.winner = ''
+      this.copyBidParams.winner = ''
+      this.isBidPopupClose()
+    },
+    doSelectEnt (item) {
+      this.setParams(this.bidParams, item)
+      this.setParams(this.copyBidParams, item)
+      this.showAccEntList = false
+    },
+    setParams(params, item) {
+      const { value, company_phone, legal_person } = item || {};
+      params.channelName = value || ''
+      // params.channelPhone = company_phone || ''
+      // params.channelPerson = legal_person || ''
+    },
+    // 选择投标类型
+    selectBidType: function(data) {
+      this.copyBidParams.bidType = data
+      //  checkedList 切换时清空
+      if (data != this.copyBidParams.bidType) {
+        this.checkedList = []
+        this.copyBidParams.isWin = 0
+        this.bidParams.isWin = ''
+      }
+    },
+    // 获取投标状态信息
+    getBidContent: function () {
+      const _this = this
+      const params = {
+        sid: _this.projectCellInfo.sid || _this.projectCellInfo.id || _this.projectCellInfo._id,
+      }
+      $.ajax({
+        type: 'POST',
+        url: '/jyapi/jybx/core/participate/content',
+        contentType: 'application/json',
+        data: JSON.stringify(params),
+        success: function(res) {
+          if(res.error_code === 0 && res.data) {
+            if (Object.keys(res.data).length > 0) {
+              _this.editBtnStatus.show = true
+              _this.editBtnStatus.status = 1
+              const { bidStage, bidType, channelName, channelPerson, channelPhone, isWin, winner} = res.data
+              let getParams = {
+                bidType: '',
+                bidStage: '',
+                isWin: '',
+                channelName: channelName,
+                channelPerson: channelPerson,
+                channelPhone: channelPhone,
+                winner: winner
+              }
+              if (bidStage && bidStage.length > 0) {
+                _this.checkedList = bidStage
+                getParams.bidStage = bidStage.join('、')
+              }
+              if (isWin == 1) {
+                getParams.isWin = '是'
+              } else if(isWin == 2) {
+                getParams.isWin = '否'
+              } else {
+                getParams.isWin = ''
+              }
+              if(bidType == 1) {
+                getParams.bidType = '直接投标'
+                _this.showChannel = false
+                _this.formSchemaOptions.checkedListMap[1] = [].concat(bidStage || [])
+              } else {
+                getParams.bidType = '渠道投标'
+                _this.showChannel = true
+                _this.formSchemaOptions.checkedListMap[2] = [].concat(bidStage || [])
+              }
+              if (res.data) {
+                Object.assign(_this.copyBidParams, res.data)
+              }
+              _this.bidParams = getParams
+            }
+          }
+        }
+      })
+    },
+    // 获取参标状态
+    getCanBiaoInfo: function() {
+      const _this = this
+      const param = {
+        sid: this.sid
+      }
+      $.ajax({
+        type: 'POST',
+        url: '/jyapi/jybx/core/participate/info',
+        contentType: 'application/json',
+        data: JSON.stringify(param),
+        success: function(res) {
+          if(res.error_code == 0) {
+            const data = res.data;
+            if (Object.keys(data).length > 0) {
+              _this.cbInfo.canBiaoInfo = data
+              _this.cbInfo.countdownTimer = setInterval(_this.updateCountdown, 1000);
+              if (data.userName) {
+                const newList = data.userName.split(',').map(item => item.trim()).filter(item => item)
+                const userNameString = newList.length > 1 ? newList.slice(0,1).join(',') + '等' : newList.join(',')
+                data.userName = userNameString
+              }
+            }
+          }
+        }
+      })
+    },
+    onCellClick(data) {
+      if (this.checkedList.includes(data.value)) {
+        this.checkedList = this.checkedList.filter(v => v !== data.value)
+      } else {
+        this.checkedList.push(data.value)
+      }
+    },
+    // 编辑投标状态
+    setBidInfo: function () {
+      if (this.editBtnStatus.status == 1) {
+        this.editBtnStatus.status = 2
+      } else if (this.editBtnStatus.status == 2) {
+        this.editBtnStatus.status = 1
+        this.getBidContent()
+      }
+    },
+    getShareParams () {
+      var params = location.href.indexOf('?') > -1 ? '&fid=' + this.fid + '&sid=' + this.sid : '?fid=' + this.fid + '&sid=' + this.sid
+      this.proParams = {
+        type: '2',
+        id: this.sid,
+        referer: location.href + params
+      }
+    },
+    // 关闭投标类型弹窗
+    bidTypePopupClose: function () {
+      this.bidTypePopup = false
+    },
+    // 关闭是否中标弹窗
+    isBidPopupClose: function () {
+      this.isBidPopup = false
+    },
+    // 关闭投标项目阶段弹窗
+    BidProjectPopupClose: function () {
+      this.bidProject = false
+    },
+  }
+}

+ 1 - 0
src/web/staticres/common-module/big-member/js/client_portrayal.js

@@ -1364,6 +1364,7 @@ var vNode = {
           var normal =['行业','采购规模占比','采购规模', '采购项目数量','平均节支率'];
           var newArr = that.arrTrans(5,arr);
           newArr.unshift(normal)
+          chartOptions.deformPieChart.roseType = false;
           chartOptions.deformPieChart.dataset.source = newArr;
           chartOptions.deformPieChart.tooltip.formatter = function(params){
               var tip = '';

+ 27 - 3
src/web/staticres/common-module/big-member/js/page_client_follow_detail.js

@@ -78,7 +78,8 @@ var vNode = {
     delimiters: ['${', '}'],
     el: '#v-pro',
     components: {
-      forwardshare: vmForward
+      forwardshare: vmForward,
+      bidStatusNode: bidStatusNode
     },
     data: {
         from: '',
@@ -165,7 +166,10 @@ var vNode = {
           status: 0
         },
         rownum: 1,
-        proParams: {}
+        proParams: {},
+        showBidStatus: false,
+        popupHeight: 'height: 8.8rem',
+        projectCellInfo: {}
     },
     computed: {
         bmdetail: function () {
@@ -247,6 +251,24 @@ var vNode = {
             // params.channelPhone = company_phone || ''
             // params.channelPerson = legal_person || ''
           },
+
+          setHeight: function (data) {
+            if(data === 2) {
+              this.popupHeight = 'height: 10.92rem'
+            } else {
+              this.popupHeight = 'height: 8.8rem'
+            }
+          },
+          // 更新投标状态成功
+          saveSuccess: function () {
+            this.showBidStatus = false
+            this.getBidContent()
+          },
+          // 取消更新投标状态
+          cancelUpdate: function () {
+            this.showBidStatus = false
+          },
+
           /**
            * 获取模糊渠道名称列表
            * @param str
@@ -583,6 +605,7 @@ var vNode = {
           }
         }
         const _this = this
+        _this.projectCellInfo.sid = this.sid
         const type = weicanbiao ? 'in' : 'out';
         const url = '/jyapi/jybx/core/participate/'+ type + '/info'
         const params = {
@@ -603,7 +626,8 @@ var vNode = {
                 _this.getCanBiaoInfo()
                 if (type === 'in') {
                   _this.getHaveActionHistory()
-                  _this.$toast('已参标,请前往我的参标项目列表查看')
+                  _this.showBidStatus = true
+                  // _this.$toast('已参标,请前往我的参标项目列表查看')
                 }
                 // 更新收藏列表
                 const updateCBStatus = {

+ 23 - 2
src/web/staticres/common-module/big-member/js/page_client_follow_list.js

@@ -4,6 +4,7 @@ var vNode = {
     el: '#v-node',
     components: {
         areaComponent: areaComponent,
+        bidStatusNode: bidStatusNode
     },
     data: {
         sessStorageKey:'$data-pro_follow_list',
@@ -28,7 +29,10 @@ var vNode = {
         initArea: [],
         carePro: '',
         followMax: 0,
-        listnum: 0
+        listnum: 0,
+        showBidStatus: false,
+        popupHeight: 'height: 8.8rem',
+        projectCellInfo: {}
     },
     created () {
         var recover = this.recover()
@@ -91,6 +95,21 @@ var vNode = {
                 }
             })
         },
+        setHeight: function (data) {
+          if(data === 2) {
+            this.popupHeight = 'height: 10.92rem'
+          } else {
+            this.popupHeight = 'height: 8.8rem'
+          }
+        },
+        // 更新投标状态成功
+        saveSuccess: function () {
+          this.showBidStatus = false
+        },
+        // 取消更新投标状态
+        cancelUpdate: function () {
+          this.showBidStatus = false
+        },
         onSearch: function(val) {
             this.carePro = val
             this.list = this.newList
@@ -385,6 +404,7 @@ var vNode = {
               return
             }
             var _this = this
+            _this.projectCellInfo = item
             var params = { bidIds: item.sid }
             $.ajax({
                 url: '/jyapi/jybx/core/participate/in/info',
@@ -393,11 +413,12 @@ var vNode = {
                 data: JSON.stringify(params),
                 success: function (res) {
                     if (res.error_code === 0 && res.data) {
-                        _this.$toast('已参标,请前往我的参标项目列表查看。')
+                        // _this.$toast('已参标,请前往我的参标项目列表查看。')
                         _this.$set(item, 'isCB', {
                             id: item.sid,
                             value: true
                         })
+                        _this.showBidStatus = true
                     } else {
                       _this.$toast(res.error_msg)
                     }

二進制
src/web/staticres/common-module/collection/image/bg/qy-zbtj-bg.png


二進制
src/web/staticres/common-module/collection/image/bg/qy-zbtj.png


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


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


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


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


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


二進制
src/web/staticres/common-module/collection/image/buyer/cg-zbdt-bg.jpg


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


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

@@ -148,22 +148,22 @@ var buyerExample = {
         }
           // 合作企业注册资本分布
         case 'item_9': {
-          textMap.headText.top = '通过分析合作企业注册资本、采购项目规模、'
-          textMap.headText.bot = '利润率,全面洞察采购单位合作企业!'
+          textMap.headText.top = '深入分析采购单位合作企业规模情况,辅助'
+          textMap.headText.bot = '投标决策'
           textMap.source = 'buyer_portrait_withCapitalData_freeuser'
           break
         }
          // 合作企业年龄分布
         case 'item_10': {
-          textMap.headText.top = '通过分析合作企业年龄、数量、规模分布情况,'
-          textMap.headText.bot = '全面洞察采购单位合作企业!'
+          textMap.headText.top = '洞察采购单位合作企业成立时间,预判企业'
+          textMap.headText.bot = '实力'
           textMap.source = 'buyer_portrait_withEstablishData_freeuser'
           break
         }
         // 合作企业注册地分布
         case 'item_11': {
-          textMap.headText.top = '通过分析合作企业的地址、数量、采购规模,'
-          textMap.headText.bot = '了解采购单位营商环境,辅助投标决策!'
+          textMap.headText.top = '获取采购单位合作企业注册地详情,了解业务'
+          textMap.headText.bot = '分布情况'
           textMap.source = 'buyer_portrait_withAreaData_freeuser'
           break
         }
@@ -174,6 +174,20 @@ var buyerExample = {
           textMap.source = 'buyer_portrait_topAgencyData_freeuser'
           break
         }
+        // 统计信息
+        case 'item_13': {
+          textMap.headText.top = '精准分析采购单位历史运作项目,'
+          textMap.headText.bot = '采购动态一目了然'
+          textMap.source = 'buyer_portrait_topAgencyData_freeuser'
+          break
+        }
+        // 招标动态
+        case 'item_14': {
+          textMap.headText.top = '查看采购单位最新招标动态,及时跟踪采'
+          textMap.headText.bot = '购需求'
+          textMap.source = 'buyer_portrait_topAgencyData_freeuser'
+          break
+        }
       }
       return textMap
     },

+ 11 - 9
src/web/staticres/common-module/collection/js/ent_portrait.js

@@ -774,15 +774,17 @@ var vNode = {
                 // 获取企业情报历史记录-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'
-              }
+              // // 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.getEntFollowState()
               // 新版超级订阅用户获取访问量
               if (newVip && (res.data.memberStatus <= 0 || res.data.power.indexOf(4) == -1)) {
                 _this.getEntVisits()

+ 23 - 2
src/web/staticres/common-module/collection/js/index-wx.js

@@ -7,7 +7,8 @@ var vNode = {
     dateComponent: dateComponent,
     cateComponent: cateComponent,
     phoneComponent: phoneComponent,
-    rootComponent: rootComponent
+    rootComponent: rootComponent,
+    bidStatusNode: bidStatusNode
   },
   data: {
     sessStorageKey: '$data-collection',
@@ -95,6 +96,9 @@ var vNode = {
     condition: true, // 列表星星显示
     personTagactive:0, //个人标签选择按钮下标
     screenShow: false, // 筛选按钮是否显示
+    showBidStatus: false,
+    popupHeight: 'height: 8.8rem',
+    projectCellInfo: {}
   },
   computed: {
     biEnv: function () {
@@ -206,6 +210,21 @@ var vNode = {
         }
       })
     },
+    setHeight: function (data) {
+      if(data === 2) {
+        this.popupHeight = 'height: 10.92rem'
+      } else {
+        this.popupHeight = 'height: 8.8rem'
+      }
+    },
+    // 更新投标状态成功
+    saveSuccess: function () {
+      this.showBidStatus = false
+    },
+    // 取消更新投标状态
+    cancelUpdate: function () {
+      this.showBidStatus = false
+    },
     // 列表跳转
     linkRouter: function(item) {
       try {
@@ -363,6 +382,7 @@ var vNode = {
         return
       }
       var _this = this
+      _this.projectCellInfo = item
       var params = { bidIds: item._id }
       $.ajax({
           url: '/jyapi/jybx/core/participate/in/info',
@@ -371,11 +391,12 @@ var vNode = {
           data: JSON.stringify(params),
           success: function (res) {
               if (res.error_code === 0 && res.data) {
-                  _this.$toast('已参标,请前往我的参标项目列表查看。')
+                  // _this.$toast('已参标,请前往我的参标项目列表查看。')
                   _this.$set(item, 'isCB', {
                       id: item._id,
                       value: true
                   })
+                  _this.showBidStatus = true
               } else {
                 _this.$toast(res.error_msg)
               }

+ 24 - 3
src/web/staticres/common-module/collection/js/index.js

@@ -10,7 +10,8 @@ var vNode = {
     dateComponent: dateComponent,
     cateComponent: cateComponent,
     phoneComponent: phoneComponent,
-    rootComponent: rootComponent
+    rootComponent: rootComponent,
+    bidStatusNode: bidStatusNode
   },
   data: {
     sessStorageKey: '$data-collection',
@@ -96,7 +97,10 @@ var vNode = {
     condition: true, // 列表星星显示
     personTagactive:0, //个人标签选择按钮下标
     screenShow: false, // 筛选按钮是否显示
-    lid: '' // 获取从三级也跳转的id
+    lid: '', // 获取从三级也跳转的id
+    showBidStatus: false,
+    popupHeight: 'height: 8.8rem',
+    projectCellInfo: {}
   },
   computed: {
     biEnv: function () {
@@ -208,6 +212,21 @@ var vNode = {
         }
       })
     },
+    setHeight: function (data) {
+      if(data === 2) {
+        this.popupHeight = 'height: 10.92rem'
+      } else {
+        this.popupHeight = 'height: 8.8rem'
+      }
+    },
+    // 更新投标状态成功
+    saveSuccess: function () {
+      this.showBidStatus = false
+    },
+    // 取消更新投标状态
+    cancelUpdate: function () {
+      this.showBidStatus = false
+    },
     // 列表跳转
     linkRouter: function(item) {
       try {
@@ -365,6 +384,7 @@ var vNode = {
         return
       }
       var _this = this
+      _this.projectCellInfo = item
       var params = { bidIds: item._id }
       $.ajax({
           url: '/jyapi/jybx/core/participate/in/info',
@@ -373,7 +393,8 @@ var vNode = {
           data: JSON.stringify(params),
           success: function (res) {
               if (res.error_code === 0 && res.data) {
-                  _this.$toast('已参标,请前往我的参标项目列表查看。')
+                  // _this.$toast('已参标,请前往我的参标项目列表查看。')
+                  _this.showBidStatus = true
                   _this.$set(item, 'isCB', {
                       id: item._id,
                       value: true

+ 24 - 0
src/web/staticres/common-module/collection/js/vip-dialog.js

@@ -13,6 +13,7 @@ var vipDialog = `
   <div class="openBtn">
       <button class="goBtn" @click="goOpen(getTextMap.source)">{{getTextMap.btnText}}</button>
   </div>
+   <p class="no-login-tip" v-if="!islogin">登录后解锁会员查看更多内容</p>
 </div>
 `
 
@@ -65,6 +66,12 @@ var vipComponent = {
       default: function() {
         return false
       }
+    },
+    'islogin': {
+      type: Boolean,
+      default: function() {
+        return false
+      }
     }
   },
   data: function() {
@@ -216,12 +223,25 @@ var vipComponent = {
           textMap.source = 'ent_portrait_contacts'
           break
         }
+        // 统计信息-概况
+        case 'item_10': {
+          textMap.titleText = ''
+          textMap.btnText = '登录查看'
+          textMap.headText.top = '全面透视企业历史中标项目、中标'
+          textMap.headText.bot = '金额、客户数量'
+          textMap.source = 'ent_portrait_changeList'
+          break
+        }
         default: {
           textMap.headText.top = '通过实时监控项目的招标、中标、合同等'
           textMap.headText.bot = '信息,全面挖掘更多潜在商机!'
           break
         }
       }
+      // 未登录
+      if(!this.islogin) {
+        textMap.btnText = '登录查看'
+      }
       return textMap
     },
   },
@@ -260,6 +280,10 @@ var vipComponent = {
           location.href = '/jyapp/frontPage/bigmember/free/perfect_info?source=ent_portrait_freeuser'
           break
         }
+        case '登录查看': {
+          location.href = '/jyapp/free/login?to=back'
+          break
+        }
         default: {
           // location.href = '/jyapp/vipsubscribe/vipsubscribe_new'
           location.href = '/jy_mobile/common/order/create/svip?type=buy'

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

@@ -359,6 +359,9 @@
 .icon-download {
     background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAE/SURBVHgB7ZZNTsMwEIXfWKVIrLhBswQWlJwAirphxw0IJwGOwAlKbwArNiC4QcUqLHMEVkjtwlM7/U/aOpk26qL+JCuONPY8jew3Bjz7DkHIyXsvUIfqy87/SYdJK/yDAAUhdIAL8wnsONK4hRC5AMIxtoBYwLbwAryAnQuouQLOPnuRuXSXesBPvzdhggKkJlWnB2b1FrfPX9fFuitAqmMufWRdz27sCp86pFlDijuueKcA1uiOp4FLxJw9pzHM07UrKdQLTj9+Xkjhbvyb6L5uqTqu0uqMVN7rAb4XkgPd+LoZufYudAjjdjPKVsIcn8YsotaQJLeU6oaZSiylTPLSAlwiyiYXCVglQpJcLCArQpp8Y4xJPdoBzwbkzsDE+1EBy3pDvhlN3K0CiNg+XhcE5J2Q9TMqokhv8OwfQ/kycNLa3JKkAAAAAElFTkSuQmCC");
 }
+.icon-download-999 {
+    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdhJREFUWEftlT9oFEEUxr83xwVsRGwsTSqLtLEV7W0sLCJBc0hmZkUbtdHG2GiT2BicPyGcSkiKFEFIlcaQ2tbCSi0tBLERPG6ejEwg5M7bvbmDSNhtdoed932/+Wb3DeGYLzpmf9QA2Qm02+0znU5nO25hs9m81mq1fuRsZzaAMeayEOJ9NA0hXCmKYq8GqBOoEziZCRhj5onoohDilZTy48EqB/UB7/10COEOEb1TSu0OSqa0ETnnvgM4C+ATM89prT9EwX8BWGtniGgdwAUAX5RSU6MCPAGwmES+MvNNrfV+PwBr7SUiegvgfOqQT4uiOKjty1GaQKyy1j4jokdJ4RsRtbrd7q/DrbjRaJxi5jaAc3EeMz/XWj8u+zArASSIZSK6n8R/ArhNRFtpfB3AGhGdTuMXWusHZebxfWWAONk59xLA3ST8G8BEn+cVpdS9KuZDA6QkPBEt9DNg5lWttaxqngWQkngN4NYRozdKqflhzLMBYqH3foOZZ/+KEG1KKW8Maz4SQEpiKd6VUg9zzEcGyDU9XDfUXzAOw6MaPQDe+6sAKv3DGUDLUsqdgQk45z4DmMwQr1LSczb0JGCMWRRCxP4/9iuE0HM2/H/fwNiXXSJYJ/AHOebkIY4bPMkAAAAASUVORK5CYII=');
+}
 
 /******** img背景图 **********/
 .j-img {

+ 1 - 1
src/web/staticres/common-module/mainSearch/css/third-party-verify-mobile.css

@@ -1,5 +1,5 @@
 /* layout start */
-.j-container {
+.j-container.popup-layout {
   position: relative;
   display: flex;
   flex-direction: column;

二進制
src/web/staticres/common-module/personDialog/img/checked.png


二進制
src/web/staticres/common-module/personDialog/img/half.png


+ 301 - 0
src/web/staticres/common-module/personDialog/personDialog.css

@@ -0,0 +1,301 @@
+
+.ent_powerPerson_dialog {
+    display: flex;
+    align-items: center;
+}
+.ent_powerPerson_dialog .el-dialog {
+    margin: 0 auto 0 !important;
+}
+.ent_powerPerson_dialog .el-dialog__header {
+    font-size: 26px;
+    color: #1D1D1D;
+}
+.ent_powerPerson_dialog .el-dialog__body {
+    padding: 20px 30px;
+}
+.ent_powerPerson_dialog .content {
+    display: flex;
+    justify-content: space-between;
+}
+.ent_powerPerson_dialog .content .content_right {
+    width: 400px;
+    height: 400px;
+    border-radius: 6px;
+    margin: 0 5px;
+    display: flex;
+    flex-direction: column;
+    border: 1px solid #ECECEC;
+}
+.ent_powerPerson_dialog .content .content_left > h4 {
+    padding: 14px 20px;
+    font-size: 14px;
+    color: #1D1D1D;
+}
+.ent_powerPerson_dialog .content .content_left > .search {
+    margin-left: 20px;
+    width: 360px;
+}
+.ent_powerPerson_dialog .content .content_left > .search .el-input-group {
+    width: 100%;
+    border: 1px solid rgba(0, 0, 0, 0.05);
+    border-radius: 18px;
+}
+.ent_powerPerson_dialog .content .content_left > .search .el-input-group .el-input-group__prepend {
+    border-radius: 18px 0 0 18px;
+    background: #F7F7F7;
+    border: none;
+    padding: 0 12px;
+}
+.ent_powerPerson_dialog .content .content_left > .search .el-input-group .el-input-group__prepend img {
+    width: 20px;
+    height: 20px;
+    margin-top: 6px;
+    cursor: pointer;
+}
+.ent_powerPerson_dialog .content .content_left > .search .el-input__icon.el-icon-search {
+    width: 24px;
+    height: 24PX;
+}
+.ent_powerPerson_dialog .content .content_left > .search .el-input__inner {
+    background: #F7F7F7;
+    border: 1px solid #ECECEC;
+    border-radius: 22px;
+}
+.ent_powerPerson_dialog .content .content_left > .search .el-input__icon{
+  line-height: 40px!important;
+}
+.ent_powerPerson_dialog .content .content_left .all {
+    height: 40px;
+    display: flex;
+    align-content: center;
+    align-items: center;
+    margin-top: 10px;
+    padding: 0 20px;
+    box-shadow: inset 0px -1px 0px rgba(0, 0, 0, 0.05);
+}
+.ent_powerPerson_dialog .content .content_left .all .seleced {
+    width: 18px;
+    height: 18px;
+    border-radius: 50%;
+    border: 1px solid #e0e0e0;
+    cursor: pointer;
+    margin-right: 10px;
+}
+.ent_powerPerson_dialog .content .content_left .all .selectAll {
+    border: none;
+    background: url(/common-module/personDialog/img/checked.png) no-repeat center center;
+    background-size: 20px;
+}
+.ent_powerPerson_dialog .content .content_left .all .selectHalf {
+    border: none;
+    background: url(/common-module/personDialog/img/half.png) no-repeat center center;
+    background-size: 20px;
+}
+.ent_powerPerson_dialog .content .content_left {
+    width: 400px;
+    height: 400px;
+    border-radius: 6px;
+    margin: 0 5px;
+    display: flex;
+    flex-direction: column;
+    border: 1px solid #ECECEC;
+}
+.ent_powerPerson_dialog .content .content_left .allList {
+    flex: 1;
+    overflow: auto;
+}
+.ent_powerPerson_dialog .content .content_left .allList .active {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding-right: 20px;
+    height: 40px;
+    box-shadow: inset 0px -1px 0px rgba(0, 0, 0, 0.05);
+}
+.ent_powerPerson_dialog .content .content_left .allList::-webkit-scrollbar {
+    width: 8px;
+}
+.ent_powerPerson_dialog .content .content_left .allList::-webkit-scrollbar-thumb {
+    border-radius: 3px;
+    background: #ECECEC;
+    opacity: 0.15;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div {
+    transition: all 0.5s;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding-right: 20px;
+    height: 40px;
+    box-shadow: inset 0px -1px 0px rgba(0, 0, 0, 0.05);
+}
+.ent_powerPerson_dialog .content .content_left .allList > div .itemList > div {
+    padding: 0 20px;
+    line-height: 40px;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div .itemList > div h5 {
+    box-shadow: none;
+    padding-left: 0;
+    padding-right: 10px;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div h5 > div {
+    padding: 0 20px;
+    line-height: 40px;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div h5 > div h5 {
+    box-shadow: none;
+    padding-left: 0;
+    padding-right: 10px;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div h5 {
+    color: #1D1D1D;
+    display: flex;
+    align-items: center;
+    padding: 0 20px;
+    line-height: 40px;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div h5 > span {
+    flex: 1;
+    margin-left: 10px;
+    cursor: pointer;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div h5 i {
+    cursor: pointer;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div h5 .seleced {
+    width: 18px;
+    height: 18px;
+    border-radius: 50%;
+    border: 1px solid #e0e0e0;
+    cursor: pointer;
+    position: relative;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div h5 .selectAll {
+    border: none;
+    background: url(/common-module/personDialog/img/checked.png) no-repeat center center;
+    background-size: 20px;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div h5 .selectHalf {
+    border: none;
+    background: url(/common-module/personDialog/img/half.png) no-repeat center center;
+    background-size: 20px;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div h5 .el-icon-arrow-down {
+    font-size: 16px;
+    color: #aaa;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div.toggle .el-icon-arrow-down {
+    transform: rotateZ(180deg);
+}
+.ent_powerPerson_dialog .content .content_left .allList > div.toggle .itemList {
+    max-height: 0px !important;
+    opacity: 0;
+    overflow: hidden;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div .itemList {
+    opacity: 1;
+    max-height: 4000px;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div .itemList > div {
+    cursor: pointer;
+    color: #686868;
+    display: flex;
+    align-items: center;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div .itemList > div span {
+    padding-right: 20px;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div .itemList > div .userName {
+    margin-right: auto;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div .itemList > div.active {
+    background: #F5F5FB;
+}
+.ent_powerPerson_dialog .content .content_left .allList > div .itemList > div.selectDisabled {
+    pointer-events: none;
+    background: #F5F5FB;
+}
+.ent_powerPerson_dialog .content .content_right h4 {
+    padding: 14px 15px;
+    font-size: 14px;
+    color: #1D1D1D;
+}
+.ent_powerPerson_dialog .content .content_right ul {
+    flex: 1;
+    overflow: auto;
+}
+.ent_powerPerson_dialog .content .content_right ul::-webkit-scrollbar {
+    width: 8px;
+}
+.ent_powerPerson_dialog .content .content_right ul::-webkit-scrollbar-thumb {
+    border-radius: 3px;
+    background: #ECECEC;
+    opacity: 0.15;
+}
+.ent_powerPerson_dialog .content .content_right ul li {
+    float: none;
+    padding: 0 20px;
+    box-shadow: inset 0px -1px 0px rgba(0, 0, 0, 0.05);
+    line-height: 40px;
+    color: #686868;
+    display: flex;
+    align-items: center;
+}
+.ent_powerPerson_dialog .content .content_right ul li span {
+    padding-right: 20px;
+}
+.ent_powerPerson_dialog .content .content_right ul li .userName {
+    margin-right: auto;
+}
+.ent_powerPerson_dialog .content .content_right ul li i {
+    cursor: pointer;
+    font-size: 24px;
+    color: #AAAAAA;
+}
+.ent_powerPerson_dialog p {
+    color: #2ABED1;
+    line-height: 24px;
+    padding: 20px 0 0;
+    text-align: center;
+}
+.ent_powerPerson_dialog p.rootdialog {
+    color: #686868;
+}
+.ent_powerPerson_dialog p.rootdialog > span {
+    color: #2ABED1;
+}
+.ent_powerPerson_dialog button {
+    width: 132px;
+    height: 36px;
+    background: transparent;
+    border-radius: 6px;
+    margin: 0 20px;
+    font-size: 16px;
+}
+.ent_powerPerson_dialog button:active {
+    opacity: 0.8;
+}
+.ent_powerPerson_dialog .save {
+    border: 1px solid #2ABED1;
+    color: #2ABED1;
+}
+.ent_powerPerson_dialog .cancle {
+    border: 1px solid #e0e0e0;
+    color: #686868;
+}
+.ent_powerPerson_dialog .ent_person_tip {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    height: 32px;
+    margin-top: 20px;
+    padding: 0;
+    color: #F56500;
+    background: rgba(255, 159, 64, 0.08);
+    border-radius: 4px;
+}
+.ent_powerPerson_dialog .ent_person_tip .tip_icon {
+    margin: 0 4px 2px 0;
+    width: 18px;
+    height: 18px;
+}

+ 356 - 0
src/web/staticres/common-module/personDialog/personDialog.scss

@@ -0,0 +1,356 @@
+.ent_powerPerson_dialog {
+  display: flex;
+  align-items: center;
+
+  .el-dialog {
+    margin: 0 auto 0 !important;
+  }
+
+  .el-dialog__header {
+    font-size: 26px;
+    color: #1D1D1D;
+  }
+
+  .el-dialog__body {
+    padding: 20px 30px;
+  }
+
+  .content {
+    display: flex;
+    justify-content: space-between;
+
+    .content_right {
+      width: 400px;
+      height: 400px;
+      border-radius: 6px;
+      margin: 0 5px;
+      display: flex;
+      flex-direction: column;
+      border: 1px solid #ECECEC;
+    }
+    .content_left > h4 {
+      padding: 14px 20px;
+      font-size: 14px;
+      color: #1D1D1D;
+    }
+    .content_left > .search {
+      margin-left: 20px;
+      width: 360px;
+
+      .el-input-group {
+        width: 100%;
+        border: 1px solid rgba(0, 0, 0, 0.05);
+        border-radius: 18px;
+
+        .el-input-group__prepend {
+          border-radius: 18px 0 0 18px;
+          background: #F7F7F7;
+          border: none;
+          padding: 0 12px;
+
+          img {
+            width: 20px;
+            height: 20px;
+            margin-top: 6px;
+            cursor: pointer;
+          }
+        }
+      }
+
+      .el-input__icon.el-icon-search {
+        width: 24px;
+        height: 24PX;
+      }
+
+      .el-input__inner {
+        background: #F7F7F7;
+        border: 1px solid #ECECEC;
+        border-radius: 22px;
+      }
+
+    }
+    .content_left .all {
+      height: 40px;
+      display: flex;
+      align-content: center;
+      align-items: center;
+      margin-top: 10px;
+      padding: 0 20px;
+      box-shadow: inset 0px -1px 0px rgba(0, 0, 0, 0.05);
+
+      .seleced {
+        width: 18px;
+        height: 18px;
+        border-radius: 50%;
+        border: 1px solid #e0e0e0;
+        cursor: pointer;
+        margin-right: 10px;
+      }
+
+      .selectAll {
+        border: none;
+        background: url(/common-module/personDialog/img/checked.png) no-repeat center center;
+        background-size: 20px;
+      }
+
+      .selectHalf {
+        border: none;
+        background: url(/common-module/personDialog/img/half.png) no-repeat center center;
+        background-size: 20px;
+      }
+    }
+    .content_left {
+      width: 400px;
+      height: 400px;
+      border-radius: 6px;
+      margin: 0 5px;
+      display: flex;
+      flex-direction: column;
+      border: 1px solid #ECECEC;
+    }
+    .content_left .allList {
+      flex: 1;
+      overflow: auto;
+
+      .active {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        padding-right: 20px;
+        height: 40px;
+        box-shadow: inset 0px -1px 0px rgba(0, 0, 0, 0.05);
+      }
+
+      /* 滚动条样式 */
+      &::-webkit-scrollbar {
+        /*滚动条整体样式*/
+        width: 8px;
+      }
+
+      &::-webkit-scrollbar-thumb {
+        /*滚动条里面小方块*/
+        border-radius: 3px;
+        background: #ECECEC;
+        opacity: 0.15;
+      }
+
+    }
+    .content_left .allList > div {
+      transition: all 0.5s;
+
+      
+      .itemList>div {
+        padding: 0 20px;
+        line-height: 40px;
+
+        h5 {
+          box-shadow: none;
+          padding-left: 0;
+          padding-right: 10px;
+        }
+      }
+      h5 > div {
+        padding: 0 20px;
+        line-height: 40px;
+
+        h5 {
+          box-shadow: none;
+          padding-left: 0;
+          padding-right: 10px;
+        }
+      }
+
+      h5 {
+        color: #1D1D1D;
+        display: flex;
+        align-items: center;
+
+        >span {
+          flex: 1;
+          margin-left: 10px;
+          cursor: pointer;
+        }
+
+        i {
+          cursor: pointer;
+        }
+
+        .seleced {
+          width: 18px;
+          height: 18px;
+          border-radius: 50%;
+          border: 1px solid #e0e0e0;
+          cursor: pointer;
+          position: relative;
+        }
+
+        .selectAll {
+          border: none;
+          background: url(/common-module/personDialog/img/checked.png) no-repeat center center;
+          background-size: 20px;
+        }
+
+        .selectHalf {
+          border: none;
+          background: url(/common-module/personDialog/img/half.png) no-repeat center center;
+          background-size: 20px;
+        }
+
+        .el-icon-arrow-down {
+          font-size: 16px;
+          color: #aaa;
+
+        }
+      }
+
+      &.toggle {
+        .el-icon-arrow-down {
+          transform: rotateZ(180deg);
+        }
+
+        .itemList {
+          max-height: 0px !important;
+          opacity: 0;
+          overflow: hidden;
+        }
+      }
+
+      .itemList {
+        // transition: all  0.5s ;
+        opacity: 1;
+        max-height: 4000px;
+
+        >div {
+          cursor: pointer;
+          color: #686868;
+          display: flex;
+          align-items: center;
+
+          span {
+            padding-right: 20px;
+          }
+
+          .userName {
+            margin-right: auto;
+          }
+
+          &.active {
+            background: #F5F5FB;
+          }
+
+          &.selectDisabled {
+            pointer-events: none;
+            background: #F5F5FB;
+          }
+        }
+
+      }
+    }
+
+    .content_right {
+      h4 {
+        padding: 14px 15px;
+        font-size: 14px;
+        color: #1D1D1D;
+      }
+
+      ul {
+        flex: 1;
+        overflow: auto;
+
+        /* 滚动条样式 */
+        &::-webkit-scrollbar {
+          /*滚动条整体样式*/
+          width: 8px;
+        }
+
+        &::-webkit-scrollbar-thumb {
+          /*滚动条里面小方块*/
+          border-radius: 3px;
+          background: #ECECEC;
+          opacity: 0.15;
+        }
+
+        li {
+          float: none;
+          padding: 0 20px;
+          box-shadow: inset 0px -1px 0px rgba(0, 0, 0, 0.05);
+          line-height: 40px;
+          color: #686868;
+          display: flex;
+          align-items: center;
+
+          span {
+            padding-right: 20px;
+          }
+
+          .userName {
+            margin-right: auto;
+          }
+
+          i {
+            cursor: pointer;
+            font-size: 24px;
+            color: #AAAAAA;
+          }
+        }
+      }
+    }
+  }
+
+  p {
+    color: #2ABED1;
+    line-height: 24px;
+    padding: 20px 0 0;
+    text-align: center;
+
+    &.rootdialog {
+      color: #686868;
+
+      >span {
+        color: #2ABED1;
+      }
+    }
+  }
+
+  button {
+    width: 132px;
+    height: 36px;
+    background: transparent;
+    border-radius: 6px;
+    margin: 0 20px;
+    font-size: 16px;
+
+    &:active {
+      opacity: 0.8;
+    }
+  }
+
+  .save {
+    border: 1px solid #2ABED1;
+    color: #2ABED1;
+  }
+
+  .cancle {
+    border: 1px solid #e0e0e0;
+    color: #686868;
+  }
+
+  .ent_person_tip {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    height: 32px;
+    margin-top: 20px;
+    padding: 0;
+    color: #F56500;
+    background: rgba(255, 159, 64, 0.08);
+    border-radius: 4px;
+
+    .tip_icon {
+      margin: 0 4px 2px 0;
+      width: 18px;
+      height: 18px;
+    }
+  }
+}

+ 46 - 1
src/web/staticres/common-module/public/js/setTdk.js

@@ -42,4 +42,49 @@ function setPageTdk (router, variable) {
         break
     }
   }
-}
+}
+
+function createMetaTag (name, content) {
+  var d = document.createElement('meta')
+  d.name = name
+  d.content = content
+  return d
+}
+
+function setPageTdkToView (conf) {
+  var titleText = conf.title
+  var descriptionText = conf.description
+  var keywordsText = conf.keywords
+
+  var document = window.document
+  if (window.top !== window) {
+    document = window.top.document
+  }
+
+  var head = document.querySelector('head')
+  var titleDOM = document.querySelector('head > title')
+  var descriptionDOM = document.querySelector('meta[name=description]') || document.querySelector('meta[name=Description]')
+  var keywordsDOM = document.querySelector('meta[name=keywords]') || document.querySelector('meta[name=Keywords]')
+
+  if (titleText && titleDOM) {
+    titleDOM.innerText = titleText
+  }
+  if (descriptionText) {
+    if (descriptionDOM) {
+      descriptionDOM.content = descriptionText
+    } else {
+      // 创建dom
+      descriptionDOM = createMetaTag('description', descriptionText)
+      head.appendChild(descriptionDOM)
+    }
+  }
+  if (keywordsText) {
+    if (keywordsDOM) {
+      keywordsDOM.content = keywordsText
+    } else {
+      // 创建dom
+      keywordsDOM = createMetaTag('keywords', keywordsText)
+      head.appendChild(keywordsDOM)
+    }
+  }
+}

+ 7 - 3
src/web/staticres/css/dev2/biddingSearch.css

@@ -763,7 +763,7 @@ position: absolute;
   justify-content: flex-end;
 }
 #searchInner .right-tabBtn-superSearch{
-  width: 265px;
+  min-width: 265px;
 }
 #searchInner .right-tabBtn-proproject{
   width: 153px;
@@ -820,6 +820,10 @@ position: absolute;
   background: transparent url("/images/biddingSearch/icons-export.png") 10px center no-repeat;
   background-size: 18px 16px;
 }
+#searchInner .searchControl .seaTender-inner .tabTitle .right-tabBtn #right-distribute{
+  background: transparent url("/images/biddingSearch/distribute.png") 10px center no-repeat;
+  background-size: 20px;
+}
 #searchInner .tab-detail-list{
   position: relative;
 }
@@ -840,8 +844,8 @@ position: absolute;
 
 #searchInner .split-line{
 	width:1px;
-	height:20px;
-	background-color:#e0e0e0;
+	height:18px;
+	background-color:#ececec;
 	margin:15px 5px 0px 5px;
 }
 

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

@@ -13,6 +13,9 @@ form{
 .no-selected {
   user-select: none;
 }
+.highlight-text {
+	color: #2CB7CA;
+}
 /*****************头部*******************/
 .nav-search{
 	width:350px;
@@ -4577,10 +4580,9 @@ h6 {
 }
 .cutline{
 	background: #F4F4F9;
-    height: 10px;
+    height: 20px;
     margin-left: -40px;
     margin-right: -40px;
-    margin-top: 15px;
 }
 .tab3{
 	width: 500px;
@@ -5317,3 +5319,20 @@ h6 {
   -o-transform: translate(-50%,0);
   transform: translate(-50%,0);
 }
+
+.top-guide-container {
+  margin-left: -40px;
+  margin-right: -40px;
+  border-radius: 4px;
+  overflow: hidden;
+  height: 64px;
+}
+.top-guide-container a {
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+.top-guide-container img {
+  display: block;
+  width: 100%;
+}

+ 14 - 1
src/web/staticres/frontRouter/pc/collection/js/index-pc.js

@@ -777,6 +777,9 @@ var vm = new Vue({
            success: function (r) {
              if (r.data && r.error_code == 0) {
                var data = r.data || []
+               if(data.length > 0) {
+                Bidrenewal_Dialog.initBidrenewalDialog = true // 加载参标状态更新弹窗
+               }
                data.forEach(function(item) {
                  _this.listState.list.forEach(function(temp) {
                    if (item.id == temp._id) {
@@ -784,6 +787,7 @@ var vm = new Vue({
                    }
                  })
                })
+
              }
            }
          })
@@ -813,7 +817,16 @@ var vm = new Vue({
           success: function(r){
             if (r && r.data && r.error_code == 0) {
               item.joinBid = true
-              _this.showToast('已参标,请前往我的参标项目列表查看。')
+              // _this.showToast('已参标,请前往我的参标项目列表查看。')
+              try{
+                Bidrenewal_Dialog.sendId(item._id)
+                window.$BidrenewalDialog.open()
+              }catch(e){
+                setTimeout(function() {
+                  Bidrenewal_Dialog.sendId(item._id)
+                  window.$BidrenewalDialog.open()
+                } , 100)
+              }    
             } else if(r.error_code == -1) {
               var msg = r.error_msg || '参标错误,请稍后重试'
               _this.showToast(msg)

二進制
src/web/staticres/images/biddingSearch/distribute.png


二進制
src/web/staticres/images/focontent/ad_bigmember.png


二進制
src/web/staticres/images/focontent/ad_bigmember2.png


二進制
src/web/staticres/images/pc/caigouyixiang-guide.png


二進制
src/web/staticres/images/pc/nijian-guide.png


+ 12 - 12
src/web/staticres/js/biddingSearch.js

@@ -127,18 +127,18 @@ $(function() {
 
 		});
 		$parentNode.on('click', function() {
-			if($(this).hasClass("infoFist")){
-        if (goTemplateData.inIframe) {
-          window.$BRACE.methods.open({
-            route: {
-              link: '/jylab/supsearch/proposedProject.html'
-            }
-          })
-        } else {
-          window.location.href="/jylab/supsearch/proposedProject.html"
-        }
-				return false;
-			}
+			// if($(this).hasClass("infoFist")){
+			// 	if (goTemplateData.inIframe) {
+			// 		window.$BRACE.methods.open({
+			// 			route: {
+			// 			link: '/jylab/supsearch/proposedProject.html'
+			// 			}
+			// 		})
+			// 	} else {
+			// 		window.location.href="/jylab/supsearch/proposedProject.html"
+			// 	}
+			// 	return false;
+			// }
 			$(this).toggleClass("active").removeClass("secondActice");
 			var $nextALLChildren = $(this).nextUntil('.diver');
 			if(!$(this).hasClass('active')) {

+ 72 - 32
src/web/staticres/js/ent-search-index-pc.js

@@ -11,7 +11,7 @@ var vm = new Vue({
         return {
             foundingTime:'',//成立时间
             provinceMap: provinceMap,
-            searchContent: '',
+            searchContent: pageInfo.searchContent,
             tabActive: 'qy',
             filterShow: true,
             searchTypeList: [
@@ -33,10 +33,12 @@ var vm = new Vue({
                 // },
                 {
                     label: '经营范围',
+                    needVip: true,
                     value: 'F'
                 },
                 {
                     label: '中标项目/标的物',
+                    needVip: true,
                     value: 'E'
                 }
             ],
@@ -207,6 +209,9 @@ var vm = new Vue({
             baiduName: '',
             inputStatus: false,
 
+            inIframe: false,
+            isLogin: false,
+
             buttonType:false,//成立时间自定义区间确定按钮的显示状态
 
             focusColor:false,//改变获取焦点输入框的背景颜色
@@ -263,6 +268,19 @@ var vm = new Vue({
         showEntUsage: function () {
             return !this.powerInfo.member && this.powerInfo.vip > 1
         },
+        searchTypeListComputed: function () {
+            if (this.isLogin) {
+                return this.searchTypeList
+            } else {
+                var arr = []
+                this.searchTypeList.forEach(function (item) {
+                    if (!item.needVip) {
+                        arr.push(item)
+                    }
+                })
+                return arr
+            }
+        },
         getVipSubText: function () {
             var count = this.entUseInfo.province
             if (count == -1) {
@@ -277,7 +295,14 @@ var vm = new Vue({
         },
     },
     created: function () {
-        this.getPower()
+        var params = goTemplateData.params
+        this.inIframe = goTemplateData.inIframe
+        this.isLogin = !!params.isLogin
+        if (this.isLogin) {
+            this.getPower()
+        } else {
+            this.doSearch()
+        }
         this.initPageData()
         this.initProvinceMapList()
     },
@@ -309,10 +334,10 @@ var vm = new Vue({
                 type:'POST',
                 url:'/entnicheNew/buy/whetherbuy',
                 success:function (res) {
-                  if (res.error_code == 1001 || res.error_msg.indexOf('登录') >- 1) {
+                  if (res && res.error_code == 1001 || res.error_msg.indexOf('登录') >- 1) {
                     $('#tab-cgdw').css('display', 'none')
                   }
-                  if (res.data.isNew) {
+                  if (res && res.data && res.data.isNew) {
                     $('#tab-cgdw').css('display', 'inline-block')
                   } else {
                     $('#tab-cgdw').css('display', 'none')
@@ -345,7 +370,7 @@ var vm = new Vue({
                             this.getEntProtUsage()
                         }
                     } else {
-                        this.checkLogin()
+                        // this.checkLogin()
                     }
                 }.bind(this),
                 complete: function () {
@@ -379,8 +404,8 @@ var vm = new Vue({
         initDOMEvents: function () {
             ewmMoveHover()
             refreshEwmText(this.searchContent)
-            insertVipIcon($('.search-type .el-checkbox:last-of-type'))
             insertVipIcon($('.search-type .el-checkbox:nth-of-type(4)'))
+            insertVipIcon($('.search-type .el-checkbox:nth-of-type(5)'))
             setTimeout(function () {
                 tabHover()
             }, 300)
@@ -663,7 +688,26 @@ var vm = new Vue({
                 }.bind(this)
             })
         },
+        setPageTdk () {
+            var name = this.searchContent.trim()
+            if (name) {
+                setPageTdkToView({
+                    title: name + '相关搜索结果 - 剑鱼标讯',
+                    keywords: name + ',' + name + '中标信息,' + name + '项目动态,剑鱼标讯',
+                    description: '剑鱼标讯企业搜索是国内专业的中标企业信息查询平台,为您提供' + name + '相关的中标企业信息详情,帮助您全面了解中标企业最新动态,获取更多' + name + '相关搜索结果就上剑鱼标讯!'
+                })
+            } else {
+                setPageTdkToView({
+                    title: '企业工商信息查询_公司招投标查询_中标企业查询 - 剑鱼标讯',
+                    keywords: '企业信息查询,工商查询,招投标公司查询,中标企业查询,中标单位,中标企业画像,剑鱼标讯',
+                    description: '剑鱼标讯企业搜索为您精准提供全国工商企业信息、招投标公司及中标企业信息查询服务,涵盖企业信息查询,工商查询,招投标公司查询,中标企业搜索,中标企业画像查看等多维度服务,帮您快速了解企业招投标情况,提前预判风险,拓展合作商机。'
+                })
+                
+            }
+            
+        },
         doSearch: function () {
+            this.setPageTdk()
             this.resetListState()
             this.getList()
         },
@@ -699,7 +743,7 @@ var vm = new Vue({
                             this.preSearch.list = res.data.list || []
                         }
                     } else {
-                        this.checkLogin()
+                        // this.checkLogin()
                     }
                 }.bind(this)
             })
@@ -734,7 +778,7 @@ var vm = new Vue({
                     if (res.error_code === 0) {
                         this.setListStateAndCheckPower(res)
                     } else {
-                        this.checkLogin()
+                        // this.checkLogin()
                     }
                 }.bind(this),
                 complete: function () {
@@ -747,13 +791,8 @@ var vm = new Vue({
             var _this = this
             if (res.data) {
                 if (res.data.total) {
-                    if (this.power) {
-                        this.listState.total = res.data.total
-                        this.listState.pageTotal = Math.ceil(res.data.total / this.listState.pageSize)
-                    } else {
-                        this.listState.total = 4
-                        this.listState.pageTotal = 1
-                    }
+                    this.listState.total = res.data.total
+                    this.listState.pageTotal = Math.ceil(res.data.total / this.listState.pageSize)
                 }
 
                 if (res.data.list) {
@@ -769,23 +808,24 @@ var vm = new Vue({
                             )
                         } catch (error) {}
                     })
-                    if (this.power) {
-                        this.listState.list = res.data.list || []
-                    } else {
-                        if (res.data.list.length >= 4) {
-                            res.data.list.length = 4
-                            res.data.list.push({
-                                company_shortname: 'xxx',
-                                company_address: 'xxx',
-                                company_name: 'xxx',
-                                company_status: 'xxx',
-                                legal_person: 'xxx',
-                                id: 'xxx',
-                                showMask: true
-                            })
-                        }
-                        this.listState.list = res.data.list || []
-                    }
+                    this.listState.list = res.data.list || []
+                    // if (this.power) {
+                    //     this.listState.list = res.data.list || []
+                    // } else {
+                    //     if (res.data.list.length >= 4) {
+                    //         res.data.list.length = 4
+                    //         res.data.list.push({
+                    //             company_shortname: 'xxx',
+                    //             company_address: 'xxx',
+                    //             company_name: 'xxx',
+                    //             company_status: 'xxx',
+                    //             legal_person: 'xxx',
+                    //             id: 'xxx',
+                    //             showMask: true
+                    //         })
+                    //     }
+                    //     this.listState.list = res.data.list || []
+                    // }
                 }
             } else {
                 this.listState.total = 0

+ 5 - 0
src/web/staticres/js/login.js

@@ -377,6 +377,11 @@ function checkBigStatus () {
 		  }
 		}
       }
+    },
+    complete: function () {
+      try {
+        getPowerComplete && getPowerComplete()
+      } catch (error) {}
     }
   })
 }

+ 59 - 5
src/web/staticres/js/superSearch.js

@@ -313,7 +313,7 @@ function appendDatas(datas,flag,isNew,onlyUpdateTable){
 		if (!onlyUpdateTable){ //是否仅更新table
 			listHtml += '<li>'
         listHtml +='<div class="liLuceneList" style="border-bottom: 1px solid #EBEBEB;">'
-          listHtml += '<input class="custom-checkbox title-text-checkbox" name="bid-list" type="checkbox" dataid="'+datas[i]._id+'" />'
+          listHtml += '<input class="custom-checkbox title-text-checkbox" name="bid-list" type="checkbox" dataid="'+datas[i]._id+'" data-area="'+ datas[i].area+'"/>'
           listHtml +='<div class="list-container">'
             // 标题、推送时间
             listHtml += '<div class="bid-list-title">'
@@ -376,7 +376,7 @@ function appendDatas(datas,flag,isNew,onlyUpdateTable){
                 listHtml+='</div>'
                 listHtml+='<div>'
                 // 是否参标(2022/05/12)
-                 listHtml += '<i class="icon-canbiao" dataid="'+datas[i]._id+'" style="display:none"></i>'
+                 listHtml += '<i class="icon-canbiao" style="display:none" dataid="'+datas[i]._id+'" ></i>'
 
                 // // 是否收藏
                 listHtml += '<i class="icon-collect" dataid="'+datas[i]._id+'"></i>'
@@ -635,6 +635,8 @@ function appendDatas(datas,flag,isNew,onlyUpdateTable){
   checkVisited()
   // 生成dom之后再查询是否勾选
   getCheckList()
+
+  distributeInit() // 分发初始化
   /**
    * @date 2022/12/15 山川环境嵌入搜索
    * 更新是否已添加状态
@@ -1583,7 +1585,53 @@ function collectClick() {
     }
   })
 }
-
+function distributeInit(){
+  $.ajax({
+    type: 'get',
+    contentType: "application/json",
+    url: '/bigmember/use/isAdd',
+    success: function (r) {
+      if (r.data) {
+        if(r.data.entSubscribe == 1){
+          $('#right-distribute').show();
+          $('.line-distribute').show();
+        }  
+      }
+    }
+  })
+  // $('#right-distribute').show();
+  // $('.line-distribute').show();
+  $('#right-distribute').off('click').bind('click',function(e){
+    e.stopPropagation()
+    let len = $('.custom-checkbox:not(".check-all"):checked').length;
+    let checkedArea = [] 
+    let checked_id = []
+    $('.custom-checkbox:not(".check-area"):checked').each(function(){
+      if ($(this).attr('data-area')) {
+        checkedArea.push($(this).attr('data-area'))
+      }
+      if ($(this).attr('dataid')) {
+        checked_id.push($(this).attr('dataid'))
+      }
+    })
+    if(len) {
+      if(checkedArea.length !== 0){
+        // 拉起选择人员弹窗 有地区
+        person_Dialog.selectAreas = checkedArea
+      }else{
+        // 无地区
+        person_Dialog.selectArea = []  
+      }
+      person_Dialog.titleMsg = '选择接收人员' // 设置弹窗标题
+      person_Dialog.searchVal = ''
+      person_Dialog.centerDialogVisible = true // 打开弹窗
+      person_Dialog.selectDataIds = checked_id // 传入标讯ID
+      person_Dialog.getData('yes') // 发送获取人员列表请求
+    }else{
+      toastFn('尚未选择公告,请选择', 1000)
+    }
+  })
+}
 /*******参标方法start**********/
 /*
   招标信息是否参标藏接口ajax
@@ -1619,6 +1667,9 @@ function getBidIsJoin () {
     success: function (r) {
       if (r.data) {
         var data = r.data
+        if(data.length > 0) {
+          Bidrenewal_Dialog.initBidrenewalDialog = true // 加载参标状态更新弹窗
+         }
         $('.icon-canbiao').removeClass('checked')
         data.forEach(function (item, index) {
           $('.icon-canbiao[dataid="' + item.id + '"]').show()
@@ -1645,13 +1696,16 @@ function joinBidsClick() {
     e.stopPropagation()
     var $that = $(this)
     var checked = $(this).hasClass('checked')
-    var checkedId =  $(this).attr('dataid')
+    var checkedId =  $(this).attr('dataid')   
     if (checked) {
       toastFn('如需终止参标,需要在详情页进行操作。', 800)
     } else {
       joinBidAction('in', checkedId, function(res) {
         if (res.data && res.error_code == 0) {
-          toastFn('已参标,请前往我的参标项目列表查看', 1500)
+          // toastFn('已参标,请前往我的参标项目列表查看', 1500)
+          // 调起参标更新弹窗
+          Bidrenewal_Dialog.sendId(checkedId)
+          window.$BidrenewalDialog.open()
           $that.addClass('checked')
         } else if(res.error_code == -1){
           var msg = res.error_msg || '操作错误,请稍后重试'

+ 11 - 1
src/web/staticres/pccss/ent-search-index-pc.css

@@ -24,7 +24,7 @@
 }
 .search-header {
     /* padding: 29px 0 15px; */
-    background-color: #f5f5fb;
+    background-color: #fff;
 }
 .search-content {
     padding: 28px 0;
@@ -208,6 +208,16 @@
 
 .search-result-container {
     margin-top: 16px;
+    font-size: 16px;
+    border-radius: 8px;
+    min-height: 400px;
+    padding-bottom: 40px;
+    background: #fff;
+}
+
+.no-data {
+    margin-top: 0;
+    padding-top: 100px;
 }
 
 .ent-info-item {

+ 15 - 11
src/web/staticres/public-pc/js/article-content.js

@@ -952,7 +952,8 @@ $(function(){
       if(pckorigin==undefined){
         pckorigin=packageCon[n].type+packageCon[n].origin
       }
-      var pckbidamount = packageCon[n].bidamount;
+      // var pckbidamount = packageCon[n].bidamount;  //18年开发的时候 预算金额用的中标金额字段bidamount,原因已不可察;23年调整 改为预算字段budget
+      var pckbidamount = packageCon[n].budget;
       if(pckbidamount==undefined){
         pckbidamount=""
       }
@@ -1802,8 +1803,8 @@ var industry = getQueryString("industry");
 var subscopeclass = goTemplateData.params.obj.s_subscopeclass;
 var buyerclass =goTemplateData.params.obj.buyerclass;
 
-if (area !="" && area != "A"&&area!=undefined){
-  $(".com-statusbar").append('<span class="com-area"><a href="/list/area/'+goTemplateData.params.obj.areaadd+'.html">'+area+'</a></span>');
+if (area !="" && area != "A"&&area!=undefined){ // 标签栏插入标签
+  $(".com-tagsbar").append('<span class="com-area"><a href="/list/area/'+goTemplateData.params.obj.areaadd+'.html">'+area+'</a></span>');
 }
 if(typeof(type) == "undefined" || type == null || type == ""){
   type = goTemplateData.params.obj.toptype;
@@ -1818,8 +1819,8 @@ if(typeof(type) == "undefined" || type == null || type == ""){
     type = "";
   }
 }
-if(typeof(type) != "undefined" && type != null && type != ""){
-  $(".com-statusbar").append('<span class="com-type"><a href="/list/stype/'+goTemplateData.params.obj.stypeadd+'.html">'+type+'</a></span>');
+if(typeof(type) != "undefined" && type != null && type != ""){ // 标签栏插入标签
+  $(".com-tagsbar").append('<span class="com-type"><a href="/list/stype/'+goTemplateData.params.obj.stypeadd+'.html">'+type+'</a></span>');
 }
 // 2023-5-24 P341去掉
 // if(industry && industry!="undefined"){
@@ -1835,20 +1836,23 @@ if(typeof(type) != "undefined" && type != null && type != ""){
 //   }
 // }
 // P341支持全部用户可见
-if(buyerclass && buyerclass !== '其它'){
-  $(".com-statusbar").append('<span class="com-buyerclass"><a>'+buyerclass+'</a></span>');
+if(buyerclass && buyerclass !== '其它'){ // 标签栏插入标签
+  $(".com-tagsbar").append('<span class="com-buyerclass"><a>'+buyerclass+'</a></span>');
 }
 var bidamount_class=goTemplateData.params.obj.bidamount
 var budget_class=goTemplateData.params.obj.budget
 var amount=getacount(bidamount_class,budget_class)
-if (amount!=""){
-  $(".com-statusbar").append('<span class="com-amount"><a>'+conversionMoeny(amount)+'</a></span>');
+var amountNoMask = amount !== '略'&& amount.indexOf("免费注册")===-1 && amount.indexOf('登录')===-1 && amount.indexOf('登陆')===-1 && amount.indexOf('解锁')===-1
+if (amount && amountNoMask){ // 标签栏插入标签
+  $(".com-tagsbar").append('<span class="com-amount"><a>'+conversionMoeny(amount)+'</a></span>');
 }
 //
 if(publishtime != "" && typeof(publishtime) != "undefined"){
   var diff =goTemplateData.params.obj.publishtimeShorDate
-  if(diff != null){
-    $(".com-statusbar").append('<span class="com-time"><i class="glyphicon bofangjilu"></i>'+diff+'</span>');
+  if(diff != null){ // 按钮行 左边插入时间
+    // <i class="glyphicon bofangjilu"></i> //时间图标
+    $(".com-statusbar").append('<span class="com-time">'+diff+'</span>');
+    // $(".com-tagsbar").append('<span class="com-time">'+diff+'</span>');
   }
 }
 var upno = goTemplateData.params.obj.i_upno || 0

+ 1 - 1
src/web/staticres/public-pc/js/header-nav.js

@@ -128,7 +128,7 @@ function trySelectNav (name) {
     }
 
     // 导航栏是否固定
-    var noFixedArr = ['/article/indexcontent','/article/content', '/article/mailprivate', '/article/entservice', '/nologin/content']
+    var noFixedArr = ['/article/indexcontent','/article/content', '/article/mailprivate', '/article/entservice', '/nologin/content', '/nologin/indexcontent',]
     var hasPage = noFixedArr.some(function (v) {
       return $href.indexOf(v) !== -1
     })

+ 16 - 0
src/web/staticres/tags/css/no-login-detail.css

@@ -12,6 +12,12 @@
   line-height: 22px;
   color: #686868;
 }
+.fl {
+  float: left;
+}
+.fr {
+  float: right;
+}
 
 .no-login-detail .bread-nav .active{
   color: #2ABED1;
@@ -430,3 +436,13 @@
 .no-login-detail .otherinfo .com-status{
 	float: right;
 }
+
+.advanced-table .cont-cont {
+  width: 250px !important;
+  color: #2CB7CA;
+  cursor: pointer;
+}
+.advanced-table .portrait_img {
+  color: #2CB7CA;
+  cursor: pointer;
+}

+ 2 - 1
src/web/staticres/tags/js/no-login-detail.js

@@ -1463,7 +1463,8 @@ if (goTemplateData.params.isVip || goTemplateData.params.isMember || goTemplateD
 var bidamount_class=goTemplateData.params.obj.bidamount
 var budget_class=goTemplateData.params.obj.budget
 var amount=getacount(bidamount_class,budget_class)
-if (amount && amount!=="" && amount !== '略'&& amount.indexOf("免费注册")===-1){
+var amountNoMask = amount !== '略'&& amount.indexOf("免费注册")===-1 && amount.indexOf('登录')===-1 && amount.indexOf('登陆')===-1 && amount.indexOf('解锁')===-1
+if (amount && amount!=="" && amountNoMask){
   $(".com-statusbar").append('<span class="com-amount"><a>'+conversionMoeny(amount)+'</a></span>');
 }
 //

+ 2 - 1
src/web/templates/big-member/wx/commonjs.html

@@ -3,7 +3,8 @@
 <link rel="preload" as="script" href='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></link>
 
 <script src='{{Msg "seo" "cdn"}}/big-member/js/rem.js'></script>
-<script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script>
+<!-- <script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script> -->
+<script src='{{Msg "seo" "cdn"}}/common-module/public/js/utils.js?v={{Msg "seo" "version"}}'></script>
 {{include "/common/baiducc.html"}}
 <!--es6垫片-->
 <!--<script src="https://polyfill.io/v3/polyfill.min.js"></script>-->

+ 6 - 0
src/web/templates/big-member/wx/page_client_follow_detail.html

@@ -12,6 +12,8 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
     <link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
 </head>
 <body>
 <div class="j-container">
@@ -362,6 +364,9 @@
                 <van-button class="c-btns" @click="sendMail">确认</van-button>
             </div>
         </van-dialog>
+        <van-popup class="j-container" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+          <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+        </van-popup>
     </div>
 </div>
 
@@ -375,6 +380,7 @@
     var localEmail =  {{.T.email}} || sessionStorage.getItem('reportEmail') || ''
 </script>
 <script src='{{Msg "seo" "cdn"}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/big-member/js/page_client_follow_detail.js?v={{Msg "seo" "version"}}'></script>
 </body>
 </html>

+ 5 - 0
src/web/templates/big-member/wx/page_client_follow_list.html

@@ -11,6 +11,7 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/big-member/css/page_client_follow_list.css?v={{Msg "seo" "version"}}'/>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
 </head>
 <body>
 <div class="j-container">
@@ -81,6 +82,9 @@
                     <div class="j-button-manycancel" @click="manycancel()">批量取消关注30天无更新的项目</div>
                 </div>
             </div>
+            <van-popup class="j-container" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+              <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+            </van-popup>
         </div>
     </div>
 </div>
@@ -93,6 +97,7 @@
 <script src='{{Msg "seo" "cdn"}}/common-module/public/js/china-map-data.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/area-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/big-member/js/page_client_follow_list.js?v={{Msg "seo" "version"}}'></script>
 </body>
 </html>

+ 33 - 5
src/web/templates/big-member/wx/page_pro_follow_detail.html

@@ -17,8 +17,9 @@
     <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" type="text/css" href='{{Msg "seo" "cdn"}}/common-module/forward-share/css/forward.css?v={{Msg "seo" "version"}}'/>
-    <link rel="stylesheet"
-          href='{{Msg "seo" "cdn"}}/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/page_pro_follow_detail.css?v={{Msg "seo" "version"}}'/>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
     <!--E-当前页面的css资源-->
 </head>
 <body>
@@ -367,6 +368,9 @@
                 <van-button class="c-btns" @click="sendMail">确认</van-button>
             </div>
         </van-dialog>
+        <van-popup class="j-container" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+          <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+        </van-popup>
     </div>
     <!--S-Vue-->
 </div>
@@ -382,6 +386,7 @@
 <script src='{{Msg "seo" "cdn"}}/common-module/forward-share/js/forward.js?v={{Msg "seo" "version"}}'></script>
 <script src='/common-module/keep-tags/keep-ent-tags-template.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/js/common.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
 
 <script>
     var MoneyUnit = {
@@ -463,7 +468,8 @@
         delimiters: ['${', '}'],
         el: '#v-pro',
         components: {
-          forwardshare: vmForward
+          forwardshare: vmForward,
+          bidStatusNode: bidStatusNode
         },
         data: {
             powerInfo: {
@@ -549,7 +555,10 @@
               status: 0
             },
             rownum: 1,
-            proParams: {}
+            proParams: {},
+            showBidStatus: false,
+            popupHeight: 'height: 8.8rem',
+            projectCellInfo: {}
         },
         created() {
             this.isOpening()
@@ -648,6 +657,23 @@
             // params.channelPerson = legal_person || ''
           },
 
+          setHeight: function (data) {
+            if(data === 2) {
+              this.popupHeight = 'height: 10.92rem'
+            } else {
+              this.popupHeight = 'height: 8.8rem'
+            }
+          },
+          // 更新投标状态成功
+          saveSuccess: function () {
+            this.showBidStatus = false
+            this.getBidContent()
+          },
+          // 取消更新投标状态
+          cancelUpdate: function () {
+            this.showBidStatus = false
+          },
+
           /**
            * 获取模糊渠道名称列表
            * @param str
@@ -980,6 +1006,7 @@
               }
             }
             const _this = this
+            _this.projectCellInfo.sid = this.sid
             const type = weicanbiao ? 'in' : 'out';
             const url = '/jyapi/jybx/core/participate/'+ type + '/info'
             const params = {
@@ -1000,7 +1027,8 @@
                     _this.getCanBiaoInfo()
                     if (type === 'in') {
                       _this.getHaveActionHistory()
-                      _this.$toast('已参标,请前往我的参标项目列表查看')
+                      _this.showBidStatus = true
+                      // _this.$toast('已参标,请前往我的参标项目列表查看')
                     }
                     // 更新收藏列表
                     const updateCBStatus = {

+ 33 - 3
src/web/templates/big-member/wx/page_pro_follow_list.html

@@ -17,6 +17,8 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/page_pro_follow_list.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
     <!--E-当前页面的css资源-->
 </head>
 <body>
@@ -87,6 +89,9 @@
                     <div class="j-button-manycancel" @click="manycancel()">批量取消关注30天无更新的项目</div>
                 </div>
             </div>
+            <van-popup class="j-container" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+              <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+            </van-popup>
         </div>
     </div>
     <!--S-Vue-->
@@ -107,6 +112,8 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
 {{include "/big-member/wx/commonjs.html"}}
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
 <!--E-当前页面的资源-->
 <!--小于100行同css,减少请求数-->
 <script>
@@ -114,6 +121,9 @@
     var vNode = {
         delimiters: ['${', '}'],
         el: '#v-node',
+        components: {
+          bidStatusNode: bidStatusNode
+        },
         data: {
             sessStorageKey:'$data-pro_follow_list',
             scrollTop:0,//页面滚动高度
@@ -128,7 +138,10 @@
             bi: {
                 addedIds: []
             },
-            isFree:false
+            isFree:false,
+            showBidStatus: false,
+            popupHeight: 'height: 8.8rem',
+            projectCellInfo: {}
         },
         computed: {
             biEnv: function () {
@@ -225,6 +238,21 @@
                     // on cancel
                 });
             },
+            setHeight: function (data) {
+              if(data === 2) {
+                this.popupHeight = 'height: 10.92rem'
+              } else {
+                this.popupHeight = 'height: 8.8rem'
+              }
+            },
+            // 更新投标状态成功
+            saveSuccess: function () {
+              this.showBidStatus = false
+            },
+            // 取消更新投标状态
+            cancelUpdate: function () {
+              this.showBidStatus = false
+            },
             getProjectList () {
                 // 异步更新数据
                 var _this = this
@@ -476,8 +504,9 @@
                 if (item.isCB && item.isCB.value) {
                     this.$toast('如需终止参标,请在详情页进行操作。')
                     return
-                }
+                } 
                 var _this = this
+                _this.projectCellInfo = item
                 var params = { bidIds: item.sid }
                 $.ajax({
                     url: '/jyapi/jybx/core/participate/in/info',
@@ -486,11 +515,12 @@
                     data: JSON.stringify(params),
                     success: function (res) {
                         if (res.error_code === 0 && res.data) {
-                            _this.$toast('已参标,请前往我的参标项目列表查看。')
+                            // _this.$toast('已参标,请前往我的参标项目列表查看。')
                             _this.$set(item, 'isCB', {
                                 id: item.sid,
                                 value: true
                             })
+                            _this.showBidStatus = true
                         } else {
                           _this.$toast(res.error_msg)
                         }

+ 103 - 0
src/web/templates/common/BidrenewalDialog.html

@@ -0,0 +1,103 @@
+<div id="BidrenewalDialog" v-show="showNewuserDialog" v-if="initBidrenewalDialog">
+  <iframe ref="myIframe" :src="url" marginwidth="0" marginheight="0" frameborder="0"
+    allowtransparency="allowtransparency" class="iframe" style="display: none"
+    onload="this.style.display='block'"></iframe>
+</div>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.7.14/vue.min.js></script>
+<script>
+  var Bidrenewal_Dialog = new Vue({
+    el: "#BidrenewalDialog",
+    delimiters: ["@@", "@@"],
+    // template: temp,
+    data: function () {
+      return {
+        url: location.origin + '/swordfish/page_big_pc/BidrenewalDialog?iframe=BidrenewalDialog',
+        // url: 'http://localhost:8081/swordfish/page_big_pc/BidrenewalDialog?iframe=BidrenewalDialog',
+        showNewuserDialog: false,
+        _scrollTop: '',
+        initBidrenewalDialog:false
+      };
+    },
+    computed: {
+    },
+    watch: {
+    },
+    created: function () {
+      this.init()
+    },
+    mounted: function () {
+    },
+    beforeDestroy: function () {
+
+    },
+    methods: {
+      sendId (val) {
+        window.$BidrenewalDialog.id = val
+        const iframeElement = this.$refs.myIframe
+        // 检查 iframe 是否已加载完毕
+        if (iframeElement && iframeElement.contentWindow) {
+          // 调用 iframe 窗口上的方法
+          iframeElement.contentWindow.$BidrenewalDialog.iframSendid(val)
+        }
+      },
+      init () { 
+        const this_ = this;
+        window.$BidrenewalDialog = {};
+        window.$BidrenewalDialog.open = function () { // 打开弹窗
+          this_.showNewuserDialog = true
+          this_.afterOpen()
+          const iframeElement = this_.$refs.myIframe
+          // 检查 iframe 是否已加载完毕
+          if (iframeElement && iframeElement.contentWindow) {
+            // 调用 iframe 窗口上的方法
+            iframeElement.contentWindow.$BidrenewalDialog.openDialog()
+            iframeElement.contentWindow.$BidrenewalDialog.refreshData()
+          }
+        }
+        // 注册方法供子页面调用
+        window.$BidrenewalDialog.close = function () {
+          this_.beforeClose()
+          this_.showNewuserDialog = false
+        }
+        window.$BidrenewalDialog.$toast = function (val) {
+          toastFn(val)
+        }
+      },
+      afterOpen () {
+        this._scrollTop = document.scrollingElement.scrollTop
+        document.body.style.position = 'fixed'
+        document.body.style.width = '100%'
+        document.body.style.top = -this._scrollTop + 'px'
+      },
+      // popup 关闭时调用
+      beforeClose () {
+        document.body.style.position = ''
+        document.body.style.top = ''
+        // 使 scrollTop 恢复原状
+        document.scrollingElement.scrollTop = this._scrollTop
+      }
+    }
+  });
+</script>
+<style>
+  #BidrenewalDialog {
+    position: fixed;
+    left: 0;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 999;
+    background-color: transparent;
+  }
+
+  #BidrenewalDialog .iframe {
+    width: 100%;
+    height: 100%;
+    background-color: transparent;
+  }
+
+  #BidrenewalDialog .iframe body {
+    background-color: transparent !important;
+
+  }
+</style>

+ 413 - 0
src/web/templates/common/personDialog.html

@@ -0,0 +1,413 @@
+<link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/personDialog/personDialog.css?v={{Msg "seo" "version"}}'>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.7.14/vue.min.js></script>
+<script src="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.13-rc/lib/index.js"></script>
+<div id="personDialog">
+  <div class="ent_powerPerson">
+    <el-dialog
+        :title="titleMsg"
+        class="ent_powerPerson_dialog"
+        :show-close="false"
+        :lock-scroll="false"
+        :close-on-click-modal="false"
+        :visible.sync="centerDialogVisible"
+        width="890px"
+        center>
+        <div class="content" v-loading="loading">
+            <div class="content_left">
+                <h4>选择</h4>
+                <div class="search">
+                  <el-input prefix-icon="el-icon-search" v-model="searchVal" placeholder="搜索" >
+                  </el-input>
+                </div>
+                <div class="all" v-if="allQuan">
+                  <i class="seleced" :class="allChecked?'selectAll':'selectHalf'" @click="allToggle()" v-if="quan"></i>
+                  <i class="seleced" :class="allChecked?'selectAll':''" @click="allToggle()" v-else></i>
+                  <span class="noselect" @click="allToggle()">全选</span>
+                </div>
+                <div class="allList">
+                  <div v-for="val in deal_personList" :key="val.id" @click="chooseUser(val,'single')" :class="{active:val.toggle, 'selectDisabled':val.disabled}">
+                    <h5>
+                      <i class="seleced" :class="{'selectAll':val.checked&&!val.disabled }"></i>
+                      <span class="userName">@@ val.name @@</span>
+                    </h5>
+                    <span> @@ val.phone @@</span>
+                  </div>
+                </div>
+            </div>
+            <div class="content_right">
+                <h4>已选</h4>
+                <ul>
+                  <li v-for="(item,i) in selectedList" :key="item.id">
+                    <span class="userName">@@ item.name @@</span>
+                    <span>@@ item.phone @@</span>
+                    <i class="el-icon-error" @click="delChooseUser(i)"></i>
+                   
+                  </li>
+                </ul>
+            </div>
+        </div>
+        <p class="ent_person_tip" v-if="pagetype!==''">
+          <span>注:同一人员只能拥有1个超级订阅或大会员产品权限,如需添加请删除该人员原有的产品权限</span>
+        </p>
+        <span slot="footer" class="dialog-footer btns">
+            <button :disabled="showBtn" @click="saveDepart" class="save">保存</button>
+            <button  @click="centerCancel" class="cancle">取消</button>
+        </span>
+      </el-dialog>
+</div>
+</div>
+<script>
+  var person_Dialog = new Vue({
+    el: "#personDialog",
+    delimiters: ["@@", "@@"],
+    data: function () {
+    return {
+      pagetype:'',
+      selectData:{},
+      userPerson:[],
+      list:[],
+      vt:'',
+      centerDialogVisible: false,
+      searchVal: '',
+      personList: [],
+      personSpareList:[],
+      selectedList: [],
+      checked: false,
+      titleMsg: '',
+      currentIndex: '0',
+      maxLength: '',
+      loading: true,
+      allChecked: false,
+      toggles: true,
+      yer: 0,
+      quan: false,
+      flags: true,
+      allQuan: true,
+      lastTime: '',
+      showBtn: false,
+      empower_count: 0, // 购买人数
+      selectDataIds: [],
+      filterType: false,
+      _scrollTop:'',
+      selectAreas:[]
+    }
+  },
+  created: function  () {
+    this.$watch('searchVal', this.debounce((newValue, oldValue) => {
+      console.log(newValue, oldValue)
+      const searchList = []
+      if (this.personSpareList.length !== 0) {
+        this.personSpareList.forEach((v, i) => {
+          if (v.name.indexOf(newValue) !== -1 || v.phone.indexOf(newValue) !== -1) {
+            searchList.push(v)
+          }
+        })
+        this.personList = searchList
+      }
+      if (newValue === '') {
+        this.personList = this.personSpareList
+      }
+    }, 500))
+    this.$watch('centerDialogVisible', (newValue, oldValue) => {
+      if (newValue) {
+        this.afterOpen()
+      } else {
+        this.beforeClose()
+      }
+    })
+  },
+  watch: {
+    centerDialogVisible (newval) {
+      if (newval) {
+        this.searchVal = ''
+        if (!this.filterType) {
+          this.selectedList = []
+        } else {
+          this.selectedList = this.filterSelectList
+        }
+      }
+    }
+  },
+  computed: {
+    deal_personList: function () {
+      let arr = JSON.parse(JSON.stringify(this.personList))
+      if (arr && Object.keys(arr).length !== 0) {
+        let list = []
+        arr && arr.forEach((items, x) => {
+          this.selectedList.forEach((val, i) => {
+            if (items.checked) {
+              list.push(items.id)
+            } else {
+              if (items.id === val.id) {
+                items.checked = true
+                list.push(items.id)
+              } else {
+                items.checked = false
+              }
+            }
+          })
+          list = this.newArrFn(list)
+          if (list.length === arr.length) {
+            this.allChecked = true
+            this.maxLength = arr.length
+          } else {
+            if (list.length === 0) {
+              this.quan = false
+              this.allChecked = false
+              this.maxLength = 0
+            } else {
+              this.quan = true
+              this.allChecked = false
+              this.maxLength = list.length
+            }
+          }
+        })
+      } else {
+        arr = []
+      }
+      return arr
+    }
+  },
+  methods: {
+    debounce (fn, delay) {
+      let timer = null
+      return function () {
+        const arg = arguments
+        clearTimeout(timer)
+        timer = setTimeout(() => {
+          fn.apply(this, arg)
+        }, delay)
+      }
+    },
+    // 获取人员列表
+     getData (flag = 'no', num) {
+      this.filterType = !!num
+      this.loading = true
+      const selectAreas = this.selectAreas
+      // this.list.forEach((v, i) => {
+      //   this.selectDataIds.forEach((s, index) => {
+      //     if (v._id === s) {
+      //       if (v.area) {
+      //         selectAreas.push(v.area)
+      //       }
+      //     }
+      //   })
+      // })
+      const params = {
+        region: num ? '' : selectAreas.toString(),
+        queryType: num || ''
+      }
+      let this_ = this
+      // eType 企业
+      $.ajax({
+              type: 'post',
+              contentType: "application/json",
+              url: '/jyapi/jybx/subscribe/eType/distributor',
+              data: JSON.stringify(params),
+              dataType: 'json',
+              success: function (res) {
+                if (res.error_code == 0 && res.data) {
+                  // this.personList = data
+                  this_.personList = {}
+                  this_.loading = false
+                 res.data.forEach(v => {
+                   v.toggle = true
+                   v.status = false
+                 })
+                 this_.personList = res.data
+                 this_.personSpareList = res.data
+                 if (flag === 'yes') {
+                   if (this_.searchVal) {
+                    this_.allQuan = false
+                   }
+                   return
+                 }
+                 this_.maxLength = res.data.checked
+                 if (this_.pagetype !== 'manage') {
+                  this_.selectedList = res.data.checkedList
+                 }
+                 this_.allChecked = true
+                 if (res.data.checked === 0) {
+                  this_.quan = false
+                 }
+                } else {
+                  this_.personList = {}
+                  this_.loading = false
+                }
+
+                if (this_.searchVal === '') {
+                  this_.allQuan = true
+               }
+                
+              }
+            })  
+    },
+    // 数组去重
+    newArrFn (arr) {
+      if (!arr) return
+      return ([...new Set(arr)])
+    },
+    // 保存
+    saveDepart () {
+      // 设置定时器
+      let timer
+      // 设置现在的时间
+      const now = +new Date()
+      // 当现在的时间减去上次点击的时间小于3s时,给出提示,并结束执行函数
+      if (this.lastTime && now - this.lastTime < 3000) {
+        clearTimeout(timer)
+      } else {
+        // 若大于3s,则把现在的时间赋值个lastTime
+        this.lastTime = now
+        const delId = []
+        this.selectedList.forEach((v, i) => { // 选中人员ID
+          delId.push(v.id)
+        })
+        this.centerDialogVisible = false
+        if (delId.length !== 0) {
+          if (this.filterType) {
+            console.log('刷新?')
+          } else {
+            let this_ = this
+            let params_Data = {
+                infoids:this_.selectDataIds,
+                staffs:delId.toString()
+              }
+            $.ajax({
+              type: 'post',
+              contentType: "application/json",
+              url: '/jyapi/jybx/subscribe/bidDistributor',
+              data: JSON.stringify(params_Data),
+              dataType: 'json',
+              success: function (res) {
+                if (res.error_code === 0) {
+                  if (res.data === 1) {
+                    this_.$message({ message: '分发成功', type: 'success' })
+                  } else {
+                    this_.$message({ message: res.error_msg, type: 'warning' })
+                  }
+                } else {
+                  this_.$message({ message: res.error_msg, type: 'warning' })
+               }
+              }
+            }) 
+          }
+        } else {
+          if (this.filterType) {
+            this.$message({ message: '请选择人员', type: 'warning' }) 
+          } else {
+            this.$message({ message: '请选择分发人员', type: 'warning' })
+          }
+        }
+      }
+    },
+    // 取消
+    centerCancel () {
+      this.centerDialogVisible = false
+      this.yer = 0
+      if (this.pagetype === 'manage') {
+        this.selectedList = []
+      }
+    },
+    // 全选
+    allToggle () {
+      this.allChecked = !this.allChecked
+      this.quan = !this.allChecked
+      if (Object.keys(this.personList).length !== 0) {
+        const datas = JSON.parse(JSON.stringify(this.personList))
+        this.selectedList = []
+        datas && datas.forEach((items, x) => {
+          if (this.allChecked) {
+            this.selectedList.push(items)
+          } else {
+            this.selectedList = []
+          }
+        })
+      } else {
+        this.selectedList = []
+      }
+    },
+    // 删除人员
+    delChooseUser (i) {
+      this.selectedList.splice(i, 1)
+      this.allChecked = false
+      console.log(this.selectedList.length)
+      if (this.selectedList.length === 0) {
+        this.quan = false
+      }
+    },
+    // 选择人员
+    chooseUser (val, status) {
+      if (status === 'single') {
+        const newArr = this.selectedList.filter(x => {
+          return val.id === x.id
+        })
+        let lengthId = 0
+        lengthId = this.deal_personList.length
+        if (newArr.length > 0) {
+          this.selectedList.forEach((v, i) => {
+            if (val.id === v.id) {
+              this.selectedList.splice(i, 1)
+            }
+          })
+          if (lengthId === this.selectedList.length) {
+            this.allChecked = true
+          } else {
+            this.allChecked = false
+          }
+          if (this.selectedList.length === 0) {
+            this.quan = false
+          }
+        } else {
+          if (lengthId === this.selectedList.length) {
+            this.allChecked = true
+          } else {
+            this.allChecked = false
+          }
+          this.selectedList.push(val)
+          const yer = []
+          this.deal_personList.forEach(v => {
+            if (v.status === 'selectAll') {
+              yer.push(v.status)
+            }
+          })
+          if (yer.length === this.deal_personList.length) {
+            this.allChecked = true
+          }
+          this.quan = true
+        }
+      } else {
+        this.selectedList = this.selectedList.concat(val)
+        if (this.pagetype === 'manage') {
+          this.selectedList.forEach((sum, k) => {
+            if (this.userPerson && this.userPerson.length !== 0) {
+              this.userPerson.forEach((s) => {
+                if (sum.phone === s.phone) {
+                  this.selectedList.splice(k, 1)
+                }
+              })
+            }
+          })
+        } else {
+          this.selectedList = this.selectedList.concat(val)
+        }
+      }
+    },
+      // popup 显示时调用
+   afterOpen () {
+    this._scrollTop = document.scrollingElement.scrollTop
+    document.body.style.position = 'fixed'
+    document.body.style.width = '100%'
+    document.body.style.top = -this._scrollTop + 'px'
+  },
+
+  // popup 关闭时调用
+   beforeClose () {
+    document.body.style.position = ''
+    document.body.style.top = ''
+    // 使 scrollTop 恢复原状
+    document.scrollingElement.scrollTop = this._scrollTop
+  }
+  }
+  })
+</script>

+ 2 - 1
src/web/templates/frontRouter/pc/collection/sess/index.html

@@ -307,7 +307,8 @@
         </div>
         <div class="search-footer w"></div>
     </section>
-
+    <!-- 参标更新状态组件 -->
+    {{include "/common/BidrenewalDialog.html"}}
     {{include "/common/pcbottom.html"}}
     {{include "/common/baiducc.html"}}
 

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

@@ -43,12 +43,18 @@
         line-height: 0.4rem;
     }
     .vip_openDialog{
+        position: relative;
         padding: 0 0 0.64rem;
         width: 6.06rem;
         background: url('{{Msg "seo" "cdn"}}/big-member/image/openVip.png?v={{Msg "seo" "version"}}') no-repeat;
         background-size: 100% 100%;
         box-sizing: border-box;
     }
+    .no-login-tip{
+        position:absolute;
+        width:100%;
+        text-align: center;
+    }
     .bid_surplus{
         height: .04rem;
         opacity: 1;

+ 5 - 0
src/web/templates/frontRouter/wx/collection/sess/index.html

@@ -20,6 +20,7 @@
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/public.css?v={{Msg "seo" "version"}}'>
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
     <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/bidstatus-update/css/bid-status-update.css?v={{Msg "seo" "version"}}'></link>
 </head>
 <style>
   .list-mian{
@@ -172,6 +173,9 @@
           </div>
         </div>
       </div>
+      <van-popup class="j-container" :style="popupHeight" v-model="showBidStatus" round position="bottom">
+        <bid-status-node @cancel-update="cancelUpdate" @save-success="saveSuccess" :project-cell-info="projectCellInfo" @set-height="setHeight"></bid-status-node>
+      </van-popup>
     </div>
   </div>
   <!--S-当前页面的资源-->
@@ -186,6 +190,7 @@
   <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/phone-mobile.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/root-mobile.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/bidstatus-update/js/bid-status-update.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/index-wx.js?v={{Msg "seo" "version"}}'></script>
   <script>
     // 数据包默认选中企业需请求默认企业接口

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