|
|
@ -3,7 +3,8 @@ import { FormSchema } from '/@/components/Table'; |
|
|
|
|
|
|
|
|
|
|
|
import { rules } from '/@/utils/helper/validator'; |
|
|
|
import { rules } from '/@/utils/helper/validator'; |
|
|
|
import { render } from '/@/utils/common/renderUtils'; |
|
|
|
import { render } from '/@/utils/common/renderUtils'; |
|
|
|
import {getAllRolesListYxNoByExcludeTenant} from "/@/views/system/user/userYX.api"; |
|
|
|
import {getAllRolesListYxNoByExcludeTenant} from "/@/views/system/userdep/userYX.api"; |
|
|
|
|
|
|
|
import {getAllRolesListNoByTenant, getAllTenantList} from "/@/views/system/user/user.api"; |
|
|
|
export const columns: BasicColumn[] = [ |
|
|
|
export const columns: BasicColumn[] = [ |
|
|
|
{ |
|
|
|
{ |
|
|
|
title: '用户账号', |
|
|
|
title: '用户账号', |
|
|
@ -142,7 +143,199 @@ export const searchFormSchema: FormSchema[] = [ |
|
|
|
colProps: { span: 6 }, |
|
|
|
colProps: { span: 6 }, |
|
|
|
}, |
|
|
|
}, |
|
|
|
]; |
|
|
|
]; |
|
|
|
|
|
|
|
export const formSchema: FormSchema[] = [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '', |
|
|
|
|
|
|
|
field: 'id', |
|
|
|
|
|
|
|
component: 'Input', |
|
|
|
|
|
|
|
show: false, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '用户账号', |
|
|
|
|
|
|
|
field: 'username', |
|
|
|
|
|
|
|
component: 'Input', |
|
|
|
|
|
|
|
dynamicDisabled: ({ values }) => { |
|
|
|
|
|
|
|
return !!values.id; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
dynamicRules: ({ model, schema }) => rules.duplicateCheckRule('sys_user', 'username', model, schema, true), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '登录密码', |
|
|
|
|
|
|
|
field: 'password', |
|
|
|
|
|
|
|
component: 'StrengthMeter', |
|
|
|
|
|
|
|
rules: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
required: true, |
|
|
|
|
|
|
|
message: '请输入登录密码', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '确认密码', |
|
|
|
|
|
|
|
field: 'confirmPassword', |
|
|
|
|
|
|
|
component: 'InputPassword', |
|
|
|
|
|
|
|
dynamicRules: ({ values }) => rules.confirmPassword(values, true), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '用户姓名', |
|
|
|
|
|
|
|
field: 'realname', |
|
|
|
|
|
|
|
required: true, |
|
|
|
|
|
|
|
component: 'Input', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '工号', |
|
|
|
|
|
|
|
field: 'workNo', |
|
|
|
|
|
|
|
required: true, |
|
|
|
|
|
|
|
component: 'Input', |
|
|
|
|
|
|
|
dynamicRules: ({ model, schema }) => rules.duplicateCheckRule('sys_user', 'work_no', model, schema, true), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '职务', |
|
|
|
|
|
|
|
field: 'post', |
|
|
|
|
|
|
|
required: false, |
|
|
|
|
|
|
|
component: 'JSelectPosition', |
|
|
|
|
|
|
|
componentProps: { |
|
|
|
|
|
|
|
rowKey: 'code', |
|
|
|
|
|
|
|
labelKey: 'name', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '角色', |
|
|
|
|
|
|
|
field: 'selectedroles', |
|
|
|
|
|
|
|
component: 'ApiSelect', |
|
|
|
|
|
|
|
componentProps: { |
|
|
|
|
|
|
|
mode: 'multiple', |
|
|
|
|
|
|
|
api: getAllRolesListNoByTenant, |
|
|
|
|
|
|
|
labelField: 'roleName', |
|
|
|
|
|
|
|
valueField: 'id', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '所属部门', |
|
|
|
|
|
|
|
field: 'selecteddeparts', |
|
|
|
|
|
|
|
component: 'JSelectDept', |
|
|
|
|
|
|
|
componentProps: ({ formActionType, formModel }) => { |
|
|
|
|
|
|
|
return { |
|
|
|
|
|
|
|
sync: false, |
|
|
|
|
|
|
|
checkStrictly: true, |
|
|
|
|
|
|
|
defaultExpandLevel: 2, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onSelect: (options, values) => { |
|
|
|
|
|
|
|
const { updateSchema } = formActionType; |
|
|
|
|
|
|
|
//所属部门修改后更新负责部门下拉框数据
|
|
|
|
|
|
|
|
updateSchema([ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
field: 'departIds', |
|
|
|
|
|
|
|
componentProps: { options }, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
//所属部门修改后更新负责部门数据
|
|
|
|
|
|
|
|
formModel.departIds && (formModel.departIds = formModel.departIds.filter((item) => values.value.indexOf(item) > -1)); |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '租户', |
|
|
|
|
|
|
|
field: 'relTenantIds', |
|
|
|
|
|
|
|
component: 'ApiSelect', |
|
|
|
|
|
|
|
componentProps: { |
|
|
|
|
|
|
|
mode: 'multiple', |
|
|
|
|
|
|
|
api: getAllTenantList, |
|
|
|
|
|
|
|
numberToString: true, |
|
|
|
|
|
|
|
labelField: 'name', |
|
|
|
|
|
|
|
valueField: 'id', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '身份', |
|
|
|
|
|
|
|
field: 'userIdentity', |
|
|
|
|
|
|
|
component: 'RadioGroup', |
|
|
|
|
|
|
|
defaultValue: 1, |
|
|
|
|
|
|
|
componentProps: ({ formModel }) => { |
|
|
|
|
|
|
|
return { |
|
|
|
|
|
|
|
options: [ |
|
|
|
|
|
|
|
{ label: '普通用户', value: 1, key: '1' }, |
|
|
|
|
|
|
|
{ label: '上级', value: 2, key: '2' }, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
onChange: () => { |
|
|
|
|
|
|
|
formModel.userIdentity == 1 && (formModel.departIds = []); |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '负责部门', |
|
|
|
|
|
|
|
field: 'departIds', |
|
|
|
|
|
|
|
component: 'Select', |
|
|
|
|
|
|
|
componentProps: { |
|
|
|
|
|
|
|
mode: 'multiple', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
ifShow: ({ values }) => values.userIdentity == 2, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '头像', |
|
|
|
|
|
|
|
field: 'avatar', |
|
|
|
|
|
|
|
component: 'JImageUpload', |
|
|
|
|
|
|
|
componentProps: { |
|
|
|
|
|
|
|
fileMax: 1, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '生日', |
|
|
|
|
|
|
|
field: 'birthday', |
|
|
|
|
|
|
|
component: 'DatePicker', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '性别', |
|
|
|
|
|
|
|
field: 'sex', |
|
|
|
|
|
|
|
component: 'JDictSelectTag', |
|
|
|
|
|
|
|
componentProps: { |
|
|
|
|
|
|
|
dictCode: 'sex', |
|
|
|
|
|
|
|
placeholder: '请选择性别', |
|
|
|
|
|
|
|
stringToNumber: true, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '邮箱', |
|
|
|
|
|
|
|
field: 'email', |
|
|
|
|
|
|
|
component: 'Input', |
|
|
|
|
|
|
|
dynamicRules: ({ model, schema }) => { |
|
|
|
|
|
|
|
return [ |
|
|
|
|
|
|
|
{ ...rules.duplicateCheckRule('sys_user', 'email', model, schema, true)[0] }, |
|
|
|
|
|
|
|
{ ...rules.rule('email', false)[0] }, |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '手机号码', |
|
|
|
|
|
|
|
field: 'phone', |
|
|
|
|
|
|
|
component: 'Input', |
|
|
|
|
|
|
|
dynamicRules: ({ model, schema }) => { |
|
|
|
|
|
|
|
return [ |
|
|
|
|
|
|
|
{ ...rules.duplicateCheckRule('sys_user', 'phone', model, schema, true)[0] }, |
|
|
|
|
|
|
|
{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式有误' }, |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '座机', |
|
|
|
|
|
|
|
field: 'telephone', |
|
|
|
|
|
|
|
component: 'Input', |
|
|
|
|
|
|
|
rules: [{ pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '请输入正确的座机号码' }], |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// label: '工作流引擎',
|
|
|
|
|
|
|
|
// field: 'activitiSync',
|
|
|
|
|
|
|
|
// defaultValue: 1,
|
|
|
|
|
|
|
|
// component: 'JDictSelectTag',
|
|
|
|
|
|
|
|
// componentProps: {
|
|
|
|
|
|
|
|
// dictCode: 'activiti_sync',
|
|
|
|
|
|
|
|
// type: 'radio',
|
|
|
|
|
|
|
|
// stringToNumber: true,
|
|
|
|
|
|
|
|
// },
|
|
|
|
|
|
|
|
// },
|
|
|
|
|
|
|
|
]; |
|
|
|
export const formSchemaYX: FormSchema[] = [ |
|
|
|
export const formSchemaYX: FormSchema[] = [ |
|
|
|
{ |
|
|
|
{ |
|
|
|
label: '', |
|
|
|
label: '', |
|
|
|