| | |
| | | * 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 |
| | | }] |
| | | } |