localhost_oa_front/src/views/vehicle-usage/formSchemas.ts

100 lines
3.0 KiB
TypeScript

import Api from '@/api';
import type { FormSchema } from '@/components/core/schema-form/';
import { DictEnum } from '@/enums/dictEnum';
import { useDictStore } from '@/store/modules/dict';
import { debounce } from 'lodash-es';
const { getDictItemsByCode } = useDictStore();
export const formSchemas: FormSchema<API.VehicleUsageDto>[] = [
// {
// field: 'name',
// component: 'Input',
// label: '车辆使用名称',
// rules: [{ required: true, type: 'string' }],
// colProps: {
// span: 12,
// },
// },
// {
// label: '单位',
// component: 'Select',
// field: 'unitId',
// colProps: {
// span: 12,
// },
// componentProps: ({ formInstance, schema, formModel }) => ({
// showSearch: true,
// filterOption: (input: string, option: any) => {
// return option.label.indexOf(input) >= 0;
// },
// fieldNames: {
// label: 'label',
// value: 'value',
// },
// options: getDictItemsByCode(DictEnum.Unit).map((item) => ({
// value: item.id,
// label: item.label,
// })),
// getPopupContainer: () => document.body,
// defaultActiveFirstOption: true,
// }),
// },
// {
// field: 'companyId',
// component: 'Select',
// label: '所属公司',
// helpMessage: '如未找到对应公司,请先去公司管理添加公司。',
// componentProps: ({ formInstance, schema }) => ({
// showSearch: true,
// filterOption: false,
// fieldNames: {
// label: 'label',
// value: 'value',
// },
// options: [],
// getPopupContainer: () => document.body,
// defaultActiveFirstOption: true,
// onChange: async (value) => {
// if (!value) {
// formInstance?.setFieldsValue({ companyId: undefined });
// const options = await getCompanyOptions();
// const newSchema = {
// field: schema.field,
// componentProps: {
// options,
// },
// };
// formInstance?.updateSchema([newSchema]);
// }
// },
// request: () => {
// return getCompanyOptions();
// },
// onSearch: debounce(async (keyword) => {
// schema.loading = true;
// const newSchema = {
// field: schema.field,
// componentProps: {
// options: [] as LabelValueOptions,
// },
// };
// formInstance?.updateSchema([newSchema]);
// const options = await getCompanyOptions(keyword).finally(() => (schema.loading = false));
// newSchema.componentProps.options = options;
// formInstance?.updateSchema([newSchema]);
// }, 500),
// }),
// },
];
const getCompanyOptions = async (keyword?: string): Promise<LabelValueOptions> => {
const { items: result } = await Api.company.companyList({ pageSize: 100, name: keyword });
return (
result?.map((item) => ({
label: item.name,
value: item.id,
})) || []
);
};