- Added a file input for PDF uploads with validation for file type and size. - Implemented file size formatting and user feedback for selected files. - Created upload and cancel methods with placeholder for future API integration. feat: Create PaymentForm.vue for handling payments - Developed a form for entering payment details including date, amount, method, and notes. - Integrated currency formatting and dropdown for payment methods. - Implemented save and cancel actions with API call for saving payment data. docs: Add documentation for dynamic plugin menus and permissions - Provided guidelines for defining menu items and permissions in plugins. - Explained the process for synchronizing permissions and integrating menus in the frontend. - Included examples and best practices for plugin development. feat: Add database migrations for invoices, invoice items, and payments - Created migration scripts to define the database schema for invoices, invoice items, and payments. - Established foreign key relationships between invoices and related entities. feat: Implement command for synchronizing plugin permissions - Developed a console command to synchronize plugin permissions with the database. - Added options for dry-run and force synchronization for unlicensed modules. feat: Create API controller for plugin menu items - Implemented API endpoints to retrieve plugin menu items in both flat and grouped formats. - Ensured access control with role-based permissions for API access. feat: Develop service for managing plugin menu items - Created a service to collect and manage menu items from installed plugins. - Implemented methods for retrieving flat and grouped menu items for frontend use. feat: Add service for synchronizing plugin permissions - Developed a service to handle the synchronization of plugin permissions with the database. - Included logic for creating and updating permission modules based on plugin definitions.
31 lines
1.6 KiB
JavaScript
31 lines
1.6 KiB
JavaScript
import { createRouter, createWebHistory } from 'vue-router';
|
|
import Dashboard from './views/Dashboard.vue';
|
|
import ContactManagement from './views/ContactManagement.vue';
|
|
import ProjectManagement from './views/ProjectManagement.vue';
|
|
import ProjectTaskManagement from './views/ProjectTaskManagement.vue';
|
|
import ProjectStatusManagement from './views/ProjectStatusManagement.vue';
|
|
import UserManagement from './views/UserManagement.vue';
|
|
import RoleManagement from './views/RoleManagement.vue';
|
|
import SettingsManagement from './views/SettingsManagement.vue';
|
|
import InvoiceManagement from './views/InvoiceManagement.vue';
|
|
|
|
const routes = [
|
|
{ path: '/', name: 'dashboard', component: Dashboard },
|
|
{ path: '/contacts', name: 'contacts', component: ContactManagement },
|
|
{ path: '/projects', name: 'projects', component: ProjectManagement },
|
|
{ path: '/project-tasks', name: 'project-tasks', component: ProjectTaskManagement },
|
|
{ path: '/project-statuses', name: 'project-statuses', component: ProjectStatusManagement, meta: { requiresAdmin: true } },
|
|
{ path: '/users', name: 'users', component: UserManagement, meta: { requiresAdmin: true } },
|
|
{ path: '/roles', name: 'roles', component: RoleManagement, meta: { requiresAdmin: true } },
|
|
{ path: '/settings', name: 'settings', component: SettingsManagement, meta: { requiresAdmin: true } },
|
|
// Billing Module Routes
|
|
{ path: '/billing/invoices', name: 'invoices', component: InvoiceManagement, meta: { requiresPermission: { module: 'billing', action: 'view' } } },
|
|
];
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(),
|
|
routes,
|
|
});
|
|
|
|
export default router;
|