123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- <template>
- <div class='login-container'>
- <el-form
- class='card-box login-form'
- autocomplete='on'
- :model='loginForm'
- :rules='loginRules'
- ref='loginForm'
- label-position='left'
- >
- <h3 class='title'>系统登录</h3>
- <el-form-item prop='username'>
- <span class='svg-container svg-container_login'>
- <i class='el-icon-fa-user-o'></i>
- </span>
- <el-input name='username' type='text' v-model='loginForm.username' autocomplete='on' placeholder='邮箱'/>
- </el-form-item>
- <el-form-item prop='password'>
- <span class='svg-container'>
- <i class='el-icon-fa-key'></i>
- </span>
- <el-input
- name='password'
- type='password'
- v-model='loginForm.password'
- placeholder='密码'
- @keyup.enter.native.prevent='handleLogin'
- />
- </el-form-item>
- <el-button
- type='primary'
- style='width:100%;margin-bottom:30px;'
- :loading='loading'
- @click.native.prevent='handleLogin'
- >登录</el-button>
- </el-form>
- </div>
- </template>
- <script>
- function isvalidUsername(val) {
- return true
- }
- import frameworkApi from '@/api/framework'
- import { mapActions, mapGetters } from 'vuex'
- export default {
- components: {},
- name: 'login',
- data() {
- const validateUsername = (rule, value, callback) => {
- if (!isvalidUsername(value)) {
- callback(new Error('请输入正确的用户名'))
- } else {
- callback()
- }
- }
- const validatePassword = (rule, value, callback) => {
- if (value.length < 6) {
- callback(new Error('密码不能小于6位'))
- } else {
- callback()
- }
- }
- return {
- loginForm: {
- username: 'admin',
- password: '123456'
- },
- loginRules: {
- username: [
- {
- required: true,
- trigger: 'blur',
- validator: validateUsername
- }
- ],
- password: [
- {
- required: true,
- trigger: 'blur',
- validator: validatePassword
- }
- ]
- },
- loading: false
- }
- },
- computed: {
- //...mapGetters(['beforeUrl'])
- },
- methods: {
- async handleLogin() {
- let vm = this
- vm.$refs.loginForm.validate(valid => {
- if (valid) {
- let username = this.loginForm.username
- let password = this.loginForm.password
- frameworkApi.login(username, password).then(resp => {
- console.log('login result => ', resp)
- if (resp.result == 'success') {
- this.$store.dispatch('layout/loadUserInfo').then(resp => {
- console.log('store dispatch result ', resp)
- if (resp.result == 'success') {
- vm.$router.push('/demo/table', () => {})
- } else {
- }
- })
- } else {
- }
- })
- } else {
- console.log('error submit!!')
- return false
- }
- })
- }
- }
- }
- </script>
- <style rel="stylesheet/scss" lang="scss">
- $bg: #2d3a4b;
- $dark_gray: #889aa4;
- $light_gray: #eee;
- .login-container {
- height: 100vh;
- background-color: $bg;
- input:-webkit-autofill {
- -webkit-box-shadow: 0 0 0px 1000px #293444 inset !important;
- -webkit-text-fill-color: #fff !important;
- }
- input {
- background: transparent;
- border: 0px;
- -webkit-appearance: none;
- border-radius: 0px;
- padding: 12px 5px 12px 15px;
- color: $light_gray;
- height: 47px;
- }
- .el-input {
- display: inline-block;
- height: 47px;
- width: 85%;
- }
- .tips {
- font-size: 14px;
- color: #fff;
- margin-bottom: 10px;
- }
- .svg-container {
- padding: 6px 5px 6px 15px;
- color: $dark_gray;
- vertical-align: middle;
- width: 30px;
- display: inline-block;
- &_login {
- font-size: 20px;
- }
- }
- .title {
- font-size: 26px;
- font-weight: 400;
- color: $light_gray;
- margin: 0px auto 40px auto;
- text-align: center;
- font-weight: bold;
- }
- .login-form {
- position: absolute;
- left: 0;
- right: 0;
- width: 400px;
- padding: 35px 35px 15px 35px;
- margin: 120px auto;
- }
- .el-form-item {
- border: 1px solid rgba(255, 255, 255, 0.1);
- background: rgba(0, 0, 0, 0.1);
- border-radius: 5px;
- color: #454545;
- }
- }
- </style>
|