<template> <view class="ChangePassword"> <view class="phone"> 当前手机号: <input type="text" v-model="phone" disabled /> </view> <view class="list"> <view class="item"> <input type="password" placeholder="设置新密码" v-model="password" /> </view> <view class="item"> <input type="password" placeholder="确认新密码" v-model="password2" /> </view> <view class="item acea-row row-between-wrapper"> <input type="text" placeholder="填写验证码" class="codeIput" v-model="captcha" /> <button class="code font-color-red" :disabled="disabled" :class="disabled === true ? 'on' : ''" @click="code" >{{ text }}</button> </view> </view> <view class="confirmBnt bg-color-red" @click="confirm">确认修改</view> </view> </template> <style scoped lang="less"> .ChangePassword .phone input { width: 2*100rpx; text-align: center; } </style> <script> // import { mapGetters } from "vuex"; import sendVerifyCode from "@/mixins/SendVerifyCode"; import attrs, { required, alpha_num, chs_phone } from "@/utils/validate"; import { validatorDefaultCatch } from "@/utils/dialog"; import { registerReset, registerVerify, getUserInfo } from "@/api/user"; export default { name: "ChangePassword", components: {}, props: {}, data: function() { return { password: "", password2: "", captcha: "", phone: "", //隐藏几位数的手机号; yphone: "" //手机号; }; }, mixins: [sendVerifyCode], // computed: mapGetters(["userInfo"]), mounted: function() { this.getUserInfo(); }, methods: { getUserInfo: function() { let that = this; getUserInfo().then(res => { that.yphone = res.data.phone; let reg = /^(\d{3})\d*(\d{4})$/; that.phone = that.yphone.replace(reg, "$1****$2"); }); }, async confirm() { let that = this; const { password, password2, captcha } = that; try { await that .$validator({ password: [ required(required.message("密码")), attrs.range([6, 16], attrs.range.message("密码")), alpha_num(alpha_num.message("密码")) ], captcha: [ required(required.message("验证码")), alpha_num(alpha_num.message("验证码")) ] }) .validate({ password, captcha }); } catch (e) { return validatorDefaultCatch(e); } if (password !== password2) return uni.showToast({ title: '两次密码不一致', icon: "none", duration: 2000 }); registerReset({ account: that.yphone, captcha: that.captcha, password: that.password }) .then(res => { uni.showToast({ title: res.msg, icon: "none", duration: 2000 }); // that.$yrouter.push({ path: "/pages/user/Login/index" }); }) .catch(res => { uni.showToast({ title: res.msg, icon: "none", duration: 2000 }); }); }, async code() { let that = this; const { yphone } = that; try { await that .$validator({ yphone: [ required(required.message("手机号码")), chs_phone(chs_phone.message()) ] }) .validate({ yphone }); } catch (e) { return validatorDefaultCatch(e); } registerVerify({ phone: yphone }) .then(res => { uni.showToast({ title: res.msg, icon: "none", duration: 2000 }); that.sendCode(); }) .catch(res => { uni.showToast({ title: res.msg, icon: "none", duration: 2000 }); }); } } }; </script>