/
afanasevn
/
MaxSystems
Обзор
Документация
Войти
/
afanasevn
/
MaxSystems
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
client/src/lib/workLabels.ts
72 строки
2 KB
IBS\NAfanasev
tailwindc added
19 июн 2026, 16:07
19 июн 2026, 16:07
401be44
Код
Авторство
О чём код?
import type { VariantProps } from 'class-variance-authority' import type { badgeVariants } from '@/components/ui/badge' import type { Priority, WorkStatus, WorkType } from '../api/works' export type BadgeVariant = NonNullable<VariantProps<typeof badgeVariants>['variant']> export const workTypeLabels: Record<WorkType, string> = { Ticket: 'Обращение SD', Maintenance: 'ТО', Repair: 'Ремонт', Inspection: 'Диагностика', Installation: 'Монтаж', Project: 'Проект', Contractor: 'Подрядчик', Documentation: 'Документация', Purchase: 'Закупка', Warehouse: 'Склад', Organizational: 'Организационная', } export const workStatusLabels: Record<WorkStatus, string> = { New: 'Новая', Assigned: 'Назначена', InProgress: 'В работе', WaitingAccess: 'Ожидание доступа', WaitingMaterials: 'Ожидание ЗИП', WaitingContractor: 'Ожидание подрядчика', WaitingApproval: 'Ожидание согласования', Done: 'Выполнена', OnReview: 'На проверке', Closed: 'Закрыта', Cancelled: 'Отменена', } export const priorityLabels: Record<Priority, string> = { P1: 'P1 — критичный', P2: 'P2 — высокий', P3: 'P3 — средний', P4: 'P4 — низкий', Planned: 'Плановый', } const WAITING_STATUSES: WorkStatus[] = [ 'WaitingAccess', 'WaitingMaterials', 'WaitingContractor', 'WaitingApproval', ] const CLOSING_STATUSES: WorkStatus[] = ['Done', 'OnReview', 'Closed'] export function isWaitingStatus(status: WorkStatus): boolean { return WAITING_STATUSES.includes(status) } export function needsResult(status: WorkStatus): boolean { return CLOSING_STATUSES.includes(status) } export function workStatusVariant(status: WorkStatus): BadgeVariant { if (status === 'Closed') return 'success' if (status === 'Cancelled') return 'secondary' if (WAITING_STATUSES.includes(status)) return 'warning' if (status === 'InProgress' || status === 'Assigned') return 'info' if (status === 'Done' || status === 'OnReview') return 'purple' return 'secondary' } /** @deprecated use workStatusVariant with Badge */ export function workStatusClass(status: WorkStatus): string { return workStatusVariant(status) }