2021-01-23 13:40:35 +00:00
|
|
|
<template>
|
|
|
|
<div>
|
|
|
|
<q-tabs v-model="tab" v-if="$q.screen.gt.sm">
|
|
|
|
<q-tab
|
|
|
|
v-for="(tabindex, index) in tabs"
|
|
|
|
:key="'tab' + index"
|
|
|
|
:name="tabindex.name"
|
|
|
|
:label="tabindex.label"
|
|
|
|
/>
|
|
|
|
</q-tabs>
|
|
|
|
<div class="fit row justify-end" v-else>
|
|
|
|
<q-btn flat round icon="mdi-menu" @click="showDrawer = !showDrawer" />
|
|
|
|
</div>
|
|
|
|
<q-drawer side="right" v-model="showDrawer" @click="showDrawer = !showDrawer" behavior="mobile">
|
|
|
|
<q-list v-model="tab">
|
|
|
|
<q-item
|
|
|
|
v-for="(tabindex, index) in tabs"
|
|
|
|
:key="'tab' + index"
|
|
|
|
:active="tab == tabindex.name"
|
|
|
|
clickable
|
|
|
|
@click="tab = tabindex.name"
|
|
|
|
>
|
|
|
|
<q-item-label>{{ tabindex.label }}</q-item-label>
|
|
|
|
</q-item>
|
|
|
|
</q-list>
|
|
|
|
</q-drawer>
|
|
|
|
<q-page padding class="fit row justify-center content-start items-start q-gutter-sm">
|
|
|
|
<q-tab-panels
|
|
|
|
v-model="tab"
|
2021-03-18 16:23:57 +00:00
|
|
|
style="background-color: transparent"
|
2021-01-23 13:40:35 +00:00
|
|
|
class="q-ma-none q-pa-none fit row justify-center content-start items-start"
|
|
|
|
animated
|
|
|
|
>
|
|
|
|
<q-tab-panel name="create">
|
|
|
|
<CreateEvent />
|
|
|
|
</q-tab-panel>
|
|
|
|
<q-tab-panel name="eventtypes">
|
|
|
|
<Eventtypes />
|
|
|
|
</q-tab-panel>
|
|
|
|
<q-tab-panel name="jobtypes">
|
|
|
|
<JobTypes v-if="canEditRoles" />
|
|
|
|
</q-tab-panel>
|
|
|
|
</q-tab-panels>
|
|
|
|
</q-page>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts">
|
2021-01-30 03:16:17 +00:00
|
|
|
import { computed, defineComponent, ref } from 'vue';
|
2021-01-23 13:40:35 +00:00
|
|
|
import Eventtypes from '../components/management/Eventtypes.vue';
|
|
|
|
import JobTypes from '../components/management/JobTypes.vue';
|
|
|
|
import CreateEvent from '../components/management/CreateEvent.vue';
|
|
|
|
import { hasPermission } from 'src/utils/permission';
|
|
|
|
import { PERMISSIONS } from '../permissions';
|
|
|
|
import { Screen } from 'quasar';
|
|
|
|
|
|
|
|
export default defineComponent({
|
|
|
|
name: 'EventManagement',
|
|
|
|
components: { CreateEvent, Eventtypes, JobTypes },
|
2021-01-31 16:09:29 +00:00
|
|
|
setup() {
|
|
|
|
const canEditRoles = computed(() => hasPermission(PERMISSIONS.ROLES_EDIT));
|
2021-01-23 13:40:35 +00:00
|
|
|
|
|
|
|
interface Tab {
|
|
|
|
name: string;
|
|
|
|
label: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
const tabs: Tab[] = [
|
2021-02-07 19:16:21 +00:00
|
|
|
{ name: 'create', label: 'Veranstaltungen' },
|
2021-01-23 13:40:35 +00:00
|
|
|
{ name: 'eventtypes', label: 'Veranstaltungsarten' },
|
2021-03-18 16:23:57 +00:00
|
|
|
{ name: 'jobtypes', label: 'Dienstarten' },
|
2021-01-23 13:40:35 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
const drawer = ref<boolean>(false);
|
|
|
|
|
|
|
|
const showDrawer = computed({
|
|
|
|
get: () => {
|
|
|
|
return !Screen.gt.sm && drawer.value;
|
|
|
|
},
|
|
|
|
set: (val: boolean) => {
|
|
|
|
drawer.value = val;
|
2021-03-18 16:23:57 +00:00
|
|
|
},
|
2021-01-23 13:40:35 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
const tab = ref<string>('create');
|
|
|
|
|
|
|
|
return {
|
|
|
|
canEditRoles,
|
|
|
|
showDrawer,
|
|
|
|
tab,
|
2021-03-18 16:23:57 +00:00
|
|
|
tabs,
|
2021-01-23 13:40:35 +00:00
|
|
|
};
|
2021-03-18 16:23:57 +00:00
|
|
|
},
|
2021-01-23 13:40:35 +00:00
|
|
|
});
|
|
|
|
</script>
|