Browse Source

Merge branch 'dev2.10.11' of ssh://192.168.3.207:10022/qmx/jy into dev2.10.11

wangkaiyue 5 năm trước cách đây
mục cha
commit
d35be42840
100 tập tin đã thay đổi với 2899 bổ sung1231 xóa
  1. 1 1
      README.md
  2. 6 0
      src/jfw/front/dataExport.go
  3. 275 10
      src/jfw/front/structedData.go
  4. 4 0
      src/jfw/front/wx_dataExport.go
  5. 4 0
      src/jfw/modules/app/src/app/front/dataExport.go
  6. 9 4
      src/jfw/modules/app/src/app/front/login.go
  7. 1 0
      src/jfw/modules/app/src/app/front/me.go
  8. 250 7
      src/jfw/modules/app/src/app/front/structedData.go
  9. 3 2
      src/jfw/modules/app/src/seo.json
  10. 4 3
      src/jfw/modules/app/src/web/staticres/jyapp/course/css/order_list.css
  11. 5 3
      src/jfw/modules/app/src/web/staticres/jyapp/css/myorder/order_list.css
  12. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/css/subscribe.css
  13. 6 0
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  14. 21 11
      src/jfw/modules/app/src/web/staticres/jyapp/me/css/mine.css
  15. 2 1
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/base.css
  16. 49 46
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/marketing.css
  17. 133 60
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/write_infor.css
  18. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/image/correct-icon-mobile.png
  19. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/choose_area.css
  20. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/choose_industry.css
  21. 13 7
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/messageType.css
  22. 78 0
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/trial_info.css
  23. 78 27
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_index_new.css
  24. 105 6
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_introduce.css
  25. 33 5
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_purchase.css
  26. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/Vector.png
  27. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/free_trial.png
  28. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/group_1.png
  29. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/group_2.png
  30. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/group_3.png
  31. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/group_4.png
  32. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/trial_banner.png
  33. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/vip-icon.png
  34. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/vipBook.png
  35. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/vip_banner.jpg
  36. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/vip_home.png
  37. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/vip_intro_bg-1@2x.jpg
  38. 467 0
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/choose_area.js
  39. 2 2
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/editArea.js
  40. 52 21
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/vip_index_new.js
  41. 8 8
      src/jfw/modules/app/src/web/templates/active/livePage/online.html
  42. 1 1
      src/jfw/modules/app/src/web/templates/active/livePage/over.html
  43. 9 9
      src/jfw/modules/app/src/web/templates/active/livePage/preheat.html
  44. 6 6
      src/jfw/modules/app/src/web/templates/dataExport/dataExport_toMyOrder.html
  45. 4 4
      src/jfw/modules/app/src/web/templates/me/index.html
  46. 8 6
      src/jfw/modules/app/src/web/templates/me/mine.html
  47. 1 1
      src/jfw/modules/app/src/web/templates/staticpage/privacy_rules.html
  48. 1 1
      src/jfw/modules/app/src/web/templates/staticpage/privacy_rules_client.html
  49. 33 8
      src/jfw/modules/app/src/web/templates/structeddata/marketing.html
  50. 506 111
      src/jfw/modules/app/src/web/templates/structeddata/write_infor.html
  51. 3 3
      src/jfw/modules/app/src/web/templates/structeddata/write_result.html
  52. 2 2
      src/jfw/modules/app/src/web/templates/vipsubscribe/change_area.html
  53. 2 2
      src/jfw/modules/app/src/web/templates/vipsubscribe/change_industry.html
  54. 1 1
      src/jfw/modules/app/src/web/templates/vipsubscribe/change_time.html
  55. 2 424
      src/jfw/modules/app/src/web/templates/vipsubscribe/choose_area.html
  56. 1 1
      src/jfw/modules/app/src/web/templates/vipsubscribe/choose_industry.html
  57. 1 1
      src/jfw/modules/app/src/web/templates/vipsubscribe/keyWord.html
  58. 4 4
      src/jfw/modules/app/src/web/templates/vipsubscribe/messageType.html
  59. 6 6
      src/jfw/modules/app/src/web/templates/vipsubscribe/renew_notice.html
  60. 3 3
      src/jfw/modules/app/src/web/templates/vipsubscribe/renew_pay.html
  61. 13 10
      src/jfw/modules/app/src/web/templates/vipsubscribe/trial_info.html
  62. 8 8
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_index.html
  63. 31 4
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_index_new.html
  64. 124 150
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_introduce.html
  65. 1 1
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_order_detail.html
  66. 5 5
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_purchase.html
  67. 3 3
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_renew.html
  68. 3 3
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_upgrade.html
  69. 1 1
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_viewPage.html
  70. 11 11
      src/jfw/modules/app/src/web/templates/weixin/historypush.html
  71. 3 3
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  72. 4 4
      src/jfw/modules/app/src/web/templates/weixin/treasure_box.html
  73. 3 0
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  74. 2 2
      src/jfw/modules/app/src/web/templates/weixin/wxkeyset/index.html
  75. 2 2
      src/jfw/modules/app/src/web/templates/weixin/wxkeyset/index_zb.html
  76. 2 2
      src/jfw/modules/pushsubscribe/src/push/job/nothingjob.go
  77. 31 0
      src/jfw/modules/subscribepay/src/service/dataExportPay_mobile.go
  78. 9 0
      src/jfw/modules/subscribepay/src/service/dataExportPay_pc.go
  79. 36 0
      src/jfw/modules/subscribepay/src/util/structed.go
  80. 10 0
      src/jfw/public/public.go
  81. 53 0
      src/jfw/public/structed.go
  82. 2 1
      src/seo.json
  83. 15 0
      src/web/staticres/css/dataService.css
  84. 1 1
      src/web/staticres/css/subscribe.css
  85. 2 2
      src/web/staticres/js/public-nav.js
  86. 0 162
      src/web/staticres/structuredata/css/write_infor.css
  87. BIN
      src/web/staticres/structuredata/file/【剑鱼标讯】结构化招标数据.xlsx
  88. 0 0
      src/web/staticres/structuredata/mobile/css/base.css
  89. 0 0
      src/web/staticres/structuredata/mobile/css/data_example.css
  90. 47 35
      src/web/staticres/structuredata/mobile/css/marketing.css
  91. 0 0
      src/web/staticres/structuredata/mobile/css/preview.css
  92. 0 0
      src/web/staticres/structuredata/mobile/css/weui.min.css
  93. 271 0
      src/web/staticres/structuredata/mobile/css/write_infor.css
  94. 0 0
      src/web/staticres/structuredata/mobile/css/write_result.css
  95. 0 0
      src/web/staticres/structuredata/mobile/iconfont/iconfont.css
  96. 0 0
      src/web/staticres/structuredata/mobile/iconfont/iconfont.eot
  97. 0 0
      src/web/staticres/structuredata/mobile/iconfont/iconfont.ttf
  98. 0 0
      src/web/staticres/structuredata/mobile/iconfont/iconfont.woff
  99. 0 0
      src/web/staticres/structuredata/mobile/iconfont/iconfont.woff2
  100. 0 0
      src/web/staticres/structuredata/mobile/image/01.png

+ 1 - 1
README.md

@@ -5,4 +5,4 @@ web用xweb框架
 
 v2.10.11
 1.订单优化
-2.vip订阅更名和优化
+2.vip订阅更名和优化

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

@@ -510,6 +510,12 @@ func (d *DataExport) ToCreateOrderPage(_id string) error {
 	if userId == "" {
 		return errors.New("未登录")
 	}
+	//是否是从结构化数据推广页过来的
+	if d.GetString("from") == "structed" {
+		d.SetSession("Structed", true)
+	} else {
+		d.DelSession("Structed")
+	}
 	msgCount := public.GetDataExportSearchCountUseId(id)
 	if msgCount > public.ExConf.MsgMaxCount {
 		msgCount = public.ExConf.MsgMaxCount

+ 275 - 10
src/jfw/front/structedData.go

@@ -1,47 +1,241 @@
 package front
 
 import (
-	"github.com/go-xweb/xweb"
-	"gopkg.in/mgo.v2/bson"
+	"fmt"
+	"jfw/config"
 	"jfw/public"
+	"log"
 	"qfw/util"
+	"qfw/util/redis"
+	"strings"
 	"time"
+
+	"github.com/go-xweb/xweb"
+	"gopkg.in/mgo.v2/bson"
 )
 
 type StructedData struct {
 	*xweb.Action
-	index      xweb.Mapper `xweb:"/front/structed/index"`      //数据结构化首页
-	writeInfo  xweb.Mapper `xweb:"/front/structed/writeinfo"`  //信息填写
+	index      xweb.Mapper `xweb:"/front/structed/index"`     //数据结构化首页
+	writeInfo  xweb.Mapper `xweb:"/front/structed/writeinfo"` //信息填写
 	checkUser  xweb.Mapper `xweb:"/front/structed/checkuser"`
 	success    xweb.Mapper `xweb:"/front/structed/success"`    //信息填写成功
 	saveData   xweb.Mapper `xweb:"/front/structed/savedata"`   //数据结构化保存用户
 	getPreview xweb.Mapper `xweb:"/front/structed/getpreview"` //数据结构化预览
+	//dev2.10.10
+	pc_index       xweb.Mapper `xweb:"/front/structed/pc_index.html"`  //pc端结构化数据首页
+	pc_info        xweb.Mapper `xweb:"/front/structed/pc_info.html"`   //pc端结构化数据信息页面
+	freeSamples    xweb.Mapper `xweb:"/front/structed/freeSamples"`    //数据结构化保存免费样例数据
+	verifyCode     xweb.Mapper `xweb:"/front/structed/verifyCode"`     //数据结构化验证邮箱验证码
+	sendMailVerify xweb.Mapper `xweb:"/front/structed/sendMailVerify"` //数据结构化发送邮箱验证码
+	verifyEmail    xweb.Mapper `xweb:"/front/structed/verifyEmail"`    //数据结构化验证邮箱是否验证过
 }
 
 func init() {
 	xweb.AddAction(&StructedData{})
 }
 
+//验证邮箱的正确性
+func (t *StructedData) VerifyEmail() {
+	defer util.Catch()
+	msg := "请求方式有误"
+	status := false
+	if t.Method() == "POST" {
+		userId := util.ObjToString(t.GetSession("userId"))
+		email := t.GetString("email")
+		msg = "参数有误"
+		if email != "" {
+			msg = "未登录"
+			if userId != "" {
+				emails := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
+					"user_mail":    email,
+					"user_id":      userId,
+					"product_type": "历史数据",
+				}, "user_mail", "")
+				//是否是绑定邮箱或者是数据导出邮箱  验证过的邮箱
+				if (emails != nil && util.ObjToString((*emails)["user_mail"]) != "") || (t.GetSession("s_myemail") != nil && email == t.GetSession("s_myemail").(string)) || (t.GetSession("SMVerifySucess") != nil && t.GetSession("SMVerifySucess").(bool) && email == t.GetSession("DataSMVerifyEmail")) {
+					status = true
+					msg = "此邮箱已被验证"
+					t.SetSession("SMVerifySucess", true)
+				} else {
+					msg = "未被验证"
+				}
+			}
+		}
+	}
+
+	t.ServeJson(map[string]interface{}{
+		"msg":    msg,
+		"status": status,
+	})
+}
+
+//验证 验证码的正确性
+func (t *StructedData) VerifyCode() {
+	defer util.Catch()
+	msg := "请求方式有误"
+	status := false
+	if t.Method() == "POST" {
+		userId := util.ObjToString(t.GetSession("userId"))
+		msg = "未登录"
+		if userId != "" {
+			s_email := t.GetString("s_email")       //邮箱
+			verifyCode := t.GetString("verifyCode") //验证码
+			VerifyEmail := util.ObjToString(t.GetSession("DataSMVerifyEmail"))
+			if verifyCode != "" && s_email != "" && VerifyEmail != "" {
+				if s_email == VerifyEmail {
+					msg = "验证码正确"
+					status = true
+					SMVerifySucess := t.GetSession("SMVerifySucess")
+					//需验证邮箱
+					if SMVerifySucess != nil && !SMVerifySucess.(bool) {
+						//验证码
+						verifyStr := t.GetSession("DataSMVerify")
+						//是否超时
+						lastSendDEVerify := util.Int64All(t.GetSession("CreatSMVerifyTime"))
+						timeSpaceing := lastSendDEVerify - time.Now().Unix() + 60*5
+						if lastSendDEVerify == 0 || timeSpaceing < 0 {
+							msg = "验证码超时"
+							status = false
+						} else if verifyStr != verifyCode {
+							msg = "验证码有误"
+							status = false
+						} else {
+							t.SetSession("SMVerifySucess", true)
+						}
+					}
+				} else {
+					msg = "验证码有误"
+					status = false
+				}
+			}
+		}
+	}
+	t.ServeJson(map[string]interface{}{
+		"msg":    msg,
+		"status": status,
+	})
+}
+
+//保存免费样例数据
+func (t *StructedData) FreeSamples() error {
+	defer util.Catch()
+	msg := "请求方式有误"
+	status := false
+	if t.Method() == "POST" {
+		userId := util.ObjToString(t.GetSession("userId"))
+		if userId != "" {
+			name := t.GetString("name")                      //联系人
+			phone_num := t.GetString("phone_num")            //手机号
+			s_email := t.GetString("s_email")                //邮箱
+			SMVerifySucess := t.GetSession("SMVerifySucess") //邮箱是否验证成功
+			if name != "" && phone_num != "" && s_email != "" && SMVerifySucess != nil && SMVerifySucess.(bool) {
+				count := public.Mysql.Count("structed_data", map[string]interface{}{
+					"name":  name,
+					"phone": phone_num,
+					"email": s_email,
+					"type":  1,
+				})
+				if count >= 1 {
+					msg = "用户信息已存在"
+					status = true
+				} else {
+					stu := public.Mysql.Insert("structed_data", map[string]interface{}{
+						"name":        name,
+						"phone":       phone_num,
+						"email":       s_email,
+						"submit_time": time.Now().Unix(),
+						"status":      0,
+						"type":        1, //用户来源,0:联系客服,1:免费样例,2:自选购买
+					})
+					if stu == 0 {
+						msg = "数据库操作异常"
+						status = false
+					} else {
+						//保存成功后 删除验证成功记录 和 发送验证码时间
+						t.DelSession("SMVerifySucess")
+						t.DelSession("CreatSMVerifyTime")
+						t.DelSession("DataSMVerifyEmail")
+						msg = "保存成功"
+						status = true
+						go public.SendStructedDataByEmail(s_email, config.GmailAuth)
+					}
+				}
+			} else {
+				msg = "缺少参数"
+				status = false
+			}
+		}
+	}
+	t.ServeJson(map[string]interface{}{
+		"msg":    msg,
+		"status": status,
+	})
+	return nil
+}
+
+//必须登录
+func (t *StructedData) Pc_info() error {
+	defer util.Catch()
+	userId := util.ObjToString(t.GetSession("userId"))
+	if userId != "" {
+		//删除验证成功记录 和 发送验证码时间 邮箱
+		t.DelSession("SMVerifySucess")
+		t.DelSession("CreatSMVerifyTime")
+		t.DelSession("DataSMVerifyEmail")
+		nums, ok := public.MQFW.FindOne("user", bson.M{"_id": bson.ObjectIdHex(userId)})
+		if !ok {
+			return t.Redirect("/front/aboutus.html")
+		}
+		if _, ok := (*nums)["s_phone"]; ok {
+			t.T["phone_num"] = (*nums)["s_phone"].(string)
+		}
+		if _, ok := (*nums)["s_myemail"]; ok {
+			t.T["s_myemail"] = (*nums)["s_myemail"].(string)
+			//验证是否是绑定的邮箱
+			t.SetSession("s_myemail", (*nums)["s_myemail"].(string))
+			t.SetSession("DataSMVerifyEmail", (*nums)["s_myemail"].(string))
+			t.SetSession("SMVerifySucess", true)
+		}
+		return t.Render("/structuredata/pc/info.html", &t.T)
+	} else {
+		return t.Redirect("/front/aboutus.html")
+	}
+}
+
+//可以不登录
+func (t *StructedData) Pc_index() error {
+	t.T["source"] = "wx_sy_dh_4"
+	return t.Render("/structuredata/pc/index.html", &t.T)
+}
 func (t *StructedData) Index() error {
 	t.T["source"] = "wx_sy_dh_4"
-	return t.Render("/structuredata/marketing.html", &t.T)
+	return t.Render("/structuredata/mobile/marketing_wx.html", &t.T)
 }
 
 //信息填写
 func (t *StructedData) WriteInfo() error {
-	return t.Render("/structuredata/write_info.html")
+	return t.Render("/structuredata/mobile/write_info.html")
 }
 
 //结构化数据预览
 func (t *StructedData) GetPreview() error {
-	return t.Render("/structuredata/preview.html")
+	return t.Render("/structuredata/mobile/preview.html")
 }
 func (t *StructedData) Success() error {
-	return t.Render("/structuredata/write_result.html")
+	//删除验证成功记录 和 发送验证码时间 邮箱
+	t.DelSession("SMVerifySucess")
+	t.DelSession("CreatSMVerifyTime")
+	t.DelSession("DataSMVerifyEmail")
+	return t.Render("/structuredata/mobile/write_result.html")
 }
 func (t *StructedData) CheckUser() error {
 	userId := util.ObjToString(t.GetSession("userId"))
 	if userId != "" {
+		//删除验证成功记录 和 发送验证码时间 邮箱
+		t.DelSession("SMVerifySucess")
+		t.DelSession("CreatSMVerifyTime")
+		t.DelSession("DataSMVerifyEmail")
 		nums, ok := public.MQFW.FindOne("user", bson.M{"_id": bson.ObjectIdHex(userId)})
 		if !ok {
 			return t.Redirect("/swordfish/about?source=open_infocontent&o=-130")
@@ -49,7 +243,14 @@ func (t *StructedData) CheckUser() error {
 		if _, ok := (*nums)["s_phone"]; ok {
 			t.T["phone_num"] = (*nums)["s_phone"].(string)
 		}
-		return t.Render("/structuredata/write_infor.html", &t.T)
+		if _, ok := (*nums)["s_myemail"]; ok {
+			t.T["s_myemail"] = (*nums)["s_myemail"].(string)
+			//验证是否是绑定的邮箱
+			t.SetSession("s_myemail", (*nums)["s_myemail"].(string))
+			t.SetSession("DataSMVerifyEmail", (*nums)["s_myemail"].(string))
+			t.SetSession("SMVerifySucess", true)
+		}
+		return t.Render("/structuredata/mobile/write_infor_wx.html", &t.T)
 	} else {
 		return t.Redirect("/swordfish/about?source=open_infocontent&o=-130")
 	}
@@ -59,10 +260,11 @@ func (t *StructedData) CheckUser() error {
 func (t *StructedData) SaveData() {
 	name := t.GetString("name")
 	phone_num := t.GetString("phone_num")
-	if name != "" && phone_num != "" {
+	if name != "" && phone_num != "" && isPhone(phone_num) {
 		count := public.Mysql.Count("structed_data", map[string]interface{}{
 			"name":  name,
 			"phone": phone_num,
+			"type":  0,
 		})
 		if count >= 1 {
 			t.ServeJson(map[string]interface{}{
@@ -78,6 +280,7 @@ func (t *StructedData) SaveData() {
 				"phone":       phone_num,
 				"submit_time": time.Now().Unix(),
 				"status":      0,
+				"type":        0, //用户来源,0:联系客服,1:免费样例,2:自选购买
 			})
 			if stu == 0 {
 				t.ServeJson(map[string]interface{}{
@@ -100,3 +303,65 @@ func (t *StructedData) SaveData() {
 	}
 }
 
+//发送邮件
+func (t *StructedData) SendMailVerify() {
+	defer util.Catch()
+	if t.Method() == "POST" {
+		userId := util.ObjToString(t.GetSession("userId"))
+		if userId != "" {
+			email := t.GetString("email")
+			if isEmail(email) {
+				lastSendDEVerify := util.Int64All(t.GetSession("CreatSMVerifyTime"))
+				timeSpaceing := lastSendDEVerify - time.Now().Unix() + 60*5
+				incurKey := fmt.Sprintf("SendSMEmail_%s_%d", t.GetSession("userId"), time.Now().Day())
+				if lastSendDEVerify == 0 || timeSpaceing < 0 {
+					//每日限制10次
+					times := util.IntAll(redis.Get("other", incurKey))
+					if times < 10 {
+						if times == 0 {
+							redis.Put("other", incurKey, 1, 24*60*60)
+						} else {
+							redis.Incr("other", incurKey)
+						}
+						//生成随机数
+						verifyStr := strings.ToUpper(util.GetComplexRandom(6, 3, 3))
+						t.SetSession("SMVerifySucess", false)
+						t.SetSession("DataSMVerify", verifyStr)
+						t.SetSession("CreatSMVerifyTime", time.Now().Unix())
+						t.SetSession("DataSMVerifyEmail", email)
+						log.Println("====================", verifyStr, "====================", t.GetSession("CreatSMVerifyTime"), "====================")
+						//发送邮箱验证码
+						go public.SendMailIdentCode(email, verifyStr, config.GmailAuth)
+						t.T["success"] = true
+						t.T["errCode"] = 5
+						t.T["errMsg"] = "已发送邮箱验证码"
+					} else {
+						t.T["success"] = false
+						t.T["errCode"] = 3
+						t.T["time"] = timeSpaceing
+						t.T["errMsg"] = "验证码发送次数已达到今日上限"
+					}
+
+				} else {
+					t.T["success"] = false
+					t.T["errCode"] = 2
+					t.T["time"] = timeSpaceing
+					t.T["errMsg"] = "已发送,5分钟后再尝试"
+				}
+			} else {
+				t.T["success"] = false
+				t.T["errCode"] = 1
+				t.T["errMsg"] = "邮箱格式不正确"
+			}
+		} else {
+			t.T["success"] = false
+			t.T["errCode"] = 7
+			t.T["errMsg"] = "未登录"
+		}
+	} else {
+		t.T["success"] = false
+		t.T["errCode"] = 6
+		t.T["errMsg"] = "请求方式有误"
+	}
+	t.ServeJson(&t.T)
+}

+ 4 - 0
src/jfw/front/wx_dataExport.go

@@ -73,6 +73,10 @@ func (w *WxDataExport) ToSieve() error {
 
 		w.T["orderDetail"] = orderDetail
 	}
+	//是否是从结构化数据推广页过来的
+	if w.GetString("from") == "structed" {
+		w.SetSession("Structed", true)
+	}
 	//分享
 	w.T["signature"] = wx.SignJSSDK(w.Site() + w.Url())
 	myopenid, _ := w.Session().Get("s_m_openid").(string)

+ 4 - 0
src/jfw/modules/app/src/app/front/dataExport.go

@@ -81,6 +81,10 @@ func (w *WxDataExport) ToSieve() error {
 		}
 		w.T["orderDetail"] = orderDetail
 	}
+	//是否是从结构化数据推广页过来的
+	if w.GetString("from") == "structed" {
+		w.SetSession("Structed", true)
+	}
 	if myUserId == "" {
 		return errors.New("未登录")
 	}

+ 9 - 4
src/jfw/modules/app/src/app/front/login.go

@@ -713,11 +713,16 @@ func (l *Login) AfterPageLoadToCheck() {
 		updateflag = false
 		userid, _ := l.GetSession("userId").(string)
 		if userid != "" {
-			channel, _ := mongodb.FindOne("jyapp_channel", `{"s_userid":"`+userid+`"}`)
-			gray_str := redis.GetStr("session", "grayusers_"+userid)
-			if channel != nil && qutil.ObjToString((*channel)["s_channel"]) == gray_str {
-				updateflag = true
+			gray_str, err := redis.Exists("session", "grayusers_"+userid)
+			if err == nil {
+				updateflag = gray_str
 			}
+			//不再验证下载渠道(因为渠道更新不及时,导致灰色发布人数有差异)
+			// channel, _ := mongodb.FindOne("jyapp_channel", `{"s_userid":"`+userid+`"}`)
+			// gray_str := redis.GetStr("session", "grayusers_"+userid)
+			// if channel != nil && qutil.ObjToString((*channel)["s_channel"]) == gray_str {
+			// 	updateflag = true
+			// }
 		}
 	}
 	l.ServeJson(map[string]interface{}{

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

@@ -205,6 +205,7 @@ func (l *Me) CheckUpdate() error {
 		updata["userflag"] = false
 		u, s := analySign("", usertoken)
 		if s == 1 {
+			//不再验证下载渠道(因为渠道更新不及时,导致灰色发布人数有差异)
 			gray_str, err := redis.Exists("session", "grayusers_"+u.UserId)
 			if err == nil {
 				updata["userflag"] = gray_str

+ 250 - 7
src/jfw/modules/app/src/app/front/structedData.go

@@ -1,18 +1,31 @@
 package front
 
 import (
-	"github.com/go-xweb/xweb"
+	"fmt"
+	"jfw/config"
 	"jfw/public"
+	"log"
+	"qfw/util"
+	"qfw/util/redis"
+	"strings"
 	"time"
+
+	"github.com/go-xweb/xweb"
+	"gopkg.in/mgo.v2/bson"
 )
 
 type StructedData struct {
 	*xweb.Action
-	index     xweb.Mapper `xweb:"/jyapp/structed/index"`     //数据结构化首页
-	writeInfo xweb.Mapper `xweb:"/jyapp/structed/writeinfo"` //信息填写
-	saveData  xweb.Mapper `xweb:"/jyapp/structed/savedata"`
-	success   xweb.Mapper `xweb:"/jyapp/structed/success"` //信息填写成功
-	getPreview  xweb.Mapper `xweb:"/jyapp/structed/getpreview"`  //数据结构化预览
+	index      xweb.Mapper `xweb:"/jyapp/structed/index"`     //数据结构化首页
+	writeInfo  xweb.Mapper `xweb:"/jyapp/structed/writeinfo"` //信息填写
+	saveData   xweb.Mapper `xweb:"/jyapp/structed/savedata"`
+	success    xweb.Mapper `xweb:"/jyapp/structed/success"`    //信息填写成功
+	getPreview xweb.Mapper `xweb:"/jyapp/structed/getpreview"` //数据结构化预览
+	//dev2.10.10
+	freeSamples    xweb.Mapper `xweb:"/jyapp/structed/freeSamples"`    //数据结构化保存免费样例数据
+	verifyCode     xweb.Mapper `xweb:"/jyapp/structed/verifyCode"`     //数据结构化验证邮箱验证码
+	sendMailVerify xweb.Mapper `xweb:"/jyapp/structed/sendMailVerify"` //数据结构化发送邮箱验证码
+	verifyEmail    xweb.Mapper `xweb:"/jyapp/structed/verifyEmail"`    //数据结构化验证邮箱是否验证过
 
 }
 
@@ -20,6 +33,208 @@ func init() {
 	xweb.AddAction(&StructedData{})
 }
 
+//验证邮箱的正确性
+func (t *StructedData) VerifyEmail() {
+	defer util.Catch()
+	msg := "请求方式有误"
+	status := false
+	if t.Method() == "POST" {
+		userId := util.ObjToString(t.GetSession("userId"))
+		email := t.GetString("email")
+		msg = "参数有误"
+		if email != "" {
+			msg = "未登录"
+			if userId != "" {
+				emails := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
+					"user_mail":    email,
+					"user_id":      userId,
+					"product_type": "历史数据",
+				}, "user_mail", "")
+				//是否是绑定邮箱或者是数据导出邮箱  已验证过的邮箱
+				if (emails != nil && util.ObjToString((*emails)["user_mail"]) != "") || (t.GetSession("s_myemail") != nil && email == t.GetSession("s_myemail").(string)) || (t.GetSession("SMVerifySucess") != nil && t.GetSession("SMVerifySucess").(bool) && email == t.GetSession("DataSMVerifyEmail")) {
+					status = true
+					msg = "此邮箱已被验证"
+					t.SetSession("SMVerifySucess", true)
+				} else {
+					msg = "未被验证"
+				}
+			}
+		}
+	}
+
+	t.ServeJson(map[string]interface{}{
+		"msg":    msg,
+		"status": status,
+	})
+}
+
+//验证 验证码的正确性
+func (t *StructedData) VerifyCode() {
+	defer util.Catch()
+	msg := "请求方式有误"
+	status := false
+	if t.Method() == "POST" {
+		userId := util.ObjToString(t.GetSession("userId"))
+		msg = "未登录"
+		if userId != "" {
+			s_email := t.GetString("s_email")       //邮箱
+			verifyCode := t.GetString("verifyCode") //验证码
+			VerifyEmail := util.ObjToString(t.GetSession("DataSMVerifyEmail"))
+			if verifyCode != "" && s_email != "" && VerifyEmail != "" {
+				if s_email == VerifyEmail {
+					msg = "验证码正确"
+					status = true
+					SMVerifySucess := t.GetSession("SMVerifySucess")
+					//需验证邮箱
+					if SMVerifySucess != nil && !SMVerifySucess.(bool) {
+						//验证码
+						verifyStr := t.GetSession("DataSMVerify")
+						//是否超时
+						lastSendDEVerify := util.Int64All(t.GetSession("CreatSMVerifyTime"))
+						timeSpaceing := lastSendDEVerify - time.Now().Unix() + 60*5
+						if lastSendDEVerify == 0 || timeSpaceing < 0 {
+							msg = "验证码超时"
+							status = false
+						} else if verifyStr != verifyCode {
+							msg = "验证码有误"
+							status = false
+						} else {
+							t.SetSession("SMVerifySucess", true)
+						}
+					}
+				} else {
+					msg = "邮箱有误"
+					status = false
+				}
+			}
+		}
+	}
+	t.ServeJson(map[string]interface{}{
+		"msg":    msg,
+		"status": status,
+	})
+}
+
+//保存免费样例数据
+func (t *StructedData) FreeSamples() error {
+	defer util.Catch()
+	msg := "请求方式有误"
+	status := false
+	if t.Method() == "POST" {
+		userId := util.ObjToString(t.GetSession("userId"))
+		if userId != "" {
+			name := t.GetString("name")                      //联系人
+			phone_num := t.GetString("phone_num")            //手机号
+			s_email := t.GetString("s_email")                //邮箱
+			SMVerifySucess := t.GetSession("SMVerifySucess") //邮箱是否验证成功
+			if name != "" && phone_num != "" && s_email != "" && SMVerifySucess != nil && SMVerifySucess.(bool) {
+				count := public.Mysql.Count("structed_data", map[string]interface{}{
+					"name":  name,
+					"phone": phone_num,
+					"email": s_email,
+					"type":  1,
+				})
+				if count >= 1 {
+					msg = "用户信息已存在"
+					status = true
+				} else {
+					stu := public.Mysql.Insert("structed_data", map[string]interface{}{
+						"name":        name,
+						"phone":       phone_num,
+						"email":       s_email,
+						"submit_time": time.Now().Unix(),
+						"status":      0,
+						"type":        1, //用户来源,0:联系客服,1:免费样例,2:自选购买
+					})
+					if stu == 0 {
+						msg = "数据库操作异常"
+						status = false
+					} else {
+						//删除验证成功记录 和 发送验证码时间 邮箱
+						t.DelSession("SMVerifySucess")
+						t.DelSession("CreatSMVerifyTime")
+						t.DelSession("DataSMVerifyEmail")
+						msg = "保存成功"
+						status = true
+						go public.SendStructedDataByEmail(s_email, config.GmailAuth)
+					}
+				}
+			} else {
+				msg = "缺少参数"
+				status = false
+			}
+		}
+	}
+	t.ServeJson(map[string]interface{}{
+		"msg":    msg,
+		"status": status,
+	})
+	return nil
+}
+
+//发送邮件
+func (t *StructedData) SendMailVerify() {
+	defer util.Catch()
+	if t.Method() == "POST" {
+		userId := util.ObjToString(t.GetSession("userId"))
+		if userId != "" {
+			email := t.GetString("email")
+			if isEmail(email) {
+				lastSendDEVerify := util.Int64All(t.GetSession("CreatSMVerifyTime"))
+				timeSpaceing := lastSendDEVerify - time.Now().Unix() + 60*5
+				incurKey := fmt.Sprintf("SendSMEmail_%s_%d", t.GetSession("userId"), time.Now().Day())
+				if lastSendDEVerify == 0 || timeSpaceing < 0 {
+					//每日限制10次
+					times := util.IntAll(redis.Get("other", incurKey))
+					if times < 10 {
+						if times == 0 {
+							redis.Put("other", incurKey, 1, 24*60*60)
+						} else {
+							redis.Incr("other", incurKey)
+						}
+						//生成随机数
+						verifyStr := strings.ToUpper(util.GetComplexRandom(6, 3, 3))
+						t.SetSession("SMVerifySucess", false)
+						t.SetSession("DataSMVerify", verifyStr)
+						t.SetSession("CreatSMVerifyTime", time.Now().Unix())
+						t.SetSession("DataSMVerifyEmail", email)
+						log.Println("====================", verifyStr, "====================", t.GetSession("CreatSMVerifyTime"), "====================")
+						//发送邮箱验证码
+						go public.SendMailIdentCode(email, verifyStr, config.GmailAuth)
+						t.T["success"] = true
+						t.T["errCode"] = 5
+						t.T["errMsg"] = "已发送邮箱验证码"
+					} else {
+						t.T["success"] = false
+						t.T["errCode"] = 3
+						t.T["time"] = timeSpaceing
+						t.T["errMsg"] = "验证码发送次数已达到今日上限"
+					}
+
+				} else {
+					t.T["success"] = false
+					t.T["errCode"] = 2
+					t.T["time"] = timeSpaceing
+					t.T["errMsg"] = "已发送,5分钟后再尝试"
+				}
+			} else {
+				t.T["success"] = false
+				t.T["errCode"] = 1
+				t.T["errMsg"] = "邮箱格式不正确"
+			}
+		} else {
+			t.T["success"] = false
+			t.T["errCode"] = 7
+			t.T["errMsg"] = "未登录"
+		}
+	} else {
+		t.T["success"] = false
+		t.T["errCode"] = 6
+		t.T["errMsg"] = "请求方式有误"
+	}
+	t.ServeJson(&t.T)
+}
+
 func (t *StructedData) Index() error {
 	t.T["source"] = "app_sy_dh_5"
 	return t.Render("/structeddata/marketing.html", &t.T)
@@ -27,10 +242,36 @@ func (t *StructedData) Index() error {
 
 //信息填写
 func (t *StructedData) WriteInfo() error {
-	return t.Render("/structeddata/write_infor.html")
+	userId := util.ObjToString(t.GetSession("userId"))
+	if userId != "" {
+		//删除验证成功记录 和 发送验证码时间 邮箱
+		t.DelSession("SMVerifySucess")
+		t.DelSession("CreatSMVerifyTime")
+		t.DelSession("DataSMVerifyEmail")
+		nums, ok := public.MQFW.FindOne("user", bson.M{"_id": bson.ObjectIdHex(userId)})
+		if !ok {
+			return t.Redirect("/jyapp/free/swordfish/about", 302)
+		}
+		if _, ok := (*nums)["s_phone"]; ok {
+			t.T["phone_num"] = (*nums)["s_phone"].(string)
+		}
+		if _, ok := (*nums)["s_myemail"]; ok {
+			t.T["s_myemail"] = (*nums)["s_myemail"].(string)
+			//验证是否是绑定的邮箱
+			t.SetSession("DataSMVerifyEmail", (*nums)["s_myemail"].(string))
+			t.SetSession("SMVerifySucess", true)
+		}
+		return t.Render("/structeddata/write_infor.html", &t.T)
+	} else {
+		return t.Redirect("/jyapp/free/swordfish/about", 302)
+	}
 }
 
 func (t *StructedData) Success() error {
+	//删除验证成功记录 和 发送验证码时间 邮箱
+	t.DelSession("SMVerifySucess")
+	t.DelSession("CreatSMVerifyTime")
+	t.DelSession("DataSMVerifyEmail")
 	return t.Render("/structeddata/write_result.html")
 }
 
@@ -46,6 +287,7 @@ func (t *StructedData) SaveData() {
 		count := public.Mysql.Count("structed_data", map[string]interface{}{
 			"name":  name,
 			"phone": phone_num,
+			"type":  0,
 		})
 		if count >= 1 {
 			t.ServeJson(map[string]interface{}{
@@ -61,6 +303,7 @@ func (t *StructedData) SaveData() {
 				"phone":       phone_num,
 				"submit_time": time.Now().Unix(),
 				"status":      0,
+				"type":        0, //用户来源,0:联系客服,1:免费样例,2:自选购买
 			})
 			if stu == 0 {
 				t.ServeJson(map[string]interface{}{

+ 3 - 2
src/jfw/modules/app/src/seo.json

@@ -1,7 +1,7 @@
 {	
 	"cdn":"http://web-jydev-xzh.jianyu360.cn",
 	"cdns":{
-	 	"web-jydev-xzh.jianyu360.cn":""
+	 	"web-jydev-wss.jianyu360.cn":""
 	},
     "qfw": {
         "swordfish": {
@@ -96,5 +96,6 @@
 			    }
 			]
 		}
-	}
+	},
+	"structedUploadA":"/structuredata/file/【剑鱼标讯】结构化招标数据.xlsx"
 }

+ 4 - 3
src/jfw/modules/app/src/web/staticres/jyapp/course/css/order_list.css

@@ -860,7 +860,7 @@ button[disabled] {
 
 #order_list .main .tabs .card .card-content .media {
   display: flex;
-  background: #F5F4F9;
+  /* background: #F5F4F9; */
   padding: .22rem .2rem;
   margin: .16rem .3rem;
 }
@@ -937,8 +937,9 @@ button[disabled] {
 }
 
 #order_list .main .tabs .card .card-footer .cancle {
-  border: 1px solid #2cb7ca;
-  color: #2cb7ca;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  /* color: #2cb7ca; */
+  color: #5F5E64;
   background: transparent;
   margin-right: .16rem;
 }

+ 5 - 3
src/jfw/modules/app/src/web/staticres/jyapp/css/myorder/order_list.css

@@ -808,12 +808,14 @@ button[disabled] {
 
 #order_list .main .tabs .card .card-header .time {
     font-size: .24rem;
+    white-space: nowrap;
 }
 
 #order_list .main .tabs .card .card-header .status {
     font-size: .3rem;
     display: flex;
     align-items: center;
+    white-space: nowrap;
 }
 
 #order_list .main .tabs .card .card-header .notpay {
@@ -860,7 +862,7 @@ button[disabled] {
 
 #order_list .main .tabs .card .card-content .media {
     display: flex;
-    background: #F5F4F9;
+    /* background: #F5F4F9; */
     padding: .22rem .2rem;
     margin: .16rem .3rem;
 }
@@ -945,8 +947,8 @@ button[disabled] {
 }
 
 #order_list .main .tabs .card .card-footer .cancle {
-    border: 1px solid #2cb7ca;
-    color: #2cb7ca;
+    border: 1px solid rgba(0, 0, 0, 0.1);
+    color: #5F5E64;
     background: transparent;
     margin-right: .16rem;
 }

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

@@ -1618,7 +1618,7 @@ html, body {
   background-repeat: no-repeat;
   background-position: center;
   margin-right: 5px;
-  background-image:url("/jyapp/images/vip.png?v=51430");
+  background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANpSURBVHgB7VdNTttAFH5jxyZIXaS70iKRnKBhE1p1AZyg7QkwJ4CeoOQEwAmAEwAnwCwq1IBKbpC0lQjtBi8qQW3PTN9z7MgEz9jgdJcvijyen+dv5v0OwBRTTKEFgwngdnBWN8HcQ2lNkFDDLpcDX5+de9uHkihNMCLHzMuYWFqy54fB6rP5d10oAQNKwjTMzw/IEbDPNq1tKInSBJHIB+UYqbwkyhP8z5jECXY1Y0dQEqUJkrfio58x1MexNpREJf0S/DxfAQveSymbjLFuKMPdSYQKHWTvshZWww3BRJNJ5vk82E17/ijMhIOLNQFif2w9ncKqiuSf31+aNrcOsVmHbGjXx/HzZHy9kOJT9eWbnRFB2kUwG/QywwUGXXuutZruSHYtQW5BATBgWyGEB+NE/V+dPRDgZCzwrFurwRqLXkSQVCsr8kT1ASTIbntndcu0mtKWy0jMUWxGx9IjpzEC41gYom/Pt7r+dedGJUcK+XHm1dJRZIO4oMY0ScUfdGQ0D38g4WkYEnGEJZxYplYWcvLoGRG0fdtFFXuPPpUE8engrr+Pugy2gI8VUNunDv3qXbU7FB0DDdbBnLr9KJJITHK5TqrIGs6x7UIy7+mVvMoQhoO7X4bh7vXgsI62tD9aj3aatGcbQ4dAVfagyCliwJdMHlMkSTtTpuHF7t/Lk2ndWc/J06gdXJ9vY/zcvDdhqPpCpxeHI3e8PzOTRDsg4TlIyBEouD+YUFS1+K0sckqCkWwujyEH8urbQtKOUp6EXWy68EgIIU5VY2qCTOYWmqERjFRKp26/bG1SUKe4SSqD4mSV85TBr6gdAhUKHNrc5G5WSvOvOjv4lQ2dAMy/i6rKW1vyF/ZASJEd3kfaCdkCG+3jiTdUg/pyS0KuHY6hjn8Hq5KdpKNANeTqBrUEOeNPuvAYzLgpPJnDqW64ohvEdHMUVIM9tezIEQCDe43yedz2KHUmc6JCRJN0yXZBg9xrp84O04E6C6p6L/X1rv2itQgaaE8wAtmhwguDmeAk/HHRxpDk0Z8H3DMtk06yySrsdW5ZprvPFCWIGcLF8j87TOC1Esunw+TVNM30OsiVLfKTQe6lKW1Pk0YR2bkEycZQVQcwaWBa1Nnv6PtQEH8HX/ex6l6DCYA2PDO35MAUU0xRHv8Al8ebBRh7GtgAAAAASUVORK5CYII=);
 }
 .app-layout-header .switch-vip:after,.app-layout-header .switch-personal:after,.app-layout-header .switch-ent:after{
   content: "";

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

@@ -303,6 +303,12 @@ var JyObjMessage = new Object();
 $(function(){
 	if (mySysIsIos()){
 		window.JyObj = {
+			//拨打电话
+			callPhone:function(phone){
+			    JyObjMessage["phone"]=phone;
+			    window.webkit.messageHandlers.callPhone.postMessage(JyObjMessage);
+				JyObj.clearMessage();
+			},
 			//抖音or快手其他应用appName:应用名称;appLink:应用链接
 			openOtherAppLinks:function(appName,appLink){
 				JyObjMessage["appName"]=appName;

+ 21 - 11
src/jfw/modules/app/src/web/staticres/jyapp/me/css/mine.css

@@ -66,16 +66,19 @@
   position: relative;
 }
 
-.mine .user .vip .crown {
-  position: absolute;
-  top: -0.08rem;
-  right: -0.08rem;
-  width: .32rem;
-  height: .27rem;
-  transform: rotate(10deg);
-  z-index: 99;
-  background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAbCAYAAAAdx42aAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIfSURBVHgBvVf/UcIwFH6p/OtZJzBOQJnAbiBOAE4ATABMQJkA2MANqBNQJrAb2IO/JX6vjXdVW5qE6neXC2mbvO/9ynsIAo775fSk1EwQxR9KPd32Jhn9Ezrvu0XIwnmhiEJMQ4yILIFzfEwBRmKjgIeR/nhmrT2ES0+IN4wtxo7Xpns9sE1hgWdoH2OeY70me4wxfP1bUmFFI3T0/KKUipkMuSFtWDcSiGC6LuYeuWEN6wVCiAcosrGxIscAXQlxhyk47qMFWQL+HrLf8TP2g/E9hM9s9ucElPbfSdGYU9JkI2fPIYk46FZU+F2SAzw9y68HnJKH/XJA9YIlBK844nXaXoSOzl+//BB+XMMS8ro7mpcEh3DVAEKHitoDB6GsepFbIomkEJTBNUMm2abgMgG/7mWu7V9ILYFjQFI78MkBrRFAUN6QA5iAE/MKBOSADiK725KbpclHOuv6GPnVzxZoq/b7nKp0XjhXzR1fXlw9+XsPDcgEKbfkangpGVhz1EBC0ndLhYJ+s2Rf8v3+SO4Bmuru6pWKBiXRZ/u6bkgM3C+qJ86dwtqgwk1FC1euFjihwtKsJMdAJkx2gkgfzLlSSnIEu1hV9JtGBEpEZiBiVC3LYM0huLLPtCKgSYSlEtyEvN2D8LjuA2sCmgSn0/YcCQjeYBo3dchOBBpIZLq5NWrtnQnUkEhORaClpmdcRECT4GZ0pYqcn9n+q/oESNf9AgIjAS4AAAAASUVORK5CYII=) no-repeat;
-  background-size: .32rem .27rem;
+.mine .user .crown {
+  max-width:5rem!important;
+  /* position: absolute; */
+  /* top: -0.08rem; */
+  /* right: -0.08rem; */
+  /* display: inline-block; */
+  /* width: .4rem; */
+  /* height: .4rem; */
+  /* transform: rotate(10deg); */
+  /* z-index: 99; */
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALzSURBVHgB7VhdctowEF5RnltygjgnqDlByAnaG0BPEDhBkxMAM30POUHpCeqeAOelr3FPEKftTB9KrX4LMngceSUi8uZvhmAk7frTav8UohYtWohQdAQ8rKbRK6VuNFGMnz0oTf5p/eGkP8koEMEEmVxHqRUTq03lhdYXIJlSADoUCFjuIz0lx+hhbkqBCCaIY30vzMUUiGCCL41ggnBiyceWFIhgghyt+MosUxmC5JoC0a3+QEQOuh31TmuKlaJ0Xej5MVKFBLyz1+10LrXW7K85NjyvRv4uzfy+mw8xuajJZyZVZA3KY6SYz3iMyA6XPKeor3V5yEwgM9sR5F1g4T1Z0gUn3dfx+IIsu4aiK/IAdF+ti+K2TvRnOuPkPrKIcA49w/q8POJNBbAph4KBIRXxOrjAeaFpBAXW9TbwRkByDEJLnNIXDGV8jEKKYt0DfJbdykAjHtOZ3r+MnoseWwtER0ana33Of0qCiRnwtopF2RKW+lEOgMgpba0Q0eHIyKSvXZDgCHl30wNJsq9wU2DNd5Jv++pUNYURvkaooeel70kwihY1+Q3KgMBRMsGI3EiLrX8uqsFk7WZM+N+Tm+AJRxo//7qbTeGf49oSb7cx6Sipj1sridlBTg6U5Bic3C1LfI82t5EjEkqdMbeIP98/nZbPXPIgM9fbgDsIWqjnXUGOhYbCPK3/rvlIJ/xsrL47Yi6bCr2i8vBlLRijsaP29UPaNwWJraRBzwx6LiUFkO83dd5iy39ABJbIzH3kuiTrsdHsTTw+a5oU2y0fP6whMrV1VyY8uqFEmnT1g8+68MBiD75rYYRv0rwUJAzO5jeC8rLL6dE+pXDqSco1HCwkI5EmnddOyQ+ridqGpn6vghT+1ycBLgtu/LApCvnlIMERnFc+bEluy95yW0Zysna6kJMgbY+gKU2UHfUT+LRlPkHoc2lK6OWQuBY4CW58TOtbOjKK7eXIWe+9/zfzuJouSKkhHQEgx/eTEbVo0SIc/wFjc26mXIN39AAAAABJRU5ErkJggg==) no-repeat center right;
+  background-size: .4rem .4rem;
+  padding-right: .3rem;
 }
 
 .mine .user .vip .vip_sign {
@@ -100,6 +103,11 @@
   font-size: .4rem;
   line-height: .58rem;
   color: #33373C;
+  display: inline-block;
+  max-width:3.6rem;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
 }
 
 .mine .user .user_info .set_phone, .mine .user .user_info .user_phone {
@@ -142,7 +150,9 @@
 }
 
 .mine .user .u_right {
-  width: 1.26rem;
+  /* width: 1.26rem; */
+  white-space: nowrap;
+  padding: 0 .2rem;
   height: .48rem;
   line-height: .48rem;
   text-align: center;

+ 2 - 1
src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/base.css

@@ -123,7 +123,8 @@ em,i{
   .jy-app-header .fanhui {
     width: 0.48rem;
     height: 0.48rem;
-    font-size: 0.36rem;
+/*    font-size: 0.36rem;*/
+font-size:19.5px;
   }
   
   .jy-app-header .subreport_title {

+ 49 - 46
src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/marketing.css

@@ -5,7 +5,7 @@ html {
 }
 
 body {
-  background: #2F96F4;
+  background: #2f96f4;
 }
 
 #app {
@@ -14,24 +14,7 @@ body {
   display: flex;
   flex-direction: column;
   position: relative;
-}
-
-.jy-app-header.header-transparent {
-  position: absolute;
-  width: 100%;
-  background: transparent;
-  z-index: 999;
-}
-
-.jy-app-header.header-transparent .subreport_title {
-  font-size: 0;
-}
-
-.jy-app-header.header-transparent .fanhui {
-  width: 0.96rem;
-  height: 0.96rem;
-  font-size: 0.36rem;
-  color: #fff;
+  background: #fff;
 }
 
 #app .j-main {
@@ -39,6 +22,8 @@ body {
   height: 100%;
   flex: 1;
   overflow: auto;
+  margin-top: -80px;
+  background: #2f96f4;
 }
 
 #app .j-main .structured_top {
@@ -137,7 +122,7 @@ body {
   width: 100%;
   height: 0.36rem;
   font-size: 0.24rem;
-  color: #C0C4CC;
+  color: #c0c4cc;
   line-height: 0.36rem;
 }
 
@@ -173,7 +158,7 @@ body {
   background: rgba(47, 150, 244, 0.04);
   font-size: 0.3rem;
   font-weight: bold;
-  color: #2F96F4;
+  color: #2f96f4;
 }
 
 #app .j-main .str_what .str_content .data_mode .data_mode_content {
@@ -223,7 +208,7 @@ body {
   border-radius: 8px 24px 0px 0px;
   background: rgba(47, 150, 244, 0.04);
   font-size: 0.3rem;
-  color: #2F96F4;
+  color: #2f96f4;
   font-weight: bold;
 }
 
@@ -241,7 +226,7 @@ body {
   height: 2.88rem;
   font-size: 0.24rem;
   line-height: .36rem;
-  color: #5F5E64;
+  color: #5f5e64;
 }
 
 #app .j-main .str_what .str_content .message .message_page .click_view {
@@ -251,11 +236,11 @@ body {
   width: 2.6rem;
   height: 0.6rem;
   border-radius: .32rem;
-  border: 1px solid #2F96F4;
+  border: 1px solid #2f96f4;
   box-sizing: border-box;
   margin-top: 0.4rem;
   font-size: 0.26rem;
-  color: #2F96F4;
+  color: #2f96f4;
 }
 
 #app .j-main .advantage {
@@ -458,7 +443,7 @@ body {
   height: auto;
   padding-left: .72rem;
   font-size: .24rem;
-  color: #5F5E64;
+  color: #5f5e64;
 }
 
 #app .j-main .company {
@@ -517,35 +502,23 @@ body {
 
 #app .j-button-group {
   display: flex;
-  flex-direction: column;
-  justify-content: space-between;
   align-items: center;
+  justify-content: space-between;
   width: 100%;
-  height: 1.96rem;
+  height: 1.34rem;
   padding: 0.16rem 0.32rem 0.16rem;
   background-color: #fff;
 }
 
-#app .j-button-group .j-button-confirm,
 #app .j-button-group .j-button-cancel {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  width: 100%;
-  font-size: 0.32rem;
-  text-align: center;
-  border-radius: 0.16rem;
-}
-
-#app .j-button-group .j-button-cancel {
-  height: .64rem;
-  background: #fff;
-  color: #5F5E64;
+  height: .8rem;
+  background: #EDEFF2;
+  color: #171826;
 }
 
 #app .j-button-group .j-button-cancel .phone_num {
   font-size: .28rem;
-  color: #5F5E64;
+  color: #5f5e64;
 }
 
 #app .j-button-group .j-button-cancel .phone_icon {
@@ -558,9 +531,39 @@ body {
 }
 
 #app .j-button-group .j-button-confirm {
-  height: .92rem;
-  background: #2ABED1;
+  height: .8rem;
+  background: #2abed1;
+  color: #fff;
+}
+
+.jy-app-header.header-transparent {
+  position: absolute;
+  width: 100%;
+  background: transparent;
+  z-index: 999;
+}
+
+.jy-app-header.header-transparent .subreport_title {
+  font-size: 0;
+}
+
+.jy-app-header.header-transparent .fanhui {
+  width: 0.96rem;
+  height: 0.96rem;
+/*  font-size: 0.36rem;*/
   color: #fff;
+font-size:19.5px;
+}
+
+#app .j-button-group .j-button-confirm,
+#app .j-button-group .j-button-cancel {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 48%;
+  font-size: 0.32rem;
+  text-align: center;
+  border-radius: 0.16rem;
 }
 
 @keyframes ballRotate {

+ 133 - 60
src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/write_infor.css

@@ -3,55 +3,79 @@ body, html {
   height: 100%;
 }
 
-input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
+input::-webkit-input-placeholder{
   color: #C0C4CC;
   font-size: .32rem;
-  line-height: .48rem;
+}
+
+.weui-toast {
+  min-height: 2.6em;
+  line-height: 2.6em;
+  top: 6rem;
+}
+
+.weui-toast .weui-toast__content {
+  margin: 0;
+}
+
+.weui-icon_toast {
+  display: none;
+}
+
+.toast-lang .weui-toast {
+  width: auto;
+  padding: 0 .5rem;
+  left: 38%;
 }
 
 #writeInfo {
   width: 100%;
   height: 100%;
-  display: flex;
-  flex-direction: column;
 }
 
-.j-header.jy-app-header {
-  height: 21.33333vw;
-  padding: 10.66667vw 3.2vw 0 3.2vw;
-  -webkit-box-sizing: border-box;
-  box-sizing: border-box;
+#writeInfo .weui-navbar {
+  height: .96rem;
+}
+
+#writeInfo .weui-navbar .weui-navbar__item {
+  font-size: .28rem;
+  color: #5F5E64;
+  padding: .24rem 0;
+}
+
+#writeInfo .weui-navbar .weui-navbar__item.weui-bar__item_on {
+  color: #2ABED1;
+}
+
+#writeInfo .weui-navbar .weui-navbar__item.weui-bar__item_on, #writeInfo .weui-navbar .weui-navbar__item:active {
   background: #fff;
-  font-family: Avenir,Helvetica,Arial,sans-serif;
 }
 
-.j-header {
-  position: relative;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
+#writeInfo .weui-navbar .weui-navbar__item.weui-bar__item_on .showline, #writeInfo .weui-navbar .weui-navbar__item:active .showline {
+  margin-top: .16rem;
+  width: 100%;
+  height: .03rem;
   display: flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-  -ms-flex-align: center;
-  align-items: center;
-  -webkit-box-pack: justify;
-  -webkit-justify-content: space-between;
-  -ms-flex-pack: justify;
-  justify-content: space-between;
-  font-size: 4.53333vw;
-  min-height: 5.33333vw;
-  background-color: #fff;
-  z-index: 2;
+  justify-content: center;
+}
+
+#writeInfo .weui-navbar .weui-navbar__item.weui-bar__item_on .showline span, #writeInfo .weui-navbar .weui-navbar__item:active .showline span {
+  width: .48rem;
+  height: .03rem;
+  background: linear-gradient(270.45deg, #25BEEE 0.03%, #2ABED1 74.46%);
+  border-radius: 1px;
 }
 
-#writeInfo .infoMain {
+#writeInfo .weui-navbar .weui-navbar__item:after {
+  border-right: 0;
+}
+
+#writeInfo .infoMain, #writeInfo .purchase {
   width: 100%;
   height: 100%;
-  flex: 1;
 }
 
-#writeInfo .infoMain .info_tip {
+#writeInfo .infoMain .info_tip, #writeInfo .purchase .info_tip {
   overflow: hidden;
   width: 100%;
   height: 3.6rem;
@@ -59,44 +83,44 @@ input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
   background-size: 100% 100%;
 }
 
-#writeInfo .infoMain .info_tip .tip_text {
-  margin-top: 1.04rem;
+#writeInfo .infoMain .info_tip .tip_text, #writeInfo .purchase .info_tip .tip_text {
+  margin-top: .64rem;
   padding: 0 .32rem;
   width: 100%;
   height: .48rem;
-  font-size: .32rem;
+  font-size: .28rem;
   color: #fff;
 }
 
-#writeInfo .infoMain .write_input {
+#writeInfo .infoMain .write_input, #writeInfo .purchase .write_input {
   width: 100%;
   padding: 0 .24rem;
   margin-top: -1.04rem;
 }
 
-#writeInfo .infoMain .write_input .write_con {
+#writeInfo .infoMain .write_input .write_con, #writeInfo .purchase .write_input .write_con {
   width: 100%;
   background: #fff;
   border-radius: 8px;
   margin-top: .08rem;
   overflow: hidden;
+  padding: 0 0 0 .32rem;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_name {
+#writeInfo .infoMain .write_input .write_con .write_name, #writeInfo .purchase .write_input .write_con .write_name {
   width: 100%;
-  padding: 0 .32rem;
   margin-top: .08rem;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt {
+#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt, #writeInfo .purchase .write_input .write_con .write_name .write_name_ipt {
   width: 100%;
   height: 1.08rem;
   display: flex;
   align-items: center;
-  box-shadow: inset 0px -0.5px 0px rgba(0, 0, 0, 0.05), inset 16px 0px 0px #FFFFFF;
+  line-height: 1.08rem;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt .label_name {
+#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt .label_name, #writeInfo .purchase .write_input .write_con .write_name .write_name_ipt .label_name {
   display: flex;
   align-items: center;
   width: 1.6rem;
@@ -106,32 +130,29 @@ input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
   color: #5F5E64;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt .ipt_name {
+#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt .ipt_name, #writeInfo .purchase .write_input .write_con .write_name .write_name_ipt .ipt_name {
   height: .48rem;
   display: flex;
   align-items: center;
-  padding-top: .08rem;
   font-size: .32rem;
-  color: #171826;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_phone {
+#writeInfo .infoMain .write_input .write_con .write_phone, #writeInfo .infoMain .write_input .write_con .write_name, #writeInfo .infoMain .write_input .write_con .write_email, #writeInfo .infoMain .write_input .write_con .email_code, #writeInfo .purchase .write_input .write_con .write_phone, #writeInfo .purchase .write_input .write_con .write_email, #writeInfo .purchase .write_input .write_con .email_code {
   width: 100%;
   display: flex;
   flex-direction: column;
+  box-shadow: inset 0px -0.5px 0px rgba(0, 0, 0, 0.05), inset 16px 0px 0px #FFFFFF;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt {
+#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt, #writeInfo .infoMain .write_input .write_con .write_name .write_phone_ipt, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt {
   width: 100%;
   height: 1.08rem;
   display: flex;
   align-items: center;
-  padding: 0 .32rem;
-  font-size: .32rem;
-  color: #171826;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .label_phone {
+#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .label_phone, 
+#writeInfo .infoMain .write_input .write_con .write_name .write_phone_ipt .label_phone, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .label_phone, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .label_phone, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .label_phone, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .label_phone, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .label_phone {
   display: flex;
   align-items: center;
   width: 1.6rem;
@@ -141,43 +162,91 @@ input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
   color: #5F5E64;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_phone {
+#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_phone,
+#writeInfo .infoMain .write_input .write_con .write_name .write_phone_ipt .ipt_name,  #writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_email, #writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_code, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_phone, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_email, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_code, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .ipt_phone, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .ipt_email, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .ipt_phone, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .ipt_email, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .ipt_phone, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .ipt_email, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .ipt_phone, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .ipt_email, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .ipt_code {
   height: .48rem;
   display: flex;
   align-items: center;
-  padding-top: .08rem;
   font-size: .32rem;
-  color: #171826;
+  line-height: .48rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_email{
+  width: 4.2rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .correct-icon{
+  background: url('../image/correct-icon-mobile.png') no-repeat;
+  background-size: .48rem .48rem;
+  width: .48rem;
+  height: .48rem;
+  display: none;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_code, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_code, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .ipt_code {
+  width: 3.5rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_email:disabled, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_email:disabled, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .ipt_email:disabled, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .ipt_email:disabled, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .ipt_email:disabled, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .ipt_email:disabled {
+  background: #fff;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips {
-  margin-bottom: .26rem;
+#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips, #writeInfo .infoMain .write_input .write_con .write_phone .kf_phone_tips, #writeInfo .infoMain .write_input .write_con .write_name .name_tips, #writeInfo .infoMain .write_input .write_con .write_name .kf_name_tips, #writeInfo .infoMain .write_input .write_con .write_phone .email_tips, #writeInfo .infoMain .write_input .write_con .write_email .phone_tips, #writeInfo .infoMain .write_input .write_con .write_email .email_tips, #writeInfo .infoMain .write_input .write_con .email_code .phone_tips, #writeInfo .infoMain .write_input .write_con .email_code .email_tips, #writeInfo .purchase .write_input .write_con .write_phone .phone_tips, #writeInfo .purchase .write_input .write_con .write_phone .email_tips, #writeInfo .purchase .write_input .write_con .write_email .phone_tips, #writeInfo .purchase .write_input .write_con .write_email .email_tips, #writeInfo .purchase .write_input .write_con .email_code .phone_tips, #writeInfo .purchase .write_input .write_con .email_code .email_tips {
+  margin-bottom: .24rem;
   display: flex;
   width: 100%;
   height: .36rem;
-  padding: 0 .32rem;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips .label_tips {
+#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips .label_tips,
+#writeInfo .infoMain .write_input .write_con .write_phone .kf_phone_tips .label_tips,
+#writeInfo .infoMain .write_input .write_con .write_name .name_tips .label_tips,
+#writeInfo .infoMain .write_input .write_con .write_name .kf_name_tips .label_tips, #writeInfo .infoMain .write_input .write_con .write_phone .email_tips .label_tips, #writeInfo .infoMain .write_input .write_con .write_email .phone_tips .label_tips, #writeInfo .infoMain .write_input .write_con .write_email .email_tips .label_tips, #writeInfo .infoMain .write_input .write_con .email_code .phone_tips .label_tips, #writeInfo .infoMain .write_input .write_con .email_code .email_tips .label_tips, #writeInfo .purchase .write_input .write_con .write_phone .phone_tips .label_tips, #writeInfo .purchase .write_input .write_con .write_phone .email_tips .label_tips, #writeInfo .purchase .write_input .write_con .write_email .phone_tips .label_tips, #writeInfo .purchase .write_input .write_con .write_email .email_tips .label_tips, #writeInfo .purchase .write_input .write_con .email_code .phone_tips .label_tips, #writeInfo .purchase .write_input .write_con .email_code .email_tips .label_tips {
   display: flex;
   width: 1.6rem;
   height: .48rem;
 }
 
-#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips .phone_rule {
+#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips .phone_rule, 
+#writeInfo .infoMain .write_input .write_con .write_phone .kf_phone_tips .phone_rule, 
+#writeInfo .infoMain .write_input .write_con .write_name .name_tips .phone_rule, 
+#writeInfo .infoMain .write_input .write_con .write_name .kf_name_tips .phone_rule, #writeInfo .infoMain .write_input .write_con .write_phone .email_tips .phone_rule, #writeInfo .infoMain .write_input .write_con .write_email .phone_tips .phone_rule, #writeInfo .infoMain .write_input .write_con .write_email .email_tips .phone_rule, #writeInfo .infoMain .write_input .write_con .email_code .phone_tips .phone_rule, #writeInfo .infoMain .write_input .write_con .email_code .email_tips .phone_rule, #writeInfo .purchase .write_input .write_con .write_phone .phone_tips .phone_rule, #writeInfo .purchase .write_input .write_con .write_phone .email_tips .phone_rule, #writeInfo .purchase .write_input .write_con .write_email .phone_tips .phone_rule, #writeInfo .purchase .write_input .write_con .write_email .email_tips .phone_rule, #writeInfo .purchase .write_input .write_con .email_code .phone_tips .phone_rule, #writeInfo .purchase .write_input .write_con .email_code .email_tips .phone_rule {
   height: 100%;
   font-size: .24rem;
   color: #FB483D;
 }
 
-#writeInfo .infoMain .run_button {
+#writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .label_phone, 
+#writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .label_phone {
+  font-size: .28rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .sendEmail, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .sendEmail {
+  font-size: .28rem;
+  color: #9B9CA3;
+}
+
+#writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .timedown, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .timedown {
+  display: none;
+  font-size: .28rem;
+  text-align: center;
+  color: #C0C4CC;
+}
+
+#writeInfo .infoMain .option_purchase, #writeInfo .purchase .option_purchase {
+  padding: .64rem .64rem .36rem;
+  font-size: .28rem;
+  color: #171826;
+}
+
+#writeInfo .infoMain .run_button, #writeInfo .infoMain .free_button, #writeInfo .infoMain .run_now_button, #writeInfo .purchase .run_button, #writeInfo .purchase .free_button, #writeInfo .purchase .run_now_button {
   margin-top: .6rem;
   width: 100%;
   height: .92rem;
   padding: 0 .32rem;
 }
 
-#writeInfo .infoMain .run_button .write_run {
+#writeInfo .infoMain .run_button .write_run, #writeInfo .infoMain .run_button .write_free, #writeInfo .infoMain .run_button .write_run_now, #writeInfo .infoMain .free_button .write_run, #writeInfo .infoMain .free_button .write_free, #writeInfo .infoMain .free_button .write_run_now, #writeInfo .infoMain .run_now_button .write_run, #writeInfo .infoMain .run_now_button .write_free, #writeInfo .infoMain .run_now_button .write_run_now, #writeInfo .purchase .run_button .write_run, #writeInfo .purchase .run_button .write_free, #writeInfo .purchase .run_button .write_run_now, #writeInfo .purchase .free_button .write_run, #writeInfo .purchase .free_button .write_free, #writeInfo .purchase .free_button .write_run_now, #writeInfo .purchase .run_now_button .write_run, #writeInfo .purchase .run_now_button .write_free, #writeInfo .purchase .run_now_button .write_run_now {
   display: flex;
   align-items: center;
   justify-content: center;
@@ -189,8 +258,12 @@ input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
   font-size: .36rem;
 }
 
-#writeInfo .infoMain .run_button .write_run:disabled {
+#writeInfo .infoMain .run_button .write_run:disabled, #writeInfo .infoMain .run_button .write_free:disabled, #writeInfo .infoMain .free_button .write_run:disabled, #writeInfo .infoMain .free_button .write_free:disabled, #writeInfo .infoMain .run_now_button .write_run:disabled, #writeInfo .infoMain .run_now_button .write_free:disabled, #writeInfo .purchase .run_button .write_run:disabled, #writeInfo .purchase .run_button .write_free:disabled, #writeInfo .purchase .free_button .write_run:disabled, #writeInfo .purchase .free_button .write_free:disabled, #writeInfo .purchase .run_now_button .write_run:disabled, #writeInfo .purchase .run_now_button .write_free:disabled {
   background: #87DFEA;
   color: #FFFFFF;
   opacity: 0.65;
 }
+
+#writeInfo .purchase {
+  background: #fff;
+}

BIN
src/jfw/modules/app/src/web/staticres/jyapp/structuredata/image/correct-icon-mobile.png


+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/choose_area.css

@@ -439,7 +439,7 @@
 
 #choose_area .result {
   position: relative;
-  padding: .2rem .3rem;
+  padding: .16rem .3rem .32rem;
   font-size: .26rem;
   text-align: justify;
   background-color: #fff;

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/choose_industry.css

@@ -430,7 +430,7 @@
 }
 
 .choose_industry .result {
-  padding: .2rem .3rem;
+  padding: .16rem .3rem .32rem;
   background:#fff;
   width:100%;	 
 }

+ 13 - 7
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/messageType.css

@@ -36,8 +36,11 @@ body .industry .all span {
 }
 
 body .industry .all span.active {
-  background: #2cb7ca;
-  color: #fff;
+  /* background: #2cb7ca;
+  color: #fff; */
+  color: #2ABED1;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHGSURBVHgB7da/T8JAFAfw11aRGNTGkKDRoUhMEBc68Adg4u4/YMRVB3Vz09EN/wQGVyNOJiamOjtUnFg0DA4OJOKvQAz2vHdSQklp77Aw+ab27rhPXrl+U4D/CrBSl2ZahiFV0ihtSCOyIcEQasko7UgEjvF64B2mjNKBjWENtEPEgMBh59jAwGXjPk8I2e0eDxzUzkx1XFXyQEjObT5QkGFTskEv073WBAYmL0xNHmOY5rUuEJAXCwQUwf4MYlRhehAAlfc3fb/4dlSJYH2DGFUygYIXtj4fhdPMIiQjYce4AoLViqojrzXbWgz2ErMQDY1C9asJt7XP9pxQh25R5YZtxWPsuvxRh5OnqmOeu0OMKortZ9QIu39vfvtim+YjvHWt8z2lnVGFWEFfYFjOfKCbNoQwLNkXw6hq5SJuhNjEiELhRPtA8GK07np22OuFRgQxRBG/qr7C2sw0D0afJylIIpgbapcvRsuSrLgsiv1u3mD/oX1weDDsrpzVK44ORaNqLhyClegknD+/eGJ0vwqRrKwDxKhS6LeHaFT5VSeG9+yR8kRVXyWRYl2ydBtjQzzpIVA12lOFfsvcEAuK5VX9unvBD+h28RDMijACAAAAAElFTkSuQmCC) no-repeat bottom right #E8FAFD;
+  background-size: 0.28rem 0.28rem;
 }
 
 body .industry .list ul li {
@@ -60,11 +63,11 @@ body .industry .list ul li dt {
 }
 
 body .industry .list ul li dd {
-  background: #F4F4F9;
+  background: #F5F6F7;
   display: inline-block;
   width: 1.58rem;
   height: .7rem;
-  border-radius: 3px;
+  border-radius: 4px;
   text-align: center;
   line-height: .7rem;
   margin-right: .05rem;
@@ -72,8 +75,11 @@ body .industry .list ul li dd {
 }
 
 body .industry .list ul li .active {
-  background: #2cb7ca;
-  color: #fff;
+  /* background: #2cb7ca;
+  color: #fff; */
+  color: #2ABED1;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHGSURBVHgB7da/T8JAFAfw11aRGNTGkKDRoUhMEBc68Adg4u4/YMRVB3Vz09EN/wQGVyNOJiamOjtUnFg0DA4OJOKvQAz2vHdSQklp77Aw+ab27rhPXrl+U4D/CrBSl2ZahiFV0ihtSCOyIcEQasko7UgEjvF64B2mjNKBjWENtEPEgMBh59jAwGXjPk8I2e0eDxzUzkx1XFXyQEjObT5QkGFTskEv073WBAYmL0xNHmOY5rUuEJAXCwQUwf4MYlRhehAAlfc3fb/4dlSJYH2DGFUygYIXtj4fhdPMIiQjYce4AoLViqojrzXbWgz2ErMQDY1C9asJt7XP9pxQh25R5YZtxWPsuvxRh5OnqmOeu0OMKortZ9QIu39vfvtim+YjvHWt8z2lnVGFWEFfYFjOfKCbNoQwLNkXw6hq5SJuhNjEiELhRPtA8GK07np22OuFRgQxRBG/qr7C2sw0D0afJylIIpgbapcvRsuSrLgsiv1u3mD/oX1weDDsrpzVK44ORaNqLhyClegknD+/eGJ0vwqRrKwDxKhS6LeHaFT5VSeG9+yR8kRVXyWRYl2ydBtjQzzpIVA12lOFfsvcEAuK5VX9unvBD+h28RDMijACAAAAAElFTkSuQmCC) no-repeat bottom right #E8FAFD;
+  background-size: 0.28rem 0.28rem;
 }
 
 body .industry .list ul li .question {
@@ -81,7 +87,7 @@ body .industry .list ul li .question {
 }
 
 body .industry .list ul li i {
-  font-size: .52rem;
+  font-size: .4rem;
   color: #2cb7ca;
   margin-left: 0.2rem;
   position: relative;

+ 78 - 0
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/trial_info.css

@@ -1,5 +1,82 @@
+html,body {
+  height: 100%;
+}
+.j-container {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  height: 100%;
+}
+
+.j-header {
+  position: relative;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 17px;
+  min-height: 20px;
+  z-index: 2;
+}
+
+.j-header .header-left,
+.j-header .header-title,
+.j-header .header-right {
+  display: flex;
+  align-items: center;
+}
+.j-header .header-left.hide,
+.j-header .header-right.hide {
+  visibility: hidden;
+}
+
+.j-header .header-left {
+  padding: .24rem;
+  width: 20px;
+  height: 20px;
+  color: #444;
+  font-size: 18px;
+  box-sizing: content-box;
+}
+.j-header .header-title {
+  position: absolute;
+  left: 50%;
+  color: #171826;
+  transform: translateX(-50%);
+  color: #fff;
+}
+.j-header .header-right {
+  height: 100%;
+  min-width: 20px;
+  font-size: 15px;
+  color: #2ABED1;
+}
+
+.j-container .j-header.transparent-header {
+  position: relative;
+  width: 100%;
+  background-color: #34355A;
+}
+
+.j-header.transparent-header .header-left {
+  color: #fff;
+}
+
+.j-main {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  flex: 1;
+  overflow-y: scroll;
+  overflow-x: hidden;
+  font-size: 16px;
+}
+
+.j-footer {
+  box-shadow: 0px -2Px 8Px rgba(54, 147, 179, 0.051);
+}
 
 .trial_info {
+  margin-top: -1px;
   display: flex;
   flex-direction: column;
   align-items: center;
@@ -131,6 +208,7 @@
 }
 
 .trial_info .trial_body .explain {
+  padding-bottom: 18px;
   color: #CFAD89;
 }
 

+ 78 - 27
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_index_new.css

@@ -80,7 +80,7 @@
   flex-direction: column;
   flex: 1;
   overflow-y: scroll;
-  padding: 0.24rem 0;
+  padding: 0.24rem 0 .96rem;
   overflow-x: hidden
 }
 
@@ -109,7 +109,7 @@
   width: 100%;
   height: 8px;
   background-color: #F5F6F7; */
-  box-shadow: 0px 8px 0px #F5F6F7;
+  /* box-shadow: 0px 8px 0px #F5F6F7; */
 }
 .sub-info{
   border-radius: 8px;
@@ -142,6 +142,12 @@
 .vip-header {
   display: flex;
   flex-direction: column;
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  right: 0;
+  z-index: 10;
 }
 
 .vip-header .header-renew {
@@ -207,10 +213,10 @@
   display: flex;
   align-items: center;
   justify-content: space-between;
-  height: 0.72rem;
+  height: 0.96rem;
   padding: 0 0.3rem;
-  background-color: #fe737a;
-  color: #fff;
+  background-color: #FEE9E8;
+  color: #FB483D;
 }
 
 .vip-header .expire-remind .icon-guanbi {
@@ -610,59 +616,66 @@
 
 /* 自定义弹窗*/
 .jy-dialog .weui-dialog__hd {
-  background: #f5f4f9;
-  padding: 0.17rem 0;
-  color: #000;
-  font-size: 0.34rem;
+  background: #ffff;
+  padding: 0.48rem 0 .16rem;
   text-align: center;
+  font-weight: normal;
+}
+.jy-dialog .weui-dialog__hd .weui-dialog__title{
+  font-weight: bold;
+  color: #171826;
+  font-size: 0.36rem;
 }
 
 .jy-dialog .weui-dialog__bd {
   margin: 0;
-  padding: 0.37rem 0.82rem;
-  color: #1d1d1d;
+  padding: 0 0.6rem .48rem;
+  color: #5F5E64;
   font-size: 0.32rem;
-  line-height: .48rem;
-  text-align: center;
+  line-height: .44rem;
+  text-align: justify;
 }
 
-.jy-dialog .weui-dialog__ft:after {
+/* .jy-dialog .weui-dialog__ft:after {
   border: 0;
 }
 
 .jy-dialog .weui-dialog__btn:after {
   border: 0;
-}
+} */
 
 .jy-dialog .weui-dialog__ft {
   display: flex;
   align-items: center;
   justify-content: space-around;
-  padding: 0 0.6rem;
-  padding-bottom: 0.38rem;
+  /* padding: 0 0.6rem; */
+  /* padding-bottom: 0.38rem; */
   box-sizing: border-box;
   text-align: center;
-  border-top: none;
+  /* border-top: none; */
 }
 
 .jy-dialog .weui-dialog__btn {
-  display: block;
-  width: 1.72rem;
-  height: 0.72rem;
-  line-height: 0.72rem;
+  /* display: block; */
+  /* width: 1.72rem; */
+  /* height: 0.72rem; */
+  /* line-height: 0.72rem; */
   color: #fff;
-  padding: 0;
-  flex: none;
+  /* padding: 0; */
+  /* flex: none; */
   text-align: center;
-  border-radius: 3px;
+  /* border-radius: 3px; */
+  font-size: .36rem;
 }
 
 .jy-dialog .weui-dialog__btn_primary {
-  background-color: #2cb7ca;
+  /* background-color: #2cb7ca; */
+  color: #2ABED1;
 }
 
 .jy-dialog .weui-dialog__btn_default {
-  background-color: #bfbfc3;
+  /* background-color: #bfbfc3; */
+  color: #171826;
 }
 
 .jy-alert .weui-dialog__hd {
@@ -1123,3 +1136,41 @@
 .origin-price .price-num {
   text-decoration: line-through;
 }
+/* weui  weui-actionsheet*/
+#iosActionsheet{
+  height: 6.24rem;
+  border-radius: 8px 8px 0 0;
+  background-color: #fff;
+  overflow-x: hidden;
+}
+#iosActionsheet .weui-actionsheet__title{
+  border-radius: 8px 8px 0 0;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  flex-direction: row!important;
+}
+#iosActionsheet .weui-actionsheet__title-text{
+  font-size: .4rem;
+  color: #171826;
+}
+#iosActionsheet .weui-icon-clear{
+  font-size: .5rem;
+}
+#iosActionsheet .weui-actionsheet__cell{
+  text-align: left;
+  font-weight: 500;
+}
+#iosActionsheet .cell_title{
+  color: #171826;
+  font-size: .32rem;
+}
+#iosActionsheet .weui-actionsheet__cell.active{
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJVSURBVHgB7ZhPbtpAFMbfTKkqdeUjeFMJvAEfwaLtOjlB3ROUniDOCZqcIMkJ0l2lKtS9wUAWBKkbjuBVI+XPTN4jkDgjj2GwSSxlfhvw09h8n8d+8w0ADofD4XA4HK8XBg2lnY6/vFFwoAAyySCZRt2TonEcGgiJ5wqOUbyHhz5+PzCNbUHDCH6LHqD4fI1mwTS+UTPQ/iV81uKpVs4Yk7umcxpjgMTzdzxdPDYPyFu5O4nCkem8RhhYisevfr4ulfw6/RT+LTv3xQ2YxOODvz/th8erzi81EAzP487Z+Q5sCf9UeCj+FArET/rdZJ1rGNcBFH8ETMWLw9F/JqNZFGZQI8GfscCP3pOihXjCPAOP4onee8VTmm6oiSDFG6SJVwoObcQTRgNKgr7y9ehZrcNEkI73UG385PcATi763QFYYjRw8bEbF5jwq5q4Fw9JvobiR5dMWosnSl9iMoFTcaiVNzZhED+7rPB+rWyjk344QBP7WtnaRCcdfysSryo2h7XWATSRmEx8oOyyAgpnTAtkS/HTKJxBBazidDAUCTC+p5Wz6xsZ/ftcvNzPw1mLi3ytLvGE1UpsmAnvLQawogWvLJzVIZ7YaEPTGYoBY/yHXseNR7zceBgjApNhWTizZeMdWXsoYs74kV5XSn5XV/DTGM7WyDc2VNpSds7EDuNzE5520UyPxbYRYV0q74kXLyndbc84aEviicpxekLdB7sQdZbCAVsUT9T2r0Q7xY6DgY/lnnsKZ5vkGxtq29BQW6TejrLnHeY5xDscDofD4XC8du4A8xAKoF0qIFQAAAAASUVORK5CYII=) no-repeat center right;
+  background-size: .48rem .48rem;
+  margin-right: .28rem;
+}
+#iosActionsheet .small-title{
+  font-size: .24rem;
+  color: #5F5E64;
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 105 - 6
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_introduce.css


+ 33 - 5
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_purchase.css

@@ -399,8 +399,7 @@
 }
 
 .radio-form .weui-check + .weui-icon-checked:before {
-  font-size: 16px;
-  margin-top: -3px;
+  font-size: 20px;
 }
 
 .radio-form .weui-check:checked + .weui-icon-checked:before {
@@ -473,7 +472,7 @@
 
 .vip_purchase .choose_condition .chooseList .choose_item a .info::placeholder,
 .vip_purchase .choose_condition .pay_mode .choose_item a .info::placeholder {
-  color: #000;
+  color: #9B9CA3;
 }
 
 .choose_item input:disabled, .choose_item input[disabled] {
@@ -483,7 +482,7 @@
 .vip_purchase .choose_condition .chooseList .choose_item a i.iconfont,
 .vip_purchase .choose_condition .pay_mode .choose_item a i.iconfont {
   float: right;
-  color: #707070;
+  color: #C0C4CC;
 }
 
 .vip_purchase .choose_condition .chooseList .choose_item .add_tips,
@@ -508,7 +507,7 @@
 .vip_purchase .choose_condition .chooseList .free-7day .info,
 .vip_purchase .choose_condition .pay_mode .free-7day .info {
   margin-right: .2rem;
-  color: #686868;
+  color: #9B9CA3;
 }
 
 .vip_purchase .choose_condition .chooseList {
@@ -530,11 +529,40 @@
   flex-direction: column;
   justify-content: center;
   text-align: center;
+  font-size: .26rem;
+  color: #5F5E64;
+}
+
+.table-label {
+  font-size: .28rem;
+  color: #5F5E64;
+  line-height: .4rem;
+  font-weight: 700;
+}
+
+.b-line {
+  position: relative;
+  margin-left: .18rem;
+  font-size: .3rem;
+  color: #171826;
+}
+
+.b-line:before {
+  content: '';
+  position: absolute;
+  left: -0.18rem;
+  top: 50%;
+  width: .06rem;
+  height: .32rem;
+  background-color: #2ABED1;
+  transform: translateY(-50%);
+  border-radius: .06rem;
 }
 
 .vip_purchase .choose_condition .vip_rules .vip_prise_table .table_title {
   margin-bottom: .3rem;
   margin-top: .3rem;
+  text-align: left;
 }
 
 .vip_purchase .choose_condition .vip_rules .vip_prise_table table {

BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/Vector.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/free_trial.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/group_1.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/group_2.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/group_3.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/group_4.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/trial_banner.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/vip-icon.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/vipBook.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/vip_banner.jpg


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/vip_home.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/image/vip_intro_bg-1@2x.jpg


+ 467 - 0
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/choose_area.js

@@ -0,0 +1,467 @@
+var AreaChoose = {
+  selectObj: {},//已选择,未购买城市;
+  selectedIndustryArr: ["一个行业"],//计算价格临时变量
+  timeSelect: [1, 2],//计算价格临时变量 timeSelect[0]时长  timeSelect[1] 1:年 2:月
+  vipSubisTrial: false,
+  inintData: function () {
+      //已选择
+      try {
+          let select = sessionStorage.getItem("vipSubSelectArea");
+          if (select) {
+              this.selectObj = JSON.parse(select);
+          }
+          if (sessionStorage.getItem("vipSubSelectIndustry")) {
+              this.selectedIndustryArr = JSON.parse(sessionStorage.getItem("vipSubSelectIndustry"));
+          }
+          if (sessionStorage.getItem("vipSubSelectTime")) {
+              this.timeSelect = JSON.parse(sessionStorage.getItem("vipSubSelectTime"));
+          }
+          //是否试用界面
+          if (sessionStorage.getItem("vipSubisTrial")) this.vipSubisTrial = true;
+      } catch (e) {
+          console.log(e);
+          this.selectObj = {};
+      }
+  },
+  inintPage: function () {//初始化省份城市选项
+      $(".select-area-box ul li:not('.index')").each(function () {
+          var text = $(this).find(".province").text().trim()
+          var data = null
+          chinaMapJSON.some(function (v) {
+              data = v
+              return v.name.indexOf(text) !== -1
+          })
+          var box = $(this).find('div.tab_content')
+          var html = AreaChoose.createMoreCity(data.city)
+          box.html(html)
+      })
+  },
+  createMoreCity: function (arr) {
+      var tempHtml = arr.map(function (v) {
+          return '<button class="city">' + v.name + '</button>'
+      }).join('')
+      return tempHtml
+  },
+  showSelected: function (canClick) { //回显已选择
+      let ran = this.selectObj;
+      for (var province in ran) {
+          let citys = ran[province]
+          if (citys.length > 0) {//地市
+              this.selectCity(citys, canClick)
+          } else {//省份
+              this.selectProvince(province, canClick)
+          }
+      }
+  },
+  selectProvince: function (province, canClick) { //设置选中省份 province 省份
+      $($('.tab .province')).each(function (index, dom) {
+          if (province == $.trim($(dom).text())) {
+              if (province != "全国") {
+                  $(".checkbox.other").attr("checked", false).parents('.all-country').removeClass('active'); //取消全国选中
+              } else {
+                $(".checkbox.other").attr("checked", true).parents('.all-country').addClass('active'); 
+              }
+              $(dom).children('.checkbox').attr({"checked": true, "disabled": !canClick});//选中此省份
+              $(dom).parents().siblings('.tab_content').find(".city").addClass("active").attr({"disabled": !canClick});
+          }
+      })
+  },
+  selectCity: function (citys, canClick) { //设置选中城市
+      citys.forEach(v => {
+          $($('.tab_content .city')).each(function (index, dom) {
+              if (v == $(dom).text()) {
+                  $(".checkbox.other").attr("checked", false).parents('.all-country').removeClass('active'); //取消全国选中
+                  $(dom).addClass('active').attr('disabled', !canClick).parents().siblings('.tab')
+                      .addClass('selected').children('.province').children('.checkbox').attr({
+                      "checked": true
+                  }).addClass('opt');
+              }
+          })
+      })
+  },
+  getResult: function (changeCity, isFirst) {   /* 选中结果 */
+      //如果选中所有,则转为全国
+      if ($(".city").length == $(".city.active").length) {
+          $(".checkbox.other").trigger("click");
+          $(".checkbox").removeClass("opt");
+          return
+      }
+      var tmpSelect = {};
+      $('.result_name').empty()
+      var data = []; //定义一个总数组
+      var cityArr = []; //定义一个选中城市数组
+      var val = $('.other').parents('.province').text().trim();
+      if ($('.other').is(':checked')) {
+          data = [{name: val, children: []}] //全国
+          //$(".tips_d_text").slideUp();
+      }
+      $(".tab_content").find(".city.active:not('[disabled]')").each(function () {
+          var length = $(this).parent('.tab_content').find('.city').length; //省份下城市的length
+          var activeLeng = $(this).parent('.tab_content').find('.city.active').length; //省份下选中城市的length
+          let arr = [];
+          // 判断省份下的城市是否等于选中的城市长度,相等就是全部选中
+          if (length == activeLeng) {
+              // data.push($(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim())
+              let province = $(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim();
+              data.push({
+                  name: province,
+                  children: []
+              })
+          } else {
+              let province = $(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim();
+              let city = $(this).html()
+              arr.push({name: city, parent: province})
+              for (let i = 0; i < arr.length; i++) {
+                  let obj = {};
+                  obj.name = arr[i].name;
+                  obj.parent = arr[i].parent;
+                  cityArr.push(obj)
+              }
+              data.push({
+                  name: province,
+                  children: cityArr
+              })
+          }
+      })
+      //数组对象去重
+      let obj = {};
+      data = data.reduce((cur, next) => {
+          obj[next.name] ? "" : obj[next.name] = true && cur.push(next);
+          return cur
+      }, [])
+      // 数组筛选
+      let result = data.map(v => {
+          let filterArr = v.children.filter(s => {
+              return s.parent === v.name
+          })
+          return {
+              name: v.name,
+              children: filterArr
+          }
+      })
+      var html = '';
+      var selectProvince = 0;
+      var selectCityMax = 0;
+
+      for (var i = 0; i < result.length; i++) {
+          let children = result[i].children;
+          if (children.length > 0) {
+              // 判断每个省份下选中的城市长度,当大于等于4的时候 弹出"选择全省更划算的弹窗"
+              let childrenArr = [];
+              //判断操作城市省份下城市的数量
+              if (result[i].name === $.trim(changeCity)) {
+                  selectCityMax = children.length;
+              }
+              html += `${result[i].name}(`
+              for (var j = 0; j < children.length; j++) {
+                  childrenArr.push(children[j].name)
+                  if (j != children.length - 1) {
+                      html += `${children[j].name}、`
+                  } else {
+                      html += `${children[j].name}`
+                  }
+              }
+              if (i != result.length - 1) {
+                  html += `)、`
+              } else {
+                  html += `)`
+              }
+              tmpSelect[result[i].name] = childrenArr;//
+          } else {
+              selectProvince++
+
+              if (i != result.length - 1) {
+                  html += `${result[i].name}、`
+              } else {
+                  html += `${result[i].name}`
+              }
+              tmpSelect[result[i].name] = [];//
+          }
+      }
+
+      //提示
+      /*if (!this.vipSubisTrial) {
+          if (selectCityMax > 2) {
+              $('.tips_btn .tips_d_text').text("已选择" + selectCityMax + "个市,建议购买“全省”").slideDown();
+          } else {
+              if (selectProvince > 9 && !isFirst) {
+                  $('.tips_btn .tips_d_text').text("已选择" + selectProvince + "个省,建议购买“全国”").slideDown()
+              } else {
+                  $(".tips_d_text").slideUp();
+              }
+          }
+      }*/
+      this.selectObj = tmpSelect;
+      // console.log("this.selectObj:", tmpSelect)
+      // $('.result_name').append(html)
+      AreaChoose.isOpen()
+      // console.log(result)
+      this.initAlreadyBuy(result)
+
+      if (result.length > 0) { //已选择
+          $('.reset-btn').removeAttr("disabled");
+          $('.save-btn').removeAttr("disabled");
+          AreaChoose.flushPrice(); //刷新价格
+      } else {
+          $('.save-btn').attr("disabled", "disabled");
+          AreaChoose.flushPrice(-1); //刷新价格
+      }
+  },
+  submitArea: function () {
+      let addCity = $('.result_name').text(); //新增的城市
+      sessionStorage.setItem("vipSubSelectArea", JSON.stringify(AreaChoose.selectObj));
+      if (sessionStorage.getItem("vipSubSelectArea_buyed")) {
+          sessionStorage.removeItem("vipSubSelectArea_buyed");
+      }
+      if (sessionStorage.getItem("areaSelectNotFlushed")) {
+          sessionStorage.removeItem("areaSelectNotFlushed");
+      }
+      history.go(-1);
+  },
+  isAllSelected: function () {
+      var _f = true
+      $($('.tab_content .city')).each(function (index, dom) {
+          if ($(dom).hasClass('active')) {
+              _f = false
+              $('.other').prop('checked', false);
+          }
+      })
+      // 如果循环结束仍为true说明 没有全部都被选中
+      if (_f) {
+          $('.other').prop('checked', true);
+      }
+  },
+  isOpen: function () {
+      let pHeight = $('.result_text').height()
+      let minHeight = $('.result_text').css('min-height')
+      let rows = Math.round(Math.round(pHeight) / parseFloat(minHeight));
+      // console.log("高度:" + pHeight, "最小高度" + minHeight, "行数:" + rows)
+      if (rows == 1) {
+          $('.packup').hide()
+          $('.detail').hide()
+      } else if (rows == 2) {
+          console.log($('.result_name').html().trim().length)
+          let length = $('.result_name').html().trim().length;
+          if (length >= 50) {
+              $('.detail').show()
+              $('.packup').hide()
+          } else {
+              $('.detail').hide()
+              $('.packup').hide()
+          }
+
+      } else {
+          $('.packup').show()
+          $('.detail').hide()
+      }
+  },
+  inintClick: function () {
+      $('.detail').click(function () {
+          $('.result_text').removeClass('line_two')
+          $(".result").css("padding-bottom", "0.3rem")
+          $(this).hide();
+          $('.packup').show()
+      })
+      $('.packup').click(function () {
+          $(".result").css("padding-bottom", "0.2rem")
+          $('.result_text').addClass('line_two')
+          $(this).hide();
+          $('.detail').show()
+      })
+      $("body").on('click', '.slide a', function () {
+          var s = $(this).html()
+          if (s == '#') {
+              return;
+          }
+          document.querySelector('#' + s).scrollIntoView({block: 'center'});
+      })
+      $(".select-area-box .tab:not(.municipality)").on('click', function (event) {
+          if (AreaChoose.checkAnimatedRuning()) {
+              return
+          }
+          if ($(this).next('.tab_content:not(:animated)').css("display") == "block") {
+              $(this).children().children('i').css({
+                  "display": "inline-block",
+                  "transform": "rotate(0)"
+              })
+          } else {
+              $(this).children().children('i').css({
+                  "display": "inline-block",
+                  "transform": "rotate(-180deg)"
+              })
+          }
+          $(this).toggleClass('selected').next('.tab_content:not(:animated)').stop(true, true).slideToggle()
+          $(this).parent().siblings().children('.tab').removeClass('selected');
+
+      })
+      $('.checkbox').click(function (e) {
+          e.stopPropagation();
+      })
+      $('.tab .checkbox').on('click', function () {
+          if ($(this).hasClass("other")) {//点击全国
+              $(this).parents('.all-country').addClass('active')
+              $(".province input").prop('checked', false);
+              $(".city").removeClass('active');
+              $(this).prop('checked', true);
+              $(".checkbox").removeClass("opt");
+          } else {
+              console.log($(".checkbox.other").prop('checked', false).parents('.all-country'))
+              $(".checkbox.other").prop('checked', false).parents('.all-country').removeClass('active');
+              if (!$(this).is(':checked')) {
+                  if ($(this).hasClass("opt")) {//判断当前是否是半选
+                      $(this).prop("checked", true).removeClass("opt");
+                      $(this).parent().parent().siblings('.tab_content').children('.city').addClass('active');
+                  } else {
+                      $(this).parent().parent().siblings('.tab_content').children('.city').removeClass('active');
+                      if ($(".province .checkbox:checked").length == 0) {//若没有省份被选中 则选中全国
+                          $(".checkbox").removeClass("opt");
+                          $(".checkbox.other").prop('checked', true).parents('.all-country').addClass('active');
+                      }
+                  }
+              } else {
+                  $(this).parent().parent().siblings('.tab_content').children('.city').addClass('active');
+              }
+          }
+          AreaChoose.getResult()
+      })
+
+      //执行已购买城市函操作dom函数
+      $('.tab_content').on('click', '.city', function () {
+          $(".checkbox.other").prop('checked', false).parents('.all-country').removeClass('active');
+          //AreaChoose.showSelected(false)
+          $(this).toggleClass('active')
+          var isActive = $(this).parent().find('.city.active').length
+          if (isActive) {
+              var input = $(this).parents('li').find('input.checkbox')
+              window.input = input
+              input.prop('checked', true)
+              if (isActive != $(this).parent().find('.city').length) {//是否全选
+                  $(this).parent('div').siblings('.tab').find('.province .checkbox').addClass('opt');
+              } else {
+                  $(this).parent('div').siblings('.tab').find('.province .checkbox').removeClass('opt');
+              }
+          } else {
+              $(this).parent('div').siblings('.tab').children().children('.checkbox').prop(
+                  'checked', false).removeClass('opt');
+          }
+          //AreaChoose.isAllSelected()
+          AreaChoose.getResult($(this).parent('div').siblings('.tab').find('.province').text()) //出入选择的省份
+      })
+
+      /*$('.other').on('change', function () { //选择全国
+          AreaChoose.reset();
+      })*/
+
+      $('.save-btn').click(function () {  // 提交
+          AreaChoose.submitArea();
+      })
+      $('.reset-btn').click(function () {  //重置
+          AreaChoose.reset();
+      })
+  },
+  reset: function () {
+      $('.tab_content').slideUp(500)
+      $('.tab span i').css({
+          "display": "inline-block",
+          "transform": "rotate(0)"
+      })
+      $('.tab').removeClass('selected').children('.province').find(
+          'input').prop({
+          'checked': false,
+          "disabled": false
+      }).removeClass('opt');
+      $('.tab_content').find('.city').removeClass('active').attr({
+          "disabled": false,
+          "checked": false
+      })
+      AreaChoose.getResult()
+  },
+  buyset: undefined,
+  flushPrice: function (flag) {
+      if (!this.vipSubisTrial) {
+          if (!this.buyset && sessionStorage.getItem("vipSubBuySet")) {
+              this.buyset = JSON.parse(sessionStorage.getItem("vipSubBuySet"))
+          }
+          $('.tips_d_money').css("display", "block");
+          let price;
+          if (sessionStorage.getItem("industrySelectNotFlushed")) {
+              let mBuyset = getBuySet(this.selectObj, []);
+              mBuyset.buyerclasscount = this.buyset.buyerclasscount;
+              price = getsubVipOrderPriceBybuyset(mBuyset, this.timeSelect);
+          } else {
+              price = getsubVipOrderPrice(this.selectObj, this.selectedIndustryArr, this.timeSelect);
+          }
+          $('.tips_d_money').text('¥' + price);
+      }
+      if (flag === -1) {
+          $('.tips_d_money').css("display", "none");
+      }
+  },
+  animatedRuning: false,
+  checkAnimatedRuning: function () {
+      if (AreaChoose.animatedRuning) {
+          return true
+      }
+      AreaChoose.animatedRuning = true;
+      setTimeout(function () {
+          AreaChoose.animatedRuning = false;
+      }, 500);
+      return false
+  },
+  // 根据数据进行求总数 
+  initAlreadyBuy: function(arr) {
+      var pArr = [];
+      var hpArr = [];
+      var cArr = [];
+      var dunhao = '';
+      var html= '';
+      arr.forEach(function(item){
+        if(item.name == '全国'){
+          $('.result_name').text('全国')
+          // html = '全国'
+          // console.log(html)
+        } else {
+          if (item.children.length == 0 || item.children.length > 2){
+            pArr.push(item.name)
+          } else {
+            hpArr.push(item.name);
+            item.children.forEach(function(s,j){
+              cArr.push(s)
+            })
+          }
+        }
+        // console.log(pArr,cArr,hpArr)
+        if (pArr.length > 0 && cArr.length > 0){
+          dunhao = '、'
+        }
+        var text = {
+          p: pArr.length > 0 ? pArr.length + '个省' : '',
+          c: cArr.length > 0 ? dunhao + cArr.length + '个市' : '',
+          hp: hpArr.length >= 2  ? '(分布在' + hpArr.length+ '个省)' : ''
+        };
+        html = text.p + text.c + text.hp
+      })
+      $('.result_name').append(html)
+  }
+};
+// 数组求和
+function arrSum(arr) {
+  var sum = 0
+  arr.forEach(function (item, i) {
+      sum += item
+  })
+  return sum
+}
+$(function () {
+  AreaChoose.isOpen();
+  AreaChoose.inintData(); //初始化 已选择和已购买数据
+  AreaChoose.inintPage(); //初始化城市数据
+
+  //AreaChoose.getNationwide();//默认选中全国
+  AreaChoose.showSelected(true);//回显已选择
+  /* 判断已购买的城市 在不在 全部城市里面,在,将按钮置灰,不可点击 */
+
+  AreaChoose.getResult("", true);
+  AreaChoose.inintClick();
+  sessionStorage.setItem("pay_read_cache", "1");
+})

+ 2 - 2
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/editArea.js

@@ -308,7 +308,7 @@ $(function () {
         } else {
             $('.checkbox:not(:checked)').attr('disabled', true)
             if (areaData.data.isTrial) {
-                showTip(`<span style="white-space: nowrap;">您只选择试用了` + totalLength + `个省份</span>,<br><span style="white-space: nowrap;">如需更多,请前往VIP订阅进行购买</span>`);
+                showTip(`<span style="white-space: nowrap;">您只选择试用了` + totalLength + `个省份</span>,<br><span style="white-space: nowrap;">如需更多,请前往超级订阅进行购买</span>`);
             } else {
                 showTip(`<span style="white-space: nowrap;">您只购买了` + totalLength + `个省份,如需更多请升级<span></p>`)
             }
@@ -366,7 +366,7 @@ $(function () {
                 $(this).parent('div').find('.city:not(.active)').attr('disabled', true)
                 //提示订阅
                 if (areaData.data.isTrial) {
-                    showTip(`<span style="white-space: nowrap;">您只选择试用了` + $(this).parents('li').find(".province").attr("data-count") + `个市</span>,<br><span style="white-space: nowrap;">如需更多,请前往VIP订阅进行购买</span>`);
+                    showTip(`<span style="white-space: nowrap;">您只选择试用了` + $(this).parents('li').find(".province").attr("data-count") + `个市</span>,<br><span style="white-space: nowrap;">如需更多,请前往超级订阅进行购买</span>`);
                 } else {
                     showTip(`<span style="white-space: nowrap;">您只购买了` + $(this).parents('li').find(".province").attr("data-count") + `个市,如需更多请升级<span></p>`)
                 }

+ 52 - 21
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/vip_index_new.js

@@ -190,15 +190,15 @@ $(function () {
             var day = Math.floor(hours / 24);
             if (day > 0) {
                 if (!isTrail) {
-                    $(".vip-header .expire-remind .remind-text").text("VIP订阅服务还有" + (day + 1) + "天到期,请及时续费!");
+                    $(".vip-header .expire-remind .remind-text").text("超级订阅服务还有" + (day + 1) + "天到期,请及时续费!");
                 } else {
-                    $(".vip-header .expire-remind .remind-text").text("VIP订阅服务还有" + (day + 1) + "天到期,请及时购买!");
+                    $(".vip-header .expire-remind .remind-text").text("超级订阅服务还有" + (day + 1) + "天到期,请及时购买!");
                 }
             } else {
                 if (!isTrail) {
-                    $(".vip-header .expire-remind .remind-text").text("VIP订阅服务今天到期,请及时续费!");
+                    $(".vip-header .expire-remind .remind-text").text("超级订阅服务今天到期,请及时续费!");
                 } else {
-                    $(".vip-header .expire-remind .remind-text").text("VIP订阅服务今天到期,请及时购买!");
+                    $(".vip-header .expire-remind .remind-text").text("超级订阅服务今天到期,请及时购买!");
                 }
             }
             $(".vip-header .expire-remind").show();
@@ -230,7 +230,7 @@ $(function () {
 
     // 项目匹配问号点击事件
     $('.project-match .icon-bangzhu').on('click', function () {
-        var str = '开启后,系统将根据你订阅的关键词自动匹配出相关联的项目,并将相关联项目的后续动态在VIP订阅内一并推送。'
+        var str = '开启后,系统将根据你订阅的关键词自动匹配出相关联的项目,并将相关联项目的后续动态在超级订阅内一并推送。'
         weui.alert(str, {
             title: '项目匹配',
             className: 'jy-alert',
@@ -263,6 +263,37 @@ $(function () {
         pickerShow('.billing-list-container', false)
         $('.coupon-picker').hide()
     })
+
+    // 关键词匹配方式
+    var defaultVal = $('.match-way-value').text()
+    var $iosActionsheet = $('#iosActionsheet');
+    var $iosMask = $('#iosMask');
+    function hideActionSheet() {
+        $iosActionsheet.removeClass('weui-actionsheet_toggle');
+        $iosMask.fadeOut(200);
+    }
+    $iosMask.on('click', hideActionSheet);
+    $('#iosActionsheet .weui-actionsheet__cell').each(function(index,item){
+      var t = $(item).children().text().trim();
+      // console.log(t,$(this))
+      if (t == defaultVal) {
+        $(this).addClass('active')
+      }
+    })
+    $('#iosActionsheetCancel').on('click', hideActionSheet);
+    $('body').on('click', '.match-way', function(){
+      $iosActionsheet.addClass('weui-actionsheet_toggle');
+      $iosMask.fadeIn(200);
+    })
+    $('#iosActionsheet .weui-actionsheet__cell').on('click',function(){
+      $(this).addClass('active').siblings().removeClass('active');
+      $iosActionsheet.removeClass('weui-actionsheet_toggle');
+      $iosMask.fadeOut(200);
+      console.log($(this).children('.cell_title').text())
+      $('.match-way-value').text($(this).children('.cell_title').text())
+    })
+    
+    
     $('body').on('click', '.jy-dialog .weui-mask', function () {
         pickerShow('.jy-dialog', false)
     })
@@ -353,26 +384,26 @@ $(function () {
         }
 
         $dialog = weui.dialog({
-            title: '提示信息',
+            title: '保存修改并升级',
             content: content,
             className: 'jy-dialog',
             buttons: [
-                {
-                    label: labName,
-                    type: 'primary',
-                    onClick: function () {
-                        doSubmit();
-                    }
-                },
-                {
-                    label: '取消',
-                    type: 'default',
-                    onClick: function () {
-                        clearSessionStorage();
-                        //window.history.go(-1);
-                        window.location.reload();
-                    }
+              {
+                  label: '不保存',
+                  type: 'default',
+                  onClick: function () {
+                      clearSessionStorage();
+                      //window.history.go(-1);
+                      window.location.reload();
+                  }
+              },
+              {
+                label: labName,
+                type: 'primary',
+                onClick: function () {
+                    doSubmit();
                 }
+              },
             ]
         });
     }

+ 8 - 8
src/jfw/modules/app/src/web/templates/active/livePage/online.html

@@ -58,7 +58,7 @@
                 </div>
                 <p class="last-tips">7月7日20:00-7月14日20:00</p>
             </div>
-            <div class="understand" onclick="window.location.href='/jyapp/vipsubscribe/introducePage'">了解VIP订阅</div>
+            <div class="understand" onclick="window.location.href='/jyapp/vipsubscribe/introducePage'">了解超级订阅</div>
             {{if .T.isLiving}}
             <div class="decode">
                 <p class="d-time">今晚<em>20:00</em><span>(7月7日)</span></p>
@@ -70,7 +70,7 @@
                 <div class="box-item">
                     <div class="left-icon icon-1"></div>
                     <div class="right-text">
-                        <p>直接拿最高388元的<span class="light-text">VIP订阅延期码</span></p>
+                        <p>直接拿最高388元的<span class="light-text">超级订阅延期码</span></p>
                     </div>
                 </div>
                 <div class="box-item">
@@ -97,12 +97,12 @@
             <div class="explain">
                 <ul>
                     <li>活动说明:</li>
-                    <li>一. VIP订阅6折活动时间:2020年7月7日20:00-7月14日 20:00。</li>
-                    <li>二. VIP订阅所有套餐均参与6折优惠。</li>
-                    <li>三. VIP订阅用户的新购、升级、续费均参与6折优惠。</li>
-                    <li>四. 参与剑鱼标讯直播的用户,即可领取延期码,延期码在剑鱼标讯VIP订阅付款页面使用,延期码的延期时间为购买套餐的有效期+30天。</li>
-                    <li>五. 在使用延期码时,同一用户仅限支付1个VIP订阅的订单时兑换,不支持多订单多延期码使用。</li>
-                    <li>六. VIP订阅6折及延期码在活动期间有效,逾期作废。</li>
+                    <li>一. 超级订阅6折活动时间:2020年7月7日20:00-7月14日 20:00。</li>
+                    <li>二. 超级订阅所有套餐均参与6折优惠。</li>
+                    <li>三. 超级订阅用户的新购、升级、续费均参与6折优惠。</li>
+                    <li>四. 参与剑鱼标讯直播的用户,即可领取延期码,延期码在剑鱼标讯超级订阅付款页面使用,延期码的延期时间为购买套餐的有效期+30天。</li>
+                    <li>五. 在使用延期码时,同一用户仅限支付1个超级订阅的订单时兑换,不支持多订单多延期码使用。</li>
+                    <li>六. 超级订阅6折及延期码在活动期间有效,逾期作废。</li>
                     <li>七. 本活动的最终解释权归剑鱼标讯所有。</li>
                 </ul>
             </div>

+ 1 - 1
src/jfw/modules/app/src/web/templates/active/livePage/over.html

@@ -32,7 +32,7 @@
         <div class="j-main">
             <div class="empty">
                 <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/active/livePage/image/empty.png?v={{Msg "seo" "version"}}" alt="">
-                <p>VIP订阅活动已结束</p>
+                <p>超级订阅活动已结束</p>
             </div>
         </div>
     </div>

+ 9 - 9
src/jfw/modules/app/src/web/templates/active/livePage/preheat.html

@@ -31,7 +31,7 @@
                 <div class="intro">
                     <p class="i-title"></p>
                     <p class="i-btn">全年仅此一次</p>
-                    <p class="i-text">VIP订阅所有套餐 <strong>6</strong> 折 <br>不搞虚的!</p>
+                    <p class="i-text">超级订阅所有套餐 <strong>6</strong> 折 <br>不搞虚的!</p>
                     <p class="i-subtext">7月7日20:00-14日20:00 <br>等你来抢</p>
                 </div>
             </div>
@@ -55,7 +55,7 @@
                     <div class="left-icon icon-1"></div>
                     <div class="right-text">
                         <p>参与直播将直接获得 </p>
-                        <p>最高388元的<span class="light-text">VIP订阅延期码</span></p>
+                        <p>最高388元的<span class="light-text">超级订阅延期码</span></p>
                     </div>
                 </div>
                 <div class="box-item">
@@ -98,19 +98,19 @@
             <div class="explain">
                 <ul>
                     <li>活动说明:</li>
-                    <li>一. VIP订阅6折活动时间:2020年7月7日20:00-7月14日 20:00。</li>
-                    <li>二. VIP订阅所有套餐均参与6折优惠。</li>
-                    <li>三. VIP订阅用户的新购、升级、续费均参与6折优惠。</li>
-                    <li>四. 参与剑鱼标讯直播的用户,即可领取延期码,延期码在剑鱼标讯VIP订阅付款页面使用,延期码的延期时间为购买套餐的有效期+30天。</li>
-                    <li>五. 在使用延期码时,同一用户仅限支付1个VIP订阅的订单时兑换,不支持多订单多延期码使用。</li>
-                    <li>六. VIP订阅6折及延期码在活动期间有效,逾期作废。</li>
+                    <li>一. 超级订阅6折活动时间:2020年7月7日20:00-7月14日 20:00。</li>
+                    <li>二. 超级订阅所有套餐均参与6折优惠。</li>
+                    <li>三. 超级订阅用户的新购、升级、续费均参与6折优惠。</li>
+                    <li>四. 参与剑鱼标讯直播的用户,即可领取延期码,延期码在剑鱼标讯超级订阅付款页面使用,延期码的延期时间为购买套餐的有效期+30天。</li>
+                    <li>五. 在使用延期码时,同一用户仅限支付1个超级订阅的订单时兑换,不支持多订单多延期码使用。</li>
+                    <li>六. 超级订阅6折及延期码在活动期间有效,逾期作废。</li>
                     <li>七. 本活动的最终解释权归剑鱼标讯所有。</li>
                 </ul>
             </div>
         </div>
         <div class="j-footer">
             <div class="j-button-group">
-                <a href="/jyapp/vipsubscribe/introducePage" class="j-button-confirm j-button-1">了解VIP订阅</a>
+                <a href="/jyapp/vipsubscribe/introducePage" class="j-button-confirm j-button-1">了解超级订阅</a>
             </div>
         </div>
         <!--  dialog -->

+ 6 - 6
src/jfw/modules/app/src/web/templates/dataExport/dataExport_toMyOrder.html

@@ -1770,10 +1770,10 @@
 		                        	if((vip_status=="-2")&&(obj.lastbuy_code!=undefined)){
 		                        		iconHtml+='<div class="card-footer">'
                                 if (applybill_status ==0){
-          												+'<a  onclick="invoiceAdd(this)" class="btn  gray-btn">开发票</a><a  onclick="renewalOrBuyAgain(2,this)" class="btn cancle green-btn">再次购买</a>'
+          												+'<a  onclick="invoiceAdd(this)" class="btn  gray-btn">开发票</a><a  onclick="renewalOrBuyAgain(2,this)" class="btn green-btn">再次购买</a>'
           											}
                                 if (applybill_status ==1){
-                                  +'<a  onclick="checkinvoice(this)" class="btn  gray-btn">查看发票</a><a  onclick="renewalOrBuyAgain(2,this)" class="btn cancle green-btn">再次购买</a>'
+                                  +'<a  onclick="checkinvoice(this)" class="btn  gray-btn">查看发票</a><a  onclick="renewalOrBuyAgain(2,this)" class="btn green-btn">再次购买</a>'
                                 }
 										iconHtml+='</div>'
 		                        	}else if((vip_status=="2")&&(obj.lastbuy_code!=undefined)){
@@ -1781,12 +1781,12 @@
 													if(way !== "trial"){
 														if (applybill_status ==0){
 															iconHtml+='<div class="card-footer">'
-																+'<a  onclick="invoiceAdd(this)" class="btn  gray-btn">开发票</a><a  onclick="renewalOrBuyAgain(1,this)" class="btn cancle">续费</a>'
+																+'<a  onclick="invoiceAdd(this)" class="btn  gray-btn">开发票</a><a  onclick="renewalOrBuyAgain(1,this)" class="btn green-btn">续费</a>'
 																+'</div>'
 														}
 														if (applybill_status ==1){
 															iconHtml+='<div class="card-footer">'
-																	+'<a  onclick="checkinvoice(this)" class="btn  gray-btn">查看发票</a><a  onclick="renewalOrBuyAgain(1,this)" class="btn cancle">续费</a>'
+																	+'<a  onclick="checkinvoice(this)" class="btn  gray-btn">查看发票</a><a  onclick="renewalOrBuyAgain(1,this)" class="btn green-btn">续费</a>'
 																	+'</div>'
 														}
 													}
@@ -2404,7 +2404,7 @@
 							}else{
 								iconHtml+='<a  onclick="checkinvoice(this)" class="btn  gray-btn">查看发票</a>'
 							}
-							iconHtml+='<a  onclick="renewalOrBuyAgain_ent(1,this)" class="btn cancle green-btn">再次购买</a>'
+							iconHtml+='<a  onclick="renewalOrBuyAgain_ent(1,this)" class="btn green-btn">再次购买</a>'
 									+'</div>'
 						}else if(ent_status==true){
 							iconHtml+='<div class="card-footer">'
@@ -2413,7 +2413,7 @@
 							}else{
 								iconHtml+='<a  onclick="checkinvoice(this)" class="btn  gray-btn">查看发票</a>'
 							}
-							iconHtml+='<a  onclick="renewalOrBuyAgain_ent(2,this)" class="btn cancle green-btn">续费</a>'
+							iconHtml+='<a  onclick="renewalOrBuyAgain_ent(2,this)" class="btn green-btn">续费</a>'
 							+'</div>'
 						}else if (ent_status==undefined){
 							iconHtml+='<div class="card-footer">'

+ 4 - 4
src/jfw/modules/app/src/web/templates/me/index.html

@@ -119,7 +119,7 @@
             <a class="menu_list vip">
                 <div class="menu_list_left ">
                     <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/me/images/my_vip.png?v={{Msg "seo" "version"}}" alt="">
-                    <span>VIP订阅</span>
+                    <span>超级订阅</span>
                 </div>
                 <img class="arrow_right" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/me/images/my_arrow_right.png?v={{Msg "seo" "version"}}" alt="">
             </a>
@@ -235,13 +235,13 @@
 
         $(function () {
 			var nowTimestamp= (new Date()).valueOf();
-			//vip订阅
+			//超级订阅
 			$(".vip").on("click",function(){
 				$.post("/subscribepay/orderListDetails/isVip?v="+nowTimestamp,{},function(data){
 					if (data.isvip){
-						window.location.href="/jyapp/vipsubscribe/toSubVipSetPage";		//vip订阅入口  试用或正式vip
+						window.location.href="/jyapp/vipsubscribe/toSubVipSetPage";		//超级订阅入口  试用或正式vip
 					}else{
-						window.location.href="/jyapp/vipsubscribe/introducePage";		//vip订阅入口  非vip
+						window.location.href="/jyapp/vipsubscribe/introducePage";		//超级订阅入口  非vip
 					}
 				})
 	        })

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

@@ -162,8 +162,8 @@ color:#1d1d1d;
                         <img id="head_img" style="border-radius:50%;" class="avatar"  src="" onerror="this.src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/persional/my_head.png?v={{Msg "seo" "version"}}'">
                         <!-- 开通vip 显示 crown、vip_sign DOM-->
                         <!-- <img class="crown" style="display:none" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/me/images/mine/crown.png?v={{Msg "seo" "version"}}" alt=""> -->
-                        <span class="crown" style="display:none"></span>
-                        <div class="vip_sign" style="display:none" >vip</div>
+                        <!-- <span class="crown" style="display:none"></span> -->
+                        <!-- <div class="vip_sign" style="display:none" >vip</div> -->
                     </div>
                     <div class="user_info">
                         <span class="user_name"></span>
@@ -178,7 +178,7 @@ color:#1d1d1d;
                     </div>
                 </div>
                 {{if and (not .T.isIosExam) (not .T.isIosExamPhone)}}
-                <div class="u_right govip" onClick="gotoVip()" id="me-to-vipSub" style="display:none">开通VIP</div>
+                <div class="u_right govip" onClick="gotoVip()" id="me-to-vipSub" style="display:none">开通超级订阅</div>
                 {{end}}
             </div>
             <!-- 订单 -->
@@ -428,14 +428,16 @@ color:#1d1d1d;
         window.location.href='/page_entniche/page/user/account_merge.html'
       })
       var nowTimestamp= (new Date()).valueOf();
-			//vip订阅
+			//超级订阅
 		  $.post("/subscribepay/orderListDetails/isVip?v="+nowTimestamp,{},function(data){
           if(!data.isvip){
             $(".govip").show();
+            $('.user_name').removeClass('crown')
           }else{
             //crown、vip_sign
-            $(".crown").show();
-            $(".vip_sign").show();
+            // $(".crown").show();
+            // $(".vip_sign").show();
+            $('.user_name').addClass('crown')
             $(".mine .user .vip").css("border", "2px solid #F1D090");
           }
 				})

+ 1 - 1
src/jfw/modules/app/src/web/templates/staticpage/privacy_rules.html

@@ -112,7 +112,7 @@
                     <p style="text-indent: 20px;">请注意,单独的设备信息、服务日志信息是无法识别特定自然人身份的信息。如果我们将这类非个人信息与其他信息结合用于识别特定自然人身份,或者将其与个人信息结合使用,则在结合使用期间,这类非个人信息将被视为个人信息,除取得您授权或法律法规另有规定外,我们会将这类信息进行匿名处理。</p>
                     <p style="text-indent: 20px;">为给您提供定制化的服务,我们将通过使用您的订阅、关注设置,向您推送您所需要信息。如您不接受定向推送功能,您可以直接在“我的-设置”功能页面中关闭“推送消息设置”按钮。</p>
                     <p style="font-size: 14px;">3、帮您提交及管理订单</p>
-                    <p style="text-indent: 20px;">当您在我们的产品及/或服务中订购增值服务时(如企业实名认证服务、VIP订阅服务、数据导出服务、商机洞察服务、商机管理服务),我们会通过系统为您生成购买该增值服务的订单,同时该订单中会载明您所订购的服务信息、具体订单号、订单创建时间、您支付的金额,我们收集这些信息是为了帮助您顺利完成交易、保障您的交易安全、查询订单信息、提供客服与售后服务及其他我们明确告知的目的。</p>
+                    <p style="text-indent: 20px;">当您在我们的产品及/或服务中订购增值服务时(如企业实名认证服务、超级订阅服务、数据导出服务、商机洞察服务、商机管理服务),我们会通过系统为您生成购买该增值服务的订单,同时该订单中会载明您所订购的服务信息、具体订单号、订单创建时间、您支付的金额,我们收集这些信息是为了帮助您顺利完成交易、保障您的交易安全、查询订单信息、提供客服与售后服务及其他我们明确告知的目的。</p>
                     <p style="text-indent: 20px;">如您申请发票,还需提供以下信息:发票抬头、纳税人识别号、注册地址、注册电话、开户银行、银行账号、个人姓名、手机号、所属地区、详细地址、邮箱,以及您根据您的开票需求提供的更多信息,如购买方信息。</p>
                     <p style="font-size: 14px;">4、帮助您完成支付</p>
                     <p style="text-indent: 20px;">为完成增值服务订单支付,您需要提供第三方支付平台(支付宝、微信支付)账户并选择付款方式,我们会将您的用户名、对应的第三方支付平台账户名、订单支付相关信息、订单安全相关设备信息及其他反洗钱法律要求的必要信息通过在应用程序中嵌入的SDK等方式与第三方支付平台共享,前述第三方支付平台将获得您连接网络的权限、手机信息权限,并获取网络状态和wifi状态。</p>

+ 1 - 1
src/jfw/modules/app/src/web/templates/staticpage/privacy_rules_client.html

@@ -100,7 +100,7 @@
                 <p style="text-indent: 20px;">请注意,单独的设备信息、服务日志信息是无法识别特定自然人身份的信息。如果我们将这类非个人信息与其他信息结合用于识别特定自然人身份,或者将其与个人信息结合使用,则在结合使用期间,这类非个人信息将被视为个人信息,除取得您授权或法律法规另有规定外,我们会将这类信息进行匿名处理。</p>
                 <p style="text-indent: 20px;">为给您提供定制化的服务,我们将通过使用您的订阅、关注设置,向您推送您所需要信息。如您不接受定向推送功能,您可以直接在“我的-设置”功能页面中关闭“推送消息设置”按钮。</p>
                 <p style="font-size: 14px;">3、帮您提交及管理订单</p>
-                <p style="text-indent: 20px;">当您在我们的产品及/或服务中订购增值服务时(如企业实名认证服务、VIP订阅服务、数据导出服务、商机洞察服务、商机管理服务),我们会通过系统为您生成购买该增值服务的订单,同时该订单中会载明您所订购的服务信息、具体订单号、订单创建时间、您支付的金额,我们收集这些信息是为了帮助您顺利完成交易、保障您的交易安全、查询订单信息、提供客服与售后服务及其他我们明确告知的目的。</p>
+                <p style="text-indent: 20px;">当您在我们的产品及/或服务中订购增值服务时(如企业实名认证服务、超级订阅服务、数据导出服务、商机洞察服务、商机管理服务),我们会通过系统为您生成购买该增值服务的订单,同时该订单中会载明您所订购的服务信息、具体订单号、订单创建时间、您支付的金额,我们收集这些信息是为了帮助您顺利完成交易、保障您的交易安全、查询订单信息、提供客服与售后服务及其他我们明确告知的目的。</p>
                 <p style="text-indent: 20px;">如您申请发票,还需提供以下信息:发票抬头、纳税人识别号、注册地址、注册电话、开户银行、银行账号、个人姓名、手机号、所属地区、详细地址、邮箱,以及您根据您的开票需求提供的更多信息,如购买方信息。</p>
                 <p style="font-size: 14px;">4、帮助您完成支付</p>
                 <p style="text-indent: 20px;">为完成增值服务订单支付,您需要提供第三方支付平台(支付宝、微信支付)账户并选择付款方式,我们会将您的用户名、对应的第三方支付平台账户名、订单支付相关信息、订单安全相关设备信息及其他反洗钱法律要求的必要信息通过在应用程序中嵌入的SDK等方式与第三方支付平台共享,前述第三方支付平台将获得您连接网络的权限、手机信息权限,并获取网络状态和wifi状态。</p>

+ 33 - 8
src/jfw/modules/app/src/web/templates/structeddata/marketing.html

@@ -11,20 +11,37 @@
 	<meta http-equiv="X-UA-Compatible" content="ie=edge">
 	<meta http-equiv="X-UA-Compatible" content="ie=edge">
 	<title>结构化招标数据</title>
-	<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/js/rem.js?v={{Msg "seo" "version"}}"></script>
+	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css" />
+  <link href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}" rel="stylesheet">
 	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/base.css?v={{Msg "seo" "version"}}">
 	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/weui.min.css?v={{Msg "seo" "version"}}">
 	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/marketing.css?v={{Msg "seo" "version"}}">
+	<link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/marketing.css?v={{Msg "seo" "version"}}1">
+  <style>
+    .app-layout-header{
+      border-bottom: 0px!important;
+    }
+    .header-transparent>.app-back{
+      color:#fff !important;
+    }
+    .jy-app-header .subreport_title{
+      font-size:17px;
+    }
+  </style>
 </head>
 
 <body>
+<div class="app-layout-header jy-app-header header-transparent">
+	<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+  <span class="subreport_title">结构化招标数据</span>
+</div>
+<div class="app-layout-content-b">
 	<div id="app">
 		<!-- 头部 -->
-		<header class="jy-app-header header-transparent">
+<!--		<header class="jy-app-header header-transparent">
 			<div class="iconfont icon-fanhui fanhui"></div>
 			<div class="subreport_title">结构化招标数据</div>
-		</header>
+		</header>-->
 		<div class="j-main">
 			<div class="structured_top">
 				<div class="str_title">
@@ -187,17 +204,19 @@
 			</div>
 		</div>
 		<div class="j-button-group">
-			<a href="javascript:;" class="j-button-cancel" id="j_cancel">
-				<!-- <span class="phone_icon"></span> -->
-				<span class="phone_num">咨询热线:400-108-6670</span>
+			<a onclick="tel('400-108-6670')" class="j-button-cancel" id="j_cancel">
+				<span class="phone_icon"></span>
+				<span>立即咨询</span>
 			</a>
-			<button class="j-button-confirm" id="j_confirm" onclick="learn_more()">了解详情</button>
+			<button class="j-button-confirm" id="j_confirm" onclick="learn_more()">深入了解</button>
 		</div>
 	</div>
+</div>
 </body>
 <script src="/jyapp/structuredata/js/jquery.min.js"></script>
 <script src="/jyapp/structuredata/js/weui.min.js"></script>
 <script src="/jyapp/structuredata/js/imageViewer.min.js"></script>
+{{include "/common/js.html"}}
 <script>
 	// 监听页面滚动
 	var addEvent = (function(){
@@ -275,5 +294,11 @@
 			});
 		});
 	}
+  //拨打电话
+  function tel(phone){
+    JyObj.callPhone(phone);
+  }
 </script>
+<!--百度统计end-->
+{{include "/common/baiducc.html"}}
 </html>

+ 506 - 111
src/jfw/modules/app/src/web/templates/structeddata/write_infor.html

@@ -9,147 +9,542 @@
         <meta http-equiv="X-UA-Compatible" content="ie=edge">
         <meta http-equiv="X-UA-Compatible" content="ie=edge">
         <title>结构化招标数据</title>
+        <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css" />
+        <link href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}" rel="stylesheet">
         <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/js/rem.js?v={{Msg "seo" "version"}}"></script>
         <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/base.css?v={{Msg "seo" "version"}}">
+        <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/weui.min.css?v={{Msg "seo" "version"}}">
         <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-        <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/write_infor.css?v={{Msg "seo" "version"}}">
+        <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/write_infor.css?v={{Msg "seo" "version"}}5">
+        <style>
+          .jy-app-header .subreport_title{
+            font-size:17px;
+          }
+        </style>
     </head>
 <body>
+<div class="app-layout-header jy-app-header">
+	<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+  <span class="subreport_title">深入了解</span>
+</div>
+<div class="app-layout-content-b">
     <div id="writeInfo">
-        <div class="j-header jy-app-header">
-            <i class="header-left iconfont icon-fanhui" style="font-size: 0.36rem" onclick="fanhui()"></i>
+<!--        <div class="j-header jy-app-header">
+            <i class="header-left iconfont icon-fanhui" style="font-size:19.5px;" onclick="fanhui()"></i>
             <span class="header-title">结构化招标数据</span>
             <span class="header-right"></span>
-        </div>
-        <div class="infoMain">
-            <div class="info_tip">
-                <p class="tip_text">
-                    请完善信息,我们会尽快和您联系。
-                </p>
+        </div>-->
+        <div class="weui-tab" id="tab">
+            <div class="weui-navbar">
+                <div class="weui-navbar__item">免费样例
+                    <div class="showline">
+                        <span></span>
+                    </div>
+                </div>
+                <div class="weui-navbar__item">联系客服
+                    <div class="showline">
+                        <span></span>
+                    </div>
+                </div>
+                <div class="weui-navbar__item">自选购买
+                    <div class="showline">
+                        <span></span>
+                    </div>
+                </div>
             </div>
-            <div class="write_input">
-                <div class="write_con">
-                    <div class="write_name">
-                        <div class="write_name_ipt">
-                            <span class="label_name">姓名</span>
-                            <input class="ipt_name" type="text" placeholder="输入姓名">
-                        </div>
+            <div class="weui-tab__panel">
+                <div class="weui-tab__content infoMain mf">
+                    <div class="info_tip">
+                        <p class="tip_text">
+                            请正确填写以下信息,我们将以邮件的形式免费发送一份结构化招标数据至您填写的邮箱内,请注意查收。
+                        </p>
                     </div>
-                    <div class="write_phone">
-                        <div class="write_phone_ipt">
-                            <span class="label_phone">手机号</span>
-                            <input class="ipt_phone" type="text" placeholder="输入手机号" value="{{.T.phone_num}}">
+                    <div class="write_input">
+                        <div class="write_con">
+                            <div class="write_name">
+                                <div class="write_name_ipt">
+                                    <span class="label_name">联系人</span>
+                                    <input class="ipt_name" type="text" placeholder="输入联系人姓名">
+                                </div>
+                                <div class="name_tips" style="display: none;">
+                                    <span class="label_tips"></span>
+                                    <p class="phone_rule">
+                                        请输入正确联系人
+                                    </p>
+                                </div>
+                            </div>
+                            <div class="write_phone">
+                                <div class="write_phone_ipt">
+                                    <span class="label_phone">手机号</span>
+                                    <input class="ipt_phone" type="text" maxlength="11" placeholder="输入手机号" value="{{.T.phone_num}}">
+                                </div>
+                                <div class="phone_tips" style="display: none;">
+                                    <span class="label_tips"></span>
+                                    <p class="phone_rule">
+                                        手机号格式错误
+                                    </p>
+                                </div>
+                            </div>
+                            <div class="write_email">
+                                <div class="write_phone_ipt">
+                                    <span class="label_phone">邮箱地址</span>
+                                    <input class="ipt_email" type="text" placeholder="输入邮箱地址" value="{{.T.s_myemail}}">
+                                    <span class="correct-icon"></span>
+                                </div>
+                                <div class="email_tips" style="display: none;">
+                                    <span class="label_tips"></span>
+                                    <p class="phone_rule">
+                                        邮箱格式错误
+                                    </p>
+                                </div>
+                            </div>
+                            <div class="email_code">
+                                <div class="write_phone_ipt">
+                                    <span class="label_phone">邮箱验证码</span>
+                                    <input class="ipt_code" type="text" placeholder="输入邮箱验证码">
+                                    <span class="sendEmail" id="sendEmail">发送验证码</span>
+                                    <span class="timedown"></span>
+                                </div>
+                                <!-- <div class="phone_tips" style="display: none;">
+                                    <span class="label_tips"></span>
+                                    <p class="phone_rule">
+                                        验证码错误
+                                    </p>
+                                </div> -->
+                            </div>
                         </div>
-                        <div class="phone_tips" style="display: none;">
-                            <span class="label_tips"></span>
-                            <p class="phone_rule">
-                                手机号格式错误
-                            </p>
+                    </div>
+                    <div class="free_button" id="free_button">
+                        <button class="write_free" id="write_free" disabled>确定</button>
+                    </div>
+                </div>
+                <div class="weui-tab__content infoMain kf">
+                    <div class="info_tip">
+                        <p class="tip_text">
+                            请正确填写手机号,客服人员将会在3个工作日内与您联系,针对结构化招标数据进行详细讲解。
+                        </p>
+                    </div>
+                    <div class="write_input">
+                        <div class="write_con">
+                            <div class="write_name">
+                                <div class="write_name_ipt">
+                                    <span class="label_name">联系人</span>
+                                    <input class="ipt_name" type="text" placeholder="输入联系人姓名">
+                                </div>
+                                <div class="kf_name_tips" style="display: none;">
+                                    <span class="label_tips"></span>
+                                    <p class="phone_rule">
+                                        请输入正确联系人
+                                    </p>
+                                </div>
+                            </div>
+                            <div class="write_phone">
+                                <div class="write_phone_ipt">
+                                    <span class="label_phone">手机号</span>
+                                    <input class="ipt_phone" type="text" maxlength="11" placeholder="输入手机号" value="{{.T.phone_num}}">
+                                </div>
+                                <div class="kf_phone_tips" style="display: none;">
+                                    <span class="label_tips"></span>
+                                    <p class="phone_rule">
+                                        手机号格式错误
+                                    </p>
+                                </div>
+                            </div>
+                            
                         </div>
                     </div>
-
+                    <div class="run_button" id="run_button">
+                        <button class="write_run" id="write_run" disabled>确定</button>
+                    </div>
+                </div>
+                <div class="weui-tab__content purchase">
+                    <div class="option_purchase">
+                        您可通过剑鱼标讯所提供的全国招投标数据的自助导出功能,根据自身企业,自定义设定关键词、发布时间、地区或行业等筛选条件,以“高级字段包”为选择,少量购买,用于核对数据的精准性。
+                    </div>
+                    <div class="run_now_button" id="run_now_button">
+                        <button class="write_run_now" id="write_run_now">立即前往</button>
+                    </div>
                 </div>
-            </div>
-            <div class="run_button" id="run_button">
-                <button class="write_run" id="write_run" disabled>立即提交</button>
             </div>
         </div>
     </div>
+</div>
 </body>
 <script src="/jyapp/structuredata/js/jquery.min.js"></script>
+<script src="/jyapp/structuredata/js/weui.min.js"></script>
+{{include "/common/js.html"}}
 <script>
-    (function() {
-        var issubmit = ["false","false"]
-        console.log($('.ipt_name').val())
-        console.log($('.ipt_phone').val())
-        var $iptphone = $('.ipt_phone').val()
-        var $iptname = $('.ipt_phone').val()
-        if($iptname != ''){
-            issubmit[0] = 'true'
-        }else{
-            issubmit[0] = 'false'
-        }
-        if($iptphone != ''){
-            issubmit[1] = 'true'
+var issubmit = ["false","false"]
+var isfreesubmit = ["false","false","false","false"]
+
+$(function(){
+  if ({{.T.s_myemail}}!=""&&{{.T.s_myemail}}!=null){
+      $('.email_code').slideUp();
+      isfreesubmit[2] = 'true';
+      isfreesubmit[3] = 'true';
+      $('.mf .ipt_email').val({{.T.s_myemail}})
+      $('.correct-icon').show()
+      freesubmit();
+  }else{
+    $('.mf .ipt_email').val('')
+  }
+
+  //   每次进页面都要清空之前的信息
+  $('.mf .ipt_name').val('')
+  $('.mf .ipt_phone').val('')
+  $('.mf .ipt_code').val('')
+  $('.kf .ipt_name').val('')
+  $('.kf .ipt_phone').val('')
+
+  $(".write_run_now").on("click",function(){
+    window.location.href="/jyapp/front/dataExport/toSieve?from=structed"
+  })
+  // tabbar
+  weui.tab('#tab',{
+      defaultIndex: 0,
+      onChange: function(index){
+          //console.log(index);
+      }
+  });
+  // 姓名输入事件
+  $('.mf .ipt_name').on('blur', function() {
+      var namerule =  isname(this.value)
+      var myreg=/^\s*$/g;
+      if(namerule){
+        $('.name_tips').hide()
+          isfreesubmit[0] = 'true'
+      }else{
+        if(myreg.test(this.value)){
+            $('.name_tips').hide()
+            isfreesubmit[0] = 'false'
         }else{
-            issubmit[1] = 'false'
-        }
-        // 验证手机号格式
-        function isPoneAvailable($poneInput) {
-            var myreg=/^[1][3,4,5,7,8][0-9]{9}$/;
-            if (!myreg.test($poneInput)) {
-                return false;
-            } else {
-                return true;
-            }
+            $('.name_tips').css('display','flex')
+            isfreesubmit[0] = 'false'
         }
-        // 姓名不能为空
-        function isname($nameInput) {
-            var myreg=/^\s*$/g;
-            var status = /^[\u4e00-\u9fa5]{2,}$/
-            console.log(!myreg.test($nameInput))
-            console.log(status.test($nameInput))
-            if (!myreg.test($nameInput) == true && status.test($nameInput) == true) {
-                return false;
-            } else {
-                return true;
-            }
+      }
+      freesubmit()
+  })
+  
+  // 手机号输入事件
+  $('.mf .ipt_phone').on('blur', function() {
+      var phonerule = isPoneAvailable(this.value)
+      var myreg=/^\s*$/g;
+      if(phonerule){
+          $('.phone_tips').hide()
+          isfreesubmit[1] = 'true'
+      }else{
+        if(myreg.test(this.value)){
+            $('.phone_tips').hide()
+            isfreesubmit[1] = 'false'
+        } else {
+            $('.phone_tips').css('display','flex')
+            isfreesubmit[1] = 'false'
         }
+      }
+      freesubmit()
+  })
 
-        $('.ipt_name').on('input', function() {
-            var namerule =  isname(this.value)
-            if(namerule){
-                issubmit[0] = "false"
-            }else{
-                issubmit[0] = "true"
-            }
-            console.log(issubmit)
-            submit()
-        })
-
-
-        $('.ipt_phone').on('input', function() {
-            var phonerule = isPoneAvailable(this.value)
-            if(phonerule){
-                $('.phone_tips').css('display','none')
-                issubmit[1] = "true"
-            }else{
-                $('.phone_tips').css('display','flex')
-                issubmit[1] = "false"
-            }
-            submit()
-        })
-        submit()
-        // 立即提交
-        $('.run_button').on('click', function() {
-            var sub_name = $('.ipt_name').val()
-            var sub_phone = $('.ipt_phone').val()
+  // 邮箱输入事件
+  $('.mf .ipt_email').on('input', function() {
+      var emailrule = isAvailableEmail(this.value)
+      if(emailrule){
+          if (this.value=={{.T.s_myemail}}){
+            $('.correct-icon').show()
+            $('.email_code').slideUp()
+            isfreesubmit[3] = 'true'
+          }else{
             $.ajax({
-                url:'/jyapp/structed/savedata',
-                type:'POST',
-                data:{
-                    name:sub_name,
-                    phone_num:sub_phone
-                },
-                success:function(res) {
-                    if(res.data.status == true){
-                        window.location.href = "/jyapp/structed/success"
-                    }
-                }
+              url:'/jyapp/structed/verifyEmail',
+              type:'POST',
+              data:{
+                  email:this.value,
+              },
+              success:function(res) {
+                  if(res.status == true) {
+                      isfreesubmit[3] = 'true'
+                      $('.email_code').slideUp();
+                      $('.correct-icon').show()
+                  }else{
+                      $('.email_code').slideDown()
+                      isfreesubmit[3] = 'false'
+                      $('.correct-icon').hide()
+                  }
+                  freesubmit()
+              },
+              error:function(err) {
+                  console.log(err)
+    
+              } 
             })
-        })
-
-        function submit() {
-            if(issubmit.includes('false')) {
-                $('.write_run').attr('disabled',true)
-            } else {
-                $('.write_run').attr('disabled',false)
-            }
+          }
+          $('.email_tips').hide()
+          isfreesubmit[2] = 'true'
+      }else{
+        $('.correct-icon').hide()
+        var myreg=/^\s*$/g;
+        if(myreg.test(this.value)){
+          $('.email_tips').hide()
+        } else {
+          $('.email_tips').css('display','flex')
+          isfreesubmit[2] = 'false'
+          $('.email_code').slideUp()
         }
-    })()
+      }
+      freesubmit()
+  })
+
+  // 邮箱验证码输入事件
+  $('.mf .ipt_code').on('input',function() {
+      // console.log($(this).val().length)
+      var codeLen = $(this).val()
+      var iptEmail = $('.ipt_email').val()
+      if(codeLen.length == 6){
+          $.ajax({
+              url:'/jyapp/structed/verifyCode',
+              type:'POST',
+              data:{
+                  s_email:iptEmail,
+                  verifyCode:codeLen
+              },
+              success:function(res) {
+                  if(res.status == true) {
+                      isfreesubmit[3] = 'true'
+                      $('.ipt_email').attr('disabled','disabled')
+                      $('.email_code').slideUp()
+                      $('.correct-icon').show()
+                  }else{
+                      $('.correct-icon').hide()
+                      $('.weui-icon_toast').hide()
+                      isfreesubmit[3] = 'false'
+                      weui.toast('验证码错误', 1500);
+                  }
+                  freesubmit()
+              },
+              error:function(err) {
+                  console.log(err)
+
+              } 
+          })
+      }
+  })
+
+  // 免费样例--确定
+  $('.free_button').on('click', function() {
+      var iptname = $('.mf .ipt_name').val()
+      var iptphone = $('.mf .ipt_phone').val()
+      var iptemail = $('.mf .ipt_email').val()
+      $.ajax({
+          url:'/jyapp/structed/freeSamples',
+          type:'POST',
+          data:{
+              name:iptname,
+              phone_num:iptphone,
+              s_email:iptemail
+          },
+          success:function(res){
+              if(res.status == true) {
+                window.location.replace("/jyapp/structed/success")
+              }else{
+                //   weui.toast('保存失败', 1500);
+              }
+          },
+          error:function(err){
+            //   weui.toast('保存失败', 1500);
+          }
+      })
+  })
+
+  // 姓名输入事件
+  $('.kf .ipt_name').on('blur', function() {
+      var namerule =  isname(this.value)
+      var myreg=/^\s*$/g;
+      if(namerule){
+        $('.kf_name_tips').hide()
+          issubmit[0] = "true"
+      }else{
+        if(myreg.test(this.value)){
+            $('.kf_name_tips').hide()
+            issubmit[0] = "false"
+        }else{
+            $('.kf_name_tips').css('display','flex')
+            issubmit[0] = "false"
+        }
+      }
+      submit()
+  })
+  
+  // 手机号输入事件
+  $('.kf .ipt_phone').on('blur', function() {
+      var phonerule = isPoneAvailable(this.value)
+      var myreg=/^\s*$/g;
+      if(phonerule){
+          $('.kf_phone_tips').hide()
+          issubmit[1] = "true"
+      }else{
+        if(myreg.test(this.value)){
+            $('.kf_phone_tips').hide()
+            issubmit[1] = "false"
+        } else {
+            $('.kf_phone_tips').css('display','flex')
+            issubmit[1] = "false"
+        } 
+      }
+      submit()
+  })
+  // 立即提交
+  $('.run_button').on('click', function() {
+      var sub_name = $('.kf .ipt_name').val()
+      var sub_phone = $('.kf .ipt_phone').val()
+      $.ajax({
+          url:'/jyapp/structed/savedata',
+          type:'POST',
+          data:{
+              name:sub_name,
+              phone_num:sub_phone
+          },
+          success:function(res) {
+              if(res.error_code == 0){
+                window.location.replace("/jyapp/structed/success")
+              }else{
+                // weui.toast(res.data["msg"], {
+                //     duration: 1500
+                // });
+              }
+          }
+      })
+  })
+  // 点击发送验证码
+  $('.sendEmail').on('click', function() {
+      // 先判断邮箱格式
+      var iptemail = $('.ipt_email').val()
+      var emailrule = isAvailableEmail(iptemail)
+      if(emailrule){
+          $('.email_tips').hide()
+        //   $('.timedown').show()
+          $.ajax({
+              url:'/jyapp/structed/sendMailVerify',
+              type:'POST',
+              data:{
+                  email:iptemail
+              },
+              success:function(res){
+                  isfreesubmit[3] = 'false';
+                //   res.errCode = 5
+                  if(res.errCode == 1){
+                    //   weui.toast('邮箱格式不正确', {
+                    //       duration: 1500,
+                    //       className: 'toast-lang',
+                    //   });
+                    $('.correct-icon').hide()
+                  }else if(res.errCode == 2) {
+                    //   weui.toast('已发送,5分钟后再尝试', {
+                    //       duration: 1500,
+                    //       className: 'toast-lang'
+                    //   });
+                    countdown()
+                    $('.correct-icon').hide()
+                  }else if(res.errCode == 3) {
+                    //   weui.toast('验证码发送次数已达今日上限', {
+                    //       duration: 1500,
+                    //       className: 'toast-lang',
+                    //   });
+                    countdown()
+                    $('.correct-icon').hide()
+                  }else if(res.errCode == 4) {
+                    $('.email_code').slideUp();
+                    isfreesubmit[3] = 'true';
+                    freesubmit();
+                    $('.correct-icon').show()
+                  }else if(res.errCode == 5) {
+                    countdown()
+                  }else{
+                      $('.sendEmail').hide()
+                  }
+                  
+              }
+          })
+      }else{
+          $('.email_tips').show()
+      }
+      
+  })
+})
+
+// 倒计时
+function countdown() {
+    $('.sendEmail').hide()
+    setTimeout(() => {
+        $('.timedown').show()
+    }, 100);
+    var time=300;
+    setTime=setInterval(function(){
+        if(time<=0){
+            $('.timedown').hide()
+            $('.sendEmail').show()
+            time=299
+            clearInterval(setTime);
+            return;
+        }
+        time--;
+        $(".timedown").text(time+'s');
+    },1000);
+}
+
+
+// 验证手机号格式
+function isPoneAvailable($poneInput) {
+    var myreg=/^[1][3,4,5,7,8][0-9]{9}$/;
+    if (!myreg.test($poneInput)) {
+        return false;
+    } else {
+        return true;
+    }
+}
+// 联系人必须是两个汉字以上
+function isname($nameInput) {
+    // var myreg=/^\s*$/g;
+    var tworeg = /^[\u4E00-\u9FA5]{2,}$/;
+    if (!tworeg.test($nameInput)) {
+        return false;
+    } else {
+        return true;
+    }
+}
+
+
+// 验证邮箱格式
+function isAvailableEmail($emailInput) {
+    var myreg = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;
+    if(!myreg.test($emailInput)) {
+        return false;
+    } else {
+        return true;
+    }
+}
+
+// 判断提交按钮是否可以点击
+function submit() {
+    if(issubmit.includes('false')) {
+        $('.write_run').attr('disabled',true)
+    } else {
+        $('.write_run').attr('disabled',false)
+    }
+}
+
+// 判断免费样例的按钮是否可以点击
+function freesubmit() {
+    if(isfreesubmit.includes('false')) {
+        $('.write_free').attr('disabled',true)
+    } else {
+        $('.write_free').attr('disabled',false)
+    }
+}
+
     // 返回
     function fanhui() {
         history.go(-1)
     }
 </script>
+<!--百度统计end-->
+{{include "/common/baiducc.html"}}
 </html>

+ 3 - 3
src/jfw/modules/app/src/web/templates/structeddata/write_result.html

@@ -8,7 +8,7 @@
         <meta name="apple-mobile-web-app-status-bar-style" content="black">
         <meta http-equiv="X-UA-Compatible" content="ie=edge">
         <meta http-equiv="X-UA-Compatible" content="ie=edge">
-        <title>结构化招标数据</title>
+        <title>深入了解</title>
         <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/js/rem.js?v={{Msg "seo" "version"}}"></script>
         <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/css/base.css?v={{Msg "seo" "version"}}">
         <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/structuredata/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
@@ -18,7 +18,7 @@
     <div id="writeresult">
         <div class="j-header jy-app-header">
             <i class="header-left iconfont icon-fanhui" style="font-size:0.36rem" onclick="fanhui()"></i>
-            <span class="header-title">结构化招标数据</span>
+            <span class="header-title">深入了解</span>
             <span class="header-right"></span>
         </div>
         <div class="result_view">
@@ -40,7 +40,7 @@
 <script>
    function back_to_index(){
     //    window.location.href = "/jyapp/jylab/mainSearch"
-       history.go(-3)
+       history.go(-1)
    }
 
    function fanhui() {

+ 2 - 2
src/jfw/modules/app/src/web/templates/vipsubscribe/change_area.html

@@ -13,7 +13,7 @@
     <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/base2.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
-    <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/change_area.css?v={{Msg "seo" "version"}}1">
+    <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/change_area.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/appbutton.css?v={{Msg "seo" "version"}}"/>
@@ -410,7 +410,7 @@
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/mapJSON.js"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/UpgradePrice.js?v={{Msg "seo" "version"}}"></script>
-    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/change_area.js?v={{Msg "seo" "version"}}1"></script>
+    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/change_area.js?v={{Msg "seo" "version"}}"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "mod_version"}}"></script>
 </div>
 {{include "/common/baiducc.html"}}

+ 2 - 2
src/jfw/modules/app/src/web/templates/vipsubscribe/change_industry.html

@@ -12,7 +12,7 @@
     <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
-    <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/change_industry.css?v={{Msg "seo" "version"}}1">
+    <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/change_industry.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/appbutton.css?v={{Msg "seo" "version"}}"/>
@@ -255,7 +255,7 @@
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/jquery.min.js"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.js"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/fastclick.min.js"></script>
-    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/change_industry.js?v={{Msg "seo" "version"}}1"></script>
+    <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/change_industry.js?v={{Msg "seo" "version"}}"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "mod_version"}}"></script>
 </div>

+ 1 - 1
src/jfw/modules/app/src/web/templates/vipsubscribe/change_time.html

@@ -13,7 +13,7 @@
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/base2.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
-    <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/change_time.css?v={{Msg "seo" "version"}}1">
+    <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/change_time.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/appbutton.css?v={{Msg "seo" "version"}}"/>

+ 2 - 424
src/jfw/modules/app/src/web/templates/vipsubscribe/choose_area.html

@@ -12,7 +12,7 @@
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/choose_area.css?v={{Msg "seo" "version"}}1">
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/choose_area.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/appbutton.css?v={{Msg "seo" "version"}}"/>
@@ -394,430 +394,8 @@
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/jquery.min.js"></script>
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/mapJSON.js"></script>
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+<script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/choose_area.js?v={{Msg "seo" "version"}}"></script>
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "mod_version"}}"></script>
-<script>
-    var AreaChoose = {
-        selectObj: {},//已选择,未购买城市;
-        selectedIndustryArr: ["一个行业"],//计算价格临时变量
-        timeSelect: [1, 2],//计算价格临时变量 timeSelect[0]时长  timeSelect[1] 1:年 2:月
-        vipSubisTrial: false,
-        inintData: function () {
-            //已选择
-            try {
-                let select = sessionStorage.getItem("vipSubSelectArea");
-                if (select) {
-                    this.selectObj = JSON.parse(select);
-                }
-                if (sessionStorage.getItem("vipSubSelectIndustry")) {
-                    this.selectedIndustryArr = JSON.parse(sessionStorage.getItem("vipSubSelectIndustry"));
-                }
-                if (sessionStorage.getItem("vipSubSelectTime")) {
-                    this.timeSelect = JSON.parse(sessionStorage.getItem("vipSubSelectTime"));
-                }
-                //是否试用界面
-                if (sessionStorage.getItem("vipSubisTrial")) this.vipSubisTrial = true;
-            } catch (e) {
-                console.log(e);
-                this.selectObj = {};
-            }
-        },
-        inintPage: function () {//初始化省份城市选项
-            $(".select-area-box ul li:not('.index')").each(function () {
-                var text = $(this).find(".province").text().trim()
-                var data = null
-                chinaMapJSON.some(function (v) {
-                    data = v
-                    return v.name.indexOf(text) !== -1
-                })
-                var box = $(this).find('div.tab_content')
-                var html = AreaChoose.createMoreCity(data.city)
-                box.html(html)
-            })
-        },
-        createMoreCity: function (arr) {
-            var tempHtml = arr.map(function (v) {
-                return '<button class="city">' + v.name + '</button>'
-            }).join('')
-            return tempHtml
-        },
-        showSelected: function (canClick) { //回显已选择
-            let ran = this.selectObj;
-            for (var province in ran) {
-                let citys = ran[province]
-                if (citys.length > 0) {//地市
-                    this.selectCity(citys, canClick)
-                } else {//省份
-                    this.selectProvince(province, canClick)
-                }
-            }
-        },
-        selectProvince: function (province, canClick) { //设置选中省份 province 省份
-            $($('.tab .province')).each(function (index, dom) {
-                if (province == $.trim($(dom).text())) {
-                    if (province != "全国") {
-                        $(".checkbox.other").attr("checked", false); //取消全国选中
-                    }
-                    $(dom).children('.checkbox').attr({"checked": true, "disabled": !canClick});//选中此省份
-                    $(dom).parents().siblings('.tab_content').find(".city").addClass("active").attr({"disabled": !canClick});
-                }
-            })
-        },
-        selectCity: function (citys, canClick) { //设置选中城市
-            citys.forEach(v => {
-                $($('.tab_content .city')).each(function (index, dom) {
-                    if (v == $(dom).text()) {
-                        $(".checkbox.other").attr("checked", false).parents('.all-country').removeClass('active'); //取消全国选中
-                        $(dom).addClass('active').attr('disabled', !canClick).parents().siblings('.tab')
-                            .addClass('selected').children('.province').children('.checkbox').attr({
-                            "checked": true
-                        }).addClass('opt');
-                    }
-                })
-            })
-        },
-        getResult: function (changeCity, isFirst) {   /* 选中结果 */
-            //如果选中所有,则转为全国
-            if ($(".city").length == $(".city.active").length) {
-                $(".checkbox.other").trigger("click");
-                $(".checkbox").removeClass("opt");
-                return
-            }
-            var tmpSelect = {};
-            $('.result_name').empty()
-            var data = []; //定义一个总数组
-            var cityArr = []; //定义一个选中城市数组
-            var val = $('.other').parents('.province').text().trim();
-            if ($('.other').is(':checked')) {
-                data = [{name: val, children: []}] //全国
-                //$(".tips_d_text").slideUp();
-            }
-            $(".tab_content").find(".city.active:not('[disabled]')").each(function () {
-                var length = $(this).parent('.tab_content').find('.city').length; //省份下城市的length
-                var activeLeng = $(this).parent('.tab_content').find('.city.active').length; //省份下选中城市的length
-                let arr = [];
-                // 判断省份下的城市是否等于选中的城市长度,相等就是全部选中
-                if (length == activeLeng) {
-                    // data.push($(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim())
-                    let province = $(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim();
-                    data.push({
-                        name: province,
-                        children: []
-                    })
-                } else {
-                    let province = $(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim();
-                    let city = $(this).html()
-                    arr.push({name: city, parent: province})
-                    for (let i = 0; i < arr.length; i++) {
-                        let obj = {};
-                        obj.name = arr[i].name;
-                        obj.parent = arr[i].parent;
-                        cityArr.push(obj)
-                    }
-                    data.push({
-                        name: province,
-                        children: cityArr
-                    })
-                }
-            })
-            //数组对象去重
-            let obj = {};
-            data = data.reduce((cur, next) => {
-                obj[next.name] ? "" : obj[next.name] = true && cur.push(next);
-                return cur
-            }, [])
-            // 数组筛选
-            let result = data.map(v => {
-                let filterArr = v.children.filter(s => {
-                    return s.parent === v.name
-                })
-                return {
-                    name: v.name,
-                    children: filterArr
-                }
-            })
-            var html = '';
-            var selectProvince = 0;
-            var selectCityMax = 0;
-
-            for (var i = 0; i < result.length; i++) {
-                let children = result[i].children;
-                if (children.length > 0) {
-                    // 判断每个省份下选中的城市长度,当大于等于4的时候 弹出"选择全省更划算的弹窗"
-                    let childrenArr = [];
-                    //判断操作城市省份下城市的数量
-                    if (result[i].name === $.trim(changeCity)) {
-                        selectCityMax = children.length;
-                    }
-                    html += `${result[i].name}(`
-                    for (var j = 0; j < children.length; j++) {
-                        childrenArr.push(children[j].name)
-                        if (j != children.length - 1) {
-                            html += `${children[j].name}、`
-                        } else {
-                            html += `${children[j].name}`
-                        }
-                    }
-                    if (i != result.length - 1) {
-                        html += `)、`
-                    } else {
-                        html += `)`
-                    }
-                    tmpSelect[result[i].name] = childrenArr;//
-                } else {
-                    selectProvince++
-
-                    if (i != result.length - 1) {
-                        html += `${result[i].name}、`
-                    } else {
-                        html += `${result[i].name}`
-                    }
-                    tmpSelect[result[i].name] = [];//
-                }
-            }
-
-            //提示
-            /*if (!this.vipSubisTrial) {
-                if (selectCityMax > 2) {
-                    $('.tips_btn .tips_d_text').text("已选择" + selectCityMax + "个市,建议购买“全省”").slideDown();
-                } else {
-                    if (selectProvince > 9 && !isFirst) {
-                        $('.tips_btn .tips_d_text').text("已选择" + selectProvince + "个省,建议购买“全国”").slideDown()
-                    } else {
-                        $(".tips_d_text").slideUp();
-                    }
-                }
-            }*/
-            this.selectObj = tmpSelect;
-            // console.log("this.selectObj:", tmpSelect)
-            $('.result_name').append(html)
-            AreaChoose.isOpen()
-            console.log(result)
-            if (result.length > 0) { //已选择
-                $('.reset-btn').removeAttr("disabled");
-                $('.save-btn').removeAttr("disabled");
-                AreaChoose.flushPrice(); //刷新价格
-            } else {
-                $('.save-btn').attr("disabled", "disabled");
-                AreaChoose.flushPrice(-1); //刷新价格
-            }
-        },
-        submitArea: function () {
-            let addCity = $('.result_name').text(); //新增的城市
-            sessionStorage.setItem("vipSubSelectArea", JSON.stringify(AreaChoose.selectObj));
-            if (sessionStorage.getItem("vipSubSelectArea_buyed")) {
-                sessionStorage.removeItem("vipSubSelectArea_buyed");
-            }
-            if (sessionStorage.getItem("areaSelectNotFlushed")) {
-                sessionStorage.removeItem("areaSelectNotFlushed");
-            }
-            history.go(-1);
-        },
-        isAllSelected: function () {
-            var _f = true
-            $($('.tab_content .city')).each(function (index, dom) {
-                if ($(dom).hasClass('active')) {
-                    _f = false
-                    $('.other').prop('checked', false);
-                }
-            })
-            // 如果循环结束仍为true说明 没有全部都被选中
-            if (_f) {
-                $('.other').prop('checked', true);
-            }
-        },
-        isOpen: function () {
-            let pHeight = $('.result_text').height()
-            let minHeight = $('.result_text').css('min-height')
-            let rows = Math.round(Math.round(pHeight) / parseFloat(minHeight));
-            // console.log("高度:" + pHeight, "最小高度" + minHeight, "行数:" + rows)
-            if (rows == 1) {
-                $('.packup').hide()
-                $('.detail').hide()
-            } else if (rows == 2) {
-                console.log($('.result_name').html().trim().length)
-                let length = $('.result_name').html().trim().length;
-                if (length >= 50) {
-                    $('.detail').show()
-                    $('.packup').hide()
-                } else {
-                    $('.detail').hide()
-                    $('.packup').hide()
-                }
-
-            } else {
-                $('.packup').show()
-                $('.detail').hide()
-            }
-        },
-        inintClick: function () {
-            $('.detail').click(function () {
-                $('.result_text').removeClass('line_two')
-                $(".result").css("padding-bottom", "0.3rem")
-                $(this).hide();
-                $('.packup').show()
-            })
-            $('.packup').click(function () {
-                $(".result").css("padding-bottom", "0.2rem")
-                $('.result_text').addClass('line_two')
-                $(this).hide();
-                $('.detail').show()
-            })
-            $("body").on('click', '.slide a', function () {
-                var s = $(this).html()
-                if (s == '#') {
-                    return;
-                }
-                document.querySelector('#' + s).scrollIntoView({block: 'center'});
-            })
-            $(".select-area-box .tab:not(.municipality)").on('click', function (event) {
-                if (AreaChoose.checkAnimatedRuning()) {
-                    return
-                }
-                if ($(this).next('.tab_content:not(:animated)').css("display") == "block") {
-                    $(this).children().children('i').css({
-                        "display": "inline-block",
-                        "transform": "rotate(0)"
-                    })
-                } else {
-                    $(this).children().children('i').css({
-                        "display": "inline-block",
-                        "transform": "rotate(-180deg)"
-                    })
-                }
-                $(this).toggleClass('selected').next('.tab_content:not(:animated)').stop(true, true).slideToggle()
-                $(this).parent().siblings().children('.tab').removeClass('selected');
-
-            })
-            $('.checkbox').click(function (e) {
-                e.stopPropagation();
-            })
-            $('.tab .checkbox').on('click', function () {
-                if ($(this).hasClass("other")) {//点击全国
-                    $(this).parents('.all-country').addClass('active')
-                    $(".province input").prop('checked', false);
-                    $(".city").removeClass('active');
-                    $(this).prop('checked', true);
-                    $(".checkbox").removeClass("opt");
-                } else {
-                    console.log($(".checkbox.other").prop('checked', false).parents('.all-country'))
-                    $(".checkbox.other").prop('checked', false).parents('.all-country').removeClass('active');
-                    if (!$(this).is(':checked')) {
-                        if ($(this).hasClass("opt")) {//判断当前是否是半选
-                            $(this).prop("checked", true).removeClass("opt");
-                            $(this).parent().parent().siblings('.tab_content').children('.city').addClass('active');
-                        } else {
-                            $(this).parent().parent().siblings('.tab_content').children('.city').removeClass('active');
-                            if ($(".province .checkbox:checked").length == 0) {//若没有省份被选中 则选中全国
-                                $(".checkbox").removeClass("opt");
-                                $(".checkbox.other").prop('checked', true).parents('.all-country').addClass('active');
-                            }
-                        }
-                    } else {
-                        $(this).parent().parent().siblings('.tab_content').children('.city').addClass('active');
-                    }
-                }
-                AreaChoose.getResult()
-            })
-
-            //执行已购买城市函操作dom函数
-            $('.tab_content').on('click', '.city', function () {
-                $(".checkbox.other").prop('checked', false).parents('.all-country').removeClass('active');
-                //AreaChoose.showSelected(false)
-                $(this).toggleClass('active')
-                var isActive = $(this).parent().find('.city.active').length
-                if (isActive) {
-                    var input = $(this).parents('li').find('input.checkbox')
-                    window.input = input
-                    input.prop('checked', true)
-                    if (isActive != $(this).parent().find('.city').length) {//是否全选
-                        $(this).parent('div').siblings('.tab').find('.province .checkbox').addClass('opt');
-                    } else {
-                        $(this).parent('div').siblings('.tab').find('.province .checkbox').removeClass('opt');
-                    }
-                } else {
-                    $(this).parent('div').siblings('.tab').children().children('.checkbox').prop(
-                        'checked', false).removeClass('opt');
-                }
-                //AreaChoose.isAllSelected()
-                AreaChoose.getResult($(this).parent('div').siblings('.tab').find('.province').text()) //出入选择的省份
-            })
-
-            /*$('.other').on('change', function () { //选择全国
-                AreaChoose.reset();
-            })*/
-
-            $('.save-btn').click(function () {  // 提交
-                AreaChoose.submitArea();
-            })
-            $('.reset-btn').click(function () {  //重置
-                AreaChoose.reset();
-            })
-        },
-        reset: function () {
-            $('.tab_content').slideUp(500)
-            $('.tab span i').css({
-                "display": "inline-block",
-                "transform": "rotate(0)"
-            })
-            $('.tab').removeClass('selected').children('.province').find(
-                'input').prop({
-                'checked': false,
-                "disabled": false
-            }).removeClass('opt');
-            $('.tab_content').find('.city').removeClass('active').attr({
-                "disabled": false,
-                "checked": false
-            })
-            AreaChoose.getResult()
-        },
-        buyset: undefined,
-        flushPrice: function (flag) {
-            if (!this.vipSubisTrial) {
-                if (!this.buyset && sessionStorage.getItem("vipSubBuySet")) {
-                    this.buyset = JSON.parse(sessionStorage.getItem("vipSubBuySet"))
-                }
-                $('.tips_d_money').css("display", "block");
-                let price;
-                if (sessionStorage.getItem("industrySelectNotFlushed")) {
-                    let mBuyset = getBuySet(this.selectObj, []);
-                    mBuyset.buyerclasscount = this.buyset.buyerclasscount;
-                    price = getsubVipOrderPriceBybuyset(mBuyset, this.timeSelect);
-                } else {
-                    price = getsubVipOrderPrice(this.selectObj, this.selectedIndustryArr, this.timeSelect);
-                }
-                $('.tips_d_money').text('¥' + price);
-            }
-            if (flag === -1) {
-                $('.tips_d_money').css("display", "none");
-            }
-        },
-        animatedRuning: false,
-        checkAnimatedRuning: function () {
-            if (AreaChoose.animatedRuning) {
-                return true
-            }
-            AreaChoose.animatedRuning = true;
-            setTimeout(function () {
-                AreaChoose.animatedRuning = false;
-            }, 500);
-            return false
-        }
-    };
-
-    $(function () {
-        AreaChoose.isOpen();
-        AreaChoose.inintData(); //初始化 已选择和已购买数据
-        AreaChoose.inintPage(); //初始化城市数据
-
-        //AreaChoose.getNationwide();//默认选中全国
-        AreaChoose.showSelected(true);//回显已选择
-        /* 判断已购买的城市 在不在 全部城市里面,在,将按钮置灰,不可点击 */
-
-        AreaChoose.getResult("", true);
-        AreaChoose.inintClick();
-        sessionStorage.setItem("pay_read_cache", "1");
-    })
-</script>
 {{include "/common/baiducc.html"}}
 </body>
 

+ 1 - 1
src/jfw/modules/app/src/web/templates/vipsubscribe/choose_industry.html

@@ -11,7 +11,7 @@
     <link rel="stylesheet" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/choose_industry.css?v={{Msg "seo" "version"}}1">
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/choose_industry.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/appbutton.css?v={{Msg "seo" "version"}}"/>

+ 1 - 1
src/jfw/modules/app/src/web/templates/vipsubscribe/keyWord.html

@@ -255,7 +255,7 @@
                 </div>
                 <div class="weui-dialog__bd">
                     快速导入可将免费版招标订阅内所设置的关键词及其排除词一并导入至“<span class="fastICName">未分类</span>”关键词分类内,无需再次手动输入,简化您的订阅过程。
-                    <p style="color:#888;">注:地区与行业分类以VIP订阅设置内为准,不做导入。</p>
+                    <p style="color:#888;">注:地区与行业分类以超级订阅设置内为准,不做导入。</p>
                 </div>
                 <div class="weui-dialog__ft">
                     <a href="javascript:;" class="dialog__btn dialog__btn_confirm">确定</a>

+ 4 - 4
src/jfw/modules/app/src/web/templates/vipsubscribe/messageType.html

@@ -82,12 +82,12 @@
         </p>
     </div>
     <div class="easypopup" id="nijianTip">
-        <div class="easypopup-alert">
-            <div class="easypopup-content">
+        <div class="easypopup-alert" style="border-radius: 8px;">
+            <div class="easypopup-content" style="text-align: justify;font-size: .32rem;color: #171826;padding: .48rem .6rem;">
                 “拟建项目”是指那些处于前期立项、审批阶段的项目。供应商应在立项阶段掌握项目信息,做到早介入,稳拿单。
             </div>
-            <div class="easypopup-footer">
-                <span onclick="njTipEasyPopup.hide();">我知道了</span>
+            <div class="easypopup-footer" style="border-top: 1px solid rgba(0, 0, 0, 0.04);">
+                <span style="height: 46px;line-height: 46px;" onclick="njTipEasyPopup.hide();">我知道了</span>
             </div>
         </div>
     </div>

+ 6 - 6
src/jfw/modules/app/src/web/templates/vipsubscribe/renew_notice.html

@@ -4,7 +4,7 @@
     <meta charset="utf-8">
     <meta name="viewport"
           content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
-    <title>VIP订阅</title>
+    <title>超级订阅</title>
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/rem.js"></script>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/weui.min.css">
@@ -29,7 +29,7 @@
 <body>
 <div class="app-layout-header jy-app-header">
     <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
-    VIP订阅
+    超级订阅
 <span></span></div>
 <div class="app-layout-content-b">
     <div class="vip_service_expire layout_top-bottom">
@@ -37,8 +37,8 @@
             <div class="tip_title_box">
                 <img class="nothing" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/nothing.png?v={{Msg "seo" "version"}}" alt="">
                 <div class="tip">
-                    <div id="exprie">您的VIP订阅服务,已到期!</div>
-                    <!-- <div>VIP订阅服务即将到期,请及时续费!</div> -->
+                    <div id="exprie">您的超级订阅服务,已到期!</div>
+                    <!-- <div>超级订阅服务即将到期,请及时续费!</div> -->
                     <div class="validity_date">
                         <span>有效日期:</span>
                         <span class="date-span"></span>
@@ -154,7 +154,7 @@
                     let c = endstime / 1000;
                     if (a < b && b < c) {
                         $(".renew_service").show();
-                        $("#exprie").text("VIP订阅服务即将到期,请及时续费")
+                        $("#exprie").text("超级订阅服务即将到期,请及时续费")
                         $(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
                     }
                 } else {
@@ -221,7 +221,7 @@
                 }
                 if (exprie === "will") {
                     $(".renew_service").show();
-                    $("#exprie").text("VIP订阅服务即将到期,请及时续费")
+                    $("#exprie").text("超级订阅服务即将到期,请及时续费")
                     $(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
                 } else {
 //					    	$(".renew_service").show();

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

@@ -6,7 +6,7 @@
     <meta name="viewport"
         content="width=device-width, initial-scale=1.0,minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
-    <title>VIP订阅续费</title>
+    <title>超级订阅续费</title>
     <meta name="apple-mobile-web-app-capable" content="yes">
     <meta name="apple-mobile-web-app-status-bar-style" content="black">
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/rem.js"></script>
@@ -42,7 +42,7 @@
 <body class="no-touch">
 	<div class="app-layout-header jy-app-header">
         <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
-        VIP订阅续费
+        超级订阅续费
     <span></span></div>
     <div class="app-layout-content-b">
     <div class="vip_renew">
@@ -50,7 +50,7 @@
              <!-- 正常点击vip首页续费进入显示下列提示 -->
             <p class="update_tip renew_upgrade">提示:订阅续费可在已购买的服务基础上,延长订阅服务周期</p>
              <!-- 即将到期点击vip首页续费显示下列提示 -->
-            <p class="expire_tip renew_update">提示:您的VIP订阅服务即将到期,为不影响您的使用,请立即续费</p>
+            <p class="expire_tip renew_update">提示:您的超级订阅服务即将到期,为不影响您的使用,请立即续费</p>
             <ul class="chooseList">
                 <li class="detail_item">
                         <div class="item_info item_area">

+ 13 - 10
src/jfw/modules/app/src/web/templates/vipsubscribe/trial_info.html

@@ -3,7 +3,7 @@
 
 <head>
     <meta charset="utf-8">
-    <title>VIP订阅-完善个人信息</title>
+    <title>超级订阅-完善个人信息</title>
     <meta name="viewport"
           content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
     <meta name="apple-mobile-web-app-capable" content="yes">
@@ -19,12 +19,13 @@
 </head>
 
 <body>
-<div class="app-layout-header jy-app-header">
-    <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
-    VIP订阅-完善个人信息
-<span></span></div>
-<div class="app-layout-content-b">
-    <div class="trial_info">
+<div class="j-container">
+    <div class="j-header jy-app-header transparent-header">
+        <span class="app-back jyapp-icon jyapp-icon-zuojiantou header-left"></span>
+        <span class="header-title">超级订阅</span>
+        <span class="header-right hide"></span>
+    </div>
+    <div class="j-main trial_info">
         <form class="form">
             <div class="trial_body" style="min-height: 100%">
                 <div class="banner">
@@ -95,7 +96,10 @@
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "mod_version"}}"></script>
 <script>
-
+    // 头部返回按钮事件
+    $('.j-header .header-left').on('click', function () {
+        window.history.back()
+    })
     //解决android 键盘遮挡输入框
     window.addEventListener("resize", function () {
         if (document.activeElement.tagName === "INPUT" || document.activeElement.tagName === "TEXTAREA") {
@@ -109,7 +113,7 @@
     $(function () {
         //initScroll()
         scrollView("input");
-        $(".btn").text("申请免费试用").attr("disabled", "disabled");
+        $(".btn").text("立即免费试用").attr("disabled", "disabled");
         //获取用户信息
         $DoPost("/subscribepay/trial/GetUserPhone", {}, function (r) {
             if (r.success) {
@@ -251,7 +255,6 @@
     });
     {{end}}
 
-
 </script>
 {{include "/common/baiducc.html"}}
 </body>

+ 8 - 8
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_index.html

@@ -27,7 +27,7 @@
         <div class="header" style="display: none;">
             <img class="header_left" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/left.png?v={{Msg "seo" "version"}}" alt=""
                  onclick="javascript:history.back(-1);">
-            <h3 class="header_title"> VIP订阅</h3>
+            <h3 class="header_title"> 超级订阅</h3>
             <span class="header_right"></span>
         </div>
         <div class="content">
@@ -128,8 +128,8 @@
             <div class="renew_toast" style="display: none;">
                 <div>
                     <i class="icon iconfont" id="close_renew">&#xe61a;</i>
-                    <span class="other">VIP订阅服务还有 <span class="renew_day"></span> 天到期,请及时续费!</span>
-                    <span class="today" style="display:none;">VIP订阅服务今天到期,请及时续费!</span>
+                    <span class="other">超级订阅服务还有 <span class="renew_day"></span> 天到期,请及时续费!</span>
+                    <span class="today" style="display:none;">超级订阅服务今天到期,请及时续费!</span>
                     <a onclick="rebuy()">去续费</a>
                 </div>
             </div>
@@ -137,8 +137,8 @@
             <div class="nv_renew_toast" style="display: none;">
                 <div>
                     <i class="icon iconfont" id="nv_close_renew">&#xe61a;</i>
-                    <span class="other">VIP订阅服务还有 <span class="renew_day"></span> 天到期,请及时购买!</span>
-                    <span class="today" style="display:none;">VIP订阅服务今天到期,请及时购买!</span>
+                    <span class="other">超级订阅服务还有 <span class="renew_day"></span> 天到期,请及时购买!</span>
+                    <span class="today" style="display:none;">超级订阅服务今天到期,请及时购买!</span>
                     <a href="/jyapp/vipsubscribe/vipsubscribe_new">去购买</a>
                 </div>
             </div>
@@ -156,7 +156,7 @@
                 </div>
                 <div class="weui-dialog__bd"
                      style="line-height: .4rem;padding: .37rem .45rem;font-size: 14px;text-align: left;color: #686868;">
-                    开启后,系统将根据你订阅的关键词自动匹配出相关联的项目,并将相关联项目的后续动态在VIP订阅内一并推送。
+                    开启后,系统将根据你订阅的关键词自动匹配出相关联的项目,并将相关联项目的后续动态在超级订阅内一并推送。
                 </div>
                 <div class="weui-dialog__ft"
                      style="border-top: 1px solid #eee;padding-bottom: .2rem;padding-top: .2rem;">
@@ -284,7 +284,7 @@
                             $(".to_expired").hide();
                             $(".tabbar").html('<a style="width: 100%;color: #fff;background: #2CB7CA;" href="/jyapp/vipsubscribe/vipsubscribe_new" class="update_btn">去购买</a>')
                         }
-                        $('.free7days_pic').text("VIP订阅服务");
+                        $('.free7days_pic').text("超级订阅服务");
                         $('.free7days_pic').append("<style>.free7days_pic::after{display:inline-block}</style>");
                     } else {
                         if (parseInt(_vipData["expRemind"]) > 1) {
@@ -300,7 +300,7 @@
                             $(".to_expired").hide();
                         }
                         $(".tabbar").html('<a onclick="upgrade()" class="update_btn">升级</a><a onclick="rebuy()" class="renew_btn">续费</a>')
-                        $('.free7days_pic').text("已开通VIP订阅服务");
+                        $('.free7days_pic').text("已开通超级订阅服务");
                         $('.free7days_pic').append("<style>.free7days_pic::after{display:none}</style>");
                     }
                     if (_vipData) {

+ 31 - 4
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_index_new.html

@@ -194,7 +194,7 @@
               </div>
             </a>
           </li>
-          <li class="body-item match-keywords">
+          <li class="body-item match-way">
             <a class="item-container" href="javascript:;">
               <div class="item">
                 <span class="item-l">
@@ -202,7 +202,7 @@
                   <span class="item-label" style="white-space: nowrap;">关键词匹配方式</span>
                 </span>
                 <span class="item-r">
-                  <span class="keywords-text ellipsis">按标题匹配</span>
+                  <span class="keywords-text ellipsis match-way-value">按标题匹配</span>
                   <span class="iconfont icon-arrow"></span>
                 </span>
               </div>
@@ -327,7 +327,28 @@
           </div>
         </div> -->
       </div>
-
+      <!-- 匹配方式 -->
+      <div class="match-keywords-actionsheet">
+        <div class="weui-mask" id="iosMask" style="opacity: 1;display: none;"></div>
+        <div class="weui-actionsheet" id="iosActionsheet">
+            <div class="weui-actionsheet__title">
+                <p class="weui-actionsheet__title-text">关键词匹配方式</p>
+                <i class="weui-icon-clear" id="iosActionsheetCancel" ></i>
+            </div>
+            <div class="weui-actionsheet__menu">
+                <div class="weui-actionsheet__cell">
+                  <p class="cell_title">按标题匹配</p>
+                </div>
+                <div class="weui-actionsheet__cell">
+                  <p class="cell_title">按全文匹配</p>
+                  <p class="small-title">会产生无效信息,请根据需要选择</p>
+                </div>
+            </div>
+            <!-- <div class="weui-actionsheet__action">
+                <div class="weui-actionsheet__cell" id="iosActionsheetCancel">取消</div>
+            </div> -->
+        </div>
+      </div>
       <!-- 计费清单picker -->
       <div class="billing-list-container p13" style="display: none;">
         <div class="weui-mask weui-animate-fade-in"></div>
@@ -561,11 +582,17 @@
             window.location.reload();
           }
         });
+        var live20200707 = {
+          startTime: {{.T.liveActiveStartTime}},
+          endTime: {{.T.liveActiveEndTime}},
+          activeDiscount: {{.T.activeDiscount}}
+        }
+        console.log({{not .T.isLiveActive}})
       </script>
       <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/UpgradePrice.js?v={{Msg "seo" "version"}}">
       </script>
       <script
-        src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/vip_index_new.js?v={{Msg "seo" "version"}}4">
+        src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/js/vip_index_new.js?v={{Msg "seo" "version"}}">
       </script>
     </div>
 

+ 124 - 150
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_introduce.html

@@ -5,182 +5,156 @@
     <meta name="viewport"
           content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
-    <title>VIP订阅</title>
+    <title>超级订阅</title>
     <meta name="apple-mobile-web-app-capable" content="yes">
     <meta name="apple-mobile-web-app-status-bar-style" content="black">
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/rem.js"></script>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/vip_introduce.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/vip_introduce.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/appbutton.css?v={{Msg "seo" "version"}}"/>
 </head>
 <body>
-<div class="app-layout-header jy-app-header">
-    <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
-    VIP订阅
-<span></span></div>
-<div class="app-layout-content-b">
-	<div class="vip_introduce">
+<div class="j-container">
+    <div class="j-header jy-app-header transparent-header">
+      <span class="app-back jyapp-icon jyapp-icon-zuojiantou header-left"></span>
+      <span class="header-title">超级订阅</span>
+      <span class="header-right hide"></span>
+    </div>
+    <div class="j-main vip_introduce">
         <div class="main">
-            <div class="banner">
-                <div class="banner_screen">
-                    <h3 class="name">VIP 订阅专属服务</h3>
-                    <p class="introduce">VIP subscription service</p>
+            <div class="banner power group">
+                <div class="group-title">
+                    <span class="title-text line-title">超级订阅服务特权</span>
+                    <span class="title-bg-text">DINGYUEFUWU</span>
                 </div>
-                <div class="banner_screen live">
-                    <h3 class="title name">VIP订阅限时6折</h3>
-                    <h3 class="title name">全年仅此一次</h3>
-                    <p class="sub-title">抢购时间:7月7日 20:00 - 14日 20:00</p>
+                <div class="group-content grid">
+                    <span class="grid-item">
+                        <span class="circle-icon circle-icon-1"></span>
+                        <p class="item-desc">最多 300 组关键词</p>
+                    </span>
+                    <span class="grid-item">
+                        <span class="circle-icon circle-icon-2"></span>
+                        <p class="item-desc">每天最多接收 2000 条</p>
+                    </span>
+                    <span class="grid-item">
+                        <span class="circle-icon circle-icon-3"></span>
+                        <p class="item-desc">数据周报、月报</p>
+                    </span>
+                    <span class="grid-item">
+                        <span class="circle-icon circle-icon-4"></span>
+                        <p class="item-desc">订阅区域精确到市</p>
+                    </span>
                 </div>
             </div>
-            <div class="group">
-                <div class="group_title">
-                    <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/group_title.png?v={{Msg "seo" "version"}}" alt="">
-                    <span>VIP订阅服务特权</span>
-                    <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/group_title.png?v={{Msg "seo" "version"}}" class="pic_mark"
-                         alt="">
+            <div class="comparison group">
+                <div class="group-title">
+                    <span class="title-text line-title">整体服务对比</span>
+                    <span class="title-bg-text">FUWUDUIBI</span>
                 </div>
-                <div class="group_cont">
-                    <div class="grid">
-                        <div class="grid_item">
-                            <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/group_1.png?v={{Msg "seo" "version"}}" alt="">
-                            <p>最多 300 组关键词</p>
+                <div class="group-content">
+                    <div class="table">
+                        <div class="c-thead row">
+                            <span class="free column column-l">免费版</span>
+                            <span class="prop column column-r color-deep-gold">超级订阅专属服务</span>
                         </div>
-                        <div class="grid_item">
-                            <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/group_2.png?v={{Msg "seo" "version"}}" alt="">
-                            <p>每天最多接收 2000 条</p>
-                        </div>
-                        <div class="grid_item">
-                            <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/group_3.png?v={{Msg "seo" "version"}}" alt="">
-                            <p>数据周报、月报</p>
-                        </div>
-                        <div class="grid_item">
-                            <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/group_4.png?v={{Msg "seo" "version"}}" alt="">
-                            <p>订阅区域精确到市</p>
+                        <div class="c-tbody">
+                            <div class="row">
+                                <span class="column column-l">匹配单次公告信息</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">匹配项目信息</p>
+                                    <p class="col-bd">根据你的订阅,为你推送所匹配项目后续的全部动态</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">-</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">按行业订阅</p>
+                                    <p class="col-bd">不知道如何设置关键词的时候,也可以按行业订阅</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">-</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">中标企业联系方式</p>
+                                    <p class="col-bd">招标公告与国家企业公式2种提取模式,让你直击企业</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">最多10组关键词</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">最多300组关键词</p>
+                                    <p class="col-bd">更多关键词,招标信息更全面</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">仅支持标题匹配</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">支持标题匹配+全文匹配</p>
+                                    <p class="col-bd">关键词匹配标题或全文 任你选</p>
+                                </span>
+                            </div>
+                            <div class="row">
+                                <span class="column column-l">订阅区域精确到省</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">订阅区域精确到市</p>
+                                    <p class="col-bd">只看你最关注的招标信息</p>
+                                </span>
+                            </div>
+                            <!-- <div class="row">
+                                <span class="column column-l">-</span>
+                                <span class="column column-r">
+                                    <p class="col-hd">数据周报、月报</p>
+                                    <p class="col-bd">每周、每月推送你的订阅数据统计报告,帮助你全面掌握行业市场动态</p>
+                                </span>
+                            </div> -->
                         </div>
                     </div>
                 </div>
             </div>
-            <div class="group">
-                <div class="group_title">
-                    <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/group_title.png?v={{Msg "seo" "version"}}" alt="">
-                    <span>整体服务对比</span>
-                    <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/group_title.png?v={{Msg "seo" "version"}}" class="pic_mark"
-                         alt="">
-                </div>
-                <div class="group_cont">
-                    <table class="table" cellpadding="0" cellspacing="0">
-                        <thead>
-                        <tr>
-                            <th class="free">免费版</th>
-                            <th class="prop">VIP订阅专属服务</th>
-                        </tr>
-                        </thead>
-                        <tbody>
-                        <tr>
-                            <td>
-                                <p class="miantitle">匹配单次公告信息</p>
-                            </td>
-                            <td>
-                                <p class="miantitle">匹配项目信息</p>
-                                <p class="subtitle">根据你的订阅,为你推送所匹配项目后续的全部动态</p>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>
-                                <p class="miantitle">-</p>
-                            </td>
-                            <td>
-                                <p class="miantitle">按行业订阅</p>
-                                <p class="subtitle">不知道如何设置关键词的时候,也可以按行业订阅</p>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>
-                                <p class="miantitle">-</p>
-                            </td>
-                            <td>
-                                <p class="miantitle">中标企业联系方式</p>
-                                <p class="subtitle">招标公告与国家企业公式2种提取模式,让你直击企业</p>
-                            </td>  
-                        </tr>
-                        <tr>
-                            <td>
-                                <p class="miantitle">最多<em style="color: #2CB7CA">10</em>组关键词</p>
-                            </td>
-                            <td>
-                                <p class="miantitle">最多<em style="color: #2CB7CA">300</em>组关键词</p>
-                                <p class="subtitle">更多关键词,招标信息更全面</p>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>
-                                <p class="miantitle">仅支持标题匹配</p>
-                            </td>
-                            <td>
-                                <p class="miantitle">支持标题匹配+全文匹配</p>
-                                <p class="subtitle">关键词匹配标题或全文 任你选</p>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>
-                                <p class="miantitle">订阅区域精确到省</p>
-                            </td>
-                            <td>
-                                <p class="miantitle">订阅区域精确到市</p>
-                                <p class="subtitle">只看你最关注的招标信息</p>
-                            </td>
-                        </tr>
-                        <!--
-                        <tr>
-                            <td>
-                                <p class="miantitle">-</p>
-                            </td>
-                            <td>
-                                <p class="miantitle">数据周报、月报</p>
-                                <p class="subtitle">每周、每月推送你的订阅数据统计报告,帮助你全面掌握行业市场动态</p>
-                            </td>
-                        </tr>
-                        -->
-                        </tbody>
-                    </table>
-                </div>
-            </div>
         </div>
-        <div class="menu">
-            <!-- {{.T.notShowTrial}} -->
-            <!-- {{if not .T.notShowTrial }}
-            <div class="j-button-group">
-                <a onclick="window.location.replace('/jyapp/vipsubscribe/trialInfo')" class="try_btn j-button-cancel1">试用7天</a>
-                <a onclick="window.location.replace('/jyapp/vipsubscribe/vipsubscribe_new')" class="subscribe_btn j-button-confirm1">去订阅</a>
-            </div>
-             {{else}}
-            <div class="j-footer" style="width: 100%;">
-                <a onclick="window.location.replace('/jyapp/vipsubscribe/vipsubscribe_new')" class="subscribe_btn j-button">去订阅</a>
-            </div>
-            {{end}} -->
-            <script>
-              var phone = {{session "s_phone"}}
-              if(phone=="18613717801"){
-                document.write('<div style="color: #2CB7CA;border-top: 1px solid #ddd;font-size: .33rem;background-color: #fff;position: absolute;left: 0px;right: 0px;top: 0px;bottom: 0px;text-align: center;">详情请咨询<span style="font-size: .28rem;padding-left: 10px;">zhengkun@topnet.net.cn</span></div>');
-              }else{
-                var html = "";
-                {{if not .T.notShowTrial}}
-                  html += '<div class="j-button-group"><a onclick="window.location.replace(\'/jyapp/vipsubscribe/trialInfo\')" class="try_btn j-button-cancel1">试用7天</a><a onclick="window.location.replace(\'/jyapp/vipsubscribe/vipsubscribe_new\')" class="subscribe_btn j-button-confirm1">去订阅</a> </div>';
-                {{else}}
-                  html += '<div class="j-footer" style="width: 100%;"><a onclick="window.location.replace(\'/jyapp/vipsubscribe/vipsubscribe_new\')" class="subscribe_btn j-button">去订阅</a></div>';
-                {{end}}
-                document.write(html);
-              }
-            </script>
+    </div>
+    <div class="vip-footer-container">
+        <div class="vip-intro-footer">
+            {{if not .T.notShowTrial}}
+            <span class="vi-footer-l" id="vip-free-7days" onclick="window.location.replace('/jyapp/vipsubscribe/trialInfo')">
+                <span class="text">试用7天</span>
+            </span>
+            {{end}}
+            <span class="vi-footer-r" id="vip-introduce" onclick="window.location.replace('/jyapp/vipsubscribe/vipsubscribe_new')">
+                <span class="text">开通 超级订阅</span>
+            </span>
         </div>
     </div>
 </div>
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/jquery.min.js"></script>
 <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "mod_version"}}"></script>
+<script>
+    // 头部返回按钮事件
+    $('.j-header .header-left').on('click', function () {
+        window.history.back()
+    })
+
+    // 头部滚动事件
+    $('.j-main .main').on('scroll', function () {
+        var headerDOM = $('.j-header.jy-app-header')
+        var scrollTop = this.scrollTop
+
+        // 是否有header-transparent这个类名
+        var hasClassT = headerDOM.hasClass('transparent-header')
+
+        if(scrollTop >= 75) {
+            if (!hasClassT) return
+            headerDOM.removeClass('transparent-header')
+        }else {
+            if (hasClassT) return
+            headerDOM.addClass('transparent-header')
+        }
+    })
+</script>
+
 {{include "/common/baiducc.html"}}
 </body>
 </html>

+ 1 - 1
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_order_detail.html

@@ -52,7 +52,7 @@
 										<img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/vipBook.png?v=51430" alt="">
 									</div>
 									<div class="order-name">
-										<p class="o-name">VIP订阅</p>
+										<p class="o-name">超级订阅</p>
 										<p class="o-price price"></p>
 									</div>
 									<div class="origin-price-container">

+ 5 - 5
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_purchase.html

@@ -12,7 +12,7 @@
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
 	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/public_.css?v={{Msg "seo" "version"}}"/>
 	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/appbutton.css?v={{Msg "seo" "version"}}"/>
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/vip_purchase.css?v={{Msg "seo" "version"}}1">
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/vip_purchase.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
     <style>
@@ -131,9 +131,9 @@
                     -->
                     <div class="vip_prise_table">
                         <table class="monthly">
-                            <caption class="table_title">- VIP订阅价格 -</caption>
+                            <caption class="table_title b-line">超级订阅价格</caption>
                             <tr>
-                                <td colspan="2">按月购买</td>
+                                <td class="table-label" colspan="2">按月购买</td>
                             </tr>
                             <tr>
                                 <td><span>5.8</span>元 月/市/行业</td>
@@ -150,7 +150,7 @@
                         </table>
                         <table class="yearly">
                             <tr>
-                                <td colspan="2">按年购买</td>
+                                <td class="table-label" colspan="2">按年购买</td>
                             </tr>
                             <tr>
                                 <td><span>58</span>元 年/市/行业</td>
@@ -166,7 +166,7 @@
                             </tr>
                         </table>
                         <dl class="tips">
-                            <dt>购买须知</dt>
+                            <dt class="b-line">购买须知</dt>
                             <dd>套餐周期内,不支持套餐降级,续费可降级;</dd>
                             <dd>用户最多购买/续费3年套餐;</dd>
                             <dd>支持套餐升级,补差价(按月进行补差价,不足一个月按一个月计算)。</dd>

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

@@ -15,7 +15,7 @@
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}"/>
 	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/public_.css?v={{Msg "seo" "version"}}"/>
 	<link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/appbutton.css?v={{Msg "seo" "version"}}"/>
-    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/vip_renew.css?v={{Msg "seo" "version"}}1">
+    <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/css/vip_renew.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/layout.css"/>
     <link rel="stylesheet" type="text/css" href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
 	
@@ -49,7 +49,7 @@
 	{{end}}
         <div class="vip-header">
             <span class="header-left">提示:</span>
-            <span class="header-right">您的VIP订阅服务即将到期,为不影响您的使用。请立即续费</span>
+            <span class="header-right">您的超级订阅服务即将到期,为不影响您的使用。请立即续费</span>
         </div>
         <ul class="vip-body" style="padding: .16rem .24rem;">
             <li class="body-item area">
@@ -174,7 +174,7 @@
                     <table class="monthly">
                         <div class="table_title">
                             <div class="line"></div>
-                            <div class="title">VIP订阅价格</div>
+                            <div class="title">超级订阅价格</div>
                             <div class="line"></div>
                         </div>
                         <tr>

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

@@ -6,7 +6,7 @@
     <meta name="viewport"
         content="width=device-width, initial-scale=1.0,minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
-    <title>VIP订阅升级</title>
+    <title>超级订阅升级</title>
     <meta name="apple-mobile-web-app-capable" content="yes">
     <meta name="apple-mobile-web-app-status-bar-style" content="black">
     <script src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/local/rem.js"></script>
@@ -39,7 +39,7 @@
 <body class="no-touch">
 	<div class="app-layout-header jy-app-header">
         <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
-        VIP订阅升级
+        超级订阅升级
     <span></span></div>
     <div class="app-layout-content-b">
     <div class="vip_update">
@@ -81,7 +81,7 @@
                 <div class="vip_rules">
                     <div class="vip_prise_table">
                         <table class="monthly">
-                            <caption class="table_title">- VIP订阅价格 -</caption>
+                            <caption class="table_title">- 超级订阅价格 -</caption>
                             <tr>
                                 <td colspan="2">按月购买</td>
                             </tr>

+ 1 - 1
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_viewPage.html

@@ -1,7 +1,7 @@
 <html>
 <head>
 	{{include "/common/meta.html"}}
-	<title>VIP订阅结果预览</title>
+	<title>超级订阅结果预览</title>
 	{{include "/common/nnc.html"}}
 	<link href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/dropload.css?v={{Msg "seo" "version"}}" rel="stylesheet">
 	<link href="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/css/wxlist.css?v={{Msg "seo" "version"}}" rel="stylesheet">

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

@@ -374,7 +374,7 @@
             $.post("/jyapp/myinfo?t="+new Date().getTime(),null,function(r){
               if(r.userType=="vip"){
                 $(".switch").addClass("only-vip");
-                $(".switch").text("VIP订阅").show();
+                $(".switch").text("超级订阅").show();
                 $(".switch").click(tosetpage);
                 thisClass.InitVip(r);
 				        extend(1);
@@ -386,7 +386,7 @@
 				      },200)
 				$(".app-content").css("justify-content","flex-start");
 				$(".switch").addClass("only-personal");
-                $(".switch>span").text("免费试用 VIP");
+                $(".switch>span").text("免费试用 超级订阅");
                 $(".switch").click(tointroducepage);
                 $(".switch_ext").click(tointroducepage);
                 thisClass.InitPersonal(r);
@@ -965,7 +965,7 @@
       {{if and (not .T.isIosExam) (not .T.isIosExamPhone)}}
   		<div class="header_header" style="height: 60px;display:none;transition: all 0.1s;">
   			<div class="only-personal" style="position: absolute;top: .2rem;left: 4%;background-image: url(/jyapp/vipsubscribe/image/entback.png?v=51430);background-size: 100%;background-repeat: no-repeat;border-radius: 8px;width: 92%;display: flex;align-items: center;justify-content: space-between;height: 44px;">
-  				<img style="width: 20px;height: 20px; margin-left: .3rem;" src="/jyapp/vipsubscribe/image/Vector.png?t=1">
+  				<img style="width: 20px;height: 20px; margin-left: .3rem;" src="/jyapp/vipsubscribe/image/vip-icon.png?v=1">
   				<span style="color:#fff;font-weight: bold;font-size: 15px;text-align: left;width: 4.1rem;">300 组关键词特权</span>
   				<span class="switch_ext" id="app-historypush-vipSub-banner" style="border-radius: 32px;display: flex;flex-direction: row;padding: 3px 12px;font-size: 12px;color: #FAE7CA;margin-right: .2rem;background: linear-gradient(to bottom, #F1D090 0%, #FAE7CA 100%);color: #33323A;font-family: PingFang SC;font-size: 12px;line-height: 18px;letter-spacing: 0px;text-align: center;">免费试用</span>
   			</div>
@@ -1029,7 +1029,7 @@
             <div class="open_remind" style="display: none;">
                 <div class="remind_box">
                     <div class="remind_text">
-                        本次推送已达150条信息上限!开通VIP订阅,支持每天最多推送2000条信息
+                        本次推送已达150条信息上限!开通超级订阅,支持每天最多推送2000条信息
                     </div>
                     <a onclick="tointroducepage()" class="remind_btn" style="text-decoration: none;">了解详情</a>
                 </div>
@@ -1041,8 +1041,8 @@
             <div class="renew_toast" style="display: none;">
                 <div>
                     <i class="icon iconfont" id="close_renew">&#xe61a;</i>
-                    <span class="other">VIP订阅服务还有 <span class="isExpire"></span> 天到期,请及时续费!</span>
-                    <span class="today" style="display:none;">VIP订阅服务今天到期,请及时续费!</span>
+                    <span class="other">超级订阅服务还有 <span class="isExpire"></span> 天到期,请及时续费!</span>
+                    <span class="today" style="display:none;">超级订阅服务今天到期,请及时续费!</span>
                     <a onclick="torepay()">去续费</a>
                 </div>
             </div>
@@ -1050,8 +1050,8 @@
             <div class="_renew_toast" style="display: none;">
                 <div>
                     <i class="icon iconfont" id="_close_renew">&#xe61a;</i>
-                    <span class="other">VIP订阅服务还有 <span class="isExpire"></span> 天到期,请及时购买!</span>
-                    <span class="today" style="display:none;">VIP订阅服务今天到期,请及时购买!</span>
+                    <span class="other">超级订阅服务还有 <span class="isExpire"></span> 天到期,请及时购买!</span>
+                    <span class="today" style="display:none;">超级订阅服务今天到期,请及时购买!</span>
                     <a onclick="topay()">去购买</a>
                 </div>
             </div>
@@ -1059,7 +1059,7 @@
             <div class="nv_renew_toast" style="display: none;">
                 <div>
                     <i class="icon iconfont" id="nv_close_renew">&#xe61a;</i>
-                    <span>VIP订阅服务试用已过期,请及时购买!</span>
+                    <span>超级订阅服务试用已过期,请及时购买!</span>
                     <a onclick="topay()">去购买</a>
                 </div>
             </div>
@@ -1089,7 +1089,7 @@
     </div>
 </div>
 <!--弹窗 其他采购单位-->
-<div class="jy-alert jy-alert-other" style="display:none"> <div class="weui-mask weui-animate-fade-in"></div> <div class="weui-dialog weui-animate-fade-in">  <div class="weui-dialog__hd"><strong class="weui-dialog__title">提 示</strong></div>  <div class="weui-dialog__bd">每条信息的采购单位行业属性由机器自动识别,会存在少数无法识别的情况,此时将归类为“其它”。如无需订阅,可在VIP订阅设置内手动关闭。(注:当采购单位行业选择为全部时,关闭无效)</div> <div class="weui-dialog__ft">  <a href="javascript:;" onclick="close_other()" class="weui-dialog__btn weui-dialog__btn_">我知道了</a>  </div> </div> </div>
+<div class="jy-alert jy-alert-other" style="display:none"> <div class="weui-mask weui-animate-fade-in"></div> <div class="weui-dialog weui-animate-fade-in">  <div class="weui-dialog__hd"><strong class="weui-dialog__title">提 示</strong></div>  <div class="weui-dialog__bd">每条信息的采购单位行业属性由机器自动识别,会存在少数无法识别的情况,此时将归类为“其它”。如无需订阅,可在超级订阅设置内手动关闭。(注:当采购单位行业选择为全部时,关闭无效)</div> <div class="weui-dialog__ft">  <a href="javascript:;" onclick="close_other()" class="weui-dialog__btn weui-dialog__btn_">我知道了</a>  </div> </div> </div>
 <!-- 行业合并弹窗-->
 <div class="js_dialog merge" id="merge_dialog" style="display: none">
     <div class="weui-mask merge-dialog"></div>
@@ -1373,7 +1373,7 @@
             if(r.data.vip[0]&&r.data.vip[0]){
               //两个账户都为vip
               tipTime+=86400000*29  //如果是vip每月提示一次
-              showText='<em style="color:#2ABED1">手机号:'+r.data.phone+'、微信号:'+r.data.nickname+'</em><br> 且分别购买VIP订阅,账号暂时无法合并。您可等待任意账号下VIP订阅功能到期后,到剑鱼标讯“我的”中进行账号合并操作。</div>'
+              showText='<em style="color:#2ABED1">手机号:'+r.data.phone+'、微信号:'+r.data.nickname+'</em><br> 且分别购买超级订阅,账号暂时无法合并。您可等待任意账号下超级订阅功能到期后,到剑鱼标讯“我的”中进行账号合并操作。</div>'
               $(".dialog_alert .common_btn").text("确定");
             }
           }

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

@@ -167,7 +167,7 @@
 	            <p class="tips_text home_1" style="display: none;">设置订阅关键词,随时接收最新招标信息</p>
 	            <p class="tips_text home_2" style="display: none;">为了使您接收更多信息,可对关键词进行新增或修改。</p>
 	            <p class="tips_text home_3" style="display: none;">您未设置关键词,设置后接收信息更精准!</p>
-	            <p class="tips_text home_4" style="display: none;">免费试用VIP订阅,商机获取能力提升30倍</p>
+	            <p class="tips_text home_4" style="display: none;">免费试用超级订阅,商机获取能力提升30倍</p>
 	            <p class="tips_all" style="display: none;"><a class="GetAll">查看全部</a></p>
 	            <div class="tips_btn home_toset" style="display: none;">
 	                <a class="home_toset" id="wx-setting">去设置</a>
@@ -430,7 +430,7 @@
 								</li>
 								<li>
 									<div id="dqbtn" style="width:7em;position:relative;float:left;" data-value="拟建">拟建项目</div>
-									<div class="jy_sprite_main sprite_q-mark q-mark" style="float:left;"></div>
+									<div class="jy_sprite_main sprite_q-mark q-mark" style=""></div>
 <!--									<img style="float:left;" class="q-mark" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/wx/q-mark.png?v={{Msg "seo" "version"}}"/>-->
 									<button class="btn hidden" style="clear:both;">拟建</button>
 								</li>
@@ -552,7 +552,7 @@
 		<div class="resbm0">
 	        <div>
 	            <i class="icon iconfont" id="close_set">&#xe61a;</i>
-	            <span>如果您对以上结果满意可【直接订阅】{{if and (not .T.isIosExam) (not .T.isIosExamPhone)}}<br>更有VIP订阅等你试用。{{end}}</span>
+	            <span>如果您对以上结果满意可【直接订阅】{{if and (not .T.isIosExam) (not .T.isIosExamPhone)}}<br>更有超级订阅等你试用。{{end}}</span>
 	            <a id="zjdy" style="text-decoration: none;">直接订阅</a>
 	        </div>
 		</div>

+ 4 - 4
src/jfw/modules/app/src/web/templates/weixin/treasure_box.html

@@ -23,7 +23,7 @@
                 <div class="title vip">
                     <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/syzindex/treasure_vip.png?v={{Msg "seo" "version"}}" alt="">
                     <a>
-                        <h7>VIP订阅</h7>
+                        <h7>超级订阅</h7>
                         <p>更多招标信息,重要项目不遗漏</p>
                     </a>
                 </div>
@@ -90,14 +90,14 @@
 		$(function(){
 			var nowTimestamp= (new Date()).valueOf();
       $(".entniche>.title").on("click",function(){
-				window.location.href="/page_entniche/";		//vip订阅入口  试用或正式vip
+				window.location.href="/page_entniche/";		//超级订阅入口  试用或正式vip
 	    });
 			$(".vip").on("click",function(){
 				$.post("/subscribepay/orderListDetails/isVip?v="+nowTimestamp,{},function(data){
 					if (data.isvip){
-						window.location.href="/jyapp/vipsubscribe/toSubVipSetPage";		//vip订阅入口  试用或正式vip
+						window.location.href="/jyapp/vipsubscribe/toSubVipSetPage";		//超级订阅入口  试用或正式vip
 					}else{
-						window.location.href="/jyapp/vipsubscribe/introducePage";		//vip订阅入口  非vip
+						window.location.href="/jyapp/vipsubscribe/introducePage";		//超级订阅入口  非vip
 					}
 				})
 	    });

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

@@ -724,6 +724,9 @@ ul {
 .adv_tosieve{
   display: inline-block;
 }
+.content img{
+  width:100%;
+}
 </style>
 </head>
 <body>

+ 2 - 2
src/jfw/modules/app/src/web/templates/weixin/wxkeyset/index.html

@@ -763,7 +763,7 @@ function tointroducepage(){
 			<div class="box">
 				<div class="left">
 					<img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/v.png?v={{Msg "seo" "version"}}" alt="v">
-					<h4>剑鱼标讯 VIP订阅</h4>
+					<h4>剑鱼标讯 超级订阅</h4>
 				</div>
 				<a onclick="tointroducepage()" id="app-keyset-header-banner" class="right">了解详情 &gt; </a>
 			</div>
@@ -917,7 +917,7 @@ function tointroducepage(){
             <div class="remind_box">
 				<i class="icon iconfont" id="close_set"></i>
                 <div class="remind_text">
-                    10个关键词不够用?<br>开通VIP订阅,支持最多300个关键词
+                    10个关键词不够用?<br>开通超级订阅,支持最多300个关键词
                 </div>
                 <a onclick="tointroducepage()"  id="app-keyset-footer-banner" class="remind_btn">了解详情</a>
             </div>

+ 2 - 2
src/jfw/modules/app/src/web/templates/weixin/wxkeyset/index_zb.html

@@ -763,7 +763,7 @@ function tointroducepage(){
 			<div class="box">
 				<div class="left">
 					<img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/vipsubscribe/image/v.png?v={{Msg "seo" "version"}}" alt="v">
-					<h4>VIP订阅6折 仅一次</h4>
+					<h4>超级订阅6折 仅一次</h4>
 				</div>
 				<a onclick="window.location.href='/jyapp/active/livePage/index'" id="app-keyset-header-banner" class="right" style="border-radius: 32px;display: flex;flex-direction: row;padding: 3px 12px;font-size: 12px;color: #FAE7CA;margin-right: .2rem;background: linear-gradient(270deg, #F1D090 0%, #FAE7CA 100%);color: #33323A;font-family: PingFang SC;font-size: 12px;line-height: 18px;letter-spacing: 0px;text-align: center;">限时抢</a>
 			</div>
@@ -917,7 +917,7 @@ function tointroducepage(){
             <div class="remind_box">
 				<i class="icon iconfont" id="close_set"></i>
                 <div class="remind_text">
-                    10个关键词不够用?<br>开通VIP订阅,支持最多300个关键词
+                    10个关键词不够用?<br>开通超级订阅,支持最多300个关键词
                 </div>
                 <a onclick="tointroducepage()"  id="app-keyset-footer-banner" class="remind_btn">了解详情</a>
             </div>

+ 2 - 2
src/jfw/modules/pushsubscribe/src/push/job/nothingjob.go

@@ -85,7 +85,7 @@ func (n *NothingJob) StartPush(user []map[string]interface{}) {
 				timecycle := nopushinfo(i_ratemode)
 				isPushOk := putil.SendApp(map[string]interface{}{
 					"phoneType":      v["s_appponetype"],
-					"descript":       "亲爱的VIP订阅用户,",
+					"descript":       "亲爱的超级订阅用户,",
 					"descriptAppend": "根据您当前的订阅," + timecycle + "剑鱼标讯未能匹配到您需要的招标信息,请检查您的订阅是否需要进行优化,如需获取帮助,可点击“我的”页面内的使用帮助按钮,或者联系剑鱼标讯客服。",
 					"type":           "nothing",
 					"userId":         userid,
@@ -124,7 +124,7 @@ func (n *NothingJob) SendWeixin(s_m_openid string, i_ratemode int) bool {
 		time.Sleep(time.Duration(Config.WxSleep) * time.Millisecond)
 	}
 	//nothing_value := Config.WxTplMsg.Nothing.Value
-	nothing_value := "亲爱的VIP订阅用户,根据您当前的订阅," + nopushinfo(i_ratemode) + "剑鱼标讯未能匹配到您需要的招标信息,请检查您的订阅是否需要进行优化,如需获取帮助,可点击“我的”页面内的使用帮助按钮,或者联系剑鱼标讯客服。"
+	nothing_value := "亲爱的超级订阅用户,根据您当前的订阅," + nopushinfo(i_ratemode) + "剑鱼标讯未能匹配到您需要的招标信息,请检查您的订阅是否需要进行优化,如需获取帮助,可点击“我的”页面内的使用帮助按钮,或者联系剑鱼标讯客服。"
 	nothing_color := Config.WxTplMsg.Nothing.Color
 	keyword1_value := Config.WxTplMsg.Vip_keyword1.Value
 	keyword1_color := Config.WxTplMsg.Vip_keyword1.Color

+ 31 - 0
src/jfw/modules/subscribepay/src/service/dataExportPay_mobile.go

@@ -249,6 +249,22 @@ func (p *DataExportPayMobile) CreateOrder() {
 		})
 		if orderid == 0 {
 			return "", "", fmt.Sprintf("数据插入出错"), false
+		} else {
+			//保存结构化数据信息 记录
+			go func() {
+				if p.GetSession("Structed") != nil && p.GetSession("Structed").(bool) {
+					//姓名  手机号  邮箱
+					nickname, _ := p.GetSession("s_nickname").(string)
+					user_mail, _ := p.GetSession("DataExportVerifyEmail_val").(string)
+					user_phone, _ := p.GetSession("DataExportVerifyPhone").(string)
+					if user_phone == "" {
+						user_phone, _ = p.GetSession("DataExportVerifyPhone_val").(string)
+					}
+					util.StructedDataByExportData(nickname, user_mail, user_phone)
+					//清除存储标识
+					p.DelSession("Structed")
+				}
+			}()
 		}
 		return payStr, code, "", true
 	}()
@@ -504,6 +520,21 @@ func (p *DataExportPayMobile) WxSacnPay_CreateOrder() {
 				result["code"] = ordercode
 				result["token"] = entity.GetWaitPayToken(orderid, order_money, ordercode, pay_way, userId)
 				result["res"] = res
+				//保存结构化数据信息 记录
+				go func() {
+					if p.GetSession("Structed") != nil && p.GetSession("Structed").(bool) {
+						//姓名  手机号  邮箱
+						nickname, _ := p.GetSession("s_nickname").(string)
+						user_mail, _ := p.GetSession("DataExportVerifyEmail_val").(string)
+						user_phone, _ := p.GetSession("DataExportVerifyPhone").(string)
+						if user_phone == "" {
+							user_phone, _ = p.GetSession("DataExportVerifyPhone_val").(string)
+						}
+						util.StructedDataByExportData(nickname, user_mail, user_phone)
+						//清除存储标识
+						p.DelSession("Structed")
+					}
+				}()
 			}
 		} else {
 			log.Println("生成微信预支付交易单失败", ret)

+ 9 - 0
src/jfw/modules/subscribepay/src/service/dataExportPay_pc.go

@@ -373,6 +373,15 @@ func (p *DataExportPayPC) SacnPay_CreateOrder() {
 			}
 		}
 	}
+	//保存结构化数据信息 记录
+	go func(r map[string]interface{}) {
+		if r["status"] == "y" && p.GetSession("Structed") != nil && p.GetSession("Structed").(bool) {
+			//姓名  手机号  邮箱
+			util.StructedDataByExportData(nickname, user_mail, user_phone)
+			//清除存储标识
+			p.DelSession("Structed")
+		}
+	}(result)
 	p.ServeJson(result)
 }
 

+ 36 - 0
src/jfw/modules/subscribepay/src/util/structed.go

@@ -0,0 +1,36 @@
+package util
+
+import (
+	"fmt"
+	"time"
+)
+
+func StructedDataByExportData(nickname, user_mail, user_phone string) {
+	if user_mail != "" && user_phone != "" {
+		count := Mysql.Count("structed_data", map[string]interface{}{
+			"name":  nickname,
+			"phone": user_phone,
+			"email": user_mail,
+			"type":  2,
+		})
+		if count >= 1 {
+			fmt.Println("用户信息已存在")
+		} else {
+			stu := Mysql.Insert("structed_data", map[string]interface{}{
+				"name":        nickname,
+				"phone":       user_phone,
+				"email":       user_mail,
+				"submit_time": time.Now().Unix(),
+				"status":      0,
+				"type":        2, //用户来源,0:联系客服,1:免费样例,2:自选购买
+			})
+			if stu == 0 {
+				fmt.Println("数据库操作异常")
+			} else {
+				fmt.Println("保存成功")
+			}
+		}
+	} else {
+		fmt.Println(nickname, "---", user_mail, "---", user_phone)
+	}
+}

+ 10 - 0
src/jfw/public/public.go

@@ -224,3 +224,13 @@ func MapArrSortMerge(arr1, arr2 []map[string]interface{}, mergeFiled, sortFiled
 	// }
 	// return &tmp
 }
+
+func isPhone(value string) bool {
+	var phonePattern = regexp.MustCompile("^[1][3-9][0-9]{9}$")
+	return phonePattern.MatchString(value)
+}
+
+func isEmail(value string) bool {
+	var emailPattern = regexp.MustCompile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$")
+	return emailPattern.MatchString(value)
+}

+ 53 - 0
src/jfw/public/structed.go

@@ -0,0 +1,53 @@
+package public
+
+import (
+	"fmt"
+	"jfw/config"
+	"log"
+	"qfw/util/mail"
+	"time"
+)
+
+func SendStructedDataByEmail(email string, auth []*mail.GmailAuth) bool {
+	var uploadAddress = config.Sysconfig["webdomain"].(string) + config.Seoconfig["structedUploadA"].(string)
+	var imagesAddress = config.Sysconfig["webdomain"].(string) + "/structuredata/mobile/image/emaillogo.png"
+	var feedbackAddress = "mailto:bd@topnet.net.cn"
+
+	if isEmail(email) {
+		html := fmt.Sprintf(`<div style="width:100%%;display: flex;justify-content: center;">
+		<div class="Email" id="Email" style="max-width:100%%;min-height: 540px;display: flex;flex-direction: column;align-items: center;">
+        <div class="emailmain" style="border: 1px solid #ccc;max-width:100%%;height: 319px;border-top: 8px solid #2CB7CA;border-radius: 8px;background: #fff;margin: 0 auto; margin-top: 107px;padding: 0px 40px 20px;">
+            <div class="emailmain_top" style="height: 88px;max-width:100%%;border-bottom: 1px solid #F7F7F7;display: flex;justify-content: center;align-items: center;">
+                <img src="%s" alt="" style="width: 120px;height: 32px;">
+            </div>
+            <div class="emailmain_bottom" style="display: flex;flex-direction: column;align-items: center;">
+                <p class="emailmain_text" style="margin-top: 32px;width: 100%%;min-height: 72px;font-size: 16px;line-height: 24px;color: #1D1D1D;">
+                    尊敬的剑鱼标讯用户:<br> 您好,感谢您使用剑鱼标讯的结构化招标数据产品,免费样例已发送到您的邮箱,请查收!如有问题,可拨打<span style="color: #0987FF;cursor: pointer;">400-108-6670</span>,客服人员将诚挚为您服务。
+                </p>
+                <div class="download" style="margin-top: 32px; max-width:100%%; height: 30px;display: flex;justify-content: center;align-items: center;">
+                    <a href="%s" class="download_btn" style="width: 116px;height: 30px;display: flex;text-decoration: none;justify-content: center;align-items: center;font-size: 14px;line-height: 24px;color: #fff;background: #2CB7CA;border-radius: 4px;">下载免费样例 </a>
+                </div>
+            </div>
+        </div>
+        <p class="havapro" style="font-size: 14px;height: 24px;color: #686868;margin-top: 32px;">
+            如有问题请<a href="%s" class="click_here"  id="click_here" style="color: #0987FF;cursor: pointer;">点击此处</a>,进行意见反馈
+        </p>
+    </div></div>`, imagesAddress, uploadAddress, feedbackAddress)
+
+		for k, v := range auth {
+			if mail.GSendMail("剑鱼标讯", email, "", "", "【剑鱼标讯】结构化招标数据", html, "", "", v) {
+				log.Println(email, fmt.Sprintf("使用%s发送邮件成功", v.User))
+				return true
+			}
+			if k < len(auth)-1 {
+				log.Println(email, fmt.Sprintf("使用%s发送邮件失败!3s后使用其他邮箱尝试", v.User))
+			} else {
+				log.Println(email, fmt.Sprintf("使用%s发送邮件失败!", v.User))
+			}
+			time.Sleep(time.Second * 3)
+		}
+	} else {
+		log.Println(fmt.Sprintf("%s 邮件格式有误", email))
+	}
+	return false
+}

+ 2 - 1
src/seo.json

@@ -478,5 +478,6 @@
         "downloadUrl_win": "http://w2blmjy.qmx.top/res/JianYu for Windows.exe",
         "downloadUrl_mac": "http://w2blmjy.qmx.top/res/JianYu for Mac.dmg"
     },
-	"orderCountdown":"72h"
+	"orderCountdown":"72h",
+	"structedUploadA":"/structuredata/file/【剑鱼标讯】结构化招标数据.xlsx"
 }

+ 15 - 0
src/web/staticres/css/dataService.css

@@ -362,3 +362,18 @@
 	left: 110px;
 	top: 175px;
 }
+/*v2.10.10*/
+.dataCustom .dataC{
+	margin-left: 30px;
+    margin-top: 15px;
+}
+.dataCustom .dataC p{
+	    width: 323px;
+    height: 154px;
+    font-size: 16px;
+    font-family: "Microsoft YaHei",sans-serif;
+    font-weight: 400;
+    line-height: 24px;
+    color: rgba(102, 102, 102, 1);
+    opacity: 1;
+}

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

@@ -70,7 +70,7 @@
 .subscription .sub-center .sub-vip {
     width: 402px;
     height: 250px;
-    background: url('/images/subscribe/vip.png') no-repeat;
+    background: url(/vipsubscribe/image/vip-icon.png) no-repeat;
     background-position-x: center;
     /* margin-left: 54px; */
 }

+ 2 - 2
src/web/staticres/js/public-nav.js

@@ -9,7 +9,7 @@ $(function () {
 		    $thisWidth = $(this).width(),
 		    //当前宽度
 		$thisIndex = $(this).index();
-		if((typeof(myPageNavIsNormal)!="undefined"&&myPageNavIsNormal==true)||$href.indexOf("supsearch")>-1||$href.indexOf("bidsearchforent")>-1||$href.indexOf("promotional/topics")>-1||$href.indexOf("list")>-1||$href.indexOf("article/content")>-1||$href.indexOf("article/bdprivate")>-1||$href.indexOf("article/mailprivate")>-1||$href.indexOf("article/bdcontent")>-1||$href.indexOf("/jypc/toPushView")>-1||$href.indexOf("/jyblog")>-1||$href.indexOf("/dataExport")>-1||$href.indexOf("/front/dataService.html")>-1||$href.indexOf("/front/course")>-1||$href.indexOf("/front/dataexport")>-1||$href.indexOf("/orderPay")>-1){
+		if((typeof(myPageNavIsNormal)!="undefined"&&myPageNavIsNormal==true)||$href.indexOf("supsearch")>-1||$href.indexOf("bidsearchforent")>-1||$href.indexOf("promotional/topics")>-1||$href.indexOf("list")>-1||$href.indexOf("article/content")>-1||$href.indexOf("article/bdprivate")>-1||$href.indexOf("article/mailprivate")>-1||$href.indexOf("article/bdcontent")>-1||$href.indexOf("/jypc/toPushView")>-1||$href.indexOf("/jyblog")>-1||$href.indexOf("/dataExport")>-1||$href.indexOf("/front/dataService.html")>-1||$href.indexOf("/front/course")>-1||$href.indexOf("/front/dataexport")>-1||$href.indexOf("/orderPay")>-1||$href.indexOf("structed/")>-1){
             $navLi.find("a:not(.link)").css({"color":"#252627"});
 		}else{
 			$navLi.find("a:not(.link)").css({"color":"#fff"});
@@ -54,7 +54,7 @@ function seclectNavLi(el, $index) {
 	var $slider = $(".public-nav .jynav .slider");
 	/*获取当前这个元素的css*/
 	var $thisCss = el.eq($index).width();
-	if((typeof(myPageNavIsNormal)!="undefined"&&myPageNavIsNormal==true)||$href.indexOf("supsearch")>-1||$href.indexOf("bidsearchforent")>-1||$href.indexOf("promotional/topics")>-1||$href.indexOf("list")>-1||$href.indexOf("article/content")>-1||$href.indexOf("article/bdprivate")>-1||$href.indexOf("article/mailprivate")>-1||$href.indexOf("article/bdcontent")>-1||$href.indexOf("/jyblog")>-1||$href.indexOf("/dataExport")>-1||$href.indexOf("/front/dataService.html")>-1||$href.indexOf("/front/course")>-1||$href.indexOf("/front/dataexport")>-1||$href.indexOf("/orderPay")>-1){
+	if((typeof(myPageNavIsNormal)!="undefined"&&myPageNavIsNormal==true)||$href.indexOf("supsearch")>-1||$href.indexOf("bidsearchforent")>-1||$href.indexOf("promotional/topics")>-1||$href.indexOf("list")>-1||$href.indexOf("article/content")>-1||$href.indexOf("article/bdprivate")>-1||$href.indexOf("article/mailprivate")>-1||$href.indexOf("article/bdcontent")>-1||$href.indexOf("/jyblog")>-1||$href.indexOf("/dataExport")>-1||$href.indexOf("/front/dataService.html")>-1||$href.indexOf("/front/course")>-1||$href.indexOf("/front/dataexport")>-1||$href.indexOf("/orderPay")>-1||$href.indexOf("structed/")>-1){
         el.find("a:not(.link)").css({"color":"#252627"});
 	}else{
 		el.find("a:not(.link)").css({"color":"#fff"});

+ 0 - 162
src/web/staticres/structuredata/css/write_infor.css

@@ -1,162 +0,0 @@
-body, html {
-  width: 100%;
-  height: 100%;
-}
-
-input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
-  color: #C0C4CC;
-  font-size: .32rem;
-  line-height: .48rem;
-}
-
-#writeInfo {
-  width: 100%;
-  height: 100%;
-}
-
-#writeInfo .infoMain {
-  width: 100%;
-  height: 100%;
-}
-
-#writeInfo .infoMain .info_tip {
-  overflow: hidden;
-  width: 100%;
-  height: 3.6rem;
-  background: url("../image/bg_info.png");
-  background-size: 100% 100%;
-}
-
-#writeInfo .infoMain .info_tip .tip_text {
-  margin-top: 1.04rem;
-  padding: 0 .32rem;
-  width: 100%;
-  height: .48rem;
-  font-size: .32rem;
-  color: #fff;
-}
-
-#writeInfo .infoMain .write_input {
-  width: 100%;
-  padding: 0 .24rem;
-  margin-top: -1.04rem;
-}
-
-#writeInfo .infoMain .write_input .write_con {
-  width: 100%;
-  background: #fff;
-  border-radius: 8px;
-  margin-top: .08rem;
-  overflow: hidden;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_name {
-  width: 100%;
-  padding: 0 .32rem;
-  margin-top: .08rem;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt {
-  width: 100%;
-  height: 1.08rem;
-  display: flex;
-  align-items: center;
-  box-shadow: inset 0px -0.5px 0px rgba(0, 0, 0, 0.05), inset 16px 0px 0px #FFFFFF;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt .label_name {
-  display: flex;
-  align-items: center;
-  width: 1.6rem;
-  height: .48rem;
-  text-align: left;
-  font-size: .3rem;
-  color: #5F5E64;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt .ipt_name {
-  height: .48rem;
-  display: flex;
-  align-items: center;
-  padding-top: .08rem;
-  font-size: .32rem;
-  color: #171826;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_phone {
-  width: 100%;
-  display: flex;
-  flex-direction: column;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt {
-  width: 100%;
-  height: 1.08rem;
-  display: flex;
-  align-items: center;
-  padding: 0 .32rem;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .label_phone {
-  display: flex;
-  align-items: center;
-  width: 1.6rem;
-  height: .48rem;
-  text-align: left;
-  font-size: .3rem;
-  color: #5F5E64;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_phone {
-  height: .48rem;
-  display: flex;
-  align-items: center;
-  padding-top: .08rem;
-  font-size: .32rem;
-  color: #171826;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips {
-  margin-bottom: .26rem;
-  display: flex;
-  width: 100%;
-  height: .36rem;
-  padding: 0 .32rem;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips .label_tips {
-  display: flex;
-  width: 1.6rem;
-  height: .48rem;
-}
-
-#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips .phone_rule {
-  height: 100%;
-  font-size: .24rem;
-  color: #FB483D;
-}
-
-#writeInfo .infoMain .run_button {
-  margin-top: .6rem;
-  width: 100%;
-  height: .92rem;
-  padding: 0 .32rem;
-}
-
-#writeInfo .infoMain .run_button .write_run {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  width: 100%;
-  height: 100%;
-  background: #2ABED1;
-  border-radius: .16rem;
-  color: #fff;
-  font-size: .36rem;
-}
-
-#writeInfo .infoMain .run_button .write_run:disabled {
-  background: #87DFEA;
-  color: #FFFFFF;
-  opacity: 0.65;
-}

BIN
src/web/staticres/structuredata/file/【剑鱼标讯】结构化招标数据.xlsx


+ 0 - 0
src/web/staticres/structuredata/css/base.css → src/web/staticres/structuredata/mobile/css/base.css


+ 0 - 0
src/web/staticres/structuredata/css/data_example.css → src/web/staticres/structuredata/mobile/css/data_example.css


+ 47 - 35
src/web/staticres/structuredata/css/marketing.css → src/web/staticres/structuredata/mobile/css/marketing.css

@@ -5,7 +5,7 @@ html {
 }
 
 body {
-  background: #2F96F4;
+  background: #2f96f4;
 }
 
 #app {
@@ -16,18 +16,6 @@ body {
   position: relative;
 }
 
-#app .jy-app-header {
-  position: absolute;
-  background: transparent;
-}
-
-#app .jy-app-header .fanhui {
-  width: 0.96rem;
-  height: 0.96rem;
-  font-size: 0.36rem;
-  color: #fff;
-}
-
 #app .j-main {
   width: 100%;
   height: 100%;
@@ -131,7 +119,7 @@ body {
   width: 100%;
   height: 0.36rem;
   font-size: 0.24rem;
-  color: #C0C4CC;
+  color: #c0c4cc;
   line-height: 0.36rem;
 }
 
@@ -167,7 +155,7 @@ body {
   background: rgba(47, 150, 244, 0.04);
   font-size: 0.3rem;
   font-weight: bold;
-  color: #2F96F4;
+  color: #2f96f4;
 }
 
 #app .j-main .str_what .str_content .data_mode .data_mode_content {
@@ -217,8 +205,8 @@ body {
   border-radius: 8px 24px 0px 0px;
   background: rgba(47, 150, 244, 0.04);
   font-size: 0.3rem;
+  color: #2f96f4;
   font-weight: bold;
-  color: #2F96F4;
 }
 
 #app .j-main .str_what .str_content .message .message_page {
@@ -235,7 +223,7 @@ body {
   height: 2.88rem;
   font-size: 0.24rem;
   line-height: .36rem;
-  color: #5F5E64;
+  color: #5f5e64;
 }
 
 #app .j-main .str_what .str_content .message .message_page .click_view {
@@ -245,11 +233,11 @@ body {
   width: 2.6rem;
   height: 0.6rem;
   border-radius: .32rem;
-  border: 1px solid #2F96F4;
+  border: 1px solid #2f96f4;
   box-sizing: border-box;
   margin-top: 0.4rem;
   font-size: 0.26rem;
-  color: #2F96F4;
+  color: #2f96f4;
 }
 
 #app .j-main .advantage {
@@ -452,7 +440,7 @@ body {
   height: auto;
   padding-left: .72rem;
   font-size: .24rem;
-  color: #5F5E64;
+  color: #5f5e64;
 }
 
 #app .j-main .company {
@@ -511,29 +499,23 @@ body {
 
 #app .j-button-group {
   display: flex;
-  justify-content: space-between;
   align-items: center;
+  justify-content: space-between;
   width: 100%;
-  height: 1.12rem;
+  height: 1.32rem;
   padding: 0.16rem 0.32rem 0.16rem;
   background-color: #fff;
 }
 
-#app .j-button-group .j-button-confirm,
 #app .j-button-group .j-button-cancel {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  width: 48%;
-  height: 0.8rem;
-  font-size: 0.32rem;
-  text-align: center;
-  border-radius: 0.16rem;
+  height: .8rem;
+  background: #EDEFF2;
+  color: #171826;
 }
 
-#app .j-button-group .j-button-cancel {
-  background: #EDEFF2;
-  color: #5F5E64;
+#app .j-button-group .j-button-cancel .phone_num {
+  font-size: .28rem;
+  color: #5f5e64;
 }
 
 #app .j-button-group .j-button-cancel .phone_icon {
@@ -546,10 +528,40 @@ body {
 }
 
 #app .j-button-group .j-button-confirm {
-  background: #2ABED1;
+  height: .8rem;
+  background: #2abed1;
   color: #fff;
 }
 
+.jy-app-header.header-transparent {
+  position: absolute;
+  width: 100%;
+  background: transparent;
+  z-index: 999;
+}
+
+.jy-app-header.header-transparent .subreport_title {
+  font-size: 0;
+}
+
+.jy-app-header.header-transparent .fanhui {
+  width: 0.96rem;
+  height: 0.96rem;
+  font-size: 0.36rem;
+  color: #fff;
+}
+
+#app .j-button-group .j-button-confirm,
+#app .j-button-group .j-button-cancel {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 48%;
+  font-size: 0.32rem;
+  text-align: center;
+  border-radius: 0.16rem;
+}
+
 @keyframes ballRotate {
   0% {
     transform: rotate(0);

+ 0 - 0
src/web/staticres/structuredata/css/preview.css → src/web/staticres/structuredata/mobile/css/preview.css


+ 0 - 0
src/web/staticres/structuredata/css/weui.min.css → src/web/staticres/structuredata/mobile/css/weui.min.css


+ 271 - 0
src/web/staticres/structuredata/mobile/css/write_infor.css

@@ -0,0 +1,271 @@
+body, html {
+  width: 100%;
+  height: 100%;
+}
+
+input::-webkit-input-placeholder {
+  color: #C0C4CC;
+  font-size: .32rem;
+}
+
+.weui-toast {
+  min-height: 2.6em;
+  line-height: 2.6em;
+  top: 6rem;
+}
+
+.weui-toast .weui-toast__content {
+  margin: 0;
+}
+
+.weui-icon_toast {
+  display: none;
+}
+
+.toast-lang .weui-toast {
+  width: auto;
+  padding: 0 .5rem;
+  left: 38%;
+}
+
+#writeInfo {
+  width: 100%;
+  height: 100%;
+}
+
+#writeInfo .weui-navbar {
+  height: .96rem;
+}
+
+#writeInfo .weui-navbar .weui-navbar__item {
+  font-size: .28rem;
+  color: #5F5E64;
+  padding: .24rem 0;
+}
+
+#writeInfo .weui-navbar .weui-navbar__item.weui-bar__item_on {
+  color: #2ABED1;
+}
+
+#writeInfo .weui-navbar .weui-navbar__item.weui-bar__item_on, #writeInfo .weui-navbar .weui-navbar__item:active {
+  background: #fff;
+}
+
+#writeInfo .weui-navbar .weui-navbar__item.weui-bar__item_on .showline, #writeInfo .weui-navbar .weui-navbar__item:active .showline {
+  margin-top: .16rem;
+  width: 100%;
+  height: .03rem;
+  display: flex;
+  justify-content: center;
+}
+
+#writeInfo .weui-navbar .weui-navbar__item.weui-bar__item_on .showline span, #writeInfo .weui-navbar .weui-navbar__item:active .showline span {
+  width: .48rem;
+  height: .03rem;
+  background: linear-gradient(270.45deg, #25BEEE 0.03%, #2ABED1 74.46%);
+  border-radius: 1px;
+}
+
+#writeInfo .weui-navbar .weui-navbar__item:after {
+  border-right: 0;
+}
+
+#writeInfo .infoMain, #writeInfo .purchase {
+  width: 100%;
+  height: 100%;
+}
+
+#writeInfo .infoMain .info_tip, #writeInfo .purchase .info_tip {
+  overflow: hidden;
+  width: 100%;
+  height: 3.6rem;
+  background: url("../image/bg_info.png");
+  background-size: 100% 100%;
+}
+
+#writeInfo .infoMain .info_tip .tip_text, #writeInfo .purchase .info_tip .tip_text {
+  margin-top: .64rem;
+  padding: 0 .32rem;
+  width: 100%;
+  height: .48rem;
+  font-size: .28rem;
+  color: #fff;
+}
+
+#writeInfo .infoMain .write_input, #writeInfo .purchase .write_input {
+  width: 100%;
+  padding: 0 .24rem;
+  margin-top: -1.04rem;
+}
+
+#writeInfo .infoMain .write_input .write_con, #writeInfo .purchase .write_input .write_con {
+  width: 100%;
+  background: #fff;
+  border-radius: 8px;
+  margin-top: .08rem;
+  overflow: hidden;
+  padding: 0 0 0 .32rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_name, #writeInfo .purchase .write_input .write_con .write_name {
+  width: 100%;
+  margin-top: .08rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt, #writeInfo .purchase .write_input .write_con .write_name .write_name_ipt {
+  width: 100%;
+  height: 1.08rem;
+  display: flex;
+  align-items: center;
+  line-height: 1.08rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt .label_name, #writeInfo .purchase .write_input .write_con .write_name .write_name_ipt .label_name {
+  display: flex;
+  align-items: center;
+  width: 1.6rem;
+  height: .48rem;
+  text-align: left;
+  font-size: .3rem;
+  color: #5F5E64;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_name .write_name_ipt .ipt_name, #writeInfo .purchase .write_input .write_con .write_name .write_name_ipt .ipt_name {
+  height: .48rem;
+  display: flex;
+  align-items: center;
+  padding-top: .08rem;
+  font-size: .32rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone, #writeInfo .infoMain .write_input .write_con .write_name, #writeInfo .infoMain .write_input .write_con .write_email, #writeInfo .infoMain .write_input .write_con .email_code, #writeInfo .purchase .write_input .write_con .write_phone, #writeInfo .purchase .write_input .write_con .write_email, #writeInfo .purchase .write_input .write_con .email_code {
+  width: 100%;
+  display: flex;
+  flex-direction: column;
+  box-shadow: inset 0px -0.5px 0px rgba(0, 0, 0, 0.05), inset 16px 0px 0px #FFFFFF;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt, #writeInfo .infoMain .write_input .write_con .write_name .write_phone_ipt, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt {
+  width: 100%;
+  height: 1.08rem;
+  display: flex;
+  align-items: center;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .label_phone, 
+#writeInfo .infoMain .write_input .write_con .write_name .write_phone_ipt .label_phone, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .label_phone, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .label_phone, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .label_phone, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .label_phone, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .label_phone {
+  display: flex;
+  align-items: center;
+  width: 1.6rem;
+  height: .48rem;
+  text-align: left;
+  font-size: .3rem;
+  color: #5F5E64;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_phone,
+#writeInfo .infoMain .write_input .write_con .write_name .write_phone_ipt .ipt_name,  #writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_email, #writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_code, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_phone, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_email, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_code, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .ipt_phone, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .ipt_email, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .ipt_phone, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .ipt_email, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .ipt_phone, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .ipt_email, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .ipt_phone, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .ipt_email, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .ipt_code {
+  height: .48rem;
+  display: flex;
+  align-items: center;
+  font-size: .32rem;
+  line-height: .48rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_email{
+  width: 4.2rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .correct-icon{
+  background: url('../image/correct-icon-mobile.png') no-repeat;
+  background-size: .48rem .48rem;
+  width: .48rem;
+  height: .48rem;
+  /* margin-left: 0.6rem; */
+  display: none;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_code, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_code, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .ipt_code, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .ipt_code {
+  width: 3.5rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone .write_phone_ipt .ipt_email:disabled, #writeInfo .infoMain .write_input .write_con .write_email .write_phone_ipt .ipt_email:disabled, #writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .ipt_email:disabled, #writeInfo .purchase .write_input .write_con .write_phone .write_phone_ipt .ipt_email:disabled, #writeInfo .purchase .write_input .write_con .write_email .write_phone_ipt .ipt_email:disabled, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .ipt_email:disabled {
+  background: #fff;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips, #writeInfo .infoMain .write_input .write_con .write_phone .kf_phone_tips, #writeInfo .infoMain .write_input .write_con .write_name .name_tips, #writeInfo .infoMain .write_input .write_con .write_name .kf_name_tips, #writeInfo .infoMain .write_input .write_con .write_phone .email_tips, #writeInfo .infoMain .write_input .write_con .write_email .phone_tips, #writeInfo .infoMain .write_input .write_con .write_email .email_tips, #writeInfo .infoMain .write_input .write_con .email_code .phone_tips, #writeInfo .infoMain .write_input .write_con .email_code .email_tips, #writeInfo .purchase .write_input .write_con .write_phone .phone_tips, #writeInfo .purchase .write_input .write_con .write_phone .email_tips, #writeInfo .purchase .write_input .write_con .write_email .phone_tips, #writeInfo .purchase .write_input .write_con .write_email .email_tips, #writeInfo .purchase .write_input .write_con .email_code .phone_tips, #writeInfo .purchase .write_input .write_con .email_code .email_tips {
+  margin-bottom: .24rem;
+  display: flex;
+  width: 100%;
+  height: .36rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips .label_tips,
+#writeInfo .infoMain .write_input .write_con .write_phone .kf_phone_tips .label_tips,
+#writeInfo .infoMain .write_input .write_con .write_name .name_tips .label_tips,
+#writeInfo .infoMain .write_input .write_con .write_name .kf_name_tips .label_tips, #writeInfo .infoMain .write_input .write_con .write_phone .email_tips .label_tips, #writeInfo .infoMain .write_input .write_con .write_email .phone_tips .label_tips, #writeInfo .infoMain .write_input .write_con .write_email .email_tips .label_tips, #writeInfo .infoMain .write_input .write_con .email_code .phone_tips .label_tips, #writeInfo .infoMain .write_input .write_con .email_code .email_tips .label_tips, #writeInfo .purchase .write_input .write_con .write_phone .phone_tips .label_tips, #writeInfo .purchase .write_input .write_con .write_phone .email_tips .label_tips, #writeInfo .purchase .write_input .write_con .write_email .phone_tips .label_tips, #writeInfo .purchase .write_input .write_con .write_email .email_tips .label_tips, #writeInfo .purchase .write_input .write_con .email_code .phone_tips .label_tips, #writeInfo .purchase .write_input .write_con .email_code .email_tips .label_tips {
+  display: flex;
+  width: 1.6rem;
+  height: .48rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .write_phone .phone_tips .phone_rule, 
+#writeInfo .infoMain .write_input .write_con .write_phone .kf_phone_tips .phone_rule, 
+#writeInfo .infoMain .write_input .write_con .write_name .name_tips .phone_rule, 
+#writeInfo .infoMain .write_input .write_con .write_name .kf_name_tips .phone_rule, #writeInfo .infoMain .write_input .write_con .write_phone .email_tips .phone_rule, #writeInfo .infoMain .write_input .write_con .write_email .phone_tips .phone_rule, #writeInfo .infoMain .write_input .write_con .write_email .email_tips .phone_rule, #writeInfo .infoMain .write_input .write_con .email_code .phone_tips .phone_rule, #writeInfo .infoMain .write_input .write_con .email_code .email_tips .phone_rule, #writeInfo .purchase .write_input .write_con .write_phone .phone_tips .phone_rule, #writeInfo .purchase .write_input .write_con .write_phone .email_tips .phone_rule, #writeInfo .purchase .write_input .write_con .write_email .phone_tips .phone_rule, #writeInfo .purchase .write_input .write_con .write_email .email_tips .phone_rule, #writeInfo .purchase .write_input .write_con .email_code .phone_tips .phone_rule, #writeInfo .purchase .write_input .write_con .email_code .email_tips .phone_rule {
+  height: 100%;
+  font-size: .24rem;
+  color: #FB483D;
+}
+
+#writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .label_phone, 
+#writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .label_phone {
+  font-size: .28rem;
+}
+
+#writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .sendEmail, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .sendEmail {
+  font-size: .28rem;
+  color: #9B9CA3;
+}
+
+#writeInfo .infoMain .write_input .write_con .email_code .write_phone_ipt .timedown, #writeInfo .purchase .write_input .write_con .email_code .write_phone_ipt .timedown {
+  display: none;
+  font-size: .28rem;
+  text-align: center;
+  color: #C0C4CC;
+}
+
+#writeInfo .infoMain .option_purchase, #writeInfo .purchase .option_purchase {
+  padding: .64rem .64rem .36rem;
+  font-size: .28rem;
+  color: #171826;
+}
+
+#writeInfo .infoMain .run_button, #writeInfo .infoMain .free_button, #writeInfo .infoMain .run_now_button, #writeInfo .purchase .run_button, #writeInfo .purchase .free_button, #writeInfo .purchase .run_now_button {
+  margin-top: .6rem;
+  width: 100%;
+  height: .92rem;
+  padding: 0 .32rem;
+}
+
+#writeInfo .infoMain .run_button .write_run, #writeInfo .infoMain .run_button .write_free, #writeInfo .infoMain .run_button .write_run_now, #writeInfo .infoMain .free_button .write_run, #writeInfo .infoMain .free_button .write_free, #writeInfo .infoMain .free_button .write_run_now, #writeInfo .infoMain .run_now_button .write_run, #writeInfo .infoMain .run_now_button .write_free, #writeInfo .infoMain .run_now_button .write_run_now, #writeInfo .purchase .run_button .write_run, #writeInfo .purchase .run_button .write_free, #writeInfo .purchase .run_button .write_run_now, #writeInfo .purchase .free_button .write_run, #writeInfo .purchase .free_button .write_free, #writeInfo .purchase .free_button .write_run_now, #writeInfo .purchase .run_now_button .write_run, #writeInfo .purchase .run_now_button .write_free, #writeInfo .purchase .run_now_button .write_run_now {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 100%;
+  height: 100%;
+  background: #2ABED1;
+  border-radius: .16rem;
+  color: #fff;
+  font-size: .36rem;
+}
+
+#writeInfo .infoMain .run_button .write_run:disabled, #writeInfo .infoMain .run_button .write_free:disabled, #writeInfo .infoMain .free_button .write_run:disabled, #writeInfo .infoMain .free_button .write_free:disabled, #writeInfo .infoMain .run_now_button .write_run:disabled, #writeInfo .infoMain .run_now_button .write_free:disabled, #writeInfo .purchase .run_button .write_run:disabled, #writeInfo .purchase .run_button .write_free:disabled, #writeInfo .purchase .free_button .write_run:disabled, #writeInfo .purchase .free_button .write_free:disabled, #writeInfo .purchase .run_now_button .write_run:disabled, #writeInfo .purchase .run_now_button .write_free:disabled {
+  background: #87DFEA;
+  color: #FFFFFF;
+  opacity: 0.65;
+}
+
+#writeInfo .purchase {
+  background: #fff;
+}

+ 0 - 0
src/web/staticres/structuredata/css/write_result.css → src/web/staticres/structuredata/mobile/css/write_result.css


+ 0 - 0
src/web/staticres/structuredata/iconfont/iconfont.css → src/web/staticres/structuredata/mobile/iconfont/iconfont.css


+ 0 - 0
src/web/staticres/structuredata/iconfont/iconfont.eot → src/web/staticres/structuredata/mobile/iconfont/iconfont.eot


+ 0 - 0
src/web/staticres/structuredata/iconfont/iconfont.ttf → src/web/staticres/structuredata/mobile/iconfont/iconfont.ttf


+ 0 - 0
src/web/staticres/structuredata/iconfont/iconfont.woff → src/web/staticres/structuredata/mobile/iconfont/iconfont.woff


+ 0 - 0
src/web/staticres/structuredata/iconfont/iconfont.woff2 → src/web/staticres/structuredata/mobile/iconfont/iconfont.woff2


+ 0 - 0
src/web/staticres/structuredata/image/01.png → src/web/staticres/structuredata/mobile/image/01.png


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác