Browse Source

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

yangfeng 5 years ago
parent
commit
9236e510e0
100 changed files with 1829 additions and 518 deletions
  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. 6 0
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  11. 2 1
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/base.css
  12. 49 46
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/marketing.css
  13. 133 60
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/css/write_infor.css
  14. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/structuredata/image/correct-icon-mobile.png
  15. 2 2
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/js/editArea.js
  16. 8 8
      src/jfw/modules/app/src/web/templates/active/livePage/online.html
  17. 1 1
      src/jfw/modules/app/src/web/templates/active/livePage/over.html
  18. 9 9
      src/jfw/modules/app/src/web/templates/active/livePage/preheat.html
  19. 4 4
      src/jfw/modules/app/src/web/templates/me/index.html
  20. 1 1
      src/jfw/modules/app/src/web/templates/me/mine.html
  21. 1 1
      src/jfw/modules/app/src/web/templates/staticpage/privacy_rules.html
  22. 1 1
      src/jfw/modules/app/src/web/templates/staticpage/privacy_rules_client.html
  23. 33 8
      src/jfw/modules/app/src/web/templates/structeddata/marketing.html
  24. 506 111
      src/jfw/modules/app/src/web/templates/structeddata/write_infor.html
  25. 3 3
      src/jfw/modules/app/src/web/templates/structeddata/write_result.html
  26. 1 1
      src/jfw/modules/app/src/web/templates/vipsubscribe/keyWord.html
  27. 6 6
      src/jfw/modules/app/src/web/templates/vipsubscribe/renew_notice.html
  28. 3 3
      src/jfw/modules/app/src/web/templates/vipsubscribe/renew_pay.html
  29. 8 8
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_index.html
  30. 1 1
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_order_detail.html
  31. 2 2
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_renew.html
  32. 3 3
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_upgrade.html
  33. 1 1
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_viewPage.html
  34. 3 3
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  35. 4 4
      src/jfw/modules/app/src/web/templates/weixin/treasure_box.html
  36. 3 0
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  37. 2 2
      src/jfw/modules/app/src/web/templates/weixin/wxkeyset/index.html
  38. 2 2
      src/jfw/modules/app/src/web/templates/weixin/wxkeyset/index_zb.html
  39. 2 2
      src/jfw/modules/pushsubscribe/src/push/job/nothingjob.go
  40. 31 0
      src/jfw/modules/subscribepay/src/service/dataExportPay_mobile.go
  41. 9 0
      src/jfw/modules/subscribepay/src/service/dataExportPay_pc.go
  42. 36 0
      src/jfw/modules/subscribepay/src/util/structed.go
  43. 10 0
      src/jfw/public/public.go
  44. 53 0
      src/jfw/public/structed.go
  45. 2 1
      src/seo.json
  46. 15 0
      src/web/staticres/css/dataService.css
  47. 2 2
      src/web/staticres/js/public-nav.js
  48. 0 162
      src/web/staticres/structuredata/css/write_infor.css
  49. BIN
      src/web/staticres/structuredata/file/【剑鱼标讯】结构化招标数据.xlsx
  50. 0 0
      src/web/staticres/structuredata/mobile/css/base.css
  51. 0 0
      src/web/staticres/structuredata/mobile/css/data_example.css
  52. 47 35
      src/web/staticres/structuredata/mobile/css/marketing.css
  53. 0 0
      src/web/staticres/structuredata/mobile/css/preview.css
  54. 0 0
      src/web/staticres/structuredata/mobile/css/weui.min.css
  55. 271 0
      src/web/staticres/structuredata/mobile/css/write_infor.css
  56. 0 0
      src/web/staticres/structuredata/mobile/css/write_result.css
  57. 0 0
      src/web/staticres/structuredata/mobile/iconfont/iconfont.css
  58. 0 0
      src/web/staticres/structuredata/mobile/iconfont/iconfont.eot
  59. 0 0
      src/web/staticres/structuredata/mobile/iconfont/iconfont.ttf
  60. 0 0
      src/web/staticres/structuredata/mobile/iconfont/iconfont.woff
  61. 0 0
      src/web/staticres/structuredata/mobile/iconfont/iconfont.woff2
  62. 0 0
      src/web/staticres/structuredata/mobile/image/01.png
  63. 0 0
      src/web/staticres/structuredata/mobile/image/02.png
  64. 0 0
      src/web/staticres/structuredata/mobile/image/03.png
  65. 0 0
      src/web/staticres/structuredata/mobile/image/04.png
  66. 0 0
      src/web/staticres/structuredata/mobile/image/Frame-1.png
  67. 0 0
      src/web/staticres/structuredata/mobile/image/Frame-2.png
  68. 0 0
      src/web/staticres/structuredata/mobile/image/Frame-3.png
  69. 0 0
      src/web/staticres/structuredata/mobile/image/Frame.png
  70. 0 0
      src/web/staticres/structuredata/mobile/image/T+2小时获取数据.png
  71. 0 0
      src/web/staticres/structuredata/mobile/image/advantage.png
  72. 0 0
      src/web/staticres/structuredata/mobile/image/api.png
  73. 0 0
      src/web/staticres/structuredata/mobile/image/banner.png
  74. 0 0
      src/web/staticres/structuredata/mobile/image/bg.png
  75. 0 0
      src/web/staticres/structuredata/mobile/image/bg_info.png
  76. 0 0
      src/web/staticres/structuredata/mobile/image/biaoti.png
  77. 0 0
      src/web/staticres/structuredata/mobile/image/choose.png
  78. 0 0
      src/web/staticres/structuredata/mobile/image/company.png
  79. BIN
      src/web/staticres/structuredata/mobile/image/correct-icon-mobile.png
  80. 0 0
      src/web/staticres/structuredata/mobile/image/dowhat.png
  81. 0 0
      src/web/staticres/structuredata/mobile/image/email.png
  82. BIN
      src/web/staticres/structuredata/mobile/image/emaillogo.png
  83. 0 0
      src/web/staticres/structuredata/mobile/image/jiegouhuahou.png
  84. 0 0
      src/web/staticres/structuredata/mobile/image/phone.png
  85. 0 0
      src/web/staticres/structuredata/mobile/image/preview.png
  86. 0 0
      src/web/staticres/structuredata/mobile/image/qiyejuzhen.png
  87. 0 0
      src/web/staticres/structuredata/mobile/image/sprite_icon.png
  88. 0 0
      src/web/staticres/structuredata/mobile/image/what.png
  89. 0 0
      src/web/staticres/structuredata/mobile/image/zhuangshiqiu.png
  90. 0 0
      src/web/staticres/structuredata/mobile/image/字段准确率达98.12%.png
  91. 0 0
      src/web/staticres/structuredata/mobile/image/数据全面有保障.png
  92. 0 0
      src/web/staticres/structuredata/mobile/image/获取方式多样化.png
  93. 0 0
      src/web/staticres/structuredata/mobile/image/金刚区/appxiazai.png
  94. 0 0
      src/web/staticres/structuredata/mobile/image/金刚区/jiegouhuashuju.png
  95. 0 0
      src/web/staticres/structuredata/mobile/image/金刚区/kecheng.png
  96. 0 0
      src/web/staticres/structuredata/mobile/image/金刚区/shangjiguanli.png
  97. 0 0
      src/web/staticres/structuredata/mobile/image/金刚区/shujubaogao.png
  98. 0 0
      src/web/staticres/structuredata/mobile/image/金刚区/shujudaochu.png
  99. 0 0
      src/web/staticres/structuredata/mobile/image/金刚区/zhongbiao.png
  100. 0 0
      src/web/staticres/structuredata/mobile/js/common.js

+ 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"
 }

+ 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;

+ 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


+ 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>`)
                 }

+ 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 -->

+ 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
 					}
 				})
 	        })

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

@@ -428,7 +428,7 @@ 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();

+ 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() {

+ 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>

+ 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">

+ 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) {

+ 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">

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

@@ -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">

+ 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;
+}

+ 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


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


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


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


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


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


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


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


+ 0 - 0
src/web/staticres/structuredata/image/T+2小时获取数据.png → src/web/staticres/structuredata/mobile/image/T+2小时获取数据.png


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


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


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


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


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


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


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


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


BIN
src/web/staticres/structuredata/mobile/image/correct-icon-mobile.png


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


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


BIN
src/web/staticres/structuredata/mobile/image/emaillogo.png


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


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


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


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


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


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


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


+ 0 - 0
src/web/staticres/structuredata/image/字段准确率达98.12%.png → src/web/staticres/structuredata/mobile/image/字段准确率达98.12%.png


+ 0 - 0
src/web/staticres/structuredata/image/数据全面有保障.png → src/web/staticres/structuredata/mobile/image/数据全面有保障.png


+ 0 - 0
src/web/staticres/structuredata/image/获取方式多样化.png → src/web/staticres/structuredata/mobile/image/获取方式多样化.png


+ 0 - 0
src/web/staticres/structuredata/image/金刚区/appxiazai.png → src/web/staticres/structuredata/mobile/image/金刚区/appxiazai.png


+ 0 - 0
src/web/staticres/structuredata/image/金刚区/jiegouhuashuju.png → src/web/staticres/structuredata/mobile/image/金刚区/jiegouhuashuju.png


+ 0 - 0
src/web/staticres/structuredata/image/金刚区/kecheng.png → src/web/staticres/structuredata/mobile/image/金刚区/kecheng.png


+ 0 - 0
src/web/staticres/structuredata/image/金刚区/shangjiguanli.png → src/web/staticres/structuredata/mobile/image/金刚区/shangjiguanli.png


+ 0 - 0
src/web/staticres/structuredata/image/金刚区/shujubaogao.png → src/web/staticres/structuredata/mobile/image/金刚区/shujubaogao.png


+ 0 - 0
src/web/staticres/structuredata/image/金刚区/shujudaochu.png → src/web/staticres/structuredata/mobile/image/金刚区/shujudaochu.png


+ 0 - 0
src/web/staticres/structuredata/image/金刚区/zhongbiao.png → src/web/staticres/structuredata/mobile/image/金刚区/zhongbiao.png


+ 0 - 0
src/web/staticres/structuredata/js/common.js → src/web/staticres/structuredata/mobile/js/common.js


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