浏览代码

Merge branch 'master' into feature/v4.8.49

lianbingjie 2 年之前
父节点
当前提交
b827b38379
共有 30 个文件被更改,包括 993 次插入250 次删除
  1. 11 0
      src/config.json
  2. 1 0
      src/jfw/front/front.go
  3. 15 6
      src/jfw/front/login.go
  4. 22 10
      src/jfw/front/shorturl.go
  5. 0 1
      src/jfw/front/tags.go
  6. 30 4
      src/jfw/modules/app/src/app/front/login.go
  7. 13 0
      src/jfw/modules/app/src/app/front/shorturl.go
  8. 2 1
      src/jfw/modules/app/src/app/tag/msg.go
  9. 6 1
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  10. 31 10
      src/jfw/modules/app/src/web/staticres/jyapp/me/css/login.css
  11. 52 7
      src/jfw/modules/app/src/web/staticres/jyapp/wxtsguide/main.js
  12. 76 39
      src/jfw/modules/app/src/web/templates/me/login.html
  13. 60 63
      src/jfw/modules/app/src/web/templates/me/setpwd.html
  14. 9 0
      src/jfw/modules/app/src/web/templates/weixin/wxtsguide.html
  15. 16 1
      src/jfw/modules/bigmember/src/entity/marketAnalysis/commonSearch.go
  16. 19 16
      src/jfw/modules/bigmember/src/service/report/marketAnalysis.go
  17. 1 0
      src/jfw/modules/publicapply/src/main.go
  18. 96 0
      src/jfw/modules/publicapply/src/password/password.go
  19. 二进制
      src/web/staticres/commonFunctions/pc-set-password.png
  20. 40 7
      src/web/staticres/css/pc.css
  21. 56 1
      src/web/staticres/frontRouter/pc/user/css/set_favorite.css
  22. 104 23
      src/web/staticres/frontRouter/pc/user/js/set_favorite.js
  23. 二进制
      src/web/staticres/images/phonelogin/icon-biyan.png
  24. 177 30
      src/web/staticres/js/login.js
  25. 10 4
      src/web/staticres/public-pc/js/article-content.js
  26. 10 2
      src/web/staticres/tags/js/no-login-detail.js
  27. 47 3
      src/web/staticres/wxtsguide/main.js
  28. 51 10
      src/web/templates/common/pc-login-dialog.html
  29. 29 11
      src/web/templates/frontRouter/pc/user/sess/set_favorite.html
  30. 9 0
      src/web/templates/weixin/wxtsguide.html

+ 11 - 0
src/config.json

@@ -418,6 +418,17 @@
   "pcIndexHotKeyLimit":17,
   "executionNum": 10,
   "awaitNum": 10,
+  "detailMosaic":"免费注册即可查看",
+  "detailNeedMosaic":{
+    "buyerperson":true,
+    "buyertel":true,
+    "winnerperson":true,
+    "winnertel":true,
+    "agencyperson":true,
+    "agencytel":true,
+    "budget":true,
+    "bidamount":true
+  },
   "planBuildMosaic": {
     "approvecode": true,
     "approvedept": true,

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

@@ -839,6 +839,7 @@ func CreateSession(q map[string]interface{}, sess *httpsession.Session, typ stri
 		"result":      "ok",
 		"s_nickname":  s_nickname,
 		"s_headimage": sessionVal["s_avatar"],
+		"phone":       sessionVal["phone"],
 	}
 	if openid, _ := (*person)["s_m_openid"].(string); openid != "" {
 		infoData["openid"] = se.EncodeString(openid)

+ 15 - 6
src/jfw/front/login.go

@@ -1,7 +1,6 @@
 package front
 
 import (
-	"app.yhyue.com/moapp/jybase/redis"
 	"fmt"
 	"jy/src/jfw/config"
 	jutil "jy/src/jfw/jyutil"
@@ -10,6 +9,8 @@ import (
 	"strings"
 	"time"
 
+	"app.yhyue.com/moapp/jybase/redis"
+
 	"app.yhyue.com/moapp/jypkg/public"
 
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
@@ -18,10 +19,10 @@ import (
 
 	. "app.yhyue.com/moapp/jybase/mongodb"
 
+	"app.yhyue.com/moapp/jybase/dchest/captcha"
 	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
 	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
 	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
-	"app.yhyue.com/moapp/jybase/dchest/captcha"
 	"go.mongodb.org/mongo-driver/bson/primitive"
 )
 
@@ -92,12 +93,19 @@ func (l *Login) Login() error {
 			} else if strings.TrimSpace(password) == "" {
 				return -2, false
 			}
-			user, ok := mongodb.FindOneByField("user", map[string]interface{}{
+			// user, ok := mongodb.FindOneByField("user", map[string]interface{}{
+			// 	"i_appid": 2,
+			// 	"s_phone": phone,
+			// }, `{"s_password":1}`)
+			user, ok := mongodb.Find("user", map[string]interface{}{
 				"i_appid": 2,
-				"s_phone": phone,
-			}, `{"s_password":1}`)
+				"$or": []map[string]interface{}{
+					{"s_phone": phone},
+					{"s_m_phone": phone},
+				},
+			}, `{"s_phone":-1}`, `{"_id":1,"s_password":1}`, false, 0, 1)
 			if ok && user != nil && len(*user) > 0 {
-				if qutil.ObjToString((*user)["s_password"]) == qutil.GetMd5String(password) {
+				if qutil.ObjToString((*user)[0]["s_password"]) == qutil.GetMd5String(password) {
 					ok, _, userInfo := afterLogin(phone, l.Session())
 					if ok {
 						result["userInfo"] = userInfo
@@ -197,6 +205,7 @@ func (l *Login) Login() error {
 						}(phone, _id)
 						jy.ClearPhoneIdentSession(l.Session())
 						ok, _, userInfo := afterLogin(phone, l.Session())
+						userInfo["isNewUser"] = true
 						nsqPath, _ := config.Sysconfig["nsq"].(string)
 						nsq_topic, _ := config.Sysconfig["nsq_topic"].(string)
 						er := jy.Publish(public.Mgo_Log, nsqPath, nsq_topic, jy.Jypc_phone_register, _id, jy.Jyweb_node2)

+ 22 - 10
src/jfw/front/shorturl.go

@@ -86,12 +86,12 @@ func (s *Short) Article(stype, id string) error {
 	userId, _ := s.GetSession("userId").(string)
 	//PC端未登录用户程序走此逻辑  WX端走原来逻辑
 	if !mobileReg.MatchString(s.Header("User-Agent")) && (stype == "content" || stype == "indexcontent") && 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 seoAgentReg.MatchString(s.UserAgent()) {
+		sids := encrypt.CommonDecodeArticle(stype, id)
+		return s.NologinCommon("", stype, id, sids[0])
+		//} else {
+		//	return s.Redirect("/notin/page")
+		//}
 	}
 	return s.LoginCommon(userId, stype, id)
 }
@@ -296,7 +296,6 @@ func (s *Short) LoginCommon(userId, stype, id string) error {
 		isEntniche    bool = userPower.EntnicheStatus > 0                                                 //商机管理
 		privatedata   bool = userPower.PrivateGD                                                          //广东移动DICT 用户
 		isEntService  bool = userPower.Data.Ent.PowerSource > 0 && userPower.Data.Entniche.IsEntPower > 0 //商机管理服务
-		isPay              = isVip || isMember || isEntniche
 		newCanRead         = false
 	)
 	if res != nil && len(*res) > 0 {
@@ -489,11 +488,11 @@ func (s *Short) LoginCommon(userId, stype, id string) error {
 				newCanRead = true
 			}
 		}
-		var detailKey = util.If(isPay || newCanRead, "pay", "free")
+		var detailKey = util.If((isVip && isOldVip) || isMember || isEntniche || newCanRead, "pay", "free")
 		catchKey := fmt.Sprintf("jypcdetail_%s_%s_%s", detailKey, stype, sid)
 		log.Println(catchKey, "-缓存-", userId)
 		if res := redis.Get(redisLimitation, catchKey); res == nil || res == "" {
-			redisTimeOut := util.If(isPay || newCanRead, detailRedisByPayTimeOut, detailRedisByFreeTimeOut).(int)
+			redisTimeOut := util.If((isVip && isOldVip) || isMember || isEntniche || newCanRead, detailRedisByPayTimeOut, detailRedisByFreeTimeOut).(int)
 			industry := s.GetString("industry")
 			var shareid = s.GetString("id")
 			if len(shareid) == 0 {
@@ -1004,6 +1003,19 @@ func Filter(obj map[string]interface{}) map[string]interface{} {
 		if !dv.(bool) {
 			continue
 		}
+		if obj["package"] != nil {
+			pk := util.ObjToMap(obj["package"])
+			for _, pv := range *pk {
+				if pv != nil {
+					if page := util.ObjToMap(pv); page != nil {
+						if (*page)[dk] != nil {
+							(*page)[dk] = mosaicText
+						}
+						delete(*page, "text")
+					}
+				}
+			}
+		}
 		//if util.ObjToString(obj[dk]) != "" {
 		//	detail = strings.ReplaceAll(detail, util.ObjToString(obj[dk]), detailText)
 		//}
@@ -1165,7 +1177,7 @@ func (s *Short) NologinArticle(stype, id string) error {
 func (s *Short) NologinCommon(userId, stype, id, sid string) error {
 	tg := &Tags{}
 	catchKey := fmt.Sprintf("jypcdetail_nologin_%s_%s", stype, sid)
-	if res := redis.Get(redisLimitation, catchKey); res == nil || res == "" {
+	if res := redis.Get(redisLimitation, catchKey); true || res == nil || res == "" {
 		industry := s.GetString("industry")
 		var shareid = s.GetString("id")
 		if len(shareid) == 0 {

+ 0 - 1
src/jfw/front/tags.go

@@ -680,7 +680,6 @@ func (this *Tags) GetBidding(industry, area, city, stype, keyword string, reques
 			now := time.Now()
 			starttime := fmt.Sprint(time.Date(now.Year()-1, now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second(), 0, time.Local).Unix())
 			endtime := fmt.Sprint(now.Unix())
-
 			var datas *[]map[string]interface{}
 			var startPage int
 			var count int64

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

@@ -56,6 +56,7 @@ type Login struct {
 	afterPageLoadToCheck xweb.Mapper `xweb:"/jyapp/free/afterPageLoadToCheck"` //检测
 	channelSign          xweb.Mapper `xweb:"/jyapp/free/channelSign"`          //渠道统计
 	savePushIdMsg        xweb.Mapper `xweb:"/jyapp/free/savePushIdMsg"`        //推送id记录
+	setPwd               xweb.Mapper `xweb:"/jyapp/free/setPwd"`               //修改密码
 }
 
 var (
@@ -114,11 +115,15 @@ func (l *Login) Login() error {
 				return -1
 			}
 			query := map[string]interface{}{
-				"i_appid":    2,
-				"s_phone":    phone,
+				"i_appid": 2,
+				"$or": []map[string]interface{}{
+					{"s_phone": phone},
+					{"s_m_phone": phone},
+				},
 				"s_password": qutil.GetMd5String(password),
 			}
-			user, ok := mongodb.FindOne("user", query)
+			// user, ok := mongodb.FindOne("user", query)
+			user, ok := mongodb.Find("user", query, `{"s_phone":-1}`, `{"_id":1,"s_password":1}`, false, 0, 1)
 			//登录成功
 			if ok && user != nil && len(*user) > 0 {
 				rid := l.GetString("rid")
@@ -126,7 +131,7 @@ func (l *Login) Login() error {
 				channel := l.GetString("channel")
 				deviceId := l.GetString("deviceId")
 				phoneType := l.GetString("phoneType")
-				returnSign = afterLogin(*user, l.Session(), rid, oid, phoneType, channel, deviceId, false, l.ResponseWriter)
+				returnSign = afterLogin((*user)[0], l.Session(), rid, oid, phoneType, channel, deviceId, false, l.ResponseWriter)
 				return 1
 			}
 			return -1 //用户名或密码不正确
@@ -215,6 +220,7 @@ func (l *Login) Login() error {
 					data["s_regsource"] = isAndroidOrIOS(l.Header("User-Agent"))
 					_id := mongodb.Save("user", data)
 					if _id != "" {
+						userInfo["isNewUser"] = true
 						//用户中台同步
 						func(userid string) {
 							// formdata := map[string]interface{}{
@@ -258,6 +264,22 @@ func (l *Login) Login() error {
 						return 1
 					}
 				} else {
+					//以s_m_phone登录的 需要把s_m_phone转化为s_phone
+					updataMap := map[string]interface{}{}
+					if user["s_m_phone"] != nil {
+						updataMap["s_phone"] = phone
+					}
+					//注册邮箱
+					email := l.GetString("email")
+					if jy.IsEmail(email) {
+						updataMap["s_email"] = email
+					}
+					if len(updataMap) > 0 {
+						mongodb.UpdateById("user", BsonIdToSId(user["_id"]), map[string]interface{}{
+							"$set":   updataMap,
+							"$unset": map[string]interface{}{"s_m_phone": ""},
+						})
+					}
 					jy.ClearPhoneIdentSession(l.Session())
 					returnSign = afterLogin(user, l.Session(), rid, oid, phoneType, channel, deviceId, false, l.ResponseWriter)
 					return 1
@@ -944,6 +966,10 @@ func (l *Login) Brand() {
 	})
 }
 
+func (l *Login) SetPwd() {
+	l.Render("/me/setpwd.html")
+}
+
 /**********************************************************************
 ***********************************************************************
 ***********************************************************************/

+ 13 - 0
src/jfw/modules/app/src/app/front/shorturl.go

@@ -319,6 +319,19 @@ func Filter(obj map[string]interface{}) map[string]interface{} {
 		if !dv.(bool) {
 			continue
 		}
+		if obj["package"] != nil {
+			pk := util.ObjToMap(obj["package"])
+			for _, pv := range *pk {
+				if pv != nil {
+					if page := util.ObjToMap(pv); page != nil {
+						if (*page)[dk] != nil {
+							(*page)[dk] = mosaicText
+						}
+						delete(*page, "text")
+					}
+				}
+			}
+		}
 		//if util.ObjToString(obj[dk]) != "" {
 		//	detail = strings.ReplaceAll(detail, util.ObjToString(obj[dk]), detailText)
 		//}

+ 2 - 1
src/jfw/modules/app/src/app/tag/msg.go

@@ -3,10 +3,11 @@ package tag
 import (
 	"html/template"
 	"jy/src/jfw/modules/app/src/jfw/config"
-	util "app.yhyue.com/moapp/jybase/common"
 	"strconv"
 	"strings"
 	"time"
+
+	util "app.yhyue.com/moapp/jybase/common"
 )
 
 // Msg 从json配置文件中读取值

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

@@ -1498,7 +1498,12 @@ function loginSuccess (result, loginType) {
       url: '/entbase/ent/mySelectent?t=' + new Date().getTime()
     })
   }
-
+  // 当前为新用户(即注册)--跳转设置密码页
+   if(result.userInfo && result.userInfo.isNewUser) {
+     var href ="/jyapp/free/setPwd";
+     window.location.href = href;
+     return
+   }
 
   if (loginType === 'is-wx') {
     // 检查是否绑定手机号

+ 31 - 10
src/jfw/modules/app/src/web/staticres/jyapp/me/css/login.css

@@ -2,7 +2,7 @@
 .login_main{
   margin: 12px 12px 0 12px;
   padding: .34rem 0 .68rem;
-  background: #fff;
+  /*background: #fff;*/
   box-shadow: 0px 2px 8px rgba(54, 147, 179, 0.051);
   border-radius: 8px;
 }
@@ -14,7 +14,7 @@
 
 .login div.pass {
   width: 100%;
-  background: #fff;
+  /*background: #fff;*/
   position: relative;
   border-bottom: 1px solid #E6E6E6;
   height: 1rem;
@@ -31,6 +31,9 @@
 	z-index: 2;
 	background-color: transparent;
 }
+.login div.onePass {
+    display:none;
+}
 .login div.onePass input{
 	padding-right: 80px;
 }
@@ -43,7 +46,11 @@
 }
 
 .login .forget {
-  margin-top: 18px;
+  margin-top: 12px;
+  text-align: center;
+  font-size: 14px;
+    color: #9B9CA3;
+    line-height:20px;
 }
 .login .btn{
   margin-top: 24px;
@@ -52,13 +59,16 @@
 .login .forget a {
   color: #2ABED1;
   font-size: 14px;
-  float: left;
 }
 
-.login .forget a.register {
-  float: right;
+.login .forget .forget-password{
+    display: none;
 }
 
+/*.login .forget a.register {*/
+/*  float: right;*/
+/*}*/
+
 .login .wx {
   text-align: center;
   margin-top:20px;
@@ -157,9 +167,9 @@
 .header-tab-active{
 	color: #2CB7CA;
 }
-.login .code{
-	display: none;
-}
+/*.login .code{*/
+/*	display: none;*/
+/*}*/
 .login>.code>span{
 	text-align: right;
 	width: 2rem;
@@ -223,4 +233,15 @@
 }
 .jyapp-icon-zuojiantou-x:after{
 	top:38px;
-}
+}
+/*重置input默认样式*/
+/*input:-webkit-autofill{*/
+/*    -webkit-box-shadow: 0 0 0px 1000px transparent inset;*/
+/*    transition:  background-color 5000s ease-in-out 0s !important;*/
+/*}*/
+/*input:-internal-autofill-previewed,*/
+/*input:-internal-autofill-selected {*/
+/*    background-color: #f5ffff !important;*/
+/*    !*transition:  background-color 5000s ease-in-out 0s !important;*!*/
+/*}*/
+

+ 52 - 7
src/jfw/modules/app/src/web/staticres/jyapp/wxtsguide/main.js

@@ -51,7 +51,11 @@ var Guide = {
 			}else{
 				indexTemp = 0;
 			}
-			html += '<li style="'+thisStyle+'">'+i+'</li>';
+      if(this.selectIndustrys && this.selectIndustrys.length >0 && this.selectIndustrys.indexOf(i) > -1) {
+        html += '<li style="'+thisStyle+'" class="active">'+i+'</li>';
+      } else {
+        html += '<li style="'+thisStyle+'">'+i+'</li>';
+      }
 		}
 		$(".step-1>div").css("padding","0px "+thisMarginLeft+"px");
 		$("#industry").html(html);
@@ -69,6 +73,7 @@ var Guide = {
 		        localStorage.removeItem("tsGuide_keywords");
 		        localStorage.removeItem("tsGuide_preview");
 		        localStorage.removeItem("tsGuide_step");
+            localStorage.removeItem("tsGuide_area");
 		    }
 			//Android客户端没有使用
 //			if (!mySysIsIos()){
@@ -118,10 +123,21 @@ var Guide = {
 			}else{
 				$(".relRecom").hide();
 			}
-			$(".step-1").hide();
-			this.setInputEmpty();
-			$(".com-top-one .nextStep").attr("disabled",$("#haskeywords li").length == 0);
-			$(".step-2").show();
+      this.setInputEmpty();
+      $(".com-top-one .nextStep").attr("disabled",$("#haskeywords li").length == 0);
+      $(".step-1").hide();
+      $(".step-2").show();
+      $(".relRecom,.com-top-one").hide();
+      // 获取已配置过的关键词
+      getHadKeywords(index, function(keys) {
+        if(keys.length > 0) {
+          $("body").removeClass("step-3-body");
+          $(".relRecom,.com-top-one").hide();
+          $(".com-top-two-b,.com-top-two").show();
+        } else {
+          $(".relRecom,.com-top-one").show();
+        }
+      })
 		}else if(index == 2){
 			$("body").removeClass("step-3-body");
 			$(".relRecom,.com-top-one").hide();
@@ -171,7 +187,6 @@ var Guide = {
 			$(".com-top-one").show();
 			$("body").removeClass("step-3-body");
 		}else if(index == 4){
-			this.removeLast();
 			this.saveLSkeywords(true);
 			$(".step-3").hide();
 			$(".com-top-two-b").show();
@@ -418,6 +433,7 @@ var Guide = {
 			$(".step-3").show();
 		}
 		localStorage.tsGuide_status = "0";
+    getHadKeywords(localStorage.tsGuide_step)
 	},
 	saveLSinputvalue: function(value,comStartFlag){
 		value = $.trim(value);
@@ -839,6 +855,35 @@ var JYAlert = function(T,comStartFlag){
 		$("#myModal").modal("show");
 	}
 }
+// 获取已经设置过的关键词
+function getHadKeywords(step, callback){
+  $.ajax({
+    url: "/publicapply/free/subscribe",
+    type: "post",
+    success: function(res){
+      if(res.error_code === 0 && res.data){
+        var keysArr = res.data.keys ?  res.data.keys : []
+        var keys = []
+        keysArr.forEach(function(e) {
+          keys = keys.concat(e.key)
+        })
+        callback && callback(keys)
+        if (keys.length > 0) {
+          Guide.saveLSkeywords(false)
+          if(step === 1) {
+            Guide.nextStep(2)
+          }
+          $("#haskeywords li").remove();
+          for( var i=0; i< keys.length; i++) {
+            Guide.appendHaskeywords(keys[i])
+          }
+        }
+      }
+    },
+    error: function(){
+    }
+  });
+}
 //
 $(function(){
   Guide.clearHistoryPushDataCache()
@@ -863,12 +908,12 @@ $(function(){
 	if(!isiOS){
 		$("#adjustment").height($(window).height() / 2);
 	}
-	Guide.initStep_1();
 	if(localStorage && localStorage.tsGuide_step){
 		Guide.backInit();
 	}else{
 		$(".step-1").show();
 	}
+  Guide.initStep_1();
 	$("#input-keyword-1").blur(function(){
 		var thisValue = $.trim($(this).val());
 		if(thisValue != ""){

+ 76 - 39
src/jfw/modules/app/src/web/templates/me/login.html

@@ -132,8 +132,8 @@
   </div>
   <div class="login_main">
     <span class="header-tab">
-      <a class="header-tab-active">密码登录</a>
-      <a>验证码登录</a>
+      <a class="header-tab-active">验证码登录/注册</a>
+      <a>码登录</a>
       <i></i>
     </span>
     <div class="login">
@@ -154,10 +154,11 @@
         <img class="closeQc" src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/cancel.png?v={{Msg "seo" "version"}}"/>
         <span id="sendIdentCode">获取验证码</span>
       </div>
-      <button type="button" id="btn" class="disabled btn" />登录</button>
+      <button type="button" id="btn" class="disabled btn" />登录 / 注册</button>
       <div class="forget">
-        <a href="javascript:void(0)">忘记密码?</a>
-        <a href="javascript:void(0)" class="register">立即注册</a>
+        <a class="forget-password" href="javascript:void(0)">忘记密码?</a>
+<!--        <a href="javascript:void(0)" class="register">立即注册</a>-->
+          <span class="tip">未注册用户验证通过后自动注册</span>
         <div class="clearfix"></div>
       </div>
     </div>
@@ -188,6 +189,9 @@
   </div>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/ad/js/index.js?v={{Msg "seo" "version"}}'></script>
   <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/utils.js?v={{Msg "seo" "version"}}'></script>
+    <!--S 加载荟聚SDK初始化及剑鱼自定义埋点注入 -->
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/fotter.js?v={{Msg "seo" "version" }}'></script>
+    <!--E 加载荟聚SDK初始化及剑鱼自定义埋点注入 -->
   <script>
     var Activedatastring = `register`
     var ActivedataType = `jy-app-${Activedatastring}-login`
@@ -197,10 +201,31 @@
     * 获取后台广告方法
     *  getActiveInfo: function (active_codes_map,isAppsion)
     * @param {Array|String} active_codes_map 广告id标识符--数组集合["jy-wx-course-pay-success"]
-    * @param {String} isAppsion 请求环境、app、weixin、pc
+    * @parRam {String} isAppsion 请求环境、app、weixin、pc
     */
     getActive.getActiveInfo(Activedata,'Applink')
   </script>
+    <script type="text/javascript">
+      // var platform = utils.isWeiXinBrowser ? 'wx' : 'app'
+      // 注册埋点
+      function trackClick (c_type) {
+        if (!c_type) return
+        try {
+          clab_tracker.track('c_register', {
+            c_platform: 'app',
+            c_type: c_type,
+            date: new Date()
+          })
+        } catch (error) {
+          console.dir(error)
+        }
+      }
+      // 埋点
+      window.onload = function () {
+        // 埋点
+        trackClick('注册行为-打开登录/注册页面')
+      }
+    </script>
 	<script type="text/javascript">
 		var wait = 60;
     var inment_H5 = true
@@ -259,10 +284,10 @@
 				if($(this).index() == 0){
 					window.location.href = "/jyapp/free/forgetPwd";
 				}else{
-          var href ="/jyapp/free/register";
-          if (disWord!=null){
-          sessionStorage.setItem("disWord_reg",disWord)
-          }
+                  var href ="/jyapp/free/register";
+                  if (disWord!=null){
+                    sessionStorage.setItem("disWord_reg",disWord)
+                  }
 					window.location.href = href;
 				}
 			});
@@ -270,14 +295,20 @@
 			$(".header-tab>a").on("tap",function(){
 				$(".header-tab>a").removeClass("header-tab-active");
 				$(this).addClass("header-tab-active");
-				if($(this).index() == 0){
+				if($(this).index() == 1){
 					$(".login .onePass").show();
 					$(".login .code").css("display","none");
-					$(".header-tab>i").css("left",left_1);
+					$(".header-tab>i").css("left",left_2);
+                  $('.forget-password').show()
+                  $('.forget .tip').hide()
+                  $('#btn').text('登录')
 				}else{
 					$(".login .onePass").hide();
 					$(".login .code").css("display","table");
-					$(".header-tab>i").css("left",left_2);
+					$(".header-tab>i").css("left",left_1);
+					$('.forget-password').hide()
+                    $('.forget .tip').show()
+                   $('#btn').text('登录 / 注册')
 				}
 				changeBtnStatus();
 			});
@@ -301,6 +332,7 @@
 					return
 				}
         if ($('#sendIdentCode').html() !== '获取验证码') return
+              trackClick('注册行为-获取验证码')
 				var thisClass = this;
 				$.post("/jyapp/free/login",{reqType:"sendIdentCode",phone: phone,token: getCipherText(phone)},function(r){
 					if(r.status==-1){
@@ -399,31 +431,32 @@
 					},2000)
 				} else {
 					var phone = $.trim($("#tel").val());
-					if($(".header-tab>a.header-tab-active").index() == 0){
-            var params = {}
-            if (utils.$envs.inApp) {
-              params = {
-                reqType:"phoneLogin",
-                phone:phone,
-                password:$(".onePass input").val(),
-                rid:JyObj.getPushRid(),
-                oid:getOtherPushId(),
-                phoneType:getPhoneType(),
-                channel:getChannel(),
-                deviceId:getDeviceId()
-              }
-            } else {
-              params = {
-                reqType:"phoneLogin",
-                phone:phone,
-                password:$(".onePass input").val(),
-                rid:'',
-                oid:'',
-                phoneType:'',
-                channel:'',
-                deviceId:''
-              }
-            }
+					if($(".header-tab>a.header-tab-active").index() == 1){
+                    var params = {}
+                    if (utils.$envs.inApp) {
+                      params = {
+                        reqType:"phoneLogin",
+                        phone:phone,
+                        password:$(".onePass input").val(),
+                        rid:JyObj.getPushRid(),
+                        oid:getOtherPushId(),
+                        phoneType:getPhoneType(),
+                        channel:getChannel(),
+                        deviceId:getDeviceId()
+                      }
+                    } else {
+                      params = {
+                        reqType:"phoneLogin",
+                        phone:phone,
+                        password:$(".onePass input").val(),
+                        rid:'',
+                        oid:'',
+                        phoneType:'',
+                        channel:'',
+                        deviceId:''
+                      }
+                    }
+                    // 账号密码登录
 						$.post("/jyapp/free/login",params,function(r){
 							if(r.status==1){
 								if(localStorage){
@@ -436,6 +469,9 @@
 							}
 						});
 					}else{
+                      trackClick('注册行为-登录/注册')
+					  // 验证码登录/注册
+                      // {reqType:"identCodeLogin",phone:phone,identCode:$("#identCode").val(),rid:JyObj.getPushRid(),oid:getOtherPushId(),phoneType:getPhoneType(),channel:getChannel(),deviceId:getDeviceId(),disWord:disWord}
 						$.post("/jyapp/free/login",{reqType:"identCodeLogin",phone:phone,identCode:$("#identCode").val(),rid:JyObj.getPushRid(),oid:getOtherPushId(),phoneType:getPhoneType(),channel:getChannel(),deviceId:getDeviceId(),disWord:disWord},function(r){
 							if(r.status==1){
 								if(localStorage){
@@ -488,6 +524,7 @@
 		function changeBtnStatus(){
 			var password = $(".onePass input").val();
 			var phone = $.trim($("#tel").val());
+			var identCode = $.trim($("#identCode").val())
 			if(phone.length >= 11){
 				dcsOne = true;
 				if(wait == 60){
@@ -498,7 +535,7 @@
 	     		$("#sendIdentCode").css("color","#888888")
 			}
 			if($.trim(phone).length > 0 && (Verification.isPhone(phone) || CreatePhone.isPhone(phone))){
-				if($(".header-tab>a.header-tab-active").index() == 0){
+				if($(".header-tab>a.header-tab-active").index() == 1){
 					if($.trim(password).length > 0 && password.length >= 6){
 						$("#btn").removeClass("disabled");
 					}else{

+ 60 - 63
src/jfw/modules/app/src/web/templates/me/setpwd.html

@@ -15,14 +15,53 @@
 
 		<title>设置密码</title>
 	</head>
-
+    <style>
+        body {
+            background: url(/jyapp/me/images/bg_banner.png) no-repeat;
+        }
+        #header.regpass{
+            background: url(/jyapp/me/images/register_logo.png?v=51430) no-repeat;
+            background-size: 100%;
+        }
+        #header .cancel {
+            position: absolute;
+            top: 0.84rem;
+            left: 0.24rem;
+            width: 0.48rem;
+            height: 0.48rem;
+            padding-left: 0;
+        }
+        #header .cancel>img{
+            width:100%;
+            height:100%;
+        }
+        .btn{
+            margin-top: 24px;
+        }
+        .default-btn{
+            border-radius: 8px;
+            border: 1px solid rgba(0, 0, 0, 0.05);
+            background: transparent;
+            color: rgba(23, 24, 38, .65) !important;
+        }
+        .tip-row{
+            color: #9B9CA3;
+            text-align: center;
+            font-size: 12px;
+            line-height: 18px;
+            margin-top:12px;
+        }
+       [type='password']{
+            background: transparent;
+        }
+    </style>
 	<body>
 
 		<div id="header" class="reg regpass">
-			<a href="javascript:;" class="cancle" style="padding: 15px;display: inline-block;">
-				<span class="jyapp-icon jyapp-icon-zuojiantou" style="font-size:0.4rem;"></span>
+			<a href="javascript:;" class="cancel">
+                <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/me/images/back.png?v={{Msg "seo" "version"}}" alt="" />
+<!--				<span class="jyapp-icon jyapp-icon-zuojiantou" style="font-size:0.4rem;"></span>-->
 			</a>
-			<h2>欢迎加入剑鱼标讯</h2>
 		</div>
 
 		<div class="takeIn">
@@ -39,6 +78,8 @@
 				<div class="tran-line-bottom"></div>
 			</div>
 			<center><button type="button" name="btn" id="btn" class="disabled btn">完成</button></center>
+            <button type="button" name="btn" id="noSet" class="default-btn btn">暂不设置</button>
+            <p class="tip-row">您可前往【我的-设置-账号与安全】<br>设置或修改密码</p>
 		</div>
     <!--S 加载荟聚SDK初始化及剑鱼自定义埋点注入 -->
     <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/header.js?v={{Msg "seo" "version"}}'></script>
@@ -104,7 +145,7 @@
 					},100);
 					commonMethod();
 				});
-				$(".closeQc").on("tap",function(){
+				$(".closeQc").on(isIos?"tap":"click",function(){
 					if($(this).prev().val().length>0){
 						$(this).prev().val("").focus();
 						$(this).hide();
@@ -138,79 +179,35 @@
 					}
           $(this).addClass("disabled");
           let params = {
-            reqType:"save",
             password:$(".onePass input").val(),
-            rid:JyObj.getPushRid(),
-            oid:getOtherPushId(),
-            phoneType:getPhoneType(),
-            channel:getChannel(),
-            deviceId:getDeviceId(),
-            s_entname:entname,
-            disWord:disWord
-          }
-          if (platform.inH5) {
-            params = {
-              reqType:"save",
-              password:$(".onePass input").val(),
-              rid:'',
-              oid:'',
-              phoneType:'',
-              channel:'',
-              deviceId:'',
-              s_entname:entname,
-              disWord:disWord
-            }
           }
           // 埋点
-          trackClick('注册行为-点击完成设置密码')
+          trackClick('注册行为-设置密码-确定')
           $.ajax({
-    				url: "/jyapp/free/register",
+    				url: "/publicapply/password/update",
     				type: "post",
-    				data: params,
+                    contentType: 'application/json',
+    				data: JSON.stringify(params),
     				dataType: "json",
     				success: function(r){
   						var url = null;
-  						if(r.status=="timeout"){
-  							url = "/jyapp/free/register";
-  							EasyAlert.show("页面超时,请重新进入");
-  						}else if(r.status=="userExists"){
-  							url = "/jyapp/free/register";
-  							EasyAlert.show("手机号已被注册");
-  						}else if(r.status=="saveError"){
-  							EasyAlert.show("数据提交失败");
-  						}else if(r.status=="y"){
-  							loginSuccess(r);
-  						}
-  						if(url != null){
-  							setTimeout(function() {
-  								window.location.href = url;
-  							}, 1000);
+  						if (r.data){
+                          checkNeedGoNewUserSettingPage()
+  						} else {
+                          EasyAlert.show("保存失败");
   						}
     				},
     				error: function(){
     					$(this).removeClass("disabled");
     				}
     			});
-					//$.post("/jyapp/free/register",{reqType:"save",password:$(".onePass input").val(),rid:JyObj.getPushRid(),oid:getOtherPushId(),phoneType:getPhoneType(),channel:getChannel(),deviceId:getDeviceId()},function(r){
-					//	var url = null;
-					//	if(r.status=="timeout"){
-					//		url = "/jyapp/free/register";
-					//		EasyAlert.show("页面超时,请重新进入");
-					//	}else if(r.status=="userExists"){
-					//		url = "/jyapp/free/register";
-					//		EasyAlert.show("手机号已被注册");
-					//	}else if(r.status=="saveError"){
-					//		EasyAlert.show("数据提交失败");
-					//	}else if(r.status=="y"){
-					//		loginSuccess(r);
-					//	}
-					//	if(url != null){
-					//		setTimeout(function() {
-					//			window.location.href = url;
-					//		}, 1000);
-					//	}
-					//});
 				})
+              // 暂不设置--跳转兴趣爱好设置页面
+              $("#noSet").on("tap", function () {
+                // 埋点
+                trackClick('注册行为-设置密码-暂不订阅')
+                checkNeedGoNewUserSettingPage()
+              })
 			})
 			function commonMethod(){
 				if($.trim($(".onePass input").val()).length >= 6 && $.trim($(".againPass input").val()).length >= 6){

+ 9 - 0
src/jfw/modules/app/src/web/templates/weixin/wxtsguide.html

@@ -368,6 +368,11 @@ if(localStorage && localStorage.tsGuide_status == "1"){
 				showPopForArea: false
 			}
 		},
+        created: function () {
+          if(localStorage && localStorage.tsGuide_area) {
+             this.selectArea =  localStorage.tsGuide_area
+          }
+        },
 		methods: {
 			togglePopForArea (status) {
 				this.showPopForArea = status
@@ -387,6 +392,10 @@ if(localStorage && localStorage.tsGuide_status == "1"){
 				} else {
 					this.selectArea = selectArea
 				}
+				// 存储所选地区(h5页面刷新页面,需要重新获取地区用以请求接口)
+                if(localStorage) {
+                  localStorage.tsGuide_area = this.selectArea
+                }
 				this.togglePopForArea(false)
 			},
 		}

+ 16 - 1
src/jfw/modules/bigmember/src/entity/marketAnalysis/commonSearch.go

@@ -2,6 +2,8 @@ package marketAnalysis
 
 import (
 	qutil "app.yhyue.com/moapp/jybase/common"
+	elastic "app.yhyue.com/moapp/jybase/es"
+	mgo "app.yhyue.com/moapp/jybase/mongodb"
 	"fmt"
 	"strings"
 )
@@ -46,7 +48,20 @@ func (mae *MarketAnalysisEntity) GetCommonQuerySql() string {
 	}
 	//中标企业
 	if mae.FormatParam.Winner != "" {
-		musts = append(musts, fmt.Sprintf(`{"term":{"s_winner":"%s"}}`, mae.FormatParam.Winner))
+		var winnerId string
+		if mgo.IsObjectIdHex(mae.FormatParam.Winner) {
+			winnerId = mae.FormatParam.Winner
+		} else {
+			rData := elastic.Get("qyxy", "qyxy", fmt.Sprintf(`{"query": {"bool": {"must": [{"term": {"company_name": "%s"}}]}},"_source":["_id"],"size": 1}`, mae.FormatParam.Winner))
+			if rData != nil && len(*rData) > 0 {
+				winnerId = qutil.InterfaceToStr((*rData)[0]["_id"])
+			}
+		}
+		if winnerId != "" {
+			musts = append(musts, fmt.Sprintf(`{"term":{"entidlist":"%s"}}`, winnerId))
+		} else {
+			musts = append(musts, fmt.Sprintf(`{"term":{"s_winner":"%s"}}`, mae.FormatParam.Winner))
+		}
 	}
 	//采购单位
 	if mae.FormatParam.Buyer != "" {

+ 19 - 16
src/jfw/modules/bigmember/src/service/report/marketAnalysis.go

@@ -61,24 +61,27 @@ func (this *MarketAnalysis) ProjectInfo() {
 		}
 		mae := &marketAnalysis.MarketAnalysisEntity{MgoRecordId: rid, BaseParam: bParam, UId: userId, Pid: pid}
 		//参数验证 --:回显字段keysItems、area、industry、buyerclass
-		if bParam.KeysItemsStr == "" || bParam.Area == "" || bParam.Industry == "" || bParam.BuyerClass == "" {
-			//原查询条件
-			maePrimary := &marketAnalysis.MarketAnalysisEntity{MgoRecordId: rid, UId: userId, Pid: pid}
-			if err := maePrimary.GetAnalysisFromMgoDb(); err == nil {
-				if bParam.KeysItemsStr == "" || len([]rune(bParam.KeysItemsStr)) < 3 { //分析内容【字符串】结构和o_member_jy.a_items保持一致
-					mae.BaseParam.KeysItemsStr = maePrimary.BaseParam.KeysItemsStr
-				}
-				if bParam.Area == "" || len([]rune(bParam.Area)) < 3 { //省份【字符串】多个省份用逗号拼接
-					mae.BaseParam.Area = maePrimary.BaseParam.Area
-				}
-				if bParam.Industry == "" || len([]rune(bParam.Industry)) < 3 { //行业【字符串】多个行业用逗号拼接
-					mae.BaseParam.Industry = maePrimary.BaseParam.Industry
-				}
-				if bParam.BuyerClass == "" || len([]rune(bParam.BuyerClass)) < 3 { //采购单位类型【字符串】多个采购单位类型用逗号拼接
-					mae.BaseParam.BuyerClass = maePrimary.BaseParam.BuyerClass
-				}
+
+		//原查询条件
+		maePrimary := &marketAnalysis.MarketAnalysisEntity{MgoRecordId: rid, UId: userId, Pid: pid}
+		if err := maePrimary.GetAnalysisFromMgoDb(); err == nil {
+			if bParam.KeysItemsStr == "" || bParam.KeysItemsStr == "{}" || len([]rune(bParam.KeysItemsStr)) < 2 { //分析内容【字符串】结构和o_member_jy.a_items保持一致
+				mae.BaseParam.KeysItemsStr = maePrimary.BaseParam.KeysItemsStr
+			}
+			if bParam.Area == "" || bParam.Area == "{}" || len([]rune(bParam.Area)) < 2 { //省份【字符串】多个省份用逗号拼接
+				mae.BaseParam.Area = maePrimary.BaseParam.Area
+			}
+			if bParam.Industry == "" || bParam.Industry == "{}" || len([]rune(bParam.Industry)) < 2 { //行业【字符串】多个行业用逗号拼接
+				mae.BaseParam.Industry = maePrimary.BaseParam.Industry
+			}
+			if bParam.BuyerClass == "" || bParam.BuyerClass == "{}" || len([]rune(bParam.BuyerClass)) < 2 { //采购单位类型【字符串】多个采购单位类型用逗号拼接
+				mae.BaseParam.BuyerClass = maePrimary.BaseParam.BuyerClass
+			}
+			if bParam.MatchingMode == "" { //匹配模式
+				mae.BaseParam.MatchingMode = maePrimary.BaseParam.MatchingMode
 			}
 		}
+
 		if err := mae.ForMatData(); err != nil {
 			return nil, err
 		}

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

@@ -20,6 +20,7 @@ import (
 	_ "jy/src/jfw/modules/publicapply/src/me"
 	_ "jy/src/jfw/modules/publicapply/src/message"
 	_ "jy/src/jfw/modules/publicapply/src/npsValue"
+	_ "jy/src/jfw/modules/publicapply/src/password"
 	_ "jy/src/jfw/modules/publicapply/src/project"
 	_ "jy/src/jfw/modules/publicapply/src/transfer"
 	"net/http"

+ 96 - 0
src/jfw/modules/publicapply/src/password/password.go

@@ -0,0 +1,96 @@
+package password
+
+import (
+	"encoding/json"
+	"fmt"
+	"jy/src/jfw/modules/publicapply/src/db"
+	"regexp"
+	"strings"
+
+	. "app.yhyue.com/moapp/jybase/api"
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
+)
+
+func init() {
+	xweb.AddAction(&Password{})
+}
+
+type Password struct {
+	*xweb.Action
+	check  xweb.Mapper `xweb:"/password/check"`  //校验密码
+	update xweb.Mapper `xweb:"/password/update"` //修改密码
+}
+
+var (
+	passwordReg = regexp.MustCompile(".{6,}")
+)
+
+func (this *Password) Check() {
+	userId, _ := this.GetSession("mgoUserId").(string)
+	defer common.Catch()
+	rData, errMsg := func() (interface{}, error) {
+		if userId == "" {
+			return false, fmt.Errorf(Error_msg_1001)
+		}
+		infoMap := map[string]interface{}{}
+		body := xweb.FilterXSS(string(this.Body()))
+		//接收参数
+		json.Unmarshal([]byte(body), &infoMap)
+
+		password := common.ObjToString(infoMap["password"])
+		if data, ok := db.Mgo.FindById("user", userId, `{"s_password":1}`); ok && data != nil && len(*data) > 0 {
+			if password == "" {
+				if (*data)["s_password"] == nil || common.ObjToString((*data)["s_password"]) == "" {
+					return 2, nil
+				} else {
+					return 3, nil
+				}
+			} else {
+				if common.GetMd5String(password) != common.ObjToString((*data)["s_password"]) {
+					return 0, fmt.Errorf("密码校验失败")
+				} else {
+					return 1, nil
+				}
+			}
+		}
+		return false, fmt.Errorf(Error_msg_1003)
+	}()
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
+func (this *Password) Update() {
+	userId, _ := this.GetSession("mgoUserId").(string)
+	defer common.Catch()
+	rData, errMsg := func() (interface{}, error) {
+		if userId == "" {
+			return false, fmt.Errorf(Error_msg_1001)
+		}
+		infoMap := map[string]interface{}{}
+		if string(this.Body()) == "" {
+			return false, fmt.Errorf(Error_msg_1003)
+		}
+		body := xweb.FilterXSS(string(this.Body()))
+		//接收参数
+		json.Unmarshal([]byte(body), &infoMap)
+		if len(infoMap) == 0 {
+			return false, fmt.Errorf(Error_msg_1002)
+		}
+		//必填项
+		if infoMap["password"] == nil {
+			return false, fmt.Errorf(Error_msg_1002)
+		}
+		password := strings.TrimSpace(common.ObjToString(infoMap["password"]))
+
+		if !passwordReg.MatchString(password) {
+			return false, fmt.Errorf(Error_msg_1003)
+		}
+		ok := db.Mgo.UpdateById("user", userId, map[string]interface{}{
+			"$set": map[string]interface{}{
+				"s_password": common.GetMd5String(password),
+			},
+		})
+		return ok, nil
+	}()
+	this.ServeJson(NewResult(rData, errMsg))
+}

二进制
src/web/staticres/commonFunctions/pc-set-password.png


+ 40 - 7
src/web/staticres/css/pc.css

@@ -4719,7 +4719,7 @@ h6 {
 
 .login-dig-tabbar-navbar .line-box {
   margin-top: 8px;
-  width: 80px;
+  width: 118px;
   height: 3px;
   background: #2CB7CA;
   transition: all 0.33s;
@@ -4733,6 +4733,14 @@ h6 {
   transform: translateX(104px);
 }
 
+.login-dig-tabbar-navbar .line-box.pass-line-box{
+  width: 80px;
+}
+
+.login-dig-tabbar-navbar span + span.is-active + .line-box.pass-line-box{
+  transform: translateX(140px);
+}
+
 .login-dig-tabbar-content {
   display: none;
 }
@@ -4757,7 +4765,7 @@ h6 {
 .login-dig-box .footer-action-container {
   display: flex;
   align-items: center;
-  justify-content: space-between;
+  justify-content: center;
   margin-top: 12px;
 }
 .login-dig-box .auto-login-container {
@@ -4860,6 +4868,20 @@ h6 {
   border: 1px solid #2CB7CA;
 }
 
+.login-dig-cancel-button {
+  margin-top: 12px;
+  cursor: pointer;
+  width: 280px;
+  height: 44px;
+  background: #FFFFFF;
+  border-radius: 63px;
+  font-size: 16px;
+  line-height: 24px;
+  color: #1D1D1D;
+  border: 1px solid rgba(0, 0, 0, 0.05);
+}
+
+
 .login-dig-submit-button:disabled {
   border-color: #E0E0E0;
   background: #E0E0E0;
@@ -4886,7 +4908,6 @@ h6 {
   box-sizing: border-box;
   border: 1px solid #F3F6F7;
   position: relative;
-  overflow: hidden;
 }
 
 .login-dig-input-box.is-focus {
@@ -4964,8 +4985,11 @@ h6 {
 }
 
 .login-dig-input-box .after-input-box .verify-img {
-  border-radius: 20px;
+  width: 88px;
+  height: 40px;
+  border-radius: 130px;
   margin-right: -14px;
+  background-color: #FFFFFF;
 }
 
 .login-dig-footer-box {
@@ -5003,7 +5027,7 @@ h6 {
   margin-top: 48px;
   /* padding: 4px 20px; */
   box-sizing: border-box;
-  width: 152px;
+  width: 222px;
   height: 32px;
   background: rgba(44, 183, 202, 0.08);
   border-radius: 52px;
@@ -5075,11 +5099,20 @@ h6 {
 .login-dig-icon-pass {
   background: url("/images/phonelogin/icon-pass.png");
   background-size: 18px 18px;
-  width: 18px;
+  width: 20px;
   height: 18px;
   display: inline-block;
 }
 
+.login-dig-icon-biyan {
+  background: url("/images/phonelogin/icon-biyan.png");
+  background-size: 16px 16px;
+  width: 20px;
+  height: 20px;
+  display: inline-block;
+}
+
+
 .login-dig-icon-guard {
   background: url("/images/phonelogin/icon-guard.png");
   background-size: 18px 18px;
@@ -5170,7 +5203,7 @@ h6 {
 .forget-pass-link {
   font-size: 13px;
   line-height: 20px;
-  color: #686868 !important;
+  color: #2CB7CA;
   text-decoration: none;
   cursor: pointer;
 }

+ 56 - 1
src/web/staticres/frontRouter/pc/user/css/set_favorite.css

@@ -189,6 +189,14 @@
 .add-input-group .input-container {
     display: flex;
     align-items: center;
+    flex-wrap: wrap;
+    justify-content: flex-start;
+}
+.add-input-group .input-container .key-input{
+  margin-bottom: 20px;
+}
+.add-input-group .input-container .key-input:nth-child(odd){
+  margin-right: 20px;
 }
 .add-input-group .input-container .el-input {
     width: 310px;
@@ -196,9 +204,11 @@
 .add-input-group .input-container .el-input__inner {
     height: 36px;
     line-height: 36px;
+    border: 0.5px solid rgba(0, 0, 0, 0.1);
+    background: transparent;
+    color: #686868;
 }
 .add-input-group .add-input--button {
-    margin-left: 18px;
     color: #2ABED1;
 }
 .add-input-group .add-input--button[disabled] {
@@ -222,3 +232,48 @@
     margin-top: 8px;
     color: #FF9F40;
 }
+
+.ent-input-group .input-container {
+  position: relative;
+}
+
+.ent-input-group .input-container .asso_popup{
+  position: absolute;
+  top: 48px;
+  background: #fff;
+  max-height: 224px;
+  min-height: 56px;
+  overflow: hidden;
+  overflow-y: auto;
+  border-radius: 8px;
+}
+
+.ent-input-group .input-container .asso_popup ul{
+  width: 540px;
+  margin-top: 8px;
+  padding-left: 16px;
+}
+
+.ent-input-group .input-container .asso_list{
+  width: 540px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  padding: 14px 56px 14px 0;
+  border-bottom: 0.5px solid rgba(0, 0, 0, 0.05);
+  cursor: pointer;
+}
+
+.ent-input-group .input-container .el-input {
+  width: 540px;
+}
+
+.ent-input-group .input-container .el-input .el-input__inner{
+  border: 0.5px solid rgba(0, 0, 0, 0.1);
+  background: transparent;
+  color: #686868;
+}
+
+.highlight {
+  color: #2ABED1;
+}

+ 104 - 23
src/web/staticres/frontRouter/pc/user/js/set_favorite.js

@@ -6,6 +6,18 @@ const postUserSaleDataExample = {
     department: '产品',
     keyword: '自行车,手机,摩托,工程,医疗,app'
 }
+// 防抖
+function debounce(fn, delay) {
+  var timer
+  return function () {
+    var context = this
+    var args = arguments
+    clearTimeout(timer)
+    timer = setTimeout(function () {
+      fn.apply(context, args)
+    }, delay)
+  }
+}
 var favorite = new Vue({
     el: '#main-app',
     delimiters: ['${', '}'],
@@ -17,32 +29,78 @@ var favorite = new Vue({
                 scale: '',
                 position: '',
                 department: '',
-                keyword: ''
+                keyword: '',
+                company: ''
             },
             newUserSaleData: [],
             // 关键词示范
-            inputKewArr: [],
-            // 关键词输入框
-            kewmodeldata: '',
+            inputKewArr: [
+              '',
+              '',
+              '',
+              '',
+              ''
+            ],
             // 用户选中信息
             selectInfo: {},
-            selectPopInfo: {}
+            selectPopInfo: {},
+            showSearchResult: false, // 联想弹窗
+            companyList: [], // 企业列表
+
         }
     },
     computed: {
         inputKewLength: function () {
-            return this.inputKewArr.length >= 10
+            return this.inputKewArr.filter(input => input.trim() !== '').length
         }
     },
     created: function () {
         this.getNewUerSales()
     },
     methods: {
+        highlight(text) {
+          const regex = new RegExp(this.codesArr.company, 'gi');
+          return text.replace(regex, '<span class="highlight">$&</span>');
+        },
         showToast: function (text) {
             EasyAlert.show(text, '', 2000)
         },
-        inputformatter () {
-            this.kewmodeldata = this.kewmodeldata.replace(/\s+/g, '')
+        // inputformatter () {
+        //     this.kewmodeldata = this.kewmodeldata.replace(/\s+/g, '')
+        // },
+        // 选择企业
+        selectEnt (data) {
+          this.codesArr.company = data
+          this.showSearchResult = false
+        },
+        entInputFormatter: debounce(function(val){
+          console.log(val)
+          if(val === '') { this.showSearchResult = false}
+          this.setAssotionData(val)
+        }, 600),
+        // 企业名称联想
+        setAssotionData (name) {
+          if (!name || name.length < 2) return
+          var _this = this
+          $.ajax({
+            type:'POST',
+            url:'/jypay/user/company/association',
+            data: {
+              name: name
+            },
+            heads : {
+              'content-type': 'application/x-www-form-urlencoded'
+            },
+            success:function (res) {
+              console.log(res)
+              if (res.data && res.data.length > 0) {
+                _this.companyList = res.data
+                _this.showSearchResult = true
+              } else {
+                _this.showSearchResult = false
+              }
+            }
+          })
         },
         positionShow: function (item, index, data) {
             if (index === 0) return true
@@ -69,29 +127,50 @@ var favorite = new Vue({
             }
             
         },
-        // 添加关键词
-        kewsureBtn: function (index) {
-            this.setPageTrack(`添加-${this.kewmodeldata}`, index)
-            var item = this.kewmodeldata
+        // 添加关键词输入框
+        kewsureBtn: function () {
+          if(this.inputKewArr.length <= 10) {
+            const arr = ['', '', '', '', '']
+            this.inputKewArr = this.inputKewArr.concat(arr)
+          }
+        },
+        setCompanyBlur () {
+          setTimeout(() => {
+            this.showSearchResult=false
+          }, 500)
+        },
+        // 输入框失去焦点校验
+        inputformatter: function (value, index) {
+            this.setPageTrack(`添加-${value}`, index)
+            var item = value
             // 验证关键词 重复否
-            var isinputKew = this.inputKewArr.some(function (v) {
-                return v === item
+            var isinputKew = this.inputKewArr.some(function (v, i) {
+              if (i !== index) {
+                if (v === '' && item === '') {
+                  return false
+                } else {
+                  return v === item
+                }
+              } else {
+                return false
+              }
             })
       
             if (isinputKew) {
                 this.showToast('关键词重复')
-                return false
+                this.inputKewArr[index] = ''
             }
-            if (this.kewmodeldata.length > 15) {
+            if (value.length > 15) {
                 this.showToast('关键词超15个字')
-                return false
-            }
-            if (this.kewmodeldata === '') {
-              return false
+                this.inputKewArr[index] = ''
             }
+            this.$forceUpdate()
+            // if (this.kewmodeldata === '') {
+            //   return false
+            // }
       
-            this.inputKewArr.push(this.kewmodeldata)
-            this.kewmodeldata = ''
+            // this.inputKewArr.push(this.kewmodeldata)
+            // this.kewmodeldata = ''
         },
         // 取消关键字
         canlekewBtn (item) {
@@ -165,8 +244,10 @@ var favorite = new Vue({
         postNewUerData (type, callback) {
             var _this = this
             this.setPageTrack(`点击-${type ? '开启剑鱼之旅' : '跳过'}`)
+            const keyarr = _this.inputKewArr.filter(v => v.trim() !== '')
             const codesArr = {
-                keyword: _this.inputKewArr.join(',') || ''
+                keyword: keyarr.join(',') || '',
+                company: _this.codesArr.company
             }
             // 设置单选、多选选择参数
             Object.keys(_this.selectInfo).forEach(function (v) {

二进制
src/web/staticres/images/phonelogin/icon-biyan.png


+ 177 - 30
src/web/staticres/js/login.js

@@ -489,7 +489,10 @@ var logic = function(data,num){
 		$("#bidcommunity").modal("hide")
 		clearInterval(loginfg);
 		loginflag = true;
-		processpage(data.shareid,num);
+    if(!data.phone && data.openid) {
+      window.location.href = '/swordfish/frontPage/userMerge/sess/bind'
+    }
+		processpage(data,num);
 		//登录成功,停止轮询
 		LoginPolling.stop();
 		//登录成功,停止心跳监测
@@ -529,7 +532,7 @@ var logic = function(data,num){
 }
 
 //登录后处理页面逻辑
-var processpage = function(shareid,num){
+var processpage = function(item,num){
   var backToUrl = getParam('backTo')
   if (backToUrl) {
     return location.replace(decodeURIComponent(backToUrl))
@@ -877,6 +880,7 @@ $(function(){
 	var Direct = {
         verify: {},
         forge: {},
+        loginInfo: {},
         instance: {},
         ajaxSms: function (e, type) {
             var _this = this;
@@ -1006,6 +1010,27 @@ $(function(){
               }
             });
         },
+        // 设置密码
+        ajaxSetPassword: function (e, arr) {
+          var payload = {
+            password: arr[0].value
+          };
+          $.ajax({
+            url: "/publicapply/password/update",
+            type: "POST",
+            contentType: "application/json",
+            data: JSON.stringify(payload),
+            success: function(r) {
+              e.setAttribute('data-loading', 'false');
+              if (r) {
+                // 密码保存成功,走登录成功步骤
+                logic(Direct.loginInfo.userInfo, mynum);
+              } else {
+                arr[1].showError('密码保存失败');
+              }
+            }
+          });
+        },
         // 手机号+密码登录
         ajaxLoginPass: function (e, arr) {
             var payload = {
@@ -1049,6 +1074,7 @@ $(function(){
                                     location.href = '/'
                                   })
                                 } else {
+                                  checkNeedGoNewUserSettingPage()
                                   history.back()
                                 }
                               }
@@ -1058,6 +1084,7 @@ $(function(){
                               location.href =  '/swordfish/frontPage/userMerge/sess/merge?token=' + r.data.mergeToken
                               return
                             } else {
+                              checkNeedGoNewUserSettingPage()
                               $("#bidLogin").modal("hide")
                               sessionStorage.setItem('bind-phone', arr[0].value.trim())
                               typeof window.callBindPhoneSuccess === 'function' && window.callBindPhoneSuccess(true)
@@ -1070,19 +1097,19 @@ $(function(){
                     }
                 });
             } else {
-            	    var source =	 getParam("source");//百度SEM
-				if (source!=null){
-					var pathname = window.location.pathname;
-					if (pathname=="/front/structed/pc_index.html"){//结构化数据
-						source+="_structed";
-					}else if (pathname=="/bid/pc/page/bidfile_landpage"){//招标文件解读
-						source+="_bidfile";
-					}else if (pathname=="/big/page/index"){//大会员
-						source+="_member";
-					}
-				}else{
-					source="";
-				}
+                var source =	 getParam("source");//百度SEM
+                if (source!=null){
+                  var pathname = window.location.pathname;
+                  if (pathname=="/front/structed/pc_index.html"){//结构化数据
+                    source+="_structed";
+                  }else if (pathname=="/bid/pc/page/bidfile_landpage"){//招标文件解读
+                    source+="_bidfile";
+                  }else if (pathname=="/big/page/index"){//大会员
+                    source+="_member";
+                  }
+                }else{
+                  source="";
+                }
                 var payload = {
                   reqType:"identCodeLogin",
                   identCode:arr[2].value,
@@ -1093,13 +1120,30 @@ $(function(){
                 $.post("/phone/login",payload,function(r){
                   e.setAttribute('data-loading', 'false')
                   if(r.status==1){
+                    if (r.userInfo.isNewUser) {
+                      trackClick('注册行为-打开设置密码弹窗')
+                      Direct.showSetPassModule(true)
+                      Direct.loginInfo = r
+                    } else {
                       logic(r.userInfo,mynum);
+                    }
                   }else if(r.status==-1){
                       arr[2].showError('短信验证码输入错误')
                   }
                 });
             }
         },
+        // 新用户设置密码
+        showSetPassModule: function (type) {
+          var otherArr = ['.login-dig-footer-box .wx-logo-box', '.login-dig-footer-box .login-dig-text-split' ,'.login-dig-tabbar-navbar', '.login-dig-tabbar-content', '.login-dig-tabbar-content.is-active', '.pass-bottom', '.login-dig-wx-qrcode-box', '.login-dig-top-back-box', '.code-bottom']
+          var setPassArr = ['.login-dig-tabbar-content.set-password', '.login-dig-tabbar-navbar.set-pass-module', '.set-pass-bottom']
+          for(var i=0;i<otherArr.length;i++){
+            document.querySelector(otherArr[i]).style.display = (type ? 'none' : '')
+          }
+          for(var i=0;i<setPassArr.length;i++){
+            document.querySelector(setPassArr[i]).style.display = (type ? 'block' : 'none')
+          }
+        },
         ajaxRegister: function (e, arr) {
           var source =	 getParam("source");//百度SEM
           if (source!=null){
@@ -1205,6 +1249,9 @@ $(function(){
 		if($("#bidLogin").attr("data-rec")){
       $("#bidLogin").removeAttr("data-rec");
 		}
+    if(Direct.loginInfo.userInfo.result === 'ok') {
+      location.reload()
+    }
 	});
     function startTimeDown (type) {
         var nowCount = 60
@@ -1261,9 +1308,9 @@ $(function(){
                 nowQ = 'bind-phone'
                 // getNewVerify()
             }
-            if (e.getAttribute('data-name') === 'register_get_sms') {
-              nowQ = 'register'
-              trackClick('注册行为-发送验证码')
+            if (e.getAttribute('data-name') === 'verify_get_sms' && !isBindPage) {
+              nowQ = 'verify'
+              trackClick('注册行为-验证码登录/注册-获取验证码')
             }
             if(isBindPage) {
               trackClick('绑定-发送验证码')
@@ -1465,6 +1512,15 @@ $(function(){
             if (e.target.classList.contains('is-active')) {
                 return
             }
+            if(e.target.innerText === '密码登录') {
+              $('.code-bottom').hide()
+              $('.pass-bottom').show()
+              $('.line-box').addClass('pass-line-box')
+            } else {
+              $('.pass-bottom').hide()
+              $('.code-bottom').show()
+              $('.line-box').removeClass('pass-line-box')
+            }
             var SelectName = e.target.getAttribute('name')
             document.querySelector('.login-dig-tabbar-navbar span.is-active').classList.toggle('is-active')
             e.target.classList.toggle('is-active')
@@ -1511,6 +1567,8 @@ $(function(){
                 e.setAttribute('data-loading', 'true')
                 if(isBindPage){
                   trackClick('绑定-立即绑定')
+                } else {
+                  trackClick('注册行为-登录/注册')
                 }
                 Direct.ajaxLoginSms(e, verifySubmit.arr)
             },
@@ -1536,7 +1594,11 @@ $(function(){
                 if (type) {
                     Ele.classList.remove('is-stop')
                 } else {
-                    Ele.classList.add('is-stop')
+                    if(isBindPage) {
+                      Ele.classList.remove('is-stop')
+                    } else {
+                      Ele.classList.add('is-stop')
+                    }
                 }
             }
         }
@@ -1594,11 +1656,11 @@ $(function(){
             check: function () {
                 var submitEle = document.querySelector(this.el)
                 var checkStauts = false
-				for(var i=0;i<this.arr.length;i++){
-					if (!this.arr[i].next) {
-                        checkStauts = true
-                    }
-				}
+                for(var i=0;i<this.arr.length;i++){
+                  if (!this.arr[i].next) {
+                    checkStauts = true
+                  }
+				        }
                 if (checkStauts) {
                     submitEle.setAttribute('disabled', checkStauts)
                 } else {
@@ -1624,6 +1686,75 @@ $(function(){
         })
         passSubmit.init([passPhone, passPass])
         Direct.instance.password = passSubmit
+
+        // 设置密码
+        var setPassSubmit = {
+          el: 'button[name="set_pass_submit"]',
+          init: function (arr) {
+            this.arr = arr
+            this.check()
+            var submitEle = document.querySelector(this.el)
+            submitEle.addEventListener('click', this.submit)
+          },
+          submit: function (e) {
+            var e = e.target
+            if (e.getAttribute('data-loading') === 'true') return
+            trackClick('注册行为-设置密码-确定')
+            Direct.ajaxSetPassword(e, setPassSubmit.arr)
+            // e.setAttribute('data-loading', 'true')
+            // Direct.ajaxLoginPass(e, passSubmit.arr)
+          },
+          check: function () {
+            var submitEle = document.querySelector(this.el)
+            var checkStauts = false
+            for(var i=0;i<this.arr.length;i++){
+              if (!this.arr[i].next) {
+                checkStauts = true
+              }
+            }
+            if (checkStauts) {
+                submitEle.setAttribute('disabled', checkStauts)
+            } else {
+              if (this.arr[0].value !== this.arr[1].value) {
+                  this.arr[1].showError('两次密码输入不一致')
+              } else {
+                  submitEle.removeAttribute('disabled')
+              }
+            }
+          }
+        }
+
+        // 暂不设置密码,走登录成功步骤
+        var setPassCancel = {
+          el: 'button[name="set_pass_cancel"]',
+          init: function () {
+            var submitEle = document.querySelector(this.el)
+            submitEle.addEventListener('click', this.submit)
+          },
+          submit: function (e) {
+            trackClick('注册行为-设置密码-暂不订阅')
+            logic(Direct.loginInfo.userInfo,mynum);
+          },
+        }
+
+        var setInitPass = createFormStauts({
+          el: '.login-dig-input-box input[name="init_pass"]',
+          rule: ruleForPass,
+          event: ['input', 'blur'],
+          upStatus: function () {
+            setPassSubmit.check()
+          }
+        })
+        var setCheckPass = createFormStauts({
+          el: '.login-dig-input-box input[name="check_pass"]',
+          rule: ruleForPass,
+          event: ['input', 'blur'],
+          upStatus: function () {
+            setPassSubmit.check()
+          }
+        })
+        setPassSubmit.init([setInitPass, setCheckPass])
+        setPassCancel.init()
     }
     function initForgetDirect () {
         // 判断是否需要初始化
@@ -1909,14 +2040,17 @@ function openLoginDig(type, redirectUrl) {
   try {
     var injectLogic = logic
     logic = function (data, num) {
-      if (type) {
-        window.needToWork = true
-      }
+      window.needToWork = Boolean(type)
       if (data.result === 'ok') {
         //判断是否需要设置cookie
         if(data.cValue){
           afterLoginSetCookit(data.cName,data.cValue,data.expires)
         }
+        // 判断是否绑定手机号
+        if(!data.phone && data.openid) {
+          window.location.href = '/swordfish/frontPage/userMerge/sess/bind'
+          return
+        }
         // 检查是否需要新窗口打开<新用户兴趣偏好设置页面>
         checkNeedGoNewUserSettingPage()
         if (redirectUrl === 'reload') {
@@ -1935,6 +2069,8 @@ function openLoginDig(type, redirectUrl) {
       injectLogic(data, num)
     }
   } catch (e) {}
+  // 埋点
+  trackClick('注册行为-登录或注册弹窗')
 }
 function openBindPhoneDig() {
     openLoginDigForWx(false);
@@ -1951,12 +2087,23 @@ function openBindPhoneDig() {
     }
     $("#bidLogin").modal("show");
 }
+// 密码切换显示/隐藏
+function switchPassShow (e, str) {
+  e.preventDefault()
+  const type = $(str).attr('type')
+  if(type === 'password') {
+    $(str).attr('type', 'text')
+  } else {
+    $(str).attr('type', 'password')
+  }
+}
 function closeLoginDig() {
   $("#bidLogin").modal("hide");
+  window.location.reload()
 }
 function openLoginDigForWx (type) {
-	var otherArr = ['.login-dig-footer-box .wx-logo-box', '.login-dig-footer-box .login-dig-text-split' ,'.login-dig-tabbar-navbar', '.login-dig-tabbar-content', '.login-dig-tabbar-content.is-active']
-	var wxArr = ['.login-dig-wx-qrcode-box', '.login-dig-top-back-box']
+	var otherArr = ['.login-dig-footer-box .wx-logo-box', '.login-dig-footer-box .login-dig-text-split' ,'.login-dig-tabbar-navbar', '.login-dig-tabbar-content', '.login-dig-tabbar-content.is-active', '.pass-bottom']
+	var wxArr = ['.login-dig-wx-qrcode-box', '.login-dig-top-back-box', '.code-bottom']
 	for(var i=0;i<otherArr.length;i++){
 		document.querySelector(otherArr[i]).style.display = (type ? 'none' : '')
 	}
@@ -1974,7 +2121,7 @@ function openLoginDigForReg (type) {
   $('.login-dig-reg').show()
   $('.login-dig-footer-box').hide()
   // 埋点
-  trackClick('注册行为-打开注册页面')
+  trackClick('注册行为-登录或注册弹窗')
 }
 
 function backLogin (type) {

+ 10 - 4
src/web/staticres/public-pc/js/article-content.js

@@ -952,11 +952,15 @@ $(function(){
       if(pckorigin==undefined){
         pckorigin=packageCon[n].type+packageCon[n].origin
       }
-      // var pckbidamount = packageCon[n].bidamount;  //18年开发的时候 预算金额用的中标金额字段bidamount,原因已不可察;23年调整 改为预算字段budget
-      var pckbidamount = packageCon[n].budget;
+      var pckbidamount = packageCon[n].bidamount;
       if(pckbidamount==undefined){
         pckbidamount=""
       }
+
+      var pckbudget = packageCon[n].budget;
+      if(pckbudget==undefined){
+        pckbudget=""
+      }
       pkchtml+='<div class="baseInfo">分包</div>'
         +'<div class="baseTable"><table>'
         +'<tr id="left-three-gray">'
@@ -969,7 +973,7 @@ $(function(){
           +'</td>'
         pkchtml+='<td class="tab-type piddingfour">项目预算(元)</td>'
         pkchtml+='<td class="tab-cont">'
-          +'<div class="cont-cont">'+pckbidamount+'</div>'
+          +'<div class="cont-cont">'+pckbudget+'</div>'
           +'<div class="cont-recy" onclick="recoveryerr(this,\''+n+'-bidamount\',\'\')">纠错</div>'
           +'<div style="display:none;"></div>'
           +'</td>'
@@ -977,6 +981,7 @@ $(function(){
       }else{
         var winnername = "";
         var abountname = "";
+        var pckPrice = pckbidamount;
         pkchtml+='<td class="cd-type">分包/标段</td>'
         if(goTemplateData.params.obj.subtype=="单一"){
           pkchtml+='<td class="cd-type">拟定单一来源采购供应商</td>'
@@ -988,6 +993,7 @@ $(function(){
         if(goTemplateData.params.obj.subtype=="单一"){
           pkchtml+='<td class="cd-type piddingfour">项目预算(元)</td>'
           abountname = "项目预算(元)";
+          pckPrice = pckbudget
         }else{
           pkchtml+='<td class="cd-type piddingfour">中标金额(元)</td>'
           abountname = "中标金额(元)";
@@ -1005,7 +1011,7 @@ $(function(){
           +'<div style="display:none;"></div>'
           +'</td>'
         pkchtml+='<td class="cd-cont amountpck">'
-          +'<div class="cont-cont">'+pckbidamount+'</div>'
+          +'<div class="cont-cont">'+pckPrice+'</div>'
           +'<div class="cont-recy" onclick="recoveryerr(this,\''+n+'-bidamount\',\''+abountname+'\')">纠错</div>'
           +'<div style="display:none;"></div>'
           +'</td>'

+ 10 - 2
src/web/staticres/tags/js/no-login-detail.js

@@ -588,10 +588,16 @@ $(function(){
       if(pckorigin==undefined){
         pckorigin=packageCon[n].type+packageCon[n].origin
       }
+      //中标金额
       var pckbidamount = packageCon[n].bidamount;
       if(pckbidamount==undefined){
         pckbidamount=""
       }
+      //预算金额
+      var pckbudget = packageCon[n].budget;
+      if(pckbudget==undefined){
+        pckbudget=""
+      }
       pkchtml+='<div class="baseInfo">分包</div>'
         +'<div class="baseTable"><table>'
         +'<tr id="left-three-gray">'
@@ -604,7 +610,7 @@ $(function(){
           +'</td>'
         pkchtml+='<td class="tab-type piddingfour">项目预算(元)</td>'
         pkchtml+='<td class="tab-cont">'
-          +'<div class="cont-cont">'+pckbidamount+'</div>'
+          +'<div class="cont-cont">'+pckbudget+'</div>'
           +'<div class="cont-recy" onclick="recoveryerr(this,\''+n+'-bidamount\',\'\')">纠错</div>'
           +'<div style="display:none;"></div>'
           +'</td>'
@@ -612,6 +618,7 @@ $(function(){
       }else{
         var winnername = "";
         var abountname = "";
+        var pckPrice = pckbidamount
         pkchtml+='<td class="cd-type">分包/标段</td>'
         if(goTemplateData.params.obj.subtype=="单一"){
           pkchtml+='<td class="cd-type">拟定单一来源采购供应商</td>'
@@ -623,6 +630,7 @@ $(function(){
         if(goTemplateData.params.obj.subtype=="单一"){
           pkchtml+='<td class="cd-type piddingfour">项目预算(元)</td>'
           abountname = "项目预算(元)";
+          pckPrice = pckbudget
         }else{
           pkchtml+='<td class="cd-type piddingfour">中标金额(元)</td>'
           abountname = "中标金额(元)";
@@ -640,7 +648,7 @@ $(function(){
           +'<div style="display:none;"></div>'
           +'</td>'
         pkchtml+='<td class="cd-cont amountpck">'
-          +'<div class="cont-cont">'+pckbidamount+'</div>'
+          +'<div class="cont-cont">'+pckPrice+'</div>'
           +'<div class="cont-recy" onclick="recoveryerr(this,\''+n+'-bidamount\',\''+abountname+'\')">纠错</div>'
           +'<div style="display:none;"></div>'
           +'</td>'

+ 47 - 3
src/web/staticres/wxtsguide/main.js

@@ -51,7 +51,11 @@ var Guide = {
 			}else{
 				indexTemp = 0;
 			}
-			html += '<li style="'+thisStyle+'">'+i+'</li>';
+      if(this.selectIndustrys && this.selectIndustrys.length >0 && this.selectIndustrys.indexOf(i) > -1) {
+        html += '<li style="'+thisStyle+'" class="active">'+i+'</li>';
+      } else {
+        html += '<li style="'+thisStyle+'">'+i+'</li>';
+      }
 		}
 		$(".step-1>div").css("padding","0px "+thisMarginLeft+"px");
 		$("#industry").html(html);
@@ -119,6 +123,17 @@ var Guide = {
 			this.setInputEmpty();
 			$(".com-top-one .nextStep").attr("disabled",$("#haskeywords li").length == 0);
 			$(".step-2").show();
+      $(".relRecom,.com-top-one").hide();
+      // 获取已配置过的关键词
+      getHadKeywords(index, function(keys) {
+        if(keys.length > 0) {
+          $("body").removeClass("step-3-body");
+          $(".relRecom,.com-top-one").hide();
+          $(".com-top-two-b,.com-top-two").show();
+        } else {
+          $(".relRecom,.com-top-one").show();
+        }
+      })
 		}else if(index == 2){
 			$("body").removeClass("step-3-body");
 			$(".relRecom,.com-top-one").hide();
@@ -168,7 +183,6 @@ var Guide = {
 			$(".com-top-one").show();
 			$("body").removeClass("step-3-body");
 		}else if(index == 4){
-			this.removeLast();
 			this.saveLSkeywords(true);
 			$(".step-3").hide();
 			$(".com-top-two-b").show();
@@ -415,6 +429,7 @@ var Guide = {
 			$(".step-3").show();
 		}
 		localStorage.tsGuide_status = "0";
+    getHadKeywords(localStorage.tsGuide_step)
 	},
 	saveLSinputvalue: function(value,comStartFlag){
 		value = $.trim(value);
@@ -834,6 +849,35 @@ var JYAlert = function(T,comStartFlag){
 		$("#myModal").modal("show");
 	}
 }
+// 获取已经设置过的关键词
+function getHadKeywords(step, callback){
+  $.ajax({
+    url: "/publicapply/free/subscribe",
+    type: "post",
+    success: function(res){
+      if(res.error_code === 0 && res.data){
+        var keysArr = res.data.keys && res.data.keys ?  res.data.keys : []
+        var keys = []
+        keysArr.forEach(function(e) {
+          keys = keys.concat(e.key)
+        })
+        callback && callback(keys)
+        if (keys && keys.length > 0) {
+          Guide.saveLSkeywords(false)
+          if(step === 1) {
+            Guide.nextStep(2)
+          }
+          $("#haskeywords li").remove();
+          for( var i=0; i< keys.length; i++) {
+            Guide.appendHaskeywords(keys[i])
+          }
+        }
+      }
+    },
+    error: function(){
+    }
+  });
+}
 //
 $(function(){
   Guide.clearHistoryPushDataCache()
@@ -866,12 +910,12 @@ $(function(){
 	if(!isiOS){
 		$("#adjustment").height($(window).height() / 2);
 	}
-	Guide.initStep_1();
 	if(localStorage && localStorage.tsGuide_step){
 		Guide.backInit();
 	}else{
 		$(".step-1").show();
 	}
+  Guide.initStep_1();
 	$("#input-keyword-1").blur(function(){
 		var thisValue = $.trim($(this).val());
 		if(thisValue != ""){

+ 51 - 10
src/web/templates/common/pc-login-dialog.html

@@ -22,10 +22,14 @@
         <p class="bind-phone-tip">为了给您提供更好的服务,请绑定手机号!</p>
       </div>
       <div class="login-dig-tabbar-navbar" style="">
-        <span name="code" class="is-active">验证码登录</span>
+        <span name="code" class="is-active">验证码登录/注册</span>
         <span name="pass" class="">密码登录</span>
         <div class="line-box"></div>
       </div>
+      <div class="login-dig-tabbar-navbar set-pass-module" data-name="set-password" style="display: none;">
+          <span name="setpass" class="is-active">设置密码</span>
+          <div class="line-box" style="width: 64px;"></div>
+      </div>
       <!-- <div class="login-dig-tabbar-navbar" data-name="bind-phone" style="display: none;">
           <span name="phone" class="is-active">手机号绑定</span>
           <div class="line-box"></div>
@@ -56,7 +60,7 @@
             <span data-name="verify_get_sms" class="l-get-sms is-stop">获取验证码</span>
           </div>
         </div>
-        <button class="login-dig-submit-button" name="verify_submit" disabled="true">登录</button>
+        <button class="login-dig-submit-button" name="verify_submit" disabled="true">登录/注册</button>
         <div class="footer-action-container">
           <div class="auto-login-container no-selected">
             <div class="auto-login-checkbox"></div>
@@ -67,9 +71,10 @@
             </div>
           </div>
           <!-- <a class="go-register" href="/phone/register" >立即注册</a> -->
-          <div class="go-register" onclick="openLoginDigForReg(true)">立即注册</div>
+          <!-- <div class="go-register" onclick="openLoginDigForReg(true)">立即注册</div> -->
         </div>
       </div>
+      <!-- 密码登录 -->
       <div class="login-dig-tabbar-content login-module-card password-login" data-name="pass">
         <div class="login-dig-input-box" data-error="手机号码输入错误">
           <i class="login-dig-icon-phone"></i>
@@ -86,14 +91,15 @@
           <i class="login-dig-icon-pass"></i>
           <input
             autocomplete="off"
-            class="enter-action-login"
+            class="enter-action-login pass-login"
             name="pass_pass"
             type="password"
             placeholder="输入密码"
           />
+          <i class="login-dig-icon-biyan" onclick="switchPassShow(event, '.pass-login')"></i>
         </div>
         <button class="login-dig-submit-button" name="pass_submit" disabled="true">登录</button>
-        <div class="footer-action-container f-box right-box">
+        <div class="footer-action-container f-box right-box" style="justify-content: space-between;">
           <div class="auto-login-container no-selected">
             <div class="auto-login-checkbox"></div>
             <label for="autoLogin">下次自动登录</label>
@@ -103,17 +109,44 @@
             </div>
           </div>
           <div class="login-right-actions">
-            <div class="forget-pass-link" onclick="openLoginDigForReg(true)">立即注册</div>
-            <span class="login-splitter"></span>
+            <!-- <div class="forget-pass-link" onclick="openLoginDigForReg(true)">立即注册</div>
+            <span class="login-splitter"></span> -->
             <a class="forget-pass-link" href="/phone/forgetPwd">忘记密码?</a>
             <!-- <a class="forget-pass-link" style="color: #2ABED1!important;" href="/phone/register">立即注册</a> -->
           </div>
         </div>
       </div>
+      <!-- 设置密码 -->
+      <div class="login-dig-tabbar-content login-module-card set-password" data-name="setpass">
+        <div class="login-dig-input-box" data-error="密码不少于6位">
+          <i class="login-dig-icon-pass"></i>
+          <input
+            autocomplete="off"
+            class="enter-action-login init-pass"
+            name="init_pass"
+            type="password"
+            placeholder="设置密码(最少6位)"
+          />
+          <i class="login-dig-icon-biyan" onclick="switchPassShow(event, '.init-pass')"></i>
+        </div>
+        <div class="login-dig-input-box" data-error="两次密码输入不一致">
+          <i class="login-dig-icon-pass"></i>
+          <input
+            autocomplete="off"
+            class="enter-action-login check-pass"
+            name="check_pass"
+            type="password"
+            placeholder="确认密码"
+          />
+          <i class="login-dig-icon-biyan" onclick="switchPassShow(event, '.check-pass')"></i>
+        </div>
+        <button class="login-dig-submit-button" name="set_pass_submit" disabled="true">确定</button>
+        <button class="login-dig-cancel-button" name="set_pass_cancel">暂不设置</button>
+      </div>
       <div class="login-dig-wx-qrcode-box login-module-card wx-qr-login" style="display: none">
         <div class="wx-tip">
           <div class="wx-logo"><i class="login-dig-icon-wx"></i></div>
-          <span>微信扫码登录</span>
+          <span>微信扫码登录,安全便捷</span>
         </div>
         <!-- <img class="wx-qrcode" src="/images/swordfish/sf_01_new.png" alt="logo" style="display: block;"> -->
         <img class="wx-qrcode" id="layerImg-login" src="/front/share/10" />
@@ -188,11 +221,19 @@
         <div class="wx-logo-box" onclick="openLoginDigForWx(true)" style="">
           <div class="wx-logo"><i class="login-dig-icon-wx"></i></div>
         </div>
-        <p>
-          未注册用户验证后自动注册,注册即代表同意
+        <p class="code-bottom" style="width: 294px;text-align: center;">
+          未注册用户验证后自动注册,登录/注册即代表同意
           <a href="/front/staticPage/permission_rules.html">《剑鱼标讯用户使用许可协议》</a>
           <a href="/front/staticPage/privacy_rules.html">《剑鱼标讯隐私政策》</a>
         </p>
+        <p class="pass-bottom" style="display: none;text-align: center;">
+          登录即代表同意
+          <a href="/front/staticPage/permission_rules.html">《剑鱼标讯用户使用许可协议》</a>
+          <a href="/front/staticPage/privacy_rules.html">《剑鱼标讯隐私政策》</a>
+        </p>
+        <p class="set-pass-bottom" style="display: none;text-align: center;margin-top: 12px;">
+          您可前往【设置-帐号与安全】设置或修改登录密码
+        </p>
       </div>
     </div>
   </div>

+ 29 - 11
src/web/templates/frontRouter/pc/user/sess/set_favorite.html

@@ -47,9 +47,26 @@
                       </span>
                       <!-- 输入框类型角标 -->
                       <span class="key_titlenums" v-if="item.type === 4">
-                        ${inputKewArr.length}/${item.maximum}
+                        ${inputKewLength}/${item.maximum}
                       </span>
                     </div>
+                    <!-- 公司名称 -->
+                    <div class="key_condition ent-input-group" v-if="item.type === 5">
+                      <div class="input-container">
+                          <el-input
+                            v-model="codesArr.company"
+                            :class="!inputKewLength || 'kewmodel_disabled'"
+                            @blur="setCompanyBlur"
+                            @input="entInputFormatter"
+                            :placeholder="item.describe">
+                          </el-input>
+                          <div class="asso_popup" v-if="showSearchResult">
+                            <ul>
+                              <li @click="selectEnt(ent)" v-for="(ent, i) in companyList" :key="i" class="asso_list" v-html="highlight(ent)"></li>
+                            </ul>
+                          </div>
+                      </div>
+                  </div>
                     <!-- 单选、多选选项 -->
                     <div class="key_condition" :class="{'has-more-color': item.type === 2}" v-if="item.choose">
                       <span
@@ -82,7 +99,7 @@
                     </div>
                     <!-- 选 项 -->
                     <div class="key_condition add-input-group" v-if="item.type === 4">
-                        <div class="tags-list" v-if="inputKewArr.length">
+                        <!-- <div class="tags-list" v-if="inputKewArr.length">
                             <el-tag
                                 v-for="(kew, index) in inputKewArr"
                                 :key="index"
@@ -92,19 +109,20 @@
                                 closable>
                                 ${kew}
                             </el-tag>
-                        </div>
+                        </div> -->
                         <div class="input-container">
+                          <div class="key-input" v-for="(put, i) in inputKewArr" :key="i">
                             <el-input
-                                v-model="kewmodeldata"
-                                :disabled="inputKewLength"
-                                :class="!inputKewLength || 'kewmodel_disabled'"
-                                @blur="inputformatter"
-                                placeholder="输入关键词"></el-input>
-                            <el-button type="text" class="add-input--button" :disabled="inputKewLength" @click.stop="kewsureBtn(index)">确认添加</el-button>
+                              v-model="inputKewArr[i]"
+                              @blur="inputformatter(inputKewArr[i], i)"
+                              placeholder="输入关键词">
+                            </el-input>
+                          </div>
+                          <el-button type="text" class="add-input--button key-input" v-if="inputKewArr.length < 10" @click.stop="kewsureBtn(index)">+添加关键词</el-button>
                         </div>
-                        <div class="key_error_txt" v-if="inputKewLength">
+                        <!-- <div class="key_error_txt" v-if="inputKewLength">
                             业务关键词填满了,请删除后再继续添加
-                        </div>
+                        </div> -->
                     </div>
                 </div>
                 <div class="question-form-footer">

+ 9 - 0
src/web/templates/weixin/wxtsguide.html

@@ -361,6 +361,11 @@ var isBodyShow = true;
 				showPopForArea: false
 			}
 		},
+        created: function () {
+           if(localStorage && localStorage.tsGuide_area) {
+             this.selectArea =  localStorage.tsGuide_area
+           }
+        },
 		methods: {
 			togglePopForArea (status) {
 				this.showPopForArea = status
@@ -380,6 +385,10 @@ var isBodyShow = true;
 				} else {
 					this.selectArea = selectArea
 				}
+                // 存储所选地区(h5页面刷新页面,需要重新获取地区用以请求接口)
+                if(localStorage) {
+                  localStorage.tsGuide_area = this.selectArea
+                }
 				this.togglePopForArea(false)
 			},
 		}