Эх сурвалжийг харах

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

TANGSHIZHE 4 жил өмнө
parent
commit
80ad3a274c
32 өөрчлөгдсөн 1738 нэмэгдсэн , 264 устгасан
  1. 1 0
      src/config.json
  2. 5 49
      src/jfw/front/supsearch.go
  3. 15 96
      src/jfw/front/swordfish.go
  4. 8 47
      src/jfw/modules/app/src/app/front/swordfish.go
  5. 1 0
      src/jfw/modules/app/src/config.json
  6. 6 6
      src/jfw/modules/app/src/web/staticres/jyapp/js/searchindex.js
  7. 6 6
      src/jfw/modules/app/src/web/staticres/jyapp/js/wxSupersearch.js
  8. 102 0
      src/jfw/modules/app/src/web/templates/frontRouter/portraitRecord/sess/index.html
  9. 9 7
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  10. 0 22
      src/jfw/modules/common/src/qfw/util/bidsearch/search.go
  11. 54 4
      src/jfw/modules/common/src/qfw/util/jy/payUser.go
  12. 8 5
      src/jfw/modules/publicapply/src/bidcollection/entity/entity.go
  13. 4 0
      src/jfw/modules/publicapply/src/bidcollection/service/service.go
  14. 2 1
      src/jfw/modules/publicapply/src/config.json
  15. 3 2
      src/jfw/modules/publicapply/src/config/config.go
  16. 23 9
      src/web/staticres/common-module/ent-search/ent-search-template.js
  17. 21 0
      src/web/staticres/common-module/portraitRecord/css/index.css
  18. 530 0
      src/web/staticres/common-module/portraitRecord/css/public.css
  19. BIN
      src/web/staticres/common-module/portraitRecord/image/bg-pro.png
  20. BIN
      src/web/staticres/common-module/portraitRecord/image/help-p.png
  21. 201 0
      src/web/staticres/common-module/portraitRecord/js/index-wx.js
  22. 201 0
      src/web/staticres/common-module/portraitRecord/js/index.js
  23. 35 1
      src/web/staticres/css/dev2/newBidSearch.css
  24. 5 1
      src/web/staticres/css/subscribe.css
  25. 130 0
      src/web/staticres/frontRouter/pc/seeHistory/css/index-pc.css
  26. 124 0
      src/web/staticres/frontRouter/pc/seeHistory/js/index-pc.js
  27. 6 6
      src/web/staticres/js/wxSupersearch.js
  28. 86 0
      src/web/templates/frontRouter/pc/seeHistory/sess/index.html
  29. 102 0
      src/web/templates/frontRouter/wx/portraitRecord/sess/index.html
  30. 6 0
      src/web/templates/pc/subscribe_new.html
  31. 40 0
      src/web/templates/pc/supsearch.html
  32. 4 2
      src/web/templates/weixin/search/mainSearch.html

+ 1 - 0
src/config.json

@@ -286,6 +286,7 @@
     "uploadPath": "./web/staticres/upload/res/",
     "redisSessionLockSize":20,
     "accountMergeOnline":"2055-03-30 00:00:00",
+    "bidSearchOldUserLimit": 1626105600,
     "firstBindPop":3,
     "maxBindPop":111111111111115,
     "nsq":"192.168.3.240:4260",

+ 5 - 49
src/jfw/front/supsearch.go

@@ -248,59 +248,15 @@ func (p *Pcsearch) PcSearchIndex() error {
 	//高级筛选 仅vip用户可查询
 	var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 	var buyerclass string = ""                    //采购单位类别
-	var selectTypeArr []string                    //筛选查询内容
 	selectType := p.GetString("selectType")
-	isPayedUser := jy.GetVipState(public.Mysql, public.MQFW, userId).IsPayedUser()
+
+	vipStatus := jy.GetVipState(public.Mysql, public.MQFW, userId)
+	isPayedUser := vipStatus.IsPayedUser()
+	queryItems := vipStatus.GetQueryItems(selectType, util.Int64All(config.Sysconfig["bidSearchOldUserLimit"]))
 	if isPayedUser {
 		buyerclass = p.GetString("buyerclass")
 		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"
-	//全部(all)、标题(title)  正文(content)  会员: 采购单位(buyer) 中标企业(winner) 招标代理机构(agency) 附件(file)
 
 	//历史导出数据回显
 	if strings.Contains(p.Url(), "?goback") {
@@ -328,7 +284,7 @@ func (p *Pcsearch) PcSearchIndex() error {
 	secondKWS := ""
 	if len(s_word) > 0 || len(industry) > 0 {
 		status = 2
-		count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, selectTypeArr, bidSearch_field_1)
+		count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, queryItems, bidSearch_field_1)
 		listSize := 0
 		if list != nil {
 			listSize = len(*list)

+ 15 - 96
src/jfw/front/swordfish.go

@@ -119,54 +119,13 @@ func (m *Front) PcAjaxReq() {
 	//高级筛选 仅vip用户可查询
 	var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 	var buyerclass string = ""                    //采购单位类别
-	var selectTypeArr []string                    //筛选查询内容
-	if jy.GetVipState(public.Mysql, public.MQFW, userId).IsPayedUser() {
+
+	vipStatus := jy.GetVipState(public.Mysql, public.MQFW, userId)
+	isPayedUser := vipStatus.IsPayedUser()
+	queryItems := vipStatus.GetQueryItems(selectType, util.Int64All(config.Sysconfig["bidSearchOldUserLimit"]))
+	if isPayedUser {
 		buyerclass = m.GetString("buyerclass")
 		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)
@@ -195,7 +154,7 @@ func (m *Front) PcAjaxReq() {
 	if len(s_word) > 0 || len(industry) > 0 {
 		if reqType == "filter" {
 			if status == 1 {
-				count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, selectTypeArr, field)
+				count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, bidsearch.SearchPageSize_PC, true, queryItems, field)
 			}
 		} else if reqType == "bidSearch" {
 			//全文检索限制
@@ -210,7 +169,7 @@ func (m *Front) PcAjaxReq() {
 				if limitFlag {
 					if start == 0 {
 						limit_count := public.Lst.TotalPage * bidsearch.SearchPageSize_PC
-						count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, limit_count, true, selectTypeArr, field)
+						count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, limit_count, true, queryItems, field)
 						if totalPage > int64(public.Lst.TotalPage) {
 							totalPage = int64(public.Lst.TotalPage)
 						}
@@ -219,7 +178,7 @@ func (m *Front) PcAjaxReq() {
 						}
 					}
 				} else {
-					count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, start, bidsearch.SearchPageSize_PC, true, selectTypeArr, field)
+					count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, start, bidsearch.SearchPageSize_PC, true, queryItems, field)
 				}
 				listSize := 0
 				if list != nil {
@@ -482,53 +441,13 @@ func (m *Front) WxsearchlistPaging() {
 			//高级筛选 仅vip用户可查询
 			var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 			var buyerclass string = ""                    //采购单位类别
-			var selectTypeArr []string
-			if jy.GetVipState(public.Mysql, public.MQFW, userId).IsPayedUser() { //超级订阅、大会员、商机管理
+
+			vipStatus := jy.GetVipState(public.Mysql, public.MQFW, userId)
+			isPayedUser := vipStatus.IsPayedUser()
+			queryItems := vipStatus.GetQueryItems(selectType, util.Int64All(config.Sysconfig["bidSearchOldUserLimit"]))
+			if isPayedUser {
 				buyerclass = m.GetString("buyerclass")
 				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")
-				}
 			}
 
 			//全文检索限制
@@ -543,10 +462,10 @@ func (m *Front) WxsearchlistPaging() {
 				s_word := ""
 				if limitFlag {
 					if pageNum == 1 {
-						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_WX, selectTypeArr, filed)
+						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_WX, queryItems, filed)
 					}
 				} else {
-					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)
+					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_WX, queryItems, filed)
 				}
 				listSize := 0
 				if list != nil {

+ 8 - 47
src/jfw/modules/app/src/app/front/swordfish.go

@@ -273,54 +273,15 @@ func (m *Front) WxsearchlistPaging() {
 			//高级筛选 仅vip用户可查询
 			var hasBuyerTel, hasWinnerTel string = "", "" //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
 			buyerclass := ""                              //采购单位类别
-			var selectTypeArr []string
-			if jy.GetVipState(public.Mysql, public.MQFW, userid).IsPayedUser() {
+
+			vipStatus := jy.GetVipState(public.Mysql, public.MQFW, userid)
+			isPayedUser := vipStatus.IsPayedUser()
+			queryItems := vipStatus.GetQueryItems(selectType, util.Int64All(config.Sysconfig["bidSearchOldUserLimit"]))
+			if isPayedUser {
 				buyerclass = m.GetString("buyerclass")
 				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") {
 				winner = m.GetString("winner")
 			}
@@ -341,10 +302,10 @@ func (m *Front) WxsearchlistPaging() {
 				s_word := ""
 				if limitFlag {
 					if pageNum == 1 {
-						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_APP, selectTypeArr, feld)
+						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_APP, queryItems, feld)
 					}
 				} 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, selectTypeArr, feld)
+					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_APP, queryItems, feld)
 				}
 				listSize := 0
 				if list != nil {

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

@@ -154,6 +154,7 @@
     "redisSessionLockSize":20,
     "nsq":"192.168.3.240:4260",
     "accountMergeOnline":"3333-03-30 00:00:00",
+	"bidSearchOldUserLimit": 1626105600,
     "firstBindPop":3,
     "maxBindPop":8,
     "bindPopRedis":"merge",

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

@@ -1134,11 +1134,11 @@ var SuperSearch = {
     // SuperSearch.reqParam.publishtime=SuperSearch.setPublishtime();
 
     //全文or标题
-    if($(".newdialog .tab-box .sub-search-title").find("li.active").attr('dataVal')=="searchtitle"){
-      SuperSearch.reqParam.selectType="title";
-    }else{
-      SuperSearch.reqParam.selectType="all";
-    }
+    // if($(".newdialog .tab-box .sub-search-title").find("li.active").attr('dataVal')=="searchtitle"){
+    //   SuperSearch.reqParam.selectType="title";
+    // }else{
+    //   SuperSearch.reqParam.selectType="all";
+    // }
     //采购单位行业
     var buyerclasstypes = "";
     $("#supersearchPage .choose_industry .industry_item.active").each(function(){
@@ -1268,7 +1268,7 @@ var SuperSearch = {
     SuperSearch.noMoreCache = false;
     SuperSearch.requesting = true;
     if(nw=="N"){
-      SuperSearch.reqParam.selectType ="title";
+      // SuperSearch.reqParam.selectType ="title";
       $(".newdialog .sub-search-title").find("li").removeClass("active");
       $(".selected-export .options .search-title").find("em").text("标题搜索");
       $(".newdialog .sub-search-title").find("li[dataval='searchtitle']").addClass("active");

+ 6 - 6
src/jfw/modules/app/src/web/staticres/jyapp/js/wxSupersearch.js

@@ -817,11 +817,11 @@ var SuperSearch = {
 		SuperSearch.reqParam.publishtime=SuperSearch.setPublishtime();
 
 		//全文or标题
-		if($(".newdialog .tab-box .sub-search-title").find("li.active").attr('dataVal')=="searchtitle"){
-			SuperSearch.reqParam.selectType="title";
-		}else{
-			SuperSearch.reqParam.selectType="all";
-		}
+		// if($(".newdialog .tab-box .sub-search-title").find("li.active").attr('dataVal')=="searchtitle"){
+		// 	SuperSearch.reqParam.selectType="title";
+		// }else{
+		// 	SuperSearch.reqParam.selectType="all";
+		// }
 		return true;
 	},
 	//行为采集 type=1 搜索、type=2 显示列表次数统计
@@ -913,7 +913,7 @@ var SuperSearch = {
 		SuperSearch.noMoreCache = false;
 		SuperSearch.requesting = true;
 		if(nw=="N"){
-			SuperSearch.reqParam.selectType ="title";
+			// SuperSearch.reqParam.selectType ="title";
 			$(".newdialog .sub-search-title").find("li").removeClass("active");
 			$(".selected-export .options .search-title").find("em").text("标题搜索");
 			$(".newdialog .sub-search-title").find("li[dataval='searchtitle']").addClass("active");

+ 102 - 0
src/jfw/modules/app/src/web/templates/frontRouter/portraitRecord/sess/index.html

@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+    <title>企业画像记录</title>
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/reset-css@4.0.1/reset.min.css />
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/vant@2.11.1/lib/index.css />
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/vant@2.11.1/lib/icon/local.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/portraitRecord/css/index.css?v={{Msg "seo" "version"}}' />
+</head>
+<body>
+  <div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main portraited" id="proRecord" v-cloak>
+      <div class="j-container">
+        <div class="j-main">
+          <div class="t-bg flex">
+            <div class="nums">
+              <span>{points.total}</span>个
+              <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/portraitRecord/image/help-p.png?v={{Msg "seo" "version"}}' @click="helpTiped" alt="">
+            </div>
+            <div class="btns flex">
+              <span>当月企业画像剩余数</span>
+              <van-button round type="primary" v-if="contracted" @click="contractPerson">联系客服</van-button>
+              <van-button round type="primary" v-else @click="setBook">订阅设置</van-button>
+            </div>
+          </div>
+          <div class="p-date">
+            <div class="d-box flex">
+              使用记录
+              <van-field v-model="dValue" @click="usedHised" placeholder="显示图标" right-icon="play" readonly/> 
+            </div>
+            <div class="word-tips">
+              当前已使用:<span>{points.usage}个</span>
+            </div>
+          </div>
+          <!-- 日期弹出框 -->
+          <van-popup v-model:show="pShow" round position="bottom">
+            <van-datetime-picker
+              v-model="curDate"
+              type="year-month"
+              title="选择日期"
+              :formatter="formatter11"
+              @confirm="confirmed"
+              @cancel="canceled"
+            />
+          </van-popup>
+          <div class="c-list">
+            <van-list
+              v-model="listInfo.loading"
+              :finished="listInfo.finished"
+              finished-text=""
+              @onLoad="onLoad"
+            >
+                <div class="ent-search-item" v-for="(item, i) in list" :key="item._id" @click="detailed(item._id)">
+                    <div class="ent-info-top">
+                        <div class="ent-info-head" :style="{'background-color': item.color}">{item.abbr}</div>
+                        <div class="ent-info-keep">
+                            <div class="ent-row">
+                                <div class="ent-name van-ellipsis">{item.name}</div>
+                                <div class="fill-icon-box" style="display: none">
+                                    <i class="j-icon base-icon icon-no-favorite"></i>
+                                </div>
+                            </div>
+                            <div class="ent-more">
+                                <div v-if="item.legal">法定代表人: <span>{item.legal}</span></div>
+                                <div v-if="item.money">注册资本: <span>{item.money}万元</span></div>
+                            </div>
+                            <div class="ent-line-box"></div>
+                        </div>
+                    </div>
+                    <div class="ent-info-bottom ent-row" v-show="item.status >= 0 || item.address">
+                        <div class="ent-info-status-box">
+                            <span class="ent-info-status" v-show="item.status >= 0" :class="'status-' + item.status">{statusEnum[item.status]}</span>
+                        </div>
+                        <div  class="ent-row ent-address"  v-show="item.address">
+                            <div class="van-multi-ellipsis--l2">{item.address}</div>
+                            <i class="j-icon base-icon icon-address"></i>
+                        </div>
+
+                    </div>
+                </div>
+            </van-list>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <!--S-当前页面的资源-->
+  <script src=//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js></script>
+  <script src=//cdn.jsdelivr.net/npm/vant@2.11.1/lib/vant.min.js></script>
+  <script src=//cdn.jsdelivr.net/npm/zepto@1.2.0/dist/zepto.min.js></script>
+  <!--E-当前页面的资源-->
+  {{include "/big-member/commonjs.html"}}
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/selector/js/china_area.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/portraitRecord/js/index.js?v={{Msg "seo" "version"}}'></script>
+  {{include "/common/baiducc.html"}}
+</body>
+
+</html>

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

@@ -499,7 +499,8 @@
     window.jyUserPower = {
       entniche: false,
       member: false,
-      vip: 0
+      vip: 0,
+      isOld: false
     }
     $.ajax({
       url: '/publicapply/bidcoll/power',
@@ -509,7 +510,8 @@
           window.jyUserPower = {
             entniche: r.data.entniche,
             member: r.data.member,
-            vip: r.data.vip
+            vip: r.data.vip,
+            isOld: r.data.isOld
           }
         }
     })
@@ -1245,11 +1247,11 @@
             //判断 是标题搜索还是全文搜索
             var em_selectType=$(".options").children(".search-title").children("em").html();
             console.log(em_selectType)
-            if(em_selectType=="全文搜索"){
-                SuperSearch.reqParam.selectType="all";
-            }else if(em_selectType=="标题搜索"){
-                SuperSearch.reqParam.selectType="title";
-            }
+            // if(em_selectType=="全文搜索"){
+            //     SuperSearch.reqParam.selectType="all";
+            // }else if(em_selectType=="标题搜索"){
+            //     SuperSearch.reqParam.selectType="title";
+            // }
             // @date 2021/3/2 阻止短时间内多次请求,导致触发浏览器取消请求执行Error回调
             var nowT = new Date().getTime()
             if (!window.ajaxExportStatus) {

+ 0 - 22
src/jfw/modules/common/src/qfw/util/bidsearch/search.go

@@ -63,28 +63,6 @@ func GetPcBidSearchData(searchvalue, area, publishtime, subtype, industry, minpr
 	} 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))
 	if isGetCount && qstr != "" && start == 0 {
 		count = elastic.Count(INDEX, TYPE, qstr)

+ 54 - 4
src/jfw/modules/common/src/qfw/util/jy/payUser.go

@@ -4,19 +4,21 @@ import (
 	"mongodb"
 	qu "qfw/util"
 	"qfw/util/mysql"
+	"strings"
 )
 
 //是否是付费用户
 type VipState struct {
-	VipState  int //超级订阅状态(1普通 2升级版)
-	BigMember int //大会员状态
-	EntMember int //商机管理用户状态
+	VipState     int   //超级订阅状态(1普通 2升级版)
+	BigMember    int   //大会员状态
+	EntMember    int   //商机管理用户状态
+	registerData int64 //注册时间
 }
 
 func GetVipState(mysql *mysql.Mysql, mg mongodb.MongodbSim, userId string) (vs *VipState) {
 	vs = &VipState{}
 	phone := ""
-	data, ok := mg.FindById("user", userId, `"i_member_status":1,"i_vip_status":1,"s_m_phone":1,"s_phone":1,"o_vipjy":1`)
+	data, ok := mg.FindById("user", userId, `"i_member_status":1,"i_vip_status":1,"s_m_phone":1,"s_phone":1,"o_vipjy":1,"l_registedate":1`)
 	if data != nil && len(*data) > 0 && ok {
 		i_vip_status := qu.IntAll((*data)["i_vip_status"])
 		if i_vip_status > 1 {
@@ -42,10 +44,58 @@ func GetVipState(mysql *mysql.Mysql, mg mongodb.MongodbSim, userId string) (vs *
 				vs.EntMember = 1
 			}
 		}
+		vs.registerData, _ = ((*data)["l_registedate"]).(int64)
 	}
 	return
 }
 
+//是否是付费账户
 func (vs *VipState) IsPayedUser() bool {
 	return vs.VipState > 0 || vs.BigMember > 0 || vs.EntMember > 0
 }
+
+//免费 标题(title)  正文(content) 老用户【中标企业(winner)】
+//付费用户 全部(all)、标题(title)  正文(content)  会员: 采购单位(buyer) 中标企业(winner) 招标代理机构(agency) 附件(file)
+func (vs *VipState) GetQueryItems(selectType string, limitOldTime int64) (items []string) {
+	if vs.IsPayedUser() {
+		if selectType == "all" {
+			items = append(items, "title", "detail", "mbuyer", "mwinner", "magency", "filetext")
+		} else {
+			for _, t := range strings.Split(selectType, ",") {
+				if t == "content" {
+					items = append(items, "detail")
+				} else if t == "buyer" {
+					items = append(items, "mbuyer")
+				} else if t == "winner" {
+					items = append(items, "mwinner")
+				} else if t == "agency" {
+					items = append(items, "magency")
+				} else if t == "file" {
+					items = append(items, "filetext")
+				} else if t == "title" {
+					items = append(items, "title")
+				}
+			}
+		}
+		return
+	}
+	isOldUser := vs.registerData != 0 && vs.registerData < limitOldTime
+	if selectType == "all" {
+		if isOldUser {
+			items = append(items, "title", "detail", "mwinner")
+		}
+	} else { //查询中标企业且是老用户
+		for _, t := range strings.Split(selectType, ",") {
+			if t == "winner" {
+				if isOldUser {
+					items = append(items, "mwinner")
+				}
+			} else if t == "title" {
+				items = append(items, "title")
+			} else if t == "content" {
+				items = append(items, "detail")
+			}
+		}
+	}
+	return
+}

+ 8 - 5
src/jfw/modules/publicapply/src/bidcollection/entity/entity.go

@@ -432,7 +432,8 @@ func Power(userid string) (bool, map[string]interface{}) {
 	isVip, isMember, isEnt := false, false, false
 	vipstatus := 0
 	phone := ""
-	data, ok := db.Mgo.FindById("user", userid, `"i_member_status":1,"i_vip_status":1,"s_m_phone":1,"s_phone":1,"o_vipjy":1`)
+	var registedate int64
+	data, ok := db.Mgo.FindById("user", userid, `"i_member_status":1,"i_vip_status":1,"s_m_phone":1,"s_phone":1,"o_vipjy":1,"l_registedate":1`)
 	if data != nil && len(*data) > 0 && ok {
 		i_vip_status := qu.IntAll((*data)["i_vip_status"])
 		if i_vip_status > 1 {
@@ -468,11 +469,13 @@ func Power(userid string) (bool, map[string]interface{}) {
 			// 	isEnt = true
 			// }
 		}
+		registedate, _ = (*data)["l_registedate"].(int64)
 	}
 	return isVip || isEnt || isMember, map[string]interface{}{
-		"vip":      vipstatus,
-		"member":   isMember,
-		"entniche": isEnt,
+		"vip":         vipstatus,
+		"member":      isMember,
+		"entniche":    isEnt,
+		"registedate": registedate,
 	}
 }
 
@@ -705,7 +708,7 @@ func AddLab(name, userid string) map[string]interface{} {
 	if labArr := *db.Mysql.SelectBySql(fmt.Sprintf("select * from %s where labelname = ? and userid = ?", db.DbConf.Bdlabel), name, userid); len(labArr) == 1 {
 		// res := labArr[0]
 		m["labid"] = ""
-		m["msg"] = "已存在"
+		m["msg"] = "该标签存在"
 		return m
 	} else { //新增标签
 		insertMap := map[string]interface{}{

+ 4 - 0
src/jfw/modules/publicapply/src/bidcollection/service/service.go

@@ -3,6 +3,7 @@ package service
 import (
 	. "api"
 	"bidcollection/entity"
+	"config"
 	"encoding/json"
 	"log"
 	qu "qfw/util"
@@ -135,6 +136,9 @@ func (this *ServiceStruct) Power() {
 		m, msg := map[string]interface{}{}, ""
 		if userId != "" {
 			_, m = entity.Power(userId)
+			registedate, _ := m["registedate"].(int64)
+			m["isOld"] = registedate != 0 && registedate < config.Config.BidSearchOldUserLimit
+			delete(m, "registedate")
 			//log.Println(entity.UpdateRedis("a", userId, []string{"a", "d"}))
 		}
 		return Result{Data: m, Error_msg: msg}

+ 2 - 1
src/jfw/modules/publicapply/src/config.json

@@ -38,5 +38,6 @@
         "4c9a591604f1a3eb74857fc9de35e9ff",
         "3613232bc702d011232ed57f0027af1c"
 
-    ]
+    ],
+    "bidSearchOldUserLimit": 1626105600
 }

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

@@ -12,8 +12,9 @@ type config struct {
 		Pwd  string
 		User string
 	}
-	Industry       string
-	DefaultEntList []string //企业查询默认展示企业
+	Industry              string
+	DefaultEntList        []string //企业查询默认展示企业
+	BidSearchOldUserLimit int64
 }
 type BidColl struct {
 	PayUserCollLimit      int    //付费用户收藏数量最大限制

+ 23 - 9
src/web/staticres/common-module/ent-search/ent-search-template.js

@@ -758,37 +758,37 @@ var vMainSearchComponent = new Vue({
           {
             title: '标题搜索',
             checked: true,
-            key: 'A'
+            key: 'title'
           },
           {
             title: '正文搜索',
             checked: false,
-            key: 'B'
+            key: 'content'
           },
           {
             title: '中标企业',
-            tag: '老用户免费专享',
+            tag: '',
             disabled: true,
             checked: false,
-            key: 'E'
+            key: 'winner'
           },
           {
             title: '采购单位',
             disabled: true,
             checked: false,
-            key: 'E'
+            key: 'buyer'
           },
           {
             title: '招标代理机构',
             disabled: true,
             checked: false,
-            key: 'E'
+            key: 'agency'
           },
           {
             title: '附件',
             disabled: true,
             checked: false,
-            key: 'E'
+            key: 'file'
           }
         ],
         9: [
@@ -879,14 +879,27 @@ var vMainSearchComponent = new Vue({
       var resultPower = false
       if (tempPower) {
         resultPower = tempPower.entniche || tempPower.member || tempPower.vip !== 0
-        this.changePower(!resultPower, tempPower.member)
+        this.changePower(!resultPower, tempPower.member, tempPower)
       }
       return resultPower
     },
-    changePower (type, member) {
+    changePower (type, member, tempPower) {
       this.entTabs[8].disabled = type
       this.entTabs[9].disabled = type
       this.entTabs[10].disabled = type
+
+      // 搜索范围权限调整
+      this.conditionMap[1][2].disabled = type
+      this.conditionMap[1][3].disabled = type
+      this.conditionMap[1][4].disabled = type
+      this.conditionMap[1][5].disabled = type
+      this.conditionMap[1][2].tag = ''
+
+      if (tempPower.isOld && type) {
+        this.conditionMap[1][2].disabled = false
+        this.conditionMap[1][2].tag = '老用户免费专享'
+      }
+
       if (utils.isWeiXinBrowser) {
         this.entTabs[7].hide = true
       } else {
@@ -908,6 +921,7 @@ var vMainSearchComponent = new Vue({
       var nowTabTitle = this.entTabs[i].title
       switch (nowTabTitle) {
         case '搜索范围': {
+          this.conditionStrMap.selectType = this.getMoreListToStr(1)
           break
         }
         case '行业': {

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 21 - 0
src/web/staticres/common-module/portraitRecord/css/index.css


+ 530 - 0
src/web/staticres/common-module/portraitRecord/css/public.css

@@ -0,0 +1,530 @@
+@charset "UTF-8";
+
+/* reset css start ---------> */
+* {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    -webkit-overflow-scrolling: touch;
+    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+    -webkit-tap-highlight-color: transparent;
+}
+html,
+body {
+    height: 100%;
+    color: #171826;
+}
+
+html > body {
+    font-size: 12px;
+    background-color: #F5F6F7;
+}
+
+input, textarea {
+    caret-color: #2cb7ca;
+}
+
+
+/* 清除默认样式 */
+ul,
+ol {
+    list-style: none;
+}
+/*清除输入框内阴影*/
+input,
+textarea,
+select,
+button {
+    outline: none;
+    border: 0;
+    -webkit-appearance: none;
+    appearance: none;
+}
+button,
+span,
+div {
+    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+    /* -webkit-user-modify:read-only; */
+}
+img {
+    border: 0;
+    vertical-align: middle;
+    max-width: 100%;
+    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+a {
+    text-decoration: none;
+    color: #3d3d3d;
+    -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
+    -webkit-user-select: none;
+    -moz-user-focus: none;
+    -moz-user-select: none;
+}
+/*禁用长按页面时的弹出菜单(iOS下有效) ,img和a标签都要加*/
+img,
+a {
+    -webkit-touch-callout: none;
+}
+
+input::placeholder {
+    color: #C0C4CC;
+}
+
+/* reset css end ------ */
+
+/* common css class start */
+[v-cloak] {
+    display: none!important;
+}
+
+.clearfix {
+    zoom: 1;
+}
+.clearfix:after {
+    clear: both;
+    height: 0;
+    overflow: hidden;
+    display: block;
+    visibility: hidden;
+    content: '';
+}
+.left {
+    float: left;
+}
+.right {
+    float: right;
+}
+.ellipsis {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+/* 超过2行省略号显示 */
+.ellipsis-2 {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 2;
+    -webkit-box-orient: vertical;
+}
+/* 超过3行省略号显示 */
+.ellipsis-3 {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 3;
+    -webkit-box-orient: vertical;
+}
+.scrollbar-none::-webkit-scrollbar {
+    display: none;
+}
+
+/* 禁止长按复制 加给body ---- */
+.no-touch {
+    -webkit-touch-callout: none;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+}
+
+.j-pd {
+    padding-left: 0.32rem;
+    padding-right: 0.32rem;
+}
+
+.j-arrow {
+    display: inline-block;
+    width: 0.26rem;
+    height: 0.26rem;
+    border: 2px solid #5f5e64;
+    border-bottom-color: transparent;
+    border-right-color: transparent;
+    background: 0 0;
+    transform: rotate(-45deg);
+}
+
+.highlight-text {
+    color: #2cb7ca!important;
+}
+.bg-white {
+    background-color: #fff;
+}
+[class*=clickable]:active {
+    background-color: #f2f3f5;
+}
+
+/* 
+    border-line-t 0.5px上边框
+    border-line-b 0.5px下边框
+*/
+.border-line-t,
+.border-line-b {
+    position: relative;
+}
+.border-line-t:after,
+.border-line-b:after {
+    content: '';
+    position: absolute;
+    left: 0;
+    width: 100%;
+    height: 1px;
+    transform: scaleY(0.6);
+    transform-origin: 0 0;
+    background: rgba(0, 0, 0, 0.05);
+    /* background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.05) 65%, transparent 35%); */
+}
+.border-line-t:after {
+    top: -1px;
+}
+.border-line-b:after {
+    bottom: -1px;
+}
+
+/* common css class end ---- */
+
+/* j-container布局  start ---- */
+.j-container {
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+}
+
+.j-header {
+    position: relative;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+}
+
+.j-header.jy-app-header {
+    box-sizing: border-box;
+    padding: 10.66667vw 3.2vw 0 3.2vw;
+    height: 21.33333vw;
+    background: #fff;
+    z-index: 9;
+}
+
+.j-header .header-left,
+.j-header .header-title,
+.j-header .header-right {
+    display: flex;
+    align-items: center;
+}
+
+.j-header .header-left {
+    height: .6rem;
+    width: .6rem;
+}
+.j-header .header-left .j-icon {
+    height: .4rem;
+    width: .4rem;
+}
+
+.j-header .header-title {
+    position: absolute;
+    left: 50%;
+    font-size: 17px;
+    color: #171826;
+    transform: translateX(-50%);
+}
+
+.j-header .header-right {
+    height: 100%;
+    min-width: 0.4rem;
+    font-size: .3rem;
+}
+
+.j-header .header-left.hide,
+.j-header .header-right.hide {
+    visibility: hidden;
+}
+
+/* 头部透明 */
+.j-container .j-header.transparent-header {
+    background-color: transparent;
+}
+.j-container .j-header.transparent-header:after {
+    content: unset;
+}
+.j-header.transparent-header .header-left,
+.j-header.transparent-header .header-title {
+    color: #fff;
+}
+.j-header.transparent-header .header-title {
+    font-size: 0;
+}
+
+.j-main {
+    position: relative;
+    display: flex;
+    flex-direction: column;
+    flex: 1;
+    overflow-y: scroll;
+    overflow-x: hidden;
+    /* 所有都j-main开启ios-touch */
+    -webkit-overflow-scrolling: touch;
+}
+
+.j-main.calc-height-1px {
+    height: calc(100% + 1Px);
+}
+
+/* 单独关闭ios惯性滚动 */
+.j-main.no-ios-touch {
+    -webkit-overflow-scrolling: auto;
+}
+
+.j-footer {
+    box-shadow: 0px -2px 8px rgba(54, 147, 179, 0.051);
+}
+/* j-container布局  end ---- */
+
+@keyframes ballRotate {
+    0% {
+        transform: rotate(0);
+    }
+
+    100% {
+        transform: rotate(360deg);
+    }
+}
+
+.ball-clip-rotate {
+    position: absolute;
+    left: 50%;
+    top: 50%;
+    z-index: 2;
+    transform: translate(-50%, -50%);
+}
+
+.ball-clip-rotate .ball {
+    display: inline-block;
+    width: 26px;
+    height: 26px;
+    border-radius: 50%;
+    border: 3px solid #fff;
+    border-bottom-color: transparent;
+    background: 0 0;
+    -webkit-animation: ballRotate 0.75s 0s linear infinite;
+    animation: ballRotate 0.75s 0s linear infinite;
+}
+
+.j-mask {
+    position: fixed;
+    z-index: 1000;
+    top: 0;
+    right: 0;
+    left: 0;
+    bottom: 0;
+}
+
+.black {
+    background: rgba(0, 0, 0, 0.6);
+}
+
+.j-loading {
+    display: none;
+}
+
+.j-loading .j-toast {
+    position: fixed;
+    top: 45%;
+    left: 50%;
+    z-index: 1001;
+    padding: 0.2rem;
+    min-width: 2.2rem;
+    max-width: 6.2rem;
+    width: auto;
+    height: auto;
+    color: #fff;
+    font-size: 0.28rem;
+    text-align: center;
+    background: rgba(18, 18, 18, 0.7);
+    border-radius: 5px;
+    transform: translate(-50%, -50%);
+}
+
+.j-loading .j-toast.icon {
+    padding: 0.5rem 0.2rem;
+}
+
+.j-loading .j-toast.icon .j-toast_icon {
+    display: inline-block;
+    width: 38px;
+    height: 38px;
+}
+
+.j-loading .j-toast .j-toast_icon {
+    display: none;
+}
+
+.j-loading .j-toast .j-toast_content {
+    text-align: center;
+}
+
+.j-loading-icon {
+    display: inline-block;
+    width: 20px;
+    height: 20px;
+    vertical-align: baseline;
+    background: transparent url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E9E9E9' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23989697' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%239B999A' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23A3A1A2' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23ABA9AA' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23B2B2B2' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23BAB8B9' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23C2C0C1' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23CBCBCB' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23D2D2D2' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23DADADA' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E2E2E2' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E") no-repeat;
+    background-size: 100%;
+    -webkit-animation: ballRotate 1s steps(12) infinite;
+    animation: ballRotate 1s steps(12) infinite;
+}
+
+.j-button-group {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    width: 100%;
+    padding: 0.16rem 0.32rem 0.24rem;
+    background-color: #fff;
+    box-sizing: border-box;
+}
+
+.j-button-confirm,
+.j-button-cancel {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex: 1;
+    width: 100%;
+    height: 0.8rem;
+    font-size: 0.32rem;
+    line-height: inherit;
+    text-align: center;
+    border-radius: 0.16rem;
+}
+
+.single .j-button-confirm,
+.single .j-button-cancel {
+    height: 0.92rem;
+}
+
+.j-button-cancel {
+    margin-right: 0.26rem;
+    color: #5f5e64;
+    background-color: #edeff2;
+}
+
+.j-button-confirm {
+    color: #fff;
+    background-color: #2cb7ca;
+}
+
+button[disabled] {
+    opacity: 0.5;
+}
+
+.checkbox {
+    width: 0.4rem;
+    height: 0.4rem;
+    border: 1px solid #ddd;
+    border-radius: 50%;
+    margin-right: 0.2rem;
+    -webkit-appearance: none;
+    background: #fff;
+}
+
+.checkbox:checked {
+    border: 0;
+    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACpElEQVRogc1asa2DMBBlhIyQMpKNxAiMwAiMwAhswAgZgQrOHSVwLhiBERghvwCSwMdgOzYG6aQUhLw7v3u+Z+J5Bq4g724U6pCUTeIznlGGHQHsKcOBAPbT544yntOiTSnUoYnf/Rm0X7YRAXxShgMFfCkH4zkBjE8HTos21QYtCJ/xzDpwAhgTwN4k8OWK4GBlRYK8u1HGc2vA/yfSPaC+GwFPoQ6tVn1vNQoMfgJPyiYxzXXl3ijbSA88YOwa/BzKfUEKDK4C/hOSe8cD6vv1wOOLMhykGvtUtVFPotunDmDsHORBCPth1PoLUmeDStvUKdrUObgxqinE9xRt+q/6TjarZWW79cZFGXaiVQjy7va+0S/byDX4LYUhZZOIvrPoBafKw7BbVFOW1ozn7pt3B/xe9ed4QH33KNSho+pXv4CngC9SNon0zVcDTwFHNTqb/wTwqcX5TQry3KNHmmswfMYzEXif8Uz5mQwHT1r/55MGC+AJ4FPruVIJrJwRhToUbjA74LeATxuoHvg5gSMJFf24bO9YAy+7AgTwuQVAirfrmeULvBHxYDhINTEpm0SYhGgMsQ1+LG4v3f17B09rCyqa2Y0fzzCeq8pXJUpiPB/F6jTwc1GVJ1GNQ6dp3lJSLqkEyjbSG+YYDrKnBA+o77a8xruQunK219yeN/aGNaM0j9NTAvpmXqA2VsHDSigMWMrFdDnt1vY8xtpSep4hUz+qTGXbIG1K+iWMvW7137x1Y27UQtBzHyqd6A80qi/00AsqXfKETuWFh0OjLwSv/KLjSkkcbZjXTYLhoA3eeRI6tBFd86h8Inhzr1m/L+v7xESZQ6m8XCJnARckoketca+paNGmVuiievllG032tKKjtezf1f36u43PeEYAY1PV/gMeU6lGAhyHxgAAAABJRU5ErkJggg==) no-repeat center center;
+    background-size: 100% 100%;
+}
+
+.checkbox.transparent:checked {
+    border: 0;
+    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHBSURBVHgBzZiPcYIwFIeDE7hB6QR1gzqCG2g3cAPtBLqBdoK6Ae0EXCd4bmA3+PW9JlxTJEJCgnx37xQSku9IyL9MeQIg558FxxPHnGNqQvjmOJv45DhlWXZWKWCRFUcBf0p5VsWCC5tzEPpDvcT44SnHDvGRMqe+Mjn0q04FQffFzjKE9FCrFHQzEYZDWuFf801qThuOXA3HzNR5DfRnfS/mlUdmCZEa9u3YnHkAfZQ/EyOzGkjmyPHWcD+HPUYh7SdesbXqOzakF1VijvRs7dfB1wdHvgdJXCMtdZnljbxryfCOccgIh1v9h6CbM3Qa8ZX5rVMyXtoKhB7Bfd5kiIxwUTcSCbW5hq/38JdZwAPVkk4NUlt0l5nB3QJOobYHqKNUbxmYJqMuGaWCWoX23HeMICOUrlHTxbKh4n0kGeEUMjA2LxdUlMXdOnTq2CSQEfKqsAL+7CLLlK4O6lUI9C4itM/YrMRlnAs0w4u6H6+Nd9FtaojN3qkJPYkOsXqsILTtYjGmjeKAUmVnmVrzpehTUqbfYUNNTMYoQn8I1oawN0YspMMX8DgXypQn+DvSe1Z6IJWwj/QkPji+VMCR3g//T7SIqLP6vQAAAABJRU5ErkJggg==) no-repeat center center;
+    background-size: 100% 100%;
+}
+
+.j-button {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    height: 0.72rem;
+    padding: 0 0.2rem;
+    background-color: #f5f6f7;
+    color: #5f5e64;
+    border-radius: 0.08rem;
+}
+
+.j-button-item {
+    position: relative;
+    display: inline-block;
+    color: #171826;
+}
+
+.j-button-item.active {
+    color: #2abed1;
+    background-color: #e8fafd;
+}
+
+.j-button-item.active:after {
+    content: '';
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    width: 0.24rem;
+    height: 0.24rem;
+    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKySURBVHgB7Zg/aNRQHMd/eXfWP6i9omJBhBOXa0W4bK6ni6Murro76Cgu1kF0aysOjnXTyTopLkEcHM8TxIMOHghFQfBAaUtp8/P9Qt+Rpnm99y+XBO6zXJJ7gc83v+S9XwIwZsyY0jIbdB54UFIuBF/mEfFu6QLUX7drR2qVeUC8RfulChDJT7KAbzbFsdIEaLxt19nBSL4eP16KADJ5ovAB9pMnCh1g9n276VVZgAA12RgGBaURdG4OkycKWYGZoHPHQ1hQGVu4CkSrq6I8UagKkDwgzOmcU5gAojUATXIPkGwNdMk1QFproEtuAYYtUKrkEsCVPDHyAC7liZEGUGkNdBnZQqbaGugykgrotAa6ZF4B3dZAlwpkiElrILg2PQVL/nm4ceYE/N3ahu6/jdRxmd1Cpq0BQfKPZs4O9inApY9fU8dWwTGiNUDD1iApT1AAGU4DDFoDRKPWIE2eePb9l/QcZ7eQ7QIlk7//7Qe8+flHep6TAHnJE9azUFJedfYQ2MgTVgGoNWAT7BPfnBbHnl6sw8mJA3C8WoErpyZhdWNTGsJWntM3XshkrQGJxyFBEk3iQJ7oGVWAWgOG8JxvHkr+93tzK7rycZKVcCTPn2B8px1gpzV4IvufJElWFqJx9LAbeU6IuKg1C+m0BrKrnIaJPLHmhVPKFaDWgMvfUx0vq0QSU3l++yyttPxXQ1dim9ZgeUdMVgljeU4I+JB+961A7KvBVTBEVgkbeURY7F5uvqRtaQVcvruKStw+dxqO8Wn28cqquTyfOtdZOCf2Ux9i1y/eriB59MJWt+X3xLE9C1mR5T0vvB6XJ3ZVIIuvBi5Iu/KCQQWy+mpgCz2w617op8kTUQWy/GpgSB8xfIEMFmTiAs/mxdshfX6te9zjM78pPqyx7eVey++rnPgfnLxxiLvERTEAAAAASUVORK5CYII=) no-repeat;
+    background-size: contain;
+}
+
+/* 空状态 配合j-icons中的img-empty和j-img使用 */
+/* 具体使用参考page_ent_follow.html */
+.empty {
+    display: flex;
+    align-items: center;
+    flex-direction: column;
+    flex: 1;
+    padding-top: 1.34rem;
+    width: 100%;
+}
+.empty .empty-img {
+    padding: .2rem;
+    width: 3.2rem;
+    height: 3.2rem;
+    margin-bottom: 0.24rem;
+    background-origin: content-box;
+}
+.empty .empty-text {
+    font-size: .26rem;
+    line-height: .4rem;
+    color: #9B9CA3;
+}
+
+.shiyong_common {
+    width: 5.92rem!important;
+    height: 4.48rem;
+}
+
+.shiyong_common .van-dialog__header{
+    font-size: 0.36rem;
+    font-weight: bold;
+    color: #000000;
+}
+
+.shiyong_common .van-dialog__message--has-title {
+    padding-top: 0.36rem;
+    padding-bottom: 0;
+}
+
+.shiyong_common .van-dialog__message--has-title .shiyong_text{
+    line-height: 0.4rem;
+    font-size: 0.28rem;
+    text-align: justify;
+    color: #5f5e64;
+}
+
+.shiyong_common .van-dialog__message--has-title .shiyong_buy{
+    margin-top: 0.36rem;
+    width: 100%;
+    height: 0.8rem;
+    background: #2ABED1;
+    border-radius: 4px;
+    color: #F7F9FA;
+    font-size: 0.32rem;
+}

BIN
src/web/staticres/common-module/portraitRecord/image/bg-pro.png


BIN
src/web/staticres/common-module/portraitRecord/image/help-p.png


+ 201 - 0
src/web/staticres/common-module/portraitRecord/js/index-wx.js

@@ -0,0 +1,201 @@
+function getShortName (comName) {
+  var areaMap = chinaMapJSON || []
+  var shortname = comName
+  // 1. 循环省份城市进行替换
+  areaMap.forEach(function (item) {
+    var p = item.name.replace(/[省市]/, '')
+    if (shortname.indexOf(p) !== -1) {
+      shortname = shortname.replace(item.name, '').replace(p, '')
+      console.log(p + ' -> \'\'')
+    }
+    item.city.forEach(function (iitem) {
+      var c = iitem.name.replace(/[省市]/, '')
+      if (shortname.indexOf(c) !== -1) {
+        shortname = shortname.replace(iitem.name, '').replace(c, '')
+        console.log(c + ' -> \'\'')
+      }
+      iitem.area.forEach(function (iiitem) {
+        if (shortname.indexOf(iiitem) !== -1) {
+          shortname = shortname.replace(iiitem, '')
+          console.log(iiitem + ' -> \'\'')
+        }
+      })
+    })
+  })
+  var matchRes = shortname.match(/[\u4e00-\u9fa5]{4}/gm)
+  var shortname = matchRes ? matchRes[0] : shortname.slice(0, 4)
+  if (shortname.length < 4) {
+    shortname = shortname.slice(0, 4)
+  }
+  return shortname
+}
+
+var formatter11 = (type, val) => {
+  if (type === 'year') {
+    return `${val}年`;
+  }
+  if (type === 'month') {
+    return `${val}月`;
+  }
+  return val;
+}
+
+var vm = new Vue({
+  el: '#proRecord',
+  delimiters: ['{', '}'],
+  data: function () {
+    return {
+      dValue: '',
+      pShow: false,
+      curDate: '',
+      points: [],
+      years: '',
+      months: '',
+      contracted: false,
+      listInfo: {
+        value: '',
+        pageNum: 0,
+        pageSize: 10,
+        total: -1,
+        loading: true,
+        finished: false
+      },
+      statusEnum: ['存续', '吊销', '停业', '撤销'],
+      statusColors: ['#2CB7CA', '#F5AF5C', '#58A1E7', '#51CEA2'],
+      list: []
+    }
+  },
+  created: function () {
+      var _this = this
+      this.years = new Date().getFullYear()
+      this.months = parseInt(new Date().getMonth() + 1)
+      this.dValue = this.years + '年' + this.months + '月'
+      this.subPoint()
+      this.onLoad()
+  },
+  methods: {
+    usedHised() {
+      let _this = this
+      _this.pShow = true
+    },
+    subPoint() {
+      $.ajax({
+        url: '/bigmember/portrait/subVipPortrait/usage',
+        type: 'POST',
+        contentType: 'application/x-www-form-urlencoded',
+        data: '',
+        dataType: 'json'
+      }).done(res => {
+        if (res.error_code == 0) {
+          this.points = res.data
+          if (res.data.total == 0) {
+            this.contracted = true
+            this.$dialog.alert({
+              message: '每订购1个省,可查看50个企业画像/月。 您订购全国的企业画像查看权限已用完,如需更多权益,请联系客服。',
+              className: 'pro-log',
+              messageAlign: 'left',
+              confirmButtonColor: '#2ABED1',
+              confirmButtonText: '我知道了'
+            })
+          }
+        }
+      })
+    },
+    onLoad () {
+      this.ajaxEntList().done(this.doFormatList.bind(this))
+    },
+    doFormatList (r) {
+      if (r && r.error_msg == '' && r.data) {
+        this.listInfo.pageNum++
+        if (this.listInfo.pageNum === 1) {
+          if (r.data.total || r.data.total === 0) {
+            this.listInfo.total = r.data.total
+            this.showUpTip = false
+          } else {
+            this.showUpTip = true
+            this.listInfo.finished = true
+          }
+        }
+
+        if (r.data.list) {
+          var _this = this
+          this.list = this.list.concat(r.data.list.map(function (v) {
+            return {
+              name: v.company_name,
+              abbr: getShortName(v.company_name),
+              color: _this.statusColors[Math.floor(Math.random() * _this.statusColors.length)],
+              legal: v.legal_person,
+              money: parseInt(v.capital),
+              address: v.company_address,
+              _id: v.id,
+              status: _this.statusEnum.indexOf(v.company_status) || 0,
+              checked: false
+            }
+          }))
+        }
+
+        this.listInfo.loading = false
+        if (this.listInfo.total !== -1 && this.listInfo.total <= this.list.length) {
+          this.listInfo.finished = true
+        }
+      }
+    },
+    getDatas() {
+      return {
+        year: this.years,
+        month: this.months,
+        pageSize: this.listInfo.pageSize,
+        pageNum: this.listInfo.pageNum
+      }
+    },
+    ajaxEntList() {
+      return $.ajax({
+        url: '/bigmember/portrait/subVipPortrait/record',
+        type: 'POST',
+        contentType: 'application/x-www-form-urlencoded',
+        data: this.getDatas(),
+        dataType: 'json'
+      })
+    },
+    helpTiped() {
+      let _this = this
+      this.$dialog.alert({
+        message: '每订购1个省,可查看50个企业画像/月。 您当前订阅了' + `<span style="color:#2ABED1">${_this.points.provin}</span>` + '个省,如需更多权益,请订购更多省份。',
+        className: 'pro-log',
+        messageAlign: 'left',
+        confirmButtonColor: '#2ABED1',
+        confirmButtonText: '前往升级'
+      }).then(() => {
+        location.href = '/front/vipsubscribe/toSubVipSetPage'
+      })
+    },
+    confirmed(val) {
+      this.years = val.getFullYear()
+      this.months = val.getMonth() + 1
+      this.listInfo.pageNum = 0
+      this.list = []
+      this.onLoad()
+      this.dValue = this.years + '年' + this.months + '月'
+      this.pShow = false
+    },
+    canceled() {
+      this.pShow = false
+    },
+    ChangeDate (time){
+        var d = new Date(time)
+        var Y = d.getFullYear() + '年'
+        var M = (d.getMonth()+1 < 10 ? '0'+(d.getMonth()+1) : d.getMonth()+1) + '月'
+        return (Y + M).replace(/^\s+|\s+$/g,"")
+    },
+    detailed(ids) {
+        location.href = '/weixin/frontPage/collection/sess/ent_portrait?eId=' + ids
+    },
+    contractPerson() {
+      location.href = '/big/wx/page/customer'
+    },
+    setBook() {
+      location.href = '/front/vipsubscribe/toSubVipSetPage'
+    }
+  }
+})
+

+ 201 - 0
src/web/staticres/common-module/portraitRecord/js/index.js

@@ -0,0 +1,201 @@
+function getShortName (comName) {
+  var areaMap = chinaMapJSON || []
+  var shortname = comName
+  // 1. 循环省份城市进行替换
+  areaMap.forEach(function (item) {
+    var p = item.name.replace(/[省市]/, '')
+    if (shortname.indexOf(p) !== -1) {
+      shortname = shortname.replace(item.name, '').replace(p, '')
+      console.log(p + ' -> \'\'')
+    }
+    item.city.forEach(function (iitem) {
+      var c = iitem.name.replace(/[省市]/, '')
+      if (shortname.indexOf(c) !== -1) {
+        shortname = shortname.replace(iitem.name, '').replace(c, '')
+        console.log(c + ' -> \'\'')
+      }
+      iitem.area.forEach(function (iiitem) {
+        if (shortname.indexOf(iiitem) !== -1) {
+          shortname = shortname.replace(iiitem, '')
+          console.log(iiitem + ' -> \'\'')
+        }
+      })
+    })
+  })
+  var matchRes = shortname.match(/[\u4e00-\u9fa5]{4}/gm)
+  var shortname = matchRes ? matchRes[0] : shortname.slice(0, 4)
+  if (shortname.length < 4) {
+    shortname = shortname.slice(0, 4)
+  }
+  return shortname
+}
+
+var formatter11 = (type, val) => {
+  if (type === 'year') {
+    return `${val}年`;
+  }
+  if (type === 'month') {
+    return `${val}月`;
+  }
+  return val;
+}
+
+var vm = new Vue({
+  el: '#proRecord',
+  delimiters: ['{', '}'],
+  data: function () {
+    return {
+      dValue: '',
+      pShow: false,
+      curDate: '',
+      points: [],
+      years: '',
+      months: '',
+      contracted: false,
+      listInfo: {
+        value: '',
+        pageNum: 0,
+        pageSize: 10,
+        total: -1,
+        loading: true,
+        finished: false
+      },
+      statusEnum: ['存续', '吊销', '停业', '撤销'],
+      statusColors: ['#2CB7CA', '#F5AF5C', '#58A1E7', '#51CEA2'],
+      list: []
+    }
+  },
+  created: function () {
+      var _this = this
+      this.years = new Date().getFullYear()
+      this.months = parseInt(new Date().getMonth() + 1)
+      this.dValue = this.years + '年' + this.months + '月'
+      this.subPoint()
+      this.onLoad()
+  },
+  methods: {
+    usedHised() {
+      let _this = this
+      _this.pShow = true
+    },
+    subPoint() {
+      $.ajax({
+        url: '/bigmember/portrait/subVipPortrait/usage',
+        type: 'POST',
+        contentType: 'application/x-www-form-urlencoded',
+        data: '',
+        dataType: 'json'
+      }).done(res => {
+        if (res.error_code == 0) {
+          this.points = res.data
+          if (res.data.total == 0) {
+            this.contracted = true
+            this.$dialog.alert({
+              message: '每订购1个省,可查看50个企业画像/月。 您订购全国的企业画像查看权限已用完,如需更多权益,请联系客服。',
+              className: 'pro-log',
+              messageAlign: 'left',
+              confirmButtonColor: '#2ABED1',
+              confirmButtonText: '我知道了'
+            })
+          }
+        }
+      })
+    },
+    onLoad () {
+      this.ajaxEntList().done(this.doFormatList.bind(this))
+    },
+    doFormatList (r) {
+      if (r && r.error_msg == '' && r.data) {
+        this.listInfo.pageNum++
+        if (this.listInfo.pageNum === 1) {
+          if (r.data.total || r.data.total === 0) {
+            this.listInfo.total = r.data.total
+            this.showUpTip = false
+          } else {
+            this.showUpTip = true
+            this.listInfo.finished = true
+          }
+        }
+
+        if (r.data.list) {
+          var _this = this
+          this.list = this.list.concat(r.data.list.map(function (v) {
+            return {
+              name: v.company_name,
+              abbr: getShortName(v.company_name),
+              color: _this.statusColors[Math.floor(Math.random() * _this.statusColors.length)],
+              legal: v.legal_person,
+              money: parseInt(v.capital),
+              address: v.company_address,
+              _id: v.id,
+              status: _this.statusEnum.indexOf(v.company_status) || 0,
+              checked: false
+            }
+          }))
+        }
+
+        this.listInfo.loading = false
+        if (this.listInfo.total !== -1 && this.listInfo.total <= this.list.length) {
+          this.listInfo.finished = true
+        }
+      }
+    },
+    getDatas() {
+      return {
+        year: this.years,
+        month: this.months,
+        pageSize: this.listInfo.pageSize,
+        pageNum: this.listInfo.pageNum
+      }
+    },
+    ajaxEntList() {
+      return $.ajax({
+        url: '/bigmember/portrait/subVipPortrait/record',
+        type: 'POST',
+        contentType: 'application/x-www-form-urlencoded',
+        data: this.getDatas(),
+        dataType: 'json'
+      })
+    },
+    helpTiped() {
+      let _this = this
+      this.$dialog.alert({
+        message: '每订购1个省,可查看50个企业画像/月。 您当前订阅了' + `<span style="color:#2ABED1">${_this.points.provin}</span>` + '个省,如需更多权益,请订购更多省份。',
+        className: 'pro-log',
+        messageAlign: 'left',
+        confirmButtonColor: '#2ABED1',
+        confirmButtonText: '前往升级'
+      }).then(() => {
+        location.href = '/jyapp/vipsubscribe/toSubVipSetPage'
+      })
+    },
+    confirmed(val) {
+      this.years = val.getFullYear()
+      this.months = val.getMonth() + 1
+      this.listInfo.pageNum = 0
+      this.list = []
+      this.onLoad()
+      this.dValue = this.years + '年' + this.months + '月'
+      this.pShow = false
+    },
+    canceled() {
+      this.pShow = false
+    },
+    ChangeDate (time){
+        var d = new Date(time)
+        var Y = d.getFullYear() + '年'
+        var M = (d.getMonth()+1 < 10 ? '0'+(d.getMonth()+1) : d.getMonth()+1) + '月'
+        return (Y + M).replace(/^\s+|\s+$/g,"")
+    },
+    detailed(ids) {
+        location.href = '/jyapp/big/page/ent_portrait?eId=' + ids
+    },
+    contractPerson() {
+      location.href = '/jyapp/free/customer'
+    },
+    setBook() {
+      location.href = '/jyapp/vipsubscribe/toSubVipSetPage'
+    }
+  }
+})
+

+ 35 - 1
src/web/staticres/css/dev2/newBidSearch.css

@@ -1,4 +1,38 @@
-
+/* 搜索范围 */
+.searchSpace{
+  padding-top: 16px;
+}
+.searchSpace .search-list{
+  display: inline-block;
+  margin-right: 16px;
+  line-height: 22px;
+  color: #1D1D1D;
+  cursor: pointer;
+}
+.searchSpace .search-list>input[type="checkbox"]{
+  width: 14px;
+  float: left;
+  height: 14px;
+  margin-top: 4px;
+  margin-right: 8px;
+  border: 1px solid #E0E0E0;
+  border-radius: 2px;
+}
+.searchSpace .search-list>input[type="checkbox"]:checked{
+  background: url(/images/biddingSearch/icon-checked.png) no-repeat center;
+  background-size: contain;
+  border: 0;
+}
+.searchSpace .search-list label{
+  float: left;
+}
+.searchSpace .search-list .icon-vip{
+  float: left;
+  display: inline-block;
+  width: 38px;
+  height: 18px;
+  margin-left: 8px;
+}
 /* 高级筛选 */
 .advanced-filter{
   padding: 12px 0px 16px;

+ 5 - 1
src/web/staticres/css/subscribe.css

@@ -128,7 +128,7 @@
 /* 订阅模式对比板块 */
 .sub-contrast {
     width: 100%;
-    min-height: 850px;
+    min-height: 1020px;
     margin-top: 79px;
 }
 
@@ -691,4 +691,8 @@
     position: absolute;
     top: 20px;
     right: 20px;
+}
+.center-left .ent-many {
+    justify-content: flex-start;
+    padding-left: 35px;
 }

+ 130 - 0
src/web/staticres/frontRouter/pc/seeHistory/css/index-pc.css

@@ -0,0 +1,130 @@
+.flex {
+    display: flex;
+    align-items: center;
+}
+.see-container {
+    line-height: 1;
+    padding-top: 64px;
+    padding-bottom: 70px;
+    min-height: calc(100vh - 364px);
+}
+.see-header {
+    flex-direction: initial;
+    justify-content: space-between;
+    margin: 48px auto 28px auto;
+}
+.tab-title {
+    font-size: 24px;
+    line-height: 36px;
+}
+.l-tabs {
+    flex-direction: initial;
+}
+.l-tabs .tips {
+    border: 1px solid #ececec;
+    border-radius: 15px;
+    font-size: 14px;
+    color: #686868;
+    line-height: 22px;
+    margin-left: 16px;
+    padding: 2px 8px;
+}
+.l-tabs .tips span {
+    color: #2CB7CA;
+}
+.r-tabs .r-word {
+    color: #686868;
+    line-height: 22px;
+    font-size: 14px;
+}
+.r-tabs .date-class, .r-tabs .date-class .el-input__inner {
+    width: 120px;
+    height: 28px;
+}
+.r-tabs .date-class .el-input__inner {
+    padding: 0 8px 0 12px;
+}
+.r-tabs .date-class .el-input__prefix{
+    display: none;
+}
+.r-tabs .date-class .el-input__suffix {
+    top: -5px;
+}
+.see-content .lists {
+    flex-direction: initial;
+    align-items: flex-start;
+    padding: 18px 16px;
+    box-shadow: 0px -1px 0px 0px rgba(0,0,0,0.05) inset;
+}
+.see-content .r-conts {
+    flex-direction: column;
+}
+.see-content .lists .words-img {
+    width: 60px;
+    background: #2cb7ca;
+    border-radius: 4px;
+    padding: 10px 8px;
+    text-align: center;
+    cursor: pointer;
+}
+.see-content .lists .words-img span {
+    display: inline-block;
+    font-size: 18px;
+    color: #ffffff;
+}
+.see-content .lists .words-img .xin-xi {
+    margin-top: 4px;
+}
+.see-content .lists .r-conts {
+    align-items: flex-start;
+    margin-left: 32px;
+}
+.see-content .lists .r-conts h3 {
+    color: #1d1d1d;
+    line-height: 28px;
+    font-size: 18px;
+    cursor: pointer;
+}
+.see-content .lists .r-conts h3 span {
+    line-height: 20px;
+    background: rgba(44,183,202,0.08);
+    border: 1px solid #2cb7ca;
+    border-radius: 4px;
+    font-size: 12px;
+    color: #2cb7ca;
+    padding: 0 8px;
+    margin-left: 12px;
+}
+.see-content .lists .r-conts .cont-tips {
+    font-size: 14px;
+    line-height: 22px;
+    color: #999;
+    margin: 12px 0 8px 0;
+}
+.see-content .lists .r-conts .di-zhi {
+    margin: 0;
+}
+.see-content .lists .r-conts .cont-tips span {
+    color: #686868;
+    margin-right: 32px;
+}
+.see-content .lists .r-conts h3 .status-0 {
+    background: rgba(44,183,202,0.08);
+    border-color: #2cb7ca;
+    color: #2cb7ca;
+}
+.see-content .lists .r-conts h3 .status-1 {
+    background: rgba(255,58,32,0.08);
+    border-color: #ff3a20;
+    color: #ff3a20;
+}
+.see-content .lists .r-conts h3 .status-2 {
+    background: rgba(255,159,64,0.08);
+    border-color: #ff9f40;
+    color: #ff9f40;
+}
+.see-content .lists .r-conts h3 .status-3 {
+    background: #f7f9fc;
+    border-color: #aaa;
+    color: #686868;
+}

+ 124 - 0
src/web/staticres/frontRouter/pc/seeHistory/js/index-pc.js

@@ -0,0 +1,124 @@
+function getShortName (comName) {
+    var areaMap = chinaMapJSON || []
+    var shortname = comName
+    // 1. 循环省份城市进行替换
+    areaMap.forEach(function (item) {
+        var p = item.name.replace(/[省市]/, '')
+        if (shortname.indexOf(p) !== -1) {
+        shortname = shortname.replace(item.name, '').replace(p, '')
+        console.log(p + ' -> \'\'')
+        }
+        item.city.forEach(function (iitem) {
+        var c = iitem.name.replace(/[省市]/, '')
+        if (shortname.indexOf(c) !== -1) {
+            shortname = shortname.replace(iitem.name, '').replace(c, '')
+            console.log(c + ' -> \'\'')
+        }
+        iitem.area.forEach(function (iiitem) {
+            if (shortname.indexOf(iiitem) !== -1) {
+            shortname = shortname.replace(iiitem, '')
+            console.log(iiitem + ' -> \'\'')
+            }
+        })
+        })
+    })
+    var matchRes = shortname.match(/[\u4e00-\u9fa5]{4}/gm)
+    var shortname = matchRes ? matchRes[0] : shortname.slice(0, 4)
+    if (shortname.length < 4) {
+        shortname = shortname.slice(0, 4)
+    }
+    return shortname
+}
+var vm = new Vue({
+    el: '.see-container',
+    delimiters: ['{', '}'],
+    data () {
+        return {
+            dateVal: '',
+            years: '',
+            months: '',
+            points: [],
+            statusEnum: ['存续', '吊销', '注销', '撤销'],
+            statusColors: ['#2CB7CA', '#F5AF5C', '#58A1E7', '#51CEA2'],
+            listInfo: {
+                value: '',
+                pageNum: 0,
+                pageSize: 10,
+                total: -1,
+                loading: true,
+                finished: false
+            },
+            seeList: []
+        }
+    },
+    created() {
+        this.years = new Date().getFullYear()
+        this.months = parseInt(new Date().getMonth() + 1)
+        this.dateVal = this.years + '年' + this.months + '月'
+        this.subPoint()
+        this.subRecord()
+    },
+    methods: {
+        subPoint() {
+            $.ajax({
+              url: '/bigmember/portrait/subVipPortrait/usage',
+              type: 'POST',
+              contentType: 'application/x-www-form-urlencoded',
+              data: '',
+              dataType: 'json'
+            }).done(res => {
+              if (res.error_code == 0) {
+                this.points = res.data
+              }
+            })
+        },
+        getDatas() {
+            return {
+                year: this.years,
+                month: this.months,
+                pageSize: this.listInfo.pageSize,
+                pageNum: this.listInfo.pageNum
+            }
+        },
+        subRecord() {
+            $.ajax({
+                url: '/bigmember/portrait/subVipPortrait/record',
+                type: 'POST',
+                contentType: 'application/x-www-form-urlencoded',
+                data: this.getDatas(),
+                dataType: 'json'
+            }).done(res => {
+                var _this = this
+                if (res.error_code == 0 && res.data.list) {
+                    res.data.list.forEach(v => {
+                        const arrs = {
+                            name: v.company_name,
+                            abbr: getShortName(v.company_name),
+                            color: _this.statusColors[Math.floor(Math.random() * _this.statusColors.length)],
+                            legal: v.legal_person,
+                            money: parseInt(v.capital),
+                            phone: v.company_phone,
+                            time: v.establishStamp,
+                            address: v.company_address,
+                            _id: v.id,
+                            status: _this.statusEnum.indexOf(v.company_status) || 0,
+                            statusWord: v.company_status,
+                            checked: false
+                        }
+                        this.seeList.push(arrs)
+                    })
+                }
+            })
+        },
+        dateHandler(val) {
+            this.years = val.getFullYear()
+            this.months = val.getMonth() + 1
+            this.listInfo.pageNum = 0
+            this.seeList = []
+            this.subRecord()
+        },
+        detailed(ids) {
+            window.open('/swordfish/page_big_pc/svip/ent_ser_portrait/' + ids, '_blank')
+        }
+    }
+})

+ 6 - 6
src/web/staticres/js/wxSupersearch.js

@@ -1104,11 +1104,11 @@ var SuperSearch = {
     // SuperSearch.reqParam.publishtime=SuperSearch.setPublishtime();
 
     //全文or标题
-    if($(".newdialog .tab-box .sub-search-title").find("li.active").attr('dataVal')=="searchtitle"){
-      SuperSearch.reqParam.selectType="title";
-    }else{
-      SuperSearch.reqParam.selectType="all";
-    }
+    // if($(".newdialog .tab-box .sub-search-title").find("li.active").attr('dataVal')=="searchtitle"){
+    //   SuperSearch.reqParam.selectType="title";
+    // }else{
+    //   SuperSearch.reqParam.selectType="all";
+    // }
     //采购单位行业
     var buyerclasstypes = "";
     $("#supersearchPage .choose_industry .industry_item.active").each(function(){
@@ -1237,7 +1237,7 @@ var SuperSearch = {
     SuperSearch.noMoreCache = false;
     SuperSearch.requesting = true;
     if(nw=="N"){
-      SuperSearch.reqParam.selectType ="title";
+      // SuperSearch.reqParam.selectType ="title";
       $(".newdialog .sub-search-title").find("li").removeClass("active");
       $(".selected-export .options .search-title").find("em").text("标题搜索");
       $(".newdialog .sub-search-title").find("li[dataval='searchtitle']").addClass("active");

+ 86 - 0
src/web/templates/frontRouter/pc/seeHistory/sess/index.html

@@ -0,0 +1,86 @@
+
+<html lang="zh-cn">
+	<head>
+		<title>历史查看记录_{{Msg "seo" "qfw.swordfishsl.title"}}</title>
+		<meta name="Keywords" content="{{Msg "seo" "qfw.swordfishsl.key"}}"/>
+		<meta name="Description" content="{{Msg "seo" "qfw.swordfishsl.description"}}"/>
+		<meta name="renderer" content="webkit">
+		<meta content="telephone=no" name="format-detection"/>
+        <meta content="历史查看记录" theme="light" name="enable-header"/>
+		{{include "/common/pnc.html"}}
+		<link href="{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
+		<link href="{{Msg "seo" "cdn"}}/css/dev2/reset_pc.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
+		<link href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
+
+        <script src="{{Msg "seo" "cdn"}}/js/jquery.cookie.js"></script>
+		<script src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
+        
+        <link href="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/theme-chalk/index.css" rel="stylesheet" />
+        <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/css/ele-reset.css?v={{Msg "seo" "version"}}'>
+        <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/css/selector/selector.css?v={{Msg "seo" "version"}}'>
+        <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/frontRouter/pc/seeHistory/css/index-pc.css?v={{Msg "seo" "version"}}'>
+	</head>
+
+	<body>
+	{{include "/common/pchead.html"}}
+	<section class="see-container" v-cloak >
+        <div class="see-header flex w">
+            <div class="l-tabs flex">
+                <h3 class="tab-title">历史查看记录</h3>
+                <div class="tips">
+                    当月已使用:<span>{points.usage?points.usage:0}</span>/{points.total?points.total:0}
+                </div>
+            </div>
+            <div class="l-tabs r-tabs">
+                <span class="r-word">选择月份</span>
+                <el-date-picker
+                    class="date-class"
+                    v-model="dateVal"
+                    type="month"
+                    format="yyyy年MM月"
+                    @change="dateHandler"
+                    placeholder="请选择月份"
+                    :clearable="false"
+                    :editable="false">
+                </el-date-picker>
+            </div>
+        </div>
+        <div class="see-content w" v-show="seeList.length !== 0">
+            <div class="lists flex" v-for="item in seeList" :key="item._id">
+                <div class="words-img" :style="{'background-color': item.color}" @click="detailed(item._id)">
+                    <span>{item.abbr.substring(0,2)}</span><span class="xin-xi">{item.abbr.substring(2,4)}</span>
+                </div>
+                <div class="r-conts flex">
+                    <h3 class="flex" @click="detailed(item._id)">{item.name}<span v-show="item.status >= 0" :class="'status-' + item.status">{item.statusWord}</span></h3>
+                    <div class="cont-tips">
+                        法定代表人:<span>{item.legal}</span>注册资本:<span>{item.money}万元</span>成立日期:<span>{item.time}</span>联系方式:<span>{item.phone}</span>
+                    </div>
+                    <div class="cont-tips di-zhi">地址:<span>{item.address}</span></div>
+                </div>
+            </div>
+        </div>
+        <div class="no-data" v-show="seeList.length === 0"><el-image src="/images/pc_12.png"></el-image><div class="tip-text"><p>暂无数据</p></div></div>
+    </section>
+
+    {{include "/common/pcbottom.html"}}
+    {{include "/common/baiducc.html"}}
+
+    <script>
+        haslogin({{.T.logid}})
+        function baiduEvent(name) {
+          try {
+            console.log(name, 'name')
+            _hmt.push(['_trackEvent', '超级订阅-pc', 'click', name]);
+          } catch (e) {
+            console.log('未初始化百度统计')
+          }
+        }
+    </script>
+    <script src="//cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.js"></script>
+    <script src="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/index.js"></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/selector/js/china_area.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/frontRouter/pc/seeHistory/js/index-pc.js?v={{Msg "seo" "version"}}'></script>
+</body>
+
+</html>
+

+ 102 - 0
src/web/templates/frontRouter/wx/portraitRecord/sess/index.html

@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+    <title>企业画像记录</title>
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/reset-css@4.0.1/reset.min.css />
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/vant@2.11.1/lib/index.css />
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/vant@2.11.1/lib/icon/local.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/portraitRecord/css/index.css?v={{Msg "seo" "version"}}' />
+</head>
+<body>
+  <div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main portraited" id="proRecord" v-cloak>
+      <div class="j-container">
+        <div class="j-main">
+          <div class="t-bg flex">
+            <div class="nums">
+              <span>{points.total}</span>个
+              <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/portraitRecord/image/help-p.png?v={{Msg "seo" "version"}}' @click="helpTiped" alt="">
+            </div>
+            <div class="btns flex">
+              <span>当月企业画像剩余数</span>
+              <van-button round type="primary" v-if="contracted" @click="contractPerson">联系客服</van-button>
+              <van-button round type="primary" v-else @click="setBook">订阅设置</van-button>
+            </div>
+          </div>
+          <div class="p-date">
+            <div class="d-box flex">
+              使用记录
+              <van-field v-model="dValue" @click="usedHised" placeholder="显示图标" right-icon="play" readonly/> 
+            </div>
+            <div class="word-tips">
+              当前已使用:<span>{points.usage}个</span>
+            </div>
+          </div>
+          <!-- 日期弹出框 -->
+          <van-popup v-model:show="pShow" round position="bottom">
+            <van-datetime-picker
+              v-model="curDate"
+              type="year-month"
+              title="选择日期"
+              :formatter="formatter11"
+              @confirm="confirmed"
+              @cancel="canceled"
+            />
+          </van-popup>
+          <div class="c-list">
+            <van-list
+              v-model="listInfo.loading"
+              :finished="listInfo.finished"
+              finished-text=""
+              @onLoad="onLoad"
+            >
+                <div class="ent-search-item" v-for="(item, i) in list" :key="item._id" @click="detailed(item._id)">
+                    <div class="ent-info-top">
+                        <div class="ent-info-head" :style="{'background-color': item.color}">{item.abbr}</div>
+                        <div class="ent-info-keep">
+                            <div class="ent-row">
+                                <div class="ent-name van-ellipsis">{item.name}</div>
+                                <div class="fill-icon-box" style="display: none">
+                                    <i class="j-icon base-icon icon-no-favorite"></i>
+                                </div>
+                            </div>
+                            <div class="ent-more">
+                                <div v-if="item.legal">法定代表人: <span>{item.legal}</span></div>
+                                <div v-if="item.money">注册资本: <span>{item.money}万元</span></div>
+                            </div>
+                            <div class="ent-line-box"></div>
+                        </div>
+                    </div>
+                    <div class="ent-info-bottom ent-row" v-show="item.status >= 0 || item.address">
+                        <div class="ent-info-status-box">
+                            <span class="ent-info-status" v-show="item.status >= 0" :class="'status-' + item.status">{statusEnum[item.status]}</span>
+                        </div>
+                        <div  class="ent-row ent-address"  v-show="item.address">
+                            <div class="van-multi-ellipsis--l2">{item.address}</div>
+                            <i class="j-icon base-icon icon-address"></i>
+                        </div>
+
+                    </div>
+                </div>
+            </van-list>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <!--S-当前页面的资源-->
+  <script src=//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js></script>
+  <script src=//cdn.jsdelivr.net/npm/vant@2.11.1/lib/vant.min.js></script>
+  <script src=//cdn.jsdelivr.net/npm/zepto@1.2.0/dist/zepto.min.js></script>
+  <!--E-当前页面的资源-->
+  {{include "/big-member/commonjs.html"}}
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/selector/js/china_area.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/portraitRecord/js/index-wx.js?v={{Msg "seo" "version"}}'></script>
+  {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 6 - 0
src/web/templates/pc/subscribe_new.html

@@ -102,6 +102,8 @@
                     <li>订阅区域</li>
                     <li class="ent-portrait">企业画像<span class="icon-new"></span></li>
                     <li class="ent-search">企业搜索<span class="icon-new"></span></li>
+                    <li class="ent-portrait ent-many">标讯高级搜索<span class="icon-new"></span></li>
+                    <li class="ent-search">标讯收藏<span class="icon-new"></span></li>
                     <li>价格</li>
                 </ul>
             </div>
@@ -116,6 +118,8 @@
                     <li>订阅区域精确到省</li>
                     <li class="ent-portrait">—</li>
                     <li class="ent-search">—</li>
+                    <li class="ent-portrait">—</li>
+                    <li class="ent-search">—</li>
                     <li><i class="btn-free scfree">免费</i></li>
                 </ul>
             </div>
@@ -133,6 +137,8 @@
                     <li>订阅区域<span>精确到地级市</span>,只看你最关注的</li>
                     <li class="ent-portrait">对企业进行全景透视,提供<span>企业基本信息,中标项目分析、重点客户</span>等。每购买一个省,增加50个企业画像,最多可查看800个企业画像。</li>
                     <li class="ent-search">搜索<span>全国超七千万企业</span>,获取企业情报信息,全方位监控竞争对手或用户关注的企业。</li>
+                    <li class="ent-portrait">支持按<span>采购单位类型、采购单位联系方式、中标企业联系方式</span>搜索,搜索招标采购项目更精准。</li>
+                    <li class="ent-search">关注的项目信息,一键收藏。<span>支持创建收藏标签、标签分类检索</span>,重要信息不遗漏,只看你最关注的。</li>
                     <li>低至38元/月
                         <a href="#" id="pc-compare-vip-free7days" class="On-trial vip-btn" data-toggle="modal"
                            data-target=".bs-example-modal-sm">立即使用</a>

+ 40 - 0
src/web/templates/pc/supsearch.html

@@ -793,6 +793,46 @@ $(function(){
 		</div>
 		<!--头部功能-->
 		<div class="searchTender w">
+      <!--搜索范围:-->
+			<div class="searchSpace clearfix">
+				<div class="leftTitle">
+					搜索范围:
+				</div>
+				<div class="search-content">
+          <span class="search-list">
+            <input type="checkbox" name="" id="all-space">
+            <label for="all-space">全部</label>
+          </span>
+          <span class="search-list">
+            <input type="checkbox" name="" id="title-space">
+            <label for="title-space">标题</label>
+          </span>
+          <span class="search-list">
+            <input type="checkbox" name="" id="main-space">
+            <label for="main-space">正文</label>
+          </span>
+          <span class="search-list">
+            <input type="checkbox" name="" id="buyer-space">
+            <label for="buyer-space">采购单位</label>
+            <img class="icon-vip" src="/images/biddingSearch/VIP.png" alt="">
+          </span>
+          <span class="search-list">
+            <input type="checkbox" name="" id="bid-space">
+            <label for="bid-space">中标企业</label>
+            <img class="icon-vip" src="/images/biddingSearch/VIP.png" alt="">
+          </span>
+          <span class="search-list">
+            <input type="checkbox" name="" id="agency-space">
+            <label for="agency-space">招标代理机构</label>
+            <img class="icon-vip" src="/images/biddingSearch/VIP.png" alt="">
+          </span>
+          <span class="search-list">
+            <input type="checkbox" name="" id="accessory-space">
+            <label for="accessory-space">附件</label>
+            <img class="icon-vip" src="/images/biddingSearch/VIP.png" alt="">
+          </span>
+				</div>
+			</div>
 			<!--行业-->
 			<div class="industry">
 				<div class="leftTitle">

+ 4 - 2
src/web/templates/weixin/search/mainSearch.html

@@ -908,7 +908,8 @@
     window.jyUserPower = {
       entniche: false,
       member: false,
-      vip: 0
+      vip: 0,
+      isOld: false
     }
     $.ajax({
       url: '/publicapply/bidcoll/power',
@@ -918,7 +919,8 @@
           window.jyUserPower = {
             entniche: r.data.entniche,
             member: r.data.member,
-            vip: r.data.vip
+            vip: r.data.vip,
+            isOld: r.data.isOld
           }
         }
     })

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно