Prechádzať zdrojové kódy

Merge branch 'dev2.0' of 192.168.3.17:qmx/jy into dev2.0

liuxiaolu 8 rokov pred
rodič
commit
c9c85bdfa8
29 zmenil súbory, kde vykonal 235 pridanie a 114 odobranie
  1. 33 0
      src/jfw/front/entserach.go
  2. 6 6
      src/jfw/front/front.go
  3. 8 0
      src/jfw/front/supsearch.go
  4. 1 1
      src/jfw/jylabutil/entsearch.go
  5. 15 0
      src/jfw/modules/behaviorcollect/README.md
  6. 4 1
      src/jfw/modules/behaviorcollect/src/config.json
  7. 10 8
      src/jfw/modules/behaviorcollect/src/main.go
  8. 8 91
      src/jfw/modules/behaviorcollect/src/parse/accesslog.go
  9. 90 0
      src/jfw/modules/behaviorcollect/src/util/util.go
  10. 0 0
      src/jfw/modules/pushproject/src/config.json
  11. 0 0
      src/jfw/modules/pushproject/src/config/config.go
  12. 0 0
      src/jfw/modules/pushproject/src/filterdata/filterdata.go
  13. 0 0
      src/jfw/modules/pushproject/src/followpush/config.json
  14. 0 0
      src/jfw/modules/pushproject/src/followpush/datastruct.go
  15. 0 0
      src/jfw/modules/pushproject/src/followpush/followpush.go
  16. 0 0
      src/jfw/modules/pushproject/src/followpush/followpush_test.go
  17. 0 0
      src/jfw/modules/pushproject/src/followpush/push.go
  18. 0 0
      src/jfw/modules/pushproject/src/listdb/listdb.go
  19. 0 0
      src/jfw/modules/pushproject/src/main.go
  20. 0 0
      src/jfw/modules/pushproject/src/main_test.go
  21. 0 0
      src/jfw/modules/pushproject/src/rpcpush/findData.go
  22. 0 0
      src/jfw/modules/pushproject/src/rpcpush/rpcpush.go
  23. 0 0
      src/jfw/modules/pushproject/src/timetask/clearredis.go
  24. 0 0
      src/jfw/modules/pushproject/src/tools/mongo.go
  25. 0 0
      src/jfw/modules/pushproject/src/tools/tools.go
  26. 0 0
      src/jfw/modules/pushproject/src/weixinrpc/weixinrpc.go
  27. 7 2
      src/web/staticres/css/dev2/biddingSearch.css
  28. 31 0
      src/web/staticres/css/dev2/biddingSearch1.css
  29. 22 5
      src/web/templates/pc/supsearch.html

+ 33 - 0
src/jfw/front/entserach.go

@@ -0,0 +1,33 @@
+package front
+
+import (
+	//"fmt"
+	//"jfw/config"
+	"log"
+	//"math/rand"
+	//"qfw/util"
+	//"time"
+
+	"github.com/go-xweb/xweb"
+)
+
+type Entsearch struct {
+	*xweb.Action
+
+	bidsearchforent xweb.Mapper `xweb:"/jylab/bidsearchforent"`
+}
+
+func init() {
+	xweb.AddAction(&Entsearch{})
+}
+
+func (p *Entsearch) Bidsearchforent() error {
+	//defer util.Catch()
+	//var shareid = p.GetString("id")
+	//if len(shareid) == 0 {
+	//	shareid = fmt.Sprintf("%s%d", config.Seoconfig["jysslby"].(string)+fmt.Sprintf("%d", time.Now().UnixNano())[8:14], rand.Intn(9))
+	//}
+	//p.T["shareid"] = se.EncodeString(shareid)
+	log.Println("-------中标企业搜索:")
+	return p.Render("/pc/biddingsearch_enterprise.html", &p.T)
+}

+ 6 - 6
src/jfw/front/front.go

@@ -88,7 +88,7 @@ type Front struct {
 	historypushPaging xweb.Mapper `xweb:"/swordfish/historypush/paging"` //历时推送记录--分页
 	aboutus           xweb.Mapper `xweb:"/front/aboutus.html"`           //关于我们
 	busicooperation	  xweb.Mapper `xweb:"/front/busicooperation.html"`   //商务合作
-	bidsearchforent	  xweb.Mapper `xweb:"/front/bidsearchforent.html"`   //中标企业搜索
+	//bidsearchforent	  xweb.Mapper `xweb:"/front/bidsearchforent.html"`   //中标企业搜索
 
 	/********************wxkeyset:v1.8**************************/
 	wxrssset        xweb.Mapper `xweb:"/swordfish/page"`
@@ -857,11 +857,11 @@ func (f *Front) Busicooperation() error {
 }
 
 //中标企业搜索
-func (f *Front) Bidsearchforent() error {
-
-	content, _ := f.Render4Cache("/pc/biddingsearch_enterprise.html", &f.T)
-	return f.SetBody(content)
-}
+//func (f *Front) Bidsearchforent() error {
+//
+//	content, _ := f.Render4Cache("/pc/biddingsearch_enterprise.html", &f.T)
+//	return f.SetBody(content)
+//}
 
 func (f *Front) Gethotkey() error {
 	keys := []interface{}{}

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

@@ -15,15 +15,23 @@ type Pcsearch struct {
 	*xweb.Action
 
 	pcSearchIndex xweb.Mapper `xweb:"/jylab/supsearch/index"`
+	getEntName    xweb.Mapper `xweb:"/jylab/supsearch/getentname"`
 }
 
 func init() {
 	xweb.AddAction(&Pcsearch{})
 }
 
+//
+func (p *Pcsearch) GetEntName() error {
+	return nil
+}
+
+//
 func (p *Pcsearch) PcSearchIndex() error {
 	defer util.Catch()
 	var shareid = p.GetString("id")
+	p.T["logid"] = config.Seoconfig["jysslby"].(string)
 	if len(shareid) == 0 {
 		shareid = fmt.Sprintf("%s%d", config.Seoconfig["jysslby"].(string)+fmt.Sprintf("%d", time.Now().UnixNano())[8:14], rand.Intn(9))
 	}

+ 1 - 1
src/jfw/modules/entsesearch/src/search/search.go → src/jfw/jylabutil/entsearch.go

@@ -1,5 +1,5 @@
 // search
-package search
+package jylabutil
 
 import (
 	"fmt"

+ 15 - 0
src/jfw/modules/behaviorcollect/README.md

@@ -0,0 +1,15 @@
+ajx调用,model,s_url属性必填
+var content='{"model":"accesslog","s_url":"/jylab/entsearch/","s_describe":"剑鱼实验室企业查询"}'
+
+
+$.post('/accessinfo/byajax',{json:content},function(r){
+	
+});
+
+//跨域请求
+$.ajax({  
+    url:"http://192.168.100.60:8084/accessinfo/byajax",  
+    dataType:'jsonp',  
+    data:{json:content},  
+    jsonp:'callback' 
+});  

+ 4 - 1
src/jfw/modules/behaviorcollect/src/config.json

@@ -4,7 +4,10 @@
     "insertthreads": 5,
     "cachesize": 50000,
     "influxdb": "https://jianyu:Topnet@20150501@wxlmjy.qmx.top:443",
-    "log_model": {
+    "model_url": {
         "剑鱼实验室": "/jylab/.*"
+    },
+    "model_invalid": {
+        "accesslog": "30d"
     }
 }

+ 10 - 8
src/jfw/modules/behaviorcollect/src/main.go

@@ -19,7 +19,8 @@ type config struct {
 	RpcAddr       string                 `json:"rpcaddr"`
 	Cachesize     int                    `json:"cachesize"`
 	WebAddr       string                 `json:"webaddr"`
-	Log_model     map[string]interface{} `json:"log_model"`
+	Modelurl      map[string]interface{} `json:"model_url"`     //模块
+	Modelinvalid  map[string]string      `json:"model_invalid"` //模块数据时效
 }
 
 //
@@ -47,7 +48,7 @@ func init() {
 	list = map[string]parse.Face{
 		"accesslog": parse.AccessLogParse{},
 	}
-	parse.AccessLogInit(c.Log_model)
+	parse.InitModelUrl(c.Modelurl)
 }
 
 //
@@ -55,11 +56,11 @@ func processrequest(jsonstr string, req *http.Request) {
 	data := map[string]interface{}{}
 	json.Unmarshal([]byte(jsonstr), &data)
 	model := data["model"].(string)
-	if v, ok := list[model]; ok {
+	invalid := c.Modelinvalid[model]
+	if v, ok := list[model]; ok && invalid != "" {
 		switch model {
 		case "accesslog":
-			writer.Write("jy_logs", "30d", v.Parse(data, req))
-
+			writer.Write("jy_logs", invalid, v.Parse(data, req))
 		}
 	}
 }
@@ -67,10 +68,11 @@ func processrequest(jsonstr string, req *http.Request) {
 //
 func main() {
 	//TODO 开通RPC ajax服务
-	http.HandleFunc("/ajax", func(w http.ResponseWriter, req *http.Request) {
-		//
+	http.HandleFunc("/accessinfo/byajax", func(w http.ResponseWriter, req *http.Request) {
 		jsontxt := req.FormValue("json") //post方式传过来
-		processrequest(jsontxt, req)
+		if jsontxt != "" {
+			processrequest(jsontxt, req)
+		}
 	})
 	http.ListenAndServe(c.WebAddr, nil)
 	//开通json rpc服务

+ 8 - 91
src/jfw/modules/behaviorcollect/src/parse/accesslog.go

@@ -2,11 +2,10 @@ package parse
 
 import (
 	"fmt"
-	"net"
 	"net/http"
 	"regexp"
-	"strings"
 	"time"
+	"util"
 
 	"github.com/influxdata/influxdb-client"
 )
@@ -21,7 +20,7 @@ var tagtitle = map[string]interface{}{
 	"s_browse": true,
 	"s_model":  true,
 }
-var log_model = map[string]*regexp.Regexp{}
+var model_url = map[string]*regexp.Regexp{}
 
 //
 func (alp AccessLogParse) Parse(data map[string]interface{}, req *http.Request) *influxdb.Point {
@@ -45,108 +44,26 @@ func (alp AccessLogParse) Parse(data map[string]interface{}, req *http.Request)
 		Time:   time.Now(),
 	}
 	return ponit
-
 }
 
 //
-func AccessLogInit(model map[string]interface{}) {
+func InitModelUrl(model map[string]interface{}) {
 	//TODO 加载IP转换,url模块对应
 	for k, v := range model {
 		reg, _ := regexp.Compile(fmt.Sprint(v))
-		log_model[k] = reg
+		model_url[k] = reg
 	}
 }
 
 //补充基本数据字段
 func AddBasicData(data map[string]interface{}, req *http.Request) map[string]interface{} {
 	agent := req.Header.Get("user-agent")
-	data["s_os"] = GetOS(agent)
-	data["s_ip"] = GetIp(req)
-	data["s_browse"] = GetBrowse(agent)
+	data["s_os"] = util.GetOS(agent)
+	data["s_ip"] = util.GetIp(req)
+	data["s_browse"] = util.GetBrowse(agent)
 	data["s_refer"] = req.Referer()
 	data["s_client"] = agent
-	data["s_model"] = GetModel(fmt.Sprint(data["s_url"]))
+	data["s_model"] = util.GetModel(fmt.Sprint(data["s_url"]), model_url)
 	delete(data, "model")
 	return data
 }
-
-//根据url获取所属模块
-func GetModel(url string) string {
-	s_model := "其他"
-	for k, v := range log_model {
-		b := v.MatchString(url)
-		if b {
-			s_model = k
-			break
-		}
-	}
-	return s_model
-}
-
-//获取平台类型
-func GetOS(useros string) string {
-	osVersion := "其他"
-	if strings.Contains(useros, "NT 6.0") {
-		osVersion = "Windows Vista/Server 2008"
-	} else if strings.Contains(useros, "NT 5.2") {
-		osVersion = "Windows Server 2003"
-	} else if strings.Contains(useros, "NT 5.1") {
-		osVersion = "Windows XP"
-	} else if strings.Contains(useros, "NT 5") {
-		osVersion = "Windows 2000"
-	} else if strings.Contains(useros, "Mac") {
-		osVersion = "Mac"
-	} else if strings.Contains(useros, "Unix") {
-		osVersion = "UNIX"
-	} else if strings.Contains(useros, "Linux") {
-		osVersion = "Linux"
-	} else if strings.Contains(useros, "SunOS") {
-		osVersion = "SunOS"
-	} else if strings.Contains(useros, "NT 6.3") {
-		osVersion = "Window8"
-	} else if strings.Contains(useros, "NT 6.1") {
-		osVersion = "Window7"
-	} else if strings.Contains(useros, "NT 10.0") {
-		osVersion = "Window10"
-	}
-	return osVersion
-}
-
-//获取浏览器类型
-func GetBrowse(userbrowser string) string {
-	browserVersion := "其他"
-	if strings.Contains(userbrowser, "MSIE") {
-		browserVersion = "IE"
-	} else if strings.Contains(userbrowser, "Firefox") {
-		browserVersion = "Firefox"
-	} else if strings.Contains(userbrowser, "Chrome") {
-		browserVersion = "Chrome"
-	} else if strings.Contains(userbrowser, "Safari") {
-		browserVersion = "Safari"
-	} else if strings.Contains(userbrowser, "rv:11.0") {
-		browserVersion = "IE11"
-	}
-	return browserVersion
-}
-
-//获取ip
-func GetIp(req *http.Request) string {
-	if req == nil {
-		return ""
-	}
-	ip_for := req.Header.Get("x-forwarded-for")
-	ip_client := req.Header.Get("http_client_ip")
-	ip_addr := req.Header.Get("Remote_addr")
-	un := "unknown"
-	if (ip_for != un) && (len(strings.TrimSpace(ip_for)) > 0) {
-		return ip_for
-	}
-	if (ip_client != un) && (len(strings.TrimSpace(ip_client)) > 0) {
-		return ip_client
-	}
-	if (ip_addr != un) && (len(strings.TrimSpace(ip_addr)) > 0) {
-		return ip_addr
-	}
-	ip, _, _ := net.SplitHostPort(req.RemoteAddr)
-	return ip
-}

+ 90 - 0
src/jfw/modules/behaviorcollect/src/util/util.go

@@ -0,0 +1,90 @@
+// util
+package util
+
+import (
+	"net"
+	"net/http"
+	"regexp"
+	"strings"
+)
+
+//根据url获取所属模块
+func GetModel(url string, model_url map[string]*regexp.Regexp) string {
+	s_model := "其他"
+	for k, v := range model_url {
+		b := v.MatchString(url)
+		if b {
+			s_model = k
+			break
+		}
+	}
+	return s_model
+}
+
+//获取平台类型
+func GetOS(useros string) string {
+	osVersion := "其他"
+	if strings.Contains(useros, "NT 6.0") {
+		osVersion = "Windows Vista/Server 2008"
+	} else if strings.Contains(useros, "NT 5.2") {
+		osVersion = "Windows Server 2003"
+	} else if strings.Contains(useros, "NT 5.1") {
+		osVersion = "Windows XP"
+	} else if strings.Contains(useros, "NT 5") {
+		osVersion = "Windows 2000"
+	} else if strings.Contains(useros, "Mac") {
+		osVersion = "Mac"
+	} else if strings.Contains(useros, "Unix") {
+		osVersion = "UNIX"
+	} else if strings.Contains(useros, "Linux") {
+		osVersion = "Linux"
+	} else if strings.Contains(useros, "SunOS") {
+		osVersion = "SunOS"
+	} else if strings.Contains(useros, "NT 6.3") {
+		osVersion = "Window8"
+	} else if strings.Contains(useros, "NT 6.1") {
+		osVersion = "Window7"
+	} else if strings.Contains(useros, "NT 10.0") {
+		osVersion = "Window10"
+	}
+	return osVersion
+}
+
+//获取浏览器类型
+func GetBrowse(userbrowser string) string {
+	browserVersion := "其他"
+	if strings.Contains(userbrowser, "MSIE") {
+		browserVersion = "IE"
+	} else if strings.Contains(userbrowser, "Firefox") {
+		browserVersion = "Firefox"
+	} else if strings.Contains(userbrowser, "Chrome") {
+		browserVersion = "Chrome"
+	} else if strings.Contains(userbrowser, "Safari") {
+		browserVersion = "Safari"
+	} else if strings.Contains(userbrowser, "rv:11.0") {
+		browserVersion = "IE11"
+	}
+	return browserVersion
+}
+
+//获取ip
+func GetIp(req *http.Request) string {
+	if req == nil {
+		return ""
+	}
+	ip_for := req.Header.Get("x-forwarded-for")
+	ip_client := req.Header.Get("http_client_ip")
+	ip_addr := req.Header.Get("Remote_addr")
+	un := "unknown"
+	if (ip_for != un) && (len(strings.TrimSpace(ip_for)) > 0) {
+		return ip_for
+	}
+	if (ip_client != un) && (len(strings.TrimSpace(ip_client)) > 0) {
+		return ip_client
+	}
+	if (ip_addr != un) && (len(strings.TrimSpace(ip_addr)) > 0) {
+		return ip_addr
+	}
+	ip, _, _ := net.SplitHostPort(req.RemoteAddr)
+	return ip
+}

+ 0 - 0
src/jfw/modules/followpush/src/config.json → src/jfw/modules/pushproject/src/config.json


+ 0 - 0
src/jfw/modules/followpush/src/config/config.go → src/jfw/modules/pushproject/src/config/config.go


+ 0 - 0
src/jfw/modules/followpush/src/filterdata/filterdata.go → src/jfw/modules/pushproject/src/filterdata/filterdata.go


+ 0 - 0
src/jfw/modules/followpush/src/followpush/config.json → src/jfw/modules/pushproject/src/followpush/config.json


+ 0 - 0
src/jfw/modules/followpush/src/followpush/datastruct.go → src/jfw/modules/pushproject/src/followpush/datastruct.go


+ 0 - 0
src/jfw/modules/followpush/src/followpush/followpush.go → src/jfw/modules/pushproject/src/followpush/followpush.go


+ 0 - 0
src/jfw/modules/followpush/src/followpush/followpush_test.go → src/jfw/modules/pushproject/src/followpush/followpush_test.go


+ 0 - 0
src/jfw/modules/followpush/src/followpush/push.go → src/jfw/modules/pushproject/src/followpush/push.go


+ 0 - 0
src/jfw/modules/followpush/src/listdb/listdb.go → src/jfw/modules/pushproject/src/listdb/listdb.go


+ 0 - 0
src/jfw/modules/followpush/src/main.go → src/jfw/modules/pushproject/src/main.go


+ 0 - 0
src/jfw/modules/followpush/src/main_test.go → src/jfw/modules/pushproject/src/main_test.go


+ 0 - 0
src/jfw/modules/followpush/src/rpcpush/findData.go → src/jfw/modules/pushproject/src/rpcpush/findData.go


+ 0 - 0
src/jfw/modules/followpush/src/rpcpush/rpcpush.go → src/jfw/modules/pushproject/src/rpcpush/rpcpush.go


+ 0 - 0
src/jfw/modules/followpush/src/timetask/clearredis.go → src/jfw/modules/pushproject/src/timetask/clearredis.go


+ 0 - 0
src/jfw/modules/followpush/src/tools/mongo.go → src/jfw/modules/pushproject/src/tools/mongo.go


+ 0 - 0
src/jfw/modules/followpush/src/tools/tools.go → src/jfw/modules/pushproject/src/tools/tools.go


+ 0 - 0
src/jfw/modules/followpush/src/weixinrpc/weixinrpc.go → src/jfw/modules/pushproject/src/weixinrpc/weixinrpc.go


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

@@ -152,6 +152,7 @@
 
 #searchInner .searchHeader .searchHeader-container .searchInput .search-right-wx {
   float: right;
+  position: relative;
 }
 
 #searchInner .searchHeader .searchHeader-container .searchInput .search-right-wx img {
@@ -245,7 +246,7 @@
 
 #searchInner .searchControl .searchTender .leftTitle {
   float: left;
-  width: 70px;
+  width: 84px;
   text-align: right;
   color: #686868;
   padding: 4px 7px;
@@ -505,7 +506,7 @@
 #searchInner .searchControl .seaTender-inner .tabTitle li a {
   display: inline-block;
   width: 100%;
-  height: 100%;
+/*  height: 100%;*/
   font-size: 16px;
   color: #252627;
 }
@@ -523,6 +524,7 @@
   height: 50px;
   line-height: 50px;
   background-color: transparent;
+  font-size:14px;
 }
 
 #searchInner .searchControl .seaTender-inner .tabTitle .right-tabBtn button {
@@ -563,10 +565,12 @@
   /*列表*/
   background-color: #FFFFFF;
   margin-bottom: 30px;
+  overflow: hidden;
 }
 
 #searchInner .searchControl .seaTender-inner .tabContainer .lucene ul {
   border-bottom: 1px solid #e0e0e0;
+  display: inline-block;
 }
 
 #searchInner .searchControl .seaTender-inner .tabContainer .lucene li {
@@ -583,6 +587,7 @@
   border-bottom: 1px solid #e0e0e0;
   overflow: hidden;
   padding-bottom: 20px;
+width:1160px;
 }
 
 #searchInner .searchControl .seaTender-inner .tabContainer .lucene li .luce-left {

+ 31 - 0
src/web/staticres/css/dev2/biddingSearch1.css

@@ -0,0 +1,31 @@
+.popQR{
+	position:absolute;
+	border: 1px solid #ccc;
+    width: 200px;
+    right: 0px;
+    height: 290px;
+	background-color: #fff;
+    top: 0px;
+	z-index: 99;
+	box-shadow: 0 0 10px rgba(0,0,0, .24);
+	cursor: pointer;
+}
+.promptheader{
+	font-size: 16px;
+    color: #2cb7ca;
+    font-weight: bold;
+    padding-left: 10px;
+    text-align: left;
+    border-bottom: 1px solid #f4f4f9;
+    line-height: 40px;
+}
+#keyImg{
+	width: 190px !important;
+    height: 190px !important;
+    vertical-align: middle;
+}
+.promptbottom{
+	padding:10px;
+	line-height:22px;
+	text-align:center;
+}

+ 22 - 5
src/web/templates/pc/supsearch.html

@@ -1,15 +1,16 @@
 <html>
 <head>
-<title>剑鱼博客_剑鱼招标订阅,全行业招标信息智能推送领导者</title>
+<title>{{Msg "seo" "qfw.swordfishsl.title"}}</title>
 <meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" />
-<meta name="Keywords" content="剑鱼功能,剑鱼更新,招标动态,招标资讯,招投标热点,剑鱼博客"/>
-<meta name="Description" content="剑鱼博客栏目为用户及时发布最新的剑鱼功能更新、剑鱼操作指南和招投标行业相关的各类动态资讯。来剑鱼博客,变身剑鱼使用能手!"/>
+<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"/>
 {{include "/common/pnc.html"}}
 <link href="/css/pc.css?v={{Msg "seo" "version"}}" rel="stylesheet">
 <link href="/css/dev2/reset_pc.css?v={{Msg "seo" "version"}}" rel="stylesheet">
 <link href="/css/dev2/biddingSearch.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+<link href="/css/dev2/biddingSearch1.css?v={{Msg "seo" "version"}}" rel="stylesheet">
 <script src="/js/jquery.cookie.js"></script>
 <script src="/js/biddingSearch.js?v={{Msg "seo" "version"}}"></script>
 <style type="text/css">
@@ -86,12 +87,23 @@
 	-webkit-animation-fill-mode:forwards;
 	   -moz-animation-fill-mode:forwards;
 	     -o-animation-fill-mode:forwards;
-	        animation-fill-mode:forwards
+	        animation-fill-mode:forwards;
 }
 .navigation{
 	display:block;
 }
+a{
+	text-decoration: none !important;
+}
 </style>
+<script>
+$(function(){
+	$(".searchname").on("input propertychange",function(){
+		var inputval = $("#searchinput").val();
+		
+  	});
+})
+</script>
 </head>
 <body>
 {{include "/common/pchead.html"}}
@@ -107,7 +119,7 @@
 			<!--搜索-->
 			<div class="searchInput clearfix">
 				<form action="" method="" class="clearfix">
-					<input  autocomplete="off" type="search" name="" id="search" value="" placeholder="高速公路" />
+					<input class="searchname" autocomplete="off" type="search" name="" id="searchinput" value="" name="keywords" placeholder="高速公路" />
 
 					<input type="submit" value="搜索" />
 					<div class="searchSlideText">
@@ -138,6 +150,11 @@
 				<!--二维码-->
 				<div class="search-right-wx">
 					<img src="/images/biddingSearch/sea-right-wx.png" />
+					<div class="popQR" style="display:none;">
+						<div class="promptheader">扫描订阅关键词</div>
+						<div><img  id="keyImg" src="/front/share/{{.T.shareid}}"/></div>
+						<div class="promptbottom">微信扫一扫<br>随时随地掌握招标信息</div>
+					</div>
 				</div>
 			</div>
 		</div>