Merge branch 'main' of http://192.168.0.75:3000/bonus/hn_cloud_web
# Conflicts: # ldlz-web/src/layout/index.vue
This commit is contained in:
commit
a0fe65c9a0
|
|
@ -12,26 +12,29 @@ const whiteList = ["/login", "/register", "/ywgllogin"];
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
NProgress.start();
|
NProgress.start();
|
||||||
|
|
||||||
// 如果是嵌入模式,尝试从父窗口获取 token
|
// 如果是嵌入模式,设置嵌入状态并尝试从父窗口获取 token
|
||||||
if (window.self !== window.top) {
|
if (window.self !== window.top) {
|
||||||
|
// 设置嵌入模式状态
|
||||||
|
store.commit("app/SET_SIDEBAR_EMBEDDED", true);
|
||||||
try {
|
try {
|
||||||
// 只有同源才能访问 window.parent.sessionStorage
|
// 只有同源才能访问 window.parent.sessionStorage
|
||||||
const parentToken = window.parent.sessionStorage.getItem("Admin-Token");
|
const parentToken = window.parent.sessionStorage.getItem("Admin-Token");
|
||||||
if (parentToken && !getToken()) {
|
if (parentToken && !getToken()) {
|
||||||
store.commit("SET_TOKEN", parentToken);
|
store.commit("user/SET_TOKEN", parentToken);
|
||||||
setToken(parentToken);
|
setToken(parentToken);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
const parentToken = localStorage.getItem("Admin-Token");
|
const parentToken = localStorage.getItem("Admin-Token");
|
||||||
if (parentToken && !getToken()) {
|
if (parentToken && !getToken()) {
|
||||||
store.commit("SET_TOKEN", parentToken);
|
store.commit("user/SET_TOKEN", parentToken);
|
||||||
setToken(parentToken);
|
setToken(parentToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// 非嵌入模式,确保状态为 false
|
||||||
const parentToken = localStorage.getItem("Admin-Token");
|
const parentToken = localStorage.getItem("Admin-Token");
|
||||||
if (parentToken && !getToken()) {
|
if (parentToken && !getToken()) {
|
||||||
store.commit("SET_TOKEN", parentToken);
|
store.commit("user/SET_TOKEN", parentToken);
|
||||||
setToken(parentToken);
|
setToken(parentToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,66 +1,73 @@
|
||||||
import Cookies from 'js-cookie'
|
import Cookies from "js-cookie";
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
sidebar: {
|
sidebar: {
|
||||||
opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,
|
opened: Cookies.get("sidebarStatus")
|
||||||
|
? !!+Cookies.get("sidebarStatus")
|
||||||
|
: true,
|
||||||
withoutAnimation: false,
|
withoutAnimation: false,
|
||||||
hide: false
|
hide: false,
|
||||||
|
isEmbedded: false, // 是否隐藏侧边栏和头部导航栏
|
||||||
},
|
},
|
||||||
device: 'desktop',
|
device: "desktop",
|
||||||
size: Cookies.get('size') || 'medium'
|
size: Cookies.get("size") || "medium",
|
||||||
}
|
};
|
||||||
|
|
||||||
const mutations = {
|
const mutations = {
|
||||||
TOGGLE_SIDEBAR: state => {
|
TOGGLE_SIDEBAR: (state) => {
|
||||||
if (state.sidebar.hide) {
|
if (state.sidebar.hide) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
state.sidebar.opened = !state.sidebar.opened
|
state.sidebar.opened = !state.sidebar.opened;
|
||||||
state.sidebar.withoutAnimation = false
|
state.sidebar.withoutAnimation = false;
|
||||||
if (state.sidebar.opened) {
|
if (state.sidebar.opened) {
|
||||||
Cookies.set('sidebarStatus', 1)
|
Cookies.set("sidebarStatus", 1);
|
||||||
} else {
|
} else {
|
||||||
Cookies.set('sidebarStatus', 0)
|
Cookies.set("sidebarStatus", 0);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
CLOSE_SIDEBAR: (state, withoutAnimation) => {
|
CLOSE_SIDEBAR: (state, withoutAnimation) => {
|
||||||
Cookies.set('sidebarStatus', 0)
|
Cookies.set("sidebarStatus", 0);
|
||||||
state.sidebar.opened = false
|
state.sidebar.opened = false;
|
||||||
state.sidebar.withoutAnimation = withoutAnimation
|
state.sidebar.withoutAnimation = withoutAnimation;
|
||||||
},
|
},
|
||||||
TOGGLE_DEVICE: (state, device) => {
|
TOGGLE_DEVICE: (state, device) => {
|
||||||
state.device = device
|
state.device = device;
|
||||||
},
|
},
|
||||||
SET_SIZE: (state, size) => {
|
SET_SIZE: (state, size) => {
|
||||||
state.size = size
|
state.size = size;
|
||||||
Cookies.set('size', size)
|
Cookies.set("size", size);
|
||||||
},
|
},
|
||||||
SET_SIDEBAR_HIDE: (state, status) => {
|
SET_SIDEBAR_HIDE: (state, status) => {
|
||||||
state.sidebar.hide = status
|
state.sidebar.hide = status;
|
||||||
}
|
},
|
||||||
}
|
SET_SIDEBAR_EMBEDDED: (state, status) => {
|
||||||
|
console.log("status侧边栏隐藏状态", status);
|
||||||
|
state.sidebar.isEmbedded = status;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
const actions = {
|
const actions = {
|
||||||
toggleSideBar({ commit }) {
|
toggleSideBar({ commit }) {
|
||||||
commit('TOGGLE_SIDEBAR')
|
commit("TOGGLE_SIDEBAR");
|
||||||
},
|
},
|
||||||
closeSideBar({ commit }, { withoutAnimation }) {
|
closeSideBar({ commit }, { withoutAnimation }) {
|
||||||
commit('CLOSE_SIDEBAR', withoutAnimation)
|
commit("CLOSE_SIDEBAR", withoutAnimation);
|
||||||
},
|
},
|
||||||
toggleDevice({ commit }, device) {
|
toggleDevice({ commit }, device) {
|
||||||
commit('TOGGLE_DEVICE', device)
|
commit("TOGGLE_DEVICE", device);
|
||||||
},
|
},
|
||||||
setSize({ commit }, size) {
|
setSize({ commit }, size) {
|
||||||
commit('SET_SIZE', size)
|
commit("SET_SIZE", size);
|
||||||
},
|
},
|
||||||
toggleSideBarHide({ commit }, status) {
|
toggleSideBarHide({ commit }, status) {
|
||||||
commit('SET_SIDEBAR_HIDE', status)
|
commit("SET_SIDEBAR_HIDE", status);
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
namespaced: true,
|
namespaced: true,
|
||||||
state,
|
state,
|
||||||
mutations,
|
mutations,
|
||||||
actions
|
actions,
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,114 +1,125 @@
|
||||||
import { login, logout, getInfo,defaultLogin } from '@/api/login'
|
import { login, logout, getInfo, defaultLogin } from "@/api/login";
|
||||||
import { getToken, setToken, removeToken } from '@/utils/auth'
|
import { getToken, setToken, removeToken } from "@/utils/auth";
|
||||||
|
|
||||||
const user = {
|
const user = {
|
||||||
state: {
|
state: {
|
||||||
token: getToken(),
|
token: getToken(),
|
||||||
id: '',
|
id: "",
|
||||||
name: '',
|
name: "",
|
||||||
avatar: '',
|
avatar: "",
|
||||||
roles: [],
|
roles: [],
|
||||||
permissions: []
|
permissions: [],
|
||||||
},
|
},
|
||||||
|
|
||||||
mutations: {
|
mutations: {
|
||||||
SET_TOKEN: (state, token) => {
|
SET_TOKEN: (state, token) => {
|
||||||
state.token = token
|
state.token = token;
|
||||||
},
|
},
|
||||||
SET_ID: (state, id) => {
|
SET_ID: (state, id) => {
|
||||||
state.id = id
|
state.id = id;
|
||||||
},
|
},
|
||||||
SET_NAME: (state, name) => {
|
SET_NAME: (state, name) => {
|
||||||
state.name = name
|
state.name = name;
|
||||||
},
|
},
|
||||||
SET_AVATAR: (state, avatar) => {
|
SET_AVATAR: (state, avatar) => {
|
||||||
state.avatar = avatar
|
state.avatar = avatar;
|
||||||
},
|
},
|
||||||
SET_ROLES: (state, roles) => {
|
SET_ROLES: (state, roles) => {
|
||||||
state.roles = roles
|
state.roles = roles;
|
||||||
},
|
},
|
||||||
SET_PERMISSIONS: (state, permissions) => {
|
SET_PERMISSIONS: (state, permissions) => {
|
||||||
state.permissions = permissions
|
state.permissions = permissions;
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
// 登录
|
// 登录
|
||||||
Login({ commit }, userInfo) {
|
Login({ commit }, userInfo) {
|
||||||
const username = userInfo.username.trim()
|
const username = userInfo.username.trim();
|
||||||
const password = userInfo.password
|
const password = userInfo.password;
|
||||||
const code = userInfo.code
|
const code = userInfo.code;
|
||||||
const uuid = userInfo.uuid
|
const uuid = userInfo.uuid;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
login(username, password, code, uuid).then(res => {
|
login(username, password, code, uuid)
|
||||||
setToken(res.token)
|
.then((res) => {
|
||||||
commit('SET_TOKEN', res.token)
|
setToken(res.token);
|
||||||
resolve()
|
commit("SET_TOKEN", res.token);
|
||||||
}).catch(error => {
|
resolve();
|
||||||
reject(error)
|
})
|
||||||
})
|
.catch((error) => {
|
||||||
})
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
},
|
},
|
||||||
//默认跳转
|
//默认跳转
|
||||||
DefaultLogin({ commit }, userInfo) {
|
DefaultLogin({ commit }, userInfo) {
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
defaultLogin(userInfo.username,userInfo.token).then(res => {
|
defaultLogin(userInfo.username, userInfo.token)
|
||||||
setToken(res.token)
|
.then((res) => {
|
||||||
commit('SET_TOKEN', res.token)
|
setToken(res.token);
|
||||||
resolve()
|
commit("SET_TOKEN", res.token);
|
||||||
}).catch(error => {
|
resolve();
|
||||||
reject(error)
|
})
|
||||||
})
|
.catch((error) => {
|
||||||
})
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取用户信息
|
// 获取用户信息
|
||||||
GetInfo({ commit, state }) {
|
GetInfo({ commit, state }) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
getInfo().then(res => {
|
getInfo()
|
||||||
const user = res.user
|
.then((res) => {
|
||||||
const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
|
const user = res.user;
|
||||||
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
|
const avatar =
|
||||||
commit('SET_ROLES', res.roles)
|
user.avatar == "" || user.avatar == null
|
||||||
commit('SET_PERMISSIONS', res.permissions)
|
? require("@/assets/images/profile.jpg")
|
||||||
} else {
|
: process.env.VUE_APP_BASE_API + user.avatar;
|
||||||
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
if (res.roles && res.roles.length > 0) {
|
||||||
}
|
// 验证返回的roles是否是一个非空数组
|
||||||
commit('SET_ID', user.userId)
|
commit("SET_ROLES", res.roles);
|
||||||
commit('SET_NAME', user.userName)
|
commit("SET_PERMISSIONS", res.permissions);
|
||||||
commit('SET_AVATAR', avatar)
|
} else {
|
||||||
resolve(res)
|
commit("SET_ROLES", ["ROLE_DEFAULT"]);
|
||||||
}).catch(error => {
|
}
|
||||||
reject(error)
|
commit("SET_ID", user.userId);
|
||||||
})
|
commit("SET_NAME", user.userName);
|
||||||
})
|
commit("SET_AVATAR", avatar);
|
||||||
|
resolve(res);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// 退出系统
|
// 退出系统
|
||||||
LogOut({ commit, state }) {
|
LogOut({ commit, state }) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
logout(state.token).then(() => {
|
logout(state.token)
|
||||||
commit('SET_TOKEN', '')
|
.then(() => {
|
||||||
commit('SET_ROLES', [])
|
commit("SET_TOKEN", "");
|
||||||
commit('SET_PERMISSIONS', [])
|
commit("SET_ROLES", []);
|
||||||
removeToken()
|
commit("SET_PERMISSIONS", []);
|
||||||
resolve()
|
removeToken();
|
||||||
}).catch(error => {
|
resolve();
|
||||||
reject(error)
|
})
|
||||||
})
|
.catch((error) => {
|
||||||
})
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// 前端 登出
|
// 前端 登出
|
||||||
FedLogOut({ commit }) {
|
FedLogOut({ commit }) {
|
||||||
return new Promise(resolve => {
|
return new Promise((resolve) => {
|
||||||
commit('SET_TOKEN', '')
|
commit("SET_TOKEN", "");
|
||||||
removeToken()
|
removeToken();
|
||||||
resolve()
|
resolve();
|
||||||
})
|
});
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
|
|
||||||
export default user
|
export default user;
|
||||||
|
|
|
||||||
|
|
@ -1,50 +1,93 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="login">
|
<div class="login">
|
||||||
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
|
<el-form
|
||||||
|
ref="loginForm"
|
||||||
|
:model="loginForm"
|
||||||
|
:rules="loginRules"
|
||||||
|
class="login-form"
|
||||||
|
>
|
||||||
<h3 class="title">领导履职管理系统</h3>
|
<h3 class="title">领导履职管理系统</h3>
|
||||||
<el-form-item prop="username">
|
<el-form-item prop="username">
|
||||||
<el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
|
<el-input
|
||||||
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
|
v-model="loginForm.username"
|
||||||
|
type="text"
|
||||||
|
auto-complete="off"
|
||||||
|
placeholder="账号"
|
||||||
|
>
|
||||||
|
<svg-icon
|
||||||
|
slot="prefix"
|
||||||
|
icon-class="user"
|
||||||
|
class="el-input__icon input-icon"
|
||||||
|
/>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="password">
|
<el-form-item prop="password">
|
||||||
<el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码"
|
<el-input
|
||||||
@keyup.enter.native="handleLogin">
|
v-model="loginForm.password"
|
||||||
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
|
type="password"
|
||||||
|
auto-complete="off"
|
||||||
|
placeholder="密码"
|
||||||
|
@keyup.enter.native="handleLogin"
|
||||||
|
>
|
||||||
|
<svg-icon
|
||||||
|
slot="prefix"
|
||||||
|
icon-class="password"
|
||||||
|
class="el-input__icon input-icon"
|
||||||
|
/>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="code" v-if="captchaEnabled">
|
<el-form-item prop="code" v-if="captchaEnabled">
|
||||||
<el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%"
|
<el-input
|
||||||
@keyup.enter.native="handleLogin">
|
v-model="loginForm.code"
|
||||||
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
|
auto-complete="off"
|
||||||
|
placeholder="验证码"
|
||||||
|
style="width: 63%"
|
||||||
|
@keyup.enter.native="handleLogin"
|
||||||
|
>
|
||||||
|
<svg-icon
|
||||||
|
slot="prefix"
|
||||||
|
icon-class="validCode"
|
||||||
|
class="el-input__icon input-icon"
|
||||||
|
/>
|
||||||
</el-input>
|
</el-input>
|
||||||
<div class="login-code">
|
<div class="login-code">
|
||||||
<img :src="codeUrl" @click="getCode" class="login-code-img" />
|
<img :src="codeUrl" @click="getCode" class="login-code-img" />
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
|
<el-checkbox
|
||||||
<el-form-item style="width:100%;">
|
v-model="loginForm.rememberMe"
|
||||||
<el-button :loading="loading" size="medium" type="primary" style="width:100%;"
|
style="margin: 0px 0px 25px 0px"
|
||||||
@click.native.prevent="handleLogin">
|
>记住密码</el-checkbox
|
||||||
|
>
|
||||||
|
<el-form-item style="width: 100%">
|
||||||
|
<el-button
|
||||||
|
:loading="loading"
|
||||||
|
size="medium"
|
||||||
|
type="primary"
|
||||||
|
style="width: 100%"
|
||||||
|
@click.native.prevent="handleLogin"
|
||||||
|
>
|
||||||
<span v-if="!loading">登 录</span>
|
<span v-if="!loading">登 录</span>
|
||||||
<span v-else>登 录 中...</span>
|
<span v-else>登 录 中...</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
<div style="float: right;" v-if="register">
|
<div style="float: right" v-if="register">
|
||||||
<router-link class="link-type" :to="'/register'">立即注册</router-link>
|
<router-link class="link-type" :to="'/register'"
|
||||||
|
>立即注册</router-link
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<!-- 底部 -->
|
<!-- 底部 -->
|
||||||
<!-- <div class="el-login-footer">-->
|
<!-- <div class="el-login-footer">-->
|
||||||
<!-- <span>Copyright © 2018-2023 ldlz.vip All Rights Reserved.</span>-->
|
<!-- <span>Copyright © 2018-2023 ldlz.vip All Rights Reserved.</span>-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getCodeImg } from "@/api/login";
|
import { getCodeImg } from "@/api/login";
|
||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import { encrypt, decrypt } from '@/utils/jsencrypt'
|
import { encrypt, decrypt } from "@/utils/jsencrypt";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Login",
|
name: "Login",
|
||||||
|
|
@ -56,23 +99,23 @@ export default {
|
||||||
password: "",
|
password: "",
|
||||||
rememberMe: false,
|
rememberMe: false,
|
||||||
code: "",
|
code: "",
|
||||||
uuid: ""
|
uuid: "",
|
||||||
},
|
},
|
||||||
loginRules: {
|
loginRules: {
|
||||||
username: [
|
username: [
|
||||||
{ required: true, trigger: "blur", message: "请输入您的账号" }
|
{ required: true, trigger: "blur", message: "请输入您的账号" },
|
||||||
],
|
],
|
||||||
password: [
|
password: [
|
||||||
{ required: true, trigger: "blur", message: "请输入您的密码" }
|
{ required: true, trigger: "blur", message: "请输入您的密码" },
|
||||||
],
|
],
|
||||||
code: [{ required: true, trigger: "change", message: "请输入验证码" }]
|
code: [{ required: true, trigger: "change", message: "请输入验证码" }],
|
||||||
},
|
},
|
||||||
loading: false,
|
loading: false,
|
||||||
// 验证码开关
|
// 验证码开关
|
||||||
captchaEnabled: true,
|
captchaEnabled: true,
|
||||||
// 注册开关
|
// 注册开关
|
||||||
register: false,
|
register: false,
|
||||||
redirect: undefined
|
redirect: undefined,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|
@ -80,8 +123,8 @@ export default {
|
||||||
handler: function (route) {
|
handler: function (route) {
|
||||||
this.redirect = route.query && route.query.redirect;
|
this.redirect = route.query && route.query.redirect;
|
||||||
},
|
},
|
||||||
immediate: true
|
immediate: true,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getCode();
|
this.getCode();
|
||||||
|
|
@ -89,8 +132,9 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getCode() {
|
getCode() {
|
||||||
getCodeImg().then(res => {
|
getCodeImg().then((res) => {
|
||||||
this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
|
this.captchaEnabled =
|
||||||
|
res.captchaEnabled === undefined ? true : res.captchaEnabled;
|
||||||
if (this.captchaEnabled) {
|
if (this.captchaEnabled) {
|
||||||
this.codeUrl = "data:image/gif;base64," + res.img;
|
this.codeUrl = "data:image/gif;base64," + res.img;
|
||||||
this.loginForm.uuid = res.uuid;
|
this.loginForm.uuid = res.uuid;
|
||||||
|
|
@ -100,38 +144,48 @@ export default {
|
||||||
getCookie() {
|
getCookie() {
|
||||||
const username = Cookies.get("username");
|
const username = Cookies.get("username");
|
||||||
const password = Cookies.get("password");
|
const password = Cookies.get("password");
|
||||||
const rememberMe = Cookies.get('rememberMe')
|
const rememberMe = Cookies.get("rememberMe");
|
||||||
this.loginForm = {
|
this.loginForm = {
|
||||||
username: username === undefined ? this.loginForm.username : username,
|
username: username === undefined ? this.loginForm.username : username,
|
||||||
password: password === undefined ? this.loginForm.password : decrypt(password),
|
password:
|
||||||
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
|
password === undefined ? this.loginForm.password : decrypt(password),
|
||||||
|
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
handleLogin() {
|
handleLogin() {
|
||||||
this.$refs.loginForm.validate(valid => {
|
this.$refs.loginForm.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
if (this.loginForm.rememberMe) {
|
if (this.loginForm.rememberMe) {
|
||||||
Cookies.set("username", this.loginForm.username, { expires: 30 });
|
Cookies.set("username", this.loginForm.username, { expires: 30 });
|
||||||
Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
|
Cookies.set("password", encrypt(this.loginForm.password), {
|
||||||
Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
|
expires: 30,
|
||||||
|
});
|
||||||
|
Cookies.set("rememberMe", this.loginForm.rememberMe, {
|
||||||
|
expires: 30,
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
Cookies.remove("username");
|
Cookies.remove("username");
|
||||||
Cookies.remove("password");
|
Cookies.remove("password");
|
||||||
Cookies.remove('rememberMe');
|
Cookies.remove("rememberMe");
|
||||||
}
|
}
|
||||||
this.$store.dispatch("Login", this.loginForm).then(() => {
|
this.$store
|
||||||
this.$router.push({ path: this.redirect || "/" }).catch(() => { });
|
.dispatch("Login", this.loginForm)
|
||||||
}).catch(() => {
|
.then(() => {
|
||||||
this.loading = false;
|
// 如果从登录页面进入,则不隐藏侧边栏以及头部导航栏
|
||||||
if (this.captchaEnabled) {
|
this.$store.commit("app/SET_SIDEBAR_EMBEDDED", false);
|
||||||
this.getCode();
|
this.$router.push({ path: this.redirect || "/" }).catch(() => {});
|
||||||
}
|
})
|
||||||
});
|
.catch(() => {
|
||||||
|
this.loading = false;
|
||||||
|
if (this.captchaEnabled) {
|
||||||
|
this.getCode();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
@ -144,7 +198,7 @@ export default {
|
||||||
background-image: url("../assets/images/login-background.jpg");
|
background-image: url("../assets/images/login-background.jpg");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: bottom;
|
background-position: bottom;
|
||||||
background-color: #F2F2F2;
|
background-color: #f2f2f2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
|
|
|
||||||
|
|
@ -1,199 +1,196 @@
|
||||||
<template>
|
<template>
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<div id="loader-wrapper">
|
<div id="loader-wrapper">
|
||||||
<div id="loader"></div>
|
<div id="loader"></div>
|
||||||
<div class="loader-section section-left"></div>
|
<div class="loader-section section-left"></div>
|
||||||
<div class="loader-section section-right"></div>
|
<div class="loader-section section-right"></div>
|
||||||
<div class="load_title">正在加载系统资源,请耐心等待</div>
|
<div class="load_title">正在加载系统资源,请耐心等待</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<style>
|
<style>
|
||||||
html,
|
html,
|
||||||
body,
|
body,
|
||||||
#app {
|
#app {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
.chromeframe {
|
.chromeframe {
|
||||||
margin: 0.2em 0;
|
margin: 0.2em 0;
|
||||||
background: #ccc;
|
background: #ccc;
|
||||||
color: #000;
|
color: #000;
|
||||||
padding: 0.2em 0;
|
padding: 0.2em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#loader-wrapper {
|
#loader-wrapper {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
z-index: 999999;
|
z-index: 999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
#loader {
|
#loader {
|
||||||
display: block;
|
display: block;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
width: 150px;
|
width: 150px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
margin: -75px 0 0 -75px;
|
margin: -75px 0 0 -75px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
border: 3px solid transparent;
|
border: 3px solid transparent;
|
||||||
border-top-color: #FFF;
|
border-top-color: #fff;
|
||||||
-webkit-animation: spin 2s linear infinite;
|
-webkit-animation: spin 2s linear infinite;
|
||||||
-ms-animation: spin 2s linear infinite;
|
-ms-animation: spin 2s linear infinite;
|
||||||
-moz-animation: spin 2s linear infinite;
|
-moz-animation: spin 2s linear infinite;
|
||||||
-o-animation: spin 2s linear infinite;
|
-o-animation: spin 2s linear infinite;
|
||||||
animation: spin 2s linear infinite;
|
animation: spin 2s linear infinite;
|
||||||
z-index: 1001;
|
z-index: 1001;
|
||||||
}
|
}
|
||||||
|
|
||||||
#loader:before {
|
#loader:before {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 5px;
|
top: 5px;
|
||||||
left: 5px;
|
left: 5px;
|
||||||
right: 5px;
|
right: 5px;
|
||||||
bottom: 5px;
|
bottom: 5px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
border: 3px solid transparent;
|
border: 3px solid transparent;
|
||||||
border-top-color: #FFF;
|
border-top-color: #fff;
|
||||||
-webkit-animation: spin 3s linear infinite;
|
-webkit-animation: spin 3s linear infinite;
|
||||||
-moz-animation: spin 3s linear infinite;
|
-moz-animation: spin 3s linear infinite;
|
||||||
-o-animation: spin 3s linear infinite;
|
-o-animation: spin 3s linear infinite;
|
||||||
-ms-animation: spin 3s linear infinite;
|
-ms-animation: spin 3s linear infinite;
|
||||||
animation: spin 3s linear infinite;
|
animation: spin 3s linear infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
#loader:after {
|
#loader:after {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 15px;
|
top: 15px;
|
||||||
left: 15px;
|
left: 15px;
|
||||||
right: 15px;
|
right: 15px;
|
||||||
bottom: 15px;
|
bottom: 15px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
border: 3px solid transparent;
|
border: 3px solid transparent;
|
||||||
border-top-color: #FFF;
|
border-top-color: #fff;
|
||||||
-moz-animation: spin 1.5s linear infinite;
|
-moz-animation: spin 1.5s linear infinite;
|
||||||
-o-animation: spin 1.5s linear infinite;
|
-o-animation: spin 1.5s linear infinite;
|
||||||
-ms-animation: spin 1.5s linear infinite;
|
-ms-animation: spin 1.5s linear infinite;
|
||||||
-webkit-animation: spin 1.5s linear infinite;
|
-webkit-animation: spin 1.5s linear infinite;
|
||||||
animation: spin 1.5s linear infinite;
|
animation: spin 1.5s linear infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
-ms-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
-ms-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@-webkit-keyframes spin {
|
@keyframes spin {
|
||||||
0% {
|
0% {
|
||||||
-webkit-transform: rotate(0deg);
|
-webkit-transform: rotate(0deg);
|
||||||
-ms-transform: rotate(0deg);
|
-ms-transform: rotate(0deg);
|
||||||
transform: rotate(0deg);
|
transform: rotate(0deg);
|
||||||
}
|
}
|
||||||
100% {
|
100% {
|
||||||
-webkit-transform: rotate(360deg);
|
-webkit-transform: rotate(360deg);
|
||||||
-ms-transform: rotate(360deg);
|
-ms-transform: rotate(360deg);
|
||||||
transform: rotate(360deg);
|
transform: rotate(360deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes spin {
|
#loader-wrapper .loader-section {
|
||||||
0% {
|
position: fixed;
|
||||||
-webkit-transform: rotate(0deg);
|
top: 0;
|
||||||
-ms-transform: rotate(0deg);
|
width: 51%;
|
||||||
transform: rotate(0deg);
|
height: 100%;
|
||||||
}
|
background: #009688;
|
||||||
100% {
|
z-index: 1000;
|
||||||
-webkit-transform: rotate(360deg);
|
-webkit-transform: translateX(0);
|
||||||
-ms-transform: rotate(360deg);
|
-ms-transform: translateX(0);
|
||||||
transform: rotate(360deg);
|
transform: translateX(0);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
#loader-wrapper .loader-section.section-left {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#loader-wrapper .loader-section {
|
#loader-wrapper .loader-section.section-right {
|
||||||
position: fixed;
|
right: 0;
|
||||||
top: 0;
|
}
|
||||||
width: 51%;
|
|
||||||
height: 100%;
|
|
||||||
background: #009688;
|
|
||||||
z-index: 1000;
|
|
||||||
-webkit-transform: translateX(0);
|
|
||||||
-ms-transform: translateX(0);
|
|
||||||
transform: translateX(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#loader-wrapper .loader-section.section-left {
|
.loaded #loader-wrapper .loader-section.section-left {
|
||||||
left: 0;
|
-webkit-transform: translateX(-100%);
|
||||||
}
|
-ms-transform: translateX(-100%);
|
||||||
|
transform: translateX(-100%);
|
||||||
|
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
||||||
|
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
||||||
|
}
|
||||||
|
|
||||||
#loader-wrapper .loader-section.section-right {
|
.loaded #loader-wrapper .loader-section.section-right {
|
||||||
right: 0;
|
-webkit-transform: translateX(100%);
|
||||||
}
|
-ms-transform: translateX(100%);
|
||||||
|
transform: translateX(100%);
|
||||||
|
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
||||||
|
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.loaded #loader {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transition: all 0.3s ease-out;
|
||||||
|
transition: all 0.3s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
.loaded #loader-wrapper .loader-section.section-left {
|
.loaded #loader-wrapper {
|
||||||
-webkit-transform: translateX(-100%);
|
visibility: hidden;
|
||||||
-ms-transform: translateX(-100%);
|
-webkit-transform: translateY(-100%);
|
||||||
transform: translateX(-100%);
|
-ms-transform: translateY(-100%);
|
||||||
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
transform: translateY(-100%);
|
||||||
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
-webkit-transition: all 0.3s 1s ease-out;
|
||||||
}
|
transition: all 0.3s 1s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
.loaded #loader-wrapper .loader-section.section-right {
|
.no-js #loader-wrapper {
|
||||||
-webkit-transform: translateX(100%);
|
display: none;
|
||||||
-ms-transform: translateX(100%);
|
}
|
||||||
transform: translateX(100%);
|
|
||||||
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
|
||||||
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
|
||||||
}
|
|
||||||
|
|
||||||
.loaded #loader {
|
.no-js h1 {
|
||||||
opacity: 0;
|
color: #222222;
|
||||||
-webkit-transition: all 0.3s ease-out;
|
}
|
||||||
transition: all 0.3s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loaded #loader-wrapper {
|
#loader-wrapper .load_title {
|
||||||
visibility: hidden;
|
font-family: "Open Sans";
|
||||||
-webkit-transform: translateY(-100%);
|
color: #fff;
|
||||||
-ms-transform: translateY(-100%);
|
font-size: 19px;
|
||||||
transform: translateY(-100%);
|
width: 100%;
|
||||||
-webkit-transition: all 0.3s 1s ease-out;
|
text-align: center;
|
||||||
transition: all 0.3s 1s ease-out;
|
z-index: 9999999999999;
|
||||||
}
|
position: absolute;
|
||||||
|
top: 60%;
|
||||||
|
opacity: 1;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
.no-js #loader-wrapper {
|
#loader-wrapper .load_title span {
|
||||||
display: none;
|
font-weight: normal;
|
||||||
}
|
font-style: italic;
|
||||||
|
font-size: 13px;
|
||||||
.no-js h1 {
|
color: #fff;
|
||||||
color: #222222;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
</style>
|
||||||
#loader-wrapper .load_title {
|
|
||||||
font-family: 'Open Sans';
|
|
||||||
color: #FFF;
|
|
||||||
font-size: 19px;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
z-index: 9999999999999;
|
|
||||||
position: absolute;
|
|
||||||
top: 60%;
|
|
||||||
opacity: 1;
|
|
||||||
line-height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#loader-wrapper .load_title span {
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: italic;
|
|
||||||
font-size: 13px;
|
|
||||||
color: #FFF;
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script>
|
<script>
|
||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
export default {
|
export default {
|
||||||
|
|
@ -209,7 +206,6 @@ export default {
|
||||||
uuid: "",
|
uuid: "",
|
||||||
},
|
},
|
||||||
loading: false,
|
loading: false,
|
||||||
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|
@ -219,13 +215,16 @@ export default {
|
||||||
},
|
},
|
||||||
immediate: true,
|
immediate: true,
|
||||||
},
|
},
|
||||||
},beforeRouteEnter (to, from, next) {
|
},
|
||||||
console.log('从 ' + from.path + ' 进入ywgllogin');
|
beforeRouteEnter(to, from, next) {
|
||||||
|
console.log("从 " + from.path + " 进入ywgllogin");
|
||||||
next(); // 必须调用next()来解决路由守卫的promise
|
next(); // 必须调用next()来解决路由守卫的promise
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
//平台单独的登录 2024年4月16日11:23:58
|
//平台单独的登录 2024年4月16日11:23:58
|
||||||
this.getLoginByNameAndTokenJ();
|
this.getLoginByNameAndTokenJ();
|
||||||
|
// 如果从该页面进入,则不隐藏侧边栏以及头部导航栏
|
||||||
|
this.$store.commit("SET_SIDEBAR_EMBEDDED", false);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/**
|
/**
|
||||||
|
|
@ -233,54 +232,56 @@ export default {
|
||||||
*/
|
*/
|
||||||
getLoginByNameAndTokenJ() {
|
getLoginByNameAndTokenJ() {
|
||||||
console.log(window.location.href);
|
console.log(window.location.href);
|
||||||
let url=window.location.href.split("?");
|
let url = window.location.href.split("?");
|
||||||
let tokens='';
|
let tokens = "";
|
||||||
let username='';
|
let username = "";
|
||||||
if(url.length>1){
|
if (url.length > 1) {
|
||||||
let params=url[1].split("#");
|
let params = url[1].split("#");
|
||||||
if(params.length>0){
|
if (params.length > 0) {
|
||||||
params=params[0].split("&");
|
params = params[0].split("&");
|
||||||
if(params.length>1){
|
if (params.length > 1) {
|
||||||
tokens=params[1]
|
tokens = params[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if(!tokens){
|
// if(!tokens){
|
||||||
// tokens = this.$route.query.token;
|
// tokens = this.$route.query.token;
|
||||||
// username=this.$route.query.username;
|
// username=this.$route.query.username;
|
||||||
// }
|
// }
|
||||||
tokens = this.$route.query.token;
|
tokens = this.$route.query.token;
|
||||||
username=this.$route.query.username;
|
username = this.$route.query.username;
|
||||||
console.log(tokens);
|
console.log(tokens);
|
||||||
console.log(username)
|
console.log(username);
|
||||||
username='bnsAdmin'
|
username = "bnsAdmin";
|
||||||
//调用登录的接口
|
//调用登录的接口
|
||||||
if (username) {
|
if (username) {
|
||||||
debugger
|
debugger;
|
||||||
//转圈圈,不要看到登陆页面,无感体验
|
//转圈圈,不要看到登陆页面,无感体验
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
let loginForm = {
|
let loginForm = {
|
||||||
token:tokens,
|
token: tokens,
|
||||||
username:username
|
username: username,
|
||||||
};
|
};
|
||||||
console.log(loginForm);
|
console.log(loginForm);
|
||||||
console.log("开始登录..")
|
console.log("开始登录..");
|
||||||
//执行另一套登录操作
|
//执行另一套登录操作
|
||||||
this.$store.dispatch("DefaultLogin", loginForm).then(() => {
|
this.$store
|
||||||
this.$router.push({ path: this.redirect || "/" }).catch(() => { });
|
.dispatch("DefaultLogin", loginForm)
|
||||||
}).catch(() => {
|
.then(() => {
|
||||||
window.location.href = 'http://20.56.230.91:10080/bonus_cloud_web/login.html';
|
this.$router.push({ path: this.redirect || "/" }).catch(() => {});
|
||||||
});
|
})
|
||||||
// this.$message.error("用户token为空");
|
.catch(() => {
|
||||||
|
window.location.href =
|
||||||
|
"http://20.56.230.91:10080/bonus_cloud_web/login.html";
|
||||||
|
});
|
||||||
|
// this.$message.error("用户token为空");
|
||||||
} else {
|
} else {
|
||||||
//本地环境
|
//本地环境
|
||||||
window.location.href = 'http://20.56.230.91:10080/bonus_cloud_web/login.html';
|
window.location.href =
|
||||||
// console.log("tick为空..")
|
"http://20.56.230.91:10080/bonus_cloud_web/login.html";
|
||||||
|
// console.log("tick为空..")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue