login.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. <template>
  2. <div id="pages">
  3. <div class="main bg bg01" :style="{ height: bodyHeight + 'px' }">
  4. <h5><img id="logo" src="../../static/images/login/logo.png" alt=""></h5>
  5. <p><img id="title" src="../../static/images/login/title.png" alt=""></p>
  6. <ul class="white_cube" >
  7. <li class="form-group">
  8. <input type="text" class="form-control" id="sms_username" placeholder="请输入手机号"
  9. ref="sms_username"
  10. style="border: 1px solid rgb(221, 221, 221);">
  11. </li>
  12. <li class="form-group">
  13. <input type="text" class="form-control" id="uservalid_sms" placeholder="请输入右侧图形码"
  14. ref="imgValid"
  15. style="border: 1px solid rgb(221, 221, 221);">
  16. <img id="imgValidcode2"
  17. :src="valImgSrc"
  18. title="看不清?刷一下试试!" @click="changeValImg"/>
  19. </li>
  20. <li class="form-group item">
  21. <input type="text" class="form-control" id="userValid" placeholder="请输入验证码"
  22. ref="sms_valid"
  23. @keyup.13="smsLoginBtn"
  24. style="border: 1px solid rgb(221, 221, 221);">
  25. <mu-button color="success" id="valid_btn" @click.navtive="valid_btn">获取验证码</mu-button>
  26. </li>
  27. </ul>
  28. <mt-button type="primary" class="pwd_login_confirm" @click.navtive="smsLoginBtn">登录</mt-button>
  29. </div>
  30. <div class="version" :style="{ top: bodyHeight - 30 + 'px' }">
  31. V {{version}}
  32. </div>
  33. </div>
  34. </template>
  35. <script>
  36. import axios from 'axios';
  37. let qs = require('qs');
  38. import {Button} from 'mint-ui';
  39. import Vue from 'vue'
  40. import {Field} from 'mint-ui';
  41. import {Toast} from 'mint-ui';
  42. import Global from '../Global.js'
  43. Vue.component(Field.name, Field);
  44. Vue.component(Button.name, Button);
  45. export default {
  46. data() {
  47. return {
  48. version: globalVersion(),
  49. bodyHeight: 0,
  50. page: 0,
  51. step: 1,
  52. valImgSrc: 'data:image/png;base64,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',//测试用路径
  53. valid_btn: '获取验证码',
  54. button_state: false,
  55. register: {
  56. usercode: '',
  57. img_valid: '',
  58. valid: '',
  59. pwd: '',
  60. },
  61. pwd_login: {
  62. usercode: '',
  63. valid: '',
  64. pwd: '',
  65. img_valid: '',
  66. },
  67. phone_login: {
  68. usercode: '',
  69. valid: '',
  70. img_valid: '',
  71. },
  72. forget: {
  73. usercode: '',
  74. img_valid: '',
  75. valid: '',
  76. pwd: '',
  77. },
  78. }
  79. },
  80. watch: {
  81. '$route': function (val) {
  82. if (val.path == '/login') {
  83. this.bodyHeight = document.documentElement.clientHeight;
  84. console.log(this.bodyHeight);
  85. }
  86. }
  87. },
  88. created() {
  89. this.overtime = new Date();
  90. // 如果是手动退出用户
  91. if (this.$route.query.status == 1) {
  92. // 刷新验证图
  93. this.changeValImg();
  94. // 重置倒计时
  95. this.overtime = new Date();
  96. }
  97. this.bodyHeight = document.documentElement.clientHeight;
  98. },
  99. mounted() {
  100. this.overtime = new Date();
  101. // 如果是手动退出用户
  102. if (this.$route.query.status == 1) {
  103. // 刷新验证图
  104. this.changeValImg();
  105. // 重置倒计时
  106. this.overtime = new Date();
  107. }
  108. this.bodyHeight = document.documentElement.clientHeight;
  109. console.log(this.bodyHeight);
  110. },
  111. methods: {
  112. // sms 登陆
  113. smsLoginBtn: function () {
  114. let sms_username = this.$refs.sms_username.value;
  115. let sms_valid = this.$refs.sms_valid.value;
  116. if (!globalValid(sms_username, 2, 17, '手机号', that)) return;
  117. if (!globalValid(sms_valid, 4, 6, '短信验证码', that)) return;
  118. this.pwd_login_confirm();
  119. },
  120. // 页内跳转
  121. goPage(e) {
  122. this.page = e;
  123. this.changeValImg();
  124. },
  125. // 点击验证码切换
  126. changeValImg() {
  127. let that = this;
  128. that.valImgSrc = that.valImgSrc + '?' + Math.random();
  129. },
  130. // 获取验证码
  131. get_phone_valid(usercode, this_valid, type) {
  132. let img_valid = this_valid;
  133. let tel = usercode;
  134. let that = this;
  135. if (!tel) {
  136. Toast('手机号码不能为空');
  137. return false
  138. }
  139. if (tel.length != 11) {
  140. Toast('手机号长度不正确');
  141. return false
  142. }
  143. if (!img_valid) {
  144. Toast('图形验证码不能为空');
  145. return false
  146. }
  147. if (img_valid.length != 4) {
  148. Toast('图形验证码位数不正确');
  149. return false
  150. }
  151. let url = headapi + 'getCode';
  152. let param = {
  153. NAME: tel,
  154. VALID: img_valid,
  155. TYPE: type,//(2)(1:注册,2:重置,3:登陆)
  156. };
  157. that.button_state = true;
  158. let postdata = qs.stringify(param);
  159. axios.post(url, postdata).then(function (data) {
  160. let json = data.data;
  161. let code = json.code;
  162. if (code == 0) {
  163. let countdown = 60;
  164. that.valid_btn = countdown + "秒";
  165. let timer = setInterval(() => {
  166. if (countdown == 0) {
  167. clearInterval(timer);//停止计时器
  168. that.valid_btn = "重新发送";
  169. that.button_state = false;
  170. } else {
  171. countdown--;
  172. that.valid_btn = countdown + "秒";
  173. that.button_state = true
  174. }
  175. }, 1000);
  176. Toast('短信已发送,请注意查收');
  177. } else {
  178. that.button_state = false;
  179. Toast(json.memo);
  180. }
  181. }, function (response) {
  182. console.info(response);
  183. })
  184. },
  185. // pwd 登陆
  186. pwd_login_confirm() {
  187. const that = this;
  188. let url = headapi + 'login';
  189. if (!that.pwd_login.usercode) {
  190. Toast('手机号码不能为空');
  191. return false
  192. }
  193. if (that.pwd_login.usercode.length != 11) {
  194. Toast('手机号长度不正确');
  195. return false
  196. }
  197. if (!that.pwd_login.pwd) {
  198. Toast('密码不能为空');
  199. return false
  200. }
  201. if (that.pwd_login.pwd.length >= 12 || that.pwd_login.pwd.length < 6) {
  202. Toast('密码长度不正确');
  203. return false
  204. }
  205. if (!that.pwd_login.img_valid && that.step > 0) {
  206. Toast('图形验证码不能为空');
  207. return false
  208. }
  209. if (that.pwd_login.img_valid.length != 4 && that.step > 0) {
  210. Toast('图形验证码');
  211. return false
  212. }
  213. let param = {
  214. VERIFY_NAME: that.pwd_login.usercode,
  215. VERIFY_CODE: that.pwd_login.pwd,
  216. LOGIN_TYPE: 1,//(3)(1:密码登陆,2:验证码登陆)
  217. VALID: that.pwd_login.img_valid,
  218. STEP: that.step,
  219. };
  220. let postdata = qs.stringify(param);
  221. axios.post(url, postdata).then(function (data) {
  222. let json = data.data;
  223. if (json.code == 0) {
  224. localStorage.usercode = that.pwd_login.usercode;
  225. that.$router.push({path: '/'});
  226. } else {
  227. that.step++
  228. that.changeValImg();
  229. Toast(json.memo);
  230. }
  231. }, function (response) {
  232. console.info(response);
  233. })
  234. },
  235. // phone login
  236. phone_login_confirm() {
  237. const that = this;
  238. let url = headapi + 'login';
  239. if (!that.phone_login.usercode) {
  240. Toast('手机号码不能为空');
  241. return false
  242. }
  243. if (that.phone_login.usercode.length != 11) {
  244. Toast('手机号长度不正确');
  245. return false
  246. }
  247. if (!that.phone_login.img_valid) {
  248. Toast('图形验证码不能为空');
  249. return false
  250. }
  251. if (that.phone_login.img_valid.length != 4) {
  252. Toast('图形验证码');
  253. return false
  254. }
  255. if (!that.phone_login.valid) {
  256. Toast('短信验证码不能为空');
  257. return false
  258. }
  259. if (that.phone_login.valid.length >= 12 || that.phone_login.valid.length < 6) {
  260. Toast('短信验证码长度不正确');
  261. return false
  262. }
  263. let param = {
  264. VERIFY_NAME: that.phone_login.usercode,
  265. VERIFY_CODE: that.phone_login.valid,
  266. LOGIN_TYPE: 2,//(3)(1:密码登陆,2:验证码登陆)
  267. VALID: that.phone_login.img_valid,
  268. };
  269. let postdata = qs.stringify(param);
  270. axios.post(url, postdata).then(function (data) {
  271. let json = data.data;
  272. if (json.code == 0) {
  273. localStorage.usercode = that.phone_login.usercode;
  274. that.$router.push({path: '/'});
  275. } else {
  276. Toast(json.memo);
  277. }
  278. }, function (response) {
  279. console.info(response);
  280. })
  281. },
  282. // 找回密码并登陆
  283. forget_confirm() {
  284. const that = this;
  285. let url = headapi + 'resetPassword';
  286. if (!that.forget.usercode) {
  287. Toast('手机号码不能为空');
  288. return false
  289. }
  290. if (that.forget.usercode.length != 11) {
  291. Toast('手机号长度不正确');
  292. return false
  293. }
  294. if (!that.forget.img_valid) {
  295. Toast('图形验证码不能为空');
  296. return false
  297. }
  298. if (that.forget.img_valid.length != 4) {
  299. Toast('图形验证码');
  300. return false
  301. }
  302. if (!that.forget.valid) {
  303. Toast('短信验证码不能为空');
  304. return false
  305. }
  306. if (that.forget.valid.length >= 12 || that.forget.valid.length < 6) {
  307. Toast('短信验证码长度不正确');
  308. return false
  309. }
  310. if (!that.forget.pwd) {
  311. Toast('密码不能为空');
  312. return false
  313. }
  314. if (that.forget.pwd.length >= 12 || that.forget.pwd.length < 6) {
  315. Toast('密码长度不正确');
  316. return false
  317. }
  318. let param = {
  319. VERIFY_NAME: that.forget.usercode,
  320. VERIFY_CODE: that.forget.valid,
  321. NEWPWD: that.forget.pwd,
  322. };
  323. let postdata = qs.stringify(param);
  324. axios.post(url, postdata).then(function (data) {
  325. let json = data.data;
  326. if (json.code == 0) {
  327. localStorage.usercode = that.forget.usercode;
  328. that.$router.push({path: '/'});
  329. } else {
  330. Toast(json.memo);
  331. }
  332. }, function (response) {
  333. console.info(response);
  334. })
  335. },
  336. },
  337. components: {}
  338. }
  339. </script>
  340. <!-- Add "scoped" attribute to limit CSS to this component only -->
  341. <style scoped>
  342. @import "../assets/css/comm.css";
  343. #pages {
  344. /*position: absolute;*/
  345. /*top: 0;*/
  346. /*left: 0;*/
  347. /*right: 0;*/
  348. /*bottom: 0;*/
  349. /*width: 100%;*/
  350. /*height: 100%;*/
  351. /*overflow: hidden;*/
  352. /*display: block;*/
  353. /*margin: 0 auto;*/
  354. /*background: url("../../static/images/login/bg.png") top center no-repeat;*/
  355. /*background-size: 100% 100%;*/
  356. }
  357. .main {
  358. position: absolute;
  359. top: 0;
  360. left: 0;
  361. right: 0;
  362. bottom: 0;
  363. width: 100%;
  364. height: 100%;
  365. overflow: hidden;
  366. display: block;
  367. margin: 0 auto;
  368. background: url("../../static/images/login/bg.png") top center no-repeat;
  369. background-size: 100% 100%;
  370. }
  371. #logo {
  372. width: 108px;
  373. overflow: hidden;
  374. display: block;
  375. margin: 0 auto;
  376. margin-top: 20%;
  377. }
  378. #title {
  379. width: 276px;
  380. overflow: hidden;
  381. display: block;
  382. margin: 0 auto;
  383. margin-top: 18px;
  384. margin-bottom: 18px;
  385. }
  386. .bg {
  387. position: absolute;
  388. top: 0;
  389. left: 0;
  390. right: 0;
  391. bottom: 0;
  392. width: 100%;
  393. height: 100%;
  394. overflow: hidden;
  395. display: block;
  396. margin: 0 auto;
  397. height: 100%;
  398. background: url('../assets/images/bg@2x.png') no-repeat left top;
  399. background-size: 100% 100%;
  400. }
  401. /deep/ .mint-cell {
  402. background: none;
  403. }
  404. /deep/ .mint-cell-wrapper {
  405. background: rgba(255, 255, 255, 0.4);
  406. color: #fff;
  407. border-radius: 0px;
  408. margin-bottom: 3px;
  409. }
  410. /deep/ .mint-field-core {
  411. height: 45px;
  412. line-height: 45px;
  413. background: none;
  414. color: #fff;
  415. text-indent: 20px;
  416. }
  417. /deep/ .mint-field-core::placeholder {
  418. color: #fff;
  419. }
  420. /deep/ .mint-field .mint-cell-title {
  421. width: 70px;
  422. }
  423. .valid_btn {
  424. background: #004B8D;
  425. width: 97px;
  426. height: 32px;
  427. line-height: 32px;
  428. font-size: 14px;
  429. }
  430. .white_cube {
  431. width: 337px;
  432. overflow: hidden;
  433. display: block;
  434. margin: 0;
  435. border-radius: 5px;
  436. float: none;
  437. padding: 0 25px;
  438. }
  439. .form-control-short {
  440. width: 60% !important;
  441. float: left;
  442. border-right: none;
  443. }
  444. #sms_login {
  445. display: block;
  446. }
  447. #valid_btn {
  448. width: 40%;
  449. float: right;
  450. height: 45px;
  451. background: #25CC42;
  452. color: #fff;
  453. text-align: center;
  454. line-height: 45px;
  455. font-size: 16px;
  456. border: none;
  457. outline: none;
  458. }
  459. #valid_btn:hover {
  460. background: #24c240;
  461. }
  462. .form-group {
  463. width: 100%;
  464. height: 50px;
  465. overflow: hidden;
  466. display: block;
  467. margin: 0 auto;
  468. margin-bottom: 3px;
  469. }
  470. .form-group input {
  471. width: 100%;
  472. height: 50px;
  473. background: rgba(255,255,255,0.4);
  474. overflow: hidden;
  475. display: block;
  476. margin: 0 auto;
  477. border: none!important;
  478. outline: none;
  479. margin-bottom: 3px;
  480. font-size: 16px;
  481. text-indent: 27px;
  482. }
  483. .form-group input::placeholder {
  484. color:#000000;
  485. font-size: 16px;
  486. }
  487. .form-group #uservalid_sms {
  488. width: 60%;
  489. float: left;
  490. }
  491. .form-group #userValid {
  492. width: 60%;
  493. float: left;
  494. }
  495. .form-group #imgValidcode2 {
  496. width: 38%;
  497. height: 50px;
  498. background: #fff;
  499. float: right;
  500. }
  501. .form-group #valid_btn {
  502. width: 38%;
  503. height: 50px;
  504. background: rgba(255,255,255,0.4);
  505. float: right;
  506. text-align: center;
  507. line-height: 50px;
  508. color: #E75296;
  509. }
  510. .pwd_login_confirm {
  511. width: 337px;
  512. height: 50px;
  513. background: #e75296;
  514. overflow: hidden;
  515. display: block;
  516. margin: 0 auto;
  517. border-radius: 0;
  518. margin-top: 42px;
  519. font-family: "PingFang SC";
  520. font-weight: 500;
  521. font-size: 24px;
  522. text-align: center;
  523. color: #fff;
  524. }
  525. .pwd_login_confirm /deep/ label {
  526. word-spacing: 30px;
  527. }
  528. </style>