登录新增类型

This commit is contained in:
gyq 2024-07-30 16:00:08 +08:00
parent d8b9d01aa7
commit 5d3fdd5acf
3 changed files with 127 additions and 101 deletions

View File

@ -1,35 +1,30 @@
import request from '@/utils/request'
import request from "@/utils/request";
export function login(username, password, code, uuid) {
export function login(data) {
return request({
url: 'auth/login',
method: 'post',
data: {
username,
password,
code,
uuid
}
})
url: "auth/login",
method: "post",
data
});
}
export function getInfo() {
return request({
url: 'auth/info',
method: 'get'
})
url: "auth/info",
method: "get"
});
}
export function getCodeImg(header) {
return request({
url: 'auth/code',
method: 'get'
})
url: "auth/code",
method: "get"
});
}
export function logout() {
return request({
url: 'auth/logout',
method: 'delete'
})
url: "auth/logout",
method: "delete"
});
}

View File

@ -1,5 +1,5 @@
import { login, getInfo, logout } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { login, getInfo, logout } from "@/api/login";
import { getToken, setToken, removeToken } from "@/utils/auth";
const user = {
state: {
@ -13,91 +13,97 @@ const user = {
mutations: {
// 是否为手动退出登录
SD_LOGOUT: (state, f) => {
state.sdLogout = f
state.sdLogout = f;
},
SET_TOKEN: (state, token) => {
state.token = token
state.token = token;
},
SET_USER: (state, user) => {
state.user = user
state.user = user;
},
SET_ROLES: (state, roles) => {
state.roles = roles
state.roles = roles;
},
SET_LOAD_MENUS: (state, loadMenus) => {
state.loadMenus = loadMenus
state.loadMenus = loadMenus;
}
},
actions: {
// 登录
Login({ commit }, userInfo) {
const rememberMe = userInfo.rememberMe
const rememberMe = userInfo.rememberMe;
return new Promise((resolve, reject) => {
login(userInfo.username, userInfo.password, userInfo.code, userInfo.uuid).then(res => {
// console.log('登录成功后返回===', res)
localStorage.setItem('logoutHandle', false)
localStorage.setItem('shopId', res.shopId)
localStorage.setItem('shopName', res.shopName)
localStorage.setItem('logo', res.logo)
setToken(res.token, rememberMe)
commit('SET_TOKEN', res.token)
setUserInfo(res.user, commit)
// 第一次加载菜单时用到, 具体见 src 目录下的 permission.js
commit('SET_LOAD_MENUS', true)
resolve()
}).catch(error => {
reject(error)
})
})
login(userInfo)
.then(res => {
// console.log('登录成功后返回===', res)
localStorage.setItem("logoutHandle", false);
localStorage.setItem("shopId", res.shopId);
localStorage.setItem("shopName", res.shopName);
localStorage.setItem("logo", res.logo);
setToken(res.token, rememberMe);
commit("SET_TOKEN", res.token);
setUserInfo(res.user, commit);
// 第一次加载菜单时用到, 具体见 src 目录下的 permission.js
commit("SET_LOAD_MENUS", true);
resolve();
})
.catch(error => {
reject(error);
});
});
},
// 获取用户信息
GetInfo({ commit }) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
setUserInfo(res, commit)
resolve(res)
}).catch(error => {
reject(error)
})
})
getInfo()
.then(res => {
setUserInfo(res, commit);
resolve(res);
})
.catch(error => {
reject(error);
});
});
},
// 登出
LogOut({ commit }) {
return new Promise((resolve, reject) => {
logout().then(res => {
logOut(commit)
resolve()
}).catch(error => {
logOut(commit)
reject(error)
})
})
logout()
.then(res => {
logOut(commit);
resolve();
})
.catch(error => {
logOut(commit);
reject(error);
});
});
},
updateLoadMenus({ commit }) {
return new Promise((resolve, reject) => {
commit('SET_LOAD_MENUS', false)
})
commit("SET_LOAD_MENUS", false);
});
}
}
}
};
export const logOut = (commit) => {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
removeToken()
}
export const logOut = commit => {
commit("SET_TOKEN", "");
commit("SET_ROLES", []);
removeToken();
};
export const setUserInfo = (res, commit) => {
// 如果没有任何权限,则赋予一个默认的权限,避免请求死循环
if (res.roles.length === 0) {
commit('SET_ROLES', ['ROLE_SYSTEM_DEFAULT'])
commit("SET_ROLES", ["ROLE_SYSTEM_DEFAULT"]);
} else {
commit('SET_ROLES', res.roles)
commit("SET_ROLES", res.roles);
}
commit('SET_USER', res.user)
}
commit("SET_USER", res.user);
};
export default user
export default user;

View File

@ -5,6 +5,17 @@
<h3 class="title">
银收客后台管理
</h3>
<el-form-item>
<el-radio-group v-model="loginForm.loginType">
<el-radio-button label="merchant">商户</el-radio-button>
<el-radio-button label="staff">员工</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item prop="merchantName" v-if="loginForm.loginType == 'staff'">
<el-input v-model="loginForm.merchantName" type="text" auto-complete="off" placeholder="商户号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="username">
<el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
@ -27,9 +38,11 @@
</div>
</div>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0 0 25px 0;">
记住我
</el-checkbox>
<!-- <el-form-item>
<el-checkbox v-model="loginForm.rememberMe">
记住我
</el-checkbox>
</el-form-item> -->
<el-form-item style="width:100%;">
<el-button :loading="loading" size="medium" type="primary" style="width:100%;"
@click.native.prevent="handleLogin">
@ -66,12 +79,15 @@ export default {
password: '',
rememberMe: false,
code: '',
uuid: ''
uuid: '',
merchantName: '',
loginType: 'merchant'
},
loginRules: {
username: [{ required: true, trigger: 'blur', message: '用户名不能为空' }],
password: [{ required: true, trigger: 'blur', message: '密码不能为空' }],
code: [{ required: true, trigger: 'change', message: '验证码不能为空' }]
code: [{ required: true, trigger: 'change', message: '验证码不能为空' }],
merchantName: [{ required: true, trigger: 'change', message: '商户号不能为空' }]
},
loading: false,
redirect: undefined
@ -95,10 +111,10 @@ export default {
created() {
//
this.getCode()
// Cookie
this.getCookie()
// token
this.point()
// // Cookie
// this.getCookie()
// // token
// this.point()
},
methods: {
getCode() {
@ -119,32 +135,39 @@ export default {
username: username === undefined ? this.loginForm.username : username,
password: password,
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
code: ''
code: '',
merchantName: '',
loginType: 'merchant'
}
},
handleLogin() {
this.$refs.loginForm.validate(valid => {
const user = {
username: this.loginForm.username,
password: this.loginForm.password,
rememberMe: this.loginForm.rememberMe,
code: this.loginForm.code,
uuid: this.loginForm.uuid
}
if (user.password !== this.cookiePass) {
user.password = encrypt(user.password)
}
// const user = {
// username: this.loginForm.username,
// password: this.loginForm.password,
// rememberMe: this.loginForm.rememberMe,
// code: this.loginForm.code,
// uuid: this.loginForm.uuid,
// merchantName: this.loginForm.merchantName,
// loginType: this.loginForm.loginType
// }
// if (user.password !== this.cookiePass) {
// user.password = encrypt(user.password)
// }
if (valid) {
this.loading = true
if (user.rememberMe) {
Cookies.set('username', user.username, { expires: Config.passCookieExpires })
Cookies.set('password', user.password, { expires: Config.passCookieExpires })
Cookies.set('rememberMe', user.rememberMe, { expires: Config.passCookieExpires })
} else {
Cookies.remove('username')
Cookies.remove('password')
Cookies.remove('rememberMe')
}
// if (user.rememberMe) {
// Cookies.set('username', user.username, { expires: Config.passCookieExpires })
// Cookies.set('password', user.password, { expires: Config.passCookieExpires })
// Cookies.set('rememberMe', user.rememberMe, { expires: Config.passCookieExpires })
// } else {
// Cookies.remove('username')
// Cookies.remove('password')
// Cookies.remove('rememberMe')
// }
// console.log(user);
const user = { ...this.loginForm }
user.password = encrypt(user.password)
this.$store.dispatch('Login', user).then(() => {
this.loading = false
this.$router.push({ path: this.redirect || '/' })
@ -217,10 +240,12 @@ export default {
text-align: center;
color: #bfbfbf;
}
.code_wrap {
display: flex;
justify-content: space-between;
}
.login-code {
width: 33%;
display: inline-block;