08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / project / hivuiLogin / components / resetPw.vue
caibinghong on 8 Jun 2022 @retrun calc 去掉无些方法
<template>
  <div class="reset">
		<el-form ref="registerForm" :model="registerForm" :rules="registerRules">
			<el-form-item class="register_field" prop="phone">
				<el-input ref="phone" v-model="registerForm.phone" type="text" placeholder="手机号"></el-input>
			</el-form-item>
			<el-form-item class="register_field" prop="pw">
				<el-input ref="pw" v-model="registerForm.pw" type="password" placeholder="请输入密码"></el-input>
				<pwStrength class="register_pwStrength" v-model="registerForm.pw" :minPw="minPw"></pwStrength>
			</el-form-item>
			<el-form-item class="register_field register_row" prop="captcha">
				<el-input ref="captcha" v-model="registerForm.captcha" type="text" placeholder="验证码"></el-input>
				<el-button class="register_capbtn" :loading="captchaLoading" type="primary" :disabled="captchaTimer==0?false:true" @click="getCaptcha">{{captchaTimer==0?"获取验证码":(captchaTimer+"s后再次获取")}}</el-button>
			</el-form-item>
			<el-button class="register_submit" :loading="resetLoading" type="primary" @click="reset">重置密码</el-button>
		</el-form>
  </div>
</template>

<script>
import { getToken } from "../utils/auth";
import { captcha,resetpw } from "../api/user";
import pwStrength from "../components/pwStrength";
import md5 from "js-md5";
export default {
  name: "resetPw",
  components: {
	  pwStrength
  },
  data() {
    return {
      registerForm: {
				phone: "",
				pw: "",
				captcha: "",
				email: "",
			},
			minPw:4,
				copyRight: "版权所有 © 2021-2025 中海创科技(福建)集团有限公司",
				registerRules: {
					phone: [
				{ required: true, message: "请填写手机号", trigger: "blur" },
				{ validator: (rule, value, callback)=>{
					if (!/^[1]([3-9])[0-9]{9}$/.test(value)) {
						callback(new Error('请填写正确的手机格式!'));
					} else {
						callback();
					}
				}, trigger: "blur" },
			],
					pw: [
				{ required: true, message: "请填写密码", trigger: "blur" },
				{ validator: (rule, value, callback)=>{
					if ((value+"").length<this.minPw) {
						callback(new Error('请输入至少'+this.minPw+'位密码!'));
					} else {
						callback();
					}
				}, trigger: "blur" },
			],
					captcha: [
						{ required: true, message: "请填写验证码", trigger: "blur" }
					],
					/*email: [
						{ required: true, message: "请填写邮箱地址", trigger: "blur" }
					]*/
			},
			captchaLoading:false,
			resetLoading:false,
			captchaTimer:0,
    };
  },
  model: {
    prop: "value",
    event: "valuechange"
  },
  props: {
    value: {
      type: Object
    }
  },
  computed: {},
  mounted() {},
  methods: {
		//获取验证码
		getCaptcha(){
			this.$refs.registerForm.validateField("phone",(errMsg) => {
				if (!errMsg) {
					let me=this;
					me.captchaTimer=60;
					me.captchaLoading=true;
					captcha({
					    "phone": me.registerForm.phone
					}).then(res=>{
						me.captchaLoading=false;
					}).catch(err=>{
						me.captchaLoading=false;
					});
					let _timer=setInterval(()=>{
						--me.captchaTimer;
						if(me.captchaTimer==0){
							clearInterval(_timer);
						}
					},1000);
				}
			});
		},
		//重置
		reset(){
			let me=this;
			this.$refs.registerForm.validate((valid) => {
				if (valid) {
					me.resetLoading=true;
					debugger;resetpw({
					    "phone":me.registerForm.phone,
					    "password":md5(me.registerForm.pw),
					    "captcha":me.registerForm.captcha,
					}).then(res=>{
						me.$message({
							message: '密码重置成功',
							type: 'success'
						});
						me.$emit("resetCb");
					}).catch(err=>{
						me.resetLoading=false;
					});
				}
			});
		},
  },
};
</script>
<style lang="scss" scoped>
	@function px2vw($px) {
		@return ($px / 1920) * 100vw;
	}
	.reset{
		padding:px2vw(20) px2vw(50);
		.register_field{
			margin-bottom: px2vw(22);
			line-height:px2vw(48);
			::v-deep.el-input__inner{
				line-height:px2vw(48);
				height:px2vw(48);
			}
			.register_pwStrength{
				margin-top:px2vw(10);
			}
			&.register_row{
				::v-deep.el-form-item__content{
					display: flex;
					align-items:center;
				}
				
			}
		}
		.register_capbtn{
			width: px2vw(200);
			height: px2vw(48);
			line-height: px2vw(48);
			padding: 0;
		}
		.register_submit{
			height: px2vw(48);
			line-height: px2vw(48);
			padding-top: 0;
			width: 100%;
			margin-top:px2vw(10);
		}
		.register_tips{
			padding-top: px2vw(20);
			span{
				color:#3486d2;
				cursor: pointer;
			}
		}
	}
</style>