@jdlinker/system
Version:
jdLinker 系统模块
397 lines (394 loc) • 8.35 kB
text/typescript
import { BasicColumn, FormSchema, render } from '@jdlinker/ui';
import { getAllRolesList } from './user.api';
import { rules } from '@jdlinker/func';
export const columns: BasicColumn[] = [
{
title: '用户账号',
dataIndex: 'username',
width: 120
},
{
title: '用户姓名',
dataIndex: 'realname',
width: 100
},
{
title: '头像',
dataIndex: 'avatar',
width: 120,
// customRender: render.renderAvatar
customRender: ({ text }) => {
if (!text) {
return text;
}
return render.renderImage({ text });
}
},
{
title: '性别',
dataIndex: 'sex',
width: 80,
sorter: true,
customRender: ({ text }) => {
return render.renderDict(text, 'sex');
}
},
{
title: '生日',
dataIndex: 'birthday',
width: 100
},
{
title: '手机号',
dataIndex: 'phone',
width: 100
},
{
title: '部门',
width: 150,
dataIndex: 'orgCodeTxt'
},
{
title: '负责部门',
width: 150,
dataIndex: 'departIds_dictText'
},
{
title: '状态',
dataIndex: 'status',
width: 80,
customRender: ({ text }) => {
return render.renderDict(text, 'status');
}
}
];
export const recycleColumns: BasicColumn[] = [
{
title: '用户账号',
dataIndex: 'username',
width: 100
},
{
title: '用户姓名',
dataIndex: 'realname',
width: 100
},
{
title: '头像',
dataIndex: 'avatar',
width: 80,
customRender: render.renderAvatar
},
{
title: '性别',
dataIndex: 'sex',
width: 80,
sorter: true,
customRender: ({ text }) => {
return render.renderDict(text, 'sex');
}
}
];
export const searchFormSchema: FormSchema[] = [
{
label: '用户账号',
field: 'username',
component: 'JInput'
},
{
label: '真实名称',
field: 'realname',
component: 'JInput'
},
{
label: '手机号码',
field: 'phone',
component: 'JInput'
},
{
label: '性别',
field: 'sex',
component: 'JDictSelectTag',
componentProps: {
dictCode: 'sex',
placeholder: '请选择性别',
stringToNumber: true
}
},
{
label: '状态',
field: 'status',
component: 'JDictSelectTag',
componentProps: {
dictCode: 'user_status',
placeholder: '请选择状态',
stringToNumber: true
}
}
];
// @ts-ignore
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: getAllRolesList,
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: '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',
// @ts-ignore
rules: rules.rule('email', false)
},
{
label: '手机号码',
field: 'phone',
component: 'Input',
dynamicRules: ({ model, schema }) => {
return [
{ ...rules.duplicateCheckRule('sys_user', 'phone', model, schema, true)[0] }
// { pattern: /^1[3|4|5|7|8|9][0-9]\d{8}$/, 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 formPasswordSchema: FormSchema[] = [
{
label: '用户账号',
field: 'username',
component: 'Input',
componentProps: { readOnly: true }
},
{
label: '登录密码',
field: 'password',
component: 'StrengthMeter',
componentProps: {
placeholder: '请输入登录密码'
},
rules: [
{
required: true,
message: '请输入登录密码'
}
]
},
{
label: '确认密码',
field: 'confirmPassword',
component: 'InputPassword',
dynamicRules: ({ values }) => rules.confirmPassword(values, true)
}
];
export const formAgentSchema: FormSchema[] = [
{
label: '',
field: 'id',
component: 'Input',
show: false
},
{
field: 'userName',
label: '用户名',
component: 'Input',
componentProps: {
readOnly: true,
allowClear: false
}
},
{
field: 'agentUserName',
label: '代理人用户名',
required: true,
component: 'JSelectUser',
componentProps: {
rowKey: 'username',
labelKey: 'realname',
maxSelectCount: 10
}
},
{
field: 'startTime',
label: '代理开始时间',
component: 'DatePicker',
required: true,
componentProps: {
showTime: true,
valueFormat: 'YYYY-MM-DD HH:mm:ss',
placeholder: '请选择代理开始时间'
}
},
{
field: 'endTime',
label: '代理结束时间',
component: 'DatePicker',
required: true,
componentProps: {
showTime: true,
valueFormat: 'YYYY-MM-DD HH:mm:ss',
placeholder: '请选择代理结束时间'
}
},
{
field: 'status',
label: '状态',
component: 'JDictSelectTag',
defaultValue: '1',
componentProps: {
dictCode: 'valid_status',
type: 'radioButton'
}
}
];