| | |
| | | <div id="background"> |
| | | <!-- 产品名称 --> |
| | | <div class="text"> |
| | | <div class="logo"></div> |
| | | <div class="logo"> |
| | | <img |
| | | :src="imgUrl" |
| | | alt=""> |
| | | </div> |
| | | <div class="text-r"> |
| | | <h2 class="title font-extra-large">遂昌县智慧执法平台</h2> |
| | | <div class="title font-title-medium"> |
| | |
| | | </div> |
| | | <el-card class="login-form-layout"> |
| | | <!-- 表单 --> |
| | | <el-form |
| | | autoComplete="on" |
| | | :model="loginForm" |
| | | :rules="loginRules" |
| | | ref="loginForm" |
| | | label-position="left" |
| | | > |
| | | <!-- title --> |
| | | <el-form autoComplete="on" :model="loginForm" :rules="loginRules" ref="loginForm" label-position="left"> |
| | | <!-- title --> |
| | | <h2 class="login-title">用户登录 / USER LOGIN</h2> |
| | | <el-form-item prop="username"> |
| | | <!-- 用户名输入框 --> |
| | | <el-input |
| | | name="username" |
| | | type="text" |
| | | v-model="loginForm.username" |
| | | autoComplete="on" |
| | | placeholder="请输入用户名称" |
| | | > |
| | | <el-input name="username" type="text" v-model="loginForm.username" autoComplete="on" placeholder="请输入用户名称"> |
| | | <span slot="prefix"> |
| | | <svg-icon icon-class="user" class="color-main"></svg-icon> |
| | | </span> |
| | |
| | | </el-form-item> |
| | | <el-form-item prop="password"> |
| | | <!-- 密码输入框 --> |
| | | <el-input |
| | | name="password" |
| | | :type="pwdType ? 'text' : 'password'" |
| | | @keyup.enter.native="handleLogin" |
| | | v-model="loginForm.password" |
| | | autoComplete="on" |
| | | placeholder="请输入登录密码" |
| | | > |
| | | <!-- 输入框前icon --> |
| | | <el-input name="password" :type="pwdType ? 'text' : 'password'" @keyup.enter.native="handleLogin" |
| | | v-model="loginForm.password" autoComplete="on" placeholder="请输入登录密码"> |
| | | <!-- 输入框前icon --> |
| | | <span slot="prefix"> |
| | | <svg-icon icon-class="password" class="color"></svg-icon> |
| | | <svg-icon icon-class="password" class="color"></svg-icon> |
| | | </span> |
| | | <!-- 输入框后icon --> |
| | | <span slot="suffix" @click="showPwd"> |
| | | <svg-icon |
| | | :icon-class="pwdType ? 'yanjing-zhengyan' : 'yanjing-biyan'" |
| | | class="pointer" |
| | | ></svg-icon> |
| | | <svg-icon :icon-class="pwdType ? 'yanjing-zhengyan' : 'yanjing-biyan'" class="pointer"></svg-icon> |
| | | </span> |
| | | </el-input> |
| | | </el-form-item> |
| | | <!-- 表单提交按钮 --> |
| | | <el-form-item style="margin-bottom: 60px; text-align: center"> |
| | | <el-button |
| | | style="width: 100%" |
| | | type="primary" |
| | | :loading="loading" |
| | | @click.native.prevent="handleLogin" |
| | | > |
| | | <el-button style="width: 100%" type="primary" :loading="loading" @click.native.prevent="handleLogin"> |
| | | 登录 |
| | | </el-button> |
| | | </el-form-item> |
| | |
| | | |
| | | <script> |
| | | import { isvalidUsername } from "@/utils/validate"; |
| | | |
| | | import { createNamespacedHelpers } from "vuex"; |
| | | const { mapActions } = createNamespacedHelpers("users"); |
| | | export default { |
| | | name: "login", |
| | | data() { |
| | |
| | | }; |
| | | return { |
| | | loginForm: { |
| | | username: "", |
| | | password: "", |
| | | username:"", |
| | | password:"", |
| | | // username: "admin", |
| | | // password: "macro123", |
| | | }, |
| | | imgUrl:'', |
| | | loginRules: { |
| | | username: [ |
| | | { required: true, trigger: "blur", validator: validateUsername }, |
| | |
| | | }; |
| | | }, |
| | | created() { |
| | | // this.loginForm.username = getCookie("username"); |
| | | // this.loginForm.password = getCookie("password"); |
| | | // if ( |
| | | // this.loginForm.username === undefined || |
| | | // this.loginForm.username == null || |
| | | // this.loginForm.username === "" |
| | | // ) { |
| | | // this.loginForm.username = "admin"; |
| | | // } |
| | | // if ( |
| | | // this.loginForm.password === undefined || |
| | | // this.loginForm.password == null |
| | | // ) { |
| | | // this.loginForm.password = ""; |
| | | // } |
| | | }, |
| | | const pic = JSON.parse(sessionStorage.getItem('pic')); |
| | | if(pic){ |
| | | this.imgUrl = pic.loginPageIconUrl |
| | | }else{ |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/system/portal/logo/search', |
| | | }).then(res => { |
| | | this.imgUrl = res.data.loginPageIconUrl |
| | | }) |
| | | } |
| | | }, |
| | | methods: { |
| | | showPwd() { |
| | | if (!this.pwdType) { |
| | |
| | | this.pwdType = false; |
| | | } |
| | | }, |
| | | ...mapActions(["login"]), |
| | | handleLogin() { |
| | | this.$router.push({ path: "/home" }); |
| | | // this.$refs.loginForm.validate((valid) => { |
| | | // if (valid) { |
| | | // console.log(valid); |
| | | // this.loading = true; |
| | | // this.$store |
| | | // .dispatch("Login", this.loginForm) |
| | | // .then(() => { |
| | | // this.loading = false; |
| | | // setCookie("username", this.loginForm.username, 15); |
| | | // setCookie("password", this.loginForm.password, 15); |
| | | // this.$router.push({ path: "/" }); |
| | | // }) |
| | | // .catch(() => { |
| | | // this.loading = false; |
| | | // }); |
| | | // } else { |
| | | // console.log("参数验证不合法!"); |
| | | // return false; |
| | | // } |
| | | // }); |
| | | const { username, password } = this.loginForm; |
| | | const that = this; |
| | | console.log(this.login); |
| | | this.$axios |
| | | .post("sccg/admin/login", { |
| | | password, |
| | | username, |
| | | }) |
| | | .then(function (response) { |
| | | if (response.code === 200) { |
| | | // 设置toke时间 |
| | | // 保存token |
| | | console.log(response); |
| | | sessionStorage.setItem('token',response.data.token); |
| | | // 保存token |
| | | sessionStorage.setItem('tokenHead',response.data.tokenHead); |
| | | // 保存用户登录名 |
| | | sessionStorage.setItem('name',username); |
| | | // 跳转到首页 |
| | | that.$router.push("/home"); |
| | | }else{ |
| | | that.$refs.loginForm.validate((valid)=>{ |
| | | if(valid){ |
| | | that.$message({ |
| | | type:'warning', |
| | | message:response.message |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | // console.log(response); |
| | | }) |
| | | .catch(function (error) { |
| | | console.log(error); |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .color{ |
| | | .color { |
| | | color: red; |
| | | } |
| | | |
| | | #background { |
| | | width: 100vw; |
| | | height: 100vh; |
| | | background: url("@/assets/imgs/login/login_bg.jpg"); |
| | | background-size: cover ; |
| | | background: url("@/assets/imgs/login/bk.png"); |
| | | background-size: cover; |
| | | position: relative; |
| | | display: flex; |
| | | min-width: 800px; |
| | | } |
| | | |
| | | .login-form-layout { |
| | | position: absolute; |
| | | top: 20%; |
| | | right: 5%; |
| | | width: 360px; |
| | | align-self: center; |
| | | &:deep(.el-input__inner){ |
| | | background-color: #fff !important; |
| | | border: 1px solid #dcdfe6 !important; |
| | | } |
| | | } |
| | | |
| | | .text { |
| | | align-self: flex-start; |
| | | position: absolute; |
| | | top:20%; |
| | | top: 20%; |
| | | left: 5%; |
| | | // margin-top: 180px; |
| | | // margin-left: 50px; |
| | | display: flex; |
| | | width: 400px; |
| | | width: 420px; |
| | | justify-content: space-between; |
| | | .logo { |
| | | width: 50px; |
| | | height: 50px; |
| | | border-radius: 50%; |
| | | background-color: pink; |
| | | |
| | | .logo>img { |
| | | width: 75px; |
| | | height: 75px; |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .text-r { |
| | | margin-left: 15px; |
| | | |
| | | .title { |
| | | color: white; |
| | | } |
| | | |
| | | .font-title-medium { |
| | | margin-top: -10px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .login-title { |
| | | text-align: left; |
| | | font-size: 1.2rem; |