diff --git a/app/resources/js/components/deals/DealDetailDrawer.vue b/app/resources/js/components/deals/DealDetailDrawer.vue index aca2f48a..9528a57e 100644 --- a/app/resources/js/components/deals/DealDetailDrawer.vue +++ b/app/resources/js/components/deals/DealDetailDrawer.vue @@ -20,12 +20,14 @@ */ import { computed, defineAsyncComponent, ref, watch } from 'vue'; import type { MockDeal } from '../../composables/mockDeals'; -import { type DealEvent, MOCK_EVENTS, eventTypeIcon, eventTypeLabel } from '../../composables/mockDealEvents'; +import { type DealEvent, MOCK_EVENTS } from '../../composables/mockDealEvents'; import { mapApiDealEvent } from '../../composables/dealsApiMapper'; import * as dealsApi from '../../api/deals'; import * as remindersApi from '../../api/reminders'; import type { ApiReminder } from '../../api/reminders'; import { useLeadStatusesStore } from '../../stores/leadStatuses'; +import DealDetailHero from './DealDetailHero.vue'; +import DealDetailTimeline from './DealDetailTimeline.vue'; // Sprint 2 Phase B / O-perf-06: ReminderDialog гейтится через v-model — chunk-split. const ReminderDialog = defineAsyncComponent(() => import('../reminders/ReminderDialog.vue')); @@ -53,12 +55,6 @@ function formatCost(cost: number): string { return new Intl.NumberFormat('ru-RU').format(cost) + ' ₽'; } -function formatRelative(minutes: number): string { - if (minutes < 60) return `${minutes} мин назад`; - if (minutes < 60 * 24) return `${Math.floor(minutes / 60)} ч назад`; - return `${Math.floor(minutes / (60 * 24))} д назад`; -} - // Activity timeline: при наличии tenant_id делаем GET /api/deals/{id} и // показываем реальные events. На fail / без tenant_id — fallback на MOCK_EVENTS. const events = ref([...MOCK_EVENTS]); @@ -190,38 +186,7 @@ defineExpose({