| | |
| | | <template> |
| | | <el-row class="login-panel"> |
| | | <el-col :sm="24" :md="12" class="login-img"> |
| | | 多体系<br/>建设信息化系统 |
| | | <el-col :sm="24" :md="13" class="login-img"> |
| | | |
| | | </el-col> |
| | | <el-col :sm="24" :md="12" class="login-box"> |
| | | <el-col :sm="24" :md="11" class="login-box"> |
| | | <div class="glass-bg"></div> |
| | | <div class="login-title">多体系<br/>建设信息化系统</div> |
| | | <div class="login-card"> |
| | | <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form"> |
| | | <h3 class="title">登录系统</h3> |
| | | <h3 class="title">欢迎登录</h3> |
| | | <el-form-item prop="username"> |
| | | <el-input |
| | | v-model="loginForm.username" |
| | |
| | | loading.value = true; |
| | | Cookies.set("username", loginForm.value.username, { expires: 30 }); |
| | | Cookies.set("password", encrypt(loginForm.value.password), { expires: 30 }); |
| | | |
| | | const param = { |
| | | username: loginForm.value.username, |
| | | password: Base64.encode(loginForm.value.password), |
| | |
| | | identity: loginForm.value.role |
| | | } |
| | | userStore.login(param).then(() => { |
| | | const query = route.query; |
| | | const otherQueryParams = Object.keys(query).reduce((acc, cur) => { |
| | | if (cur !== "redirect") { |
| | | acc[cur] = query[cur]; |
| | | } |
| | | return acc; |
| | | }, {}); |
| | | router.push({ path: redirect.value || "/", query: otherQueryParams }); |
| | | if (redirect.value && redirect.value !== '/index') { |
| | | const query = route.query; |
| | | const otherQueryParams = Object.keys(query).reduce((acc, cur) => { |
| | | if (cur !== "redirect") { |
| | | acc[cur] = query[cur]; |
| | | } |
| | | return acc; |
| | | }, {}); |
| | | router.push({ path: redirect.value, query: otherQueryParams }); |
| | | } else { |
| | | router.push({ path: "/menuPage" }); |
| | | } |
| | | }).catch(() => { |
| | | loading.value = false; |
| | | // 重新获取验证码 |
| | |
| | | font-style: normal; |
| | | font-weight: normal; |
| | | } |
| | | |
| | | @keyframes move { |
| | | 0% { |
| | | -webkit-transform: translateX(100%); |
| | | -ms-transform: translateX(100%); |
| | | transform: translateX(100%); |
| | | } |
| | | |
| | | 100% { |
| | | -webkit-transform: translateX(0); |
| | | -ms-transform: translateX(0); |
| | | transform: translateX(0); |
| | | } |
| | | } |
| | | |
| | | @keyframes show { |
| | | 100% { |
| | | -webkit-transform: translateY(0); |
| | | -ms-transform: translateY(0); |
| | | transform: translateY(0); |
| | | -webkit-opacity: 1; |
| | | -ms-opacity: 1; |
| | | opacity: 1 |
| | | } |
| | | } |
| | | |
| | | .login-panel{ |
| | | width: 100%; |
| | | height: 100%; |
| | | background: url("@/assets/images/bg4.png") no-repeat center; |
| | | background: url("@/assets/images/bg6.jpg") no-repeat center; |
| | | background-size: cover; |
| | | justify-content: center; |
| | | align-items: center; |
| | |
| | | align-items: center; |
| | | font-family: 'AliMa'; |
| | | color: #fff; |
| | | font-size: 3.2rem; |
| | | font-size: clamp(3rem, 1.286rem + 2.68vw, 4.5rem); |
| | | letter-spacing: 10px; |
| | | text-align: center; |
| | | line-height: 1.5; |
| | | transform: translateY(-80px); |
| | | text-shadow: -10px 10px 20px rgba(0,0,0,.4); |
| | | } |
| | | .login-box{ |
| | | position: relative; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | | transform: translateY(-40px); |
| | | height: 100%; |
| | | overflow: hidden; |
| | | |
| | | .glass-bg{ |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | z-index: 0; |
| | | background: (255,255,255,.8); |
| | | backdrop-filter: blur(4px); |
| | | -webkit-backdrop-filter: blur(4px); |
| | | border-left: 2px solid rgba(255,255,255,.4); |
| | | animation: move 0.6s ease-in-out forwards; |
| | | } |
| | | .login-title{ |
| | | font-family: 'AliMa'; |
| | | color: #2563eb; |
| | | font-size: clamp(3rem, 1.286rem + 2.68vw, 4.5rem); |
| | | line-height: 1.2; |
| | | text-shadow: 0 5px 10px rgba(37,99,235,.3); |
| | | margin-bottom: 40px; |
| | | transform: translateY(20px); |
| | | -webkit-transform: translateY(20px); |
| | | -ms-transform: translateY(20px); |
| | | opacity: 0; |
| | | -webkit-opacity: 0; |
| | | -ms-opacity: 0; |
| | | animation: show 0.5s 0.7s ease-in-out forwards; |
| | | } |
| | | .login-card{ |
| | | width: 500px; |
| | | padding: 30px; |
| | | border-radius: 16px; |
| | | background-color: rgba(255,255,255,.2); |
| | | background-color: rgba(255,255,255,.8); |
| | | backdrop-filter: blur(5px); |
| | | -webkit-backdrop-filter: blur(5px); |
| | | border: 1px solid rgba(255,255,255,.4); |
| | | max-width: 100%; |
| | | box-sizing: border-box; |
| | | box-shadow: 0 10px 20px rgba(0,0,0,.05); |
| | | transform: translateY(20px); |
| | | -webkit-transform: translateY(20px); |
| | | -ms-transform: translateY(20px); |
| | | opacity: 0; |
| | | -webkit-opacity: 0; |
| | | -ms-opacity: 0; |
| | | animation: show 0.5s 0.7s ease-in-out forwards; |
| | | } |
| | | .login-form { |
| | | width: 100%; |
| | |
| | | .title{ |
| | | margin: 0 0 30px; |
| | | text-align: center; |
| | | color: #fff |
| | | color: #333 |
| | | } |
| | | |
| | | .el-form-item{ |