index.pug 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. div(class="admin-slider")
  2. div(class="admin-slider__header")
  3. h1(class="admin-slider__title") Управление слайдером
  4. button(
  5. @click="showSlideModal = true"
  6. class="admin-slider__add-btn"
  7. ) Добавить слайд
  8. div(class="admin-slider__content")
  9. div(class="admin-slider__list")
  10. div(
  11. v-for="(slide, index) in slides"
  12. :key="slide._id"
  13. class="admin-slider__item"
  14. )
  15. div(class="admin-slider__item-preview")
  16. img(
  17. v-if="slide.image"
  18. :src="slide.image"
  19. :alt="slide.title"
  20. class="admin-slider__item-image"
  21. )
  22. div(v-else class="admin-slider__item-placeholder") Нет изображения
  23. div(class="admin-slider__item-info")
  24. h3(class="admin-slider__item-title") {{ slide.title || 'Без названия' }}
  25. p(class="admin-slider__item-subtitle") {{ slide.subtitle || 'Без описания' }}
  26. div(class="admin-slider__item-meta")
  27. span(class="admin-slider__item-order") Порядок: {{ slide.order }}
  28. span(
  29. :class="getStatusClass(slide.active)"
  30. ) {{ slide.active ? 'Активен' : 'Неактивен' }}
  31. div(class="admin-slider__item-actions")
  32. button(
  33. @click="editSlide(slide)"
  34. class="admin-slider__btn admin-slider__btn--edit"
  35. ) Редактировать
  36. button(
  37. @click="toggleSlideStatus(slide)"
  38. :class="getToggleBtnClass(slide.active)"
  39. ) {{ slide.active ? 'Деактивировать' : 'Активировать' }}
  40. button(
  41. @click="deleteSlide(slide._id)"
  42. class="admin-slider__btn admin-slider__btn--delete"
  43. ) Удалить
  44. // Модальное окно редактирования слайда
  45. div(v-if="showSlideModal" class="admin-slider__modal")
  46. div(class="admin-slider__modal-content")
  47. h3(class="admin-slider__modal-title") {{ editingSlide ? 'Редактирование' : 'Добавление' }} слайда
  48. div(class="admin-slider__modal-form")
  49. div(class="admin-slider__form-group")
  50. label(class="admin-slider__label") Заголовок
  51. input(
  52. v-model="slideForm.title"
  53. type="text"
  54. class="admin-slider__input"
  55. placeholder="Введите заголовок слайда"
  56. )
  57. div(class="admin-slider__form-group")
  58. label(class="admin-slider__label") Подзаголовок
  59. textarea(
  60. v-model="slideForm.subtitle"
  61. class="admin-slider__textarea"
  62. placeholder="Введите описание слайда"
  63. rows="3"
  64. )
  65. div(class="admin-slider__form-group")
  66. label(class="admin-slider__label") Ссылка на изображение
  67. input(
  68. v-model="slideForm.image"
  69. type="text"
  70. class="admin-slider__input"
  71. placeholder="https://example.com/image.jpg"
  72. )
  73. div(class="admin-slider__form-group")
  74. label(class="admin-slider__label") Текст кнопки
  75. input(
  76. v-model="slideForm.buttonText"
  77. type="text"
  78. class="admin-slider__input"
  79. placeholder="В каталог"
  80. )
  81. div(class="admin-slider__form-group")
  82. label(class="admin-slider__label") Ссылка кнопки
  83. input(
  84. v-model="slideForm.buttonLink"
  85. type="text"
  86. class="admin-slider__input"
  87. placeholder="/catalog"
  88. )
  89. div(class="admin-slider__form-group")
  90. label(class="admin-slider__label") Порядок
  91. input(
  92. v-model="slideForm.order"
  93. type="number"
  94. class="admin-slider__input"
  95. min="0"
  96. )
  97. div(class="admin-slider__form-group")
  98. label(class="admin-slider__checkbox-label")
  99. input(
  100. v-model="slideForm.active"
  101. type="checkbox"
  102. class="admin-slider__checkbox"
  103. )
  104. span Активный слайд
  105. div(class="admin-slider__form-group")
  106. label(class="admin-slider__label") Домены
  107. div(class="admin-slider__domains-list")
  108. label(
  109. v-for="domain in availableDomains"
  110. :key="domain._id"
  111. class="admin-slider__domain-label"
  112. )
  113. input(
  114. type="checkbox"
  115. :value="domain.domain"
  116. v-model="slideForm.domains"
  117. class="admin-slider__domain-checkbox"
  118. )
  119. span {{ domain.domain }}
  120. div(class="admin-slider__modal-actions")
  121. button(
  122. @click="saveSlide"
  123. class="admin-slider__btn admin-slider__btn--primary"
  124. ) {{ editingSlide ? 'Обновить' : 'Добавить' }}
  125. button(
  126. @click="showSlideModal = false"
  127. class="admin-slider__btn admin-slider__btn--secondary"
  128. ) Отмена