wangxiaogang пре 3 година
родитељ
комит
5637f80b74
100 измењених фајлова са 4185 додато и 1125 уклоњено
  1. 5 3
      src/config.json
  2. 96 0
      src/jfw/front/follow.go
  3. 2 0
      src/jfw/front/frontRouter.go
  4. 0 1
      src/jfw/front/supsearch.go
  5. 4 25
      src/jfw/front/swordfish.go
  6. 2 8
      src/jfw/modules/app/src/app/front/swordfish.go
  7. 0 1
      src/jfw/modules/app/src/web/staticres/jyapp/css/searchindex.css
  8. 10 6
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  9. 2 1
      src/jfw/modules/app/src/web/staticres/jyapp/js/searchindex.js
  10. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/js/track/track.js
  11. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/js/track/track.umd.min.js
  12. 172 0
      src/jfw/modules/app/src/web/staticres/jyapp/share/css/b-share.css
  13. 606 0
      src/jfw/modules/app/src/web/staticres/jyapp/share/css/index.css
  14. 539 0
      src/jfw/modules/app/src/web/staticres/jyapp/share/font/demo.css
  15. 207 0
      src/jfw/modules/app/src/web/staticres/jyapp/share/font/demo_index.html
  16. 17 0
      src/jfw/modules/app/src/web/staticres/jyapp/share/font/iconfont.css
  17. 0 0
      src/jfw/modules/app/src/web/staticres/jyapp/share/font/iconfont.js
  18. 16 0
      src/jfw/modules/app/src/web/staticres/jyapp/share/font/iconfont.json
  19. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/font/iconfont.ttf
  20. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/blue-bj.png
  21. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/bottom.png
  22. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/chaoji.png
  23. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/fenxiang.png
  24. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/friend.png
  25. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/gift.png
  26. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/left.png
  27. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/one.png
  28. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/right.png
  29. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/top.png
  30. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/two.png
  31. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/wechat.png
  32. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/share/img/wxcj.png
  33. 3 0
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/vip_order_detail.js
  34. 7 7
      src/jfw/modules/app/src/web/templates/big-member/page_analysis_result.html
  35. 3 3
      src/jfw/modules/app/src/web/templates/big-member/page_ent_portrait.html
  36. 6 6
      src/jfw/modules/app/src/web/templates/big-member/page_report_detail_month.html
  37. 6 6
      src/jfw/modules/app/src/web/templates/big-member/page_report_detail_week.html
  38. 6 6
      src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html
  39. 7 7
      src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info.html
  40. 7 7
      src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_partner.html
  41. 6 6
      src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_push.html
  42. 7 7
      src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_solution.html
  43. 7 7
      src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_strud.html
  44. 2 2
      src/jfw/modules/app/src/web/templates/frontRouter/messageCenter/sess/index.html
  45. 267 0
      src/jfw/modules/app/src/web/templates/frontRouter/share/sess/b-share.html
  46. 424 0
      src/jfw/modules/app/src/web/templates/frontRouter/share/sess/index.html
  47. 2 2
      src/jfw/modules/app/src/web/templates/me/notice.html
  48. 16 3
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_introduce.html
  49. 49 2
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  50. 22 12
      src/jfw/modules/app/src/web/templates/weixin/search/tabSearch.html
  51. 1 1
      src/jfw/modules/app/src/web/templates/weixin/sharePic.html
  52. 1 1
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  53. 4 4
      src/jfw/modules/bigmember/src/config.json
  54. 83 0
      src/jfw/modules/common/src/qfw/util/jy/shareFission.go
  55. 10 0
      src/jfw/modules/publicapply/src/config/config.go
  56. 2 1
      src/jfw/modules/publicapply/src/filter/sessionfilter.go
  57. 1 0
      src/jfw/modules/publicapply/src/main.go
  58. 7 0
      src/jfw/modules/publicapply/src/shareFission.json
  59. 88 0
      src/jfw/modules/publicapply/src/shareFission/entity/random.go
  60. 11 0
      src/jfw/modules/publicapply/src/shareFission/init.go
  61. 189 0
      src/jfw/modules/publicapply/src/shareFission/service/service.go
  62. 4 3
      src/jfw/modules/subscribepay/src/config.json
  63. 1 0
      src/jfw/modules/subscribepay/src/config/config.go
  64. 174 0
      src/jfw/modules/subscribepay/src/entity/shareFission.go
  65. 0 8
      src/jfw/modules/subscribepay/src/service/aiForecastPack.go
  66. 17 1
      src/jfw/modules/subscribepay/src/service/userAccountInfo.go
  67. 22 0
      src/jfw/modules/subscribepay/src/util/public.go
  68. 1 1
      src/jfw/modules/weixin/src/config.json
  69. 2 1
      src/jfw/modules/weixin/src/wx/wx.go
  70. 1 1
      src/jfw/public/limitSearchText.go
  71. 2 1
      src/phoneFilter.json
  72. BIN
      src/web/staticres/big-member/image/customer/customer-wx-new.png
  73. 10 12
      src/web/staticres/big-member/js/public_big.js
  74. 1 4
      src/web/staticres/common-module/buyer-search/buyer-search-template.prefixer.css
  75. 64 170
      src/web/staticres/common-module/ent-search/ent-search-template.js
  76. 25 4
      src/web/staticres/common-module/messageCenter/js/detail.js
  77. 42 27
      src/web/staticres/common-module/messageCenter/js/index.js
  78. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/btnBottom.png
  79. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_01.jpg
  80. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_02.jpg
  81. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_03.jpg
  82. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_04.jpg
  83. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_05.jpg
  84. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_06.jpg
  85. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/cut_07.jpg
  86. BIN
      src/web/staticres/common-module/vipsubscribe/image/info/tagBottom.png
  87. 874 753
      src/web/staticres/css/subscribe_new.css
  88. 22 3
      src/web/staticres/frontRouter/pc/mesgCenter/js/index-pc.js
  89. BIN
      src/web/staticres/images/subscribe/1-bg.jpg
  90. BIN
      src/web/staticres/images/subscribe/2-bg.jpg
  91. BIN
      src/web/staticres/images/subscribe/QR_code.png
  92. BIN
      src/web/staticres/images/subscribe/arrow-topdown.png
  93. BIN
      src/web/staticres/images/subscribe/banner-new-del.png
  94. BIN
      src/web/staticres/images/subscribe/banner-new.png
  95. BIN
      src/web/staticres/images/subscribe/banner.jpg
  96. BIN
      src/web/staticres/images/subscribe/banner.png
  97. BIN
      src/web/staticres/images/subscribe/del-banner.png
  98. BIN
      src/web/staticres/images/subscribe/free.png
  99. BIN
      src/web/staticres/images/subscribe/iner-left-diqu.png
  100. BIN
      src/web/staticres/images/subscribe/iner-left-diqu1.png

+ 5 - 3
src/config.json

@@ -54,7 +54,8 @@
 		"bidedoc":"/weixin/frontPage/bidedoc/sess/index",
 		"memberreport_experience":"/bigmember/report/openpushmsg?t=wx_experience&start=%s&end=%s&pushcount=%s&advertcode=%s",
 		"chanpartner":"/weixin/frontPage/partner/sess/partner?p=wxmeun",
-		"datareport":"/datareport/page/order/detail/%s?advertcode=%s"
+		"datareport":"/datareport/page/order/detail/%s?advertcode=%s",
+		"vipFree7":"/weixin/frontPage/share/sess/index?p=wxmeun"
     },
     "jy_activeset": {
         "activitystartcode": "3201000000",
@@ -290,7 +291,7 @@
 	"termValidity":3600,
     "uploadPath": "./web/staticres/upload/res/",
     "redisSessionLockSize":20,
-    "accountMergeOnline":"2055-03-30 00:00:00",
+    "accountMergeOnline":"2015-03-30 00:00:00",
     "bidSearchOldUserLimit": 1626105600,
     "firstBindPop":3,
     "maxBindPop":111111111111115,
@@ -306,5 +307,6 @@
     "pcFilterFlag":true,
     "pcSessionFlag":true,
     "sessionTimeout":168,
-    "pcSessionTimeout":168
+    "pcSessionTimeout":168,
+    "shareRedisName":"other"
 }

+ 96 - 0
src/jfw/front/follow.go

@@ -1,20 +1,26 @@
 package front
 
 import (
+	"encoding/base64"
 	"errors"
 	"fmt"
 	"jfw/config"
+	"jfw/jyutil"
 	public "jfw/public"
 	"jfw/wx"
 	"log"
 	. "mongodb"
+	"net/url"
 	"qfw/util"
 	"qfw/util/elastic"
+	"qfw/util/jy"
 	"qfw/util/redis"
 	rpc "qfw/util/rpc"
 	"strings"
 	"time"
 
+	"github.com/SKatiyar/qr"
+
 	"github.com/go-xweb/xweb"
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson/primitive"
@@ -38,6 +44,8 @@ type Follow struct {
 	shareFW        xweb.Mapper `xweb:"/follow/shareFW/([^.]*)"`
 	pcAllNotice    xweb.Mapper `xweb:"/front/pcAllNotice"`
 	pcEntAllNotice xweb.Mapper `xweb:"/front/pcEntAllNotice"`
+	//分享拉新领取超级订阅
+	followGift xweb.Mapper `xweb:"/front/followGift/(.*)"`
 }
 
 var followLimit int
@@ -964,3 +972,91 @@ func delRelRedis(userid interface{}, relationinfo interface{}) {
 		redis.Del("push", "push_"+uid+"_"+sid)
 	}
 }
+
+//拉新获取超级订阅
+func (this *Follow) FollowGift(shareid string) error {
+	defer util.Catch()
+	client := this.Header("User-Agent")
+	bm := mobileReg.MatchString(client)
+	checkIsSubscribeFlag := true
+	openid, _ := this.Session().Get("s_m_openid").(string)
+	nickname, _ := this.Session().Get("s_nickname").(string)
+	redisName := util.ObjToString(config.Sysconfig["shareRedisName"])
+	headImg := ""
+	qrstr := ""
+	infos := ""
+	if !strings.Contains(shareid, "shareId_") {
+		rdata, ok := mongodb.FindOneByField("user", map[string]interface{}{"s_m_openid": shareid, "i_appid": 2}, `{"_id":1}`)
+		if rdata != nil && ok && len(*rdata) > 0 {
+			uid := BsonIdToSId((*rdata)["_id"])
+			infos = redis.GetStr(redisName, fmt.Sprintf("SF_%s", uid))
+		}
+	}
+	if shareUserid := redis.GetStr(redisName, shareid); shareUserid == "" && infos == "" {
+		return this.Render("/_error.html")
+	} else {
+		if infos == "" {
+			infos = redis.GetStr(redisName, fmt.Sprintf("SF_%s", shareUserid))
+		}
+		if infos != "" {
+			nickname = strings.Split(infos, "#@#@")[1]
+			headImg = strings.Split(infos, "#@#@")[2]
+			link := fmt.Sprintf("%s/front/followGift/%s", util.ObjToString(config.Sysconfig["webdomain"]), strings.Split(infos, "#@#@")[3])
+			r, _ := qr.Encode(link, qr.M)
+			pngdat := r.PNG()
+			qrstr = base64.StdEncoding.EncodeToString(pngdat)
+			shareid = strings.Split(infos, "#@#@")[3]
+			if jy.IsPhone(nickname) {
+				nickname = string(nickname[0:3]) + "****" + string(nickname[len(nickname)-4:])
+			}
+		}
+	}
+	if bm {
+		if openid == "" {
+			if this.Session().Get("s_m_openid") == nil {
+				if this.GetString("state") == "wx" {
+					//微信跳回来的
+					code := this.GetString("code")
+					if code != "" {
+						openid = jyutil.Getopenid(code)
+						log.Println("qwe:", openid)
+						if openid != "" {
+							isSubscribe := true
+							if !checkIsSubscribeFlag {
+								checkIsSubscribeFlag = true
+								isSubscribe = CheckUserIsSubscribe(openid)
+							}
+							if isSubscribe {
+								FindUserAndCreateSess(openid, this.Session(), "wx", false)
+							}
+						}
+					}
+				} else {
+					if public.CheckWxBrowser(this.Request) {
+						//所有参数都不再使用,跳到微信验证用户
+						return this.Redirect(fmt.Sprintf(config.Wxoauth, url.QueryEscape(this.Site()+this.Url()), "wx"), 302)
+					}
+				}
+			}
+		}
+		this.T["shareid"] = shareid
+		this.T["share_nickname"] = nickname
+		this.T["share_headImg"] = headImg
+		this.T["openid"] = se.EncodeString(openid)
+		this.T["share_qr"] = qrstr
+		mynickname, _ := this.Session().Get("s_nickname").(string)
+		myavatar, _ := this.Session().Get("s_avatar").(string)
+		this.T["nickname"] = mynickname
+		this.T["avatar"] = myavatar
+		this.T["signature"] = wx.SignJSSDK(this.Site() + this.Url())
+		return this.Render("/frontRouter/wx/share/sess/b-share.html", &this.T)
+	} else {
+		this.T["shareid"] = shareid
+		this.T["share_nickname"] = nickname
+		this.T["share_headImg"] = headImg
+		this.T["signature"] = wx.SignJSSDK(this.Site() + this.Url())
+		this.T["isWeixin"] = public.CheckWxBrowser(this.Request)
+		this.T["share_qr"] = qrstr
+		return this.Render("/frontRouter/pc/share/sess/share-f.html", &this.T)
+	}
+}

+ 2 - 0
src/jfw/front/frontRouter.go

@@ -4,6 +4,7 @@ import (
 	"fmt"
 	"jfw/config"
 	"jfw/public"
+	"jfw/wx"
 	"log"
 	"qfw/util/jy"
 	"regexp"
@@ -65,6 +66,7 @@ func (this *CommonRouter) WxCommonPage(folder, loginSign, htmlPage string) error
 			return this.Redirect("/swordfish/about")
 		}
 	}
+	this.T["signature"] = wx.SignJSSDK(this.Site() + this.Url())
 	return this.Render(fmt.Sprintf("/frontRouter/wx/%s/%s/%s.html", folder, loginSign, htmlPage))
 }
 

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

@@ -420,7 +420,6 @@ func (p *Pcsearch) PcSearchIndex() error {
 		}
 	}
 	p.T["login"] = p.Session().Get("user")
-	log.Println("xxxx", count, totalPage)
 	p.T["count"] = count
 	p.T["totalPage"] = totalPage
 	p.T["keywords"] = b_word

+ 4 - 25
src/jfw/front/swordfish.go

@@ -160,27 +160,14 @@ func (m *Front) PcAjaxReq() {
 		} else if reqType == "bidSearch" {
 			//全文检索限制
 			if searchLimit {
-				limitFlag = public.Lst.Flag
+				//limitFlag = public.Lst.Flag
 				isLimit = public.Lst.IsLimited(m.Request, m.ResponseWriter, m.Session(), isPayedUser)
 				if isLimit == 1 { //没有被限制
 					defer public.Lst.Limit()
 				}
 			}
 			if isLimit == 1 {
-				if limitFlag {
-					if start == 0 {
-						limit_count := public.Lst.TotalPage * bidsearch.SearchPageSize_PC
-						count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, 0, limit_count, true, queryItems, field, notkey, isPayedUser)
-						if totalPage > int64(public.Lst.TotalPage) {
-							totalPage = int64(public.Lst.TotalPage)
-						}
-						if count > int64(limit_count) {
-							count = int64(limit_count)
-						}
-					}
-				} else {
-					count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, start, bidsearch.SearchPageSize_PC, true, queryItems, field, notkey, isPayedUser)
-				}
+				count, totalPage, list = bidsearch.GetPcBidSearchData(s_word, area, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, start, bidsearch.SearchPageSize_PC, true, queryItems, field, notkey, isPayedUser)
 				listSize := 0
 				if list != nil {
 					listSize = len(*list)
@@ -480,20 +467,14 @@ func (m *Front) WxsearchlistPaging() {
 			//全文检索限制
 			searchLimit := public.IsSearchLimit(queryItems)
 			if searchLimit {
-				limitFlag = public.Lst.Flag
+				//limitFlag = public.Lst.Flag
 				isLimit = public.Lst.IsLimited(m.Request, m.ResponseWriter, m.Session(), isPayedUser)
 				if isLimit == 1 { //没有被限制
 					defer public.Lst.Limit()
 				}
 			}
 			if isLimit == 1 {
-				if limitFlag {
-					if pageNum == 1 {
-						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_WX, queryItems, filed, notkey)
-					}
-				} else {
-					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_WX, queryItems, filed, notkey)
-				}
+				list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, "", buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_WX, queryItems, filed, notkey)
 				listSize := 0
 				if list != nil {
 					listSize = len(*list)
@@ -568,8 +549,6 @@ func (m *Front) WxsearchlistPaging() {
 				hasNextPage = false
 			} else if !isPayedUser && pageNum >= bidsearch.SearchMaxPageNum_WX {
 				hasNextPage = false
-			} else if limitFlag {
-				hasNextPage = false
 			}
 		}
 		if one != nil && len(*one) > 0 {

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

@@ -291,7 +291,7 @@ func (m *Front) WxsearchlistPaging() {
 			//全文检索限制
 			searchLimit := public.IsSearchLimit(queryItems)
 			if searchLimit {
-				limitFlag = public.Lst.Flag
+				//limitFlag = public.Lst.Flag
 				isLimit = public.Lst.IsLimited(m.Request, m.ResponseWriter, m.Session(), isPayedUser)
 				if isLimit == 1 { //没有被限制
 					defer public.Lst.Limit()
@@ -304,13 +304,7 @@ func (m *Front) WxsearchlistPaging() {
 			}
 			if isLimit == 1 {
 				s_word := ""
-				if limitFlag {
-					if pageNum == 1 {
-						list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, public.Lst.TotalPage*bidsearch.SearchPageSize_APP, queryItems, feld, notkey)
-					}
-				} else {
-					list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_APP, queryItems, feld, notkey)
-				}
+				list, b_word, a_word, s_word = bidsearch.GetWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, winner, buyerclass, hasBuyerTel, hasWinnerTel, pageNum, bidsearch.SearchPageSize_APP, queryItems, feld, notkey)
 				listSize := 0
 				if list != nil {
 					listSize = len(*list)

+ 0 - 1
src/jfw/modules/app/src/web/staticres/jyapp/css/searchindex.css

@@ -60,7 +60,6 @@
     overflow: hidden;
 }
 .sprite_nothing {
-    background-position: -6.28rem -0px;
     background-repeat: no-repeat;
     height: 2.13rem;
     width: 2.00rem;

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

@@ -635,15 +635,19 @@ $(function () {
         if (typeof (backUrl) == "string") {
           window.location.href = backUrl;
         } else if (typeof (backUrl) == "number") {
-          if (!mySysIsIos() && JyObj.getVersion() >= "2.9.9") {
-            JyObj.backUrl("")
-          }
+          try {
+            if (!mySysIsIos() && JyObj.getVersion() >= "2.9.9") {
+              JyObj.backUrl("")
+            }
+          } catch (error) {}
           window.history.go(backUrl);
         }
       } else {
-        if (!mySysIsIos() && JyObj.getVersion() >= "2.9.9") {
-          JyObj.backUrl("")
-        }
+        try {
+          if (!mySysIsIos() && JyObj.getVersion() >= "2.9.9") {
+            JyObj.backUrl("")
+          }
+        } catch (error) {}
         window.history.back();
       }
     }

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

@@ -1,6 +1,7 @@
 var nowClientHeight = document.documentElement.clientHeight || document.body.clientHeight
 var vSwitch = 'f'
 var newUserType = false
+var powerRoot = {}
 
 // 判断用户权限版本
 function getUserType() {
@@ -34,6 +35,7 @@ function getUserNewType() {
         url: '/bigmember/use/isAdd',
         type: 'POST',
         success: function (res) {
+            powerRoot = res.data
             newUserType = res.data.isUpgrade
         }
     })
@@ -1441,7 +1443,6 @@ var SuperSearch = {
         }
     },
     formSubmit: function (nw) {    //提交表单,获取数据
-      debugger
         $(".loading_").show();
         if (!SuperSearch.beforeSubmit()) {
             $(".loading_").hide();

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/js/track/track.js

@@ -446,7 +446,7 @@ class JyTrackUtils {
     } else {
       console.log('未获取jQuery')
       if (typeof loadjs === 'function') {
-        loadjs('https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js', {
+        loadjs('https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js', {
           async: false,
           success: cb
         })

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/jfw/modules/app/src/web/staticres/jyapp/js/track/track.umd.min.js


+ 172 - 0
src/jfw/modules/app/src/web/staticres/jyapp/share/css/b-share.css

@@ -0,0 +1,172 @@
+.center {
+  background: linear-gradient(141deg, #d1f8ff 15%, #ffffff 100%);
+  border-radius: 0rem 0rem 0rem 0rem;
+  opacity: 1;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+}
+.center-top {
+  width: 6.1rem;
+  background: linear-gradient(180deg, #ffffff 0%, #e8fbfd 100%);
+  box-shadow: 0rem 0.3rem 0.8rem 0rem rgba(51, 182, 202, 0.30000001192092896);
+  border-radius: 0.3rem 0.3rem 0.3rem 0.3rem;
+  opacity: 1;
+  margin-top: 1.6rem;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  align-items: center;
+  position: relative;
+}
+.center-top img {
+  width: 64px;
+  height: 64px;
+  opacity: 1;
+  border: 0px solid rgba(0, 0, 0, 0.05000000074505806);
+  margin-top: -0.6rem;
+  border-radius: 50%;
+  background-color: aqua;
+}
+.name {
+  display: flex;
+  justify-content: space-around;
+  width: 3rem;
+  height: 0.48rem;
+  font-size: 0.28rem;
+  font-family: Microsoft YaHei-Regular, Microsoft YaHei;
+  font-weight: 400;
+  line-height: 0.48rem;
+  margin-top: 0.8rem;
+}
+.script {
+  width: 4.72rem;
+  height: 1.28rem;
+  font-size: 0.48rem;
+  font-family: PingFang SC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #161826;
+  line-height: 0.64rem;
+  letter-spacing: 0.04rem;
+  text-align: center;
+  margin-bottom: 0.8rem;
+  margin-top: 0.64rem;
+}
+.zg {
+  width: 4.86rem;
+  height: 0.76rem;
+  background: rgba(0, 0, 0, 0.7200000286102295);
+  border-radius: 8px 8px 8px 8px;
+  opacity: 1;
+  z-index: 10;
+  text-align: center;
+  position: absolute;
+  top: 2.3rem;
+  display: none;
+}
+.zg p {
+  font-size: 0.3rem;
+  font-family: PingFang SC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #ffffff;
+  line-height: 0.76rem;
+}
+.btn-Lq {
+  width: 5.1rem;
+  height: 0.96rem;
+  background: linear-gradient(135deg, #4cccde 0%, #25a3ff 100%);
+  box-shadow: 0px 0.16rem 0.32rem 0.02rem #2accff;
+  border-radius: 0.6rem 0.6rem 0.6rem 0.6rem;
+  opacity: 1;
+  margin-bottom: -0.48rem;
+}
+.center-zj {
+  width: 6.1rem;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  margin-top: 1.76rem;
+}
+.list {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+}
+.list h4 {
+  width: 3.36rem;
+  height: 0.68rem;
+  font-size: 0.48rem;
+  font-family: PingFang SC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #1a1a2a;
+  line-height: 0.56rem;
+  z-index: 1;
+}
+.lt {
+  display: block;
+  width: 4.12rem;
+  height: 0.26rem;
+  background: linear-gradient(135deg, #4cccde 0%, #25a3ff 100%);
+  border-radius: 0.6rem 0.6rem 0.6rem 0.6rem;
+  opacity: 1;
+  margin-top: -0.3rem;
+}
+.picture {
+  margin-top: 0.48rem;
+}
+/* .picture img {
+  width: 5.12rem;
+  height: 3.9rem;
+} */
+.lb {
+  margin-top: 0.48rem;
+}
+.lbs li {
+  font-size: 0.32rem;
+  font-family: Microsoft YaHei-Regular, Microsoft YaHei;
+  font-weight: 400;
+  color: #000000;
+  line-height: 0.48rem;
+  margin-top: 0.4rem;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.lbs li span {
+  width: 0.4rem;
+  height: 0.4rem;
+  display: block;
+  margin: 0 auto;
+  text-align: center;
+}
+.lbs li img {
+  width: 0.4rem;
+  height: 0.4rem;
+}
+.lbs li p {
+  margin-left: 0.2rem;
+  width: 5.26rem;
+  height: 0.48rem;
+  font-size: 0.32rem;
+  font-family: Microsoft YaHei-Regular, Microsoft YaHei;
+  font-weight: 400;
+  color: #000000;
+  line-height: 0.48rem;
+}
+.center-bottom {
+  width: 6.1rem;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  margin-top: 0.96rem;
+  margin-bottom: 0.76rem;
+}
+.gift {
+  position: absolute;
+  top: 300px;
+  right: 18px;
+}

+ 606 - 0
src/jfw/modules/app/src/web/staticres/jyapp/share/css/index.css

@@ -0,0 +1,606 @@
+/*
+* Prefixed by https://autoprefixer.github.io
+* PostCSS: v8.3.6,
+* Autoprefixer: v10.3.1
+* Browsers: > 0.1%
+*/
+
+.header-right {
+  background: url(/jyapp/share/img/fenxiang.png);
+}
+.center {
+  flex-shrink: 0;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+  flex-direction: column;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  background: linear-gradient(141deg, #d1f8ff 15%, #ffffff 100%);
+  padding-bottom: 1rem;
+  box-sizing: border-box;
+}
+.center-top {
+  min-height: 2.64rem;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+  flex-direction: column;
+  -webkit-box-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  margin-top: 0.8rem;
+}
+.center-top h3 {
+  font-size: 0.96rem;
+  font-family: PingFang SC-Bold, PingFang SC;
+  font-weight: bold;
+  color: #161826;
+  line-height: 1.12rem;
+  letter-spacing: 0.14rem;
+}
+.center-top h5 {
+  font-size: 0.48rem;
+  font-family: PingFang SC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #161826;
+  line-height: 0.64rem;
+  letter-spacing: 0.04rem;
+}
+.center-top div {
+  width: 5.1rem;
+  height: 0.64rem;
+  background: linear-gradient(135deg, #4cccde 0%, #25a3ff 100%);
+  border-radius: 0.6rem 0.6rem 0.6rem 0.6rem;
+  opacity: 1;
+  text-align: center;
+  line-height: 0.64rem;
+  margin-top: 0.24rem;
+}
+.center-top div p {
+  font-size: 0.32rem;
+  font-family: PingFang SC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #ffffff;
+}
+.center-zj {
+  flex-shrink: 0;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+  flex-direction: column;
+  -webkit-box-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  margin-top: 0.64rem;
+}
+.center-zj h6 {
+  font-size: 0.32rem;
+  font-family: PingFang SC-Bold, PingFang SC;
+  font-weight: bold;
+  color: #161826;
+  line-height: 0.64rem;
+  letter-spacing: 0.16rem;
+}
+.xp {
+  width: 6.54rem;
+  height: 0.96rem;
+  font-size: 0.24rem;
+  font-family: PingFang SC-Medium, PingFang SC;
+  font-weight: 500;
+  color: rgba(94, 94, 100, 1);
+  line-height: 0.48rem;
+  margin-top: 0.24rem;
+}
+.center-zj p {
+  text-align: center;
+}
+.picture {
+  position: relative;
+  margin-top: 0.64rem;
+}
+.left-picture {
+  width: 1.08rem;
+  height: auto;
+  position: absolute;
+  left: -0.49rem;
+  top: 3.4rem;
+}
+.super-picture {
+  width: 6rem;
+}
+@-webkit-keyframes anT {
+  20% {
+    -webkit-transform: translate3d(5%, 5%, 0);
+    transform: translate3d(5%, 5%, 0);
+  }
+  40% {
+    -webkit-transform: translate3d(5%, 8%, 0) scale(0.88);
+    transform: translate3d(5%, 8%, 0) scale(0.88);
+  }
+  60% {
+    -webkit-transform: translate3d(8%, 8%, 0);
+    transform: translate3d(8%, 8%, 0);
+  }
+  80% {
+    -webkit-transform: translate3d(8%, 5%, 0) scale(0.96);
+    transform: translate3d(8%, 5%, 0) scale(0.96);
+  }
+}
+@keyframes anT {
+  20% {
+    -webkit-transform: translate3d(5%, 5%, 0);
+    transform: translate3d(5%, 5%, 0);
+  }
+  40% {
+    -webkit-transform: translate3d(5%, 8%, 0) scale(0.88);
+    transform: translate3d(5%, 8%, 0) scale(0.88);
+  }
+  60% {
+    -webkit-transform: translate3d(8%, 8%, 0);
+    transform: translate3d(8%, 8%, 0);
+  }
+  80% {
+    -webkit-transform: translate3d(8%, 5%, 0) scale(0.96);
+    transform: translate3d(8%, 5%, 0) scale(0.96);
+  }
+}
+.an-shadow {
+  -webkit-animation-duration: 5s;
+  animation-duration: 5s;
+  -webkit-animation-name: anT;
+  animation-name: anT;
+  -webkit-animation-direction: alternate;
+  animation-direction: alternate;
+  -webkit-animation-iteration-count: infinite;
+  animation-iteration-count: infinite;
+}
+.right-picture {
+  width: 1.77rem;
+  height: auto;
+  position: absolute;
+  left: 4.8rem;
+  top: 0.59rem;
+}
+.center-zj button {
+  width: 3.6rem;
+  background: linear-gradient(135deg, #4cccde 0%, #25a3ff 100%);
+  box-shadow: 0px 0.16rem 0.32rem 0.02rem #2accff;
+  border-radius: 0.6rem 0.6rem 0.6rem 0.6rem;
+  opacity: 1;
+  text-align: center;
+  line-height: 0.96rem;
+  font-size: 0.36rem;
+  font-family: PingFang SC-Bold, PingFang SC;
+  font-weight: bold;
+  color: #ffffff;
+  margin-top: 0.64rem;
+}
+.tc {
+  z-index: 9;
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  display: none;
+  background: rgba(0, 0, 0, 0.5);
+}
+.bs {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 7.5rem;
+  height: 2.56rem;
+  background: #ffffff;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-pack: space-evenly;
+  -webkit-justify-content: space-evenly;
+  justify-content: space-evenly;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+}
+.bs div {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+  flex-direction: column;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  -webkit-box-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+}
+.bs div img {
+  width: 1.08rem;
+  height: 1.08rem;
+  border-radius: 50%;
+}
+.bs div span {
+  font-size: 0.28rem;
+  font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+  font-weight: 400;
+  color: #444444;
+  line-height: 0.32rem;
+  margin-top: 0.2rem;
+}
+@-webkit-keyframes fadeInUp {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+@keyframes fadeInUp {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+.fadeInUp {
+  -webkit-animation-name: fadeInUp;
+  animation-name: fadeInUp;
+  -webkit-animation-duration: 1.2s;
+  animation-duration: 1.2s;
+}
+@-webkit-keyframes fadeOutDown {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+}
+@keyframes fadeOutDown {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+}
+
+.fadeOutDown {
+  -webkit-animation-name: fadeOutDown;
+  animation-name: fadeOutDown;
+  -webkit-animation-duration: 1.2s;
+  animation-duration: 1.2s;
+}
+.master-box {
+  position: absolute;
+  bottom: 1.7rem;
+  left: 0;
+  z-index: 15;
+  width: 100%;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+  flex-direction: column;
+  -webkit-box-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+}
+.master {
+  text-align: center;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+  flex-direction: column;
+  -webkit-box-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+}
+.tc-center {
+  width: 6rem;
+  height: 8rem;
+  border-radius: 0.32rem 0.32rem 0px 0px;
+}
+.master-b {
+  width: 6rem;
+  height: 2.24rem;
+  background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#e8fbfd));
+  background: linear-gradient(180deg, #ffffff 0%, #e8fbfd 100%);
+  border-radius: 0px 0px 0.32rem 0.32rem;
+  opacity: 1;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-pack: space-evenly;
+  -webkit-justify-content: space-evenly;
+  justify-content: space-evenly;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  padding-bottom: 0.6rem;
+  margin-top: -0.28rem;
+}
+.tx {
+  width: 0.96rem;
+  height: 0.96rem;
+  border-radius: 50%;
+}
+.name {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+  -webkit-box-align: start;
+  -webkit-align-items: flex-start;
+  align-items: flex-start;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+  flex-direction: column;
+  width: 2.3rem;
+}
+.name p {
+  font-size: 0.28rem;
+  font-family: Microsoft YaHei-Regular, Microsoft YaHei;
+  font-weight: 400;
+  color: #1d1d1d;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  line-height: 0.38rem;
+  width: 80%
+}
+.name span {
+  font-size: 0.26rem;
+  font-family: PingFang SC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #5e5e64;
+  line-height: 0.3rem;
+  margin-top: 0.12rem;
+}
+.wx {
+  width: 1.28rem;
+  height: 1.28rem;
+  background: #ffffff;
+  border-radius: 0.08rem;
+  border: 1px solid rgba(0, 0, 0, 0.10000000149011612);
+  overflow: hidden;
+}
+.master-c {
+  background: url(/jyapp/share/img/blue-bj.png) no-repeat center 0;
+  width: 4.6rem;
+  height: 0.48rem;
+  font-size: 0.24rem;
+  font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+  font-weight: 400;
+  color: #ffffff;
+  line-height: 0.48rem;
+  background-size: 4.6rem 0.48rem;
+  position: relative;
+  top: -0.5rem;
+}
+.center-bottom {
+  min-height: 3.52rem;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+  flex-direction: column;
+  -webkit-box-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  margin-top: 1.28rem;
+  margin-bottom: 0.74rem;
+  width: 6rem;
+  background: #ffffff;
+  box-shadow: 0rem 0.32rem 0.8rem 0.02rem
+  rgba(198, 223, 227, 0.30000001192092896);
+  border-radius: 0.32rem;
+  opacity: 1;
+}
+.bottom-top {
+  margin-top: 0.66rem;
+  width: 5.2rem;
+  font-size: 0.72rem;
+  font-family: PingFang SC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #05a6f3;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+  flex-direction: column;
+  -webkit-box-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+}
+.bottom-top h3 {
+  font-size: 0.48rem;
+  font-family: PingFang SC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #1a1a2a;
+  line-height: 0.56rem;
+  z-index: 1;
+}
+.bottom-top div {
+  width: 3.28rem;
+  height: 0.26rem;
+  background: linear-gradient(135deg, #4cccde 0%, #25a3ff 100%);
+  border-radius: 0.6rem;
+  opacity: 1;
+  display: block;
+  margin-top: -0.2rem;
+}
+.message {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  width: 6rem;
+  height: 1.6rem;
+  background: #ffffff;
+  box-shadow: 0px -0.02rem 0px 0.02rem rgba(0, 0, 0, 0.05000000074505806);
+  border-radius: 0px 0px 0px 0px;
+  opacity: 1;
+}
+.message img {
+  width: 0.96rem;
+  height: 0.96rem;
+  opacity: 1;
+  border: 0.02rem solid rgba(0, 0, 0, 0.05000000074505806);
+  border-radius: 50%;
+}
+.message div {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+  flex-direction: column;
+  margin-left: 0.32rem;
+}
+.message div p {
+  font-size: 0.32rem;
+  font-family: PingFang SC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #161826;
+  line-height: 0.38rem;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  line-height: 0.38rem;
+  width: 80%;
+}
+.message div span {
+  font-size: 0.26rem;
+  font-family: PingFang SC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #9b9ba3;
+  line-height: 0.3rem;
+  margin-top: 0.12rem;
+}
+.zd {
+  font-size: 0.26rem;
+  font-family: PingFang SC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #9b9ba3;
+  line-height: 0.3rem;
+  margin: 0.64rem 0;
+}
+.j-header .header-right.show-share {
+  background-size: cover;
+  background-repeat: no-repeat;
+  width: 0.48rem;
+  height: 0.48rem;
+}
+.super-picture {
+  border-radius: 0.32rem;
+}
+#create-image-box,
+#clone-image {
+  width: 6rem;
+  max-width: 6rem;
+  border-radius: 0.32rem;
+  overflow: hidden;
+  background: transparent;
+}
+#clone-image .master-b {
+  margin-top: 0;
+  border-radius: 0;
+}
+#clone-image .master-c {
+  display: none;
+}
+#clone-image * {
+  border: none;
+}
+#clone-image .super-picture {
+  border-radius: 0;
+}
+#clone-image .master-a {
+  background: transparent;
+}
+#clone-image {
+  width: 5.96rem;
+  max-width: 5.96rem;
+  overflow: hidden;
+}
+.user-info-box {
+  text-align: left;
+}
+.name p {
+  max-width: 2.5rem;
+}
+#creat-img-box {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: -1;
+  opacity: 0;
+}

+ 539 - 0
src/jfw/modules/app/src/web/staticres/jyapp/share/font/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

+ 207 - 0
src/jfw/modules/app/src/web/staticres/jyapp/share/font/demo_index.html

@@ -0,0 +1,207 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8"/>
+  <title>iconfont Demo</title>
+  <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico" type="image/x-icon"/>
+  <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01EYTRnJ297D6vehehJ_!!6000000008020-55-tps-64-64.svg"/>
+  <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
+  <link rel="stylesheet" href="demo.css">
+  <link rel="stylesheet" href="iconfont.css">
+  <script src="iconfont.js"></script>
+  <!-- jQuery -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
+  <!-- 代码高亮 -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
+  <style>
+    .main .logo {
+      margin-top: 0;
+      height: auto;
+    }
+
+    .main .logo a {
+      display: flex;
+      align-items: center;
+    }
+
+    .main .logo .sub-title {
+      margin-left: 0.5em;
+      font-size: 22px;
+      color: #fff;
+      background: linear-gradient(-45deg, #3967FF, #B500FE);
+      -webkit-background-clip: text;
+      -webkit-text-fill-color: transparent;
+    }
+  </style>
+</head>
+<body>
+  <div class="main">
+    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
+      <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
+      
+    </a></h1>
+    <div class="nav-tabs">
+      <ul id="tabs" class="dib-box">
+        <li class="dib active"><span>Unicode</span></li>
+        <li class="dib"><span>Font class</span></li>
+        <li class="dib"><span>Symbol</span></li>
+      </ul>
+      
+    </div>
+    <div class="tab-container">
+      <div class="content unicode" style="display: block;">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe739;</span>
+                <div class="name">分享</div>
+                <div class="code-name">&amp;#xe739;</div>
+              </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="unicode-">Unicode 引用</h2>
+          <hr>
+
+          <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
+          <ul>
+            <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
+            <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
+          </ul>
+          <blockquote>
+            <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
+          </blockquote>
+          <p>Unicode 使用步骤如下:</p>
+          <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
+<pre><code class="language-css"
+>@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.ttf?t=1638941378359') format('truetype');
+}
+</code></pre>
+          <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
+<pre><code class="language-css"
+>.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
+<pre>
+<code class="language-html"
+>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
+</code></pre>
+          <blockquote>
+            <p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+          </blockquote>
+          </div>
+      </div>
+      <div class="content font-class">
+        <ul class="icon_lists dib-box">
+          
+          <li class="dib">
+            <span class="icon iconfont icon-fenxiang"></span>
+            <div class="name">
+              分享
+            </div>
+            <div class="code-name">.icon-fenxiang
+            </div>
+          </li>
+          
+        </ul>
+        <div class="article markdown">
+        <h2 id="font-class-">font-class 引用</h2>
+        <hr>
+
+        <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
+        <p>与 Unicode 使用方式相比,具有如下特点:</p>
+        <ul>
+          <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
+          <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
+        </ul>
+        <p>使用步骤如下:</p>
+        <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
+<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
+</code></pre>
+        <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;
+</code></pre>
+        <blockquote>
+          <p>"
+            iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+        </blockquote>
+      </div>
+      </div>
+      <div class="content symbol">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-fenxiang"></use>
+                </svg>
+                <div class="name">分享</div>
+                <div class="code-name">#icon-fenxiang</div>
+            </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="symbol-">Symbol 引用</h2>
+          <hr>
+
+          <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
+            这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
+          <ul>
+            <li>支持多色图标了,不再受单色限制。</li>
+            <li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
+            <li>兼容性较差,支持 IE9+,及现代浏览器。</li>
+            <li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
+          </ul>
+          <p>使用步骤如下:</p>
+          <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
+<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
+</code></pre>
+          <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
+<pre><code class="language-html">&lt;style&gt;
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+&lt;/style&gt;
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
+  &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
+&lt;/svg&gt;
+</code></pre>
+          </div>
+      </div>
+
+    </div>
+  </div>
+  <script>
+  $(document).ready(function () {
+      $('.tab-container .content:first').show()
+
+      $('#tabs li').click(function (e) {
+        var tabContent = $('.tab-container .content')
+        var index = $(this).index()
+
+        if ($(this).hasClass('active')) {
+          return
+        } else {
+          $('#tabs li').removeClass('active')
+          $(this).addClass('active')
+
+          tabContent.hide().eq(index).fadeIn()
+        }
+      })
+    })
+  </script>
+</body>
+</html>

+ 17 - 0
src/jfw/modules/app/src/web/staticres/jyapp/share/font/iconfont.css

@@ -0,0 +1,17 @@
+@font-face {
+  font-family: "iconfont"; /* Project id  */
+  src: url('iconfont.ttf?t=1638941378359') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-fenxiang:before {
+  content: "\e739";
+}
+

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/jfw/modules/app/src/web/staticres/jyapp/share/font/iconfont.js


+ 16 - 0
src/jfw/modules/app/src/web/staticres/jyapp/share/font/iconfont.json

@@ -0,0 +1,16 @@
+{
+  "id": "",
+  "name": "",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "577337",
+      "name": "分享",
+      "font_class": "fenxiang",
+      "unicode": "e739",
+      "unicode_decimal": 59193
+    }
+  ]
+}

BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/font/iconfont.ttf


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/blue-bj.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/bottom.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/chaoji.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/fenxiang.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/friend.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/gift.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/left.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/one.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/right.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/top.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/two.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/wechat.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/share/img/wxcj.png


+ 3 - 0
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/vip_order_detail.js

@@ -420,6 +420,9 @@ $(function () {
                         $(".invoice").css("display", "none");
                         return
                     }
+                }else{
+                	 		$(".invoice").css("display", "none");
+                        return
                 }
                 if (r.data.transaction_id){
                     $(".line_transaction").css("display", "");

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

@@ -8,14 +8,14 @@
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="preload" as="style" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css>
+    <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css>
     <!--E-当前页必定需要预加载的资源-->
 
     <!--S-当前页面的css资源-->
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css>
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css>
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/analysis_result.css?v={{Msg "seo" "version"}}' />
     <!--E-当前页面的css资源-->
 </head>
@@ -146,7 +146,7 @@
                                                 <span>最近中标:${formatterTime(hs.max_jytime)}</span>
                                               </div>
                                             </div>
-                                            
+
                                             <div class="same-history" v-if="hs.buyer_similar_list.doc_count > 0 || hs.buyer_similar_list.total_project > 0" @click="goDetail(hs.key, hs.buyer_similar_list.buyer)">
                                                 <div class="same-title">
                                                   <span>与${hs.buyer_similar_list.buyer}有<em class="highLight">类似项目</em>合作历史</span>
@@ -302,8 +302,8 @@
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js />
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js />
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js />
-<link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js />
-<link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js />
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js />
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js />
 <!--E-必定需要预加载的资源-->
 
 <!--S-有可能需要提前预加载的资源-->
@@ -313,8 +313,8 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
 <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
-<script src=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js></script>
-<script src=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js></script>
 <!--E-当前页面的资源-->
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/echarts_option.js?v={{Msg "seo" "version"}}'></script>

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

@@ -11,7 +11,7 @@
   <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
   <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
   <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-  <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css />
   <link rel="stylesheet"
     href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
   <link rel="stylesheet"
@@ -482,8 +482,8 @@
   <!--S-当前页面的资源-->
   <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js> </script>
   <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js> </script>
-  <script src=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js> </script>
-  <script src=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js> </script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js> </script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js> </script>
   {{include "/big-member/commonjs.html"}}
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/antiRes/js/mainHook.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>

+ 6 - 6
src/jfw/modules/app/src/web/templates/big-member/page_report_detail_month.html

@@ -10,14 +10,14 @@
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="preload" as="style" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
+    <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css />
     <!--E-当前页必定需要预加载的资源-->
 
     <!--S-当前页面的css资源-->
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css />
     <!--E-当前页面的css资源-->
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/report_detail_month.css?v={{Msg "seo" "version"}}' />
@@ -473,16 +473,16 @@
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js />
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js />
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js />
-<link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js />
-<link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js />
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js />
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js />
 <!--E-必定需要预加载的资源-->
 
 <!--S-当前页面的资源-->
 <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
 <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
-<script src=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js></script>
-<script src=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js></script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/echarts_option.js?v={{Msg "seo" "version"}}'></script>
 <!-- mock数据(与后端返回数据结构一致) 联调后可删除 -->

+ 6 - 6
src/jfw/modules/app/src/web/templates/big-member/page_report_detail_week.html

@@ -10,14 +10,14 @@
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="preload" as="style" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
+    <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css />
     <!--E-当前页必定需要预加载的资源-->
 
     <!--S-当前页面的css资源-->
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css />
     <!--E-当前页面的css资源-->
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/report_detail_month.css?v={{Msg "seo" "version"}}' />
     <style>
@@ -324,16 +324,16 @@
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js />
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js />
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js />
-<link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js />
-<link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js />
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js />
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js />
 <!--E-必定需要预加载的资源-->
 
 <!--S-当前页面的资源-->
 <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
 <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
-<script src=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js></script>
-<script src=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js></script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/echarts_option.js?v={{Msg "seo" "version"}}'></script>
 <!-- mock数据(与后端返回数据结构一致) 联调后可删除 -->

+ 6 - 6
src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html

@@ -10,14 +10,14 @@
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="preload" as="style" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
+    <link rel="preload" as="style" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css />
     <!--E-当前页必定需要预加载的资源-->
 
     <!--S-当前页面的css资源-->
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
-    <link rel="stylesheet" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/style.min.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css />
     <!--E-当前页面的css资源-->
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/unit_portrayal.css?v={{Msg "seo" "version"}}' />
@@ -437,16 +437,16 @@
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js />
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js />
 <link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js />
-<link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js />
-<link rel="preload" as="script" href=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js />
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js />
+<link rel="preload" as="script" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js />
 <!--E-必定需要预加载的资源-->
 
 <!--S-当前页面的资源-->
 <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
 <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
 <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
-<script src=//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js></script>
-<script src=//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js></script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/echarts_option.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/chart_options.js?v={{Msg "seo" "version"}}'></script>

+ 7 - 7
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info.html

@@ -7,16 +7,16 @@
   {{include "/big-member/meta.html"}}
 
   <!--S-当前页必定需要预加载的资源-->
-  <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css' />
-  <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css' />
+  <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css' />
+  <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css' />
   <link rel="preload" as="style"
     href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_info_collect.css?v={{Msg "seo" "version"}}' />
   <!--E-当前页必定需要预加载的资源-->
 
 
   <!--S-当前页面的css资源-->
-  <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css' />
-  <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css' />
+  <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css' />
+  <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css' />
   <link rel="stylesheet"
     href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/perfect-info/index.css?v={{Msg "seo" "version"}}' />
   <!--E-当前页面的css资源-->
@@ -162,10 +162,10 @@
     </div>
   </div>
 
-  <script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js> </script> 
+  <script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js> </script>
   <script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js> </script>
-  <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js> </script> 
-  <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js> </script> 
+  <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js> </script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js> </script>
   {{include "/big-member/commonjs.html"}}
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/china-map-data.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>

+ 7 - 7
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_partner.html

@@ -7,16 +7,16 @@
     {{include "/big-member/meta.html"}}
 
     <!--S-当前页必定需要预加载的资源-->
-    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
-    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
     <link rel="preload" as="style"
           href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_info_collect.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页必定需要预加载的资源-->
 
 
     <!--S-当前页面的css资源-->
-    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
-    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
     <link rel="stylesheet"
           href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/perfect-info/index.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页面的css资源-->
@@ -116,7 +116,7 @@
       ajaxParams: {
         "name": "",
         "phone": "",
-        "source": utils.getParam('source'), // 推送消息点进来的 
+        "source": utils.getParam('source'), // 推送消息点进来的
         "company": ""
       }
     },
@@ -218,7 +218,7 @@
         if (data.company) {
           this.setCheckForData('company', 'company', data.company)
         }
-  
+
       },
       setCheckForData (aKey, iKey, cKey, label) {
         this.ajaxParams[aKey] = cKey
@@ -240,7 +240,7 @@
               this.infoCheckMap.phone = this.infoMap.phone === '' ? '手机号码为必填项' : ''
               if (this.infoCheckMap.phone === '' && !this.checkPhone) {
                 this.infoCheckMap.phone = '请输入正确格式的手机号码'
-              } 
+              }
               break
             }
             case 'company': {

+ 6 - 6
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_push.html

@@ -7,16 +7,16 @@
     {{include "/big-member/meta.html"}}
 
     <!--S-当前页必定需要预加载的资源-->
-    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
-    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
     <link rel="preload" as="style"
           href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_info_collect.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页必定需要预加载的资源-->
 
 
     <!--S-当前页面的css资源-->
-    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
-    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
     <link rel="stylesheet"
           href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/perfect-info/index.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页面的css资源-->
@@ -195,14 +195,14 @@
       ajaxParams: {
         "name": "",
         "phone": "",
-        "source": utils.getParam('source'), // 推送消息点进来的 
+        "source": utils.getParam('source'), // 推送消息点进来的
         "mail": "",
         "company": "",
         "position": "",
         "branch": ""
       },
       jobJson: [
-        '总裁', 
+        '总裁',
         '总经理',
         '总监',
         '经理',

+ 7 - 7
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_solution.html

@@ -7,16 +7,16 @@
     {{include "/big-member/meta.html"}}
 
     <!--S-当前页必定需要预加载的资源-->
-    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
-    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
     <link rel="preload" as="style"
           href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_info_collect.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页必定需要预加载的资源-->
 
 
     <!--S-当前页面的css资源-->
-    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
-    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
     <link rel="stylesheet"
           href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/perfect-info/index.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页面的css资源-->
@@ -205,14 +205,14 @@
       ajaxParams: {
         "name": "",
         "phone": "",
-        "source": utils.getParam('source'), // 推送消息点进来的 
+        "source": utils.getParam('source'), // 推送消息点进来的
         "company": "",
         "position": "",
         'platform': 'app',
         "branch": ''
       },
       jobJson: [
-        '总裁', 
+        '总裁',
         '总经理',
         '总监',
         '经理',
@@ -432,7 +432,7 @@
               this.infoCheckMap.phone = this.infoMap.phone === '' ? '手机号码为必填项' : ''
               if (this.infoCheckMap.phone === '' && !this.checkPhone) {
                 this.infoCheckMap.phone = '请输入正确格式的手机号码'
-              } 
+              }
               break
             }
             case 'company': {

+ 7 - 7
src/jfw/modules/app/src/web/templates/frontRouter/bigmember/free/perfect_info_strud.html

@@ -7,16 +7,16 @@
     {{include "/big-member/meta.html"}}
 
     <!--S-当前页必定需要预加载的资源-->
-    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
-    <link rel="preload" as="style" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
     <link rel="preload" as="style"
           href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/page_info_collect.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页必定需要预加载的资源-->
 
 
     <!--S-当前页面的css资源-->
-    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/index.css'/>
-    <link rel="stylesheet" href='//cdn.jsdelivr.net/npm/vant@2.8.2/lib/icon/local.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
     <link rel="stylesheet"
           href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/perfect-info/index.css?v={{Msg "seo" "version"}}'/>
     <!--E-当前页面的css资源-->
@@ -232,14 +232,14 @@
       ajaxParams: {
         "name": "",
         "phone": "",
-        "source": utils.getParam('source'), // 推送消息点进来的 
+        "source": utils.getParam('source'), // 推送消息点进来的
         "mail": "",
         "company": "",
         "position": "",
         "branch": ''
       },
       jobJson: [
-        '总裁', 
+        '总裁',
         '总经理',
         '总监',
         '经理',
@@ -548,7 +548,7 @@
               this.infoCheckMap.phone = this.infoMap.phone === '' ? '手机号码为必填项' : ''
               if (this.infoCheckMap.phone === '' && !this.checkPhone) {
                 this.infoCheckMap.phone = '请输入正确格式的手机号码'
-              } 
+              }
               break
             }
             case 'vercode': {

+ 2 - 2
src/jfw/modules/app/src/web/templates/frontRouter/messageCenter/sess/index.html

@@ -23,7 +23,7 @@
         <div class="j-main" v-show="msgList">
           <div class="head-mesg" v-show="!$.isEmptyObject(lastData)">
             <h5>重要提醒</h5>
-            <div class="h-conts" @click="msgClick(lastData.url,lastData.isRead,lastData.id,lastData.msg_type)">
+            <div class="h-conts" @click="msgClick(lastData.url,lastData.isRead,lastData.id,lastData.msg_type,lastData.msgLogId)">
               <div class="p1">
                 <span class="spa-tit">{lastData.title}</span>
                 <span class="spa flex" @click.stop="toggleClick" v-show="isRow">{isToggle?'收起':'展开'}&nbsp;<van-icon :class="isToggle?'is-icon1':'is-icon2'" name="arrow-down" /></span>
@@ -32,7 +32,7 @@
             </div>
           </div>
           <div class="t-list">
-            <div class="tips" v-for="(ite, index) in msgList" :key="index" @click="msgDetailed(ite.type,ite.count)" v-show="!$.isEmptyObject(ite.newMsg)">
+            <div class="tips" v-for="(ite, index) in msgList" :key="index" @click="msgDetailed(ite.type,ite.count,ite.msgLogId)" v-show="!$.isEmptyObject(ite.newMsg)">
               <div class="imgs">
                 <van-badge :class="{'no-active':ite.count <= 0}" :content="ite.count" max="99">
                   <img :src="'/common-module/messageCenter/image/'+imgSrcs[ite.type - 1].url+'@2x.png'">

+ 267 - 0
src/jfw/modules/app/src/web/templates/frontRouter/share/sess/b-share.html

@@ -0,0 +1,267 @@
+<!DOCTYPE html>
+<html
+  lang="zh-CN"
+  style="font-size: 50px;"
+>
+
+<head>
+  <!--引入公共资源头部-->
+  {{include "/big-member/meta.html"}}
+  <title>分享有礼</title>
+  <!--S-当前页面的css资源-->
+  <link
+    rel="stylesheet"
+    href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css
+  />
+  <link
+    rel="stylesheet"
+    href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'
+  >
+  <link
+    rel="stylesheet"
+    href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/css/b-share.css?v={{Msg "seo" "version"}}'
+  />
+  <style>
+    /* #sideIcon {
+      transition: all 0.2s;
+      bottom: 2rem;
+      right: 0.32rem;
+      position: fixed;
+    } */
+
+    /* #sideIcon.fadeOutRight {
+      transform: translateX(60%);
+      opacity: 0.6;
+    } */
+    .lj{
+      font-size: .36rem;
+      font-family: PingFang SC-Bold, PingFang SC;
+      font-weight: bold;
+      color: #FFFFFF;
+      line-height: .64rem;
+    }
+    .name span{
+    width: 60%;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    line-height: 0.38rem;
+    line-height: 0.48rem;
+    color: rgba(42, 189, 209, 1);
+    }
+  </style>
+</head>
+
+<body>
+  <div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main">
+      <div class="j-container">
+        <div class="center">
+          <div class="center-top">
+            <img
+              src="{{.T.share_headImg}}"
+              alt=""
+            />
+            <div class="name">
+              <p>你的好友</p>
+              <span>{{.T.share_nickname}}</span>
+            </div>
+            <div class="script">
+              <p>邀请你加入剑鱼标讯<br />领7天超级订阅!</p>
+            </div>
+            <div class="zg">
+              <p>恭喜您!已成功领取</p>
+            </div>
+            <button class="btn-Lq lj">立即领取</button>
+          </div>
+          <div class="center-zj">
+            <div class="list">
+              <h4>剑鱼标讯是谁?</h4>
+              <span class="lt"></span>
+            </div>
+            <div class="picture">
+              <img
+                src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/one.png'
+                alt=""
+              >
+            </div>
+            <div class="lb">
+              <ul class="lbs">
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/top.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>国家信息中心大数据战略合作商</p>
+                </li>
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/top.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>实时招投标信息推送,跟标更轻松</p>
+                </li>
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/top.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>找甲方、找合作,多维度挖掘商机</p>
+                </li>
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/top.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>招采企业经营信息查询,规避风险</p>
+                </li>
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/top.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>提供Excel形式招投标大数据,更清晰</p>
+                </li>
+              </ul>
+            </div>
+          </div>
+          <div class="center-bottom">
+            <div class="list">
+              <h4 style="width: 3.84rem;">超级订阅是什么?</h4>
+              <span class="lt"></span>
+            </div>
+            <div class="picture">
+              <img
+                src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/two.png'
+                alt=""
+              >
+            </div>
+            <div class="lb">
+              <ul class="lbs">
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/bottom.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>权威标讯来源</p>
+                </li>
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/bottom.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>全方位标讯覆盖</p>
+                </li>
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/bottom.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>超大容量关键词(300组)</p>
+                </li>
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/bottom.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>海量信息库</p>
+                </li>
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/bottom.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>甲方信息全公开</p>
+                </li>
+                <li>
+                  <span>
+                    <img
+                      src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/bottom.png'
+                      alt=""
+                    />
+                  </span>
+                  <p>附件下载全免费</p>
+                </li>
+              </ul>
+            </div>
+          </div>
+        </div>
+        <!-- <div id="sideIcon">
+          <img
+            src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/gift.png'
+            alt=""
+          >
+        </div> -->
+      </div>
+    </div>
+  </div>
+  <!--S-当前页面的资源-->
+  <script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+  {{include "/big-member/commonjs.html"}}
+  <!-- <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/area-pack/js/buy.js?v={{Msg "seo" "version"}}'></script> -->
+  <!--E-当前页面的资源-->
+  <script>
+    // 点击提示领取成功
+    function showToast (str) {
+      $(".zg p").text(str)
+      $(".zg").fadeIn("slow")
+      setTimeout(function () {
+        $(".zg").fadeOut("slow")
+      }, 1500)
+    }
+
+    // 点击提示领取成功
+    $(document).ready(function () {
+      $(".btn-Lq").click(function () {
+        $(".zg").fadeIn("show")
+      })
+      var headimg = {{.T.share_headImg}}
+      if( headimg  == ""){
+        headimg="/images/auto.png";
+      }
+      $(".share-head").attr("src",headimg);
+    })
+    // 浮窗
+    // function scrollSideIconHide() {
+    //   var sNode = $('#sideIcon')
+    //   var sTop = '50'
+    //   var scrollBox = $('.j-main')
+    //   scrollBox.on('scroll', function () {
+    //     var nTop = scrollBox.scrollTop()
+    //     if (nTop > sTop) {
+    //       sNode.addClass('fadeOutRight')
+    //     } else {
+    //       sNode.removeClass('fadeOutRight')
+    //     }
+    //   })
+    // }
+
+
+    // $(document).ready(function () {
+    //   scrollDiv("box", 350);
+    // });   
+  </script>
+</body>
+
+</html>

+ 424 - 0
src/jfw/modules/app/src/web/templates/frontRouter/share/sess/index.html

@@ -0,0 +1,424 @@
+<!DOCTYPE html>
+<html
+  lang="zh-CN"
+  style="font-size: 50px;"
+>
+
+<head>
+  <!--引入公共资源头部-->
+  {{include "/big-member/meta.html"}}
+  <title>分享有礼</title>
+  <!--S-当前页面的css资源-->
+  <link
+    rel="stylesheet"
+    href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css
+  />
+  <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+  <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css'>
+  <link
+    rel="stylesheet"
+    href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/css/index.css?v={{Msg "seo" "version"}}'
+  />
+  {{include "/common/js.html"}}
+</head>
+
+<body>
+  <div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main">
+      <div class="center">
+        <div class="center-top">
+          <h3>呼朋唤友</h3>
+          <h5>免费获取超级订阅</h5>
+          <div>
+            <p>邀请好友注册,各得7天</p>
+          </div>
+        </div>
+        <div class="center-zj">
+          <h6>/ 活动说明 /</h6>
+          <div class="xp">
+            <p>邀请好友注册,各得7天超级订阅会员使用权限;<br>多邀多得,发现更多商机</p>
+          </div>
+          <div class="picture">
+            <img
+              class="left-picture an-shadow"
+              src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/left.png'
+              alt=""
+            >
+            <img
+              class="super-picture"
+              src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/chaoji.png'
+              alt=""
+            >
+            <img
+              class="right-picture an-shadow"
+              src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/right.png'
+              alt=""
+            >
+          </div>
+          <button id="share-button">生成海报并分享</button>
+        </div>
+        <div class="center-bottom">
+          <div class="bottom-top">
+            <h3>我的邀请</h3>
+            <div></div>
+          </div>
+          <div style="margin-top: 0.66rem;">
+            <ul class="ul-list">
+              <li
+                class="message clone-template-list"
+                id="clone-template"
+                style="display: none"
+              >
+                <div class="list-left">
+                  <img
+                    src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/left.png'
+                    alt=""
+                  >
+                </div>
+                <div class="mg">
+                  <p class="user-name-text"></p>
+                  <span class="time list-right"></span>
+                </div>
+              </li>
+            </ul>
+          </div>
+          <p class="zd">没有更多邀请记录</p>
+        </div>
+      </div>
+    </div>
+    <div class="tc">
+      <div class="bs fadeInUp">
+        <div id="weixin">
+          <img
+            src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/wechat.png'
+            alt=""
+          >
+          <span>微信朋友</span>
+        </div>
+        <div id="friend">
+          <img
+            src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/friend.png'
+            alt=""
+          >
+          <span id="friend">朋友圈</span>
+        </div>
+      </div>
+      <div class="master-box fadeInUp">
+        <div
+          class="master save-button"
+          id="create-image-box"
+        >
+          <div class="master-a">
+            <img
+              class="left-picture an-shadow"
+              style="left: 0.1rem;"
+              data-html2canvas-ignore
+              src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/left.png'
+              alt=""
+            >
+            <img
+              class="super-picture"
+              src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/wxcj.png'
+              alt=""
+            >
+            <img
+              data-html2canvas-ignore
+              class="right-picture an-shadow "
+              style="left: 5.6rem;"
+              src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/right.png'
+              alt=""
+            >
+          </div>
+          <div class="master-b">
+            <img
+              class="tx"
+              name="userHead"
+              src=""
+              alt=""
+            >
+            <div class="name user-info-box">
+              <p id="userName"></p>
+              <span>送你7天超级订阅!</span>
+            </div>
+            <div class="wx">
+              <img
+                name="qCode"
+                src=""
+                alt=""
+              >
+            </div>
+          </div>
+          <div class="master-c" data-html2canvas-ignore>点击图片可保存到相册</div>
+        </div>
+      </div>
+
+    </div>
+    <div id="creat-img-box"></div>
+  </div>
+  <!--S-当前页面的资源-->
+  <script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+  <script crossorigin src="//cdn-common.jianyu360.com/cdn/lib/html2canvas/1.3.3/dist/html2canvas.min.js"></script>
+  {{include "/big-member/commonjs.html"}}
+  <!-- <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/area-pack/js/buy.js?v={{Msg "seo" "version"}}'></script> -->
+  <!--E-当前页面的资源-->
+  <script>
+    // 模板变量格式
+    var templateVars = {
+      type: {{ session "i_type" }},
+      nickname: {{ session "s_nickname" }}
+    }
+  </script>
+  <script type="text/javascript">
+    // 动态插入分享标签
+    $(".header-right").addClass('show-share')
+    // $('.header-right').html('<span class="j-icon icon-share"></span>').on('click', function () { console.log(123) })
+    // // 点击弹出遮盖层
+    $(document).ready(function () {
+      function showDialog() {
+        $(".fadeOutDown").removeClass('fadeOutDown').addClass('fadeInUp')
+        $(".tc").fadeIn("slow")
+      }
+      $("#share-button").click(showDialog)
+      $(".show-share").click(showDialog)
+      $("#weixin").click(function () {
+        toShare(0)
+      });
+      $("#friend").click(function () {
+        toShare(2)
+      })
+    })
+    // 进入落地页获取邀请列表
+
+    $.ajax({
+      url: '/publicapply/shareFission/list',
+      type: 'POST',
+      data: {
+        pageNum: 0,
+        pageSize: 100
+      },
+      success: function (res) {
+        if (res && res.data) {
+          res.data.res.forEach(function (v) {
+            var cloneNode = $('#clone-template').clone()
+            cloneNode.removeAttr("id")
+            cloneNode.find('.list-left img').attr('src', v.headimg || '/jyapp/images/persional/my_head.png')
+            cloneNode.find('.mg p').text(v.name)
+            cloneNode.find('.list-right').text(dateFormat(v.createtime * 1000, 'yyyy-mm-dd HH:MM:ss'))
+            cloneNode.show()
+            $('.clone-template-list').parent().append(cloneNode)
+          })
+          if (res.data.haveNextPage) {
+            // 加载下一页
+          }
+        }
+      }
+    })
+    var shareLink;
+    // 获取用户信息
+    $.ajax({
+      url: '/publicapply/shareFission/info',
+      type: 'GET',
+      success: function (res) {
+        if (res && res.data) {
+          // $('#share-link').text(res.data.shareLink)
+          $("img[name='qCode']").attr('src', 'data:image/png;base64,' + res.data.erUrl)
+          shareLink = res.data.shareLink;
+        }
+      }
+    })
+
+    $.ajax({
+      url: '/jypay/user/getSimpleData',
+      success: function (res) {
+        if (res) {
+          $("#userName").text(res.nickName)
+          if (!res.headImage) {
+            res.headImage = "/jyapp/images/persional/my_head.png"
+          }
+          $("img[name='userHead']").attr('src', res.headImage)
+          $("img[name='userHead']").on('error', function () {
+            if ($(this).attr('data-error') !== 'true') {
+              $(this).attr('src', '/jyapp/images/persional/my_head.png')
+              $(this).attr('data-error', 'true')
+            }
+          })
+        }
+      }
+    })
+
+    var vTools = {
+      loadingTransition: 300,
+
+      // 全局loading框
+      jLoading: function(options) {
+        // 设置options参数的默认值
+        options.content = options.content || 'loading...'
+        options.bgc = options.bgc || 'transparent'
+        options.icon = options.icon || 'j-loading-icon'
+        options.duration = options.duration || 0
+        // 将其拼接成width: 5rem;的形式
+        options.width = options.width ? 'width:' + options.width + ';' : ''
+        // 结构
+        // <div class="j-loading">
+        //     <div class="j-mask"></div>
+        //     <div class="j-toast">
+        //         <i class="j-toast_icon j-loading-icon"></i>
+        //         <p class="j-toast_content">loading</p>
+        //     </div>
+        // </div>
+
+        var that = this
+        var bgcClassMap = {
+          transparent: '',
+          black: 'black'
+        }
+
+        var icon = options.iconHide ? '' : 'icon';
+        var html = '<div class="j-loading"><div class="j-mask ' + bgcClassMap[options.bgc] + '"></div><div class="j-toast '+ icon +'" style="' + options.width + '"><i class="j-toast_icon ' + options.icon + '"></i><p class="j-toast_content">' + options.content + '</p></div></div>'
+        var _html = $(html)
+        $('body').append(_html)
+        _html.fadeIn(this.loadingTransition)
+
+        var _loading = {
+          _html: _html,
+          hide: function(callback) {
+            this._html.fadeOut(that.loadingTransition, function() {
+              this.remove()
+              callback && callback()
+            })
+          }
+        }
+
+        if (options.duration > 0) {
+          setTimeout(function() {
+            _loading.hide(options.callback)
+          }, options.duration)
+        }
+
+        return _loading
+      }
+    }
+
+
+    $(function () {
+      $('.list-left img').each(function () {
+        if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
+          this.src = '/jyapp/images/persional/my_head.png';
+        }
+      });
+      // 保存图片
+      var saveSuccess = false
+      var picImgUrl = null
+
+      function showTip (str) {
+        if (!mySysIsIos()) {
+          EasyAlert.show(str)
+        }
+      }
+
+      $('.save-button').off('click').on('click', function () {
+        if (saveSuccess) {
+          console.log('返回')
+          return
+        }
+
+        var loading = vTools.jLoading({
+          content: '保存中...'
+        })
+
+        if(!picImgUrl) {
+          $("#creat-img-box").append($('#create-image-box').clone().attr('id', 'clone-image'))
+          html2canvas(document.querySelector('#clone-image'), {
+            // allowTaint: true,
+            useCORS: true,
+            backgroundColor: null,
+            scale: 3,
+            imageTimeout: 30000,
+          }).then(canvas => {
+            var imgUrl = canvas.toDataURL('image/png');
+            imgUrl = imgUrl.replace('data:image/png;base64,', '')
+            picImgUrl = imgUrl
+            $('#clone-image').remove()
+            try {
+              window.JyObj.savePic(imgUrl)
+              showTip('图片已经保存,快去分享吧~')
+              loading.hide()
+              setTimeout(() => {
+                saveSuccess = false
+              }, 1500)
+            } catch (e) {
+              $('#clone-image').remove()
+              loading.hide()
+              showTip('保存失败')
+              setTimeout(() => {
+                saveSuccess = false
+              }, 1500)
+            }
+          })
+        }else {
+          try {
+            window.JyObj.savePic(picImgUrl)
+            loading.hide()
+            showTip('图片已经保存,快去分享吧~')
+          } catch (e) {
+            loading.hide()
+            showTip('保存失败')
+          }
+          setTimeout(() => {
+            saveSuccess = false
+          }, 1500)
+        }
+      })
+    });
+
+
+    // 点击遮盖层消失
+    $(".tc").on('click', function (e) {
+      if ($(e.target).hasClass('tc') || $(e.target).hasClass('master-box')) {
+        $(".fadeInUp").removeClass('fadeInUp').addClass('fadeOutDown')
+        $(".tc").fadeOut()
+      }
+    })
+    var forceShareFlag = false;
+    function toShare(index) {
+      execShare(index);
+    }
+    function execShare(thisIndex) {
+      var shareType = thisIndex + 1;
+      var content = "您的好友";
+      if (shareType != 2 && templateVars.type == 2) {
+        content += templateVars.nickname
+      }
+      content += "分享给你一个超好用的找甲方、找合作的工具,剑鱼标讯邀您和好友一起发现更多商机!";
+      var link = shareLink + '?source=app_infocontentshare';
+      var shareTitle = "邀好友,免费获得超级订阅";
+      shareTitle = shareTitle.replace(/<\/?.+?>/g, "");
+      shareTitle = shareTitle.replace(/ /g, "");
+      if (shareType == 3) {
+        if (forceShareFlag) {
+          link += "&qrcodeType=app_infocontent_timeline_b";
+        } else {
+          link += "&qrcodeType=app_infocontent_timeline_z";
+        }
+        // shareTitle = getShareText();
+        shareTitle = '分享给你一个超好用的找甲方、找合作的工具,剑鱼标讯邀您和好友一起发现更多商机!';
+        content = '邀好友,免费获得超级订阅'
+        updateShareStatus();
+      }
+      JyObj.share(shareType, shareTitle, content, link);
+    }
+    function updateShareStatus() {
+      var shareProperty = forceShareFlag ? 1 : 2;//1-被动分享 2-主动分享
+      var query = { shareType: 1, shareProperty: shareProperty };
+      $.post("/jyapp/share/updateShareStatus", query, function (fd) {
+        sessionStorage.setItem("forceShareFlag", "1");//1-已分享
+      });
+      setTimeout(function () {
+        removeMask();
+      }, 3000);
+    }
+  </script>
+</body>
+
+</html>

+ 2 - 2
src/jfw/modules/app/src/web/templates/me/notice.html

@@ -7,14 +7,14 @@
           href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/me/css/reset.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css"
           href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
-    <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/minirefresh@2.0.2/dist/minirefresh.min.css">
+    <link rel="stylesheet" href="//cdn-common.jianyu360.com/cdn/lib/minirefresh/2.0.2/minirefresh.min.css">
     <link rel="stylesheet" type="text/css"
           href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/me/css/notice.css?v={{Msg "seo" "version"}}"/>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/fastclick.min.js" type="text/javascript"
             charset="utf-8"></script>
     <script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js" type="text/javascript"
             charset="utf-8"></script>
-    <script src="//cdn.jsdelivr.net/npm/minirefresh@2.0.2/dist/minirefresh.min.js"></script>
+    <script src="//cdn-common.jianyu360.com/cdn/lib/minirefresh/2.0.2/minirefresh.min.js"></script>
     {{include "/common/js.html"}}
     <title>通知</title>
     <style>

+ 16 - 3
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_introduce.html

@@ -17,16 +17,19 @@
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/vip_introduce.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
         <style>
+        .pop-tip-group.tip-box > div,
         .pop-tip-group.active > div{
             width: 100%;
             background: linear-gradient(173deg, #FFA573 0%, #F01212 100%);
             border-radius: 0.10rem;
         }
+        .pop-tip-group.tip-box,
         .pop-tip-group.active {
             width: 4.7rem;
             background: linear-gradient(173deg, #FFA573 0%, #F01212 100%);
             border-radius: 0.10rem;
         }
+        .pop-tip-group.tip-box::after,
         .pop-tip-group.active::after {
             content: '';
             position: absolute;
@@ -53,6 +56,16 @@
             background-size: cover;
             background-repeat: no-repeat;
         }
+        #vip-intro-container > .j-footer {
+            position: absolute;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            height: auto !important;
+        }
+        .vip_introduce .main {
+            margin-bottom: 0;
+        }
     </style>
 </head>
 <body>
@@ -70,12 +83,12 @@
                 <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/image/info/cut_04.jpg?v={{Msg "seo" "version"}}">
                 <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/image/info/cut_05.jpg?v={{Msg "seo" "version"}}">
                 <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/image/info/cut_06.jpg?v={{Msg "seo" "version"}}">
+                <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/image/info/cut_07.jpg?v={{Msg "seo" "version"}}">
         </div>
     </div>
         <div class="j-footer j-button-group popup-bottom-group">
-            <div class="pop-tip-group">
-                <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/image/info/tagBottom.png?v={{Msg "seo" "version"}}">
-                <div>低至 <span>38</span>元/月</div>
+            <div class="pop-tip-group tip-box">
+                <div>每天一块钱,立刻拥有全网商机!</div>
         </div>
         <div class="pop-tip-group active" style="display: none">
                 <div>限时早鸟价,买1年送1年</div>

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

@@ -190,6 +190,21 @@
     #freeArea{
         color: #2ABDD1;
     }
+    #sideIcon {
+        transition: all 0.2s;
+        bottom: 15%;
+        right: 0.3rem;
+        position: fixed;
+    }
+
+
+    #sideIcon.fadeOutRight a {
+        pointer-events: none;
+    }
+    #sideIcon.fadeOutRight {
+        transform: translateX(90%);
+        opacity: 0.2;
+    }
 </style>
 <div id="jyKeepComponent">
     <keep-component ref="vKeepComponent" @on-change-keep="changeKeepStatus" :bid="nowOpenBid" :first="false"></keep-component>
@@ -556,6 +571,11 @@
         </div>
     </div>
 </section>
+<div id="sideIcon" style="display: none">
+    <a href="/jyapp/frontPage/share/sess/index">
+        <img  src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/share/img/gift.png' alt="" style="width: 1.36rem;">
+    </a>
+</div>
 <!--{{include "/common/footer.html"}}-->
 <div class="hidden" id="advertscript"></div>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}'></script>
@@ -582,6 +602,26 @@
           }
         }
     })
+    function scrollSideIconHide(el) {
+        var sNode = $('#sideIcon')
+        var sTop = '50'
+        var scrollBox = $(el)
+        scrollBox.on('scroll', function () {
+            var nTop = scrollBox.scrollTop()
+            if (nTop > sTop) {
+                sNode.addClass('fadeOutRight')
+            } else {
+                sNode.removeClass('fadeOutRight')
+            }
+        })
+    }
+    $('#sideIcon').on('click', function () {
+        $(this).removeClass('fadeOutRight')
+    })
+    $(function () {
+        scrollSideIconHide('#searchIndex .content')
+    })
+
 </script>
 
 <!--S-当前页面的资源-->
@@ -630,8 +670,7 @@
                   $("#myModal-tap").remove();
                   updateHtml +='<div style="font-weight: 400;display: inline-block;width: 50%;height:50px;line-height:50px;color:#157efb;font-size:16px;text-align:center;" id="app-version-noupdate">不更新<a style="height:100%;border-right:1px solid #d3d3d3;float:right;"></a></div><div style="font-weight: 400;display: inline-block;width: 50%;height:50px;line-height:50px;color:#157efb;font-size:16px;text-align:center;" id="app-version-update">更新</div>';
                 }
-              updateHtml +='</div>';
-            +'</div>';
+            updateHtml +='</div></div>';
             $("body").append(updateHtml);
             newVersionUpdateLog("server_tip",r.version);
             $("#app-version-noupdate").on("click",function(){
@@ -865,6 +904,7 @@
             $("#searchIndex .inp-search").unbind("click").on("click",function () {
                 SuperSearch.init(true,true,true);
                 $("#search-header-input").focus()
+                $("#sideIcon").hide()
             });
             SuperSearch.openTablepro=result.tablepro;
             //加载广告
@@ -1342,6 +1382,13 @@
                 $(".app-layout-header .app-back").trigger('click')
             }
         }
+        setTimeout(function () {
+            if (!SuperSearch.isMyPage) {
+                $('#sideIcon').show()
+            } else {
+                $('#sideIcon').hide()
+            }
+        }, 300)
     }
     function afterJyObjInit(){
         redSpotOnMenu();

+ 22 - 12
src/jfw/modules/app/src/web/templates/weixin/search/tabSearch.html

@@ -882,14 +882,22 @@
                                         </div>
                                     </div>
                                 </div> -->
-                                <area-component ref="areaComponent" @select="updateScrollTop" v-show="activeTabIndex === 1"></area-component>
-                                <industry-component :key="'industry' + industryComponentKey" ref="industryComponent" v-show="activeTabIndex === 2"></industry-component>
-                                <cate-component v-show="activeTabIndex === 3" ref="cateComponent"></cate-component>
+                                <area-city-mobile @cancel="getCancel" @confirm="getAreaConfirm" ref="areaCitySelector" v-show="activeTabIndex === 1"></area-city-mobile>
+                                <industry-component @confirm="getIndustryData" :key="'industry' + industryComponentKey" ref="industryComponent" v-show="activeTabIndex === 2"></industry-component>
+                                <cate-component @confirm="getCateData" v-show="activeTabIndex === 3" ref="cateComponent"></cate-component>
                                 <div class="more-popup-content" v-show="isMoreContent">
                                     <div class="select-more-tag-group" @click="onSelectMoreGroup(item)"  v-for="(item,i) in moreContentList" :class="{'row-group': entTabs[item].title == '中标区域'}">
                                         <div class="select-tag-title">
-                                            @@entTabs[item].title@@
-                                            <div class="disabled-tag"  v-if="entTabs[item].disabled === true">开通</div>
+                                          <van-cell v-if="i==0" :title="entTabs[item].title" is-link>
+                                            <template #default>
+                                              <div class="keyselect">已选:全部</div>
+                                            </template>
+                                          </van-cell>
+                                          <van-cell v-if="i==1" center :title="entTabs[item].title">
+                                            <template #right-icon>
+                                              <van-switch active-color="#2ABED1" v-model="checked" size="28" />
+                                            </template>
+                                          </van-cell>
                                         </div>
                                         <div class="select-tag-content" v-if="conditionMap[item]">
                                             <div class="select-more-tag-item" @click.stop="onSelectMoreItem(item, tags, ii)" v-for="(tags,ii) in conditionMap[item]" :class="{active: tags.checked}">@@tags.title@@</div>
@@ -924,7 +932,7 @@
                         >
                           <li
                               class="cor-list-item clickable border-line-b"
-                              v-for="(item,index) in entList"
+                              v-for="(item,index) in buyerList"
                               :key="index"
                               @click.stop.prevent="toEntPortrait(item)"
                           >
@@ -937,10 +945,6 @@
                                               <div class="cor-item-project">项目数量:@@item.PNCount@@</div>
                                               <div class="cor-item-budget">项目总金额:@@utils.moneyUnit(item.Budget)@@</div>
                                           </div>
-                                          <div class="cor-item-location" v-if="false">
-                                              <span>所在地:</span>
-                                              <span class="highlight-text">@@(item.Area || item.City) ? item.Area + '  ' + item.City : '-'@@</span>
-                                          </div>
                                           <div class="cor-item-location">
                                               <span>所在地:</span>
                                               <span class="highlight-text">@@(item.WProvince || item.WCity) ? item.WProvince + '  ' + item.WCity : '-'@@</span>
@@ -1710,7 +1714,9 @@
 
 <!--S-脚本-->
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/china-map-data.js'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/industry-mobile.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/area-city-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script>
 
     function ajaxQueryAssociateList (data, callback) {
@@ -1913,6 +1919,7 @@
         $(window).on('popstate', function () {
             console.log('取消未完成列表请求')
             window.AjaxPAGIng && window.AjaxPAGIng.abort && window.AjaxPAGIng.abort()
+            $("#sideIcon").show()
         })
         // 通用输入框删除ICON事件
         $("form[data-name='input-clear-box'] input").on('input change', checkInputClear).on('focus', checkInputClear).on('blur', function () {
@@ -1963,7 +1970,6 @@
                 $('#resbm').addClass('hidden');
                 $(".dropload-down").hide();
                 $('.shade_table').hide()
-                // debugger
                 // console.trace()
             } else {
                 // console.log('在筛选状态...')
@@ -1986,7 +1992,11 @@
                 $(".search-header-box").addClass('m-r')
                 if (nowIndex !== 1) {
                   $(".search-header-box").removeAttr("action")
-                  // $(".search-header-box").next().hide()
+                  if(powerRoot.entniche) {
+                    $(".search-header-box").next().show()
+                  } else {
+                    $(".search-header-box").next().show()
+                  }
                 } else {
                   $(".search-header-box").attr("action", "javascript:return true")
                   $(".search-header-box").next().show()

+ 1 - 1
src/jfw/modules/app/src/web/templates/weixin/sharePic.html

@@ -17,7 +17,7 @@
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/jquery.cookie.js?v={{Msg "seo" "version"}}"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/bootstrap.min.js"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/share.js?v={{Msg "seo" "version"}}"></script>
-    <script crossorigin src="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-alpha.12/dist/html2canvas.min.js"></script>
+    <script crossorigin src="//cdn-common.jianyu360.com/cdn/lib/html2canvas/1.3.3/dist/html2canvas.min.js"></script>
     {{include "/common/js.html"}}
 </head>
 <body>

+ 1 - 1
src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html

@@ -18,7 +18,7 @@
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/alertPopShow.js?v={{Msg "seo" "version"}}"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/bootstrap.min.js"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/share.js?v={{Msg "seo" "version"}}"></script>
-    <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-alpha.12/dist/html2canvas.min.js"></script>
+    <script src="//cdn-common.jianyu360.com/cdn/lib/html2canvas/1.3.3/dist/html2canvas.min.js"></script>
 
     {{include "/common/js.html"}}
     <style>

+ 4 - 4
src/jfw/modules/bigmember/src/config.json

@@ -54,7 +54,7 @@
     "customers":[
     	{
 			"name":"赵秀臻",
-			"wxer":"/big-member/image/customer/customer-wx.png"
+			"wxer":"/big-member/image/customer/customer-wx-new.png"
 		}
     ],
     "newFreeUser":1637647199,
@@ -63,7 +63,7 @@
     	"v":10
     },
     "mainWebDomain": "https://jianyu360.com",
-    "createPdfServer": "http://192.168.20.41:8088/api/to-pdf/%s?delay=300&dir=%s&url=https://web-wky.jydev.jianyu360.com/swordfish/frontPage/report/free/report?pid=%s",
-    "pdfDataApiWhiteList": ["1.192.62.131"],
+    "createPdfServer": "http://192.168.3.11:8081/api/to-pdf/%s?dir=%s&url=https://web-wky.jydev.jianyu360.com/swordfish/frontPage/report/free/report?pid=%s",
+    "pdfDataApiWhiteList": ["1.192.62.131","127.0.0.1"],
     "pdfServerPoor" : 5
-}
+}

+ 83 - 0
src/jfw/modules/common/src/qfw/util/jy/shareFission.go

@@ -0,0 +1,83 @@
+package jy
+
+// import (
+// 	"mongodb"
+// 	qu "qfw/util"
+// 	"qfw/util/mysql"
+// 	"time"
+// )
+
+// type ShareFission struct {
+// 	UserMgoDB   mongodb.MongodbSim
+// 	UserMysqlDB *mysql.Mysql
+// 	SharedUid   string //被分享者
+// 	ShareUid    string //分享者
+// }
+
+// func NewShareFission(mgo mongodb.MongodbSim, msql *mysql.Mysql, sharedUid, shareUid string) *ShareFission {
+// 	return &ShareFission{
+// 		UserMgoDB:   mgo,
+// 		UserMysqlDB: msql,
+// 		SharedUid:   sharedUid,
+// 		ShareUid:    shareUid,
+// 	}
+// }
+
+// //增加权益
+// func (this *ShareFission) AddPower() {
+// 	Power(this.SharedUid, this.UserMgoDB, this.UserMysqlDB)
+// }
+
+// //判断权益
+// func Power(userid string, mgo mongodb.MongodbSim, msql *mysql.Mysql) {
+// 	data, ok := mgo.FindById("user", userid, `{"i_vip_status":1,"l_vip_starttime":1,"l_vip_endtime":1,"o_vipjy":1}`)
+// 	if ok && data != nil && len(*data) > 0 {
+// 		vip_status := qu.IntAll((*data)["i_vip_status"])
+// 		endtime := qu.Int64All((*data)["l_vip_endtime"])
+// 		now := time.Now()
+// 		//
+// 		endDate := now.Format(qu.Date_Short_Layout) + "23:59:59"
+// 		loc, _ := time.LoadLocation("Local")
+// 		end, _ := time.ParseInLocation(qu.Date_Full_Layout, endDate, loc)
+// 		if vip_status == 2 {
+// 			//超级订阅用户
+// 			endT := time.Unix(endtime, 0).AddDate(0, 0, 7)
+// 			mgo.UpdateById("user", userid, map[string]interface{}{
+// 				"$set": map[string]interface{}{
+// 					"l_vip_endtime": endT.Unix(),
+// 				},
+// 			})
+// 		} else if vip_status < 0 {
+// 			//非超级订阅用户
+// 			mgo.UpdateById("user", userid, map[string]interface{}{
+// 				"$set": map[string]interface{}{
+// 					"$set": map[string]interface{}{
+// 						"i_vip_status":               2,
+// 						"l_vip_starttime":            now.Unix(),
+// 						"l_vip_endtime":              end.Unix(),
+// 						"o_vipjy.o_area":             map[string]interface{}{"北京": []string{}},
+// 						"o_vipjy.o_buyset.areacount": 1,
+// 					},
+// 				},
+// 			})
+// 		} else if vip_status == 0 {
+// 			mgo.UpdateById("user", userid, map[string]interface{}{
+// 				"$set": map[string]interface{}{
+// 					"i_vip_status":         2,
+// 					"l_vip_starttime":      now.Unix(),
+// 					"l_vip_endtime":        end.Unix(),
+// 					"o_vipjy.o_area":       map[string]interface{}{"北京": []string{}},
+// 					"o_vipjy.i_trial":      -1,
+// 					"o_vipjy.a_buyerclass": []string{},
+// 					"i_vip_expire_tip":     0,
+// 					"o_vipjy.o_buyset": map[string]interface{}{
+// 						"upgrade":         1,
+// 						"areacount":       1,
+// 						"buyerclasscount": -1,
+// 						"newcitys":        []string{},
+// 					},
+// 				},
+// 			})
+// 		}
+// 	}
+// }

+ 10 - 0
src/jfw/modules/publicapply/src/config/config.go

@@ -36,13 +36,23 @@ type AdLeague struct {
 	Click    string //点击接口
 }
 
+type ShareF struct {
+	JobNum     int
+	WorkerNum  int
+	ShareRedis string
+	Webdomain  string
+	SaveTime   int
+}
+
 var Config *config
 var BidCollConfig *BidColl
 var AdLeaguefig *AdLeague
+var ShareConfig *ShareF
 
 func init() {
 	//程序配置文件
 	qutil.ReadConfig(&Config)
 	qutil.ReadConfig("./bidcollection.json", &BidCollConfig)
 	qutil.ReadConfig("./adLeague.json", &AdLeaguefig)
+	qutil.ReadConfig("./shareFission.json", &ShareConfig)
 }

+ 2 - 1
src/jfw/modules/publicapply/src/filter/sessionfilter.go

@@ -15,9 +15,10 @@ type sessionfilter struct {
 
 var reg = regexp.MustCompile("^/publicapply/free/.*")
 var reg_ad = regexp.MustCompile("^/publicapply/adLeague/.*")
+var reg_share = regexp.MustCompile("^/publicapply/shareFission/.*")
 
 func (l *sessionfilter) Do(w http.ResponseWriter, req *http.Request) bool {
-	if reg.MatchString(req.URL.Path) || reg.MatchString(req.URL.Path) {
+	if reg.MatchString(req.URL.Path) || reg.MatchString(req.URL.Path) || reg_share.MatchString(req.URL.Path) {
 		return true
 	}
 	session := l.App.SessionManager.Session(req, w)

+ 1 - 0
src/jfw/modules/publicapply/src/main.go

@@ -17,6 +17,7 @@ import (
 	_ "me"
 	"net/http"
 	_ "project"
+	_ "shareFission"
 	_ "subscribe"
 	_ "subscribePush"
 

+ 7 - 0
src/jfw/modules/publicapply/src/shareFission.json

@@ -0,0 +1,7 @@
+{
+	"jobNum":10,
+	"workerNum":10,
+	"shareRedis":"other",
+	"webdomain":"https://web-zxl.jydev.jianyu360.com",
+	"saveTime":7
+}

+ 88 - 0
src/jfw/modules/publicapply/src/shareFission/entity/random.go

@@ -0,0 +1,88 @@
+package entity
+
+import (
+	"bytes"
+	"config"
+	cr "crypto/rand"
+	"math/big"
+	"math/rand"
+	"qfw/util/redis"
+	"strings"
+	"sync"
+	"time"
+)
+
+var VarLSCPool = &LSCPool{
+	JobQueue:  make(chan string, config.ShareConfig.JobNum),
+	WorkerNum: config.ShareConfig.WorkerNum,
+	Lock:      &sync.Mutex{},
+	Randoms:   "",
+}
+
+type LSCPool struct {
+	JobQueue  chan string //待取的口令
+	WorkerNum int         //当前工作的协程数
+	Lock      *sync.Mutex //口令锁
+	Randoms   string      //口令集合
+}
+
+func (this *LSCPool) GetJob() string {
+	return <-this.JobQueue
+}
+
+var r *rand.Rand
+
+func init() {
+	r = rand.New(rand.NewSource(time.Now().Unix()))
+	for i := 0; i < VarLSCPool.WorkerNum/2; i++ {
+		go func() {
+			for {
+				VarLSCPool.JobQueue <- VarLSCPool.GetRandom()
+			}
+		}()
+	}
+}
+
+//获取随机字符串
+func (this *LSCPool) GetRandom() string {
+	this.Lock.Lock()
+	defer this.Lock.Unlock()
+	//如果使用过了 重新获取
+	for {
+		LSC := this.SpecialChar(0) + this.LetterRandom(8)
+		if strings.Contains(this.Randoms, LSC) {
+			continue
+		}
+		this.Randoms += LSC + "|"
+		ok, _ := redis.Exists("other", "shareId_"+LSC)
+		if ok {
+			continue
+		}
+		return LSC
+	}
+	return ""
+}
+
+//字母随机串
+func (this *LSCPool) LetterRandom(LL int) (LR string) {
+	bytes := make([]byte, LL)
+	for i := 0; i < LL; i++ {
+		b := r.Intn(26) + 65
+		bytes[i] = byte(b)
+	}
+	LR = string(bytes)
+	return
+}
+
+//特殊字符随机串
+func (this *LSCPool) SpecialChar(LL int) (SC string) {
+	var str = "$#"
+	b := bytes.NewBufferString(str)
+	length := b.Len()
+	bigInt := big.NewInt(int64(length))
+	for i := 0; i < LL; i++ {
+		randomInt, _ := cr.Int(cr.Reader, bigInt)
+		SC += string(str[randomInt.Int64()])
+	}
+	return
+}

+ 11 - 0
src/jfw/modules/publicapply/src/shareFission/init.go

@@ -0,0 +1,11 @@
+package shareFission
+
+import (
+	"shareFission/service"
+
+	"github.com/go-xweb/xweb"
+)
+
+func init() {
+	xweb.AddAction(&service.Share{})
+}

+ 189 - 0
src/jfw/modules/publicapply/src/shareFission/service/service.go

@@ -0,0 +1,189 @@
+package service
+
+import (
+	. "api"
+	"config"
+	"db"
+	"encoding/base64"
+	"fmt"
+	"log"
+	qu "qfw/util"
+	"qfw/util/jy"
+	"qfw/util/redis"
+	"shareFission/entity"
+	"strings"
+	"time"
+
+	"github.com/SKatiyar/qr"
+	"github.com/go-xweb/xweb"
+)
+
+type Share struct {
+	*xweb.Action
+	info    xweb.Mapper `xweb:"/shareFission/info"`
+	receive xweb.Mapper `xweb:"/shareFission/receive"`
+	list    xweb.Mapper `xweb:"/shareFission/list"`
+	qwe     xweb.Mapper `xweb:"/qwe"`
+}
+
+func (this *Share) Qwe() {
+	rwe := db.Mgo.Count("user", map[string]interface{}{"s_m_openid": "o7Y1g0Rz_1JmNep3lnIU4lfjeooI", "i_appid": 2})
+	log.Println(rwe)
+}
+
+func (this *Share) Info() {
+	defer qu.Catch()
+	userid, _ := this.GetSession("userId").(string)
+	r := func() map[string]interface{} {
+		res := map[string]interface{}{}
+		keyUser := fmt.Sprintf("SF_%s", userid)
+		if value := redis.GetStr(config.ShareConfig.ShareRedis, keyUser); value != "" {
+			varr := strings.Split(value, "#@#@")
+			link := fmt.Sprintf("%s/front/followGift/%s", config.ShareConfig.Webdomain, varr[3])
+			r, _ := qr.Encode(link, qr.M)
+			pngdat := r.PNG()
+			res["data"] = map[string]interface{}{
+				"shareId":   varr[3], //口令
+				"shareLink": link,    //微信分享链接
+				"erUrl":     base64.StdEncoding.EncodeToString(pngdat),
+			}
+			res["error_code"] = 0
+			res["error_msg"] = ""
+		} else {
+			nickname, headimageurl := "", ""
+			if data := GetInfo(userid); data != nil {
+				nickname = qu.ObjToString(data["nickname"])
+				headimageurl = qu.ObjToString(data["headimageurl"])
+			}
+			shareId := entity.VarLSCPool.GetJob()
+			shareIdKey := fmt.Sprintf("shareId_%s", shareId)
+			value := fmt.Sprintf("%s#@#@%s#@#@%s#@#@%s", userid, nickname, headimageurl, shareIdKey)
+			redis.Put(config.ShareConfig.ShareRedis, shareIdKey, userid, -1)
+			redis.Put(config.ShareConfig.ShareRedis, keyUser, value, -1)
+			link := fmt.Sprintf("%s/front/followGift/%s", config.ShareConfig.Webdomain, shareIdKey)
+			r, _ := qr.Encode(link, qr.M)
+			pngdat := r.PNG()
+			res["data"] = map[string]interface{}{
+				"shareId":   shareIdKey, //口令
+				"shareLink": link,       //微信分享链接
+				"erUrl":     base64.StdEncoding.EncodeToString(pngdat),
+			}
+			res["error_code"] = 0
+			res["error_msg"] = ""
+		}
+		return res
+	}()
+	this.ServeJson(r)
+}
+
+//邀请人列表
+func (this *Share) List() {
+	userid, _ := this.GetSession("userId").(string)
+	pNum, _ := this.GetInteger("pageNum")
+	pSize, _ := this.GetInteger("pagesize")
+	rdata := map[string]interface{}{
+		"count":        0,
+		"haveNextPage": false,
+		"res":          []map[string]interface{}{},
+	}
+	query := map[string]interface{}{
+		"share_uid": userid,
+	}
+	log.Println(query)
+	count := db.Mgo.Count("user_share", query)
+	if count == 0 {
+		return
+	}
+	result, _ := db.Mgo.Find("user_share", query, `{"createtime":-1}`, `{"shared_uid":1}`, false, pNum*pSize, pSize)
+	haveNextPage := (pNum+1)*pSize < count
+	rdata["count"] = count
+	rdata["haveNextPage"] = haveNextPage
+	rdata["pageSize"] = pSize
+	rdata["res"] = Info(result)
+	this.ServeJson(Result{Data: rdata, Error_msg: ""})
+
+}
+
+//立即领取
+func (this *Share) Receive() {
+	if !R.CheckReqParam(this.ResponseWriter, this.Request, "oid", "shareId") {
+		return
+	}
+	status, msg := func() (bool, string) {
+		openid := qu.SE.DecodeString(this.GetString("oid")) //被分享者openid
+		log.Println(openid)
+		if db.Mgo.Count("user", map[string]interface{}{"s_m_openid": openid, "i_appid": 2}) > 0 {
+			return false, "老用户无法领取奖励"
+		}
+		shareId := this.GetString("shareId")
+		redisKey := fmt.Sprintf("rec_%s", openid)
+		log.Println(openid, shareId, redisKey)                              //分享者和被分享者对应关系
+		shareUserid := redis.GetStr(config.ShareConfig.ShareRedis, shareId) //获取分享者
+		if shareUserid == "" {
+			return false, "领取失败"
+		}
+		return redis.Put(config.ShareConfig.ShareRedis, redisKey, shareUserid, timeOut()), ""
+	}()
+	log.Println(msg)
+	this.ServeJson(Result{Data: M{"status": status}, Error_msg: msg})
+
+}
+
+type UserInfo struct {
+	HeadImg    interface{} `json:"headimg"`
+	Name       interface{} `json:"name"`
+	Createtime interface{} `json:"createtime"`
+}
+
+func Info(data *[]map[string]interface{}) []*UserInfo {
+	userinfo := []*UserInfo{}
+	if len(*data) > 0 {
+		for _, v := range *data {
+			sharedId := qu.ObjToString(v["shared_uid"])
+			if rdata := GetInfo(sharedId); rdata != nil {
+				log.Println(rdata)
+				userinfo = append(userinfo, &UserInfo{
+					HeadImg:    rdata["headimageurl"],
+					Name:       rdata["nickname"],
+					Createtime: rdata["createtime"],
+				})
+			}
+		}
+	}
+	return userinfo
+}
+
+//到期时间
+func timeOut() int {
+	now := time.Now()
+	return int(now.AddDate(0, 0, config.ShareConfig.SaveTime).Unix() - now.Unix())
+}
+
+//获取用户头像,手机号
+func GetInfo(userid string) map[string]interface{} {
+	rdata, ok := db.Mgo.FindById("user", userid, `{"s_headimageurl":1,"s_headimage":1,"s_phone":1,"s_m_phone":1,"s_nickname":1,"l_registedate":1}`)
+	if ok && len(*rdata) > 0 && rdata != nil {
+		nickname, headimageurl := "", ""
+		if s_phone, _ := (*rdata)["s_phone"].(string); s_phone != "" {
+			nickname = s_phone
+		} else if s_m_phone, _ := (*rdata)["s_m_phone"].(string); s_m_phone != "" {
+			nickname = s_m_phone
+		} else if s_nickname, _ := (*rdata)["s_nickname"].(string); s_nickname != "" {
+			nickname = s_nickname
+		}
+		if jy.IsPhone(nickname) {
+			nickname = string(nickname[0:3]) + "****" + string(nickname[len(nickname)-4:])
+		}
+		if s_headimageurl, _ := (*rdata)["s_headimageurl"].(string); s_headimageurl != "" {
+			headimageurl = s_headimageurl
+		} else if s_headimage, _ := (*rdata)["s_headimage"].(string); s_headimage != "" {
+			headimageurl = config.ShareConfig.Webdomain + s_headimage
+		}
+		return map[string]interface{}{
+			"nickname":     nickname,
+			"headimageurl": headimageurl,
+			"createtime":   (*rdata)["l_registedate"],
+		}
+	}
+	return nil
+}

+ 4 - 3
src/jfw/modules/subscribepay/src/config.json

@@ -27,7 +27,7 @@
 		"userName": "admin",
 		"password": "123456"
 	},
-    "redisaddrs": "other=123.56.53.97:1713,session=123.56.53.97:1713,push=123.56.53.97:1713,pushcache_1=192.168.3.206:5000,pushcache_2_a=192.168.3.206:5001",
+    "redisaddrs": "other=192.168.3.206:1712,session=192.168.3.206:1712,push=123.56.53.97:1713,pushcache_1=192.168.3.206:5000,pushcache_2_a=192.168.3.206:5001",
     "elasticsearch": "http://192.168.3.206:9800",
     "mongoqyfw": {
       "address": "192.168.3.206:27080",
@@ -81,5 +81,6 @@
   "termValidity": 60,
   "accountMergeOnline":"2021-04-07 12:00:00",
   "optimalTime":"2021-08-03 12:00:00",
-  "activityName":"1111"
-}
+  "activityName":"1111",
+  "shareRedisName":"other"
+}

+ 1 - 0
src/jfw/modules/subscribepay/src/config/config.go

@@ -59,6 +59,7 @@ type config struct {
 	AccountMergeOnline string
 	OptimalTime        string
 	ActivityName       string
+	ShareRedisName     string
 }
 type mgoConf struct {
 	Address           string

+ 174 - 0
src/jfw/modules/subscribepay/src/entity/shareFission.go

@@ -0,0 +1,174 @@
+package entity
+
+import (
+	"config"
+	"encoding/json"
+	"fmt"
+	"log"
+	"pay"
+	qu "qfw/util"
+	"qfw/util/jy"
+	"time"
+	"util"
+
+	"qfw/util/redis"
+)
+
+type ShareFission struct {
+	SharedUid string //被分享者
+	ShareUid  string //分享者
+}
+
+func NewShareFission(sharedUid, shareUid string) *ShareFission {
+	return &ShareFission{
+		SharedUid: sharedUid,
+		ShareUid:  shareUid,
+	}
+}
+
+//增加权益
+func (this *ShareFission) AddPower() {
+	Power(this.SharedUid, "shared")
+	Power(this.ShareUid, "share")
+	this.Record()
+}
+
+/*
+	identity 身份: 分享者share 被分享者shared
+*/
+func Power(userid, identity string) bool {
+	if userid == "" {
+		log.Println("userid 为空")
+		return false
+	}
+	data, ok := util.MQFW.FindById("user", userid, `{"i_vip_status":1,"l_vip_starttime":1,"l_vip_endtime":1,"o_vipjy":1,"i_shareCount":1,"s_m_openid":1}`)
+	if ok && data != nil && len(*data) > 0 {
+		vip_status := qu.IntAll((*data)["i_vip_status"])
+		endtime := qu.Int64All((*data)["l_vip_endtime"])
+		s_m_openid := qu.ObjToString((*data)["s_m_openid"])
+		now := time.Now()
+		st, et := "", ""
+		//
+		endDate := now.Format(qu.Date_Short_Layout) + " 23:59:59"
+		loc, _ := time.LoadLocation("Local")
+		end, _ := time.ParseInLocation(qu.Date_Full_Layout, endDate, loc)
+		setMap := map[string]interface{}{}
+		if identity == "share" {
+			max := 4
+			if util.MQFW.Count("user_share", map[string]interface{}{"shared_uid": userid}) > 0 {
+				max = 3
+			}
+			if i_shareCount := qu.IntAll((*data)["i_shareCount"]); i_shareCount >= max {
+				log.Println(fmt.Sprintf("%s用户已达邀请奖励上限,停止赠送权益,身份:%s", userid, identity))
+				return false
+			}
+
+			//推送
+			if r, _ := util.MQFW.FindById("user", userid, `{"s_m_openid": 1,"s_jpushid":1,"s_opushid":1,"s_appponetype":1,"s_nickname":1,"i_ispush":1,}`); r != nil && len(*r) > 0 {
+				util.SendPush(*r, config.Config.AppPushServiceRpc, userid)
+			}
+			setMap["$inc"] = map[string]interface{}{
+				"i_shareCount": 1,
+			}
+		}
+		needInit := false
+		types := 2 //默认开通权益
+		if vip_status == 2 {
+			types = 1 //仅延长周期
+			//超级订阅用户
+			endT := time.Unix(endtime, 0).AddDate(0, 0, 7)
+			setMap["$set"] = map[string]interface{}{
+				"l_vip_endtime": endT.Unix(),
+			}
+			st = time.Unix(endtime, 0).Format(qu.Date_Full_Layout)
+			et = endT.Format(qu.Date_Full_Layout)
+		} else if vip_status < 0 {
+			//非超级订阅用户
+			setMap["$set"] = map[string]interface{}{
+				"i_vip_status":                     2,
+				"l_vip_starttime":                  now.Unix(),
+				"l_vip_endtime":                    end.AddDate(0, 0, 7).Unix(),
+				"o_vipjy.o_area":                   map[string]interface{}{"北京": []string{}},
+				"o_vipjy.o_buyset.areacount":       1,
+				"o_vipjy.o_buyset.buyerclasscount": -1,
+				"o_vipjy.o_buyset.upgrade":         1,
+				"o_vipjy.o_buyset.newcitys":        []string{},
+			}
+			st = now.Format(qu.Date_Full_Layout)
+			et = end.AddDate(0, 0, 7).Format(qu.Date_Full_Layout)
+		} else if vip_status == 0 {
+			needInit = true
+			setMap["$set"] = map[string]interface{}{
+				"i_vip_status":         2,
+				"l_vip_starttime":      now.Unix(),
+				"l_vip_endtime":        end.AddDate(0, 0, 7).Unix(),
+				"o_vipjy.o_area":       map[string]interface{}{"北京": []string{}},
+				"o_vipjy.i_trial":      -1,
+				"o_vipjy.a_buyerclass": []string{},
+				"i_vip_expire_tip":     0,
+				"o_vipjy.o_buyset": map[string]interface{}{
+					"upgrade":         1,
+					"areacount":       1,
+					"buyerclasscount": -1,
+					"newcitys":        []string{},
+				},
+			}
+			st = now.Format(qu.Date_Full_Layout)
+			et = end.AddDate(0, 0, 7).Format(qu.Date_Full_Layout)
+		}
+		util.MQFW.UpdateById("user", userid, setMap)
+		if needInit {
+			util.MergeKws(userid)
+			redis.Del("other", "p1_indexMessage_"+userid) //清除redis中vip状态
+			redis.Del(config.Config.ShareRedisName, fmt.Sprintf("rec_%s", s_m_openid))
+		}
+		jy.ClearBigVipUserPower(userid)
+		return Order(userid, st, et, types)
+	}
+	return true
+}
+
+/*
+	starttime,endtime:权益开始结束时间
+	types:订单类型  1: 仅延长周期  2: 开通权益
+*/
+func Order(userid, starttime, endtime string, types int) bool {
+	_, buyset, isvip := JyVipSubStruct.GetVipDetail(userid)
+	filter := VipSimpleMsg{
+		Area:       nil,
+		Industry:   nil,
+		NewBuyset:  buyset,
+		OrderType:  qu.IntAll(qu.If(isvip, 1, 5)),
+		Cycleunit:  3,
+		Cyclecount: 7,
+	}
+	if types == 2 {
+		filter.Area = &map[string]interface{}{"北京": []string{}}
+		filter.Industry = []string{}
+	}
+	filterStr, _ := json.Marshal(filter)
+	ordercode := pay.GetOrderCode(userid)
+	now := time.Now()
+	insertMap := map[string]interface{}{
+		"order_money":    0,
+		"order_status":   1,
+		"order_code":     ordercode,
+		"product_type":   "VIP订阅",
+		"create_time":    qu.FormatDate(&now, qu.Date_Full_Layout),
+		"original_price": 0,
+		"user_id":        userid,
+		"filter":         string(filterStr), //筛选
+		"vip_starttime":  starttime,
+		"vip_endtime":    endtime,
+		"billingMode":    0, //计费模式 0免费 1付费
+	}
+	return util.Mysql.Insert("dataexport_order", insertMap) != 0
+}
+
+func (this *ShareFission) Record() {
+	util.MQFW.Save("user_share", map[string]interface{}{
+		"share_uid":  this.ShareUid,
+		"shared_uid": this.SharedUid,
+		"createtime": time.Now().Unix(),
+	})
+}

+ 0 - 8
src/jfw/modules/subscribepay/src/service/aiForecastPack.go

@@ -4,7 +4,6 @@ import (
 	. "api"
 	"config"
 	"encoding/json"
-	"entity"
 	"log"
 	"pay"
 	qutil "qfw/util"
@@ -17,13 +16,6 @@ import (
 type AiForecastPack struct {
 	*xweb.Action
 	createOrder xweb.Mapper `xweb:"/aiForecastPack/createOrder"` //创建订单
-	testO       xweb.Mapper `xweb:"/aiForecastPack/testO"`       //test
-}
-
-func (a *AiForecastPack) TestO() {
-	now := time.Now()
-	nowFormat := qutil.FormatDate(&now, qutil.Date_Full_Layout)
-	entity.UpdateAiCount(2, "5ecf2ac62757344d40b1032e", nowFormat)
 }
 
 //创建订单

+ 17 - 1
src/jfw/modules/subscribepay/src/service/userAccountInfo.go

@@ -6,6 +6,7 @@ import (
 	"config"
 	"database/sql"
 	"encoding/base64"
+	"entity"
 	"fmt"
 	"log"
 	"mongodb"
@@ -66,9 +67,17 @@ func (this *UserAccount) GetSimpleData() {
 	if headImage == "" {
 		headImage = this.GetSession("s_headimageurl")
 	}
+	nickname, _ := this.GetSession("phone").(string)
+	if nickname == "" {
+		nickname, _ = qutil.If(this.GetSession("s_nickname") != nil, this.GetSession("s_nickname"), this.GetSession("app_name")).(string)
+	} else {
+		if jy.IsPhone(nickname) {
+			nickname = string(nickname[0:3]) + "****" + string(nickname[(len(nickname)-4):])
+		}
+	}
 	this.ServeJson(map[string]interface{}{
 		"userId":    qutil.EncodeArticleId(qutil.ObjToString(this.GetSession("userId"))),
-		"nickName":  this.GetSession("s_nickname"),
+		"nickName":  nickname,
 		"headImage": headImage,
 	})
 }
@@ -345,6 +354,13 @@ func (this *UserAccount) PhoneBind() {
 				return nil, fmt.Errorf("手机号已被绑定")
 			}
 			if mode == "" || relationPhoneId == "" { //主动绑定-建立双向绑定关系||跳转绑定新手机号
+				if relationPhoneId == "" {
+					//船新用户 查看是否有邀请关系 shareRedisName
+					s_m_openid := qutil.ObjToString((*uData)["s_m_openid"])
+					if shareUid := redis.GetStr(config.Config.ShareRedisName, fmt.Sprintf("rec_%s", s_m_openid)); shareUid != "" {
+						entity.NewShareFission(userId, shareUid).AddPower()
+					}
+				}
 				//建立关联关系
 				if bindErr := jy.NewPhoneUtil(util.MQFW).BindPhone(userId, relationPhoneId, phoneVerify, &map[string]interface{}{
 					"s_unionid":      (*uData)["s_unionid"],

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

@@ -2,8 +2,11 @@ package util
 
 import (
 	"fmt"
+	"log"
 	"math"
 	qutil "qfw/util"
+	qrpc "qfw/util/rpc"
+	"strconv"
 	"strings"
 	"time"
 )
@@ -147,3 +150,22 @@ func GetDateSub(start, end int64) (monthNum, yearNum int) {
 	//upgradeYear, upgradeMonth
 	return yearNum, monthNum
 }
+
+//app推送 拉新结束后
+func SendPush(userinfo map[string]interface{}, pushRpc, userid string) {
+	if userinfo["s_opushid"] != nil || userinfo["s_jpushid"] != nil {
+		log.Println("拉新 开始app推送", userid)
+		ok := qrpc.AppPush(pushRpc, map[string]interface{}{
+			"phoneType":   userinfo["s_appponetype"],
+			"descript":    "您的好友已通过您的分享注册剑鱼标讯成功!您已获得7天超级订阅权益!",
+			"type":        "sharefission",
+			"userId":      userid,
+			"url":         "/jyapp/free/sess/" + Se_Topnet.EncodeString(userid+",_id,"+strconv.Itoa(int(time.Now().Unix()))+",viphomepage"),
+			"otherPushId": userinfo["s_opushid"],
+			"jgPushId":    userinfo["s_jpushid"], //极光-推送id
+		})
+		log.Println("拉新 app推送结束", ok, userid)
+	} else {
+		log.Println(userinfo["s_opushid"], userinfo["s_jpushid"], "推送失败", userid)
+	}
+}

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

@@ -30,7 +30,7 @@
     "tpl_logapply_id": "nWhZ25_llXTKg-3ulTpwAVIdDzRxnxyQ36MdHAiANOk",
     "tpl_datareport_id": "bkGuL_twVo6lTiMQhN_fWiE2TtqvewvPMElQ14IidCY",
     "tpl_activeapply_id": "zZ5ELQuVLfWH3a9cNAf2OBAnn30iY-ywI1rqByJ6KTI",
-    "weixinAutoRpl": "感谢使用剑鱼标讯!\n1.<a href='%s'>【订阅招标信息】</a>\n2.<a href='%s'>【搜索招标信息】</a>\n3.<a href='http://mp.weixin.qq.com/mp/homepage?__biz=MzIyNTM1NDUyNw==&hid=1&sn=f9e98da1975f85011ee138a4ee5cfbe8#wechat_redirect'>【产品帮助】</a>\n4.<a href='%s'>点击这里,查看“%s”的相关招标信息</a>\n5.如需人工协助,请回复“客服”\n6.<a href='https://web-jydev-wcj.jianyu360.cn/front/downloadapppage/normal?source=weixinAutoRpl'>下载剑鱼标讯APP,更加方便快捷</a>\n7.商务合作、渠道代理、媒体合作招募<a href='%s'>【渠道合伙人招募计划限时启动】</a>",
+    "weixinAutoRpl": "感谢使用剑鱼标讯!\n1.<a href='%s'>【订阅招标信息】</a>\n2.<a href='%s'>【搜索招标信息】</a>\n3.<a href='http://mp.weixin.qq.com/mp/homepage?__biz=MzIyNTM1NDUyNw==&hid=1&sn=f9e98da1975f85011ee138a4ee5cfbe8#wechat_redirect'>【产品帮助】</a>\n4.<a href='%s'>点击这里,查看“%s”的相关招标信息</a>\n5.如需人工协助,请回复“客服”\n6.<a href='https://web-jydev-wcj.jianyu360.cn/front/downloadapppage/normal?source=weixinAutoRpl'>下载剑鱼标讯APP,更加方便快捷</a>\n7.呼朋唤友,双方各<a href='%s'>免费获得超级订阅7天</a> \n8.商务合作、渠道代理、媒体合作招募<a href='%s'>【渠道合伙人招募计划限时启动】</a>",
     "autoReplay": {
         "title": "【剑鱼标讯】 两种方法订阅招标信息",
         "url": "https://mp.weixin.qq.com/s?__biz=MzIyNTM1NDUyNw==&mid=100000001&idx=1&sn=58e6008f0577d529a56c9ed78724decf&scene=1&srcid=0628FMQzB61orhqGhfw7fOqT&key=77421cf58af4a653210206f66c0cd4486112d12cb69b77c0c8f926d725679273cf44f733f8993123ef0295c72b8946ba&ascene=0&uin=NDMwMjg4NTU1&devicetype",

+ 2 - 1
src/jfw/modules/weixin/src/wx/wx.go

@@ -262,6 +262,7 @@ func MsgTxtHandler(w ResponseWriter, r *Request) {
 			searchWord := strings.TrimSpace(r.Content)
 			searchWordUrl := fmt.Sprintf(config.Sysconfig["proxysess"].(string), se.EncodeString(openid+","+user.UnionId+","+strconv.Itoa(int(time.Now().Unix()))+",searchKeyword")) + "__" + url.QueryEscape(searchWord)
 			chanPartnerUrl := fmt.Sprintf(config.Sysconfig["proxysess"].(string), se.EncodeString(openid+","+user.UnionId+","+strconv.Itoa(int(time.Now().Unix()))+",chanpartner"))
+			vipFree7Url := fmt.Sprintf(config.Sysconfig["proxysess"].(string), se.EncodeString(openid+","+user.UnionId+","+strconv.Itoa(int(time.Now().Unix()))+",vipFree7"))
 			if len(searchWord) > 0 && len([]rune(searchWord)) > 8 {
 				searchWord = string([]rune(searchWord)[:8]) + "..."
 			}
@@ -270,7 +271,7 @@ func MsgTxtHandler(w ResponseWriter, r *Request) {
 				var activeUrl = fmt.Sprintf(config.Sysconfig["proxysess"].(string), se.EncodeString(openid+","+user.UnionId+","+strconv.Itoa(int(time.Now().Unix()))+",viphomepage"))
 				w.ReplyText(fmt.Sprintf(config.ActiveConfig.AutoRpl, activeUrl, rsssetUrl, searchUrl, searchWordUrl, searchWord))
 			} else {
-				w.ReplyText(fmt.Sprintf(config.Sysconfig["weixinAutoRpl"].(string), rsssetUrl, searchUrl, searchWordUrl, searchWord, chanPartnerUrl))
+				w.ReplyText(fmt.Sprintf(config.Sysconfig["weixinAutoRpl"].(string), rsssetUrl, searchUrl, searchWordUrl, searchWord, vipFree7Url, chanPartnerUrl))
 			}
 		}
 	}

+ 1 - 1
src/jfw/public/limitSearchText.go

@@ -25,7 +25,7 @@ type LimitSearchText struct {
 
 func IsSearchLimit(searchItems []string) bool {
 	for _, searchItem := range searchItems {
-		if searchItem == "content" || searchItem == "filetext" {
+		if searchItem == "detail" || searchItem == "filetext" {
 			return true
 		}
 	}

+ 2 - 1
src/phoneFilter.json

@@ -14,7 +14,8 @@
 		"^/front/downloadJyApp/qr$",
 		"^/qr$",
 		"^/front/landpage/captcha$",
-		"^/biddetail/(\\w+)/qr/(.*)"
+		"^/biddetail/(\\w+)/qr/(.*)",
+		"^/swordfish/about$"
 	],
 	"sessUrl":{
 		"/jyTreasureBox/treasureBox":"",

BIN
src/web/staticres/big-member/image/customer/customer-wx-new.png


+ 10 - 12
src/web/staticres/big-member/js/public_big.js

@@ -1,3 +1,13 @@
+try {
+    var injectLogic = logic
+    logic = function (data, num) {
+        if (data.result === 'ok') {
+            location.reload()
+        }
+        injectLogic(data, num)
+    }
+    haslogin(pageUserInfo.logid);
+} catch (e) {}
 if (!pageUserInfo) {
      window.pageUserInfo = {
         memberStatus: 0,
@@ -64,18 +74,6 @@ $(function () {
     try {
         initInsetSwiper()
     } catch (err) {}
-    try {
-        try {
-            var injectLogic = logic
-            logic = function (data, num) {
-                if (data.result === 'ok') {
-                    location.reload()
-                }
-                injectLogic(data, num)
-            }
-            haslogin(pageUserInfo.logid);
-        } catch (e) {}
-    } catch (err) {}
 
     var sourceMap = {
         业务拓展分析: {

+ 1 - 4
src/web/staticres/common-module/buyer-search/buyer-search-template.prefixer.css

@@ -455,8 +455,6 @@
     color: #171826;
     line-height: 0.48rem;
     font-size: 0.28rem;
-    margin-top: 0.32rem;
-    margin-bottom: 0.16rem;
 }
 .v-buyer-search-group .more-popup-content .select-more-tag-group .select-tag-content {
     margin-bottom: -0.08rem;
@@ -559,8 +557,7 @@
 .v-buyer-search-group .more-popup-content .select-more-tag-group {
     font-family: PingFang SC, PingFang SC-Medium;
     border-bottom: 1px solid rgba(0,0,0,0.05);
-    padding: 0 0.32rem;
-    padding-bottom: 0.16rem;
+    padding: .1rem 0.16rem;
 }
 
 .v-buyer-search-group .more-popup-content .select-more-tag-group .disabled-tag {

+ 64 - 170
src/web/staticres/common-module/ent-search/ent-search-template.js

@@ -875,7 +875,7 @@ window.vEntSearchComponent = new Vue({
 window.vBuyerSearchComponent = new Vue({
   el: '#v-buyer-search-group',
   components: {
-    areaComponent: areaComponent,
+    areaCityMobile: areaCityMobileComponent,
     moneyComponent: moneyComponent,
     dateComponent: dateComponent,
     industryComponent: industryComponent,
@@ -989,127 +989,13 @@ window.vBuyerSearchComponent = new Vue({
             checked: false,
             key: 'E'
           }
-        ],
-        4: [
-          {
-            title: '全部',
-            checked: true,
-            key: 'A,B,C,D'
-          },
-          {
-            title: '有限责任公司',
-            checked: false,
-            key: 'A'
-          },
-          {
-            title: '股份有限公司',
-            checked: false,
-            key: 'B'
-          },
-          {
-            title: '有限合伙',
-            checked: false,
-            key: 'C'
-          },
-          {
-            title: '普通合伙',
-            checked: false,
-            key: 'D'
-          }
-        ],
-        5: [
-          {
-            title: '全部',
-            checked: true,
-            key: 'A,B,C,D'
-          },
-          {
-            title: '存续(在营、开业、在业)',
-            checked: false,
-            key: 'A'
-          },
-          {
-            title: '吊销',
-            checked: false,
-            key: 'B'
-          },
-          {
-            title: '注销',
-            checked: false,
-            key: 'C'
-          },
-          {
-            title: '撤销',
-            checked: false,
-            key: 'D'
-          }
-        ],
-        8: [
-          {
-            title: '不限',
-            checked: true,
-            key: ''
-          },
-          {
-            title: '采购单位',
-            checked: false,
-            key: '1'
-          },
-          {
-            title: '投标企业',
-            checked: false,
-            key: '2'
-          },
-          {
-            title: '招标代理机构',
-            checked: false,
-            key: '3'
-          },
-          {
-            title: '厂商',
-            checked: false,
-            key: '4'
-          }
-        ],
-        9: [
-          {
-            title: '不限',
-            checked: true,
-            key: ''
-          },
-          {
-            title: '固定电话',
-            checked: false,
-            key: '1'
-          },
-          {
-            title: '手机号',
-            checked: false,
-            key: '2'
-          },
-          // {
-          //   title: '电子邮箱',
-          //   checked: false,
-          //   key: '3'
-          // },
-          // {
-          //   title: '无联系方式',
-          //   checked: false,
-          //   key: '4'
-          // }
         ]
       },
       conditionStrMap: {
         matchType: 'A',
-        entArea: '',
-        entCity: '',
-        entCapital: '',
-        entType: '',
-        entStatus: '',
-        biddingArea: '',
-        entClass: '',
-        establish: '',
-        entContact: ''
+        industry: [],
+        area: [],
+        buyerclass: [],
       },
       isSelectConditionTabs: {
         1: false,
@@ -1162,22 +1048,9 @@ window.vBuyerSearchComponent = new Vue({
         endDate: '',
         exact: ''
       },
-      entList: [
-        {
-            Buyer: '北京万达时业科技发展有限公司',
-            Budget: 0,
-            Area: '北京',
-            City: '北京市',
-            PNCount: 8
-        },
-        {
-            Buyer: '北京市园林设计工程有限公司',
-            Budget: 0,
-            Area: '北京',
-            City: '北京市',
-            PNCount: 8
-        }
-      ]
+      entList: [],
+      buyerList: [],
+      checked: false
     }
   },
   computed: {
@@ -1226,7 +1099,17 @@ window.vBuyerSearchComponent = new Vue({
       this.isSelectConditionTabs[(i > 4 ? 4: i)] = type
       switch (i) {
         case 1 : {
-          this.conditionStrMap.matchType = this.getMoreListToStr(1)
+          var tempParams = {}
+          if (type) {
+            tempParams = this.$refs.areaCitySelector.onConfirm()
+          } else {
+            tempParams = this.$refs.areaCitySelector.resetAll()
+          }
+          if (tempParams && tempParams.data) {
+            this.conditionStrMap.area = tempParams.data
+          } else {
+            this.conditionStrMap.area = []
+          }
           break
         }
         case 2: {
@@ -1242,12 +1125,16 @@ window.vBuyerSearchComponent = new Vue({
         case 3: {
           var tempParams = {}
           if (type) {
-            tempParams = this.$refs.moneyComponent.onConfirm()
+            tempParams = this.$refs.cateComponent.onConfirm()
           } else {
-            tempParams = this.$refs.moneyComponent.resetAll()
+            tempParams = this.$refs.cateComponent.resetAll()
+            this.cateComponentKey = new Date().getTime()
           }
-          if (tempParams) {
-            this.conditionStrMap.entCapital = tempParams.data
+          console.log(tempParams)
+          if (tempParams && tempParams.data) {
+            this.conditionStrMap.buyerclass = tempParams.data
+          } else {
+            this.conditionStrMap.buyerclass = []
           }
           break
         }
@@ -1344,17 +1231,35 @@ window.vBuyerSearchComponent = new Vue({
       }
       window.location.href = (utils.isWeiXinBrowser ? '/front' : '/jyapp') + '/vipsubscribe/vipsubscribe_new'
     },
+    // 获取地区数据
+    getAreaConfirm (data) {
+      console.log(data)
+      this.conditionStrMap.area = data.data
+    },
+    getCancel (data) {
+      console.log(data)
+    },
+    // 获取行业数据
+    getIndustryData(data) {
+      if(data) {
+        this.conditionStrMap.industry = data.data
+      }
+    },
+    // 获取客户分类数据
+    getCateData(data) {
+      console.log(data)
+      this.conditionStrMap.buyerclass = data
+    },
     getSearchParams () {
       var tempParams = {
         match: this.listInfo.value,
         pageSize: this.listInfo.pageSize,
         pageNum: this.listInfo.pageNum
       }
-      for (var k in this.conditionStrMap) {
-        if (this.conditionStrMap[k]) {
-          tempParams[k] = this.conditionStrMap[k]
-        }
-      }
+      // for (var k in this.conditionStrMap) {
+      //   tempParams[k] = this.conditionStrMap[k]
+      // }
+      Object.assign(tempParams, this.conditionStrMap)
       return tempParams
     },
     onLoad () {
@@ -1364,8 +1269,8 @@ window.vBuyerSearchComponent = new Vue({
       if (r && r.error_msg == '' && r.data) {
         this.listInfo.pageNum++
         if (this.listInfo.pageNum === 1) {
-          if (r.data.total || r.data.total === 0) {
-            this.listInfo.total = r.data.total
+          if (r.data.count || r.data.count === 0) {
+            this.listInfo.total = r.data.count
             this.showUpTip = false
           } else {
             this.showUpTip = true
@@ -1375,34 +1280,23 @@ window.vBuyerSearchComponent = new Vue({
 
         if (r.data.list) {
           var _this = this
-          this.list = this.list.concat(r.data.list.map(function (v) {
-            return {
-              name: v.company_name,
-              abbr: getShortName(v.company_name),
-              color: _this.statusColors[Math.floor(Math.random() * _this.statusColors.length)],
-              legal: v.legal_person,
-              money: v.capital,
-              address: v.company_address,
-              _id: v.id,
-              status: _this.statusEnum.indexOf(v.company_status) || 0,
-              checked: false
-            }
-          }))
+          this.buyerList = this.buyerList.concat(r.data.list)
         }
 
         this.listInfo.loading = false
-        if (this.listInfo.total !== -1 && this.listInfo.total <= this.list.length) {
+        if (this.listInfo.total !== -1 && this.listInfo.total <= this.buyerList.length) {
           this.listInfo.finished = true
         }
       }
     },
     ajaxEntList() {
+      let aa = this.getSearchParams()
+      console.log()
       return $.ajax({
-        url: '/publicapply/enterpriseSearch/doQuery',
+        url: '/entniche/customer/corList',
         type: 'POST',
-        contentType: 'application/x-www-form-urlencoded',
-        data: this.getSearchParams(),
-        dataType: 'json'
+        contentType: 'application/json',
+        data: JSON.stringify(aa)
       })
     },
     doQueryList () {
@@ -1524,12 +1418,12 @@ window.vBuyerSearchComponent = new Vue({
       this.showPopForArea = status
     },
     onSelectMoreGroup (index) {
-      if (this.entTabs[index].disabled) {
-        return this.showBuyTip()
-      }
-      if (index === 7) {
-          this.togglePopForArea(true)
-      }
+      // if (this.entTabs[index].disabled) {
+      //   return this.showBuyTip()
+      // }
+      // if (index === 7) {
+      //     this.togglePopForArea(true)
+      // }
     },
     onSelectMoreItem (index, tags, tagIndex) {
       if (this.entTabs[index].disabled) {

+ 25 - 4
src/web/staticres/common-module/messageCenter/js/detail.js

@@ -43,22 +43,44 @@ var vm = new Vue({
     el.scrollTop = el.scrollHeight
   },
   methods: {
+    platType() {
+      let wxType = getType()
+      if (wxType) {
+        return 3
+      } else {
+        return 2
+      }
+    },
     // 点击分类修改分类下的消息为已读
     setRead(val) {
+      const _this = this
       $.ajax({
         type:'POST',
         url:'/jymessageCenter/setReadStatus',
         data: {
           msgType: val
         },
-        success:function (res) {
-          console.log(res)
-        }
+        success:function () {}
+      })
+    },
+    appMesg(type) {
+      const _this = this
+      $.ajax({
+        type: 'GET',
+        url: '/jymessageCenter/appClickMessage',
+        data: {
+          msgType: type,
+          platform: _this.platType(),
+          offset: this.tabsList.offset,
+          pageSize: this.tabsList.pageSize
+        },
+        success:function () {}
       })
     },
     // 消息详情
     msgData() {
       const _this = this
+      this.appMesg(getQueryString('type'))
       $.ajax({
         type: 'POST',
         url: '/jymessageCenter/messageList',
@@ -106,7 +128,6 @@ var vm = new Vue({
       })
     },
     msgClick(url) {
-      console.log(url)
       let wxType = getType()
       let appType = androidOrIOS()
       if (wxType) {

+ 42 - 27
src/web/staticres/common-module/messageCenter/js/index.js

@@ -65,7 +65,7 @@ var vm = new Vue({
       })
     },
     // 点击置顶消息为已读
-    topRead(ids) {
+    topRead(ids, url, type) {
       const _this = this
       $.ajax({
         type:'POST',
@@ -74,48 +74,63 @@ var vm = new Vue({
           msgId: ids,
           msgType: type
         },
-        success:function (res) {
-          console.log(res)
+        success:function () {
           _this.msgData()
+          if (url) {
+            location.href = url
+          }
         }
       })
     },
+    platType() {
+      let wxType = getType()
+      if (wxType) {
+        return 3
+      } else {
+        return 2
+      }
+    },
+    clickMesg(logid) {
+      const _this = this
+      $.ajax({
+        type: 'GET',
+        url: '/jymessageCenter/clickMessage',
+        data: {
+          msgLogId: logid,
+          platform: _this.platType()
+        },
+        success:function () {}
+      })
+    },
     // 置顶消息跳转
-    msgClick(url, num, ids, type) {
-      console.log(url)
+    msgClick(url, num, ids, type, logid) {
+      this.clickMesg(logid)
       let wxType = getType()
       let appType = androidOrIOS()
       if (wxType) {
-        if (url.weChatUrl) {
-          if (!num) {
-            this.topRead(ids, type)
-          }
-          setTimeout(() => {
-            location.href = url.weChatUrl
-          }, 300)
+        if (!num) {
+          this.topRead(ids, url.weChatUrl, type)
         } else {
-          return
+          if (url.weChatUrl) {
+            location.href = url.weChatUrl
+          }
         }
       } else {
         if (appType == 'android') {
-          if (url.androidUrl) {
-            location.href = url.androidUrl
-            if (!num) {
-              this.topRead(ids)
-            }
+          if (!num) {
+            this.topRead(ids, url.androidUrl, type)
           } else {
-            return
+            if (url.androidUrl) {
+              location.href = url.androidUrl
+            }
           }
         } else {
-          if (url.iosUrl) {
-            if (!num) {
-              this.topRead(ids)
-            }
-            setTimeout(() => {
-              location.href = url.iosUrl
-            }, 300)
+          if (!num) {
+            this.topRead(ids, url.iosUrl, type)
           } else {
-            return
+            if (url.iosUrl) {
+              location.href = url.iosUrl
+            }
           }
         }
       }

BIN
src/web/staticres/common-module/vipsubscribe/image/info/btnBottom.png


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_01.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_02.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_03.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_04.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_05.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_06.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/cut_07.jpg


BIN
src/web/staticres/common-module/vipsubscribe/image/info/tagBottom.png


+ 874 - 753
src/web/staticres/css/subscribe_new.css

@@ -1,1083 +1,1204 @@
 /* banner图板块 */
 .tender-1 {
-    width: 100%;
-    /* height: 475px; */
+  width: 100%;
+  background: linear-gradient(180deg, #fff9f2 0%, #fffdfa 100%);
+  position: relative;
+  z-index: 2;
 }
 
 .tender-1 .imgauto {
-    width: 100%;
-    /* height: 100%; */
-    /* margin: 0 auto; */
+  width: 100%;
 }
 
 .tender-1 .imgauto img {
-    width: 100%;
-    z-index: 1;
+  width: 100%;
+  min-height: 525px;
+  z-index: 1;
+  display: inline-block;
 }
 
 /* 订阅模式选择板块 */
 
 .subscription {
-    width: 100%;
-    height: 268px;
-    margin-top: -70px;
+  width: 100%;
+  height: 268px;
+  margin-top: -70px;
 }
 
 .subscription .sub-center {
-    width: 840px;
-    height: 268px;
-    margin: 0 auto;
-    display: flex;
-    justify-content: center;
+  width: 840px;
+  height: 268px;
+  margin: 0 auto;
+  display: flex;
+  justify-content: center;
 }
 
 .subscription .sub-center .sub-free {
-    width: 402px;
-    height: 250px;
-    background: url('/images/subscribe/free.png') no-repeat;
+  width: 402px;
+  height: 250px;
+  background: url("/images/subscribe/free.png") no-repeat;
 }
 
 .subscription .sub-center .sub-free .free-title {
-    width: 402px;
-    height: 26px;
-    margin-top: 57px;
-    text-align: center;
-    font-size: 20px;
-    font-family: Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    line-height: 26px;
-    color: rgba(255, 255, 255, 1);
-    opacity: 1;
+  width: 402px;
+  height: 26px;
+  margin-top: 57px;
+  text-align: center;
+  font-size: 20px;
+  font-family: Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  line-height: 26px;
+  color: rgba(255, 255, 255, 1);
+  opacity: 1;
 }
 
 .subscription .sub-center .sub-free .free-btn {
-    width: 180px;
-    height: 46px;
-    background: rgba(44, 183, 202, 1);
-    opacity: 1;
-    border-radius: 6px;
-    margin: 76px auto;
-    display: block;
-    text-align: center;
-    font-size: 18px;
-    font-family: Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    line-height: 46px;
-    color: rgba(255, 255, 255, 1);
-    opacity: 1;
-    transition: all 0.5s;
+  width: 180px;
+  height: 46px;
+  background: rgba(44, 183, 202, 1);
+  opacity: 1;
+  border-radius: 6px;
+  margin: 76px auto;
+  display: block;
+  text-align: center;
+  font-size: 18px;
+  font-family: Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  line-height: 46px;
+  color: rgba(255, 255, 255, 1);
+  opacity: 1;
+  transition: all 0.5s;
 }
 
 .subscription .sub-center .sub-free .free-btn:hover {
-    transform: scale(1.1);
-    transition: all 0.5s;
+  transform: scale(1.1);
+  transition: all 0.5s;
 }
 
 .subscription .sub-center .sub-vip {
-    width: 402px;
-    height: 250px;
-    background: url('/images/subscribe/vip.png') no-repeat;
-    background-position-x: center;
-    /* margin-left: 54px; */
+  width: 402px;
+  height: 250px;
+  background: url("/images/subscribe/vip.png") no-repeat;
+  background-position-x: center;
+  /* margin-left: 54px; */
 }
 
 .subscription .sub-center .sub-vip .vip-logo {
-    width: 402px;
-    height: 38px;
-    margin-top: 57px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
+  width: 402px;
+  height: 38px;
+  margin-top: 57px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
 }
 
 .subscription .sub-center .sub-vip .vip-logo img {
-    width: 38px;
-    height: 38px;
-    margin-right: 10px;
+  width: 38px;
+  height: 38px;
+  margin-right: 10px;
 }
 
 .subscription .sub-center .sub-vip .vip-logo .vip-title {
-    font-size: 20px;
-    font-family: Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    line-height: 26px;
-    color: rgba(255, 218, 177, 1);
-    opacity: 1;
+  font-size: 20px;
+  font-family: Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  line-height: 26px;
+  color: rgba(255, 218, 177, 1);
+  opacity: 1;
 }
 
 .subscription .sub-center .sub-vip .vip-btn {
-    width: 180px;
-    height: 46px;
-    background: rgba(52, 53, 90, 1);
-    margin: 69px auto;
-    opacity: 1;
-    border-radius: 6px;
-    display: block;
-    text-align: center;
-    font-size: 18px;
-    font-family: Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    line-height: 46px;
-    color: rgba(255, 218, 177, 1);
-    transition: all 0.5s;
+  width: 180px;
+  height: 46px;
+  background: rgba(52, 53, 90, 1);
+  margin: 69px auto;
+  opacity: 1;
+  border-radius: 6px;
+  display: block;
+  text-align: center;
+  font-size: 18px;
+  font-family: Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  line-height: 46px;
+  color: rgba(255, 218, 177, 1);
+  transition: all 0.5s;
 }
 
 .subscription .sub-center .sub-vip .vip-btn:hover {
-    transform: scale(1.1);
-    transition: all 0.5s;
+  transform: scale(1.1);
+  transition: all 0.5s;
 }
 
 /* 订阅模式对比板块 */
 .sub-contrast {
-    width: 100%;
-    min-height: 1020px;
-    margin-top: 79px;
+  width: 100%;
+  min-height: 1020px;
+  margin-top: -160px;
 }
 
 .sub-contrast .contrast-header {
-    width: 100%;
-    height: 31px;
+  width: 100%;
+  height: 31px;
 }
 
 .sub-contrast .contrast-header .header-title {
-    width: 331px;
-    height: 31px;
-    line-height: 31px;
-    margin: 0 auto;
-    background: url('/images/subscribe/line.png') no-repeat;
-    font-size: 24px;
-    font-family: Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    color: rgba(29, 29, 29, 1);
-    opacity: 1;
-    text-align: center;
-    background-position: center;
+  width: 331px;
+  height: 31px;
+  line-height: 31px;
+  margin: 0 auto;
+  background: url("/images/subscribe/line.png") no-repeat;
+  font-size: 24px;
+  font-family: Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  color: rgba(29, 29, 29, 1);
+  opacity: 1;
+  text-align: center;
+  background-position: center;
 }
 
 .sub-contrast .contrast-main {
-    width: 100%;
-    height: 1020px;
-    margin-top: 32px;
+  width: 100%;
+  height: 1020px;
+  margin-top: 32px;
 }
 
 .sub-contrast .contrast-main .contrast-main-center {
-    width: 1140px;
-    margin: 0 auto;
-    display: flex;
-    /* border: 1px solid rgba(224,224,224,1); */
+  width: 1140px;
+  margin: 0 auto;
+  display: flex;
+  /* border: 1px solid rgba(224,224,224,1); */
 }
 
 /* 功能/价格 */
 /* li+li表示选中除第一个li其他所有的li */
 .sub-contrast .contrast-main .contrast-main-center .center-left {
-    width: 468px;
+  width: 468px;
 }
 
 .sub-contrast .contrast-main .contrast-main-center .center-left > ul {
-    width: 468px;
-    margin: 0;
+  width: 468px;
+  margin: 0;
 }
 
-.sub-contrast .contrast-main .contrast-main-center .center-left > ul .modify-left {
-    border-left: 1px solid #ececec;
-    border-top: 1px solid #ececec;
-    width: 100%;
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-left
+  > ul
+  .modify-left {
+  border-left: 1px solid #ececec;
+  border-top: 1px solid #ececec;
+  width: 100%;
 }
 
 .sub-contrast .contrast-main .contrast-main-center .center-left > ul li + li {
-    color: rgba(29, 29, 29, 1);
-    padding-left: 24px;
-    width: 468px;
-    opacity: 1;
-    border-left: 1px solid #ececec;
-    border-bottom: 1px solid #ececec;
-    border-right: 1px solid #ececec;
-    font-family: Microsoft YaHei,sans-serif;
-}
-.sub-contrast .contrast-main .contrast-main-center .center-left > ul li + li:not(.double){
-    height: 52px;
-    line-height: 52px;
-    font-size: 16px;
-    font-weight: 400;
-    color: rgba(29, 29, 29, 1);
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-left > ul li + li.double{
-    height: 74px;
-    font-size: 16px;
-    font-weight: 400;
-    color: rgba(29, 29, 29, 1);
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-}
-.sub-contrast .contrast-main .contrast-main-center .center-left > ul li + li.double>div:nth-child(1){
-    font-size: 16px;
-    line-height: 24px;
-    color: #1D1D1D;
-    font-weight: 400;
-}
-.sub-contrast .contrast-main .contrast-main-center .center-left > ul li + li.double>div:nth-child(2){
-    font-size: 14px;
-    font-weight: 400;
-    color: #686868;
-    line-height: 22px;
+  color: rgba(29, 29, 29, 1);
+  padding-left: 24px;
+  width: 468px;
+  opacity: 1;
+  border-left: 1px solid #ececec;
+  border-bottom: 1px solid #ececec;
+  border-right: 1px solid #ececec;
+  font-family: Microsoft YaHei, sans-serif;
+}
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-left
+  > ul
+  li
+  + li:not(.double) {
+  height: 52px;
+  line-height: 52px;
+  font-size: 16px;
+  font-weight: 400;
+  color: rgba(29, 29, 29, 1);
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-left
+  > ul
+  li
+  + li.double {
+  height: 74px;
+  font-size: 16px;
+  font-weight: 400;
+  color: rgba(29, 29, 29, 1);
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+}
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-left
+  > ul
+  li
+  + li.double
+  > div:nth-child(1) {
+  font-size: 16px;
+  line-height: 24px;
+  color: #1d1d1d;
+  font-weight: 400;
+}
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-left
+  > ul
+  li
+  + li.double
+  > div:nth-child(2) {
+  font-size: 14px;
+  font-weight: 400;
+  color: #686868;
+  line-height: 22px;
 }
 .sub-contrast .contrast-main .contrast-main-center .gray {
-    background: #F5F5FB;
+  background: #f5f5fb;
 }
 
 .sub-contrast .contrast-main .contrast-main-center .gold {
-    background: #FBF5EB !important;
+  background: #fbf5eb !important;
 }
 
-
 /* 免费版 */
 .sub-contrast .contrast-main .contrast-main-center .center-center {
-    width: 336px;
-    transition: all 0.5s;
+  width: 336px;
+  transition: all 0.5s;
 }
 
 .sub-contrast .contrast-main .contrast-main-center .center-center > ul {
-    width: 336px;
-    transition: all 0.5s;
-    margin: 0;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-center > ul li + li{
-    transition: all 0.5s;
-    width: 336px;
-    text-align: center;
-    font-size: 14px;
-    font-family: Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    color: rgba(29, 29, 29, 1);
-    opacity: 1;
-    border-bottom: 1px solid #ececec;
-    border-right: 1px solid #ececec;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-center > ul li + li:not(.double) {
-    height: 52px;
-    line-height: 52px;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-center > ul li + li.double {
-    height: 74px;
-    line-height: 74px;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-center > ul li:last-of-type {
-    display: flex;
-    transition: all 0.5s;
-    justify-content: center;
-    align-items: center;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-center ul li:last-of-type .btn-free {
-    display: block;
-    cursor: pointer;
-    transition: all 0.5s;
-    width: 90px;
-    height: 30px;
-    background: rgba(246, 246, 246, 1);
-    opacity: 1;
-    border-radius: 4px;
-    font-size: 16px;
-    font-family: Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    line-height: 26px;
-    color: rgba(104, 104, 104, 1);
+  width: 336px;
+  transition: all 0.5s;
+  margin: 0;
+}
+
+.sub-contrast .contrast-main .contrast-main-center .center-center > ul li + li {
+  transition: all 0.5s;
+  width: 336px;
+  text-align: center;
+  font-size: 14px;
+  font-family: Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  color: rgba(29, 29, 29, 1);
+  opacity: 1;
+  border-bottom: 1px solid #ececec;
+  border-right: 1px solid #ececec;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-center
+  > ul
+  li
+  + li:not(.double) {
+  height: 52px;
+  line-height: 52px;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-center
+  > ul
+  li
+  + li.double {
+  height: 74px;
+  line-height: 74px;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-center
+  > ul
+  li:last-of-type {
+  display: flex;
+  transition: all 0.5s;
+  justify-content: center;
+  align-items: center;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-center
+  ul
+  li:last-of-type
+  .btn-free {
+  display: block;
+  cursor: pointer;
+  transition: all 0.5s;
+  width: 90px;
+  height: 30px;
+  background: rgba(246, 246, 246, 1);
+  opacity: 1;
+  border-radius: 4px;
+  font-size: 16px;
+  font-family: Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  line-height: 26px;
+  color: rgba(104, 104, 104, 1);
 }
 
 /* 免费版滑过特效 */
 .sub-contrast .contrast-main .contrast-main-center .center-center:hover {
-    position: relative;
+  position: relative;
 }
 .sub-contrast .contrast-main .contrast-main-center .center-center:hover ul {
-    transition: 0.5s;
-    box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.2);
-    margin-top: -22px;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-center:hover ul .modify-center {
-    height: 90px;
-    line-height: 90px;
-    transition: 0.5s;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-center:hover ul li:last-of-type {
-    height: 65px;
-    transition: 0.5s;
-    line-height: 80px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-center:hover ul li:last-of-type .btn-free {
-    transition: 0.5s;
-    background: rgba(44, 183, 202, 1);
-    color: white;
+  transition: 0.5s;
+  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.2);
+  margin-top: -22px;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-center:hover
+  ul
+  .modify-center {
+  height: 90px;
+  line-height: 90px;
+  transition: 0.5s;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-center:hover
+  ul
+  li:last-of-type {
+  height: 65px;
+  transition: 0.5s;
+  line-height: 80px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-center:hover
+  ul
+  li:last-of-type
+  .btn-free {
+  transition: 0.5s;
+  background: rgba(44, 183, 202, 1);
+  color: white;
 }
 
 /* VIP订阅专属服务 */
 .sub-contrast .contrast-main .contrast-main-center .center-right {
-    width: 336px;
-    transition: all 0.5s;
-    border-right: 1px solid #ececec
+  width: 336px;
+  transition: all 0.5s;
+  border-right: 1px solid #ececec;
 }
 
 .sub-contrast .contrast-main .contrast-main-center .center-right > ul {
-    width: 336px;
-    margin: 0;
-    transition: all 0.5s;
+  width: 336px;
+  margin: 0;
+  transition: all 0.5s;
 }
 
 .sub-contrast .contrast-main .contrast-main-center .center-right > ul li + li {
-    width: 336px;
-    text-align: center;
-    transition: all 0.5s;
-    font-size: 14px;
-    font-family: Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    color: #714402;
-    background: rgba(255, 226, 193, 0.07999999821186066);
-    opacity: 1;
-    border-bottom: 1px solid #ececec;
-}
-.sub-contrast .contrast-main .contrast-main-center .center-right > ul li + li:not(.double) {
-    height: 52px;
-    line-height: 52px;
-}
-.sub-contrast .contrast-main .contrast-main-center .center-right > ul li + li.double {
-    height: 74px;
-    line-height: 74px;
-}
-.sub-contrast .contrast-main .contrast-main-center .center-right > ul li:last-of-type {
-    align-items: center;
-    transition: all 0.5s;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-right > ul li:last-of-type .On-trial {
-    width: 90px;
-    height: 30px;
-    border: 1px solid rgba(207, 173, 137, 1);
-    transition: all 0.5s;
-    opacity: 1;
-    border-radius: 4px;
-    display: block;
-    text-align: center;
-    line-height: 30px;
-    font-size: 14px;
-    font-family: MicrosoftYaHei;
-    color: rgba(207, 173, 137, 1);
-    margin-left: 16px;
-    text-decoration: none !important;
+  width: 336px;
+  text-align: center;
+  transition: all 0.5s;
+  font-size: 14px;
+  font-family: Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  color: #714402;
+  background: rgba(255, 226, 193, 0.07999999821186066);
+  opacity: 1;
+  border-bottom: 1px solid #ececec;
+}
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-right
+  > ul
+  li
+  + li:not(.double) {
+  height: 52px;
+  line-height: 52px;
+}
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-right
+  > ul
+  li
+  + li.double {
+  height: 74px;
+  line-height: 74px;
+}
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-right
+  > ul
+  li:last-of-type {
+  align-items: center;
+  transition: all 0.5s;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-right
+  > ul
+  li:last-of-type
+  .On-trial {
+  width: 90px;
+  height: 30px;
+  border: 1px solid rgba(207, 173, 137, 1);
+  transition: all 0.5s;
+  opacity: 1;
+  border-radius: 4px;
+  display: block;
+  text-align: center;
+  line-height: 30px;
+  font-size: 14px;
+  font-family: MicrosoftYaHei;
+  color: rgba(207, 173, 137, 1);
+  margin-left: 16px;
+  text-decoration: none !important;
 }
 
 /* VIP订阅滑过特效 */
 .sub-contrast .contrast-main .contrast-main-center .center-right:hover {
-    position: relative;
+  position: relative;
 }
 .sub-contrast .contrast-main .contrast-main-center .center-right:hover ul {
-    margin-top: -22px;
-    box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.2);
-    transition: all 0.5s;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-right:hover ul .modify-right {
-    height: 90px;
-    line-height: 90px;
-    transition: all 0.5s;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-right:hover ul li:last-of-type {
-    height: 65px;
-    line-height: 80px;
-    transition: all 0.5s;
-}
-
-.sub-contrast .contrast-main .contrast-main-center .center-right:hover ul li:last-of-type .On-trial {
-    background: #34355A;
-    font-size: 14px;
-    font-family: MicrosoftYaHei;
-    line-height: 30px;
-    color: rgba(255, 218, 177, 1);
-    transition: all 0.5s;
-    opacity: 1;
-    text-decoration: none;
+  margin-top: -22px;
+  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.2);
+  transition: all 0.5s;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-right:hover
+  ul
+  .modify-right {
+  height: 90px;
+  line-height: 90px;
+  transition: all 0.5s;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-right:hover
+  ul
+  li:last-of-type {
+  height: 65px;
+  line-height: 80px;
+  transition: all 0.5s;
+}
+
+.sub-contrast
+  .contrast-main
+  .contrast-main-center
+  .center-right:hover
+  ul
+  li:last-of-type
+  .On-trial {
+  background: #34355a;
+  font-size: 14px;
+  font-family: MicrosoftYaHei;
+  line-height: 30px;
+  color: rgba(255, 218, 177, 1);
+  transition: all 0.5s;
+  opacity: 1;
+  text-decoration: none;
 }
 
 .sub-contrast .contrast-main .contrast-main-center ul .top-title {
-    height: 68px;
-    text-align: center;
-    transition: all 0.5s;
-    line-height: 68px;
-    font-size: 20px;
-    font-family: Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    color: rgba(29, 29, 29, 1);
-    opacity: 1;
-    /* border-left: 1px solid rgba(224,224,224,1); */
-    border-bottom: 1px solid #ececec;
-    /* border-right: 1px solid rgba(224,224,224,1); */
+  height: 68px;
+  text-align: center;
+  transition: all 0.5s;
+  line-height: 68px;
+  font-size: 20px;
+  font-family: Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  color: rgba(29, 29, 29, 1);
+  opacity: 1;
+  /* border-left: 1px solid rgba(224,224,224,1); */
+  border-bottom: 1px solid #ececec;
+  /* border-right: 1px solid rgba(224,224,224,1); */
 }
 
 /* 选中免费版 */
 .sub-contrast .contrast-main .contrast-main-center ul .modify-center {
-    background: #F5F5FB;
-    width: 100%;
+  background: #f5f5fb;
+  width: 100%;
 }
 
 /* 选中VIP订阅专属服务 */
 .sub-contrast .contrast-main .contrast-main-center ul .modify-right {
-    background: rgba(52, 53, 90, 1);
-    color: rgba(255, 218, 177, 1);
-    position: relative;
-    border-right: 0;
-    width: 100%;
-    background-image: url(/images/subscribe/mengban.png);
-    background-size: 200px 36px;
-    background-repeat: no-repeat;
-    background-position: right bottom;
-}
-
-.sub-contrast .contrast-main .contrast-main-center ul .modify-right img {
-    background: rgba(52, 53, 90, 1);
-    color: rgba(255, 218, 177, 1);
-    position: absolute;
-    right: 0;
-    bottom: 0;
-    width: 174px;
-}
+  background: rgba(52, 53, 90, 1);
+  color: rgba(255, 218, 177, 1);
+  position: relative;
+  border-right: 0;
+  width: 100%;
+  background-image: url(/images/subscribe/mengban.png);
+  background-size: 200px 36px;
+  background-repeat: no-repeat;
+  background-position: right bottom;
+}
+
+/* .sub-contrast .contrast-main .contrast-main-center ul .modify-right img {
+  background: rgba(52, 53, 90, 1);
+  color: rgba(255, 218, 177, 1);
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  width: 174px;
+} */
 
 .sub-contrast .contrast-main .contrast-main-center ul li > p {
-    font-size: 14px;
-    font-family: Microsoft YaHei-Regular, Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    color: #686868;
-    line-height: 22px;
+  font-size: 14px;
+  font-family: Microsoft YaHei-Regular, Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  color: #686868;
+  line-height: 22px;
 }
 
 .sub-contrast .contrast-main i.right::before {
-    display: block;
-    width: 100%;
-    height: 100%;
-    content: "";
-    background-image: url(/images/subscribe/right.png);
-    background-size: 24px 24px;
-    background-repeat: no-repeat;
-    background-position: center;
+  display: block;
+  width: 100%;
+  height: 100%;
+  content: "";
+  background-image: url(/images/subscribe/right.png);
+  background-size: 24px 24px;
+  background-repeat: no-repeat;
+  background-position: center;
 }
 .sub-contrast .contrast-main i.wrong {
-    width: 100%;
-    height: 100%;
+  width: 100%;
+  height: 100%;
 }
 .sub-contrast .contrast-main i.wrong::before {
-    display: block;
-    width: 100%;
-    height: 100%;
-    content: "";
-    background: url("/images/pc/guan.png") no-repeat center;
-    background-size: 16px 16px;
+  display: block;
+  width: 100%;
+  height: 100%;
+  content: "";
+  background: url("/images/pc/guan.png") no-repeat center;
+  background-size: 16px 16px;
 }
 
-
 /* VIP弹窗 */
 .modal-dialog-subvip {
-    width: 335px !important;
-    height: 390px;
-    margin-top: 40px !important;
-    margin: 30px auto;
+  width: 335px !important;
+  height: 390px;
+  margin-top: 40px !important;
+  margin: 30px auto;
 }
 
 .modal-content {
-    width: 335px;
-    height: 400px;
-    position: relative;
+  width: 335px;
+  height: 400px;
+  position: relative;
 }
 
 .modal-content > img {
-    margin: -46px 0 0 -1px;
-    /* height: 447px; */
-    position: relative;
+  margin: -46px 0 0 -1px;
+  /* height: 447px; */
+  position: relative;
 }
 
 .modal-content .vip-code {
-    position: absolute;
-    width: 170px;
-    height: 197px;
-    left: 27.5%;
-    bottom: 10%;
+  position: absolute;
+  width: 170px;
+  height: 197px;
+  left: 27.5%;
+  bottom: 10%;
 }
 
 .modal-content .vip-code .vip-text {
-    width: 180px;
-    height: 21px;
-    font-size: 16px;
-    line-height: 24px;
-    opacity: 1;
-    margin: 20px 0 0 2px;
-    font-family: Microsoft YaHei,sans-serif;
-    color: #714402;
+  width: 180px;
+  height: 21px;
+  font-size: 16px;
+  line-height: 24px;
+  opacity: 1;
+  margin: 20px 0 0 2px;
+  font-family: Microsoft YaHei, sans-serif;
+  color: #714402;
 }
 
 .modal-content .vip-code .vip-text2 {
-    width: 180px;
-    height: 21px;
-    font-size: 16px;
-    line-height: 24px;
-    opacity: 1;
-    margin: 0 0 0 24px;
-    font-family: Microsoft YaHei,sans-serif;
-    color: #714402;
+  width: 180px;
+  height: 21px;
+  font-size: 16px;
+  line-height: 24px;
+  opacity: 1;
+  margin: 0 0 0 24px;
+  font-family: Microsoft YaHei, sans-serif;
+  color: #714402;
 }
 
 .modal-open {
-    overflow: auto !important;
-    padding-right: 0 !important;
+  overflow: auto !important;
+  padding-right: 0 !important;
 }
 
 /*扫码框样式*/
 .jy_province li > font > a {
-    font-size: 14px !important;
+  font-size: 14px !important;
 }
 
 #jydialog {
-    position: fixed;
-    background-color: rgba(0, 0, 0, 0.7);
-    top: 50%;
-    color: #fff;
-    z-index: 999;
-    border-radius: 5px;
-    text-align: center;
-    padding: 20px;
-    left: 50%;
-    margin-top: -50px;
-    margin-left: -145px;
+  position: fixed;
+  background-color: rgba(0, 0, 0, 0.7);
+  top: 50%;
+  color: #fff;
+  z-index: 999;
+  border-radius: 5px;
+  text-align: center;
+  padding: 20px;
+  left: 50%;
+  margin-top: -50px;
+  margin-left: -145px;
 }
 
 .s-com-1 {
-    min-width: 1200px;
-    margin: 0 auto;
-    position: relative;
-    -webkit-font-smoothing: antialiased;
-    width: 100%;
-    overflow: hidden;
-    height: 600px;
+  min-width: 1200px;
+  margin: 0 auto;
+  position: relative;
+  -webkit-font-smoothing: antialiased;
+  width: 100%;
+  overflow: hidden;
+  height: 600px;
 }
 
 .s-com-1-con {
-    width: 1920px;
-    overflow: hidden;
-    left: 50%;
-    margin-left: -960px !important;
-    position: absolute;
+  width: 1920px;
+  overflow: hidden;
+  left: 50%;
+  margin-left: -960px !important;
+  position: absolute;
 }
 
 .j-text {
-    width: 1200px;
-    height: 250px;
-    position: absolute;
-    left: 50%;
-    top: 50%;
-    margin-top: -125px;
-    text-align: center;
-    color: #fff;
-    margin-left: -600;
+  width: 1200px;
+  height: 250px;
+  position: absolute;
+  left: 50%;
+  top: 50%;
+  margin-top: -125px;
+  text-align: center;
+  color: #fff;
+  margin-left: -600;
 }
 
 .j-text-1 {
-    font-family: 微软雅黑;
-    font-weight: bold;
-    font-size: 36px;
+  font-family: 微软雅黑;
+  font-weight: bold;
+  font-size: 36px;
 }
 
 .j-text-1 span {
-    color: #ffcc00;
+  color: #ffcc00;
 }
 
 .j-text-2 {
-    font-family: "Microsoft YaHei";
-    font-size: 34px;
-    margin: 8px auto 36px;
-    font-weight: bold;
+  font-family: "Microsoft YaHei";
+  font-size: 34px;
+  margin: 8px auto 36px;
+  font-weight: bold;
 }
 
 .j-text-3 {
-    font-family: 微软雅黑;
-    font-size: 18px;
-    line-height: 32px;
-    margin-top: 32px;
+  font-family: 微软雅黑;
+  font-size: 18px;
+  line-height: 32px;
+  margin-top: 32px;
 }
 
 .j-text-4 #scfree {
-    font-family: 微软雅黑;
-    font-size: 18px;
-    color: #2cb7ca;
-    background-color: rgba(255, 255, 255, 1);
-    border: 1px solid #fff;
-    margin-top: 50px;
-    padding: 10px 43px;
-    border-radius: 6px;
-    font-weight: bold;
+  font-family: 微软雅黑;
+  font-size: 18px;
+  color: #2cb7ca;
+  background-color: rgba(255, 255, 255, 1);
+  border: 1px solid #fff;
+  margin-top: 50px;
+  padding: 10px 43px;
+  border-radius: 6px;
+  font-weight: bold;
 }
 
 .j-com-2-1 {
-    min-width: 1200px;
-    margin: 0 auto;
-    -webkit-font-smoothing: antialiased;
-    width: 100%;
-    overflow: hidden;
-    height: 760px;
+  min-width: 1200px;
+  margin: 0 auto;
+  -webkit-font-smoothing: antialiased;
+  width: 100%;
+  overflow: hidden;
+  height: 760px;
 }
 
 .inner-left {
-    width: 1200px;
-    margin: auto;
-    left: 42%;
-    height: 760px;
-    margin-left: -600px
+  width: 1200px;
+  margin: auto;
+  left: 42%;
+  height: 760px;
+  margin-left: -600px;
 }
 
 .divnext {
-    position: absolute;
-    left: 1150px;
-    top: 587px;
-    width: 120px;
-    height: 120px;
-    z-index: 9999;
-    border-radius: 60px;
-    cursor: pointer;
+  position: absolute;
+  left: 1150px;
+  top: 587px;
+  width: 120px;
+  height: 120px;
+  z-index: 9999;
+  border-radius: 60px;
+  cursor: pointer;
 }
 
 .divprev {
-    position: absolute;
-    left: 1150px;
-    top: 36px;
-    width: 120px;
-    height: 120px;
-    z-index: 9999;
-    border-radius: 60px;
-    cursor: pointer;
+  position: absolute;
+  left: 1150px;
+  top: 36px;
+  width: 120px;
+  height: 120px;
+  z-index: 9999;
+  border-radius: 60px;
+  cursor: pointer;
 }
 
 /*j-wx-code Start*/
 .j-wx-code {
-    width: 335px;
-    height: 355px;
-    background-color: #fff;
-    -webkit-border-radius: 6px;
-    -moz-border-radius: 6px;
-    border-radius: 6px;
-    position: relative;
-    /*margin: 100px auto;*/
+  width: 335px;
+  height: 355px;
+  background-color: #fff;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  position: relative;
+  /*margin: 100px auto;*/
 }
 
 .j-wx-code > .code-close {
-    width: 40px;
-    height: 40px;
-    position: absolute;
-    right: -20px;
-    top: -20px;
-    cursor: pointer;
-    -webkit-transition: all 1s;
-    -o-transition: all 1s;
-    -moz-transition: all 1s;
-    transition: all 1s;
+  width: 40px;
+  height: 40px;
+  position: absolute;
+  right: -20px;
+  top: -20px;
+  cursor: pointer;
+  -webkit-transition: all 1s;
+  -o-transition: all 1s;
+  -moz-transition: all 1s;
+  transition: all 1s;
 }
 
 .j-wx-code > .code-close:hover {
-    -webkit-transform: scale(1.2);
-    -moz-transform: scale(1.2);
-    -ms-transform: scale(1.2);
-    -o-transform: scale(1.2);
-    transform: scale(1.2);
+  -webkit-transform: scale(1.2);
+  -moz-transform: scale(1.2);
+  -ms-transform: scale(1.2);
+  -o-transform: scale(1.2);
+  transform: scale(1.2);
 }
 
 .j-wx-code > .code-title {
-    height: 82px;
-    background: url(/images/j-wx-code-title.png) center center no-repeat;
-    -webkit-animation: moveYun 15s infinite linear both;
-    -moz-animation: moveYun 15s infinite linear both;
-    -o-animation: moveYun 15s infinite linear both;
-    animation: moveYun 15s infinite linear both;
+  height: 82px;
+  background: url(/images/j-wx-code-title.png) center center no-repeat;
+  -webkit-animation: moveYun 15s infinite linear both;
+  -moz-animation: moveYun 15s infinite linear both;
+  -o-animation: moveYun 15s infinite linear both;
+  animation: moveYun 15s infinite linear both;
 }
 
 .j-wx-code > .code-wxm {
-    text-align: center;
-    margin-bottom: -6px;
-    margin-top: -16px;
-
+  text-align: center;
+  margin-bottom: -6px;
+  margin-top: -16px;
 }
 
 .j-wx-code > .code-wxm > img {
-    width: 200px;
-    height: 200px;
-    margin-top: -5px;
+  width: 200px;
+  height: 200px;
+  margin-top: -5px;
 }
 
 .j-wx-code > .code-text {
-    font: 16px "microsoft yahei";
-    text-align: center;
-    color: #252627;
+  font: 16px "microsoft yahei";
+  text-align: center;
+  color: #252627;
 }
 
 .j-wx-code > .code-bottom {
-    width: 470px;
-    height: 211px;
-    position: absolute;
-    bottom: -113px;
-    left: -73px;
-    background: url(/images/j-wx-code-bottom.png) 0 0 no-repeat;
+  width: 470px;
+  height: 211px;
+  position: absolute;
+  bottom: -113px;
+  left: -73px;
+  background: url(/images/j-wx-code-bottom.png) 0 0 no-repeat;
 }
 
 .j-wx-code > .code-bottom > img {
-    position: absolute;
-    left: 280px;
-    top: 88px;
-    -webkit-animation: codeWxMove 10s linear both;
-    -moz-animation: codeWxMove 10s linear both;
-    -o-animation: codeWxMove 10s linear both;
-    animation: codeWxMove 10s linear both;
-    -webkit-animation-fill-mode: forwards;
-    -moz-animation-fill-mode: forwards;
-    -o-animation-fill-mode: forwards;
-    animation-fill-mode: forwards
+  position: absolute;
+  left: 280px;
+  top: 88px;
+  -webkit-animation: codeWxMove 10s linear both;
+  -moz-animation: codeWxMove 10s linear both;
+  -o-animation: codeWxMove 10s linear both;
+  animation: codeWxMove 10s linear both;
+  -webkit-animation-fill-mode: forwards;
+  -moz-animation-fill-mode: forwards;
+  -o-animation-fill-mode: forwards;
+  animation-fill-mode: forwards;
 }
 
 .modal-content .vip.close {
-    position: absolute;
-    right: 10px;
-    top: 10px;
-    color: aliceblue;
+  position: absolute;
+  right: 10px;
+  top: 10px;
+  color: aliceblue;
 }
 
 .center-left .ent-search,
 .center-left .ent-portrait,
 .center-center .ent-search,
 .center-center .ent-portrait {
-    position: relative;
-    display: flex;
-    align-items: center;
-    justify-content: center;
+  position: relative;
+  display: flex;
+  align-items: center;
+  justify-content: center;
 }
 
 .arrow-topdown {
-    height: 35px;
-    width: 20px;
-    margin: 0 auto;
-    background: url(/images/subscribe/arrow-topdown.png) 0 0 no-repeat;
-    background-size: 100%;
+  height: 35px;
+  width: 20px;
+  margin: 0 auto;
+  background: url(/images/subscribe/arrow-topdown.png) 0 0 no-repeat;
+  background-size: 100%;
 }
 
-
 .sub-top-frame {
-    width: 902px;
-    height: 228px;
-    background-size: 100%;
-    margin: 0 auto;
+  width: 902px;
+  height: 228px;
+  background-size: 100%;
+  margin: 0 auto;
 }
 
 .space_20px {
-    width: 100%;
-    height: 20px;
+  width: 100%;
+  height: 20px;
 }
 
 .space_30px {
-    width: 100%;
-    height: 30px;
+  width: 100%;
+  height: 30px;
 }
 
 .space_40px {
-    width: 100%;
-    height: 40px;
+  width: 100%;
+  height: 40px;
 }
 
 .space_60px {
-    width: 100%;
-    height: 60px;
+  width: 100%;
+  height: 60px;
 }
 
 .space_80px {
-    width: 100%;
-    height: 80px;
+  width: 100%;
+  height: 80px;
 }
 
 .subpage-button {
-    width: 180px;
-    height: 46px;
-    border-radius: 6px 6px 6px 6px;
-    opacity: 1;
-    color: #FFFFFF;
-    line-height: 46px;
-    text-align: center;
-    margin: 0 30px;
-    cursor: pointer;
-    position: relative;
-    overflow: hidden;
-    transition: 0.7s;
+  width: 180px;
+  height: 46px;
+  border-radius: 6px 6px 6px 6px;
+  opacity: 1;
+  color: #ffffff;
+  line-height: 46px;
+  text-align: center;
+  margin: 0 30px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  transition: 0.7s;
 }
 
 .subpage-button::after {
-    position: absolute;
-    left: 0;
-    top: 0;
-    content: '';
-    display: block;
-    width: 180px;
-    height: 46px;
-    background-image: linear-gradient(
-            0deg,
-            rgba(0, 0, 0, 0),
-            rgba(255, 255, 255, 0.3),
-            rgba(0, 0, 0, 0)
-    );
-    transform: rotate(-45deg) translate(0, -360px);
+  position: absolute;
+  left: 0;
+  top: 0;
+  content: "";
+  display: block;
+  width: 180px;
+  height: 46px;
+  background-image: linear-gradient(
+    0deg,
+    rgba(0, 0, 0, 0),
+    rgba(255, 255, 255, 0.3),
+    rgba(0, 0, 0, 0)
+  );
+  transform: rotate(-45deg) translate(0, -360px);
 }
 .subpage-button:hover::after {
-    /* 过渡效果只能再鼠标放上去生效 不然鼠标离开也会有效果 */
-    transition: 1s ease-in-out;
-    transform: rotate(-45deg) translate(0, 80px);
+  /* 过渡效果只能再鼠标放上去生效 不然鼠标离开也会有效果 */
+  transition: 1s ease-in-out;
+  transform: rotate(-45deg) translate(0, 80px);
 }
 
 .subpage-button:hover {
-    transform: scale(1.2);
-    box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.5);
+  transform: scale(1.2);
+  box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.5);
 }
 
 .subpage-button.gold {
-    background: linear-gradient(90deg, #E9B769 6%, #C18845 100%, #EEB879 100%);
-    box-shadow: 0px 10px 16px 1px rgba(233, 183, 105, 0.20000000298023224);
+  background: linear-gradient(90deg, #fafbff 0%, #c1befc 100%);
+  box-shadow: 0px 10px 16px 1px rgba(51, 49, 110, 0.20000000298023224);
+  border-radius: 6px 6px 6px 6px;
+  opacity: 1;
+  color: #231b66;
 }
 
 .subpage-button.darkblue {
-    background: linear-gradient(90deg, #353470 0%, #0F0644 100%);
-    box-shadow: 0px 10px 16px 1px rgba(51, 49, 110, 0.20000000298023224);
+  background: linear-gradient(90deg, #f8cd8d 0%, #da8e35 100%);
+  box-shadow: 0px 10px 16px 1px rgba(233, 183, 105, 0.20000000298023224);
+  border-radius: 6px 6px 6px 6px;
+  opacity: 1;
+  color: #ffffff;
 }
 
 .split-box--before {
-    margin-right: 25px;
+  margin-right: 25px;
 }
 
 .split-box--after {
-    margin-left: 25px;
+  margin-left: 25px;
 }
 
 .split-box--before::after {
-    content: "";
-    display: inline-block;
-    width: 8px;
-    height: 8px;
-    background: #CCAD87;
-    transform: rotate(45deg);
+  content: "";
+  display: inline-block;
+  width: 8px;
+  height: 8px;
+  background: #ccad87;
+  transform: rotate(45deg);
 }
 
 .split-box--before::before {
-    content: "";
-    display: inline-block;
-    width: 120px;
-    height: 1px;
-    margin-bottom: 4px;
-    background: linear-gradient(90deg, rgba(204, 173, 135, 0), #CCAD87 100%);
+  content: "";
+  display: inline-block;
+  width: 120px;
+  height: 1px;
+  margin-bottom: 4px;
+  background: linear-gradient(90deg, rgba(204, 173, 135, 0), #ccad87 100%);
 }
 
 .split-box--after::before {
-    content: "";
-    display: inline-block;
-    width: 8px;
-    height: 8px;
-    background: #CCAD87;
-    transform: rotate(45deg);
+  content: "";
+  display: inline-block;
+  width: 8px;
+  height: 8px;
+  background: #ccad87;
+  transform: rotate(45deg);
 }
 
 .split-box--after::after {
-    content: "";
-    display: inline-block;
-    width: 120px;
-    height: 1px;
-    margin-bottom: 4px;
-    background: linear-gradient(90deg, #CCAD87, rgba(204, 173, 135, 0) 100%);
+  content: "";
+  display: inline-block;
+  width: 120px;
+  height: 1px;
+  margin-bottom: 4px;
+  background: linear-gradient(90deg, #ccad87, rgba(204, 173, 135, 0) 100%);
 }
 
 .line-flex {
-    display: flex;
-    justify-content: center;
-    align-items: center;
+  display: flex;
+  justify-content: center;
+  align-items: center;
 }
 
 .second-desc {
-    font-size: 24px;
-    color: #1D1D1D;
-    font-family: Microsoft YaHei-Regular, Microsoft YaHei,sans-serif;
+  font-size: 24px;
+  color: #1d1d1d;
+  font-family: Microsoft YaHei-Regular, Microsoft YaHei, sans-serif;
 }
 
 .app-scenario {
-    height: 2300px;
-    background: linear-gradient(180deg, #FFF9F2 0%, #FFFDFA 100%);
-    border-radius: 0px 0px 0px 0px;
-    opacity: 1;
+  height: 2300px;
+  background: linear-gradient(180deg, #fff9f2 0%, #fffdfa 100%);
+  border-radius: 0px 0px 0px 0px;
+  opacity: 1;
+  margin-top: -46px;
 }
 
 .top-title {
-    height: 48px;
-    font-size: 36px;
-    font-family: Microsoft YaHei-Bold, Microsoft YaHei;
-    font-weight: bold;
-    color: #1D1D1D;
-    line-height: 42px;
-    text-align: center;
+  height: 48px;
+  font-size: 36px;
+  font-family: Microsoft YaHei-Bold, Microsoft YaHei;
+  font-weight: bold;
+  color: #1d1d1d;
+  line-height: 42px;
+  text-align: center;
 }
 
 .content-block {
-    margin: 0 auto;
-    width: 1200px;
-    height: 512px;
-    background: radial-gradient(#FFFCF8 0%, #FFF4E6 100%);
-    border-radius: 12px 12px 12px 12px;
-    opacity: 1;
-    padding: 40px;
-    display: flex;
-    justify-content: space-between;
+  margin: 0 auto;
+  width: 1200px;
+  height: 512px;
+  background: radial-gradient(#fffcf8 0%, #fff4e6 100%);
+  border-radius: 12px 12px 12px 12px;
+  opacity: 1;
+  padding: 40px;
+  display: flex;
+  justify-content: space-between;
 }
 
 .content-block > .content-left {
-    width: 372px;
+  width: 372px;
 }
 
 .content-left > .title {
-    width: 168px;
-    height: 28px;
-    font-size: 18px;
-    font-family: Microsoft YaHei-Bold, Microsoft YaHei;
-    font-weight: bold;
-    color: #1D1D1D;
-    line-height: 28px;
-    position: relative;
+  width: 168px;
+  height: 28px;
+  font-size: 18px;
+  font-family: Microsoft YaHei-Bold, Microsoft YaHei;
+  font-weight: bold;
+  color: #1d1d1d;
+  line-height: 28px;
+  position: relative;
 }
 
 .content-left > .title > .font {
-    position: relative;
-    z-index: 2;
+  position: relative;
+  z-index: 2;
 }
 
 .content-left > .title::after {
-    width: 168px;
-    height: 8px;
-    content: "";
-    display: inline-block;
-    background: #FBDEB0;
-    margin-bottom: 0px;
-    position: absolute;
-    left: 0;
-    bottom: 0;
+  width: 168px;
+  height: 8px;
+  content: "";
+  display: inline-block;
+  background: #fbdeb0;
+  margin-bottom: 0px;
+  position: absolute;
+  left: 0;
+  bottom: 0;
 }
 
 .content-left > .content {
-    width: 100%;
-    font-size: 16px;
-    font-family: Microsoft YaHei-Regular, Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    color: #686868;
-    line-height: 24px;
-    margin: 9px 0 28px 0px;
+  width: 100%;
+  font-size: 16px;
+  font-family: Microsoft YaHei-Regular, Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  color: #686868;
+  line-height: 24px;
+  margin: 9px 0 28px 0px;
 }
 
 .content-block > .content-right > img {
-    pointer-events: none;
+  pointer-events: none;
 }
 
-.app-bottom{
-    height: 504px;
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    background: #FFF9F2;
+.app-bottom {
+  height: 504px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  background: #fff9f2;
+  margin-top: 80px;
 }
 
-.app-bottom-box{
-    position: relative;
-    height: 68px;
-    background: linear-gradient(91deg, #072551 6%, #5D118B 58%, #05035F 100%);
+.app-bottom-box {
+  position: relative;
+  height: 68px;
+  background: linear-gradient(91deg, #072551 6%, #5d118b 58%, #05035f 100%);
 }
 
 .app-bottom-tobuy img {
-    width: 100%;
+  width: 100%;
 }
 .app-bottom-tobuy {
-    width: 958px;
-    height: 114px;
-    margin: 0 auto;
-    position: absolute;
-    top: -33px;
-    left: 50%;
-    transform: translateX(-50%);
-}
-.app-bottom-box map{
-    cursor: pointer;
-}
-
-.app-bottom>.top-title{
-    height: 48px;
-    font-size: 36px;
-    font-family: Microsoft YaHei-Bold, Microsoft YaHei;
-    font-weight: bold;
-    color: #1D1D1D;
-    line-height: 42px;
-}
-
-.app-bottom>.sub-title{
-    margin-top: 32px;
-    height: 36px;
-    font-size: 24px;
-    font-family: Microsoft YaHei-Regular, Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    color: #686868;
-    line-height: 36px;
-}
-
-.app-bottom>.content{
-    display: flex;
-    flex-direction: row;
-}
-.app-bottom>.content>div{
-    width: 320px;
-    height: 100px;
-    text-align: center;
-}
-.app-bottom>.content>div>.num{
-    font-size: 69px;
-    font-weight: 500;
-    color: #1d1d1d;
-}
-.app-bottom>.content>div>.num:after{
-    content: "万+";
-    font-size: 18px;
-    font-family: Microsoft YaHei-Bold, Microsoft YaHei;
-    font-weight: bold;
-    color: #1D1D1D;
-    line-height: 28px
-}
-.app-bottom>.content>div>.detail{
-    height: 32px;
-    font-size: 20px;
-    font-family: Microsoft YaHei-Regular, Microsoft YaHei,sans-serif;
-    font-weight: 400;
-    color: #686868;
-    line-height: 32px;
-}
-
-@keyframes CfadeInUp{
-    from {
-        transform: translateY(50px);
-    }
-    to {
-        transform: translateY(0px);
-        opacity:1;
-    }
-}
-.CfadeInUp{
-    opacity: 0;
-    animation: 1s ease  forwards  alternate;
+  width: 958px;
+  height: 114px;
+  margin: 0 auto;
+  position: absolute;
+  top: -33px;
+  left: 50%;
+  transform: translateX(-50%);
+}
+.app-bottom-box map {
+  cursor: pointer;
+}
+
+.app-bottom > .top-title {
+  height: 48px;
+  font-size: 36px;
+  font-family: Microsoft YaHei-Bold, Microsoft YaHei;
+  font-weight: bold;
+  color: #1d1d1d;
+  line-height: 42px;
+}
+
+.app-bottom > .sub-title {
+  margin-top: 32px;
+  height: 36px;
+  font-size: 24px;
+  font-family: Microsoft YaHei-Regular, Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  color: #686868;
+  line-height: 36px;
+}
+
+.app-bottom > .content {
+  display: flex;
+  flex-direction: row;
+}
+.app-bottom > .content > div {
+  width: 320px;
+  height: 100px;
+  text-align: center;
+}
+.app-bottom > .content > div > .num {
+  font-size: 69px;
+  font-weight: 500;
+  color: #1d1d1d;
+}
+.app-bottom > .content > div > .num:after {
+  content: "万+";
+  font-size: 18px;
+  font-family: Microsoft YaHei-Bold, Microsoft YaHei;
+  font-weight: bold;
+  color: #1d1d1d;
+  line-height: 28px;
+}
+.app-bottom > .content > div > .detail {
+  height: 32px;
+  font-size: 20px;
+  font-family: Microsoft YaHei-Regular, Microsoft YaHei, sans-serif;
+  font-weight: 400;
+  color: #686868;
+  line-height: 32px;
+}
+
+@keyframes CfadeInUp {
+  from {
+    transform: translateY(50px);
+  }
+  to {
+    transform: translateY(0px);
+    opacity: 1;
+  }
+}
+.CfadeInUp {
+  opacity: 0;
+  animation: 1s ease forwards alternate;
+}
+.newTxt {
+  position: absolute;
+  bottom: 25%;
+  left: calc(50% - 240px);
+  z-index: 3;
 }

+ 22 - 3
src/web/staticres/frontRouter/pc/mesgCenter/js/index-pc.js

@@ -75,7 +75,7 @@ var vm = new Vue({
     readed(ids, type, url) {
       const _this = this
       $.ajax({
-        type:'GET',
+        type: 'POST',
         url:'/jymessageCenter/markRead',
         data: {
           msgId: ids,
@@ -85,14 +85,33 @@ var vm = new Vue({
           _this.tabsData(_this.isTabs)
           _this.tabsCount()
           message.checkOpened()
+          message.checkMessage()
           if (url) {
             location.href = url
           }
         }
       })
     },
-    linked(id, url, str, num, type) {
-      this.readed(id, type, url)
+    clickMesg(logid) {
+      $.ajax({
+        type: 'GET',
+        url: '/jymessageCenter/clickMessage',
+        data: {
+          msgLogId: logid,
+          platform: '1'
+        },
+        success:function () {}
+      })
+    },
+    linked(id, url, str, num, type, msgLogid) {
+      this.clickMesg(msgLogid)
+      if (str == 0) {
+        this.readed(id, type, url)
+      } else {
+        if (url) {
+          location.href = url
+        }
+      }
     }
   }
 })

BIN
src/web/staticres/images/subscribe/1-bg.jpg


BIN
src/web/staticres/images/subscribe/2-bg.jpg


BIN
src/web/staticres/images/subscribe/QR_code.png


BIN
src/web/staticres/images/subscribe/arrow-topdown.png


BIN
src/web/staticres/images/subscribe/banner-new-del.png


BIN
src/web/staticres/images/subscribe/banner-new.png


BIN
src/web/staticres/images/subscribe/banner.jpg


BIN
src/web/staticres/images/subscribe/banner.png


BIN
src/web/staticres/images/subscribe/del-banner.png


BIN
src/web/staticres/images/subscribe/free.png


BIN
src/web/staticres/images/subscribe/iner-left-diqu.png


BIN
src/web/staticres/images/subscribe/iner-left-diqu1.png


Неке датотеке нису приказане због велике количине промена