- 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
66 lines
4.2 KiB
Vue
66 lines
4.2 KiB
Vue
<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>
|