浏览代码

Merge branch 'master' into feature/v4.9.43

yuelujie 11 月之前
父节点
当前提交
5f2ba4151b
共有 41 个文件被更改,包括 1236 次插入105 次删除
  1. 9 6
      src/jfw/front/nzjProject.go
  2. 54 27
      src/jfw/front/shorturl.go
  3. 3 0
      src/jfw/modules/app/src/app/filter/loginfilter.go
  4. 23 0
      src/jfw/modules/app/src/app/front/seo.go
  5. 37 24
      src/jfw/modules/app/src/app/front/shorturl.go
  6. 37 2
      src/jfw/modules/app/src/web/staticres/jyapp/css/wxinfocontent.css
  7. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/images/logo-header.png
  8. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/images/tabbar/detail.png
  9. 11 10
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  10. 116 0
      src/jfw/modules/app/src/web/staticres/jyapp/seo/css/subscribe.css
  11. 175 0
      src/jfw/modules/app/src/web/staticres/jyapp/seo/css/workbench.css
  12. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/app-module.png
  13. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/border-bg.png
  14. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/email-module.png
  15. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/login-btn.jpg
  16. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-1.png
  17. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-2.jpg
  18. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-3.jpg
  19. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-4.png
  20. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-5.jpg
  21. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-bg.jpg
  22. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/workbench-bg.png
  23. 二进制
      src/jfw/modules/app/src/web/staticres/jyapp/seo/images/wx-module.png
  24. 41 2
      src/jfw/modules/app/src/web/staticres/jyapp/tags/css/tags-module-common.css
  25. 93 0
      src/jfw/modules/app/src/web/templates/frontRouter/seo/free/subscribe.html
  26. 267 0
      src/jfw/modules/app/src/web/templates/frontRouter/seo/free/workbench.html
  27. 6 4
      src/jfw/modules/app/src/web/templates/tags/class.html
  28. 6 4
      src/jfw/modules/app/src/web/templates/tags/details.html
  29. 6 4
      src/jfw/modules/app/src/web/templates/tags/strategy.html
  30. 25 0
      src/jfw/modules/app/src/web/templates/tags/template/article-tabbar.html
  31. 100 0
      src/jfw/modules/app/src/web/templates/tags/template/tabbar.html
  32. 12 0
      src/jfw/modules/app/src/web/templates/tags/template/tag-new-header.html
  33. 86 0
      src/jfw/modules/app/src/web/templates/weixin/404.html
  34. 18 10
      src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html
  35. 0 3
      src/jfw/modules/publicapply/src/filter/cookie.go
  36. 二进制
      src/web/staticres/commonFunctions/recommend-1.png
  37. 二进制
      src/web/staticres/commonFunctions/recommend-2.png
  38. 二进制
      src/web/staticres/commonFunctions/recommend-3.png
  39. 二进制
      src/web/staticres/commonFunctions/recommend-4.png
  40. 8 9
      src/web/staticres/entnichePush/js/common.js
  41. 103 0
      src/web/templates/pc/tags/404.html

+ 9 - 6
src/jfw/front/nzjProject.go

@@ -217,15 +217,15 @@ func (l *ClaimProject) NzjDetails() {
 	equity := nzjEquity(l.Session())
 	pid := l.GetString("pid")
 	id := encrypt.SE2.Decode4Hex(pid)
-	if id == "" {
+	data, err := getDetail(id, equity)
+	if err != nil {
 		l.ServeJson(map[string]interface{}{
 			"error_code": -1,
-			"error_msg":  "错误id",
+			"error_msg":  err.Error(),
 			"data":       nil,
 		})
 		return
 	}
-	data := getDetail(id, equity)
 	l.ServeJson(map[string]interface{}{
 		"error_code": 0,
 		"error_msg":  nil,
@@ -246,19 +246,22 @@ type ProjectConnection struct {
 	Data         interface{} `json:"data"`
 }
 
-func getDetail(pid string, equity int) map[string]interface{} {
+func getDetail(pid string, equity int) (map[string]interface{}, error) {
 	var codeContent string
 	detail := make(map[string]interface{})
 	if pid == "" {
-		return detail
+		return detail, fmt.Errorf("信息id解析错误")
 	}
 	if equity < 3 {
 		codeContent = common.If(equity == 1, "登陆后解锁会员查看", "(付费展示)").(string)
 	}
 	detail = BasicInfo(pid, codeContent, equity)
+	if len(detail) == 0 {
+		return detail, fmt.Errorf("查询内容为空")
+	}
 	detail["follRecord"] = ProjectProgress(pid, equity)
 	detail["contact"] = EntConnection(pid, codeContent, equity)
-	return detail
+	return detail, nil
 }
 
 // BasicInfo 基本信息

+ 54 - 27
src/jfw/front/shorturl.go

@@ -48,6 +48,7 @@ type Short struct {
 	nologinArticle xweb.Mapper `xweb:"/nologin/(\\w+)/(.*).html"`   //([pm]) 无需登录
 	whiteList      xweb.Mapper `xweb:"/initialize/whiteList"`       //白名单初始化
 	clearCache     xweb.Mapper `xweb:"/front/free/clearCache"`      //清楚缓存
+	notFindPage    xweb.Mapper `xweb:"/front/notFind"`              //清楚缓存
 }
 
 var (
@@ -100,6 +101,10 @@ var (
 	cacheLock  = sync.Mutex{}
 )
 
+func (s *Short) NotFindPage() error {
+	return s.Render("/pc/tags/404.html")
+}
+
 func (s *Short) ClearCache() {
 	defer util.Catch()
 	cacheLock.Lock()
@@ -179,16 +184,28 @@ func (s *Short) Article(stype, id string) error {
 	}
 	//PC端未登录用户程序走此逻辑  WX端走原来逻辑
 	if !bm && (stype == "content" || stype == "indexcontent" || stype == "mailprivate") && userId == "" {
-		//if seoAgentReg.MatchString(s.UserAgent()) {
 		sids := encrypt.CommonDecodeArticle(stype, id)
-		return s.NologinCommon("", stype, id, sids[0])
-		//} else {
-		//	return s.Redirect("/notin/page")
-		//}
+		if len(sids) == 0 || (len(sids) > 0 && sids[0] == "") {
+			return s.Redirect(getErrPageUrl(bm, DecodeErr), 302)
+		}
+		return s.NologinCommon("", stype, id, sids[0], bm)
 	}
 	return s.LoginCommon(sess, stype, id, bm)
 }
 
+const (
+	DecodeErr = iota + 1
+	QueryErr
+	UndefinedType
+)
+
+func getErrPageUrl(isMobile bool, t int) string {
+	if isMobile {
+		return fmt.Sprintf("/jyapp/notFind?t=%d", t)
+	}
+	return fmt.Sprintf("/front/notFind?t=%d", t)
+}
+
 func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bool) error {
 	userId, _ := sess["userId"].(string)
 	log.Println(stype, "----stype:---", id, "---userId---:", userId, "----", bm)
@@ -207,10 +224,15 @@ func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bo
 		}
 		//P406登录用户标讯详情页改版
 		if userId != "" {
-			s.T["title"], s.T["keywords"], s.T["description"] = GetTDK(stype, encrypt.CommonDecodeArticle(stype, id)[0])
+			sids := encrypt.CommonDecodeArticle(stype, id)
+			if len(sids) == 0 || (len(sids) > 0 && sids[0] == "") {
+				s.Redirect(getErrPageUrl(bm, DecodeErr), 302)
+				return nil
+			}
+			s.T["title"], s.T["keywords"], s.T["description"] = GetTDK(stype, sids[0])
 			return s.Render("/pc/detail/biddetail_login.html", &s.T)
 		}
-	} else if userId != "" { //&& strings.Contains(s.Request.RequestURI, "article")
+	} else if userId != "" { //移动端登录
 		//mobileHtmlKey := "jy_mobile_index_wx"
 		var loginPageInfo = func() (body []byte) {
 			// 获取页面内容
@@ -278,19 +300,22 @@ func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bo
 		aboutUrl += "&from=" + from_userid
 	}
 	if !Map_stype[stype] {
-		s.Redirect("/not/nottype", 302)
-		return nil
+		return s.Redirect(getErrPageUrl(bm, UndefinedType), 302)
 	} else if stype == "content" || stype == "bdcontent" || stype == "advancedProject" {
 		if userId == "" { //} && !regclient.MatchString(client) { //没有用户session //搜索引擎让过
 			s.Session().Set("referer", s.Request.RequestURI)
 			if bm { //是否是移动端访问
 				s.Redirect(aboutUrl, 302)
+				return nil
 			} else {
 				if stype == "bdcontent" {
 					var retMap = make(map[string]interface{})
 					stype = "content"
-					_id := encrypt.CommonDecodeArticle(stype, id)[0]
-					_, _, _, obj := pcVRT(_id, "", stype, true, true)
+					sids := encrypt.CommonDecodeArticle(stype, id)
+					if len(sids) == 0 || (len(sids) > 0 && sids[0] == "") {
+						return s.Redirect(getErrPageUrl(bm, DecodeErr), 302)
+					}
+					_, _, _, obj := pcVRT(sids[0], "", stype, true, true)
 					if obj != nil && len(obj) > 0 {
 						retMap["_id"] = url.QueryEscape(id)
 						retMap["title"], _ = obj["title"].(string)
@@ -306,7 +331,7 @@ func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bo
 					s.T["obj"] = retMap
 					s.Render("/pc/biddetail_bd.html", &s.T)
 				} else {
-					s.Redirect("/notin/page", 302)
+					s.Redirect(getErrPageUrl(bm, UndefinedType), 302)
 				}
 			}
 			return nil
@@ -321,8 +346,7 @@ func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bo
 		sid := encrypt.SE3.DecodeString(id)
 		log.Println("----sid:---", sid)
 		if len(sid) == 0 || (len(sid) > 0 && sid == "") { //未登录用户没有权限访问---userId == "" ||   未登录可以访问来自陈 11.29
-			s.Redirect("/notin/page", 302)
-			return nil
+			return s.Redirect(getErrPageUrl(bm, DecodeErr), 302)
 		}
 		catchKey := fmt.Sprintf("jypcdetail_%s_%s_%s", userId, stype, sid)
 		if res := redis.Get(redisLimitation, catchKey); res == nil || res == "" {
@@ -390,6 +414,8 @@ func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bo
 				content, _ := s.Render4Cache("/pc/biddetail_rec.html", &s.T)
 				redis.Put(redisLimitation, catchKey, string(content), 60*20)
 				return s.SetBody(content)
+			} else {
+				return s.Redirect(getErrPageUrl(bm, QueryErr), 302)
 			}
 		} else {
 			return s.SetBody([]byte(res.(string)))
@@ -462,8 +488,7 @@ func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bo
 		sid_openid := encrypt.CommonDecodeArticle(stype, id)
 		switch len(sid_openid) {
 		case 0:
-			s.Redirect(aboutUrl, 302)
-			return nil
+			return s.Redirect(getErrPageUrl(bm, DecodeErr), 302)
 		default:
 			shareopenid, sid = SwiDef(sid_openid)
 		}
@@ -587,15 +612,15 @@ func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bo
 			s.T["rewardText"], s.T["advertText"] = getRewardText()
 			content, _ := s.Render4Cache("/weixin/wxinfocontent_rec.html", &s.T)
 			return s.SetBody(content)
-		}
-		if surl != "" {
+		} else if surl == "" {
+			return s.Redirect(getErrPageUrl(bm, QueryErr), 302)
+		} else {
 			return s.Redirect(surl)
 		}
 	} else {
 		sids := encrypt.CommonDecodeArticle(stype, id)
 		if len(sids) == 0 || (len(sids) > 0 && sids[0] == "") {
-			s.Redirect("/notin/page", 302)
-			return nil
+			return s.Redirect(getErrPageUrl(bm, DecodeErr), 302)
 		}
 		sid := sids[0]
 		//免费用户浏览三级页判断留资与浏览次数
@@ -751,6 +776,8 @@ func (s *Short) LoginCommon(sess map[string]interface{}, stype, id string, bm bo
 				redis.Put(redisLimitation, catchKey, string(content), redisTimeOut)
 				return s.SetBody(content)
 				//return s.Render("/pc/biddetail_rec.html", &s.T)
+			} else {
+				return s.Redirect(getErrPageUrl(bm, QueryErr), 302)
 			}
 		} else {
 			return s.SetBody([]byte(res.(string)))
@@ -1322,24 +1349,22 @@ func (s *Short) NologinArticle(stype, id string) error {
 	sess := s.Session().GetMultiple()
 	userId := util.ObjToString(sess["userId"])
 	sids := encrypt.CommonDecodeArticle(stype, id)
+	bm := mobileReg.MatchString(s.Header("User-Agent"))
 	if len(sids) == 0 || (len(sids) > 0 && sids[0] == "") {
-		s.Redirect("/notin/page", 302)
-		return nil
+		return s.Redirect(getErrPageUrl(bm, DecodeErr), 302)
 	}
 	if detailNeedMosaic == nil {
 		detailNeedMosaic, _ = config.Sysconfig["detailNeedMosaic"].(map[string]interface{})
 	}
-	//urlStr := strings.ReplaceAll(s.Request.URL.String(), "nologin", "article")
-	//return s.Redirect(urlStr, 301)
 
 	if userId != "" { //已登录用户直接跳转至正常三级页
-		return s.LoginCommon(sess, stype, id, mobileReg.MatchString(s.Header("User-Agent"))) //是否是移动端
+		return s.LoginCommon(sess, stype, id, bm) //是否是移动端
 	}
 
-	return s.NologinCommon(userId, stype, id, sids[0])
+	return s.NologinCommon(userId, stype, id, sids[0], bm)
 }
 
-func (s *Short) NologinCommon(userId, stype, id, sid string) error {
+func (s *Short) NologinCommon(userId, stype, id, sid string, isMobile bool) error {
 	tg := &Tags{}
 	var ipTrue bool
 	ips := strings.Split(util.GetIp(s.Request), ",")
@@ -1416,6 +1441,8 @@ func (s *Short) NologinCommon(userId, stype, id, sid string) error {
 			content, _ := s.Render4Cache("/pc/tags/detail.html", &s.T)
 			redis.Put(redisLimitation, catchKey, string(content), 60*2)
 			return s.SetBody(content)
+		} else {
+			return s.Redirect(getErrPageUrl(isMobile, QueryErr), 302)
 		}
 	} else {
 		return s.SetBody([]byte(res.(string)))

+ 3 - 0
src/jfw/modules/app/src/app/filter/loginfilter.go

@@ -39,6 +39,9 @@ var urls = []*regexp.Regexp{
 	regexp.MustCompile("^/jyapp/new/.*"),
 	regexp.MustCompile("^/jyapp/m/.*"),
 	regexp.MustCompile("^/jyapp/checkSubscribe$"),
+	regexp.MustCompile("^/jyapp/workbench/$"),
+	regexp.MustCompile("^/jyapp/freesubscribe/$"),
+	regexp.MustCompile("^/jyapp/notFind$"),
 }
 
 type loginFilter struct {

+ 23 - 0
src/jfw/modules/app/src/app/front/seo.go

@@ -0,0 +1,23 @@
+package front
+
+import (
+	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
+)
+
+type SeoRouter struct {
+	*xweb.Action
+	freeSubscribe xweb.Mapper `xweb:"/jyapp/freesubscribe/"`
+	workbench     xweb.Mapper `xweb:"/jyapp/workbench/"`
+}
+
+func init() {
+	xweb.AddAction(&SeoRouter{})
+}
+
+func (f *SeoRouter) FreeSubscribe() {
+	f.Render("/frontRouter/seo/free/subscribe.html")
+}
+
+func (f *SeoRouter) Workbench() {
+	f.Render("/frontRouter/seo/free/workbench.html")
+}

+ 37 - 24
src/jfw/modules/app/src/app/front/shorturl.go

@@ -39,6 +39,7 @@ type Short struct {
 	whiteList    xweb.Mapper `xweb:"/jyapp/initialize/whiteList"`               //白名单初始化
 	transitRoute xweb.Mapper `xweb:"/jyapp/transit/(.*)"`                       //中转路由
 	clearCache   xweb.Mapper `xweb:"/jyapp/free/clearCache"`                    //清楚缓存
+	notFindPage  xweb.Mapper `xweb:"/jyapp/notFind"`                            //页面异常
 }
 
 func init() {
@@ -79,6 +80,10 @@ var (
 	cacheLock       = sync.Mutex{}
 )
 
+func (s *Short) NotFindPage() error {
+	return s.Render("/weixin/404.html")
+}
+
 func (s *Short) ClearCache() {
 	defer util.Catch()
 	cacheLock.Lock()
@@ -106,15 +111,23 @@ func (s *Short) WhiteList() error {
 	return nil
 }
 
+const (
+	DecodeErr = iota + 1
+	QueryErr
+	UndefinedType
+)
+
+func getErrPageUrl(isMobile bool, t int) string {
+	if isMobile {
+		return fmt.Sprintf("/jyapp/notFind?t=%d", t)
+	}
+	return fmt.Sprintf("/front/notFind?t=%d", t)
+}
+
 func (s *Short) Article(contentType, stype, id string) error {
 	//先判断是否有session
 	sess := s.Session().GetMultiple()
 	userId := util.ObjToString(sess["userId"])
-	//userId, _ := s.GetSession("userId").(string)
-	//if userId == "" {
-	//	return s.Redirect("/jyapp/free/swordfish/about", 302)
-	//}
-	//disWord := s.GetString("disWord")
 	userPower := jy.GetBigVipUserBaseMsg(s.Session(), *config.Middleground)
 	var (
 		belongUserId, email                                                string
@@ -176,11 +189,10 @@ func (s *Short) Article(contentType, stype, id string) error {
 	industry := s.GetString("industry")
 	var sid string
 	sid_openid := encrypt.CommonDecodeArticle(stype, id)
-	if len(sid_openid) == 0 {
-		return s.Redirect("/jyapp/free/swordfish/about", 302)
-	} else {
-		sid = sid_openid[0]
+	if (len(sid_openid) == 0 || sid_openid[0] == "") && surl == "" {
+		return s.Redirect(getErrPageUrl(true, DecodeErr), 302)
 	}
+	sid = sid_openid[0]
 
 	s.T["keywords"] = kds
 	var obj map[string]interface{}
@@ -191,17 +203,10 @@ func (s *Short) Article(contentType, stype, id string) error {
 		ipTrue = config.IpList.Match(ips[0])
 	}
 	log.Printf("三级页userid:%s ips %v", userId, ips)
-	obj = wxvisitD(sid, userId, (isVip && isOldVip) || isEntniche || isMember)
-	if len(obj) > 0 {
-		//if userId == "" && !ipTrue {
-		//	if util.ObjToString(obj["subtype"]) == "采购意向" || util.ObjToString(obj["subtype"]) == "拟建" {
-		//		rUrl := "/jyapp/free/login"
-		//		if util.ObjToString(obj["subtype"]) == "拟建" {
-		//			rUrl = fmt.Sprintf("%s?DisUrl=%s", rUrl, s.Request.URL)
-		//		}
-		//		return s.Redirect(rUrl)
-		//	}
-		//}
+	if sid != "" {
+		obj = wxvisitD(sid, userId, (isVip && isOldVip) || isEntniche || isMember)
+	}
+	if obj != nil && len(obj) > 0 && surl == "" {
 		if userId != "" {
 			if ((isVip && isOldVip) || isMember || isEntniche) || //老版本vip、大会员、商机管理
 				((isVip && !isOldVip) && (!(util.ObjToString(obj["subtype"]) == "拟建" || util.ObjToString(obj["subtype"]) == "采购意向"))) { //新超级订阅非采购意向”和“拟建项目”
@@ -273,7 +278,15 @@ func (s *Short) Article(contentType, stype, id string) error {
 		}
 		if canRead || (userId == "" && !ipTrue && util.ObjToString(obj["subtype"]) != "拟建" && util.ObjToString(obj["subtype"]) != "采购意向") {
 			if belongUserId != "" && belongUserId != userId && util.ObjToString(obj["subtype"]) != "拟建" && userId != "" { //分享开打的
-				article_id := encrypt.CommonDecodeArticle(stype, id)[0]
+				var (
+					arr        = encrypt.CommonDecodeArticle(stype, id)
+					article_id string
+				)
+				if len(arr) == 0 || arr[0] == "" {
+					return s.Redirect(getErrPageUrl(true, DecodeErr), 302)
+				}
+				article_id = arr[0]
+
 				key := fmt.Sprintf("integral_article_%s_%s_%s", article_id, belongUserId, userId)
 				if redis.Incr("other", key) == 1 {
 					redis.SetExpire("other", key, 60*60*24)
@@ -420,11 +433,11 @@ func (s *Short) Article(contentType, stype, id string) error {
 			log.Println("模板数据写入失败:", err.Error())
 		}
 		return s.SetBody(content)
-	}
-	if surl != "" {
+	} else if surl == "" {
+		return s.Redirect(getErrPageUrl(true, QueryErr), 302)
+	} else {
 		return s.Redirect(surl)
 	}
-	return s.Redirect("/jyapp/free/mob/err")
 }
 
 var typeUrlMap = map[string]string{

+ 37 - 2
src/jfw/modules/app/src/web/staticres/jyapp/css/wxinfocontent.css

@@ -1395,10 +1395,10 @@ ul {
   height: 18px;
 }
 .login-guide{
-  position: fixed;
+  /* position: fixed;
   left: 0;
   right: 0;
-  bottom: 0;
+  bottom: 0; */
   width: 100%;
   height: 1.44rem;
   z-index: 999;
@@ -1412,3 +1412,38 @@ ul {
   text-decoration-line: none!important;
   color: #171826!important;
 }
+
+.article-tabbar{
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  padding: .1rem 0;
+  min-height: 50px;
+  border-top: 1px solid rgba(0, 0, 0, 0.05);
+  background: #FFFFFF;
+}
+
+.article-tabbar .tabbar-container{
+  display: flex;
+  justify-content: space-around;
+  align-items: center;
+  height: 100%;
+}
+.article-tabbar .tabbar-container .tabbar-item{
+  flex: 1;
+  width: 33%;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  flex-shrink: 0;
+}
+.article-tabbar .tabbar-container .tabbar-item > img{
+  width: .48rem;
+  height: .48rem;
+}
+.article-tabbar .tabbar-container .tabbar-item > span{
+  font-size: .2rem;
+  line-height: .32rem;
+  color: #171826;
+}

二进制
src/jfw/modules/app/src/web/staticres/jyapp/images/logo-header.png


二进制
src/jfw/modules/app/src/web/staticres/jyapp/images/tabbar/detail.png


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

@@ -1684,7 +1684,8 @@ function loginSuccess (result, loginType) {
     })
   }
   //判断是否需要跳过设置密码和兴趣爱好
-  var isPass =  getParam("activity")
+  // P574移动端未登录调整:用户从标讯详情页注册后,不出现业务标签填写流程,直接跳转到登陆前url对应的h5链接
+  var isPass =  getParam("activity") || document.referrer.indexOf('/nologin/content/') > -1 || document.referrer.indexOf('/article/content/') > -1
   // 当前为新用户(即注册)--跳转设置密码页
    if(!isPass&&result.userInfo && result.userInfo.isNewUser) {
      var href ="/jyapp/free/setPwd";
@@ -1707,11 +1708,12 @@ function loginSuccess (result, loginType) {
       return
     }
   }
-
-  //分销跳转
-  if (getUrlParam("DisUrl") != null) {
+  //
+  var callBackUrl = getUrlParam("url", decodeURIComponent);
+  if (callBackUrl != null) {
     afterLoginSuccess("", true);
-    locationReplace(getUrlParam("DisUrl"));
+    //window.location.href = callBackUrl;
+    locationReplace(callBackUrl);
     return
   }
   //
@@ -1729,12 +1731,11 @@ function loginSuccess (result, loginType) {
   } else {
     window.history.back()
   }
-  //
-  var callBackUrl = getUrlParam("url", decodeURIComponent);
-  if (callBackUrl != null) {
+
+  //分销跳转
+  if (getUrlParam("DisUrl") != null) {
     afterLoginSuccess("", true);
-    //window.location.href = callBackUrl;
-    locationReplace(callBackUrl);
+    locationReplace(getUrlParam("DisUrl"));
     return
   }
   //

+ 116 - 0
src/jfw/modules/app/src/web/staticres/jyapp/seo/css/subscribe.css

@@ -0,0 +1,116 @@
+.subscribe-page{
+  padding-bottom: 1rem;
+  background: #FFFFFF;
+}
+.subscribe-header{
+  background: linear-gradient(to right,#F2F2F7, #FDFDFD);
+}
+.h5-body .subscribe-header > img,
+.wx-body .subscribe-header > img{
+  margin-top: -1.58rem;
+}
+.subscribe-page .module-1{
+  background: linear-gradient(to right,#F2F2F7, #FDFDFD);
+}
+.subscribe-page .module-1 h1{
+  position: relative;
+  padding-top: .32rem;
+  font-size: .48rem;
+  line-height: .68rem;
+  font-weight: bold;
+  text-align: center;
+  background: url(/jyapp/seo/images/border-bg.png) no-repeat center bottom;
+  background-size: 2.48rem .26rem;
+}
+.subscribe-page .module-1 h3{
+  margin-top: .12rem;
+  font-size: .4rem;
+  line-height: .64rem;
+  text-align: center;
+  background: url(/jyapp/seo/images/border-bg.png) no-repeat center bottom;
+  background-size: 5.2rem .26rem;
+}
+.subscribe-page .module-1 p{
+  padding: .48rem 0 .24rem;
+  font-size: .3rem;
+  line-height: .4rem;
+  text-align: center;
+  color: #5F5E64;
+  letter-spacing: 5px;
+  background: linear-gradient(to right,#F2F2F7, #FDFDFD);
+}
+.subscribe-page .module-2{
+  text-align: center;
+}
+.subscribe-page .module-2 .login-btn{
+  width: 100%;
+  height: auto;
+}
+.subscribe-page .module-3{
+  padding: .32rem 0;
+  text-align: center;
+  background: linear-gradient(to right,#F2F2F7, #FDFDFD);
+}
+.subscribe-page .module-3 > a{
+  font-size: .32rem;
+  line-height: .48rem;
+  color: #C26F33;
+  font-weight: bold;
+}
+.subscribe-page .module-4{
+  position: relative;
+  padding: 0 .24rem;
+  background: linear-gradient(to right,#F2F2F7, #FDFDFD);;
+}
+.subscribe-page .module-4 h2{
+  position: absolute;
+  width: 100%;
+  top: .48rem;
+  left: 50%;
+  font-size: .48rem;
+  line-height: .68rem;
+  color: #1B1A2A;
+  text-align: center;
+  transform: translateX(-50%);
+  background: url(/jyapp/seo/images/border-bg.png) no-repeat center bottom;
+  background-size: 5.2rem .26rem;
+}
+.subscribe-page .module-4 > img{
+  object-fit: contain;
+}
+.subscribe-page .module-5{
+  padding-top: .2rem;
+  padding-bottom: .48rem;
+  background: linear-gradient(to right,#F2F2F7, #FDFDFD);
+}
+.subscribe-page .wx-box,
+.subscribe-page .app-box,
+.subscribe-page .email-box{
+  position: relative;
+  width: 7.02rem;
+  height: 2.68rem;
+  margin: 0 auto .24rem;
+  background-size: 100% 100%;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+.subscribe-page .wx-box{
+  background-image: url(/jyapp/seo/images/wx-module.png);
+}
+.subscribe-page .app-box{
+  background-image: url(/jyapp/seo/images/app-module.png);
+}
+.subscribe-page .email-box{
+  background-image: url(/jyapp/seo/images/email-module.png);
+}
+.subscribe-page .wx-box span,
+.subscribe-page .app-box span,
+.subscribe-page .email-box span{
+  position: absolute;
+  left: .48rem;
+  right: .48rem;
+  bottom: .48rem;
+  font-size: .26rem;
+  line-height: .4rem;
+  color: #5F5E64;
+}

+ 175 - 0
src/jfw/modules/app/src/web/staticres/jyapp/seo/css/workbench.css

@@ -0,0 +1,175 @@
+.workbench-page{
+  background: #fff;
+}
+.workbench-page > .j-main{
+  padding-bottom: 1.76rem;
+}
+.workbench-page .page-header-module{
+  padding-top: 10.3333vw;
+  background: url(/jyapp/seo/images/workbench-bg.png) no-repeat center #fff;
+  background-size: cover;
+}
+.workbench-page .header-title {
+  padding: .32rem;
+  font-size: .44rem;
+  line-height: .64rem;
+}
+.h5-body .page-header-module,
+.wx-body .page-header-module{
+  padding-top: .32rem;
+  background-position: center -1.84rem;
+}
+.h5-body .page-header-module .header-title,
+.wx-body .page-header-module .header-title{
+  display: none;
+}
+.workbench-page .recommend-module{
+  margin-left: .24rem;
+  margin-right: .24rem;
+  background: linear-gradient(270deg, #fbe4b9 0%, #fff2df 100%);
+  border-radius: .24rem;
+  padding-top: .32rem;
+}
+.workbench-page .module-title{
+  padding: 0 .24rem;
+  font-size: .36rem;
+  line-height: .52rem;
+}
+.workbench-page .recommend-container{
+  display: flex;
+  flex-wrap: nowrap;
+  overflow-x: auto;
+  padding: 0 .32rem .16rem;
+  width: fit-content;
+}
+.workbench-page .recommend-container .recommend-item{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  flex-shrink: 0;
+  padding: .16rem .08rem;
+}
+.workbench-page .recommend-container .recommend-item:not(:last-of-type) {
+  margin-right: .24rem;
+}
+.workbench-page .recommend-container .item-img {
+  width: 1.68rem;
+  height: .88rem;
+  object-fit: contain;
+}
+.workbench-page .recommend-container .item-text{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+.recommend-container .img-text {
+  margin-top: 4px;
+  font-weight: 400;
+  font-size: 12px;
+  line-height: 18px;
+}
+.recommend-container .img-sub-text {
+  margin-top: 4px;
+  font-weight: 400;
+  font-size: 10px;
+  line-height: 14px;
+  color: #5f5e64;
+}
+.common-use-module{
+  margin-top: .56rem;
+}
+.common-use-module .use-container{
+  display: flex;
+  flex-wrap: wrap;
+  padding: 0 .24rem;
+}
+.common-use-module .use-container .use-item{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  border-radius: .16rem;
+  margin-right: .16rem;
+  margin-top: .16rem;
+  width: 1.6rem;
+  padding: .24rem 0;
+  flex-shrink: 0;
+}
+.common-use-module .use-item:nth-child(1n){
+  background-color: rgba(71, 164, 255, 0.08);
+}
+.common-use-module .use-item:nth-child(2n){
+  background-color: rgba(57, 219, 192, 0.08);
+}
+.common-use-module .use-item:nth-child(3n){
+  background-color: rgba(50, 201, 251, 0.08);
+}
+.common-use-module .use-item:nth-child(4n){
+  margin-right: 0;
+  background-color: rgba(160, 141, 255, 0.08);
+}
+
+.usable-module .usable-title{
+  padding: .32rem .32rem .16rem;
+  font-size: .32rem;
+  line-height: .48rem;
+}
+.common-use-module .use-container,
+.usable-module .usable-container{
+  display: flex;
+  flex-wrap: wrap;
+  padding: 0 .24rem;
+}
+
+.use-container .use-item,
+.usable-module .usable-item{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  width: 25%;
+  padding: .24rem 0;
+  flex-shrink: 0;
+  box-sizing: border-box;
+}
+.use-container .use-item:nth-child(4n),
+.usable-module .usable-item:nth-child(4n) {
+  margin-right: 0;
+}
+
+.common-use-module .use-item .item-img,
+.usable-module .usable-item .item-img{
+  width: .72rem;
+  height: .72rem;
+}
+.common-use-module .use-item .item-text,
+.usable-module .usable-item .item-text{
+  margin-top: .16rem;
+  font-size: .22rem;
+  line-height: .32rem;
+  color: #171826;
+  text-align: center;
+}
+.login-module{
+  padding: .24rem 0;
+}
+.login-module .login-btn{
+  display: flex;
+  height: 1.4rem;
+  margin: 0 auto;
+  background: url(/jyapp/seo/images/login-btn.jpg) no-repeat center center;
+  background-size: cover;
+  /* box-shadow: 0 4px 16px rgb(8, 31, 38, 0.08); */
+}
+
+.custom-toast .toast-container{
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: auto;
+  padding: .24rem .36rem;
+  font-size: .28rem;
+  background: rgba(0, 0, 0, 0.65);
+  border-radius: 8px;
+  color: #fff;
+  transform: translateX(-50%) translateY(-50%);
+  z-index: 99;
+}

二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/app-module.png


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/border-bg.png


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/email-module.png


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/login-btn.jpg


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-1.png


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-2.jpg


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-3.jpg


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-4.png


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-5.jpg


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/subscribe-bg.jpg


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/workbench-bg.png


二进制
src/jfw/modules/app/src/web/staticres/jyapp/seo/images/wx-module.png


+ 41 - 2
src/jfw/modules/app/src/web/staticres/jyapp/tags/css/tags-module-common.css

@@ -84,13 +84,13 @@ body.loading {
   line-height: 0.48rem;
   color: #C0C4CC;
 }
-.page-main {
+/* .page-main {
   padding-top: 2rem;
 }
 .wx-body .page-main,
 .h5-body .page-main {
   padding-top: 1.12rem;
-}
+} */
 
 /* tag-header */
 
@@ -448,6 +448,45 @@ body.loading {
   font-size: 0.28rem;
   line-height: 0.36rem;
 }
+.no-login-page-header {
+  padding-bottom: .28rem;
+  background: linear-gradient(#00AEE5, #05B6CD, #4FCBDB);
+}
+.no-login-page-header .j-header.tag-header-container {
+  width: 100%;
+  padding: 0.2rem .32rem;
+  height: 2rem;
+  padding-top: calc(0.2rem + 0.88rem);
+  background: transparent;
+}
+.no-login-page-header .j-header.jy-app-header.wx-header,
+.no-login-page-header .j-header.jy-app-header.h5-header {
+  padding: .2rem .32rem;
+  height: 1.12rem;
+}
+.no-login-page-header .search-module {
+  padding: 0 .32rem;
+}
+.no-login-page-header .search-container {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: 0 .3rem;
+  width: 100%;
+  height: .8rem;
+  border-radius: 0.16rem;
+}
+
+.no-login-page-header .search-container .search-input {
+  flex: 1;
+  margin-left: .16rem;
+  font-size: 0.28rem;
+  line-height: 0.48rem;
+  color: #C0C4CC;
+}
+.no-login-page-header .tag-header-container .logo-header{
+  width: 6.18rem;
+}
 /* tag-register-login */
 
 /* tag-info-type-nav-list */

+ 93 - 0
src/jfw/modules/app/src/web/templates/frontRouter/seo/free/subscribe.html

@@ -0,0 +1,93 @@
+<html lang="zh-CN" style="font-size: 50px;">
+  <head>
+    <meta charset="utf-8">
+    <title>招标信息订阅-剑鱼标讯</title>
+    <meta name="keywords" content="招标信息订阅,招标订阅">
+    <meta name="description" content="剑鱼标讯的免费订阅功能,支持按照区域、关键词、信息类型等精准订阅全国招标采购信息,通过微信、邮箱等多形式推送,及时获取精准项目信息。">
+    <meta name="author" content="剑鱼标讯">
+    <meta name="applicable-device" content="mobile" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, viewport-fit=cover">
+    <meta name="browsermode" content="application">
+    <meta name="x5-orientation" content="portrait">
+    <meta name="screen-orientation" content="portrait">
+    <meta name="x5-page-mode" content="app">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="format-detection" content="telephone=no">
+    <link rel="icon" href="/favicon.ico">
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/history-push/local/rem.js'></script>
+    <script src='https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js'></script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/head.js?v={{Msg "seo" "version"}}'></script>
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/public.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/j-icons.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/seo/css/subscribe.css?v={{Msg "seo" "version"}}'>
+  </head>
+  <body>
+    <div class="subscribe-page">
+      <header class="subscribe-header">
+        <img src="/jyapp/seo/images/subscribe-bg.jpg" alt="免费订阅">
+      </header>
+      <main class="subscribe-main">
+        <section class="module-1">
+          <h1>剑鱼标讯</h1>
+          <h3>开源情报及数字化营销平台</h3>
+          <p>- 招标信息覆盖全国和全行业 -</p>
+          <img src="/jyapp/seo/images/subscribe-1.png" alt="招标信息数据">
+        </section>
+        <section class="module-2">
+          <a class="login-btn" href="/jyapp/free/login?url=/jy_mobile/tabbar/subscribe">
+            <img src="/jyapp/seo/images/subscribe-2.jpg">
+          </a>
+        </section>
+        <section class="module-3">
+           <a href="/jyapp/vipsubscribe/introducePage">>>>了解功能更丰富的超级订阅>>></a>
+        </section>
+        <section class="module-4">
+          <h2>免费订阅功能介绍</h2>
+          <img src="/jyapp/seo/images/subscribe-4.png" alt="功能介绍">
+        </section>
+        <section class="module-5">
+          <ul>
+            <li class="wx-box">
+              <span>用户订阅商机信息后,系统每日会自动推送符合的业务信息至微信,便捷查看最新项目动态。</span>
+            </li>
+            <li class="app-box">
+              <span>用户订阅商机信息后,系统每日会自动推送符合的业务信息至APP,以免漏掉重要项目信息。</span>
+            </li>
+            <li class="email-box">
+              <span>用户订阅商机信息后,系统每日会自动推送最新的业务信息至邮箱,方便汇总和查看最新项目信息。</span>
+            </li>
+          </ul>
+        </section>
+      </main>
+      {{include "tags/template/tabbar.html" .}}
+    </div>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js?v={{Msg "seo" "version"}}'></script>
+    <script>
+      $(function(){
+        onResize()
+        window.addEventListener('resize', function(){
+          onResize()
+        })
+        function onResize () {
+          var clientWidth =document.body.clientWidth
+          if (clientWidth > 750) {
+            $('html').css({"font-size": "100px"})
+            $('.subscribe-page').css({
+              "width": '7.5rem',
+              "margin": "0 auto",
+            })
+            $('.no-login-tabbar').css({
+              "width": '7.5rem',
+              "margin": "0 auto",
+              "left": '50%',
+              "transform": 'translateX(-50%)'
+            })
+          }
+        }
+      })
+    </script>
+  </body>
+</html>

+ 267 - 0
src/jfw/modules/app/src/web/templates/frontRouter/seo/free/workbench.html

@@ -0,0 +1,267 @@
+<html lang="zh-CN" style="font-size: 50px;">
+  <head>
+    <meta charset="utf-8">
+    <title>剑鱼工作台_招标采购信息查询分析-剑鱼标讯</title>
+    <meta name="keywords" content="剑鱼工作台,招标信息查询,商机挖掘">
+    <meta name="description" content="剑鱼工作台是剑鱼标讯开发的功能平台,包含招标采购信息查询、行业数据分析、商机情报挖掘、招标信息订阅等功能,极大的提高了用户的工作效率!">
+    <meta name="author" content="剑鱼标讯">
+    <meta name="applicable-device" content="mobile" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, viewport-fit=cover">
+    <meta name="browsermode" content="application">
+    <meta name="x5-orientation" content="portrait">
+    <meta name="screen-orientation" content="portrait">
+    <meta name="x5-page-mode" content="app">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="format-detection" content="telephone=no">
+    <link rel="icon" href="/favicon.ico">
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/history-push/local/rem.js'></script>
+    <script src='https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js'></script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/head.js?v={{Msg "seo" "version"}}'></script>
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/public.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/seo/css/workbench.css?v={{Msg "seo" "version"}}'>
+  </head>
+  <body>
+    <div class="j-container workbench-page">
+      <!-- <header class="j-header page-header">
+       <div  class="header-top-placeholder"></div>
+        <h1 class="header-title">工作台</h1>
+      </header> -->
+      <main class="j-main">
+        <section class="page-header-module">
+          <h1 class="header-title">工作台</h1>
+          <div class="recommend-module">
+            <h2 class="module-title">推荐</h2>
+            <div class="recommend-container">
+              <div class="item recommend-item">
+                <img class="item-img" src="/commonFunctions/recommend-1.png">
+                <div class="item-text">
+                  <span class="img-text">市场分析定制报告</span>
+                  <span class="img-sub-text">定制化分析更对症</span>
+                </div>
+              </div>
+              <div class="item recommend-item">
+                <img class="item-img" src="/commonFunctions/recommend-2.png">
+                <div class="item-text">
+                  <span class="img-text">医械通</span>
+                  <span class="img-sub-text">高效挖掘合作渠道</span>
+                </div>
+              </div>
+              <div class="item recommend-item">
+                <img class="item-img" src="/commonFunctions/recommend-3.png">
+                <div class="item-text">
+                  <span class="img-text">超前项目推荐</span>
+                  <span class="img-sub-text">抢占绝对先机</span>
+                </div>
+              </div>
+              <div class="item recommend-item">
+                <img class="item-img" src="/commonFunctions/recommend-4.png">
+                <div class="item-text">
+                  <span class="img-text">拟在建项目搜索</span>
+                  <span class="img-sub-text">全面掌握项目全貌</span>
+                </div>
+              </div>
+            </div>
+          </div>
+        </section>
+        <section class="common-use-module">
+          <h2 class="module-title">我的常用</h2>
+          <div class="use-container">
+            <div class="item use-item">
+              <img class="item-img" src="/commonFunctions/wm-personal-reports.png" />
+              <span class="item-text">个人年终报告</span>
+            </div>
+            <div class="item use-item">
+              <img class="item-img" src="/commonFunctions/pc_search.png" />
+              <span class="item-text">招标采购搜索</span>
+            </div>
+            <div class="item use-item">
+              <img class="item-img" src="/commonFunctions/pc_buyer_search.png" />
+              <span class="item-text">采购单位搜索</span>
+            </div>
+            <div class="item use-item">
+              <img class="item-img" src="/commonFunctions/pc_entsearch.png" />
+              <span class="item-text">企业搜索</span>
+            </div>
+          </div>
+        </section>
+        <section class="login-module">
+          <a class="login-btn" href="/jyapp/free/login?url=/jy_mobile/tabbar/box"></a>
+        </section>
+        <section class="usable-module">
+          <h2 class="module-title">可用功能</h2>
+          <h3 class="usable-title">商机</h3>
+          <div class="usable-container">
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_search.png" >
+              <span class="item-text">招标采购搜索</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_entsearch.png">
+              <span class="item-text">企业搜索</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_buyer_search.png">
+              <span class="item-text">采购单位搜索</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_mydocs_work.png">
+              <span class="item-text">文档搜索</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc_applysearch.png">
+              <span class="item-text">供应搜索</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_subscribe_info.png">
+              <span class="item-text">我的订阅</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_follow_project.png">
+              <span class="item-text">项目进度监控</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_ent_follow.png">
+              <span class="item-text">企业情报监控</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_collection.png">
+              <span class="item-text">标讯收藏</span>
+            </div>
+          </div>
+          <h3 class="usable-title">分析</h3>
+          <div class="usable-container">
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_entsearch.png" >
+              <span class="item-text">企业搜索</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_buyer_search.png">
+              <span class="item-text">采购单位搜索</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/analysis_report.png">
+              <span class="item-text">市场分析定制报告</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc_organizational.png">
+              <span class="item-text">数据报告</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/wm-personal-reports.png">
+              <span class="item-text">个人年终报告</span>
+            </div>
+          </div>
+          <h3 class="usable-title">数据</h3>
+          <div class="usable-container">
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_dataExport_index.png">
+              <span class="item-text">数据自助导出</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img" src="/commonFunctions/pc_dataPack_history.png">
+              <span class="item-text">数据导出记录</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc_datacustomization.png">
+              <span class="item-text">数据定制服务</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc-data-supermarket.png">
+              <span class="item-text">数据超市</span>
+            </div>
+          </div>
+          <h3 class="usable-title">服务</h3>
+          <div class="usable-container">
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc_making.png">
+              <span class="item-text">标书制作</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc_making.png">
+              <span class="item-text">企业认证服务</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/wm-exhibition.png">
+              <span class="item-text">行业展会</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc_winning_bidding.png">
+              <span class="item-text">中标必听课</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc_myclass.png">
+              <span class="item-text">我的课程</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc_mydocs_work.png">
+              <span class="item-text">剑鱼文库</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc_docs_collections.png">
+              <span class="item-text">文库收藏</span>
+            </div>
+            <div class="item usable-item">
+              <img class="item-img"  src="/commonFunctions/pc_mydocs.png">
+              <span class="item-text">我的文库</span>
+            </div>
+          </div>
+        </section>
+      </main>
+      {{include "tags/template/tabbar.html" .}}
+    </div>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js?v={{Msg "seo" "version"}}'></script>
+  </body>
+  <script>
+    function toastFn(text, duration) {
+      if(!duration) {
+        duration = 2000
+      }
+      if($('.custom-toast')){
+        $('.custom-toast').remove()
+      }
+      var _html = ""
+      _html+='<div class="custom-toast"><div class="mask" style="background-color: transparent;"></div><div class="toast-container">'
+      _html+='<span>' + text + '</span></div></div>'
+      $('body').append(_html)
+      setTimeout(function(){
+        $(".custom-toast").fadeOut().remove();
+      }, duration)
+    }
+    $(function(){
+      $('.item').click(function(){
+        var scrollElement = $('.workbench-page > .j-main')
+        var $targetElement = $('.login-module')
+        var targetOffset = $targetElement.offset().top;
+        // 计算页面可视区域的高度
+        var windowHeight = $(window).height();
+        // 计算元素应该滚动到的位置
+        var scrollTop = targetOffset - (windowHeight / 2) + ($targetElement.outerHeight() / 2);
+        toastFn('请先登录', 1500)
+        $(scrollElement).animate({scrollTop: scrollTop}, 500);
+      })
+      onResize()
+      window.addEventListener('resize', function(){
+        onResize()
+      })
+      function onResize () {
+        var clientWidth =document.body.clientWidth
+        if (clientWidth > 750) {
+          $('html').css({"font-size": "100px"})
+          $('.workbench-page').css({
+            "width": '7.5rem',
+            "margin": "0 auto",
+          })
+          $('.no-login-tabbar').css({
+            "width": '7.5rem',
+            "margin": "0 auto",
+            "left": '50%',
+            "transform": 'translateX(-50%)'
+          })
+        }
+      }
+    })
+  </script>
+</html>

+ 6 - 4
src/jfw/modules/app/src/web/templates/tags/class.html

@@ -8,12 +8,13 @@
 </head>
 <body>
   <section class="page-container page-container-strategy">
-    <header class="page-header">
+    <!-- <header class="page-header">
       {{include "/tags/template/tag-header.html"}}
-    </header>
+    </header> -->
     <main class="page-main">
       <div class="module-wrapper">
-        {{include "/tags/template/tag-register-login-group.html"}}
+        <!-- {{include "/tags/template/tag-register-login-group.html"}} -->
+        {{include "tags/template/tag-new-header.html"}}
         {{include "/tags/template/tag-info-type-nav.html"}}
         {{include "/tags/template/tag-area-nav.html"}}
         {{include "/tags/template/tag-strategy-nav.html"}}
@@ -29,7 +30,8 @@
     <div class="loading-icon"></div>
   </div>
   {{include "/tags/template/tag-footer-common-assets.html"}}
-  {{include "/tags/template/tag-footer-concat.html"}}
+  <!-- {{include "/tags/template/tag-footer-concat.html"}} -->
+  {{include "/tags/template/tabbar.html"}}
   <script>
     var templateData = {
       homeLink: {{.T.HomeOrigin}},

+ 6 - 4
src/jfw/modules/app/src/web/templates/tags/details.html

@@ -8,12 +8,13 @@
 </head>
 <body>
   <section class="page-container page-container-strategy-details">
-    <header class="page-header">
+    <!-- <header class="page-header">
       {{include "/tags/template/tag-header.html"}}
-    </header>
+    </header> -->
     <main class="page-main">
       <div class="module-wrapper">
-        {{include "/tags/template/tag-register-login-group.html"}}
+        <!-- {{include "/tags/template/tag-register-login-group.html"}} -->
+        {{include "tags/template/tag-new-header.html"}}
         {{include "/tags/template/tag-info-type-nav.html"}}
         {{include "/tags/template/tag-area-nav.html"}}
        <div class="strategy-details">
@@ -38,7 +39,8 @@
             {{include "/tags/template/tag-breadcrumb-navigation.html"}}
         {{end}}
         {{include "/tags/template/tag-footer.html"}}
-        {{include "/tags/template/tag-footer-concat.html"}}
+        <!-- {{include "/tags/template/tag-footer-concat.html"}} -->
+        {{include "/tags/template/tabbar.html"}}
       </div>
     </main>
   </section>

+ 6 - 4
src/jfw/modules/app/src/web/templates/tags/strategy.html

@@ -8,12 +8,13 @@
 </head>
 <body>
   <section class="page-container page-container-strategy">
-    <header class="page-header">
+    <!-- <header class="page-header">
       {{include "/tags/template/tag-header.html"}}
-    </header>
+    </header> -->
     <main class="page-main">
       <div class="module-wrapper">
-        {{include "/tags/template/tag-register-login-group.html"}}
+        <!-- {{include "/tags/template/tag-register-login-group.html"}} -->
+        {{include "tags/template/tag-new-header.html"}}
         {{include "/tags/template/tag-info-type-nav.html"}}
         {{include "/tags/template/tag-area-nav.html"}}
         <div class="strategy-ad">
@@ -27,7 +28,8 @@
             {{include "/tags/template/tag-breadcrumb-navigation.html"}}
         {{end}}
         {{include "/tags/template/tag-footer.html"}}
-        {{include "/tags/template/tag-footer-concat.html"}}
+        <!-- {{include "/tags/template/tag-footer-concat.html"}} -->
+        {{include "/tags/template/tabbar.html"}}
       </div>
     </main>
   </section>

+ 25 - 0
src/jfw/modules/app/src/web/templates/tags/template/article-tabbar.html

@@ -0,0 +1,25 @@
+<style>
+  /* 兼容ios底部 */
+  @supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) {
+    body.inject-app-tabbar .article-tabbar {
+      bottom: calc(50px +  constant(safe-area-inset-bottom));
+      bottom: calc(50px +  env(safe-area-inset-bottom));
+    }
+  }
+</style>
+<div class="article-tabbar">
+  <div class="tabbar-container">
+    <a href="/" class="tabbar-item">
+      <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/home.png?v={{Msg "seo" "version"}}' alt="首页">
+      <span>首页</span>
+    </a>
+    <a href="/jyapp/freesubscribe/" class="tabbar-item">
+      <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/book.png?v={{Msg "seo" "version"}}' alt="订阅">
+      <span>订阅</span>
+    </a>
+    <a href="/jyapp/free/login?to=back" class="tabbar-item">
+      <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/detail.png?v={{Msg "seo" "version"}}' alt="登录看详情">
+      <span>登录看详情</span>
+    </a>
+  </div>
+</div>

+ 100 - 0
src/jfw/modules/app/src/web/templates/tags/template/tabbar.html

@@ -0,0 +1,100 @@
+<style>
+  .no-login-tabbar{
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  padding: .1rem 0;
+  min-height: 50px;
+  border-top: 1px solid rgba(0, 0, 0, 0.05);
+  background: #FFFFFF;
+}
+
+.no-login-tabbar .tabbar-container{
+  display: flex;
+  justify-content: space-around;
+  align-items: center;
+  height: 100%;
+}
+.no-login-tabbar .tabbar-container .tabbar-item{
+  flex: 1;
+  width: 33%;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  flex-shrink: 0;
+}
+.no-login-tabbar .tabbar-container .tabbar-item > img{
+  width: .48rem;
+  height: .48rem;
+}
+.no-login-tabbar .tabbar-container .tabbar-item > span{
+  font-size: .2rem;
+  line-height: .32rem;
+  color: #171826;
+}
+.tabbar-img-active{
+  display: none;
+}
+.tabbar-item.active .tabbar-img{
+  display: none;
+}
+.tabbar-item.active .tabbar-img-active{
+  display: block;
+}
+.tabbar-item.active span{
+  color: #2ABED1!important;
+}
+/* 兼容ios底部 */
+@supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) {
+  body.inject-app-tabbar .no-login-tabbar {
+    bottom: calc(50px +  constant(safe-area-inset-bottom));
+    bottom: calc(50px +  env(safe-area-inset-bottom));
+  }
+}
+</style>
+<div class="no-login-tabbar">
+  <div class="tabbar-container">
+    <a href="/" data-name="home" class="tabbar-item">
+      <img class="tabbar-img" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/home.png?v={{Msg "seo" "version"}}' alt="首页">
+      <img class="tabbar-img-active" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/home_active.png?v={{Msg "seo" "version"}}' alt="首页">
+      <span>首页</span>
+    </a>
+    <a href="/jyapp/freesubscribe/" data-name="subscribe" class="tabbar-item">
+      <img class="tabbar-img" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/book.png?v={{Msg "seo" "version"}}' alt="订阅">
+      <img class="tabbar-img-active" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/book_active.png?v={{Msg "seo" "version"}}' alt="订阅">
+      <span>订阅</span>
+    </a>
+    <a href="/jyapp/free/login?url=/jyapp/frontPage/messageCenter/sess/index" data-name="message" class="tabbar-item">
+      <img class="tabbar-img" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/mesg.png?v={{Msg "seo" "version"}}' alt="消息">
+      <img class="tabbar-img-active" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/mesg_active.png?v={{Msg "seo" "version"}}' alt="消息">
+      <span>消息</span>
+    </a>
+    <a href="/jyapp/workbench/" data-name="workbench" class="tabbar-item">
+      <img class="tabbar-img" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/box.png?v={{Msg "seo" "version"}}' alt="工作台">
+      <img class="tabbar-img-active" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/box_active.png?v={{Msg "seo" "version"}}' alt="工作台">
+      <span>工作台</span>
+    </a>
+    <a href="/jyapp/free/login?url=/jyapp/free/me" data-name="mine" class="tabbar-item">
+      <img class="tabbar-img" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/mine.png?v={{Msg "seo" "version"}}' alt="我的">
+      <img class="tabbar-img-active" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/tabbar/mine_active.png?v={{Msg "seo" "version"}}' alt="我的">
+      <span>我的</span>
+    </a>
+  </div>
+</div>
+<script>
+  $(function(){
+    var path = location.pathname
+    if(path === '/' || path.indexOf('/jyapp/jylab/mainSearch') > -1 || path.indexOf('/jyseo/index.html') > -1) {
+      $('.tabbar-item[data-name="home"]').addClass('active').siblings().removeClass('active')
+    } else if (path.indexOf('/freesubscribe') > -1 || path.indexOf('/swordfish/historypush') > -1 || path.indexOf('/tabbar/subscribe') > -1) {
+      $('.tabbar-item[data-name="subscribe"]').addClass('active').siblings().removeClass('active')
+    } else if(path.indexOf('/workbench') > -1 || path.indexOf('/tabbar/box') > -1 || path.indexOf('//jyapp/jylab/index') > -1) {
+      $('.tabbar-item[data-name="workbench"]').addClass('active').siblings().removeClass('active')
+    } else if(path.indexOf('/tabbar/message') > -1 || path.indexOf('/jyapp/frontPage/messageCenter/sess/index') > -1) {
+      $('.tabbar-item[data-name="message"]').addClass('active').siblings().removeClass('active')
+    } else if(path.indexOf('/tabbar/mine') > -1 || path.indexOf('/jyapp/free/me') > -1) {
+      $('.tabbar-item[data-name="mine"]').addClass('active').siblings().removeClass('active')
+    }
+  })
+</script>

+ 12 - 0
src/jfw/modules/app/src/web/templates/tags/template/tag-new-header.html

@@ -0,0 +1,12 @@
+<div class="no-login-page-header">
+  <div class="tag-header-container j-header jy-app-header">
+    <i class="j-icon base-icon icon-back-white" style="display: block;flex-shrink: 0;margin-right: 0.16rem;"></i>
+    <img class="logo-header" src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/logo-header.png' alt="logo" style="object-fit: contain;">
+  </div>
+  <div class="search-module">
+    <a class="search-container bg-white" href="/jy_mobile/search/middle/bidding">
+      <i class="search-icon j-icon base-icon icon-search"></i>
+      <div class="search-input">找项目 搜采购 拓客户 查企业</div>
+    </a>
+  </div>
+</div>

+ 86 - 0
src/jfw/modules/app/src/web/templates/weixin/404.html

@@ -0,0 +1,86 @@
+<html lang="zh-CN" style="font-size: 50px;">
+	<head>
+		{{include "/common/meta.html"}}
+		<title>该标讯信息不存在 - 剑鱼标讯</title>
+    <meta name="keywords" content="信息不存在">
+    <meta name="description" content="该标讯信息不存在。">
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/history-push/local/rem.js'></script>
+    <script src='https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js'></script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/head.js?v={{Msg "seo" "version"}}'></script>
+    <style>
+      *{
+        margin: 0;
+        padding: 0;
+      }
+      .page-content-container{
+        width: 100%;
+        height: 100%;
+      }
+      .page-content-main{
+        height: 100%;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+      }
+      .empty-container{
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+      }
+      .empty-container img{
+        width: 4rem;
+        height: 4rem;
+      }
+      .empty-container .tip-text{
+        margin-top: .08rem;
+        font-size: .3rem;
+        color: #999;
+        line-height: .44rem;
+      }
+      .empty-container .tip-btn{
+        width: 3.6rem;
+        height: .8rem;
+        line-height: .8rem;
+        text-align: center;
+        margin-top: .48rem;
+        background: #2ABED1;
+        color: #fff;
+        font-size: .3rem;
+        border-radius: .08rem;
+        text-decoration: none;
+      }
+    </style>
+	</head>
+<body>
+<div>
+  <section class="page-content-container">
+    <div class="page-content-main">
+      <div class="empty-container">
+        <img src="/common-module/public/image/jy-back.png">
+        <p class="tip-text tip-text-1"></p>
+        <p class="tip-text">5秒后自动跳转到剑鱼官网首页...</p>
+        <a href="/" class="tip-btn">前往剑鱼官网首页</a>
+      </div>
+    </div>
+  </section>
+</div>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js?v={{Msg "seo" "version"}}'></script>
+<script>
+  $(function(){
+    const t =  utils.getParam('t')
+    if (t == '1') {
+      $('.tip-text-1').html('该页面信息不存在')
+    } else if (t == '2') {
+      $('.tip-text-1').html('由于相关部门要求,该信息已下架,敬请原谅')
+    } else if (t == '3') {
+      $('.tip-text-1').html('未知类型')
+    }
+    setTimeout(function(){
+      window.location.href = '/'
+    }, 5000)
+  })
+</script>
+{{include "/common/baiducc.html"}}
+</body>
+</html>

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

@@ -443,12 +443,13 @@
 	    </span>
     </div>
     {{else}}
-    {{include "tags/template/tag-header.html" .}}
+    <!-- {{include "tags/template/tag-header.html" .}} -->
     {{end}}
 
     <div class="app-layout-content-b">
         {{if not .T.obj.hasSession}}
-        {{include "tags/template/tag-register-login-group.html" .}}
+        <!-- {{include "tags/template/tag-register-login-group.html" .}} -->
+        {{include "tags/template/tag-new-header.html" .}}
         {{include "tags/template/tag-info-type-nav.html" .}}
         {{include "tags/template/tag-area-nav.html" .}}
         {{end}}
@@ -993,15 +994,15 @@
             <div id="third-party-verify-attention" class="third-party-verify-attention" style="display:none;">
               <span class="t-p-v-a-text">*温馨提示:系统识别到正文中对投标方有资质要求~</span>
             </div>
-            <div class="noLoginShow option-login" style="display: none;">
+            <!-- <div class="noLoginShow option-login" style="display: none;">
               <div class="serve-list">
                 <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/no-login-content.png?v={{Msg "seo" "version"}}" alt="详情页-未登录-引导" />
               </div>
-            </div>
+            </div> -->
             <!--S 登录引导置底 S-->
-            <div class="login-guide" style="display: none;">
+            <!-- <div class="login-guide" style="display: none;">
               <img src="/jyapp/images/adbottom.png?v={{Msg "seo" "version"}}" alt="">
-            </div>
+            </div> -->
             <!--E 登录引导置底 E-->
             <div class="abs">
                 <div onclick="advDownApp(this)" class="original_name"><a class="original hidden" rel="no-referrer">查看原文链接</a></div>
@@ -1143,6 +1144,12 @@
         {{include "tags/template/tag-footer.html" .}}
         {{end}}
     </div>
+    {{ $subtype := .T.obj.subtype }}
+    {{ $isNotNiji := ne $subtype "拟建" }}
+    {{ $isNotCgyx := ne $subtype "采购意向" }}
+    {{if and $isNotNiji $isNotCgyx}}
+    {{include "tags/template/article-tabbar.html" .}}
+    {{end}}
 </div>
 <!-- 三方认证弹窗 -->
 <div id="third-party-popover-content"></div>
@@ -3840,10 +3847,11 @@
         if (document.readyState === "complete") {
           // 未登录状态下距顶部距离为顶部搜索框高度
           var headerTop = document.querySelector('.jy-app-header ').clientHeight
-          $('.app-layout-content-b').css('top', headerTop)
-          $('.h5-tabfix').css('top', headerTop)
-          $('.wx-tabfix').css('top', headerTop)
-          $('.childNav').css('top', headerTop)
+          // P574调整:页面不要有悬浮元素
+          $('.app-layout-content-b').css('top', 0)
+          $('.h5-tabfix').css({position: 'unset'})
+          $('.wx-tabfix').css({position: 'unset'})
+          $('.childNav').css({position: 'unset'})
           window.clearInterval(timer);
         }
       }, 800)

+ 0 - 3
src/jfw/modules/publicapply/src/filter/cookie.go

@@ -3,7 +3,6 @@ package filter
 import (
 	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
-	"log"
 	"net/http"
 	"strings"
 )
@@ -15,14 +14,12 @@ type CookieInfo struct {
 
 // Do 继承过滤器方法
 func (ci *CookieInfo) Do(w http.ResponseWriter, req *http.Request) bool {
-	log.Println(req.Referer(), "----------------------", req.RequestURI)
 	if crr := req.Referer(); crr != "" {
 		if strings.Contains(crr, "cooperate") {
 			match := strings.Split(crr, "cooperate/")
 			if len(match) > 1 {
 				jy.SetCookieValue(w, jy.ChannelCookieName, match[1], 172800) //两天
 			}
-			log.Println("---------------pc-------------", match)
 		}
 	}
 	return true

二进制
src/web/staticres/commonFunctions/recommend-1.png


二进制
src/web/staticres/commonFunctions/recommend-2.png


二进制
src/web/staticres/commonFunctions/recommend-3.png


二进制
src/web/staticres/commonFunctions/recommend-4.png


+ 8 - 9
src/web/staticres/entnichePush/js/common.js

@@ -1302,11 +1302,12 @@ function loginSuccess (result, loginType) {
   if (isStopNext) {
     return
   }
-
-  //分销跳转
-  if (getUrlParam("DisUrl") != null) {
+  //
+  var callBackUrl = getUrlParam("url", decodeURIComponent);
+  if (callBackUrl != null) {
     afterLoginSuccess("", true);
-    locationReplace(getUrlParam("DisUrl"));
+    //window.location.href = callBackUrl;
+    locationReplace(callBackUrl);
     return
   }
   //
@@ -1322,12 +1323,10 @@ function loginSuccess (result, loginType) {
     }
     return
   }
-  //
-  var callBackUrl = getUrlParam("url", decodeURIComponent);
-  if (callBackUrl != null) {
+  //分销跳转
+  if (getUrlParam("DisUrl") != null) {
     afterLoginSuccess("", true);
-    //window.location.href = callBackUrl;
-    locationReplace(callBackUrl);
+    locationReplace(getUrlParam("DisUrl"));
     return
   }
   //

+ 103 - 0
src/web/templates/pc/tags/404.html

@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <title>该标讯信息不存在 - 剑鱼标讯</title>
+    <meta name="keywords" content="信息不存在">
+    <meta name="description" content="该标讯信息不存在。">
+    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,initial-scale=1.0" user-scalable="no" />
+    <meta name="renderer" content="webkit">
+    <meta content="telephone=no" name="format-detection"/>
+    <meta content="剑鱼标讯" theme="light" name="enable-header"/>
+    <!-- 未登录取消导航栏置顶效果meta标识 -->
+    <meta name="cancel-nav-sticky" content="no-login" />
+    {{include "/common/pnc.html"}}
+    <link href='{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}' rel="stylesheet" />
+    <link href='{{Msg "seo" "cdn"}}/pccss/index.css?v={{Msg "seo" "version"}}' rel="stylesheet" />
+    <link href='{{Msg "seo" "cdn"}}/css/dev2/reset_pc.css?v={{Msg "seo" "version"}}' rel="stylesheet" />
+    <link href='{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}' rel="stylesheet" />
+    <style>
+      .page-content-container{
+        padding: 40px 0;
+        min-height: calc(100vh - 364px);
+        box-sizing: border-box;
+        background: #f2f2f4;
+      }
+      .page-content-main{
+        width: 980px;
+        height: 100%;
+        padding: 40px 0;
+        margin: 0 auto;
+        background: #fff;
+        text-align: center;
+      }
+      .empty-container img{
+        width: 200px;
+        height: 200px;
+        margin-bottom: 14px;
+      }
+      .empty-container .tip-text{
+        margin-top: 6px;
+        font-size: 16px;
+        color: #999;
+        line-height: 22px;
+      }
+      .empty-container .tip-btn{
+        width: 180px;
+        height: 40px;
+        line-height: 40px;
+        margin-top: 24px;
+        background: #2ABED1;
+        color: #fff;
+        font-size: 16px;
+        border-radius: 4px;
+        text-decoration: none;
+      }
+      .empty-container .tip-btn:hover{
+        color: #fff;
+      }
+    </style>
+</head>
+
+<body>
+    {{include "/common/pchead.html"}}
+    <section class="page-content-container">
+      <div class="page-content-main">
+        <div class="empty-container">
+          <img src="/common-module/public/image/jy-back.png">
+          <p class="tip-text tip-text-1"></p>
+          <p class="tip-text">5秒后自动跳转到剑鱼官网首页...</p>
+          <a href="/" class="tip-btn">前往剑鱼官网首页</a>
+        </div>
+      </div>
+    </section>
+    {{include "/common/pcbottom.html"}}
+    <script>
+        haslogin({{.T.logid}})
+        function getParam(name) {
+          var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
+          var r = window.location.search.substr(1).match(reg); //获取url中'?'符后的字符串并正则匹配
+
+          var context = '';
+          if (r != null) context = r[2];
+          // 释放变量
+          reg = null;
+          r = null;
+          return context == null || context == '' || context == 'undefined' ? '' : context;
+        }
+        $(function() {
+          const t =  getParam('t')
+          if (t == '1') {
+            $('.tip-text-1').html('该页面信息不存在')
+          } else if (t == '2') {
+            $('.tip-text-1').html('由于相关部门要求,该信息已下架,敬请原谅')
+          } else if (t == '3') {
+            $('.tip-text-1').html('未知类型')
+          }
+          setTimeout(function() {
+            window.location.href = '/'
+          }, 5000)
+        })
+    </script>
+    {{include "/common/baiducc.html"}}
+</body>
+</html>