parent
5c10534930
commit
8853369f9f
Binary file not shown.
@ -0,0 +1,87 @@
|
||||
<!--
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-19 11:53:35
|
||||
* @LastEditTime: 2021-10-19 15:53:03
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/views/Login/index.vue
|
||||
-->
|
||||
<template>
|
||||
<div class="login-outter">
|
||||
<video class="f" playsinline="" autoplay muted loop="">
|
||||
<source src="../../assets/images/login/4.mp4" type="video/mp4">
|
||||
</video>
|
||||
<div class="login-inner">
|
||||
<div class="login-div">
|
||||
<loginForm @forgetPassword="handlerForget" v-if="dateType===1"></loginForm>
|
||||
<forgetPWD v-if="dateType===2" @reLogin="handlerRelogin"></forgetPWD>
|
||||
<resetPassword v-if="dateType===3" @reLogin="handlerRelogin"></resetPassword>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import loginForm from "./loginForm";
|
||||
import forgetPWD from "./forgetPWD";
|
||||
import resetPassword from "./resetPassword"
|
||||
export default {
|
||||
name: "Login",
|
||||
components: {
|
||||
loginForm,
|
||||
forgetPWD,
|
||||
resetPassword
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dateType: 1,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
handlerForget() {
|
||||
this.dateType = 2;
|
||||
},
|
||||
handlerRelogin() {
|
||||
this.dateType = 1;
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.login-outter {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
.f {
|
||||
position: absolute;
|
||||
min-width: 100%;
|
||||
min-height: 100%;
|
||||
width: auto;
|
||||
height: auto;
|
||||
-webkit-transition: 1s opacity;
|
||||
transition: 1s opacity;
|
||||
}
|
||||
.login-inner {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
background-color: transparent;
|
||||
.login-div {
|
||||
position: absolute;
|
||||
width: 560px;
|
||||
height: 560px;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -60%);
|
||||
background: rgba(12, 35, 66, 0.7);
|
||||
box-shadow: 0px 1px 40px 0px rgba(42, 112, 206, 0.5);
|
||||
border-radius: 8px;
|
||||
border: 3px solid;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,143 @@
|
||||
<!--
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-19 14:14:52
|
||||
* @LastEditTime: 2021-10-19 14:47:20
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/views/Login/loginForm/index.vue
|
||||
-->
|
||||
<template>
|
||||
<div class="lgf-outter">
|
||||
<a-form-model layout="horizontal" :model="form" :rules="rules">
|
||||
<a-form-model-item label="用户名" prop="phone">
|
||||
<a-input v-model="form.phone" placeholder="请输入账号" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="密码" prop="pwd">
|
||||
<a-input v-model="form.pwd" :type="pwdType" placeholder="请输入密码">
|
||||
<span slot="suffix" class="iconfont icon-zhengyan-21 login-eye" v-if="pwdType==='password'" @click="changePwdType"></span>
|
||||
<span slot="suffix" class="iconfont icon-in_biyan login-eye" v-else @click="changePwdType"></span>
|
||||
</a-input>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="验证码" prop="code">
|
||||
<a-input v-model="form.code" placeholder="请输入验证码">
|
||||
<a-button slot="addonAfter" style="width: 100px" @click="countdown" v-if="showCode">FNMAK</a-button>
|
||||
<a-button slot="addonAfter" style="width: 100px" v-else>{{count}}</a-button>
|
||||
</a-input>
|
||||
</a-form-model-item>
|
||||
</a-form-model>
|
||||
<div class="login-d1">
|
||||
<a-checkbox v-model="remCheck">
|
||||
<span style="color: #3373CC">记住密码</span>
|
||||
</a-checkbox>
|
||||
<span class="stn" style="color: #3373CC" @click="forgetPassword">忘记密码</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "loginForm",
|
||||
data() {
|
||||
const validatePass = (rule, value, callback) => {
|
||||
if (value === "") {
|
||||
callback(new Error("请输入密码"));
|
||||
} else {
|
||||
let reg=/^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{6,}$/;
|
||||
if (!reg.test(value)) {
|
||||
callback(new Error("密码由大小写字母、数字和特殊字符组成"));
|
||||
} else if(value.length < 8 || value.length > 16) {
|
||||
callback(new Error("密码8~16位"));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
};
|
||||
const validateAccount = (rule, value, callback) => {
|
||||
if (value === "") {
|
||||
callback(new Error("请输入账户"));
|
||||
} else {
|
||||
let reg=/^[0-9a-zA-Z]*$/;
|
||||
if (!reg.test(value)) {
|
||||
callback(new Error("用户名是英文字母或英文字母与数字的组合"));
|
||||
} else if(value.length < 8 || value.length > 13) {
|
||||
callback(new Error("账号在8~13位之间"));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
}
|
||||
const validateCode = (rule, value, callback) => {
|
||||
if (value === "") {
|
||||
callback(new Error("请输入验证码"));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
return {
|
||||
pwdType: "password",
|
||||
remCheck: false,
|
||||
count: 0,
|
||||
showCode: true,
|
||||
timer: null,
|
||||
form: {
|
||||
phone: "",
|
||||
pwd: "",
|
||||
code: "",
|
||||
},
|
||||
rules: {
|
||||
phone: [{ validator: validateAccount, trigger: "change" }],
|
||||
pwd: [{ validator: validatePass, trigger: "change" }],
|
||||
code: [{ validator: validateCode, trigger: "change" }],
|
||||
},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 改变是否可以看密码
|
||||
changePwdType() {
|
||||
this.pwdType = this.pwdType === "password" ? "" : "password";
|
||||
},
|
||||
// 倒计时
|
||||
countdown() {
|
||||
const TIME_COUNT = 60;
|
||||
if (!this.timer) {
|
||||
this.count = TIME_COUNT;
|
||||
this.showCode = false;
|
||||
this.timer = setInterval(() => {
|
||||
if (this.count > 0 && this.count <= TIME_COUNT) {
|
||||
this.count--;
|
||||
} else {
|
||||
this.showCode = true;
|
||||
clearInterval(this.timer);
|
||||
this.timer = null;
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
},
|
||||
//忘记密码
|
||||
forgetPassword(){
|
||||
this.$emit('forgetPassword')
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.lgf-outter {
|
||||
width: 380px;
|
||||
margin: 0 auto;
|
||||
margin-top: 80px;
|
||||
}
|
||||
.login-eye {
|
||||
font-size: 16px;
|
||||
color: #3373cc;
|
||||
cursor: pointer;
|
||||
}
|
||||
.login-d1 {
|
||||
width: 380px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin: 0 auto;
|
||||
.stn {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
</style>
|
Loading…
Reference in new issue