Explorar o código

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

TANGSHIZHE %!s(int64=4) %!d(string=hai) anos
pai
achega
396e7d8574

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

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

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

@@ -113,7 +113,7 @@ func (p *Pcsearch) ProposedProject() error {
 	if len(s_word) > 0 {
 	if len(s_word) > 0 {
 		status = 2
 		status = 2
 		var count int64
 		var count int64
-		count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, "", "", "", "", "", "", "", 0, bidsearch.SearchPageSize_PC, true, "", bidSearch_field_1)
+		count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, "", "", "", "", "", "", "", 0, bidsearch.SearchPageSize_PC, true, nil, bidSearch_field_1)
 		listSize := 0
 		listSize := 0
 		if list != nil {
 		if list != nil {
 			listSize = len(*list)
 			listSize = len(*list)
@@ -248,12 +248,59 @@ func (p *Pcsearch) PcSearchIndex() error {
 	//高级筛选 仅vip用户可查询
 	//高级筛选 仅vip用户可查询
 	var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 	var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 	var buyerclass string = ""                    //采购单位类别
 	var buyerclass string = ""                    //采购单位类别
+	var selectTypeArr []string                    //筛选查询内容
+	selectType := p.GetString("selectType")
 	isPayedUser := jy.GetVipState(public.Mysql, public.MQFW, userId).IsPayedUser()
 	isPayedUser := jy.GetVipState(public.Mysql, public.MQFW, userId).IsPayedUser()
 	if isPayedUser {
 	if isPayedUser {
 		buyerclass = p.GetString("buyerclass")
 		buyerclass = p.GetString("buyerclass")
 		hasBuyerTel, hasWinnerTel = p.GetString("buyertel"), p.GetString("winnertel")
 		hasBuyerTel, hasWinnerTel = p.GetString("buyertel"), p.GetString("winnertel")
+
+		switch selectType {
+		case "content":
+			selectTypeArr = append(selectTypeArr, "detail")
+			break
+		case "buyer":
+			selectTypeArr = append(selectTypeArr, "mbuyer")
+			break
+		case "winner":
+			selectTypeArr = append(selectTypeArr, "mwinner")
+			break
+		case "agency":
+			selectTypeArr = append(selectTypeArr, "magency")
+			break
+		case "file":
+			selectTypeArr = append(selectTypeArr, "filetext")
+			break
+		case "all":
+			selectTypeArr = append(selectTypeArr, "title", "detail", "mbuyer", "mwinner", "magency", "filetext")
+			break
+		}
+	} else {
+		if selectType == "winner" || selectType == "all" {
+			isOldUser := func() bool { //查询是否是老用户
+				user, _ := public.MQFW.FindById("user", userId, `{"l_registedate":1}`)
+				if user == nil || len(*user) == 0 {
+					return false
+				}
+				registerData, ok := (*user)["l_registedate"].(int64)
+				if ok && registerData < 9999 {
+					return true
+				}
+				return false
+			}()
+			if selectType == "all" {
+				if isOldUser {
+					selectTypeArr = append(selectTypeArr, "title", "detail", "mwinner")
+				}
+			} else if isOldUser { //查询中标企业且是老用户
+				selectTypeArr = append(selectTypeArr, "mwinner")
+			}
+		} else if selectType == "content" {
+			selectTypeArr = append(selectTypeArr, "detail")
+		}
 	}
 	}
-	selectType := "title"
+	//selectType := "title"
+	//全部(all)、标题(title)  正文(content)  会员: 采购单位(buyer) 中标企业(winner) 招标代理机构(agency) 附件(file)
 
 
 	//历史导出数据回显
 	//历史导出数据回显
 	if strings.Contains(p.Url(), "?goback") {
 	if strings.Contains(p.Url(), "?goback") {
@@ -281,7 +328,7 @@ func (p *Pcsearch) PcSearchIndex() error {
 	secondKWS := ""
 	secondKWS := ""
 	if len(s_word) > 0 || len(industry) > 0 {
 	if len(s_word) > 0 || len(industry) > 0 {
 		status = 2
 		status = 2
-		count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, selectType, bidSearch_field_1)
+		count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, selectTypeArr, bidSearch_field_1)
 		listSize := 0
 		listSize := 0
 		if list != nil {
 		if list != nil {
 			listSize = len(*list)
 			listSize = len(*list)

+ 95 - 7
src/jfw/front/swordfish.go

@@ -119,11 +119,56 @@ func (m *Front) PcAjaxReq() {
 	//高级筛选 仅vip用户可查询
 	//高级筛选 仅vip用户可查询
 	var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 	var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 	var buyerclass string = ""                    //采购单位类别
 	var buyerclass string = ""                    //采购单位类别
-
+	var selectTypeArr []string                    //筛选查询内容
 	if jy.GetVipState(public.Mysql, public.MQFW, userId).IsPayedUser() {
 	if jy.GetVipState(public.Mysql, public.MQFW, userId).IsPayedUser() {
 		buyerclass = m.GetString("buyerclass")
 		buyerclass = m.GetString("buyerclass")
 		hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
 		hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
+
+		switch selectType {
+		case "content":
+			selectTypeArr = append(selectTypeArr, "detail")
+			break
+		case "buyer":
+			selectTypeArr = append(selectTypeArr, "mbuyer")
+			break
+		case "winner":
+			selectTypeArr = append(selectTypeArr, "mwinner")
+			break
+		case "agency":
+			selectTypeArr = append(selectTypeArr, "magency")
+			break
+		case "file":
+			selectTypeArr = append(selectTypeArr, "filetext")
+			break
+		case "all":
+			selectTypeArr = append(selectTypeArr, "title", "detail", "mbuyer", "mwinner", "magency", "filetext")
+			break
+		}
+	} else {
+		if selectType == "winner" || selectType == "all" {
+			isOldUser := func() bool { //查询是否是老用户
+				user, _ := public.MQFW.FindById("user", userId, `{"l_registedate":1}`)
+				if user == nil || len(*user) == 0 {
+					return false
+				}
+				registerData, ok := (*user)["l_registedate"].(int64)
+				if ok && registerData < 9999 {
+					return true
+				}
+				return false
+			}()
+			if selectType == "all" {
+				if isOldUser {
+					selectTypeArr = append(selectTypeArr, "title", "detail", "mwinner")
+				}
+			} else if isOldUser { //查询中标企业且是老用户
+				selectTypeArr = append(selectTypeArr, "mwinner")
+			}
+		} else if selectType == "content" {
+			selectTypeArr = append(selectTypeArr, "detail")
+		}
 	}
 	}
+
 	m.SetSession("selectType", selectType)
 	m.SetSession("selectType", selectType)
 	//只有前20条 有全字段,
 	//只有前20条 有全字段,
 	if subtype != "拟建" && currentPage != 1 {
 	if subtype != "拟建" && currentPage != 1 {
@@ -150,7 +195,7 @@ func (m *Front) PcAjaxReq() {
 	if len(s_word) > 0 || len(industry) > 0 {
 	if len(s_word) > 0 || len(industry) > 0 {
 		if reqType == "filter" {
 		if reqType == "filter" {
 			if status == 1 {
 			if status == 1 {
-				count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, selectType, field)
+				count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, selectTypeArr, field)
 			}
 			}
 		} else if reqType == "bidSearch" {
 		} else if reqType == "bidSearch" {
 			//全文检索限制
 			//全文检索限制
@@ -165,7 +210,7 @@ func (m *Front) PcAjaxReq() {
 				if limitFlag {
 				if limitFlag {
 					if start == 0 {
 					if start == 0 {
 						limit_count := public.Lst.TotalPage * bidsearch.SearchPageSize_PC
 						limit_count := public.Lst.TotalPage * bidsearch.SearchPageSize_PC
-						count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, limit_count, true, selectType, field)
+						count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, limit_count, true, selectTypeArr, field)
 						if totalPage > int64(public.Lst.TotalPage) {
 						if totalPage > int64(public.Lst.TotalPage) {
 							totalPage = int64(public.Lst.TotalPage)
 							totalPage = int64(public.Lst.TotalPage)
 						}
 						}
@@ -174,7 +219,7 @@ func (m *Front) PcAjaxReq() {
 						}
 						}
 					}
 					}
 				} else {
 				} else {
-					count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, start, bidsearch.SearchPageSize_PC, true, selectType, field)
+					count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, start, bidsearch.SearchPageSize_PC, true, selectTypeArr, field)
 				}
 				}
 				listSize := 0
 				listSize := 0
 				if list != nil {
 				if list != nil {
@@ -437,10 +482,53 @@ func (m *Front) WxsearchlistPaging() {
 			//高级筛选 仅vip用户可查询
 			//高级筛选 仅vip用户可查询
 			var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 			var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 			var buyerclass string = ""                    //采购单位类别
 			var buyerclass string = ""                    //采购单位类别
-
+			var selectTypeArr []string
 			if jy.GetVipState(public.Mysql, public.MQFW, userId).IsPayedUser() { //超级订阅、大会员、商机管理
 			if jy.GetVipState(public.Mysql, public.MQFW, userId).IsPayedUser() { //超级订阅、大会员、商机管理
 				buyerclass = m.GetString("buyerclass")
 				buyerclass = m.GetString("buyerclass")
 				hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
 				hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
+				switch selectType {
+				case "content":
+					selectTypeArr = append(selectTypeArr, "detail")
+					break
+				case "buyer":
+					selectTypeArr = append(selectTypeArr, "mbuyer")
+					break
+				case "winner":
+					selectTypeArr = append(selectTypeArr, "mwinner")
+					break
+				case "agency":
+					selectTypeArr = append(selectTypeArr, "magency")
+					break
+				case "file":
+					selectTypeArr = append(selectTypeArr, "filetext")
+					break
+				case "all":
+					selectTypeArr = append(selectTypeArr, "title", "detail", "mbuyer", "mwinner", "magency", "filetext")
+					break
+				}
+			} else {
+				if selectType == "winner" || selectType == "all" {
+					isOldUser := func() bool { //查询是否是老用户
+						user, _ := public.MQFW.FindById("user", userId, `{"l_registedate":1}`)
+						if user == nil || len(*user) == 0 {
+							return false
+						}
+						registerData, ok := (*user)["l_registedate"].(int64)
+						if ok && registerData < 9999 {
+							return true
+						}
+						return false
+					}()
+					if selectType == "all" {
+						if isOldUser {
+							selectTypeArr = append(selectTypeArr, "title", "detail", "mwinner")
+						}
+					} else if isOldUser { //查询中标企业且是老用户
+						selectTypeArr = append(selectTypeArr, "mwinner")
+					}
+				} else if selectType == "content" {
+					selectTypeArr = append(selectTypeArr, "detail")
+				}
 			}
 			}
 
 
 			//全文检索限制
 			//全文检索限制
@@ -455,10 +543,10 @@ func (m *Front) WxsearchlistPaging() {
 				s_word := ""
 				s_word := ""
 				if limitFlag {
 				if limitFlag {
 					if pageNum == 1 {
 					if pageNum == 1 {
-						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_WX, selectType, filed)
+						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_WX, selectTypeArr, filed)
 					}
 					}
 				} else {
 				} else {
-					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_WX, selectType, filed)
+					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_WX, selectTypeArr, filed)
 				}
 				}
 				listSize := 0
 				listSize := 0
 				if list != nil {
 				if list != nil {

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

@@ -273,10 +273,53 @@ func (m *Front) WxsearchlistPaging() {
 			//高级筛选 仅vip用户可查询
 			//高级筛选 仅vip用户可查询
 			var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 			var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 			buyerclass := ""                              //采购单位类别
 			buyerclass := ""                              //采购单位类别
-
+			var selectTypeArr []string
 			if jy.GetVipState(public.Mysql, public.MQFW, userid).IsPayedUser() {
 			if jy.GetVipState(public.Mysql, public.MQFW, userid).IsPayedUser() {
 				buyerclass = m.GetString("buyerclass")
 				buyerclass = m.GetString("buyerclass")
 				hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
 				hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
+				switch selectType {
+				case "content":
+					selectTypeArr = append(selectTypeArr, "detail")
+					break
+				case "buyer":
+					selectTypeArr = append(selectTypeArr, "mbuyer")
+					break
+				case "winner":
+					selectTypeArr = append(selectTypeArr, "mwinner")
+					break
+				case "agency":
+					selectTypeArr = append(selectTypeArr, "magency")
+					break
+				case "file":
+					selectTypeArr = append(selectTypeArr, "filetext")
+					break
+				case "all":
+					selectTypeArr = append(selectTypeArr, "title", "detail", "mbuyer", "mwinner", "magency", "filetext")
+					break
+				}
+			} else {
+				if selectType == "winner" || selectType == "all" {
+					isOldUser := func() bool { //查询是否是老用户
+						user, _ := public.MQFW.FindById("user", userid, `{"l_registedate":1}`)
+						if user == nil || len(*user) == 0 {
+							return false
+						}
+						registerData, ok := (*user)["l_registedate"].(int64)
+						if ok && registerData < 9999 {
+							return true
+						}
+						return false
+					}()
+					if selectType == "all" {
+						if isOldUser {
+							selectTypeArr = append(selectTypeArr, "title", "detail", "mwinner")
+						}
+					} else if isOldUser { //查询中标企业且是老用户
+						selectTypeArr = append(selectTypeArr, "mwinner")
+					}
+				} else if selectType == "content" {
+					selectTypeArr = append(selectTypeArr, "detail")
+				}
 			}
 			}
 			if jy.GetBigVipUserBaseMsg(userid, public.Mysql, public.MQFW).CheckBigVipBackPower("search") {
 			if jy.GetBigVipUserBaseMsg(userid, public.Mysql, public.MQFW).CheckBigVipBackPower("search") {
 				winner = m.GetString("winner")
 				winner = m.GetString("winner")
@@ -298,10 +341,10 @@ func (m *Front) WxsearchlistPaging() {
 				s_word := ""
 				s_word := ""
 				if limitFlag {
 				if limitFlag {
 					if pageNum == 1 {
 					if pageNum == 1 {
-						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_APP, selectType, feld)
+						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_APP, selectTypeArr, feld)
 					}
 					}
 				} else {
 				} else {
-					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_APP, selectType, feld)
+					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_APP, selectTypeArr, feld)
 				}
 				}
 				listSize := 0
 				listSize := 0
 				if list != nil {
 				if list != nil {

+ 2 - 1
src/jfw/modules/app/src/seo.json

@@ -98,5 +98,6 @@
 		}
 		}
 	},
 	},
 	"structedUploadA":"/structuredata/file/【剑鱼标讯】结构化招标数据.xlsx",
 	"structedUploadA":"/structuredata/file/【剑鱼标讯】结构化招标数据.xlsx",
-	"buryingPointUrl":"https://md.jianyu360.com"
+	"buryingPointUrl":"https://md.jianyu360.com",
+	"distance":"0"
 }
 }

+ 88 - 0
src/jfw/modules/app/src/web/staticres/jyapp/js/common.js

@@ -316,6 +316,10 @@ var JyObjMessage = new Object();
 $(function () {
 $(function () {
   if (mySysIsIos()) {
   if (mySysIsIos()) {
     window.JyObj = {
     window.JyObj = {
+      //获取经纬度
+      getLLitude: function () {
+        return JyObj.IosCall("getLLitude")
+      },
       //调转到指定的webview
       //调转到指定的webview
       //name 对应的值:search 搜索 subscribe 订阅 box 百宝箱 me 我的
       //name 对应的值:search 搜索 subscribe 订阅 box 百宝箱 me 我的
       skipAppointTab: function (name) {
       skipAppointTab: function (name) {
@@ -995,6 +999,7 @@ function afterPageInit () {
   }, 600000);
   }, 600000);
   try {
   try {
     afterJyObjInit();
     afterJyObjInit();
+    latlongitude();//记录用户经纬度
   } catch (e) {
   } catch (e) {
   }
   }
   var sign = JyObj.getUserToken();
   var sign = JyObj.getUserToken();
@@ -1418,3 +1423,86 @@ function afterReceivePushMessage (type, url) {
     receivePushMessageHandle(type, url);
     receivePushMessageHandle(type, url);
   } catch (e) { }
   } catch (e) { }
 }
 }
+
+//获取用户经纬度 每天记录一次
+function latlongitude(){
+	//首页
+	if(window.location.href.indexOf("jylab/mainSearch")==-1){
+		return false;
+	}
+	var llitude = "";
+	var lsllitude = localStorage.LLitude;
+	var nowDate = new Date().getDate();
+	var oldDate = new Date().getDate()-1;
+	if (lsllitude!=null&&lsllitude.split("_").length>2){
+		oldDate =  Number(lsllitude.split("_")[2]);
+	}
+	//每天记录一次
+	//alert(nowDate+"--"+oldDate+"--"+parseInt(distance))
+	if (nowDate==oldDate){
+		return false;
+	}
+	try{
+		llitude = JyObj.getLLitude();
+	}catch(e){}
+    if(llitude==""){
+      var ai = 0;
+      var llInterval = setInterval(function(){
+        ai=ai+1;
+        try{
+          llitude = JyObj.getLLitude();
+        }catch(e){}
+        //五次获取不到客户端经纬度 就不再获取,获取位置存localStorage 一天
+        //alert(llitude+"---:"+ai)
+        if((llitude!=""&&llitude!=undefined&&llitude.indexOf("null")<0)||ai>4){
+          clearInterval(llInterval);
+          llrequest(llitude)
+        }
+      },500)
+    }else{
+    	//alert("经纬度:"+llitude)
+    	llrequest(llitude)
+    }
+}
+//判断经纬度是否够收录条件
+function llrequest(ll){
+	//获取不到定位信息
+	if(ll==null||ll.indexOf("_")==-1){
+		return false
+	}
+	//localStorage.removeItem("LLitude");
+	var latitude = parseFloat(ll.split("_")[1]);//纬度
+	var longitude =  parseFloat(ll.split("_")[0]);//经度
+	var _lat = 0.0;
+	var _long = 0.0;
+	var llitude = localStorage.LLitude;
+	if (llitude!=null&&llitude.split("_").length>2){
+		_long =  parseFloat(llitude.split("_")[0]);//经度
+		_lat =  parseFloat(llitude.split("_")[1]);//纬度
+	}
+	//alert(latitude+":::"+longitude+"----"+_lat+":::"+_long)
+	var calculate = calculateLL(latitude,longitude,_lat,_long);
+	if (calculate>parseInt(distance)){
+    	$.post("/publicapply/appLoc/action", {
+	        "longitude": longitude,
+	        "latitude": latitude,
+	        "calculate": calculate
+	    }, function (r) {
+	        if (r.data) {
+				localStorage.LLitude = ll+"_"+new Date().getDate();
+	        }
+      	})
+    }
+}
+/*计算两经纬度点之间的距离(单位:米)*/
+function calculateLL(lat1, lng1, lat2, lng2) {
+	var radLat1 = lat1 * Math.PI / 180.0;
+	var radLat2 = lat2 * Math.PI / 180.0;
+	var a = radLat1 - radLat2;
+	var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
+	var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
+	s = s * 6378.137;
+	s = Math.round(s * 10000) / 10;
+	//alert("距离上个位置:"+s+" 米")
+	return s
+}

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

@@ -578,6 +578,8 @@
     });
     });
 </script>
 </script>
 <script type="text/javascript">
 <script type="text/javascript">
+    //获取定位距离差
+    var distance = {{Msg "seo" "distance"}};
     var member_status;
     var member_status;
     var isMember = false;
     var isMember = false;
     // 子账户判断
     // 子账户判断

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

@@ -137,8 +137,9 @@ func (this *SubVipPortrait) PortraitUsage() {
 		}
 		}
 		total, usage := bigMsg.SubVipPortraitUsage()
 		total, usage := bigMsg.SubVipPortraitUsage()
 		return map[string]interface{}{
 		return map[string]interface{}{
-			"total": total,
-			"usage": usage,
+			"total":  total,
+			"usage":  usage,
+			"provin": bigMsg.Vip_BuySet.AreaCount,
 		}, nil
 		}, nil
 	}()
 	}()
 	if errMsg != nil {
 	if errMsg != nil {

+ 39 - 24
src/jfw/modules/common/src/qfw/util/bidsearch/search.go

@@ -30,22 +30,20 @@ const (
 )
 )
 
 
 //GetWxsearchlistData 移动端招标信息搜索
 //GetWxsearchlistData 移动端招标信息搜索
-func GetWxsearchlistData(keywords, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel string, pageNum, pageSize int, selectType, field string) (list *[]map[string]interface{}, b_word, a_word, s_word string) {
-	b_word, a_word, s_word = jy.InterceptSearchKW(keywords, selectType == "all", len(industry) == 0)
+func GetWxsearchlistData(keywords, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel string, pageNum, pageSize int, selectTypeArr []string, field string) (list *[]map[string]interface{}, b_word, a_word, s_word string) {
+	b_word, a_word, s_word = jy.InterceptSearchKW(keywords, selectTypeArr != nil && len(selectTypeArr) > 1, len(industry) == 0)
 	if len(b_word) == 0 {
 	if len(b_word) == 0 {
 		return list, b_word, a_word, s_word
 		return list, b_word, a_word, s_word
 	}
 	}
-	findfields := `"title"`
-	if selectType == "all" {
-		findfields = `"title","detail"`
-	}
-	qstr := GetSearchQuery(s_word, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, GetBidSearchQuery(scope, publishtime, subtype, winner, buyerclass))
-	if selectType == "all" { //全文搜索
-		list = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, field, (pageNum-1)*pageSize, pageSize, 100, true)
-	} else { //标题搜索
-		list = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, field, (pageNum-1)*pageSize, pageSize, 100, false)
+	var findfields string
+	if selectTypeArr == nil || len(selectTypeArr) == 0 {
+		findfields = `"title"`
+	} else {
+		findfields = fmt.Sprintf(`"%s"`, strings.Join(selectTypeArr, "\",\""))
 	}
 	}
 
 
+	qstr := GetSearchQuery(s_word, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, GetBidSearchQuery(scope, publishtime, subtype, winner, buyerclass))
+	list = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, field, (pageNum-1)*pageSize, pageSize, 100, false)
 	if list != nil {
 	if list != nil {
 		public.BidListConvert(industry, list)
 		public.BidListConvert(industry, list)
 		for _, v := range *list {
 		for _, v := range *list {
@@ -56,26 +54,43 @@ func GetWxsearchlistData(keywords, scope, publishtime, subtype, industry, minpri
 }
 }
 
 
 //GetPcBidSearchData pc端招标信息搜索
 //GetPcBidSearchData pc端招标信息搜索
-func GetPcBidSearchData(searchvalue, area, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel string, start, pageSize int, isGetCount bool, selectType, field string) (count, totalPage int64, list *[]map[string]interface{}) {
+func GetPcBidSearchData(searchvalue, area, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel string, start, pageSize int, isGetCount bool, selectTypeArr []string, field string) (count, totalPage int64, list *[]map[string]interface{}) {
 	//selectType:全文搜索(all)、标题搜索(title)
 	//selectType:全文搜索(all)、标题搜索(title)
-	findfields := `"title"`
-	if selectType == "all" {
-		findfields = `"title","detail"`
+	//全部(all)、标题(title)  正文(content)  会员: 采购单位(buyer) 中标企业(winner) 招标代理机构(agency) 附件(file)
+	var findfields string
+	if selectTypeArr == nil || len(selectTypeArr) == 0 {
+		findfields = `"title"`
+	} else {
+		findfields = fmt.Sprintf(`"%s"`, strings.Join(selectTypeArr, "\",\""))
 	}
 	}
+	//switch selectType {
+	//case "content":
+	//	findfields = `"detail"`
+	//	break
+	//case "buyer":
+	//	findfields = `"mbuyer"`
+	//	break
+	//case "winner":
+	//	findfields = `"mwinner"`
+	//	break
+	//case "agency":
+	//	findfields = `"magency"`
+	//	break
+	//case "file":
+	//	findfields = `"filetext"`
+	//	break
+	//case "all":
+	//	findfields = `"title","detail","mbuyer","mwinner","magency","filetext"`
+	//	break
+	//default:
+	//	findfields = `"title"`
+	//}
 	qstr := GetSearchQuery(searchvalue, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, GetBidSearchQuery(area, publishtime, subtype, winner, buyerclass))
 	qstr := GetSearchQuery(searchvalue, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, GetBidSearchQuery(area, publishtime, subtype, winner, buyerclass))
 	if isGetCount && qstr != "" && start == 0 {
 	if isGetCount && qstr != "" && start == 0 {
 		count = elastic.Count(INDEX, TYPE, qstr)
 		count = elastic.Count(INDEX, TYPE, qstr)
 	}
 	}
 	if !isGetCount || count > 0 || start > 0 {
 	if !isGetCount || count > 0 || start > 0 {
-		var repl *[]map[string]interface{}
-		if selectType == "all" {
-			//全文搜索
-			repl = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, field, start, pageSize, 115, true)
-		} else {
-			//标题搜索
-			repl = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, field, start, pageSize, 0, false)
-
-		}
+		repl := elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, field, start, pageSize, 0, false)
 		if repl != nil && *repl != nil && len(*repl) > 0 {
 		if repl != nil && *repl != nil && len(*repl) > 0 {
 			public.BidListConvert(industry, repl)
 			public.BidListConvert(industry, repl)
 			list = repl
 			list = repl

+ 6 - 5
src/jfw/modules/publicapply/src/applocation/entity/entity.go

@@ -6,7 +6,6 @@ import (
 	"fmt"
 	"fmt"
 	"log"
 	"log"
 	"net/http"
 	"net/http"
-	"qfw/util"
 	"qfw/util/redis"
 	"qfw/util/redis"
 	"time"
 	"time"
 )
 )
@@ -15,11 +14,12 @@ type AppLocStruct struct {
 	UserId    string //用户id
 	UserId    string //用户id
 	Longitude string // 经度
 	Longitude string // 经度
 	Latitude  string //纬度
 	Latitude  string //纬度
+	Calculate string //距离上次定位的距离(米)
 	R         *http.Request
 	R         *http.Request
 }
 }
 
 
-func NewAppLoc(userId, longitude, latitude string, r http.Request) *AppLocStruct {
-	return &AppLocStruct{userId, longitude, latitude, &r}
+func NewAppLoc(userId, longitude, latitude, calculate string, r http.Request) *AppLocStruct {
+	return &AppLocStruct{userId, longitude, latitude, calculate, &r}
 }
 }
 
 
 var AppLocLog = "apploc_log"
 var AppLocLog = "apploc_log"
@@ -27,7 +27,7 @@ var RedisUserKey = "apploc_%s"
 
 
 //保存定位信息
 //保存定位信息
 func (this *AppLocStruct) SaveAppLocInfo() bool {
 func (this *AppLocStruct) SaveAppLocInfo() bool {
-	log.Println(this.Longitude, "---", this.Latitude)
+	log.Println(this.UserId, ":", this.Longitude, "-", this.Latitude)
 	timeNow := time.Now()
 	timeNow := time.Now()
 	ref := this.R.Referer()
 	ref := this.R.Referer()
 	appLocInfo := map[string]interface{}{
 	appLocInfo := map[string]interface{}{
@@ -35,7 +35,8 @@ func (this *AppLocStruct) SaveAppLocInfo() bool {
 		"userId":    this.UserId,
 		"userId":    this.UserId,
 		"longitude": this.Longitude,
 		"longitude": this.Longitude,
 		"latitude":  this.Latitude,
 		"latitude":  this.Latitude,
-		"ip":        util.GetIp(this.R),
+		"calculate": this.Calculate,
+		"ip":        this.R.Proto,
 		"refer":     ref,
 		"refer":     ref,
 		"year":      timeNow.Year(),
 		"year":      timeNow.Year(),
 		"month":     timeNow.Month(),
 		"month":     timeNow.Month(),

+ 2 - 3
src/jfw/modules/publicapply/src/applocation/service/service.go

@@ -3,7 +3,6 @@ package service
 import (
 import (
 	. "api"
 	. "api"
 	"applocation/entity"
 	"applocation/entity"
-	"log"
 	"net/http"
 	"net/http"
 	qu "qfw/util"
 	qu "qfw/util"
 
 
@@ -28,12 +27,12 @@ func (this *ServiceStruct) AppLocAction() {
 		}
 		}
 		longitude := this.GetString("longitude") //经度
 		longitude := this.GetString("longitude") //经度
 		latitude := this.GetString("latitude")   //纬度
 		latitude := this.GetString("latitude")   //纬度
+		calculate := this.GetString("calculate") //距离上次定位的距离
 		var r http.Request
 		var r http.Request
-		newAppLoc := entity.NewAppLoc(userId, longitude, latitude, r)
+		newAppLoc := entity.NewAppLoc(userId, longitude, latitude, calculate, r)
 		if newAppLoc.IsSaveBool() {
 		if newAppLoc.IsSaveBool() {
 			retBool = newAppLoc.SaveAppLocInfo()
 			retBool = newAppLoc.SaveAppLocInfo()
 		}
 		}
-		log.Println("retBool:", retBool)
 		return Result{Data: retBool}
 		return Result{Data: retBool}
 	}()
 	}()
 	this.ServeJson(r)
 	this.ServeJson(r)

+ 16 - 3
src/jfw/modules/publicapply/src/bidcollection/entity/entity.go

@@ -40,12 +40,25 @@ func IsCollByBidsBackInfo(bids, userid string) map[string]interface{} {
 	if bdinfos := *db.Mysql.SelectBySql(fmt.Sprintf("SELECT labelid FROM %s WHERE userid = ? AND bid = ?", db.DbConf.Bdcollection), userid, bid); len(bdinfos) > 0 {
 	if bdinfos := *db.Mysql.SelectBySql(fmt.Sprintf("SELECT labelid FROM %s WHERE userid = ? AND bid = ?", db.DbConf.Bdcollection), userid, bid); len(bdinfos) > 0 {
 		bdinfo := bdinfos[0]
 		bdinfo := bdinfos[0]
 		label_ids := qu.ObjToString(bdinfo["labelid"])
 		label_ids := qu.ObjToString(bdinfo["labelid"])
-		var labArr = []string{}
+		var labArr = []map[string]interface{}{}
 		res["iscoll"] = true
 		res["iscoll"] = true
 		if label_ids != "" {
 		if label_ids != "" {
-			if labinfos := *db.Mysql.SelectBySql(fmt.Sprintf("SELECT * FROM %s WHERE id IN (?)", db.DbConf.Bdlabel), strings.Split(label_ids, ",")[0]); len(labinfos) > 0 {
+			label_ids_inter := []interface{}{}
+			var instatus = "?"
+			for k, id := range strings.Split(label_ids, ",") {
+				if k > 0 {
+					instatus += ",?"
+				}
+				label_ids_inter = append(label_ids_inter, id)
+			}
+			if labinfos := *db.Mysql.SelectBySql(fmt.Sprintf("SELECT * FROM %s WHERE id IN (%s)", db.DbConf.Bdlabel, instatus), label_ids_inter...); len(labinfos) > 0 {
 				for _, v := range labinfos {
 				for _, v := range labinfos {
-					labArr = append(labArr, qu.ObjToString(v["labelname"]))
+					lid := strconv.FormatInt(v["id"].(int64), 10)
+					lid_str := qu.SE.EncodeString(lid)
+					labArr = append(labArr, map[string]interface{}{
+						"labelname": qu.ObjToString(v["labelname"]),
+						"id":        lid_str,
+					})
 				}
 				}
 			}
 			}
 		}
 		}

+ 1 - 0
src/web/staticres/css/selector/selector.css

@@ -49,6 +49,7 @@
 }
 }
 
 
 .selector-card-header {
 .selector-card-header {
+    position: relative;
     margin-right: 10px;
     margin-right: 10px;
     min-width: 100px;
     min-width: 100px;
     line-height: 36px;
     line-height: 36px;

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 4 - 0
src/web/staticres/frontRouter/pc/collection/css/index-pc.css


+ 74 - 18
src/web/staticres/frontRouter/pc/collection/js/index-pc.js

@@ -12,7 +12,6 @@ var vm = new Vue({
         return {
         return {
             sessKey: '$data-collection-index',
             sessKey: '$data-collection-index',
             powerInfo: {},
             powerInfo: {},
-            power: false,
             powerLoaded: false,
             powerLoaded: false,
             toast: {
             toast: {
                 show: false,
                 show: false,
@@ -64,11 +63,25 @@ var vm = new Vue({
                 toastShow: false,
                 toastShow: false,
                 show: false,
                 show: false,
                 currentDelTagInfo: {}, // 当前要删除标签的信息
                 currentDelTagInfo: {}, // 当前要删除标签的信息
-            }
+            },
+            addTagInfo: {
+                content: ''
+            },
+            powerDialogShow: false,
+            urlFilterTagId: []
+        }
+    },
+    computed: {
+        power: function () {
+            return this.powerInfo.entniche || this.powerInfo.member || this.powerInfo.vip !== 0
         }
         }
     },
     },
     created: function () {
     created: function () {
         var _this = this
         var _this = this
+        var tag = utils.getParam('tag')
+        if (tag) {
+            this.urlFilterTagId = tag.split(',')
+        }
         this.getPower(function () {
         this.getPower(function () {
             if (_this.hasRestoreState()) {
             if (_this.hasRestoreState()) {
                 // 等TagList请求完成后在恢复数据
                 // 等TagList请求完成后在恢复数据
@@ -81,13 +94,15 @@ var vm = new Vue({
                     }, 0)
                     }, 0)
                 })
                 })
             } else {
             } else {
-                _this.getTagList()
-                _this.getList()
+                _this.getTagList(function () {
+                    _this.getList()
+                })
             }
             }
         })
         })
     },
     },
     methods: {
     methods: {
         showToast: function (content, timer, callback) {
         showToast: function (content, timer, callback) {
+            if (this.toast.show) return
             content = content || '暂无数据'
             content = content || '暂无数据'
             timer = timer || 2000
             timer = timer || 2000
             this.toast.content = content
             this.toast.content = content
@@ -104,7 +119,9 @@ var vm = new Vue({
                 success: function (res) {
                 success: function (res) {
                     if (res.error_code === 0 && res.data) {
                     if (res.error_code === 0 && res.data) {
                         this.powerInfo = res.data
                         this.powerInfo = res.data
-                        this.checkPower()
+                        if (!this.power) {
+                            this.listState.pageSize = 100
+                        }
                     }
                     }
                 }.bind(this),
                 }.bind(this),
                 complete: function () {
                 complete: function () {
@@ -113,12 +130,6 @@ var vm = new Vue({
                 }.bind(this)
                 }.bind(this)
             })
             })
         },
         },
-        checkPower: function () {
-            this.power = this.powerInfo.entniche || this.powerInfo.member || this.powerInfo.vip !== 0
-            if (!this.power) {
-                this.listState.pageSize = 100
-            }
-        },
         getTagList: function (callback) {
         getTagList: function (callback) {
             $.ajax({
             $.ajax({
                 url: '/publicapply/bidcoll/getLabel',
                 url: '/publicapply/bidcoll/getLabel',
@@ -127,6 +138,9 @@ var vm = new Vue({
                     if (res.error_code === 0) {
                     if (res.error_code === 0) {
                         this.tagList = res.data || []
                         this.tagList = res.data || []
                         this.initSelectTagList()
                         this.initSelectTagList()
+                        if (this.urlFilterTagId.length) {
+                            this.filterState.tags = this.filterState.tags.concat(this.urlFilterTagId)
+                        }
                         callback && callback()
                         callback && callback()
                     }
                     }
                 }.bind(this)
                 }.bind(this)
@@ -200,6 +214,31 @@ var vm = new Vue({
                 }.bind(this)
                 }.bind(this)
             })
             })
         },
         },
+        addTagConfirmed: function () {
+            var name = this.addTagInfo.content
+            if (!name) return
+            $.ajax({
+                url: '/publicapply/bidcoll/addLabel',
+                type: 'POST',
+                data: {
+                    name: name
+                },
+                success: function (res) {
+                    if (res.error_code === 0 && res.data) {
+                        this.addTagInfo.content = ''
+                        this.tagList.push({
+                            count: 0,
+                            lanme: name,
+                            lid: res.data
+                        })
+                        this.initSelectTagList()
+                        this.resetListState()
+                    } else {
+                        this.showToast(res.error_msg)
+                    }
+                }.bind(this)
+            })
+        },
         resetListState: function () {
         resetListState: function () {
             var state = {
             var state = {
                 loaded: false,
                 loaded: false,
@@ -250,16 +289,29 @@ var vm = new Vue({
             this.doQuery()
             this.doQuery()
         },
         },
         buyerClassFilterChange: function (buyerclass) {
         buyerClassFilterChange: function (buyerclass) {
-            var buyerclassArr = []
-            this.filterState.buyerclassObj = buyerclass
-            for (var key in buyerclass) {
-                buyerclassArr = buyerclassArr.concat(buyerclass[key])
+            if (this.power) {
+                var buyerclassArr = []
+                this.filterState.buyerclassObj = buyerclass
+                for (var key in buyerclass) {
+                    buyerclassArr = buyerclassArr.concat(buyerclass[key])
+                }
+                this.filterState.buyerclass = buyerclassArr
+                this.doQuery()
+            } else {
+                this.$refs.buyerClassFilter.setState()
+                this.filterState.buyerclass = ''
+                this.powerDialogShow = true
             }
             }
-            this.filterState.buyerclass = buyerclassArr
-            this.doQuery()
+            
         },
         },
         otherFilterChange: function (t) {
         otherFilterChange: function (t) {
-            this.doQuery()
+            if (this.power) {
+                this.doQuery()
+            } else {
+                this.filterState.buyerPhone = 0
+                this.filterState.winnerPhone = 0
+                this.powerDialogShow = true
+            }
         },
         },
         changeListType: function (type) {
         changeListType: function (type) {
             this.listState.listType = type
             this.listState.listType = type
@@ -398,6 +450,9 @@ var vm = new Vue({
         openTagDrawer: function () {
         openTagDrawer: function () {
             this.tagDrawer.show = true
             this.tagDrawer.show = true
         },
         },
+        openVipPage: function () {
+            window.open('/front/subscribe.html')
+        },
         drawerConfirm: function () {
         drawerConfirm: function () {
             this.tagDrawer.show = false
             this.tagDrawer.show = false
         },
         },
@@ -429,6 +484,7 @@ var vm = new Vue({
                             setTimeout(function () {
                             setTimeout(function () {
                                 _this.tagDrawer.toastShow = false
                                 _this.tagDrawer.toastShow = false
                                 _this.getTagList()
                                 _this.getTagList()
+                                _this.resetListState()
                             }, 1500)
                             }, 1500)
                         }
                         }
                     }
                     }

+ 60 - 2
src/web/staticres/js/ent-search-index-pc.js

@@ -161,6 +161,11 @@ var vm = new Vue({
                 focus: false,
                 focus: false,
                 list: []
                 list: []
             },
             },
+            entUseInfo: {
+                used: 0,
+                total: 0,
+                province: 0
+            },
             powerInfo: {
             powerInfo: {
                 entniche: '',
                 entniche: '',
                 member: '',
                 member: '',
@@ -199,6 +204,21 @@ var vm = new Vue({
                     return '升级'
                     return '升级'
                 }
                 }
             }
             }
+        },
+        showEntUsage: function () {
+            return !this.powerInfo.member && this.powerInfo.vip > 1
+        },
+        getVipSubText: function () {
+            var count = this.entUseInfo.provin
+            if (count == -1) {
+                return '全国'
+            } else {
+                if (count) {
+                    return count + '个省'
+                } else {
+                    ''
+                }
+            }
         }
         }
     },
     },
     created: function () {
     created: function () {
@@ -228,6 +248,9 @@ var vm = new Vue({
                         Object.assign(this.powerInfo, res.data)
                         Object.assign(this.powerInfo, res.data)
                         this.checkPower()
                         this.checkPower()
                         this.doSearch()
                         this.doSearch()
+                        if (this.showEntUsage) {
+                            this.getEntProtUsage()
+                        }
                     } else {
                     } else {
                         this.checkLogin()
                         this.checkLogin()
                     }
                     }
@@ -240,6 +263,7 @@ var vm = new Vue({
         },
         },
         checkPower: function () {
         checkPower: function () {
             this.power = this.powerInfo.member || this.powerInfo.vip !== 0
             this.power = this.powerInfo.member || this.powerInfo.vip !== 0
+            return this.power
         },
         },
         initPageData: function () {
         initPageData: function () {
             if (pageInfo.searchContent) {
             if (pageInfo.searchContent) {
@@ -261,6 +285,7 @@ var vm = new Vue({
         initDOMEvents: function () {
         initDOMEvents: function () {
             ewmMoveHover()
             ewmMoveHover()
             refreshEwmText(this.searchContent)
             refreshEwmText(this.searchContent)
+            insertVipIcon($('.search-type .el-checkbox:last-of-type'))
             setTimeout(function () {
             setTimeout(function () {
                 tabHover()
                 tabHover()
             }, 300)
             }, 300)
@@ -323,6 +348,26 @@ var vm = new Vue({
                 this.powerDialogShow = true
                 this.powerDialogShow = true
             }
             }
         },
         },
+        getEntProtUsage: function () {
+            $.ajax({
+                url: '/bigmember/portrait/subVipPortrait/usage',
+                method: 'POST',
+                data: data,
+                success: function (res) {
+                    if (res.error_code === 0) {
+                        if (res.data.total) {
+                            this.entUseInfo.total = res.data.total
+                        }
+                        if (res.data.provin) {
+                            this.entUseInfo.province = res.data.provin
+                        }
+                        if (res.data.usage) {
+                            this.entUseInfo.used = res.data.usage
+                        }
+                    }
+                }.bind(this)
+            })
+        },
         doSearch: function () {
         doSearch: function () {
             this.resetListState()
             this.resetListState()
             this.getList()
             this.getList()
@@ -441,13 +486,23 @@ var vm = new Vue({
             // 企业搜索单位类型-去开通
             // 企业搜索单位类型-去开通
             // 企业搜索联系方式-去开通
             // 企业搜索联系方式-去开通
             // 企业搜索底部第五条-去开通
             // 企业搜索底部第五条-去开通
-            if(param === 'more') {
-              this.baiduName = '底部第五条'
+            // 企业搜索popover-去开通
+            if (param === 'more') {
+                this.baiduName = '底部第五条'
+            } else if (param === 'popover-link') {
+                this.baiduName = '-超级订阅用户-当月已使用hover'
             }
             }
             var str = '企业搜索' + this.baiduName + '-去开通'
             var str = '企业搜索' + this.baiduName + '-去开通'
             baiduEvent(str) // 去开通按钮百度统计
             baiduEvent(str) // 去开通按钮百度统计
             window.open('/front/subscribe.html')
             window.open('/front/subscribe.html')
         },
         },
+        openEntHistory: function () {
+            baiduEvent('企业画像查看历史记录')
+            window.open('/swordfish/frontPage/seeHistory/sess/index')
+        },
+        openCustomerService: function () {
+            $('#go-customer-4').trigger('click')
+        },
         toDetail: function (id) {
         toDetail: function (id) {
             window.open('/swordfish/page_big_pc/svip/ent_ser_portrait/' + id)
             window.open('/swordfish/page_big_pc/svip/ent_ser_portrait/' + id)
         },
         },
@@ -520,6 +575,9 @@ var vm = new Vue({
     }
     }
 })()
 })()
 
 
+function insertVipIcon (target) {
+    $(target).append('<span class="icon-hot-vip"></span>')
+}
 function tabHover () {
 function tabHover () {
     $('#tab-zb').on('mouseover', function () {
     $('#tab-zb').on('mouseover', function () {
         $(this).siblings('.el-tabs__active-bar').css({transform: 'translateX(0)'})
         $(this).siblings('.el-tabs__active-bar').css({transform: 'translateX(0)'})

+ 36 - 1
src/web/staticres/js/pc_detail_tags.js

@@ -267,6 +267,7 @@ function saveChooseTags(params) {
     success: function(r){
     success: function(r){
       if (r.data) {
       if (r.data) {
         toastFn("标签绑定成功", 1000)
         toastFn("标签绑定成功", 1000)
+        getContentTags()
       }
       }
     }
     }
   })
   })
@@ -331,4 +332,38 @@ function toastFn (text, duration = 1000) {
 	setTimeout(function(){
 	setTimeout(function(){
 		$(".custom-toast").fadeOut().remove();
 		$(".custom-toast").fadeOut().remove();
 	},duration)
 	},duration)
-}
+}
+
+// 获取当前文章个人标签方法
+function getContentTags () {
+  $.ajax({
+    type:'post',
+    url:'/publicapply/bidcoll/isColl?t=' + Date.now(),
+    data: {
+      bids: id,
+      label: 'info'
+    },
+    success: function (r) {
+      if (r.error_code === 0) {
+        if (r.data.iscoll && $.isArray(r.data.labels) && r.data.labels.length) {
+          var labelHtmlArr = []
+          r.data.labels.forEach(function (item) {
+            labelHtmlArr.push('<span data-id="' + item.id + '" class="tag-item">' + item.labelname + '</span>')
+          })
+          $('.personal-tags').show().children('.p-l-content').html(labelHtmlArr.join(','))
+        } else {
+          $('.personal-tags').hide()
+        }
+      } 
+    }
+  })
+}
+
+$(function () {
+  getContentTags()
+  $('.personal-tags').on('click', '.tag-item', function (e) {
+    var $this = $(e.target)
+    var tagId = $this.attr('data-id')
+    window.open('/swordfish/frontPage/collection/sess/index?tag=' + tagId)
+  })
+})

+ 43 - 0
src/web/staticres/pccss/ent-search-index-pc.css

@@ -50,6 +50,10 @@
 .input-container {
 .input-container {
     position: relative;
     position: relative;
 }
 }
+.selector-card-footer {
+    display: flex;
+    align-items: center;
+}
 
 
 .el-input__prefix {
 .el-input__prefix {
     display: flex;
     display: flex;
@@ -332,3 +336,42 @@
 .el-select + .select-title {
 .el-select + .select-title {
     margin-left: 14px;
     margin-left: 14px;
 }
 }
+
+.search-type .icon-hot-vip {
+    margin-top: -4px;
+    margin-left: 8px;
+    width: 40px;
+    height: 18px;
+}
+.used-counter {
+    padding: 0 8px;
+    font-size: 14px;
+    color: #686868;
+    line-height: 22px;
+    border: 1px solid #ececec;
+    border-radius: 15px;
+    cursor: pointer;
+}
+.count-used {
+    font-size: 16px;
+    color: #2cb7ca;
+}
+.count-total {
+    color: #1d1d1d;
+}
+.to-ent-history {
+    margin-left: 8px;
+    font-size: 14px;
+    line-height: 22px;
+    color: #2cb7ca;
+    cursor: pointer;
+}
+.popover-link {
+    color: #2cb7ca;
+    cursor: pointer;
+}
+.popover-content {
+    font-size: 14px;
+    color: #1d1d1d;
+    line-height: 22px;
+}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 218 - 0
src/web/staticres/pccss/pc-detail.css


+ 37 - 7
src/web/templates/frontRouter/pc/collection/sess/index.html

@@ -34,8 +34,8 @@
         <div class="collection-header w">
         <div class="collection-header w">
             <h3 class="tab-title">标讯收藏</h3>
             <h3 class="tab-title">标讯收藏</h3>
         </div>
         </div>
-        <div class="search-content w" v-cloak v-show="powerLoaded">
-            <div class="selector-card-container search-filters" v-if="power">
+        <div class="search-content w" v-cloak>
+            <div class="selector-card-container search-filters">
                 <div class="selector-card">
                 <div class="selector-card">
                     <div class="selector-card-header">个人标签:</div>
                     <div class="selector-card-header">个人标签:</div>
                     <div class="selector-card-content tag-list-container">
                     <div class="selector-card-content tag-list-container">
@@ -58,6 +58,16 @@
                             <span class="tag-count" v-text="tagSelectList.length"></span>
                             <span class="tag-count" v-text="tagSelectList.length"></span>
                         </template>
                         </template>
                         <div class="tag-container">
                         <div class="tag-container">
+                            <div class="tag-header flex">
+                                <el-input
+                                    placeholder="输入标签"
+                                    v-model.trim="addTagInfo.content"
+                                    maxlength="5"
+                                    clearable
+                                    @keyup.enter.native="addTagConfirmed">
+                                </el-input>
+                                <div class="add-tag-confirm-button flex no-select" @click="addTagConfirmed">确认添加</div>
+                            </div>
                             <div class="tag-main">
                             <div class="tag-main">
                                 <el-tag
                                 <el-tag
                                     :key="tag.value"
                                     :key="tag.value"
@@ -86,18 +96,25 @@
                         ></date-time-component>
                         ></date-time-component>
                     </div>
                     </div>
                 </div>
                 </div>
-                <div class="selector-card">
-                    <div class="selector-card-header">采购单位类型:</div>
+                <div class="selector-card vip">
+                    <div class="selector-card-header">
+                        <span class="s-h-title">采购单位类型</span>
+                        <span class="icon-hot-vip"></span>
+                    </div>
                     <div class="selector-card-content">
                     <div class="selector-card-content">
                         <select-level2-component
                         <select-level2-component
                             :init-selected="filterState.buyerclassObj"
                             :init-selected="filterState.buyerclassObj"
                             :map="buyclassMap"
                             :map="buyclassMap"
+                            ref="buyerClassFilter"
                             @change="buyerClassFilterChange"
                             @change="buyerClassFilterChange"
                         ></select-level2-component>
                         ></select-level2-component>
                     </div>
                     </div>
                 </div>
                 </div>
-                <div class="selector-card">
-                    <div class="selector-card-header">其他筛选条件:</div>
+                <div class="selector-card vip">
+                    <div class="selector-card-header">
+                        <span class="s-h-title">其他筛选条件</span>
+                        <span class="icon-hot-vip"></span>
+                    </div>
                     <div class="selector-card-content flex mini-select other-filter">
                     <div class="selector-card-content flex mini-select other-filter">
                         <div class="select-title">采购单位联系方式</div>
                         <div class="select-title">采购单位联系方式</div>
                         <el-select v-model="filterState.buyerPhone" @change="otherFilterChange" placeholder="采购单位联系方式">
                         <el-select v-model="filterState.buyerPhone" @change="otherFilterChange" placeholder="采购单位联系方式">
@@ -213,6 +230,19 @@
                     @current-change="onPageChange"
                     @current-change="onPageChange"
                 ></el-pagination>
                 ></el-pagination>
             </div>
             </div>
+            <el-dialog
+                title="您暂无使用权限"
+                :visible.sync="powerDialogShow"
+                custom-class="j-el-confirm"
+                :show-close="false"
+                top="25vh"
+                width="30%">
+                <span>开通超级订阅,全国企业随手查,搜索信息更高效!</span>
+                <span slot="footer" class="dialog-footer">
+                    <button class="j-t-button confirm active" @click="openVipPage">去开通</el-button>
+                    <button class="j-t-button cancel" @click="powerDialogShow=false">取 消</button>
+                </span>
+            </el-dialog>
             <el-dialog
             <el-dialog
                 :modal="false"
                 :modal="false"
                 top="0"
                 top="0"
@@ -244,7 +274,7 @@
                 :show-close="false"
                 :show-close="false"
                 top="25vh"
                 top="25vh"
                 width="30%">
                 width="30%">
-                <span>确定删除该标签?</span>
+                <span>确定删除${tagDrawer.currentDelTagInfo.label ? ('“' + tagDrawer.currentDelTagInfo.label + '”') : ''}标签?</span>
                 <span slot="footer" class="dialog-footer">
                 <span slot="footer" class="dialog-footer">
                     <button class="j-t-button confirm active" @click="delThisTagConfirm">确 定</el-button>
                     <button class="j-t-button confirm active" @click="delThisTagConfirm">确 定</el-button>
                     <button class="j-t-button cancel" @click="tagDrawer.dialogShow=false">取 消</button>
                     <button class="j-t-button cancel" @click="tagDrawer.dialogShow=false">取 消</button>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 4 - 216
src/web/templates/pc/biddetail_rec.html


+ 23 - 1
src/web/templates/pc/entsearchindex.html

@@ -87,7 +87,7 @@
             </div>
             </div>
             <div class="search-content w">
             <div class="search-content w">
                 <div class="selector-card-container search-filters">
                 <div class="selector-card-container search-filters">
-                    <div class="selector-card">
+                    <div class="selector-card search-type">
                         <div class="selector-card-header">搜索范围:</div>
                         <div class="selector-card-header">搜索范围:</div>
                         <div class="selector-card-content">
                         <div class="selector-card-content">
                             <select-list-component
                             <select-list-component
@@ -98,6 +98,28 @@
                                 @change="searchTypeChange"
                                 @change="searchTypeChange"
                             ></select-list-component>
                             ></select-list-component>
                         </div>
                         </div>
+                        <div class="selector-card-footer" v-if="showEntUsage">
+                            <el-popover
+                                placement="top"
+                                width="292"
+                                trigger="hover">
+                                <div class="popover-content" v-if="entUseInfo.used < entUseInfo.total" key="popover-content">
+                                    <p>超级订阅用户,每购买一个省,每月可看50个画像。</p>
+                                    <p>您当前订阅了${getVipSubText},如需查看更多,请前往订阅更多省份。<span class="popover-link" @click="openVipPage('popover-link')">前往</span></p>
+                                </div>
+                                <div class="popover-content" v-else key="popover-content">
+                                    <p>超级订阅用户,每购买一个省,每月可看50个画像。</p>
+                                    <p>您当前订阅了${getVipSubText},查看机会已经消耗完毕。如需要更多服务,请前往<span class="popover-link" @click="openCustomerService">联系客服</span></p>
+                                </div>
+                                <div class="used-counter" slot="reference">
+                                    <span>当月已使用:</span>
+                                    <span class="u-c-label">
+                                        <span class="count-used highlight-text">${entUseInfo.used}</span><span class="count-total">/${entUseInfo.total}</span>
+                                    </span>
+                                </div>
+                            </el-popover>
+                            <div class="to-ent-history" @click="openEntHistory" id="to-ent-history">历史记录查看</div>
+                        </div>
                     </div>
                     </div>
                     <div class="selector-card">
                     <div class="selector-card">
                         <div class="selector-card-header">注册地:</div>
                         <div class="selector-card-header">注册地:</div>

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio