oa_front/src/views/system/user/formSchemas.tsx

122 lines
2.4 KiB
TypeScript

import AvatarUpload from './AvatarUpload.vue';
import type { FormSchema } from '@/components/core/schema-form/';
import Api from '@/api/';
export const userSchemas: FormSchema<API.UserDto>[] = [
{
field: 'avatar',
component: () => AvatarUpload,
label: '头像',
},
{
field: 'deptId',
component: 'TreeSelect',
label: '所属部门',
componentProps: {
fieldNames: {
label: 'name',
value: 'id',
},
getPopupContainer: () => document.body,
},
rules: [{ required: true, type: 'number' }],
},
{
field: 'roleIds',
component: 'Select',
label: '所属角色',
rules: [{ required: true, type: 'array' }],
componentProps: {
mode: 'multiple',
request: async () => {
const { items = [] } = await Api.systemRole.roleList({});
return items.map((n) => ({ label: n.name, value: n.id }));
},
},
},
{
field: 'username',
component: 'Input',
label: '登录用户名',
rules: [{ required: true }],
},
{
field: 'password',
label: '密码',
component: 'InputPassword',
componentProps: {
placeholder: '无需修改请留空',
},
},
{
field: 'nickname',
component: 'Input',
rules: [{ required: true }],
label: '呢称(姓名)',
colProps: {
span: 12,
},
},
{
field: 'email',
component: 'Input',
label: '邮箱',
colProps: {
span: 12,
},
},
{
field: 'phone',
component: 'Input',
label: '手机',
colProps: {
span: 12,
},
},
{
field: 'remark',
component: 'InputTextArea',
label: '备注',
},
{
field: 'status',
component: 'RadioGroup',
label: '状态',
defaultValue: 1,
componentProps: {
options: [
{
label: '启用',
value: 1,
},
{
label: '禁用',
value: 0,
},
],
},
},
];
/**
* @description 更新用户密码
*/
export const updatePswSchemas: FormSchema[] = [
{
field: 'password',
component: 'Input',
label: '新密码',
rules: [{ required: true, type: 'string' }],
},
];
/**
* @description 将用户转移部门
*/
export const transferUserSchemas: FormSchema[] = [
{
field: 'departmentId',
component: 'TreeSelect',
label: '转移至',
rules: [{ required: true, type: 'number' }],
},
];