|
@@ -1,7 +1,7 @@
|
|
|
div(class="admin-settings")
|
|
div(class="admin-settings")
|
|
|
div(class="admin-settings__header")
|
|
div(class="admin-settings__header")
|
|
|
- h1(class="admin-settings__title") Настройки системы
|
|
|
|
|
- p(class="admin-settings__subtitle") Управление доменами, языками и основными параметрами
|
|
|
|
|
|
|
+ h1(class="admin-settings__title") Настройки бренда и домена
|
|
|
|
|
+ p(class="admin-settings__subtitle") Управление логотипом, названием компании и контактной информацией
|
|
|
|
|
|
|
|
div(class="admin-settings__content")
|
|
div(class="admin-settings__content")
|
|
|
div(class="admin-settings__tabs")
|
|
div(class="admin-settings__tabs")
|
|
@@ -13,140 +13,99 @@ div(class="admin-settings")
|
|
|
) {{ tab.name }}
|
|
) {{ tab.name }}
|
|
|
|
|
|
|
|
div(class="admin-settings__tab-content")
|
|
div(class="admin-settings__tab-content")
|
|
|
- // Вкладка доменов
|
|
|
|
|
- div(v-if="activeTab === 'domains'" class="admin-settings__domains")
|
|
|
|
|
|
|
+ // Вкладка бренда
|
|
|
|
|
+ div(v-if="activeTab === 'brand'" class="admin-settings__brand")
|
|
|
div(class="admin-settings__section")
|
|
div(class="admin-settings__section")
|
|
|
- h2(class="admin-settings__section-title") Управление доменами
|
|
|
|
|
- p(class="admin-settings__section-description") Настройка мультидоменной структуры магазина
|
|
|
|
|
-
|
|
|
|
|
- div(class="admin-settings__domains-list")
|
|
|
|
|
- div(
|
|
|
|
|
- v-for="domain in domains"
|
|
|
|
|
- :key="domain._id"
|
|
|
|
|
- class="admin-settings__domain-item"
|
|
|
|
|
- )
|
|
|
|
|
- div(class="admin-settings__domain-info")
|
|
|
|
|
- h3(class="admin-settings__domain-name") {{ domain.domain }}
|
|
|
|
|
- p(class="admin-settings__domain-desc") {{ domain.companyName }}
|
|
|
|
|
- div(class="admin-settings__domain-actions")
|
|
|
|
|
- button(
|
|
|
|
|
- @click="editDomain(domain)"
|
|
|
|
|
- class="admin-settings__btn admin-settings__btn--secondary"
|
|
|
|
|
- ) Редактировать
|
|
|
|
|
- button(
|
|
|
|
|
- @click="deleteDomain(domain._id)"
|
|
|
|
|
- class="admin-settings__btn admin-settings__btn--danger"
|
|
|
|
|
- ) Удалить
|
|
|
|
|
-
|
|
|
|
|
- button(
|
|
|
|
|
- @click="showDomainModal = true"
|
|
|
|
|
- class="admin-settings__btn admin-settings__btn--primary"
|
|
|
|
|
- ) Добавить домен
|
|
|
|
|
-
|
|
|
|
|
- // Вкладка языков
|
|
|
|
|
- div(v-if="activeTab === 'languages'" class="admin-settings__languages")
|
|
|
|
|
- div(class="admin-settings__section")
|
|
|
|
|
- h2(class="admin-settings__section-title") Настройка языков
|
|
|
|
|
- p(class="admin-settings__section-description") Управление мультиязычностью сайта
|
|
|
|
|
-
|
|
|
|
|
- div(class="admin-settings__languages-list")
|
|
|
|
|
- div(
|
|
|
|
|
- v-for="lang in languages"
|
|
|
|
|
- :key="lang.code"
|
|
|
|
|
- class="admin-settings__language-item"
|
|
|
|
|
- )
|
|
|
|
|
- div(class="admin-settings__language-info")
|
|
|
|
|
- span(class="admin-settings__language-code") {{ lang.code.toUpperCase() }}
|
|
|
|
|
- span(class="admin-settings__language-name") {{ lang.name }}
|
|
|
|
|
- div(class="admin-settings__language-actions")
|
|
|
|
|
- button(
|
|
|
|
|
- @click="toggleLanguage(lang.code)"
|
|
|
|
|
- :class="getLanguageBtnClass(lang)"
|
|
|
|
|
- ) {{ lang.enabled ? 'Отключить' : 'Включить' }}
|
|
|
|
|
-
|
|
|
|
|
- // Вкладка общих настроек
|
|
|
|
|
- div(v-if="activeTab === 'general'" class="admin-settings__general")
|
|
|
|
|
- div(class="admin-settings__section")
|
|
|
|
|
- h2(class="admin-settings__section-title") Общие настройки
|
|
|
|
|
- p(class="admin-settings__section-description") Основные параметры системы
|
|
|
|
|
|
|
+ h2(class="admin-settings__section-title") Настройки бренда
|
|
|
|
|
+ p(class="admin-settings__section-description") Управление логотипом и визуальным представлением компании
|
|
|
|
|
|
|
|
div(class="admin-settings__form")
|
|
div(class="admin-settings__form")
|
|
|
|
|
+ div(class="admin-settings__form-group")
|
|
|
|
|
+ label(class="admin-settings__label") Логотип компании
|
|
|
|
|
+ div(class="admin-settings__logo-upload")
|
|
|
|
|
+ div(v-if="brandSettings.logo" class="admin-settings__logo-preview")
|
|
|
|
|
+ img(:src="brandSettings.logo" :alt="brandSettings.companyName" class="admin-settings__logo-image")
|
|
|
|
|
+ button(
|
|
|
|
|
+ @click="removeLogo"
|
|
|
|
|
+ class="admin-settings__btn admin-settings__btn--danger"
|
|
|
|
|
+ ) Удалить
|
|
|
|
|
+ div(v-else class="admin-settings__logo-placeholder") Логотип не загружен
|
|
|
|
|
+
|
|
|
|
|
+ div(class="admin-settings__upload-controls")
|
|
|
|
|
+ input(
|
|
|
|
|
+ type="file"
|
|
|
|
|
+ ref="logoInput"
|
|
|
|
|
+ @change="onLogoUpload"
|
|
|
|
|
+ accept="image/*"
|
|
|
|
|
+ class="admin-settings__file-input"
|
|
|
|
|
+ id="logo-upload"
|
|
|
|
|
+ )
|
|
|
|
|
+ label(for="logo-upload" class="admin-settings__btn admin-settings__btn--secondary") Выбрать файл
|
|
|
|
|
+ p(class="admin-settings__help-text") Рекомендуемый размер: 200x60px. Форматы: PNG, JPG, SVG
|
|
|
|
|
+
|
|
|
div(class="admin-settings__form-group")
|
|
div(class="admin-settings__form-group")
|
|
|
label(class="admin-settings__label") Название компании
|
|
label(class="admin-settings__label") Название компании
|
|
|
input(
|
|
input(
|
|
|
- v-model="generalSettings.companyName"
|
|
|
|
|
|
|
+ v-model="brandSettings.companyName"
|
|
|
type="text"
|
|
type="text"
|
|
|
class="admin-settings__input"
|
|
class="admin-settings__input"
|
|
|
placeholder="Введите название компании"
|
|
placeholder="Введите название компании"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
div(class="admin-settings__form-group")
|
|
div(class="admin-settings__form-group")
|
|
|
- label(class="admin-settings__label") Email для уведомлений
|
|
|
|
|
|
|
+ label(class="admin-settings__label") Описание компании
|
|
|
|
|
+ textarea(
|
|
|
|
|
+ v-model="brandSettings.description"
|
|
|
|
|
+ class="admin-settings__textarea"
|
|
|
|
|
+ placeholder="Краткое описание компании для футера"
|
|
|
|
|
+ rows="3"
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ div(class="admin-settings__form-group")
|
|
|
|
|
+ label(class="admin-settings__label") Email для связи
|
|
|
input(
|
|
input(
|
|
|
- v-model="generalSettings.notificationEmail"
|
|
|
|
|
|
|
+ v-model="brandSettings.email"
|
|
|
type="email"
|
|
type="email"
|
|
|
class="admin-settings__input"
|
|
class="admin-settings__input"
|
|
|
- placeholder="admin@example.com"
|
|
|
|
|
|
|
+ placeholder="info@example.com"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
div(class="admin-settings__form-group")
|
|
div(class="admin-settings__form-group")
|
|
|
- label(class="admin-settings__label") Валюта
|
|
|
|
|
- select(v-model="generalSettings.currency" class="admin-settings__select")
|
|
|
|
|
- option(value="RUB") RUB - Российский рубль
|
|
|
|
|
- option(value="USD") USD - Доллар США
|
|
|
|
|
- option(value="EUR") EUR - Евро
|
|
|
|
|
|
|
+ label(class="admin-settings__label") Телефон
|
|
|
|
|
+ input(
|
|
|
|
|
+ v-model="brandSettings.phone"
|
|
|
|
|
+ type="tel"
|
|
|
|
|
+ class="admin-settings__input"
|
|
|
|
|
+ placeholder="+7 (999) 999-99-99"
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
button(
|
|
button(
|
|
|
- @click="saveGeneralSettings"
|
|
|
|
|
|
|
+ @click="saveBrandSettings"
|
|
|
class="admin-settings__btn admin-settings__btn--primary"
|
|
class="admin-settings__btn admin-settings__btn--primary"
|
|
|
- ) Сохранить настройки
|
|
|
|
|
-
|
|
|
|
|
- // Модальное окно добавления домена
|
|
|
|
|
- div(v-if="showDomainModal" class="admin-settings__modal")
|
|
|
|
|
- div(class="admin-settings__modal-content")
|
|
|
|
|
- h3(class="admin-settings__modal-title") {{ editingDomain ? 'Редактирование' : 'Добавление' }} домена
|
|
|
|
|
|
|
+ ) Сохранить настройки бренда
|
|
|
|
|
|
|
|
- div(class="admin-settings__modal-form")
|
|
|
|
|
- div(class="admin-settings__form-group")
|
|
|
|
|
- label(class="admin-settings__label") Домен
|
|
|
|
|
- input(
|
|
|
|
|
- v-model="domainForm.domain"
|
|
|
|
|
- type="text"
|
|
|
|
|
- class="admin-settings__input"
|
|
|
|
|
- placeholder="example.com"
|
|
|
|
|
- )
|
|
|
|
|
-
|
|
|
|
|
- div(class="admin-settings__form-group")
|
|
|
|
|
- label(class="admin-settings__label") Название компании
|
|
|
|
|
- input(
|
|
|
|
|
- v-model="domainForm.companyName"
|
|
|
|
|
- type="text"
|
|
|
|
|
- class="admin-settings__input"
|
|
|
|
|
- placeholder="Название компании"
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ // Вкладка фавиконов
|
|
|
|
|
+ div(v-if="activeTab === 'favicon'" class="admin-settings__favicon")
|
|
|
|
|
+ div(class="admin-settings__section")
|
|
|
|
|
+ h2(class="admin-settings__section-title") Фавикон и иконки
|
|
|
|
|
+ p(class="admin-settings__section-description") Управление иконками для браузера и мобильных устройств
|
|
|
|
|
|
|
|
- div(class="admin-settings__form-group")
|
|
|
|
|
- label(class="admin-settings__label") Языки домена
|
|
|
|
|
- div(class="admin-settings__checkbox-group")
|
|
|
|
|
- label(
|
|
|
|
|
- v-for="lang in availableLanguages"
|
|
|
|
|
- :key="lang.code"
|
|
|
|
|
- class="admin-settings__checkbox-label"
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ div(class="admin-settings__form")
|
|
|
|
|
+ div(class="admin-settings__form-group")
|
|
|
|
|
+ label(class="admin-settings__label") Фавикон (16x16px)
|
|
|
|
|
+ div(class="admin-settings__favicon-upload")
|
|
|
|
|
+ div(v-if="brandSettings.favicon" class="admin-settings__favicon-preview")
|
|
|
|
|
+ img(:src="brandSettings.favicon" alt="Favicon" class="admin-settings__favicon-image")
|
|
|
|
|
+ button(
|
|
|
|
|
+ @click="removeFavicon"
|
|
|
|
|
+ class="admin-settings__btn admin-settings__btn--danger"
|
|
|
|
|
+ ) Удалить
|
|
|
|
|
+ div(v-else class="admin-settings__favicon-placeholder") Фавикон не загружен
|
|
|
|
|
+
|
|
|
input(
|
|
input(
|
|
|
- type="checkbox"
|
|
|
|
|
- :value="lang.code"
|
|
|
|
|
- v-model="domainForm.languages"
|
|
|
|
|
- class="admin-settings__checkbox"
|
|
|
|
|
|
|
+ type="file"
|
|
|
|
|
+ @change="onFaviconUpload"
|
|
|
|
|
+ accept="image/*"
|
|
|
|
|
+ class="admin-settings__file-input"
|
|
|
)
|
|
)
|
|
|
- span {{ lang.name }}
|
|
|
|
|
-
|
|
|
|
|
- div(class="admin-settings__modal-actions")
|
|
|
|
|
- button(
|
|
|
|
|
- @click="saveDomain"
|
|
|
|
|
- class="admin-settings__btn admin-settings__btn--primary"
|
|
|
|
|
- ) {{ editingDomain ? 'Обновить' : 'Добавить' }}
|
|
|
|
|
- button(
|
|
|
|
|
- @click="showDomainModal = false"
|
|
|
|
|
- class="admin-settings__btn admin-settings__btn--secondary"
|
|
|
|
|
- ) Отмена
|
|
|
|
|
|
|
+ p(class="admin-settings__help-text") Рекомендуемый размер: 16x16px или 32x32px. Формат: ICO или PNG
|