| @@ -1,236 +1,236 @@ | |||
| <template> | |||
| <div class="app-container" :style="{ height: windowHeight + 'px' }"> | |||
| <div class="login_header"></div> | |||
| <div class="login_content"> | |||
| <div class="homestead_wrap"> | |||
| <div class="key_title">两清三化宅基地</div> | |||
| <div class="slogan">随时随地管理宅基地</div> | |||
| </div> | |||
| <div class="from_wrap"> | |||
| <div class="from_content"> | |||
| <div class="signIn_container"> | |||
| <div class="signIn_input_wrap"> | |||
| <van-field | |||
| autosize | |||
| v-model="formData.username" | |||
| placeholder="请输入用户名" | |||
| /> | |||
| </div> | |||
| </div> | |||
| <div class="signIn_container"> | |||
| <div class="signIn_input_wrap"> | |||
| <van-field | |||
| autosize | |||
| type="password" | |||
| placeholder="请输入密码" | |||
| v-model="formData.password" | |||
| /> | |||
| </div> | |||
| </div> | |||
| <div class="signIn_container"> | |||
| <div class="signIn_input_wrap"> | |||
| <div class="verification_code"> | |||
| <van-field | |||
| autosize | |||
| placeholder="请输入验证码" | |||
| v-model="formData.code" | |||
| /> | |||
| </div> | |||
| <div class="verification_images"> | |||
| <img class="code-img" :src="codeUrl" @click="getCode" /> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="signIn_container"> | |||
| <div class="remember_num"> | |||
| <van-checkbox | |||
| v-model="rememberPassword" | |||
| icon-size="16px" | |||
| checked-color="#3CBF5B" | |||
| >记住密码</van-checkbox | |||
| > | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="from_btn" @click="handleLogin">登录</div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import { getCodeImg } from "@/api/login"; | |||
| import Cookies from "js-cookie"; | |||
| export default { | |||
| name: "homesteadLogin", | |||
| data() { | |||
| return { | |||
| formData: { | |||
| username: "", //账号 | |||
| password: "", //密码 | |||
| code: null, //图片验证码 | |||
| uuid: null, //识别uuid | |||
| }, | |||
| codeUrl: "", //图片验证码 | |||
| rememberPassword: false, //记住密码 1记住 2不记住 | |||
| windowHeight: 0, | |||
| }; | |||
| }, | |||
| created() { | |||
| this.getCode(); | |||
| let userName = Cookies.get("homesteadUserName"); // => 'value' | |||
| let password = Cookies.get("homesteadPassword"); // => undefined | |||
| if (userName != undefined) { | |||
| this.formData.username = userName; | |||
| this.rememberPassword = true; | |||
| } | |||
| if (password != undefined) { | |||
| this.formData.password = password; | |||
| } | |||
| }, | |||
| mounted() { | |||
| let windowHeight = document.documentElement.clientHeight; | |||
| this.windowHeight = windowHeight; | |||
| }, | |||
| methods: { | |||
| getCode() { | |||
| getCodeImg().then((res) => { | |||
| this.formData.uuid = res.uuid; | |||
| this.codeUrl = "data:image/gif;base64," + res.img; | |||
| }); | |||
| }, | |||
| handleLogin() { | |||
| //账号密码登录 | |||
| if (this.formData.username == "") { | |||
| this.$dialog.alert({ | |||
| message: "账号不能为空", | |||
| }); | |||
| return false; | |||
| } else if (this.formData.password == "") { | |||
| this.$dialog.alert({ | |||
| message: "密码不能为空", | |||
| }); | |||
| return false; | |||
| } else if (this.formData.code == "") { | |||
| this.$dialog.alert({ | |||
| message: "图片验证码不能为空", | |||
| }); | |||
| return false; | |||
| } | |||
| this.$store | |||
| .dispatch("Login", this.formData) | |||
| .then(() => { | |||
| if (this.rememberPassword == true) { | |||
| Cookies.set("homesteadUserName", this.formData.username, { | |||
| expires: 30, | |||
| }); | |||
| Cookies.set("homesteadPassword", this.formData.password, { | |||
| expires: 30, | |||
| }); | |||
| } | |||
| this.$router | |||
| .push({ path: this.redirect || "/homestead/index" }) | |||
| .catch(() => {}); | |||
| }) | |||
| .catch(() => { | |||
| this.loading = false; | |||
| this.getCode(); | |||
| }); | |||
| }, | |||
| }, | |||
| }; | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| .app-container { | |||
| display: flex; | |||
| width: 100vw; | |||
| height: 100vh; | |||
| flex-direction: column; | |||
| .login_header { | |||
| flex: 0.35; | |||
| background: url("../../assets/images/homestead/login_bg.jpg") center bottom | |||
| no-repeat; | |||
| background-size: 100% 100%; | |||
| } | |||
| .login_content { | |||
| flex: 0.65; | |||
| display: flex; | |||
| flex-direction: column; | |||
| .homestead_wrap { | |||
| flex: 0.28; | |||
| display: flex; | |||
| justify-content: center; /* 相对父元素水平居中 */ | |||
| align-items: center; /* 子元素相对父元素垂直居中 */ | |||
| flex-direction: column; | |||
| .key_title { | |||
| font-size: 56px; | |||
| margin-bottom: 10px; | |||
| } | |||
| .slogan { | |||
| font-size: 32px; | |||
| color: #9f9f9f; | |||
| } | |||
| } | |||
| .from_wrap { | |||
| flex: 0.72; | |||
| padding-bottom: 14%; | |||
| flex-direction: column; | |||
| display: flex; | |||
| margin: 0 40px; | |||
| .from_content { | |||
| flex: 1; | |||
| display: flex; | |||
| flex-direction: column; | |||
| padding-bottom: 14%; | |||
| .signIn_container { | |||
| flex: 1; | |||
| display: flex; | |||
| max-height: 90px; | |||
| margin-bottom: 24px; | |||
| &:last-child { | |||
| margin-bottom: 0; | |||
| } | |||
| .signIn_input_wrap { | |||
| flex: 1; | |||
| display: flex; | |||
| .verification_code { | |||
| flex: 1; | |||
| } | |||
| .verification_images { | |||
| flex: 0 0 220px; | |||
| margin-left: 20px; | |||
| img { | |||
| width: 100%; | |||
| height: 100%; | |||
| } | |||
| } | |||
| .van-cell { | |||
| border: 2px solid #f1f0f5; | |||
| border-radius: 46px; | |||
| font-size: 32px; | |||
| } | |||
| } | |||
| .remember_num { | |||
| margin-left: 14px; | |||
| font-size: 28px; | |||
| color: #3cbf5b; | |||
| } | |||
| } | |||
| } | |||
| .from_btn { | |||
| display: flex; | |||
| flex: 0 0 80px; | |||
| background: #3cbf5b; | |||
| border-radius: 40px; | |||
| font-size: 36px; | |||
| justify-content: center; /* 相对父元素水平居中 */ | |||
| align-items: center; /* 子元素相对父元素垂直居中 */ | |||
| color: #fff; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| <template> | |||
| <div class="app-container" :style="{ height: windowHeight + 'px' }"> | |||
| <div class="login_header"></div> | |||
| <div class="login_content"> | |||
| <div class="homestead_wrap"> | |||
| <div class="key_title">环翠区两清三化</div> | |||
| <div class="slogan">数据调查系统</div> | |||
| </div> | |||
| <div class="from_wrap"> | |||
| <div class="from_content"> | |||
| <div class="signIn_container"> | |||
| <div class="signIn_input_wrap"> | |||
| <van-field | |||
| autosize | |||
| v-model="formData.username" | |||
| placeholder="请输入用户名" | |||
| /> | |||
| </div> | |||
| </div> | |||
| <div class="signIn_container"> | |||
| <div class="signIn_input_wrap"> | |||
| <van-field | |||
| autosize | |||
| type="password" | |||
| placeholder="请输入密码" | |||
| v-model="formData.password" | |||
| /> | |||
| </div> | |||
| </div> | |||
| <div class="signIn_container"> | |||
| <div class="signIn_input_wrap"> | |||
| <div class="verification_code"> | |||
| <van-field | |||
| autosize | |||
| placeholder="请输入验证码" | |||
| v-model="formData.code" | |||
| /> | |||
| </div> | |||
| <div class="verification_images"> | |||
| <img class="code-img" :src="codeUrl" @click="getCode" /> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="signIn_container"> | |||
| <div class="remember_num"> | |||
| <van-checkbox | |||
| v-model="rememberPassword" | |||
| icon-size="16px" | |||
| checked-color="#3CBF5B" | |||
| >记住密码</van-checkbox | |||
| > | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="from_btn" @click="handleLogin">登录</div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import { getCodeImg } from "@/api/login"; | |||
| import Cookies from "js-cookie"; | |||
| export default { | |||
| name: "homesteadLogin", | |||
| data() { | |||
| return { | |||
| formData: { | |||
| username: "", //账号 | |||
| password: "", //密码 | |||
| code: null, //图片验证码 | |||
| uuid: null, //识别uuid | |||
| }, | |||
| codeUrl: "", //图片验证码 | |||
| rememberPassword: false, //记住密码 1记住 2不记住 | |||
| windowHeight: 0, | |||
| }; | |||
| }, | |||
| created() { | |||
| this.getCode(); | |||
| let userName = Cookies.get("homesteadUserName"); // => 'value' | |||
| let password = Cookies.get("homesteadPassword"); // => undefined | |||
| if (userName != undefined) { | |||
| this.formData.username = userName; | |||
| this.rememberPassword = true; | |||
| } | |||
| if (password != undefined) { | |||
| this.formData.password = password; | |||
| } | |||
| }, | |||
| mounted() { | |||
| let windowHeight = document.documentElement.clientHeight; | |||
| this.windowHeight = windowHeight; | |||
| }, | |||
| methods: { | |||
| getCode() { | |||
| getCodeImg().then((res) => { | |||
| this.formData.uuid = res.uuid; | |||
| this.codeUrl = "data:image/gif;base64," + res.img; | |||
| }); | |||
| }, | |||
| handleLogin() { | |||
| //账号密码登录 | |||
| if (this.formData.username == "") { | |||
| this.$dialog.alert({ | |||
| message: "账号不能为空", | |||
| }); | |||
| return false; | |||
| } else if (this.formData.password == "") { | |||
| this.$dialog.alert({ | |||
| message: "密码不能为空", | |||
| }); | |||
| return false; | |||
| } else if (this.formData.code == "") { | |||
| this.$dialog.alert({ | |||
| message: "图片验证码不能为空", | |||
| }); | |||
| return false; | |||
| } | |||
| this.$store | |||
| .dispatch("Login", this.formData) | |||
| .then(() => { | |||
| if (this.rememberPassword == true) { | |||
| Cookies.set("homesteadUserName", this.formData.username, { | |||
| expires: 30, | |||
| }); | |||
| Cookies.set("homesteadPassword", this.formData.password, { | |||
| expires: 30, | |||
| }); | |||
| } | |||
| this.$router | |||
| .push({ path: this.redirect || "/homestead/index" }) | |||
| .catch(() => {}); | |||
| }) | |||
| .catch(() => { | |||
| this.loading = false; | |||
| this.getCode(); | |||
| }); | |||
| }, | |||
| }, | |||
| }; | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| .app-container { | |||
| display: flex; | |||
| width: 100vw; | |||
| height: 100vh; | |||
| flex-direction: column; | |||
| .login_header { | |||
| flex: 0.35; | |||
| background: url("../../assets/images/homestead/login_bg.jpg") center bottom | |||
| no-repeat; | |||
| background-size: 100% 100%; | |||
| } | |||
| .login_content { | |||
| flex: 0.65; | |||
| display: flex; | |||
| flex-direction: column; | |||
| .homestead_wrap { | |||
| flex: 0.28; | |||
| display: flex; | |||
| justify-content: center; /* 相对父元素水平居中 */ | |||
| align-items: center; /* 子元素相对父元素垂直居中 */ | |||
| flex-direction: column; | |||
| .key_title { | |||
| font-size: 56px; | |||
| margin-bottom: 10px; | |||
| } | |||
| .slogan { | |||
| font-size: 32px; | |||
| color: #9f9f9f; | |||
| } | |||
| } | |||
| .from_wrap { | |||
| flex: 0.72; | |||
| padding-bottom: 14%; | |||
| flex-direction: column; | |||
| display: flex; | |||
| margin: 0 40px; | |||
| .from_content { | |||
| flex: 1; | |||
| display: flex; | |||
| flex-direction: column; | |||
| padding-bottom: 14%; | |||
| .signIn_container { | |||
| flex: 1; | |||
| display: flex; | |||
| max-height: 90px; | |||
| margin-bottom: 24px; | |||
| &:last-child { | |||
| margin-bottom: 0; | |||
| } | |||
| .signIn_input_wrap { | |||
| flex: 1; | |||
| display: flex; | |||
| .verification_code { | |||
| flex: 1; | |||
| } | |||
| .verification_images { | |||
| flex: 0 0 220px; | |||
| margin-left: 20px; | |||
| img { | |||
| width: 100%; | |||
| height: 100%; | |||
| } | |||
| } | |||
| .van-cell { | |||
| border: 2px solid #f1f0f5; | |||
| border-radius: 46px; | |||
| font-size: 32px; | |||
| } | |||
| } | |||
| .remember_num { | |||
| margin-left: 14px; | |||
| font-size: 28px; | |||
| color: #3cbf5b; | |||
| } | |||
| } | |||
| } | |||
| .from_btn { | |||
| display: flex; | |||
| flex: 0 0 80px; | |||
| background: #3cbf5b; | |||
| border-radius: 40px; | |||
| font-size: 36px; | |||
| justify-content: center; /* 相对父元素水平居中 */ | |||
| align-items: center; /* 子元素相对父元素垂直居中 */ | |||
| color: #fff; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </style> | |||