| | |
| | | }, |
| | | rules: { |
| | | password: [ |
| | | { required: true, message: '请输入密码' } |
| | | { required: true, message: '请输入密码', trigger: 'blur' }, |
| | | { validator: this.validatePassword, trigger: 'blur' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | validatePassword (rule, value, callback) { |
| | | if (!value) { |
| | | callback(new Error('请输入密码')) |
| | | } else { |
| | | const lengthValid = /^.{6,20}$/.test(value) |
| | | const hasLetter = /[a-zA-Z]/.test(value) |
| | | const hasNumber = /[0-9]/.test(value) |
| | | const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value) |
| | | |
| | | const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length |
| | | |
| | | if (!lengthValid) { |
| | | callback(new Error('密码长度需为6到20个字符')) |
| | | } else if (typesCount < 2) { |
| | | callback(new Error('密码需包含字母、数字及特殊字符中的至少两种')) |
| | | } else { |
| | | callback() // 验证通过 |
| | | } |
| | | } |
| | | }, |
| | | /** |
| | | * 打开窗口 |
| | | * |
| | | * @param user 目标用户 |
| | | */ |
| | | open (user) { |
| | | this.user = user |
| | | this.visible = true |
| | |
| | | this.$refs.form.resetFields() |
| | | }) |
| | | }, |
| | | // 确认重置密码 |
| | | /** |
| | | * 确认重置密码 |
| | | */ |
| | | confirm () { |
| | | if (this.isWorking) { |
| | | return |