Files
shop-server/client/src/shared/lib/order-status-data.ts
T

80 lines
2.6 KiB
TypeScript

export type StatusColor = 'warning' | 'success' | 'info' | 'error'
export type StatusIconName =
| 'banknote'
| 'check-circle'
| 'package-search'
| 'package'
| 'package-check'
| 'store'
| 'x-circle'
export interface OrderStatusData {
code: string
label: string
iconName: StatusIconName
color: StatusColor
description: string
}
export const ORDER_STATUS_DATA: ReadonlyArray<OrderStatusData> = [
{
code: 'PENDING_PAYMENT',
label: 'Ожидает оплаты',
iconName: 'banknote',
color: 'warning',
description:
'Заказ оформлен и подтверждён администратором. Оплатите онлайн через ЮKassa или дождитесь получения (для самовывоза с оплатой при получении).',
},
{
code: 'PAID',
label: 'Оплачен',
iconName: 'check-circle',
color: 'success',
description: 'Оплата получена. Админ скоро возьмёт заказ в работу.',
},
{
code: 'IN_PROGRESS',
label: 'Подготовка к отправке',
iconName: 'package-search',
color: 'info',
description: 'Админ готовит заказ к отправке или выдаче. Скоро статус обновится.',
},
{
code: 'SHIPPED',
label: 'Отправлен',
iconName: 'package',
color: 'info',
description:
'Заказ передан в службу доставки. Трек-номер для отслеживания(при наличии) будет указан в сообщении админа.',
},
{
code: 'READY_FOR_PICKUP',
label: 'Готов к получению',
iconName: 'store',
color: 'success',
description: 'Заказ готов к самовывозу. Приезжайте в согласованное время.',
},
{
code: 'DONE',
label: 'Завершён',
iconName: 'package-check',
color: 'success',
description: 'Заказ получен. Вы можете оставить отзыв в личном кабинете.',
},
{
code: 'CANCELLED',
label: 'Отменён',
iconName: 'x-circle',
color: 'error',
description: 'Заказ отменён. Если оплата была произведена, средства вернутся на карту.',
},
]
export function getOrderStatusData(code: string): OrderStatusData | undefined {
return ORDER_STATUS_DATA.find((s) => s.code === code)
}
export const ORDER_STATUS_MAP: Record<string, string> = Object.fromEntries(
ORDER_STATUS_DATA.map((s) => [s.code, s.label]),
)