xw_admin/src/views/login/components/passwordForm.vue
2024-11-14 22:20:02 +08:00

120 lines
3.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-form ref="loginForm" :model="form" :rules="rules" label-width="0" size="large" @keyup.enter="login">
<el-form-item prop="user">
<el-input v-model="form.user" prefix-icon="el-icon-user" clearable :placeholder="$t('login.userPlaceholder')"></el-input>
</el-form-item>
<el-form-item prop="password">
<el-input v-model="form.password" prefix-icon="el-icon-lock" clearable show-password :placeholder="$t('login.PWPlaceholder')"></el-input>
</el-form-item>
<el-form-item style="margin-bottom: 10px;">
<!-- <el-col :span="12">-->
<!-- <el-checkbox :label="$t('login.rememberMe')" v-model="form.autologin"></el-checkbox>-->
<!-- </el-col>-->
<el-col :span="24" class="login-forgot">
<router-link to="/reset_password">{{ $t('login.forgetPassword') }}</router-link>
</el-col>
</el-form-item>
<el-form-item>
<el-button type="primary" style="width: 100%;" :loading="islogin" @click="login">{{ $t('login.signIn')}}</el-button>
</el-form-item>
<div class="login-reg">
{{$t('login.noAccount')}} <router-link to="/user_register">{{$t('login.createAccount')}}</router-link>
</div>
</el-form>
</template>
<script>
export default {
data() {
return {
form: {
user: "",
password: "",
autologin: false
},
rules: {
user: [
{ required: true, message: this.$t('login.userError'), trigger: 'blur' }
],
password: [
{ required: true, message: this.$t('login.PWError'), trigger: 'blur' }
]
},
islogin: false,
}
},
watch: {
},
mounted() {
},
methods: {
async login() {
const validate = await this.$refs.loginForm.validate().catch(() => {});
if (!validate) { return false }
this.islogin = true
const data = {
login_name: this.form.user,
password: this.form.password
};
//获取token
const user = await this.$API.auth.token.post(data);
if (user.code == 200) {
this.$TOOL.cookie.set("TOKEN", user.data.token, {
expires: this.form.autologin ? 24 * 60 * 60 : 0
})
this.$TOOL.data.set("USER_INFO", user.data.user)
if(user.data.user.avatar!=''){
this.$store.commit("SET_LOGIN_AVATAR", user.data.user.avatar);
}
this.$store.commit("SET_LOGIN_NAME", user.data.user.name);
} else {
this.islogin = false
return false
}
if(user.data.user.company_id === 0){
// // 登录成功连接ws
// let global_callback = function () {};
// this.$socketApi.createWebSocket(global_callback);
this.$router.replace({
path: '/maintenance'
})
this.islogin = false
return
}
//获取菜单
const menu = await this.$API.system.menu.myMenus.get();
if (menu.code == 200) {
if (menu.data.menu.length == 0) {
this.islogin = false
await this.$alert("当前用户无任何菜单权限,请联系系统管理员", "无权限访问", {
type: 'error',
center: true
})
return false
}
this.$TOOL.data.set("MENU", menu.data.menu)
const data_auth = this.$TOOL.objCopy(menu.data.permissions);
data_auth.auth = this.$TOOL.authPermissions(data_auth.data_permissions);
this.$TOOL.data.set("PERMISSIONS", data_auth)
this.$TOOL.data.set("DASHBOARDGRID", menu.data.dashboardGrid)
} else {
this.islogin = false
this.$message.warning(menu.message)
return false
}
this.$router.replace({
path: '/'
})
this.islogin = false
},
}
}
</script>
<style>
</style>