Browse Source

Merge branch 'master' into feature/v4.8.71

lianbingjie 1 year ago
parent
commit
3aeb31550b

+ 2 - 1
src/config.json

@@ -61,7 +61,8 @@
     "followProjectSet": "/big/wx/page/pro_follow_detail?fid=%s&sid=%s&advertcode=%s",
     "wxMerge":"/weixin/frontPage/userMerge/free/index",
     "weChatUrlEnt": "/jy_mobile/project/joined/list?identity=ent",
-    "weChatUrl": "/jy_mobile/project/joined/list"
+    "weChatUrl": "/jy_mobile/project/joined/list",
+    "agencyInfo": "/jy_mobile/message/todoList?msgType=11"
   },
   "jy_activeset": {
     "activitystartcode": "3201000000",

+ 3 - 3
src/jfw/active/active.go

@@ -55,7 +55,7 @@ func init() {
 	xweb.AddAction(&Active{})
 }
 
-//测试首页
+// 测试首页
 func (a *Active) TransitRoute(key string) error {
 	redirectUrl := "/"
 	if key != "" {
@@ -63,11 +63,11 @@ func (a *Active) TransitRoute(key string) error {
 		if shortUrls != nil && len(*shortUrls) > 0 {
 			shortUrl := (*shortUrls)[0]
 			//登录用户跳转地址
-			if util.ObjToString(shortUrl["url"]) != "" {
+			if util.ObjToString(a.GetSession("userId")) != "" && util.ObjToString(shortUrl["url"]) != "" {
 				redirectUrl = util.ObjToString(shortUrl["url"])
 			}
 			//未登录用户跳转地址
-			if util.ObjToString(shortUrl["href"]) != "" && util.ObjToString(a.GetSession("userId")) == "" {
+			if util.ObjToString(a.GetSession("userId")) == "" && util.ObjToString(shortUrl["href"]) != "" {
 				redirectUrl = util.ObjToString(shortUrl["href"])
 			}
 		}

+ 3 - 6
src/jfw/filter/cookie.go

@@ -1,10 +1,9 @@
 package filter
 
 import (
-	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
-	"log"
-	"net/http"
-	"strings"
+    "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
+    "net/http"
+    "strings"
 )
 
 // CookieInfo 信息
@@ -15,14 +14,12 @@ type CookieInfo struct {
 
 // Do 继承过滤器方法
 func (ci *CookieInfo) Do() {
-	log.Println(ci.R.Referer(), "----------------------", ci.R.RequestURI)
 	if crr := ci.R.Referer(); crr != "" {
 		if strings.Contains(crr, "cooperate") {
 			match := strings.Split(crr, "cooperate/")
 			if len(match) > 1 {
 				jy.SetCookieValue(ci.W, jy.ChannelCookieName, match[1], 172800) //两天
 			}
-			log.Println("---------------pc-------------", match)
 		}
 	}
 }

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

@@ -139,6 +139,7 @@ func (s *Short) Article(stype, id string) error {
 }
 
 func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bool) error {
+	log.Println(stype, "----stype:---", id)
 	//电脑端 剑鱼快照页面访问
 	if stype == "content" && !bm {
 		//工作桌面内嵌 快照页
@@ -221,7 +222,8 @@ func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bo
 	} else if stype == "entservice" { //大客户数据快照展示
 		//se := util.SimpleEncrypt{"entservice"}
 		sid := encrypt.SE3.DecodeString(id)
-		if userId == "" || len(sid) == 0 || (len(sid) > 0 && sid == "") { //未登录用户没有权限访问
+		log.Println("----sid:---", sid)
+		if len(sid) == 0 || (len(sid) > 0 && sid == "") { //未登录用户没有权限访问---userId == "" ||   未登录可以访问来自陈 11.29
 			s.Redirect("/notin/page", 302)
 			return nil
 		}

+ 1 - 1
src/jfw/jyutil/sessionkeep.go

@@ -97,7 +97,7 @@ func (sk *SessionKeep) Do() bool {
 			}
 		} else {
 			if strings.HasPrefix(rqu, "/article/") {
-				if strings.HasPrefix(rqu, "/article/content") || strings.HasPrefix(rqu, "/article/mailprivate") || strings.HasPrefix(rqu, "/article/bdprivate") || strings.HasPrefix(rqu, "/article/bdcontent") || reg.MatchString(rhdua) || strings.HasPrefix(rqu, "/article/indexcontent") {
+				if strings.HasPrefix(rqu, "/article/content") || strings.HasPrefix(rqu, "/article/mailprivate") || strings.HasPrefix(rqu, "/article/bdprivate") || strings.HasPrefix(rqu, "/article/bdcontent") || reg.MatchString(rhdua) || strings.HasPrefix(rqu, "/article/indexcontent") || strings.HasPrefix(rqu, "/article/entservice") {
 					return true
 				} else { //只处理pc
 					sk.SetSession["referer"] = sk.R.RequestURI

+ 84 - 10
src/jfw/modules/publicapply/src/userbase/entity/entity.go

@@ -26,6 +26,8 @@ const (
 	RedisPoly                = "poly"     // 查白名单用户用的redis
 	WhitelistRedisKey        = "white_%s" // 白名单用户用的redis key
 	TabelOriginalPowerRecord = "original_power_record"
+	TableOriginalUserLedger  = "original_user_ledger"  // 用户每个月使用的查看原文次数表
+	TableOriginalUserAccount = "original_user_account" // 用户查看原文可用总量信息表
 )
 
 type UserInfo struct {
@@ -381,6 +383,7 @@ type OriginalPower struct {
 	UserId       string
 	Stype        initjson.StypeInfo
 	NoCheckStype []string
+	Client       string
 }
 
 const (
@@ -440,12 +443,26 @@ func (o *OriginalPower) CountRecord() int {
 		// 付费用户 查询当月
 		where = fmt.Sprintf(`and create_time >="%s"`, timeStart)
 	}
-	sourceStr := ""
-	if len(o.NoCheckStype) > 0 {
-		sourceStr = "and source not in (\"" + strings.Join(o.NoCheckStype, "\",\"") + "\")"
+	// UseUserAccountTime 此时间之后使用新表统计数据
+	if initjson.UseUserAccountTime.Before(time.Now()) {
+		// 查询条数
+		qCount := fmt.Sprintf("select usage_count from %s where position_id=? %s", TableOriginalUserLedger, where)
+		countRs := db.Mysql.SelectBySql(qCount, o.PositionId)
+		// 已经有数据
+		if countRs != nil && len(*countRs) > 0 {
+			return util.IntAll((*countRs)[0]["usage_count"])
+		} else {
+			return 0
+		}
+	} else {
+		// 配置时间之前的 走老逻辑 count统计
+		sourceStr := ""
+		if len(o.NoCheckStype) > 0 {
+			sourceStr = "and source not in (\"" + strings.Join(o.NoCheckStype, "\",\"") + "\")"
+		}
+		q := fmt.Sprintf(" SELECT count(distinct(bidding_id)) FROM %s where position_id=? and user_type=? %s  %s;", TabelOriginalPowerRecord, sourceStr, where)
+		return int(db.Mysql.CountBySql(q, o.PositionId, o.UserType))
 	}
-	q := fmt.Sprintf(" SELECT count(distinct(bidding_id)) FROM %s where position_id=? and user_type=? %s  %s;", TabelOriginalPowerRecord, sourceStr, where)
-	return int(db.Mysql.CountBySql(q, o.PositionId, o.UserType))
 }
 
 // SavePowerRecord 保存查看原文记录
@@ -463,8 +480,8 @@ func (o *OriginalPower) SavePowerRecord(originalUrl string) {
 	if rs != nil && len(*rs) > 0 && util.IntAll((*rs)[0]["id"]) != 0 {
 		// 存在则直接次数加一,更新更新时间
 		id := util.IntAll((*rs)[0]["id"])
-		updateSql := fmt.Sprintf("update  %s set views_times = views_times+1,update_time=? where id =?", TabelOriginalPowerRecord)
-		_, err := db.Mysql.ExecBySql(updateSql, date.NowFormat(date.Date_Full_Layout), id)
+		updateSql := fmt.Sprintf("update  %s set views_times = views_times+1,update_time=?,client=? where id =?", TabelOriginalPowerRecord)
+		_, err := db.Mysql.ExecBySql(updateSql, date.NowFormat(date.Date_Full_Layout), o.Client, id)
 		if err != nil {
 			log.Println("更新浏览次数失败:", err, updateSql, date.NowFormat(date.Date_Full_Layout), id)
 		}
@@ -481,6 +498,7 @@ func (o *OriginalPower) SavePowerRecord(originalUrl string) {
 			"user_state":   o.UserState,
 			"create_time":  date.NowFormat(date.Date_Full_Layout),
 			"update_time":  date.NowFormat(date.Date_Full_Layout),
+			"client":       o.Client,
 		}
 		insertRs := db.Mysql.Insert(TabelOriginalPowerRecord, insertData)
 		if insertRs < 1 {
@@ -490,6 +508,39 @@ func (o *OriginalPower) SavePowerRecord(originalUrl string) {
 
 }
 
+// IncOriginalUserAccount 次数加一
+func (o *OriginalPower) IncOriginalUserAccount() {
+	// 存在则加一
+	where := ""
+	if o.UserType == UserTypePay {
+		timeStart := GetMonthStart()
+		// 付费用户 查询当月
+		where = fmt.Sprintf(`and create_time >="%s"`, timeStart)
+	}
+	// 查询条数
+	qCount := fmt.Sprintf("select id from %s where position_id=? %s", TableOriginalUserLedger, where)
+	countRs := db.Mysql.SelectBySql(qCount, o.PositionId)
+	if countRs != nil && len(*countRs) > 0 {
+		id := (*countRs)[0]["id"]
+		// 存在则执行更新
+		_, err := db.Mysql.ExecBySql(fmt.Sprintf("update %s set usage_count=usage_count+1 where id=?", TableOriginalUserLedger), id)
+		if err != nil {
+			log.Println("更新条数信息失败:", err, o.Phone, o.UserId, o.Client, o.PositionId)
+			return
+		}
+	} else {
+		// 不存在则插入
+		db.Mysql.Insert(TableOriginalUserLedger, map[string]interface{}{
+			"user_id":     o.UserId,
+			"position_id": o.PositionId,
+			"phone":       o.Phone,
+			"usage_count": 1,
+			"create_time": date.NowFormat(date.Date_Full_Layout),
+			"update_time": date.NowFormat(date.Date_Full_Layout),
+		})
+	}
+}
+
 // CNode  获取留资信息和判断是否满足
 func (o *OriginalPower) CNode() (leadOk bool) {
 	// 查留资source
@@ -582,20 +633,43 @@ func (o *OriginalPower) SetUserInfo() {
 		o.TotalCount = userInfo.Free.Original
 		o.UserType = UserTypeFree
 		o.UserState = UserStateFree
-	} else if userInfo.Member.Status > 0 {
+		return
+	}
+	// 总次数如果为多重身份则取最大值 如果用单独配置则取配置
+	// 判断是不是大会员
+	if userInfo.Member.Status > 0 {
 		o.TotalCount = userInfo.Member.Original
 		o.UserType = UserTypePay
 		o.UserState = UserStateMember
-	} else if userInfo.Entniche.Status > 0 && userInfo.Entniche.PowerSource < 1 {
+	}
+	// 判断是不是商机管理
+	if userInfo.Entniche.Status > 0 && userInfo.Entniche.PowerSource < 1 && userInfo.Entniche.Original > o.TotalCount {
 		o.TotalCount = userInfo.Entniche.Original
 		o.UserType = UserTypePay
 		o.UserState = UserStateEntniche
-	} else if userInfo.Vip.Status > 0 {
+	}
+	// 判断是不是超级订阅
+	if userInfo.Vip.Status > 0 && userInfo.Vip.Original > o.TotalCount {
 		o.TotalCount = userInfo.Vip.Original
 		o.UserType = UserTypePay
 		o.UserState = UserStateVip
 	}
+	// 查询用户是否有单独配置
+	userAccountTotal := o.GetUserCount()
+	if userAccountTotal > 0 {
+		o.TotalCount = userAccountTotal
+	}
+}
 
+// GetUserCount 用户单独配置
+func (o *OriginalPower) GetUserCount() (total int64) {
+	now := date.NowFormat(date.Date_Full_Layout)
+	q := fmt.Sprintf("SELECT total FROM %s where position_id=? and start_time<=? and end_time>=? and state =0 ;", TableOriginalUserAccount)
+	rs := db.Mysql.SelectBySql(q, o.PositionId, now, now)
+	if rs != nil && len(*rs) > 0 {
+		total = util.Int64All((*rs)[0]["total"])
+	}
+	return
 }
 
 // 该节点是否留资

+ 7 - 1
src/jfw/modules/publicapply/src/userbase/initjson/ub.go

@@ -2,7 +2,9 @@ package initjson
 
 import (
 	util "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/date"
 	"log"
+	"time"
 )
 
 type BaseFunc struct {
@@ -36,7 +38,8 @@ type MenuInfo struct {
 	Isusable bool   `json:"isusable"` //是否可用
 }
 type OriginalConfig struct {
-	Stype []StypeInfo `json:"stype"`
+	Stype              []StypeInfo `json:"stype"`
+	UseUserAccountTime string      `json:"use_user_account_time"` // 此时间之后使用新表original_user_account统计数量
 }
 type StypeInfo struct {
 	Name  string `json:"name"`  // stype
@@ -47,6 +50,8 @@ type StypeInfo struct {
 var MenuMap []*MenuLevel
 var OriginalC *OriginalConfig
 var NoCheckStype []string // 不用校验权限的stype
+var UseUserAccountTime time.Time
+
 func init() {
 	log.Println("初始化 常用功能配置")
 	util.ReadConfig("./userbase/commonfunctions.json", &BaseFuncInfo)
@@ -59,4 +64,5 @@ func init() {
 			NoCheckStype = append(NoCheckStype, OriginalC.Stype[i].Name)
 		}
 	}
+	UseUserAccountTime, _ = time.ParseInLocation(date.Date_Full_Layout, OriginalC.UseUserAccountTime, time.Local)
 }

+ 2 - 1
src/jfw/modules/publicapply/src/userbase/original_power.json

@@ -35,5 +35,6 @@
       "login": true,
       "check": true
     }
-  ]
+  ],
+  "use_user_account_time": "2023-11-30 23:59:59"
 }

+ 4 - 0
src/jfw/modules/publicapply/src/userbase/service/service.go

@@ -188,6 +188,7 @@ func (this *ServiceStruct) GetOriginalText() {
 	var op entity.OriginalPower
 	if sessUser.MgoUserId != "" { // 已登录
 		op = entity.NewOriginalPower(sessUser.BaseUserId, sessUser.AccountId, sessUser.EntId, sessUser.PositionType, sessUser.PositionId, biddingId, sessUser.MgoUserId, sessUser.Phone, sessUser.UserId, *stypeInfo)
+		op.Client = this.Header("User-Agent")
 		op.SetUserInfo()
 		pLock := entity.GetOriginalTextLock(fmt.Sprintf("%d", op.PositionId))
 		pLock.Lock()
@@ -261,6 +262,7 @@ func (this *ServiceStruct) GetOriginalText() {
 		}
 		//存记录
 		op.SavePowerRecord(url)
+		op.IncOriginalUserAccount()
 		this.ServeJson(Result{Data: map[string]interface{}{
 			"url":     url,
 			"surplus": op.TotalCount - int64(count) - 1,
@@ -311,6 +313,8 @@ func (this *ServiceStruct) GetOriginalText() {
 		}
 		//存记录
 		op.SavePowerRecord(url)
+		// 更新用户使用数量表
+		op.IncOriginalUserAccount()
 		this.ServeJson(Result{Data: map[string]interface{}{
 			"url":     url,
 			"surplus": op.TotalCount - int64(count) - 1,

+ 12 - 0
src/jfw/qrmanager/qrmanager.go

@@ -45,6 +45,8 @@ func RedisInfo(oid, action, sione, sitwo string, i int, hsn *httpsession.Session
 			hsn.Set("RReferer", Rref)
 		}
 	}
+	//session 更新
+	sessVal = hsn.GetMultiple()
 	//当前页面
 	userData["RURL"] = Rurl
 	modulelist := Seoconfig["module"].(map[string]interface{})
@@ -57,6 +59,8 @@ func RedisInfo(oid, action, sione, sitwo string, i int, hsn *httpsession.Session
 	if sessVal["RModule"] == nil || util.ObjToString(sessVal["RModule"]) == "" {
 		hsn.Set("RModule", "首页")
 	}
+	//session 更新
+	sessVal = hsn.GetMultiple()
 	//活动页模块
 	//需要建立剑鱼唯一的id后缀
 	if len(Rurl) > 1 && strings.Contains(Rurl, "?id=") {
@@ -76,12 +80,16 @@ func RedisInfo(oid, action, sione, sitwo string, i int, hsn *httpsession.Session
 				break
 			}
 		}
+		//session 更新
+		sessVal = hsn.GetMultiple()
 		if sessVal["RSource"] == nil {
 			hsn.Set("RSource", activeCode)
 			hsn.Set("RModule", activeCode+"活动页")
 			hsn.Set("RActiveCode", activeCode)
 		}
 	}
+	//session 更新
+	sessVal = hsn.GetMultiple()
 	userData["RModule"] = sessVal["RModule"]
 	userData["RActiveCode"] = sessVal["RActiveCode"]
 	userData["RReferer"] = sessVal["RReferer"]
@@ -105,10 +113,14 @@ func RedisInfo(oid, action, sione, sitwo string, i int, hsn *httpsession.Session
 				break
 			}
 		}
+		//session 更新
+		sessVal = hsn.GetMultiple()
 		if sessVal["RSource"] == nil || util.ObjToString(sessVal["RSource"]) == "" {
 			hsn.Set("RSource", "剑鱼标讯网站")
 		}
 	}
+	//session 更新
+	sessVal = hsn.GetMultiple()
 	userData["RSource"] = sessVal["RSource"]
 	userData["Rparamkey"] = sessVal["paramkey"]
 	userData["Rparampublishtime"] = sessVal["parampublishtime"]

+ 4 - 3
src/phoneFilter.json

@@ -20,10 +20,11 @@
 		"^/orgpc/(.*)",
     "^/weixin/pay/checkout_*",
     "^/weixin/(\\w+)/paySuccess",
-    "^/stl/exhibitionActive",
+    "^/stl/exhibition*",
     "^/swordfish/SingleLogin",
-    "^/weixin/frontPage/bigmember/free/perfect_info_exhibition",
-    "^/orgstructure/invaction/(.*)"
+    "^/weixin/frontPage/bigmember/free/perfect_info_*",
+    "^/orgstructure/invaction/(.*)",
+    "^/active/transit/(.*)"
 	],
 	"sessUrl":{
 		"/jyTreasureBox/treasureBox":"",

BIN
src/web/staticres/common-module/msgCenter/meeting.png


BIN
src/web/staticres/common-module/msgCenter/task.png


BIN
src/web/staticres/images/wx/checkbox.png


+ 1357 - 0
src/web/templates/frontRouter/wx/bigmember/free/perfect_info_market.html

@@ -0,0 +1,1357 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+
+<head>
+    <title>报名</title>
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="format-detection" content="telephone=yes"/>
+    <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">
+    <meta name="referrer" content="always">
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+    <script src="{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/big-member/js/rem.js"></script>
+    {{include "/common/weixin.html"}}
+
+    <!--S-当前页必定需要预加载的资源-->
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    <!--E-当前页必定需要预加载的资源-->
+
+
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
+    <link rel="stylesheet"
+          href='{{Msg "seo" "cdn"}}/common-module/perfect-info/index.css?v={{Msg "seo" "version"}}'/>
+    <style>
+      .market-page .van-field__control,
+      .market-page .sendbtn {
+        font-size: 0.32rem;
+        font-style: normal;
+        font-weight: 500;
+        line-height: 0.48rem;
+        color: #5F5E64;
+      }
+      .market-page .van-field__control::placeholder {
+        color: #C0C4CC;
+      }
+
+      .market-page .sendbtn.canNextSend {
+        color: #2ABED1;
+      }
+      .market-page .top-banner-group img {
+        width: 100%;
+        height: 100%;
+      }
+      .market-page .van-cell {
+        font-size: 0.3rem;
+        font-style: normal;
+        font-weight: 500;
+        line-height: 0.44rem;
+        color: #5F5E64;
+        padding: 0.3rem 0.32rem;
+      }
+      .market-page .top-banner-group {
+        max-height: 1.6rem;
+      }
+      .add-application{
+        display: flex;
+        justify-content: center;
+        margin-top: .48rem;
+      }
+      .add-application button {
+        width: 3.3rem;
+        height: .8rem;
+        border: 1px solid #2ABED1;
+        border-radius: 0.08rem;
+        color: #2ABED1;
+        font-size: 0.32rem;
+        background-color: transparent;
+      }
+      .otherInfo-main .form-title{
+        display: flex;
+        justify-content: space-between;
+      }
+      .otherInfo-main .form-title span:last-child{
+        color: #2ABED1;
+        font-size: .28rem;
+      }
+      .delete-group-info{
+        padding: 0 .6rem;
+      }
+      .delete-group-info .van-dialog__header{
+        font-size: .36rem;
+        color: #171826;
+      }
+      .delete-group-info .delete-tip{
+        padding: .16rem 0 .48rem;
+        text-align: center;
+        color: #5F5E64;
+        font-size: .3rem;
+      }
+      .top-tip-text{
+        width: 100%;
+        padding: .24rem .32rem;
+        background: #FFF4E8;
+        font-size: .26rem;
+        text-align: center;
+        line-height: .44rem;
+        color: #FF9F40;
+      }
+      .active-end-tip {
+        border-radius: .24rem;
+      }
+      .active-end-tip .van-dialog__header{
+        padding-top: .64rem;
+      }
+      .active-end-tip .van-dialog__footer {
+        padding: .56rem .72rem .8rem;
+      }
+      .active-end-tip .van-button {
+        height: 48px;
+        line-height: 48px;
+        background: #2ABED1;
+        color: #fff!important;
+        font-size: .32rem;
+        border-radius: .48rem;
+      }
+      .active-end-tip .dialog-title {
+        position: relative;
+      }
+      .active-end-tip .dialog-title-text {
+        font-size: .4rem;
+        font-weight: 700;
+      }
+      .active-end-tip .top-right-icon {
+        position: absolute;
+        top: -14px;
+        right: 10px;
+        font-size: 20px;
+        color: rgba(186, 186, 190, 1);
+      }
+      .active-end-tip .dialog-content{
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+      }
+      .active-end-tip img{
+        width: 3.2rem;
+        height: 3.2rem;
+      }
+      .form-content-card .van-cell::after{
+        position: absolute;
+        box-sizing: border-box;
+        content: ' ';
+        pointer-events: none;
+        right: 0;
+        bottom: 0;
+        left: 16px;
+        border-bottom: 1px solid #ebedf0;
+        -webkit-transform: scaleY(.5);
+        transform: scaleY(.5);
+      }
+      .market-overlay{
+        display: flex;
+        align-items: center;
+        justify-content: center;
+      }
+    </style>
+    <!--E-当前页面的css资源-->
+    <script>
+      try {
+        window.JyObj.hiddenBottom('0')
+      } catch (e) {
+        console.log('error: app not function')
+      }
+    </script>
+</head>
+
+<body>
+<div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main perfect-info-group market-page" id="perfect-info-page" v-cloak>
+      <div class="j-container">
+          <van-overlay class-name="market-overlay" :show="pageShow" @click="show = false">
+              <van-loading v-model="pageShow"></van-loading>
+          </van-overlay>
+          
+          <div class="j-main info-collect">
+              <div class="top-tip-text">请填写以下信息,完成报名。</div>
+              <div class="top-banner-group" @click="openTopBanner" v-if="topBannerInfo.s_pic">
+                  <img :src="topBannerInfo.s_pic" :alt="topBannerInfo.s_picalt || '完善信息-顶部广告展示'">
+              </div>
+              <div class="form-card-group">
+                  <div class="form-title">报名人1(请填写本人信息):</div>
+                  <div class="form-content-card">
+                      <van-field v-model.trim="infoMap.name" label="姓名" @focus="infoCheckMap.name = ''" @blur="getCheckMap('name')"
+                                 :error-message="infoCheckMap.name" required placeholder="请输入姓名"></van-field>
+                      <van-field @input="getInputPhone" v-model.trim="infoMap.phone" label="手机号" @focus="infoCheckMap.phone = ''"
+                                 @blur="getCheckMap('phone')" :error-message="infoCheckMap.phone" required
+                                 placeholder="请输入准确的手机号"></van-field>
+                      <van-field v-if="setcodeShow" v-model.trim="infoMap.vercode" label="验证码" @focus="infoCheckMap.vercode = ''"
+                                 @blur="getCheckMap('vercode')" :error-message="infoCheckMap.vercode" required
+                                 @input="getCheckCode"
+                                 placeholder="请输入短信验证码">
+                        <template #button>
+                          <span v-show="sendShow" style="font-size: .28rem;" class="sendbtn" :class="{'canNextSend': canNextSend}" @click="sendMsg">发送验证码</span>
+                          <span class="timedown" v-show="!sendShow"></span>
+                        </template>
+                      </van-field>
+                  </div>
+                  <div class="form-content-card">
+                    <div class="associate-ent-group" v-if="isAssociateShow">
+                        <div class="associate-ent-item" @click="selectEnt(item)" v-for="(item, i) in searchList" v-bind:key="i" v-html="highlightText(item, infoMap.company)"></div>
+                    </div>
+                    <van-field @input="entOnChange('input')" @blur="getCheckMap('company')" @focus="infoCheckMap.company = ''"
+                               :error-message="infoCheckMap.company" required v-model.trim="infoMap.company" label="公司名称" placeholder="请输入准确的公司名称"></van-field>
+                    <van-field v-model="infoMap.companyType" label="公司类型"
+                               @click="openPop('公司类型')" readonly is-link placeholder="请选择公司类型"></van-field>
+                    <van-field :class="{'hide-border': infoMap.position === '其他'}"  @blur="getCheckMap('position')"  v-model="infoMap.position" label="职位" @click="openPop('职位')" readonly is-link
+                               placeholder="请选择职位"></van-field>
+                    <van-field class="other-input-group" @focus="infoCheckMap.position_other = ''"
+                               :error-message="infoCheckMap.position_other" v-model.trim="infoMap.position_other" v-show="infoMap.position === '其他'" required label="职位" placeholder="请输入职位"></van-field>
+                    <van-field v-if="showBranch" :error-message="infoCheckMap.branch" v-model="infoMap.branch"  @blur="getCheckMap('branch')" label="部门" @click="openPop('部门')" readonly is-link placeholder="请选择部门"></van-field>
+                </div>
+              </div>
+              <div class="otherInfo-main">
+                <div class="form-card-group" v-for="(info, index) in infoOtherList" :key="index">
+                  <div class="form-title">
+                    <span>报名人@@index+2@@</span>
+                    <span @click="deleteInfo(index, info.id)">删除</span>
+                  </div>
+                  <div class="form-content-card">
+                      <van-field v-model.trim="info.name" label="姓名" @focus="infoOtherCheckMap[index].name = ''" @blur="getOtherCheckMap('name', index)"
+                                 :error-message="infoOtherCheckMap[index].name" required placeholder="请输入姓名">
+                      </van-field>
+                      <van-field @input="getInputPhone" v-model.trim="info.phone" label="手机号" @focus="infoOtherCheckMap[index].phone = ''"
+                                 @blur="getOtherCheckMap('phone', index)" :error-message="infoOtherCheckMap[index].phone" required
+                                 placeholder="请输入准确的手机号">
+                      </van-field>
+                  </div>
+                  <div class="form-content-card">
+                    <div class="associate-ent-group" v-if="info.isAssociateShow">
+                        <div class="associate-ent-item" @click="selectEnt(ser, index)" v-for="(ser, i) in searchList" v-bind:key="i" v-html="highlightText(ser, info.company)"></div>
+                    </div>
+                    <van-field @input="entOtherOnChange('input', index)" @blur="getOtherCheckMap('company', index)" @focus="infoOtherCheckMap[index].company = ''"
+                               :error-message="infoOtherCheckMap[index].company" required v-model.trim="info.company" label="公司名称" placeholder="请输入准确的公司名称"></van-field>
+                    <van-field v-model="info.companyType" label="公司类型"
+                               @click="openPop('公司类型', info, index)" readonly is-link placeholder="请选择公司类型"></van-field>
+                    <van-field :class="{'hide-border': info.position === '其他'}"  @blur="getOtherCheckMap('position', index)"  v-model="info.position" label="职位" @click="openPop('职位', info, index)" readonly is-link
+                               placeholder="请选择职位"></van-field>
+                    <van-field class="other-input-group" @focus="infoOtherCheckMap[index].position_other = ''"
+                               :error-message="infoOtherCheckMap[index].position_other" v-model.trim="info.position_other" v-show="info.position === '其他'" required label="职位" placeholder="请输入职位"></van-field>
+                    <van-field v-if="info.showBranch" :error-message="infoOtherCheckMap[index].branch" v-model="info.branch"  @blur="getOtherCheckMap('branch', index)" label="部门" @click="openPop('部门', info, index)" readonly is-link placeholder="请选择部门"></van-field>
+                  </div>
+                </div>
+              </div>
+              <div class="add-application" v-if="setAddNum">
+                <button @click="addInfo">添加报名人</button>
+              </div>
+              <van-dialog
+                v-model="deleteInfoShow"
+                class="delete-group-info"
+                title="删除确认"
+                get-container="body"
+                confirm-button-color="#2ABED1"
+                confirm-button-text="确定"
+                @confirm="deleteInfoConfirm"
+                show-cancel-button>
+                <div class="delete-tip">确定删除此报名人信息吗?</div>
+            </van-dialog>
+            <van-dialog @confirm="closeDialog" class="active-end-tip" v-model="activeEndShow" theme="round-button" confirm-button-color="#2abed1" confirm-button-text="我知道了">
+              <div slot="title" class="dialog-title">
+                <div class="dialog-title-text">活动结束提醒</div> 
+                <van-icon name="cross" class="top-right-icon" @click.stop="closeDialog" />
+              </div>
+              <div class="dialog-content">
+                <img src="{{Msg "seo" "cdn"}}/common-module/public/image/jy-back.png" alt="">
+                <p style="text-align: center;">您可继续关注剑鱼标讯,获取<br/>更多其他活动信息。</p>
+              </div>
+            </van-dialog>
+          </div>
+          <div class="j-footer">
+              <div class="j-button-group">
+                  <button class="j-button-confirm" :data-cl-event="submitElEvent" :disabled="isSubmitDisabled" @click="submitForm">立即免费报名</button>
+              </div>
+          </div>
+          <van-popup class="prefect-pop-group" v-model="popInfo.show" round position="bottom"
+                     :style="{ height: getPopHeight }">
+              <div class="j-container">
+                  <div class="j-header">
+                      <div class="pop-title-group">
+                          <span>@@popInfo.title@@</span>
+                          <div class="close-padding-box" @click="popInfo.show = false">
+                              <i class="j-icon base-icon icon-delete-gray"></i>
+                          </div>
+                      </div>
+                  </div>
+                  <div class="j-main" v-show="conditionMap[popInfo.label]">
+                      <div class="condition-select-group" :class="{more: isMoreSelect}">
+                          <div class="condition-select-item" @click="onSelectItem(item, popInfo.label)" v-for="(item,i) in conditionMap[popInfo.label]" :class="{checked: item.checked}">
+                              <div>@@item.title@@</div>
+                              <i v-if="!isMoreSelect" class="j-icon base-icon icon-tick"></i>
+                              <div class="more-icon-box" v-else>
+                                  <i  class="j-icon base-icon icon-tick-circle"></i>
+                                  <i  class="j-icon base-icon icon-tick-circle-fill"></i>
+                              </div>
+                          </div>
+                      </div>
+                  </div>
+                  <div class="j-footer">
+                      <div class="j-button-group">
+                          <button class="j-button-confirm" :disabled="isNextDisabled" @click="submitPop">确认</button>
+                      </div>
+                  </div>
+              </div>
+          </van-popup>
+      </div>
+      <van-popup v-model="commitshow" class="commitdialog" :close-on-click-overlay="overlayShow">
+        <div class="j-container">
+          <div class="j-header com-header">
+            <span class="infor-icon-close"></span>
+          </div>
+          <div class="j-main com-main">
+            <div class="img-duihao">
+              <img src="/structuredata/mobile/image/choose.png" alt="">
+            </div>
+            <div class="commit_success">提交成功</div>
+            <div class="commit_tip">我们稍后将以邮件的形式发送数据样例</div>
+            <div class="commit_know">
+              <button class="commit_btn" @click="history.back()">我知道了</button>
+            </div>
+            <div class="data_exportclick">
+              <img @click="location.href = '/front/wx_dataExport/toSieve'" src='{{Msg "seo" "cdn"}}/common-module/perfect-info/image/dataimg.png' alt="">
+            </div>
+          </div>
+          <div class="j-footer com-footer"></div>
+        </div>
+      </van-popup>
+  </div>
+</div>
+
+<script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/public/js/utils.js'></script>
+{{include "/big-member/commonjs.html"}}
+<script>
+  var vNode = {
+    delimiters: ['@@', '@@'],
+    el: '#perfect-info-page',
+    data: {
+      pageShow: false,
+      sendShow: true, // 倒计时切换
+      vercodecor: false, // 验证码是否正确
+      setcodeShow: true, // 验证码输入框是否显示
+      commitshow: false, // 提交成功显示弹窗
+      overlayShow: false,
+      deleteInfoShow: false, // 删除弹窗是否显示
+      activeEndShow: false, // 活动结束提醒弹窗
+      deleteInfoId: {},
+      salesLeadsInfoData: {}, // 留资信息
+      optionInfoAppcant: {}, // 当前正在操作的报名人信息
+      searchList: [],
+      isAssociateShow: false,
+      isAssociateUpTime: -1,
+      infoMap: {
+        name: '',
+        phone: '',
+        vercode: '',
+        email: '',
+        company: '',
+        companyType: '',
+        position: '',
+        position_other: '',
+        branch: ''
+      },
+      infoCheckMap: {
+        name: '',
+        phone: '',
+        vercode: '',
+        email: '',
+        company: '',
+        position: '',
+        position_other: '',
+        branch: ''
+      },
+      infoOtherList: [],
+      infoOtherCheckMap: [],
+      isEchoInfoLoading: true,
+      popInfo: {
+        show: false,
+        label: '',
+        title: ''
+      },
+      conditionMap: {
+        '公司类型': [{
+            title: '投标企业',
+            checked: false
+          },
+          {
+            title: '招标采购单位',
+            checked: false
+          },
+          {
+            title: '厂商',
+            checked: false
+          },
+          {
+            title: '招标代理机构',
+            checked: false
+          },
+          {
+            title: '经销商',
+            checked: false
+          },
+          {
+            title: '服务提供商',
+            checked: false
+          },
+          {
+            title: '设计院',
+            checked: false
+          },
+          {
+            title: '集成商',
+            checked: false
+          },
+          {
+            title: '其他',
+            checked: false
+          }
+        ],
+        '职位': [
+          {
+            title: '总裁',
+            checked: false
+          },
+          {
+            title: '总经理',
+            checked: false
+          },
+          {
+            title: '总监',
+            checked: false
+          },
+          {
+            title: '经理',
+            checked: false
+          },
+          {
+            title: '主管',
+            checked: false
+          },
+          {
+            title: '职员',
+            checked: false
+          }
+        ],
+        '部门': [
+          {
+            title: '市场',
+            checked: false
+          },
+          {
+            title: '产品',
+            checked: false
+          },
+          {
+            title: '销售',
+            checked: false
+          },
+          {
+            title: '渠道',
+            checked: false
+          },
+          {
+            title: '其他',
+            checked: false
+          }
+        ]
+      },
+      ajaxParams: {
+        "name": "",
+        "phone": "",
+        "source": utils.getParam('source'), // 推送消息点进来的
+        "exhCode": utils.getParam('exhCode'),
+        "mail": "",
+        "company": "",
+        "companyType": "",
+        "position": "",
+        "branch": '',
+        origin: location.origin
+      },
+      jobJson: [
+        '总裁',
+        '总经理',
+        '总监',
+        '经理',
+        '主管',
+        '职员'
+      ],
+      topBannerInfo: {
+        s_pic: ""
+      },
+      haveSamePhone: false
+    },
+    mounted() {
+      // source=message_bigmember app消息大会员留资地
+      // source=message_structeddata app消息结构化数据留资地
+      utils.iosBackRefresh()
+      this.ajaxGetEchoInfo()
+    },
+    computed: {
+      setAddNum: function () {
+        if (Object.keys(this.salesLeadsInfoData).length > 0) {
+          return this.infoOtherList.length < this.salesLeadsInfoData.exhRes.signNum - 1
+        } else {
+          return true
+        }
+      },
+      canNextSend: function () {
+        return this.checkPhone
+      },
+      submitElEvent: function () {
+        var type = 'structeddata'
+        return 'c_wx_' + type + '_submit_buttonclick'
+      },
+      getPopHeight () {
+        return this.popInfo.label === '受雇类型' ?  '5.42rem' : '8.36rem'
+      },
+      checkName () {
+        if (this.infoMap.name.length > 10) {
+          return false
+        }
+        var namereg = /^[\u4E00-\u9FA5A-Za-z\s]+(·[\u4E00-\u9FA5A-Za-z]+)*$/;//中英文或加.的少数民族名字
+        return namereg.test(this.infoMap.name)
+      },
+      checkOtherName () {
+        const arr = []
+        if(this.infoOtherList.length === 0) return []
+        this.infoOtherList.forEach(item => {
+          if (item.name.length > 10) {
+            arr.push(false)
+          } else {
+            var namereg = /^[\u4E00-\u9FA5A-Za-z\s]+(·[\u4E00-\u9FA5A-Za-z]+)*$/;//中英文或加.的少数民族名字
+            arr.push(namereg.test(item.name))
+          }
+        })
+        return arr
+      },
+      checkPhone () {
+        return /^1[3-9]\d{9}$/.test(this.infoMap.phone)
+      },
+      checkOtherPhone () {
+        const arr = []
+        if(this.infoOtherList.length === 0) return []
+        this.infoOtherList.forEach(item => {
+          arr.push(/^1[3-9]\d{9}$/.test(item.phone))
+        })
+        return arr
+      },
+      checkEntName () {
+        if (this.infoMap.company.trim().length > 50 || this.infoMap.company.trim().length < 2) {
+          return false
+        }
+        return true
+      },
+      checkOtherEntName () {
+        const arr = []
+        if(this.infoOtherList.length === 0) return []
+        this.infoOtherList.forEach(item => {
+          if (item.company.trim().length > 50 || item.company.trim().length < 2) {
+            arr.push(false)
+          } else {
+            arr.push(true)
+          }
+        })
+        return arr
+      },
+      checkEntType() {
+        if (this.infoMap.companyType === '') {
+          return false
+        }
+        return true
+      },
+      isMoreSelect () {
+        return this.popInfo.label === '公司类型'
+      },
+      checkPosition () {
+        if (this.infoMap.position !== "" && this.infoMap.position !== '其他') {
+          return true
+        }
+        if (this.infoMap.position_other.length > 50) {
+          return false
+        }
+        var namereg = /^[\u4E00-\u9FA5A-Za-z\s]+(·[\u4E00-\u9FA5A-Za-z]+)*$/;
+        return namereg.test(this.infoMap.position_other)
+      },
+      checkBranch(){
+        if(this.infoMap.position.indexOf('总裁') > -1 || this.infoMap.position.indexOf('总经理') > -1){
+          return false
+        } else if(this.infoMap.branch !== ""){
+          return false
+        }else{
+          return true
+        }
+      },
+      isSubmitDisabled () {
+        const hasOtherName = this.checkOtherName.includes(false)
+        const hasOtherPhone = this.checkOtherPhone.includes(false)
+        const hasOtherEntName = this.checkOtherEntName.includes(false)
+        return !this.checkName || !this.checkPhone || !this.checkEntName || !this.vercodecor || hasOtherName || hasOtherPhone || hasOtherEntName || this.haveSamePhone
+      },
+      isNextDisabled () {
+        var type = this.popInfo.label
+        var result = false
+        switch (type) {
+          case '职位': {
+            result = this.conditionMap[type].filter(v => v.checked).length
+            break
+          }
+          case '部门': {
+            result = this.conditionMap[type].filter(v => v.checked).length
+            break
+          }
+          case '公司类型': {
+            result = this.conditionMap[type].filter(v => v.checked).length
+            break
+          }
+        }
+        return !result
+      },
+      showBranch () {
+        // 切换到总裁或总经理之后 把之前选择的部门清空
+        if (this.infoMap.position.indexOf('总裁') > -1 || this.infoMap.position.indexOf('总经理') > -1) {
+          this.infoMap.branch = ''
+          this.conditionMap['部门'].forEach(v => {
+            v.checked = false
+          })
+        }
+        var zc = this.infoMap.position.indexOf('总裁') > -1
+        var zjl = this.infoMap.position.indexOf('总经理') > -1
+        return !(zc || zjl) && this.infoMap.position
+      }
+    },
+    methods: {
+      // 活动结束 跳转到首页
+      closeDialog () {
+        location.replace('/jy_mobile/tabbar/home')
+      },
+      // 添加报名人
+      addInfo () {
+        const { company, companyType } = this.infoMap
+        const infoObj = {
+          name: '',
+          phone: '',
+          company: company,
+          companyType: companyType,
+          position: '',
+          position_other: '',
+          branch: ''
+        }
+        const infoOtherCheck = {
+          name: '',
+          phone: '',
+          company: '',
+          position: '',
+          position_other: '',
+          branch: ''
+        }
+        this.infoOtherList.push(infoObj)
+        this.infoOtherCheckMap.push(infoOtherCheck)
+      },
+      deleteInfo (index, id) {
+        this.deleteInfoShow = true
+        this.deleteInfoId = {
+          index: index,
+          id: id
+        }
+      },
+      // 确定删除
+      deleteInfoConfirm () {
+        // 如果留资接口里有代报名人信息,则删除代报名人信息
+        if (this.salesLeadsInfoData?.exhRes?.applicants) {
+          // 无id,删除数组对应下标值
+          if (!this.deleteInfoId.id) {
+            this.infoOtherList.splice(this.deleteInfoId.index, 1)
+            this.$toast('删除成功')
+          } else {
+            // 有id,根据id调api删除,并刷新列表
+            this.deleteApi(this.deleteInfoId.id)
+          }
+        } else {
+          this.infoOtherList.splice(this.deleteInfoId.index, 1)
+          this.$toast('删除成功')
+        }
+        this.deleteInfoShow = false
+      },
+      deleteApi (id) {
+        $.ajax({
+          type: 'POST',
+          url: '/salesLeads/applicants',
+          data: {
+            id: id,
+            source: this.ajaxParams.source,
+            exhCode: this.ajaxParams.exhCode
+          },
+          success:function(res) {
+            if(res && res.error_code === 0) {
+              this.infoOtherList.splice(this.deleteInfoId.index, 1)
+              this.infoOtherCheckMap.splice(this.deleteInfoId.index, 1)
+            }
+            this.$toast(res.error_msg)
+          }.bind(this)
+        })
+      },
+
+      // 顶部广告
+      openTopBanner: function () {
+        location.href = this.topBannerInfo.s_link
+      },
+      // 手机号输入事件
+      getInputPhone: function(value) {
+        let exhibition_phone = sessionStorage.getItem('exhibition_phone')
+        if(value === exhibition_phone) {
+          // this.setcodeShow = false
+        } else {
+          // this.setcodeShow = true
+        }
+      },
+      // 点击发送验证码
+      sendMsg: function () {
+        let _this = this
+        if(!this.checkPhone) return
+        $.ajax({
+          type: 'POST',
+          url: '/salesLeads/sendMsg',
+          data: {
+            phoneNum: _this.infoMap.phone,
+            source: this.ajaxParams.source
+          },
+          success:function(res) {
+            console.log(res)
+            if(res.data.success) {
+              _this.countdown()
+            }else{
+              if (res.data.msg.indexOf("phoneErr")>-1){
+                _this.showToast("手机号错误")
+              }else if (res.data.msg.indexOf("sended")>-1){
+                _this.showToast("验证码已发送")
+              }else{
+                _this.showToast(res.data.msg)
+              }
+            }
+          }
+        })
+      },
+      // 验证码输入事件
+      getCheckCode: function() {
+        let _this = this
+        if(this.infoMap.vercode.length == 6){
+          $.ajax({
+              url:'/salesLeads/checkCode',
+              type:'POST',
+              data:{
+                  phoneNum:_this.infoMap.phone,
+                  code:_this.infoMap.vercode
+              },
+              success:function(res) {
+                if(res.error_code == 0) {
+                  _this.vercodecor = res.data.flag
+                  if(res.data.flag) {
+                    _this.$toast('验证码正确')
+                  }else{
+                    _this.$toast('验证码错误')
+                  }
+                  _this.getCheckMap('vercode')
+                }
+              },
+              error:function(err) {
+                  console.log(err)
+              }
+          })
+        } else {
+          _this.getCheckMap('vercode')
+        }
+      },
+      ajaxFn: function (url, data, callback, type) {
+        return $.ajax({
+          type: 'post',
+          url: url,
+          contentType: type ? 'application/x-www-form-urlencoded' : "application/json;charset=utf-8",
+          data: type ? data : JSON.stringify(data),
+          dataType: "json",
+          success: typeof callback === 'function' ? callback.bind(this) : new Function()
+        })
+      },
+      // 倒计时
+      countdown() {
+        let _this = this
+        this.sendShow = false
+        var time=60;
+        setTime=setInterval(function(){
+            if(time<=0){
+              _this.sendShow = true
+              time=59
+              clearInterval(setTime);
+              return;
+            }
+            time--;
+            $(".timedown").text(time+'s');
+        },1000);
+      },
+      ajaxGetEchoInfo() {
+        this.isEchoInfoLoading = true
+        const s_reset_param = sessionStorage.getItem('s_reset_param')
+        const reset = s_reset_param ? `&reset= ${sessionStorage.getItem('s_reset_param')}` : ''
+        sessionStorage.removeItem('s_reset_param')
+        this.ajaxFn('/salesLeads/retainedCapital' + '?source=' + this.ajaxParams.source + '&exhCode=' + this.ajaxParams.exhCode + reset, {source: this.ajaxParams.source, exhCode:this.ajaxParams.exhCode}, function (r) {
+          this.isEchoInfoLoading = false
+          if (r && r.info) {
+            r.data = r.info
+          }
+          // 广告及手机号是否绑定相关业务逻辑
+          var needVerifyBindPhone = false
+          if (r && r.active && Object.keys(r.active).length) {
+            if (r.active.adList && r.active.adList.length) {
+              this.topBannerInfo = r.active.adList[0]
+            } else {
+              this.topBannerInfo = {}
+            }
+            needVerifyBindPhone = r.active.bindOrNot
+          }
+          if(r && r.exhRes && Object.keys(r.exhRes).length) {
+            if(r.exhRes.signState === 1) {
+              if(!reset) {
+                this.pageShow = true
+                setTimeout(() => {
+                  location.href = r.exhRes.href
+                  this.pageShow = false
+                }, 1000)
+              }
+            } else if (r.exhRes.signState === -1) {
+              this.activeEndShow = true
+            }
+          }
+          // 原留资业务
+          if (r && r.error_msg === '' && r.data) {
+            this.salesLeadsInfoData = r
+            if(r.data.phone != '' && !needVerifyBindPhone) {
+              this.vercodecor = true
+              this.setcodeShow = false
+              // sessionStorage.setItem('exhibition_phone', r.data.phone)
+            } else {
+              this.setcodeShow = true
+            }
+            this.setEchoInfo(r)
+            // var result = checkRequiredKeys(['name', 'phone', 'company', 'companyType', 'mail', 'position', 'branch'], r.data)
+            // if (result) {
+            //   var skipAuto = ['jyarticle_see3', 'article_collection', 'article_original', 'jypush_see10']
+            //   var _this = this
+            //   var canAuto = !skipAuto.some(function (v) {
+            //     return _this.ajaxParams.source.indexOf(v) > -1
+            //   })
+            //   this.submitForm(canAuto)
+            // }
+          }
+        })
+      },
+      highlightText (value, keyStr) {
+        return utils.replaceKeyword(value, keyStr, '<span class="highlight-text">' + keyStr + '</span>')
+      },
+      entOnChange (type) {
+        if (type === 'blur') {
+          this.getCheckMap('company')
+          setTimeout(() => {
+            this.isAssociateShow = false
+            this.searchList = []
+          }, 300)
+        } else {
+          clearTimeout(this.isAssociateUpTime)
+          this.isAssociateUpTime = setTimeout(() => {
+            this.ajaxEntList(this.infoMap.company)
+          }, 200)
+        }
+      },
+      entOtherOnChange (type, index) {
+        if (type === 'blur') {
+          this.getOtherCheckMap('company')
+          setTimeout(() => {
+            this.infoOtherList[index].isAssociateShow = false
+            this.searchList = []
+          }, 300)
+        } else {
+          clearTimeout(this.isAssociateUpTime)
+          this.isAssociateUpTime = setTimeout(() => {
+            this.ajaxEntList(this.infoOtherList[index].company, index)
+          }, 200)
+        }
+      },
+      selectEnt (item, index) {
+        if (index || index === 0) {
+          this.infoOtherList[index].company = item
+          this.infoOtherList[index].isAssociateShow = false
+        } else {
+          this.infoMap.company = item
+          this.isAssociateShow = false
+        }
+        this.searchList = []
+      },
+      ajaxEntList (str, index) {
+        if (str.length <= 2) {
+          return
+        }
+        this.ajaxFn('/jypay/user/company/association', { name: str,companyCount:10 }, function (r) {
+          if (r && r.error_msg === '' && r.data) {
+            if(index || index === 0) {
+              this.infoOtherList[index].isAssociateShow = true
+            } else {
+              this.isAssociateShow = true
+            }
+            this.searchList = r.data
+            this.$forceUpdate()
+          }
+        }, true)
+      },
+      setEchoInfo (r) {
+        data = r.data
+        this.infoMap.id = data.id
+        this.setCheckInfo(data)
+        if (r?.exhRes.applicants && r?.exhRes.applicants.length) {
+          this.infoOtherList = r?.exhRes.applicants
+          const infoCheckMapObj = {
+            name: '',
+            phone: '',
+            vercode: '',
+            email: '',
+            company: '',
+            position: '',
+            position_other: '',
+            branch: ''
+          }
+          r?.exhRes.applicants.forEach((v, i) => {
+            this.setCheckInfo(v, i)
+            this.infoOtherCheckMap.push(infoCheckMapObj)
+          })
+        }
+      },
+      setCheckInfo (data, index) {
+        if (data.companyType) {
+          this.setCheckForData('companyType', 'companyType', data.companyType, '公司类型', index)
+        }
+        if (data.position) {
+          this.setCheckForData('position', 'position', data.position, '职位', index)
+        }
+        if (data.name) {
+          this.setCheckForData('name', 'name', data.name, '', index)
+        }
+        if (data.phone) {
+          this.setCheckForData('phone', 'phone', data.phone, '', index)
+        }
+        if (data.company) {
+          this.setCheckForData('company', 'company', data.company, '', index)
+        }
+        if (data.branch) {
+          this.setCheckForData('branch', 'branch', data.branch, '部门', index)
+        }
+      },
+      setCheckForData (aKey, iKey, cKey, label, i) {
+        if (i || i === 0) {
+          // 进页面根据下标回显对应值
+          this.infoOtherList[i][iKey] = cKey
+          if (iKey === 'branch') {
+            this.infoOtherList[i]['showBranch'] = true
+          }
+        } else {
+          // 操作逻辑:根据下标显示对应报名人信息
+          if (this.optionInfoAppcant.index || this.optionInfoAppcant.index === 0) {
+            this.infoOtherList[this.optionInfoAppcant.index][iKey] = cKey
+          } else {
+            this.infoMap[iKey] = cKey
+          }
+        }
+        if (iKey === 'position') {
+          if (i || this.optionInfoAppcant.index || this.optionInfoAppcant.index === 0) {
+            const setOption = this.infoOtherList[i || this.optionInfoAppcant.index]
+            // 切换到总裁或总经理之后 把之前选择的部门清空
+            if (setOption.position.indexOf('总裁') > -1 || setOption.position.indexOf('总经理') > -1) {
+              setOption.branch = ''
+              this.conditionMap['部门'].forEach(v => {
+                v.checked = false
+              })
+            }
+            var zc = setOption.position.indexOf('总裁') > -1
+            var zjl = setOption.position.indexOf('总经理') > -1
+            setOption['showBranch'] = !(zc || zjl) && setOption.position
+          }
+        }
+        this.ajaxParams[aKey] = cKey
+        if (label === '职位' && this.jobJson.indexOf(cKey) === -1) {
+            // this.infoMap[iKey] = '其他'
+            // this.infoMap.position_other = cKey.split('/')[1]
+            this.infoMap[iKey] = ''
+            this.infoMap.position_other = ''
+        }
+        if (label) {
+          var checkDatas = [cKey]
+          if (label === '公司类型') {
+            checkDatas = cKey.split(',')
+          }
+          this.conditionMap[label].forEach(v => {
+            if (checkDatas.indexOf(v.title) !== -1) {
+              v.checked = true
+            }
+          })
+        }
+      },
+      submitPop() {
+        var type = this.popInfo.label
+        switch (type) {
+          case '职位': {
+            var tempData = this.conditionMap[type].filter(v => v.checked)
+            this.setCheckForData('position', 'position', tempData[0].title)
+            break
+          }
+          case '部门': {
+            var tempData = this.conditionMap[type].filter(v => v.checked)
+            this.setCheckForData('branch', 'branch', tempData[0].title)
+            break
+          }
+          case '公司类型': {
+            var tempData = this.conditionMap[type].filter(v => v.checked).map(v => v.title)
+            this.setCheckForData('companyType', 'companyType', tempData.join(','))
+            break
+          }
+        }
+        this.popInfo.show = false
+      },
+      openPop(type, info, index) {
+        this.optionInfoAppcant = info ? info : this.infoMap
+        if(index || index === 0) {
+          this.optionInfoAppcant.index = index
+        }
+        switch (type) {
+          case '职位': {
+            this.popInfo.title = '职位'
+            break
+          }
+          case '部门': {
+            this.popInfo.title = '部门'
+            break
+          }
+          case '公司类型': {
+            this.popInfo.title = '公司类型'
+            break
+          }
+        }
+        this.popInfo.label = type
+        this.popInfo.show = true
+        this.conditionMap[this.popInfo.label].forEach((v) => {
+          v.checked = false
+        })
+        // 公司类型回显
+        if (this.optionInfoAppcant.companyType) {
+          let selectCompanyType = []
+          if (this.optionInfoAppcant.companyType.indexOf(',') !== -1) {
+            selectCompanyType = this.optionInfoAppcant.companyType.split(',')
+          } else {
+            selectCompanyType = [this.optionInfoAppcant.companyType]
+          }
+          this.conditionMap[this.popInfo.label].forEach((v) => {
+            v.checked = false
+            selectCompanyType.forEach((s) => {
+              if(s === v.title) {
+                v.checked = true
+              }
+            })
+          })
+        }
+        // 职位回显
+        if (this.optionInfoAppcant.position) {
+          this.conditionMap[this.popInfo.label].forEach((v) => {
+            if(this.optionInfoAppcant.position === v.title) {
+              v.checked = true
+            }
+          })
+        }
+        // 部门回显
+        if (this.optionInfoAppcant.branch && type === '部门') {
+          this.conditionMap[this.popInfo.label].forEach((v) => {
+            if(this.optionInfoAppcant.branch === v.title) {
+              v.checked = true
+            }
+          })
+        }
+      },
+      onSelectItem (item, index) {
+        if (this.isMoreSelect) {
+          item.checked = !item.checked
+        } else {
+          this.conditionMap[index].forEach(function (v) {
+            v.checked = false
+          })
+          item.checked = true
+        }
+      },
+      getCheckMap (type) {
+        switch (type) {
+            case 'name': {
+              this.infoCheckMap.name = this.infoMap.name === '' ? '姓名为必填项' : ''
+              if (this.infoCheckMap.name === '' && !this.checkName) {
+                this.infoCheckMap.name = '请输入正确格式的姓名'
+              }
+              break
+            }
+            case 'phone': {
+              this.infoCheckMap.phone = this.infoMap.phone === '' ? '手机号码为必填项' : ''
+              if (this.infoCheckMap.phone === '' && !this.checkPhone) {
+                this.infoCheckMap.phone = '请输入正确格式的手机号码'
+              } else {
+                const phoneArr = []
+                phoneArr.push(this.infoMap.phone)
+                this.infoOtherList.forEach(v => {
+                  phoneArr.push(v.phone)
+                })
+                const sameIndex = this.findDuplicateIndex(phoneArr)
+                if(sameIndex!== -1 && this.infoMap.phone) {
+                  this.infoCheckMap.phone = '该手机号已报名'
+                  this.haveSamePhone = true
+                } else {
+                  if(!this.infoCheckMap.phone) {
+                    this.infoCheckMap.phone = ''
+                    this.infoOtherCheckMap.forEach(v => {
+                      v.phone = ''
+                    });
+                    this.haveSamePhone = false
+                  }
+                }
+              }
+              break
+            }
+            case 'vercode': {
+              this.infoCheckMap.vercode = this.infoMap.vercode === '' ? '验证码为必填项' : ''
+              if (this.infoMap.vercode.length != 6 || !this.vercodecor) {
+                this.infoCheckMap.vercode = '请输入正确的验证码'
+              } else {
+                this.infoCheckMap.vercode = ''
+              }
+              break
+            }
+            case 'company': {
+              this.infoCheckMap.company = this.infoMap.company === '' ? '公司名称为必填项' : ''
+              if (this.infoCheckMap.company === '' && !this.checkEntName) {
+                this.infoCheckMap.company = '请输入正确格式的公司名称'
+                if (this.infoMap.company.length < 2) {
+                  this.infoCheckMap.company = '公司名称至少输入2个字'
+                }
+                if (this.infoMap.company.length > 50) {
+                  this.infoCheckMap.company = '公司名称最多输入50个字'
+                }
+              }
+              // 关闭联想弹窗
+              setTimeout(() => {
+                this.isAssociateShow = false
+                this.searchList = []
+              }, 300)
+              break
+            }
+            case 'position': {
+              var isOther = this.infoMap.position === '其他' && this.infoMap.position_other === ''
+              this.infoCheckMap.position_other =  isOther ? '职位为必填项' : ''
+              if (this.infoCheckMap.position_other === '' && !this.checkPosition) {
+                this.infoCheckMap.position_other = '请输入正确格式的职位'
+              }
+              break
+            }
+        }
+      },
+      getOtherCheckMap (type, index) {
+        const infoMap = this.infoOtherList[index]
+        const infoCheckMap = this.infoOtherCheckMap[index]
+        switch (type) {
+            case 'name': {
+              infoCheckMap.name = infoMap.name === '' ? '姓名为必填项' : ''
+              if (infoCheckMap.name === '' && !this.checkOtherName[index]) {
+                infoCheckMap.name = '请输入正确格式的姓名'
+              }
+              break
+            }
+            case 'phone': {
+              infoCheckMap.phone = infoMap.phone === '' ? '手机号码为必填项' : ''
+              if (infoCheckMap.phone === '' && !this.checkOtherPhone[index]) {
+                infoCheckMap.phone = '请输入正确格式的手机号码'
+              } else {
+                const phoneArr = []
+                phoneArr.push(this.infoMap.phone)
+                this.infoOtherList.forEach(v => {
+                  phoneArr.push(v.phone)
+                })
+                const sameIndex = this.findDuplicateIndex(phoneArr)
+                if(sameIndex!== -1 && infoMap.phone) {
+                  this.infoOtherCheckMap[sameIndex - 1].phone = '该手机号已报名'
+                  this.haveSamePhone = true
+                } else {
+                  if(!this.infoOtherCheckMap[index].phone) {
+                    this.infoCheckMap.phone = ''
+                    this.infoOtherCheckMap.forEach(v => {
+                      v.phone = ''
+                    });
+                    this.haveSamePhone = false
+                  }
+                }
+              }
+              break
+            }
+            case 'company': {
+              infoCheckMap.company = infoMap.company === '' ? '公司名称为必填项' : ''
+              if (infoCheckMap.company === '' && !this.checkOtherEntName[index]) {
+                infoCheckMap.company = '请输入正确格式的公司名称'
+                if (infoMap.company.length < 2) {
+                  infoCheckMap.company = '公司名称至少输入2个字'
+                }
+                if (infoMap.company.length > 50) {
+                  infoCheckMap.company = '公司名称最多输入50个字'
+                }
+              }
+              setTimeout(() => {
+                this.infoOtherList[index].isAssociateShow = false
+                this.searchList = []
+                this.$forceUpdate()
+              }, 300)
+              break
+            }
+            case 'position': {
+              let checkOtherPosition = false
+              if (infoMap.position !== "" && infoMap.position !== '其他') {
+                checkOtherPosition = true
+              } else {
+                if (infoMap.position_other.length > 50) {
+                  checkOtherPosition = false
+                } else {
+                  var namereg = /^[\u4E00-\u9FA5A-Za-z\s]+(·[\u4E00-\u9FA5A-Za-z]+)*$/;
+                  checkOtherPosition = namereg.test(infoMap.position_other)
+                }
+              }
+              var isOther = infoMap.position === '其他' && infoMap.position_other === ''
+              infoCheckMap.position_other =  isOther ? '职位为必填项' : ''
+              if (infoCheckMap.position_other === '' && !checkOtherPosition) {
+                infoCheckMap.position_other = '请输入正确格式的职位'
+              }
+              break
+            }
+        }
+      },
+      findDuplicateIndex(arr) {
+        const seen = {};
+        for (let i = 0; i < arr.length; i++) {
+          if (seen[arr[i]]) {
+            return i;
+          }
+          seen[arr[i]] = true;
+        }
+        return -1;
+      },
+      cancelForm () {
+        setTimeout(() => {
+          this.$dialog.confirm({
+            title: ' ',
+            message: '您可以通过剑鱼标讯提供的全国招投标数据自助导出功能,指定关键词、发布时间、地区或行业等筛选条件,以Excel表格的形式打包下载,精准获取所需数据。',
+            className: 'ent-search-dialog no-infor',
+            overlayClass: 'z-2030',
+            showCancelButton: false,
+            getContainer: '.perfect-info-group',
+            confirmButtonText: '数据自助导出',
+          }).then(function () {
+            location.href = '/front/wx_dataExport/toSieve'
+          }).catch(function () {
+            history.back()
+          });
+        },300)
+        setTimeout(() => {
+          const htmlclose = `<span class="infor-icon-close"></span>`
+          $('.no-infor .van-dialog__header').html(htmlclose)
+        },400)
+      },
+      submitForm () {
+        this.ajaxParams.name = this.infoMap.name
+        this.ajaxParams.phone = this.infoMap.phone
+        this.ajaxParams.mail = this.infoMap.email
+        this.ajaxParams.company = this.infoMap.company
+        this.ajaxParams.companyType = this.infoMap.companyType
+        this.ajaxParams.position = this.infoMap.position
+        this.ajaxParams.id = this.infoMap.id
+        if(this.setcodeShow) {
+          this.ajaxParams.code = this.infoMap.vercode
+        }
+        if (this.infoMap.position === '其他') {
+          this.ajaxParams.position = '其他/' + this.infoMap.position_other
+        }
+        this.ajaxParams.branch = this.infoMap.branch.indexOf('总裁') > -1 || this.infoMap.branch.indexOf('总经理') > -1 ?  '' : this.infoMap.branch
+        if (this.infoOtherList.length) {
+          this.infoOtherList.forEach((v) => {
+            delete v.isAssociateShow
+            delete v.showBranch
+          })
+          this.ajaxParams.applicants = this.infoOtherList
+        }
+        var _this = this
+        var loading = _this.showLoading()
+        $.ajax({
+          type: 'POST',
+          url: '/salesLeads/collectInfo',
+          contentType: "application/json;charset=utf-8",
+          data: JSON.stringify(_this.ajaxParams),
+          success: function(r) {
+            loading.clear()
+            if (r.error_code === 0 && r.exhRes) {
+              location.href = r.exhRes.href
+            } else {
+              _this.showToast(r.error_msg || '提交失败')
+            }
+          },
+          error: function(err) {
+            loading.clear()
+            _this.showToast('提交失败')
+          }
+        })
+      },
+      showLoading: function () {
+        var loading = this.$toast.loading({
+          duration: 0,
+          forbidClick: true,
+          message: '提交中...',
+        })
+        return loading
+      },
+      showToast: function (message) {
+        this.$toast({
+          duration: 1500,
+          forbidClick: true,
+          message: message,
+        })
+      }
+    }
+  }
+  var vPerfect = new Vue(vNode)
+</script>
+<script>
+    $(function () {
+        $("#perfect-info-page").on('click tap', '.infor-icon-close', function(e) {
+            e.stopPropagation()
+            history.back()
+        })
+    })
+</script>
+{{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 181 - 0
src/web/templates/frontRouter/wx/bigmember/free/reg_success.html

@@ -0,0 +1,181 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+
+<head>
+    <title>报名</title>
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="format-detection" content="telephone=yes"/>
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <meta name="referrer" content="always">
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+    <script src="{{Msg "seo" "cdn"}}/js/jquery-3.2.1.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/big-member/js/rem.js"></script>
+    {{include "/common/weixin.html"}}
+
+    <!--S-当前页必定需要预加载的资源-->
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="preload" as="style" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/weixin/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    <!--E-当前页必定需要预加载的资源-->
+
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/index.css'/>
+    <link rel="stylesheet" href='//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/lib/icon/local.css'/>
+    <!--E-当前页面的css资源-->
+</head>
+<style>
+  .applicants-success {
+    width: 100%;
+    height: 100%;
+    background: #fff;
+  }
+ .applicants-success-content {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    padding: .8rem 0 .64rem;
+    width: 100%;
+    height: 100%;
+  }
+  .applicants-success-content-img{
+    width: 1.6rem;
+    height: 1.6rem;
+  }
+  .applicants-success-content-img>img{
+    width: 100%;
+    height: 100%;
+  }
+  .applicants-success-content-text-title{
+    font-size: .36rem;
+    color: #2ABED1;
+  }
+  .applicants-btns{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-top: .48rem;
+    padding: 0 .32rem;
+    width: 100%;
+    height: .8rem;
+  }
+  .applicants-btns .applicants-btns-btn{
+    width: 3.3rem;
+    height: .8rem;
+    border-radius: .08rem;
+    border: 1px solid rgba(0, 0, 0, 0.1);
+    font-size: .32rem;
+    color: #5F5E64;
+    background: #fff;
+  }
+  .applicants-btns .applicants-btns-btn.active{
+    border-color: #2ABED1;
+    color: #2ABED1;
+  }
+  .applicants-text-tip{
+    margin-top: .48rem;
+    color: #9B9CA3;
+    font-size: .3rem;
+    text-align: center;
+  }
+  .active-tip-group{
+    background: #F5F6F7;
+    padding: 0.16rem 0.16rem 0;
+  }
+</style>
+
+<body>
+<div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main applicants-success" id="applicants-success">
+        <div class="applicants-success-main">
+          <div class="applicants-success-content">
+            <div class="applicants-success-content-img">
+              <img src="{{Msg "seo" "cdn"}}/images/wx/checkbox.png?v={{Msg "seo" "version"}}" alt="">
+            </div>
+            <div class="applicants-success-content-text-title">报名成功</div>
+            <div class="applicants-btns">
+              <button class="applicants-btns-btn" @click="goBack">修改报名信息</button>
+              <button class="applicants-btns-btn active" @click="goDetail">查看会议详情</button>
+            </div>
+            <p class="applicants-text-tip">您也可通过以下途径查看会议详情<br/>【剑鱼标讯微信公众号-发现-待办-参会通知】</p>
+          </div>
+        </div>
+        <div class="active-tip-group" style="display: none;">
+          <img src="" alt="广告链接">
+        </div>
+    </div>
+</div>
+
+<script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script rel="preload" as="script" src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.8.2/vant.min.js></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/public/js/utils.js'></script>
+<script src="{{Msg "seo" "cdn"}}/common-module/message-tip/js/index.js?v={{Msg "seo" "version"}}"></script>
+{{include "/big-member/commonjs.html"}}
+<script>
+   var vNode = new Vue({
+      el: '#applicants-success',
+      data: {
+        params: {
+          source: utils.getParam('source'),
+          sign: utils.getParam('sign'),
+          exhCode: utils.getParam('exhCode'),
+        },
+        info: {}
+      },
+      mounted: function () {
+        this.getAdLink();
+      },
+      methods: {
+        goBack: function () {
+          sessionStorage.setItem('s_reset_param', 'u')
+          window.history.go(-1)
+        },
+        goDetail: function () {
+          window.location.href = this.info?.href
+        },
+        getAdLink: function() {
+          $.ajax({
+            url: '/salesLeads/exhibition/successInfo',
+            type: 'POST',
+            data: this.params,
+            dataType: 'json',
+            success: function (res) {
+              if (res.error_code === 0) {
+                this.info = res.exhRes
+                this.getAdImg()
+              } else {
+                this.$toast(res.error_msg)
+              }
+            }.bind(this)
+          })
+        },
+        getAdImg: function () {
+          //  广告位加载 公共js方法
+          // 根据支付订单类型 加载广告位
+          // 超级订阅、数据流量包、数据导出(线上支付方式)、课程产品
+          // if (title.indexOf('超级订阅') !== -1) {
+            var ActivedataType = this.info.adCode
+            var Activedata = JSON.stringify({codes:[ActivedataType] })
+            // 获取广告位图片
+            /**
+            * 获取后台广告方法
+            *  getActiveInfo: function (active_codes_map,isAppsion)
+            * @param {Array|String} active_codes_map 广告id标识符--数组集合["jy-wx-course-pay-success"]
+            * @param {String} isAppsion 请求环境、app、weixin、pc
+            */
+            getActive.getActiveInfo(Activedata,'wx')
+        }
+      }
+    });
+
+</script>
+{{include "/common/baiducc.html"}}
+</body>
+
+</html>