index.pug 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. div(class="categories-page")
  2. div(class="page-header")
  3. h1 Управление категориями
  4. div(class="page-actions")
  5. ui-button(@click="createCategory" type="primary") ➕ Создать категорию
  6. ui-button(@click="expandAll" type="outline") 📂 Развернуть все
  7. ui-button(@click="collapseAll" type="outline") 📁 Свернуть все
  8. div(class="categories-content")
  9. div(class="categories-tree")
  10. h2 Древовидная структура
  11. div(v-if="loading" class="loading-state") Загрузка категорий...
  12. div(v-else class="tree-container")
  13. category-node(
  14. v-for="category in hierarchicalCategories"
  15. :key="category._id"
  16. :category="category"
  17. :level="0"
  18. @edit="editCategory"
  19. @delete="deleteCategory"
  20. @move="moveCategory"
  21. )
  22. div(class="category-editor")
  23. h2 {{ editingCategory ? 'Редактирование категории' : 'Создание категории' }}
  24. div(v-if="editingCategory || creatingNew" class="editor-form")
  25. div(class="form-group")
  26. label Название категории *
  27. input(
  28. type="text"
  29. v-model="categoryForm.name"
  30. placeholder="Введите название категории"
  31. class="form-input"
  32. )
  33. div(class="form-group")
  34. label URL-адрес (slug)
  35. input(
  36. type="text"
  37. v-model="categoryForm.slug"
  38. placeholder="category-slug"
  39. class="form-input"
  40. )
  41. div(class="form-group")
  42. label Родительская категория
  43. select(v-model="categoryForm.parent" class="form-select")
  44. option(value="") Без родительской категории
  45. option(
  46. v-for="cat in flatCategories"
  47. :key="cat._id"
  48. :value="cat._id"
  49. ) {{ cat.name }}
  50. div(class="form-group")
  51. label Порядок сортировки
  52. input(
  53. type="number"
  54. v-model="categoryForm.order"
  55. class="form-input"
  56. )
  57. div(class="form-group")
  58. label Изображение категории
  59. media-upload(
  60. :current-image="categoryForm.image"
  61. @image-selected="onImageSelected"
  62. @image-removed="onImageRemoved"
  63. )
  64. div(class="form-group")
  65. label Описание категории
  66. textarea(
  67. v-model="categoryForm.description"
  68. placeholder="Описание категории для SEO"
  69. class="form-textarea"
  70. rows="4"
  71. )
  72. div(class="form-actions")
  73. ui-button(@click="cancelEdit" type="outline") Отмена
  74. ui-button(
  75. @click="saveCategory"
  76. type="primary"
  77. :loading="saving"
  78. ) {{ editingCategory ? 'Сохранить' : 'Создать' }}
  79. div(v-else class="editor-placeholder")
  80. p Выберите категорию для редактирования или создайте новую