ソースを参照

Merge branch 'dev2.8.5' of http://192.168.3.207:10080/qmx/jy into dev2.8.5

xuzhiheng 5 年 前
コミット
2d14d334cc
61 ファイル変更2838 行追加421 行削除
  1. 2 2
      src/jfw/front/swordfish.go
  2. 3 1
      src/jfw/front/vipsubscribe.go
  3. 1 1
      src/jfw/modules/subscribepay/src/config.json
  4. 29 11
      src/jfw/modules/subscribepay/src/entity/subscribeVip.go
  5. 12 3
      src/jfw/modules/subscribepay/src/service/afterPay.go
  6. 236 70
      src/jfw/modules/subscribepay/src/service/index_p1.go
  7. 25 0
      src/jfw/modules/subscribepay/src/service/vipSubscribePay.go
  8. 60 0
      src/jfw/modules/subscribepay/src/util/public.go
  9. 1 1
      src/web/staticres/css/subscribe.css
  10. 6 3
      src/web/staticres/css/wx/home.css
  11. 169 3
      src/web/staticres/js/wxSupersearch.js
  12. 5 0
      src/web/staticres/landingpage/mobile_1/css/animate.min.css
  13. 549 0
      src/web/staticres/landingpage/mobile_1/css/index.css
  14. 305 0
      src/web/staticres/landingpage/mobile_1/css/reset.css
  15. 11 0
      src/web/staticres/landingpage/mobile_1/css/swiper.min.css
  16. BIN
      src/web/staticres/landingpage/mobile_1/images/1-1-1.jpg
  17. BIN
      src/web/staticres/landingpage/mobile_1/images/1.jpg
  18. BIN
      src/web/staticres/landingpage/mobile_1/images/2-1.jpg
  19. BIN
      src/web/staticres/landingpage/mobile_1/images/2-2.jpg
  20. BIN
      src/web/staticres/landingpage/mobile_1/images/2-3.jpg
  21. BIN
      src/web/staticres/landingpage/mobile_1/images/2-4.jpg
  22. BIN
      src/web/staticres/landingpage/mobile_1/images/2.jpg
  23. BIN
      src/web/staticres/landingpage/mobile_1/images/arrow.png
  24. BIN
      src/web/staticres/landingpage/mobile_1/images/btn.png
  25. BIN
      src/web/staticres/landingpage/mobile_1/images/close.png
  26. BIN
      src/web/staticres/landingpage/mobile_1/images/eight.png
  27. BIN
      src/web/staticres/landingpage/mobile_1/images/eightBg.png
  28. BIN
      src/web/staticres/landingpage/mobile_1/images/eightBottom.png
  29. BIN
      src/web/staticres/landingpage/mobile_1/images/finish.png
  30. BIN
      src/web/staticres/landingpage/mobile_1/images/five.png
  31. BIN
      src/web/staticres/landingpage/mobile_1/images/fourContent.png
  32. BIN
      src/web/staticres/landingpage/mobile_1/images/fourContent_new.png
  33. BIN
      src/web/staticres/landingpage/mobile_1/images/fourtitle.png
  34. BIN
      src/web/staticres/landingpage/mobile_1/images/logo.png
  35. BIN
      src/web/staticres/landingpage/mobile_1/images/logo_new.png
  36. BIN
      src/web/staticres/landingpage/mobile_1/images/new.png
  37. BIN
      src/web/staticres/landingpage/mobile_1/images/one.png
  38. BIN
      src/web/staticres/landingpage/mobile_1/images/secondTitle.png
  39. BIN
      src/web/staticres/landingpage/mobile_1/images/seven.png
  40. BIN
      src/web/staticres/landingpage/mobile_1/images/share32.png
  41. BIN
      src/web/staticres/landingpage/mobile_1/images/six.png
  42. BIN
      src/web/staticres/landingpage/mobile_1/images/three.png
  43. BIN
      src/web/staticres/landingpage/mobile_1/images/threecetent.png
  44. BIN
      src/web/staticres/landingpage/mobile_1/images/threetitle.png
  45. BIN
      src/web/staticres/landingpage/mobile_1/images/two.png
  46. 226 0
      src/web/staticres/landingpage/mobile_1/js/index.js
  47. 24 0
      src/web/staticres/landingpage/mobile_1/js/rem.js
  48. 3 0
      src/web/staticres/landingpage/mobile_1/js/swiper.animate1.0.3.min.js
  49. 11 0
      src/web/staticres/landingpage/mobile_1/js/swiper.min.js
  50. 208 186
      src/web/staticres/vipsubscribe/js/common.js
  51. 39 32
      src/web/staticres/vipsubscribe/js/editArea.js
  52. 4 17
      src/web/staticres/wxswordfish/share.js
  53. 1 1
      src/web/templates/pc/subscribe_new.html
  54. 15 13
      src/web/templates/weixin/about.html
  55. 1 1
      src/web/templates/weixin/historypush.html
  56. 15 27
      src/web/templates/weixin/search/mainSearch.html
  57. 38 35
      src/web/templates/weixin/sharePage.html
  58. 25 10
      src/web/templates/weixin/vipsubscribe/choose_area.html
  59. 23 2
      src/web/templates/weixin/vipsubscribe/choose_industry.html
  60. 2 2
      src/web/templates/weixin/vipsubscribe/edit_subscribe_industry.html
  61. 789 0
      src/web/templates/weixin/vipsubscribe/vip_purchase_willExpire.html

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

@@ -2385,7 +2385,7 @@ func (f *Front) HasPushHistory() {
 			hasKeyFlag = len(a_itmes) > 0
 		}
 		isVipFlag = true
-		isPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+tedayNum+"_"+userId) > 2000
+		isPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+tedayNum+"_"+userId) >= 2000
 		isOnTail = util.IntAll((*user)["i_vip_status"])
 		_endtime := (*user)["l_vip_endtime"]
 		//是否到期
@@ -2410,7 +2410,7 @@ func (f *Front) HasPushHistory() {
 			a_key, _ := o_jy["a_key"].([]interface{})
 			hasKeyFlag = len(a_key) > 0
 		}
-		isPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+tedayNum+"_"+userId) > 50
+		isPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+tedayNum+"_"+userId) >= 50
 	}
 	pageNum, _ := f.GetInteger("pageNum")
 	if pageNum == 0 {

+ 3 - 1
src/jfw/front/vipsubscribe.go

@@ -171,15 +171,17 @@ func (s *Subscribepay) ToPurchasePage(flag string) {
 		s.T["isTrial"] = true
 		s.T["orderType"] = -1
 	} else { //付费
+		s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
 		if flag == "willExpire" {
 			s.T["orderType"] = 5
+			s.Render("/weixin/vipsubscribe/vip_purchase_willExpire.html")
+			return
 		} else {
 			s.T["orderType"] = 1
 		}
 		if s.GetString("orderCode") != "" {
 			s.T["again"] = 1 //再次购买
 		}
-		s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
 	}
 	s.Render("/weixin/vipsubscribe/vip_purchase.html")
 }

+ 1 - 1
src/jfw/modules/subscribepay/src/config.json

@@ -2,7 +2,7 @@
 	"mongodbServers": "192.168.3.128:27080",
     "mongodbPoolSize": 5,
     "mongodbName": "qfw",
-    "redisaddrs": "other=192.168.3.128:1712,session=192.168.3.128:1712,push=192.168.3.128:1712",
+    "redisaddrs": "other=192.168.3.128:1712,session=192.168.3.128:1712,push=192.168.3.128:1712,pushcache_1=192.168.3.128:5000",
     "elasticsearch": "http://192.168.3.128:9800",
     "elasticPoolSize": 30,
     "webport": "86",

+ 29 - 11
src/jfw/modules/subscribepay/src/entity/subscribeVip.go

@@ -111,11 +111,6 @@ func (this *vipSubscribeStruct) PayCallBack(param *CallBackParam) bool {
 	var endTime time.Time
 	if vmsg.OrderType == 1 { //新订单 计算开始时间 结束时间
 		startTime = time.Now()
-		/*if vmsg.Cycleunit == 1 { //年
-			endTime = startTime.AddDate(vmsg.Cyclecount, 0, 0)
-		} else if vmsg.Cycleunit == 2 { //月
-			endTime = startTime.AddDate(0, vmsg.Cyclecount, 0)
-		}*/
 		endTime = util.GetDATE(vmsg.Cycleunit, vmsg.Cyclecount, startTime.Unix())
 		updateMap["vip_starttime"] = qutil.FormatDate(&startTime, qutil.Date_Full_Layout)
 		updateMap["vip_endtime"] = qutil.FormatDate(&endTime, qutil.Date_Full_Layout)
@@ -151,6 +146,23 @@ func (this *vipSubscribeStruct) PayCallBack(param *CallBackParam) bool {
 	return flag
 }
 
+//获取用户最后一笔支付数据
+func (this *vipSubscribeStruct) GetUserLastOrderDetaul(userid string) (VipSimpleMsg, error) {
+	vmsg := VipSimpleMsg{}
+	orderData := util.Mysql.FindOne("dataexport_order", map[string]interface{}{
+		"user_id":      userid,
+		"order_status": 1,
+	}, "filter,order_code", "create_time desc")
+	if orderData == nil || len(*orderData) == 0 {
+		return vmsg, errors.New("not find last order")
+	}
+	filterStr := qutil.ObjToString((*orderData)["filter"])
+	if json.Unmarshal([]byte(filterStr), &vmsg) != nil {
+		return vmsg, errors.New(filterStr + "json.Unmarshal err")
+	}
+	return vmsg, nil
+}
+
 //设置开始使用vip订阅
 func (this *vipSubscribeStruct) StartSubVip(userId string, vmsg VipSimpleMsg, startTime, endTime time.Time, isTrial bool) bool {
 	buyset := JyVipSubStruct.NewBuySet(vmsg.Area, vmsg.Industry)
@@ -441,7 +453,7 @@ func (this *vipSubscribeStruct) GetSubVipPrice(area *map[string]interface{}, ind
 		}
 
 		//计算非全国套餐
-		finalPrice := pCount * getSetMealPrice(1, industryNum, unit) * count //省份价格
+		finalPrice := 0 //省份价格
 		for _, cityCount := range cityCountMap {
 			thisPrice := 0
 			if cityCount == 1 { //单城市
@@ -450,16 +462,22 @@ func (this *vipSubscribeStruct) GetSubVipPrice(area *map[string]interface{}, ind
 				if industryNum == 0 || industryNum == 1 { //多城市 单行业
 					thisPrice = cityCount * getSetMealPrice(2, industryNum, unit) * count
 				} else { //多行业 多行业
-					industryPrice := SubVipPrice.BuyerClassPrice * industryNum
-					cityPrice := SubVipPrice.CityPrice * cityCount
-					thisPrice = (industryPrice + cityPrice) * count
-					if unit == 1 { //年
-						thisPrice *= 10
+					//industryPrice := SubVipPrice.BuyerClassPrice * industryNum
+					//cityPrice := SubVipPrice.CityPrice * cityCount
+					//thisPrice = (industryPrice + cityPrice) * count
+					if cityCount > SubVipPrice.CityMaxCount {
+						pCount++
+					} else {
+						thisPrice = getSetMealPrice(2, industryNum, unit) * cityCount * count;
+						if unit == 1 { //年
+							thisPrice *= 10
+						}
 					}
 				}
 			}
 			finalPrice += thisPrice
 		}
+		finalPrice += pCount * getSetMealPrice(1, industryNum, unit) * count
 		return finalPrice
 	}()
 	if SubVipPrice.Discount < 1 {

+ 12 - 3
src/jfw/modules/subscribepay/src/service/afterPay.go

@@ -66,7 +66,8 @@ func (a *AfterPay) FastImport() error {
 				}
 				if len(_keys) > 0 {
 					if kwsCount >= 300 {
-						flagInt = -3 //超过最大设置量
+						flagInt = 1 //超过最大设置量
+						_keys = []map[string]interface{}{}
 					} else {
 						if len(_keys)+kwsCount >= 300 {
 							_keys = _keys[:(300 - kwsCount)]
@@ -87,8 +88,16 @@ func (a *AfterPay) FastImport() error {
 							flagInt = 1 //导入成功
 						}
 					}
-				} else {
-					flagInt = -2 //普通用户的关键词都已存在
+				} else if len(_keys) == 0 {
+					ok := util.MQFW.UpdateById("user", userId, bson.M{
+						"$set": bson.M{
+							"o_vipjy.l_modifydate": time.Now().Unix(),
+							"i_vip_fastimport":     1,
+						},
+					})
+					if ok {
+						flagInt = 1 //导入成功-普通用户的关键词都已存在
+					}
 				}
 				log.Println(classify_index, kws_index, _keys)
 

+ 236 - 70
src/jfw/modules/subscribepay/src/service/index_p1.go

@@ -2,14 +2,20 @@ package service
 
 import (
 	"entity"
+	"errors"
 	"fmt"
-	"github.com/go-xweb/xweb"
 	"log"
 	qutil "qfw/util"
 	"qfw/util/elastic"
+	"qfw/util/jy"
 	"qfw/util/redis"
 	"strings"
+	"time"
 	"util"
+
+	"gopkg.in/mgo.v2/bson"
+
+	"github.com/go-xweb/xweb"
 )
 
 type IndexSearch struct {
@@ -20,92 +26,124 @@ type IndexSearch struct {
 const (
 	search_index = "bidding"
 	search_type  = "bidding"
-	search_field = `"_id","title","publishtime","toptype","subtype","type","city","s_subscopeclass","budget"`
+	search_field = `"_id","title","publishtime","toptype","subtype","type","area","city","s_subscopeclass","budget"`
 
-	query               = `{"query":{"bool":{"must":[%s],"should":[%s],"minimum_should_match": 1}},"highlight": {"pre_tags": ["<a>"],"post_tags": ["</a>"],"fields": {"title": {"fragment_size": 0,"number_of_fragments": 1}}},"_source":[` + search_field + `],"sort":[{"publishtime":"desc"},{"budget":"desc"}],"from":0,"size":50}`
+	query               = `{"query":{"bool":{"must":[%s],"should":[%s],"minimum_should_match": 1}},"highlight": {"pre_tags": ["<a>"],"post_tags": ["</a>"],"fields": {"title": {"fragment_size": 0,"number_of_fragments": 1}}},"_source":[` + search_field + `],"sort":[{"publishtime":"desc"},{"budget":"desc"}],"from":0,"size":20}`
 	multi_match         = `{"multi_match": {"query": %s,"type": "phrase", "fields": ["title"]}}`
 	query_bool_must     = `{"terms":{"%s":[%s]}}`
 	query_bool_must_and = `{"bool":{"must":[%s],"must_not":[%s]}}`
 	query_bool_should   = `{"bool":{"should":[%s],"minimum_should_match": 1}}`
+
+	mongodb_fields = `{"_id":1,"area":1,"bidamount":1,"bidopentime":1,"budget":1,"buyer":1,"projectname":1,"publishtime":1,"s_subscopeclass":1,"subtype":1,"title":1,"toptype":1,"type":1,"winner":1}`
 )
 
 func (this *IndexSearch) GetIndexMessage() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
+	redisData := redis.Get("other", "p1_indexMessage_"+userId)
+	if redisData != nil {
+		result, ok := redisData.(map[string]interface{})
+		if ok {
+			this.ServeJson(map[string]interface{}{
+				"success": true,
+				"errMsg":  "",
+				"data":    result,
+			})
+			return
+		}
+	}
 	areaCity := this.GetString("city")
-	log.Println(userId, "=== 地区:", areaCity)
+	nReq, _ := this.GetInteger("nReq")
 	r := func() *entity.FuncResult {
-		SearchType := 0 //订阅 0 > 搜索 1(有无订阅)> 无搜索 2(有无订阅)
-		doSearchStr := ""
-		isVip := false
 		//获取订阅信息
 		userMap, ok := util.MQFW.FindById("user", userId, `{"o_jy":1,"o_vipjy":1,"i_vip_status":1}`)
 		if !ok || userMap == nil || len(*userMap) == 0 {
-			SearchType++
+			//查询出错
+			return &entity.FuncResult{false, errors.New("未查询到用户信息"), nil}
 		}
 		//根据订阅词获取查询语句
-		if SearchType == 0 {
-			vipStatus := qutil.IntAll((*userMap)["i_vip_status"])
-			if vipStatus > 0 { //vip用户
-				isVip = true
-				o_msgset := qutil.ObjToMap((*userMap)["o_vipjy"])
-				vip_items, ok := (*o_msgset)["a_items"].([]interface{})
-				if !ok || len(vip_items) == 0 {
-					SearchType++
-				} else {
-					//拼接查询语句-vip订阅词
-					doSearchStr = getVipSubscribeSql(o_msgset)
-					log.Println("getVipSubscribeSql SearchStr===", doSearchStr)
-				}
-			} else { //普通用户
-				o_msgset := qutil.ObjToMap((*userMap)["o_jy"])
-				items, ok := (*o_msgset)["a_key"].([]interface{})
-				if !ok || len(items) == 0 {
-					SearchType++
-				} else {
-					//拼接查询语句-普通用户订阅词
-					doSearchStr = getNormalSubscribeSql(items)
-					log.Println("getNormalSubscribeSql SearchStr===", doSearchStr)
+		vipStatus := qutil.IntAll((*userMap)["i_vip_status"])
+		//vip用户
+		if vipStatus > 0 {
+			o_msgset := qutil.ObjToMap((*userMap)["o_vipjy"])
+			vip_items, ok := (*o_msgset)["a_items"].([]interface{})
+			//vip查询推送历史
+			result := getPushHistory(userId)
+			return &entity.FuncResult{true, nil, map[string]interface{}{
+				"isVip":        true,                     //是否是vip用户
+				"hasSubscribe": ok && len(vip_items) > 0, //是否有订阅词
+				"listLength":   len(result),              //数据长度
+				"list":         result,                   //数据
+			}}
+		}
+		//普通用户用户
+		o_msgset := qutil.ObjToMap((*userMap)["o_jy"])
+		items, ok := (*o_msgset)["a_key"].([]interface{})
+		if ok && len(items) > 0 {
+			//普通用户查询推送历史
+			result := getPushHistory(userId)
+			return &entity.FuncResult{true, nil, map[string]interface{}{
+				"isVip":        false,                //是否是vip用户
+				"hasSubscribe": ok && len(items) > 0, //是否有订阅词
+				"listLength":   len(result),          //数据长度
+				"list":         result,               //数据
+			}}
+		}
+		//普通用户无订阅词
+		var history []string
+		var _history []string
+		h := redis.GetStr("other", "s_"+userId)
+		if h != "" {
+			history = strings.Split(h, ",")
+			_history = strings.Split(h, ",")
+			for k, v := range _history {
+				b_word, _, _ := jy.InterceptSearchKW(v, true, true)
+				if b_word == "" {
+					_history = append(_history[:k], _history[k+1:]...)
 				}
 			}
 		}
-		//根据搜索历史获取查询语句
-		if SearchType == 1 {
-			h := redis.GetStr("other", "s_"+userId)
-			if h == "" {
-				SearchType++
-			} else {
-				history := strings.Split(h, ",")
-				//拼接查询语句-普通用户订阅词
-				doSearchStr = getSimpleSql(areaCity, history)
-				log.Println("getSimpleSql with history SearchStr===", doSearchStr)
-				log.Println(history)
-			}
+		log.Println("areaCity:", areaCity)
+		var list *[]map[string]interface{}
+		if (nReq == 2 && areaCity != "") || len(_history) > 0 { //根据定位请求数据
+			doSearchStr := getSimpleSql(areaCity, _history)
+			list = elastic.Get(search_index, search_type, doSearchStr)
+			util.BidListConvert("", list)
 		}
-		//无订阅无搜索历史
-		if SearchType == 2 {
-			doSearchStr = getSimpleSql(areaCity, []string{})
-			log.Println("getSimpleSql SearchStr===", doSearchStr)
+		listLength := 0
+		if list != nil {
+			for _, v := range *list {
+				v["_id"] = qutil.EncodeArticleId2ByCheck(v["_id"].(string))
+				delete(v, "s_subscopeclass")
+			}
+			listLength = len(*list)
 		}
-		list := elastic.Get(search_index, search_type, doSearchStr)
 		return &entity.FuncResult{true, nil, map[string]interface{}{
-			"isVip":        isVip,           //是否是vip用户
-			"hasSubscribe": SearchType == 0, //是否有订阅词
-			"hasHistory":   SearchType < 2,  //是否有搜索历史
-			"listLength":   len(*list),      //数据长度
-			"list":         list,            //数据
+			"isVip":        false,            //是否是vip用户
+			"hasSubscribe": false,            //是否有订阅词
+			"hasHistory":   len(history) > 0, //是否有搜索历史
+			"listLength":   listLength,       //数据长度
+			"list":         list,             //数据
+			"history":      history,          //历史数据
 		}}
 	}()
+	result := r.Format()
 	if r.Err != nil {
 		log.Printf("%s CreateOrder err:%v\n", userId, r.Err.Error())
 	}
-	this.ServeJson(r.Format())
+	//如果有数据,则缓存redis
+	if r.Success && qutil.IntAll(r.Data["listLength"]) > 0 {
+		redis.Put("other", "p1_indexMessage_"+userId, r.Data, 5*60)
+	}
+	this.ServeJson(result)
+	return
 }
 
-func getVipSubscribeSql(vipSets *map[string]interface{}) string {
+//根据vip订阅词 获取查询语句
+func getVipSubscribeSql(vipSets *map[string]interface{}) (string, []string) {
 	items := qutil.ObjArrToMapArr((*vipSets)["a_items"].([]interface{}))
 	bools := []string{}
 	musts := []string{}
-
+	_keywords := []string{}
 	//订阅词
 	for _, v := range items {
 		a_key := (*qutil.ObjToMap(v))["a_key"]
@@ -120,20 +158,24 @@ func getVipSubscribeSql(vipSets *map[string]interface{}) string {
 			if len(keys) == 0 {
 				continue
 			}
+			_keywords = append(_keywords, keys...)
 			allKeys = append(allKeys, keys...)
-			//附加次
-			appendkeys := qutil.ObjArrToStringArr(keyset["appendkey"].([]interface{}))
-			allKeys = append(allKeys, appendkeys...)
+			//附加词
+			if keyset["appendkey"] != nil {
+				appendkeys := qutil.ObjArrToStringArr(keyset["appendkey"].([]interface{}))
+				allKeys = append(allKeys, appendkeys...)
+			}
 
 			for _, key := range allKeys {
 				musts = append(musts, fmt.Sprintf(multi_match, "\""+key+"\""))
 			}
 			//排除词
-			notkeys := qutil.ObjArrToStringArr(keyset["notkey"].([]interface{}))
-			for _, notkey := range notkeys {
-				must_not = append(must_not, fmt.Sprintf(multi_match, "\""+notkey+"\""))
+			if keyset["notkey"] != nil {
+				notkeys := qutil.ObjArrToStringArr(keyset["notkey"].([]interface{}))
+				for _, notkey := range notkeys {
+					must_not = append(must_not, fmt.Sprintf(multi_match, "\""+notkey+"\""))
+				}
 			}
-
 			if len(musts) > 0 {
 				bools = append(bools, fmt.Sprintf(query_bool_must_and, strings.Join(musts, ","), strings.Join(must_not, ",")))
 			}
@@ -142,7 +184,7 @@ func getVipSubscribeSql(vipSets *map[string]interface{}) string {
 	//地区
 	areaMap := qutil.ObjToMap((*vipSets)["o_area"])
 	var areas, citys, areaSql []string
-	for k, v := range (*areaMap) {
+	for k, v := range *areaMap {
 		tmp := qutil.ObjArrToStringArr(v.([]interface{}))
 		if len(tmp) == 0 {
 			areas = append(areas, k)
@@ -165,18 +207,20 @@ func getVipSubscribeSql(vipSets *map[string]interface{}) string {
 	//类型
 	infotypes := qutil.ObjArrToStringArr((*vipSets)["a_infotype"].([]interface{}))
 	if len(infotypes) > 0 {
-		musts = append(musts, fmt.Sprintf(query_bool_must, "toptype", `"`+strings.Join(infotypes, `","`)+`"`))
+		musts = append(musts, fmt.Sprintf(query_bool_must, "subtype", `"`+strings.Join(infotypes, `","`)+`"`))
 	}
 	//行业
 	buyerclasses := qutil.ObjArrToStringArr((*vipSets)["a_buyerclass"].([]interface{}))
 	if len(buyerclasses) > 0 {
 		musts = append(musts, fmt.Sprintf(query_bool_must, "buyerclass", `"`+strings.Join(buyerclasses, `","`)+`"`))
 	}
-	return fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(bools, ","))
+	return fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(bools, ",")), _keywords
 }
 
-func getNormalSubscribeSql(keySets []interface{}) string {
+//根据普通用户订阅词 获取查询语句
+func getNormalSubscribeSql(keySets []interface{}) (string, []string) {
 	bools := []string{}
+	_keywords := []string{}
 	for _, v := range keySets {
 		keySet := qutil.ObjToMap(v)
 		if keySet == nil || len(*keySet) == 0 {
@@ -185,6 +229,7 @@ func getNormalSubscribeSql(keySets []interface{}) string {
 		var keywords, notkeys, areas, infotypes []string
 		if val, ok := (*keySet)["key"]; ok {
 			keywords = qutil.ObjArrToStringArr(val.([]interface{}))
+			_keywords = append(_keywords, keywords...)
 		} else {
 			continue
 		}
@@ -197,7 +242,7 @@ func getNormalSubscribeSql(keySets []interface{}) string {
 		if val, ok := (*keySet)["infotype"]; ok {
 			infotypes = qutil.ObjArrToStringArr(val.([]interface{}))
 		}
-		log.Println(keywords, notkeys, areas, infotypes)
+		//		log.Println(keywords, notkeys, areas, infotypes)
 
 		musts := []string{}
 		must_not := []string{}
@@ -215,7 +260,7 @@ func getNormalSubscribeSql(keySets []interface{}) string {
 		}
 		//类型
 		if len(infotypes) > 0 {
-			musts = append(musts, fmt.Sprintf(query_bool_must, "toptype", `"`+strings.Join(infotypes, `","`)+`"`))
+			musts = append(musts, fmt.Sprintf(query_bool_must, "subtype", `"`+strings.Join(infotypes, `","`)+`"`))
 		}
 
 		//添加
@@ -223,9 +268,10 @@ func getNormalSubscribeSql(keySets []interface{}) string {
 			bools = append(bools, fmt.Sprintf(query_bool_must_and, strings.Join(musts, ","), strings.Join(must_not, ",")))
 		}
 	}
-	return fmt.Sprintf(query, "", strings.Join(bools, ","))
+	return fmt.Sprintf(query, "", strings.Join(bools, ",")), _keywords
 }
 
+//根据历史记录获取查询语句
 func getSimpleSql(city string, history []string) string {
 	var musts, bools []string
 	if len(history) > 0 {
@@ -240,7 +286,127 @@ func getSimpleSql(city string, history []string) string {
 
 	}
 	if city != "" {
-		musts = append(musts, fmt.Sprintf(query_bool_must, "area", `"`+city+`"`))
+		musts = append(musts, fmt.Sprintf(query_bool_must, "city", `"`+city+`"`))
 	}
 	return fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(bools, ","))
 }
+
+//查询查询推送记录
+func getPushHistory(userId string) (result []map[string]interface{}) {
+	if userId == "" {
+		return
+	}
+	findSQL := "select * from pushsubscribe where userid = '" + userId + "'  and date >= %d order by id desc limit 50"
+	list := util.Mysql.SelectBySql(fmt.Sprintf(findSQL, time.Now().AddDate(0, 0, -7).Unix()))
+	if len(*list) > 0 {
+		pushCas := getJyPushs(*list)
+		result = getInfoByIds(pushCas)
+	} else {
+		result = []map[string]interface{}{}
+	}
+	return
+}
+
+func getJyPushs(datas []map[string]interface{}) (pushCas []*jy.PushCa) {
+	pushCas = []*jy.PushCa{}
+	for _, v := range datas {
+		keys := v["matchkeys"].(string)
+		//		for id_k, id_v := range strings.Split(util.ObjToString(v["pushinfo"]), ",") {
+		pushCas = append(pushCas, &jy.PushCa{
+			Date:       qutil.Int64All(v["date"]),
+			InfoId:     qutil.ObjToString(v["infoid"]),
+			Visit:      qutil.IntAll(v["isvisit"]),
+			Index:      1,
+			Area:       qutil.ObjToString(v["area"]),
+			City:       qutil.ObjToString(v["city"]),
+			Buyerclass: qutil.ObjToString(v["buyerclass"]),
+			Keys:       strings.Split(keys, " "),
+			Type:       qutil.IntAll(v["type"]),
+		})
+	}
+	return
+}
+
+//根据id取内容
+func getInfoByIds(pushCas []*jy.PushCa) []map[string]interface{} {
+	array := make([]map[string]interface{}, len(pushCas))
+	if len(pushCas) == 0 {
+		return array
+	}
+	m := map[string]bool{}
+	ids := []string{}
+	for _, v := range pushCas {
+		if m[v.InfoId] {
+			continue
+		}
+		m[v.InfoId] = true
+		ids = append(ids, v.InfoId)
+	}
+	infos := map[string]map[string]interface{}{}
+	//redis
+	es_ids := []string{}
+	for _, v := range ids {
+		info_i := redis.Get("pushcache_1", fmt.Sprintf("info_%s", v))
+		if info_i != nil {
+			info_m, _ := info_i.(map[string]interface{})
+			info_m["_id"] = v
+			infos[v] = info_m
+		} else {
+			es_ids = append(es_ids, v)
+		}
+	}
+	//	log.Println(es_ids)
+	//elasticsearch
+	if len(es_ids) > 0 {
+		list := elastic.Get("bidding", "bidding", fmt.Sprintf(query, strings.Join(es_ids, `","`), len(es_ids)))
+		if list != nil {
+			for _, v := range *list {
+				_id := qutil.ObjToString(v["_id"])
+				infos[_id] = v
+			}
+		}
+	}
+	//mongodb bidding
+	mgo_ids := []bson.ObjectId{}
+	for _, v := range es_ids {
+		if infos[v] == nil {
+			mgo_ids = append(mgo_ids, bson.ObjectIdHex(v))
+		}
+	}
+	if len(mgo_ids) > 0 {
+		list, ok := util.MQFW.Find("bidding", map[string]interface{}{"_id": map[string]interface{}{"$in": mgo_ids}}, nil, mongodb_fields, false, -1, -1)
+		if ok && *list != nil {
+			for _, v := range *list {
+				_id := qutil.BsonIdToSId(v["_id"])
+				v["_id"] = _id
+				infos[_id] = v
+			}
+		}
+	}
+	//mongodb bidding_back
+	mgo_back_ids := []bson.ObjectId{}
+	for _, v := range mgo_ids {
+		if infos[qutil.BsonIdToSId(v)] == nil {
+			mgo_back_ids = append(mgo_back_ids, v)
+		}
+	}
+	if len(mgo_back_ids) > 0 {
+		list, ok := util.MQFW.Find("bidding_back", map[string]interface{}{"_id": map[string]interface{}{"$in": mgo_back_ids}}, nil, mongodb_fields, false, -1, -1)
+		if ok && *list != nil {
+			for _, v := range *list {
+				_id := qutil.BsonIdToSId(v["_id"])
+				v["_id"] = _id
+				infos[_id] = v
+			}
+		}
+	}
+	//
+	for k, v := range pushCas {
+		info := infos[v.InfoId]
+		if info == nil {
+			continue
+		}
+		array[k] = jy.HistoryPush.InfoFormat(v, &info)
+	}
+	return array
+}

+ 25 - 0
src/jfw/modules/subscribepay/src/service/vipSubscribePay.go

@@ -60,6 +60,29 @@ func (this *SubVipPayOrder) CreateOrder() {
 		if err != nil {
 			return &entity.FuncResult{false, err, nil}
 		}
+
+		if orderType == 5 {
+			//即将到期续费 若未选择 则取上次订单设置
+			selectedStr := this.GetString("selected")
+			selected := []bool{}
+			if json.Unmarshal([]byte(selectedStr), &selected) != nil {
+				return &entity.FuncResult{false, errors.New("数据异常"), nil}
+			}
+			log.Println("xxx", selected)
+			if !selected[0] || !selected[0] {
+				//查询最后一笔订单
+				vipMsg, err := entity.JyVipSubStruct.GetUserLastOrderDetaul(userId)
+				if err != nil {
+					return &entity.FuncResult{false, errors.New("创建订单失败"), nil}
+				}
+				if !selected[0] {
+					area = vipMsg.Area
+				}
+				if !selected[1] {
+					industry = vipMsg.Industry
+				}
+			}
+		}
 		filter := entity.VipSimpleMsg{
 			area,
 			industry,
@@ -80,6 +103,8 @@ func (this *SubVipPayOrder) CreateOrder() {
 		}
 		//计算价格
 		totalfee := entity.JyVipSubStruct.GetSubVipPrice(area, industry, date_count, date_unit)
+
+		log.Printf("最终选择 地区:%+v   行业:%v\n 价格%d", filter.Area, filter.Industry, totalfee)
 		//创建订单
 		tradeno, prepayid, payStr := "", "", ""
 		if payWay == "wx_js" { //微信js支付

+ 60 - 0
src/jfw/modules/subscribepay/src/util/public.go

@@ -1,6 +1,7 @@
 package util
 
 import (
+	"fmt"
 	qutil "qfw/util"
 	"qfw/util/sms"
 	"strings"
@@ -18,3 +19,62 @@ func SendSMS(tplcode /*模板代码*/, mobile /*手机号码*/ string, param map
 	text := strings.Join(tmp, "&")
 	sms.SendSms(mobile, tplcode, text)
 }
+
+/*
+ * 结果列表转换,目前只换行行业字段
+ * 所有的招标搜索都要调用此方法,列表中有展示行业的也可以用
+ * industry 搜索条件中的行业,默认为空
+ */
+func BidListConvert(industry string, list *[]map[string]interface{}) {
+	if list == nil {
+		return
+	}
+	commonSubstring := func(v string) (value string) {
+		bcs := strings.Split(v, "_")
+		if len(bcs) == 1 {
+			value = bcs[0]
+		} else if len(bcs) == 2 {
+			value = bcs[0]
+			if strings.TrimSpace(value) == "" {
+				value = bcs[0]
+			}
+		}
+		return
+	}
+	for _, v := range *list {
+		budget, _ := v["budget"].(float64)
+		bidamount, _ := v["bidamount"].(float64)
+		if budget == 0 || strings.TrimSpace(fmt.Sprint(v["budget"])) == "" {
+			delete(v, "budget")
+		}
+		if bidamount == 0 || strings.TrimSpace(fmt.Sprint(v["bidamount"])) == "" {
+			delete(v, "bidamount")
+		}
+		value := ""
+		subscopeclass, _ := v["s_subscopeclass"].(string)
+		subscopeclass = strings.Trim(subscopeclass, ",")
+		bct := strings.Split(subscopeclass, ",")
+		if bct == nil || len(bct) == 0 {
+			continue
+		}
+		//搜索条件中没有行业的话,取查询结果中第一个行业
+		if industry == "" {
+			value = commonSubstring(bct[0])
+		} else { //搜索条件中有行业的话,取行业中和搜索条件相对应的第一个
+			industrys := strings.Split(industry, ",")
+		L:
+			for _, bc := range bct {
+				for _, is := range industrys {
+					if bc == is {
+						value = commonSubstring(bc)
+						break L
+					}
+				}
+			}
+		}
+		if strings.TrimSpace(value) == "" {
+			continue
+		}
+		v["industry"] = value
+	}
+}

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

@@ -655,7 +655,7 @@
     animation-fill-mode: forwards
 }
 
-.modal-content .close{
+.modal-content .vip.close{
     position: absolute;
     right: 10px;
     top: 10px;

+ 6 - 3
src/web/staticres/css/wx/home.css

@@ -199,7 +199,7 @@ font-weight: bold;
   height: .64rem;
   line-height: .64rem;
   background: #2CB7CA;
-  color: #fff;
+  color: #fff !important;
   font-size: .28rem;
   border-radius: 0.06rem;
 }
@@ -217,7 +217,7 @@ font-weight: bold;
 }
 
 .home .tips .tips_all a {
-  color: #2CB7CA;
+  color: #2CB7CA !important;
 }
 
 .home .tips .tips_btn {
@@ -231,7 +231,10 @@ font-weight: bold;
   height: .64rem;
   line-height: .64rem;
   background: #2CB7CA;
-  color: #fff;
+  color: #fff !important;
   font-size: .28rem;
   border-radius: 0.06rem;
 }
+.home .keyword {
+    color: #2cb7ca;
+}

+ 169 - 3
src/web/staticres/js/wxSupersearch.js

@@ -32,6 +32,12 @@ var SuperSearch = {
 		"pageNum": 1
 	},
 	njTipEasyPopup: null,
+	hasHistory :false,
+	hasSubscribe:false,
+	isVip :false,
+	locationCity:"",
+	listLength:0,
+	locationCount:0,
 	init: function(isReload,isFocus,isPushHistory){
 		this.dyDiv = true;
 		if(!isReload){
@@ -896,7 +902,9 @@ var SuperSearch = {
 				SuperSearch.secondKWS=data.secondKWS;
 				$("#supersearchPage #working").addClass("hidden");
 				SuperSearch.appendInterceptWord(data.interceptWord);
-				SuperSearch.s_words = data.keyWord;
+				if(data.keyWord!=""){
+					SuperSearch.s_words = data.keyWord;
+				}
 				$("#supersearchPage input[name=super_searchinput]").val(SuperSearch.s_words);
 				SuperSearch.requesting = false;
 				//历史记录和我的订阅
@@ -1285,6 +1293,7 @@ var SuperSearch = {
 	},
 	loadTipMsg: function(){
 		$.post("/jylab/mainSearch/getHK?t="+new Date().getTime(),function(r){
+			SuperSearch.myHistory=r.history;
 			SuperSearch.htmlTipMsg(r.history,r.msgset);
 	    });
 	},
@@ -1930,7 +1939,164 @@ var SuperSearch = {
 			$("#supersearchPage .resbm").addClass("hidden");
 		}
 	},
-	getHomeList:function(locationCity){
-		alert(locationCity)
+	getHomeList:function(locationCity,nReq){
+		SuperSearch.locationCity = locationCity;
+		SuperSearch.initHomePage();
+		$.ajax({
+			type: "post",
+			url: "/subscribepay/index/getIndexMessage",
+			data: {city:SuperSearch.locationCity,nReq:nReq},
+			dataType: "json",
+			async: false,
+			success: function(r){
+				if(r.success){
+					SuperSearch.homePageShow(r.data);
+				}
+			},error: function(){
+				console.log("请求报错...")
+			}
+		});
+	},
+	locationHomeData:function(){
+		wx.getLocation({
+		  	type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
+		  	success: function (res) {
+		    	var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
+		    	var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
+				//生成地理位置
+                   var point = new BMap.Point(longitude, latitude);
+                   var geoc = new BMap.Geocoder();
+                   geoc.getLocation(point, function(rs) {
+                       	var addComp = rs.addressComponents;
+                       	//alert('您现在所处位置:'+addComp.province + ", "+addComp.city + ", "+addComp.district + ", "+addComp.street + ", "+addComp.streetNumber);
+						SuperSearch.locationCount=1;//定位只查一次
+						SuperSearch.getHomeList(addComp.city,2);
+                   });
+		  }
+		});
+	},
+	homePageShow:function(r){
+		SuperSearch.hasHistory = r["hasHistory"]
+		SuperSearch.hasSubscribe = r["hasSubscribe"]
+		SuperSearch.isVip = r["isVip"]
+		SuperSearch.listLength =  r["listLength"]
+		SuperSearch.myHistory = r["history"]
+		var list = r["list"]
+		var homeListHtml = '';
+		if(list!=null&&list.length>0){
+			for(var i=0;i<list.length;i++){
+				var _list = list[i];
+				var title = _list["title"];
+				if(SuperSearch.hasSubscribe){
+					title = keyWordHighlight(title,_list["matchkeys"],'<font class="keyword">$1</font>');
+				}else if(SuperSearch.myHistory!=null&&SuperSearch.myHistory.length>0){
+					title = keyWordHighlight(title,SuperSearch.myHistory,'<font class="keyword">$1</font>');
+				}
+				homeListHtml +='<div class="list_item" onclick="SuperSearch.HomeToDetails(\''+_list["_id"]+'\')">'
+									+'<div class="list_title">'
+									+'<span class="serial_number">'+(i+1)+'. &nbsp;</span>'
+									+'<p>'+title+'</p>'
+									+'</div>'
+									+'<div class="list_info">'
+									+'<div class="tags">'
+				var area = _list["area"];
+				if(area==undefined||area==""){
+					area='全国'
+				}
+				homeListHtml +='<div class="area">'+area+'</div>'
+				var industry = _list["industry"];
+				var subtype = _list["subtype"];
+				if(SuperSearch.hasSubscribe){
+					industry = _list["s_subscopeclass"];
+					subtype = _list["type"];
+				}
+				if(industry==undefined){
+					industry=""
+				}
+				if(subtype==undefined){
+					subtype = ""
+				}
+				if (industry!=""){
+					homeListHtml +='<div class="industry">'+industry+'</div>'
+				}
+				if(subtype!=""){
+					homeListHtml +='<div class="course">'+subtype+'</div>'
+				}
+				//时间
+				var publishtime = _list["publishtime"];
+				if(publishtime){
+					publishtime = timeDiff(new Date(Number(publishtime+"000")));
+				}
+				homeListHtml +='<div class="price hide"></div>'
+									+'</div>'
+									+'<div class="timer">'+publishtime+'</div>'
+									+'</div>'
+									+'</div>'
+			}
+		}else{
+			if(!SuperSearch.isVip&&!SuperSearch.hasSubscribe&&SuperSearch.locationCount==0){
+				console.log("+++++++++++=")
+				SuperSearch.locationHomeData();
+				return
+			}
+		}
+		SuperSearch.showHomeList(homeListHtml);
+	},
+	HomeToDetails:function(id){
+		if(id!=""){
+			window.location.href="/article/content/"+id+".html"
+		}
+	},
+	showHomeList:function(hh){
+		SuperSearch.initHomeTip();
+		if(hh!=""){
+			$(".home_data .data_list").html(hh);
+		}
+	},
+	initHomePage:function(){
+		$(".home_toset").click(function(){
+			if(SuperSearch.isVip){
+				window.location.href="/front/vipsubscribe/toSetPage"
+			}else{
+				window.location.href="/swordfish/historypush"
+			}
+		})
+		$(".tips_all .GetAll").click(function(){
+			window.location.href="/swordfish/historypush"
+		})
+		$(".home_todetails").click(function(){
+			window.location.href="/front/vipsubscribe/introducePage"
+		})
+	},
+	initHomeTip:function(){
+		if(SuperSearch.listLength>0){
+			if(!SuperSearch.isVip){
+				if(SuperSearch.hasSubscribe){
+					if(SuperSearch.listLength>=50){
+						$(".home_4").show();
+						$(".home_todetails").show();
+					}else if(SuperSearch.listLength>0){
+						$(".home_2").show();
+						$(".home_toset").show();
+					}
+				}else{
+					$(".home_1").show();
+					$(".home_toset").show();
+				}
+			}else{
+				if(SuperSearch.listLength>=50){
+					$(".tips .tips_all").show();
+				}else if(SuperSearch.listLength>0){
+					if(!SuperSearch.hasSubscribe){
+						$(".home_3").show();
+					}else{
+						$(".home_2").show();
+					}
+					$(".home_toset").show();
+				}
+			}
+		}else{
+			$(".no_data").show();
+		}
 	}
 };

ファイルの差分が大きいため隠しています
+ 5 - 0
src/web/staticres/landingpage/mobile_1/css/animate.min.css


+ 549 - 0
src/web/staticres/landingpage/mobile_1/css/index.css

@@ -0,0 +1,549 @@
+.swiper-container{
+    position: relative;
+}
+.swiper-pagination{
+    height: 0.4rem;
+    top: 10px!important;
+    font-size: 0.2rem;
+    color: #fff;
+    
+  
+    position: absolute;
+    z-index: 99;
+}
+.firstPage{
+    background: url(../images/1.jpg) no-repeat  center;
+    background-size: 100% 100%;
+}
+.firstPage .titleOne{
+    width: 100%;
+    height: 7%;
+    /* line-height: 10%; */
+    margin-top:6%;
+}
+.firstPage .titleOne  img{
+   width: 1.4rem;
+}
+.firstPage .contetn{
+    text-align: right;
+    /* margin-right:0.47rem; */
+    text-align: center;
+}
+.firstPage .contetn img{
+    margin-top:3%;
+}
+.firstPage .contetn .one{
+    width: 6.63rem;
+}
+.firstPage .contetn .two{
+    width: 6.12rem;
+    margin-left: 0.4rem;
+}
+.firstPage .contetn .three{
+    width: 6.73rem;
+}
+.firstPage .btn{
+    margin: auto;
+    margin-top: 1.5rem;
+    width: 4.1rem;
+    height: 0.94rem;
+    border: 1px solid #fff;
+    border-radius: 0.94rem ;
+}
+.firstPage .btn a{
+    font-size: 0.4rem;
+    color: #fff;
+    text-align: center;
+    line-height: 0.94rem;
+}
+.firstPage .msg{
+    color: #fff;
+    font-size: 0.36rem;
+    text-align: center;
+    margin-top: 2.4rem;
+}
+.but{
+    width:100%;
+    position: absolute;
+    bottom: 0.4rem;
+    /* left: 5%; */
+    z-index: 9999;
+}
+.btns{
+    width:90%;
+    height: 1.23rem;
+    color: #fff;
+    font-size: 0.36rem;
+    background: url(../images/btn.png) no-repeat left 0.04rem;
+    background-size: 100% 100%;
+    border: none;
+    margin-top: 0.2rem;
+    position: relative;
+    z-index: 998;
+}
+.arrow img{
+    width: 0.48rem;
+    height: 0.35rem;
+    position: relative;
+    left: 0;
+    top: 0;
+    margin-top: 0.2rem;
+    -webkit-animation: myfirst 2s infinite alternate  linear;
+            animation: myfirst 2s infinite alternate  linear;
+}
+@-webkit-keyframes myfirst
+{
+    0%, 100%{
+        -webkit-transform:translateY(0);
+                transform:translateY(0);
+        opacity:1;
+    }
+    60%{
+        -webkit-transform:translateY(0.2rem);
+                transform:translateY(0.2rem);
+        opacity:0;
+    }
+  
+}
+@keyframes myfirst
+{
+    0%, 100%{
+        -webkit-transform:translateY(0);
+                transform:translateY(0);
+        opacity:1;
+    }
+    60%{
+        -webkit-transform:translateY(0.2rem);
+                transform:translateY(0.2rem);
+        opacity:0;
+    }
+  
+}
+.swiper-slide{
+    background: url(../images/2.jpg) no-repeat left center;
+    background-size: cover;
+    /* position: relative; */
+}
+.swiper-slide .title{
+    margin-top: 0.6rem;
+}
+.swiper-slide .title img{
+    height: 0.71rem;
+}
+.swiper-slide .title  p{
+    font-size: 0.3rem;
+    color: #ffdd00;
+    line-height: 0.6rem;
+}
+.secondPage .list{
+    margin-top: 0.3rem;
+}
+.secondPage .list ul li{
+    width: 90%;
+    height: 2rem;
+    margin: 0 auto;
+    margin-top: 0.18rem;
+   
+    background: #fff;
+    border-radius: 5px;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    padding: 0 0.4rem;
+    text-align: left;
+    position: relative;
+    -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+}
+.secondPage .list ul li a{
+    width: 100%;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex; 
+    -webkit-box-align: center; 
+        -ms-flex-align: center; 
+            align-items: center;
+}
+.secondPage .list ul li .left{
+    width: 90%;
+    padding-right: 0.4rem;
+  
+}
+.secondPage .list ul li .left span{
+    display: inline-block;
+    color: #fe7713;
+    font-size: 0.36rem;
+    font-weight: bold;
+    line-height: 0.66rem;
+}
+.secondPage .list ul li .left span i{
+    font-style: normal;
+    color: #333;
+}
+.secondPage .list ul li .left p{
+    font-size: 0.3rem;
+    color: #999;
+    line-height: 0.4rem;
+}
+.secondPage .list ul li .right{
+    width: 1.7rem;
+    display: table-cell;
+    vertical-align: middle;
+}
+.secondPage .list ul li .right img{
+    width: 1.7rem;  
+}
+.threePage{
+    background: url(../images/2.jpg) no-repeat left center;
+    background-size: 100% 100%;
+}
+.threePage .title{
+    width: 100%;
+    height: 1.8rem;
+    line-height: 1.8rem;
+    margin-top:0.3rem;
+}
+.threePage .title  img{
+   width: 6.54rem;
+}
+.threePage .content{
+    width:90%;
+    height: 7rem;
+    margin: 0 auto;
+    margin-top: 0.3rem;
+    background: #fff;
+    border-radius: 6px;
+    position: relative;
+}
+.threePage .content img{
+    width: 5.3rem;
+    margin-top: 0.85rem;
+    margin-left: 0.1rem
+}
+.threePage .content .contentOne{
+    width: 1.7rem;
+    height: 0.6rem;
+    background: #2979ff;
+    border-radius: 0.3rem;
+    color: #fff;
+    font-size: 0.3rem;
+    line-height: 0.6rem;
+    position: absolute;
+    left: 40%;
+    top: 0.9rem;
+}
+
+.threePage .list{
+    margin-top: 0.3rem;
+    margin-bottom: 0.4rem;
+}
+.threePage .list ul{
+    width:90%;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-pack:justify;
+        -ms-flex-pack:justify;
+            justify-content:space-between;
+   margin: 0 auto;
+}
+.threePage .list ul li{
+    width: 31%;
+    height: 0.95rem;
+    background: #fff;
+    border-radius: 4px;
+   line-height: 0.95rem;
+}
+.threePage .list ul li a{
+    color: #2979ff;
+    font-size: 0.3rem;
+}
+
+.fourPage .content{
+    width: 90%;
+    height: 8.2rem;
+    
+    background: #fff;
+    border-radius: 6px;
+   margin: 0 auto;
+    margin-bottom: 0.5rem;
+    margin-top: 0.5rem;
+    padding: 0.4rem 0;
+}
+.fourPage .content img{
+    width: 5.1rem;
+    margin-top: 1.07rem;
+}
+.fourPage .content strong{
+    display: inline-block;
+    padding: 0.4rem 0;
+    margin-top: 0.2rem;
+    color: #2979ff;
+    font-size: 0.4rem;
+}
+.fourPage .content p{
+    font-size: 0.32rem;
+    line-height: 0.6rem;
+    color: #2979ff;
+}
+.eightPage .title img{
+    height: 1.5rem;
+    margin-top: 0.4rem;
+}
+.eightPage .content{
+    width: 90%;
+    height: 7rem;
+    background: url(../images/eightBg.png) no-repeat  center top;
+    background-size: 100% 7rem;
+  
+    margin: 0 auto;
+    margin-top: 1rem;
+    margin-bottom: 0.6rem;
+    padding: 0.8rem;
+    overflow: hidden;
+}
+.eightPage .content .contentBox{
+    width: 100%;
+    height: 5.4rem;
+    overflow: hidden;
+    position: relative;
+}
+@-webkit-keyframes rowup {
+    0% {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0);
+    }
+    100% {
+        -webkit-transform: translate3d(0, -300px, 0);
+        transform: translate3d(0, -300px, 0);
+    }
+}
+@keyframes rowup {
+    0% {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0);
+    }
+    100% {
+        -webkit-transform: translate3d(0, -300px, 0);
+        transform: translate3d(0, -300px, 0);
+    }
+}
+.eightPage .list{
+    width: 100%;
+    height: 5.4rem;
+    position: relative;
+    overflow: hidden;
+    font-size: 0.3rem;
+}
+
+.eightPage .list .rowup{
+    -webkit-animation: 10s rowup linear infinite normal;
+    animation: 10s rowup linear infinite normal;
+    position: relative;
+}
+.eightPage .list .rowup .item{
+    font-size: 0.26rem;
+    line-height: 0.5rem;
+    color: #fff;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-pack: justify;
+        -ms-flex-pack: justify;
+            justify-content: space-between;
+}
+.eightPage .list .rowup .item i{
+    font-style: normal;
+}
+.bottoms img{
+width: 90%;
+margin-top: 0.3rem;
+}
+
+/* popUpmust */
+.popUp{
+    position: fixed;
+    left: 0;
+    top: 0;
+    z-index: 99999;
+    width: 100%;
+    height: 100%;
+    display:none;
+    background: rgba(0, 0, 0, 0.6);
+   
+}
+.popUp .close{
+    width: 100%;
+    position: absolute;
+    text-align: center;
+    z-index: 99998;
+}
+.popUp .close img{
+    width: 0.56rem;
+    position: relative;
+    top: 1rem;
+}
+.popUpmust,.success{
+    width: 90%;
+    height: 9rem;
+    -webkit-box-pack:center;
+        -ms-flex-pack:center;
+            justify-content:center;
+    background: #fff;
+   margin: 0 auto;
+    -ms-flex-item-align:center;
+        -ms-grid-row-align:center;
+        align-self:center;
+    border-radius: 0.15rem;
+    padding: 0.4rem;
+    text-align: center;
+    position: relative;
+    z-index: 99999;
+}
+.popUpmust span{
+    font-size: 0.48rem;
+    color: #333;
+    font-weight: bold;
+}
+.popUpmust span i{
+    font-size: 0.82rem;
+    color: #49cab9;
+    font-style: normal;
+}
+.popUpmust p{
+    text-align:center;
+    font-size: 0.6rem;
+    color: #333;
+}
+.popUpmust .phone{
+    width: 100%;
+    height: 1rem;
+    margin-top: 0.5rem;
+    font-size: 0.32rem;
+    color: #999;
+    border: none;
+    padding-left: 0.2rem;
+    background: #f5f5f5;
+    border-radius: 0.1rem;
+}
+.popUpmust .postCode{
+    width: 100%;
+    height: 1rem;
+    margin-top: 0.5rem;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    font-size: 0.32rem;
+    background: #f5f5f5;
+    border-radius: 0.1rem;
+}
+.popUpmust .code{
+    width: 100%;
+    height: 1rem;
+    margin-top: 0.5rem;
+    background: #f5f5f5;
+    border-radius: 0.1rem;
+    line-height: 1rem;
+}
+.popUpmust .postCode .cancode{
+    width: 65%;
+    border: none;
+    background: #f5f5f5;
+    border-right: 1px solid  #ccc;
+    padding-left: 0.2rem;
+}
+.popUpmust .postCode input{
+    width: 35%;
+    background: #f5f5f5;
+    border: none;
+   -webkit-box-pack: center;
+       -ms-flex-pack: center;
+           justify-content: center;
+}
+.postCode  img{
+	width: 35%;
+}
+.popUpmust button{
+    width: 100%;
+    height: 1rem;
+    margin-top: 0.5rem; border-radius: 0.1rem;
+    background: #0aa0f5;
+    border:none;
+    color: #fff;
+}
+.success p{
+    font-size: 0.6rem;
+    color: #333;
+    text-align: center;
+    margin-top: 0.5rem;
+}
+.success img{
+    width: 3rem;
+    text-align: center;
+    margin: 0.5rem 0;
+}
+.success span {
+    display: inline-block;
+    width: 5.8rem;
+    height: 1rem;
+    background: #49cab9;
+    color: #fff;
+    font-size: 0.32rem;
+    line-height: 1rem;
+    margin-top: 1rem;
+    border-radius: 0.12rem;
+}
+.success span a{
+    color: #fff;
+}
+/*-----*/
+.tips{
+	display:none;
+	position: fixed;
+    top: calc(50% - 40px);
+    width: 5rem;
+    left: calc(50% - 2.5rem);
+    z-index: 99999;
+/*    height: 80px;*/
+    color: #fff;
+    background-color: rgba(0,0,0,0.7);
+	    font-size: 14px;
+    border-radius: 6px;
+	text-align: center;
+    padding: 15px 0px;
+}
+.popUpmust button.disabled{
+	background-color:#ccc !important;
+}
+#slider .verify-msg{
+	font-weight:normal !important;
+	
+	font-size:0.32rem !important;
+}
+
+i.topRight{
+	font-style: normal;
+	padding-right: 0.9em;
+}
+i.topRight::after{
+   content: "+";
+   position: absolute;
+   margin: -4px 0.1em 0 0.1em;
+}
+i.topRightB{
+	font-style: normal;
+	padding-right: 0.7em;
+}
+i.topRightB::after{
+   content: "+";
+   position: absolute;
+   margin: -7px 0.1em 0 0.05em;
+}
+.hide {
+    width: 100%;
+    height: 4.6rem;
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    z-index: 9;
+}

+ 305 - 0
src/web/staticres/landingpage/mobile_1/css/reset.css

@@ -0,0 +1,305 @@
+html {
+    font-family: "Helvetica Neue", Helvetica, STHeiTi, Arial, sans-serif;
+    -ms-text-size-adjust: 100%;
+    -webkit-text-size-adjust: 100%;
+    /* font-size: 62.5%; */
+    max-width: 750px;
+}
+
+body {
+    margin: 0;
+    /* font-size: 0.16rem; */
+    line-height: 1.5;
+    color: #333333;
+    background-color: white;
+    height: 100%;
+    overflow-x: hidden;
+    -webkit-overflow-scrolling: touch;
+}
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+    display: block;
+}
+
+audio,
+canvas,
+progress,
+video {
+    display: inline-block;
+    vertical-align: baseline;
+}
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+[hidden],
+template {
+    display: none;
+}
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+a {
+    background: transparent;
+    text-decoration: none;
+    -webkit-tap-highlight-color: transparent;
+    color: #0088cc;
+}
+
+a:active {
+    outline: 0;
+}
+
+a:active {
+    color: #006699;
+}
+
+abbr[title] {
+    border-bottom: 1px dotted;
+}
+
+b,
+strong {
+    font-weight: bold;
+}
+
+dfn {
+    font-style: italic;
+}
+
+mark {
+    background: #ff0;
+    color: #000;
+}
+
+small {
+    font-size: 80%;
+}
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sup {
+    top: -0.5em;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+img {
+    border: 0;
+    vertical-align: middle;
+}
+
+hr {
+    -moz-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+}
+
+pre {
+    overflow: auto;
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+code,
+kbd,
+pre,
+samp {
+    font-family: monospace, monospace;
+    font-size: 1em;
+}
+
+button,
+input,
+optgroup,
+select,
+textarea {
+    color: inherit;
+    font: inherit;
+    margin: 0;
+    outline:none;
+}
+
+button {
+    overflow: visible;
+}
+
+button,
+select {
+    text-transform: none;
+}
+
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+    -webkit-appearance: button;
+    cursor: pointer;
+}
+
+button[disabled],
+html input[disabled] {
+    cursor: default;
+}
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+input {
+    line-height: normal;
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+    box-sizing: border-box;
+    padding: 0;
+}
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+    height: auto;
+}
+
+input[type="search"] {
+    -webkit-appearance: textfield;
+    -moz-box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+}
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none;
+}
+
+fieldset {
+    border: 1px solid #c0c0c0;
+    margin: 0 2px;
+    padding: 0.35em 0.625em 0.75em;
+}
+
+legend {
+    border: 0;
+    padding: 0;
+}
+
+textarea {
+    overflow: auto;
+    resize: vertical;
+}
+
+optgroup {
+    font-weight: bold;
+}
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}
+
+td,
+th {
+    padding: 0;
+}
+
+html,
+button,
+input,
+select,
+textarea {
+    font-family: "Helvetica Neue", Helvetica, STHeiTi, Arial, sans-serif;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+figure,
+form,
+blockquote {
+    margin: 0;
+}
+
+ul,
+ol,
+li,
+dl,
+dd {
+    margin: 0;
+    padding: 0;
+}
+
+ul,
+ol {
+    list-style: none outside none;
+}
+
+h1,
+h2,
+h3 {
+    line-height: 2;
+    font-weight: normal;
+}
+
+h1 {
+    font-size: 1.8rem;
+}
+
+h2 {
+    font-size: 1.6rem;
+}
+
+h3 {
+    font-size: 1.4rem;
+}
+
+input::-moz-placeholder,
+textarea::-moz-placeholder {
+    color: #cccccc;
+}
+
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+    color: #cccccc;
+}
+
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+    color: #cccccc;
+}
+
+* {
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+}

ファイルの差分が大きいため隠しています
+ 11 - 0
src/web/staticres/landingpage/mobile_1/css/swiper.min.css


BIN
src/web/staticres/landingpage/mobile_1/images/1-1-1.jpg


BIN
src/web/staticres/landingpage/mobile_1/images/1.jpg


BIN
src/web/staticres/landingpage/mobile_1/images/2-1.jpg


BIN
src/web/staticres/landingpage/mobile_1/images/2-2.jpg


BIN
src/web/staticres/landingpage/mobile_1/images/2-3.jpg


BIN
src/web/staticres/landingpage/mobile_1/images/2-4.jpg


BIN
src/web/staticres/landingpage/mobile_1/images/2.jpg


BIN
src/web/staticres/landingpage/mobile_1/images/arrow.png


BIN
src/web/staticres/landingpage/mobile_1/images/btn.png


BIN
src/web/staticres/landingpage/mobile_1/images/close.png


BIN
src/web/staticres/landingpage/mobile_1/images/eight.png


BIN
src/web/staticres/landingpage/mobile_1/images/eightBg.png


BIN
src/web/staticres/landingpage/mobile_1/images/eightBottom.png


BIN
src/web/staticres/landingpage/mobile_1/images/finish.png


BIN
src/web/staticres/landingpage/mobile_1/images/five.png


BIN
src/web/staticres/landingpage/mobile_1/images/fourContent.png


BIN
src/web/staticres/landingpage/mobile_1/images/fourContent_new.png


BIN
src/web/staticres/landingpage/mobile_1/images/fourtitle.png


BIN
src/web/staticres/landingpage/mobile_1/images/logo.png


BIN
src/web/staticres/landingpage/mobile_1/images/logo_new.png


BIN
src/web/staticres/landingpage/mobile_1/images/new.png


BIN
src/web/staticres/landingpage/mobile_1/images/one.png


BIN
src/web/staticres/landingpage/mobile_1/images/secondTitle.png


BIN
src/web/staticres/landingpage/mobile_1/images/seven.png


BIN
src/web/staticres/landingpage/mobile_1/images/share32.png


BIN
src/web/staticres/landingpage/mobile_1/images/six.png


BIN
src/web/staticres/landingpage/mobile_1/images/three.png


BIN
src/web/staticres/landingpage/mobile_1/images/threecetent.png


BIN
src/web/staticres/landingpage/mobile_1/images/threetitle.png


BIN
src/web/staticres/landingpage/mobile_1/images/two.png


+ 226 - 0
src/web/staticres/landingpage/mobile_1/js/index.js

@@ -0,0 +1,226 @@
+var phoneNumFlag = false;
+var Verification = {
+    //手机号验证
+    isPhone: function(value) {
+        return /^[1][3-9][0-9]{9}$/.test(value);
+    }
+};
+//监听手机号输入	
+$("#phoneNum").on("input propertychange",function() {
+	$(".hide").css("display","");
+    if ($("#phoneNum").val().length == 11) {
+		if(Verification.isPhone($("#phoneNum").val())){
+			$.post("/front/landpage/checkPhoneNum", {
+            phoneNum: $("#phoneNum").val()
+	        },
+	        function(r) {
+	            if (r.flag) {
+	                phoneNumFlag = true;
+					Tip("此手机号已注册,请使用该号码直接登录剑鱼标讯APP。");
+					//禁止输入验证码
+					$(".postCode .imgCode").attr("disabled","disabled");
+	            } else {
+	                phoneNumFlag = false;
+					$(".postCode .imgCode").removeAttr("disabled","");
+					$(".hide").css("display","none");
+	            }
+	        });
+		}else{
+			phoneNumFlag = false;
+			Tip("手机号格式不正确。");
+		} 
+    } else {
+        phoneNumFlag = false;
+    }
+});
+
+
+$(".postCode .phoneCode").on("input propertychange",function() {
+    if ($(".phoneCode").val().length == 6) {
+        $("#submissions").removeClass("disabled");
+    } else {
+        $("#submissions").addClass("disabled");
+    }
+});
+//点击刷新验证码
+$(".postCode .img").on("click",function() {
+    $(this).attr("src", $(this).attr("src"));
+	$(".postCode .imgCode").val("");
+});
+//提示框
+function Tip(str) {
+    $(".tips").text(str);
+    $(".tips").show();
+    setTimeout(function() {
+        $(".tips").hide();
+    },
+    3000)
+}
+$(".hide").on("click",function(){
+	if(phoneNumFlag){
+		Tip("此手机号已注册,请使用该号码直接登录剑鱼标讯APP。");	
+	}else if(!Verification.isPhone($("#phoneNum").val())){
+		Tip("手机号格式不正确。");
+	}
+});
+function Timer(t){
+	var time = setInterval(function() {
+        t = t - 1;
+        postCode.value = t + "秒";
+        postCode.disabled = true;
+        if (t == 0) {
+            clearInterval(time);
+            postCode.value = "再次获取";
+            postCode.disabled = false;
+			
+        }
+    },
+    1000)
+}
+$(function() {
+    var pagination = $("#pagination");
+    var mySwiper = new Swiper('.swiper-container', {
+
+        onInit: function(swiper) {
+            //Swiper初始化了
+            if (swiper.activeIndex == 0) {
+                pagination.css('display', 'none');
+            }
+            swiperAnimateCache(swiper); //隐藏动画元素 
+            swiperAnimate(swiper);
+        },
+        onTransitionStart: function(swiper) {
+            swiperAnimate(swiper);
+
+            if (swiper.activeIndex != 0) {
+                pagination.css('display', 'block');
+            } else {
+                pagination.css('display', 'none');
+            }
+
+        },
+        direction: 'vertical',
+        pagination: '.swiper-pagination',
+        paginationType: 'fraction',
+    });
+	var btn = $(".btns");
+    var lbbtn = $(".contentOne");
+
+    var close = document.getElementById("close");
+    var popUp = document.getElementById("popUp");
+    var postCode = document.getElementById("postCode");
+    var submissions = document.getElementById("submissions");
+    var popUpmust = document.getElementById("popUpmust");
+    var success = document.getElementById("success");
+
+    btn.on("click",function() {
+        popUp.style.display = "flex";
+        if (phoneNumFlag) {
+            $("#phoneNum").val("");
+			$(".cancode").val("");	
+        }
+    })
+
+    lbbtn.on('click',function() {
+        popUp.style.display = "flex";
+        popUpmust.style.display = "block";
+        success.style.display = "none";
+        if (phoneNumFlag) {
+            $("#phoneNum").val("");
+			$(".cancode").val("");	
+        }
+    })
+
+    close.addEventListener('click',function() {
+        popUp.style.display = "none";
+    })
+
+    var successsub = false;
+    postCode.addEventListener('click',function() {
+		if(phoneNumFlag){
+			Tip("此手机号已注册,请使用该号码直接登录剑鱼标讯APP。");
+			return
+		}
+		
+        //验证手机号码
+        var phoneNum = $.trim($("#phoneNum").val());
+        var imgCancode = $.trim($(".imgCode").val());
+
+        if (Verification.isPhone(phoneNum)) {
+            if (imgCancode.length != 4) {
+                Tip("请输入图片验证码!");
+                return
+            }
+			//清除输入内容
+			$(".postCode .phoneCode").val("");
+			//提交请求
+            $.post("/front/sendMessage", {
+                "phoneNum": phoneNum,
+                "imgCancode": imgCancode
+            },function(result) {
+                if(result.success){
+					Timer(60);
+					$(".postCode .phoneCode").removeAttr("disabled","");
+				}else{
+					$(".postCode .img").attr("src", $(".postCode .img").attr("src"));
+					$(".postCode .imgCode").val("");
+					if(result.msg=="VerifyErr"){
+						Tip("图形验证码错误。");
+					}else if(result.msg=="phoneErr"){
+						Tip("用户已存在。");
+					}else if(result.msg=="sended"){
+						t = result.second;
+                        Tip("信息已经发送," + t + "秒后,可重新发送。");
+						Timer(t);
+					}
+				}
+            },
+            'json');
+        } else {
+            Tip("请输入正确的手机号!")
+        }
+    })
+
+    //提交按钮
+    submissions.addEventListener('click',function() {
+        if (!$("#submissions").hasClass("disabled")) {
+            $.post("/front/landpage/submit", {
+                phoneNum: $("#phoneNum").val(),
+                cancode: $.trim($(".phoneCode").val()),
+                extcode: $.trim($("#m_extcode").val()),
+            },
+            function(r) {
+                if (r.status == "y") {
+                    successsub = true;
+                    $("#phoneNum").val("");
+                    $(".cancode").val("");
+                    popUpmust.style.display = "none";
+                    success.style.display = "block";
+                    $("#download").attr("href", r.download_href);
+					window._agl && window._agl.push(['track', ['success', {t: 3}]])
+                } else {
+					if(r.status == "err"){
+						$(".tips").text("错误操作");
+					}else if (r.status == "codeError") {
+                        $(".tips").text("手机验证码错误!");
+                    } else if (r.status == "timeout") {
+                        $(".tips").text("操作超时");
+                    } else if (r.status == "phoneError") {
+                        $(".tips").text("手机号错误!");
+                    } else if (r.status == "phoneExists") {
+                        $(".tips").text("此手机号已被使用!");
+                    } else if (r.status == "saveError") {
+                        $(".tips").text("保存错误!");
+                    } else if (r.status == "channelError") {
+                        $(".tips").text("请求异常");
+                    }
+                    $(".tips").show();
+                    setTimeout(function() {
+                        $(".tips").hide();
+                    },
+                    3000)
+                }
+            });
+        }
+    })
+})

+ 24 - 0
src/web/staticres/landingpage/mobile_1/js/rem.js

@@ -0,0 +1,24 @@
+(function() {
+	var doc = document,
+		win = window;
+	var docEl = doc.documentElement,
+		resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
+		recalc = function() {
+			var clientWidth = docEl.clientWidth;
+			var clientHeight = docEl.clientHeight
+			if(!clientWidth) return;
+			//如果屏幕大于750(750是根据我效果图设置的,具体数值参考效果图),就设置clientWidth=750,防止font-size会超过100px
+			if(clientWidth > 750) { clientWidth = 750 }
+			//设置根元素font-size大小
+			if(clientHeight/clientWidth<1.77){
+				docEl.style.fontSize =95 * (clientHeight / (750*1.77))+ 'px';
+			}else{
+				docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
+			}
+			
+		};
+	//屏幕大小改变,或者横竖屏切换时,触发函数
+	win.addEventListener("orientationchang", recalc, false);
+	//文档加载完成时,触发函数
+	doc.addEventListener('DOMContentLoaded', recalc, false);
+})();

+ 3 - 0
src/web/staticres/landingpage/mobile_1/js/swiper.animate1.0.3.min.js

@@ -0,0 +1,3 @@
+//本插件由www.swiper.com.cn提供
+//版本1.03
+function swiperAnimateCache(a){for(j=0;j<a.slides.length;j++)for(allBoxes=a.slides[j].querySelectorAll(".ani"),i=0;i<allBoxes.length;i++)allBoxes[i].attributes["style"]?allBoxes[i].setAttribute("swiper-animate-style-cache",allBoxes[i].attributes["style"].value):allBoxes[i].setAttribute("swiper-animate-style-cache"," "),allBoxes[i].style.visibility="hidden"}function swiperAnimate(a){clearSwiperAnimate(a);var b=a.slides[a.activeIndex].querySelectorAll(".ani");for(i=0;i<b.length;i++)b[i].style.visibility="visible",effect=b[i].attributes["swiper-animate-effect"]?b[i].attributes["swiper-animate-effect"].value:"",b[i].className=b[i].className+"  "+effect+" "+"animated",style=b[i].attributes["style"].value,duration=b[i].attributes["swiper-animate-duration"]?b[i].attributes["swiper-animate-duration"].value:"",duration&&(style=style+"animation-duration:"+duration+";-webkit-animation-duration:"+duration+";"),delay=b[i].attributes["swiper-animate-delay"]?b[i].attributes["swiper-animate-delay"].value:"",delay&&(style=style+"animation-delay:"+delay+";-webkit-animation-delay:"+delay+";"),b[i].setAttribute("style",style)}function clearSwiperAnimate(a){for(j=0;j<a.slides.length;j++)for(allBoxes=a.slides[j].querySelectorAll(".ani"),i=0;i<allBoxes.length;i++)allBoxes[i].attributes["swiper-animate-style-cache"]&&allBoxes[i].setAttribute("style",allBoxes[i].attributes["swiper-animate-style-cache"].value),allBoxes[i].style.visibility="hidden",allBoxes[i].className=allBoxes[i].className.replace("animated"," "),allBoxes[i].attributes["swiper-animate-effect"]&&(effect=allBoxes[i].attributes["swiper-animate-effect"].value,allBoxes[i].className=allBoxes[i].className.replace(effect," "))}

ファイルの差分が大きいため隠しています
+ 11 - 0
src/web/staticres/landingpage/mobile_1/js/swiper.min.js


+ 208 - 186
src/web/staticres/vipsubscribe/js/common.js

@@ -1,81 +1,110 @@
 //请求同意调用
-function $DoPost(url,param={},callback,async=true){
-	$.ajax({
-		url: url+"?t="+new Date().getTime(),
-		type: "POST",
-		data: param,
-		async: async,
-		dataType: "json",
-		success: function(r){
-			callback(r)
-			if(r.error||r.errMsg){
-				var errTip = r.error||r.errMsg;
-				weui.toast(errTip,{
-					duration: 2000,
-					className: 'custom-toast',
-				});
-			}
-		}
-	})
+function $DoPost(url, param = {}, callback, async = true) {
+    $.ajax({
+        url: url + "?t=" + new Date().getTime(),
+        type: "POST",
+        data: param,
+        async: async,
+        dataType: "json",
+        success: function (r) {
+            callback(r)
+            if (r.error || r.errMsg) {
+                var errTip = r.error || r.errMsg;
+                weui.toast(errTip, {
+                    duration: 2000,
+                    className: 'custom-toast',
+                });
+            }
+        }
+    })
 }
 
 //获取url参数
 function getParam(name) {
-	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
-	var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
-	var context = "";
-	if (r != null)
-		context = r[2];
-	reg = null;
-	r = null;
-	return context == null || context == "" || context == "undefined" ? "" : context;
+    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+    var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
+    var context = "";
+    if (r != null)
+        context = r[2];
+    reg = null;
+    r = null;
+    return context == null || context == "" || context == "undefined" ? "" : context;
 }
 
 //省份 城市 分类
-function getAreaClassArr_index(area){
-	let cityArr=[];//城市
-	let provinceArr=[];//省份
-	for(var i in area) {
-		let citys=area[i]
-		if(citys.length>0){
-			cityArr = cityArr.concat(citys);
-			provinceArr.push(i+"("+cityArr.join("、")+")")
-		}else{
-			if(i=="全国"){
-				continue
-			}
-			provinceArr.push(i)
-		}
-	}
-	return SortArr(provinceArr)
+function getAreaClassArr_index(area) {
+    let cityArr = [];//城市
+    let provinceArr = [];//省份
+    for (var i in area) {
+        let citys = area[i]
+        if (citys.length > 0) {
+            cityArr = cityArr.concat(citys);
+            provinceArr.push(i + "(" + cityArr.join("、") + ")")
+        } else {
+            if (i == "全国") {
+                continue
+            }
+            provinceArr.push(i)
+        }
+    }
+    return SortArr(provinceArr)
 }
 
 //省份 城市 分类
-function getAreaClassArr(area){
-	let cityArr=[];//城市
-	let provinceArr=[];//省份
-	for(var i in area) {
-		let citys=area[i]
-		if(citys.length>0){
-			cityArr = cityArr.concat(citys);
-		}else{
-			if(i=="全国"){
-				continue
-			}
-			provinceArr.push(i)
-		}
-	}
-	return [SortArr(provinceArr),SortArr(cityArr)]
+function getAreaClassArr(area) {
+    let cityArr = [];//城市
+    let provinceArr = [];//省份
+    for (var i in area) {
+        let citys = area[i]
+        if (citys.length > 0) {
+            cityArr = cityArr.concat(citys);
+        } else {
+            if (i == "全国") {
+                continue
+            }
+            provinceArr.push(i)
+        }
+    }
+    return [SortArr(provinceArr), SortArr(cityArr)]
 }
 
 //对数组进行排序(拼音)
-function SortArr(arr){
-	arr = arr.sort(function compareFunction(item1, item2) {
-		return item1.localeCompare(item2);
-	});
-	return arr
+function SortArr(arr) {
+    arr = arr.sort(function compareFunction(item1, item2) {
+        return item1.localeCompare(item2);
+    });
+    return arr
 }
 
+//购买设置
+function getBuySet(area, industry) {
+    if (industry[0] === "全部行业") industry = [];
+    if (area["全国"]) area = {};
+    //计算地区数量
+    var buyset = {
+        "areacount": -1,  //省份数量
+        "buyerclasscount": -1,
+        "citys": {  //购买省份中城市数量
+        }
+    };
+    //行业
+    if (industry.length != 0) {
+        buyset.buyerclasscount = industry.length
+    }
+    //地区
+    if (!$.isEmptyObject(area)) {
+        buyset.areacount = 0;
+        for (var i in area) {
+            let citys = area[i];
+            if (citys.length === 0) {
+                buyset.areacount++
+            } else {
+                buyset.citys[i] = citys.length
+            }
+        }
+    }
+    return buyset
+}
 
 /* vip订阅价格
 	area:地区 {}
@@ -84,141 +113,134 @@ function SortArr(arr){
 	price 价格表
    return 价格(单位:分)
 */
-var priceData
-function getsubVipOrderPrice(area,industry,t,price){
-	if(!price){
-		if(priceData){
-			price=priceData
-		}else{
-			$DoPost("/subscribepay/vipsubscribe/getPrice",{},function(r){
-				if(r){
-					price=r;
-					priceData=price;
-				}else{
-					weui.toast("加载价格异常",{
-						duration: 2000,
-						className: 'custom-toast',
-					});
-				}
-			},false)
-		}
-	}
-	if(industry[0] == "全部行业")industry= []
-	if(area["全国"]) area={}
-	//当行业数量大于最大值price.BuyerClassMaxCount 按照全行业计算
-	var industryNum = industry.length
-	if (industryNum > price.buyerClassMaxCount) {
-		industryNum = 0
-	}
-	//计算地区数量
-	var pCount = -1         //省份数量
-	var citysCountMap = {} //购买省份中城市数量
+function getsubVipOrderPrice(area, industry, t, price) {
+    return getsubVipOrderPriceBybuyset(getBuySet(area, industry), t, price)
+}
 
-	if(!$.isEmptyObject(area)){
-		pCount=0
-		for(var i in area) {
-			let citys=area[i]
-			if(citys.length==0){
-				pCount++
-			}else{
-				if(citys.length > price.cityMaxCount){
-					pCount++
-				}else{
-					citysCountMap[i]= citys.length
-				}
-			}
-		}
-	}
+var priceData;
 
-	//当省份数量大于price.ProvinceMaxCount 按照全国计算
-	if (pCount > price.provinceMaxCount) {
-		pCount = -1
-	}
+//根据购买设置 获取支付金额
+function getsubVipOrderPriceBybuyset(buyset, t, price) {
+    if (!price) {
+        if (priceData) {
+            price = priceData
+        } else {
+            $DoPost("/subscribepay/vipsubscribe/getPrice", {}, function (r) {
+                if (r) {
+                    price = r;
+                    priceData = price;
+                } else {
+                    weui.toast("加载价格异常", {
+                        duration: 2000,
+                        className: 'custom-toast',
+                    });
+                }
+            }, false)
+        }
+    }
+    console.log("buyset", JSON.stringify(buyset));
+    //当省份数量大于price.ProvinceMaxCount 按照全国计算
+    if (buyset.areacount > price.provinceMaxCount) {
+        buyset.areacount = -1
+    }
+    //当行业数量大于price.buyerClassMaxCount按照全行业
+    if (buyset.buyerclasscount > price.buyerClassMaxCount) {
+        buyset.buyerclasscount = -1
+    }
+    if (t[0] > price.monthMaxCount && t[1] === 2) t[0] = 10;//月份十个月以上价格一样
 
-	if(t[0]>price.monthMaxCount&&t[1]==2) t[0]=10 //月份十个月以上价格一样
+    if (buyset.areacount === -1) {//计算全国套餐价格
+        if (buyset.buyerclasscount === 1) return getSetMealPrice(0, 1, t[1], price) * t[0] / 100; //全国1行业套餐
+        if (buyset.buyerclasscount === 0) return getSetMealPrice(0, 0, t[1], price) * t[0] / 100; //全国全行业套餐
+        return getSetMealPrice(0, buyset.buyerclasscount, t[1], price) * t[0] / 100 //全国多行业套餐
+    }
 
-	if(pCount == -1){//计算全国套餐价格
-		if(industryNum==1) return getSetMealPrice(0,1,t[1],price)*t[0]/100 //全国1行业套餐
-		if(industryNum==0) return getSetMealPrice(0,0,t[1],price)*t[0]/100 //全国全行业套餐
-		return	getSetMealPrice(0,industryNum,t[1],price) * t[0] / 100 //全国多行业套餐
-	}
+    //var final_price = buyset.areacount * getSetMealPrice(1, buyset.buyerclasscount, t[1], price) * t[0];//计算省份价格
+    var final_price = 0;//计算省份价格
 
-	var final_price	= pCount*getSetMealPrice(1,industryNum,t[1],price)*t[0];//计算省份价格
+    for (var i in buyset.citys) {
+        var thisPrice = 0;
+        if (buyset.citys[i] === 1) {//单城市
+            thisPrice = getSetMealPrice(2, buyset.buyerclasscount, t[1], price) * t[0];
+        } else {//多城市
+            if (buyset.buyerclasscount === 0 || buyset.buyerclasscount === 1) {//多城市 单行业
+                thisPrice = buyset.citys[i] * getSetMealPrice(2, buyset.buyerclasscount, t[1], price) * t[0];
+            } else {//多城市 多行业
+                //var industry_Price = price.buyerClassPrice * buyset.buyerclasscount;
+                //var city_Price = price.cityPrice * buyset.citys[i];
+                //thisPrice = (industry_Price + city_Price) * t[0];
+                if (buyset.citys[i] > price.cityMaxCount) {
+                    buyset.areacount++;
+                } else {
+                    thisPrice = getSetMealPrice(2, buyset.buyerclasscount, t[1], price) * buyset.citys[i] * t[0];
+                    if (t[1] === 1) thisPrice *= 10 //年的价格是月价格的10倍
+                }
 
-	for(var i in citysCountMap) {
-		var thisPrice = 0;
-		var citys = area[i]
-		if(citysCountMap[i]==1){//单城市
-			thisPrice = getSetMealPrice(2,industryNum,t[1],price)*t[0];
-		}else{//多城市
-			if(industryNum==0||industryNum==1){//多城市 单行业
-				thisPrice = citysCountMap[i] * getSetMealPrice(2,industryNum,t[1],price) * t[0];
-			}else{//多城市 多行业
-				var industry_Price= price.buyerClassPrice  * industryNum;
-				var city_Price = price.cityPrice *citysCountMap[i];
-				thisPrice = (industry_Price + city_Price) * t[0];
-				if(t[1]==1) thisPrice *= 10 //年的价格是月价格的10倍
-			}
-		}
-		final_price += thisPrice;
-	}
-	return final_price/100
+            }
+        }
+        final_price += thisPrice;
+    }
+    final_price += buyset.areacount * getSetMealPrice(1, buyset.buyerclasscount, t[1], price) * t[0]
+    return final_price / 100
 }
+
 //获取套餐价格
 //c(city) 全国:0 省:1 市:2
-//iCount(industry) 全行业:0 行业:1 其他:多个行业
+//iCount(industry) 全行业:-1 其他:多个行业
 //u(unit) 年:1 月:2
-function getSetMealPrice(c,iCount,u,price){
-	var t = u==2 //是否是月单位
-	switch(c){
-		case 0:
-			if(iCount==0){
-				if(t)return price.month.allProvince_allBuyerClass  //1月全国全行业
-				return price.year.allProvince_allBuyerClass //1年全国全行业
-			}else{
-				if(t)return price.month.allProvince_oneBuyerClass * iCount //1月全国icount个行业
-				return price.year.allProvince_oneBuyerClass * iCount	//1年全国icount个行业
-			}
-		case 1:
-			if(iCount==0){
-				if(t)return price.month.oneProvince_allBuyerClass  //1月1省全行业
-				return price.year.oneProvince_allBuyerClass	//1年1省全行业
-			}else{
-				if(t)return price.month.oneProvince_oneBuyerClass * iCount //1月1省icount个行业
-				return price.year.oneProvince_oneBuyerClass * iCount	//1年1省icount个行业
-			}
-		default:
-			if(iCount==0){
-				if(t)return price.month.oneCity_allBuyerClass  //1月1市全行业
-				return price.year.oneCity_allBuyerClass	//1年1市全行业
-			}else{
-				if(t)return price.month.oneCity_oneBuyerClass * iCount //1月1市icount个行业
-				return price.year.oneCity_oneBuyerClass * iCount	//1年1市icount个行业
-			}
-	}
+function getSetMealPrice(c, iCount, u, price) {
+    var t = u === 2; //是否是月单位
+    switch (c) {
+        case 0:
+            if (iCount === -1) {
+                if (t) return price.month.allProvince_allBuyerClass;  //1月全国全行业
+                return price.year.allProvince_allBuyerClass; //1年全国全行业
+            } else {
+                if (t) return price.month.allProvince_oneBuyerClass * iCount; //1月全国icount个行业
+                return price.year.allProvince_oneBuyerClass * iCount;	//1年全国icount个行业
+            }
+        case 1:
+            if (iCount === -1) {
+                if (t) return price.month.oneProvince_allBuyerClass;  //1月1省全行业
+                return price.year.oneProvince_allBuyerClass	//1年1省全行业
+            } else {
+                if (t) return price.month.oneProvince_oneBuyerClass * iCount; //1月1省icount个行业
+                return price.year.oneProvince_oneBuyerClass * iCount	//1年1省icount个行业
+            }
+        default:
+            if (iCount === -1) {
+                if (t) return price.month.oneCity_allBuyerClass;  //1月1市全行业
+                return price.year.oneCity_allBuyerClass	//1年1市全行业
+            } else {
+                if (t) return price.month.oneCity_oneBuyerClass * iCount; //1月1市icount个行业
+                return price.year.oneCity_oneBuyerClass * iCount	//1年1市icount个行业
+            }
+    }
 }
 
 //查看用户是否有未执行的订单
-function checkOrder(wz){
-	var flag = false;
-	$.ajax({
-		type: 'post',
-		url: '/subscribepay/afterPay/checkOrder?t='+new Date().getTime(),
-		data: {},
-		async: false,
-		dataType: 'json',
-		success: function(r){
-			flag = r.flag;
-			if(r.flag){
-				if(wz!=1){
-					weui.toast('订单尚未到期', {
-		                duration: 3000,
-		                className: 'custom-toast',
-		                callback: function () { console.log('close') }
-		            });
-				}
-			}
-		}
-	});
-	return flag
+function checkOrder(wz) {
+    var flag = false;
+    $.ajax({
+        type: 'post',
+        url: '/subscribepay/afterPay/checkOrder?t=' + new Date().getTime(),
+        data: {},
+        async: false,
+        dataType: 'json',
+        success: function (r) {
+            flag = r.flag;
+            if (r.flag) {
+                if (wz != 1) {
+                    weui.toast('订单尚未到期', {
+                        duration: 3000,
+                        className: 'custom-toast',
+                        callback: function () {
+                            console.log('close')
+                        }
+                    });
+                }
+            }
+        }
+    });
+    return flag
 }

+ 39 - 32
src/web/staticres/vipsubscribe/js/editArea.js

@@ -170,6 +170,22 @@ function initResult() {
     let isAll = areaData.data.buyset.areacount;
     let p = areaData.data.area;
     let count = areaData.data.buyset.citys;
+    // 添加可选择城市文字 和自定义属性值
+    if (areaData.data.buyset.areacount != -1) {
+        for (const c in count) {
+            $('.province').each(function () {
+                let t = $(this).text().trim();
+                if (c == t) {
+                    $(this).attr("data-count", count[c]);
+                    $(this).after(`<em class="optional">可选择 ${count[c]} 个市</em>`)
+                    let that = $(this).parent('.tab:not(.municipality)');
+                    that.bind('click', function () {
+                        slideFun($(this));
+                    })
+                }
+            })
+        }
+    }
     // 渲染已选择结果
     for (const k in p) {
         console.log(p[k], k)
@@ -188,11 +204,12 @@ function initResult() {
                 }
             })
         } else {
-            console.log(k, p[k].length)
+            console.log(k, p[k].length,$('.city.active').length)
             $('.city').each(function () {
+                let activeLength = $(this).parents('li').find('.active').length;
                 let t = $(this).text().trim();
                 p[k].forEach(v => {
-                    // console.log(v,t)
+                    //console.log(v,t,"vvv")
                     if (v == t) {
                         let that = $(this).parents('li').find('.tab:not(.municipality)');
                         console.log("v==t")
@@ -201,37 +218,27 @@ function initResult() {
                             slideFun($(this));
                         })
                         $(this).addClass('active').removeAttr('disabled').parent().siblings('.tab').find('input').addClass('half');
-                        return;
+                        // 判断购买的地市数与选择的地市是否相等,相等则把其他地市禁用
+                        $('.province').each(function(item,index){
+                            let dataCount = $(this).attr('data-count');
+                            let activeLength = $(this).parent().siblings().find('.active').length;
+                            // console.log(dataCount)
+                            if(dataCount){
+                                // console.log(dataCount,activeLength,"object")
+                                if(activeLength >= dataCount){
+                                    $(this).parent().siblings().find('.city').not('.active').attr('disabled',true)
+                                }
+                            }
+                        })
+
                     }
                 })
+
             })
-            for (const c in count) {
-                if (p[k].length >= count[c]) {
-                    if (isAll != -1) {
-                        $('.city:not(.active)').attr('disabled', true)
-                    } else {
-                        $('.city:not(.active)').removeAttr('disabled')
-                    }
-                }
-            }
-        }
-    }
-    // 添加可选择城市文字 和自定义属性值
-    if (areaData.data.buyset.areacount != -1) {
-        for (const c in count) {
-            $('.province').each(function () {
-                let t = $(this).text().trim();
-                if (c == t) {
-                    $(this).attr("data-count", count[c]);
-                    $(this).after(`<em class="optional">可选择 ${count[c]} 个市</em>`)
-                    let that = $(this).parent('.tab:not(.municipality)');
-                    that.bind('click', function () {
-                        slideFun($(this));
-                    })
-                }
-            })
+
         }
     }
+
     //$('.result_name').append(getAreaClassArr_index(areaData.data.area).join("、"));
     $('.count').html($('.checkbox:not(.other):checked').length)
     // 如果选中的省份数量等于购买的省份数量,则将其他未选中的省份禁用
@@ -243,7 +250,7 @@ function initResult() {
 
 $(function () {
     // 省下拉事件
-    $('.tab:not(.municipality)').on('click', function () {
+    /*$('.tab:not(.municipality)').on('click', function () {
         if (checkAnimatedRuning()) {
             return
         }
@@ -254,7 +261,7 @@ $(function () {
         }
         $(this).toggleClass('selected').next('.tab_content:not(:animated)').slideToggle(500);
         $(this).parent().siblings().children('.tab').removeClass('selected');
-    });
+    });*/
     getData();
     // 初始化
     init();
@@ -286,7 +293,7 @@ $(function () {
         } else {
             $('.checkbox:not(:checked)').attr('disabled', true)
             if (areaData.data.isTrial) {
-                showTip(`<span style="white-space: nowrap;">您只选择试用了` + totalLength + `个省份</span>,<span style="white-space: nowrap;">如需更多,请前往VIP订阅进行购买</span>`);
+                showTip(`<span style="white-space: nowrap;">您只选择试用了` + totalLength + `个省份</span>,<br><span style="white-space: nowrap;">如需更多,请前往VIP订阅进行购买</span>`);
             } else {
                 showTip(`<span style="white-space: nowrap;">您只购买了` + totalLength + `个省份,如需更多请升级<span></p>`)
             }
@@ -344,7 +351,7 @@ $(function () {
                 $(this).parent('div').find('.city:not(.active)').attr('disabled', true)
                 //提示订阅
                 if (areaData.data.isTrial) {
-                    showTip(`<span style="white-space: nowrap;">您只选择试用了` + $(this).parents('li').find(".province").attr("data-count") + `个市</span>,<span style="white-space: nowrap;">如需更多,请前往VIP订阅进行购买</span>`);
+                    showTip(`<span style="white-space: nowrap;">您只选择试用了` + $(this).parents('li').find(".province").attr("data-count") + `个市</span>,<br><span style="white-space: nowrap;">如需更多,请前往VIP订阅进行购买</span>`);
                 } else {
                     showTip(`<span style="white-space: nowrap;">您只购买了` + $(this).parents('li').find(".province").attr("data-count") + `个市,如需更多请升级<span></p>`)
                 }

+ 4 - 17
src/web/staticres/wxswordfish/share.js

@@ -37,6 +37,10 @@ function initShare(signature,openid,isentry,activecode,nickname,avatar,id){
 			default:
 				link += "wx_othershare";
 		}
+		if(window.location.href.indexOf("open_infocontent")>-1){
+			var lsearch = window.location.search.substr(1);
+			link =myloc+"/swordfish/about?param="+openid+"__"+activecode+"&"+lsearch
+		}
 		var otherLink = link;
 		var desc = "全国招标信息免费看,不遮挡";
 		var otherDesc = desc;
@@ -195,23 +199,6 @@ function initShare(signature,openid,isentry,activecode,nickname,avatar,id){
 					// 用户取消分享后执行的回调函数
 				}
 			});
-			wx.getLocation({
-			  	type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
-			  	success: function (res) {
-			    	var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
-			    	var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
-					//生成地理位置
-                    var point = new BMap.Point(longitude, latitude);
-                    var geoc = new BMap.Geocoder();
-                    geoc.getLocation(point, function(rs) {
-                        var addComp = rs.addressComponents;
-                        //alert('您现在所处位置:'+addComp.province + ", "+addComp.city + ", "+addComp.district + ", "+addComp.street + ", "+addComp.streetNumber);
-						if(window.location.pathname.indexOf("/jylab/mainSearch")>-1){
-							SuperSearch.getHomeList(addComp.city);
-						}
-                    });
-			  }
-			});
 	    });
 		wx.error(function(res){
 		    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。

+ 1 - 1
src/web/templates/pc/subscribe_new.html

@@ -58,7 +58,7 @@
     <div class="modal-dialog modal-dialog-subvip modal-sm" role="document">
         <div class="modal-content">
             <img src="{{Msg "seo" "cdn"}}/images/subscribe/vip_tanchuang.png?v={{Msg "seo" "version"}}" alt="">
-            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+            <button type="button" class="close vip" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
             <div class="vip-code">
                 <img id="vipCode" alt="" style="width: 139px;height: 139px">
                 <p class="vip-text">扫描二维码体验VIP订阅</p>

+ 15 - 13
src/web/templates/weixin/about.html

@@ -7,13 +7,15 @@
 		<link href="{{Msg "seo" "cdn"}}/css/wx_about.css?v={{Msg "seo" "version"}}" rel="stylesheet">
 		<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/jquery.js"></script>
 		<script src="{{Msg "seo" "cdn"}}/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
-		{{if .T.isWeixin}}
-			{{include "/common/weixin.html"}}
-			<script type="text/javascript" src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
-			<script>
-				initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
-			</script>
-		{{end}}
+		{{include "/common/weixin.html"}}
+		<script type="text/javascript" src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}2"></script>
+		<script>
+		$(function(){
+			if (isWeixin()){
+					initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
+			}
+		})
+		</script>
 		<style>
 			.float-navbar li:nth-child(3) {
 				border-top: 1px solid #cccccc;
@@ -628,14 +630,14 @@ $(function(){
 		bodyHeight = $(window).height();
 		scrollEven();
 	});
+	$('.float-navbar li:nth-child(3)').click(function () {
+		window.location.href='https://www.jianyu360.com/jyapp/free/download/normal?source=weixinAutoRpl';
+	});
+	$('.float-navbar li:nth-child(4)').click(function () {
+		window.location.href='https://www.jianyu360.com/jyapp/free/download/normal?source=weixinAutoRpl';
+	});
 });
 
-$('.float-navbar li:nth-child(3)').click(function () {
-	window.location.href='https://www.jianyu360.com/jyapp/free/download/normal?source=weixinAutoRpl';
-});
-$('.float-navbar li:nth-child(4)').click(function () {
-	window.location.href='https://www.jianyu360.com/jyapp/free/download/normal?source=weixinAutoRpl';
-});
 
 </script>
 </body>

+ 1 - 1
src/web/templates/weixin/historypush.html

@@ -1157,7 +1157,7 @@
 
             // 扩大点击区域(点击城市名字也能选中)
             $('.area_wrap .c_item .city-name').on('click', function(){
-            	$(this).parent().children('input').trigger('click')
+            	//$(this).parent().children('input').trigger('click')
             })
             // 每次选择框变化,更新城市计数
             $('.area_wrap .c_item input[type="checkbox"]').on('change',function () {

+ 15 - 27
src/web/templates/weixin/search/mainSearch.html

@@ -20,10 +20,10 @@
 <script src="{{Msg "seo" "cdn"}}/mobiscroll/mobiscroll.min.js"></script>
 {{include "/common/weixin.html"}}
 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=DD279b2a90afdf0ae7a3796787a0742e"></script>
-<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
+<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}111"></script>
 <script src="{{Msg "seo" "cdn"}}/js/dropload.js?v={{Msg "seo" "version"}}"></script>
 <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/wxEntsesearch.js?v={{Msg "seo" "version"}}"></script>
-<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/wxSupersearch.js?v={{Msg "seo" "version"}}"></script>
+<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/wxSupersearch.js?v={{Msg "seo" "version"}}521"></script>
 <!--2.8-->
 <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wx_dataExport/css/base_myorder.css?v={{Msg "seo" "version"}}1">
 <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wx_dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
@@ -341,39 +341,25 @@
         <div class="home_data">
             <h3 class="data_nav">最新标讯</h3>
             <div class="data_list">
-                <div class="list_item">
-                    <div class="list_title">
-                        <span class="serial_number">1. &nbsp;</span>
-                        <p>淮安市高级职业技术学校台式<em style="color: #2CB7CA;">电脑采购</em>项目招标公告</p>
-                    </div>
-                    <div class="list_info">
-                        <div class="tags">
-                            <div class="area">江苏</div>
-                            <div class="industry">建筑工程</div>
-                            <div class="course">招标</div>
-                            <div class="price">3.6亿</div>
-                        </div>
-                        <div class="timer">13小时前</div>
-                    </div>
-                </div>
+				<!--首页列表-->
             </div>
             <div class="no_data" style="display: none;">
                 <img src="/images/search/nothing.png" alt="">
                 <p>为了使您接收更多信息,可对关键词进行新增或修改。</p>
-                <a href="#" >去设置</a>
+                <a class="home_toset">去设置</a>
             </div>
         </div>
         <div class="tips">
-            <p class="tips_text">设置订阅关键词,随时接收最新招标信息</p>
-            <p class="tips_text" style="display: none;">为了使您接收更多信息,可对关键词进行新增或修改。</p>
-            <p class="tips_text" style="display: none;">您未设置关键词,设置后接收信息更精准!</p>
-            <p class="tips_text" style="display: none;">本次推送信息已达上限,开通VIP订阅,获取更多订阅信息。</p>
-            <p class="tips_all" style="display: none;"><a href="#">查看全部</a></p>
-            <div class="tips_btn">
-                <a href="#" >去设置</a>
+            <p class="tips_text home_1" style="display: none;">设置订阅关键词,随时接收最新招标信息</p>
+            <p class="tips_text home_2" style="display: none;">为了使您接收更多信息,可对关键词进行新增或修改。</p>
+            <p class="tips_text home_3" style="display: none;">您未设置关键词,设置后接收信息更精准!</p>
+            <p class="tips_text home_4" style="display: none;">本次推送信息已达上限,开通VIP订阅,获取更多订阅信息。</p>
+            <p class="tips_all" style="display: none;"><a class="GetAll">查看全部</a></p>
+            <div class="tips_btn home_toset" style="display: none;">
+                <a class="home_toset" >去设置</a>
             </div>
-            <div class="tips_btn" style="display: none;">
-                <a href="#" >了解详情</a>
+            <div class="tips_btn home_todetails" style="display: none;">
+                <a class="home_todetails" >了解详情</a>
             </div>
         </div>
     </div>
@@ -953,6 +939,8 @@
 </script>
 </div>
 <script type="text/javascript">
+	SuperSearch.getHomeList("",1);//获取数据
+
 	sessionStorage.removeItem("remind"); //开标提醒标识
 	sessionStorage.removeItem("ischecked");//数据导出 是否点击“我已阅”
  	sessionStorage.removeItem("readClause");

+ 38 - 35
src/web/templates/weixin/sharePage.html

@@ -6,10 +6,10 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
     <title>剑鱼标讯,全行业招标信息智能推送领导者!</title>
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/landingpage/mobile/css/reset.css">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/landingpage/mobile/css/index.css">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/landingpage/mobile_1/css/reset.css">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/landingpage/mobile_1/css/index.css">
 	<link href="https://cdn.bootcss.com/Swiper/3.4.2/css/swiper.min.css" rel="stylesheet">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/landingpage/mobile/css/animate.min.css">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/landingpage/mobile_1/css/animate.min.css">
     <style>
         html,
         body {
@@ -104,12 +104,12 @@
             <!-- firstPage -->
             <div class="swiper-slide firstPage" id="firstPage">
                 <div class="titleOne">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/logo_new.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/logo_new.png" alt="">
                 </div>
                 <div class="contetn">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/one.png" alt="" class="one ani" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/two.png" alt="" class="two ani" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/three.png" alt="" class="three ani" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s"
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/one.png" alt="" class="one ani" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/two.png" alt="" class="two ani" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/three.png" alt="" class="three ani" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s"
                         swiper-animate-delay="0.6s">
                 </div>
                 <div class="btn ani" swiper-animate-effect="bounceInUp" swiper-animate-duration="0.5s" swiper-animate-delay="0.9s">
@@ -122,14 +122,14 @@
 						<div class="upload"><a href="/front/downloadJyApp?page=mobile_about&code={{.T.code}}&source={{.T.source}}">点击下载APP</a></div>
 					</div>
                     <div class="arrow">
-                        <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/arrow.png" alt="">
+                        <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/arrow.png" alt="">
                     </div>
                 </div>
             </div>
             <!-- second  Page -->
             <div class="swiper-slide secondPage">
                 <div class="title">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/secondTitle.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/secondTitle.png" alt="">
                     <p>剑鱼标讯大数据真实可靠</p>
                 </div>
                 <div class="list">
@@ -143,7 +143,7 @@
                                     <p>用剑鱼标讯0花费享受所有服务</p>
                                 </div>
                                 <div class="right">
-                                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/2-1.jpg" alt="">
+                                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/2-1.jpg" alt="">
                                 </div>
                             </a>
 
@@ -157,7 +157,7 @@
                                     <p>剑鱼标讯不遮挡任何招标内容 全部显示</p>
                                 </div>
                                 <div class="right">
-                                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/2-2.jpg" alt="">
+                                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/2-2.jpg" alt="">
                                 </div>
                             </a>
 
@@ -171,7 +171,7 @@
                                     <p>汇集1600 个招标网站 每日新增100000 条数据</p>
                                 </div>
                                 <div class="right">
-                                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/2-3.jpg" alt="">
+                                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/2-3.jpg" alt="">
                                 </div>
                             </a>
 
@@ -186,7 +186,7 @@
                                     <p>剑鱼标讯大数据更加开放 多种合作方式可选择</p>
                                 </div>
                                 <div class="right">
-                                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/2-4.jpg" alt="">
+                                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/2-4.jpg" alt="">
                                 </div>
                             </a>
                         </li>
@@ -195,17 +195,17 @@
 				<div class="but">
 	                <button class="btns ani" swiper-animate-effect="bounceInRight" swiper-animate-duration="0.5s" swiper-animate-delay="1.2s">立即体验</button>
 	                <div class="arrow">
-	                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/arrow.png" alt="">
+	                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/arrow.png" alt="">
 	                </div>
 				</div>
             </div>
             <!-- threePage -->
             <div class="swiper-slide threePage ">
                 <div class="title">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/threetitle.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/threetitle.png" alt="">
                 </div>
                 <div class="content ">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/threecetent.png" alt="" class="ani" swiper-animate-effect="zoomIn" swiper-animate-duration="1s">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/threecetent.png" alt="" class="ani" swiper-animate-effect="zoomIn" swiper-animate-duration="1s">
                     <div class="contentOne ani" swiper-animate-effect="bounceInDown" swiper-animate-duration="1s">通讯电子</div>
                     <div class="contentOne ani" swiper-animate-effect="bounceInDown" swiper-animate-duration="1s" swiper-animate-delay="0.3s"
                         style="left: 68%;top: 2.3rem;">能源化工</div>
@@ -234,18 +234,18 @@
 				<div class="but">
                 <button class="btns ani" swiper-animate-effect="fadeInUp" swiper-animate-duration="1s" swiper-animate-delay="1.8s">查看更多行业</button>
                 <div class="arrow">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/arrow.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/arrow.png" alt="">
                 </div>
 				</div>
             </div>
             <!-- fourPage -->
             <div class="swiper-slide fourPage">
                 <div class="title">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/fourtitle.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/fourtitle.png" alt="">
                     <p>无数投标人爱不释手</p>
                 </div>
                 <div class="content ani" swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/fourContent_new.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/fourContent_new.png" alt="">
                     <strong>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;招标订阅 免费推送&nbsp;&nbsp;&nbsp;&nbsp;·</strong>
                     <p>招标信息免费订阅</p>
                     <p> 每日推送<i class="topRight">2000</i>万条信息</p>
@@ -254,18 +254,18 @@
 				<div class="but">
                 <button class="btns ani" swiper-animate-effect="fadeInUp" swiper-animate-duration="1s" swiper-animate-delay="0.6s">立即体验</button>
                 <div class="arrow">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/arrow.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/arrow.png" alt="">
                 </div>
 				</div>
             </div>
             <!-- fivepage -->
             <div class="swiper-slide fourPage">
                 <div class="title">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/fourtitle.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/fourtitle.png" alt="">
                     <p>无数投标人爱不释手</p>
                 </div>
                 <div class="content ani" swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/five.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/five.png" alt="">
                     <strong>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;招标搜索 免费查看&nbsp;&nbsp;&nbsp;&nbsp;·</strong>
                     <p>招标信息免费查看</p>
                     <p> 不遮挡任何内容</p>
@@ -273,18 +273,18 @@
 				<div class="but">
                 <button class="btns">立即体验</button>
                 <div class="arrow">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/arrow.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/arrow.png" alt="">
                 </div>
 				</div>
             </div>
             <!-- sixpage -->
             <div class="swiper-slide fourPage">
                 <div class="title">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/fourtitle.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/fourtitle.png" alt="">
                     <p>无数投标人爱不释手</p>
                 </div>
                 <div class="content  ani" swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/six.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/six.png" alt="">
                     <strong>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;拟建项目 免费获取&nbsp;&nbsp;&nbsp;&nbsp;·</strong>
                     <p>优质拟在建项目提前获取 </p>
                     <p> 中标无忧</p>
@@ -292,18 +292,18 @@
 				<div class="but">
                 <button class="btns">立即体验</button>
                 <div class="arrow">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/arrow.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/arrow.png" alt="">
                 </div>
 				</div>
             </div>
             <!-- sevenpage -->
             <div class="swiper-slide fourPage">
                 <div class="title">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/fourtitle.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/fourtitle.png" alt="">
                     <p>无数投标人爱不释手</p>
                 </div>
                 <div class="content ani" swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/seven.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/seven.png" alt="">
                     <strong>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;项目关注 免费跟踪&nbsp;&nbsp;&nbsp;&nbsp;·</strong>
                     <p>免费关注项目进程</p>
                     <p> 随时接收最新动态提醒</p>
@@ -311,14 +311,14 @@
 				<div class="but">
                 <button class="btns">立即体验</button>
                 <div class="arrow">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/arrow.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/arrow.png" alt="">
                 </div>
 				</div>
             </div>
             <!-- eightPage -->
             <div class="swiper-slide eightPage">
                 <div class="title">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/eight.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/eight.png" alt="">
                 </div>
                 <div class="content">
                     <div class="list">
@@ -344,7 +344,7 @@
 				<div class="but">
                 <button class="btns">立即体验</button>
                 <div class="bottoms">
-                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/eightBottom.png" alt="">
+                    <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/eightBottom.png" alt="">
                 </div>
 				</div>
             </div>
@@ -354,7 +354,7 @@
     </div>
     <div class="popUp" id="popUp">
         <div class="close" id="close">
-            <img src="{{Msg "seo" "cdn"}}/landingpage/mobile/images/close.png" alt="">
+            <img src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/images/close.png" alt="">
         </div>
         <div class="popUpmust" id="popUpmust">
 			<img class="qrcode" src="/front/wxshare/{{.T.openid}}__{{if .T.activecode}}{{.T.activecode}}{{else}}jy_extend{{end}}"/>
@@ -365,12 +365,15 @@
 	<input type="hidden" id="m_extcode" value="{{.T.code}}">
 	<input style="display:none;" type="button" name="" id="postCode" value="">
 	<button style="display:none;"  class="btn disabled" id="submissions">提交</button>
-    <script src="{{Msg "seo" "cdn"}}/landingpage/mobile/js/rem.js"></script>
+    <script src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/js/rem.js"></script>
 	<script src="{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js" ></script>
-	<script src="{{Msg "seo" "cdn"}}/landingpage/mobile/js/swiper.animate1.0.3.min.js"></script>
+	<script src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/js/swiper.animate1.0.3.min.js"></script>
 	<script src="https://cdn.bootcss.com/Swiper/3.4.2/js/swiper.min.js"></script>
-	<script src="{{Msg "seo" "cdn"}}/landingpage/mobile/js/index.js"></script>
+	<script src="{{Msg "seo" "cdn"}}/landingpage/mobile_1/js/index.js"></script>
+	{{include "/common/weixin.html"}}
+	<script type="text/javascript" src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}2"></script>
 	<script>
+	initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
 	$(function(){
 		var activecode = {{.T.activecode}};
 		var activecodes = ["app_lab_timeline_b","app_lab_timeline_z","app_push_timeline_b","app_infocontent_timeline_b","app_infocontent_timeline_z","wx_lab_timeline_b","wx_lab_timeline_z","wx_push_timeline_b","wx_push_timeline_z","wx_infocontent_timeline_b","wx_infocontent_timeline_z"];

+ 25 - 10
src/web/templates/weixin/vipsubscribe/choose_area.html

@@ -585,14 +585,20 @@
                 $('.reset-btn').removeAttr("disabled");
                 $('.save-btn').removeAttr("disabled");
                 AreaChoose.flushPrice(); //刷新价格
-            }else{
-                $('.save-btn').attr("disabled","disabled");
+            } else {
+                $('.save-btn').attr("disabled", "disabled");
                 AreaChoose.flushPrice(-1); //刷新价格
             }
         },
         submitArea: function () {
             let addCity = $('.result_name').text(); //新增的城市
             sessionStorage.setItem("vipSubSelectArea", JSON.stringify(AreaChoose.selectObj));
+            if (sessionStorage.getItem("vipSubSelectArea_buyed")) {
+                sessionStorage.removeItem("vipSubSelectArea_buyed");
+            }
+            if (sessionStorage.getItem("areaSelectNotFlushed")) {
+                sessionStorage.removeItem("areaSelectNotFlushed");
+            }
             history.go(-1);
         },
         isAllSelected: function () {
@@ -723,17 +729,15 @@
                 AreaChoose.getResult($(this).parent('div').siblings('.tab').find('.province').text()) //出入选择的省份
             })
 
-            $('.other').on('change', function () { //选择全国
+            /*$('.other').on('change', function () { //选择全国
                 AreaChoose.reset();
-            })
+            })*/
 
             $('.save-btn').click(function () {  // 提交
                 AreaChoose.submitArea();
             })
             $('.reset-btn').click(function () {  //重置
-                if (!$(".other").is(':checked')) {
-                    $(".other").trigger("click");
-                }
+                AreaChoose.reset();
             })
         },
         reset: function () {
@@ -746,20 +750,31 @@
                 'input').prop({
                 'checked': false,
                 "disabled": false
-            });
+            }).removeClass('half');
             $('.tab_content').find('.city').removeClass('active').attr({
                 "disabled": false,
                 "checked": false
             })
             AreaChoose.getResult()
         },
+        buyset: undefined,
         flushPrice: function (flag) {
             if (!this.vipSubisTrial) {
+                if (!this.buyset && sessionStorage.getItem("vipSubBuySet")) {
+                    this.buyset = JSON.parse(sessionStorage.getItem("vipSubBuySet"))
+                }
                 $('.tips_d_money').css("display", "block");
-                var price = getsubVipOrderPrice(this.selectObj, this.selectedIndustryArr, this.timeSelect);
+                let price;
+                if (sessionStorage.getItem("industrySelectNotFlushed")) {
+                    let mBuyset = getBuySet(this.selectObj, []);
+                    mBuyset.buyerclasscount = this.buyset.buyerclasscount;
+                    price = getsubVipOrderPriceBybuyset(mBuyset, this.timeSelect);
+                } else {
+                    price = getsubVipOrderPrice(this.selectObj, this.selectedIndustryArr, this.timeSelect);
+                }
                 $('.tips_d_money').text('¥' + price);
             }
-            if(flag===-1){
+            if (flag === -1) {
                 $('.tips_d_money').css("display", "none");
             }
         },

+ 23 - 2
src/web/templates/weixin/vipsubscribe/choose_industry.html

@@ -293,7 +293,7 @@
             $(".save-btn").removeAttr("disabled");
             flushPrice()//刷新价格
         } else {
-            $(".save-btn").attr("disabled","disabled");
+            $(".save-btn").attr("disabled", "disabled");
             flushPrice(-1)//刷新价格
         }
 
@@ -330,9 +330,24 @@
         })
     }
 
+    var buyset = undefined;
+
     function flushPrice(flag) {
         if (!vipSubisTrial) {
-            var price = getsubVipOrderPrice(selectedAreaObj, selectedIndustryArr, timeSelect);
+            if (!buyset && sessionStorage.getItem("vipSubBuySet")) {
+                buyset = JSON.parse(sessionStorage.getItem("vipSubBuySet"))
+            }
+            let price;
+
+            if (sessionStorage.getItem("areaSelectNotFlushed")) {
+                mBuyset = getBuySet({}, selectedIndustryArr);
+                mBuyset.citys = buyset.citys;
+                mBuyset.areacount = buyset.areacount;
+                price = getsubVipOrderPriceBybuyset(mBuyset, timeSelect);
+            } else {
+                price = getsubVipOrderPrice(selectedAreaObj, selectedIndustryArr, timeSelect);
+            }
+
             $('.tips_d_money').css("display", "block").text('¥' + price);
         }
         if (flag == -1) {
@@ -370,6 +385,12 @@
     $('.save-btn').on('click', function () {
         console.log(selectedIndustryArr)
         sessionStorage.setItem("vipSubSelectIndustry", JSON.stringify(selectedIndustryArr));
+        if (sessionStorage.getItem("vipSubSelectIndustry_buyed")) {
+            sessionStorage.removeItem("vipSubSelectIndustry_buyed");
+        }
+        if (sessionStorage.getItem("industrySelectNotFlushed")) {
+            sessionStorage.removeItem("industrySelectNotFlushed")
+        }
         history.go(-1);
     })
 

+ 2 - 2
src/web/templates/weixin/vipsubscribe/edit_subscribe_industry.html

@@ -313,7 +313,7 @@
                     }
                     if (EditIndustry.reqData.buyset.buyerclasscount != -1) { //购买不是全部行业 不能点击
                         if (EditIndustry.reqData.isTrial) {
-                            EditIndustry.showTip(`<span style="white-space: nowrap;">您只选择试用了${EditIndustry.reqData.buyset.buyerclasscount}个行业</span>,<span style="white-space: nowrap;">如需更多,请前往VIP订阅进行购买</span>`);
+                            EditIndustry.showTip(`<span style="white-space: nowrap;">您只选择试用了${EditIndustry.reqData.buyset.buyerclasscount}个行业</span>,<br><span style="white-space: nowrap;">如需更多,请前往VIP订阅进行购买</span>`);
                         } else {
                             EditIndustry.showTip(`<span style="white-space: nowrap;">您只购买了${EditIndustry.reqData.buyset.buyerclasscount}个行业,如需更多请升级<span></p>`);
                         }
@@ -386,7 +386,7 @@
             if (selectedArr.length >= EditIndustry.reqData.buyset.buyerclasscount && EditIndustry.reqData.buyset.buyerclasscount != -1) {
                 if (!isInit) {
                     if (EditIndustry.reqData.isTrial) {
-                        EditIndustry.showTip(`<span style="white-space: nowrap;">您只选择试用了${EditIndustry.reqData.buyset.buyerclasscount}个行业</span>,<span style="white-space: nowrap;">如需更多,请前往VIP订阅进行购买</span>`);
+                        EditIndustry.showTip(`<span style="white-space: nowrap;">您只选择试用了${EditIndustry.reqData.buyset.buyerclasscount}个行业</span>,<br><span style="white-space: nowrap;">如需更多,请前往VIP订阅进行购买</span>`);
                     } else {
                         EditIndustry.showTip(`<span style="white-space: nowrap;">您只购买了${EditIndustry.reqData.buyset.buyerclasscount}个行业,如需更多请升级<span></p>`);
                     }

+ 789 - 0
src/web/templates/weixin/vipsubscribe/vip_purchase_willExpire.html

@@ -0,0 +1,789 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
+    <title>VIP订阅</title>
+    <script src="/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" href="/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="/vipsubscribe/css/vip_purchase.css?v={{Msg "seo" "version"}}">
+</head>
+<body>
+<div>
+    <div class="vip_purchase">
+        <div class="choose_condition">
+            <ul class="chooseList">
+                <li class="choose_item">
+                    <a href="/front/vipsubscribe/toChooseArea">
+                        <span class="label">区域</span>
+                        <input type="text" disabled value="" placeholder="1个市"
+                               class="info choose_area">
+                        <i class="iconfont icon-arrow"></i>
+                    </a>
+                    <!-- 无选择时不显示 -->
+                    <p class="add_tips area" style="display:none">已选择 0 个省级区域、0 个地市</p>
+                </li>
+                <li class="choose_item">
+                    <a href="/front/vipsubscribe/toChooseIndustry">
+                        <span class="label">行业</span>
+                        <input type="text" disabled value="" placeholder="1个行业"
+                               class="info choose_industry">
+                        <i class="iconfont icon-arrow"></i>
+                    </a>
+                    <!-- 无选择时不显示 -->
+                    <p class="add_tips industry" style="display:none">已选择 0 个行业</p>
+                </li>
+                <li class="choose_item select_cycle">
+                    <!-- 需要选择订阅周期就用a标签,div.class="free-7day"隐藏 opacity: 1 !important; -->
+                    <!-- 需要选择试用就用div标签,a标签隐藏 -->
+                    <a href="javascript:;">
+                        <span class="label">订阅周期</span>
+                        <input type="text" readonly="readonly" disabled style="color:#000;" value="1个月"
+                               class="info choose_time">
+                        <i class="iconfont icon-arrow choose_time"></i>
+                    </a>
+                </li>
+            </ul>
+            <div class="pay_mode">
+                <div class="select_payment choose_item">
+                    <a href="javascript:;">
+                        <span class="label">支付方式</span>
+                        <span class="info choose_way" style="width: 6rem;">微信支付</span>
+                        <!--<i class="iconfont"></i>-->
+                    </a>
+                </div>
+                <div class="vip_rules">
+                    <div class="vip_prise_table">
+                        <table class="monthly">
+                            <caption class="table_title">- VIP订阅价格 -</caption>
+                            <tr>
+                                <td colspan="2">按月购买</td>
+                            </tr>
+                            <tr>
+                                <td><span>5.8</span>元 月/市/行业</td>
+                                <td><span>18</span>元 月/市/全行业</td>
+                            </tr>
+                            <tr>
+                                <td><span>11.8</span>元 月/省/行业</td>
+                                <td><span>38</span>元 月/省/全行业</td>
+                            </tr>
+                            <tr>
+                                <td><span>118</span>元 月/全国/行业</td>
+                                <td><span>388</span>元 月/全国/全行业</td>
+                            </tr>
+                        </table>
+                        <table class="yearly">
+                            <tr>
+                                <td colspan="2">按年购买</td>
+                            </tr>
+                            <tr>
+                                <td><span>58</span>元 年/市/行业</td>
+                                <td><span>180</span>元 年/市/全行业</td>
+                            </tr>
+                            <tr>
+                                <td><span>118</span>元 年/省/行业</td>
+                                <td><span>380</span>元 年/省/全行业</td>
+                            </tr>
+                            <tr>
+                                <td><span>1180</span>元 年/全国/行业</td>
+                                <td><span>3880</span>元 年/全国/全行业</td>
+                            </tr>
+                        </table>
+                        <dl class="tips">
+                            <dt>购买须知:</dt>
+                            <dd>套餐周期内,不支持套餐降级,即将到期时续费可降级;</dd>
+                            <dd>支持套餐升级,补差价(按月进行补差价,不足一个月按一个月计算)。</dd>
+                        </dl>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="fixed-bottom-box">
+            <div class="weui-cells weui-cells_checkbox radio-form">
+                <label class="weui-cell weui-check__label" for="buy">
+                    <div class="weui-cell__hd">
+                        <input type="checkbox" class="weui-check" name="buyService" id="buy"/>
+                        <i class="weui-icon-checked"></i>
+                    </div>
+                    <div class="weui-cell__bd read">
+                        <p>
+                            我已阅读,理解并接受
+                            <a href="/front/staticPage/wx-serviceterms.html">
+                                《剑鱼标讯线上购买与服务条款》
+                            </a>
+                        </p>
+                    </div>
+                </label>
+            </div>
+            <div class="price">
+                <!-- <strong>&yen;1,300.00</strong> -->
+                <strong>&yen;5.80</strong>
+            </div>
+            <div class="form-btn">
+                <button class="btn enter" disabled id="payHandle">立即续费</button>
+            </div>
+        </div>
+
+        <!-- 选择行业 -->
+        <div class="js_dialog time_cycle" id="time_cycle" style="display: none;">
+            <div class="weui-mask"></div>
+            <div class="box">
+                <div class="box_hd">
+                    <h3>订阅周期</h3>
+                    <span class="cancel">取消</span>
+                </div>
+                <div class="box_bd">
+                    <div class="tips profit_tips" style="display: none">已选择10个月,建议“按年订阅”</div>
+                    <div class="computed_price">¥58.0</div>
+                    <div class="bd_select">
+                        <div class="weui-cells weui-cells_checkbox choose-form">
+                            <label class="weui-cell weui-check__label monthly_label" for="monthly">
+                                <div class="weui-cell__hd">
+                                    <input type="radio" class="weui-check monthly" name="time" value="month"
+                                           id="monthly"/>
+                                    <i class="weui-icon-checked"></i>
+                                </div>
+                                <div class="weui-cell__bd">
+                                    <p>按月订阅</p>
+                                </div>
+                            </label>
+                            <div class="number_box" id="number_box_month" data-numbox-step="1" data-numbox-min="1"
+                                 data-numbox-max="12">
+                                <button class="weui-btn weui-btn_plain-default" type="button" disabled>
+                                    <div class="jy_icon decrease"></div>
+                                </button>
+                                <span class="month_number">1</span>
+                                <button class="weui-btn weui-btn_plain-default add" type="button">
+                                    <div class="jy_icon increase"></div>
+                                </button>
+                            </div>
+                        </div>
+                        <div class="weui-cells weui-cells_checkbox choose-form">
+                            <label class="weui-cell weui-check__label yearly_label" for="yearly">
+                                <div class="weui-cell__hd">
+                                    <input type="radio" class="weui-check yearly" name="time" value="year"
+                                           id="yearly" checked/>
+                                    <i class="weui-icon-checked"></i>
+                                </div>
+                                <div class="weui-cell__bd">
+                                    <p>按年订阅</p>
+                                </div>
+                            </label>
+                            <div class="number_box" id="number_box_year" style="border: 0;">
+                                <span class="year_number" data-id="1">1年</span>
+                                <span class="year_number" data-id="2">2年</span>
+                                <span class="year_number" data-id="3">3年</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-btn">
+                    <button class="btn enter" id="enter_period">确认</button>
+                </div>
+            </div>
+        </div>
+        <!-- 选择支付方式 -->
+        <div class="js_dialog pay_way" id="pay_way" style="display: none;">
+            <div class="weui-mask"></div>
+            <div class="box">
+                <div class="box_hd">
+                    <span></span>
+                    <h3>支付方式</h3>
+                    <span class="cancel">取消</span>
+                </div>
+                <div class="box_bd">
+                    <div class="weui-cells weui-cells_checkbox choose-form">
+                        <label class="weui-cell weui-check__label wx_label" for="wx">
+                            <div class="weui-cell__bd read">
+                                <p><img src="/vipsubscribe/image/weixin.png?v={{Msg "seo" "version"}}">微信支付</p>
+                            </div>
+                            <div class="weui-cell__hd">
+                                <input type="radio" class="weui-check" name="way" value="微信支付" id="wx" checked/>
+                                <i class="weui-icon-checked"></i>
+                            </div>
+                        </label>
+                        <label class="weui-cell weui-check__label zfb_label" for="zfb">
+                            <div class="weui-cell__bd read">
+                                <p><img src="/vipsubscribe/image/zhifubao.png?v={{Msg "seo" "version"}}">支付宝支付</p>
+                            </div>
+                            <div class="weui-cell__hd">
+                                <input type="radio" class="weui-check" name="way" value="支付宝支付" id="zfb"/>
+                                <i class="weui-icon-checked"></i>
+                            </div>
+                        </label>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <script src="/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+    {{include "/common/weixin.html"}}
+    <script>
+        $(window).bind("pageshow", function (event) {
+            if (event.originalEvent.persisted) {
+                window.location.reload();
+            }
+        });
+        //微信支付start
+        try {
+            var signature = {{.T.signature}};
+            var isConfigSuccess = true;
+            var id = {{.T._id}}
+            if (signature && signature.length == 4) {
+                wx.config({
+                    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+                    appId: signature[0], // 必填,公众号的唯一标识
+                    timestamp: signature[1], // 必填,生成签名的时间戳
+                    nonceStr: signature[2], // 必填,生成签名的随机串
+                    signature: signature[3],// 必填,签名,见附录1
+                    jsApiList: ['chooseWXPay', 'hideAllNonBaseMenuItem'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+                });
+                wx.ready(function () {
+                    if (!isConfigSuccess) {
+                        return;
+                    }
+                    wx.hideAllNonBaseMenuItem();
+                });
+                wx.error(function (res) {
+                    //config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
+                    //alert(res);
+                    isConfigSuccess = false;
+                });
+            }
+
+            //调用微信支付接口
+            function onBridgeReady(res, ordercode) {
+                WeixinJSBridge.invoke('getBrandWCPayRequest', {
+                        "appId": res["appId"],
+                        "timeStamp": res["timestamp"],
+                        "nonceStr": res["nonceStr"],
+                        "package": res["prepayId"],
+                        "signType": res["signType"],
+                        "paySign": res["sign"]
+                    },
+                    function (r) {
+                        if (r.err_msg == "get_brand_wcpay_request:ok") {
+                            setTimeout(function () {
+                                clearSessionStorage();
+                                window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode=" + ordercode);
+                            }, 500)
+                        } else if (r.err_msg == "get_brand_wcpay_request:cancel") {
+                            console.log("支付已取消")
+                        } else {
+                            weui.toast("系统异常,请稍微再试", {
+                                duration: 2000,
+                                className: 'custom-toast',
+                            });
+                        }
+                    });
+            }
+
+            //微信支付end
+        } catch (e) {
+            console.log(e)
+        }
+        sessionStorage.removeItem("vipSubisTrial");//非试用界面
+        var purchase = {
+            areaSelect: {},//已选择地区 {"一个省":["一个市"]}计算价格临时变量
+            areaSelectFlushed: false,
+            industrySelect: [],// 已选择行业 一个行业(计算价格临时变量)
+            industrySelectFlushed: false,
+            timeSelect: [1, 2],//已选择时间 timeSelect[0]时长  timeSelect[1] 1:年 2:月
+            buyset: {},
+            price: {}, //价格
+            vipSubisTrial: false,
+            initData: function () {
+                //已选择
+                try {
+                    if (sessionStorage.getItem("vipSubSelectArea")) {
+                        this.areaSelect = JSON.parse(sessionStorage.getItem("vipSubSelectArea"));
+                    }
+                    if (sessionStorage.getItem("vipSubSelectIndustry")) {
+                        this.industrySelect = JSON.parse(sessionStorage.getItem("vipSubSelectIndustry"));
+                    }
+                    if (sessionStorage.getItem("vipSubBuySet")) {
+                        this.buyset = JSON.parse(sessionStorage.getItem("vipSubBuySet"));
+                    }
+                    if (!sessionStorage.getItem("vipSubBuySet")) {
+                        $DoPost("/subscribepay/editSub/getSubBuyMsg", {}, function (r) {
+                            if (r.success) {
+                                if (!$.isEmptyObject(r.data.area)) {
+                                    purchase.areaSelect = r.data.area
+                                } else {
+                                    purchase.areaSelect = {"全国": []}
+                                }
+                                if (r.data.industry.length != 0) {
+                                    purchase.industrySelect = r.data.industry
+                                } else {
+                                    purchase.industrySelect = ["全部行业"]
+                                }
+                                if (!$.isEmptyObject(r.data.buyset)) {
+                                    purchase.buyset = r.data.buyset
+                                }
+                                sessionStorage.setItem("vipSubSelectArea", JSON.stringify(purchase.areaSelect));
+                                sessionStorage.setItem("vipSubSelectIndustry", JSON.stringify(purchase.industrySelect));
+                                sessionStorage.setItem("vipSubSelectArea_buyed", JSON.stringify(purchase.areaSelect));
+                                sessionStorage.setItem("vipSubSelectIndustry_buyed", JSON.stringify(purchase.industrySelect));
+                                sessionStorage.setItem("vipSubBuySet", JSON.stringify(purchase.buyset))
+                            }
+                        }, false)
+                    }
+                    if (sessionStorage.getItem("vipSubSelectTime")) {
+                        this.timeSelect = JSON.parse(sessionStorage.getItem("vipSubSelectTime"));
+                    }
+                    //是否已经点击已读
+                    if (sessionStorage.getItem("vipSub_read") == "true") $("#buy").prop("checked", true);
+                    //是否试用界面
+                    if (sessionStorage.getItem("vipSubisTrial")) this.vipSubisTrial = true;
+
+                    //加载价格
+                    $DoPost("/subscribepay/vipsubscribe/getPrice", {}, function (r) {
+                        if (r) {
+                            purchase.price = r;
+                        }
+                    }, false)
+
+                } catch (e) {
+                    console.log(e)
+                }
+            },
+            showArea: function () {
+                if (!this.areaSelectFlushed) {
+                    if (this.buyset.areacount == -1) {
+                        $(".choose_area").val("全国");
+                    } else {
+                        let tipTxt = "已购买 ";
+                        if (this.buyset.areacount != 0) tipTxt += this.buyset.areacount + " 个省级区域";
+                        if (!$.isEmptyObject(this.buyset.citys)) {
+                            if (this.buyset.areacount != 0) tipTxt += "、";
+                            let cityCount = 0;
+                            for (var i in this.buyset.citys) {
+                                cityCount += this.buyset.citys[i];
+                            }
+                            tipTxt += cityCount + " 个地市";
+                        }
+                        $(".choose_area").val(tipTxt);
+                    }
+                } else {
+                    let cityArr = [];//城市
+                    let provinceArr = [];//省份
+                    let data = this.areaSelect;
+                    for (var i in data) {
+                        let citys = data[i];
+                        if (citys.length > 0) {
+                            cityArr = cityArr.concat(citys);
+                        } else {
+                            provinceArr.push(i)
+                        }
+                    }
+
+                    if (!$.isEmptyObject(this.areaSelect) && !this.areaSelect["全国"]) { //选择有行业信息 且不是全国
+                        var tipTxt = "已购买 ";
+                        if (provinceArr.length > 0) tipTxt += provinceArr.length + " 个省级区域";
+                        if (cityArr.length > 0) {
+                            if (provinceArr.length > 0) tipTxt += "、";
+                            tipTxt += cityArr.length + " 个地市";
+                        }
+                        $(".choose_area").val(tipTxt);
+                        //$(".add_tips.area").text(tipTxt).css("display", "");
+                    } else if (!$.isEmptyObject(this.areaSelect) && this.areaSelect["全国"]) {
+                        $(".choose_area").val("全国");
+                    }
+                }
+            },
+            showPrice: function () {
+                $('.monthly span:eq(0)').text(purchase.price.month.oneCity_oneBuyerClass / 100);
+                $('.monthly span:eq(1)').text(purchase.price.month.oneCity_allBuyerClass / 100);
+                $('.monthly span:eq(2)').text(purchase.price.month.oneProvince_oneBuyerClass / 100);
+                $('.monthly span:eq(3)').text(purchase.price.month.oneProvince_allBuyerClass / 100);
+                $('.monthly span:eq(4)').text(purchase.price.month.allProvince_oneBuyerClass / 100);
+                $('.monthly span:eq(5)').text(purchase.price.month.allProvince_allBuyerClass / 100);
+
+                $('.yearly span:eq(0)').text(purchase.price.year.oneCity_oneBuyerClass / 100);
+                $('.yearly span:eq(1)').text(purchase.price.year.oneCity_allBuyerClass / 100);
+                $('.yearly span:eq(2)').text(purchase.price.year.oneProvince_oneBuyerClass / 100);
+                $('.yearly span:eq(3)').text(purchase.price.year.oneProvince_allBuyerClass / 100);
+                $('.yearly span:eq(4)').text(purchase.price.year.allProvince_oneBuyerClass / 100);
+                $('.yearly span:eq(5)').text(purchase.price.year.allProvince_allBuyerClass / 100);
+            },
+            showIndustry: function () {
+                if (!this.industrySelectFlushed) {
+                    if (this.buyset.buyerclasscount == -1) {
+                        $(".choose_industry").val("全部行业");
+                    } else {
+                        $(".choose_industry").val("已购买 " + this.buyset.buyerclasscount + " 个行业");
+                    }
+                } else {
+                    let data = this.industrySelect;
+                    if (this.industrySelect.length > 0 && this.industrySelect[0] != "全部行业" && this.industrySelect[0] != "一个行业") { //选择有行业信息
+                        $(".choose_industry").val("已购买 " + this.industrySelect.length + " 个行业");
+                    } else if (this.industrySelect.length > 0 && this.industrySelect[0] == "全部行业") {
+                        $(".choose_industry").val("全部行业");
+                    } else {
+                        $(".choose_industry").val("");
+                    }
+                }
+            },
+            showTime: function () {
+                let tmp = this.timeSelect[0];
+                if (this.timeSelect[1] == 1) {
+                    tmp += "年";
+                    $("#yearly").prop('checked', true);
+                    $('.year_number:eq(' + (this.timeSelect[0] - 1) + ')').addClass("active");
+                    //$(".number_box:eq(1)").addClass("active");
+                } else {
+                    tmp += "个月";
+                    $("#monthly").prop('checked', true);
+                    $(".number_box:eq(0)").addClass("active");
+                    $("#number_box_month .month_number").text(this.timeSelect[0]);
+                    if (this.timeSelect[0] >= 10) {
+                        $('.profit_tips').text("已选择" + this.timeSelect[0] + "个月,建议“按年订阅”").show();
+                    }
+                    if (this.timeSelect[0] == 1) {
+                        $('#number_box_month button:eq(0)').attr("disabled", "disabled");
+                    } else {
+                        $('#number_box_month button:eq(0)').removeAttr("disabled");
+                    }
+                }
+                $(".info.choose_time").val(tmp);
+            },
+            flushPrice: function (time, flag) {
+                if (this.vipSubisTrial) {
+                    $('.price strong').text('¥0.00');
+                } else {
+                    let price;
+                    if (this.industrySelectFlushed && this.areaSelectFlushed) { //地区和行业都已选择
+                        price = getsubVipOrderPrice(this.areaSelect, this.industrySelect, time, this.price);
+                    } else if (this.industrySelectFlushed) { //仅选择了行业
+                        mBuyset = getBuySet({}, this.industrySelect);
+                        mBuyset.citys = this.buyset.citys;
+                        mBuyset.areacount = this.buyset.areacount;
+                        price = getsubVipOrderPriceBybuyset(mBuyset, time, this.price)
+                    } else if (this.areaSelectFlushed) { //仅选择了地区
+                        mBuyset = getBuySet(this.areaSelect, []);
+                        mBuyset.buyerclasscount = this.buyset.buyerclasscount;
+                        price = getsubVipOrderPriceBybuyset(mBuyset, time, this.price);
+                    } else { //都未选择
+                        price = getsubVipOrderPriceBybuyset(this.buyset, time, this.price);
+                    }
+                    if (flag === 1) {
+                        $('.price strong').text('¥' + price);
+                    } else if (flag === 2) {
+                        $('.computed_price').html('¥' + price);
+                    } else {
+                        $('.price strong').text('¥' + price);
+                        $('.computed_price').html('¥' + price);
+                    }
+                }
+            },
+            flushCheck: function () {//检测是否修改
+                //地区是否改变
+                this.areaSelectFlushed = !this.theSameAs_area();
+                if (!this.areaSelectFlushed) {
+                    sessionStorage.setItem("areaSelectNotFlushed", "1")
+                } else {
+                    sessionStorage.removeItem("areaSelectNotFlushed");
+                }
+                //行业是否改变
+                this.industrySelectFlushed = !this.theSame_industry();
+                if (!this.industrySelectFlushed) {
+                    sessionStorage.setItem("industrySelectNotFlushed", "1")
+                } else {
+                    sessionStorage.removeItem("industrySelectNotFlushed");
+                }
+            },
+            theSameAs_area: function () {
+                if (!sessionStorage.getItem("vipSubSelectArea_buyed")) {
+                    return false
+                }
+                let Area_buyed = JSON.parse(sessionStorage.getItem("vipSubSelectArea_buyed"));
+                let tmp1 = getAreaClassArr(Area_buyed);
+                let tmp2 = getAreaClassArr(purchase.areaSelect);
+                return (JSON.stringify(tmp1[0].sort()) === JSON.stringify(tmp2[0].sort())) && (JSON.stringify(tmp1[1].sort()) === JSON.stringify(tmp2[1].sort()));
+            },
+            theSame_industry: function () {
+                if (!sessionStorage.getItem("vipSubSelectIndustry_buyed")) {
+                    return false
+                }
+                let industry_buyed = JSON.parse(sessionStorage.getItem("vipSubSelectIndustry_buyed"));
+                return JSON.stringify(industry_buyed.sort()) === JSON.stringify(purchase.industrySelect.sort());
+            }
+        };
+
+
+        $(function () {
+            purchase.initData();
+            purchase.flushCheck();
+            purchase.showArea();
+            purchase.showIndustry();
+            purchase.showPrice();
+            purchase.showTime();
+            purchase.flushPrice(purchase.timeSelect);
+            checkOk();
+            var time_limit;//定义一个周期变量
+            /*------ 关闭弹窗事件  点击取消或遮罩层 -----*/
+            $('.weui-mask').click(hideDialog);
+            $('.cancel').click(hideDialog);
+
+            /* -----  订阅周期、支付方式弹窗弹出事件 -------*/
+            // 选择订阅周期
+            $('.select_cycle a').click(function (e) {
+                $('#time_cycle').show(200);
+            });
+
+
+            /* -----  选择完支付方式、订阅周期 回显到页面 -------*/
+            // 对支付方式选择的input绑定点击事件
+            $('#pay_way input:radio[name="way"]').click(function () {
+                var checkValue = $('input:radio[name="way"]:checked').val();
+                $('.pay_way').hide(200);
+                $('.pay_mode .select_payment .choose_way.info').html(checkValue);
+            });
+            // 对订阅时间选择的input绑定点击事件
+            $('#time_cycle input:radio[name="time"]').on('click', function (e) {
+                // 解除确认按钮的锁定
+                $('#time_cycle .form-btn button').removeAttr('disabled');
+                if ($(e.target).hasClass('monthly')) {
+                    // 按月订阅
+                    $('#number_box_month').addClass('active');
+                    $('#number_box_year span').removeClass('active');
+                } else {
+                    // 按年订阅
+                    $('#number_box_month').removeClass('active');
+                    // $('#number_box_year span:eq(0)').addClass('active').siblings().removeClass('active');
+                }
+            });
+
+            /* --------控制月份number_box的事件  点击加减号触发的事件------- */
+            $('#number_box_month').on('click', 'button', function (e) {
+                // 点击加减号让input radio选中
+                $('#monthly').prop('checked', true);
+                $('#yearly').prop('checked', false);
+                $('.number_box span').removeClass('active');
+                $('#number_box_month').addClass('active');
+
+                var $number = $('#number_box_month span.month_number');
+                var $monthlyInput = $('#monthly');
+                // 未整理的data数组,里面的值都是字符串
+                var preData = e.delegateTarget.dataset;
+                var currentNum = parseInt($number.text());
+                var data = {};
+                // 把字符串转换成数字
+                for (var i in preData) {
+                    data[i] = preData[i] - 0
+                }
+
+                if (!$monthlyInput.prop('checked')) {
+                    return
+                }
+                // 判断是点击的是+ 还是-
+                if ($(e.target).hasClass('add')) {
+                    if (currentNum == 11) { //12个月自动跳转1年
+                        $("#number_box_year .year_number:eq(0)").trigger("click");
+                        return
+                    }
+                    // 点的+
+                    // currentNum = currentNum >= 12 ? 12 : currentNum + 1;
+                    currentNum = currentNum >= data.numboxMax ? data.numboxMax : currentNum + data
+                        .numboxStep;
+                } else {
+                    // 点的-
+                    // currentNum = currentNum <= 1 ? 1 : currentNum - 1;
+                    currentNum = currentNum <= data.numboxMin ? data.numboxMin : currentNum - data
+                        .numboxStep;
+                }
+                $number.text(currentNum);
+                purchase.timeSelect_tmp = [Number(currentNum), 2];
+                purchase.flushPrice(purchase.timeSelect_tmp, 2);
+                //var price = (5.8 * currentNum).toFixed(1);
+                //$('.computed_price').html('¥' + price)
+                var firstButton = $('#number_box_month button:first');
+                var lastButton = $('#number_box_month button:last');
+                if (currentNum >= 10) {
+                    $('.profit_tips').text("已选择" + currentNum + "个月,建议“按年订阅”").show();
+                } else {
+                    $('.profit_tips').hide();
+                }
+                // 如果为操作后的结果为1,则锁定减号按钮
+                if (currentNum === data.numboxMin) {
+                    firstButton.attr('disabled', true)
+                } else {
+                    firstButton.removeAttr('disabled')
+                }
+                // 如果为操作后的结果为12,则锁定加号按钮
+                if (currentNum === data.numboxMax) {
+                    lastButton.attr('disabled', true)
+                } else {
+                    lastButton.removeAttr('disabled')
+                }
+            });
+
+            /* -------- 控制年份number_box的事件  点击1年 2年 3年触发的事件------- */
+            $('#number_box_year').on('click', 'span', function (e) {
+                console.log(e.target.dataset.id);
+                $('#number_box_month').removeClass('active');
+                let id = e.target.dataset.id;
+                $('.profit_tips').hide();
+                $(this).addClass('active').siblings().removeClass('active');
+                $('#yearly').prop('checked', true);
+                $("#monthly").prop('checked', false);
+
+                // 渲染结果 保留一位小数
+                //let result = (Number(id) * 58).toFixed(1);
+                //$('.computed_price').html('¥' + result)
+                purchase.timeSelect_tmp = [Number(id), 1]
+                purchase.flushPrice(purchase.timeSelect_tmp, 2);
+            });
+
+            /* -------- 选择按月订阅  radio触发的事件------- */
+            $('#monthly').on('change', function (e) {
+                let isChecked = $(this).is(':checked');
+                let val = $('.month_number').text();
+                if (val >= 10) {
+                    $('.profit_tips').show()
+                }
+                if (!isChecked) {
+                    $('#number_box_month button').attr('disabled', true)
+                } else {
+                    $('#number_box_month button').removeAttr('disabled')
+                }
+                //let result = (Number(val) * 5.8).toFixed(1);
+                //$('.computed_price').html('¥' + result);
+                purchase.timeSelect_tmp = [Number(val), 2];
+                purchase.flushPrice(purchase.timeSelect_tmp, 2);
+
+            });
+            /* -------- 选择按年订阅  radio触发的事件------- */
+            $('#yearly').on('change', function (e) {
+                $('.profit_tips').hide();
+                // console.log($(this).is(':checked'))
+                let isChecked = $(this).is(':checked');
+                // 按年订阅默认选择1年
+                let val = 1;
+                //$('.computed_price').html('¥' + Number(val) * 58)
+                if (isChecked) {
+                    $('#number_box_year span:eq(0)').addClass('active').siblings().removeClass('active')
+                }
+                purchase.timeSelect_tmp = [Number(val), 1];
+                purchase.flushPrice(purchase.timeSelect_tmp, 2);
+            });
+
+            // 确认订阅周期
+            $('#enter_period').on('click', function () {
+                var val;
+                $('input[name="time"]').each(function (i, v) {
+                    let isChecked = $(v).is(':checked');
+                    if ($(v).is(':checked') === true && $('.year_number').hasClass('active')) {
+                        val = $('.active').html();
+                        $('#time_cycle').hide(function () {
+                            $('.choose_time').val(val)
+                        });
+                        purchase.timeSelect_tmp = [parseInt(val[0]), 1]
+                    } else if ($(v).is(':checked') === true) {
+                        val = $('.month_number').html();
+                        $('#time_cycle').hide(function () {
+                            $('.choose_time').val(val + '个月')
+                        });
+                        purchase.timeSelect_tmp = [parseInt(val), 2]
+                    }
+                });
+                purchase.timeSelect = purchase.timeSelect_tmp;
+                purchase.flushPrice(purchase.timeSelect, 1);
+                sessionStorage.setItem("vipSubSelectTime", JSON.stringify(purchase.timeSelect));
+            });
+            $("input").bind("input propertychange change", function (event) {
+                checkOk();
+            });
+
+            $('#payHandle').click(function () {
+                $("#payHandle").attr("disabled", "disabled");
+                //支付请求
+                var area = purchase.areaSelect;
+                var industry = purchase.industrySelect;
+                if (area["全国"]) {
+                    area = {};
+                }
+                if (industry.length == 1 && industry[0] == "全部行业") {
+                    industry = [];
+                }
+                //付费用户
+                var param = {
+                    "area": JSON.stringify(area),
+                    "industry": industry.join(","),
+                    "time": $(".info:eq(2)").val().trim(),
+                    "payWay": "wx_js",
+                    "orderType": 5,
+                    "selected": JSON.stringify([sessionStorage.getItem("areaSelectNotFlushed") != "1", sessionStorage.getItem("industrySelectNotFlushed") != "1"]),
+                };
+                $DoPost("/subscribepay/vipsubscribe/createOrder", param, function (r) {
+                    if (r.success) {
+                        onBridgeReady(JSON.parse(r.data.res), r.data.code);
+                    }
+                    $("#payHandle").removeAttr("disabled")
+                });
+            })
+
+        });
+
+        // 隐藏dialog选择框
+        function hideDialog() {
+            $('#pay_way').hide(200);
+            $('#time_cycle').hide(200);
+        }
+
+        //是否可点击
+        function checkOk() {
+            var area = $(".info:eq(0)").val().trim();
+            var industry = $(".info:eq(1)").val().trim();
+            var checked = $('#buy').prop('checked');
+            if (area != '' && industry != '' && checked == true) {
+                $("#payHandle").removeAttr('disabled');
+            } else {
+                $("#payHandle").attr({
+                    'disabled': 'true'
+                });
+            }
+            sessionStorage.setItem("vipSub_read", checked)
+        }
+
+        function clearSessionStorage() {
+            sessionStorage.removeItem("vipSubSelectArea");
+            sessionStorage.removeItem("vipSubSelectIndustry");
+            sessionStorage.removeItem("vipSubSelectTime");
+            sessionStorage.removeItem("vipSub_read");
+            sessionStorage.removeItem("historypushDataCache");
+            sessionStorage.To_introducePage = 2;
+        }
+
+        /******* 获取url参数(正则)********/
+        function getParam(name) {
+            var search = document.location.search;
+            // alert(search);
+            var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g");
+            var matcher = pattern.exec(search);
+            var items = null;
+            if (null != matcher) {
+                try {
+                    items = decodeURIComponent(decodeURIComponent(matcher[1]));
+                } catch (e) {
+                    try {
+                        items = decodeURIComponent(matcher[1]);
+                    } catch (e) {
+                        items = matcher[1];
+                    }
+                }
+            }
+            return items;
+        };
+
+    </script>
+</div>
+</body>
+
+</html>

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません