소스 검색

Merge branch 'dev4.2' of http://192.168.3.207:10080/qmx/jy into dev4.2

DingChangSheng 4 년 전
부모
커밋
7d0ea31f9b
91개의 변경된 파일2342개의 추가작업 그리고 285개의 파일을 삭제
  1. 2 1
      src/config.json
  2. 117 129
      src/jfw/front/pcIndex.go
  3. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_1.png
  4. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_2.png
  5. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_3.png
  6. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_4.png
  7. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_5.png
  8. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_6.png
  9. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/button.png
  10. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/cButton.png
  11. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/sButton.png
  12. 1 0
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/analysis_result.css
  13. 64 0
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/page_info_collect.css
  14. 11 6
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/page_landingPage_new.css
  15. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/image/collect_bg.png
  16. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/image/collect_checked.png
  17. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/image/landpage_new/buy_bg.png
  18. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/image/landpage_new/seven_bg.png
  19. 5 7
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js
  20. 2 2
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/main_root.js
  21. 5 0
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/marketing.css
  22. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/image/discount@2x.png
  23. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/image/how-to-buy@2x.png
  24. 2 2
      src/jfw/modules/app/src/web/templates/big-member/page_analysis_result.html
  25. 3 3
      src/jfw/modules/app/src/web/templates/big-member/page_bid_balance.html
  26. 0 0
      src/jfw/modules/app/src/web/templates/big-member/page_contrast.html
  27. 4 4
      src/jfw/modules/app/src/web/templates/big-member/page_land_setting.html
  28. 11 7
      src/jfw/modules/app/src/web/templates/big-member/page_landingPage.html
  29. 222 0
      src/jfw/modules/app/src/web/templates/frontRouter/bidding/sess/index.html
  30. 95 0
      src/jfw/modules/app/src/web/templates/frontRouter/bidding/sess/middle.html
  31. 221 0
      src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/info_collect.html
  32. 36 2
      src/jfw/modules/app/src/web/templates/structeddata/marketing.html
  33. 9 1
      src/jfw/modules/bidfileinter/src/config.json
  34. 60 0
      src/jfw/modules/bidfileinter/src/service/action/exchange.go
  35. 2 1
      src/jfw/modules/bidfileinter/src/service/action/info.go
  36. 1 1
      src/jfw/modules/bidfileinter/src/service/action/upload.go
  37. 3 0
      src/jfw/modules/bidfileinter/src/service/config/config.go
  38. 124 20
      src/jfw/modules/bidfileinter/src/util/util.go
  39. 2 2
      src/jfw/modules/bigmember/src/service/analysis/forecastwinner.go
  40. 7 0
      src/jfw/modules/bigmember/src/service/bidfile/bidfile.go
  41. 1 1
      src/jfw/modules/bigmember/src/service/use/use.go
  42. 0 0
      src/jfw/modules/subscribepay/src/dataexport.json
  43. 7 0
      src/jfw/tag/msg.go
  44. 65 0
      src/jfw/tag/tag.go
  45. 8 8
      src/web/staticres/bid-fileinter/css/bidfile_list.css
  46. 1 0
      src/web/staticres/bid-fileinter/css/my-modal.css
  47. BIN
      src/web/staticres/bid-fileinter/h5/image/bg_1.png
  48. BIN
      src/web/staticres/bid-fileinter/h5/image/bg_2.png
  49. BIN
      src/web/staticres/bid-fileinter/h5/image/bg_3.png
  50. BIN
      src/web/staticres/bid-fileinter/h5/image/bg_4.png
  51. BIN
      src/web/staticres/bid-fileinter/h5/image/bg_5.png
  52. BIN
      src/web/staticres/bid-fileinter/h5/image/bg_6.png
  53. BIN
      src/web/staticres/bid-fileinter/h5/image/button.png
  54. BIN
      src/web/staticres/bid-fileinter/h5/image/cButton.png
  55. BIN
      src/web/staticres/bid-fileinter/h5/image/sButton.png
  56. 2 2
      src/web/staticres/bid-fileinter/js/common.js
  57. 7 4
      src/web/staticres/bid-fileinter/js/my-modal.js
  58. 129 0
      src/web/staticres/big-member/css/page_index.css
  59. 64 0
      src/web/staticres/big-member/css/page_info_collect.css
  60. BIN
      src/web/staticres/big-member/image/buy-bid-intro.png
  61. BIN
      src/web/staticres/big-member/image/landpage_new/buy_bg.png
  62. BIN
      src/web/staticres/big-member/image/landpage_new/seven_bg.png
  63. BIN
      src/web/staticres/big-member/image/new_index/footer-banner.png
  64. 14 8
      src/web/staticres/big-member/weixin/css/page_landingPage_new.css
  65. BIN
      src/web/staticres/images/mail-adv.png
  66. 16 3
      src/web/staticres/order/css/pay_success.css
  67. 5 0
      src/web/staticres/structuredata/mobile/css/marketing.css
  68. BIN
      src/web/staticres/structuredata/mobile/image/discount@2x.png
  69. BIN
      src/web/staticres/structuredata/mobile/image/how-to-buy@2x.png
  70. 70 0
      src/web/staticres/structuredata/pc/css/stucturedPc.css
  71. BIN
      src/web/staticres/structuredata/pc/image/discount@2x.png
  72. BIN
      src/web/staticres/structuredata/pc/image/how-to-buy@2x.png
  73. BIN
      src/web/staticres/structuredata/pc/image/icon-5-1@2x.png
  74. BIN
      src/web/staticres/structuredata/pc/image/icon-5-2@2x.png
  75. BIN
      src/web/staticres/structuredata/pc/image/icon-5-3@2x.png
  76. BIN
      src/web/staticres/structuredata/pc/image/phone.png
  77. 59 5
      src/web/templates/bid-fileinter/page_bidfile_landpage.html
  78. 77 16
      src/web/templates/bid-fileinter/page_bidfile_list.html
  79. 150 25
      src/web/templates/big-member/pc/page_index.html
  80. 12 11
      src/web/templates/big-member/wx/page_landingPage.html
  81. 1 1
      src/web/templates/frontRouter/pc/docs/sess/index.html
  82. 1 1
      src/web/templates/frontRouter/pc/entpc/sess/index.html
  83. 1 1
      src/web/templates/frontRouter/pc/integral/sess/index.html
  84. 1 1
      src/web/templates/frontRouter/pc/page_big_pc/sess/index.html
  85. 225 0
      src/web/templates/frontRouter/wx/bidding/sess/index.html
  86. 92 0
      src/web/templates/frontRouter/wx/bidding/sess/middle.html
  87. 215 0
      src/web/templates/frontRouter/wx/bigmember/free/info_collect.html
  88. 10 0
      src/web/templates/order/pc/orderPay.html
  89. 17 7
      src/web/templates/order/pc/paySuccess.html
  90. 37 0
      src/web/templates/structuredata/mobile/marketing_wx.html
  91. 46 3
      src/web/templates/structuredata/pc/index.html

+ 2 - 1
src/config.json

@@ -288,5 +288,6 @@
     "bindPopRedis":"merge",
     "phoneFilterFlag":true,
     "pcindexCacheTime":7200,
-    "pcIndexHotCacheTime":7200
+    "pcIndexHotCacheTime":7200,
+    "pcindexCacheKey":"jypcindex2"
 }

+ 117 - 129
src/jfw/front/pcIndex.go

@@ -26,7 +26,6 @@ type PcIndex struct {
 	newSordfish  xweb.Mapper `xweb:"/"`                        //剑鱼标讯pc首页
 	newSordfishC xweb.Mapper `xweb:"/pcindex.html"`            //剑鱼标讯pc首页-统计
 	searchResult xweb.Mapper `xweb:"/list/(\\w+)/(\\w+).html"` //剑鱼标讯分类 地区结果列表
-	labelUrl     xweb.Mapper `xweb:"/index/labelUrl"`          //首页链接跳转地址
 	tesa         xweb.Mapper `xweb:"/index/tesa"`
 }
 
@@ -35,9 +34,11 @@ func init() {
 }
 
 func (d *PcIndex) Tesa() {
+	typ, _ := d.GetInteger("typ")
 	// d.WriteBytes([]byte("ok,清除路径:" + "pc/index.html"))
 	// m := GetNewBlog()
-	m := getkeysMap()
+	// m := getstypeMap()
+	m := GetLabUrl(typ)
 	d.ServeJson(m)
 }
 
@@ -45,10 +46,14 @@ func (d *PcIndex) Tesa() {
 func (m *PcIndex) NewSordfish() error {
 	ispc, _ := m.GetInteger("ispc")
 	var shareid = m.GetString("id")
+	pcindexKey := "jypcindex"
+	if cacheKey, _ := config.Sysconfig["pcindexCacheKey"].(string); cacheKey != "" {
+		pcindexKey = cacheKey
+	}
 	if len(shareid) == 0 {
 		shareid = "10" //fmt.Sprintf("%s%d", config.Seoconfig["jysy"].(string)+fmt.Sprintf("%d", time.Now().UnixNano())[8:14], rand.Intn(9))
 	} else {
-		redis.Del("other", "jypcindex")
+		redis.Del("other", pcindexKey)
 	}
 	m.T["logid"] = config.Seoconfig["jysy"].(string)
 	m.T["shareid"] = se.EncodeString(shareid)
@@ -62,7 +67,7 @@ func (m *PcIndex) NewSordfish() error {
 		m.T["avatar"] = util.ObjToString(m.GetSession("s_avatar"))
 		return m.Render("/pc/mobileindex.html", &m.T)
 	} else {
-		if ret := redis.Get("other", "jypcindex"); ret != nil {
+		if ret := redis.Get("other", pcindexKey); ret != nil {
 			return m.SetBody([]byte(ret.(string)))
 		} else {
 			m.T["live_Preheat_Start"] = config.ActiveConfig.Live_Preheat_Start
@@ -81,7 +86,7 @@ func (m *PcIndex) NewSordfish() error {
 			m.T["infoNum"] = GetInfoNum()
 			content, _ := m.Render4Cache("/pc/index.html", &m.T)
 			timeout := util.IntAllDef(config.Sysconfig["pcindexCacheTime"], 7200)
-			redis.Put("other", "jypcindex", string(content), timeout)
+			redis.Put("other", pcindexKey, string(content), timeout)
 			return m.SetBody(content)
 		}
 	}
@@ -147,10 +152,10 @@ func GetNewArticle(typ int) (list []map[string]interface{}) {
 		subtype = "预告"
 	case 3:
 		//招标公告
-		subtype = "招标,邀标,询价,竞谈,单一,竞价,变更,其"
+		subtype = "招标,邀标,询价,竞谈,单一,竞价,变更,其"
 	case 4:
 		//招标结果
-		subtype = "中标,成交,废标,流标"
+		subtype = "中标,成交,废标,流标,其它"
 	}
 	if l, ok := redis.Get("other", rediskey).([]interface{}); ok && l != nil && len(l) > 0 {
 		list = util.ObjArrToMapArr(l)
@@ -201,7 +206,8 @@ func GetLabUrl(typ int) interface{} {
 		}
 		cityMap := getCityMap()
 		r := public.PushMysql.SelectBySql(`select a.name province,b.name city from
-(select name,cid from province where level =1) a left join province b on a.cid =b.pid`)
+(select name,cid from province where level =1) a left join province b on a.cid =b.pid order by id `)
+		provinceArr := util.ObjArrToStringArr(config.Seoconfig["hotlabcitySort"].([]interface{}))
 		if r != nil && len(*r) > 0 {
 			for _, v := range *r {
 				province := util.ObjToString(v["province"])
@@ -219,15 +225,13 @@ func GetLabUrl(typ int) interface{} {
 				}
 			}
 		}
-		return m
+		mar := []map[string][]map[string]interface{}{}
+		for _, v := range provinceArr {
+			mar = append(mar, map[string][]map[string]interface{}{v: m[v]})
+		}
+		return mar
 	} else if typ == 2 { //信息类型
 		stypeMap := getstypeMap()
-		for _, v := range stypeMap {
-			// stypeMap[k] = fmt.Sprintf("/list/stype/%s.html", v)
-			for _, vv := range v {
-				vv["url"] = fmt.Sprintf("/list/stype/%s.html", vv["url"])
-			}
-		}
 		return stypeMap
 	} else if typ == 3 { //热门招标
 		keysMap := getkeysMap()
@@ -236,6 +240,15 @@ func GetLabUrl(typ int) interface{} {
 	return nil
 }
 
+func isin(arr []string, s string) bool {
+	for _, v := range arr {
+		if v == s {
+			return true
+		}
+	}
+	return false
+}
+
 //招标搜索数量
 func GetInfoNum() (one map[string]interface{}) {
 	defer util.Catch()
@@ -292,8 +305,6 @@ func (f *PcIndex) SearchResult(at, name string) error {
 	}
 	f.T["logid"] = config.Seoconfig["jybqy"].(string)
 	if at == "area" {
-		// log.Println("config.Seoconfig", config.Seoconfig)
-		// log.Println("config.Seoconfig.area", config.Seoconfig["area"])
 		areamp, _ := config.Seoconfig["area"].(map[string]interface{})
 		if areamp != nil {
 			areamp1 := areamp[name].(map[string]interface{})
@@ -338,25 +349,30 @@ func (f *PcIndex) SearchResult(at, name string) error {
 			}
 		}
 	} else if at == "keywords" {
-		keywordsmp, _ := config.Seoconfig["keywords"].(map[string]interface{})
-		if keywordsmp != nil {
-			keywordsmp1 := keywordsmp[name].(map[string]interface{})
-			if keywordsmp1 != nil {
-				keywords = keywordsmp1["NAME"].(string)
-				seotitle = keywordsmp1["TITLE"].(string)
-				seokeywords = keywordsmp1["KEYWORDS"].(string)
-				seodescription = keywordsmp1["DESCRIPTION"].(string)
-				key_industry = keywordsmp1["INDUSTRY"].(string)
-				//行业
-				industrymp, _ := config.Seoconfig["industry"].(map[string]interface{})
-				industrymp1 := industrymp[key_industry].(map[string]interface{})
-				if industrymp1 != nil {
-					key_industry = industrymp1["NAME"].(string)
-					industry = key_industry
+		keywordsArr, _ := config.Seoconfig["keywordsArr"].([]interface{})
+		if len(keywordsArr) > 0 {
+			for _, v := range keywordsArr {
+				keys := v.(map[string]interface{})
+				keywordsmp1 := keys[name]
+				if keywordsmp1 != nil {
+					km := keywordsmp1.(map[string]interface{})
+					keywords = km["NAME"].(string)
+					seotitle = km["TITLE"].(string)
+					seokeywords = km["KEYWORDS"].(string)
+					seodescription = km["DESCRIPTION"].(string)
+					key_industry = km["INDUSTRY"].(string)
+					//行业
+					industrymp, _ := config.Seoconfig["industry"].(map[string]interface{})
+					industrymp1 := industrymp[key_industry].(map[string]interface{})
+					if industrymp1 != nil {
+						key_industry = industrymp1["NAME"].(string)
+						industry = key_industry
+					}
 				}
 			}
 		}
 	}
+	log.Println(industry, keywords)
 	f.T["seoarea"] = area
 	f.T["seostype"] = stype
 	f.T["seotitle"] = seotitle
@@ -412,7 +428,7 @@ func (f *PcIndex) SearchResult(at, name string) error {
 					*datas = (*datas)[0:limitcount]
 				}
 			}
-			if len(*datas) > 0 {
+			if len(*datas) > 0 && datas != nil {
 				for _, v := range *datas {
 					v["_id"] = util.EncodeArticleId2ByCheck(util.ObjToString(v["_id"]))
 				}
@@ -441,51 +457,6 @@ func (f *PcIndex) SearchResult(at, name string) error {
 	return f.Render("/pc/classifylist.html", &f.T)
 }
 
-//
-func (p *PcIndex) LabelUrl() {
-	typ, _ := p.GetInteger("typ")
-	r := func() interface{} {
-		if typ == 1 { //地区
-			m := map[string][]map[string]interface{}{}
-			cityMap := getCityMap()
-			r := public.PushMysql.SelectBySql(`select a.name province,b.name city from
-(select name,cid from province where level =1) a left join province b on a.cid =b.pid`)
-			if r != nil && len(*r) > 0 {
-				for _, v := range *r {
-					province := util.ObjToString(v["province"])
-					city := util.ObjToString(v["city"])
-					m[province] = append(m[province], map[string]interface{}{
-						"city": city,
-					})
-				}
-			}
-			for _, vv := range m {
-				for _, vvv := range vv {
-					city := util.ObjToString(vvv["city"])
-					vvv["url"] = fmt.Sprintf("/list/city/%s.html", cityMap[city])
-				}
-			}
-			return m
-		} else if typ == 2 { //信息类型
-			stypeMap := getstypeMap()
-			for _, v := range stypeMap {
-				// stypeMap[k] = fmt.Sprintf("/list/stype/%s.html", v)
-				for _, vv := range v {
-					vv["url"] = fmt.Sprintf("/list/stype/%s.html", vv["url"])
-				}
-			}
-			return stypeMap
-		} else if typ == 3 { //热门招标
-			keysMap := getkeysMap()
-			return keysMap
-		}
-		return nil
-	}()
-	p.ServeJson(map[string]interface{}{
-		"data": r,
-	})
-}
-
 func getCityMap() map[string]interface{} {
 	m := map[string]interface{}{}
 	citymp, _ := config.Seoconfig["city"].(map[string]interface{})
@@ -498,7 +469,7 @@ func getCityMap() map[string]interface{} {
 	}
 	return m
 }
-func getstypeMap() map[string][]map[string]interface{} {
+func getstypeMap() []map[string][]map[string]interface{} {
 	m := map[string]interface{}{}
 	stypemap, _ := config.Seoconfig["stype"].(map[string]interface{})
 	if stypemap != nil && len(stypemap) > 0 {
@@ -507,81 +478,98 @@ func getstypeMap() map[string][]map[string]interface{} {
 			stypename := util.ObjToString(stype["NAME"])
 			if stypename == "拟建" {
 				stypename = "拟建项目"
-			} else if stypename == "预告" {
-				stypename = "招标预告"
 			}
 			m[stypename] = k
 		}
 	}
-	m2 := map[string][]map[string]interface{}{} //结构整理 返给前端
-	stype_1reg := regexp.MustCompile(`拟建项目|招标预告|招标公告|招标结果|招标信用信息`)
-	notice := regexp.MustCompile(`招标|询价|邀标|竞谈|单一|竞价|变更|其他`) //招标公告
-	result := regexp.MustCompile(`中标|成交|废标|流标`)             //招标结果
-	credit := regexp.MustCompile(`合同|验收|违规`)                //招标信用信息
-	for k, v := range m {
-		if stype_1reg.MatchString(k) {
-			m2[k] = append(m2[k], map[string]interface{}{
-				"key": k,
-				"url": v,
-			})
-		} else if notice.MatchString(k) {
-			m2["招标公告"] = append(m2["招标公告"], map[string]interface{}{
-				"key": k,
-				"url": v,
-			})
-		} else if result.MatchString(k) {
-			m2["招标结果"] = append(m2["招标结果"], map[string]interface{}{
-				"key": k,
-				"url": v,
-			})
-		} else if credit.MatchString(k) {
-			m2["招标信用信息"] = append(m2["招标信用信息"], map[string]interface{}{
-				"key": k,
-				"url": v,
-			})
+	m2 := []map[string][]map[string]interface{}{} //结构整理 返给前端
+	stype_1reg := []string{"招标公告", "招标结果", "招标信用信息", "招标预告", "拟建项目"}
+	hotlabstypSort := config.Seoconfig["hotlabstypSort"].([]interface{})
+	notice := util.ObjArrToStringArr(hotlabstypSort[0].([]interface{}))
+	result := util.ObjArrToStringArr(hotlabstypSort[1].([]interface{}))
+	credit := util.ObjArrToStringArr(hotlabstypSort[2].([]interface{}))
+	herald := util.ObjArrToStringArr(hotlabstypSort[3].([]interface{}))
+	for k, v := range stype_1reg {
+		m2 = append(m2, map[string][]map[string]interface{}{
+			v: []map[string]interface{}{map[string]interface{}{"key": v, "url": fmt.Sprintf("/list/stype/%s.html", m[v])}},
+		})
+		switch k {
+		case 0:
+			m2 = stypeformat(k, v, m, m2, notice)
+		case 1:
+			m2 = stypeformat(k, v, m, m2, result)
+		case 2:
+			m2 = stypeformat(k, v, m, m2, credit)
+		case 3:
+			m2 = stypeformat(k, v, m, m2, herald)
 		}
 	}
 	return m2
 }
 
-func getkeysMap() map[string][]map[string]interface{} {
+//给前端格式化数据结构
+func stypeformat(k int, v string, m map[string]interface{}, m1 []map[string][]map[string]interface{}, arr []string) []map[string][]map[string]interface{} {
+	for _, vv := range arr {
+		vvstr := vv
+		if strings.Contains(vv, "其它") {
+			vvstr = "其它"
+		}
+		m1[k][v] = append(m1[k][v], map[string]interface{}{"key": vvstr, "url": fmt.Sprintf("/list/stype/%s.html", m[vv])})
+	}
+	return m1
+}
+
+func getkeysMap() []map[string][]map[string]interface{} {
+	mar := []map[string][]map[string]interface{}{}
 	m, industry := map[string][]map[string]interface{}{}, ""
-	keymap, _ := config.Seoconfig["keywords"].(map[string]interface{})
+	sortArr := util.ObjArrToStringArr(config.Seoconfig["hotlabkeywordsSort"].([]interface{}))
+	keymap, _ := config.Seoconfig["keywordsArr"].([]interface{})
 	//
 	industrymp, _ := config.Seoconfig["industry"].(map[string]interface{})
-	log.Println(industrymp)
-	if keymap != nil && len(keymap) > 0 {
-		for k, v := range keymap {
+	if len(keymap) > 0 {
+		for _, v := range keymap {
 			keys := v.(map[string]interface{})
-			keysname := util.ObjToString(keys["NAME"])
-			key_industry := util.ObjToString(keys["INDUSTRY"])
-			if industrymp != nil {
-				industrymp1 := industrymp[key_industry].(map[string]interface{})
-				if industrymp1 != nil {
-					industry = industrymp1["NAME"].(string)
-					if industryArr := strings.Split(industry, "_"); len(industryArr) > 0 {
-						industry = industryArr[0]
+			for kk, vv := range keys {
+				vvmap := vv.(map[string]interface{})
+				key_industry := util.ObjToString(vvmap["INDUSTRY"])
+				keysname := util.ObjToString(vvmap["NAME"])
+				if industrymp != nil {
+					industrymp1 := industrymp[key_industry].(map[string]interface{})
+					if industrymp1 != nil {
+						industry = industrymp1["NAME"].(string)
+						if industryArr := strings.Split(industry, "_"); len(industryArr) > 0 {
+							industry = industryArr[0]
+						}
 					}
 				}
+				m[industry] = append(m[industry], map[string]interface{}{
+					"key": keysname,
+					"url": fmt.Sprintf("/list/keywords/%s.html", kk),
+				})
 			}
-			m[industry] = append(m[industry], map[string]interface{}{
-				"key": keysname,
-				"url": fmt.Sprintf("/list/keywords/%s.html", k),
-			})
+		}
+		for _, v := range sortArr {
+			mar = append(mar, map[string][]map[string]interface{}{v: m[v]})
 		}
 	}
-	return m
+
+	return mar
 }
 
 //
 func getstype(stype string) string {
 	switch stype {
 	case "招标公告":
-		stype = "招标,邀标,询价,竞谈,单一,竞价,变更,其"
+		stype = "招标,邀标,询价,竞谈,单一,竞价,变更,其"
 	case "招标结果":
-		stype = "中标,成交,废标,流标"
+		stype = "中标,成交,废标,流标,结果变更,其它"
 	case "招标信用信息":
-		stype = "合同,验收,违规"
+		stype = "合同,验收,违规,其它"
+	case "招标预告":
+		stype = "预告,需求公示,预审,论证意见,预审结果,其它"
+	}
+	if stype == "招标公告其它" || stype == "招标结果其它" || stype == "招标信用信息其它" || stype == "招标预告其它" {
+		stype = "其它"
 	}
 	return stype
 }
@@ -602,5 +590,5 @@ func NumberFormat(i int) string {
 	for i := 0; i < count; i++ {
 		arr[0] = arr[0][:length1-(i+1)*3] + "," + arr[0][length1-(i+1)*3:]
 	}
-	return strings.Join(arr, ".") //将一系列字符串连接为一个字符串之间用sep来分隔。
+	return strings.Join(arr, ".") //将一系列字符串连接为一个字符串,之间用sep来分隔。
 }

BIN
src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_1.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_2.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_3.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_4.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_5.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/bg_6.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/button.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/cButton.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/bid-fileinter/h5/image/sButton.png


+ 1 - 0
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/analysis_result.css

@@ -489,6 +489,7 @@
     color: #2ABED1;
     font-size:.22rem;
     flex: 1;
+    line-height: 1.4;
 }
 #analysis-result .pl-price{
     display: flex;

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 64 - 0
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/page_info_collect.css


+ 11 - 6
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/page_landingPage_new.css

@@ -733,7 +733,7 @@
 }
 
 .j-button-group {
-  padding: 0.16rem 0 0.24rem 0.32rem;
+  /* padding: 0.16rem 0 0.24rem 0.32rem; */
 }
 
 .j-button-practice {
@@ -746,6 +746,7 @@
 
 .buy_btn {
   display: flex;
+  flex: 1;
 }
 
 .buy_btn .j-btn {
@@ -753,28 +754,32 @@
   justify-content: center;
   align-items: center;
   font-size: 0.36rem;
+  flex: 1;
 }
 
 .buy_btn .sevendays {
-  width: 2.4rem;
+  /* width: 2.4rem; */
+  flex: 1;
   height: 0.8rem;
   margin-right: -0.2rem;
   background: url("/jyapp/big-member/image/landpage_new/seven_bg.png") no-repeat;
-  background-size: contain;
+  background-size: 100% 100%;
   color: #fff;
 }
 
 .buy_btn .j-button-now {
-  width: 2.4rem;
+  /* width: 2.4rem; */
+  flex: 1;
   height: 0.8rem;
   margin-right: 0.1rem;
   background: url("/jyapp/big-member/image/landpage_new/buy_bg.png") no-repeat;
-  background-size: contain;
+  background-size: 100% 100%;
   color: #fff;
 }
 
 .buy_btn .j-button-nowly {
-  width: 4.6rem;
+  /* width: 4.6rem; */
+  flex: 1;
   height: 0.8rem;
   margin-right: 0.1rem;
   border-radius: 0.4rem;

BIN
src/jfw/modules/app/src/web/staticres/jyapp/big-member/image/collect_bg.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/big-member/image/collect_checked.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/big-member/image/landpage_new/buy_bg.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/big-member/image/landpage_new/seven_bg.png


+ 5 - 7
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/ent_portrait.js

@@ -732,9 +732,7 @@ var vNode = {
                 return b.bidamount_share - a.bidamount_share
             })
             data.forEach(function (item){
-                if (item.bidamount_share) {
-                    arr.push(item.buyerClass,item.bidamount_share,item.bidamount_count,item.project_count,item.rate_avg)
-                }
+              arr.push(item.buyerClass,item.bidamount_share,item.bidamount_count,item.project_count,item.rate_avg)
             })
             var normal =['行业','中标金额占比','中标金额','项目数量','平均折扣率'];
             var newArr = that.arrTrans(5,arr);
@@ -744,10 +742,10 @@ var vNode = {
                 var tip = '';
                 var data = params.data;
                 params.marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params.color +'"></span>';
-                var percent = '<span style="padding-left:13px;">中标金额占比' + (data[1]*100).fixed(2) + '%</span></br>';
-                var scale = '<span style="padding-left:13px;">中标金额' + utils.moneyUnit(data[2].fixed(2)) + '</span></br>';
-                var count = '<span style="padding-left:13px;">项目数量' + data[3] + '个</span></br>';
-                var rate = (typeof data[4] === 'number' && !isNaN(data[4])) ? '<span style="padding-left:13px;">平均折扣率' + (data[4]*100).fixed(2) + '%</span></br>' : '';
+                var percent = '<span style="padding-left:13px;">中标金额占比' + (data[1]*100).fixed(2) + '%</span></br>';
+                var scale = '<span style="padding-left:13px;">中标金额' + utils.moneyUnit(data[2].fixed(2)) + '</span></br>';
+                var count = '<span style="padding-left:13px;">项目数量' + data[3] + '个</span></br>';
+                var rate = (typeof data[4] === 'number' && !isNaN(data[4])) ? '<span style="padding-left:13px;">平均折扣率' + (data[4]*100).fixed(2) + '%</span></br>' : '';
                 tip = params.marker + params.name +'<br/>' + percent + scale + count + rate
                 return tip;
             }

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

@@ -119,7 +119,7 @@ var vNode = {
             sessionStorage.setItem(this.sessStorageKey, JSON.stringify(this.$data))
             location.href = '/demo-member/demo_action.html'
         },
-        linkPage:function(item,title){ 
+        linkPage:function(item,title){
             console.log(this.userinfor.bidCounts)
             var url = item.isHigh ? item.url : item.dis_url;
             sessionStorage.setItem('main_root_scroll',this.pagescroll)
@@ -140,7 +140,7 @@ var vNode = {
                         location.href = url + '?isChild=true'
                         return;
                     }
-                    location.href = './bid_recharge'
+                    location.href = '/jyapp/frontPage/bidding/sess/index'
                 }
             }else{
                 sessionStorage.setItem(this.sessStorageKey, JSON.stringify(this.$data))

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 5 - 0
src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/marketing.css


BIN
src/jfw/modules/app/src/web/staticres/jyapp/structuredata/image/discount@2x.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/structuredata/image/how-to-buy@2x.png


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

@@ -157,9 +157,9 @@
                                         </div>
                                     </div>
                                 </div>
-                                <!-- 类似项目标书编制周期布 -->
+                                <!-- 类似项目标书编制周期布 -->
                                 <div class="a-item" v-show="isShow.bidCycle">
-                                    <p class="a-title">类似项目标书编制周期布</p>
+                                    <p class="a-title">类似项目标书编制周期布</p>
                                     <div class="much-bar">
                                         <div style="padding: 0 12px;font-size: 10px;color: #9B9CA3;line-height: 14px;">类似项目数量(个)</div>
                                         <ve-histogram ref="histogram" :init-options="initRendererSvg" @ready="onBarReady($event, name)" height="300px" :mark-point="barChartMarkPoint" :after-config="barChartConfig" :data="barChartData" :settings="chartSettings" :extend="chartOptions.barChart"></ve-histogram>

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

@@ -147,7 +147,7 @@
 </head>
 <body>
 <div class="j-container">
-    {{include "/big-member/header.html"}} 
+    {{include "/big-member/header.html"}}
     <div class="j-main" id="bid-balance" v-cloak>
         <div class="bg">
             <div>
@@ -182,7 +182,7 @@
             </div>
         </div>
     </div>
-</div>  
+</div>
 
 <!--S-必定需要预加载的资源-->
 <link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js />
@@ -265,7 +265,7 @@
                 // if(this.info.member_status == 4 && this.info.surplus == 0) {
                 //     this.setAlert();
                 // } else {
-                    location.href= './bid_recharge'
+                    location.href= '/jyapp/frontPage/bidding/sess/index'
                 // }
             }
         }

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
src/jfw/modules/app/src/web/templates/big-member/page_contrast.html


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

@@ -187,7 +187,7 @@
             </div>
         </div>
     </div>
-    
+
     <!--S-Vue-->
 </div>
 
@@ -267,7 +267,7 @@
                         } else {
                             _this.mstatus = false
                         }
-                        
+
                         // 中标企业余额
                         if(res.data.surplus) {
                             _this.surplusnum = res.data.surplus
@@ -300,7 +300,7 @@
                                 }
                                 _this.manyindustry = '已选择'+industrynum+'个行业'
                             }
-                            
+
                         }else{
                             if(JSON.stringify(res.data.industry) == "{}" || !res.data.industry){
                                 _this.manyindustry = '全部行业'
@@ -352,7 +352,7 @@
                 if(this.ischildaccount){
                     location.href = 'javascript:;'
                 }else{
-                    location.href = './bid_balance'
+                    location.href = '/jyapp/frontPage/bidding/sess/index'
                 }
             },
             // 点击完成

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

@@ -320,12 +320,14 @@
                 </div>
                 <div class="j-footer" v-show="isCantrial">
                     <div class="j-button-group">
-                        <div class="j-button-practice" @click="exper_fun()">
-                            <div data-need-bind-phone>免费体验</div>
-                        </div>
+                        <!-- <div class="j-button-practice" @click="exper_fun()">
+                            <div data-need-bind-phone>免费试用</div>
+                        </div> -->
+                        <!-- 取消试用 改为采集用户信息 -->
                         <div class="buy_btn" v-show="onlyBuy">
-                            <div class="sevendays j-btn" @click="sevenBtn()">
-                                <div data-need-bind-phone>试用7天</div>
+                            <div class="sevendays j-btn" @click="exper_fun()">
+                                <!-- <div data-need-bind-phone>试用7天</div> -->
+                                <div data-need-bind-phone>免费试用</div>
                             </div>
                             <div class="j-button-now j-btn" @click="linkBuy('sj','立即购买')">
                                 <div data-need-bind-phone>立即购买</div>
@@ -526,7 +528,7 @@
                         // } else {
                         //     _this.isCantrial = false
                         // }
-                        if (res.data.memberStatus > 0){
+                        if (res.data.memberStatus && res.data.memberStatus > 0){
                             _this.onlyBuy = false
                         } else {
                             if (res.data.is_member_trial) {
@@ -555,7 +557,9 @@
             // 功能体验
             exper_fun:function () {
                 this.census('免费体验')
-                location.href = '/demo-member/demo_action.html'
+                // 跳转到用户收集页面
+                // location.href = '/demo-member/demo_action.html'
+                location.href = '/jyapp/frontPage/bigmember/free/info_collect'
             },
             // 咨询客服
             consult:function(){

+ 222 - 0
src/jfw/modules/app/src/web/templates/frontRouter/bidding/sess/index.html

@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="keywords" content="剑鱼标讯">
+    <meta name="description" content="剑鱼标讯">
+    <meta name="author" content="剑鱼标讯">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+    <meta name="browsermode" content="application">
+    <meta name="x5-orientation" content="portrait">
+    <meta name="screen-orientation" content="portrait">
+    <meta name="x5-page-mode" content="app">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="format-detection" content="telephone=no">
+    <link rel="icon" href="/favicon.ico">
+    {{include "/common/meta.html"}}
+    <title>招标文件解读</title>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/rem.js'></script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}'></script>
+    <script src='/wxswordfish/share.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/weui.min.js'></script>
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/reset-css@4.0.1/reset.min.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/weui.min.css'>
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/p13.css'>
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    {{include "/common/js.html"}}
+    <style>
+        #bidding-page img {
+            width: 100%;
+        }
+        .fixed-bottom {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            cursor: pointer;
+        }
+        .weui-picker__item.is-now-select::after {
+            content: "次";
+        }
+
+        .custom-toast .weui-toast {
+            font-size: .3rem;
+            padding: 0.2rem;
+            width: auto;
+            max-width: 6rem;
+            min-height: 0;
+            height: auto;
+            top: 50%;
+            left: 50%;
+            margin-left: 0;
+            margin-top: -0.47rem;
+            transform: translateX(-50%) translateY(-50%);
+        }
+
+        .custom-toast .weui-icon_toast {
+            display: none;
+        }
+
+        .custom-toast .weui-toast__content {
+            margin: 0;
+        }
+        #js_dialog .weui-dialog{
+            border-radius: 8px;
+            max-width: 6rem;
+            /* left: .72rem; */
+            /* right: .72rem; */
+        }
+        #js_dialog .weui-dialog__hd{
+            padding: 0.32rem 0;
+            color: #171826;
+            font-size: .36rem;
+            line-height: .52rem;
+            font-weight: 500;
+            text-align: center;
+        }
+        #js_dialog .weui-dialog__bd{
+            padding-bottom: .48rem;
+            margin: 0;
+            color: #5F5E64;
+            font-size: .3rem;
+            line-height: 0.44rem;
+            text-align: center;
+        }
+        #js_dialog .weui-dialog__ft{
+            line-height: .92rem;
+            min-height: 0;
+        }
+        #js_dialog .weui-dialog__btn{
+            color: #2ABED1;
+            font-size: .36rem;
+            font-weight: 500;
+        }
+        #js_dialog .weui-dialog__btn:active {
+            background-color: #fff;
+        }
+        .icon-jy-check {
+            background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADb0lEQVRoQ+1XT0gUcRT+3jjS9ufi4qFD4AYhu2vtGkUl/Z3VyDJJySKoSG8F3eoSERp4COoadXMPQQcNjYqUcqeDUQeh3ZL9EwYbeAjctg6W6+rOL2ZxaXad0ZmdRVeYPc6+9/2+733v/eYNYZ3/aJ3zhyVgrR20HLAcMFkBq4VMFtB0uuWA6RKaBLAcMFlAzfS6QOisBPaYQHwG1BnzeZ6rBZelA85A8AQHvASIXyT9O+zzVq0LATJ5Ag0RYMsRZkA84vNuL3sBtYEJL4/MGIAtCvIpCRVNMd/O92UtwDUariGa/whgq5I8A2uL+upHtIalLGZAJg9KvyOQ4z9RtgBwHWGN4c3FrbmA2hfj1fxm/gNAO5RVZkTXI4Ln4Uq3nLaAbpF3HrWf4Yhsf+M/n8W7hNRKYEb/d/SJtk019jcADuXlEnrCgveuHjxNAa7R0FMiXFgEGZ5OJM9Nnxdm9IDqiVkkPwigOZ883QsLnlt6MOQYTQHuQHBecQ+DAWOZP/PtX1v3JvSCa8Z1i7zriH2QCKfz2oaxJ5HG+stG8PU6kMOMplOzxydPHZgyckhhrGs09IgIV5XPJWA4SslWCMKCEWxNAQ5RtG2U7P1LqgTEwSqPRRrd340clIt1i6FuMPQUkk9Rsj0uGJ+z5W8hUeTdUlUfiC7lWV2kCJcYuk0MvflYLEj063BYKG6+dF2j7tHQfRBuFlR8KgM0xXzemB4nnGLoCsfgLyzE7OxcQ7xl3w89GGoxugTIiWrWM7CEBL5N6zWfO1BlOZMvhTibk4Toyd3xYskvewupgaqJADAjgXVove7VlzOWSKczDd+a90yaIW9YgJzgFIM3OEYPClohpbazuAOh/QDeGlnOjArS3UJKYLf4+SKY5C94T6Tk3SXi2/VKji12OVsVAVmCgS8tgDSg3NsBtpAhrpOT+DG15Yyhoi0n0ChRrfiiHFAOZ+HHh/yfPNwEqs5rM53LmVFhpgRkZyL7+UcDyj5fQsLAcrbqAuQD6wITByUsDBVWPesGUW9E8NwxSkxvvGkHcgfVjow7+cpKeTXelnsmMeaPNtZ36SVTTFzJBGTb6fUnB23g+gmsnjHyR7jkNaPLmVERJRVg9PBSxFsCSlFFMxiWA2aqV4pcy4FSVNEMhuWAmeqVItdyoBRVNIOx7h34B4JTL0BLvpIQAAAAAElFTkSuQmCC");
+            background-size: cover;
+            display: inline-block;
+            width: 0.48rem;
+            height: 0.48rem;
+        }
+        #js_dialog .weui-dialog__hd .icon-jy-check{
+            margin-right: 0.08rem;
+        }
+        #js_dialog .weui-dialog__hd {
+            display: flex;
+            flex-direction: row;
+            align-items: center;
+            justify-content: center;
+        }
+    </style>
+</head>
+
+<body class="p13">
+    <div class="j-container">
+        <div class="j-header jy-app-header border-line-b">
+            <span class="header-left">
+                <span class="icon-back j-icon base-icon"></span>
+            </span>
+            <span class="header-title">招标文件解读</span>
+            <span class="header-right"></span>
+        </div>
+        <div class="js_dialog" id="js_dialog" style="opacity: 1;display: none;">
+            <div class="weui-mask"></div>
+            <div class="weui-dialog">
+                <div class="weui-dialog__hd">
+                    <i class="icon-jy-check"></i>
+                    <span>兑换成功!</span>
+                </div>
+                <div class="weui-dialog__bd">
+                    <div>请登录剑鱼标讯官网</div>
+                    <div style="color: #2ABED1">www.jianyu360.com</div>
+                    <div>点击【招标文件解读】使用</div>
+                </div>
+                <div class="weui-dialog__ft">
+                    <a href="javascript:" class="weui-dialog__btn weui-dialog__btn_primary know">我知道了</a>
+                </div>
+            </div>
+        </div>
+        <div class="j-main" id="bidding-page">
+            <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/bid-fileinter/h5/image/bg_1.png' alt="">
+            <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/bid-fileinter/h5/image/bg_2.png' alt="">
+            <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/bid-fileinter/h5/image/bg_3.png' alt="">
+            <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/bid-fileinter/h5/image/bg_4.png' alt="">
+            <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/bid-fileinter/h5/image/bg_5.png' alt="">
+            <div class="fixed-bottom">
+                <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/bid-fileinter/h5/image/button.png' alt="">
+            </div>
+        </div>
+    </div>
+
+    <script>
+      function goBack() {
+        history.back()
+        window.afterClickBack && window.afterClickBack()
+      }
+      ;(function () {
+        $('.fixed-bottom').on('click', showPicker)
+        $('.weui-dialog__btn.know').on('click', toggleShowDialog.bind(this, false))
+        function showPicker () {
+          weui.picker([1,2,3,4,5,6,7,8,9,10], {
+            title: '请选择兑换次数',
+            className: 'jymobile-datePicker start',
+            container: 'body',
+            defaultValue: [1],
+            onChange: function (result) {
+              var nowTArr = result.map(function (v) {
+                return String(v.label)
+              })
+              $(".jymobile-datePicker.start .weui-picker__item").each(function(){
+                var nowT = $(this).text()
+                $(this).removeClass('is-now-select')
+                if (nowTArr.indexOf(nowT) !== -1) {
+                  $(this).addClass('is-now-select')
+                }
+              })
+            },
+            onConfirm: function (result) {
+              ajaxExCount(result[0].value)
+            },
+            id: 'singleLinePicker'
+          });
+        }
+        function ajaxExCount (count) {
+          $.post('/bidfileinter/exchange/bidcount', { count: count }).done(function (r) {
+            if (r && r.error_msg === '') {
+              toggleShowDialog(true)
+            } else {
+              location.href = './middle'
+            }
+          }).fail(function (r) {
+            weui.toast('抱歉,请稍后重试', {
+              duration: 2000,
+              className: 'custom-toast',
+            })
+          })
+        }
+        function toggleShowDialog (type) {
+          var nDom = $('#js_dialog')
+          if (type) {
+            nDom.show()
+          } else {
+            nDom.hide()
+          }
+        }
+        try {
+          document.querySelector('.j-header .header-left').addEventListener('click', goBack)
+        } catch (error) {}
+      })()
+    </script>
+
+    <!--S-当前页面的资源-->
+    {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 95 - 0
src/jfw/modules/app/src/web/templates/frontRouter/bidding/sess/middle.html

@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="keywords" content="剑鱼标讯">
+    <meta name="description" content="剑鱼标讯">
+    <meta name="author" content="剑鱼标讯">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+    <meta name="browsermode" content="application">
+    <meta name="x5-orientation" content="portrait">
+    <meta name="screen-orientation" content="portrait">
+    <meta name="x5-page-mode" content="app">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="format-detection" content="telephone=no">
+    <link rel="icon" href="/favicon.ico">
+    {{include "/common/meta.html"}}
+    <title>招标文件解读</title>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/rem.js'></script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}'></script>
+    <script src='/wxswordfish/share.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/weui.min.js'></script>
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/reset-css@4.0.1/reset.min.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/weui.min.css'>
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    {{include "/common/js.html"}}
+    <style>
+        #bidding-page--middle img {
+            width: 100%;
+        }
+        #bidding-page--middle .j-main {
+            padding-top: 1.68rem;
+        }
+        #bidding-page--middle {
+            background: linear-gradient(180deg,#032e6f 0%, #0d3fa0 100%);
+        }
+        .button-group {
+            padding: 0 0.56rem;
+            box-sizing: border-box;
+        }
+        .tip-text {
+            margin-top: -1.2rem;
+            margin-bottom: 1.2rem;
+            font-size: 0.28rem;
+            text-align: center;
+            color: #ffffff;
+            line-height: 0.48rem;
+        }
+    </style>
+</head>
+
+<body class="p13">
+    <div class="j-container" id="bidding-page--middle">
+        <div class="j-header jy-app-header border-line-b">
+            <span class="header-left">
+                <span class="icon-back j-icon base-icon"></span>
+            </span>
+            <span class="header-title">招标文件解读</span>
+            <span class="header-right"></span>
+        </div>
+        <div class="j-main">
+            <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/bid-fileinter/h5/image/bg_6.png' alt="">
+            <div class="tip-text">您的剑鱼币不足,您可选择</div>
+            <div class="button-group">
+                <img id="goMoney" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/bid-fileinter/h5/image/cButton.png' alt="">
+                <img id="goShare" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/bid-fileinter/h5/image/sButton.png' alt="">
+            </div>
+        </div>
+    </div>
+    <script>
+      function goBack() {
+        history.back()
+        window.afterClickBack && window.afterClickBack()
+      }
+      ;(function () {
+        $('#goMoney').on('click',function () {
+          location.href = '/page_points_mobile/pay'
+        })
+        $('#goShare').on('click',function () {
+          location.href = '/page_points_mobile/invite'
+        })
+        try {
+          document.querySelector('.j-header .header-left').addEventListener('click', goBack)
+        } catch (error) {}
+      })()
+    </script>
+
+    <!--S-当前页面的资源-->
+    {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 221 - 0
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/info_collect.html

@@ -0,0 +1,221 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+
+<head>
+    <title>剑鱼大会员</title>
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+
+    <!--S-当前页必定需要预加载的资源-->
+    <link rel="preload" as="style" href=//cdn.jsdelivr.net/npm/reset-css@4.0.1/reset.min.css />
+    <link rel="preload" as="style" href=//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css />
+    <link rel="preload" as="style" href=//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css />
+    <link rel="preload" as="style" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_info_collect.css?v={{Msg "seo" "mod_version"}}'/>
+    <!--E-当前页必定需要预加载的资源-->
+
+
+    <!--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.8.2/lib/index.css />
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_info_collect.css?v={{Msg "seo" "mod_version"}}' />
+    <!--E-当前页面的css资源-->
+    <script>
+        try {
+            window.JyObj.hiddenBottom('0')
+        } catch (e) {
+            console.log('error: app not function')
+        }
+    </script>
+</head>
+
+<body>
+    <div class="j-container">
+        {{include "/big-member/header.html"}}
+        <div class="j-main" id="v-info-collect" v-cloak>
+            <div class="j-container">
+                <div class="j-main info-collect">
+                  <div class="collect-main">
+                    <div class="step" v-if="step == 1">
+                      <div class="c-title">剑鱼大会员</div>
+                      <div class="c-tips">- 请完善您的信息后,免费体验大会员 -</div>
+                      <div class="c-form">
+                        <van-field
+                          v-model.trim="info.name"
+                          label="姓名"
+                          placeholder="请输入姓名"
+                          :error-message="errorMsg.name"
+                          maxLength="20"
+                          @blur="checkNameReg"
+                        ></van-field>
+                        <van-field
+                          v-model.trim="info.phone"
+                          label="手机号"
+                          placeholder="请输入手机号"
+                          type="tel"
+                          maxLength="11"
+                          @blur="checkPhoneReg"
+                          :error-message="errorMsg.phone"
+                        ></van-field>
+                        <van-field
+                          v-model.trim="info.company"
+                          label="公司名称"
+                          placeholder="请输入公司名称"
+                          rows="1"
+                          autosize
+                          type="textarea"
+                          @blur="checkCompanyReg"
+                          maxLength="50"
+                          :error-message="errorMsg.company"
+                        ></van-field>
+                        <van-field
+                          v-model.trim="info.job"
+                          label="职位"
+                          placeholder="请输入职位(非必填)"
+                          maxLength="30"
+                        ></van-field>
+                      </div>
+                      <button type="button" :disabled="btnDisabled" class="ue-btn" @click="confirmHandle">立即体验</button>
+                    </div>
+                    <div class="step" v-else-if="step == 2">
+                      <div class="success-main">
+                        <i class="icon-success"></i>
+                        <p class="success-title">提交成功</p>
+                      </div>
+                      <div class="success-tip">我们的客户经理会在24小时内尽快与您联系。</div>
+                      <button type="button" class="ue-btn" @click="history.back()">确定</button>
+                    </div>
+                  </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script rel="preload" as="script" src=//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js> </script>
+    <script rel="preload" as="script" src=//cdn.jsdelivr.net/npm/vant@2.8.2/lib/vant.min.js> </script>
+    <script rel="preload" as="script" src=//cdn.jsdelivr.net/npm/zepto@1.2.0/dist/zepto.min.js> </script>
+    <script src=//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js> </script>
+    <script src=//cdn.jsdelivr.net/npm/vant@2.8.2/lib/vant.min.js> </script>
+    <script src=//cdn.jsdelivr.net/npm/zepto@1.2.0/dist/zepto.min.js> </script>
+    {{include "/big-member/commonjs.html"}}
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/jquery.min.js'></script>
+
+    <script>
+    var vNode = {
+        delimiters: ['${', '}'],
+        el: '#v-info-collect',
+        data: {
+            info: {
+              name: '',
+              phone: '',
+              company: '',
+              job: ''
+            },
+            errorMsg: {
+              name: '',
+              phone: '',
+              company: '',
+              job: ''
+            },
+            step: 1
+        },
+        created () {},
+        computed: {
+          btnDisabled: function () {
+            var regName = this.info.name.length >= 2
+            var regPhone = /^1[3456789]\d{9}$/.test(this.info.phone)
+            var regCom = this.info.company.length >= 2
+            return !(regName && regPhone && regCom)
+          }
+        },
+        methods: {
+          showLoading: function() {
+            var loading = this.$toast.loading({
+              duration: 0,
+              forbidClick: true,
+              message: 'loading...',
+            })
+            return loading
+          },
+          showToast: function (message) {
+            this.$toast({
+              duration: 1500,
+              forbidClick: true,
+              message: message,
+            })
+          },
+          checkNameReg: function () {
+            var pass = this.info.name.length >= 2
+            if (this.info.name) {
+              if (pass) {
+                this.errorMsg.name = ''
+              } else {
+                this.errorMsg.name = '姓名格式不正确'
+              }
+            } else {
+              this.errorMsg.name = ''
+            }
+            return pass
+          },
+          checkPhoneReg: function () {
+            // /^1[3|7|8]\d{9}$|^19[8-9]\d{8}$|^166\d{8}|^15[0-3|5-9]\d{8}|^14[5|7]\d{8}$/
+            var pass = /^1[3456789]\d{9}$/.test(this.info.phone)
+            if (this.info.phone) {
+              if (pass) {
+                this.errorMsg.phone = ''
+              } else {
+                this.errorMsg.phone = '手机号格式不正确'
+              }
+            } else {
+              this.errorMsg.phone = ''
+            }
+            return pass
+          },
+          checkCompanyReg: function () {
+            var pass = this.info.company.length >= 2
+            if (this.info.company) {
+              if (pass) {
+                this.errorMsg.company = ''
+              } else {
+                this.errorMsg.company = '公司名称格式不正确'
+              }
+            } else {
+              this.errorMsg.company = ''
+            }
+            return pass
+          },
+          // 提交
+          confirmHandle: function() {
+            var _this = this
+            var loading = _this.showLoading()
+            var obj = {
+              name: _this.info.name,
+              phone: _this.info.phone,
+              company: _this.info.company,
+              position: _this.info.job
+            }
+            $.ajax({
+              type:'POST',
+              url:'/salesLeads/member/trialInfo',
+              data: obj,
+              success:(res)=>{
+                if (res) {
+                  loading.clear()
+                  if (res.status === 1) {
+                    _this.step = 2
+                  } else {
+                    _this.showToast(res.msg || '提交失败')
+                  }
+                }
+              }
+            })
+          }
+        }
+    }
+    new Vue(vNode)
+    </script>
+    {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 36 - 2
src/jfw/modules/app/src/web/templates/structeddata/marketing.html

@@ -16,7 +16,7 @@
 	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/base.css?v={{Msg "seo" "version"}}">
 	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/weui.min.css?v={{Msg "seo" "version"}}">
 	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/marketing.css?v={{Msg "seo" "version"}}1">
+	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/marketing.css?v={{Msg "seo" "version"}}">
   <style>
     .app-layout-header{
       border-bottom: 0px!important;
@@ -143,7 +143,6 @@
 			</div>
 
 			<!-- 结构化招标数据能干什么 -->
-
 			<div class="dowhat">
 				<div class="dowhat_content">
 					<div class="content_title">
@@ -190,6 +189,41 @@
 					</ul>
 				</div>
 			</div>
+            <!-- 优惠信息 -->
+            <div class="module buy-discount">
+                <div class="module-content">
+                    <div class="how-to-buy">
+                        <img class="s-img" src='{{Msg "seo" "cdn"}}/jyapp/structuredata/image/how-to-buy@2x.png' alt="">
+                    </div>
+                    <div class="discount">
+                        <img class="s-img" src='{{Msg "seo" "cdn"}}/jyapp/structuredata/image/discount@2x.png' alt="">
+                    </div>
+                    <div class="c-list">
+                        <div class="c-list-item">
+                            <span class="c-l-item-icon icon-discount-1"></span>
+                            <div class="c-l-item-text">
+                                支持按需勾选数据并导出<br />只为你挑选的数据付费
+                            </div>
+                        </div>
+                        <div class="c-list-item">
+                            <span class="c-l-item-icon icon-discount-2"></span>
+                            <div class="c-l-item-text">
+                                单条数据重复导出仅计费一次<br />不再为重复数据付费
+                            </div>
+                        </div>
+                        <div class="c-list-item">
+                            <span class="c-l-item-icon icon-discount-3"></span>
+                            <div class="c-l-item-text">
+                                预存金额有效期<span class="color-red">长达3年</span><br />充值一次即可随时导出
+                            </div>
+                        </div>
+                    </div>
+                    <a class="call-phone" onclick="tel('400-108-6670')">
+                        <span class="icon-phone"></span>
+                        立即咨询:400-108-6670
+                    </a>
+                </div>
+            </div>
 			<!-- 已使用结构化招标数据的部分企业 -->
 			<div class="company">
 				<div class="company_content">

+ 9 - 1
src/jfw/modules/bidfileinter/src/config.json

@@ -57,5 +57,13 @@
 	"alarmMail":["zhangxinlei@topnet.net.cn","745811385@qq.com"],
 	"fileMaxSize":30,
 	"checkFailTask":"0 */1 * * * ?",
-	"failTime":5
+	"failTime":5,
+	"integralUrl":{
+		"balance":"http://0.0.0.0:8888/integralBalanceCheck",
+		"consume":"http://0.0.0.0:8888/integralConsume"
+	},
+	"appids":{
+		"jianyu":"10000"
+	},
+	"pointCount":500
 }

+ 60 - 0
src/jfw/modules/bidfileinter/src/service/action/exchange.go

@@ -0,0 +1,60 @@
+package action
+
+import (
+	. "api"
+	"fmt"
+	"log"
+	. "service/config"
+	"util"
+
+	"github.com/go-xweb/xweb"
+)
+
+type Exchange struct {
+	*xweb.Action
+	bidcount xweb.Mapper `xweb:"/exchange/bidcount"` //剑鱼币兑换招标文件解读次数
+}
+
+func init() {
+	xweb.AddAction(&Exchange{})
+}
+
+//剑鱼币兑换招标文件解读次数
+func (e *Exchange) Bidcount() {
+	if !R.CheckReqParam(e.ResponseWriter, e.Request, "count") {
+		return
+	}
+	r := func() Result {
+		userid, _ := e.GetSession("userId").(string)
+		if userid == "" {
+			return Result{Data: false, Error_msg: "未登录"}
+		}
+		integral := util.Integral(userid)
+		if integral == -1 {
+			return Result{Data: false, Error_msg: "获取剑鱼币失败"}
+		}
+		count, _ := e.GetInteger("count")
+		if count == 0 {
+			return Result{Data: false, Error_msg: fmt.Sprintf("兑换%d次错误", count)}
+		}
+		needIntegral := Sysconfig.PointCount * count
+		if needIntegral > integral {
+			return Result{Data: false, Error_msg: "剑鱼币余额不足"}
+		}
+		name := fmt.Sprintf("兑换%d次", count)
+		if util.Consume(userid, name, "", 2006, needIntegral) {
+			//增加次数
+			if MQFW.UpdateById("user", userid, map[string]interface{}{
+				"$inc": map[string]interface{}{
+					"i_bidfileCount": count,
+				},
+			}) {
+				return Result{Data: true, Error_msg: ""}
+			}
+			log.Println("增加次数失败:", count, userid)
+			return Result{Data: false, Error_msg: "增加次数失败"}
+		}
+		return Result{Data: false, Error_msg: "兑换失败"}
+	}()
+	e.ServeJson(r)
+}

+ 2 - 1
src/jfw/modules/bidfileinter/src/service/action/info.go

@@ -156,7 +156,8 @@ func (i *Info) Power() {
 			bidfile_count := qutil.If((*data)["i_bidfileCount"] == nil, 0, (*data)["i_bidfileCount"])
 			count += qutil.IntAll(bidfile_count)
 		}
-		return Result{Data: M{"bidfile_count": count}}
+		points := util.Integral(userid)
+		return Result{Data: M{"bidfile_count": count, "integral": points}}
 	}()
 	i.ServeJson(r)
 }

+ 1 - 1
src/jfw/modules/bidfileinter/src/service/action/upload.go

@@ -166,7 +166,7 @@ func (m *Files) LoadZbFile() {
 	replace := "/shareFile/bidfileinter/"
 	fileurl = strings.Replace(fileurl, replace, config.Sysconfig.UploadPath, -1) //替换路径
 	r := func() Result {
-		if util.BidFilePower(userid, md5) && util.MemberBidFilePower(userid, md5) {
+		if util.BidFilePower(userid, md5) && util.MemberBidFilePower(userid, md5) && util.JyPointBidFilePower(userid) {
 			return Result{Data: nil, Error_msg: "用户没有解读次数"}
 		}
 		res := map[string]interface{}{}

+ 3 - 0
src/jfw/modules/bidfileinter/src/service/config/config.go

@@ -37,6 +37,9 @@ type config struct {
 	FileMaxSize       int
 	CheckFailTask     string
 	FailTime          int
+	IntegralUrl       map[string]interface{}
+	Appids            map[string]interface{}
+	PointCount        int
 }
 
 type mgoConf struct {

+ 124 - 20
src/jfw/modules/bidfileinter/src/util/util.go

@@ -2,14 +2,19 @@ package util
 
 import (
 	"archive/zip"
+	"encoding/json"
 	"fmt"
 	"io"
+	"io/ioutil"
 	"log"
+	"net/http"
+	"net/url"
 	"os"
 	"path/filepath"
 	qutil "qfw/util"
 	"qfw/util/elastic"
 	"service/config"
+	"strconv"
 	"strings"
 	"time"
 
@@ -294,24 +299,26 @@ func UpdateBidHistory(project_md5 string, project *map[string]interface{}) bool
 
 //开始解读 修改解读时间 并扣费
 func UpdateBidHistoryStart(userid, md5Str string) bool {
-	mainid, member_status := MainId(userid)                                                                                                                                                              //大会员主账号id 大会员等级
-	memberCount := BigmemberBidfileCount(mainid)                                                                                                                                                         //大会员剩余招标文件解读次数
-	isunread := !IsRead(md5Str, mainid)                                                                                                                                                                  //大会员是否解读过该文件
+	mainid, member_status := MainId(userid)      //大会员主账号id 大会员等级
+	memberCount := BigmemberBidfileCount(mainid) //大会员剩余招标文件解读次数
+	isunread := !IsRead(md5Str, mainid)          //大会员是否解读过该文件
 	isreadByMyself := config.Mysql.CountBySql(`select count(1) from bidfile_history 
 						where project_md5=? and user_id =? AND is_delete=0  
 						AND explain_time IS NOT NULL`, md5Str, userid) > 0 //个人是否解读过
+
 	if (memberCount > 0 || !isunread) && member_status > 0 {
-		bidcount := getBAmountInfo(mainid, 11)
-		//插入历史记录
-		config.Mysql.Insert("bigmember_consume", map[string]interface{}{
-			"s_userid":             userid,
-			"s_master_userid":      mainid,
-			"s_serviceid":          11,
-			"l_createtime":         time.Now().Format(qutil.Date_Full_Layout),
-			"i_updatecount_before": bidcount,
-			"i_updatecount_after":  qutil.If((isunread && !isreadByMyself), bidcount-1, bidcount),
-			"s_phone":              Phone(userid),
-		})
+		if bidcount := getBAmountInfo(mainid, 11); bidcount > 0 {
+			//插入历史记录
+			config.Mysql.Insert("bigmember_consume", map[string]interface{}{
+				"s_userid":             userid,
+				"s_master_userid":      mainid,
+				"s_serviceid":          11,
+				"l_createtime":         time.Now().Format(qutil.Date_Full_Layout),
+				"i_updatecount_before": bidcount,
+				"i_updatecount_after":  qutil.If((isunread && !isreadByMyself), bidcount-1, bidcount),
+				"s_phone":              Phone(userid),
+			})
+		}
 	}
 	//已经解读过
 	if isreadByMyself {
@@ -342,12 +349,30 @@ func UpdateBidHistoryStart(userid, md5Str string) bool {
 		}
 		//
 	} else {
-		//更改个人次数
-		up2 = config.MQFW.UpdateById("user", userid, map[string]interface{}{
-			"$inc": map[string]interface{}{
-				"i_bidfileCount": -1,
-			},
-		})
+		r, ok := config.MQFW.FindById("user", userid, `{"i_bidfileCount":1}`)
+		if r != nil && len(*r) > 0 && ok {
+			i_bidfileCount := qutil.IntAll((*r)["i_bidfileCount"])
+			if i_bidfileCount > 0 {
+				//更改个人次数
+				up2 = config.MQFW.UpdateById("user", userid, map[string]interface{}{
+					"$inc": map[string]interface{}{
+						"i_bidfileCount": -1,
+					},
+				})
+			} else {
+				rdata := config.Mysql.FindOne("bidfile_history", map[string]interface{}{
+					"project_md5": md5Str,
+					"user_id":     userid,
+					"is_delete":   0,
+				}, "upload_filename", "")
+				filename := ""
+				if rdata != nil {
+					filename = qutil.ObjToString((*rdata)["upload_filename"])
+				}
+				//积分扣除
+				up2 = Consume(userid, filename, md5Str, 2005, config.Sysconfig.PointCount)
+			}
+		}
 	}
 	return up1 && up2
 }
@@ -408,6 +433,14 @@ func MemberBidFilePower(userid, md5 string) bool {
 		and i_frequency >0 and i_status=0`, userid) == 0
 }
 
+//判断用户积分是否可以进行招标文件解读 true:不行 false可以
+func JyPointBidFilePower(userid string) bool {
+	if integral := Integral(userid); integral >= config.Sysconfig.PointCount {
+		return false
+	}
+	return true
+}
+
 //return 主账号id、大会员等级
 func MainId(userid string) (string, int) {
 	member_status := 0
@@ -456,3 +489,74 @@ func Phone(userid string) string {
 	}
 	return ""
 }
+
+//获取用户积分
+func Integral(userid string) int {
+	appid, _ := config.Sysconfig.Appids["jianyu"].(string)
+	value := fmt.Sprintf("?userId=%s&appId=%s", userid, appid)
+	href, _ := config.Sysconfig.IntegralUrl["balance"].(string)
+	res, err := http.Get(href + value)
+	if err != nil {
+		log.Println(err.Error())
+		return -1
+	}
+	defer res.Body.Close()
+	bs, _ := ioutil.ReadAll(res.Body)
+	resMap := map[string]interface{}{}
+	err = json.Unmarshal([]byte(bs), &resMap)
+	if err != nil {
+		log.Println("json.unmarshal err", resMap)
+		return -1
+	}
+	if qutil.IntAll(resMap["Code"]) == 1 {
+		return qutil.IntAll(resMap["Data"])
+	}
+	return -1
+}
+
+//消耗剑鱼币接口
+/*
+name :消耗剑鱼币列表说明 : 解读文件名称/兑换N次
+md5Str :文件md5值 如果是剑鱼币兑换则传""
+pointType :2005招标文件解读消耗剑鱼币 2006招标文件解读兑换次数
+*/
+func Consume(userid, name, md5Str string, pointType, pointCount int) bool {
+	abstract := ""
+	bytes := []byte{}
+	if name != "" {
+		bytes, _ = json.Marshal(map[string]interface{}{
+			"name": name,
+		})
+		abstract = string(bytes)
+	}
+	href, _ := config.Sysconfig.IntegralUrl["consume"].(string)
+	appid, _ := config.Sysconfig.Appids["jianyu"].(string)
+	data := url.Values{
+		"userId":     []string{userid},
+		"appId":      []string{appid},                    //剑鱼标识
+		"pointType":  []string{strconv.Itoa(pointType)},  //招标文件解读
+		"sourceType": []string{"积分消耗"},                   //业务类型
+		"sourceId":   []string{md5Str},                   //订单号
+		"point":      []string{strconv.Itoa(pointCount)}, //积分
+		"endDate":    []string{""},                       //积分类型永久:true、时效:false
+		"abstract":   []string{abstract},                 //
+	}
+	//
+	res, err := http.PostForm(href, data)
+	if err != nil {
+		log.Println(err.Error())
+	}
+	defer res.Body.Close()
+	bs, _ := ioutil.ReadAll(res.Body)
+	log.Println("返回内容:" + string(bs))
+	resMap := map[string]interface{}{}
+	err = json.Unmarshal([]byte(bs), &resMap)
+	if err != nil {
+		log.Println("json.unmarshal err", resMap)
+	} else {
+		if qutil.IntAll(resMap["Code"]) == 1 {
+			return true
+		}
+	}
+	return false
+}

+ 2 - 2
src/jfw/modules/bigmember/src/service/analysis/forecastwinner.go

@@ -314,8 +314,6 @@ func (this *Analysis) FWStatus() {
 			if isFFalse > 0 {
 				if rfrExist && f_id != "" {
 					go func() {
-						//预测失败 清除redis数据
-						ClearRedisInfo(userId)
 						//发送失败邮件提醒
 						getRes := new(util.ForecastS)
 						if redis.GetNewInterface("other", redis_forecast_status+userId, &getRes) != nil {
@@ -326,6 +324,8 @@ func (this *Analysis) FWStatus() {
 							s_nickname, _ = this.GetSession("app_name").(string)
 						}
 						SaveFalseLogAndSendMail(userId, falseMsg, f_id, s_nickname, *getRes)
+						//预测失败 清除redis数据
+						ClearRedisInfo(userId)
 					}()
 				}
 				regMap.Data = map[string]interface{}{

+ 7 - 0
src/jfw/modules/bigmember/src/service/bidfile/bidfile.go

@@ -4,6 +4,7 @@ import (
 	. "api"
 	"db"
 	"log"
+	"mongodb"
 	qu "qfw/util"
 	"qfw/util/jy"
 	"time"
@@ -51,6 +52,12 @@ func (b *Bidfile) History() {
 			delete(v, "user_id")
 		}
 		bidfileCount, _ = util.IsBidfilePower(mainid)
+		person, ok := db.Mgo.FindOneByField("user", map[string]interface{}{
+			"_id": mongodb.StringTOBsonId(userid),
+		}, `{"i_bidfileCount":1}`)
+		if ok && person != nil && len(*person) > 0 {
+			bidfileCount += qu.IntAll((*person)["i_bidfileCount"])
+		}
 		bidfile_endtime := "2021年11月15日" //目前招标文件解读到11/15到期
 		bed := GetTime("2006年01月02日", bidfile_endtime)
 		d := db.Mysql.SelectBySql(`SELECT l_endtime AS endtime FROM bigmember_service_user 

+ 1 - 1
src/jfw/modules/bigmember/src/service/use/use.go

@@ -460,7 +460,7 @@ func (u *Use) Equity() {
 				"surplus":        surplus,
 				"isSubCount":     isSubCount,
 				"power":          power,
-				"bidfilesurplus": bidfilesurplus,
+				"bidfilesurplus": bidTotalCount, //bidfilesurplus大会员次数 4.1版本不区分个人还是大会员
 				"isbidfilePower": overdue,
 				"combo":          Combo(userid, i_member_status),
 				"bidTotalCount":  bidTotalCount,

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
src/jfw/modules/subscribepay/src/dataexport.json


+ 7 - 0
src/jfw/tag/msg.go

@@ -56,6 +56,13 @@ func readproperty(mtype, key string) string {
 		if key == "version" && config.Seoconfig_Version != "" {
 			return config.Seoconfig_Version
 		}
+		if strings.HasSuffix(key, "_v") {
+			avk := applyVersion[key]
+			if avk != "" {
+				return avk
+			}
+			return config.Seoconfig_Version
+		}
 		tmp := util.GetPropertie(key, config.Seoconfig)
 		if tmp == nil {
 			return ""

+ 65 - 0
src/jfw/tag/tag.go

@@ -2,10 +2,75 @@ package tag
 
 import (
 	"jfw/config"
+	"log"
 	"qfw/util"
+	"strings"
+	"time"
+
+	"github.com/fsnotify/fsnotify"
 )
 
+var applyVersion = map[string]string{}
+var applyAction = map[string]int64{}
+var applyTime int64 = 5
+
 //自定义标签支持,读取配置文件
 func init() {
+	//应用版本号
+	seoConfigInit()
+	//监控目录
+	go watchDir("./seo.json")
+}
+
+//
+func seoConfigInit() {
 	util.ReadConfig("./seo.json", &config.Seoconfig)
+	if config.Seoconfig["applyVersion"] != nil {
+		applyV := util.ObjArrToStringArr(config.Seoconfig["applyVersion"].([]interface{}))
+		if len(applyV) > 0 {
+			for _, v := range applyV {
+				if len(strings.Split(v, ":")) > 0 {
+					name := strings.Split(v, ":")[0]
+					version := strings.Split(v, ":")[1]
+					applyVersion[name] = version
+				}
+			}
+		}
+	}
+}
+
+//监控目录
+func watchDir(dir string) {
+	watch, err := fsnotify.NewWatcher()
+	if err != nil {
+		log.Println("watch new err", err)
+	}
+	defer watch.Close()
+	err = watch.Add(dir)
+	if err != nil {
+		log.Println("watch add err", err)
+	}
+	for {
+		select {
+		case ev := <-watch.Events:
+			{
+				if ev.Op&fsnotify.Write == fsnotify.Write {
+					now := time.Now().Unix()
+					if applyAction[ev.Name] != 0 && now-applyAction[ev.Name] < applyTime {
+						continue
+					}
+					log.Println("修改文件 : ", ev.Name)
+					applyAction[ev.Name] = now
+					time.Sleep(1 * time.Second)
+					//更新应用版本号
+					seoConfigInit()
+				}
+			}
+		case err := <-watch.Errors:
+			{
+				log.Println("watch error : ", err.Error())
+				return
+			}
+		}
+	}
 }

+ 8 - 8
src/web/staticres/bid-fileinter/css/bidfile_list.css

@@ -16,7 +16,7 @@
     background-size: 71px 90px;
     background-position: 23px 0;
   }
-  
+
 .consultPopup .consult_tel {
     padding-top: 21px;
     width: 100%;
@@ -25,19 +25,19 @@
     background: #2CB7CA;
     border-radius: 8px;
   }
-  
+
 .consultPopup .consult_tel .runnow {
     margin-left: 23px;
     font-size: 16px;
     line-height: 24px;
     color: #fff;
   }
-  
+
 .consultPopup .consult_tel .phone-icon-num {
     margin: 5px 0 0 23px;
     display: flex;
   }
-  
+
 .consultPopup .consult_tel .phone-icon-num .phone-icon {
     display: flex;
     background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAxCAYAAACcXioiAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJQSURBVHgB7ZmBceMgEEXXV4FK0HXgElyCr4JLCe4g6iC+CuwOfB0oqcDpgHTgdPADAWc2CMQayTJJ9GYYjwRa+OwuIJloZmZm5scAYAWL0qXV5cHco68CE+BjBN3rUlPJ9AjgQjY0JmZWdGl0WdJAtI3KibjTZavLMSLkMIo33OAVM/yXRsb1sY94o6ZcAoO/moie/sx1RTk4N8fIEuEGuXFhVAXqq4A3WroU2CWuHlsEukm8QyBMAiLkic0GrcYWgfgqdO+1q/A5nE6QhhLsCoBriNBtlwjnlWGXENtIO/GXNoXxPXG2pzw7D147HkonqfEQKiFC7uKuEOXZWrH6VayuzygyRCjKxNk8MVutV69Y3VZi8HShCNN+0C4Nu9NzKla3jYmLGTuiH8VEDB6867Py+lizOj5ZHU//Cth7on5qXcxMPOrye7FYPNNAtI1X/fPi9XHmNXLfPuvfgE0Uye73R3f8n0bC9Vu7y+fzxLhw+vCIvr9PGarQnwfvUCF0Qsi581/qQeQesqbAJWmKhkoG4TO6z+AV6GoIc0Gh5PdY2LN7CrNvFJ0PrUDEgUoF3bNKjB2Vih7cGjIOl4QT7PtBTVOA7oErxlEyKNgPWcBI5ykRkC2tBtUngg0ek4qAXVpTp1U+qLuAjWVP++JEGHZwn1HczKfe7IoUwVHfScSmBBHSxI6JaG4qwgmRLrE5ImqaAthwkOzYl4pY01Qg/kU7V8SebgHyQkp5IvZ0SxD/40IiYrqwScGESPOjoVKBPdWaL22tJ0jB7dg0MzMtb9QwnCvBo0S0AAAAAElFTkSuQmCC) no-repeat;
@@ -45,7 +45,7 @@
     width: 24px;
     height: 24px;
   }
-  
+
 .consultPopup .consult_tel .phone-icon-num .phone-num {
     margin-left: 4px;
     font-size: 16px;
@@ -87,9 +87,9 @@
     display: flex;
     justify-content: center;
     align-items: center;
-    margin-left: 20px;
-    width: 104px;
-    height: 46px;
+    margin-left: 24px;
+    width: 90px;
+    height: 44px;
     background: #F5FEFF;
     /* 2CB7CA */
     border: 1px solid #2CB7CA;

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 0
src/web/staticres/bid-fileinter/css/my-modal.css


BIN
src/web/staticres/bid-fileinter/h5/image/bg_1.png


BIN
src/web/staticres/bid-fileinter/h5/image/bg_2.png


BIN
src/web/staticres/bid-fileinter/h5/image/bg_3.png


BIN
src/web/staticres/bid-fileinter/h5/image/bg_4.png


BIN
src/web/staticres/bid-fileinter/h5/image/bg_5.png


BIN
src/web/staticres/bid-fileinter/h5/image/bg_6.png


BIN
src/web/staticres/bid-fileinter/h5/image/button.png


BIN
src/web/staticres/bid-fileinter/h5/image/cButton.png


BIN
src/web/staticres/bid-fileinter/h5/image/sButton.png


+ 2 - 2
src/web/staticres/bid-fileinter/js/common.js

@@ -159,6 +159,7 @@ var isAnalysis = false
       url:'/bidfileinter/files/loadZbFile',
       data:documentParams,
       success:function(res){
+        typeof window.onUpDocSuccessCallback === 'function' ? window.onUpDocSuccessCallback() : null
         console.log(res)
         if(res.error_msg == ""){
           if(res.data.status == 1){
@@ -178,7 +179,6 @@ var isAnalysis = false
           $('#m-modal .temClose').show()
           nameBtn('重新解读',false)
         }
-
       },
       error:function(err){
         console.log(err)
@@ -319,7 +319,7 @@ var isAnalysis = false
       } else {
         sessionStorage.removeItem('paramObj');
         var href = window.location.href;
-        var orderHref= './bidfile_createorder'
+        var orderHref= '/swordfish/integral/index/recharge'
         if (href.indexOf("?source=")>-1){
         		orderHref+="?source=baidusem";
         }

+ 7 - 4
src/web/staticres/bid-fileinter/js/my-modal.js

@@ -29,7 +29,7 @@ var MyModal = (function() {
 		    var typ="招标文件解读-pc"
 		    if (source!=null){
 		      typ+="-"+source;
-		    }  
+		    }
         	  //百度统计
 	      if ($(this).text() == '开始解读'){
 		    try {
@@ -37,7 +37,7 @@ var MyModal = (function() {
 		    } catch (e) {
 		       console.log('未初始化百度统计', e);
 		    }
-		  }	
+		  }
           // 如果没有登录,显示登录弹框
           if(!loginflag){
             that.hide();
@@ -51,7 +51,7 @@ var MyModal = (function() {
               url:'/bidfileinter/info/power',
               success:function(res){
                 console.log(res)
-                if(res.data.bidfile_count != 0){
+                if(res.data.bidfile_count > 0 || res.data.integral >= 500){
                   $('#m-modal .up_tips').hide()
                   $("#m-modal .progressbar_load").removeClass('opersuccess');
                   $('#m-modal .progressbar_load').addClass('load_read')
@@ -59,6 +59,9 @@ var MyModal = (function() {
                   i=102
                   getDocument()
                 }else{
+                  if (res.data.integral) {
+                    $('span[data-name="my-integral"]').text(res.data.integral)
+                  }
                   // 如果没有次数,且已经解读过该文件,可正常解读,
                   // 如果没有次数,且没有解读过该文件, 弹出去购买弹窗
                   if(isAnalysis){
@@ -148,7 +151,7 @@ var MyModal2 = (function() {
 				var href ='/bid/pc/page/bidfile_list';
 			    if (source!=null){
 			      href+="?source="+source;
-			    }  
+			    }
 				location.href = href;
 				that.hide();
 			});

+ 129 - 0
src/web/staticres/big-member/css/page_index.css

@@ -916,3 +916,132 @@
 .swiper-container-horizontal>.swiper-pagination-bullets, .swiper-pagination-custom, .swiper-pagination-fraction {
     bottom: -6px;
 }
+/* 采集信息弹框样式 */
+#collect-dialog .dialog-container {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  padding: 20px;
+  width: 560px;
+  transform: translateX(-50%) translateY(-50%);
+  background: #ffffff;
+  border-radius: 16px;
+  transition: all 2s linear;
+  z-index: 1038;
+}
+#collect-dialog .dialog-header {
+  position: relative;
+  text-align: center;
+}
+#collect-dialog .dialog-title{
+  padding: 28px 0 32px;
+  font-size: 18px;
+  line-height: 28px;
+  color: #1d1d1d;
+  text-align: center;
+}
+
+#collect-dialog .dialog-content {
+  padding: 10px 28px;
+  height: 60%;
+  text-align: center;
+}
+#collect-dialog .custom-control{
+  display: flex;
+  align-items: center;
+  margin-bottom: 12px;
+}
+#collect-dialog .custom-label{
+  width: 80px;
+  white-space: nowrap;
+  text-align: RIGHT;
+  color: #686868;
+  line-height: 22px;
+  margin-right: 16px;
+}
+#collect-dialog .custom-input{
+  flex: 1;
+}
+#collect-dialog .custom-input input{
+  width: 100%;
+  height: 36px;
+  font-size: 14px;
+  color: #1d1d1d;
+  border-color: #cecece;
+}
+#collect-dialog .custom-input input::-webkit-input-placeholder{
+  color: #c0c4cc;
+}
+#collect-dialog .dialog-footer {
+  padding: 12px 0 28px;
+  text-align: center;
+}
+#collect-dialog .dialog-close{
+  position: absolute;
+  top: 0;
+  right: 0;
+  display: inline-block;
+  width: 24px;
+  height: 24px;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAYAAABXuSs3AAADvklEQVRogdWZz2scVRzAPzM9ZLvZhEpWS8smhFoPVRCbGBJI2wUPglFP9ib9A7z6b+hBL4UK4qFXvRStWlrIUgq7l7Ik/SFJSNtlbWtprG7WsCttvh7ejJlM5sebmTcb+oE57Mx+v+8zj3kz3/eeJSJk5BBwxjneBiaA14Bh5/o/wBOgBSwB14Ea8FemVkUkzTEkIp+KyM8i8lyS81xEfnFyDKVxSBpwUEQ+F5F2CtkwfndyHsxL/AMRWTMo7GfNacOYeEFEzuco7Oe802aklyXRg/Mw8CPwbqaBlJybwALwR9gfosSPAb8Cx817abEGvA/cC7oYJl5BvbYmc9PS4z5wGmj7L9gBfy4Cl9h/aVAOl1BOuwgS/wo4mbNQEk4CX/tP+h+VBeCnQRkl5EPgsvvDK14AbgGv74OUDuvAW0APdj8qnxEjLSIsLS1Rr9fp9XqZTfr9Po1Gg+XlZba3t+P+fsxxBHZ6fAh1R0ejIlutFo1GA4DR0VGq1SqFQiG19OLiIp1OB4CZmRkmJyfjwh45N9Bze/xsnDRAsVjEsiwAOp0OtVotVc/7pS3LolQq6YQeAT6BnUflnE5UuVxmbm4uk3yQ9OzsLOVyWTfFOVCPyiHgKXBAN7LdblOv13EHtu5jEyY9Pj6u2zTAC6BsA9Uk0gCVSiVxzxuSxnGt2sCppJFJ5Q1Ku5y2gRNpo3Xkc5AGOGEDb2TJECWfkzTAcUtE/gZGs2byD9iRkREANjc3AaPSAH9aEjOTSIJf3sWwNMC/QdVhaiqVCtPT03vOT01NmZQG1AeoYypZv99nZWVlz/nV1VUjtY2Hrg08NpEpaCCaKA9CeGoDq1mzhL09spYHEazZwG9ZMkS98tJ8YTW5a6MmxcalXXKSv56qyNKV9pK2MAvgBfCqjVo1vZqnNBjt+WvAM/c9fjFPacPyF2FnIvEDaloUS7PZzFR7BMk3m03d8EfA917xHvCFTuTw8HBqaRe/vJtTgy8d1z3LE7dRk9FQRIRWq0WpVGJsbCyxtJeNjQ263S4TExP/30QEu5YnXqYFoY/wuPmLrMvAtwPV0eM7fB0atFpbBG4A7wxIKo4mMA9seU8GlbVbwMfAgwFIxfEA5bLlvxBWj7eB91ADYr9Ydxz2rI1DuLgbOI/a1hg0N522Qzsubgb02EnwjUGpOC44bUbPE+J2tzzHgrxk24VBG7QPDQo/lJw3aL2HuyV+RdJviV+RDFvicfucOryCWn+cB95ElQyHAXfduIvar1wH7qC+ETXgWZZG/wOg1zl9PXpnVwAAAABJRU5ErkJggg==) no-repeat center center;
+  background-size: contain;
+  cursor: pointer;
+}
+#success-dialog .success-dialog-container{
+  position: fixed;
+  width: 380px;
+  height: 202px;
+  top: 50%;
+  left: 50%;
+  padding: 20px;
+  transform: translateX(-50%) translateY(-50%);
+  background: #ffffff;
+  border-radius: 8px;
+  transition: all 2s linear;
+  z-index: 1038;
+}
+#success-dialog .success-title{
+  padding: 12px 0 20px;
+  color: #1d1d1d;
+  line-height: 28px;
+  font-size: 18px;
+  text-align: center;
+}
+#success-dialog .success-content{
+  text-align: center;
+  color: #686868;
+  line-height: 22px;
+  font-size: 14px;
+}
+#success-dialog .success-footer{
+  padding: 32px 0 12px;
+  text-align: center;
+}
+.mask {
+  position: fixed;
+  width: 100%;
+  height: 100%;
+  right: 0;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, .5);
+  z-index: 1031;
+}
+#collect-dialog .custom-btn,
+#success-dialog .custom-btn{
+  display: inline-block;
+  width: 132px;
+  height: 36px;
+  line-height: 36px;
+  background: #2cb7ca;
+  border-radius: 6px;
+  text-align: center;
+  color: #fff;
+  font-size: 16px;
+  cursor: pointer;
+}
+#collect-dialog .custom-btn:disabled{
+  opacity: 0.5;
+  cursor:not-allowed;
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 64 - 0
src/web/staticres/big-member/css/page_info_collect.css


BIN
src/web/staticres/big-member/image/buy-bid-intro.png


BIN
src/web/staticres/big-member/image/landpage_new/buy_bg.png


BIN
src/web/staticres/big-member/image/landpage_new/seven_bg.png


BIN
src/web/staticres/big-member/image/new_index/footer-banner.png


+ 14 - 8
src/web/staticres/big-member/weixin/css/page_landingPage_new.css

@@ -729,7 +729,7 @@
 }
 
 .j-button-group {
-  padding: 0.16rem 0 0.24rem 0.32rem;
+  /* padding: 0.16rem 0 0.24rem 0.32rem; */
 }
 
 .j-button-practice {
@@ -742,6 +742,8 @@
 
 .buy_btn {
   display: flex;
+  flex: 1;
+  /* box-sizing: border-box; */
 }
 
 .buy_btn .j-btn {
@@ -749,28 +751,32 @@
   justify-content: center;
   align-items: center;
   font-size: 0.36rem;
+  flex: 1;
 }
 
 .buy_btn .sevendays {
-  width: 2.4rem;
+  /* width: 2.4rem; */
+  flex: 1;
   height: 0.8rem;
   margin-right: -0.2rem;
-  background: url("/big-member/image/landpage_new/seven_bg.png") no-repeat;
-  background-size: contain;
+  background: url("/big-member/image/landpage_new/seven_bg.png?v=1") no-repeat center center;
+  background-size: 100% 100%;
   color: #fff;
 }
 
 .buy_btn .j-button-now {
-  width: 2.4rem;
+  /* width: 2.4rem; */
+  flex: 1;
   height: 0.8rem;
   margin-right: 0.1rem;
-  background: url("/big-member/image/landpage_new/buy_bg.png") no-repeat;
-  background-size: contain;
+  background: url("/big-member/image/landpage_new/buy_bg.png?v=1") no-repeat center center;
+  background-size: 100% 100%;
   color: #fff;
 }
 
 .buy_btn .j-button-nowly {
-  width: 4.6rem;
+  /* width: 4.6rem; */
+  flex: 1;
   height: 0.8rem;
   margin-right: 0.1rem;
   border-radius: 0.4rem;

BIN
src/web/staticres/images/mail-adv.png


+ 16 - 3
src/web/staticres/order/css/pay_success.css

@@ -77,6 +77,18 @@
   text-align: right;
 }
 
+.pay_success .ps_content .c_bottom .check_order.default {
+    border: 1px solid #e0e0e0;
+    background-color: #fff;
+    color: #1d1d1d;
+}
+.pay_success .ps_content .c_bottom .check_order.sm-size + .sm-size {
+    margin-left: 12px;
+}
+.pay_success .ps_content .c_bottom .check_order.sm-size{
+    height: 36px;
+    line-height: 36px;
+}
 .pay_success .ps_content .c_bottom .check_order {
   display: inline-block;
   margin-top: 32px;
@@ -89,6 +101,7 @@
   border-radius: 6px;
   text-decoration: none;
   text-align: center;
+  box-sizing: border-box;
 }
 .j-wx-code{
   width: 335px;
@@ -191,12 +204,12 @@
 	line-height:36px !important;
 }
 .point{
-	display: inline-block;    
-	color: red; 
+	display: inline-block;
+	color: red;
 	font-size: 22px;
 }
 #point{
 	margin-top: 12px;
 	margin-left: -17px;
 	display: inline-block;
-}
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 5 - 0
src/web/staticres/structuredata/mobile/css/marketing.css


BIN
src/web/staticres/structuredata/mobile/image/discount@2x.png


BIN
src/web/staticres/structuredata/mobile/image/how-to-buy@2x.png


+ 70 - 0
src/web/staticres/structuredata/pc/css/stucturedPc.css

@@ -86,6 +86,7 @@ height:100px;
   align-items: center;
 }
 
+.buy-discount .bottom_option .call,
 .maindata .bottom_option .bottom_btn {
   display: flex;
   justify-content: center;
@@ -99,6 +100,7 @@ height:100px;
   cursor: pointer;
 }
 
+.buy-discount .bottom_option .call:hover,
 .maindata .bottom_option .bottom_btn:hover {
   background: linear-gradient(0deg, #F58705 0%, #EE6908 100%);
 }
@@ -785,6 +787,14 @@ height:100px;
   background-size: 100% 100%;
 }
 
+.icon-phone {
+  display: inline-block;
+  width: 24px;
+  height: 24px;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+2YT4hNURzHP9+yYEexMzULC4qiLIhiIyajLJQFMsqCbFiIMrIwslEsLKYoI4qFshllMcWskIUFC3ajpigWFhazUD/96ry6vd4795x379z3pt7ZvMX7nXO+n/v7d84RK3xohetnCNBvDw49MNAeMLPDwBSwFVjVQexfYA64KOl7P2C6hlAQP5so6iewQ5L/NjpiAO+AXRlqpiRdz7CvxTQGYJk7zEk6kDmnsnkM4BewPmOHRUkjGfa1mNYZQi5otOlkjgE8AiYyP9OEpMeZcyqZxwAuAPczV5+VdCRzTiXzGMBO4GPm6v+AdZK8PzQyYgDeuH5kJrKL3iLpayPqIX4aNbMnwMkMMUvAhoHwgIs2s+PA8wyASUm3Muwrm0ZPo2a2OoTR2oSd7km6lGBXq0npcdrMHgBnS3bti3jXlALgJ9HPEQCvOCOS/tT6aRMXKwUIufAG2B9Z846ky4l71mqWCrAPeBvZ2ev/XkkfalWXsFgSQPDCS+BoZM1FYFvToZQDsCnkglembsNvZ2OS3CONjGSA4IVr4YoZEzcj6Uwj6lOqUFGImfnxws9H2welrGZ5IHhhM/AJiIWSm84A5yX58aLjMDO/MG0EFnrNnWyAAHECeJoQJp4Tp9ov+8GTd4Fz4bXDc8ar3AtgPucw2BNAgLgNXE2AWPCLkaT5MM8954fEY5G53hT9ROtQ07FbXhUAz4dnJUKKGqcBf7Vw8YcSwFsmv0OP+dZpTs8Aha/p/SFVkIdKpweyMp7XksZqByhAuCdiTa5MYNn/S5LWLAtAa1EzuwlMlinp9X9JHaOlUgi1izEzr04PE0psNkcjAIU+4SFV1uyyIBoDKOTFlVBmyxpeEkijAIW8GAW8YVVO8L4AFEA8nG5UAekrQBvI6fBkmfJQ0Jr6XtLuZS2jSYEcjMJrx8HQxceBMphxSa8GBqBD+fUQ2wP4c6Y/InjuONQX7y3dxPs6tfaBHC/UZTsEqOtL9rrO0AO9frm65q14D/wHCc/UMQak4W0AAAAASUVORK5CYII=) no-repeat;
+  background-size: 100% 100%;
+}
+
 .maindata .main-4 .main-4-content .cantodo_list .list .list-text {
   margin: 11px 0 0 52px;
   font-size: 16px;
@@ -881,3 +891,63 @@ height:100px;
   border-radius: 8px;
   z-index: 100;
 }
+
+.buy-discount {
+  padding-top: 63px;
+  min-height: 679px;
+}
+.buy-discount .s-img {
+  display: block;
+  width: 100%;
+}
+.buy-discount .how-to-buy {
+  margin: 0 auto;
+  width: 532px;
+}
+.buy-discount .discount {
+  margin: 40px 0 32px;
+  width: 611px;
+}
+
+.buy-discount .c-list {
+  display: flex;
+  align-items: center;
+}
+
+.buy-discount .c-list-item {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  width: 386px;
+  height: 264px;
+  font-size: 16px;
+  line-height: 28px;
+  background: rgba(47,150,244,0.04);
+  border-radius: 16px;
+}
+.buy-discount .c-list-item:not(:last-of-type) {
+  margin-right: 20px;
+}
+
+.buy-discount .c-list-item .c-l-item-icon {
+  margin-bottom: 16px;
+  width: 48px;
+  height: 48px;
+}
+.buy-discount .c-list-item .c-l-item-text {
+  text-align: center;
+}
+
+.buy-discount .bottom_option .call {
+  width: auto;
+  padding: 0 20px;
+}
+.buy-discount .icon-phone {
+  margin-right: 10px;
+}
+.a-animate {
+  position: relative;
+  bottom: 0;
+  animation: data_cantodo 2s ease;
+}

BIN
src/web/staticres/structuredata/pc/image/discount@2x.png


BIN
src/web/staticres/structuredata/pc/image/how-to-buy@2x.png


BIN
src/web/staticres/structuredata/pc/image/icon-5-1@2x.png


BIN
src/web/staticres/structuredata/pc/image/icon-5-2@2x.png


BIN
src/web/staticres/structuredata/pc/image/icon-5-3@2x.png


BIN
src/web/staticres/structuredata/pc/image/phone.png


+ 59 - 5
src/web/templates/bid-fileinter/page_bidfile_landpage.html

@@ -65,6 +65,35 @@ body{
 a{
 	text-decoration: none !important;
 }
+.icon-jy-gold + .file-tip-text {
+    margin-left: 6px;
+}
+.file-tip-text {
+    font-size: 16px;
+    font-weight: 400;
+    text-align: LEFT;
+    color: #1d1d1d;
+    line-height: 24px;
+}
+.total-number {
+    color: #FF3A20;
+    margin-right: 6px;
+}
+.file-tip-group.money *{
+    display: none;
+}
+.file-tip-group *[data-name='money']{
+    display: none;
+}
+.file-tip-group.money *[data-name='money']{
+    display: inline-block;
+}
+.file-tip-group {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    margin-top: 24px;
+}
 </style>
 </head>
 <body>
@@ -93,6 +122,11 @@ a{
             <p class="up_text">拖动上传招标文件(.doc/.docx)
               <br/>文件大小不得大于50M
             </p>
+            <p class="file-tip-group money" style="display: none">
+                <i  data-name="money" class="icon-jy-gold"></i>
+                <span data-name="money"  class="file-tip-text">兑换需剑鱼币:500/次</span>
+                <span class="file-tip-text">解读次数剩余:<span class="total-number">-</span>次</span>
+            </p>
           </div>
         </div>
         <div class="down_fotter">
@@ -144,11 +178,12 @@ a{
           <div class="m-middle">
             <!--content-->
             <p class="progressbar_text"></p>
-
+              <!--tip-->
+            <p class="integral-tip-text">解读此文档需剑鱼币:500,仅剩<span data-name="my-integral">0</span></p>
           </div>
           <div class="m-bottom">
             <button class="m-btn-cancel">取消</button>
-            <button class="m-btn-sure go-buy">去购买</button>
+            <button class="m-btn-sure go-buy">去充值</button>
           </div>
         </div>
       </div>
@@ -268,7 +303,7 @@ a{
         </div>
         <div class="usafe_list">
           <div class="list_top list_2">02</div>
-          <div class="list_bottom">支 付</div>
+          <div class="list_bottom">支付剑鱼币</div>
         </div>
         <div class="usafe_list">
           <div class="list_top list_3">03</div>
@@ -317,7 +352,26 @@ a{
   //拖拽外部文件,在目标元素上释放鼠标触发
   var fs;
     $(function () {
-// @手机号绑定及账号合并判断 2021//27
+      function getAjaxNum () {
+        $.ajax({
+          type:'POST',
+          url:'/bidfileinter/info/power',
+          success:function(res){
+            if (res.error_msg === '') {
+              if (res.data) {
+                if (res.data.bidfile_count > 0) {
+                  $('.file-tip-group').removeClass('money').find('.total-number').text(res.data.bidfile_count)
+                } else {
+                  $('.file-tip-group').addClass('money')
+                }
+                $('.file-tip-group').show()
+              }
+            }
+          },
+        })
+      }
+      getAjaxNum()
+        // @手机号绑定及账号合并判断 2021//27
       if (typeof $.fn.getNeedMergeStatus === 'function') {
         $.fn.getNeedMergeStatus(function (r) {
           if (r.isBindStatus) {
@@ -377,7 +431,7 @@ a{
   })
   $('.go-buy').on('click', function(){
       try {
-          _hmt.push(['_trackEvent',typ, 'click', "去购买"]);
+          _hmt.push(['_trackEvent',typ, 'click', "去充值"]);
       } catch (e) {
           console.log('未初始化百度统计', e);
       }

+ 77 - 16
src/web/templates/bid-fileinter/page_bidfile_list.html

@@ -9,12 +9,12 @@
 <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 rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" />
-<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/bid-fileinter/css/bidfile_list.css?v={{Msg "seo" "version"}}" />
-<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/bid-fileinter/css/my-modal.css?v={{Msg "seo" "version"}}" />
-<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/bid-fileinter/css/z-pager.css?v={{Msg "seo" "version"}}" />
-<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}1"></script>
+<link href='{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}' rel="stylesheet">
+<link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}' />
+<link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/bid-fileinter/css/bidfile_list.css?v={{Msg "seo" "version"}}' />
+<link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/bid-fileinter/css/my-modal.css?v={{Msg "seo" "version"}}' />
+<link rel="stylesheet" type="text/css" href='{{Msg "seo" "cdn"}}/bid-fileinter/css/z-pager.css?v={{Msg "seo" "version"}}' />
+<script type="text/javascript" src='{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}'></script>
 <style>
 body{
   font-family: "Microsoft YaHei",sans-serif;
@@ -57,6 +57,43 @@ body{
 a{
 	text-decoration: none !important;
 }
+.flex-r-c {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+}
+.flex-c-c {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+}
+.suffix_num {
+    margin-left: 20px;
+    font-size: 16px;
+    font-weight: 400;
+    text-align: center;
+    color: #1d1d1d;
+    line-height: 24px;
+}
+.sm-tip-text.delete {
+    font-size: 12px;
+    text-decoration: line-through;
+    color: #999999;
+    line-height: 20px;
+}
+.sm-tip-text.hlight {
+    color: #1d1d1d;
+}
+.sm-tip-text {
+    font-size: 14px;
+    font-weight: 400;
+    text-align: left;
+    color: #686868;
+    line-height: 22px;
+}
+.icon-jy-gold {
+    margin: 0 10px;
+}
 </style>
 </head>
 <body>
@@ -74,13 +111,30 @@ a{
   </div>
   <div class="bidfile_list">
     <div class="filelist_head">
-        <input type="file" name="" id="btn_file" style="display: none;">
-        <button class="bidfile_new">解读新的招标文件</button>
-        <div class="bidfile_many">
+        <div class="flex-r-c">
+            <input type="file" name="" id="btn_file" style="display: none;">
+            <button class="bidfile_new">解读新的招标文件</button>
             <div class="suffix_num">
-                剩余解读次数:<span class="suffix_span">0</span> 次
+            剩余解读次数:<span class="suffix_span">0</span> 次
             </div>
-            <button class="now_buy" >立即购买</button>
+        </div>
+        <div class="bidfile_many flex-r-c">
+            <div class="flex-r-c">
+                <span class="sm-tip-text">兑换需剑鱼币</span>
+                <div class="flex-r-c">
+                    <i class="icon-jy-gold"></i>
+                    <div class="flex-c-c" style="align-items: flex-start;margin-top: 20px;">
+                        <span class="sm-tip-text hlight">500/次</span>
+                        <span class="sm-tip-text delete">原价:1500</span>
+                    </div>
+                </div>
+                <div class="flex-r-c" style="margin-left: 20px">
+                    <span class="sm-tip-text">我的账号</span>
+                    <i class="icon-jy-gold"></i>
+                    <span class="sm-tip-text hlight" data-name="my-integral">0</span>
+                </div>
+            </div>
+            <button class="now_buy" >去充值</button>
         </div>
     </div>
     <div class="filelist_main">
@@ -196,11 +250,12 @@ a{
           <div class="m-middle">
             <!--content-->
             <p class="progressbar_text"></p>
-
+            <!--tip-->
+            <p class="integral-tip-text">解读此文档需剑鱼币:500,仅剩<span data-name="my-integral">0</span></p>
           </div>
           <div class="m-bottom">
             <button class="m-btn-cancel">取消</button>
-            <button class="m-btn-sure" onclick="nowBuy()">去购买</button>
+            <button class="m-btn-sure" onclick="nowBuy()">去充值</button>
           </div>
         </div>
       </div>
@@ -253,7 +308,12 @@ a{
         type:'POST',
         url:'/bidfileinter/info/power',
         success:function(res){
-          $('.suffix_span').text(res.data.bidfile_count)
+          if (res.error_msg === '') {
+            if (res.data) {
+                $('span[data-name="my-integral"]').text(res.data.integral || 0)
+                $('.suffix_span').text(res.data.bidfile_count || 0)
+            }
+          }
         },
       })
     }
@@ -310,7 +370,7 @@ a{
     })
     $(".now_buy").on("click",function(){
       try {
-	  	  _hmt.push(['_trackEvent',typ, 'click', "立即购买"]);
+	  	  _hmt.push(['_trackEvent',typ, 'click', "去充值"]);
 	    } catch (e) {
 	       console.log('未初始化百度统计', e);
 	    }
@@ -323,6 +383,7 @@ a{
         data: data,
         success:function(res){
           if(res.error_msg == ""){
+            getAjaxNum()
             if(res.data.status == 1){
               var getResult = function () {
                 $.ajax({
@@ -626,7 +687,7 @@ a{
       if (isLookText.trim() === '查看') {
         location.href = '/bid/pc/page/content?m=' + md5
       } else {
-        if (Number($('.suffix_span').text() || 0) <= 0) {
+        if (Number($('.suffix_span').text() || 0) <= 0 && Number($('span[data-name="my-integral"]').eq(0).text() || 0) < 500) {
           $('.m-modal2').find('.progressbar_text').text(name)
           m2.show()
           return

+ 150 - 25
src/web/templates/big-member/pc/page_index.html

@@ -15,7 +15,7 @@
     <link href='{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}' rel="stylesheet"/>
     <link href='{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}' rel="stylesheet" type="text/css"/>
     <link href='{{Msg "seo" "cdn"}}/css/swiper.min.css?v={{Msg "seo" "version"}}' rel="stylesheet" type="text/css"/>
-    <link href='{{Msg "seo" "cdn"}}/big-member/css/page_index.css?v={{Msg "seo" "version"}}' rel="stylesheet" type="text/css"/>
+    <link href='{{Msg "seo" "cdn"}}/big-member/css/page_index.css?v={{Msg "seo" "version"}}2' rel="stylesheet" type="text/css"/>
     <style>
         body #public-nav[data-theme] .iner .jynav li:hover > a,
         body #public-nav[data-theme] .iner .jynav li.hover > a,
@@ -864,10 +864,10 @@
     <!--S-底部横幅-->
     <div class="w-box footer-banner" data-sticky-change>
         <div class="w1200">
-            <img style="width: 1200px;" src='{{Msg "seo" "cdn"}}/big-member/image/new_index/banner.png' alt="" usemap="#map1" />
+            <img style="width: 1200px;" src='{{Msg "seo" "cdn"}}/big-member/image/new_index/footer-banner.png' alt="" usemap="#map1" />
             <map name="map1" style="cursor: pointer">
-                <area id="go-free-week1" data-need-bind-phone data-free-week shape="rect" coords="782, 21, 922.5, 66" />
-                <area id="go-buy-18" data-need-bind-phone data-go-buy="0"  shape="rect" coords="950, 21, 1090, 67" />
+                <area id="go-free-week1" data-need-bind-phone data-free-week shape="rect" coords="912, 20, 1050, 66" />
+                <!-- <area id="go-buy-18" data-need-bind-phone data-go-buy="0"  shape="rect" coords="950, 21, 1090, 67" /> -->
             </map>
         </div>
         <div class="icon-close-box">
@@ -876,10 +876,10 @@
     </div>
     <div class="w-box footer-banner" data-sticky>
         <div class="w1200">
-            <img style="width: 1200px;" src='{{Msg "seo" "cdn"}}/big-member/image/new_index/banner.png' alt="" usemap="#map2" />
+            <img style="width: 1200px;" src='{{Msg "seo" "cdn"}}/big-member/image/new_index/footer-banner.png' alt="" usemap="#map2" />
             <map name="map2" style="cursor: pointer">
-                <area id="go-free-week2"  data-need-bind-phone data-free-week shape="rect" coords="782, 21, 922.5, 66" />
-                <area id="go-buy-19" data-need-bind-phone data-go-buy="0"  shape="rect" coords="950, 21, 1090, 67" />
+                <area id="go-free-week2"  data-need-bind-phone data-free-week shape="rect" coords="912, 20, 1050, 66" />
+                <!-- <area id="go-buy-19" data-need-bind-phone data-go-buy="0"  shape="rect" coords="950, 21, 1090, 67" /> -->
             </map>
         </div>
         <div class="icon-close-box">
@@ -887,6 +887,56 @@
         </div>
     </div>
     <!--E-底部横幅-->
+    <!-- 采集信息弹框 -->
+    <div id="collect-dialog" style="display: none;">
+      <div class="mask"></div>
+      <div class="dialog-container">
+        <div class="dialog-header">
+          <i class="dialog-close"></i>
+          <p class="dialog-title">请完善您的信息后,免费体验大会员。</p>
+        </div>
+        <div class="dialog-content">
+          <div class="custom-control">
+            <div class="custom-label">联系人</div>
+            <div class="custom-input">
+              <input type="text" placeholder="请输入联系人" maxlength="20" class="name-val">
+            </div>
+          </div>
+          <div class="custom-control">
+            <div class="custom-label">联系方式</div>
+            <div class="custom-input">
+              <input type="text" placeholder="请输入联系方式" maxlength="11" class="phone-val">
+            </div>
+          </div>
+          <div class="custom-control">
+            <div class="custom-label">公司名称</div>
+            <div class="custom-input">
+              <input type="text" placeholder="请输入公司名称" maxlength="50" class="company-val">
+            </div>
+          </div>
+          <div class="custom-control">
+            <div class="custom-label">职位</div>
+            <div class="custom-input">
+              <input type="text" placeholder="请输入职位(非必填)" maxlength="30" class="job-val">
+            </div>
+          </div>
+        </div>
+        <div class="dialog-footer">
+          <button type="button" class="custom-btn go-confirm">去体验</button>
+        </div>
+      </div>
+    </div>
+    <!-- 提交成功弹框 -->
+    <div id="success-dialog" style="display: none;">
+      <div class="mask"></div>
+      <div class="success-dialog-container">
+        <div class="success-title">提交成功</div>
+        <div class="success-content">我们的客户经理会在24小时内尽快与您联系。</div>
+        <div class="success-footer">
+          <button type="button" class="custom-btn go-know">我知道了</button>
+        </div>
+      </div>
+    </div>
 </div>
 <script src='{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}' type="text/javascript"></script>
 <script src='{{Msg "seo" "cdn"}}/js/jquery.cookie.js?v={{Msg "seo" "version"}}' type="text/javascript"></script>
@@ -920,8 +970,8 @@
         memberTrial: {{.T.member_trial}} || false
     }
     // 修改底部横幅广告
-    if (pageUserInfo.memberTrial) {
-        $(".footer-banner .w1200 img").attr('src', '/big-member/image/new_index/banner-buy.png')
+    if (pageUserInfo.memberStatus > 0) {
+        $(".footer-banner .w1200 img").attr('src', '/big-member/image/new_index/footer-banner.png')
         $(".footer-banner .w1200 map area[data-free-week]").remove()
 
     }
@@ -971,6 +1021,7 @@
         var source = getParam("source");
         /*试用7天*/
         $("area[data-free-week]").on('click',function () {
+          /*
           $.get('/front/pc/sobot?t=' + new Date().getTime() + '&q=大会员-pc-试用7天');
           var member_pc = getMemberSource(source);
           try {
@@ -983,17 +1034,21 @@
                 openLoginDig()
                 return
             }
-            var buy_ontrial_href ='/big/pc/page/custom';
-            if(source!=null&&source!=undefined){
-              buy_ontrial_href+="?source="+source;//baidusem
-            }
-            location.href = buy_ontrial_href;
+            
+              var buy_ontrial_href ='/big/pc/page/custom';
+              if(source!=null&&source!=undefined){
+                buy_ontrial_href+="?source="+source;//baidusem
+              }
+              location.href = buy_ontrial_href;
+            */
+            $(".click-button-box.free").trigger('click')
         })
         /* 功能演示 */
         $(".click-button-box.free").on('mouseenter', function () {
-            if ($('#iphoneX-box iframe').length < 1) {
-                $('#iphoneX-box').append('<iframe data-src="/demo-member/demo_action.html" src="/demo-member/demo_action.html" scrolling="no" frameborder="0"></iframe>')
-            }
+            // 原功能演示代码
+            // if ($('#iphoneX-box iframe').length < 1) {
+            //     $('#iphoneX-box').append('<iframe data-src="/demo-member/demo_action.html" src="/demo-member/demo_action.html" scrolling="no" frameborder="0"></iframe>')
+            // }
         })
         $(".click-button-box.free").on('click', function () {
             $.get('/front/pc/sobot?t=' + new Date().getTime() + '&q=大会员-pc-免费体验');
@@ -1003,15 +1058,85 @@
             } catch (e) {
               console.log('未初始化百度统计')
             }
-            var scaleRote = document.documentElement.clientHeight / 700
-            $("#iphoneX-box").css('transform', 'scale('+(scaleRote > 1 ? 1 : scaleRote)+')')
-            var iphoneDom = $('#iphoneX-box')
-            iphoneDom.show()
-            $("#iphoneX-box iframe")[0].contentWindow.OtherExitExperience = function() {
-                iphoneDom.hide()
-                $("#iphoneX-box iframe").remove()
-                iphoneDom.append('<iframe data-src="/demo-member/demo_action.html" src="/demo-member/demo_action.html" scrolling="no" frameborder="0"></iframe>')
+            /* 
+              // 原功能演示代码
+              var scaleRote = document.documentElement.clientHeight / 700
+              $("#iphoneX-box").css('transform', 'scale('+(scaleRote > 1 ? 1 : scaleRote)+')')
+              var iphoneDom = $('#iphoneX-box')
+              iphoneDom.show()
+              $("#iphoneX-box iframe")[0].contentWindow.OtherExitExperience = function() {
+                  iphoneDom.hide()
+                  $("#iphoneX-box iframe").remove()
+                  iphoneDom.append('<iframe data-src="/demo-member/demo_action.html" src="/demo-member/demo_action.html" scrolling="no" frameborder="0"></iframe>')
+              }
+            */
+            // 采集信息弹框
+            $('#collect-dialog').show()
+            $('body').css('overflow', 'hidden')
+            // 校验
+            validateInput()
+            function validateInput() {
+              var regName = $('.name-val').val().trim().length >= 2
+              var regPhone = /^1[3456789]\d{9}$/.test($('.phone-val').val())
+              var regCompany = $('.company-val').val().trim().length >= 2
+              if (regName && regPhone && regCompany) {
+                $('#collect-dialog .go-confirm').removeAttr('disabled')
+              } else {
+                $('#collect-dialog .go-confirm').attr('disabled', true)
+              }
             }
+            $('.name-val').on("input", function () {
+              validateInput()
+            })
+            $('.phone-val').on("input", function () {
+              var val = $(this).val().replace(/[^\d]/g,'')
+              $(this).val(val)
+              validateInput()
+            })
+            $('.company-val').on("input", function () {
+              validateInput()
+            })
+            // 信息提交事件
+            $('#collect-dialog .go-confirm').on('click', function() {
+              $(this).attr('disabled', true)
+              var obj = {
+                name: $('.name-val').val(),
+                phone: $('.phone-val').val(),
+                company: $('.company-val').val(),
+                position: $('.job-val').val()
+              }
+              console.log(obj)
+              $.ajax({
+                type:'POST',
+                url:'/salesLeads/member/trialInfo',
+                data: obj,
+                success:(res)=>{
+                  $('#collect-dialog .go-confirm').removeAttr('disabled')
+                  if (res) {
+                    if (res.status === 1) {
+                      $('#collect-dialog').hide()
+                      $('#success-dialog').show()
+                    } else {
+                      console.log('提交失败')
+                    }
+                  }
+                }
+              })
+            })
+            // 关闭按钮
+            $('#collect-dialog .dialog-close').on('click',function() {
+              $('#collect-dialog').fadeOut()
+              $('body').css('overflow', 'auto')
+            })
+            // I know
+            $('#success-dialog .go-know').on('click',function() {
+              $('#success-dialog').fadeOut()
+              $('body').css('overflow', 'auto')
+              $('.name-val').val('')
+              $('.phone-val').val('')
+              $('.company-val').val('')
+              $('.job-val').val('')
+            })
         })
         try {
             var injectLogic = logic

+ 12 - 11
src/web/templates/big-member/wx/page_landingPage.html

@@ -16,7 +16,7 @@
         <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css" />
         <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/public.css?v={{Msg "seo" "version"}}'>
         <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/j-icons.css?v={{Msg "seo" "version"}}'>
-        <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/page_landingPage_new.css?v={{Msg "seo" "version"}}'>
+        <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/page_landingPage_new.css?v={{Msg "seo" "version"}}1'>
         <style>
             #zc__sdk__sys__btn {
                 display: none;
@@ -307,16 +307,16 @@
         </div>
         <div class="j-footer" v-show="isCantrial">
             <div class="j-button-group">
-                        <div class="j-button-practice" @click="exper_fun()">
-                            <div data-need-bind-phone>免费体验</div>
-                        </div>
+                        <!-- <div class="j-button-practice" @click="exper_fun()">
+                            <div data-need-bind-phone>免费试用</div>
+                        </div> -->
                 <div class="buy_btn" v-show="onlyBuy">
-                            <div class="sevendays j-btn" @click="sevenBtn()">
-                                <div data-need-bind-phone>试用7天</div>
-                            </div>
-                            <div class="j-button-now j-btn" @click="linkBuy('sj',6)">
-                                <div data-need-bind-phone>立即购买</div>
-                            </div>
+                      <div class="sevendays j-btn" @click="exper_fun()">
+                          <div data-need-bind-phone>免费试用</div>
+                      </div>
+                      <div class="j-button-now j-btn" @click="linkBuy('sj',6)">
+                          <div data-need-bind-phone>立即购买</div>
+                      </div>
                 </div>
                 <div class="buy_btn" v-show="!onlyBuy">
                             <div class="j-button-nowly j-btn" @click="linkBuy('sj',6)">
@@ -538,7 +538,8 @@
             // 功能体验
             exper_fun:function () {
                 this.setStatistics('免费体验')
-                location.href = '/demo-member/demo_action.html'
+                // location.href = '/demo-member/demo_action.html'
+                location.href = '/weixin/frontPage/bigmember/free/info_collect'
             },
             // 咨询客服
             consult:function(){

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

@@ -34,7 +34,7 @@
     <script type="systemjs-importmap" crossorigin="anonymous">
       {
         "imports": {
-          "app": "/page_docs_pc/js/app.js?v={{Msg "seo" "version"}}",
+          "app": "/page_docs_pc/js/app.js?v={{Msg "seo" "docs_v"}}",
           "single-spa": "https://cdn.jsdelivr.net/npm/single-spa@4.3.7/lib/system/single-spa.min.js",
           "vue": "https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js",
           "vue-router": "https://cdn.jsdelivr.net/npm/vue-router@3.0.7/dist/vue-router.min.js"

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

@@ -34,7 +34,7 @@
     <script type="systemjs-importmap" crossorigin="anonymous">
       {
         "imports": {
-          "entpc": "/page_entpc/js/app.js?v={{Msg "seo" "version"}}",
+          "entpc": "/page_entpc/js/app.js?v={{Msg "seo" "entniche_v"}}",
           "single-spa": "https://cdn.jsdelivr.net/npm/single-spa@4.3.7/lib/system/single-spa.min.js",
           "vue": "https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js",
           "vue-router": "https://cdn.jsdelivr.net/npm/vue-router@3.0.7/dist/vue-router.min.js"

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

@@ -34,7 +34,7 @@
     <script type="systemjs-importmap">
       {
         "imports": {
-          "points": "/page_points_pc/js/app.js?v={{Msg "seo" "version"}}",
+          "points": "/page_points_pc/js/app.js?v={{Msg "seo" "points_v"}}",
           "single-spa": "https://cdn.jsdelivr.net/npm/single-spa@4.3.7/lib/system/single-spa.min.js",
           "vue": "https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js",
           "vue-router": "https://cdn.jsdelivr.net/npm/vue-router@3.0.7/dist/vue-router.min.js"

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

@@ -34,7 +34,7 @@
     <script type="systemjs-importmap" crossorigin="anonymous">
       {
         "imports": {
-          "app": "/page_big_pc/js/app.js?v={{Msg "seo" "version"}}",
+          "app": "/page_big_pc/js/app.js?v={{Msg "seo" "big_pc_v"}}",
           "single-spa": "https://cdn.jsdelivr.net/npm/single-spa@4.3.7/lib/system/single-spa.min.js",
           "vue": "https://cdn-common.jianyu360.cn/cdn/lib/vue/2.6.11/vue.min.js",
           "vue-router": "https://cdn-common.jianyu360.cn/cdn/lib/vue-router/3.1.5/vue-router.min.js",

+ 225 - 0
src/web/templates/frontRouter/wx/bidding/sess/index.html

@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="keywords" content="剑鱼标讯">
+    <meta name="description" content="剑鱼标讯">
+    <meta name="author" content="剑鱼标讯">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+    <meta name="browsermode" content="application">
+    <meta name="x5-orientation" content="portrait">
+    <meta name="screen-orientation" content="portrait">
+    <meta name="x5-page-mode" content="app">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="format-detection" content="telephone=no">
+    <link rel="icon" href="/favicon.ico">
+    <title>招标文件解读</title>
+    <script src='{{Msg "seo" "cdn"}}/js/rem.js'></script>
+    <script src='{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}'></script>
+    {{include "/common/weixin.html"}}
+    <script src='/wxswordfish/share.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js'></script>
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/reset-css@4.0.1/reset.min.css />
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    <style>
+        #bidding-page img {
+            width: 100%;
+        }
+        .fixed-bottom {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            cursor: pointer;
+        }
+        .weui-picker__item.is-now-select::after {
+            content: "次";
+        }
+
+        .custom-toast .weui-toast {
+            font-size: .3rem;
+            padding: 0.2rem;
+            width: auto;
+            max-width: 6rem;
+            min-height: 0;
+            height: auto;
+            top: 50%;
+            left: 50%;
+            margin-left: 0;
+            margin-top: -0.47rem;
+            transform: translateX(-50%) translateY(-50%);
+        }
+
+        .custom-toast .weui-icon_toast {
+            display: none;
+        }
+
+        .custom-toast .weui-toast__content {
+            margin: 0;
+        }
+        #js_dialog .weui-dialog{
+            border-radius: 8px;
+            max-width: 6rem;
+            /* left: .72rem; */
+            /* right: .72rem; */
+        }
+        #js_dialog .weui-dialog__hd{
+            padding: 0.32rem 0;
+            color: #171826;
+            font-size: .36rem;
+            line-height: .52rem;
+            font-weight: 500;
+            text-align: center;
+        }
+        #js_dialog .weui-dialog__bd{
+            padding-bottom: .48rem;
+            margin: 0;
+            color: #5F5E64;
+            font-size: .3rem;
+            line-height: 0.44rem;
+            text-align: center;
+        }
+        #js_dialog .weui-dialog__ft{
+            line-height: .92rem;
+            min-height: 0;
+        }
+        #js_dialog .weui-dialog__btn{
+            color: #2ABED1;
+            font-size: .36rem;
+            font-weight: 500;
+        }
+        #js_dialog .weui-dialog__btn:active {
+            background-color: #fff;
+        }
+        .icon-jy-check {
+            background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADb0lEQVRoQ+1XT0gUcRT+3jjS9ufi4qFD4AYhu2vtGkUl/Z3VyDJJySKoSG8F3eoSERp4COoadXMPQQcNjYqUcqeDUQeh3ZL9EwYbeAjctg6W6+rOL2ZxaXad0ZmdRVeYPc6+9/2+733v/eYNYZ3/aJ3zhyVgrR20HLAcMFkBq4VMFtB0uuWA6RKaBLAcMFlAzfS6QOisBPaYQHwG1BnzeZ6rBZelA85A8AQHvASIXyT9O+zzVq0LATJ5Ag0RYMsRZkA84vNuL3sBtYEJL4/MGIAtCvIpCRVNMd/O92UtwDUariGa/whgq5I8A2uL+upHtIalLGZAJg9KvyOQ4z9RtgBwHWGN4c3FrbmA2hfj1fxm/gNAO5RVZkTXI4Ln4Uq3nLaAbpF3HrWf4Yhsf+M/n8W7hNRKYEb/d/SJtk019jcADuXlEnrCgveuHjxNAa7R0FMiXFgEGZ5OJM9Nnxdm9IDqiVkkPwigOZ883QsLnlt6MOQYTQHuQHBecQ+DAWOZP/PtX1v3JvSCa8Z1i7zriH2QCKfz2oaxJ5HG+stG8PU6kMOMplOzxydPHZgyckhhrGs09IgIV5XPJWA4SslWCMKCEWxNAQ5RtG2U7P1LqgTEwSqPRRrd340clIt1i6FuMPQUkk9Rsj0uGJ+z5W8hUeTdUlUfiC7lWV2kCJcYuk0MvflYLEj063BYKG6+dF2j7tHQfRBuFlR8KgM0xXzemB4nnGLoCsfgLyzE7OxcQ7xl3w89GGoxugTIiWrWM7CEBL5N6zWfO1BlOZMvhTibk4Toyd3xYskvewupgaqJADAjgXVove7VlzOWSKczDd+a90yaIW9YgJzgFIM3OEYPClohpbazuAOh/QDeGlnOjArS3UJKYLf4+SKY5C94T6Tk3SXi2/VKji12OVsVAVmCgS8tgDSg3NsBtpAhrpOT+DG15Yyhoi0n0ChRrfiiHFAOZ+HHh/yfPNwEqs5rM53LmVFhpgRkZyL7+UcDyj5fQsLAcrbqAuQD6wITByUsDBVWPesGUW9E8NwxSkxvvGkHcgfVjow7+cpKeTXelnsmMeaPNtZ36SVTTFzJBGTb6fUnB23g+gmsnjHyR7jkNaPLmVERJRVg9PBSxFsCSlFFMxiWA2aqV4pcy4FSVNEMhuWAmeqVItdyoBRVNIOx7h34B4JTL0BLvpIQAAAAAElFTkSuQmCC");
+            background-size: cover;
+            display: inline-block;
+            width: 0.48rem;
+            height: 0.48rem;
+        }
+        #js_dialog .weui-dialog__hd .icon-jy-check{
+            margin-right: 0.08rem;
+        }
+        #js_dialog .weui-dialog__hd {
+            display: flex;
+            flex-direction: row;
+            align-items: center;
+            justify-content: center;
+        }
+        .back-box {
+            position: fixed;
+            top: 0;
+            left: 0;
+            box-sizing: border-box;
+            padding: 0.2rem 0.24rem;
+            z-index: 666;
+        }
+    </style>
+</head>
+
+<body class="p13">
+    <div class="j-container">
+<!--        <div class="back-box">-->
+<!--            <span class="icon-back-white j-icon base-icon"></span>-->
+<!--        </div>-->
+        <div class="js_dialog" id="js_dialog" style="opacity: 1;display: none;">
+            <div class="weui-mask"></div>
+            <div class="weui-dialog">
+                <div class="weui-dialog__hd">
+                    <i class="icon-jy-check"></i>
+                    <span>兑换成功!</span>
+                </div>
+                <div class="weui-dialog__bd">
+                    <div>请登录剑鱼标讯官网</div>
+                    <div style="color: #2ABED1">www.jianyu360.com</div>
+                    <div>点击【招标文件解读】使用</div>
+                </div>
+                <div class="weui-dialog__ft">
+                    <a href="javascript:" class="weui-dialog__btn weui-dialog__btn_primary know">我知道了</a>
+                </div>
+            </div>
+        </div>
+        <div class="j-main" id="bidding-page">
+            <img src='{{Msg "seo" "cdn"}}/bid-fileinter/h5/image/bg_1.png' alt="">
+            <img src='{{Msg "seo" "cdn"}}/bid-fileinter/h5/image/bg_2.png' alt="">
+            <img src='{{Msg "seo" "cdn"}}/bid-fileinter/h5/image/bg_3.png' alt="">
+            <img src='{{Msg "seo" "cdn"}}/bid-fileinter/h5/image/bg_4.png' alt="">
+            <img src='{{Msg "seo" "cdn"}}/bid-fileinter/h5/image/bg_5.png' alt="">
+            <div class="fixed-bottom">
+                <img src='{{Msg "seo" "cdn"}}/bid-fileinter/h5/image/button.png' alt="">
+            </div>
+        </div>
+    </div>
+
+    <script>
+      function goBack() {
+        history.back()
+        window.afterClickBack && window.afterClickBack()
+      }
+      ;(function () {
+        $('.fixed-bottom').on('click', showPicker)
+        $('.weui-dialog__btn.know').on('click', toggleShowDialog.bind(this, false))
+        function showPicker () {
+          weui.picker([1,2,3,4,5,6,7,8,9,10], {
+            title: '请选择兑换次数',
+            className: 'jymobile-datePicker start',
+            container: 'body',
+            defaultValue: [1],
+            onChange: function (result) {
+              var nowTArr = result.map(function (v) {
+                return String(v.label)
+              })
+              $(".jymobile-datePicker.start .weui-picker__item").each(function(){
+                var nowT = $(this).text()
+                $(this).removeClass('is-now-select')
+                if (nowTArr.indexOf(nowT) !== -1) {
+                  $(this).addClass('is-now-select')
+                }
+              })
+            },
+            onConfirm: function (result) {
+              ajaxExCount(result[0].value)
+            },
+            id: 'singleLinePicker'
+          });
+        }
+        function ajaxExCount (count) {
+          $.post('/bidfileinter/exchange/bidcount', { count: count }).done(function (r) {
+            if (r && r.error_msg === '') {
+              toggleShowDialog(true)
+            } else {
+              location.href = './middle'
+            }
+          }).fail(function (r) {
+            weui.toast('抱歉,请稍后重试', {
+              duration: 2000,
+              className: 'custom-toast',
+            })
+          })
+        }
+        function toggleShowDialog (type) {
+          var nDom = $('#js_dialog')
+          if (type) {
+            nDom.show()
+          } else {
+            nDom.hide()
+          }
+        }
+        try {
+          document.querySelector('.back-box').addEventListener('click', goBack)
+        } catch (error) {}
+      })()
+    </script>
+
+
+    <!--S-当前页面的资源-->
+    {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 92 - 0
src/web/templates/frontRouter/wx/bidding/sess/middle.html

@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="keywords" content="剑鱼标讯">
+    <meta name="description" content="剑鱼标讯">
+    <meta name="author" content="剑鱼标讯">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+    <meta name="browsermode" content="application">
+    <meta name="x5-orientation" content="portrait">
+    <meta name="screen-orientation" content="portrait">
+    <meta name="x5-page-mode" content="app">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="format-detection" content="telephone=no">
+    <link rel="icon" href="/favicon.ico">
+    <title>招标文件解读</title>
+    <script src='{{Msg "seo" "cdn"}}/js/rem.js'></script>
+    <script src='{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}'></script>
+    {{include "/common/weixin.html"}}
+    <script src='/wxswordfish/share.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js'></script>
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/reset-css@4.0.1/reset.min.css />
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    <style>
+        #bidding-page--middle img {
+            width: 100%;
+        }
+        #bidding-page--middle {
+            padding-top: 1.68rem;
+            background: linear-gradient(180deg,#032e6f 0%, #0d3fa0 100%);
+        }
+        .button-group {
+            padding: 0 0.56rem;
+            box-sizing: border-box;
+        }
+        .tip-text {
+            margin-top: -1.2rem;
+            margin-bottom: 1.2rem;
+            font-size: 0.28rem;
+            text-align: center;
+            color: #ffffff;
+            line-height: 0.48rem;
+        }
+        .back-box {
+            position: fixed;
+            top: 0;
+            left: 0;
+            box-sizing: border-box;
+            padding: 0.2rem 0.24rem;
+            z-index: 666;
+        }
+    </style>
+</head>
+
+<body class="p13">
+    <div class="j-container" id="bidding-page--middle">
+<!--        <div class="back-box">-->
+<!--            <span class="icon-back-white j-icon base-icon"></span>-->
+<!--        </div>-->
+        <div class="j-main">
+            <img src='{{Msg "seo" "cdn"}}/bid-fileinter/h5/image/bg_6.png' alt="">
+            <div class="tip-text">您的剑鱼币不足,您可选择</div>
+            <div class="button-group">
+                <img id="goMoney" src='{{Msg "seo" "cdn"}}/bid-fileinter/h5/image/cButton.png' alt="">
+            </div>
+        </div>
+    </div>
+    <script>
+      function goBack() {
+        history.back()
+        window.afterClickBack && window.afterClickBack()
+      }
+      ;(function () {
+        $('#goMoney').on('click',function () {
+          location.href = '/page_points_mobile/pay'
+        })
+        try {
+          document.querySelector('.back-box').addEventListener('click', goBack)
+        } catch (error) {}
+      })()
+    </script>
+
+    <!--S-当前页面的资源-->
+    {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 215 - 0
src/web/templates/frontRouter/wx/bigmember/free/info_collect.html

@@ -0,0 +1,215 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport"
+        content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="format-detection" content="telephone=yes"/>
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>剑鱼大会员</title>
+    <script src="/big-member/js/rem.js"></script>
+    <!--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.8.2/lib/index.css />
+    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css />
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/page_info_collect.css?v={{Msg "seo" "version"}}' />
+    <!--E-当前页面的css资源-->
+    <style>
+      ::-webkit-scrollbar{
+        opacity: 0!important;
+        width: 0!important;
+        background-color: transparent!important;
+      }
+    </style>
+</head>
+
+<body>
+    <div class="j-container">
+        <div class="j-main" id="v-info-collect" v-cloak>
+            <div class="j-container">
+                <div class="j-main info-collect">
+                  <div class="collect-main">
+                    <div class="step" v-if="step == 1">
+                      <div class="c-title">剑鱼大会员</div>
+                      <div class="c-tips">- 请完善您的信息后,免费体验大会员 -</div>
+                      <div class="c-form">
+                        <van-field
+                          v-model.trim="info.name"
+                          label="姓名"
+                          placeholder="请输入姓名"
+                          :error-message="errorMsg.name"
+                          maxLength="20"
+                          @blur="checkNameReg"
+                        ></van-field>
+                        <van-field
+                          v-model.trim="info.phone"
+                          label="手机号"
+                          placeholder="请输入手机号"
+                          type="tel"
+                          maxLength="11"
+                          @blur="checkPhoneReg"
+                          :error-message="errorMsg.phone"
+                        ></van-field>
+                        <van-field
+                          v-model.trim="info.company"
+                          label="公司名称"
+                          placeholder="请输入公司名称"
+                          rows="1"
+                          autosize
+                          type="textarea"
+                          @blur="checkCompanyReg"
+                          maxLength="50"
+                          :error-message="errorMsg.company"
+                        ></van-field>
+                        <van-field
+                          v-model.trim="info.job"
+                          label="职位"
+                          placeholder="请输入职位(非必填)"
+                          maxLength="30"
+                        ></van-field>
+                      </div>
+                      <button type="button" :disabled="btnDisabled" class="ue-btn" @click="confirmHandle">立即体验</button>
+                    </div>
+                    <div class="step" v-if="step == 2">
+                      <div class="success-main">
+                        <i class="icon-success"></i>
+                        <p class="success-title">提交成功</p>
+                      </div>
+                      <div class="success-tip">我们的客户经理会在24小时内尽快与您联系。</div>
+                      <button type="button" class="ue-btn" @click="history.back()">确定</button>
+                    </div>
+                  </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script rel="preload" as="script" src=//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js> </script>
+    <script rel="preload" as="script" src=//cdn.jsdelivr.net/npm/vant@2.8.2/lib/vant.min.js> </script>
+    <script rel="preload" as="script" src=//cdn.jsdelivr.net/npm/zepto@1.2.0/dist/zepto.min.js> </script>
+    <script src=//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js> </script>
+    <script src=//cdn.jsdelivr.net/npm/vant@2.8.2/lib/vant.min.js> </script>
+    <script src=//cdn.jsdelivr.net/npm/zepto@1.2.0/dist/zepto.min.js> </script>
+    {{include "/big-member/commonjs.html"}}
+
+    <script>
+    var vNode = {
+        delimiters: ['${', '}'],
+        el: '#v-info-collect',
+        data: {
+            info: {
+              name: '',
+              phone: '',
+              company: '',
+              job: ''
+            },
+            errorMsg: {
+              name: '',
+              phone: '',
+              company: '',
+              job: ''
+            },
+            step: 1
+        },
+        created () {},
+        computed: {
+          btnDisabled: function () {
+            var regName = this.info.name.length >= 2
+            var regPhone = /^1[3456789]\d{9}$/.test(this.info.phone)
+            var regCom = this.info.company.length >= 2
+            return !(regName && regPhone && regCom)
+          }
+        },
+        methods: {
+          showLoading: function() {
+            var loading = this.$toast.loading({
+              duration: 0,
+              forbidClick: true,
+              message: 'loading...',
+            })
+            return loading
+          },
+          showToast: function (message) {
+            this.$toast({
+              duration: 1500,
+              forbidClick: true,
+              message: message,
+            })
+          },
+          checkNameReg: function () {
+            var pass = this.info.name.length >= 2
+            if (this.info.name) {
+              if (pass) {
+                this.errorMsg.name = ''
+              } else {
+                this.errorMsg.name = '姓名格式不正确'
+              }
+            } else {
+              this.errorMsg.name = ''
+            }
+            return pass
+          },
+          checkPhoneReg: function () {
+            var pass = /^1[3456789]\d{9}$/.test(this.info.phone)
+            if (this.info.phone) {
+              if (pass) {
+                this.errorMsg.phone = ''
+              } else {
+                this.errorMsg.phone = '手机号格式不正确'
+              }
+            } else {
+              this.errorMsg.phone = ''
+            }
+            return pass
+          },
+          checkCompanyReg: function () {
+            var pass = this.info.company.length >= 2
+            if (this.info.company) {
+              if (pass) {
+                this.errorMsg.company = ''
+              } else {
+                this.errorMsg.company = '公司名称格式不正确'
+              }
+            } else {
+              this.errorMsg.company = ''
+            }
+            return pass
+          },
+          confirmHandle: function() {
+            var _this = this
+            var loading = _this.showLoading()
+            var obj = {
+              name: _this.info.name,
+              phone: _this.info.phone,
+              company: _this.info.company,
+              position: _this.info.job
+            }
+            $.ajax({
+              type:'POST',
+              url:'/salesLeads/member/trialInfo',
+              data: obj,
+              success:(res)=>{
+                if (res) {
+                  loading.clear()
+                  if (res.status == 1) {
+                    _this.step = 2
+                  } else {
+                    _this.showToast(res.msg || '提交失败')
+                  }
+                }
+              }
+            })
+          }
+        }
+    }
+    new Vue(vNode)
+    </script>
+    {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 10 - 0
src/web/templates/order/pc/orderPay.html

@@ -248,6 +248,13 @@
                         code: orderCode
                     }, function (r) {
                         if (r.success) {
+                            var from = '' // 从那个页面过来orderList(订单列表)
+                            try {
+                                var referer = document.referrer
+                                if (referer && referer.indexOf('/swordfish/toMyOrder') !== -1) {
+                                    from = 'orderList'
+                                }
+                            } catch (error) {}
                             //页面跳转
                             var href="/front/{{.T.orderType}}/paySuccess/{{.T.orderCode}}?payway=" + r.pay_way + "&payTime=" + r.payTime + "&email=" + r.email + "&price=" + price
                             if (bigmemberBid==="1"){//
@@ -256,6 +263,9 @@
                             if (docsId!=null){
                               href+="&docsId="+docsId;
                             }
+                            if (from) {
+                                href += ('&from=' + from)
+                            }
                             window.location.replace(href);
                         }
                     })

+ 17 - 7
src/web/templates/order/pc/paySuccess.html

@@ -8,7 +8,7 @@
         <meta content="light" theme="light" name="enable-header"/>
     {{include "/common/pnc.html"}}
     <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/order/css/reset_pc.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/order/css/pay_success.css?v={{Msg "seo" "version"}}2">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/order/css/pay_success.css?v={{Msg "seo" "version"}}">
     <!--[if lt IE 9]>
     <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.3/html5shiv.js"></script>
     <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
@@ -84,8 +84,8 @@
                 <span>剑鱼币余额:</span>
                 <span id="pointFund" style="color:red"></span>
             </p>
-                <a class="check_order" id="read" style="display:none">继续浏览</a>
-                <a class="check_order" href="/front/integral/integralDetail?order_code={{.T.orderCode}}">查看订单</a>
+                <a class="check_order sm-size" id="goBack2" style="display: none;">立即返回</a>
+                <a class="check_order sm-size default" href="/front/integral/integralDetail?order_code={{.T.orderCode}}">查看订单</a>
             {{end}}
         </div>
     </div>
@@ -94,7 +94,18 @@
 <script type="text/javascript">
     var myPageNavIsNormal = true;
     $(function () {
+        if (getParam('from') !== 'orderList') {
+            $('#goBack2').show()
+        }
+
         $("#public-nav").css("background", "#fff");
+        $('#goBack2').on('click', function() {
+            if (history.length <= 2) {
+                history.go(-1)
+            } else {
+                history.go(-2)
+            }
+        })
         haslogin({{.T.logid}});
         var orderType={{.T.orderType}};
         if (orderType=="member"){
@@ -112,15 +123,14 @@
               $("#SerialNumber").html(r.data.filter_id);
               var docid=getParam("docsId");
               console.log(docid)
-              if (docid!=null){
-                $("#read").show().attr("href","/swordfish/docs//content/"+docid);
-              }
+              // if (docid!=null){
+              //   $("#read").show().attr("href","/swordfish/docs//content/"+docid);
+              // }
             }else{
               $("#point").hide();
               $("#pointFund").hide();
             }
         })
-
         }
        // var bigmemberBid = getParam("b");
        // if (bigmemberBid)==1{

+ 37 - 0
src/web/templates/structuredata/mobile/marketing_wx.html

@@ -168,6 +168,43 @@
 					</ul>
 				</div>
 			</div>
+
+            <!-- 优惠信息 -->
+            <div class="module buy-discount">
+                <div class="module-content">
+                    <div class="how-to-buy">
+                        <img class="s-img" src='/structuredata/mobile/image/how-to-buy@2x.png' alt="">
+                    </div>
+                    <div class="discount">
+                        <img class="s-img" src='/structuredata/mobile/image/discount@2x.png' alt="">
+                    </div>
+                    <div class="c-list">
+                        <div class="c-list-item">
+                            <span class="c-l-item-icon icon-discount-1"></span>
+                            <div class="c-l-item-text">
+                                支持按需勾选数据并导出<br />只为你挑选的数据付费
+                            </div>
+                        </div>
+                        <div class="c-list-item">
+                            <span class="c-l-item-icon icon-discount-2"></span>
+                            <div class="c-l-item-text">
+                                单条数据重复导出仅计费一次<br />不再为重复数据付费
+                            </div>
+                        </div>
+                        <div class="c-list-item">
+                            <span class="c-l-item-icon icon-discount-3"></span>
+                            <div class="c-l-item-text">
+                                预存金额有效期<span class="color-red">长达3年</span><br />充值一次即可随时导出
+                            </div>
+                        </div>
+                    </div>
+                    <a href="tel:400-108-6670" class="call-phone">
+                        <span class="icon-phone"></span>
+                        立即咨询:400-108-6670
+                    </a>
+                </div>
+            </div>
+
 			<!-- 已使用结构化招标数据的部分企业 -->
 			<div class="company">
 				<div class="company_content">

+ 46 - 3
src/web/templates/structuredata/pc/index.html

@@ -164,6 +164,44 @@
             </div>
         </div>
     </div>
+    <div class="main-5 buy-discount">
+        <div class="main-5-content">
+            <div class="c-header">
+                <div class="how-to-buy">
+                    <img class="s-img" src='{{Msg "seo" "cdn"}}/structuredata/pc/image/how-to-buy@2x.png' alt="">
+                </div>
+                <div class="discount">
+                    <img class="s-img" src='{{Msg "seo" "cdn"}}/structuredata/pc/image/discount@2x.png' alt="">
+                </div>
+            </div>
+            <div class="c-list">
+                <div class="c-list-item">
+                    <img class="c-l-item-icon" src='{{Msg "seo" "cdn"}}/structuredata/pc/image/icon-5-1@2x.png' alt="">
+                    <div class="c-l-item-text">
+                        支持按需勾选数据并导出<br />只为你挑选的数据付费
+                    </div>
+                </div>
+                <div class="c-list-item">
+                    <img class="c-l-item-icon" src='{{Msg "seo" "cdn"}}/structuredata/pc/image/icon-5-2@2x.png' alt="">
+                    <div class="c-l-item-text">
+                        单条数据重复导出仅计费一次<br />不再为重复数据付费
+                    </div>
+                </div>
+                <div class="c-list-item">
+                    <img class="c-l-item-icon" src='{{Msg "seo" "cdn"}}/structuredata/pc/image/icon-5-3@2x.png' alt="">
+                    <div class="c-l-item-text">
+                        预存金额有效期长达3年<br />充值一次即可随时导出
+                    </div>
+                </div>
+            </div>
+            <div class="bottom_option">
+                <div  class="call">
+                    <span class="icon-phone"></span>
+                    立即咨询:400-108-6670
+                </div>
+            </div>
+        </div>
+    </div>
     <div class="main-5">
         <div class="main-5-content">
             <div class="companys">
@@ -264,14 +302,19 @@
         if(scrollTop >= 2473) {
             $('.companys_img').addClass('companys_img_animate')
         }
-        if(scrollTop >= 2604) {
+        if(scrollTop >= 3004) {
+            $('.buy-discount .how-to-buy').addClass('a-animate')
+            $('.buy-discount .discount').addClass('a-animate')
+            $('.buy-discount .c-list').addClass('a-animate')
+        }
+        if(scrollTop >= 3700) {
             $('.com-lists').addClass('com-lists-animate')
         }
-        if(scrollTop >= 2900) {
+        if(scrollTop >= 3500) {
             $('.consultPopup').css('bottom','497px')
             $('.backTop').css('bottom', '383px')
         }
-        if(scrollTop <= 2800) {
+        if(scrollTop <= 3400) {
             $('.consultPopup').css('bottom','165px')
             $('.backTop').css('bottom', '61px')
         }

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.