mart-admin/src/views/login/index.vue

124 lines
3.3 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>
<div class="login-container">
<div class="login-logo">
<span>SMALL@小柒</span>
</div>
<div class="login-content" :class="{'login-content-mobile' : tabsActiveName === 'mobile'}">
<div class="login-content-main">
<h4 class="login-content-title">vue-admin-wonderful</h4>
<el-tabs v-model="tabsActiveName" @tab-click="onTabsClick">
<el-tab-pane label="账号密码登录" name="account">
<transition name="el-zoom-in-center">
<Account v-show="!isTabPaneShow" />
</transition>
</el-tab-pane>
<el-tab-pane label="手机号登录" name="mobile">
<transition name="el-zoom-in-center">
<Mobile v-show="isTabPaneShow" />
</transition>
</el-tab-pane>
</el-tabs>
<div class="mt10">
<el-button type="text" size="small">第三方登录</el-button>
<el-button type="text" size="small">友情链接</el-button>
</div>
</div>
</div>
<div class="login-copyright">
<div class="mb5 login-copyright-company">版权所有深圳市xxx软件科技有限公司</div>
<div class="login-copyright-msg">Copyright: Shenzhen XXX Software Technology 粤ICP备05010000号</div>
</div>
</div>
</template>
<script lang="ts">
import Account from "/@/views/login/component/account.vue";
import Mobile from "/@/views/login/component/mobile.vue";
import { toRefs, reactive } from "vue";
export default {
name: "login",
components: { Account, Mobile },
setup() {
const state = reactive({
tabsActiveName: "account",
isTabPaneShow: false,
});
const onTabsClick = () => {
state.isTabPaneShow = !state.isTabPaneShow;
};
return {
onTabsClick,
...toRefs(state),
};
},
};
</script>
<style scoped lang="scss">
.login-container {
width: 100%;
height: 100%;
background: url("/src/assets/bg-login.png") no-repeat;
background-size: 100% 100%;
.login-logo {
position: absolute;
top: 30px;
left: 50%;
height: 50px;
display: flex;
align-items: center;
font-size: 20px;
color: var(--color-primary);
letter-spacing: 2px;
width: 90%;
transform: translateX(-50%);
}
.login-content {
width: 500px;
padding: 20px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) translate3d(0, 0, 0);
background-color: rgba(255, 255, 255, 0.99);
box-shadow: 0 2px 12px 0 var(--color-primary-light-5);
border-radius: 4px;
transition: height 0.2s linear;
height: 480px;
overflow: hidden;
z-index: 1;
.login-content-main {
margin: 0 auto;
width: 80%;
.login-content-title {
color: #333;
font-weight: 500;
font-size: 22px;
text-align: center;
letter-spacing: 4px;
margin: 15px 0 30px;
white-space: nowrap;
}
}
}
.login-content-mobile {
height: 418px;
}
.login-copyright {
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 30px;
text-align: center;
color: white;
font-size: 12px;
opacity: 0.8;
.login-copyright-company {
white-space: nowrap;
}
.login-copyright-msg {
@extend .login-copyright-company;
}
}
}
</style>