Browse Source

提交代码

wangxiaogang 3 years ago
parent
commit
c5a85c9439
100 changed files with 3909 additions and 109 deletions
  1. 7 0
      config_formal/app_172.17.148.50/active_report.json
  2. 1 1
      config_formal/app_172.17.148.50/time.txt
  3. 7 0
      config_formal/app_i2_172.17.145.180/active_report.json
  4. 1 1
      config_formal/app_i2_172.17.145.180/time.txt
  5. 7 0
      config_formal/publicapply_172.17.148.50/active_report.json
  6. 1 1
      config_formal/publicapply_172.17.148.50/time.txt
  7. 7 0
      config_formal/sword_172.17.145.167/active_report.json
  8. 2 1
      config_formal/sword_172.17.145.167/entnichePc.json
  9. 2 2
      config_formal/sword_172.17.145.167/time.txt
  10. 7 0
      config_formal/sword_172.17.148.50/active_report.json
  11. 2 1
      config_formal/sword_172.17.148.50/entnichePc.json
  12. 2 2
      config_formal/sword_172.17.148.50/time.txt
  13. 69 0
      project.config.json
  14. 7 0
      src/active_report.json
  15. 3 2
      src/entnichePc.json
  16. 125 0
      src/jfw/active/21yearEndReport.go
  17. 3 2
      src/jfw/config/config.go
  18. 5 5
      src/jfw/filter/filter.go
  19. 5 0
      src/jfw/front/dataExport.go
  20. 1 1
      src/jfw/front/frontRouter.go
  21. 3 0
      src/jfw/front/singleLogin.go
  22. 51 0
      src/jfw/modules/app/src/app/active/21yearEndReport.go
  23. 20 4
      src/jfw/modules/app/src/app/front/front.go
  24. 26 0
      src/jfw/modules/app/src/app/front/me.go
  25. 21 6
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/client_portrayal.js
  26. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/set_scope2.js
  27. 5 1
      src/jfw/modules/app/src/web/staticres/jyapp/css/subscribe.css
  28. 39 0
      src/jfw/modules/app/src/web/staticres/jyapp/js/historypush.js
  29. 1 0
      src/jfw/modules/app/src/web/staticres/jyapp/js/searchindex.js
  30. 24 2
      src/jfw/modules/app/src/web/staticres/jyapp/me/js/mine.js
  31. 87 22
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/keyword-info.js
  32. 564 0
      src/jfw/modules/app/src/web/templates/active/yearEndReport/index.html
  33. 160 0
      src/jfw/modules/app/src/web/templates/active/yearEndReport/result.html
  34. 66 4
      src/jfw/modules/app/src/web/templates/big-member/page_client_follow_detail.html
  35. 6 3
      src/jfw/modules/app/src/web/templates/big-member/page_client_follow_list.html
  36. 18 12
      src/jfw/modules/app/src/web/templates/big-member/page_client_list.html
  37. 1 1
      src/jfw/modules/app/src/web/templates/big-member/page_main_root.html
  38. 1 1
      src/jfw/modules/app/src/web/templates/commonPay/paySuccess.html
  39. 3 3
      src/jfw/modules/app/src/web/templates/frontRouter/share/sess/b-share.html
  40. 4 4
      src/jfw/modules/app/src/web/templates/frontRouter/share/sess/index.html
  41. 2 2
      src/jfw/modules/app/src/web/templates/me/mine.html
  42. 50 3
      src/jfw/modules/app/src/web/templates/weixin/historypush.html
  43. 1 1
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  44. 7 3
      src/jfw/modules/app/src/web/templates/weixin/search/tabSearch.html
  45. 15 5
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  46. 140 0
      src/jfw/modules/publicapply/src/active/21yearEndReport.go
  47. 7 0
      src/jfw/modules/publicapply/src/active_report.json
  48. 1 1
      src/jfw/modules/publicapply/src/db.json
  49. 1 1
      src/jfw/modules/publicapply/src/filter/sessionfilter.go
  50. 1 0
      src/jfw/modules/publicapply/src/main.go
  51. 23 1
      src/jfw/modules/publicapply/src/me/me.go
  52. 1 1
      src/jfw/modules/publicapply/src/subscribePush/entity/keyWords.go
  53. 2 1
      src/jfw/modules/publicapply/src/subscribePush/service/pushList.go
  54. 6 1
      src/jfw/modules/weixin/src/wx/wx.go
  55. 1 0
      src/web/staticres/common-module/buyer-search/buyer-search-template.prefixer.css
  56. 3 2
      src/web/staticres/common-module/collection/js/area-city-mobile.js
  57. 35 0
      src/web/staticres/common-module/collection/js/keyword-mobile.js
  58. 12 3
      src/web/staticres/common-module/ent-search/ent-search-template.js
  59. 1 1
      src/web/staticres/common-module/keep-tags/keep-ent-tags-template.js
  60. BIN
      src/web/staticres/common-module/public/image/auto.png
  61. BIN
      src/web/staticres/common-module/public/image/logo_new.png
  62. BIN
      src/web/staticres/common-module/public/image/share-report.png
  63. 1854 0
      src/web/staticres/common-module/yearEndReport/css/index.css
  64. 56 0
      src/web/staticres/common-module/yearEndReport/css/music.css
  65. 325 0
      src/web/staticres/common-module/yearEndReport/css/result.css
  66. BIN
      src/web/staticres/common-module/yearEndReport/images/BG/bg.png
  67. BIN
      src/web/staticres/common-module/yearEndReport/images/P0/big-zero.png
  68. BIN
      src/web/staticres/common-module/yearEndReport/images/P0/fish-zero.png
  69. BIN
      src/web/staticres/common-module/yearEndReport/images/P0/sm-zero.png
  70. BIN
      src/web/staticres/common-module/yearEndReport/images/P0/xd-zero.png
  71. BIN
      src/web/staticres/common-module/yearEndReport/images/P1/bottom-bg.png
  72. BIN
      src/web/staticres/common-module/yearEndReport/images/P1/meteor-mini.png
  73. BIN
      src/web/staticres/common-module/yearEndReport/images/P1/meteor.png
  74. BIN
      src/web/staticres/common-module/yearEndReport/images/P10/big-ten.png
  75. BIN
      src/web/staticres/common-module/yearEndReport/images/P10/fish-ten.png
  76. BIN
      src/web/staticres/common-module/yearEndReport/images/P10/pao-ten.png
  77. BIN
      src/web/staticres/common-module/yearEndReport/images/P10/sm-ten.png
  78. BIN
      src/web/staticres/common-module/yearEndReport/images/P11/ball-eleven.png
  79. BIN
      src/web/staticres/common-module/yearEndReport/images/P11/fish-eleven.png
  80. BIN
      src/web/staticres/common-module/yearEndReport/images/P11/sm-star-eleven.png
  81. BIN
      src/web/staticres/common-module/yearEndReport/images/P12/big-star-twelve.png
  82. BIN
      src/web/staticres/common-module/yearEndReport/images/P12/sm-star-twelve.png
  83. BIN
      src/web/staticres/common-module/yearEndReport/images/P12/xd-twelve.png
  84. BIN
      src/web/staticres/common-module/yearEndReport/images/P2/ball-two.png
  85. BIN
      src/web/staticres/common-module/yearEndReport/images/P2/fish-two.png
  86. BIN
      src/web/staticres/common-module/yearEndReport/images/P2/star-two.png
  87. BIN
      src/web/staticres/common-module/yearEndReport/images/P2/tail-two.png
  88. BIN
      src/web/staticres/common-module/yearEndReport/images/P3/ball-three.png
  89. BIN
      src/web/staticres/common-module/yearEndReport/images/P3/star-three.png
  90. BIN
      src/web/staticres/common-module/yearEndReport/images/P3/yellow-three.png
  91. BIN
      src/web/staticres/common-module/yearEndReport/images/P4/big-four.png
  92. BIN
      src/web/staticres/common-module/yearEndReport/images/P4/fish-four.png
  93. BIN
      src/web/staticres/common-module/yearEndReport/images/P4/sm-four.png
  94. BIN
      src/web/staticres/common-module/yearEndReport/images/P5/aoyi-five.png
  95. BIN
      src/web/staticres/common-module/yearEndReport/images/P5/ball-five.png
  96. BIN
      src/web/staticres/common-module/yearEndReport/images/P5/fish-five.png
  97. BIN
      src/web/staticres/common-module/yearEndReport/images/P5/yun-five.png
  98. BIN
      src/web/staticres/common-module/yearEndReport/images/P6/ball-six.png
  99. BIN
      src/web/staticres/common-module/yearEndReport/images/P6/fish-six.png
  100. BIN
      src/web/staticres/common-module/yearEndReport/images/P6/group-six.png

+ 7 - 0
config_formal/app_172.17.148.50/active_report.json

@@ -0,0 +1,7 @@
+{
+  "yearEndReportEnd": 1644854400,
+  "shareUrl": "https://www.jianyu360.cn/active/yearEndReport?from=share",
+  "replyTitle": "「我的剑鱼标讯2021」年度报告已经生成,请查收",
+  "replyHref": "https://www.jianyu360.cn/active/yearEndReport?from=reply",
+  "userSourceFlag": "21yearEndReport"
+}

+ 1 - 1
config_formal/app_172.17.148.50/time.txt

@@ -1,2 +1,2 @@
 #上次修改时间,比当前修改时间小就行
-2021-12-30 16:15:12
+2022-1-18 9:00:00

+ 7 - 0
config_formal/app_i2_172.17.145.180/active_report.json

@@ -0,0 +1,7 @@
+{
+  "yearEndReportEnd": 1644854400,
+  "shareUrl": "https://www.jianyu360.cn/active/yearEndReport?from=share",
+  "replyTitle": "「我的剑鱼标讯2021」年度报告已经生成,请查收",
+  "replyHref": "https://www.jianyu360.cn/active/yearEndReport?from=reply",
+  "userSourceFlag": "21yearEndReport"
+}

+ 1 - 1
config_formal/app_i2_172.17.145.180/time.txt

@@ -1,2 +1,2 @@
 #上次修改时间,比当前修改时间小就行
-2021-12-30 16:15:12
+2022-1-18 9:00:00

+ 7 - 0
config_formal/publicapply_172.17.148.50/active_report.json

@@ -0,0 +1,7 @@
+{
+  "yearEndReportEnd": 1644854400,
+  "shareUrl": "https://www.jianyu360.cn/active/yearEndReport?from=share",
+  "replyTitle": "「我的剑鱼标讯2021」年度报告已经生成,请查收",
+  "replyHref": "https://www.jianyu360.cn/active/yearEndReport?from=reply",
+  "userSourceFlag": "21yearEndReport"
+}

+ 1 - 1
config_formal/publicapply_172.17.148.50/time.txt

@@ -1,2 +1,2 @@
 #上次修改时间,比当前修改时间小就行
-2022-1-14 9:00:00
+2022-1-18 9:00:00

+ 7 - 0
config_formal/sword_172.17.145.167/active_report.json

@@ -0,0 +1,7 @@
+{
+  "yearEndReportEnd": 1644854400,
+  "shareUrl": "https://www.jianyu360.cn/active/yearEndReport?from=share",
+  "replyTitle": "「我的剑鱼标讯2021」年度报告已经生成,请查收",
+  "replyHref": "https://www.jianyu360.cn/active/yearEndReport?from=reply",
+  "userSourceFlag": "21yearEndReport"
+}

+ 2 - 1
config_formal/sword_172.17.145.167/entnichePc.json

@@ -1,4 +1,5 @@
 {
 	"entnichePcUser": [18624,12724,10256,14002,14004,14576,14577,1416,1421,2546,9522,10500,10511,10617,12469,7426,12814,12815,12816,12817,12818,12819,12820,12823,12822,12920,14128,14796],
-	"hideEntnicheMenu": [10256,14002,14004,14577,1416]
+	"hideEntnicheMenu": [10256,14002,14004,14577,1416],
+	"privateDataPhone": "18530014520,13525530909,13938299083,15225181827,18537851805,15830500028"
 }

+ 2 - 2
config_formal/sword_172.17.145.167/time.txt

@@ -1,2 +1,2 @@
-#上次修改时间,比当前修改时间小就行
-2021-12-30 16:15:12
+#上次修改时间,比当前修改时间小就行
+2022-1-21 00:00:00

+ 7 - 0
config_formal/sword_172.17.148.50/active_report.json

@@ -0,0 +1,7 @@
+{
+  "yearEndReportEnd": 1644854400,
+  "shareUrl": "https://www.jianyu360.cn/active/yearEndReport?from=share",
+  "replyTitle": "「我的剑鱼标讯2021」年度报告已经生成,请查收",
+  "replyHref": "https://www.jianyu360.cn/active/yearEndReport?from=reply",
+  "userSourceFlag": "21yearEndReport"
+}

+ 2 - 1
config_formal/sword_172.17.148.50/entnichePc.json

@@ -1,4 +1,5 @@
 {
 	"entnichePcUser": [18624,12724,10256,14002,14004,14576,14577,1416,1421,2546,9522,10500,10511,10617,12469,7426,12814,12815,12816,12817,12818,12819,12820,12823,12822,12920,14128,14796],
-	"hideEntnicheMenu": [10256,14002,14004,14577,1416]
+	"hideEntnicheMenu": [10256,14002,14004,14577,1416],
+	"privateDataPhone": "18530014520,13525530909,13938299083,15225181827,18537851805,15830500028"
 }

+ 2 - 2
config_formal/sword_172.17.148.50/time.txt

@@ -1,2 +1,2 @@
-#上次修改时间,比当前修改时间小就行
-2021-12-30 16:15:12
+#上次修改时间,比当前修改时间小就行
+2022-1-21 00:00:00

+ 69 - 0
project.config.json

@@ -0,0 +1,69 @@
+{
+  "description": "项目配置文件",
+  "packOptions": {
+    "ignore": []
+  },
+  "setting": {
+    "bundle": false,
+    "userConfirmedBundleSwitch": false,
+    "urlCheck": true,
+    "scopeDataCheck": false,
+    "coverView": true,
+    "es6": true,
+    "postcss": true,
+    "compileHotReLoad": false,
+    "lazyloadPlaceholderEnable": false,
+    "preloadBackgroundData": false,
+    "minified": true,
+    "autoAudits": false,
+    "newFeature": false,
+    "uglifyFileName": false,
+    "uploadWithSourceMap": true,
+    "useIsolateContext": false,
+    "nodeModules": false,
+    "enhance": true,
+    "useMultiFrameRuntime": true,
+    "useApiHook": true,
+    "useApiHostProcess": true,
+    "showShadowRootInWxmlPanel": true,
+    "packNpmManually": false,
+    "enableEngineNative": false,
+    "packNpmRelationList": [],
+    "minifyWXSS": true,
+    "showES6CompileOption": false,
+    "minifyWXML": true
+  },
+  "compileType": "miniprogram",
+  "libVersion": "2.17.0",
+  "appid": "wxf5bb80e0862aefb3",
+  "projectname": "miniprogram-1",
+  "debugOptions": {
+    "hidedInDevtools": []
+  },
+  "scripts": {},
+  "staticServerOptions": {
+    "baseURL": "",
+    "servePath": ""
+  },
+  "isGameTourist": false,
+  "condition": {
+    "search": {
+      "list": []
+    },
+    "conversation": {
+      "list": []
+    },
+    "game": {
+      "list": []
+    },
+    "plugin": {
+      "list": []
+    },
+    "gamePlugin": {
+      "list": []
+    },
+    "miniprogram": {
+      "list": []
+    }
+  }
+}

+ 7 - 0
src/active_report.json

@@ -0,0 +1,7 @@
+{
+  "yearEndReportEnd": 1644854400,
+  "shareUrl": "https://web-wky.jydev.jianyu360.com/active/yearEndReport?from=share",
+  "replyTitle": "「我的剑鱼标讯2021」年度报告已经生成,请查收",
+  "replyHref": "https://web-wky.jydev.jianyu360.com/active/yearEndReport?from=reply",
+  "userSourceFlag": "21yearEndReport"
+}

+ 3 - 2
src/entnichePc.json

@@ -1,4 +1,5 @@
 {
-	"entnichePcUser": [14595,442,1686,1685,1711],
-	"hideEntnicheMenu": [1711,442]
+	"entnichePcUser": [14595,442,1686,1685,1711,674],
+	"hideEntnicheMenu": [1711,442],
+	"privateDataPhone": "18530014520,13525530909,13938299083"
 }

+ 125 - 0
src/jfw/active/21yearEndReport.go

@@ -0,0 +1,125 @@
+package active
+
+import (
+	"fmt"
+	"github.com/go-xweb/httpsession"
+	"github.com/go-xweb/xweb"
+	"go.mongodb.org/mongo-driver/bson"
+	"go.mongodb.org/mongo-driver/bson/primitive"
+	"jfw/config"
+	"jfw/jyutil"
+	"jfw/public"
+	"net/url"
+	qutil "qfw/util"
+	"qfw/util/redis"
+	"time"
+)
+
+const (
+	activeDefaultEndTimeStamp = 1644854400 //2022-02-15
+)
+
+type YearEndReportConfig struct {
+	YearEndReportEnd int64  `json:"yearEndReportEnd"`
+	ShareUrl         string `json:"shareUrl"`
+	ReplyTitle       string `json:"replyTitle"`
+	ReplyHref        string `json:"replyHref"`
+	UserSourceFlag   string `json:"userSourceFlag"`
+}
+
+var (
+	yearEndReportEndTimeStamp int64 = activeDefaultEndTimeStamp
+	yearEndReportConfig       YearEndReportConfig
+)
+
+func init() {
+	xweb.AddAction(&YearEndReport{})
+	qutil.ReadConfig("./active_report.json", &yearEndReportConfig)
+	if yearEndReportConfig.YearEndReportEnd > 0 {
+		yearEndReportEndTimeStamp = yearEndReportConfig.YearEndReportEnd
+	}
+}
+
+//YearEndReport 21年,年终报告
+type YearEndReport struct {
+	*xweb.Action
+	yearEndReportPage   xweb.Mapper `xweb:"/active/yearEndReport"`       //21年终报告wx页面
+	yearEndReportResult xweb.Mapper `xweb:"/active/yearEndReportResult"` //21年终报告wx结果页面
+}
+
+func (this *YearEndReport) YearEndReportResult() error {
+	return this.Render("/active/yearEndReport/result.html")
+}
+
+func (this *YearEndReport) YearEndReportPage() error {
+	openid := qutil.ObjToString(this.Session().Get("s_m_openid"))
+	if openid == "" || (openid != "" && !checkUserIsSubscribe(openid)) {
+		stateKey := this.GetString("state")
+		if stateKey == "" { //公众号回调
+			return this.Redirect(fmt.Sprintf(config.Wxoauth, url.QueryEscape(this.Site()+this.Url()), "report"), 302)
+		}
+		//获取用户openid
+		openid = jyutil.Getopenid(this.GetString("code"))
+	}
+	//没有用户session 或  有session但是没有关注(刚刚取关 session信息存留)
+	//判断是否关注
+	isSubscribe := checkUserIsSubscribe(openid)
+	if time.Now().Unix() > yearEndReportEndTimeStamp {
+		if isSubscribe {
+			return this.Redirect("/jylab/mainSearch")
+		} else {
+			return this.Redirect("/swordfish/about")
+		}
+	}
+	if isSubscribe { //关注跳转
+		if this.GetSession("userId") == nil {
+			loginCreateSess(openid, this.Session())
+		}
+	} else { //未关注,关注回复发送
+		redis.Put("other", fmt.Sprintf("SingleLogin_%s", openid), map[string]interface{}{
+			"href":       yearEndReportConfig.ReplyHref,
+			"title":      yearEndReportConfig.ReplyTitle,
+			"hrefsource": yearEndReportConfig.UserSourceFlag,
+		}, 60*30)
+	}
+	return this.Render("/active/yearEndReport/index.html")
+}
+
+func loginCreateSess(openid string, sess *httpsession.Session) bool {
+	_person, ok := public.MQFW.FindOne("user", bson.M{"s_m_openid": openid, "s_unionid": bson.M{"$ne": openid}, "i_ispush": 1})
+	if ok && *_person != nil && len(*_person) > 0 {
+		person := *_person
+		if person["i_shareknow"] != nil {
+			sess.Set("shareknow", person["i_shareknow"])
+		}
+		sess.Set("userId", (person["_id"].(primitive.ObjectID)).Hex())
+		sess.Set("s_m_openid", person["s_m_openid"])
+		sess.Set("openid", person["s_m_openid"])
+		sess.Set("s_nickname", person["s_nickname"])
+		if person["s_avatar"] == nil {
+			sess.Set("s_avatar", person["s_headimage"])
+		} else {
+			sess.Set("s_avatar", person["s_avatar"])
+		}
+		return true
+	} else {
+		return false
+	}
+}
+
+//checkUserIsSubscribe 检查用户是否关注
+func checkUserIsSubscribe(openid string) bool {
+	user, ok := public.MQFW.FindOneByField("user", map[string]interface{}{
+		"i_appid":    2,
+		"s_m_openid": openid,
+		"s_unionid":  map[string]interface{}{"$ne": openid},
+	}, `{"i_ispush":1}`)
+	if ok && user != nil {
+		if (*user)["_id"] == nil || qutil.IntAllDef((*user)["i_ispush"], 1) == 0 {
+			return false
+		} else {
+			return true
+		}
+	}
+	return false
+}

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

@@ -18,8 +18,9 @@ var Wxoauth, Wxoauthinfo string
 var GmailAuth []*mail.GmailAuth
 
 type entnichePcConf struct {
-	EntnichePcUser   []int `json:"entnichePcUser"`
-	HideEntnicheMenu []int `json:"hideEntnicheMenu"`
+	EntnichePcUser   []int  `json:"entnichePcUser"`
+	HideEntnicheMenu []int  `json:"hideEntnicheMenu"`
+	PrivateDataPhone string `json:"privateDataPhone"`
 }
 
 var EntnichePcConf *entnichePcConf

+ 5 - 5
src/jfw/filter/filter.go

@@ -1,7 +1,7 @@
 package filter
 
 import (
-	"jfw/jyutil"
+	//"jfw/jyutil"
 	"net/http"
 	"time"
 
@@ -17,9 +17,9 @@ type Filter struct {
 }
 
 func (f *Filter) Do(w http.ResponseWriter, r *http.Request) bool {
-	session := xweb.RootApp().SessionManager.Session(r, w)
-	getSession := session.GetMultiple()
-	if !(&logFilter{w, r, session, getSession, make(map[string]interface{})}).Do() {
+	//session := xweb.RootApp().SessionManager.Session(r, w)
+	//getSession := session.GetMultiple()
+	/*if !(&logFilter{w, r, session, getSession, make(map[string]interface{})}).Do() {
 		return false
 	}
 	if !(&jyutil.SessionKeep{w, r, session, getSession, make(map[string]interface{})}).Do() {
@@ -33,6 +33,6 @@ func (f *Filter) Do(w http.ResponseWriter, r *http.Request) bool {
 	}
 	if !(&pcFilter{w, r, session, getSession}).Do() {
 		return false
-	}
+	}*/
 	return true
 }

+ 5 - 0
src/jfw/front/dataExport.go

@@ -840,6 +840,7 @@ func (this *DataExport) GetPcEntAuth() {
 	//phone = "15136225931"
 	myEntMenu := false
 	entnicheMenu := false
+	privatedata := false
 	pcUsers := map[int]bool{}
 	hideUsers := map[int]bool{}
 	for _, v := range config.EntnichePcConf.EntnichePcUser {
@@ -899,12 +900,16 @@ func (this *DataExport) GetPcEntAuth() {
 				}
 			}
 		}
+		if strings.Contains(config.EntnichePcConf.PrivateDataPhone, phone) {
+			privatedata = true
+		}
 	}
 
 	data := map[string]interface{}{
 		"myEntMenu":    myEntMenu,
 		"entnicheMenu": entnicheMenu,
 		"isNew":        isNew,
+		"privatedata":  privatedata,
 	}
 	this.ServeJson(data)
 }

+ 1 - 1
src/jfw/front/frontRouter.go

@@ -162,7 +162,7 @@ func (this *CommonRouter) BigpcPage(htmlPage string) error {
 	return this.doPcBigPage(htmlPage, types)
 }
 
-var bigVipFreePageReg = regexp.MustCompile(`set_.*|free|unit_portrayal|analysis_(search|result)|pro_follow_detail`)
+var bigVipFreePageReg = regexp.MustCompile(`set_.*|free|unit_portrayal|analysis_(search|result)|pro_follow_detail|client_portrayal`)
 
 func (this *CommonRouter) doPcBigPage(pageSign, types string) error {
 	page := pageSign

+ 3 - 0
src/jfw/front/singleLogin.go

@@ -28,6 +28,7 @@ func init() {
 	xweb.AddAction(&SingleLogin{})
 }
 
+//ShortUrl
 //短地址跳转
 func (this *SingleLogin) ShortUrl(key string) error {
 	var redirectUrl = "/swordfish/about"
@@ -37,6 +38,7 @@ func (this *SingleLogin) ShortUrl(key string) error {
 	return this.Redirect(redirectUrl)
 }
 
+//SingleLogin
 //toHref 已关注跳转页面
 //unHref 为关注跳转页面,若无此字段会跳至关注二维码页面
 //	*已有逻辑 1.线上课程推文,用户点击可登陆跳转;未关注扫码会回复课程链接
@@ -106,6 +108,7 @@ func (this *SingleLogin) SingleLogin() error {
 		for k, v := range hrefSourse {
 			if strings.Contains(this.GetString("toHref"), qutil.ObjToString(v)) {
 				hsource = k
+				break
 			}
 		}
 		redis.Put("other", fmt.Sprintf("SingleLogin_%s", openid), map[string]interface{}{

+ 51 - 0
src/jfw/modules/app/src/app/active/21yearEndReport.go

@@ -0,0 +1,51 @@
+package active
+
+import (
+	"github.com/go-xweb/xweb"
+	qutil "qfw/util"
+	"time"
+)
+
+const (
+	activeDefaultEndTimeStamp = 1644854400 //2022-02-15
+)
+
+type YearEndReportConfig struct {
+	YearEndReportEnd int64  `json:"yearEndReportEnd"`
+	ShareUrl         string `json:"shareUrl"`
+	ReplyTitle       string `json:"replyTitle"`
+	ReplyHref        string `json:"replyHref"`
+	UserSourceFlag   string `json:"userSourceFlag"`
+}
+
+var (
+	yearEndReportEndTimeStamp int64 = activeDefaultEndTimeStamp
+	yearEndReportConfig       YearEndReportConfig
+)
+
+func init() {
+	xweb.AddAction(&YearEndReport{})
+	qutil.ReadConfig("./active_report.json", &yearEndReportConfig)
+	if yearEndReportConfig.YearEndReportEnd > 0 {
+		yearEndReportEndTimeStamp = yearEndReportConfig.YearEndReportEnd
+	}
+}
+
+//YearEndReport 21年,年终报告
+type YearEndReport struct {
+	*xweb.Action
+	yearEndReportPage   xweb.Mapper `xweb:"/jyapp/active/yearEndReport"`       //21年终报告app页面
+	yearEndReportResult xweb.Mapper `xweb:"/jyapp/active/yearEndReportResult"` //21年终报告app结果页面
+}
+
+func (this *YearEndReport) YearEndReportResult() error {
+	return this.Render("/active/yearEndReport/result.html")
+}
+
+func (this *YearEndReport) YearEndReportPage() error {
+	userId := this.GetSession("userId")
+	if userId == "" || time.Now().Unix() > yearEndReportEndTimeStamp {
+		return this.Redirect("/jyapp/free/swordfish/about")
+	}
+	return this.Render("/active/yearEndReport/index.html")
+}

+ 20 - 4
src/jfw/modules/app/src/app/front/front.go

@@ -232,10 +232,28 @@ func isInTSguide(userid string) bool {
 	if userid == "" {
 		return false
 	}
-	data, ok := mongodb.FindById("user", userid, `{"o_jy":1,"i_ts_guide":1,"":1,"i_member_status":1,"i_vip_status":1}`)
+	data, ok := mongodb.FindById("user", userid, `{"o_jy":1,"i_ts_guide":1,"":1,"i_member_status":1,"i_vip_status":1,"s_phone":1,"s_m_phone":1}`)
 	if ok {
+		/*phone := ""
+		if s_phone, _ := (*data)["s_phone"].(string); s_phone != "" {
+			phone = s_phone
+		} else if s_m_phone, _ := (*data)["s_m_phone"].(string); s_m_phone != "" {
+			phone = s_m_phone
+		}
+		isEnt := false
+		if phone != "" {
+			//已购买企业未过期
+			if entInfo := public.Mysql.SelectBySql(`SELECT status FROM entniche_info WHERE id  IN (SELECT ent_id FROM entniche_user where phone = ? and power =1)`, phone); len((*entInfo)) > 0 {
+				for _, v := range (*entInfo) {
+					if util.IntAll(v["status"]) == 1 {
+						isEnt = true
+						break
+					}
+				}
+			}
+		}*/
 		//付费用户无免费订阅,不进入订阅向导页面
-		if util.IntAll((*data)["i_member_status"]) > 0 || util.IntAll((*data)["i_vip_status"]) > 0 {
+		if util.IntAll((*data)["i_member_status"]) > 0 || util.IntAll((*data)["i_vip_status"]) > 0  {
 			return false
 		}
 		o_jy, _ := (*data)["o_jy"].(map[string]interface{})
@@ -245,8 +263,6 @@ func isInTSguide(userid string) bool {
 		}
 	}
 	return false
-
-	return false
 }
 func (m *Front) Feedback() error {
 	defer util.Catch()

+ 26 - 0
src/jfw/modules/app/src/app/front/me.go

@@ -325,7 +325,9 @@ func (l *Me) MyInfo() {
 		"userType": "free",
 	}
 	userId, _ := l.GetSession("userId").(string)
+	fmt.Println("1223312",userId)
 	user, ok := mongodb.FindById("user", userId, `{"s_phone":1,"s_m_phone":1,"o_jy":1,"i_vip_status":1,"l_vip_endtime":1,"o_vipjy":1,"i_vip_subtips":1,"i_entniche_first":1}`)
+	fmt.Println("1223312",(*user)["s_phone"].(string),(*user)["s_m_phone"].(string))
 	if ok && user != nil {
 		isExpire := -1
 		isPassCount := false
@@ -361,6 +363,30 @@ func (l *Me) MyInfo() {
 				hasKeyFlag = len(a_key) > 0
 			}
 		}
+		fmt.Println("1223312",(*user)["s_phone"].(string),(*user)["s_m_phone"].(string))
+		//商机管理处理
+		phone := ""
+		if s_phone, _ := (*user)["s_phone"].(string); s_phone != "" {
+			phone = s_phone
+		} else if s_m_phone, _ := (*user)["s_m_phone"].(string); s_m_phone != "" {
+			phone = s_m_phone
+		}
+		isEnt := false
+		if phone != "" {
+			//已购买企业未过期
+			log.Println("SELECT status FROM entniche_info WHERE id  IN (SELECT ent_id FROM entniche_user where phone = ? and power =1",phone)
+			if entInfo := public.Mysql.SelectBySql(`SELECT status FROM entniche_info WHERE id  IN (SELECT ent_id FROM entniche_user where phone = ? and power =1)`, phone); len((*entInfo)) > 0 {
+				for _, v := range (*entInfo) {
+					if qutil.IntAll(v["status"]) == 1 {
+						isEnt = true
+						break
+					}
+				}
+			}
+		}
+		if isEnt {
+			r["userType"] = "entniche"
+		}
 		r["isExpire"] = isExpire
 		r["vipStatus"] = qutil.IntAll((*user)["i_vip_status"])
 		r["isPassCount"] = isPassCount

+ 21 - 6
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/client_portrayal.js

@@ -125,6 +125,7 @@ var vNode = {
               viper: false,
               entniche: false
             },
+            newEntNiche: false,
             usageInfo: {
               total: 0,
               usage: 0,
@@ -175,8 +176,8 @@ var vNode = {
             })
         },
         getStatus: function () {
-          var entniche = this.userInfo.entniche
-          return !entniche || !(this.getDataObj && this.contactsObj && this.getNewMsgObj)
+          return !this.newEntNiche
+          // return !entniche || !(this.getDataObj && this.contactsObj && this.getNewMsgObj)
         },
         // 展示免费用户体验
         getfreeBuyerPort:function(){
@@ -227,8 +228,9 @@ var vNode = {
     },
     created () {
       this.getPowerInfo()
-      this.getActionState(utils.getParam('entName'), 'g')
-      this.getActionState(utils.getParam('entName'), 'r')
+      this.getNewEntNiche()
+      this.getActionState(decodeURIComponent(utils.getParam('entName')), 'g')
+      this.getActionState(decodeURIComponent(utils.getParam('entName')), 'r')
     },
     mounted: function () {
         this.buyer.name = decodeURIComponent(utils.getParam('entName'))
@@ -267,6 +269,19 @@ var vNode = {
             })
           }
         },
+        // 查询是否是新版商机管理
+        getNewEntNiche () {
+          let _this = this
+          $.ajax({
+            type:'post',
+            url: '/entnicheNew/buy/whetherbuy',
+            success: function(res) {
+              if(res.error_code === 0) {
+                _this.newEntNiche = res.data.isNew
+              }
+            }
+          })
+        },
         noMoreData (data) {
           this.contactsObj = data
         },
@@ -467,7 +482,7 @@ var vNode = {
           let _this = this
           let params = {
             "userId": 123,
-            "name": utils.getParam('entName'), //采购单位名称
+            "name": decodeURIComponent(utils.getParam('entName')), //采购单位名称
             "province": this.detailObj.province, //省份
             "city": this.detailObj.city, //区域
             "mold": 0, //1 认领;默认 0关注
@@ -476,7 +491,7 @@ var vNode = {
           if(str == 'r') {
             params = {
               "userId": 123,
-              "name": utils.getParam('entName'), //采购单位名称
+              "name": decodeURIComponent(utils.getParam('entName')), //采购单位名称
               "province": this.detailObj.province, //省份
               "city": this.detailObj.city, //区域
               "mold": 1, //1 认领;默认 0关注

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/set_scope2.js

@@ -508,7 +508,7 @@ var vNode = {
                 value: utils.unique(keysArr).join(' ')
             }
             $.ajax({
-                url: '/entnicheNew/custome/getRecomKWs',
+                url: '/entnicheNew/customer/getRecomKWs',
                 type: 'POST',
                 data: fetchData,
                 success: function (r) {

+ 5 - 1
src/jfw/modules/app/src/web/staticres/jyapp/css/subscribe.css

@@ -1671,6 +1671,10 @@ html, body {
   font-size: 12px;
   align-self: center;
 }
+.icon_ent{
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA4xJREFUWEfVl0+IHEUUxr9X1dXr7kz3jrtBNBCCwchqFD0pSFDIwUMOMZFkwvYEQkAJRPQSELwkIScvQYgYiIQIcacjS9SQoCDxYIIIycUorob456AIIcnqbM/s6vafejKts8zM9kwXY2SxT03Ve9/71VdVXdWEFX5ohevjfwTgBxMK2AiQ7O8aJxHwOTz3mom7Zg74wYQFHBG5xVslOQmB/SYQRgDKD14g0HaTES0hgM9EnnsiL8cQoLGHwDvzxNr7mcmPKsVTeTlGALI6v1mSfiVPrL0/YXE0qRQ+zssxAlDVuSeIxOE8sU4H9IGoMnolL8cIANXaOpvksTyx9v6Qk32olH7KyzEDmJp1bWFP54l1AOiwjF3jQV6OGQAAyw/OCZCdJ9js1+A/Ys/dZhJrDjBVe00I+YyJqAZ/Fnvu6yaxxgA4zko587sYvCYVZi6REGN/v2IW4LnmO4F+iRYLp7GH/ryzAF1qqtp4HIKfTps1XYoqxasmBbtjzB1YEYBpthEtPCoF7l02Oh2XhBDjqQFaz0JYtY4Ygk6A2xAjX6FMYS93ejvw1s2iHBvZLsDuINa2cjQoSOTCGZTvaWTp9ASw3ms8S8wT/6Z4K5cFfRvvLH5qDjDNUiULLwLaThixXqQPMFaYbxdQC8HDgHgybSN5JRoenuko8Nutghoafh4EK2Es6sni2yBis0X47vx9ytI70vll8XPiFc52J5rsAlkNnhOC1jZzIynfR3nk1/4Ah1io+2uPwRaPMCi1n1l8l3D8ESql39PkUzcKSg5vIIEHNGhDs0mAZ1jjhyh0v17a/1OzrhRDW4j0Q6lJjOuE+Mvw+t3f4BDpFkjHGpD+3KSE2N1NycCPkee81Gy3/PoBATyVNZ8a+nLsjR5s9im/fpSABzPiToaes3SudAAov76XgIxvOCdh3dmKvRT1B8Dl2HMO4h2+yx5qLJu21FHgw8hzjmc60BsACBHuhzc+o6aC3SRoMssBbl3DqnPrbRJvZscMCKCZ3ogrxU8sv7ZJQL6aPQXJkdgrXeh3gxrYAQbORZ5zrN/lJGT9Miqj3yu/vo+ALQM40PvyqYEvYs853DwVbad+tvv/QIPDeNEpN3dBv3WyNE3/0HV+Cf1glQK2Zv18RJxcaF2xLL++iYD17SNk4FrsORfTttO3Vise2rxch8II+jw893bmIsyy7L9uG/g4vlNgKw7wF7v/aDBG3bhnAAAAAElFTkSuQmCC) no-repeat;
+  background-size: contain;
+}
 /* .app-layout-header .switch-vip:before,.app-layout-header .only-vip:before{
   content: "";
   width: 15px;
@@ -1959,7 +1963,7 @@ html, body {
   color: #171826;
   line-height: 22px;
 }
-.product-switch .vipproduct,.entniche{
+.product-switch .vipproduct,.bigmember{
   box-shadow: 0px 1px 0px 0px rgba(0,0,0,0.05) inset, 16px 0px 0px 0px #ffffff inset;
 }
 .product-switch .icon-blue-duihao{

+ 39 - 0
src/jfw/modules/app/src/web/staticres/jyapp/js/historypush.js

@@ -209,6 +209,8 @@ var vm = new Vue({
         $(".switch").addClass('only-vip')
         $(".switch .user_pro").text("商机管理")
         $(".switch_right").addClass('right_zj')
+        $('.user_pro').css('color', '#171826')
+        $(".switch .switch_icon").addClass('icon_ent')
         this.selectPro = 3
         // this.ajaxUrl = '/publicapply/subscribe/historyPush?t=' + new Date().getTime()
       }
@@ -449,6 +451,19 @@ var vm = new Vue({
               $.post("/subscribepay/report/tip?t=" + new Date().getTime(), {type:"vip"}, function (r) {
               	reportHtml(r);
            	  });
+            } else if (res.data.vt == 's') {
+              productType = 3
+              historyVt = 's'
+              sessionStorage.setItem('switch-product', 'entniche')
+              _this.RemoveClass('vip')
+              $(".switch").addClass('only-vip')
+              $(".switch .user_pro").text("商机管理")
+              $(".switch_right").addClass('right_zj')
+              $('.user_pro').css('color', '#171826')
+              $(".switch .switch_icon").addClass('icon_ent')
+              _this.protype = 'entniche'
+              _this.selectPro = 3
+              _this.getEntInfo()
             }
             if(switchProduct == 'bigmember' && _this.rootInfo.isSubCount) {
             	$('#sub_manager').hide();
@@ -464,6 +479,30 @@ var vm = new Vue({
         }
       })
     },
+    // 获取商机管理权限
+    getEntInfo: function () {
+      let _this = this
+      $.ajax({
+        type: 'post',
+        url: '/entbase/ent/entinfo',
+        success: function(res) {
+          console.log(res)
+          if(res.error_code === 0) {
+            let address = ''
+            if(res.data.admin_department || res.data.admin_system) {
+              address = '/page_entniche/page/sub_management/sub_management_system.html'
+            } else {
+              address = '/page_entniche/page/subsetting/sub_entrance.html'
+            }
+            $("#sub_manager").click(function() {
+              setSessionStorage();
+              sessionStorage.setItem(_this.sessStorageKey, JSON.stringify(_this.$data))
+              location.href = address
+            })
+          }
+        }
+      })
+    },
     // 判断是否是有筛选条件
     getUserRoot: function() {
       var _this = this

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

@@ -477,6 +477,7 @@ var SuperSearch = {
             success: function(res) {
               console.log(res)
               if(res.error_code == 0) {
+                sessionStorage.setItem('entniche-root', res.data)
                 SuperSearch.isEntNicheNew = res.data.isNew
               }
             },

+ 24 - 2
src/jfw/modules/app/src/web/staticres/jyapp/me/js/mine.js

@@ -1,3 +1,4 @@
+entUserInfo = {}
 var mine = {
     pageUserInfo: pageUserInfo,
     init: function () {
@@ -21,6 +22,8 @@ var mine = {
         this.showUserMerge()
         // 获取小红点状态
         this.getRedDotState()
+        // 商机管理权限
+        this.getEntNicheRoot()
         // 清除超级订阅购买、续费、升级相关的缓存
         sessionStorage.removeItem('vip-cur-select-coupon')
         sessionStorage.removeItem('$select-coupon')
@@ -39,6 +42,21 @@ var mine = {
             isPageHide = true;
         });
     },
+    getEntNicheRoot: function() {
+      $.ajax({
+        type: "post",
+        url: '/entnicheNew/buy/whetherbuy',
+        success: function(res) {
+          console.log(res)
+          if(res.error_code == 0) {
+            entUserInfo = res.data
+            if(res.data.isNew) {
+              $('.customer-follow').show()
+            }
+          }
+        }
+      })
+    },
     // 查询用户信息(p19.1账号合并新增接口)
     getUserInfo: function () {
         $.ajax({
@@ -100,8 +118,12 @@ var mine = {
         // 项目关注跳转
         $('.project-follow').on('click', function (e) {
             setLiActive(e.currentTarget)
-            var url = $(this).attr('data-href')
-            autoLogin(url)
+            if(entUserInfo.isNew) {
+              location.href = '/jyapp/big/page/client_follow_list'
+            } else {
+              var url = $(this).attr('data-href')
+              autoLogin(url) 
+            }
         })
         
         // 客户关注跳转

+ 87 - 22
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/keyword-info.js

@@ -59,6 +59,8 @@ var vm = new Vue({
         return '/bigmember/use/info'
       } else if (this.vSwitch === 'v') {
         return '/subscribepay/afterPay/getUserInfo'
+      } else if (this.vSwitch === 's') {
+        return '/entnicheNew/subscribe/key/get'
       } else {
         return '/publicapply/free/subscribe'
       }
@@ -217,7 +219,7 @@ var vm = new Vue({
       }
       $.ajax({
         type: 'POST',
-        url: this.getInfoUrl + '?t=' + Date.now(),
+        url: _this.getInfoUrl + '?t=' + Date.now(),
         async: defaultOptions.async,
         success: function (res) {
           if (defaultOptions.needLoading) {
@@ -238,7 +240,15 @@ var vm = new Vue({
               if (res.userData && res.userData.o_vipjy) {
                 kList = res.userData.o_vipjy.a_items || []
               }
-            } else {
+            }
+            //  else if (_this.vSwitch === 's') {
+            //   _this.userData = res.data
+            //   // 关键词赋值
+            //   if (res.data && res.data.data) {
+            //     kList = res.data.data || []
+            //   }
+            // }
+             else {
               // 免费用户
               _this.conf.keywordMax = 10
               _this.userData = res.data
@@ -260,6 +270,11 @@ var vm = new Vue({
             }
 
             if (kList.length) {
+              // if(this.vSwitch === 's') {
+                
+              // } else {
+                
+              // }
               // 整理数据
               var groupList = _this.addInfoToKeyItem(kList)
               var groupNameList = _this.getGroupNameList(groupList)
@@ -557,33 +572,79 @@ var vm = new Vue({
       }
 
       var loading = this.showLoading()
-
+      var upUrl = '/publicapply/subscribe/setUserInfo'
+      // if(this.vSwitch == 's') {
+      //   console.log(this.userData)
+      //   this.userData.data.map((item) => {
+      //     console.log(item)
+      //     if(item.groupIndex == utils.getParam('gIndex')) {
+      //       console.log(_this.keyInfo.key.trim().replace(/\s+/g, ' '))
+      //       var keylist = _this.keyInfo.key.trim().replace(/\s+/g, ' ')
+      //       if(keylist) {
+      //         keylist = _this.keyInfo.key.trim().replace(/\s+/g, ' ').split(' ')
+      //         for(var i=0;i<keylist.length;i++){
+      //           if (keylist[i]==keylist[i+1]){
+      //             _this.showDialog({
+      //               title: '',
+      //               message: '该组关键词已存在,请勿重复添加',
+      //               className: 'j-confirm-dialog text-center',
+      //               showConfirmButton: true,
+      //               showCancelButton: false,
+      //               confirmButtonText: '我知道了'
+      //             })
+      //             return
+      //           }
+      //         }
+      //       }
+      //       item.a_key[0].key[0] = _this.keyInfo.key.trim().replace(/\s+/g, ' ')
+      //     }
+      //   })
+      //   params = {
+      //     a_items: this.userData.data
+      //   }
+      //   params = JSON.stringify(params)
+      //   upUrl = '/entnicheNew/subscribe/key/update'
+      // }
       $.ajax({
-        url: '/publicapply/subscribe/setUserInfo',
+        url: upUrl,
         type: 'POST',
         traditional: true,
+        // contentType: 'application/json',
         data: params,
         success: function (res) {
           loading && loading.clear()
-          if (res.flag) {
-            _this.showToast('保存成功')
-            setTimeout(function () {
-              history.back()
-            }, 1500)
-          } else {
-            if (res.msg.indexOf('存在') !== -1) {
-              _this.showDialog({
-                title: '',
-                message: '该组关键词已存在,请勿重复添加',
-                className: 'j-confirm-dialog text-center',
-                showConfirmButton: true,
-                showCancelButton: false,
-                confirmButtonText: '我知道了'
-              })
+          // if(_this.vSwitch == 's') {
+          //   if(res.error_code === 0) {
+          //     if(res.data.status == 1) {
+          //       _this.showToast('保存成功')
+          //       setTimeout(function () {
+          //         history.back()
+          //       }, 1500)
+          //     } else {
+
+          //     }
+          //   }
+          // } else {
+            if (res.flag) {
+              _this.showToast('保存成功')
+              setTimeout(function () {
+                history.back()
+              }, 1500)
             } else {
-              _this.showToast(res.msg ? res.msg : '保存失败')
+              if (res.msg.indexOf('存在') !== -1) {
+                _this.showDialog({
+                  title: '',
+                  message: '该组关键词已存在,请勿重复添加',
+                  className: 'j-confirm-dialog text-center',
+                  showConfirmButton: true,
+                  showCancelButton: false,
+                  confirmButtonText: '我知道了'
+                })
+              } else {
+                _this.showToast(res.msg ? res.msg : '保存失败')
+              }
             }
-          }
+          // }
         },
         error: function () {
           loading && loading.clear()
@@ -646,8 +707,12 @@ var vm = new Vue({
         count: 20, // 最少需要多少条数据
         value: utils.unique(keysArr).join(' ')
       }
+      var kurl = '/jyapp/member/getRecomKWs'
+      // if(this.vSwitch == 's') {
+      //   kurl = '/entnicheNew/customer/getRecomKWs'
+      // }
       $.ajax({
-        url: '/jyapp/member/getRecomKWs',
+        url: kurl,
         type: 'POST',
         data: fetchData,
         success: function (r) {

+ 564 - 0
src/jfw/modules/app/src/web/templates/active/yearEndReport/index.html

@@ -0,0 +1,564 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="keywords" content="剑鱼标讯">
+    <meta name="description" content="剑鱼标讯">
+    <meta name="author" content="剑鱼标讯">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport"
+          content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+    <meta name="x5-page-mode" content="app">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="format-detection" content="telephone=no">
+    <link rel="icon" href="/favicon.ico">
+    <title>年度报告</title>
+    <link rel="preload" as="style" href="https://cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css"/>
+    <link rel="preload" as="style" href="https://cdn-common.jianyu360.com/cdn/lib/swiper/5.4.2/swiper.min.css"/>
+    <link rel="stylesheet" href="https://cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css"/>
+    <link rel="stylesheet" href="https://cdn-common.jianyu360.com/cdn/lib/animate-css/4.1.1/animate.css"/>
+    <link rel="stylesheet" href="https://cdn-common.jianyu360.com/cdn/lib/swiper/5.4.2/swiper.min.css"/>
+    <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/css/music.css">
+    <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/css/index.css?v={{Msg "seo" "version"}}">
+    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/js/rem.js"></script>
+</head>
+
+<body>
+
+<div class="jy-report" v-cloak>
+    <!-- S--MUSIC -->
+    <audio id="audio" controls loop src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/mp3/bg.mp3'></audio>
+    <div id="music-control-box">
+        <div class="music-icon-box">
+            <img class="icon-music-on" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/music/music.png' />
+            <img class="icon-music-off" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/music/music-off.png' />
+        </div>
+    </div>
+    <!-- E--MUSIC -->
+    <!-- S--Toast -->
+    <div class="jy-toast" style="z-index: 2003;" v-show="showToastText">
+        <div class="jy-toast__text">${showToastText}</div>
+    </div>
+    <!-- E--Toast -->
+    <!-- Swiper -->
+    <div class="swiper-container" ref="mySwiper">
+        <div class="swiper-wrapper">
+            <div class="swiper-slide">
+                <div class="slide-inner">
+                    <div class="report-page page-1">
+                        <div class="user-info-group">
+                            <img v-show="pageInfo.user_head" @error="pageInfo.user_head = '/common-module/public/image/auto.png'" animate-name="up" animate-delay="200" class="jy-user-img" :src="pageInfo.user_head" alt="">
+                            <p animate-name="up" animate-delay="200" class="jy-user-name">Hi~<span v-show="pageInfo.user_name">${pageInfo.user_name}</span></p>
+                            <p animate-name="up" animate-delay="800" class="tip-info">
+                                <span class="text-hello">欢迎来到你的...</span>
+                                <span>2021剑鱼之旅</span>
+                            </p>
+                            <div class="read_pact" animate-name="up" animate-delay="1600">
+                                <input @change="changeReadPact" v-model="readPact" type="checkbox" autocomplete="off" id="read">
+                                <label for="read">同意剑鱼统计我的使用数据,</label><a href="/jyapp/free/staticPage/privacy_rules.html">查看授权协议</a>
+                            </div>
+                        </div>
+                        <div animate-name="up" animate-delay="1900" class="go-report">
+                            <div class="go-button" @click="goStart">即刻启程</div>
+                        </div>
+                        <div class="add-layer-group">
+                            <img class="meteor-left" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P1/meteor.png">
+                            <img class="meteor-mini" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P1/meteor-mini.png">
+                            <img animate-name="show"  class="meteor-bg" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P1/bottom-bg.png">
+                        </div>
+                        <img animate-name="up" animate-delay="900" class="jy-logo" src="https://www.jianyu360.cn/images/pc/logo.png" alt="">
+<!--                        <div class="next-page"></div>-->
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && pageInfo.registration_time">
+                <div class="slide-inner">
+                    <div class="report-page page-2">
+                        <div class="meet">
+                            <p animate-name="up" animate-delay="600" class="hello">${pageInfo.user_name}<span v-if="pageInfo.user_name">,</span>你好呀!</p>
+                            <p animate-name="up" animate-delay="1000" style="margin-top: 0.32rem; margin-left: 1.54rem;">
+                                <span class="text">还记得</span>
+                                <span class="time">${pageInfo.registration_time | dateFormat}</span>
+                                <span class="text">吗?</span>
+                            </p>
+                            <div class="star-two">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P2/star-two.png" alt="">
+                            </div>
+                            <p animate-name="up" animate-delay="1400" class="text-a" style="margin-top: 4.52rem;">很开心能遇见你</p>
+                            <div class="fish-two">
+                                <img class="swiper-lazy"  data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P2/fish-two.png" alt="">
+                            </div>
+                            <div class="tail-two">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P2/tail-two.png" alt="">
+                            </div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                            <div>
+                                <img class="swiper-lazy ball-two" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P2/ball-two.png" alt="">
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && pageInfo.total_days">
+                <div class="slide-inner">
+                    <div class="report-page page-3">
+                        <div class="usage-days">
+                            <div class="today" animate-name="up" animate-delay="400">今天</div>
+                            <div class="text" animate-name="up" animate-delay="800">是我们一起同行的</div>
+                            <div class="days" animate-name="up" animate-delay="1200">第${pageInfo.total_days}天</div>
+                        </div>
+                        <div class="star-three">
+                            <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P3/star-three.png" alt="">
+                        </div>
+                        <div class="ball-three">
+                            <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P3/ball-three.png" alt="">
+                        </div>
+                        <div class="yellow-three">
+                            <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P3/yellow-three.png" alt="">
+                        </div>
+                        <p class="moqi" animate-name="up" animate-delay="1600" >
+                            <span class="mf">“免费看,不遮挡”的承诺</span>
+                            <span class="mf" style="margin-top: 0.16rem;">是你我之间的永久的默契</span>
+                        </p>
+                        <div class="btn-next">
+                            <div class="next-page"></div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && pageInfo.login_days">
+                <div class="slide-inner">
+                    <div class="report-page page-4">
+                        <div class="year">
+                            <div class="text-1">
+                                <div class="jin" animate-name="up" animate-delay="400" >近一年</div>
+                                <div class="day">
+                                    <div class="ty" animate-name="up" animate-delay="800" >你登录了</div>
+                                    <div class="days" animate-name="up" animate-delay="1200" >${pageInfo.login_days}天</div>
+                                    <div class="ty" animate-name="up" animate-delay="1600" >剑鱼标讯</div>
+                                </div>
+                            </div>
+                            <div class="sm-four">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P4/sm-four.png" alt="">
+                            </div>
+                            <div class="fish-four">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P4/fish-four.png" alt="">
+                            </div>
+                            <div class="big-four">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P4/big-four.png" alt="">
+                            </div>
+                            <div animate-name="up" animate-delay="1800" class="text-2" v-show="pageInfo.active_days">
+                                <div class="night">
+                                    <div class="big-day" animate-name="up" animate-delay="2000" >有${pageInfo.active_days}天</div>
+                                    <div class="ty" animate-name="up" animate-delay="2400" >的深夜</div>
+                                </div>
+                                <div class="ty" animate-name="up" animate-delay="2800"  style="margin-left: 2.52rem;">仍在使用剑鱼标讯</div>
+                            </div>
+                            <div class="picture">
+                                <img class="swiper-lazy" data-src="" alt="">
+                            </div>
+                            <div class="text-bottom">
+                                <div class="text-3" animate-name="up" animate-delay="3200" >不是投标人爱熬夜</div>
+                                <div class="text-3" animate-name="up" animate-delay="3600" style="margin-top: 0.16rem;">是黑夜需要投标人这颗璀璨的星</div>
+                            </div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && pageInfo.focus_project.length">
+                <div class="slide-inner">
+                    <div class="report-page page-5">
+                        <div class="item">
+                            <div class="this" animate-name="up" animate-delay="400" >近一年</div>
+                            <div class="gongsi" animate-name="up" animate-delay="800" >
+                                <div v-for="(item, index) in pageInfo.focus_project">${item}</div>
+                            </div>
+                            <div class="guanzhu" animate-name="up" animate-delay="1200" >是你最关注的项目</div>
+                            <div class="yun-five">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P5/yun-five.png" alt="">
+                            </div>
+                            <div class="ball-five">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P5/ball-five.png" alt="">
+                            </div>
+                            <div class="fish-five">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P5/fish-five.png" alt="">
+                            </div>
+                            <div class="aoyi-five"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P5/aoyi-five.png" alt=""></div>
+                            <div class="text-bottom">
+                                <p animate-name="up" animate-delay="1600" >无论结果如何,我知道</p>
+                                <p animate-name="up" animate-delay="2000"  style="margin-top: 0.16rem;">这些标讯对你来说一定有特别的意义</p>
+                            </div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && pageInfo.view_total">
+                <div class="slide-inner">
+                    <div class="report-page page-6">
+                        <div class="message">
+                            <div class="year" animate-name="up" animate-delay="200" >近一年</div>
+                            <div class="you" animate-name="up" animate-delay="600" >你一共浏览了</div>
+                            <div class="num" animate-name="up" animate-delay="800" >${pageInfo.view_total | numberFormat('条')}</div>
+                            <div class="xiangmu" animate-name="up" animate-delay="1200" >项目信息</div>
+                            <div class="ball-six"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P6/ball-six.png" alt=""></div>
+                            <div class="group-six"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P6/group-six.png" alt=""></div>
+                            <div class="fish-six"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P6/fish-six.png" alt=""></div>
+                            <div class="xd-six"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P6/xd-six.png" alt=""></div>
+                            <div class="text-kong">
+                                <div class="text-one">
+                                    <p animate-name="up" animate-delay="1600" >精准、及时的数据</p>
+                                    <p animate-name="up" animate-delay="2000"  style="margin-top: 0.16rem;">都源于剑鱼悄悄的努力</p>
+                                </div>
+                            </div>
+                            <div class="kong">
+                                <div class="text-two" animate-name="up" animate-delay="2400">
+                                    <div class="box" animate-name="up" animate-delay="2500" >
+                                        <p class="p-one">招标信息库</p>
+                                        <span class="s-one">9000万+&nbsp;&nbsp;</span>
+                                        <p class="p-one">项目库</p>
+                                        <span class="s-one">4800万+</span>
+                                    </div>
+                                    <div class="box" animate-name="up" animate-delay="2700"  style="margin-top: 0.24rem;">
+                                        <p class="p-one">企业库</p>
+                                        <span class="s-one">4500万+&nbsp;&nbsp;</span>
+                                        <p class="p-one">采购单位库</p>
+                                        <span class="s-one">200万+</span>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="text-bottom" animate-name="up" animate-delay="3000" >让你不遗漏任何商机</div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && pageInfo.search_total">
+                <div class="slide-inner">
+                    <div class="report-page page-7">
+                        <div class="sum">
+                            <div class="year" animate-name="up" animate-delay="400" >近一年</div>
+                            <div class="you" animate-name="up" animate-delay="800" >你搜索了</div>
+                            <div class="num" animate-name="up" animate-delay="1200" >${pageInfo.search_total | numberFormat('次')}</div>
+                            <div class="xd-seven"><img animate-name="show"  class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P7/xd-seven.png" alt=""></div>
+                            <div class="text-bottom" animate-name="up" animate-delay="1600" >求索力让你的成功触手可及</div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && pageInfo.follow_total">
+                <div class="slide-inner">
+                    <div class="report-page page-8">
+                        <div class="friend">
+                            <div class="year" animate-name="up" animate-delay="400" >近一年</div>
+                            <div class="num" animate-name="up" animate-delay="800" >${pageInfo.follow_total  | numberFormat('个')}</div>
+                            <div class="you" animate-name="up" animate-delay="1200" >企业成为你的新朋友</div>
+                            <div class="ball-eight"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P8/ball-eight.png" alt=""></div>
+                            <div class="xd-eight"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P8/xd-eight.png" alt=""></div>
+                            <div class="text-bottom">
+                                <div class="text" animate-name="up" animate-delay="1600" >通过企业搜索、采购单位画像</div>
+                                <div class="text" animate-name="up" animate-delay="1800" >了解甲方、找到合作</div>
+                                <div class="text" animate-name="up" animate-delay="2100" >果断的执行力,让无数人为你痴迷</div>
+                            </div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <!--5,6,7,8-->
+            <div class="swiper-slide" v-if="!isNewUser && isNullOf5678">
+                <div class="slide-inner">
+                    <div class="report-page page-5678-kong">
+                        <div class="sum">
+                            <div class="year" animate-name="up" animate-delay="400" >你可能是个慢热的人</div>
+                            <div class="you" animate-name="up" animate-delay="800" >这一年</div>
+                            <div class="num" animate-name="up" animate-delay="1200" >还未有项目和企业成功引起你的关注</div>
+                            <div class="text" animate-name="up" animate-delay="1600" >不急,未来会有的</div>
+                            <div class="xd-seven"><img animate-name="show" class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P7/xd-seven.png" alt=""></div>
+                            <div class="text-bottom" animate-name="up" animate-delay="2000" >点击试用一下,会有惊喜</div>
+                            <div animate-name="up" animate-delay="2400" class="btn">
+                                <div class="go-button" @click="goExp('5678')">试用一下</div>
+                            </div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && pageInfo.active_month">
+                <div class="slide-inner">
+                    <div class="report-page page-9">
+                        <div class="mouth">
+                            <div class="year">
+                                <p class="nian" style="display: contents" animate-name="up" animate-delay="400" >近一年,</p>
+                                <div class="yue" style="color: #70EEFF;" animate-name="up" animate-delay="800" >${pageInfo.active_month}月</div>
+                            </div>
+                            <div class="you" animate-name="up" animate-delay="1200" >是你最繁忙的时候</div>
+                            <div class="text-bottom">
+                                <div class="text" animate-name="up" animate-delay="1600" >或许奔波在投标路上</div>
+                                <div class="text" animate-name="up" animate-delay="2000" >或许驰骋在投标知识的海洋</div>
+                                <div class="text" animate-name="up" animate-delay="2400" >追梦的你,满怀热忱</div>
+                            </div>
+                            <div class="picture-six">
+                                <div class="banner-text">2021年</div>
+                                <div class="yueyue">
+                                    <div class="banner-yue" animate-name="up" animate-delay="1600" >
+                                        <div class="banner-yue-one">${pageInfo.active_month}</div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && pageInfo.industry_total">
+                <div class="slide-inner">
+                    <div class="report-page page-10">
+                        <div class="ten">
+                            <div class="pao-ten">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P10/pao-ten.png" alt="">
+                            </div>
+                            <div class="fish-ten">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P10/fish-ten.png" alt="">
+                            </div>
+                            <div class="big-ten">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P10/big-ten.png" alt="">
+                            </div>
+                            <div class="sm-ten">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P10/sm-ten.png" alt="">
+                            </div>
+                            <p class="year" animate-name="up" animate-delay="400" >近一年</p>
+                            <div class="you" animate-name="up" animate-delay="800" >你关注的行业累计发布了</div>
+                            <span class="num" animate-name="up" animate-delay="600" >${pageInfo.industry_total | numberFormat('条')}</span>
+                            <div class="gonggao" animate-name="up" animate-delay="800" >项目公告</div>
+                            <div class="text-bottom">
+                                <div class="text" animate-name="up" animate-delay="1000" >即使受到疫情的影响</div>
+                                <div class="text" animate-name="up" animate-delay="1200" >投标人依旧稳步向前</div>
+                            </div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <!--9,10-->
+            <div class="swiper-slide" v-if="!isNewUser && isNullOf910">
+                <div class="slide-inner">
+                    <div class="report-page page-10-kong">
+                        <div class="ten">
+                            <div class="pao-ten">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P10/pao-ten.png" alt="">
+                            </div>
+                            <div class="fish-ten">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P10/fish-ten.png" alt="">
+                            </div>
+                            <div class="big-ten">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P10/big-ten.png" alt="">
+                            </div>
+                            <div class="sm-ten">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P10/sm-ten.png" alt="">
+                            </div>
+                            <p class="year" animate-name="up" animate-delay="200" >近一年</p>
+                            <div class="you" animate-name="up" animate-delay="400" >你的忙碌都有了收获</div>
+                            <div class="text-zg-kong">
+                                <div class="text-zg">
+                                    <div animate-name="up" animate-delay="600" >通过及时的标讯信息</div>
+                                    <div animate-name="up" animate-delay="800"  style="margin-top: 0.24rem;">找合作、找甲方、找商机</div>
+                                </div>
+                            </div>
+                            <div class="text-bottom">
+                                <div class="text" animate-name="up" animate-delay="1000" >即使受到疫情影响</div>
+                                <div class="text" animate-name="up" animate-delay="1200" >依旧稳步向前</div>
+                            </div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && pageInfo.exp_list.length">
+                <div class="slide-inner">
+                    <div class="report-page page-11">
+                        <div class="eleven">
+                            <div class="ball-eleven">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P11/ball-eleven.png" alt="">
+                            </div>
+                            <div class="fish-eleven">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P11/fish-eleven.png" alt="">
+                            </div>
+                            <p class="year" animate-name="up" animate-delay="200" >近一年</p>
+                            <div class="you" animate-name="up" animate-delay="400" >慧眼识珠的你,体验了剑鱼</div>
+                            <div class="gn" animate-name="up" animate-delay="600" >
+                                <span class="num">${pageInfo.exp_list.length}个</span>
+                                <p class="new">新功能</p>
+                            </div>
+                            <div class="list" animate-name="up" animate-delay="800" >
+                                <p v-for="item in pageInfo.exp_list.slice(0,5)">${item}</p>
+                                <p v-if="pageInfo.exp_list.length > 5">......</p>
+                            </div>
+                            <div class="text-bottom">
+                                <div class="text" animate-name="up" animate-delay="1000" >从未枯竭的好奇心</div>
+                                <div class="text" animate-name="up" animate-delay="1200" >让你看到了更大的世界</div>
+                            </div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser && isNullOf11">
+                <div class="slide-inner">
+                    <div class="report-page page-11-kong">
+                        <div class="eleven">
+                            <div class="ball-eleven">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P11/ball-eleven.png" alt="">
+                            </div>
+                            <div class="fish-eleven">
+                                <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P11/fish-eleven.png" alt="">
+                            </div>
+                            <p class="year" animate-name="up" animate-delay="200" >近一年</p>
+                            <div class="you" animate-name="up" animate-delay="400" >剑鱼产品不断迭代</div>
+                            <div class="list" animate-name="up" animate-delay="600" >
+                                <p>超级订阅V4.0</p>
+                                <p>大会员V2.0</p>
+                                <p>数据流量包</p>
+                                <p>......</p>
+                            </div>
+                            <div class="text-kong">
+                                <div class="text" animate-name="up" animate-delay="800" >期待您有更好的体验</div>
+                            </div>
+                            <div animate-name="up" animate-delay="1100" class="btn">
+                                <div class="go-button" @click="goExp('11')">试用一下</div>
+                            </div>
+                            <div class="btn-next">
+                                <div class="next-page"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="swiper-slide" v-if="!isNewUser">
+                <div class="slide-inner">
+                    <div class="report-page page-12">
+                        <div class="twelve">
+                            <div class="text">
+                                <div class="sm-star-twelve">
+                                    <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P12/sm-star-twelve.png" alt="">
+                                </div>
+                                <p animate-name="up" animate-delay="200"  class="text-1">无论好的坏的</p>
+                                <div animate-name="up" animate-delay="300" class="text-1" style="margin-top: 0.16rem;">跌宕且绮丽的2021已结束</div>
+                                <div animate-name="up" animate-delay="400" class="text-3">凛冬散尽,星河长明</div>
+                                <div animate-name="up" animate-delay="500" class="text-1" style="margin-top: 1.04rem;">为你生成2021年度角色报告</div>
+                                <div animate-name="up" animate-delay="800" class="btn">
+                                    <div class="go-button" @click="goResult">生成报告</div>
+                                </div>
+                                <div class="xd-twelve">
+                                    <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P12/xd-twelve.png" alt="">
+                                </div>
+                                <div class="big-star-twelve">
+                                    <img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P12/big-star-twelve.png" alt="">
+                                </div>
+                            </div>
+                            <div class="btn-next">
+<!--                                <div class="next-page"></div>-->
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <!-- 新用户 -->
+            <div class="swiper-slide" v-if="isNewUser">
+                <div class="slide-inner">
+                    <div class="report-page page-new-0">
+                        <div class="new-zero">
+                            <div class="text">
+                                <div class="year" animate-name="up" animate-delay="200" >2021</div>
+                                <div class="sm-zero"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P0/sm-zero.png" alt=""></div>
+                                <div class="text-1">
+                                    <p animate-name="up" animate-delay="300" >遗憾没有和您相遇</p>
+                                    <p animate-name="up" animate-delay="400" >但所有的遗憾</p>
+                                    <p animate-name="up" animate-delay="500" >都是2022惊喜的铺垫</p>
+                                </div>
+                                <div animate-name="up" animate-delay="600" class="text-2">
+                                    <div animate-name="up" animate-delay="700" >免费看,不遮挡服务初心不改</div>
+                                    <div animate-name="up" animate-delay="800" >商机线索推荐、AI智能服务中标创新永不停歇</div>
+                                </div>
+                                <div class="fish-zero"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P0/fish-zero.png" alt=""></div>
+                                <div class="xd-zero"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P0/xd-zero.png" alt=""></div>
+                                <div class="year" style="margin-top: 3.56rem;" animate-name="up" animate-delay="200" >新的一年</div>
+                                <div class="text-3">
+                                    <div animate-name="up" animate-delay="1000" >期待能和你肩并肩</div>
+                                    <div animate-name="up" animate-delay="1200" >走的更远</div>
+                                </div>
+                                <div animate-name="up" animate-delay="1300" class="btn">
+                                    <div class="go-button" @click="goExp('new')">即刻体验</div>
+                                </div>
+                                <div class="big-zero"><img class="swiper-lazy" data-src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/P0/big-zero.png" alt=""></div>
+                            </div>
+                            <div class="btn-next">
+<!--                                <div class="next-page"></div>-->
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+
+<!--S-必定需要预加载的资源-->
+<link rel="preload" as="script" href="https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js"/>
+<link rel="preload" as="script" href="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"/>
+<link rel="preload" as="script" href="https://cdn-common.jianyu360.com/cdn/lib/swiper/5.4.2/swiper.min.js"/>
+<link rel="preload" as="script" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'/>
+<link rel="preload" as="script" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/js/index.js?v={{Msg "seo" "version"}}'/>
+<!--E-必定需要预加载的资源-->
+<!--S-当前页面的资源-->
+<script src="https://cdn-common.jianyu360.com/cdn/lib/swiper/5.4.2/swiper.min.js"></script>
+<script src="https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js"></script>
+<script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
+<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/js/index.js?v={{Msg "seo" "version"}}'></script>
+
+<!--S-提前需要预加载的资源-->
+<link rel="prefetch" as="html" href="./yearEndReportResult"/>
+<link rel="prefetch" as="script" href="https://cdn-common.jianyu360.com/cdn/lib/html2canvas/1.1.2/dist/html2canvas.min.js"/>
+<!--E-提前需要预加载的资源-->
+<script>
+    if (typeof window._jyGlobal !== 'object') { window._jyGlobal = {} }
+    try { window._jyGlobal.baseURL = {{Msg "seo" "buryingPointUrl"}} } catch (e) { window._jyGlobal.baseURL = '' }
+    // 屏蔽console.log输出, 如需查看手动 localStorage.setItem('env', 'development') 刷新页面
+    if (localStorage.getItem('env') !== 'development') {
+        console.log = function () {}
+    }
+</script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/track/j-track.min.js?v={{Msg "seo" "version"}}'></script>
+<!--百度统计-->
+{{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 160 - 0
src/jfw/modules/app/src/web/templates/active/yearEndReport/result.html

@@ -0,0 +1,160 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+
+<head>
+  <meta charset="utf-8">
+  <meta name="keywords" content="剑鱼标讯">
+  <meta name="description" content="剑鱼标讯">
+  <meta name="author" content="剑鱼标讯">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport"
+    content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+  <meta name="x5-page-mode" content="app">
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black">
+  <meta name="format-detection" content="telephone=no">
+  <link rel="icon" href="/favicon.ico">
+  <title>我的年度角色</title>
+  <link rel="preload" as="style" href="https://cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css" />
+  <link rel="stylesheet" href="https://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='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/css/music.css'>
+  <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/css/result.css?v={{Msg "seo" "version"}}'>
+</head>
+
+<body>
+    <!-- S--MUSIC -->
+    <audio id="audio" controls loop src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/mp3/bg.mp3'></audio>
+    <div id="music-control-box" v-show="showAudio">
+      <div class="music-icon-box">
+        <img class="icon-music-on" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/music/music.png' />
+        <img class="icon-music-off" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/music/music-off.png' />
+      </div>
+    </div>
+    <!-- E--MUSIC -->
+  <div id="result" class="mask-report" v-cloak>
+    <div class="jy-report result" ref="resultRefs">
+    <!-- 结果1、2背景的装饰 -->
+    <div class="ball" v-if="curRole._id == 1">
+      <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/result/ball.png' alt="">
+    </div>
+    <div class="star" v-if="curRole._id == 2">
+      <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/result/star.png' alt="">
+    </div>
+    <div class="r-content">
+      <div class="info">
+        <div class="user">
+          <div class="head-img">
+            <img v-show="pageInfo.user_head" @error="pageInfo.user_head = '/common-module/public/image/auto.png'"  :src="pageInfo.user_head" alt="">
+          </div>
+          <div class="nick-name">${pageInfo.user_name}</div>
+        </div>
+        <div class="role">
+          <div class="role-placeholder">您的年度角色是</div>
+          <div class="role-title">${curRole.title}</div>
+          <div class="role-main">
+            <p class="role-text">跨过遗憾 跨过不甘。2022年,你会</p>
+            <div class="role-label">
+              <img :src="curRole.label" alt="">
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="role-bg role-bg-other">
+        <img :src='curRole.bg' alt="">
+      </div>
+    </div>
+    <!-- 按钮 -->
+    <div class="r-btns" key="status">
+      <button v-show="!isWeiXinBrowser" type="button" class="share-btn" @click.prevent="shareFn">去分享</button>
+      <button type="button" class="create-btn" @click.prevent="createImgFn">生成海报</button>
+    </div>
+    <van-action-sheet
+      v-model="showAction"
+      cancel-text="取消"
+      close-on-click-action
+    >
+      <button @click="selectShare(item)" class="van-action-sheet__item" v-for="item in actions">${item.name}</button>
+    </van-action-sheet>
+    <van-overlay :show="showScreen" @click="showScreen = false" z-index="1000">
+      <div class="wrapper" @click.stop>
+        <img class="canvas-img" :src="screenUrl" alt="">
+      </div>
+    </van-overlay>
+  </div>
+  <div id="create-img-box">
+    <div class="mask-report mask-report-active">
+      <div class="jy-report result" ref="resultRefs">
+        <!-- 结果1、2背景的装饰 -->
+        <div class="ball" v-if="curRole._id == 1">
+          <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/result/ball.png' alt="">
+        </div>
+        <div class="star" v-if="curRole._id == 2">
+          <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/result/star.png' alt="">
+        </div>
+        <div class="r-content">
+          <div class="info">
+            <div class="user">
+              <div class="head-img">
+                <img v-show="pageInfo.user_head" @error="pageInfo.user_head = '/common-module/public/image/auto.png'"  :src="pageInfo.user_head" alt="">
+              </div>
+              <div class="nick-name">${pageInfo.user_name}</div>
+            </div>
+            <div class="role">
+              <div class="role-placeholder">您的年度角色是</div>
+              <div class="role-title">${curRole.title}</div>
+              <div class="role-main">
+                <p class="role-text">跨过遗憾 跨过不甘。2022年,你会</p>
+                <div class="role-label">
+                  <img :src="curRole.label" alt="">
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="role-bg role-bg-other">
+            <img :src='curRole.bg' alt="">
+          </div>
+        </div>
+        <!-- 底部二维码 -->
+        <div class="r-bottom" key="status">
+          <div class="jy-logo">
+            <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/result/jy-logo.png' alt="">
+          </div>
+          <div class="jy-qcode">
+            <div class="code-label">
+              <p>扫一扫</p>
+              <p style="line-height: .3rem;">看看你的年度角色</p>
+            </div>
+            <div class="code-img" id="qrcode">
+              <img class="logo-icon" src="{{Msg "seo" "cdn"}}/common-module/public/image/logo_new.png" alt="">
+<!--              <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/images/result/jy-qcode.png' alt="">-->
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+  <!--S-必定需要预加载的资源-->
+  <link rel="preload" as="script" href="https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js" />
+  <link rel="preload" as="script" href="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js" />
+  <!--E-必定需要预加载的资源-->
+  <!--S-当前页面的资源-->
+  <script>
+    var domain = '{{Cdns .Host "seo" "cdn"|SafeUrl}}'
+  </script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/js/rem.js'></script>
+  <script src="https://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="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
+  <script crossorigin src="https://cdn-common.jianyu360.com/cdn/lib/html2canvas/1.1.2/dist/html2canvas.min.js"></script>
+  <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/js/qrcode.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/js/common.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/yearEndReport/js/result.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/track/j-track.min.js?v={{Msg "seo" "version"}}'></script>
+  <!-- 使用html2canvas 生成图片dom层不能使用背景图 否则生成的图片会模糊 且无法修复 -->
+  {{include "/common/baiducc.html"}}
+</body>
+
+</html>

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

@@ -141,12 +141,12 @@
                     <div class="sum_caigou client_caigou" v-if="!bmdetail">
                       <div class="sum_center">${this.$data.prolist.buyer}</div>
                       <div class="sum_right">
-                        <div class="claim" @click="location.href='/jyapp/big/page/unit_portrayal?from=client&entName=广东省第一强制隔离戒毒所'">
+                        <div class="claim" @click.stop="viewEntPort">
                           <span class="j-icon icon-porait"></span>
                           <span class="getproit">查看画像</span>
                         </div>
                         <span class="columnLine"></span>
-                        <div class="claim" @click="claimBtn($event)">
+                        <div class="claim" @click="claimBtn($event, this)">
                           <span class="j-icon icon-add-claim"></span>
                           <span class="icon-claim-text" style="color:#2ABED1;font-size: .26rem;">认领客户</span>
                         </div>
@@ -350,10 +350,71 @@
                     }
                 }
             },
+            viewEntPort: function () {
+              location.href='/jyapp/big/page/client_portrayal?from=client&entName=' + this.$data.prolist.buyer
+            },
+            // 是否认领和关注企业
+            getActionState () {
+              let _this = this
+              const params = {
+                names: this.$data.prolist.buyer
+              }
+              $.ajax({
+                type: 'POST',
+                url: '/entnicheNew/customer/claimcheck',
+                contentType: 'application/json',
+                data: JSON.stringify(params),
+                success: function(res) {
+                  console.log(res)
+                  if(res.data.iscoll) {
+                    if(res.data.names.length > 0) {
+                      $('.icon-claim-text').text('已认领')
+                    } else {
+                      $('.icon-claim-text').text('认领')
+                    }
+                  }
+                }
+              })
+            },
             // 认领
-            claimBtn: function(e) {
+            claimBtn: function(e, that) {
               e.stopPropagation()
-              $('.icon-claim-text').text('已认领')
+              let claim = $('.icon-claim-text').text()
+              if(claim == '已认领') {
+                this.$toast('不支持在该页面进行退回')
+                return
+              }
+              let _this = this
+              let params = {
+                "name": this.$data.prolist.buyer, //采购单位名称
+                "province": this.$data.prolist.area, //省份
+                "city": this.$data.prolist.city, //区域
+                "mold": 1, //1 认领;默认 0关注
+                "D": false, //true 取关;默认 false 关注
+              }
+              $.ajax({
+                type: 'POST',
+                url: '/entnicheNew/customer/attention',
+                contentType: 'application/json',
+                data: JSON.stringify(params),
+                success: function(res) {
+                  console.log(res)
+                  if(res.error_code == 0) {
+                    if(res.data) {
+                      if(params.mold == 0) {
+                        _this.follow = !_this.follow
+                      } else {
+                        _this.$toast('认领成功')
+                        $('.icon-claim-text').text('已认领')
+                      }
+                    } else {
+                      _this.$toast(res.error_msg)
+                    }
+                    // this.getActionState(utils.getParam('entName'), 'g')
+                    // this.getActionState(utils.getParam('entName'), 'r')
+                  }
+                }
+              })
             },
             // 获取项目详情
             getProDetail: function () {
@@ -433,6 +494,7 @@
 
                                 }
                             }
+                            _this.getActionState()
                         } else {
                             _this.$toast(res.error_msg)
                             setTimeout(function () {

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

@@ -120,7 +120,7 @@
         <div class="j-container" v-if="!foShow">
             <div class="pro-care-many">
               <div class="pro-care-center">
-                可关注500个项目,已关注${list.length}个
+                可关注${followMax}个项目,已关注${list.length}个
               </div>
             </div>
             <van-search v-model="carePro" @input="onSearch" class="clientsearch" placeholder="搜索关注的项目"></van-search>
@@ -216,7 +216,8 @@
               { text: '未认领客户的项目', value: 2 },
             ],
             initArea: [],
-            carePro: ''
+            carePro: '',
+            followMax: 0
         },
         created () {
             var recover = this.recover()
@@ -295,7 +296,7 @@
             },
             onCancelArea (data) {
               this.list = this.newList
-              this.filterList(this.carePro,this.value1, [])
+              this.filterList(this.carePro,this.value1, {})
               this.$refs.areaDown.toggle()
             },
             // 筛选列表
@@ -397,6 +398,7 @@
                 newlist = this.newList
               }
               this.list = newlist
+              console.log(this.list)
             },
             deweight(arr) {
               var obj = {}
@@ -466,6 +468,7 @@
                         // res.data.List.length = 0
                         if (res.error_code == 0){
                             // res.data.List = []
+                            _this.followMax = res.data.followMax
                             if(res.data && res.data.List && $.isArray(res.data.List) && res.data.List !=0){
                                 _this.foShow = false
 			                          var timestamp = parseInt(new Date().getTime()/ 1000);

+ 18 - 12
src/jfw/modules/app/src/web/templates/big-member/page_client_list.html

@@ -41,7 +41,7 @@
         <div class="j-container" v-if="!foShow">
             <div class="pro-care-many">
               <div class="pro-care-center">
-                可关注500个客户,已关注${list.length}个
+                可关注${countMax}个客户,已关注${list.length}个
               </div>
             </div>
             <div class="search">
@@ -53,7 +53,7 @@
             <div class="j-main havefomain" ref="jList">
               <div class="claim-main" style="width:100%;background: #fff;">
                 <div class="claim-scree">
-                  <van-tabs @change="getProjectList" v-model="active" color="#2ABED1">
+                  <van-tabs v-model="active" color="#2ABED1">
                     <van-tab title="全部">
                       <van-list
                         v-model="loading"
@@ -262,8 +262,8 @@
             inputVal: '',
             active: 0,
             havaClaimList: [], // 已认领列表
-            noClaimList: [] // 未认领列表
-
+            noClaimList: [], // 未认领列表
+            countMax: 0
         },
         created () {
             var recover = this.recover()
@@ -353,10 +353,10 @@
                       if(res.data.names.length !== listcopy.length) {
                         _this.noClaimList = newarr
                       } else {
-                        _this.noClaimList = []
+                        _this.noClaimList = _this.list
                       }
                     } else {
-                      _this.noClaimList = []
+                      _this.noClaimList = _this.list
                     }
                   }
                 }
@@ -373,6 +373,7 @@
             },
             // 关注、认领
             changeFollowState (data, str, taglid, tag) {
+              this.loading = true
               let params = {
                 "name": data.name, //采购单位名称
                 "province": data.province || data.wProvince, //省份
@@ -398,11 +399,11 @@
                   if(data.claim) {
                     this.ajaxClaim(params)
                   } else {
-                    this.ajaxClaim(params)
-                    // if (vKeepComponent) {
-                    //   vKeepComponent.changeBid(data.name, !data.claim)
-                    //   // vKeepComponent.changeKeepStatus(!data.claim, this)
-                    // }
+                    // this.ajaxClaim(params)
+                    if (vKeepComponent) {
+                      vKeepComponent.changeBid(data.name, !data.claim)
+                      // vKeepComponent.changeKeepStatus(!data.claim, this)
+                    }
                   }
                 }
               }
@@ -415,12 +416,16 @@
                 contentType: 'application/json',
                 data: JSON.stringify(params),
                 success: (res) => {
+                  _this.loading = false
                   console.log(res)
                   if(res.data) {
                     _this.getProjectList()
                   } else {
                     _this.$toast('取消认领失败')
                   }
+                },
+                error: function(err) {
+                  _this.loading = false
                 }
               })
             },
@@ -461,6 +466,7 @@
                     },
                     success:function(res) {
                         if (res.error_code == 0){
+                            _this.countMax = res.data.countMax
                             if(res.data && res.data.list && $.isArray(res.data.list) && res.data.list !=0){
                                 _this.foShow = false
                                 let nameArr = []
@@ -511,7 +517,7 @@
                 //         sid:sid
                 //     }
                 // sessionStorage.setItem('bigvip-fid',JSON.stringify(objId))
-                window.location.href = './client_portrayal?entName=' + item.name
+                window.location.href = './client_portrayal?entName=' + item.name + '&from=client'
             },
             //计算时差
             timeDiff:function (date) {

+ 1 - 1
src/jfw/modules/app/src/web/templates/big-member/page_main_root.html

@@ -77,7 +77,7 @@
                     <div class="header_infor">
                         <div class="userInfor">
                             <div class="head_img">
-                                <img :src="userinfor.headimage==''?'/jyapp/big-member/image/my_head.png':userinfor.headimage" alt="" class="head_image">
+                                <img :src="userinfor.headimage==''?'/common-module/public/image/auto.png':userinfor.headimage" alt="" class="head_image">
                             </div>
                             <div class="userdetail">
                                 <div class="username">${userinfor.name}</div>

+ 1 - 1
src/jfw/modules/app/src/web/templates/commonPay/paySuccess.html

@@ -71,7 +71,7 @@
                         onclick="window.location.href = '/jyapp/front/myorder/toEntnicheDetail?order_code={{.T.orderCode}}'">
                     查看订单
                 </button>
-                <button class="right_btn" onclick="window.location.href = '/page_entniche/home'">
+                <button class="right_btn" onclick="window.location.href = '/page_entniche/ent/enterprise'">
                     去使用
                 </button>
             </div>

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

@@ -238,7 +238,7 @@
       })
       var headimg = {{.T.share_headImg}}
       if( headimg  == ""){
-        headimg="/images/auto.png";
+        headimg="/common-module/public/image/auto.png";
       }
       $(".share-head").attr("src",headimg);
     })
@@ -260,8 +260,8 @@
 
     // $(document).ready(function () {
     //   scrollDiv("box", 350);
-    // });   
+    // });
   </script>
 </body>
 
-</html>
+</html>

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

@@ -202,7 +202,7 @@
           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('.list-left img').attr('src', v.headimg || '/common-module/public/image/auto.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()
@@ -234,12 +234,12 @@
         if (res) {
           $("#userName").text(res.nickName)
           if (!res.headImage) {
-            res.headImage = "/jyapp/images/persional/my_head.png"
+            res.headImage = "/common-module/public/image/auto.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('src', '/common-module/public/image/auto.png')
               $(this).attr('data-error', 'true')
             }
           })
@@ -304,7 +304,7 @@
     $(function () {
       $('.list-left img').each(function () {
         if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
-          this.src = '/jyapp/images/persional/my_head.png';
+          this.src = '/common-module/public/image/auto.png';
         }
       });
       // 保存图片

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

@@ -52,7 +52,7 @@
             <div class="user">
                 <div class="u_left">
                     <div class="user_img">
-                        <img id="head_img" class="avatar" src="" onerror="this.src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/persional/my_head.png?v={{Msg "seo" "version"}}'">
+                        <img id="head_img" class="avatar" src="" onerror="this.src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/image/auto.png?v={{Msg "seo" "version"}}'">
                     </div>
                     <div class="user_info">
                         <span class="username-container">
@@ -147,7 +147,7 @@
                             <span class="j-icon base-icon icon-arrow-right"></span>
                         </div>
                     </div>
-                    <div data-need-bind-phone class="menu_list customer-follow" data-href='/jyapp/big/page/client_list'>
+                    <div data-need-bind-phone style="display: none;" class="menu_list customer-follow" data-href='/jyapp/big/page/client_list'>
                       <div class="menu_list_left">
                           <span class="j-icon base-icon icon-case"></span>
                           <span class="label">客户关注</span>

+ 50 - 3
src/jfw/modules/app/src/web/templates/weixin/historypush.html

@@ -244,7 +244,7 @@
           <span class="icon-blue-duihao" v-if="selectPro == 3"></span>
       </div>
     </div>
-    <div class="typeswitch" @click="proClick('big')">
+    <div class="typeswitch bigmember" @click="proClick('big')">
         <div class="type-left">
             <img :src="iconbm" class="icon-bm" alt="">
             <span class="bm-text">大会员</span>
@@ -814,6 +814,10 @@
         $("#sub_manager").click(function() {
             setSessionStorage();
             sessionStorage.setItem(vm.sessStorageKey, JSON.stringify(vm.$data))
+            if(historyVt == 's') {
+              location.href = '/page_entniche/page/sub_management/sub_management_system.html'
+              return
+            }
             let thisType = sessionStorage.getItem('userIsNew')
             if (window.userNewType || thisType) {
                 location.href = '/jyapp/vipsubscribe/toSubVipSetPage'
@@ -960,6 +964,10 @@
                 async: false,
                 dataType: 'json',
                 success: function (data) {
+                  data.data = null
+                  if(!data.data) {
+                    data.data = []
+                  }
                     checkmerge(data.industry)
                     if (data.otherFlag){
                         localStorage.setItem({{.T.userId}}+"_otherFlag",data.otherFlag)
@@ -982,6 +990,17 @@
 
                     // 非vip的新用户
                     if (myInfo.userType !== 'vip') {
+                      if(myInfo.userType == 'entniche') {
+                        if(data.data) {
+                          if (data.data.length === 0) {
+                            $('.findnull_').show().siblings('.empty').hide()
+                          }
+                        } else {
+                          $('.findnull_').show().siblings('.empty').hide()
+                        }
+
+                        $('.header_header').hide()
+                      } else {
                         // 如果是新用户(没有推送历史数据,没有关键词),直接就显示空页面
                         if (data.data.length === 0 && myInfo.haskey === false && !firstTime) {
                             if(vm.rootInfo.memberStatus > 0) {
@@ -993,12 +1012,13 @@
                             }
                             return
                         } else {
-                            if(vm.rootInfo.memberStatus > 0) {
+                            if(vm.rootInfo.memberStatus > 0 || myInfo.userType == 'entniche') {
                                 $('.header_header').hide()
                             } else {
                                 $('.header_header').show()
                             }
                         }
+                      }
                     } else {
                         if (data.data.length === 0) {
                             $('.findnull_').show().siblings('.empty').hide()
@@ -1076,6 +1096,18 @@
             extend(1);
         }else{
             if(vm.rootInfo.memberStatus <= 0) {
+              if(myInfo.userType == 'entniche') {
+                $('.header_header').hide()
+                $(".switch").addClass('switch_zj')
+                $(".switch_right").hide()
+                $(".switch .switch_icon").addClass('icon_ent')
+                $(".switch .user_pro").text("商机管理").css('margin-right','.08rem')
+                $(".switch").show()
+                thisClass.InitPersonal(r);
+                $(".switch").click(toEntNichePage);
+                extend(1)
+                return
+              }
                 setTimeout(function(){
                     if (scrollTop==0 && r.haskey){
                         $(".header_header").show();
@@ -1093,7 +1125,7 @@
                     if (listString) {
                         $('.header_header').show()
                     }
-                }
+                } 
                 $(".app-content").css("justify-content","flex-start");
                 $(".switch").addClass("only-personal");
                 $(".switch .user_pro").text("立即使用 超级订阅");
@@ -1727,6 +1759,10 @@ function hasNoData() {
           async: false,
           dataType: 'json',
           success: function (data) {
+            if(!data.data) {
+              hasNoData
+              return
+            }
               pageIndex = 2;
               lasttime = data.thistime;
               firstPage = data.data;
@@ -1811,6 +1847,8 @@ function hasNoData() {
     if(switchProduct) {
         if(switchProduct == 'bigmember') {
             window.location.href = '/jyapp/vipsubscribe/toSetKeyWordPage?vSwitch=m';
+        } else if(switchProduct == 'entniche') {
+          window.location.href = '/page_entniche/page/subsetting/keyWord.html'
         } else {
             if (isInTSguide) {
                 window.location.href = '/jyapp/wxkeyset/keyset/index';
@@ -1855,6 +1893,12 @@ function hasNoData() {
       window.location.href = "/jyapp/vipsubscribe/introducePage";
   }
 
+  //我的企业列表
+  function toEntNichePage() {
+      setSessionStorage();
+      window.location.href = "/page_entniche/home";
+  }
+
   //vip设置
   function tosetpage() {
       setSessionStorage();
@@ -2109,6 +2153,9 @@ function hasNoData() {
     }
     function checkindustry(industry){
         var isinclude = false
+        if(!industry) {
+          return isinclude
+        }
         industry.forEach(function (item,index) {
             if (merge_industry.indexOf(item)>-1){
                 isinclude =  true

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

@@ -1182,7 +1182,7 @@
                 }else{
                     //window.location.href='/jyloanweb/index.html?v='+(new Date()).valueOf();
                     //查询是否是否开通商机管理 --isPower:未购买员工是否有权限进入商机管理页面
-                    $.post("/entniche/buy/whetherbuy",{},function(res){
+                    $.post("/entnicheNew/buy/whetherbuy",{},function(res){
                         if (res.error_code === 0) {
                             if (res.data.status === 2||res.data.isPower) {
                                 //清除之前选中商机管理推送列表的缓存

+ 7 - 3
src/jfw/modules/app/src/web/templates/weixin/search/tabSearch.html

@@ -2034,10 +2034,10 @@
                 $(".search-header-box").addClass('m-r')
                 if (nowIndex !== 1) {
                   $(".search-header-box").removeAttr("action")
-                  if(powerRoot.entniche) {
+                  if(SuperSearch.isEntNicheNew) {
                     $(".search-header-box").next().show()
                   } else {
-                    $(".search-header-box").next().show()
+                    $(".search-header-box").next().hide()
                   }
                 } else {
                   $(".search-header-box").attr("action", "javascript:return true")
@@ -2191,7 +2191,11 @@
             landname: $(this).text()
         }))
         SuperSearch.setSessionStorage()
-        location.href = "/jyapp/big/page/unit_portrayal?entName="+encodeURIComponent($(this).text())
+        if(SuperSearch.isEntNicheNew) {
+          location.href = "/jyapp/big/page/client_portrayal?entName="+encodeURIComponent($(this).text()) + '&from=client'
+        } else {
+          location.href = "/jyapp/big/page/unit_portrayal?entName="+encodeURIComponent($(this).text())
+        }
     }
 
     function setOnlyCookie () {

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

@@ -1092,11 +1092,6 @@
                 $('.commonUser').show()
                 if(res.data.memberStatus > 0) {
                   isFollow()
-                } else if (res.data.entniche) {
-                  $('.commonUser').hide()
-                  $('.entnicheUser').show()
-                  getActionState ({{.T.obj.buyer}}, 'g')
-                  getActionState ({{.T.obj.buyer}}, 'r')
                 }
                 if (window.isFree){
                   checkShowDialog()
@@ -1166,6 +1161,21 @@
                 console.log(err)
             }
         })
+        $.ajax({
+          type: "post",
+          url: '/entnicheNew/buy/whetherbuy',
+          success: function(res) {
+            console.log(res)
+            if(res.error_code == 0) {
+              if(res.data.isNew) {
+                $('.commonUser').hide()
+                $('.entnicheUser').show()
+                getActionState ({{.T.obj.buyer}}, 'g')
+                getActionState ({{.T.obj.buyer}}, 'r')
+              }
+            }
+          }
+        })
     }
     //isOpening()
     // 大会员引流文案

+ 140 - 0
src/jfw/modules/publicapply/src/active/21yearEndReport.go

@@ -0,0 +1,140 @@
+package active
+
+import (
+	. "api"
+	"db"
+	"fmt"
+	"github.com/go-xweb/xweb"
+	"math"
+	qutil "qfw/util"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type YearEndReport struct {
+	*xweb.Action
+	yearEndReportApi xweb.Mapper `xweb:"/active/yearEndReport"` //21年终报告接口
+}
+
+type YearEndReportConfig struct {
+	YearEndReportEnd int64  `json:"yearEndReportEnd"`
+	ShareUrl         string `json:"shareUrl"`
+	ReplyTitle       string `json:"replyTitle"`
+	ReplyHref        string `json:"replyHref"`
+	UserSourceFlag   string `json:"userSourceFlag"`
+}
+
+const (
+	year2022StartTimeStamp    = 1640966400 //2022-01-01
+	activeDefaultEndTimeStamp = 1644854400 //2022-02-15
+)
+
+var (
+	yearEndReportEndTimeStamp int64 = activeDefaultEndTimeStamp
+	yearEndReportConfig       YearEndReportConfig
+)
+
+func init() {
+	xweb.AddAction(&YearEndReport{})
+	qutil.ReadConfig("./active_report.json", &yearEndReportConfig)
+	if yearEndReportConfig.YearEndReportEnd > 0 {
+		yearEndReportEndTimeStamp = yearEndReportConfig.YearEndReportEnd
+	}
+}
+
+type YearEndReportData struct {
+	UserName         string   `json:"user_name"`         //昵称
+	UserHead         string   `json:"user_head"`         //头像地址
+	RegistrationTime int64    `json:"registration_time"` //注册时间 l_registedate
+	LoginDays        int32    `json:"login_days"`        //近一年登录天数 login_count
+	ActiveDays       int32    `json:"active_days"`       //深夜登录天数 login_night_count
+	ViewTotal        int32    `json:"view_total"`        //浏览信息次数 content_count
+	SearchTotal      int32    `json:"search_total"`      //搜索次数 search_count
+	FollowTotal      int32    `json:"follow_total"`      //企业/项目关注数量 ent_count
+	ActiveMonth      int32    `json:"active_month"`      //繁忙月份 month
+	IndustryTotal    int32    `json:"industry_total"`    //行业发布数据条数 bidding_count
+	ExpList          []string `json:"exp_list"`          //体验新功能列表 product_type
+	FocusProject     []string `json:"focus_project"`     //最关注的项目名称 vip_key
+	TotalDays        int32    `json:"total_days"`        //距离今天的天数 ~~
+	IsNew            bool     `json:"is_new"`            //是否新用户 ~~
+	Result           int32    `json:"result"`            //结果页type ~~
+	ShareLink        string   `json:"share_link"`        //报告二维码链接 ~~
+}
+
+func (this *YearEndReport) YearEndReportApi() {
+	userId, _ := this.GetSession("userId").(string)
+	rData, errMsg := func() (interface{}, error) {
+		if userId == "" {
+			return nil, fmt.Errorf("未登录")
+		}
+		if time.Now().Unix() > yearEndReportEndTimeStamp {
+			return nil, fmt.Errorf("不在活动期限内")
+		}
+		yerd := new(YearEndReportData)
+		if reportRes, _ := db.Mgo.FindOne("annual_report_new", map[string]interface{}{"userid": userId}); reportRes != nil && len(*reportRes) > 0 {
+			yerd.UserName, _ = (*reportRes)["s_name"].(string)
+			yerd.RegistrationTime, _ = (*reportRes)["l_registedate"].(int64)
+			yerd.LoginDays, _ = (*reportRes)["login_count"].(int32)
+			yerd.ActiveDays, _ = (*reportRes)["login_night_count"].(int32)
+			yerd.ViewTotal, _ = (*reportRes)["content_count"].(int32)
+			yerd.SearchTotal, _ = (*reportRes)["search_count"].(int32)
+			yerd.FollowTotal, _ = (*reportRes)["ent_count"].(int32)
+			yerd.ActiveMonth, _ = (*reportRes)["month"].(int32)
+			yerd.IndustryTotal, _ = (*reportRes)["bidding_count"].(int32)
+
+			if projectStr, _ := (*reportRes)["vip_key"].(string); projectStr != "" {
+				yerd.FocusProject = strings.Split(projectStr, ",")
+			}
+			expListStr, _ := (*reportRes)["product_type"].(string)
+			if expListStr != "" {
+				yerd.ExpList = strings.Split(expListStr, ",")
+			}
+		}
+		if baseRes, _ := db.Mgo.FindById("user", userId, `{"s_nickname":1,"s_headimage":1,"s_headimageurl":1,"l_registedate":1,"s_phone":1}`); baseRes != nil && len(*baseRes) > 0 {
+			if head, _ := (*baseRes)["s_headimage"].(string); head != "" {
+				yerd.UserHead = head
+			} else if head, _ := (*baseRes)["s_headimageurl"].(string); head != "" {
+				yerd.UserHead = head
+			}
+			if yerd.UserName == "" {
+				yerd.UserName, _ = (*baseRes)["s_nickname"].(string)
+				if yerd.UserName == "" {
+					if phoneStr, _ := (*baseRes)["s_phone"].(string); len(phoneStr) == 11 {
+						yerd.UserName = phoneStr[:3] + "***" + phoneStr[7:]
+					}
+				}
+			}
+
+			if yerd.RegistrationTime == 0 {
+				yerd.RegistrationTime, _ = (*baseRes)["l_registedate"].(int64)
+			}
+		}
+		//距离今天的天数
+		if yerd.RegistrationTime > 0 {
+			yerd.TotalDays = int32(math.Ceil(float64(time.Now().Sub(time.Unix(yerd.RegistrationTime, 0)).Hours()) / 24.0))
+		}
+		//是否新用户
+		if yerd.RegistrationTime > year2022StartTimeStamp || yerd.LoginDays == 0 {
+			yerd.IsNew = true
+		}
+		//结果页type
+		if !yerd.IsNew {
+			yerd.Result = getRandom(userId, yerd.RegistrationTime)
+		}
+		//报告二维码链接,及微信端地址
+		yerd.ShareLink = yearEndReportConfig.ShareUrl
+		return yerd, nil
+	}()
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
+//getRandom 根据用户id和注册时间生成1-9随机数
+func getRandom(userId string, t int64) int32 {
+	defer qutil.Catch()
+	i, e := strconv.ParseInt(userId[len(userId)-5:len(userId)-1], 16, 32)
+	if e != nil {
+		i = t
+	}
+	return int32(i)%9 + 1
+}

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

@@ -0,0 +1,7 @@
+{
+  "yearEndReportEnd": 1644854400,
+  "shareUrl": "https://web-wky.jydev.jianyu360.com/active/yearEndReport?from=share",
+  "replyTitle": "「我的剑鱼标讯2021」年度报告已经生成,请查收",
+  "replyHref": "https://web-wky.jydev.jianyu360.com/active/yearEndReport?from=reply",
+  "userSourceFlag": "21yearEndReport"
+}

+ 1 - 1
src/jfw/modules/publicapply/src/db.json

@@ -1,7 +1,7 @@
 {
 	"mongodb": {
 		"main": {
-			"address": "192.168.3.206:27080",
+			"address": "192.168.3.128:27080",
 			"size": 5,
 			"dbName": "qfw",
 			"replSet": ""

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

@@ -22,7 +22,7 @@ func (l *sessionfilter) Do(w http.ResponseWriter, req *http.Request) bool {
 		return true
 	}
 	session := l.App.SessionManager.Session(req, w)
-	/*session.Set("userId","61303ffcad25eb5bfe058dc5")
+/*	session.Set("userId","5f5b395723d21d2fb0e8a318")
 	session.Set("entUserId","171")
 	session.Set("entUserId","3602")*/
 	userId, ok := session.Get("userId").(string)

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

@@ -2,6 +2,7 @@ package main
 
 import (
 	_ "a"
+	_ "active"
 	_ "adLeague"
 	_ "applocation"
 	_ "attachmentdow"

+ 23 - 1
src/jfw/modules/publicapply/src/me/me.go

@@ -2,6 +2,7 @@ package me
 
 import (
 	"db"
+	"jfw/public"
 	"qfw/util"
 	"qfw/util/jy"
 	"qfw/util/redis"
@@ -26,7 +27,7 @@ func (m *Me) MyInfo() {
 		"userType": "free",
 	}
 	userId, _ := m.GetSession("userId").(string)
-	user, ok := db.Mgo.FindById("user", userId, `{"o_jy":1,"i_vip_status":1,"l_vip_endtime":1,"o_vipjy":1,"o_member_jy":1}`)
+	user, ok := db.Mgo.FindById("user", userId, `{"s_phone":1,"s_m_phone":1,"o_jy":1,"i_vip_status":1,"l_vip_endtime":1,"o_vipjy":1,"o_member_jy":1}`)
 	if ok && user != nil {
 		isExpire := -1
 		isPassCount := false
@@ -51,6 +52,27 @@ func (m *Me) MyInfo() {
 		} else {
 			isPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+tedayNum+"_"+userId) >= 150
 		}
+		phone := ""
+		if s_phone, _ := (*user)["s_phone"].(string); s_phone != "" {
+			phone = s_phone
+		} else if s_m_phone, _ := (*user)["s_m_phone"].(string); s_m_phone != "" {
+			phone = s_m_phone
+		}
+		isEnt := false
+		if phone != "" {
+			//已购买企业未过期
+			if entInfo := public.Mysql.SelectBySql(`SELECT status FROM entniche_info WHERE id  IN (SELECT ent_id FROM entniche_user where phone = ? and power =1)`, phone); len((*entInfo)) > 0 {
+				for _, v := range (*entInfo) {
+					if util.IntAll(v["status"]) == 1 {
+						isEnt = true
+						break
+					}
+				}
+			}
+		}
+		if isEnt {
+			r["userType"] = "entniche"
+		}
 		r["isExpire"] = isExpire
 		r["vipStatus"] = util.IntAll((*user)["i_vip_status"])
 		r["isPassCount"] = isPassCount

+ 1 - 1
src/jfw/modules/publicapply/src/subscribePush/entity/keyWords.go

@@ -41,7 +41,7 @@ func (this *KeyWordsSet) UpdateKeyWords() map[string]interface{} {
 		types = "o_vipjy"
 	}
 	//付费用户
-	if power.Status > 0 || power.VipStatus > 0 {
+	if power.Status > 0 || power.VipStatus > 0  {
 		switch this.ActionType {
 		case "SK": //保存/修改关键词
 			return AddKeyWords(types, this.UserId, this.ClassifyIndex, this.ClassifyName, this.KeyWordIndex, this.KeyWordName, this.KeyWordsCount, this.NotKeyWord, this.AppendKeyWord, this.MatchWay)

+ 2 - 1
src/jfw/modules/publicapply/src/subscribePush/service/pushList.go

@@ -58,7 +58,7 @@ func (sp *SubscribePush) VipSwitch() {
 			if vipMsg.EntnicheStatus <= 0 {
 				return nil, fmt.Errorf("未购买商机管理")
 			}
-			sp.SetSession(jy.SwitchService.SessionKey, jy.SwitchService.Member)
+			sp.SetSession(jy.SwitchService.SessionKey, jy.SwitchService.Entniche)
 			switchOk = true
 		} else {
 			return nil, fmt.Errorf("未知请求")
@@ -85,6 +85,7 @@ func (sp *SubscribePush) HasPushHistory() {
 		vipType = jy.SwitchService.GetEntniche(sp.Session(), db.Mgo,db.Mysql)
 	}
 	if vipType==jy.SwitchService.Entniche{
+		fmt.Println(util.IntAll(sp.GetSession("entUserId")))
 		userId = util.ObjToString(sp.GetSession("entUserId"))
 	}
 	go entity.HistoryPush.UpdateUserPushUnread(userId, vipType)

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

@@ -939,6 +939,12 @@ func Subscribe(w ResponseWriter, r *Request) {
 				})
 			}
 		}
+	} else {
+		if param, ok := redisValue.(map[string]interface{}); ok {
+			time.AfterFunc(time.Second, func() {
+				w.PostText(fmt.Sprintf("<a href='%s'>%s</a>", util.ObjToString(param["href"]), util.ObjToString(param["title"])))
+			})
+		}
 	}
 	if source == "69" { //数据报告-关注回复图文
 		datareportReply := util.ObjToMap(config.Sysconfig["datareportUserReply"])
@@ -961,7 +967,6 @@ func Subscribe(w ResponseWriter, r *Request) {
 				w.PostText(fmt.Sprintf((*structureDataReply)["content"].(string), config.Sysconfig["webdomain"].(string)+(*structureDataReply)["href"].(string)))
 			})
 		}
-
 	}
 
 	//分销系统二维码分享微信扫码关注

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

@@ -661,6 +661,7 @@
 
 .v-buyer-search-group .ent-search-list {
     overflow-y: auto;
+    overflow-x: hidden;
     position: relative;
 }
 

+ 3 - 2
src/web/staticres/common-module/collection/js/area-city-mobile.js

@@ -1,7 +1,7 @@
 var areaCityMobileComponentTemplate = `
 <div class="select-area-city-container  j-container">
     <div class="unitTab j-main">
-        <van-tabs type="card" class="unitType">
+        <van-tabs type="card" class="unitType" v-model="active">
             <van-tab v-for="(item, index) in tablist" :key="index">
                 <template #title>
                     <div class="tabtitle">
@@ -77,7 +77,8 @@ var areaCityMobileComponent = {
         X: ['西藏', '新疆', '香港'],
         Y: ['云南'],
         Z: ['浙江']
-      }
+      },
+      active: 1
     }
   },
   created () {

+ 35 - 0
src/web/staticres/common-module/collection/js/keyword-mobile.js

@@ -140,6 +140,8 @@ var keywordComponent = {
       let url = '/subscribepay/afterPay/getUserInfo?t=' + Date.now()
       if(_this.protype == 'bigmember') {
         url = '/bigmember/use/info?t=' + Date.now()
+      } else if(_this.protype == 'entniche') {
+        url = '/entnicheNew/subscribe/key/get'
       }
       $.ajax({
         url: url,
@@ -186,6 +188,39 @@ var keywordComponent = {
                 _this.setState()
               }
             }
+          } else  if(_this.protype == 'entniche') {
+            if(res.error_code == 0) {
+              if(res.data.data && res.data.data.length !== 0) {
+                let maxarr = []
+                res.data.data.forEach(function(item) {
+                  let minarr = []
+                  let keyname = item.s_item
+                  let eachArr = item.a_key
+                  eachArr.forEach(function(data, i){
+                    var textArr = data.key
+                    if (Array.isArray(data.appendkey)) {
+                      textArr = data.key.concat(data.appendkey)
+                    }
+                    data = {
+                      name: data.key[0],
+                      text: textArr.join(' '), // 展示在页面上的文字
+                      notkey: data.notkey ? data.notkey.join(' ') : '',
+                      // matchWayText: item.matchway == 1 ? '模糊' : '精准',
+                      // matchWayClass: item.matchway == 1 ? 'tag-orange' : 'tag-green'
+                      matchway: data.matchway,
+                      type: false
+                    }
+                    minarr.push(data)
+                  })
+                  let obj = {
+                    [keyname]: minarr,
+                    type: false
+                  }
+                  maxarr.push(obj)
+                })
+                _this.tablist = maxarr
+              }
+            }
           } else {
             if(res && res.userData) {
               let maxarr = []

+ 12 - 3
src/web/staticres/common-module/ent-search/ent-search-template.js

@@ -1264,6 +1264,7 @@ window.vBuyerSearchComponent = new Vue({
       this.togglePopForArea(false)
     },
     resetEnt () {
+      this.selectEntList = '请选择企业历史客户'
       this.conditionStrMap.entcustomer= []
       this.togglePopForArea(false)
     },
@@ -1274,7 +1275,7 @@ window.vBuyerSearchComponent = new Vue({
       if(setScopeList) {
         setScopeList = JSON.parse(setScopeList)
         _this.conditionStrMap.business_scope = setScopeList
-        _this.keyContent = this.formatterContent(setScopeList)
+        _this.keyContent = '已选:' + this.formatterContent(setScopeList)
       } else {
         $.ajax({
           type: 'POST',
@@ -1296,7 +1297,7 @@ window.vBuyerSearchComponent = new Vue({
                 })
               })
               _this.conditionStrMap.business_scope = getArr
-              _this.keyContent = '已选' + _this.formatterContent(getArr)
+              _this.keyContent = '已选' + _this.formatterContent(getArr)
             } else {
               _this.keyContent = '请选择业务范围'
             }
@@ -1393,10 +1394,15 @@ window.vBuyerSearchComponent = new Vue({
           cateArr.push(sum.Buyer)
         })
         if (r.data.list) {
+          r.data.list = r.data.list.splice(0, 499)
           if(r.data.count<=10) {
             this.buyerList = r.data.list
           } else {
-            this.buyerList = this.buyerList.concat(r.data.list)
+            if(this.listInfo.pageNum <= 1) {
+              this.buyerList = r.data.list
+            } else {
+              this.buyerList = this.buyerList.concat(r.data.list)
+            }
           }
         }
 
@@ -1462,6 +1468,7 @@ window.vBuyerSearchComponent = new Vue({
     },
     // 关注企业
     changeFollowState (data, str) {
+      let _this = this
       let params = {
         "userId": 123,
         "name": data.Buyer, //采购单位名称
@@ -1494,6 +1501,8 @@ window.vBuyerSearchComponent = new Vue({
               } else {
                 data.claim = !data.claim
               }
+            } else {
+              _this.$toast(res.error_msg)
             }
           }
         }

+ 1 - 1
src/web/staticres/common-module/keep-tags/keep-ent-tags-template.js

@@ -389,7 +389,7 @@ Vue.component('keep-component', {
     },
     ajaxGetAllTags () {
       this.isGetTagsLoading = true
-      this.ajaxFn('/entniche/customer/getLabel', {} , function (r) {
+      this.ajaxFn('/entnicheNew/customer/getLabel', {} , function (r) {
         this.isGetTagsLoading = false
         if (r && r.error_msg === '' && r.data) {
           this.tags = r.data.map(function (v) {

BIN
src/web/staticres/common-module/public/image/auto.png


BIN
src/web/staticres/common-module/public/image/logo_new.png


BIN
src/web/staticres/common-module/public/image/share-report.png


+ 1854 - 0
src/web/staticres/common-module/yearEndReport/css/index.css

@@ -0,0 +1,1854 @@
+@charset "UTF-8";
+
+
+[v-cloak] {
+  opacity: 0;
+}
+html,body{
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+}
+body {
+  background: #eee;
+  font-family: PingFang SC-Medium, PingFang SC, Helvetica Neue, Helvetica, Arial, sans-serif;
+  font-size: 0.28rem;
+  color: #000;
+  margin: 0;
+  padding: 0;
+}
+
+.swiper-slide {
+  overflow: hidden;
+}
+
+.swiper-container, .report-page {
+  width: 100%;
+  height: 100%;
+}
+.jy-report {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  top: 0;
+  left: 0;
+  background: url(../images/BG/bg.png) no-repeat center center;
+  background-size: cover;
+  background-position: 0 0;
+}
+
+.slide-inner {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  left: 0;
+  top: 0;
+  background-size: cover;
+  background-position: center;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-box-pack: center;
+  -ms-flex-pack: center;
+  -webkit-justify-content: center;
+  justify-content: center;
+  -webkit-box-align: center;
+  -ms-flex-align: center;
+  -webkit-align-items: center;
+  align-items: center;
+  overflow: hidden;
+}
+
+.next-page {
+  position: absolute;
+  bottom: 0.72rem;
+  width: 0.64rem;
+  height: 0.52rem;
+  background: url(../images/next/next.png) no-repeat center center;
+  background-size: 0.64rem 0.52rem;
+  animation: LoopPlayback 2s infinite ease-in;
+}
+
+
+
+
+.go-button {
+  position: relative;
+  width: 4.56rem;
+  height: 0.96rem;
+  text-align: center;
+  background: linear-gradient(180deg, #57FFF5 0%, #FFFFFF 100%);
+  box-shadow: 0px 0.08rem 0.32rem 1px rgba(8, 31, 38, 0.08);
+  font-size: 0.4rem;
+  line-height: 0.96rem;
+  font-weight: bold;
+  color: #10616B;
+  letter-spacing: 0.06rem;
+  border-radius: 0.48rem;
+}
+.go-button::after {
+  content: "";
+  position: absolute;
+  top: 0.08rem;
+  left: 0;
+  z-index: -1;
+  display: inline-block;
+  width: 4.56rem;
+  height: 0.96rem;
+  border-radius: 0.48rem;
+  background: linear-gradient(180deg, #FFFFFF 0%, #57FFF5 100%);
+  box-shadow: 0rem 0.08rem 0.32rem 0.02rem rgba(8, 31, 38, 0.08);
+}
+.jy-toast {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  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;
+  box-sizing: content-box;
+  max-width: 70%;
+  color: #fff;
+  font-size: 14px;
+  line-height: 20px;
+  white-space: pre-wrap;
+  text-align: center;
+  word-break: break-all;
+  background-color: rgba(0,0,0,.7);
+  border-radius: 8px;
+  -webkit-transform: translate3d(-50%,-50%,0);
+  transform: translate3d(-50%,-50%,0);
+  pointer-events: none;
+  min-width: 96px;
+  min-height: 0;
+  padding: 8px 12px;
+}
+
+/* S 动画 */
+@keyframes FadeIn {
+  0% {
+    opacity: 0;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+@keyframes LoopPlayback {
+  0% {
+    opacity: 0;
+    transform: translateY(30%);
+  }
+  80% {
+    transform: translateY(0);
+    opacity: 1;
+  }
+  100% {
+    opacity: 0.2;
+    transform: translateY(-30%);
+  }
+}
+@keyframes InitMeteorBgIn {
+  0% {
+    transform: translate3d(0, 100%, 0)
+  }
+  20% {
+    transform: scale(4) translate3d(0, 80%, 0) rotate3d(1, 1, 1, 30deg);
+  }
+  100% {
+    transform: scale(1) translate3d(0, 0, 0);
+  }
+}
+@keyframes MeteorRotate {
+  0% {
+    transform: unset;
+  }
+  100% {
+    transform: scale(3) rotate3d(1, 1, 1, -18deg);
+  }
+}
+@keyframes InLeft {
+  100% {
+    transform: translateX(0.3rem);
+  }
+}
+@keyframes RightIn {
+  0% {
+    transform: rotate(8deg) scale(1.5) translateX(90%);
+  }
+  80% {
+    transform: rotate(4deg) scale(1.2) translateX(5%);
+  }
+  100% {
+    transform: unset;
+  }
+}
+@keyframes Flicker {
+  0% {
+    opacity: 0;
+  }
+  15% {
+    opacity: 0.6;
+  }
+  40% {
+    opacity: 0.3;
+  }
+  70% {
+    opacity: 0.8;
+  }
+  90% {
+    opacity: 0.92;
+  }
+  100% {
+    opacity: 0.7;
+  }
+}
+@keyframes LeftMeteorIn {
+  0% {
+    transform-origin: 50% 500px;
+    transform: rotate(-30deg);
+    opacity: 0;
+  }
+  90% {
+    transform: unset;
+    opacity: 0.8;
+  }
+  100% {
+    transform: unset;
+    opacity: 1;
+  }
+}
+@keyframes MeteorIn {
+  from {
+    transform: rotate(-10deg) translateX(-50%);
+    opacity: 0;
+  }
+  to {
+    transform: unset;
+    opacity: 1;
+  }
+}
+@keyframes Scale {
+  from {
+    transform: scale(1) translate3d(0, 0, 0);
+  }
+  to {
+    transform: scale(1.5) translate3d(0, 0, 0);
+  }
+}
+@keyframes FadeBottomIn {
+  from {
+    transform: translateY(60%);
+    opacity: 0;
+  }
+  to {
+    transform: unset;
+    opacity: 1;
+  }
+}
+*[animate-name='up'] {
+  opacity: 0;
+}
+*[animate-name].up{
+  animation: FadeBottomIn 1s ease forwards;
+}
+
+/* E 动画 */
+
+/* S 第一页 */
+.page-1 {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+.page-1 .jy-user-name {
+  font-size: 0.48rem;
+  font-weight: 500;
+  color: #FFFFFF;
+  line-height: 0.5rem;
+  overflow:hidden;
+  text-overflow:ellipsis;
+  white-space:nowrap;
+  max-width: 90%;
+}
+
+.page-1 .jy-user-name span + span {
+  margin-left: 0.16rem;
+}
+
+.page-1 .user-info-group {
+  margin-top: 2.72rem;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+
+.page-1 .jy-user-img {
+  width: 1.44rem;
+  height: 1.44rem;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  border-radius: 50%;
+  overflow: hidden;
+  margin-bottom: 0.32rem;
+}
+
+.page-1 .jy-logo {
+  position: absolute;
+  bottom: 2.28rem;
+  width: 2.28rem;
+  height: 0.6rem;
+}
+
+.page-1 .go-report {
+  position: absolute;
+  bottom: 4rem;
+}
+
+.page-1 .tip-info {
+  margin-top: 1.28rem;
+  font-size: 0.48rem;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 0.14rem;
+}
+
+.page-1 .text-hello {
+  font-size: 0.32rem;
+  font-weight: 500;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 0.08rem;
+  margin-bottom: 0.32rem;
+  margin-left: 0.46rem;
+  display: block;
+}
+
+.page-1 .read_pact input:checked {
+  background-color: #2ABED1;
+}
+.page-1 .read_pact input {
+  width: 0.3rem;
+  height: 0.3rem;
+  background: transparent;
+  margin: 0;
+  margin-right: 0.2rem;
+  border-radius: 50%;
+  vertical-align: middle;
+  border: 1px solid #fff;
+  appearance: none;
+  -webkit-appearance: none;
+  outline: none;
+  cursor: pointer;
+}
+.page-1 .read_pact a {
+  color: #2ABED1;
+  text-decoration: none;
+}
+.page-1 .read_pact {
+  position: absolute;
+  bottom: 6.4rem;
+  font-size: 0.26rem;
+  font-weight: 500;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+}
+
+.page-1 .add-layer-group {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  z-index: -99;
+}
+
+.page-1 .meteor-bg.show {
+  animation: InitMeteorBgIn 4s ease-out 1 forwards, Scale 10s 5s ease infinite alternate;
+}
+.page-1 .meteor-bg {
+  position: absolute;
+  transform: translate3d(0, 100%, 0);
+  bottom: 0;
+  width: 100%;
+  z-index: -10;
+}
+
+.page-1 .meteor-mini {
+  position: absolute;
+  top: 3.4rem;
+  left: 6.82rem;
+  width: 1.36rem;
+  height: 0.77rem;
+  animation: Flicker infinite 2s  ease;
+}
+
+.page-1 .meteor-left {
+  position: absolute;
+  top: 4.52rem;
+  width: 3.34rem;
+  height: 1.14rem;
+  animation: LeftMeteorIn 1.2s 0.8s ease-in-out;
+}
+
+/* E 第一页 */
+
+/* S 第二页 */
+.page-2 .meet{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+}
+.page-2 .hello{
+  font-size: 0.48rem;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.56rem;
+  letter-spacing: 7px;
+  margin-left: 1.54rem;
+  max-width: 80%;
+  word-break: break-all;
+}
+.page-2 .text{
+  font-size: .32rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: .36rem;
+  letter-spacing: .08rem;
+}
+.page-2 .text-a{
+  font-size: 0.28rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 4px;
+  margin-left: 1.54rem;
+}
+.page-2 .time{
+  font-size: .32rem;
+  font-weight: bold;
+  color: #70EEFF;
+  line-height: .36rem;
+  letter-spacing: .08rem;
+}
+.page-2 .star-two{
+  position: absolute;
+  top: 5rem;
+  right: 1.48rem;
+  width: 1.36rem;
+  height: 0.77rem;
+}
+.page-2 .star-two img{
+  width: 100%;
+  height: 100%;
+}
+.page-2 .fish-two{
+  position: absolute;
+  right: 2.28rem;
+  bottom: 6.98rem;
+  width: 2.39rem;
+  height: 1.66rem;
+}
+.page-2 .fish-two img{
+  width: 100%;
+}
+.page-2 .tail-two{
+  position: absolute;
+  bottom: 6.2rem;
+  right:2.2rem;
+  z-index: -8;
+}
+.page-2 .tail-two img{
+  width: 100%;
+
+}
+.page-2 .btn-next{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.page-2 .ball-two{
+  width: 100%;
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  z-index: -9;
+}
+/* E第二页 */
+
+/* S第三页 */
+.page-3{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+}
+.page-3 .usage-days{
+  display: flex;
+  flex-direction: column;
+  margin-top: 2.92rem;
+}
+.page-3 .today{
+font-size: 0.48rem;
+
+font-weight: bold;
+color: #FFFFFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+position: absolute;
+top: 2.92rem;
+left: 1.5rem;
+}
+.page-3 .text{
+  font-size: .32rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: .36rem;
+  letter-spacing: .08rem;
+  position: absolute;
+  top: 3.92rem;
+  left: 1.5rem;
+}
+.page-3 .days{
+  font-size: .48rem;
+  font-weight: bold;
+  color: #70EEFF;
+  line-height: .56rem;
+  letter-spacing: .14rem;
+  position: absolute;
+    top: 4.3rem;
+    right: 1.36rem;
+}
+.page-3 .star-three{
+  position: absolute;
+  top: 5rem;
+  left: 1.84rem;
+  width: 1.36rem;
+  height: 0.77rem;
+}
+.page-3 .star-three img{
+  width: 100%;
+}
+.page-3 .yellow-three{
+  position: absolute;
+  top: 6.7rem;
+  left: 1.8rem;
+  width: 2.48rem;
+  z-index: -9;
+}
+.page-3 .yellow-three img{
+  width: 100%;
+  height: 100%;
+}
+.page-3 .ball-three{
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  z-index: -1;
+}
+.page-3 .ball-three img{
+  width: 100%;
+  height: 100%;
+}
+.page-3 .btn-next{
+  margin-top: 8.46rem;
+}
+.page-3 .moqi{
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  justify-content: center;
+  position: absolute;
+  bottom: 1.92rem;
+}
+.page-3 .mf{
+  font-size: .28rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: .36rem;
+  letter-spacing: .08rem;
+}
+.page-3 .btn-next{
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+}
+/* E第三页 */
+
+/* S第四页 */
+.page-4{
+  display: flex;
+  justify-content: center;
+}
+.page-4 .year{
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+    height: 100%;
+    margin-top: 2.92rem;
+}
+.page-4 .text-1{
+  margin-left: 1.54rem;
+}
+.page-4 .jin{
+font-size: 0.48rem;
+font-weight: bold;
+color: #FFFFFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-bottom: 0.16rem;
+}
+.page-4 .day{
+  display: flex;
+}
+.page-4 .ty{
+font-size: 0.32rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+}
+.page-4 .days{
+font-size: 0.32rem;
+font-weight: bold;
+color: #70EEFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+}
+.page-4 .text-2{
+  margin-top: 0.71rem
+}
+.page-4 .night{
+  display: flex;
+  align-items: center;
+  margin-left: 3.28rem;
+  margin-bottom : 0.24rem;
+}
+.page-4 .big-day{
+font-size: 0.48rem;
+font-weight: bold;
+color: #70EEFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+}
+.page-4 .text-bottom{
+  text-align: center;
+  position: absolute;
+    bottom: 1.92rem;
+    right: 2.06rem;
+}
+.page-4 .text-3{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+}
+.page-4 .btn-next{
+  display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.page-4 .fish-four{
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  z-index: -1;
+}
+.page-4 .fish-four img{
+  width: 100%;
+}
+.page-4 .sm-four{
+  position: absolute;
+  bottom: 7.16rem;
+  right: 1.78rem;
+  width: 1.36rem;
+  height: 0.77rem;
+}
+.page-4 .sm-four img{
+  width: 100%;
+}
+.page-4 .big-four{
+  position: absolute;
+  bottom: 3.78rem;
+  left: 0.14rem;
+  width: 3.5rem;
+
+}
+.page-4 .big-four img{
+  width: 100%;
+}
+/* E第四页 */
+
+/* S第五页 */
+.page-5 .item{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+}
+.page-5 .this{
+font-size: 0.48rem;
+font-weight: bold;
+color: #FFFFFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-left: 1.54rem;
+}
+.page-5 .gongsi{
+font-size: 0.32rem;
+font-weight: bold;
+color: #70EEFF;
+line-height: 0.38rem;
+letter-spacing: 4px;
+margin: 0.32rem auto;
+margin-left: 1.54rem;
+}
+.page-5 .guanzhu{
+font-size: 0.32rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+margin-left: 1.54rem;
+}
+.page-5 .text-bottom{
+  position: absolute;
+  bottom: 1.92rem;
+  left: 1.72rem;
+  text-align: center;
+}
+.page-5  p{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+}
+.page-5 .btn-next{
+  display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.page-5 .yun-five.show {
+  animation: InLeft 7s infinite alternate linear;
+}
+.page-5 .yun-five{
+  position: absolute;
+  bottom: 4.88rem;
+  left: 0;
+  z-index: -1;
+}
+.page-5 .yun-five img{
+  transform: scale(1.1);
+  width: 100%;
+}
+.page-5 .ball-five{
+  position: absolute;
+    bottom: 5.3rem;
+    left: 0.7rem;
+    z-index: -9;
+}
+.page-5 .ball-five img{
+  width: 4.64rem;
+}
+.page-5 .fish-five{
+  position: absolute;
+  left: 1.5rem;
+  bottom: 5.12rem;
+  width: 4.22rem;
+  z-index: -2;
+}
+.page-5 .fish-five img{
+  width: 100%;
+}
+.page-5 .aoyi-five{
+  position: absolute;
+  right: 0;
+  top: 4.3rem;
+  width: 7.81rem;
+  z-index: -10;
+}
+.page-5 .aoyi-five img{
+  width: 100%;
+}
+/* E第五页 */
+
+/* S第六页 */
+.page-6 .message{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+}
+.page-6 .year{
+font-size: 0.48rem;
+font-weight: bold;
+color: #FFFFFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-left: 1.54rem;
+}
+.page-6 .you{
+font-size: 0.32rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+margin-top: 0.32rem;
+margin-left: 1.54rem;
+}
+.page-6 .num{
+font-size: 0.48rem;
+font-weight: bold;
+color: #70EEFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-left: 4.1rem;
+}
+.page-6 .xiangmu{
+font-size: 0.32rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+margin-top: 0.16rem;
+margin-left: 3.5rem;
+}
+.page-6 .text-kong{
+  position: absolute;
+    bottom: 4.32rem;
+    width: 100%;
+    text-align: center;
+}
+.page-6 .text-one{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+}
+.page-6 .kong{
+  width: 100%;
+    text-align: center;
+    position: absolute;
+    bottom: 2.6rem;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.page-6 .text-two{
+  background: rgba(23, 24, 38, 0.3);
+  border-radius: 0.16rem 0.16rem 0.16rem 0.16rem;
+  opacity: 0;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+  padding: 0.24rem 0.36rem;
+}
+.page-6 .box{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.page-6 .p-one{
+  height: 0.34rem;
+font-size: 0.24rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.28rem;
+letter-spacing: 1px;
+}
+.page-6 .s-one{
+  height: 0.4rem;
+font-size: 0.28rem;
+font-weight: bold;
+color: #70EEFF;
+line-height: 0.33rem;
+letter-spacing: 2px;
+}
+.page-6 .text-bottom{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+margin-top: 0.32rem;
+position: absolute;
+    bottom: 1.92rem;
+    left: 2.98rem;
+}
+.page-6 .btn-next{
+  display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.page-6 .ball-six{
+  position: absolute;
+  right: 0;
+    top: 4.7rem;
+    width: 3.7rem;
+    z-index: -1;
+}
+.page-6 .ball-six img{
+  width: 100%;
+}
+.page-6 .group-six{
+  position: absolute;
+  left: 0.9rem;
+  bottom: 4.6rem;
+  z-index: -1;
+}
+.page-6 .group-six img{
+  width: 6.31rem;
+}
+.page-6 .fish-six{
+  z-index: -16;
+    position: absolute;
+    top: 8.4rem;
+    left: 1.6rem;
+    width: 1.98rem;
+}
+.page-6 .fish-six img{
+  width: 100%;
+}
+.page-6 .xd-six{
+  position: absolute;
+    top: 0.04rem;
+    left: 0;
+    z-index: -6;
+}
+.page-6 .xd-six img{
+  width: 100%;
+}
+/* E第六页 */
+
+
+/* S第七页 */
+.page-7 .sum{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+}
+.page-7 .year{
+font-size: 0.48rem;
+font-weight: bold;
+color: #FFFFFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-left: 1.54rem;
+}
+.page-7 .you{
+font-size: 0.32rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+margin-left: 1.54rem;
+margin-top: 0.32rem;
+}
+.page-7 .num{
+font-size: 0.48rem;
+font-weight: bold;
+color: #70EEFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-left: 4.1rem;
+}
+.page-7 .text-bottom{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+position: absolute;
+    bottom: 1.92rem;
+    left: 2.42rem;
+}
+.page-7 .btn-next{
+  display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.page-7 .xd-seven{
+  position: absolute;
+  right: 0;
+  bottom: 4.7rem;
+  z-index: -1;
+}
+.page-7 .xd-seven img.show {
+  animation: MeteorRotate 22s ease infinite alternate;
+}
+.page-7 .xd-seven img{
+  width: 100%;
+}
+/* E第七页 */
+
+/* S第八页 */
+.page-8 .friend{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+}
+.page-8 .year{
+  font-size: 0.48rem;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.56rem;
+  letter-spacing: 7px;
+  margin-left: 1.54rem;
+  }
+.page-8 .num{
+font-size: 0.48rem;
+font-weight: bold;
+color: #70EEFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-left: 4.96rem;
+margin-top: 0.32rem;
+}
+.page-8 .you{
+font-size: 0.32rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+margin-left: 2.44rem;
+margin-top: 0.16rem;
+}
+.page-8 .text-bottom{
+  text-align: center;
+  position: absolute;
+  left: 1.88rem;
+  bottom: 1.92rem;
+}
+.page-8 .text{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.52rem;
+letter-spacing: 4px;
+}
+
+.page-8 .btn-next{
+  display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.page-8 .ball-eight{
+  position: absolute;
+  right: 0;
+  bottom: 3.02rem;
+  width: 7.88rem;
+  z-index: -1;
+}
+.page-8 .ball-eight img{
+  width: 100%;
+}
+.page-8 .xd-eight{
+  position: absolute;
+  left: 0;
+  bottom: 3.48rem;
+  z-index: -9;
+}
+.page-8 .xd-eight img{
+  width: 100%;
+}
+/* E第八页 */
+
+/* S第九页 */
+.page-9 .mouth{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+}
+.page-9 .year{
+  display: flex;
+font-size: 0.48rem;
+font-weight: bold;
+color: #FFFFFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-left: 1.54rem;
+}
+.page-9 .you{
+font-size: 0.32rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+margin-left: 1.54rem;
+margin-top: 0.32rem;
+}
+.page-9 .text-bottom{
+  text-align: center;
+  position: absolute;
+  left: 2.42rem;
+  bottom: 1.92rem;
+}
+.page-9 .text{
+  font-size: 0.28rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.52rem;
+  letter-spacing: 4px;
+  }
+.page-9 .btn-next{
+  display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.page-9 .yueyue{
+  width: 100%;
+  height: 2.82rem;
+  text-align: center;
+  position: absolute;
+  bottom: 5.78rem;
+}
+.page-9 .banner-yue-one{
+  font-size: 2.02rem;
+  font-weight: bold;
+  color: #171826;
+  line-height: 2.37rem;
+}
+.page-9 .banner-yue-one::after {
+  content: "月";
+  font-size: 0.48rem;
+  font-weight: bold;
+  color: #171826;
+  line-height: 0.56rem;
+  letter-spacing: 7px;
+}
+.page-9 .picture-six{
+  background: url(../images/P9/ball-nine.png) no-repeat center center;
+  height: 15.16rem;
+  z-index: -1;
+  background-size: cover;
+  position: relative;
+  bottom: 3.12rem;
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  justify-content: center;
+}
+.page-9 .banner-text{
+  margin-bottom: 4.7rem;
+  font-size: 0.48rem;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.56rem;
+  letter-spacing: 7px;
+}
+.page-9 .ball-nine{
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  z-index: -1;
+}
+.page-9 .ball-nine img{
+  width: 100%;
+}
+/* E第九页 */
+
+/* S第十页 */
+.page-10 .ten{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+}
+.page-10 .year{
+font-size: 0.48rem;
+
+font-weight: bold;
+color: #FFFFFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-left: 1.54rem;
+}
+.page-10 .you{
+font-size: 0.32rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+margin-left: 1.54rem;
+margin-top: 0.32rem;
+}
+.page-10 .num{
+font-size: 0.48rem;
+font-weight: bold;
+color: #70EEFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+  padding-right: 1.6rem;
+  display: inline-block;
+  width: 100%;
+  text-align: right;
+  box-sizing: border-box;
+}
+.page-10 .gonggao{
+  font-size: 0.32rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 4px;
+  margin-left: 3.5rem;
+  margin-top: 0.16rem;
+}
+.page-10 .text-bottom{
+  text-align: center;
+  position: absolute;
+  bottom: 1.92rem;
+  left: 2.98rem;
+}
+.page-10 .text{
+font-size: 0.28rem;
+
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+}
+.page-10 .btn-next{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.page-10 .pao-ten{
+  position: absolute;
+  bottom: 1.7rem;
+  left: 0;
+  z-index: -9;
+}
+.page-10 .pao-ten img{
+  width:100%;
+}
+.page-10 .fish-ten{
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  z-index: -7;
+}
+.page-10 .fish-ten img{
+ width: 100%;
+}
+.page-10 .big-ten{
+  position: absolute;
+  bottom: 4.44rem;
+  left: 1.52rem;
+  width: 2.8rem;
+  z-index: -5;
+}
+.page-10 .big-ten img{
+ width: 100%;
+}
+.page-10 .sm-ten{
+  position: absolute;
+  top: 6.34rem;
+  right: 2.94rem;
+  width: 1.36rem;
+  height: 0.77rem;
+  z-index: -5;
+}
+.page-10 .sm-ten img{
+  width: 100%;
+  height: 100%;
+}
+/* E第十页 */
+
+
+/* S第十一页 */
+.page-11 .eleven{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+}
+.page-11 .year{
+  font-size: 0.48rem;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.56rem;
+  letter-spacing: 7px;
+  margin-left: 1.54rem;
+}
+.page-11 .new{
+  font-size: 0.32rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 4px;
+}
+.page-11 .you{
+  font-size: 0.32rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 4px;
+  margin-left: 1.54rem;
+  margin-top: 0.32rem;
+}
+.page-11 .gn{
+  margin-left: 1.54rem;
+  display: flex;
+  align-items: center;
+  margin-top: 0.48rem;
+}
+.page-11 .num{
+font-size: 0.48rem;
+font-weight: bold;
+color: #70EEFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+}
+.page-11 .list{
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  margin-left: 1.48rem;
+  margin-top: 3.1rem;
+}
+.page-11 .list p{
+  font-size: 0.28rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.52rem;
+  letter-spacing: 4px;
+  margin: 0;
+}
+.page-11 .text-bottom{
+  text-align: center;
+  position: absolute;
+  bottom: 1.92rem;
+  left: 2.8rem;
+}
+.page-11 .text{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.52rem;
+letter-spacing: 4px;
+}
+.page-11 .btn-next{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.page-11 .ball-eleven{
+  position: absolute;
+  bottom: 0;
+  left: 0.24rem;
+  z-index: -1;
+}
+.page-11 .ball-eleven img{
+  width: 100%;
+}
+.page-11 .fish-eleven{
+  position: absolute;
+  bottom: 2.7rem;
+  left: 1.84rem;
+}
+.page-11 .fish-eleven img{
+  width: 2.91rem;
+}
+
+/* E第十一页 */
+
+
+/* S第十二页 */
+.page-12 .twelve{
+  width: 100%;
+  height: 100%;
+  margin-top: 5.44rem;
+}
+.page-12 .text{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+.page-12 .text-1{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+}
+.page-12 .text-3{
+font-size: 0.48rem;
+font-weight: bold;
+color: #FFFFFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-top: 0.43rem;
+}
+.page-12 .btn{
+  text-align: center;
+  width: 4.56rem;
+  height: 0.96rem;
+  border-radius: 0.48rem;
+  margin-top: 0.2rem;
+}
+
+.page-12 .sm-star-twelve{
+    position: absolute;
+    top: 4.06rem;
+    right: 1.78rem;
+    width: 1.36rem;
+    height: 0.77rem;
+}
+.page-12 .sm-star-twelve img{
+  width: 100%;
+  height: 100%;
+}
+.page-12 .xd-twelve{
+  position: absolute;
+  bottom: 0rem;
+  left: 0rem;
+  z-index: -1;
+}
+.page-12 .xd-twelve img{
+  width: 100%;
+
+}
+.page-12 .big-star-twelve{
+  position: absolute;
+  bottom: 3.78rem;
+  left: 0.34rem;
+  width: 3.5rem;
+}
+.page-12 .big-star-twelve img{
+  width: 100%;
+}
+.page-12 .btn-next{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+
+/* E第十二页 */
+
+/* 新用户 */
+/* S新用户0 */
+.page-new-0 .new-zero{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.94rem;
+}
+.page-new-0 .text{
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  justify-content: center;
+}
+.page-new-0 .year{
+  height: 0.68rem;
+  font-size: 0.48rem;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.56rem;
+  letter-spacing: 7px;
+}
+.page-new-0 .text-1{
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  justify-content: center;
+  margin-top: 0.32rem;
+}
+.page-new-0 .text-1 p{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.52rem;
+letter-spacing: 4px;
+margin: 0;
+}
+.page-new-0 .text-2{
+  height: 1.4rem;
+  background: rgba(23, 24, 38, 0.3);
+  border-radius: 0.16rem 0.16rem 0.16rem 0.16rem;
+  padding: 0.24rem;
+  text-align: center;
+  margin-top: 0.4rem;
+  padding: 0.24rem;
+}
+.page-new-0 .text-2 div{
+  font-size: 0.24rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.62rem;
+  letter-spacing: 1px;
+}
+.page-new-0 .text-3{
+  text-align: center;
+  margin-top: 0.32rem;
+}
+.page-new-0 .text-3 div{
+  font-size: 0.28rem;
+
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.52rem;
+  letter-spacing: 4px;
+}
+.page-new-0 .btn{
+  width: 4.56rem;
+  height: 0.96rem;
+  font-size: 0.4rem;
+  font-weight: bold;
+  color: #10616B;
+  line-height: 0.96rem;
+  letter-spacing: 3px;
+  text-align: center;
+  border-radius: 0.48rem;
+  margin-top: 0.32rem;
+}
+.page-new-0 .btn-next{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.page-new-0  .sm-zero{
+  position: absolute;
+  top: 4.06rem;
+  right: 1.78rem;
+  width: 1.36rem;
+}
+.page-new-0  .sm-zero img{
+  width: 100%;
+}
+.page-new-0  .fish-zero{
+  position: absolute;
+  top: 4.4rem;
+  width: 100%;
+
+  z-index: -1;
+
+}
+.page-new-0  .fish-zero img{
+  width: 100%;
+}
+.page-new-0  .xd-zero{
+  position: absolute;
+  top: 4rem;
+  left: 0;
+  z-index: -9;
+
+}
+.page-new-0  .xd-zero img{
+  width: 100%;
+}
+.page-new-0 .big-zero{
+  position: absolute;
+    bottom: 1.52rem;
+    left: 0.34rem;
+    width: 3.78rem;
+    z-index: -8;
+}
+.page-new-0 .big-zero img{
+  width: 100%;
+}
+/* E新用户0 */
+
+/* S5678空 */
+.page-5678-kong .sum{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+  text-align: center;
+}
+.page-5678-kong .year{
+  font-size: 0.32rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 4px;
+}
+.page-5678-kong .you{
+  font-size: 0.48rem;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.56rem;
+  letter-spacing: 7px;
+  margin-top: 0.32rem;
+}
+.page-5678-kong .num{
+  font-size: 0.28rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 4px;
+  margin-top: 0.32rem;
+}
+.page-5678-kong .text{
+  font-size: 0.32rem;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 4px;
+  margin-top: 0.32rem;
+}
+.page-5678-kong .text-bottom{
+  font-size: 0.28rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 4px;
+  position: absolute;
+    bottom: 3.56rem;
+    right: 2.3rem;
+}
+.page-5678-kong .btn{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 100%;
+  height: 0.96rem;
+  font-size: 0.4rem;
+  font-weight: bold;
+  color: #10616B;
+  line-height: 0.96rem;
+  letter-spacing: 3px;
+  text-align: center;
+  border-radius: 0.48rem;
+  margin-top: 0.26rem;
+  position: absolute;
+    bottom: 2.23rem;
+}
+.page-5678-kong .btn-next{
+  display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.page-5678-kong .xd-seven{
+  position: absolute;
+  right: 0;
+  bottom: 4.7rem;
+  z-index: -1;
+}
+.page-5678-kong .xd-seven img.show {
+  animation: MeteorRotate 22s ease infinite alternate;
+}
+.page-5678-kong .xd-seven img{
+  width: 100%;
+}
+/* E5678空 */
+
+/* S第九十页 空 */
+.page-10-kong .ten{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+}
+.page-10-kong .year{
+font-size: 0.48rem;
+font-weight: bold;
+color: #FFFFFF;
+line-height: 0.56rem;
+letter-spacing: 7px;
+margin-left: 1.54rem;
+}
+.page-10-kong .you{
+font-size: 0.32rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+margin-left: 1.54rem;
+margin-top: 0.32rem;
+}
+.page-10-kong .text-zg-kong{
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.page-10-kong .text-zg{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+  width: 5.98rem;
+  height: 1.4rem;
+  background: #171826;
+  border-radius: 0.16rem 0.16rem 0.16rem 0.16rem;
+  opacity: 0.3;
+  margin-top: 0.72rem;
+}
+.page-10-kong .text-zg div{
+  font-size: 0.24rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.28rem;
+  letter-spacing: 1px;
+}
+.page-10-kong .text-bottom{
+  text-align: center;
+  position: absolute;
+  bottom: 1.92rem;
+  left: 2.98rem;
+}
+.page-10-kong .text{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.36rem;
+letter-spacing: 4px;
+}
+.page-10-kong .btn-next{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.page-10-kong .pao-ten{
+  position: absolute;
+  bottom: 1.7rem;
+  left: 0;
+  z-index: -9;
+}
+.page-10-kong .pao-ten img{
+  width:100%;
+}
+.page-10-kong .fish-ten{
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  z-index: -7;
+}
+.page-10-kong .fish-ten img{
+ width: 100%;
+}
+.page-10-kong .big-ten{
+  position: absolute;
+  bottom: 4.44rem;
+  left: 1.52rem;
+  width: 2.8rem;
+  z-index: -5;
+}
+.page-10-kong .big-ten img{
+ width: 100%;
+}
+.page-10-kong .sm-ten{
+  position: absolute;
+  top: 6.34rem;
+  right: 2.94rem;
+  width: 1.36rem;
+  height: 0.77rem;
+  z-index: -5;
+}
+.page-10-kong .sm-ten img{
+  width: 100%;
+  height: 100%;
+}
+/* E第十页 空*
+
+/* S第十一页 空*/
+.page-11-kong .eleven{
+  width: 100%;
+  height: 100%;
+  margin-top: 2.92rem;
+}
+.page-11-kong .year{
+  font-size: 0.48rem;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 0.56rem;
+  letter-spacing: 7px;
+  margin-left: 1.54rem;
+}
+.page-11-kong .you{
+  font-size: 0.32rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.36rem;
+  letter-spacing: 4px;
+  margin-left: 1.54rem;
+  margin-top: 0.32rem;
+}
+.page-11-kong .list{
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  margin-left: 1.48rem;
+  margin-top: 3.1rem;
+}
+.page-11-kong .list p{
+  font-size: 0.28rem;
+  font-weight: 400;
+  color: #FFFFFF;
+  line-height: 0.52rem;
+  letter-spacing: 4px;
+  margin: 0;
+}
+.page-11-kong .text-kong{
+  width: 100%;
+  text-align: center;
+  }
+.page-11-kong .text{
+font-size: 0.28rem;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 0.52rem;
+letter-spacing: 4px;
+margin-top: 2.56rem;
+}
+.page-11-kong .btn{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 100%;
+  height: 0.96rem;
+  font-size: 0.4rem;
+  font-weight: bold;
+  color: #10616B;
+  line-height: 0.96rem;
+  letter-spacing: 3px;
+  text-align: center;
+  border-radius: 0.48rem;
+  margin-top: 0.26rem;
+  position: absolute;
+    bottom: 2.23rem;
+}
+.page-11-kong .btn-next{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.page-11-kong .ball-eleven{
+  position: absolute;
+  bottom: 0;
+  left: 0.24rem;
+}
+.page-11-kong .ball-eleven img{
+  width: 100%;
+}
+.page-11-kong .fish-eleven{
+  position: absolute;
+    bottom: 3.9rem;
+    left: 1.2rem;
+}
+.page-11-kong .fish-eleven img{
+  width: 2.91rem;
+}
+
+/* E第十一页 */
+.jy-report .report-page .text-bottom {
+  left: unset;
+  right: unset;
+  width: 100%;
+  text-align: center;
+}

+ 56 - 0
src/web/staticres/common-module/yearEndReport/css/music.css

@@ -0,0 +1,56 @@
+@keyframes rotate-music {
+  0% {
+    transform: rotate(0deg);
+  }
+  100% {
+    transform: rotate(1turn);
+  }
+}
+#music-control-box {
+  position: fixed;
+  overflow: hidden;
+  z-index: 999;
+  right: 1.14rem;
+  top: 2.18rem;
+  cursor: pointer;
+}
+#music-control-box.run-music .music-icon-box {
+  -webkit-animation-play-state: running;
+  animation-play-state: running;
+}
+#music-control-box .music-icon-box .icon-music-on {
+  opacity: 0;
+}
+#music-control-box .music-icon-box .icon-music-off {
+  opacity: 1;
+}
+#music-control-box.run-music .music-icon-box .icon-music-on {
+  opacity: 1;
+}
+#music-control-box.run-music .music-icon-box .icon-music-off {
+  opacity: 0;
+}
+#music-control-box .music-icon-box {
+  position: relative;
+  width: 0.64rem;
+  height: 0.64rem;
+  box-sizing: border-box;
+  overflow: hidden;
+  -webkit-animation: rotate-music 3s linear infinite;
+  animation: rotate-music 3s linear infinite;
+  -webkit-animation-play-state: paused;
+  animation-play-state: paused;
+}
+
+#music-control-box .music-icon-box img {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  transition: opacity 0.25s;
+}
+#audio {
+  position: absolute;
+  top: -100%;
+  left: -100%;
+  z-index: -1;
+}

+ 325 - 0
src/web/staticres/common-module/yearEndReport/css/result.css

@@ -0,0 +1,325 @@
+html,body{
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+}
+[v-cloak] {
+  opacity: 0;
+}
+.mask-report{
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+}
+.result{
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  width: 100%;
+  height: 100%;
+  padding: 1.28rem 0;
+  background: url(../images/result/bg.png) no-repeat center center;
+  background-size: cover;
+  overflow: hidden;
+  box-sizing: border-box;
+}
+.r-content{
+  position: relative;
+  flex: 1;
+  /* padding: 0 1.54rem; */
+  width: 100%;
+  box-sizing: border-box;
+}
+.info{
+  width: 6.08rem;
+  margin: 0 auto;
+}
+.r-content .user{
+  display: flex;
+  align-items: center;
+  margin-top: 0.8rem;
+}
+.r-content .head-img{
+  width: 1.44rem;
+  height: 1.44rem;
+  border-radius: 50%;
+  margin-right: .32rem;
+  background-color: #ccc;
+  overflow: hidden;
+  flex-shrink: 0;
+}
+.r-content .head-img > img{
+  width: 100%;
+  height: 100%;
+}
+.r-content .nick-name{
+  display: inline-block;
+  font-size: 0.32rem;
+  color: #1DB5E5;
+  line-height: 0.44rem;
+}
+
+.r-content .role-placeholder{
+  margin-top: .6rem;
+  font-size: .28rem;
+  color: #fff;
+  line-height: .4rem;
+}
+.r-content .role-title{
+  margin-top: .24rem;
+  font-weight: bold;
+  color: #FF9F40;
+  font-size: .48rem;
+}
+.r-content .role-main{
+  display: flex;
+  flex-direction: column;
+  padding: .36rem .4rem;
+  margin-top: .52rem;
+  background: rgba(36, 181, 204, 0.2);
+  border: 1px solid rgba(42, 190, 209, 0.6);
+  box-sizing: border-box;
+  border-radius: 8px;
+}
+.r-content .role-text{
+  margin-bottom: .24rem;
+  font-size: .32rem;
+  color: #fff;
+  line-height: .48rem;
+}
+.r-content .role-label{
+  width: 100%;
+  height: .72rem;
+}
+.r-content .role-label > img{
+  display: block;
+  height: 100%;
+}
+.r-content .role-bg{
+  position: absolute;
+  left: 0;
+
+}
+.r-content .role-bg > img{
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+.mask-report-active .r-content .role-bg-other{
+  bottom: 1.2rem;
+}
+.r-content .role-bg-other{
+  bottom: 0;
+  width: 7.84rem;
+  height: auto;
+}
+.r-content .role-bg-other .ball{
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+.role-bg-other .super-man{
+  position: absolute;
+  top: 1.54rem;
+  left: 3.18rem;
+  width: 2.34rem;
+  height: 2.31rem;
+}
+.r-content .role-bg-other .super-man > img {
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+
+/* 装饰 */
+.voice {
+  position: absolute;
+  top: 2.08rem;
+  right: 1.14rem;
+  width: .64rem;
+  height: .64rem;
+}
+
+.ball{
+  position: absolute;
+  top: 2.88rem;
+  right: .68rem;
+  width: 1.12rem;
+  height: .88rem;
+}
+.star{
+  position: absolute;
+  top: 0;
+  right: 1.48rem;
+  width: .78rem;
+  height: 3.82rem;
+}
+.voice > img,
+.ball > img,
+.star >img{
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+
+/* 按钮 */
+.r-btns{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-top: 0.44rem;
+}
+.r-btns button{
+  width: 2.96rem;
+  height: .92rem;
+  border: 0;
+  outline: 0;
+  background-repeat: no-repeat;
+  background-position: center center;
+  background-color: transparent;
+  font-size: .36rem;
+  font-weight: bold;
+}
+.r-btns .share-btn{
+  height: .9rem;
+  background-image: url(../images/result/share-btn.png);
+  background-size: contain;
+  margin-right: .56rem;
+  color: #10616B;
+}
+.r-btns .create-btn{
+  background-image: url(../images/result/create-btn.png);
+  background-size: contain;
+  color: #fff;
+}
+/* logo、qcode */
+.r-bottom{
+  width: 100%;
+  display: flex;
+  justify-content: space-between;
+  align-items: flex-end;
+  padding: 0 .6rem;
+  box-sizing: border-box;
+  position: absolute;
+  bottom: 0.64rem;
+}
+.r-bottom .jy-logo{
+  width: 1.84rem;
+  height: .48rem;
+}
+.r-bottom .jy-logo > img{
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+
+.r-bottom .jy-qcode{
+  display: flex;
+  align-items: flex-end;
+  font-size: .32rem;
+  color: #fff;
+  line-height: .49rem;
+}
+.r-bottom .code-label{
+  margin-right: .16rem;
+  font-size: .26rem;
+  text-align: right;
+}
+.r-bottom .code-img{
+  position: relative;
+  width: 1.75rem;
+  height: 1.75rem;
+}
+.r-bottom .code-img img.logo-icon {
+  width: 0.56rem;
+  height: 0.56rem;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+}
+.r-bottom .code-img > img,
+.r-bottom .code-img > canvas {
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+/* 生成的canvas图片 */
+/* .canvas{
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 99;
+  background-color: #000;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 0;
+} */
+#create-img-box {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: -1;
+  opacity: 0;
+}
+.canvas-img{
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  display: block;
+  width: 80%;
+  height: auto;
+  object-fit: contain;
+  transform: translate(-50%, -50%);
+  z-index: 1001;
+  /* width: 100%;
+  height: 100%;
+  object-fit: scale-down; */
+}
+/* 重置vant */
+.van-action-sheet__cancel, .van-action-sheet__item{
+  font-size: 18px;
+  line-height: 28px;
+}
+
+/* 偏移的样式 */
+#create-img-box .mask-report-active{
+  width : 7.5rem;
+  height: 14.56rem;
+  background-color: transparent;
+  overflow: hidden;
+}
+.mask-report-active .ball{
+  top: 2.28rem;
+  right: 0.48rem;
+}
+.mask-report-active .star{
+  right: 0.88rem;
+}
+.mask-report-active .result{
+  padding: 0.64rem 0;
+  background-position: -0.8rem -0.8rem;
+  background-size: 110% 110%;
+}
+.mask-report-active .role-bg{
+  left: -0.82rem;
+  /* width: 8.48rem; */
+}
+/* .mask-report-active .info{
+  width: 6.88rem;
+}
+.mask-report-active .role-main{
+  padding: 0.48rem .54rem;
+}
+.mask-report-active .role-text{
+  font-size: 0.36rem;
+}
+.mask-report-active .r-bottom{
+  padding: 0 0.3rem;
+} */

BIN
src/web/staticres/common-module/yearEndReport/images/BG/bg.png


BIN
src/web/staticres/common-module/yearEndReport/images/P0/big-zero.png


BIN
src/web/staticres/common-module/yearEndReport/images/P0/fish-zero.png


BIN
src/web/staticres/common-module/yearEndReport/images/P0/sm-zero.png


BIN
src/web/staticres/common-module/yearEndReport/images/P0/xd-zero.png


BIN
src/web/staticres/common-module/yearEndReport/images/P1/bottom-bg.png


BIN
src/web/staticres/common-module/yearEndReport/images/P1/meteor-mini.png


BIN
src/web/staticres/common-module/yearEndReport/images/P1/meteor.png


BIN
src/web/staticres/common-module/yearEndReport/images/P10/big-ten.png


BIN
src/web/staticres/common-module/yearEndReport/images/P10/fish-ten.png


BIN
src/web/staticres/common-module/yearEndReport/images/P10/pao-ten.png


BIN
src/web/staticres/common-module/yearEndReport/images/P10/sm-ten.png


BIN
src/web/staticres/common-module/yearEndReport/images/P11/ball-eleven.png


BIN
src/web/staticres/common-module/yearEndReport/images/P11/fish-eleven.png


BIN
src/web/staticres/common-module/yearEndReport/images/P11/sm-star-eleven.png


BIN
src/web/staticres/common-module/yearEndReport/images/P12/big-star-twelve.png


BIN
src/web/staticres/common-module/yearEndReport/images/P12/sm-star-twelve.png


BIN
src/web/staticres/common-module/yearEndReport/images/P12/xd-twelve.png


BIN
src/web/staticres/common-module/yearEndReport/images/P2/ball-two.png


BIN
src/web/staticres/common-module/yearEndReport/images/P2/fish-two.png


BIN
src/web/staticres/common-module/yearEndReport/images/P2/star-two.png


BIN
src/web/staticres/common-module/yearEndReport/images/P2/tail-two.png


BIN
src/web/staticres/common-module/yearEndReport/images/P3/ball-three.png


BIN
src/web/staticres/common-module/yearEndReport/images/P3/star-three.png


BIN
src/web/staticres/common-module/yearEndReport/images/P3/yellow-three.png


BIN
src/web/staticres/common-module/yearEndReport/images/P4/big-four.png


BIN
src/web/staticres/common-module/yearEndReport/images/P4/fish-four.png


BIN
src/web/staticres/common-module/yearEndReport/images/P4/sm-four.png


BIN
src/web/staticres/common-module/yearEndReport/images/P5/aoyi-five.png


BIN
src/web/staticres/common-module/yearEndReport/images/P5/ball-five.png


BIN
src/web/staticres/common-module/yearEndReport/images/P5/fish-five.png


BIN
src/web/staticres/common-module/yearEndReport/images/P5/yun-five.png


BIN
src/web/staticres/common-module/yearEndReport/images/P6/ball-six.png


BIN
src/web/staticres/common-module/yearEndReport/images/P6/fish-six.png


BIN
src/web/staticres/common-module/yearEndReport/images/P6/group-six.png


Some files were not shown because too many files changed in this diff