+7 988 353-52-54 kompman1@yandex.ru

г. Краснодар

Админка модуля

Как модуль добавляет свои экраны, пункты меню, переводы и вкладки в админку; SDK и общие компоненты.

Админка модуля — admin/index.ts, который экспортирует register(ctx). Модуль может быть встроен в общую сборку админки или собран отдельным бандлом (npm run build:modules -- <id>) — тогда он загружается во время работы, без пересборки админки.

import type { ModuleAdminContext } from '@/modules/sdk'
import ru from './locales/ru'
import en from './locales/en'

export function register(ctx: ModuleAdminContext): void {
  ctx.addMessages({ ru, en })

  ctx.addRoutes([
    {
      path: '/mymodule',
      name: 'mymodule',
      component: () => import('./views/MainView.vue'),
      meta: { permission: 'mymodule.manage', crumbs: () => [{ labelKey: 'mymodule.title' }] },
    },
  ])

  ctx.addNavGroup({
    key: 'mymodule',
    labelKey: 'mymodule.title',
    icon: 'star',
    order: 60,
    items: [{ key: 'mymodule', labelKey: 'mymodule.title', icon: 'star', to: { name: 'mymodule' }, permission: 'mymodule.manage' }],
  })
}

Что ещё можно добавить

МетодЧто
addNavItems('shop', items, sections)пункты в раздел другого модуля (например, «Магазин»)
addEntryPanelпанель в редакторе записи нужных типов
addEntryListColumn, addEntryListBulkActionколонка и массовое действие в списке записей
addDashboardWidgetвиджет на «Сводке»
addAnalyticsTabвкладка в разделе «Аналитика»

Группы меню с одинаковым key сливаются: так CRM-модули делят один раздел «CRM».

SDK

@/modules/sdk даёт общее: apiFetch (с CSRF), pushToast, describeApiError, форматтеры дат и чисел, PageHeader, SettingsShell, MediaPickerDialog, IntegrationJournal (журнал обмена) и IntegrationHelp (блок «Как настроить»). Компоненты PrimeVue и классы Tailwind доступны как в самой админке.

Права

Право модуля (например, mymodule.manage) создаётся в install() и выдаётся ролям; meta.permission маршрута и пункта меню скрывает экран от тех, у кого права нет. Проверку на сервере делайте всегда — админка только прячет кнопки.

Статья помогла?