lrj
3 天以前 7ba080d35812e6db7bd5aa8f88161c02653eb6c1
web/src/views/employee/EmployeeForm.vue
@@ -39,16 +39,27 @@
        />
      </el-form-item>
      <el-form-item label="重置密码" prop="password" v-if="isEdit">
        <el-input
          v-model="form.password"
          type="password"
          placeholder="请输入新密码(6-20位)"
          maxlength="20"
          show-password
          @focus="handlePasswordFocus"
          @input="handlePasswordInput"
        />
      <el-form-item label="密码" prop="password" v-if="isEdit">
        <div style="display: flex; align-items: center; gap: 10px;">
          <el-input
            v-model="form.password"
            type="password"
            :placeholder="isPasswordModified ? '请输入新密码(6-20位,包含字母和数字)' : '点击重置密码按钮来修改密码'"
            maxlength="20"
            show-password
            :disabled="!isPasswordModified"
            @focus="handlePasswordFocus"
            @input="handlePasswordInput"
            style="flex: 1;"
          />
          <el-button
            type="primary"
            size="small"
            @click="handleResetPassword"
          >
            重置密码
          </el-button>
        </div>
      </el-form-item>
      <el-form-item label="员工角色" prop="roleId">
@@ -164,10 +175,16 @@
  password: [
    { 
      validator: (rule, value, callback) => {
        if (!value) {
        // 编辑模式下,如果是占位符密码且未修改,则跳过验证
        if (isEdit.value && value === '••••••••' && !isPasswordModified.value) {
          callback()
          return
        }
        if (!value || value.trim() === '') {
          callback(new Error('请输入登录密码'))
        } else if (value.length < 6 || value.length > 20) {
          callback(new Error('密码长度应在6-20个字符之间'))
        } else if (!/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*?&]{6,}$/.test(value)) {
          callback(new Error('密码至少6个字符,必须包含字母和数字'))
        } else {
          callback()
        }
@@ -235,6 +252,13 @@
  }
}
// 处理重置密码
const handleResetPassword = () => {
  form.password = ''
  isPasswordModified.value = true
  ElMessage.success('密码已清空,请输入新密码')
}
// 提交表单
const handleSubmit = async () => {
  if (!formRef.value) return