<template> <div class="login"> <div class="login-content"> <div class="login-l"> <div class="logo"><img src="../assets/images/login/logo.png" /></div> <span>山东高速</span> <span>济菏数智运营管理平台</span> </div> <div class="login-r"> <span class="title">欢迎登录</span> <img class="line" src="../assets/images/login/139.png" /> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" ><el-form-item prop="username"> <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="请输入用户名" class="username" > <img slot="prefix" src="../assets/images/login/user.png" class="el-input__icon input-icon" /> </el-input> </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/login/password.png" class="el-input__icon input-icon" /> </el-input> </el-form-item> <Verify @success="capctchaCheckSuccess" :mode="'pop'" :captchaType="'blockPuzzle'" :imgSize="{ width: '330px', height: '155px' }" ref="verify" ></Verify> <el-checkbox v-model="loginForm.rememberMe">记住密码</el-checkbox> <el-form-item> <el-button class="btn" :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> </div> <!-- 底部 --> <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.$store.commit("menu/resetRecent"); // this.$router.push({ path: this.redirect || "/" }).catch(() => {}); this.$router.push({ path: "/" }).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: #fff !important; height: 34px; font-size: 14px; font-weight: 400; color: #999999; border: 1px solid rgba(0, 145, 67, 0.5); caret-color: #39adff; // margin-left: 20px; } ::v-deep .el-checkbox__label { color: #999; font-size: 12px !important; font-weight: 400; color: #999 !important; margin-bottom: 10px; margin-top: 6px; } ::v-deep .el-input__inner::placeholder { color: #999999; } .login { position: relative; height: 100%; background-image: url("../assets/images/login/login-background.png"); // background-size: 100% auto; background-repeat: no-repeat; background-size: 100% 100%; } .login-content { position: absolute; left: 50%; top: 367px; transform: translateX(-50%); width: 700px; height: 367px; background: rgba(10, 82, 123, 0.6); display: flex; .login-l { // width: 300px; margin-top: 42px; margin-left: 25px; .logo { width: 177px; height: 135px; margin: auto; margin-bottom: 10px; img { width: 100%; height: 100%; } } span { display: block; font-family: PingFang; font-weight: 600; font-size: 30px; color: rgba(42, 217, 253, 0.7); line-height: 35px; text-align: center; margin-top: 20px; } } .login-r { width: 320px; height: 290px; margin-right: 27px; margin-top: 42px; margin-left: 20px; background: #c9e5eb; padding: 25px 22px; .title { display: block; width: 100%; font-family: PingFang; font-weight: 600; font-size: 28px; color: #009143; text-align: center; } .line { width: 210px; height: 3px; display: block; margin: auto; margin-bottom: 20px; } .btn { margin: auto; width: 155px; height: 34px; background: #009143; border-radius: 1px; color: #fff; font-size: 16px; display: flex; align-items: center; justify-content: center; margin-top: 5px; } } // .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: 275px; height: 36px; border-radius: 2px; background: #fff; padding-left: 20px; ::v-deep .el-input__inner { font-size: 14px !important; } input { border: 0; height: 36px; } } .input-icon { height: 20px; width: 20px; margin-right: 10px; position: relative; left: 10px; top: 7px; } } // .login-tip { // font-size: 13px; // text-align: center; // color: #bfbfbf; // } // .login-code { // width: 37%; // height: 35px; // float: right; // img { // cursor: pointer; // vertical-align: middle; // } // } .login-form{ ::v-deep .el-form-item{ margin-bottom: 22px; } } .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 { } </style>