78 lines
3.5 KiB
TypeScript
78 lines
3.5 KiB
TypeScript
import {
|
||
List,
|
||
Datagrid,
|
||
TextField,
|
||
TextInput,
|
||
TopToolbar,
|
||
FilterButton,
|
||
CreateButton,
|
||
ExportButton,
|
||
NumberField,
|
||
DateField,
|
||
SelectField,
|
||
ReferenceField,
|
||
SelectArrayInput,
|
||
SelectInput,
|
||
ReferenceInput,
|
||
AutocompleteInput
|
||
} from 'react-admin';
|
||
|
||
const repairKindChoices = [
|
||
{ id: 'TO', name: 'Техническое обслуживание' },
|
||
{ id: 'TR', name: 'Текущий ремонт' },
|
||
{ id: 'TRE', name: 'Текущий расширенный ремонт' },
|
||
{ id: 'KR', name: 'Капитальный ремонт' },
|
||
{ id: 'AR', name: 'Аварийный ремонт' },
|
||
{ id: 'MP', name: 'Метрологическая поверка' },
|
||
];
|
||
|
||
const statusChoices = [
|
||
{ id: 'Draft', name: 'Черновик' },
|
||
{ id: 'Approved', name: 'Утверждена' },
|
||
{ id: 'InWork', name: 'В работе' },
|
||
{ id: 'Done', name: 'Выполнена' },
|
||
{ id: 'Cancelled', name: 'Отменена' },
|
||
];
|
||
|
||
const repairOrderFilters = [
|
||
<TextInput key="q" source="q" label="Поиск" alwaysOn />,
|
||
<TextInput key="number" source="number" label="Номер заявки" />,
|
||
<ReferenceInput key="equipmentId" source="equipmentId" reference="equipment" label="Оборудование">
|
||
<AutocompleteInput optionText={(record) => record.inventoryNumber ? `${record.inventoryNumber} — ${record.name ?? record.inventoryNumber}` : (record.name ?? record.id)} filterToQuery={(searchText) => ({ q: searchText })} />
|
||
</ReferenceInput>,
|
||
<SelectInput key="repairKind" source="repairKind" label="Вид ремонта" choices={repairKindChoices} emptyText="Все" />,
|
||
<SelectArrayInput key="status" source="status" label="Статус" choices={statusChoices} />,
|
||
<TextInput key="contractor" source="contractor" label="Подрядная организация (если внешний ремонт)" />,
|
||
<TextInput key="description" source="description" label="Описание работ / дефекта" />,
|
||
<TextInput key="notes" source="notes" label="Примечания" />
|
||
];
|
||
|
||
const RepairOrderListActions = () => (
|
||
<TopToolbar>
|
||
<FilterButton filters={repairOrderFilters} />
|
||
<CreateButton />
|
||
<ExportButton />
|
||
</TopToolbar>
|
||
);
|
||
|
||
export const RepairOrderList = () => (
|
||
<List actions={<RepairOrderListActions />} filters={repairOrderFilters} sort={{ field: 'number', order: 'ASC' }}>
|
||
<Datagrid rowClick="show">
|
||
<TextField source="id" label="id" />
|
||
<TextField source="number" label="Номер заявки" />
|
||
<ReferenceField source="equipmentId" reference="equipment" label="Оборудование" link="show">
|
||
<TextField source="inventoryNumber" />
|
||
</ReferenceField>
|
||
<SelectField source="repairKind" label="Вид ремонта" choices={repairKindChoices} />
|
||
<SelectField source="status" label="Статус" choices={statusChoices} />
|
||
<DateField source="plannedAt" label="Плановая дата начала" />
|
||
<DateField source="startedAt" label="Фактическая дата начала" />
|
||
<DateField source="completedAt" label="Фактическая дата завершения" />
|
||
<TextField source="contractor" label="Подрядная организация (если внешний ремонт)" />
|
||
<NumberField source="engineHoursAtRepair" label="Наработка на момент ремонта, моточасов" />
|
||
<TextField source="description" label="Описание работ / дефекта" />
|
||
<TextField source="notes" label="Примечания" />
|
||
</Datagrid>
|
||
</List>
|
||
);
|