|  |  |  | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="头像" prop="avatar" required> | 
|---|
|  |  |  | <el-radio-group v-model="form.avatar" class="form-item-avatar"> | 
|---|
|  |  |  | <el-radio label="/avatar/man.png" border><img src="/avatar/man.png" alt=""></el-radio> | 
|---|
|  |  |  | <el-radio label="/avatar/woman.png" border><img src="/avatar/woman.png" alt=""></el-radio> | 
|---|
|  |  |  | <el-radio label="avatar/man.png" border><img src="@/assets/avatar/man.png" alt=""></el-radio> | 
|---|
|  |  |  | <el-radio label="avatar/woman.png" border><img src="@/assets/avatar/woman.png" alt=""></el-radio> | 
|---|
|  |  |  | </el-radio-group> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item v-if="form.id == null" label="初始密码" prop="password" required> | 
|---|
|  |  |  | 
|---|
|  |  |  | { required: true, message: '请输入姓名' } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | password: [ | 
|---|
|  |  |  | { required: true, message: '请输入密码' } | 
|---|
|  |  |  | { required: true, message: '请输入密码', trigger: 'blur' }, | 
|---|
|  |  |  | { validator: this.validatePassword, trigger: 'blur' } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | avatar: [ | 
|---|
|  |  |  | { required: true, message: '请选择用户头像' } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 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() // 验证通过 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 打开窗口 | 
|---|
|  |  |  | * | 
|---|