2020-12-27 14:55:27 +08:00
|
|
|
|
<template>
|
|
|
|
|
<el-form class="login-content-form">
|
|
|
|
|
<el-form-item>
|
2021-01-27 17:54:58 +08:00
|
|
|
|
<el-input type="text" placeholder="用户名 admin 或不输均为 test" prefix-icon="el-icon-user" v-model="ruleForm.userName"
|
2020-12-27 14:55:27 +08:00
|
|
|
|
clearable autocomplete="off">
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
2021-01-31 02:13:22 +08:00
|
|
|
|
<el-input type="password" placeholder="密码:123456" prefix-icon="el-icon-lock" v-model="ruleForm.password"
|
|
|
|
|
autocomplete="off" show-password>
|
2020-12-27 14:55:27 +08:00
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-row :gutter="15">
|
|
|
|
|
<el-col :span="16">
|
|
|
|
|
<el-input type="text" maxlength="4" placeholder="请输入验证码" prefix-icon="el-icon-position"
|
|
|
|
|
v-model="ruleForm.code" clearable autocomplete="off"></el-input>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<div class="login-content-code">
|
|
|
|
|
<span class="login-content-code-img">1234</span>
|
|
|
|
|
</div>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
2021-01-27 17:54:58 +08:00
|
|
|
|
<el-button type="primary" class="login-content-submit" round @click="onSignIn">
|
2020-12-27 14:55:27 +08:00
|
|
|
|
<span>登 录</span>
|
|
|
|
|
</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script lang="ts">
|
2021-01-27 17:54:58 +08:00
|
|
|
|
import { toRefs, reactive, defineComponent, computed } from "vue";
|
|
|
|
|
import { useRouter } from "vue-router";
|
|
|
|
|
import { ElMessage } from "element-plus";
|
|
|
|
|
import {
|
|
|
|
|
setAddRoute,
|
|
|
|
|
setFilterMenu,
|
|
|
|
|
setCacheTagsViewRoutes,
|
2021-02-25 00:42:24 +08:00
|
|
|
|
getBackEndControlRoutes,
|
2021-02-27 18:35:04 +08:00
|
|
|
|
setBackEndControlRoutesFun,
|
2021-01-27 17:54:58 +08:00
|
|
|
|
} from "/@/router/index.ts";
|
|
|
|
|
import { useStore } from "/@/store/index.ts";
|
|
|
|
|
import { setSession } from "/@/utils/storage.ts";
|
|
|
|
|
import { formatAxis } from "/@/utils/formatTime";
|
2021-02-25 18:45:27 +08:00
|
|
|
|
|
|
|
|
|
import themeConfig from "/@/utils/themeConfig.ts";
|
2020-12-27 14:55:27 +08:00
|
|
|
|
export default defineComponent({
|
|
|
|
|
name: "login",
|
|
|
|
|
setup() {
|
2021-01-27 17:54:58 +08:00
|
|
|
|
const store = useStore();
|
|
|
|
|
const router = useRouter();
|
2020-12-27 14:55:27 +08:00
|
|
|
|
const state = reactive({
|
|
|
|
|
ruleForm: {
|
2021-01-27 17:54:58 +08:00
|
|
|
|
userName: "admin",
|
|
|
|
|
password: "123456",
|
|
|
|
|
code: "1234",
|
2020-12-27 14:55:27 +08:00
|
|
|
|
},
|
|
|
|
|
});
|
2021-01-27 17:54:58 +08:00
|
|
|
|
// 时间获取
|
|
|
|
|
const currentTime = computed(() => {
|
|
|
|
|
return formatAxis(new Date());
|
|
|
|
|
});
|
|
|
|
|
// 重新执行添加动态路由、过滤权限菜单、缓存等方法
|
|
|
|
|
const initAllFun = () => {
|
|
|
|
|
setAddRoute();
|
|
|
|
|
setFilterMenu();
|
|
|
|
|
setCacheTagsViewRoutes();
|
|
|
|
|
};
|
|
|
|
|
// 登录
|
|
|
|
|
const onSignIn = () => {
|
2021-02-05 01:15:37 +08:00
|
|
|
|
let defaultAuthPageList: Array<string> = [];
|
|
|
|
|
let defaultAuthBtnList: Array<string> = [];
|
|
|
|
|
// admin 页面权限标识,对应路由 meta.auth
|
|
|
|
|
let adminAuthPageList: Array<string> = ["admin"];
|
|
|
|
|
// admin 按钮权限标识
|
|
|
|
|
let adminAuthBtnList: Array<string> = [
|
2021-01-27 17:54:58 +08:00
|
|
|
|
"btn.add",
|
|
|
|
|
"btn.del",
|
|
|
|
|
"btn.edit",
|
2021-02-04 18:13:03 +08:00
|
|
|
|
"btn.link",
|
2021-01-27 17:54:58 +08:00
|
|
|
|
];
|
2021-02-05 01:15:37 +08:00
|
|
|
|
// test 页面权限标识,对应路由 meta.auth
|
|
|
|
|
let testAuthPageList: Array<string> = ["test"];
|
|
|
|
|
// test 按钮权限标识
|
|
|
|
|
let testAuthBtnList: Array<string> = ["btn.add", "btn.link"];
|
|
|
|
|
if (state.ruleForm.userName === "admin") {
|
|
|
|
|
defaultAuthPageList = adminAuthPageList;
|
|
|
|
|
defaultAuthBtnList = adminAuthBtnList;
|
|
|
|
|
} else {
|
|
|
|
|
defaultAuthPageList = testAuthPageList;
|
|
|
|
|
defaultAuthBtnList = testAuthBtnList;
|
|
|
|
|
}
|
2021-02-04 08:37:20 +08:00
|
|
|
|
const userInfos = {
|
2021-01-27 17:54:58 +08:00
|
|
|
|
userName: state.ruleForm.userName,
|
2021-02-04 08:37:20 +08:00
|
|
|
|
photo:
|
|
|
|
|
state.ruleForm.userName === "admin"
|
|
|
|
|
? "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg"
|
|
|
|
|
: "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=317673774,2961727727&fm=26&gp=0.jpg",
|
2021-01-27 17:54:58 +08:00
|
|
|
|
time: new Date().getTime(),
|
2021-02-05 01:15:37 +08:00
|
|
|
|
authPageList: defaultAuthPageList,
|
|
|
|
|
authBtnList: defaultAuthBtnList,
|
2021-02-04 08:37:20 +08:00
|
|
|
|
};
|
2021-02-25 00:42:24 +08:00
|
|
|
|
// 存储 token 到浏览器缓存
|
2021-02-04 08:37:20 +08:00
|
|
|
|
setSession("token", Math.random().toString(36).substr(0));
|
2021-02-25 00:42:24 +08:00
|
|
|
|
// 存储用户信息到浏览器缓存
|
2021-02-04 08:37:20 +08:00
|
|
|
|
setSession("userInfo", userInfos);
|
2021-02-25 00:42:24 +08:00
|
|
|
|
// 1、请注意执行顺序(存储用户信息到vuex)
|
|
|
|
|
store.dispatch("setUserInfos", userInfos);
|
|
|
|
|
// 前端控制路由,2、请注意执行顺序
|
2021-02-25 18:45:27 +08:00
|
|
|
|
if (!store.state.themeConfig.isRequestRoutes) {
|
|
|
|
|
initAllFun();
|
|
|
|
|
signInSuccess();
|
|
|
|
|
}
|
2021-02-25 00:42:24 +08:00
|
|
|
|
// 模拟后端控制路由,isRequestRoutes 为 true,则开启后端控制路由
|
2021-02-25 18:45:27 +08:00
|
|
|
|
else {
|
2021-02-27 18:35:04 +08:00
|
|
|
|
getBackEndControlRoutes((res) => {
|
|
|
|
|
setBackEndControlRoutesFun(res, (cb) => {
|
|
|
|
|
signInSuccess();
|
|
|
|
|
});
|
2021-02-25 18:45:27 +08:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
// 登录成功后的跳转
|
|
|
|
|
const signInSuccess = () => {
|
|
|
|
|
// 初始化登录成功时间问候语
|
|
|
|
|
let currentTimeInfo = currentTime.value;
|
2021-02-25 00:42:24 +08:00
|
|
|
|
// 登录成功,跳到转首页
|
2021-01-27 17:54:58 +08:00
|
|
|
|
router.push("/");
|
2021-02-25 00:42:24 +08:00
|
|
|
|
// 登录成功提示
|
2021-01-27 17:54:58 +08:00
|
|
|
|
setTimeout(() => {
|
|
|
|
|
ElMessage.success(`${currentTimeInfo},欢迎回来!`);
|
|
|
|
|
}, 300);
|
|
|
|
|
};
|
2020-12-27 14:55:27 +08:00
|
|
|
|
return {
|
2021-01-27 17:54:58 +08:00
|
|
|
|
currentTime,
|
|
|
|
|
onSignIn,
|
2020-12-27 14:55:27 +08:00
|
|
|
|
...toRefs(state),
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
|
.login-content-form {
|
|
|
|
|
margin-top: 20px;
|
|
|
|
|
.login-content-code {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
.login-content-code-img {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 40px;
|
2021-01-29 18:33:32 +08:00
|
|
|
|
line-height: 40px;
|
2020-12-27 14:55:27 +08:00
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
border: 1px solid rgb(220, 223, 230);
|
|
|
|
|
color: #333;
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
letter-spacing: 5px;
|
|
|
|
|
text-indent: 5px;
|
|
|
|
|
text-align: center;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
transition: all ease 0.2s;
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
&:hover {
|
|
|
|
|
border-color: #c0c4cc;
|
|
|
|
|
transition: all ease 0.2s;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.login-content-submit {
|
|
|
|
|
width: 100%;
|
|
|
|
|
letter-spacing: 2px;
|
|
|
|
|
font-weight: 300;
|
|
|
|
|
margin-top: 15px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|