index.pug 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. div(class="admin-settings")
  2. div(class="admin-settings__header")
  3. h1(class="admin-settings__title") Настройки системы
  4. p(class="admin-settings__subtitle") Управление доменами, языками и основными параметрами
  5. div(class="admin-settings__content")
  6. div(class="admin-settings__tabs")
  7. button(
  8. v-for="tab in tabs"
  9. :key="tab.id"
  10. @click="activeTab = tab.id"
  11. :class="getTabClass(tab)"
  12. ) {{ tab.name }}
  13. div(class="admin-settings__tab-content")
  14. // Вкладка доменов
  15. div(v-if="activeTab === 'domains'" class="admin-settings__domains")
  16. div(class="admin-settings__section")
  17. h2(class="admin-settings__section-title") Управление доменами
  18. p(class="admin-settings__section-description") Настройка мультидоменной структуры магазина
  19. div(class="admin-settings__domains-list")
  20. div(
  21. v-for="domain in domains"
  22. :key="domain._id"
  23. class="admin-settings__domain-item"
  24. )
  25. div(class="admin-settings__domain-info")
  26. h3(class="admin-settings__domain-name") {{ domain.domain }}
  27. p(class="admin-settings__domain-desc") {{ domain.companyName }}
  28. div(class="admin-settings__domain-actions")
  29. button(
  30. @click="editDomain(domain)"
  31. class="admin-settings__btn admin-settings__btn--secondary"
  32. ) Редактировать
  33. button(
  34. @click="deleteDomain(domain._id)"
  35. class="admin-settings__btn admin-settings__btn--danger"
  36. ) Удалить
  37. button(
  38. @click="showDomainModal = true"
  39. class="admin-settings__btn admin-settings__btn--primary"
  40. ) Добавить домен
  41. // Вкладка языков
  42. div(v-if="activeTab === 'languages'" class="admin-settings__languages")
  43. div(class="admin-settings__section")
  44. h2(class="admin-settings__section-title") Настройка языков
  45. p(class="admin-settings__section-description") Управление мультиязычностью сайта
  46. div(class="admin-settings__languages-list")
  47. div(
  48. v-for="lang in languages"
  49. :key="lang.code"
  50. class="admin-settings__language-item"
  51. )
  52. div(class="admin-settings__language-info")
  53. span(class="admin-settings__language-code") {{ lang.code.toUpperCase() }}
  54. span(class="admin-settings__language-name") {{ lang.name }}
  55. div(class="admin-settings__language-actions")
  56. button(
  57. @click="toggleLanguage(lang.code)"
  58. :class="getLanguageBtnClass(lang)"
  59. ) {{ lang.enabled ? 'Отключить' : 'Включить' }}
  60. // Вкладка общих настроек
  61. div(v-if="activeTab === 'general'" class="admin-settings__general")
  62. div(class="admin-settings__section")
  63. h2(class="admin-settings__section-title") Общие настройки
  64. p(class="admin-settings__section-description") Основные параметры системы
  65. div(class="admin-settings__form")
  66. div(class="admin-settings__form-group")
  67. label(class="admin-settings__label") Название компании
  68. input(
  69. v-model="generalSettings.companyName"
  70. type="text"
  71. class="admin-settings__input"
  72. placeholder="Введите название компании"
  73. )
  74. div(class="admin-settings__form-group")
  75. label(class="admin-settings__label") Email для уведомлений
  76. input(
  77. v-model="generalSettings.notificationEmail"
  78. type="email"
  79. class="admin-settings__input"
  80. placeholder="admin@example.com"
  81. )
  82. div(class="admin-settings__form-group")
  83. label(class="admin-settings__label") Валюта
  84. select(v-model="generalSettings.currency" class="admin-settings__select")
  85. option(value="RUB") RUB - Российский рубль
  86. option(value="USD") USD - Доллар США
  87. option(value="EUR") EUR - Евро
  88. button(
  89. @click="saveGeneralSettings"
  90. class="admin-settings__btn admin-settings__btn--primary"
  91. ) Сохранить настройки
  92. // Модальное окно добавления домена
  93. div(v-if="showDomainModal" class="admin-settings__modal")
  94. div(class="admin-settings__modal-content")
  95. h3(class="admin-settings__modal-title") {{ editingDomain ? 'Редактирование' : 'Добавление' }} домена
  96. div(class="admin-settings__modal-form")
  97. div(class="admin-settings__form-group")
  98. label(class="admin-settings__label") Домен
  99. input(
  100. v-model="domainForm.domain"
  101. type="text"
  102. class="admin-settings__input"
  103. placeholder="example.com"
  104. )
  105. div(class="admin-settings__form-group")
  106. label(class="admin-settings__label") Название компании
  107. input(
  108. v-model="domainForm.companyName"
  109. type="text"
  110. class="admin-settings__input"
  111. placeholder="Название компании"
  112. )
  113. div(class="admin-settings__form-group")
  114. label(class="admin-settings__label") Языки домена
  115. div(class="admin-settings__checkbox-group")
  116. label(
  117. v-for="lang in availableLanguages"
  118. :key="lang.code"
  119. class="admin-settings__checkbox-label"
  120. )
  121. input(
  122. type="checkbox"
  123. :value="lang.code"
  124. v-model="domainForm.languages"
  125. class="admin-settings__checkbox"
  126. )
  127. span {{ lang.name }}
  128. div(class="admin-settings__modal-actions")
  129. button(
  130. @click="saveDomain"
  131. class="admin-settings__btn admin-settings__btn--primary"
  132. ) {{ editingDomain ? 'Обновить' : 'Добавить' }}
  133. button(
  134. @click="showDomainModal = false"
  135. class="admin-settings__btn admin-settings__btn--secondary"
  136. ) Отмена