Files
interview-demo-code/frontend/admin/src/views/StoreView.vue
Nikita Kiselev ecf4df363d feat: add product interaction mode selector with three scenarios
- Add ItemToggleButton component for 3-way toggle in admin panel
- Add product_interaction_mode setting with options: order, manager, browser
- Add manager_username setting for Telegram manager contact
- Remove store_enabled setting, replaced with product_interaction_mode
- Create migration to automatically migrate store_enabled to product_interaction_mode
- Update Product.vue to handle all three interaction modes
- Update Dock.vue to show cart button only when product_interaction_mode is 'order'
- Rename 'Магазин' tab to 'Витрина' in admin panel
- Remove 'Разрешить покупки' option (now controlled via product_interaction_mode)
- Set default product_interaction_mode to 'browser'
- Update StoreDTO to remove enableStore field
- Update SettingsHandler to return product_interaction_mode instead of store_enabled
2025-12-25 18:02:38 +03:00

66 lines
4.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<ItemToggleButton
label="Сценарий взаимодействия с товаром"
v-model="settings.items.store.product_interaction_mode"
:items="productInteractionOptions"
>
<p>Выберите, что будет происходить при нажатии на кнопку товара:
<br><strong>Создание заявки / заказа</strong> Пользователи смогут добавить товар и оформить заявку на покупку прямо в Telegram. Заказ фиксируется в OpenCart, а дальнейшая работа с клиентом происходит вручную.
<br><strong>Кнопка связи с менеджером</strong> пользователи увидят кнопку для связи с менеджером в Telegram. Менеджера можно указать в поле "Username менеджера" ниже.
<br><strong>Открытие товара на сайте</strong> кнопка откроет страницу товара на основном сайте OpenCart во внешнем браузере.</p>
</ItemToggleButton>
<ItemInput
label="Username менеджера"
v-model="settings.items.store.manager_username"
placeholder="@username"
>
<p>Укажите username (например, @username) для связи с менеджером. Это может быть личный аккаунт или группа, куда покупатели могут писать. Используется только при выборе режима "Кнопка связи с менеджером".</p>
</ItemInput>
<ItemBool label="Промокоды" v-model="settings.items.store.feature_coupons">
<p>
Позволяет использовать стандартные
<a :href="`/admin/index.php?route=marketing/coupon&user_token=${userToken}`"
target="_blank">купоны OpenCart</a>
для предоставления скидок при оформлении заказа.</p>
</ItemBool>
<ItemBool label="Подарочные сертификаты" v-model="settings.items.store.feature_vouchers">
<p>
Позволяет использовать стандартные
<a :href="`/admin/index.php?route=sale/voucher&user_token=${userToken}`"
target="_blank">подарочные сертификаты OpenCart</a> при оформлении заказа.</p>
</ItemBool>
<ItemBool label="Показывать кнопку «Показать товары из текущей категории»" v-model="settings.items.store.show_category_products_button">
<p>Включите, чтобы пользователи видели кнопку «Показать товары из "название текущей категории"» на странице категории, если у неё есть дочерние категории. Настройка работает только для страниц категорий с дочерними категориями, при отключении кнопка скрыта.</p>
</ItemBool>
</template>
<script setup>
import {useSettingsStore} from "@/stores/settings.js";
import ItemBool from "@/components/Settings/ItemBool.vue";
import ItemSelect from "@/components/Settings/ItemSelect.vue";
import ItemInput from "@/components/Settings/ItemInput.vue";
import ItemToggleButton from "@/components/Settings/ItemToggleButton.vue";
import ItemProductsSelect from "@/components/Settings/ItemProductsSelect.vue";
import ItemCategoriesSelect from "@/components/Settings/ItemCategoriesSelect.vue";
const settings = useSettingsStore();
const mainpage_categories_options = {
no_categories: 'Отображать только кнопку "Каталог"',
latest10: 'Последние 10 категорий',
featured: 'Избранные категории (задать в поле ниже)',
};
const productInteractionOptions = {
order: 'Создание заявки / заказа',
manager: 'Кнопка связи с менеджером',
browser: 'Открытие товара на сайте',
};
const userToken = window.TeleCart.user_token;
</script>