Selaa lähdekoodia

Merge remote-tracking branch 'origin/developer' into developerB

# Conflicts:
#	src/main/resources/static/img/base/WEB-icon.png
#	src/main/resources/static/js/product/detail.js
zhengjinyi 2 vuotta sitten
vanhempi
commit
42df22770f
48 muutettua tiedostoa jossa 996 lisäystä ja 300 poistoa
  1. 45 4
      src/main/resources/static/css/account/bind.css
  2. 56 15
      src/main/resources/static/css/account/login.css
  3. 52 1
      src/main/resources/static/css/article/article.css
  4. 23 2
      src/main/resources/static/css/base/base.h5.css
  5. 17 5
      src/main/resources/static/css/base/base.pc.css
  6. 5 1
      src/main/resources/static/css/base/floor.css
  7. 2 1
      src/main/resources/static/css/flea-market/intro.css
  8. 6 14
      src/main/resources/static/css/index/index_new.pc.css
  9. 12 2
      src/main/resources/static/css/product/instruement.css
  10. BIN
      src/main/resources/static/img/account/login.png
  11. BIN
      src/main/resources/static/img/activity/attestation/section_bg_device_01.png
  12. BIN
      src/main/resources/static/img/activity/attestation/section_bg_device_02.png
  13. BIN
      src/main/resources/static/img/base/WEB-icon.png
  14. BIN
      src/main/resources/static/img/flea-market/zuhe23.png
  15. BIN
      src/main/resources/static/img/ross/ross-bg@1x.png
  16. BIN
      src/main/resources/static/img/ross/ross-bg@2x.png
  17. BIN
      src/main/resources/static/img/ross/ross-image@1x.jpg
  18. BIN
      src/main/resources/static/img/ross/ross-image@2x.jpg
  19. BIN
      src/main/resources/static/img/ross/ross-image@3x.jpg
  20. 161 37
      src/main/resources/static/js/account/bind.js
  21. 186 112
      src/main/resources/static/js/account/login.js
  22. 4 4
      src/main/resources/static/js/activity/attestation.js
  23. 1 0
      src/main/resources/static/js/article/common.js
  24. 1 1
      src/main/resources/static/js/article/detail.js
  25. 1 0
      src/main/resources/static/js/article/list.js
  26. 1 0
      src/main/resources/static/js/auto-input.js
  27. 4 0
      src/main/resources/static/js/base.js
  28. 48 0
      src/main/resources/static/js/common/serviceapi/user.service.js
  29. 33 0
      src/main/resources/static/js/common/serviceapi/utils.service.js
  30. 102 3
      src/main/resources/static/js/mixins/cmSysMixins.js
  31. 1 0
      src/main/resources/static/js/product/detail.js
  32. 1 1
      src/main/resources/static/js/product/list.js
  33. 4 1
      src/main/resources/static/js/supplier/index.js
  34. 1 1
      src/main/resources/static/js/supplier/list.js
  35. 72 37
      src/main/resources/templates/account/bind.html
  36. 59 24
      src/main/resources/templates/account/login.html
  37. 4 0
      src/main/resources/templates/article/components/article-sidebar.html
  38. 6 1
      src/main/resources/templates/article/detail.html
  39. 4 0
      src/main/resources/templates/article/list.html
  40. 27 0
      src/main/resources/templates/components/ross-advert.html
  41. 9 9
      src/main/resources/templates/flea-market/form.html
  42. 5 8
      src/main/resources/templates/flea-market/intro.html
  43. 4 0
      src/main/resources/templates/index.html
  44. 4 0
      src/main/resources/templates/product/detail.html
  45. 22 16
      src/main/resources/templates/product/instrument.html
  46. 4 0
      src/main/resources/templates/product/list.html
  47. 5 0
      src/main/resources/templates/supplier/index.html
  48. 4 0
      src/main/resources/templates/supplier/list.html

+ 45 - 4
src/main/resources/static/css/account/bind.css

@@ -5,13 +5,38 @@ li{list-style:none}
  */
 @media screen and (min-width:768px){
     footer .footTop{display:none;}
-    .signAccount.bind {width: 968px;margin: 0 auto;}
+    .signAccount.bind {width: 968px;margin: 40px auto;background: #FFFFFF;}
     .signAccount.bind .title {height: 42px;font-size: 24px;line-height: 42px;font-weight: normal;color: #22272e;padding: 10px 0;text-align: left;}
     .signAccount.bind .title.center {text-align: center;padding: 20px 0;font-size:32px;}
     .signAccount.bind .title-tips{margin-bottom: 32px;width: 968px;height: 60px;box-sizing: border-box;background-image: linear-gradient(270deg,rgba(255,255,255,0.1) 0%,rgba(255,86,11,0.1) 51%,rgba(255,255,255,0.1) 100%);}
     .signAccount.bind .title-tips p{width: 968px;height: 60px;font-family: Microsoft YaHei;font-size: 14px;font-weight: normal;font-stretch: normal;line-height: 60px;letter-spacing: 1px;color: #e15616;text-align: center;}
-    .signAccount.bind .registerClub{width:498px;margin:0 auto;min-height: 900px;}
+    .signAccount.bind .registerClub{width:400px;margin:0 auto;}
+    .form-step{width: 160px;height: 1px;background: #E2E2E2;margin: 60px auto;position: relative;}
+    .form-step .step{display: block;width: 32px;height: 32px;line-height: 32px;border-radius: 50%;background: #E2E2E2;font-size: 18px;color: #FFFFFF;text-align: center;position: absolute;}
+    .form-step .step.one{top: -15px;left: -37px;}
+    .form-step .step.two{top: -15px;right:-37px;}
+    .form-step .step.active{background: #E15621;}
+    .formLine-tabs{ width: 100%;height: 66px;box-sizing: border-box;padding: 21px 0;float: left;margin-bottom: 10px;}
+    .formLine-tabs .tabs-item{ width: 50%;height: 24px;box-sizing: border-box;float: left;display: block;line-height: 24px;font-size: 18px;color: #22272E;position: relative;text-align: center;}
+    .formLine-tabs .tabs-item:before{content: '';width: 24px;height: 4px;background: #FFFFFF;position: absolute;bottom: -5px;left: 50%;margin-left: -12px;}
+    .formLine-tabs .tabs-item.current{font-weight: bold;color: #E15621;}
+    .formLine-tabs .tabs-item.current:before{background: #E15621;}
+    .formLine{width: 100%;float: left;}
+    .formLine.smscode{width: 280px;}
+    .formLine .code-btn{width: 120px;height: 44px;line-height: 44px;text-align: center;background: #E15621;font-size: 14px;color: #FFFFFF;position: absolute;right: -119px;top: 31px;}
+    .formLine .code-btn.disabled{background: rgba(225,86,33,0.7);}
+    .formLine input{height:44px;line-height:44px;}
+    .formLine input.smscode{box-sizing: border-box;}
+    .subLine{width: 100%;float: left;margin: 40px 0;}
+    .subLine .btn.disabled{background: #E2E2E2;}
 
+    .foot{width:100%;height:96px;background:#262626;margin-top:0px;}
+    .footer{width:1185px;margin:0 auto;text-align:center;height: 96px;box-sizing: border-box;padding: 20px 0;}
+    .footer p{line-height: 30px;color: #FFFFFF;}
+    .footer p span{margin:0 5px}
+    .footer p span a{color: #FFFFFF;}
+    .footer p span a:hover{color: #E15621;}
+    .footer p span img.icp{width: 18px;height: 18px;display: inline-block;}
 }
 
 /**
@@ -21,9 +46,25 @@ li{list-style:none}
     body{background-color: #FFFFFF;}
     footer{display:none}
     .signAccount.bind {width:100%;box-sizing: border-box;padding: 0 4vw;}
-    .signAccount.bind .title {height:4vw;font-size: 3.4vw;line-height: 4vw;font-weight: normal;color: #22272e;padding: 1vw 0;text-align: left;font-weight: bold;}
+    .signAccount.bind .title {height:4vw;font-size: 4.2vw;line-height: 4vw;font-weight: normal;color: #22272e;padding: 1vw 0;text-align: center;font-weight: bold;}
     .signAccount.bind .title.center {text-align: center;padding: 4vw 0;font-size:4vw;}
     .signAccount.bind .title-tips{margin-bottom: 4vw;width:100%;height: 12vw;box-sizing: border-box;padding: 2vw 0;background-image: linear-gradient(270deg,rgba(255,255,255,0.1) 0%,rgba(255,86,11,0.1) 51%,rgba(255,255,255,0.1) 100%);}
     .signAccount.bind .title-tips p{width:100%;height:4vw;font-family: Microsoft YaHei;font-size: 3vw;font-weight: normal;font-stretch: normal;line-height:4vw;color: #e15616;text-align: center;}
-
+    .form-step{width: 160px;height: 1px;background: #E2E2E2;margin: 60px auto;position: relative;}
+    .form-step .step{display: block;width: 32px;height: 32px;line-height: 32px;border-radius: 50%;background: #E2E2E2;font-size: 18px;color: #FFFFFF;text-align: center;position: absolute;}
+    .form-step .step.one{top: -15px;left: -37px;}
+    .form-step .step.two{top: -15px;right:-37px;}
+    .form-step .step.active{background: #E15621;}
+    .formLine-tabs{ width: 100%;height: 66px;box-sizing: border-box;padding: 21px 0;float: left;margin-bottom: 10px;}
+    .formLine-tabs .tabs-item{ width: 50%;height: 24px;box-sizing: border-box;float: left;display: block;line-height: 24px;font-size: 18px;color: #22272E;position: relative;text-align: center;}
+    .formLine-tabs .tabs-item:before{content: '';width: 24px;height: 4px;background: #FFFFFF;position: absolute;bottom: -5px;left: 50%;margin-left: -12px;}
+    .formLine-tabs .tabs-item.current{font-weight: bold;color: #E15621;}
+    .formLine-tabs .tabs-item.current:before{background: #E15621;}
+    .formLine{float: left;}
+    .formLine.smscode{width: 68vw;}
+    .formLine input{height:11.2vw;line-height:6vw;padding: 2.6vw 0;box-sizing: border-box;}
+    .formLine .code-btn{width: 24.8vw;height:11.2vw;line-height: 11.2vw;text-align: center;background: #E15621;font-size:3.4vw;color: #FFFFFF;position: absolute;right: -23.8vw;top: 10.1vw;}
+    .formLine .code-btn.disabled{background: rgba(225,86,33,0.7);}
+    .subLine{ width: 100%;float: left; }
+    .foot{display: none;}
 }

+ 56 - 15
src/main/resources/static/css/account/login.css

@@ -6,33 +6,46 @@ li{list-style:none}
  */
 @media screen and (min-width:768px){
  footer .footTop{display:none;}
- .loginWrap{width:950px;height:400px;overflow:hidden;background:#FFF url(/img/account/login.png) no-repeat 30px center;margin:95px auto;box-sizing:border-box;box-shadow:0 10px 20px 0 rgba(255,180,150,0.17);border-radius:2px}
- .loginForm{float:right;width:400px;padding:20px 24px;font-size:14px;position:relative;height: 100%;box-sizing: border-box;}
- .loginForm h1{color:#22272e;font-size:24px;font-weight:bold;line-height:30px}
- .loginForm h2{color:#22272e;font-size:16px;font-weight:normal;line-height:24px}
+ .loginWrap{width:1200px;height:600px;overflow:hidden;margin:80px auto;box-sizing:border-box;background: #FFFFFF; box-shadow:0 10px 20px 0 rgba(255,180,150,0.17);border-radius:2px;padding: 40px 88px;}
+ .login-image{ width: 460px;height: 348px;float: left;margin-top: 60px; }
+ .login-image img{ width: 460px;height: 348px;display: block; }
+ .loginForm{float:right;width:400px;padding:0px 24px;font-size:14px;position:relative;height: 100%;box-sizing: border-box;}
+ .loginForm h1{color:#22272e;font-size:14px;font-weight:normal;line-height:24px;}
+ .loginForm h2{color:#E15616;font-size:24px;font-weight:bold;line-height:30px;}
+ .loginForm .formLine-tabs{ width: 100%;height: 66px;box-sizing: border-box;padding: 21px 0;float: left;margin-bottom: 10px;}
+ .loginForm .formLine-tabs .tabs-item{ width: 50%;height: 24px;box-sizing: border-box;float: left;display: block;line-height: 24px;font-size: 18px;color: #22272E;position: relative;text-align: center;}
+ .loginForm .formLine-tabs .tabs-item:before{content: '';width: 24px;height: 4px;background: #FFFFFF;position: absolute;bottom: -5px;left: 50%;margin-left: -12px;}
+ .loginForm .formLine-tabs .tabs-item.current{font-weight: bold;}
+ .loginForm .formLine-tabs .tabs-item.current:before{background: #E15621;}
  .loginForm form{margin-top:10px;}
- .loginForm .formLine{height:70px;padding:0;}
+ .loginForm .formLine{width: 100%; height:70px;padding:0;float: left;position: relative;}
+ .loginForm .formLine.smscode{width: 254px;}
+ .loginForm .formLine .code-btn{width: 97px;height: 48px;line-height: 48px;text-align: center;background: #E15621;font-size: 14px;color: #FFFFFF;position: absolute;right: -96px;top: 0;}
+ .loginForm .formLine .code-btn.disabled{background: rgba(225,86,33,0.7);}
  .loginForm input{height:48px;line-height:48px;}
+ .loginForm input.smscode{padding-right: 96px;box-sizing: border-box;}
  .loginForm .checked{top:14px;}
- .loginForm .forget{text-align:right;color:#4a4f58;font-size:14px;line-height:30px;margin-top:0px;}
+ .loginForm .forget{width: 100%;float: left; text-align:right;color:#4a4f58;font-size:14px;line-height:30px;margin:0 0 10px 0;}
  .loginForm .forget .btn{float: left;color: #E15621;}
- .loginForm .submit{height:44px;line-height:0;font-size:0;text-align:justify;margin-top:20px}
+ .loginForm .submit{height:44px;line-height:0;font-size:0;text-align:justify;margin-top:10px;width: 100%;float: left;}
  .loginForm .submit:after{content:'';display:inline-block;width:100%}
  .loginForm .submit .btn{display:inline-block;box-sizing:border-box;width:100%;height:44px;line-height:44px;background-color:#ffe6dc;border-radius:2px;border:solid 1px #e15616;text-align:center;color:#e15616;font-size:14px;cursor:pointer}
  .loginForm .submit button.btn{background-color:#e15616;color:#FFF}
  .loginForm .submit button.disabled{background-color:#E1E1E1;color:#F7F7F7;border-color:#E1E1E1;}
+ .loginForm .login-line{width: 100%;height: 1px;background: #E2E2E2;margin-top: 10px;float: left;position: relative;}
+ .loginForm .login-line span{display: block;line-height: 24px;padding: 0 5px;text-align: center;font-size: 12px;color: #999999;position: absolute;background: #FFFFFF;left: 50%;top: -12px;margin-left: -40px;}
  /*.loginForm .submit .btn:hover{opacity:.8}*/
- .loginForm .codeBtn{position:absolute;right:0;top:0;width:90px;height:90px;}
- .loginForm .codeBtn:before{width:90px;height:90px;background-position:-138px -146px}
- .loginForm .qrCodeBox{text-align:center}
+ .loginForm .from-wechat{width: 100%;height: 40px;margin-top: 20px;float: left;}
+ .loginForm .codeBtn{width:40px;height:40px;display: block;margin: 0 auto;}
+ .loginForm .codeBtn:before{width:40px;height:40px;background-position:0 -26px;}
+ .loginForm .qrCodeBox{text-align:center;margin-top: 70px;}
  .loginForm .qrCode{width:168px;height:168px;border-radius:2px;border:solid 1px #ffb496;margin:27px auto 0 auto}
  .loginForm .qrInfo{text-align:center;height:44px;line-height:44px;font-size:16px;color:#93979f}
- .loginForm .changeBtn{display:inline-block;height:24px;line-height:24px;color:#e15616;font-size:16px;position:absolute;right:24px;top:20px}
+ .loginForm .changeBtn{display:inline-block;height:24px;line-height:24px;color:#e15616;font-size:16px;position:absolute;right:-70px;top:0;}
  .loginForm .changeBtn:before{width:24px;height:24px;background-position:-175px -251px;vertical-align:top;margin-right:6px}
  .loginForm .showPwd{position:absolute;right:22px;top:16px;width:22px;height:16px;cursor:pointer}
  .loginForm .showPwd:before{width:22px;height:20px;background-position:-240px -299px}
  .loginForm .showPwd.on:before{width:22px;height:20px;background-position:-205px -299px}
- .verify-wrap{margin-top: 0;}
  .fix-tips {background: -webkit-gradient(linear,left top,right top,color-stop(0,#4d4d4d),color-stop(.4,#4d4d4d),color-stop(.5,#fff),color-stop(.6,#4d4d4d),color-stop(1,#4d4d4d));-webkit-background-clip: text;-webkit-text-fill-color: transparent;-webkit-animation: slidetounlock 3s infinite;color: #787878 !important;}
  @keyframes slidetounlock { 0% {background-position: -100px 0;} 100% {background-position: 100px 0;} }
  #qrCodeWrap{position:relative}
@@ -50,6 +63,18 @@ li{list-style:none}
  .bg .bg-content .text-conten .status{color: #333333;font-size: 16px;line-height: 26px;margin-bottom: 30px;text-align: center;}
  .bg .bg-content .text-conten .tip-p{text-align: center;color:#e15616;font-size: 14px;line-height: 26px }
  .bg .bg-content .text-conten div{cursor: pointer;text-align: center;background: #e15616;width: 128px;height: 32px;line-height: 32px;color: #fff;margin: auto;border-radius: 2px;margin-top: 20px}
+ .foot{width:100%;height:96px;background:#262626;margin-top:80px}
+ .footer{width:1185px;margin:0 auto;text-align:center;height: 96px;box-sizing: border-box;padding: 20px 0;}
+ .footer p{line-height: 30px;color: #FFFFFF;}
+ .footer p span{margin:0 5px}
+ .footer p span a{color: #FFFFFF;}
+ .footer p span a:hover{color: #E15621;}
+ .footer p span img.icp{width: 18px;height: 18px;display: inline-block;}
+ /*极验*/
+ .verify-wrap{margin-top: 0;float: left;height: 46px;}
+ .verify-wrap .drag-btn{top: 0;height: 43px;}
+ .verify-wrap .fix-tips, .verify-msg{line-height: 44px;}
+
 }
 
 /**
@@ -59,12 +84,22 @@ li{list-style:none}
  body{background:#FFF}
  footer{display:none}
  .loginForm .showPwd{display:none;}
+ .login-image{display: none;}
  .loginForm{padding-top:4vw;text-align:center;background:#FFF url(/img/account/login_m.png) no-repeat center 25vw;background-size:57vw 43.2vw}
  .loginForm h1{color:#22272e;font-size:6.4vw;font-weight:bold;line-height:10vw}
  .loginForm h2{font-size:3.1vw;font-weight:normal;line-height:5.4vw;color:#627386}
+ .loginForm .formLine-tabs{ width: 100%;height: 12vw;box-sizing: border-box;padding: 2vw 0;margin-bottom: 2vw;}
+ .loginForm .formLine-tabs .tabs-item{ width: 50%;height: 24px;box-sizing: border-box;float: left;display: block;line-height: 24px;font-size: 18px;color: #22272E;position: relative;text-align: center;}
+ .loginForm .formLine-tabs .tabs-item:before{content: '';width: 24px;height: 4px;background: #FFFFFF;position: absolute;bottom: -5px;left: 50%;margin-left: -12px;}
+ .loginForm .formLine-tabs .tabs-item.current{font-weight: bold;}
+ .loginForm .formLine-tabs .tabs-item.current:before{background: #E15621;}
  .loginForm form{width:93.4vw;margin:54vw auto 0}
- .loginForm .formLine{height:16.4vw;padding:0;}
+ .loginForm .formLine{height:16.4vw;padding:0;position: relative;}
+ .loginForm .formLine.smscode{width: 68vw;}
  .loginForm input{height:11.2vw;line-height:6vw;padding: 2.6vw 0;box-sizing: border-box;}
+ .loginForm .formLine .code-btn{width: 24.8vw;height:11.2vw;line-height: 11.2vw;text-align: center;background: #E15621;font-size:3.4vw;color: #FFFFFF;position: absolute;right: -24.8vw;top: 0;}
+ .loginForm .formLine .code-btn.disabled{background: rgba(225,86,33,0.7);}
+ .loginForm input.smscode{box-sizing: border-box;}
  .loginForm .checked{top:3.6vw;right:3.6vw;}
  .loginForm .forget{text-align:right;color:#4a4f58;font-size:3.4vw;line-height:3.4vw;margin-bottom:4.8vw}
  .loginForm .forget .btn{float: left;color: #E15621;}
@@ -72,7 +107,9 @@ li{list-style:none}
  .loginForm .submit .btn{display:inline-block;box-sizing:border-box;width:100%;height:11.2vw;border:solid 1px #b8bfca;border-radius:2px;margin-bottom:4.8vw}
  .loginForm .submit button.btn{border-color:#e15616;background:#e15616;color:#FFF;}
  .loginForm .submit button.disabled{background-color:#E1E1E1;color:#F7F7F7;border-color:#E1E1E1;}
- .loginForm .submit .weChat{display:block;margin:6vw auto;width:50vw;color:#627386;line-height:8vw}
+ .loginForm .login-line{width: 100%;height: 1px;background: #E2E2E2;margin-top: 10px;float: left;position: relative;}
+ .loginForm .login-line span{display: block;line-height: 24px;padding: 0 5px;text-align: center;font-size: 12px;color: #999999;position: absolute;background: #FFFFFF;left: 50%;top: -12px;margin-left: -30px;}
+ .loginForm .submit .weChat{display:block;margin:10vw auto;width:50vw;color:#627386;line-height:8vw}
  .loginForm .submit .weChat span{display:inline-block;width:100%}
  .loginForm .submit .weChat .mIcon:before{width:12vw;height:12vw;background-position:0 -77.8vw}
  .bg{width: 100%;height: 100%;position: fixed;top: 0;left: 0;right: 0;bottom: 0;z-index: 99999999;font-family: inherit;overflow: hidden;background-color: #4444444f;opacity: 0}
@@ -84,7 +121,11 @@ li{list-style:none}
  .bg .bg-content .text-conten .status{color: #333333;font-size: 3.4vw;line-height: 5.4vw;margin-bottom: 5vw;text-align: center}
  .bg .bg-content .text-conten .tip-p{text-align: center;color:#e15616;font-size: 3vw;line-height: 7vw }
  .bg .bg-content .text-conten div{cursor: pointer;text-align: center;background: #e15616;width: 66.6vw;height: 9.9vw;line-height: 9.9vw;color: #fff;margin: auto;border-radius: .54vw;margin-top: 5vw}
- .verify-wrap{margin-top: 0;width: 93.4vw !important;}
  .fix-tips {background: -webkit-gradient(linear,left top,right top,color-stop(0,#4d4d4d),color-stop(.4,#4d4d4d),color-stop(.5,#fff),color-stop(.6,#4d4d4d),color-stop(1,#4d4d4d));-webkit-background-clip: text;-webkit-text-fill-color: transparent;-webkit-animation: slidetounlock 3s infinite;color: #787878 !important;}
  @keyframes slidetounlock { 0% {background-position: -100px 0;} 100% {background-position: 100px 0;} }
+ .foot{display: none;}
+ /*极验*/
+ .verify-wrap{width: 93.4vw !important;margin-top: 0;float: left;height: 46px;margin-bottom: 4vw;}
+ .verify-wrap .drag-btn{top: 0;height: 43px;}
+ .verify-wrap .fix-tips, .verify-msg{line-height: 44px;}
 }

+ 52 - 1
src/main/resources/static/css/article/article.css

@@ -231,6 +231,28 @@ dl,dd,dt{zoom:1}
 	.like.hasDian{color:#e15616}
 	.dea-tag a{display:inline-block;color:#fff;height:32px;line-height:32px;padding:0 12px;background:#e15616;text-align:center;border-radius:4px;margin-right:15px;cursor:pointer;margin-bottom: 10px}
 	.article .like:hover{background: #ffe6dc}
+	/*ross广告图*/
+	.article-right-ross{width:284px;height:343px;background: #F3920D;text-align: center;line-height: 343px;font-size: 50px;color: #FFFFFF;border-radius: 2px;margin-bottom: 16px;}
+	.article-right-ross.none{display: none;}
+	.article-right-ross.show{display: block;}
+	.article-right-ross>a{width: 100%;height: 100%;display: block;border-radius: 2px;}
+	.article-right-ross>a img{width: 100%;height: 100%;display: block;border-radius: 2px;}
+	/*ross宣传弹窗*/
+	.ross-banner-fiexd{width: 100%;height: 260px;position: fixed;z-index: 999;background: url("/img/ross/ross-bg@1x.png")center no-repeat;left: 0;right: 0;bottom: -260px;box-sizing: border-box;padding: 0 180px;opacity: 0;}
+	.ross-banner-fiexd.active{animation: rundbottom 1s backwards;bottom: 0;opacity: 1;}
+	.ross-main{width: 440px;height: 100%;box-sizing: border-box;padding: 24px 40px;float: right;position: relative;}
+	.ross-close{width: 28px;height: 28px;background: url('/img/activity/pc_close.png') no-repeat;background-size: cover;position: absolute;top: 20px;right: -24px;cursor: pointer;}
+	.ross-from{width: 100%;height: auto;}
+	.ross-from .from-row{width: 100%;height: 40px;float: left;margin: 12px 0;box-sizing: border-box;}
+	.ross-from .from-row.none{margin: 0;padding-left: 60px;}
+	.ross-from .from-row .label{width: 60px;height: 40px;float: left;line-height: 40px;font-size: 14px;color: #FFFFFF;text-align: right;padding-right: 5px;box-sizing: border-box;}
+	.ross-from .from-row .input{width: 300px;height: 40px;float: left;border-radius: 2px; border: none; line-height: 40px;font-size: 14px;color: #202020;box-sizing: border-box;padding: 0 10px;background: #FFFFFF;}
+	.ross-from .from-row .from-btn{width: 300px;height: 40px;float: left;line-height: 40px;font-size: 14px;color: #FFFFFF;text-align: center;background: #202020;cursor: pointer;}
+	.ross-from .from-row .from-btn.disabled{background: #CBCBCB;}
+	.ross-from .from-row .link{display: block;line-height: 28px;font-size: 14px;color: #FFFFFF;margin: 0 24px;}
+	.ross-from .from-row .link.left{float: left;}
+	.ross-from .from-row .link.right{float: right;}
+	@keyframes rundbottom{ 0%{bottom: -260px;opacity: 0;} 100%{bottom:0;opacity: 1;} }
 
 }
 @media screen and (max-width:768px){
@@ -369,6 +391,35 @@ dl,dd,dt{zoom:1}
 	.classify{height:10vw;line-height:10vw;border-left:solid 4px #e15616;font-size:3.7vw;color:#333;padding:0 3vw;background:#fff}
 	.article .like{color: #e15616;cursor: pointer;display: block;height: 18.4vw;width: 18.4vw;line-height: 27.4vw;margin: 5vw auto;border-radius: 50%;background: #fef6f3;text-align: center;position: relative}
 	.article .like:before{ width: 8vw;height: 8vw;background-position: -14vw -78.4vw;vertical-align: middle;border-radius: 50%;position: absolute;top: 3.2vw}
-
 	.no-result{text-align: center;padding: 3.2vw 0;}
+	/*ross 广告图*/
+	.article-right-ross{width:100%;height:26vw;float: left; border-radius: 2px;float: left;margin-bottom: 3vw;box-sizing: border-box;padding: 0 3vw;}
+	.article-right-ross.none{display: none;}
+	.article-right-ross.show{display: block;}
+	.article-right-ross>a{width: 100%;height: 100%;display: block;border-radius: 2px;}
+	.article-right-ross>a img{width: 100%;height: 100%;display: block;border-radius: 2px;}
+	/*ross宣传弹窗*/
+	.ross-banner-fiexd{width: 100%;height: 113.8vw;position: fixed;z-index: 999;background: url("/img/ross/ross-bg@2x.png");left: 0;right: 0;bottom: -113.8vw;box-sizing: border-box;padding: 40vw 0 4vw 0;background-size: cover;animation: all 1s;}
+	.ross-banner-fiexd.active{animation: rundbottom 0.5s backwards;bottom: 0;opacity: 1;}
+	.ross-main{width: 100%;height: auto;box-sizing: border-box;float: right;padding: 0 7.2vw; position: relative;}
+	.ross-close{width: 6vw;height: 6vw;background: url('/img/activity/pc_close.png') no-repeat;background-size: cover;position: absolute;top: -35vw;right: 2vw;cursor: pointer;}
+	.ross-from{width: 100%;height: auto;}
+	.ross-from .from-row{width: 100%;height: 12vw;float: left;margin: 2vw 0;box-sizing: border-box;}
+	.ross-from .from-row.btn{margin-top: 12vw;}
+	.ross-from .from-row.none{margin: 0;}
+	.ross-from .from-row .label{display: none;}
+	.ross-from .from-row .input{width: 100%;height: 12vw;background: none;float: left;border: none; line-height:12vw;font-size: 4vw;color: #FFFFFF;box-sizing: border-box;border-bottom: 1px solid #FFFFFF;}
+	.ross-from .from-row .input::-webkit-input-placeholder{ color:#FFFFFF;}
+	.ross-from .from-row .input::-moz-input-placeholder{ color:#FFFFFF;}
+	.ross-from .from-row .input::-ms-input-placeholder{ color:#FFFFFF;}
+	.ross-from .from-row .input::input-placeholder{ color:#FFFFFF;}
+	.ross-from .from-row .from-btn{width: 100%;height: 12vw;float: left;line-height: 12vw;font-size: 4vw;color: #FFFFFF;text-align: center;background: #202020;cursor: pointer;}
+	.ross-from .from-row .from-btn.disabled{background: #CBCBCB;}
+	.ross-from .from-row .link{display: block;line-height: 12vw;font-size: 4vw;color: #FFFFFF;margin: 0 24px;}
+	.ross-from .from-row .link.left{float: left;}
+	.ross-from .from-row .link.right{float: right;}
+	@keyframes rundbottom{
+		0%{bottom: -113.8vw;opacity: 0;}
+		100%{bottom:0;opacity: 1;}
+	}
 }

+ 23 - 2
src/main/resources/static/css/base/base.h5.css

@@ -189,7 +189,7 @@
 .loginAlert:before{content:'';display:block;width:26.7vw;height:26.7vw;background:url(/img/account/to_login_m.png) no-repeat left top;background-size:100% 100%;margin:0 auto}
 .jconfirm .jconfirm-box .jconfirm-buttons button{font-size:3.4vw!important;}
 /* 咨询,回到顶部 */
-#scrollTop{display:none;position:fixed;right:3.2vw;z-index:9999;bottom:4vw;}
+#scrollTop{display:none;position:fixed;right:3.2vw;z-index:99;bottom:4vw;}
 #scrollTop .item{width:15vw;background-color:rgba(190,194,201,.3);box-sizing:border-box;text-align:center;margin-bottom:2.5vw;font-size:3vw;position:relative;border-radius: 0.2vw;}
 #scrollTop .item>span{box-sizing:border-box;display:block;padding:1.5vw;line-height:3.4vw;}
 #scrollTop .item .phone,#scrollTop .item .toTop{width:100%;height:100%;}
@@ -253,5 +253,26 @@
 .cmbeans-alert-content-bean .icon-text{font-weight: bold;}
 .cmbeans-alert-content-tips{width: 100%;height: 5.6vw;line-height: 5.6vw;margin-top: 4vw;box-sizing: border-box;display: flex;flex-direction: column;align-items: center;}
 .cmbeans-alert-content-tips .tips{width: 27.2vw;height: 5.6vw;background-color: rgba(226, 91, 28, 0.1);border-radius: 2.8vw;line-height: 5.6vw;font-size: 2.6vw;color: #E15616;text-align: center;padding: 0 1.2vw;}
-
 #globalHead{position: sticky !important; top: 0 !important; left: 0 !important; z-index: 9999;}
+
+/*ross宣传弹窗*/
+.ross-banner-fiexd{width: 100%;height: 113.8vw;position: fixed;z-index: 999;background: url("/img/ross/ross-bg@2x.png");left: 0;right: 0;bottom: -113.8vw;box-sizing: border-box;padding: 40vw 0 4vw 0;background-size: cover;animation: all 1s;}
+.ross-banner-fiexd.active{animation: rundbottom 0.5s backwards;bottom: 0;opacity: 1;}
+.ross-main{width: 100%;height: auto;box-sizing: border-box;float: right;padding: 0 7.2vw; position: relative;}
+.ross-close{width: 6vw;height: 6vw;background: url('/img/activity/pc_close.png') no-repeat;background-size: cover;position: absolute;top: -35vw;right: 2vw;cursor: pointer;}
+.ross-from{width: 100%;height: auto;}
+.ross-from .from-row{width: 100%;height: 12vw;float: left;margin: 2vw 0;box-sizing: border-box;}
+.ross-from .from-row.btn{margin-top: 12vw;}
+.ross-from .from-row.none{margin: 0;}
+.ross-from .from-row .label{display: none;}
+.ross-from .from-row .input{width: 100%;height: 12vw;background: none;float: left;border: none; line-height:12vw;font-size: 4vw;color: #FFFFFF;box-sizing: border-box;border-bottom: 1px solid #FFFFFF;}
+.ross-from .from-row .input::-webkit-input-placeholder{ color:#FFFFFF;}
+.ross-from .from-row .input::-moz-input-placeholder{ color:#FFFFFF;}
+.ross-from .from-row .input::-ms-input-placeholder{ color:#FFFFFF;}
+.ross-from .from-row .input::input-placeholder{ color:#FFFFFF;}
+.ross-from .from-row .from-btn{width: 100%;height: 12vw;float: left;line-height: 12vw;font-size: 4vw;color: #FFFFFF;text-align: center;background: #202020;cursor: pointer;}
+.ross-from .from-row .from-btn.disabled{background: #CBCBCB;}
+.ross-from .from-row .link{display: block;line-height: 12vw;font-size: 4vw;color: #FFFFFF;margin: 0 24px;}
+.ross-from .from-row .link.left{float: left;}
+.ross-from .from-row .link.right{float: right;}
+@keyframes rundbottom{ 0%{bottom: -113.8vw;opacity: 0;} 100%{bottom:0;opacity: 1;} }

+ 17 - 5
src/main/resources/static/css/base/base.pc.css

@@ -315,7 +315,7 @@ iframe{width:320px !important;height: 280px !important}
 .loginAlert span:first-child:after{content: ',';}
 .loginAlert:after{content:'';display:block;width:125px;height:125px;background:url(/img/account/to_login.png) no-repeat left top;background-size:100% 100%;margin:10px 0 0 15px;}
 /* 咨询,回到顶部 */
-#scrollTop{display:none;position:fixed;right:0;margin-right:0;width:88px;z-index:9999;bottom:80px;}
+#scrollTop{display:none;position:fixed;right:0;margin-right:0;width:88px;z-index:9999;bottom:60px;}
 #scrollTop .item{width:100%;background-color:#fff;box-sizing:border-box;text-align:center;box-shadow:0 2px 4px rgb(254,246,243);border-radius:2px;margin-bottom:10px;font-size:12px;position:relative}
 #scrollTop .item>span{display:block;width:94px;box-sizing:border-box;position:relative;cursor:pointer;white-space:pre-wrap;word-break:break-all;}
 #scrollTop .item>span:hover{color:#E15616;}
@@ -378,10 +378,22 @@ iframe{width:320px !important;height: 280px !important}
 .cmbeans-alert-content-tips{width: 100%;height: 24px;line-height: 24px;margin-top: 20px;box-sizing: border-box;display: flex;flex-direction: column;align-items: center;}
 .cmbeans-alert-content-tips .tips{width: 118px;height: 24px;background-color: rgba(226, 91, 28, 0.1);border-radius: 12px;line-height: 24px;font-size: 12px;color: #E15616;text-align: center;}
 
-
-
-
-
+/*ross宣传弹窗*/
+.ross-banner-fiexd{width: 100%;height: 260px;position: fixed;z-index: 999;background: url("/img/ross/ross-bg@1x.png")center no-repeat;left: 0;right: 0;bottom: -260px;box-sizing: border-box;padding: 0 180px;opacity: 0;}
+.ross-banner-fiexd.active{animation: rundbottom 0.5s backwards;bottom: 0;opacity: 1;}
+.ross-main{width: 440px;height: 100%;box-sizing: border-box;padding: 24px 40px;float: right;position: relative;}
+.ross-close{width: 28px;height: 28px;background: url('/img/activity/pc_close.png') no-repeat;background-size: cover;position: absolute;top: 20px;right: -24px;cursor: pointer;}
+.ross-from{width: 100%;height: auto;}
+.ross-from .from-row{width: 100%;height: 40px;float: left;margin: 12px 0;box-sizing: border-box;}
+.ross-from .from-row.none{margin: 0;padding-left: 60px;}
+.ross-from .from-row .label{width: 60px;height: 40px;float: left;line-height: 40px;font-size: 14px;color: #FFFFFF;text-align: right;padding-right: 5px;box-sizing: border-box;}
+.ross-from .from-row .input{width: 300px;height: 40px;float: left;border-radius: 2px; border: none; line-height: 40px;font-size: 14px;color: #202020;box-sizing: border-box;padding: 0 10px;background: #FFFFFF;}
+.ross-from .from-row .from-btn{width: 300px;height: 40px;float: left;line-height: 40px;font-size: 14px;color: #FFFFFF;text-align: center;background: #202020;cursor: pointer;}
+.ross-from .from-row .from-btn.disabled{background: #CBCBCB;}
+.ross-from .from-row .link{display: block;line-height: 28px;font-size: 14px;color: #FFFFFF;margin: 0 24px;}
+.ross-from .from-row .link.left{float: left;}
+.ross-from .from-row .link.right{float: right;}
+@keyframes rundbottom{ 0%{bottom: -260px;opacity: 0;} 100%{bottom:0;opacity: 1;} }
 
 
 

+ 5 - 1
src/main/resources/static/css/base/floor.css

@@ -141,7 +141,11 @@
 .page_main_li.ad_01 img{width:100%;height:100%}
 .section_right{padding:3.2vw}
 .box{white-space:nowrap;overflow-x:auto}
-.section_right .section_right_item{display:inline-block;width:42.2vw;height:61.6vw;background:#fff;margin-right:2.4vw;flex-shrink:0;vertical-align: top;}
+.section_right .section_right_item{display:inline-block;width:42.2vw;height:61.6vw;background:#fff;margin-right:2.4vw;flex-shrink:0;vertical-align: top;display: none;}
+.section_right .section_right_item>a{width: 100%;height: 100%;display: block;border-radius: 2px;}
+.section_right .section_right_item>a img{width: 100%;height: 100%;display: block;border-radius: 2px;}
+.section_right .section_right_ite.none{display: none;}
+.section_right .section_right_ite.show{display: block;}
 .section_right .right_item_title{overflow:hidden;padding:2.4vw}
 .section_right .right_item_title p{float:left;font-size:3.4vw;font-weight:bold;color:#4a4f58;text-align:left}
 .section_right .right_item_title a{display:inline-block;float:right;font-size:3.2vw;color:#909090;text-align:right}

+ 2 - 1
src/main/resources/static/css/flea-market/intro.css

@@ -12,7 +12,8 @@
       .top_title {padding: 20px 0 20px 0;}
       .top_title img{width: 80px}
       .top_title span {color: #FFFFFF;}
-      .top_text {font-size: 64px;color: #FFFFFF;font-style: oblique;font-weight: bold;margin-top: 40px;}
+      .top_text {font-size: 48px;color: #FFFFFF;font-weight: bold;margin-top: 40px;}
+      .top_text.bot{font-size: 56px;color: #FFFFFF;font-weight: bold;margin-top: 0;}
       .mian_text {margin-top: 80px;width: 700px;color: #FFFFFF;font-size: 18px;}
       .jioayi{ font-size: 24px;    color: #353C44;}
       .mian_text h1 {font-size: 36px;font-weight: bold;padding-bottom: 20px;}

+ 6 - 14
src/main/resources/static/css/index/index_new.pc.css

@@ -20,20 +20,7 @@ li{list-style:none;}
 #swiper-container .swiper-pagination span{display:inline-block;border:5px solid transparent;cursor:pointer}
 #swiper-container .swiper-pagination span:before{content:"";display:inline-block;width:14px;height:4px;background:rgba(255,255,255,.4);border-radius:2px}
 #swiper-container .swiper-pagination span.on:before{width:28px;background:#fff}
-.swiper-slide {
-    display: -webkit-box;
-    display: -ms-flexbox;
-    display: -webkit-flex;
-    display: flex;
-    -webkit-box-pack: center;
-    -ms-flex-pack: center;
-    -webkit-justify-content: center;
-    justify-content: center;
-    -webkit-box-align: center;
-    -ms-flex-align: center;
-    -webkit-align-items: center;
-    align-items: center;
-}
+.swiper-slide {display: -webkit-box;display: -ms-flexbox;display: -webkit-flex;display: flex;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-justify-content: center;justify-content: center;-webkit-box-align: center;-ms-flex-align: center;-webkit-align-items: center;align-items: center;}
 /*公告*/
 #new-container{height: 48px;background: url("/img/base/icon-newbg@2x.png");background-size: cover;}
 #new-container .new-list{float: left;}
@@ -53,6 +40,11 @@ li{list-style:none;}
 /*右边区域*/
 .section_right{width:284px;float:right;box-sizing:border-box;padding-top:40px}
 .section_right .section_right_item{width:284px;height:auto;background-color:#FFFFFF;float:left;margin-bottom:16px;padding:16px;box-sizing:border-box;border-radius:2px}
+.section_right .section_right_item.ross{width:284px;height:343px;background: #F3920D;color: #FFFFFF;display: none;}
+.section_right .section_right_item.ross.none{display: none;}
+.section_right .section_right_item.ross.show{display: block;}
+.section_right .section_right_item.ross>a{width: 100%;height: 100%;display: block;border-radius: 2px;}
+.section_right .section_right_item.ross>a img{width: 100%;height: 100%;display: block;border-radius: 2px;}
 .section_right .section_right_item.fixed{position:fixed;top:200px;width:284px;}
 .section_right .right_item_title{width:100%;height:22px;line-height:22px;float:left;margin-bottom:8px}
 .section_right .right_item_title p{float:left;font-size:16px;font-weight:bold;color:#4a4f58;text-align:left}

+ 12 - 2
src/main/resources/static/css/product/instruement.css

@@ -3,11 +3,17 @@
     .instrue-left {width: 900px;float: left;}
     .normal-nav{margin-top: 10px}
     .top-category{overflow: hidden;}
+    .instrue-right-content{width: 284px;min-height: 343px;float: right;margin-top: 10px;}
+    .instrue-right-ross{width:284px;height:343px;background: #F3920D;text-align: center;border-radius: 2px;float: left;margin-bottom: 16px;}
+    .instrue-right-ross.none{display: none;}
+    .instrue-right-ross.show{display: block;}
+    .instrue-right-ross>a{width: 100%;height: 100%;display: block;border-radius: 2px;}
+    .instrue-right-ross>a img{width: 100%;height: 100%;display: block;border-radius: 2px;}
     .instrue-left .top-category .normal-nav .nav-list:hover{color:#e15616;transform:translateY(-5px);box-shadow:0 8px 8px rgba(102,102,102,0.05), 0 10px 10px rgba(102,102,102,0.05), 0 12px 12px rgba(102,102,102,0.05);}
     .instrue-left .top-category .normal-nav .nav-list {border:1px solid #fff;float: left;margin: 0 16px 16px 0;width: 132px;height: 88px;background: #fff;text-align: center;color: #4a4f58;font-size: 14px;cursor: pointer;transition: all 0.4s}
     .instrue-left .top-category .normal-nav .nav-list a{padding: 0 10px;text-align: center;display: block;line-height: 22px;}
     .instrue-left .top-category .normal-nav .nav-list.active {border: 1px solid #e15616;color: #e15616;}
-    .instrue-right {float: right;width: 252px;background: #fff;padding: 16px;margin-top: 10px;min-height: 343px;overflow: auto;}
+    .instrue-right {float: left;width: 252px;background: #fff;padding: 16px;margin-top: 10px;min-height: 343px;overflow: auto;}
     .instrue-right .wrap_tittle{padding-bottom: 10px;color: #4a4f58;font-size: 16px;font-weight: bold;border-bottom: 1px solid #f5f5f5;position: relative;}
     .instrue-right .wrap_tittle .line{height: 2px;width: 16px;background: #e15616;display: block;position: absolute;bottom: 0}
     .instrue-right .hot-search{padding:24px 0px 0px 0px;}
@@ -21,7 +27,11 @@
 
 
 @media screen and (max-width:768px) {
-    .instrue-right{width: 100%;background: #fff;padding-top:3.2vw;position:relative;}
+    .instrue-right-content{width: 100%;padding:3.2vw;box-sizing: border-box;}
+    .instrue-right-ross{width:100%;height:26vw;background: #F3920D;text-align: center;border-radius: 2px;float: left;margin-bottom: 3vw;}
+    .instrue-right-ross>a{width: 100%;height: 100%;display: block;border-radius: 2px;}
+    .instrue-right-ross>a img{width: 100%;height: 100%;display: block;border-radius: 2px;}
+    .instrue-right{width: 100%;background: #fff;position:relative;float: left;}
     .instrue-right .wrap_tittle{padding: 0 3.2vw;color: #909090; font-size: 3.4vw;}
     .instrue-right .hot-search{padding: 2.7vw;overflow: hidden;height: 7vw;background: #fff;border-radius: 0 0 1.6vw 1.6vw;}
     .instrue-right .hot-search .hot-list{display: inline-block;background: #f7f7f7;color: #4a4f58;font-size: 3.2vw;padding: .7vw 2vw;margin: 0 2.4vw 3.1vw 0;position: relative;}

BIN
src/main/resources/static/img/account/login.png


BIN
src/main/resources/static/img/activity/attestation/section_bg_device_01.png


BIN
src/main/resources/static/img/activity/attestation/section_bg_device_02.png


BIN
src/main/resources/static/img/base/WEB-icon.png


BIN
src/main/resources/static/img/flea-market/zuhe23.png


BIN
src/main/resources/static/img/ross/ross-bg@1x.png


BIN
src/main/resources/static/img/ross/ross-bg@2x.png


BIN
src/main/resources/static/img/ross/ross-image@1x.jpg


BIN
src/main/resources/static/img/ross/ross-image@2x.jpg


BIN
src/main/resources/static/img/ross/ross-image@3x.jpg


+ 161 - 37
src/main/resources/static/js/account/bind.js

@@ -1,6 +1,14 @@
 var bindPage = new Vue({
     el: "#bindPage",
     data: {
+        rule:{
+            mobileOrEmail: '(^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$)|(^\\d{6,12}$)',
+            name: '^[a-zA-Z\\u4e00-\\u9fa5]{2,}$',
+            phone: '^\\d{6,12}$',
+            code: '^\\d{6}$',
+            password: "^[^\\u4e00-\\u9fa5]{8,16}$",
+            mobile:'^1[1-9][0-9]{9}$'
+        },
         loginLoading:false,
         mobilCount:0,
         mobileCodeText:'获取验证码',
@@ -10,33 +18,154 @@ var bindPage = new Vue({
         codeImagePath:'',
         codeImageToken:'',
         imageCode:'',
-        user: {
+        activeNum:0,
+        loginTabs:0,
+        isDisabled:true,
+        isSubDisabled:true,
+        mobilCount1:0,
+        mobileCodeText1:'获取验证码',
+        mobilTime1:null,
+        isMobileDisabled1:false,
+        userParams: {
             mobileOrEmail :'',
             password : '',
             mobile : '',
             linkName :'',
             smsCode :'',
             unionId:'',
+            companyMobile:'',
+            passOrNote:0
         },
-        rule:{
-            mobileOrEmail: '(^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$)|(^\\d{6,12}$)',
-            name: '^[a-zA-Z\\u4e00-\\u9fa5]{2,}$',
-            phone: '^\\d{6,12}$',
-            code: '^\\d{6}$',
-            password: "^[^\\u4e00-\\u9fa5]{8,16}$"
+        codeParams:{
+            mobile:'',
+            code:''
+        },
+        smsCodeParams:{// 获取手机短信验证码
+            mobile: '', //用户登录手机号
+        },
+        bindCodeParams:{// 获取运营人员手机验证码
+            mobile: '',
+            bindMobile: '',
+            platformType:0,
+            isCheckCaptcha:0,
+            imgCode:'',
+            token:''
+        },
+        verifiParams:{
+            mobileOrEmail :'',
+            password : '',
+            mobile:'',
+            code:'',
+            codeType:0
         }
     },
     computed: {
 
     },
     methods: {
-        BindConfirmFn: function(){ //手机号找回密码
-            var _self = this;
-            var pass = verifyForm();
-            if (_self.loginLoading) { return false; }
-            if (!pass) {return false;}
+        handleTabsClick(index){// tabs切换
+            this.loginTabs = this.userParams.passOrNote = this.verifiParams.codeType = index;
+            this.isDisabled = true;
+            if(this.loginTabs === 1){
+                this.userParams.mobileOrEmail = '';
+                this.userParams.password = '';
+            }else{
+                this.userParams.companyMobile = '';
+                this.codeParams.mobile = '';
+                this.codeParams.code = '';
+            }
+        },
+        handleStepNext(){// 账号密码 下一步
+            if(this.isDisabled){ return }
+            this.userLoginVerification();
+        },
+        userLoginVerification(){// 校验短信验证码
+            const _self = this;
+            UserApi.userLoginVerification(this.verifiParams,function(response){
+                if(response.code === 0){
+                    _self.activeNum = 1;
+                }else{
+                    CAIMEI.Alert(response.msg,'确定',false);
+                }
+            });
+        },
+        handleInputMobileOrEmail(e){// 账号输入
+            this.userParams.mobileOrEmail = this.verifiParams.mobileOrEmail = e.target.value;
+            this.handldeCheckInput();
+        },
+        handleInputPassword(e){// 密码输入
+            this.userParams.password = this.verifiParams.password = e.target.value;
+            this.handldeCheckInput();
+        },
+        handleInputPhone(e){// 已注册手机号输入
+            this.codeParams.mobile = this.smsCodeParams.mobile = this.verifiParams.mobile = this.userParams.companyMobile = e.target.value;
+            this.handldeCheckInput();
+        },
+        handleInputSmsCode(e){// 短信验证码输入
+            this.codeParams.code = this.verifiParams.code = e.target.value;
+            this.handldeCheckInput();
+        },
+        handleInputLinkName(e){// 运营人员输入
+            this.userParams.linkName = e.target.value;
+            this.handldeCheckInput();
+        },
+        handleInputMobile(e){// 运营人员手机号输入
+            this.userParams.mobile = e.target.value;
+            this.handldeCheckInput();
+        },
+        handleInputSmsCodee(e){// 运营人员手机验证码输入
+            this.userParams.smsCode = e.target.value;
+            this.handldeCheckInput();
+        },
+        handldeCheckInput(){// 控制按钮高亮
+            if(this.activeNum ===  1){
+                this.isSubDisabled = !(this.userParams.linkName !== '' && this.userParams.mobile !== '' && this.userParams.smsCode !== '');
+            }else{
+                if(this.loginTabs === 0){
+                    this.isDisabled = !(this.userParams.mobileOrEmail !== '' && this.userParams.password !== '');
+                }else{
+                    this.isDisabled = !(this.codeParams.mobile !== '' && this.codeParams.code !== '');
+                }
+            }
+        },
+        handleMobileCode(){// 点击获取短信验证码
+            const _self = this;
+            if( this.isMobileDisabled1){ return }
+            this.$nextTick(function() {
+                if (!verifyCheack('.codeParamsMobile')) { return false; }
+                UserApi.userOperateCode(_self.smsCodeParams,function (response) {
+                    if(response.code === 0){
+                        CAIMEI.dialog('获取验证码成功~',false,function () {});
+                        const TIME_COUNT = 60;
+                        if (!_self.mobilTime1) {
+                            _self.mobilCount1 = TIME_COUNT;
+                            _self.isMobileDisabled1 = true;
+                            _self.mobilTime1 = setInterval(function(){
+                                if (_self.mobilCount1 > 1 && _self.mobilCount1 <= TIME_COUNT) {
+                                    _self.mobilCount1--;
+                                    _self.mobileCodeText1 = _self.mobilCount1 +'s';
+                                } else {
+                                    _self.isMobileDisabled1 = false;
+                                    clearInterval(_self.mobilTime1);
+                                    _self.mobilTime1 = null;
+                                    _self.mobileCodeText1 = '获取验证码';
+                                }
+                            },1000)
+                        }
+                    }else{
+                        CAIMEI.Alert(response.msg,'确定',false);
+                        _self.isMobileDisabled1 = false;
+                    }
+                })
+            })
+        },
+        handleBindConfirm(){ //绑定运营人员
+            const _self = this;
+            if(this.isSubDisabled){ return }
+            if (this.loginLoading) { return false; }
+            if (!verifyForm()) {return false;}
             _self.loginLoading = true;
-            UserApi.BindOrganization(_self.user,function (response) {
+            UserApi.BindOrganization(_self.userParams,function (response) {
                 if(response.code === 0){
                     var _userIdentity = response.data.userIdentity;
                     CAIMEI.dialog('绑定成功!',true,function () {
@@ -58,9 +187,9 @@ var bindPage = new Vue({
                         _self.setStorages( _self.userData);
                         _self.loginLoading = false;
                         // 绑定成功后跳转
-                        if(_userIdentity == 4 || _userIdentity ==2){
+                        if(_userIdentity === 4 || _userIdentity ===2){
                             window.location.href = '/user/dashboard.html';
-                        }else if(_userIdentity == 3){
+                        }else if(_userIdentity === 3){
                             window.location.href = '/supplier/dashboard.html';
                         }
                     });
@@ -71,18 +200,16 @@ var bindPage = new Vue({
             });
         },
         getMobileImage:function() {//获取图形验证码
-            var _self = this;
-            var mobile = verifyCheack('.mobileOrEmail');
-            var pass = verifyCheack('.massageBtn');
+            const _self = this;
             if (_self.isMobileDisabled) { return false; }
             this.$nextTick(function() {
-                if (!mobile) { return false; }
-                if (!pass) { return false; }
+                if (!verifyCheack('.mobileOrEmail')) { return false; }
+                if (!verifyCheack('.massageBtn')) { return false; }
                 PublicApi.getImgVerifyCode({platformType: 0},function(response){
-                    if(response.code == 0){
-                        _self.imageCode = '';
+                    if(response.code === 0){
+                        _self.bindCodeParams.imgCode = '';
                         _self.codeImagePath = response.data.baseImage;
-                        _self.codeImageToken = response.data.token;
+                        _self.bindCodeParams.token = response.data.token;
                         _self.isCodeModel = true;
                     }else{
                         CAIMEI.Alert(response.msg,'确定',false);
@@ -91,22 +218,20 @@ var bindPage = new Vue({
             });
         },
         getMobileCodeFn:function(){//机构注册获取注册短信验证码
-            var _self = this;
-            if(_self.imageCode == ''){
+            const _self = this;
+            if(this.bindCodeParams.imgCode === ''){
                 CAIMEI.dialog('请输入图形验证码',false,function () {});
                 return
             }
-            var params = {
-                    mobile: _self.user.mobile,
-                    bindMobile: _self.user.mobileOrEmail,
-                    platformType:0,
-                    isCheckCaptcha:0,
-                    imgCode:_self.imageCode,
-                    token:_self.codeImageToken
-            };
+            if(this.loginTabs === 0){
+                this.bindCodeParams.bindMobile = this.userParams.mobileOrEmail
+            }else{
+                this.bindCodeParams.bindMobile = this.codeParams.mobile
+            }
+            this.bindCodeParams.mobile = this.userParams.mobile
             _self.isMobileDisabled = true;
-            UserApi.getNoteSMScode(params,function (response) {
-                if(response.code == 0){
+            UserApi.getNoteSMScode(this.bindCodeParams,function (response) {
+                if(response.code === 0){
                     _self.isCodeModel = false;
                     CAIMEI.dialog('验证短信已发送',false,function () {});
                     var TIME_COUNT = 60;
@@ -150,9 +275,8 @@ var bindPage = new Vue({
 
     },
     mounted: function () {
-        var _self = this;
         if(globalUserData){
-            this.user.unionId = globalUserData.unionId;
+            this.userParams.unionId = globalUserData.unionId;
         }
     }
 });

+ 186 - 112
src/main/resources/static/js/account/login.js

@@ -4,11 +4,12 @@ var loginPage = new Vue({
         maxtime:60,
         loginLoading: false,
         qrCodeLogin: false,
-        loginAccount: '',
-        loginPassword: '',
         rule:{
             account: "(^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$)|(^\\d{6,12}$)",
-            password: "^[^\\u4e00-\\u9fa5]{6,30}$"
+            password: "^[^\\u4e00-\\u9fa5]{6,30}$",
+            phone: '^\\d{6,12}$',
+            code: '^\\d{6}$',
+            mobile:'^1[1-9][0-9]{9}$'
         },
         userData: {
             account: '',
@@ -29,53 +30,182 @@ var loginPage = new Vue({
             shopId: '',
             token:'',
         },
+        accountParams: {// 账号密码登录
+            mobileOrEmail: '', //用户登录账号
+            password: '', //用户登录密码
+        },
+        codeParams:{// 验证码登录
+            mobile:'',
+            code:''
+        },
+        smsCodeParams:{// 获取手机短信验证码
+            mobile: '', //用户登录手机号
+        },
         isWeChat: false,
         text:'',
         stautsfalse:false,
         infofalse:false,
-        isSlideFinishState:true
+        isSlideFinishState:true,
+        loginTabs:0,
+        mobilCount:0,
+        mobileCodeText:'获取验证码',
+        mobilTime:null,
+        isMobileDisabled:false,
     },
     computed: {
 
     },
     methods: {
-        hideBg:function(){
+        handleTabsClick(index){
+            this.loginTabs = index;
+            clearAllErrorTxt($('input'));
+        },
+        handleHideBg(){
             this.stautsfalse=false;
         },
-        information:function(){
-            window.location.href='/supplier/information.html';
-            this.SetSoragesInfo( this.applyUse);
+        handleCodeMobileInput(e){// 监听输入手机号
+            this.codeParams.mobile = this.smsCodeParams.mobile = e.target.value;
+        },
+        handleSubLogin(){// 点击登录
+            if(this.loginTabs === 0){
+                this.userPasswordLogin();
+            }else{
+                this.userCodeLogin();
+            }
+        },
+        userCodeLogin(){// 短信验证码登录
+            const _self = this;
+            if (this.loginLoading) { return false; }
+            this.$nextTick(function(){
+                if (!verifyForm()) { return false; }
+                _self.loginLoading = true;
+                UserApi.userCodeLogin(_self.codeParams,function(response){
+                    _self.userUpdataeStatus(response)
+                });
+            });
+        },
+        userPasswordLogin(){// 账号登录
+            const _self = this;
+            if (this.loginLoading) { return false; }
+            this.$nextTick(function(){
+                if (!verifyForm()) { return false; }
+                _self.loginLoading = true;
+                UserApi.PostLoginAccount(_self.accountParams,function(response){
+                    _self.userUpdataeStatus(response)
+                });
+            });
         },
-        toQrCodeLogin: function(){//切换微信登录二维码
-            var _self = this;
-            var timeClock = null;
+        userUpdataeStatus(response){// 更新登录
+            const _self = this;
+            _self.loginLoading = false;
+            if(response.code === 0){
+                _self.userData = {
+                    account: response.data.account,
+                    email: response.data.email,
+                    phone: response.data.bindMobile,
+                    name: response.data.name,
+                    userName: response.data.userName,
+                    userId: response.data.userId,
+                    spId: response.data.serviceProviderId,
+                    clubId: response.data.clubId,
+                    shopId: response.data.shopId,
+                    userIdentity: response.data.userIdentity,
+                    permission: response.data.userPermission,
+                    token: response.data.token,
+                    vipFlag: response.data.vipFlag,
+                    firstClubType: response.data.firstClubType,
+                    listingFee:response.data.listingFee
+                };
+                _self.setStorages( _self.userData);
+                // 登录成功页面跳转
+                var loginBeforePath = getBaseCookie("loginBeforePath");
+                if (loginBeforePath && loginBeforePath!=='undefined' && loginBeforePath.indexOf('.html')>0) {
+                    delBaseCookie("loginBeforePath");
+                    window.location.href = loginBeforePath;
+                } else if (_self.userData.userIdentity*1 === 3) {
+                    location.href = '/supplier/dashboard.html';
+                } else if (_self.userData.userIdentity*1 === 2 || _self.userData.userIdentity*1 === 4) {
+                    location.href = '/user/dashboard.html';
+                } else {
+                    location.href="/index.html";
+                }
+            } else if(response.code === '-3'){//审核未通过
+                _self.text =response.msg;
+                _self.stautsfalse = true;
+                _self.infofalse = true;
+                _self.applyUse = {
+                    userId: response.data.userId,
+                    shopId: response.data.shopId,
+                    token: response.data.token
+                };
+            }else if(response.code === '-2'){
+                _self.stautsfalse = true;
+                _self.text =response.msg;
+            }else {// 登录失败
+                CAIMEI.Alert(response.msg,'确定',false);
+            }
+        },
+        handleMobileCode(){// 点击获取短信验证码
+            const _self = this;
+            if( this.isMobileDisabled){ return }
+            this.$nextTick(function() {
+                if (!verifyCheack('.massageBtn')) { return false; }
+                UserApi.userLoginCode(_self.smsCodeParams,function (response) {
+                    if(response.code === 0){
+                        CAIMEI.dialog('获取验证码成功~',false,function () {});
+                        var TIME_COUNT = 60;
+                        if (!_self.mobilTime) {
+                            _self.mobilCount = TIME_COUNT;
+                            _self.isMobileDisabled = true;
+                            _self.mobilTime = setInterval(function(){
+                                if (_self.mobilCount > 1 && _self.mobilCount <= TIME_COUNT) {
+                                    _self.mobilCount--;
+                                    _self.mobileCodeText = _self.mobilCount +'s';
+                                } else {
+                                    _self.isMobileDisabled = false;
+                                    clearInterval(_self.mobilTime);
+                                    _self.mobilTime = null;
+                                    _self.mobileCodeText = '获取验证码';
+                                }
+                            },1000)
+                        }
+                    }else{
+                        CAIMEI.Alert(response.msg,'确定',false);
+                        _self.isMobileDisabled = false;
+                    }
+                })
+            })
+        },
+        toQrCodeLogin(){//切换微信登录二维码
+            const _self = this;
+            let timeClock = null;
             this.qrCodeLogin = true;
             UserApi.ToWechatLogin({},function(response){
-                var wxLogin = new WxLogin({
-                        self_redirect: true,
-                        id: "qrCodeWrap",
-                        appid: response.data.appId,
-                        scope: 'snsapi_login',
-                        redirect_uri: response.data.redirectUri,
-                        state: response.data.state,
-                        style: "black",
-                        href: "https://www.caimei365.com/css/base/base.pc.css"
+                const wxLogin = new WxLogin({
+                    self_redirect: true,
+                    id: "qrCodeWrap",
+                    appid: response.data.appId,
+                    scope: 'snsapi_login',
+                    redirect_uri: response.data.redirectUri,
+                    state: response.data.state,
+                    style: "black",
+                    href: "https://www.caimei365.com/css/base/base.pc.css"
                 });
                 timeClock = setInterval(function(){
                     _self.maxtime--;
-                    if (_self.maxtime == 0) {
+                    if (_self.maxtime === 0) {
                         clearInterval(timeClock);
-                    };
+                    }
                 },1000);
                 _self.getWrchatStatusData({state:response.data.state})
             });
         },
-        getWrchatStatusData:function(params){//轮询查询用户是否扫描过二维码登录
-            var _self = this;
-            var timer = null;
+        getWrchatStatusData(params){//轮询查询用户是否扫描过二维码登录
+            const _self = this;
+            let timer = null;
             UserApi.ToWechatPolling(params,function(response){
-                if(response.code == -90){
-                    if(_self.maxtime == 0){
+                if(response.code === -90){
+                    if(_self.maxtime === 0){
                         clearInterval(timer);
                         _self.maxtime = 60;
                         $('#qrCodeWrap').append('<div class="model"><div class="refresh-div"><img class="refresh" src="/img/base/shua.png" alt=""><p>二维码已失效,点击刷新</p></div></div>');
@@ -90,7 +220,7 @@ var loginPage = new Vue({
                     }
                 }else {
                     clearTimeout(timer); //清理定时任务
-                    if(response.code == 0){
+                    if(response.code === 0){
                         _self.userData = {
                             account: response.data.account,
                             email: response.data.email,
@@ -112,7 +242,7 @@ var loginPage = new Vue({
                         _self.setStorages( _self.userData);
                         // 登录成功页面跳转
                         var loginBeforePath = getBaseCookie("loginBeforePath");
-                        if (loginBeforePath && loginBeforePath!='undefined' && loginBeforePath.indexOf('.html')>0) {
+                        if (loginBeforePath && loginBeforePath!=='undefined' && loginBeforePath.indexOf('.html')>0) {
                             delBaseCookie("loginBeforePath");
                             window.location.href = loginBeforePath;
                         } else if (_self.userData.userIdentity*1 === 3) {
@@ -122,7 +252,7 @@ var loginPage = new Vue({
                         } else {
                             location.href="/index.html";
                         }
-                    }else if(response.code == -4){
+                    }else if(response.code === -4){
                         _self.userData = {
                             account: response.data.account,
                             email: response.data.email,
@@ -143,7 +273,7 @@ var loginPage = new Vue({
                         setTimeout(function(){
                             window.location.href = '/bind.html';
                         },1000);
-                    }else if(response.code == '-3'){//审核未通过
+                    }else if(response.code === '-3'){//审核未通过
                         _self.text ='您的供应商账号审核未通过,原因:图片模糊,营业执照错误,审核人员在后台填写的内容';
                         _self.stautsfalse = true;
                         _self.infofalse = true;
@@ -153,17 +283,17 @@ var loginPage = new Vue({
                             token: response.data.token
                         };
                         console.log(_self.applyUse);
-                    }else if(response.code == '-2'){
+                    }else if(response.code === '-2'){
                         _self.stautsfalse = true;
                         _self.text ='您的供应商账号正在加速审核中,审核通过后即可登录';
                     }else{
-                         CAIMEI.Alert(response.msg,'确定',false);
+                        CAIMEI.Alert(response.msg,'确定',false);
                     }
                 }
             });
         },
-        // 微信公众号授权登录
-        weChatLogin: function(){
+        handleWeChatLogin(){
+            // 微信公众号授权登录
             if (this.isWeChat) {
                 // 微信浏览器自动授权登录
                 var urlForWeChat = 'https://www.caimei365.com/we_chat/redirect_uri.html';
@@ -175,12 +305,12 @@ var loginPage = new Vue({
                 });
             }
         },
-        toNormalLogin: function(){
+        toNormalLogin(){
             this.qrCodeLogin = false;
         },
-        showPassword: function(event) {
-            var el = event.currentTarget;
-            var pwdEle = $(el).siblings('input');
+        showPassword(event) {
+            const el = event.currentTarget;
+            const pwdEle = $(el).siblings('input');
             if(pwdEle.attr('type') === 'password') {
                 $(el).addClass('on');
                 pwdEle.attr('type','text');
@@ -189,93 +319,37 @@ var loginPage = new Vue({
                 pwdEle.attr('type','password');
             }
         },
-        blurHandle: function(event) {  // 失去焦点校验
-            var el = event.currentTarget;
+        blurHandle(event) {  // 失去焦点校验
+            const el = event.currentTarget;
             verifyHandle(el);
         },
-        loginSubmit: function () {  // 账号登录
-            var _self = this;
-            var pass = verifyForm();
-            if (this.loginLoading) { return false; }
-            this.$nextTick(function(){
-                if (!pass) { return false; }
-                _self.loginLoading = true;
-                var params =  {mobileOrEmail: _self.loginAccount,password: _self.loginPassword};
-                UserApi.PostLoginAccount(params,function(response){
-                    _self.loginLoading = false;
-                    if(response.code === 0){
-                        console.log(response);
-                        _self.userData = {
-                            account: response.data.account,
-                            email: response.data.email,
-                            phone: response.data.bindMobile,
-                            name: response.data.name,
-                            userName: response.data.userName,
-                            userId: response.data.userId,
-                            spId: response.data.serviceProviderId,
-                            clubId: response.data.clubId,
-                            shopId: response.data.shopId,
-                            userIdentity: response.data.userIdentity,
-                            permission: response.data.userPermission,
-                            token: response.data.token,
-                            vipFlag: response.data.vipFlag,
-                            firstClubType: response.data.firstClubType,
-                            listingFee:response.data.listingFee
-                        };
-                        _self.setStorages( _self.userData);
-                        // 登录成功页面跳转
-                        var loginBeforePath = getBaseCookie("loginBeforePath");
-                        if (loginBeforePath && loginBeforePath!='undefined' && loginBeforePath.indexOf('.html')>0) {
-                            delBaseCookie("loginBeforePath");
-                            window.location.href = loginBeforePath;
-                        } else if (_self.userData.userIdentity*1 === 3) {
-                            location.href = '/supplier/dashboard.html';
-                        } else if (_self.userData.userIdentity*1 === 2 || _self.userData.userIdentity*1 === 4) {
-                            location.href = '/user/dashboard.html';
-                        } else {
-                            location.href="/index.html";
-                        }
-                    } else if(response.code == '-3'){//审核未通过
-                        _self.text =response.msg;
-                        _self.stautsfalse = true;
-                        _self.infofalse = true;
-                        _self.applyUse = {
-                            userId: response.data.userId,
-                            shopId: response.data.shopId,
-                            token: response.data.token
-                        };
-                    }else if(response.code == '-2'){
-                        _self.stautsfalse = true;
-                        _self.text =response.msg;
-                    }else {// 登录失败
-                        CAIMEI.Alert(response.msg,'确定',false);
-                    }
-                });
-            });
-        },
-        SetSoragesInfo:function(data){
+        SetSoragesInfo(data){
             localStorage.setItem('APPLY_INFO',JSON.stringify(data));
         },
-        setStorages:function(data){//存储本地数据
+        setStorages(data){//存储本地数据
             localStorage.setItem('userInfo',JSON.stringify(data));
+        },
+        information(){
+            window.location.href='/supplier/information.html';
+            this.SetSoragesInfo( this.applyUse);
         }
     },
     created: function () {
-        var userAgent = navigator.userAgent.toLowerCase();
+        const userAgent = navigator.userAgent.toLowerCase();
         this.isWeChat = userAgent.match(/MicroMessenger/i);
         // this.weChatAutoLogin();
     },
     mounted: function () {
-        var _self = this;
-        var SlideVerifyPlug = window.slideVerifyPlug;
-        var slideVerify = new SlideVerifyPlug('#verify-wrap',{
-            wrapWidth:'350',//设置 容器的宽度 ,不设置的话,会设置成100%,需要自己在外层包层div,设置宽度,这是为了适应方便点;
-            initText:'请向右滑动滑块',  //设置  初始的 显示文字
-            sucessText:'验证通过',//设置 验证通过 显示的文字
-            getSuccessState:function(res){
+        const _self = this;
+        const SlideVerifyPlug = window.slideVerifyPlug;
+        const slideVerify = new SlideVerifyPlug('#verify-wrap', {
+            wrapWidth: '350',//设置 容器的宽度 ,不设置的话,会设置成100%,需要自己在外层包层div,设置宽度,这是为了适应方便点;
+            initText: '请向右滑动滑块',  //设置  初始的 显示文字
+            sucessText: '验证通过',//设置 验证通过 显示的文字
+            getSuccessState: function (res) {
                 //当验证完成的时候 会 返回 res 值 true,只留了这个应该够用了
                 console.log(res);
-                if(slideVerify.slideFinishState){
+                if (slideVerify.slideFinishState) {
                     $('.value').html(slideVerify.slideFinishState)
                     $('#resetBtn').removeClass('prohibit')
                     _self.isSlideFinishState = false;

+ 4 - 4
src/main/resources/static/js/activity/attestation.js

@@ -55,14 +55,14 @@ new Vue({
             },
             {
                 logo: '/img/activity/attestation/shuishu.jpg',
-                name: '水素水设备认证',
+                name: '品辉机构认证',
                 entryRoute: '/4/ph',
-                secondRoute: '/approve/device'
+                secondRoute: ''
             },
             {
                 logo: '/img/activity/attestation/3.jpg',
-                name: 'LDM正品授权',
-                entryRoute: '/10/ldm/approve',
+                name: 'LDM机构认证',
+                entryRoute: '/10/ldm',
                 secondRoute: '',
                 redirect: ''
             },

+ 1 - 0
src/main/resources/static/js/article/common.js

@@ -1,6 +1,7 @@
 /*var articleTypeNav = new Swiper('#articleTypeNav');*/
 var articleSide = new Vue({
     el: '#articleSide',
+    mixins: [cmSysVitaMixins],
     data: {
         typeId: 0,
         labelId: 0,

+ 1 - 1
src/main/resources/static/js/article/detail.js

@@ -47,7 +47,7 @@ var articleRelated = new Vue({
         })
         this.cmSysParams.pageType = 11;
         this.cmSysParams.pageLabel =  pageLabelArray.join('/');
-        this.infoId = $("#articleId").val() ? $("#articleId").val()*1 : 0;
+        this.infoId = this.handlearticleId = $("#articleId").val() ? $("#articleId").val()*1 : 0;
         this.articleLabels = $("#articleLabels").val()?$("#articleLabels").val():"";
         // 获取相关阅读
         // this.getRelatedList();

+ 1 - 0
src/main/resources/static/js/article/list.js

@@ -6,6 +6,7 @@ var requestUrlConfig = {
 
 var articleList = new Vue({
     el: '#articleList',
+    mixins: [cmSysVitaMixins],
     filters: {
         keywordSlice: function (keyword) {
             return keyword.length > 6 ? keyword.slice(0, 6) + '…' : keyword;

+ 1 - 0
src/main/resources/static/js/auto-input.js

@@ -22,6 +22,7 @@ class AutoCompleteBase {
      */
     init() {
         this.container = document.querySelector(this.options.el);
+        if(!this.container) return
         this.input = this.container.querySelector('input');
         this.ul = this.container.querySelector('.auto-select-list')
         if(this.ul){

+ 4 - 0
src/main/resources/static/js/base.js

@@ -810,6 +810,10 @@ function clearErrorTxt(obj) {
     $(obj).siblings('.errTips').removeClass("show");
     $(obj).parent().removeClass("error").find('.checked').addClass("show");
 }
+function clearAllErrorTxt(obj) {
+    $(obj).siblings('.errTips').removeClass("show");
+    $(obj).parent().removeClass("error");
+}
 // 提交时验证表单
 function verifyForm() {
     $("[needverify]:visible").each(function (index, ele) {

+ 48 - 0
src/main/resources/static/js/common/serviceapi/user.service.js

@@ -16,6 +16,54 @@ var UserApi = {
                 callback(res)
             });
         },
+        userCodeLogin : function (params,callback) {//短信验证码登录
+            Http.AjaxService({
+                url:'/user/login/codeLogin',
+                type:'post',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res)
+            });
+        },
+        userLoginCode : function (params,callback) {//获取登录短信验证码
+            Http.AjaxService({
+                url:'/user/login/code',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res)
+            });
+        },
+        userOperateCode : function (params,callback) {//获取绑定运营人员手机短信验证码
+            Http.AjaxService({
+                url:'/user/operate/code',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res)
+            });
+        },
+        userLoginVerification : function (params,callback) {//绑定运营人员校验手机验证码
+            Http.AjaxService({
+                url:'/user/login/verification',
+                type:'post',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res)
+            });
+        },
         ToWechatLogin : function (params,callback) {//获取扫码登录参数
             Http.AjaxService({
                 url:'/user/login/auth/parameters',

+ 33 - 0
src/main/resources/static/js/common/serviceapi/utils.service.js

@@ -592,6 +592,39 @@ var PublicApi = {
                 callback(res);
             });
         },
+        userInformationIsClick: function (params, callback) {//查看用户是否有过弹框,游客当天是否有过弹框
+            Http.AjaxService({
+                url: '/user/information/isClick',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        userInformationInsertRoos: function (params, callback) {//插入填写咨询人基本信息
+            Http.AjaxService({
+                url: '/user/information/insertRoos',
+                type:'post',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        userInformationVisitRoos: function (params, callback) {//查看访问者是否浏览过roos相关页面
+            Http.AjaxService({
+                url: '/user/information/visitRoos',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
 
 };
 

+ 102 - 3
src/main/resources/static/js/mixins/cmSysMixins.js

@@ -12,10 +12,30 @@ var cmSysVitaMixins = function () {
                     pageType:'',//页面类型
                     pageLabel:'',//页面标签
                     userId:0,//用户Id
-                    productId:0//商品Id
-                }
+                    productId:0,//商品Id
+                    behaviorType:1 // 用户行为类型
+                },
+                handleProsId:0,
+                handleShopId:0,
+                handlearticleId:0,
+                handleProsKey:"",
+                handleShopKey:"",
+                productIds:[7247,7248],//Ross 商品ID集合
+                shopIds:[1378],// Ross 供应商Id
+                articleIds:[7184,7199,7531,7497,7471,7458,7440,7424,7398,7370,7356,7344,7300,7298,7232,6674],//Ross 相关文章ID 集合
+                keyWords:['Binary Premium','智能体疗管理系统','448k','肌肉重塑疗法','西班牙ROSS','ROSS','智能体疗','西班牙Ross','Ross','西班牙ross','ross',],// Ross 搜索商品关键词 集合
+                shopKeyWords:['深圳艾斯佰丽生物科技有限公司','艾斯佰丽'],
+                showRossHtml:false,
+                consultParams:{
+                    ip:'',
+                    createTime:'',
+                    consultMobile: '',
+                    consultName: '',
+                    isClick:1
+                },
+                isDisabled:true,
+                isRossShow:false
             }
-
         },
         methods: {
             setTime() {
@@ -23,6 +43,17 @@ var cmSysVitaMixins = function () {
                 let _self = this;
                 const globalUserData = JSON.parse(localStorage.getItem('userInfo'));
                 if(globalUserData){ this.cmSysParams.userId = globalUserData.userId * 1; }
+                if( this.productIds.includes(this.handleProsId*1) ||
+                    this.shopIds.includes(this.handleShopId*1) ||
+                    this.articleIds.includes(this.handlearticleId*1) ||
+                    this.keyWords.includes(this.handleProsKey) ||
+                    this.shopKeyWords.includes(this.handleShopKey)
+                ){
+                    this.cmSysParams.behaviorType = 2;
+                    if (!GLOBAL_USER_ID>0) {
+                        this.userInformationIsClick()
+                    }
+                }
                 this.cmSysParams.pagePath = window.location.href;
                 this.clearTimeSet = setInterval(() => {
                     _self.browseTime++;
@@ -53,6 +84,72 @@ var cmSysVitaMixins = function () {
                     1:window.removeEventListener(map[isBrowser], e => this.beforeunloadHandler(e)) // 接触绑定
                 }
                 return FunMap[type];
+            },
+            handleInputName(e){
+                this.consultParams.consultName = e.target.value;
+                this.handldeCheckInput();
+            },
+            handleInputPhone(e){
+                this.consultParams.consultMobile = e.target.value;
+                this.handldeCheckInput();
+            },
+            handldeCheckInput(){
+                if(this.consultParams.consultName !== "" && this.consultParams.consultMobile !==""){
+                    this.isDisabled =false;
+                }else{
+                    this.isDisabled =true;
+                }
+            },
+            handleSubmit(){
+                // 提交联系人信息
+                if(this.isDisabled){ return }
+                let reg = RegExp(/^1\d{10}$/);
+                if(!reg.test(this.consultParams.consultMobile)){
+                    CAIMEI.dialog('请输入正确的手机号');
+                    return
+                }
+                this.userInformationInsertRoos(this.consultParams);
+            },
+            handleClose(){
+                // 关闭Ross 广告弹窗
+                this.userInformationInsertRoos(this.consultParams);
+            },
+            userInformationIsClick(){
+                //查询是否需要弹Ross广告
+                let _self = this;
+                PublicApi.userInformationIsClick({}, function (response) {
+                    if(response.code == 0){
+                        if(response.data){
+                            setTimeout(()=>{
+                                _self.showRossHtml = true
+                            },5000)
+                        }
+                    }else{
+                        console.log('error',response.msg);
+                    }
+                })
+            },
+            userInformationInsertRoos(params){
+                //提交记录咨询人&&关闭弹窗
+                let _self = this;
+                PublicApi.userInformationInsertRoos(params, function (response) {
+                    if(response.code == 0){
+                        _self.showRossHtml = false
+                    }else{
+                        console.log('error',response.msg);
+                    }
+                })
+            },
+            userInformationVisitRoos(params){
+                //查看访问者是否浏览过roos相关页面
+                let _self = this;
+                PublicApi.userInformationVisitRoos(params, function (response) {
+                    if(response.code == 0){
+                        _self.isRossShow = response.data
+                    }else{
+                        console.log('error',response.msg);
+                    }
+                })
             }
         },
         mounted() {
@@ -60,6 +157,8 @@ var cmSysVitaMixins = function () {
             this.setTime();
             // 绑定窗口[监听]事件
             this.handleWindow(0)
+            // 查看访问者是否浏览过roos相关页面
+            this.userInformationVisitRoos({ userId: this.cmSysParams.userId })
         },
         destroyed() {
             // 解除窗口关闭[监听]事件

+ 1 - 0
src/main/resources/static/js/product/detail.js

@@ -689,6 +689,7 @@ var productDetail = new Vue({
         },
     },
     created: function () {
+        this.productId = this.couponParam.productId = this.listQuery.productId = this.handleProsId = $("#productId").val();
         this.productId = this.couponParam.productId = this.addParams.productId = this.listQuery.productId = $("#productId").val();
         this.cmSysParams.pageType = 6;
         this.cmSysParams.productId = this.productId;

+ 1 - 1
src/main/resources/static/js/product/list.js

@@ -328,7 +328,7 @@ var productList = new Vue({
         }
         this.params.keyword = this.brandParam.keyword = getUrlParam("keyword") ? getUrlParam("keyword") : "";
         this.cmSysParams.pageType = 8;
-        this.cmSysParams.pageLabel = this.params.keyword;
+        this.cmSysParams.pageLabel = this.handleProsKey = this.params.keyword;
         // 搜索框赋值
         $('#topSearch').find('[data-select]').attr("data-select", 0).text("产品");
         $('#topSearch').find('.jqSelect').find('select').val(0);

+ 4 - 1
src/main/resources/static/js/supplier/index.js

@@ -1,5 +1,6 @@
 var supplierHome = new Vue({
     el: "#supplierHome",
+    mixins: [cmSysVitaMixins],
     data: {
         requestFlag: true,
         userId: 0,
@@ -212,7 +213,9 @@ var supplierHome = new Vue({
     created: function () {
         // this.params.id = getUrlParam("id") ? getUrlParam("id") * 1 : 0;
         var paramsArr = window.location.pathname.split(".")[0].split("-");
-        this.params.id =  paramsArr.length>=1 ? paramsArr[1]*1 : 0;
+        this.params.id = this.handleShopId =  paramsArr.length>=1 ? paramsArr[1]*1 : 0;
+        this.cmSysParams.pageType = 14;
+        this.cmSysParams.pageLabel = `供应商主页`;//设置统计数据标签
         if(this.params.id !== 0) {
             this.getShopInfo();
             this.getBanners();

+ 1 - 1
src/main/resources/static/js/supplier/list.js

@@ -96,7 +96,7 @@ var supplierList = new Vue({
         }
         this.params.keyword = getUrlParam("keyword") ? getUrlParam("keyword") : "";
         this.cmSysParams.pageType = 9;
-        this.cmSysParams.pageLabel = this.params.keyword;
+        this.cmSysParams.pageLabel = this.handleShopKey = this.params.keyword;
         // 搜索框赋值
         $('#topSearch').find('[data-select]').attr("data-select", 1).text("供应商");
         $('#topSearch').find('.jqSelect').find('select').val(1);

+ 72 - 37
src/main/resources/templates/account/bind.html

@@ -21,42 +21,77 @@
         </div>
         <div class="registerClub clear">
             <form>
-                <div class="title">公司账号</div>
-                <div class="formLine">
-                    <p><em>*</em>账号:</p>
-                    <input class="mobileOrEmail" type="text" v-model.trim="user.mobileOrEmail" placeholder="请输入邮箱/手机号" :rule="rule.mobileOrEmail" maxlength="50" @blur="blurHandle($event)" needverify>
-                    <i class="checked icon mIcon"></i>
-                    <span class="errTips icon mIcon" tips="请输入邮箱/手机号"></span>
-                </div>
-                <div class="formLine">
-                    <p><em>*</em>登录密码:</p>
-                    <input type="password" v-model.trim="user.password" autocomplete="new-password" placeholder="请输入8-16位数字和字母组合" :rule="rule.password" maxlength="32" @blur="blurHandle($event)" needverify>
-                    <i class="checked icon mIcon"></i>
-                    <span class="errTips icon mIcon" tips="8-16位数字或字母或字符"></span>
-                </div>
-                <div class="title">运营人员信息</div>
-                <div class="formLine">
-                    <p><em>*</em>姓名:</p>
-                    <input type="text" v-model.trim="user.linkName" placeholder="请输入真实姓名" :rule="rule.name" maxlength="50" @blur="blurHandle($event)" needverify>
-                    <i class="checked icon mIcon"></i>
-                    <span class="errTips icon mIcon" tips="请输入正确的联系人姓名"></span>
-                </div>
-                <div class="formLine" >
-                    <p><em>*</em>手机号:</p>
-                    <input  class="massageBtn"  type="text" v-model.trim="user.mobile" placeholder="请输入您的常用手机号" :rule="rule.phone" maxlength="11" @blur="blurHandle($event)" needverify>
-                    <i class="checked icon mIcon"></i>
-                    <span class="errTips icon mIcon" tips="请输入有效电话号码"></span>
-                </div>
-                <div class="formLine code">
-                    <p><em>*</em>短信验证码:</p>
-                    <input type="text" v-model.trim="user.smsCode" autocomplete="off" placeholder="请输入短信验证码" :rule="rule.code"  maxlength="6" @blur="blurHandle($event)" needverify>
-                    <i class="checked icon mIcon"></i>
-                    <span class="errTips icon mIcon" tips="请输入有效短信验证码"></span>
-                    <a class="getCode" href="javascript:void(0);" @click="getMobileImage" :class="[isMobileDisabled  ? 'disabled' : '']">{{ mobileCodeText }}</a>
-                </div>
-                <div class="subLine">
-                    <button class="btn" type="button" :class="loginLoading ? 'disabled':''"  @click="BindConfirmFn()">提交</button>
+                <div class="form-step">
+                    <span class="step one active">1</span>
+                    <span class="step two" :class="activeNum == 1 ? 'active':''">2</span>
                 </div>
+                <template v-if="activeNum === 0">
+                    <div class="title">确认公司账号</div>
+                    <div class="formLine-tabs">
+                        <a class="tabs-item" :class="{ current: loginTabs === 0 }" href="javascript:void(0);" @click="handleTabsClick(0)">账号密码确认</a>
+                        <a class="tabs-item" :class="{ current: loginTabs === 1 }" href="javascript:void(0);" @click="handleTabsClick(1)">验证码确认</a>
+                    </div>
+                    <template v-if="loginTabs === 0">
+                        <div class="formLine">
+                            <p><em>*</em>账号:</p>
+                            <input class="mobileOrEmail" type="text" autocomplete="off" v-model.trim="userParams.mobileOrEmail" placeholder="请输入邮箱/手机号" @input="handleInputMobileOrEmail" :rule="rule.mobileOrEmail" maxlength="50" @blur="blurHandle($event)" needverify>
+                            <i class="checked icon mIcon"></i>
+                            <span class="errTips icon mIcon" tips="请输入邮箱/手机号"></span>
+                        </div>
+                        <div class="formLine">
+                            <p><em>*</em>登录密码:</p>
+                            <input type="password" v-model.trim="userParams.password" autocomplete="new-password" placeholder="请输入8-16位数字和字母组合" @input="handleInputPassword" :rule="rule.password" maxlength="32" @blur="blurHandle($event)" needverify>
+                            <i class="checked icon mIcon"></i>
+                            <span class="errTips icon mIcon" tips="8-16位数字或字母或字符"></span>
+                        </div>
+                        <div class="subLine">
+                            <button class="btn" type="button" :class="isDisabled ? 'disabled' : ''"  @click="handleStepNext">下一步</button>
+                        </div>
+                    </template>
+                    <template v-if="loginTabs === 1">
+                        <div class="formLine" >
+                            <p><em>*</em>手机号:</p>
+                            <input  class="codeParamsMobile"  type="text" autocomplete="off" v-model.trim="codeParams.mobile" placeholder="请输入已注册的手机号" @input="handleInputPhone" :rule="rule.mobile" maxlength="11" @blur="blurHandle($event)" needverify>
+                            <i class="checked icon mIcon"></i>
+                            <span class="errTips icon mIcon" tips="请输入正确格式的手机号"></span>
+                        </div>
+                        <div class="formLine smscode">
+                            <p><em>*</em>验证码:</p>
+                            <input type="text" class="smscode" v-model.trim="codeParams.code" autocomplete="off" placeholder="请输入短信验证码" @input="handleInputSmsCode" :rule="rule.code"  maxlength="6" @blur="blurHandle($event)" needverify>
+                            <i class="checked icon mIcon"></i>
+                            <span class="errTips icon mIcon" tips="请输入短信验证码"></span>
+                            <a class="code-btn" href="javascript:void(0);" @click="handleMobileCode" :class="[isMobileDisabled1  ? 'disabled' : '']">{{ mobileCodeText1 }}</a>
+                        </div>
+                        <div class="subLine">
+                            <button class="btn" type="button" :class="isDisabled ? 'disabled' : ''"  @click="handleStepNext">下一步</button>
+                        </div>
+                    </template>
+                </template>
+                <template v-if="activeNum === 1">
+                    <div class="title">填写运营人员信息</div>
+                    <div class="formLine">
+                        <p><em>*</em>姓名:</p>
+                        <input type="text" v-model.trim="userParams.linkName" @input="handleInputLinkName" placeholder="请输入真实姓名" :rule="rule.name" maxlength="50" @blur="blurHandle($event)" needverify>
+                        <i class="checked icon mIcon"></i>
+                        <span class="errTips icon mIcon" tips="请输入正确的联系人姓名"></span>
+                    </div>
+                    <div class="formLine" >
+                        <p><em>*</em>手机号:</p>
+                        <input  class="massageBtn"  type="text" autocomplete="off" @input="handleInputMobile" v-model.trim="userParams.mobile" placeholder="请输入您的常用手机号" :rule="rule.phone" maxlength="11" @blur="blurHandle($event)" needverify>
+                        <i class="checked icon mIcon"></i>
+                        <span class="errTips icon mIcon" tips="请输入有效电话号码"></span>
+                    </div>
+                    <div class="formLine smscode">
+                        <p><em>*</em>短信验证码:</p>
+                        <input class="smscode" type="text" v-model.trim="userParams.smsCode" @input="handleInputSmsCodee"  placeholder="请输入短信验证码" :rule="rule.code"  maxlength="6" @blur="blurHandle($event)" needverify>
+                        <i class="checked icon mIcon"></i>
+                        <span class="errTips icon mIcon" tips="请输入有效短信验证码"></span>
+                        <a class="code-btn" href="javascript:void(0);" @click="getMobileImage" :class="[isMobileDisabled  ? 'disabled' : '']">{{ mobileCodeText }}</a>
+                    </div>
+                    <div class="subLine">
+                        <button class="btn" type="button" :class="isSubDisabled ? 'disabled':''"  @click="handleBindConfirm">提交</button>
+                    </div>
+                </template>
             </form>
         </div>
     </div>
@@ -65,7 +100,7 @@
             <div class="model-title"><p>获取短信验证码</p><i class="icon mIcon icon-close"  @click="closeCodeModel"></i></div>
             <div class="model-content">
                 <div class="model-form">
-                    <input class="input" type="text" placeholder="请输入图形验证码" v-model="imageCode" maxlength="4">
+                    <input class="input" type="text" placeholder="请输入图形验证码" v-model="bindCodeParams.imgCode" maxlength="4">
                     <div class="image"><img :src="codeImagePath" alt=""></div>
                     <div class="refresh" @click="refreshCodeImage">
                         <i class="icon mIcon"></i>
@@ -80,7 +115,7 @@
     </div>
 </div>
 <!-- 引入底部 -->
-<template th:replace="components/footer"></template>
+<template th:replace="article/components/article-footer"></template>
 <template th:replace="components/foot-link"></template>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/user.service.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/account/bind.js(v=${version})}"></script>

+ 59 - 24
src/main/resources/templates/account/login.html

@@ -15,40 +15,75 @@
 <!-- 二级页面 -->
 <div id="loginPage">
     <div class="loginWrap clear">
+        <div class="login-image">
+            <img src="/img/account/login.png" alt="">
+        </div>
         <div class="loginForm">
             <div class="title">
-                <h1>欢迎登录</h1>
+                <h1>欢迎登录~</h1>
                 <h2>生美 / 医美采购服务平台</h2>
             </div>
             <form v-show="!qrCodeLogin">
-                <div class="forget">
-                    <a class="btn" href="/register.html" rel="nofollow" onclick="_czc.push(['_trackEvent','登录页面','注册','点击','','Um_Event_Regirster'])">免费注册</a>
-                    <a href="/forget.html" style="z-index: 99999">忘记密码?</a>
-                </div>
-                <div class="formLine">
-                    <input type="text" v-model.trim="loginAccount" placeholder="请输入邮箱或手机号" :rule="rule.account" maxlength="30" @blur="blurHandle($event)" needverify>
-                    <i class="checked icon mIcon"></i>
-                    <span class="errTips icon mIcon" tips="请提供正确的邮箱或手机号码"></span>
-                </div>
-                <div class="formLine">
-                    <input type="password" v-model.trim="loginPassword" placeholder="请输入密码" :rule="rule.password" maxlength="30" @blur="blurHandle($event)" needverify>
-                    <i class="checked icon mIcon"></i>
-                    <span class="errTips icon mIcon" tips="请输入正确的密码"></span>
-                    <i class="icon showPwd" @click="showPassword($event)"></i>
+                <div class="formLine-tabs">
+                    <a class="tabs-item" :class="{ current: loginTabs === 0 }" href="javascript:void(0);" @click="handleTabsClick(0)">密码登录</a>
+                    <a class="tabs-item" :class="{ current: loginTabs === 1 }" href="javascript:void(0);" @click="handleTabsClick(1)">验证码登录</a>
                 </div>
+                <template v-if="loginTabs === 0">
+                    <div class="formLine">
+                        <input type="text" v-model.trim="accountParams.mobileOrEmail" placeholder="请输入邮箱或手机号" :rule="rule.account" maxlength="30" @blur="blurHandle($event)" needverify>
+                        <i class="checked icon mIcon"></i>
+                        <span class="errTips icon mIcon" tips="请提供正确的邮箱或手机号码"></span>
+                    </div>
+                    <div class="formLine">
+                        <input type="password" v-model.trim="accountParams.password" placeholder="请输入密码" :rule="rule.password" maxlength="30" @blur="blurHandle($event)" needverify>
+                        <i class="checked icon mIcon"></i>
+                        <span class="errTips icon mIcon" tips="请输入正确的密码"></span>
+                        <i class="icon showPwd" @click="showPassword($event)"></i>
+                    </div>
+                </template>
+                <template v-if="loginTabs === 1">
+                    <div class="formLine" >
+                        <input  class="massageBtn"  type="text" @input="handleCodeMobileInput" v-model.trim="codeParams.mobile" placeholder="请输入手机号码" :rule="rule.mobile" maxlength="11" @blur="blurHandle($event)" needverify>
+                        <i class="checked icon mIcon"></i>
+                        <span class="errTips icon mIcon" tips="请输入正确格式的手机号"></span>
+                    </div>
+                    <div class="formLine smscode">
+                        <input type="text" class="smscode" v-model.trim="codeParams.code" autocomplete="off" placeholder="请输入短信验证码" :rule="rule.code"  maxlength="6" @blur="blurHandle($event)" needverify>
+                        <i class="checked icon mIcon"></i>
+                        <span class="errTips icon mIcon" tips="请输入短信验证码"></span>
+                        <a class="code-btn" href="javascript:void(0);" @click="handleMobileCode" :class="[isMobileDisabled  ? 'disabled' : '']">{{ mobileCodeText }}</a>
+                    </div>
+                </template>
                 <!-- 滑动验证 -->
                 <div class="verify-wrap" id="verify-wrap"></div>
                 <div class="submit clear">
-                    <button class="btn" type="button" @click="loginSubmit()" :disabled="isSlideFinishState" :class="[isSlideFinishState ?'disabled':'']">登录</button>
-<!--                    <a v-if="!isPC" class="btn" href="/register.html" rel="nofollow">免费注册</a>-->
-                    <a v-if="!isPC && isWeChat" class="weChat" @click="weChatLogin()" href="javascript:void(0);">
-                        <span>微信授权登录</span><i class="mIcon"></i>
-                    </a>
+                    <button class="btn" type="button" @click="handleSubLogin" :disabled="isSlideFinishState" :class="[isSlideFinishState ?'disabled':'']">登录</button>
+                </div>
+                <div class="forget">
+                    <a class="btn" href="/register.html" rel="nofollow" onclick="_czc.push(['_trackEvent','登录页面','注册','点击','','Um_Event_Regirster'])">免费注册</a>
+                    <a href="/forget.html" v-if="loginTabs === 0" style="z-index: 99999">忘记密码?</a>
                 </div>
-                <a v-if="isPC" href="javascript:void(0);" class="codeBtn icon" @click="toQrCodeLogin()"></a>
+                <template  v-if="!isPC && isWeChat" >
+                    <div class="login-line">
+                        <span>第三方登录</span>
+                    </div>
+                    <div class="submit clear">
+                        <a class="weChat" @click="handleWeChatLogin" href="javascript:void(0);">
+                            <i class="mIcon"></i>
+                        </a>
+                    </div>
+                </template>
+                <template  v-if="isPC" >
+                    <div class="login-line">
+                        <span>第三方登录</span>
+                    </div>
+                    <div class="from-wechat">
+                        <a href="javascript:void(0);" class="codeBtn WEB-icon" @click="toQrCodeLogin"></a>
+                    </div>
+                </template>
             </form>
             <div v-if="isPC" v-show="qrCodeLogin" class="qrCodeBox">
-                <a href="javascript:void(0);" class="changeBtn icon" @click="toNormalLogin()">账号登录</a>
+                <a href="javascript:void(0);" class="changeBtn icon" @click="toNormalLogin">账号登录</a>
                 <div id="qrCodeWrap">
                     <div class="qrCode"><img src="" alt=""></div>
                     <div class="qrInfo">请使用微信扫描二维码登录“采美365网”</div>
@@ -58,7 +93,7 @@
     </div>
     <div class="bg" v-if="stautsfalse" :style="stautsfalse?'opacity:1':''">
         <div class="bg-content">
-            <div class="bg-tittle"><p>提示</p><p class="icon mIcon" @click="hideBg"></p></div>
+            <div class="bg-tittle"><p>提示</p><p class="icon mIcon" @click="handleHideBg"></p></div>
             <div class="text-conten">
                 <p class="status">{{text}}</p>
                 <p class="tip-p">联系电话:0755-22907771</p>
@@ -70,7 +105,7 @@
 </div>
 
 <!-- 引入底部 -->
-<template th:replace="components/footer"></template>
+<template th:replace="article/components/article-footer"></template>
 <template th:replace="components/foot-link"></template>
 <script charset="utf-8" type="text/javascript" src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/lib/slideVerify.js(v=${version})}"></script>

+ 4 - 0
src/main/resources/templates/article/components/article-sidebar.html

@@ -1,5 +1,9 @@
 <html xmlns:th="http://www.w3.org/1999/xhtml">
 <div class="other" id="articleSide" v-cloak>
+    <!--侧边栏Ross广告图-->
+    <div v-if="isPC && isRossShow" class="article-right-ross" :class="isRossShow ? 'show' : 'none'">
+        <a href="/supplier-1378.html" v-if="isPC"><img src="/img/ross/ross-image@1x.jpg" alt="深圳艾斯佰丽生物科技有限公司"></a>
+    </div>
     <div id="mHotWord">
         <div class="tags clearfix">
             <p class="classify">

+ 6 - 1
src/main/resources/templates/article/detail.html

@@ -81,16 +81,21 @@
                     <span class="toTop icon mIcon">置顶</span>
                 </div>
             </div>
+            <!--Ross 弹窗-->
+            <template v-if="showRossHtml">
+                <template th:replace="components/ross-advert"></template>
+            </template>
         </div>
     </div>
     <!--侧边栏-->
     <template th:replace="article/components/article-sidebar"></template>
+
 </div>
 <template th:replace="article/components/article-footer"></template>
 <template th:replace="components/foot-link"></template>
 <script charset="utf-8" type="text/javascript" src="/lib/jquery.qrcode.min.js"></script>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/article/common.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/mixins/cmSysMixins.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/article/common.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/article/detail.js(v=${version})}"></script>
 </body>
 </html>

+ 4 - 0
src/main/resources/templates/article/list.html

@@ -19,8 +19,11 @@
 </div>
 <!--主体内容-->
 <div class="content clearfix" id="ArticleContent">
+    <!--侧边栏Ross广告图-->
+
     <div class="mainData">
         <div class="new-list" id="articleList" v-cloak>
+            <div v-if="!isPC && isRossShow" class="article-right-ross" :class="isRossShow ? 'show' : 'none'"><a href="/supplier-1378.html" ><img src="/img/ross/ross-image@2x.jpg" alt="深圳艾斯佰丽生物科技有限公司"></a></div>
             <!-- 产品搜索结果 -->
             <div class="search-section" v-show="params.keyword && productRecord > 0">
                 <div class="search__product_list">
@@ -130,6 +133,7 @@
 <script charset="utf-8" type="text/javascript" src="/lib/datapicker/jquery.daterangepicker.js"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/ajax.service.js}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/product.service.js}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/mixins/cmSysMixins.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/article/common.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/article/list.js(v=${version})}"></script>
 </body>

+ 27 - 0
src/main/resources/templates/components/ross-advert.html

@@ -0,0 +1,27 @@
+<html xmlns:th="http://www.w3.org/1999/xhtml">
+<div class="other" id="rossAdvert" v-cloak>
+  <!--Ross广告图-->
+  <div class="ross-banner-fiexd" :class="showRossHtml ? 'active' : ''">
+    <div class="ross-main">
+      <div class="ross-from">
+        <div class="from-row">
+          <div class="label">姓名:</div>
+          <input class="input" type="text" value="" v-model="consultParams.consultName" @input="handleInputName" maxlength="10" placeholder="您的姓名">
+        </div>
+        <div class="from-row">
+          <div class="label">手机号:</div>
+          <input class="input" type="text" value="" v-model="consultParams.consultMobile" @input="handleInputPhone"  maxlength="11" placeholder="您的手机号">
+        </div>
+        <div class="from-row btn">
+          <div class="label"></div>
+          <div class="from-btn" :class="isDisabled ? 'disabled' : ''" @click="handleSubmit">提交</div>
+        </div>
+        <div class="from-row none">
+          <a class="link left" href="/register.html">立即注册</a>
+          <a class="link right" href="/login.html">登录</a>
+        </div>
+      </div>
+      <div class="ross-close" @click="handleClose"></div>
+    </div>
+  </div>
+</div>

+ 9 - 9
src/main/resources/templates/flea-market/form.html

@@ -116,15 +116,15 @@
                            placeholder="请输入商品成色,如“9成新”">
                     <span class="release-tips errTips icon mIcon" v-show="vShow_shopColor">{{fromMessage}}</span>
                 </div>
-                <div class="unlogin-item input-item shrink-spacing">
-                    <div class="unlogin-label spacing">商品类型:</div>
-                    <div class="secondradio">
-                        <div class="buy icon mIcon" v-for="(item ,index) in beauty" :key='index' value="item.value"
-                             @click="getProductType(item.value)" :class="secondType==item.value?'select active':''">
-                            {{item.name}}
-                        </div>
-                    </div>
-                </div>
+<!--                <div class="unlogin-item input-item shrink-spacing">-->
+<!--                    <div class="unlogin-label spacing">商品类型:</div>-->
+<!--                    <div class="secondradio">-->
+<!--                        <div class="buy icon mIcon" v-for="(item ,index) in beauty" :key='index' value="item.value"-->
+<!--                             @click="getProductType(item.value)" :class="secondType==item.value?'select active':''">-->
+<!--                            {{item.name}}-->
+<!--                        </div>-->
+<!--                    </div>-->
+<!--                </div>-->
                 <div class="unlogin-item input-item address-item shrink-spacing" id="vShow_Address">
                     <div class="unlogin-label spacing"><span class="red-color">*</span>联系地址:</div>
                     <i class="province icon mIcon selected"></i>

+ 5 - 8
src/main/resources/templates/flea-market/intro.html

@@ -22,15 +22,12 @@
                     <span>SECOND-HANDMARKET</span>
                 </div>
             </div>
-            <div class="top_text">
-                质量好一点,效率高一点
-            </div>
+            <div class="top_text">一手信息 直接交易   </div>
+            <div class="top_text bot">效率更高   成本更低  交易更安全 </div>
             <div class="mian_text">
                 <h1>采美二手市场介绍<div class="yellow_icon"></div></h1>
                 <span>
-                    现实生活中,二手商品越来越经济实惠,二手商品也在多个经济生活领域出现。
-                    面对潜力巨大的二手市场,采美365网于2019年开办美容行业二手交易版块,搭建二手交易平台,
-                    将拥有闲置商品卖家与求购方(买家)信息集中起来,让交易双方的买卖信息传播得更广泛,交易更有保障。
+                   现实生活中,二手商品越来越经济实惠,二手商品也在多个经济生活领域出现。面对潜力巨大的二手市场,采美365网于2019年开办美容行业二手交易版块,搭建二手交易平台, 将拥有闲置商品卖家与求购方(买家)信息集中起来,让买卖双方直接交易,一手信息效率更高,交易成本更低,交易更有保障。
                 </span>
             </div>
             <div class="mian_content top">
@@ -71,11 +68,11 @@
                   </div>
                    <div class="content_list">
                     <p>3.平台推广服务(代运营)</p>
-                    <span> 卖家如需采美平台提供个性化推广服务,以帮助达成交易 ,平台收取一定服务费或佣金。</span>
+                    <span> 卖家如需采美平台提供个性化推广服务,以帮助达成交易 ,平台收取一定服务费。</span>
                   </div>
                   <div class="content_list">
                     <p>4.第三方检测、维修、延保服务</p>
-                    <span> 平台收取服务佣金。 </span>
+                    <span> 平台收取服务。 </span>
                   </div>
                   <div class="content_list">
                       <p>5.套餐服务</p>

+ 4 - 0
src/main/resources/templates/index.html

@@ -54,6 +54,10 @@
         <div class="inner">
             <div id="sidebar" class="section_right">
                 <div class="box" >
+                    <div class="section_right_item ross" v-if="isRossShow" :class="isRossShow ? 'show' : 'none'">
+                        <a href="/supplier-1378.html" v-if="isPC"><img src="/img/ross/ross-image@1x.jpg" alt="深圳艾斯佰丽生物科技有限公司"></a>
+                        <a href="/supplier-1378.html" v-else><img src="/img/ross/ross-image@3x.jpg" alt="深圳艾斯佰丽生物科技有限公司"></a>
+                    </div>
                     <div class="section_right_item" th:if="${sideJson.get('liveList')}!=null and ${sideJson.get('liveList').size}>0">
                         <div class="right_item_title">
                             <p>精彩直播</p>

+ 4 - 0
src/main/resources/templates/product/detail.html

@@ -860,6 +860,10 @@
             </div>
         </template>
     </div>
+    <!--Ross 弹窗-->
+    <template v-if="showRossHtml">
+        <template th:replace="components/ross-advert"></template>
+    </template>
 </div>
 
 <!-- 引入底部 -->

+ 22 - 16
src/main/resources/templates/product/instrument.html

@@ -16,30 +16,36 @@
         <th:block th:if="${typeFloorJson.get('contentLabel')}!=null" th:object="${typeFloorJson}">
             <input type="hidden" th:value="${typeFloorJson.get('contentLabel')}" id="contentLabel">
         </th:block>
-        <div class="instrue-right" th:if="${typeFloorJson.get('hotSearchList')}!=null and ${typeFloorJson.get('hotSearchList').size}>0">
-            <div class="wrap_tittle"> 大家都在搜<span class="line"></span></div>
-            <div v-if="isPC" class="hot-search">
-                <th:block th:each="hotSearch,stat : ${typeFloorJson.get('hotSearchList')}" th:object="${hotSearch}">
-                    <a class="hot-list" th:href="*{link}">
-                        <i th:class="*{isHot}=='1'?'icon hot':'icon'"></i>
-                        <template th:text="*{name}"></template>
-                    </a>
-                </th:block>
+        <div class="instrue-right-content">
+            <div class="instrue-right-ross" v-if="isRossShow" :class="isRossShow ? 'show' : 'none'">
+                <a href="/supplier-1378.html" v-if="isPC"><img src="/img/ross/ross-image@1x.jpg" alt="深圳艾斯佰丽生物科技有限公司"></a>
+                <a href="/supplier-1378.html" v-else><img src="/img/ross/ross-image@2x.jpg" alt="深圳艾斯佰丽生物科技有限公司"></a>
             </div>
-            <div v-else class="hot-search" :style="showflag?'height:auto':''">
-                <div class="left-box">
+            <div class="instrue-right" th:if="${typeFloorJson.get('hotSearchList')}!=null and ${typeFloorJson.get('hotSearchList').size}>0">
+                <div class="wrap_tittle"> 大家都在搜<span class="line"></span></div>
+                <div v-if="isPC" class="hot-search">
                     <th:block th:each="hotSearch,stat : ${typeFloorJson.get('hotSearchList')}" th:object="${hotSearch}">
                         <a class="hot-list" th:href="*{link}">
-                        <i th:class="*{isHot}=='1'?'mIcon hot':'mIcon'"></i>
-                        <template th:text="*{name}"></template>
+                            <i th:class="*{isHot}=='1'?'icon hot':'icon'"></i>
+                            <template th:text="*{name}"></template>
                         </a>
                     </th:block>
                 </div>
-                <div class="right-box" @click="showNav">
-                    <span class="mIcon" :class="showflag?'close':'open'"></span>
+                <div v-else class="hot-search" :style="showflag?'height:auto':''">
+                    <div class="left-box">
+                        <th:block th:each="hotSearch,stat : ${typeFloorJson.get('hotSearchList')}" th:object="${hotSearch}">
+                            <a class="hot-list" th:href="*{link}">
+                                <i th:class="*{isHot}=='1'?'mIcon hot':'mIcon'"></i>
+                                <template th:text="*{name}"></template>
+                            </a>
+                        </th:block>
+                    </div>
+                    <div class="right-box" @click="showNav">
+                        <span class="mIcon" :class="showflag?'close':'open'"></span>
+                    </div>
                 </div>
+                <div :class="showflag?'bg':''" @click="closeup"></div>
             </div>
-            <div :class="showflag?'bg':''" @click="closeup"></div>
         </div>
         <div class="instrue-left">
             <div class="top-category">

+ 4 - 0
src/main/resources/templates/product/list.html

@@ -231,6 +231,10 @@
         <span>页</span>&nbsp;
         <a class="btn" href="javascript:void(0);" @click="toPagination(pageInput)">点击跳转</a>
     </div>
+    <!--Ross 弹窗-->
+    <template v-if="showRossHtml">
+        <template th:replace="components/ross-advert"></template>
+    </template>
 </div>
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>

+ 5 - 0
src/main/resources/templates/supplier/index.html

@@ -184,12 +184,17 @@
             </div>
         </div>
     </div>
+    <!--Ross 弹窗-->
+    <template v-if="showRossHtml">
+        <template th:replace="components/ross-advert"></template>
+    </template>
 </div>
 
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>
 <template th:replace="components/foot-link"></template>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/supplier.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/mixins/cmSysMixins.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/supplier/index.js(v=${version})}"></script>
 </body>
 </html>

+ 4 - 0
src/main/resources/templates/supplier/list.html

@@ -74,6 +74,10 @@
         <span>页</span>&nbsp;
         <a class="btn" href="javascript:void(0);" @click="toPagination(pageInput)">点击跳转</a>
     </div>
+    <!--Ross 弹窗-->
+    <template v-if="showRossHtml">
+        <template th:replace="components/ross-advert"></template>
+    </template>
 </div>
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>