From 77b98539ea4cdd52cabff67a5a3678dfdec313c6 Mon Sep 17 00:00:00 2001 From: Ruslan Bakiev Date: Mon, 6 Apr 2026 11:32:49 +0700 Subject: [PATCH] Refine manager calendar cards --- app/pages/client-orders/index.vue | 181 +++++++++++++++++++++++++----- 1 file changed, 155 insertions(+), 26 deletions(-) diff --git a/app/pages/client-orders/index.vue b/app/pages/client-orders/index.vue index 06ecad6..ebe0087 100644 --- a/app/pages/client-orders/index.vue +++ b/app/pages/client-orders/index.vue @@ -85,6 +85,35 @@ function getOrderGroup(order: ManagerOrderItem) { return 'CLOSED'; } +function orderGroupLabel(group: StatusFilter) { + if (group === 'NEW') { + return 'Заявка'; + } + if (group === 'PRICED') { + return 'Расчёт'; + } + if (group === 'IN_PROGRESS') { + return 'В работе'; + } + if (group === 'CLOSED') { + return 'Закрыт'; + } + return 'Все'; +} + +function orderGroupBadgeClass(group: StatusFilter) { + if (group === 'NEW') { + return 'manager-calendar-order-card__status manager-calendar-order-card__status--new'; + } + if (group === 'PRICED') { + return 'manager-calendar-order-card__status manager-calendar-order-card__status--priced'; + } + if (group === 'IN_PROGRESS') { + return 'manager-calendar-order-card__status manager-calendar-order-card__status--progress'; + } + return 'manager-calendar-order-card__status manager-calendar-order-card__status--closed'; +} + function matchesFilter(order: ManagerOrderItem) { if (statusFilter.value === 'ALL') { return true; @@ -168,6 +197,7 @@ const calendarOptions = computed(() => ({ }, events: filteredOrders.value.map((order: ManagerOrderItem) => { const customer = customerCardMeta(order.customerId); + const group = getOrderGroup(order); return { id: order.id, @@ -180,6 +210,8 @@ const calendarOptions = computed(() => ({ fallbackAvatarSrc: customer.fallbackAvatarSrc, initials: customer.initials, orderCode: formatOrderCode(order.code), + orderGroupLabel: orderGroupLabel(group), + orderGroupClass: orderGroupBadgeClass(group), totalPriceLabel: formatPrice(order.totalPrice) ?? 'Цена уточняется', }, }; @@ -188,22 +220,27 @@ const calendarOptions = computed(() => ({ const customerName = escapeHtml(event.extendedProps.customerName || ''); const avatarSrc = event.extendedProps.avatarSrc || event.extendedProps.fallbackAvatarSrc; const orderCode = escapeHtml(event.extendedProps.orderCode || ''); + const orderGroupLabel = escapeHtml(event.extendedProps.orderGroupLabel || ''); + const orderGroupClass = escapeHtml(event.extendedProps.orderGroupClass || ''); const totalPriceLabel = escapeHtml(event.extendedProps.totalPriceLabel || ''); const initials = escapeHtml(event.extendedProps.initials || ''); return { html: `
-
-
- ${avatarSrc - ? `${customerName}` - : `${initials}`} -
-
-
${orderCode}
-
${customerName}
+
+
+
+ ${avatarSrc + ? `${customerName}` + : `${initials}`} +
+
+
${customerName}
+
${orderCode}
+
+ ${orderGroupLabel}
${totalPriceLabel}
@@ -272,7 +309,7 @@ const calendarOptions = computed(() => ({ Заказы по текущим условиям не найдены.
-
+
@@ -294,26 +331,35 @@ const calendarOptions = computed(() => ({