|
@@ -1,16 +1,34 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <div :class="[
|
|
|
|
|
- 'login-wrapper',
|
|
|
|
|
- ['', 'login-form-right', 'login-form-left'][direction]
|
|
|
|
|
- ]">
|
|
|
|
|
- <el-form ref="form" size="large" :model="form" :rules="rules" class="login-form ele-bg-white"
|
|
|
|
|
- @keyup.enter.native="submit">
|
|
|
|
|
|
|
+ <div
|
|
|
|
|
+ :class="[
|
|
|
|
|
+ 'login-wrapper',
|
|
|
|
|
+ ['', 'login-form-right', 'login-form-left'][direction]
|
|
|
|
|
+ ]"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-form
|
|
|
|
|
+ ref="form"
|
|
|
|
|
+ size="large"
|
|
|
|
|
+ :model="form"
|
|
|
|
|
+ :rules="rules"
|
|
|
|
|
+ class="login-form ele-bg-white"
|
|
|
|
|
+ @keyup.enter.native="submit"
|
|
|
|
|
+ >
|
|
|
<h4>{{ $t('login.title') }}</h4>
|
|
<h4>{{ $t('login.title') }}</h4>
|
|
|
<el-form-item prop="loginName">
|
|
<el-form-item prop="loginName">
|
|
|
- <el-input clearable v-model="form.loginName" prefix-icon="el-icon-user" placeholder="请输入登录账号" />
|
|
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ clearable
|
|
|
|
|
+ v-model="form.loginName"
|
|
|
|
|
+ prefix-icon="el-icon-user"
|
|
|
|
|
+ placeholder="请输入登录账号"
|
|
|
|
|
+ />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="loginPwd">
|
|
<el-form-item prop="loginPwd">
|
|
|
- <el-input show-password v-model="form.loginPwd" prefix-icon="el-icon-lock" placeholder="请输入登录密码" />
|
|
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ show-password
|
|
|
|
|
+ v-model="form.loginPwd"
|
|
|
|
|
+ prefix-icon="el-icon-lock"
|
|
|
|
|
+ placeholder="请输入登录密码"
|
|
|
|
|
+ />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<!-- <el-form-item prop="code">
|
|
<!-- <el-form-item prop="code">
|
|
|
<div class="login-input-group">
|
|
<div class="login-input-group">
|
|
@@ -33,19 +51,36 @@
|
|
|
<el-checkbox v-model="form.remember">
|
|
<el-checkbox v-model="form.remember">
|
|
|
{{ $t('login.remember') }}
|
|
{{ $t('login.remember') }}
|
|
|
</el-checkbox>
|
|
</el-checkbox>
|
|
|
- <el-link type="primary" :underline="false" class="ele-pull-right" @click="$router.push('/forget')">
|
|
|
|
|
|
|
+ <el-link
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ :underline="false"
|
|
|
|
|
+ class="ele-pull-right"
|
|
|
|
|
+ @click="$router.push('/forget')"
|
|
|
|
|
+ >
|
|
|
忘记密码
|
|
忘记密码
|
|
|
</el-link>
|
|
</el-link>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="el-form-item">
|
|
<div class="el-form-item">
|
|
|
- <el-button size="large" type="primary" class="login-btn" :loading="loading" @click="submit">
|
|
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ size="large"
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ class="login-btn"
|
|
|
|
|
+ :loading="loading"
|
|
|
|
|
+ @click="submit"
|
|
|
|
|
+ >
|
|
|
{{ loading ? $t('login.loading') : $t('login.login') }}
|
|
{{ loading ? $t('login.loading') : $t('login.login') }}
|
|
|
</el-button>
|
|
</el-button>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="ele-text-center" style="margin-bottom: 10px">
|
|
<div class="ele-text-center" style="margin-bottom: 10px">
|
|
|
<i class="login-oauth-icon el-icon-_qq" style="background: #3492ed"></i>
|
|
<i class="login-oauth-icon el-icon-_qq" style="background: #3492ed"></i>
|
|
|
- <i class="login-oauth-icon el-icon-_wechat" style="background: #4daf29"></i>
|
|
|
|
|
- <i class="login-oauth-icon el-icon-_weibo" style="background: #cf1900"></i>
|
|
|
|
|
|
|
+ <i
|
|
|
|
|
+ class="login-oauth-icon el-icon-_wechat"
|
|
|
|
|
+ style="background: #4daf29"
|
|
|
|
|
+ ></i>
|
|
|
|
|
+ <i
|
|
|
|
|
+ class="login-oauth-icon el-icon-_weibo"
|
|
|
|
|
+ style="background: #cf1900"
|
|
|
|
|
+ ></i>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
<div class="login-copyright">
|
|
<div class="login-copyright">
|
|
@@ -53,10 +88,15 @@
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 多语言切换 -->
|
|
<!-- 多语言切换 -->
|
|
|
<div style="position: absolute; right: 30px; top: 20px">
|
|
<div style="position: absolute; right: 30px; top: 20px">
|
|
|
- <i18n-icon :icon-style="{ fontSize: '22px', color: '#fff', cursor: 'pointer' }" />
|
|
|
|
|
|
|
+ <i18n-icon
|
|
|
|
|
+ :icon-style="{ fontSize: '22px', color: '#fff', cursor: 'pointer' }"
|
|
|
|
|
+ />
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 实际项目去掉这段 -->
|
|
<!-- 实际项目去掉这段 -->
|
|
|
- <div class="hidden-xs-only" style="position: absolute; right: 30px; bottom: 20px; z-index: 9">
|
|
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="hidden-xs-only"
|
|
|
|
|
+ style="position: absolute; right: 30px; bottom: 20px; z-index: 9"
|
|
|
|
|
+ >
|
|
|
<el-radio-group v-model="direction" size="mini">
|
|
<el-radio-group v-model="direction" size="mini">
|
|
|
<el-radio-button label="2">居左</el-radio-button>
|
|
<el-radio-button label="2">居左</el-radio-button>
|
|
|
<el-radio-button label="0">居中</el-radio-button>
|
|
<el-radio-button label="0">居中</el-radio-button>
|
|
@@ -70,8 +110,8 @@
|
|
|
import I18nIcon from '@/layout/components/i18n-icon.vue';
|
|
import I18nIcon from '@/layout/components/i18n-icon.vue';
|
|
|
import { getToken } from '@/utils/token-util';
|
|
import { getToken } from '@/utils/token-util';
|
|
|
import { login, getCaptcha, sub } from '@/api/login';
|
|
import { login, getCaptcha, sub } from '@/api/login';
|
|
|
-import {getPathAddress} from "@/api/system/file";
|
|
|
|
|
-import xyy from '@/assets/xyy.jpg'
|
|
|
|
|
|
|
+import { getPathAddress } from '@/api/system/file';
|
|
|
|
|
+import xyy from '@/assets/xyy.jpg';
|
|
|
export default {
|
|
export default {
|
|
|
// eslint-disable-next-line vue/multi-word-component-names
|
|
// eslint-disable-next-line vue/multi-word-component-names
|
|
|
name: 'Login',
|
|
name: 'Login',
|
|
@@ -85,9 +125,15 @@ export default {
|
|
|
loading: false,
|
|
loading: false,
|
|
|
// 表单数据
|
|
// 表单数据
|
|
|
form: {
|
|
form: {
|
|
|
- loginName: localStorage.getItem('accountInfo') ? JSON.parse(localStorage.getItem('accountInfo')).loginName : '',
|
|
|
|
|
- loginPwd: localStorage.getItem('accountInfo') ? JSON.parse(localStorage.getItem('accountInfo')).loginPwd : '',
|
|
|
|
|
- remember: localStorage.getItem('accountInfo') ? JSON.parse(localStorage.getItem('accountInfo')).remember : false,
|
|
|
|
|
|
|
+ loginName: localStorage.getItem('accountInfo')
|
|
|
|
|
+ ? JSON.parse(localStorage.getItem('accountInfo')).loginName
|
|
|
|
|
+ : '',
|
|
|
|
|
+ loginPwd: localStorage.getItem('accountInfo')
|
|
|
|
|
+ ? JSON.parse(localStorage.getItem('accountInfo')).loginPwd
|
|
|
|
|
+ : '',
|
|
|
|
|
+ remember: localStorage.getItem('accountInfo')
|
|
|
|
|
+ ? JSON.parse(localStorage.getItem('accountInfo')).remember
|
|
|
|
|
+ : false
|
|
|
},
|
|
},
|
|
|
// 验证码base64数据
|
|
// 验证码base64数据
|
|
|
captcha: '',
|
|
captcha: '',
|
|
@@ -138,8 +184,19 @@ export default {
|
|
|
.then(async (res) => {
|
|
.then(async (res) => {
|
|
|
localStorage.setItem('userId', res.data.userId);
|
|
localStorage.setItem('userId', res.data.userId);
|
|
|
// 用户信息
|
|
// 用户信息
|
|
|
- const filePath = await getPathAddress()
|
|
|
|
|
- res.data.avatarAddress = res.data.avatar && res.data.avatar.length ? filePath + res.data.avatar[0].storePath : xyy
|
|
|
|
|
|
|
+ if (res.data?.loginChangeGroupVOList.length > 0) {
|
|
|
|
|
+ sessionStorage['currentUser'] = JSON.stringify({
|
|
|
|
|
+ currentGroupId: res.data.loginChangeGroupVOList[0].groupId,
|
|
|
|
|
+ currentRoleId:
|
|
|
|
|
+ res.data.loginChangeGroupVOList[0].loginChangeRoleVOList[0]
|
|
|
|
|
+ .roleId
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ const filePath = await getPathAddress();
|
|
|
|
|
+ res.data.avatarAddress =
|
|
|
|
|
+ res.data.avatar && res.data.avatar.length
|
|
|
|
|
+ ? filePath + res.data.avatar[0].storePath
|
|
|
|
|
+ : xyy;
|
|
|
this.$store.commit('user/setUserInfo', res.data);
|
|
this.$store.commit('user/setUserInfo', res.data);
|
|
|
this.loading = false;
|
|
this.loading = false;
|
|
|
this.$message.success(res.message);
|
|
this.$message.success(res.message);
|
|
@@ -160,7 +217,7 @@ export default {
|
|
|
},
|
|
},
|
|
|
/* 跳转到首页 */
|
|
/* 跳转到首页 */
|
|
|
goHome() {
|
|
goHome() {
|
|
|
- this.$router.push(this.$route?.query?.from ?? '/').catch(() => { });
|
|
|
|
|
|
|
+ this.$router.push(this.$route?.query?.from ?? '/').catch(() => {});
|
|
|
},
|
|
},
|
|
|
/* 更换图形验证码 */
|
|
/* 更换图形验证码 */
|
|
|
changeCaptcha() {
|
|
changeCaptcha() {
|
|
@@ -221,7 +278,7 @@ export default {
|
|
|
margin: 0 0 25px 0;
|
|
margin: 0 0 25px 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- &>.el-form-item {
|
|
|
|
|
|
|
+ & > .el-form-item {
|
|
|
margin-bottom: 25px;
|
|
margin-bottom: 25px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -314,7 +371,6 @@ export default {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@media screen and (max-width: 768px) {
|
|
@media screen and (max-width: 768px) {
|
|
|
-
|
|
|
|
|
.login-form-right .login-form,
|
|
.login-form-right .login-form,
|
|
|
.login-form-left .login-form {
|
|
.login-form-left .login-form {
|
|
|
left: 50%;
|
|
left: 50%;
|