From c7bd1a3fd46b5d5f887ce4f674387294ee1e8ccd Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期二, 31 十月 2023 17:09:29 +0800 Subject: [PATCH] 添加手机校验 --- src/views/Login.vue | 201 ++++++++++++++++++++++++++++++++++---------------- 1 files changed, 136 insertions(+), 65 deletions(-) diff --git a/src/views/Login.vue b/src/views/Login.vue index 04a3ee7..588b32d 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -6,58 +6,82 @@ </div> <div class="login"> - <a-form + <a-form-model layout="horizontal" - :form="form" - @submit="handleSubmit" + :model="form" + ref="ruleForm" + :rules="rules" class="login-form" > - <a-tabs default-active-key="1" @change="callback"> - <a-tab-pane key="1" tab="用户名登录"> - <a-form-item> - <a-input - placeholder="请输入用户" - size="large" - > - <a-icon slot="prefix" type="user" style="color:rgba(0,0,0,.25)" /> - </a-input> - </a-form-item> - <a-form-item> - <a-input-password - type="password" - placeholder="请输入密码" - size="large" - > - <a-icon slot="prefix" type="lock" style="color:rgba(0,0,0,.25)" /> - </a-input-password> - </a-form-item> - </a-tab-pane> - <a-tab-pane key="2" tab="验证码登录" force-render> - <a-form-item> - <a-input - placeholder="手机号" - size="large" - > - <a-icon slot="prefix" type="mobile" style="color:rgba(0,0,0,.25)" /> - </a-input> - </a-form-item> - <a-form-item> - <a-row :gutter="8"> - <a-col :span="17"> - <a-input placeholder="验证码"> - <a-icon slot="prefix" type="mobile" style="color:rgba(0,0,0,.25)" /> - </a-input> - </a-col> - <a-col :span="7"> - <a-button style="width: 100%">获取验证码</a-button> - </a-col> - </a-row> - </a-form-item> - </a-tab-pane> - </a-tabs> + <a-form-model-item ref="name" prop="name"> + <a-input + placeholder="请输入用户名" + size="large" + v-model="form.name" + autocomplete="new-password" + > + <a-icon slot="prefix" type="user" style="color:rgba(0,0,0,.25)" /> + </a-input> + </a-form-model-item> + <a-form-model-item ref="pwd" prop="pwd"> + <a-input-password + type="password" + placeholder="请输入密码" + size="large" + v-model="form.pwd" + autocomplete="new-password" + > + <a-icon slot="prefix" type="lock" style="color:rgba(0,0,0,.25)" /> + </a-input-password> + </a-form-model-item> +<!-- <a-tabs default-active-key="1" @change="callback">--> +<!-- <a-tab-pane key="1" tab="用户名登录">--> +<!-- <a-form-item>--> +<!-- <a-input--> +<!-- placeholder="请输入用户"--> +<!-- size="large"--> +<!-- v-model="form.name"--> +<!-- >--> +<!-- <a-icon slot="prefix" type="user" style="color:rgba(0,0,0,.25)" />--> +<!-- </a-input>--> +<!-- </a-form-item>--> +<!-- <a-form-item>--> +<!-- <a-input-password--> +<!-- type="password"--> +<!-- placeholder="请输入密码"--> +<!-- size="large"--> +<!-- v-model="form.pwd"--> +<!-- >--> +<!-- <a-icon slot="prefix" type="lock" style="color:rgba(0,0,0,.25)" />--> +<!-- </a-input-password>--> +<!-- </a-form-item>--> +<!-- </a-tab-pane>--> +<!-- <a-tab-pane key="2" tab="验证码登录" force-render>--> +<!-- <a-form-item>--> +<!-- <a-input--> +<!-- placeholder="手机号"--> +<!-- size="large"--> +<!-- >--> +<!-- <a-icon slot="prefix" type="mobile" style="color:rgba(0,0,0,.25)" />--> +<!-- </a-input>--> +<!-- </a-form-item>--> +<!-- <a-form-item>--> +<!-- <a-row :gutter="8">--> +<!-- <a-col :span="17">--> +<!-- <a-input placeholder="验证码">--> +<!-- <a-icon slot="prefix" type="mobile" style="color:rgba(0,0,0,.25)" />--> +<!-- </a-input>--> +<!-- </a-col>--> +<!-- <a-col :span="7">--> +<!-- <a-button style="width: 100%">获取验证码</a-button>--> +<!-- </a-col>--> +<!-- </a-row>--> +<!-- </a-form-item>--> +<!-- </a-tab-pane>--> +<!-- </a-tabs>--> <div style="margin-bottom: 20px"> - <a-checkbox :checked="true" style="color:#fff;">自动登录</a-checkbox> - <a style="float: right">忘记密码</a> + <a-checkbox :checked="saveAccount" style="color:#fff;" @change="isSave">记住密码</a-checkbox> +<!-- <a style="float: right">忘记密码</a>--> </div> <a-form-item style="text-align: center"> <a-button @@ -65,43 +89,90 @@ html-type="submit" style="width: 100%" size="large" + @click="handleSubmit" + :loading="isLoading" > 登录 </a-button> </a-form-item> <center><p>技术支持:中国科学院</p></center> - </a-form> + </a-form-model> </div> </div> </template> <script> + +import { login, getMenuAdmin } from "@/api/login"; +import Cookies from 'js-cookie'; +import {Base64} from "js-base64"; + export default { name: "login", data() { return { + isLoading: false, + saveAccount: false, // hasErrors, - form: this.$form.createForm(this), + // form: this.$form.createForm(this), + form: { + name: '', + pwd: '' + }, + rules: { + name: [{ required: true, message: '请输入用户名', trigger: 'blur' }], + pwd: [{ required: true, message: '请输入用户密码', trigger: 'blur' }] + }, + menu: [] }; }, - mounted() { - this.$nextTick(() => { - this.form.validateFields(); - }); + created() { + // this.$nextTick(() => { + // this.form.validateFields(); + // }); + this.hasUserCodeOrPassword() }, methods: { - handleSubmit(e) { - e.preventDefault(); - this.form.validateFields((err, values) => { - if (!err) { - console.log("Received values of form: ", values); - this.$router.push({ name: "default" }); + hasUserCodeOrPassword(){ + if (localStorage.getItem('userName') && localStorage.getItem('userPassword')) { + this.form.name = localStorage.getItem('userName') + this.form.pwd = Base64.decode(localStorage.getItem('userPassword'))//解密 + this.saveAccount = true + } + }, + + isSave(e){ + const t = this + t.saveAccount = !t.saveAccount + }, + + handleSubmit() { + this.$refs.ruleForm.validate(async (valid) => { + if (valid) { + this.isLoading = true + const res = await login(this.form) + if (res.data.code === 100) { + Cookies.set('resTk', res.data.data.tk); + Cookies.set('resUid', res.data.data.uid); + Cookies.set('userInfo',JSON.stringify(res.data.data),{expires: 7}) + if (this.saveAccount) { + localStorage.setItem('userName', this.form.name) + localStorage.setItem('userPassword', Base64.encode(this.form.pwd)) + } else { + localStorage.removeItem('userName') + localStorage.removeItem('userPassword') + } + this.$router.push('/home') + } else { + this.$message.warning(res.data.msg); + } + this.isLoading = false + } else { + console.log('error submit!!'); + return false; } }); - }, - callback(key) { - console.log(key); - }, + } }, }; </script> @@ -129,7 +200,7 @@ } .hedaer { margin: 0px auto; - padding-top:100px; + padding-top:200px; width: 1000px; text-align: center; text-shadow:0 0 1px #000; -- Gitblit v1.9.2