import type { VbenFormSchema } from '#/adapter/form'; import { z } from '#/adapter/form'; import { getDeptList } from '#/api/system/dept'; import { $t } from '#/locales'; /** * 获取编辑表单的字段配置。如果没有使用多语言,可以直接export一个数组常量 */ export function useSchema(): VbenFormSchema[] { return [ { component: 'Input', fieldName: 'name', label: $t('system.dept.deptName'), rules: z .string() .min(2, $t('ui.formRules.minLength', [$t('system.dept.deptName'), 2])) .max( 20, $t('ui.formRules.maxLength', [$t('system.dept.deptName'), 20]), ), }, { component: 'ApiTreeSelect', componentProps: { allowClear: true, api: getDeptList, class: 'w-full', labelField: 'name', valueField: 'id', childrenField: 'children', }, fieldName: 'pid', label: $t('system.dept.parentDept'), }, { component: 'RadioGroup', componentProps: { buttonStyle: 'solid', options: [ { label: $t('common.enabled'), value: 1 }, { label: $t('common.disabled'), value: 0 }, ], optionType: 'button', }, defaultValue: 1, fieldName: 'status', label: $t('system.dept.status'), }, { component: 'Textarea', componentProps: { maxLength: 50, rows: 3, showCount: true, }, fieldName: 'remark', label: $t('system.dept.remark'), rules: z .string() .max(50, $t('ui.formRules.maxLength', [$t('system.dept.remark'), 50])) .optional(), }, ]; }