Login.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <div class="login-wrap">
  3. <div class="ms-login">
  4. <div class="ms-title">后台管理系统</div>
  5. <el-form :model="form" :rules="rules" ref="login" label-width="0px" class="ms-content">
  6. <el-form-item prop="username">
  7. <el-input v-model="form.tel" placeholder="请输入手机号">
  8. <el-button slot="prepend" icon="el-icon-user"></el-button>
  9. </el-input>
  10. </el-form-item>
  11. <el-form-item prop="password">
  12. <el-input type="password" placeholder="请输入密码" v-model="form.pwd">
  13. <el-button slot="prepend" icon="el-icon-lock"></el-button>
  14. </el-input>
  15. </el-form-item>
  16. <div class="login-btn">
  17. <el-button type="primary" @click="submitForm()">登录</el-button>
  18. </div>
  19. </el-form>
  20. </div>
  21. </div>
  22. </template>
  23. <script>
  24. import { mapState, createNamespacedHelpers } from 'vuex';
  25. const { mapActions: login } = createNamespacedHelpers('login');
  26. export default {
  27. metaInfo: { title: '登录' },
  28. name: 'login',
  29. props: {},
  30. components: {},
  31. data: function() {
  32. return {
  33. form: {},
  34. rules: {
  35. tel: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
  36. pwd: [{ required: true, message: '请输入密码', trigger: 'blur' }],
  37. },
  38. };
  39. },
  40. created() {},
  41. methods: {
  42. ...login(['login']),
  43. submitForm() {
  44. this.$refs.login.validate(async valid => {
  45. if (valid) {
  46. let res = await this.login({ user: this.form });
  47. if (this.$checkRes(res)) {
  48. this.$message.success('登录成功');
  49. // localStorage.setItem('user', JSON.stringify(res.data));
  50. this.$router.push('/dashboard');
  51. }
  52. } else {
  53. this.$message.error('请输入账号和密码');
  54. console.log('error submit!!');
  55. return false;
  56. }
  57. });
  58. },
  59. },
  60. };
  61. </script>
  62. <style lang="less" scoped>
  63. .login-wrap {
  64. position: relative;
  65. width: 100%;
  66. height: 100%;
  67. background-image: url(../../assets/img/login-bg.jpg);
  68. background-size: 100%;
  69. }
  70. .ms-title {
  71. width: 100%;
  72. line-height: 50px;
  73. text-align: center;
  74. font-size: 20px;
  75. color: #fff;
  76. border-bottom: 1px solid #ddd;
  77. }
  78. .ms-login {
  79. position: absolute;
  80. left: 50%;
  81. top: 50%;
  82. width: 350px;
  83. margin: -190px 0 0 -175px;
  84. border-radius: 5px;
  85. background: rgba(255, 255, 255, 0.3);
  86. overflow: hidden;
  87. }
  88. .ms-content {
  89. padding: 30px 30px;
  90. }
  91. .login-btn {
  92. text-align: center;
  93. }
  94. .login-btn button {
  95. width: 100%;
  96. height: 36px;
  97. margin-bottom: 10px;
  98. }
  99. .login-tips {
  100. font-size: 12px;
  101. line-height: 30px;
  102. color: #fff;
  103. }
  104. /deep/.js .el-form-item__content {
  105. padding: 0 25px;
  106. .el-radio {
  107. color: #fff;
  108. }
  109. }
  110. </style>