From 7c3b06c996e0a99ce77655dd8c5241634c98e7f9 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Wed, 3 Jun 2026 13:24:23 +0200 Subject: [PATCH] Bestellungen: Frontend (Firma bestellt, Reseller wickelt ab) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - OrdersView: Firma sieht eigene Bestellungen + „Neue Bestellung" (Positionen Produkt+Mitarbeiter+Menge); Reseller/Plattform sehen eingehende (mit Firma-Spalte), setzen Status vorwärts, stornieren, PDF je Position. Status-Badges, Detail-Modal. - Nav-Eintrag „Bestellungen" (Firma + Reseller + Plattform), Route. Co-Authored-By: Claude Opus 4.8 --- frontend/src/layouts/DashboardLayout.vue | 1 + frontend/src/router/index.ts | 1 + frontend/src/views/OrdersView.vue | 263 +++++++++++++++++++++++ 3 files changed, 265 insertions(+) create mode 100644 frontend/src/views/OrdersView.vue diff --git a/frontend/src/layouts/DashboardLayout.vue b/frontend/src/layouts/DashboardLayout.vue index a448eb8..e6db989 100644 --- a/frontend/src/layouts/DashboardLayout.vue +++ b/frontend/src/layouts/DashboardLayout.vue @@ -15,6 +15,7 @@ const nav = computed(() => [ { label: 'Mitarbeiter', to: '/app/employees', icon: 'M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z', show: true }, { label: 'Produkte', to: '/app/products', icon: 'M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16zM3.27 6.96 12 12.01l8.73-5.05M12 22.08V12', show: auth.isResellerAdmin || auth.isPlatformAdmin }, { label: 'Editor', to: '/app/card-editor', icon: 'M3 5h18v14H3zM3 10h18M7 15h5', show: auth.isResellerAdmin || auth.isCompanyAdmin }, + { label: 'Bestellungen', to: '/app/orders', icon: 'M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4zM3 6h18M16 10a4 4 0 0 1-8 0', show: auth.isCompanyAdmin || auth.isResellerAdmin || auth.isPlatformAdmin }, { label: 'Standorte', to: '/app/locations', icon: 'M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0zM12 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6z', show: auth.isCompanyAdmin }, { label: 'Domains', to: '/app/domains', icon: 'M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18zM3 12h18M12 3a15 15 0 0 1 0 18 15 15 0 0 1 0-18z', show: auth.isCompanyAdmin }, { label: 'Design', to: '/app/design', icon: 'M12 2l7 7a7 7 0 1 1-14 0z', show: auth.isCompanyAdmin }, diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index e3f2b63..729b0c9 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -21,6 +21,7 @@ const router = createRouter({ { path: 'employees', name: 'employees', component: () => import('@/views/EmployeesView.vue') }, { path: 'products', name: 'products', component: () => import('@/views/ProductsView.vue') }, { path: 'card-editor', name: 'card-editor', component: () => import('@/views/CardEditorView.vue') }, + { path: 'orders', name: 'orders', component: () => import('@/views/OrdersView.vue') }, { path: 'locations', name: 'locations', component: () => import('@/views/LocationsView.vue') }, { path: 'domains', name: 'domains', component: () => import('@/views/DomainsView.vue') }, { path: 'design', name: 'design', component: () => import('@/views/DesignView.vue') }, diff --git a/frontend/src/views/OrdersView.vue b/frontend/src/views/OrdersView.vue new file mode 100644 index 0000000..5020344 --- /dev/null +++ b/frontend/src/views/OrdersView.vue @@ -0,0 +1,263 @@ + + + + +