Crunchy
2025-01-13 01d423865ae5eddf91f35c8526f5683c3b430870
src/const/crud/admin/user.js
@@ -14,148 +14,190 @@
 * this software without specific prior written permission.
 * Author: ztt
 */
import {getDetails} from '@/api/admin/user'
import { getDetails } from '@/api/admin/user'
var validateUsername = (rule, value, callback) => {
  getDetails(value).then(response => {
    if (window.boxType === 'edit') callback()
    const result = response.data.data
    if (result !== null) {
      callback(new Error('用户名已经存在'))
    } else {
      callback()
    }
  })
    getDetails(value).then((response) => {
        if (window.boxType === 'edit') callback()
        const result = response.data.data
        if (result !== null) {
            callback(new Error('用户名已经存在'))
        } else {
            callback()
        }
    })
}
export const tableOption = {
  border: true,
  index: true,
  indexLabel: '序号',
  stripe: true,
  menuAlign: 'center',
  searchMenuSpan:6,
  editBtn: false,
  delBtn: false,
  align: 'center',
  addBtn: false,
  column: [{
    fixed: true,
    label: 'id',
    prop: 'userId',
    span: 24,
    hide: true,
    editDisabled: true,
    addDisplay: false
  }, {
    fixed: true,
    label: '用户名',
    prop: 'username',
    editDisabled: true,
    slot: true,
    search: true,
    span: 24,
    rules: [{
      required: true,
      message: '请输入用户名'
    },
      {
        min: 3,
        max: 20,
        message: '长度在 3 到 20 个字符',
        trigger: 'blur'
      },
      {validator: validateUsername, trigger: 'blur'}
    border: true,
    index: true,
    indexLabel: '序号',
    stripe: true,
    menuAlign: 'center',
    searchMenuSpan: 6,
    editBtn: false,
    delBtn: false,
    align: 'center',
    addBtn: false,
    column: [
        {
            fixed: true,
            label: 'id',
            prop: 'userId',
            span: 24,
            hide: true,
            editDisabled: true,
            addDisplay: false
        },
        {
            fixed: true,
            label: '用户名',
            prop: 'username',
            editDisabled: true,
            slot: true,
            search: true,
            span: 24,
            rules: [
                {
                    required: true,
                    message: '请输入用户名'
                },
                {
                    min: 3,
                    max: 20,
                    message: '长度在 3 到 20 个字符',
                    trigger: 'blur'
                },
                { validator: validateUsername, trigger: 'blur' }
            ]
        },
        {
            label: '密码',
            prop: 'password',
            type: 'password',
            hide: true,
            slot: true,
            formslot: true,
            span: 24,
            rules: [
                {
                    required: true,
                    message: '请输入密码',
                    trigger: 'blur'
                },
                {
                    validator: (rule, value, callback) => {
                        let strength = 0
                        if (value.length >= 8) strength++
                        if (/\d/.test(value)) strength++
                        if (/[a-z]/.test(value)) strength++
                        if (/[A-Z]/.test(value)) strength++
                        if (/[!@#$%^&*]/.test(value)) strength++
                        if (strength < 4) {
                            callback(new Error('密码强度不够,请确保密码包含:大小写字母、数字和特殊字符,且长度不少于8位'))
                        } else {
                            callback()
                        }
                    },
                    trigger: 'blur'
                }
            ]
        },
        {
            label: '所属分组',
            prop: 'deptId',
            formslot: true,
            slot: true,
            span: 24,
            hide: true,
            dataType: 'number',
            rules: [
                {
                    required: true,
                    message: '请选择部门',
                    trigger: 'change'
                }
            ]
        },
        {
            label: '员工',
            prop: 'staffInfo',
            formslot: true,
            span: 24,
            rules: [
                {
                    required: true,
                    message: '请选择员工',
                    trigger: 'change'
                }
            ]
        },
        {
            label: '手机号',
            prop: 'phone',
            type: 'tel',
            value: '',
            span: 24,
            rules: [
                {
                    min: 11,
                    max: 11,
                    message: '长度在 11 个字符',
                    trigger: 'blur'
                }
            ]
        },
        {
            label: '角色',
            prop: 'role',
            formslot: true,
            slot: true,
            overHidden: true,
            span: 24,
            rules: [
                {
                    required: true,
                    message: '请选择角色',
                    trigger: 'blur'
                }
            ]
        },
        {
            label: '状态',
            prop: 'lockFlag',
            type: 'radio',
            slot: true,
            border: true,
            span: 24,
            rules: [
                {
                    required: true,
                    message: '请选择状态',
                    trigger: 'blur'
                }
            ],
            dicData: [
                {
                    label: '有效',
                    value: '0'
                },
                {
                    label: '锁定',
                    value: '9'
                }
            ]
        },
        {
            width: 180,
            label: '创建时间',
            prop: 'createTime',
            type: 'datetime',
            format: 'yyyy-MM-dd HH:mm',
            valueFormat: 'yyyy-MM-dd HH:mm:ss',
            editDisabled: true,
            addDisplay: false,
            span: 24
        }
    ]
  }, {
    label: '密码',
    prop: 'password',
    type: 'password',
    value: '',
    hide: true,
    span: 24,
    rules: [{
      min: 6,
      max: 20,
      required: true,
      message: '长度在 6 到 20 个字符',
      trigger: 'blur'
    }]
  }, {
    label: '所属分组',
    prop: 'deptId',
    formslot: true,
    slot: true,
    span: 24,
    hide: true,
    dataType:"number",
    rules: [{
      required: true,
      message: '请选择部门',
      trigger: 'change'
    }]
  }, {
    label: '员工',
    prop: 'staffInfo',
    formslot: true,
    span: 24,
    rules: [{
      required: true,
      message: '请选择员工',
      trigger: 'change'
    }]
  }, {
    label: '手机号',
    prop: 'phone',
    type: 'tel',
    value: '',
    span: 24,
    rules: [{
      min: 11,
      max: 11,
      message: '长度在 11 个字符',
      trigger: 'blur'
    }]
  }, {
    label: '角色',
    prop: 'role',
    formslot: true,
    slot: true,
    overHidden: true,
    span: 24,
    rules: [{
      required: true,
      message: '请选择角色',
      trigger: 'change'
    }]
  }, {
    label: '状态',
    prop: 'lockFlag',
    type: 'radio',
    slot: true,
    border:true,
    span: 24,
    rules: [{
      required: true,
      message: '请选择状态',
      trigger: 'change'
    }],
    dicData: [{
      label: '有效',
      value: '0'
    }, {
      label: '锁定',
      value: '9'
    }]
  }, {
    width: 180,
    label: '创建时间',
    prop: 'createTime',
    type: 'datetime',
    format: 'yyyy-MM-dd HH:mm',
    valueFormat: 'yyyy-MM-dd HH:mm:ss',
    editDisabled: true,
    addDisplay: false,
    span: 24
  }]
}