feat(app): organisation settings page with tags & registration field templates

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-12 23:02:07 +02:00
parent 1172c41d33
commit 1c0ac488b0
8 changed files with 1368 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
<script setup lang="ts">
import { useOrganisationStore } from '@/stores/useOrganisationStore'
import PersonTagsTab from '@/components/organisation/PersonTagsTab.vue'
import RegistrationFieldTemplatesTab from '@/components/organisation/RegistrationFieldTemplatesTab.vue'
const route = useRoute()
const router = useRouter()
const orgStore = useOrganisationStore()
const orgId = computed(() => orgStore.activeOrganisationId ?? '')
const tabs = [
{ value: 'tags', label: 'Tags & Vaardigheden', icon: 'tabler-tag' },
{ value: 'templates', label: 'Registratieveld-templates', icon: 'tabler-forms' },
]
const activeTab = computed({
get: () => {
const tab = route.query.tab as string
return tabs.some(t => t.value === tab) ? tab : 'tags'
},
set: (value: string) => {
router.replace({ query: { ...route.query, tab: value } })
},
})
</script>
<template>
<div>
<div class="d-flex align-center mb-6">
<div>
<h4 class="text-h4">
Instellingen
</h4>
<p class="text-body-1 text-disabled mb-0">
Organisatie-instellingen en configuratie
</p>
</div>
</div>
<VTabs
v-model="activeTab"
class="mb-6"
>
<VTab
v-for="tab in tabs"
:key="tab.value"
:value="tab.value"
:prepend-icon="tab.icon"
>
{{ tab.label }}
</VTab>
</VTabs>
<VWindow
v-model="activeTab"
class="disable-tab-transition"
>
<VWindowItem value="tags">
<PersonTagsTab :org-id="orgId" />
</VWindowItem>
<VWindowItem value="templates">
<RegistrationFieldTemplatesTab :org-id="orgId" />
</VWindowItem>
</VWindow>
</div>
</template>