/* * Copyright (c) 2018-2025, ztt All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the pig4cloud.com developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: ztt */ 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() } }) } 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' } ] }, { 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 } ] }