-
-
+
+
-
-
-
-
-
{{ $t('catalog.filters.quantity') }}
-
-
- {{ $t('units.t') }}
-
-
-
+
+
+
+
+ {{ $t('catalog.filters.quantity') }}
+ {{ quantity || '—' }} {{ quantity ? $t('units.t') : '' }}
+
+
@@ -449,6 +439,22 @@ const switchLocalePath = useSwitchLocalePath()
const { t } = useI18n()
const { chatOpen } = toRefs(props)
+const router = useRouter()
+
+// Check if we're on a quote step page
+const isQuoteStepPage = computed(() => {
+ const path = route.path
+ return path.includes('/catalog/product') ||
+ path.includes('/catalog/destination') ||
+ path.includes('/catalog/quantity') ||
+ path.includes('/catalog/results')
+})
+
+// Navigate to search results (quote mode step flow)
+const navigateToSearch = () => {
+ router.push(localePath('/catalog/product'))
+}
+
// Check if client area tab is active
const isClientAreaTabActive = (path: string) => {
const currentPath = route.path
diff --git a/app/pages/catalog/destination.vue b/app/pages/catalog/destination.vue
new file mode 100644
index 0000000..a0a878c
--- /dev/null
+++ b/app/pages/catalog/destination.vue
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('catalog.step', { n: 2 }) }}
+
{{ $t('catalog.steps.selectDestination') }}
+
+
{{ hubs.length }}
+
+
+
+
+
+
+ {{ productName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('catalog.empty.noHubs') }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/pages/catalog/product.vue b/app/pages/catalog/product.vue
new file mode 100644
index 0000000..86acb01
--- /dev/null
+++ b/app/pages/catalog/product.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('catalog.step', { n: 1 }) }}
+
{{ $t('catalog.steps.selectProduct') }}
+
+
{{ products.length }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('catalog.empty.noProducts') }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/pages/catalog/quantity.vue b/app/pages/catalog/quantity.vue
new file mode 100644
index 0000000..425f721
--- /dev/null
+++ b/app/pages/catalog/quantity.vue
@@ -0,0 +1,150 @@
+
+
+
+
+
+ {}"
+ />
+
+
+
+
+
+
+
+
+
+
{{ $t('catalog.step', { n: 3 }) }}
+
{{ $t('catalog.steps.setQuantity') }}
+
+
+
+
+
+ {{ productName }}
+
+
+
+
+ {{ hubName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/pages/catalog/results.vue b/app/pages/catalog/results.vue
new file mode 100644
index 0000000..99556a8
--- /dev/null
+++ b/app/pages/catalog/results.vue
@@ -0,0 +1,242 @@
+
+
+
+
+
+ {}"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('catalog.steps.results') }}
+
{{ $t('catalog.headers.offers') }}
+
+
{{ offers.length }}
+
+
+
+
+
+
+ {{ productName }}
+
+
+
+
+ {{ hubName }}
+
+
+ {{ qty }} {{ $t('units.t') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('catalog.empty.noOffers') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/i18n/locales/en/catalog.json b/i18n/locales/en/catalog.json
index ad5225e..32d4e4f 100644
--- a/i18n/locales/en/catalog.json
+++ b/i18n/locales/en/catalog.json
@@ -87,7 +87,8 @@
"selectSupplier": "Select supplier",
"enterQty": "Quantity (t)",
"search": "Search",
- "clear": "Clear"
+ "clear": "Clear",
+ "findOffers": "Find offers"
},
"explore": {
"title": "Explore the market",
@@ -95,6 +96,14 @@
},
"offers": "offer | offers",
"list": "List",
- "applyFilter": "Apply filter"
+ "applyFilter": "Apply filter",
+ "step": "Step {n}",
+ "steps": {
+ "selectProduct": "What are you looking for?",
+ "selectDestination": "Where to deliver?",
+ "setQuantity": "How much do you need?",
+ "results": "Results",
+ "newSearch": "New search"
+ }
}
}
\ No newline at end of file
diff --git a/i18n/locales/ru/catalog.json b/i18n/locales/ru/catalog.json
index 62379b8..2091329 100644
--- a/i18n/locales/ru/catalog.json
+++ b/i18n/locales/ru/catalog.json
@@ -87,7 +87,8 @@
"selectSupplier": "Выберите поставщика",
"enterQty": "Количество (т)",
"search": "Найти",
- "clear": "Очистить"
+ "clear": "Очистить",
+ "findOffers": "Найти предложения"
},
"explore": {
"title": "Исследуйте рынок",
@@ -95,6 +96,14 @@
},
"offers": "предложение | предложения | предложений",
"list": "Список",
- "applyFilter": "Применить фильтр"
+ "applyFilter": "Применить фильтр",
+ "step": "Шаг {n}",
+ "steps": {
+ "selectProduct": "Что ищете?",
+ "selectDestination": "Куда доставить?",
+ "setQuantity": "Сколько нужно?",
+ "results": "Результаты",
+ "newSearch": "Новый поиск"
+ }
}
}
\ No newline at end of file