80 lines
2.6 KiB
TypeScript
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]),
|
|
)
|