10 changed files with 744 additions and 241 deletions
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 2.3 MiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 334 B |
After Width: | Height: | Size: 425 B |
@ -0,0 +1,461 @@ |
|||
<template> |
|||
<div class="login"> |
|||
<!-- <Bg2 style=" width: 600px; height:800px; position: fixed; left: 100px; top:100px">发多少刚发的刚发的</Bg2> --> |
|||
<el-form |
|||
ref="loginForm" |
|||
:model="loginForm" |
|||
:rules="loginRules" |
|||
class="login-form" |
|||
> |
|||
<div |
|||
style=" |
|||
width: 100%; |
|||
text-align: center; |
|||
padding-right: 20px; |
|||
padding-bottom: 10px; |
|||
" |
|||
> |
|||
<!-- <img src="../assets/image/login-logo.png" width="120px;" /> --> |
|||
<div class="loginTitle">欢迎登录</div> |
|||
</div> |
|||
<div class="title">{{ "" }}</div> |
|||
<el-form-item prop="username" style="margin-top: 40px"> |
|||
<el-input |
|||
v-model="loginForm.username" |
|||
type="text" |
|||
auto-complete="off" |
|||
placeholder="请输入用户名" |
|||
class="username" |
|||
> |
|||
<img |
|||
slot="prefix" |
|||
src="../assets/images/Vector.png" |
|||
class="el-input__icon input-icon" |
|||
/> |
|||
</el-input> |
|||
<!-- <div style="border-bottom: 1px solid #cfcfcf; margin-top: 5px"></div> --> |
|||
</el-form-item> |
|||
<el-form-item prop="password"> |
|||
<el-input |
|||
v-model="loginForm.password" |
|||
type="password" |
|||
auto-complete="off" |
|||
placeholder="请输入密码" |
|||
@keyup.enter.native="handleLogin" |
|||
class="password" |
|||
> |
|||
<img |
|||
slot="prefix" |
|||
src="../assets/images/locked.png" |
|||
class="el-input__icon input-icon" |
|||
/> |
|||
</el-input> |
|||
<!-- <div style="border-bottom: 1px solid #cfcfcf; margin-top: 5px"></div> --> |
|||
</el-form-item> |
|||
<Verify |
|||
@success="capctchaCheckSuccess" |
|||
:mode="'pop'" |
|||
:captchaType="'blockPuzzle'" |
|||
:imgSize="{ width: '330px', height: '155px' }" |
|||
ref="verify" |
|||
></Verify> |
|||
<el-checkbox |
|||
v-model="loginForm.rememberMe" |
|||
style="margin: 40px 0px 20px 0px" |
|||
>记住密码</el-checkbox |
|||
> |
|||
<el-form-item style="width: 100%; text-align: center"> |
|||
<el-button |
|||
:loading="loading" |
|||
size="medium" |
|||
type="goon" |
|||
style="width: 100%" |
|||
@click.native.prevent="handleLogin" |
|||
> |
|||
<span v-if="!loading">登 录</span> |
|||
<span v-else>登 录 中...</span> |
|||
</el-button> |
|||
<div style="float: right" v-if="register"> |
|||
<router-link class="link-type" :to="'/register'" |
|||
>立即注册</router-link |
|||
> |
|||
</div> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<!-- 底部 --> |
|||
<div class="el-login-footer"> |
|||
<!-- <span>Copyright ©hamdell All Rights Reserved.</span> --> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import Cookies from "js-cookie"; |
|||
import { encrypt, decrypt } from "@/utils/jsencrypt"; |
|||
import Verify from "@/components/Verifition/Verify"; |
|||
import { getCaptchaOnOff } from "@/api/login.js"; |
|||
import { listOrder } from "@/api/payment/order"; |
|||
import { getUserDeptId } from "@/api/system/user"; |
|||
import { listTunnels } from "@/api/equipment/tunnel/api.js"; |
|||
import { getConfigKey } from "@/api/system/config.js"; |
|||
|
|||
import Bg2 from "@screen/components/Decorations/bg-2.vue"; |
|||
|
|||
export default { |
|||
components: { Verify, Bg2 }, |
|||
name: "Login", |
|||
data() { |
|||
return { |
|||
title: "", // 系统标题 |
|||
cookiePassword: "", |
|||
loginForm: { |
|||
// username: "admin", |
|||
// password: "dxc123!@#", |
|||
//dxc123!@# |
|||
username: "", |
|||
password: "", |
|||
rememberMe: false, |
|||
code: "", |
|||
uuid: "", |
|||
}, |
|||
loginRules: { |
|||
username: [ |
|||
{ required: true, trigger: "blur", message: "请输入您的账号" }, |
|||
], |
|||
password: [ |
|||
{ required: true, trigger: "blur", message: "请输入您的密码" }, |
|||
], |
|||
}, |
|||
loading: false, |
|||
// 验证码开关 |
|||
captchaOnOff: false, |
|||
// 注册开关 |
|||
register: false, |
|||
redirect: undefined, |
|||
}; |
|||
}, |
|||
watch: { |
|||
$route: { |
|||
handler: function (route) { |
|||
this.redirect = route.query && route.query.redirect; |
|||
}, |
|||
immediate: true, |
|||
}, |
|||
}, |
|||
created() { |
|||
this.getCookie(); |
|||
//this.getCaptchaOnOffFun(); |
|||
this.title = systemConfig.title(systemConfig.systemType); |
|||
}, |
|||
methods: { |
|||
// 获取验证码是否开启 |
|||
getCaptchaOnOffFun() { |
|||
getCaptchaOnOff().then((response) => { |
|||
this.captchaOnOff = response.captchaOnOff; |
|||
}); |
|||
}, |
|||
// 验证码 |
|||
capctchaCheckSuccess(params) { |
|||
this.loginForm.code = params.captchaVerification; |
|||
this.loading = true; |
|||
console.log(this.loginForm.rememberMe, "======================="); |
|||
if (this.loginForm.rememberMe == true) { |
|||
Cookies.set("username", this.loginForm.username, { expires: 30 }); |
|||
Cookies.set("password", encrypt(this.loginForm.password), { |
|||
expires: 30, |
|||
}); |
|||
Cookies.set("rememberMe", this.loginForm.rememberMe, { expires: 30 }); |
|||
} else { |
|||
Cookies.remove("username"); |
|||
Cookies.remove("password"); |
|||
Cookies.remove("rememberMe"); |
|||
} |
|||
this.$store |
|||
.dispatch("Login", this.loginForm) |
|||
.then(() => { |
|||
this.$router.push({ path: this.redirect || "/" }).catch(() => {}); |
|||
}) |
|||
.catch(() => { |
|||
this.loading = false; |
|||
}); |
|||
}, |
|||
getCookie() { |
|||
const username = Cookies.get("username"); |
|||
const password = Cookies.get("password"); |
|||
const rememberMe = Cookies.get("rememberMe"); |
|||
console.log("rem", rememberMe); |
|||
this.loginForm = { |
|||
username: username === undefined ? this.loginForm.username : username, |
|||
password: |
|||
password === undefined ? this.loginForm.password : decrypt(password), |
|||
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), |
|||
}; |
|||
}, |
|||
handleLogin() { |
|||
if (this.captchaOnOff) { |
|||
this.$refs.loginForm.validate((valid) => { |
|||
if (valid) { |
|||
this.$refs.verify.show(); |
|||
} |
|||
}); |
|||
} else { |
|||
if (this.loginForm.rememberMe == true) { |
|||
Cookies.set("username", this.loginForm.username, { expires: 30 }); |
|||
Cookies.set("password", encrypt(this.loginForm.password), { |
|||
expires: 30, |
|||
}); |
|||
Cookies.set("rememberMe", this.loginForm.rememberMe, { expires: 30 }); |
|||
} else { |
|||
Cookies.remove("username"); |
|||
Cookies.remove("password"); |
|||
Cookies.remove("rememberMe"); |
|||
} |
|||
|
|||
this.$store |
|||
.dispatch("Login", this.loginForm) |
|||
.then(() => { |
|||
this.$router.push({ path: this.redirect || "/" }).catch(() => {}); |
|||
// this.getManageStation(); |
|||
}) |
|||
.catch(() => { |
|||
this.loading = false; |
|||
}); |
|||
} |
|||
}, |
|||
getManageStation() { |
|||
getConfigKey("sd.moduleSwitch").then((res) => { |
|||
console.log(res, "管理站01"); |
|||
this.$cache.local.set("manageStation", res.msg); |
|||
}); |
|||
getConfigKey("sd.navigationBar").then((res) => { |
|||
console.log(res, "res"); |
|||
let sideTheme = "theme-blue"; |
|||
if (res.msg == "0") { |
|||
sideTheme = "theme-dark"; |
|||
} else { |
|||
sideTheme = "theme-blue"; |
|||
} |
|||
// console.log(res, "是否胡山隧道,胡山单独导航栏样式"); |
|||
this.$cache.local.set("navigationBar", res.msg); |
|||
this.$store.dispatch("settings/changeSetting", { |
|||
key: "sideTheme", |
|||
value: sideTheme, |
|||
}); |
|||
// this.sideTheme = val; |
|||
this.$cache.local.set( |
|||
"layout-setting", |
|||
`{ |
|||
"topNav":${this.$store.state.settings.topNav}, |
|||
"tagsView":${this.$store.state.settings.tagsView}, |
|||
"weatherView":${this.$store.state.settings.weatherView}, |
|||
"fixedHeader":${this.$store.state.settings.fixedHeader}, |
|||
"sidebarLogo":${this.$store.state.settings.sidebarLogo}, |
|||
"dynamicTitle":${this.$store.state.settings.dynamicTitle}, |
|||
"sideTheme":"${sideTheme}", |
|||
"theme":"${this.$store.state.settings.theme}" |
|||
}` |
|||
); |
|||
// console.log(this.$store.state.settings.sideTheme) |
|||
}); |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style rel="stylesheet/scss" lang="scss" scoped> |
|||
::v-deep .el-input__inner { |
|||
background-color: transparent !important; |
|||
height: 100%; |
|||
font-size: 22px; |
|||
font-family: Source Han Sans CN, Source Han Sans CN; |
|||
font-weight: 400; |
|||
color: #07caf6; |
|||
margin-left: 68px; |
|||
} |
|||
|
|||
::v-deep .el-checkbox__label { |
|||
color: #fff; |
|||
font-size: 18px !important; |
|||
font-family: Source Han Sans CN, Source Han Sans CN; |
|||
font-weight: 400; |
|||
color: #ffffff !important; |
|||
margin-bottom: 10px; |
|||
} |
|||
|
|||
::v-deep .el-form-item__error { |
|||
position: absolute; |
|||
top: 75px; |
|||
} |
|||
|
|||
::v-deep .el-input__inner::placeholder { |
|||
color: #07caf6; |
|||
} |
|||
|
|||
.login { |
|||
position: relative; |
|||
height: 100%; |
|||
background-image: url("../assets/images/login-background.png"); |
|||
// background-size: 100% auto; |
|||
background-repeat: no-repeat; |
|||
background-size: 100% 100%; |
|||
} |
|||
|
|||
.login::after { |
|||
content: ""; |
|||
position: absolute; |
|||
width: 100%; |
|||
height: 120px; |
|||
background-image: url("../assets/images/login-head.png"); |
|||
background-repeat: no-repeat; |
|||
background-size: auto 100%; |
|||
background-position: center center; |
|||
} |
|||
|
|||
.title { |
|||
margin: 0px auto 10px auto; |
|||
font-size: 24px; |
|||
text-align: center; |
|||
color: #353f55; |
|||
letter-spacing: 2px; |
|||
} |
|||
|
|||
.login-form::after { |
|||
content: ""; |
|||
position: absolute; |
|||
left: -4px; |
|||
top: 0px; |
|||
width: 4px; |
|||
height: 100%; |
|||
background: linear-gradient( |
|||
180deg, |
|||
#bdfff600 0%, |
|||
#bdfff6 50%, |
|||
#bdfff600 100% |
|||
); |
|||
} |
|||
|
|||
.login-form::before { |
|||
content: ""; |
|||
position: absolute; |
|||
right: -4px; |
|||
top: 0px; |
|||
width: 4px; |
|||
height: 100%; |
|||
background: linear-gradient( |
|||
180deg, |
|||
#bdfff600 0%, |
|||
#bdfff6 50%, |
|||
#bdfff600 100% |
|||
); |
|||
} |
|||
|
|||
.login-form { |
|||
position: absolute; |
|||
left: 50%; |
|||
top: 20%; |
|||
transform: translateX(-50%); |
|||
width: 400px; |
|||
height: 500px; |
|||
background: #00000080; |
|||
border-radius: 0px 0px 0px 0px; |
|||
opacity: 1; |
|||
border: 4px solid #0c5963; |
|||
padding: 50px; |
|||
// margin-left: 50%; |
|||
|
|||
.loginTitle { |
|||
display: inline-flex; |
|||
width: 100%; |
|||
height: 45px; |
|||
font-size: 30px; |
|||
font-family: Source Han Sans CN, Source Han Sans CN; |
|||
font-weight: 500; |
|||
color: #ffffff; |
|||
justify-content: center; |
|||
align-items: center; |
|||
} |
|||
|
|||
.el-input { |
|||
width: 300px; |
|||
height: 60px; |
|||
border-radius: 4px 4px 4px 4px; |
|||
opacity: 1; |
|||
border: 1px solid #01cffe; |
|||
background-color: transparent; |
|||
margin-bottom: 12px; |
|||
|
|||
::v-deep .el-input__inner { |
|||
font-size: 20px !important; |
|||
} |
|||
|
|||
input { |
|||
border: 0; |
|||
height: 35px; |
|||
} |
|||
} |
|||
|
|||
.input-icon { |
|||
height: 20px; |
|||
width: 20px; |
|||
margin-left: 2px; |
|||
position: relative; |
|||
left: 14px; |
|||
top: 18px; |
|||
} |
|||
} |
|||
|
|||
.login-tip { |
|||
font-size: 13px; |
|||
text-align: center; |
|||
color: #bfbfbf; |
|||
} |
|||
|
|||
.login-code { |
|||
width: 37%; |
|||
height: 35px; |
|||
float: right; |
|||
|
|||
img { |
|||
cursor: pointer; |
|||
vertical-align: middle; |
|||
} |
|||
} |
|||
|
|||
.el-login-footer { |
|||
height: 40px; |
|||
line-height: 40px; |
|||
position: fixed; |
|||
bottom: 0; |
|||
width: 100%; |
|||
text-align: center; |
|||
color: #fff; |
|||
font-family: Arial; |
|||
font-size: 12px; |
|||
letter-spacing: 1px; |
|||
} |
|||
|
|||
.login-code-img { |
|||
height: 35px; |
|||
} |
|||
|
|||
/* 重置按钮 */ |
|||
.el-button--goon { |
|||
font-size: 24px; |
|||
font-weight: 400; |
|||
color: #fff; |
|||
width: 380px; |
|||
height: 55px; |
|||
background: #07caf6; |
|||
border-radius: 4px; |
|||
opacity: 1; |
|||
border: none; |
|||
} |
|||
|
|||
.el-button--goon:hover { |
|||
} |
|||
|
|||
::v-deep .el-form-item__error { |
|||
top: 62px; |
|||
} |
|||
</style> |
Loading…
Reference in new issue