+
+
+
-
-
-
-
-
{{dataStore.getProfileById(item.user) ? dataStore.getProfileById(item.user).fullName : ""}}
- Spaces Bot
-
- {{dayjs(item.created_at).format("DD.MM.YY HH:mm")}}
-
+
+
+
{{dataStore.getProfileById(item.user) ? dataStore.getProfileById(item.user).fullName : ""}}
+ Spaces Bot
+
+ {{dayjs(item.created_at).format("DD.MM.YY HH:mm")}}
-
-
-
+
\ No newline at end of file
diff --git a/spaces/layouts/default.vue b/spaces/layouts/default.vue
index ff074e3..9d854aa 100644
--- a/spaces/layouts/default.vue
+++ b/spaces/layouts/default.vue
@@ -6,13 +6,15 @@ const colorMode = useColorMode()
const userProfile = dataStore.getOwnProfile
const supabase = useSupabaseClient()
const router = useRouter()
+const route = useRoute()
+dataStore.initializeData((await supabase.auth.getUser()).data.user.id)
const isLight = computed({
- get () {
+ get() {
return colorMode.value !== 'dark'
},
- set () {
+ set() {
colorMode.preference = colorMode.value === 'dark' ? 'light' : 'dark'
}
})
@@ -52,12 +54,12 @@ const navLinks = [
label: "Belege",
to: "/receipts",
icon: "i-heroicons-document-text"
- },/*
+ },
{
label: "Bank",
to: "/banking",
icon: "i-heroicons-currency-euro"
- },*/
+ },
]
},
{
@@ -105,6 +107,11 @@ const navLinks = [
to: "/documents",
icon: "i-heroicons-document"
},
+ {
+ label: "E-Mail",
+ to: "/email",
+ icon: "i-heroicons-envelope"
+ },
]
},/*
{
@@ -122,7 +129,7 @@ const navLinks = [
icon: "i-heroicons-clock"
},
{
- label: "Stechuhr",
+ label: "Anwesenheiten",
to: "/workingtimes",
icon: "i-heroicons-clock"
},
@@ -156,6 +163,10 @@ const navLinks = [
label: "Fahrzeuge",
to: "/vehicles",
icon: "i-heroicons-truck"
+ }, {
+ label: "Inventar",
+ to: "/inventoryitems",
+ icon: "i-heroicons-puzzle-piece"
},
]
},
@@ -173,6 +184,11 @@ const userMenuItems = ref([
icon: "i-heroicons-cog-8-tooth",
to: "/settings/numberRanges"
},
+ {
+ label: "Einstellungen",
+ icon: "i-heroicons-cog-8-tooth",
+ to: "/settings"
+ },
{
label: 'Benutzer',
icon: 'i-heroicons-user-group',
@@ -180,127 +196,255 @@ const userMenuItems = ref([
}
])
+const links = [[{
+ label: 'Profil',
+ avatar: {
+ alt: userProfile ? userProfile.fullName : "XY"
+ }
+},{
+ label: "Dashboard",
+ to: "/",
+ icon: "i-heroicons-home"
+}], [{
+ label: "Aufgaben",
+ to: "/tasks",
+ icon: "i-heroicons-rectangle-stack"
+},
+ {
+ label: "Plantafel",
+ to: "/calendar/timeline",
+ icon: "i-heroicons-calendar-days"
+ },
+ {
+ label: "Kalender",
+ to: "/calendar/grid",
+ icon: "i-heroicons-calendar-days"
+ },
+ {
+ label: "Dokumente",
+ to: "/documents",
+ icon: "i-heroicons-document"
+ },
+ {
+ label: "E-Mail",
+ to: "/email",
+ icon: "i-heroicons-envelope"
+ }],[{
+ label: "Kunden",
+ to: "/customers",
+ icon: "i-heroicons-user-group"
+},
+ {
+ label: "Lieferanten",
+ to: "/vendors",
+ icon: "i-heroicons-truck"
+ },
+ {
+ label: "Ansprechpartner",
+ to: "/contacts",
+ icon: "i-heroicons-user-group"
+ }], [{
+ label: "Belege",
+ to: "/receipts",
+ icon: "i-heroicons-document-text"
+},
+ {
+ label: "Bank",
+ to: "/banking",
+ icon: "i-heroicons-currency-euro"
+ }], [{
+ label: "Projekte",
+ to: "/projects",
+ icon: "i-heroicons-clipboard-document-check"
+},
+ {
+ label: "Verträge",
+ to: "/contracts",
+ icon: "i-heroicons-clipboard-document"
+ },
+ {
+ label: "Objekte",
+ to: "/plants",
+ icon: "i-heroicons-clipboard-document"
+ }],[{
+ label: "Zeiterfassung",
+ to: "/employees/timetracking",
+ icon: "i-heroicons-clock"
+},
+ {
+ label: "Anwesenheiten",
+ to: "/workingtimes",
+ icon: "i-heroicons-clock"
+ },
+ {
+ label: "Abwesenheiten",
+ to: "/absenceRequests",
+ icon: "i-heroicons-document-text"
+ }],[{
+ label: "Steuerung",
+ to: "/inventory",
+ icon: "i-heroicons-square-3-stack-3d"
+},
+ {
+ label: "Artikelstamm",
+ to: "/products",
+ icon: "i-heroicons-puzzle-piece"
+ },
+ {
+ label: "Lagerplätze",
+ to: "/spaces",
+ icon: "i-heroicons-square-3-stack-3d"
+ },
+ {
+ label: "Fahrzeuge",
+ to: "/vehicles",
+ icon: "i-heroicons-truck"
+ }, {
+ label: "Inventar",
+ to: "/inventoryitems",
+ icon: "i-heroicons-puzzle-piece"
+ },]
+]
+
-
-
-
-
-
![Logo]()
-
+
+
+
+
-
-
-
-
- {
- showUserMenu = false
- await supabase.auth.signOut()
- await dataStore.clearStore()
- await router.push('/login')
- }"
- >
- Ausloggen
-
-
+
-
+ <!–
-
-
+ {
+ const {error} = await supabase.from('notifications').update({read:true}).eq('id', notification.id)
+ if(error) console.log(error)
+ dataStore.fetchNotifications()
+ }"
+ />–>
+
+
+
+
+
+
+ {
+ showUserMenu = false
+ await supabase.auth.signOut()
+ await dataStore.clearStore()
+ await router.push('/login')
+
+ }"
+ >
+ Ausloggen
+
+
+
+
+
+
+
+
+
+
+
-->
+
-
-
-
-
+
\ No newline at end of file
diff --git a/spaces/package.json b/spaces/package.json
index 4313d9f..f59c861 100644
--- a/spaces/package.json
+++ b/spaces/package.json
@@ -43,7 +43,7 @@
"@vicons/ionicons5": "^0.12.0",
"@vuepic/vue-datepicker": "^7.4.0",
"@zip.js/zip.js": "^2.7.32",
- "axios": "^1.6.2",
+ "axios": "^1.6.7",
"base64-arraybuffer": "^1.0.2",
"buffer": "^6.0.3",
"client-oauth2": "^4.3.3",
diff --git a/spaces/pages/absenceRequests/[mode]/[[id]].vue b/spaces/pages/absenceRequests/[mode]/[[id]].vue
index 443846b..aac8483 100644
--- a/spaces/pages/absenceRequests/[mode]/[[id]].vue
+++ b/spaces/pages/absenceRequests/[mode]/[[id]].vue
@@ -120,14 +120,6 @@ setupPage()
>
Bearbeiten
-
- Archivieren
-
-
diff --git a/spaces/pages/calendar/[mode].vue b/spaces/pages/calendar/[mode].vue
index aa7ab4f..22237f3 100644
--- a/spaces/pages/calendar/[mode].vue
+++ b/spaces/pages/calendar/[mode].vue
@@ -88,6 +88,7 @@ const calendarOptionsGrid = reactive({
nowIndicator: true,
height: "80vh",
selectable: true,
+ weekNumbers: true,
select: function(info) {
console.log(info)
/*newEventData.value.resourceId = info.resource.id
diff --git a/spaces/pages/contacts/[mode]/[[id]].vue b/spaces/pages/contacts/[mode]/[[id]].vue
index ef91e9e..9f412f2 100644
--- a/spaces/pages/contacts/[mode]/[[id]].vue
+++ b/spaces/pages/contacts/[mode]/[[id]].vue
@@ -1,4 +1,6 @@
-
-
-
-
- Kontakt aktiv
-
-
- Kontakt inaktiv
-
- {{currentContact.fullName}}
-
+ Ansprechpartner: {{currentItem.fullName}}
+
+
+
+
+
+
+ Bearbeiten
+
+
-
-
- Zum Kunden
-
-
- Zum Lieferanten
-
-
+
+ Kontakt aktiv
+
+
+ Kontakt inaktiv
+
-
Kunde: {{dataStore.customers.find(customer => customer.id === currentContact.customer) ? dataStore.customers.find(customer => customer.id === currentContact.customer).name : "" }}
-
Lieferant: {{dataStore.vendors.find(vendor => vendor.id === currentContact.vendor) ? dataStore.vendors.find(vendor => vendor.id === currentContact.vendor).name : ""}}
-
-
E-Mail: {{currentContact.email}}
-
Mobil: {{currentContact.phoneMobile}}
-
Festnetz: {{currentContact.phoneHome}}
-
Rolle: {{currentContact.role}}
+
+
Kunde: {{dataStore.customers.find(customer => customer.id === currentItem.customer) ? dataStore.customers.find(customer => customer.id === currentItem.customer).name : "" }}
+
Lieferant: {{dataStore.vendors.find(vendor => vendor.id === currentItem.vendor) ? dataStore.vendors.find(vendor => vendor.id === currentItem.vendor).name : ""}}
-
-
-
- {{currentContact}}
-
+
E-Mail: {{currentItem.email}}
+
Mobil: {{currentItem.phoneMobile}}
+
Festnetz: {{currentItem.phoneHome}}
+
Rolle: {{currentItem.role}}
+
-
-
- Bearbeiten
-
-
- Archivieren
-
-
+
+
+
+
+
+
+
+
+
+ {{itemInfo.fullName}}
+
+
+
+
+
+
+
+
+
+
-
-
-
-
- {{itemInfo.fullName}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
- {{dataStore.customers.find(customer => customer.id === itemInfo.customer) ? dataStore.customers.find(customer => customer.id === itemInfo.customer).name : "Kunde auswählen"}}
-
-
-
-
-
+ {{dataStore.customers.find(customer => customer.id === itemInfo.customer) ? dataStore.customers.find(customer => customer.id === itemInfo.customer).name : "Kunde auswählen"}}
+
+
+
+
+
-
- {{dataStore.vendors.find(vendor => vendor.id === itemInfo.vendor) ? dataStore.vendors.find(vendor => vendor.id === itemInfo.vendor).name : "Lieferant auswählen"}}
-
-
-
+ >
+
+ {{dataStore.vendors.find(vendor => vendor.id === itemInfo.vendor) ? dataStore.vendors.find(vendor => vendor.id === itemInfo.vendor).name : "Lieferant auswählen"}}
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- Speichern
-
-
- Erstellen
-
-
- Abbrechen
-
-
+
+
+ Speichern
+
+
+ Erstellen
+
+
+ Abbrechen
+
+
-
-
+
\ No newline at end of file
diff --git a/spaces/pages/index.vue b/spaces/pages/index.vue
index 1fc94ec..2ccfd7b 100644
--- a/spaces/pages/index.vue
+++ b/spaces/pages/index.vue
@@ -1,6 +1,24 @@
-
- Offene Aufgaben: {{openTasks}}
+
+
+
Aufgaben
+
{{openTasks}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -20,5 +38,16 @@ const user = useSupabaseUser()
\ No newline at end of file
diff --git a/spaces/pages/inventoryitems/[mode]/[[id]].vue b/spaces/pages/inventoryitems/[mode]/[[id]].vue
new file mode 100644
index 0000000..c18c8b6
--- /dev/null
+++ b/spaces/pages/inventoryitems/[mode]/[[id]].vue
@@ -0,0 +1,155 @@
+
+
+
+ {{currentItem.name}}
+
+
+
+
+
+
+ Bearbeiten
+
+
+
+
+
Lagerplatz: {{dataStore.getSpaceById(currentItem.currentSpace).spaceNumber}} - {{dataStore.getSpaceById(currentItem.currentSpace).description}}
+
Beschreibung: {{currentItem.description}}
+
+
+
+
+
+
+
+
+
+
+ {{itemInfo.name}}
+
+
+
+
+
+
+
+
+ {{option.spaceNumber}} - {{option.description}}
+
+
+ {{dataStore.getSpaceById(itemInfo.currentSpace).spaceNumber }} - {{dataStore.getSpaceById(itemInfo.currentSpace).description}}
+ Kein Lagerplatz ausgewählt
+
+
+
+
+
+
+
+
+
+
+ Speichern
+
+
+ Erstellen
+
+
+ Abbrechen
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spaces/pages/inventoryitems/index.vue b/spaces/pages/inventoryitems/index.vue
new file mode 100644
index 0000000..a708f00
--- /dev/null
+++ b/spaces/pages/inventoryitems/index.vue
@@ -0,0 +1,75 @@
+
+
+
+
+ + Inventarartikel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spaces/pages/login.vue b/spaces/pages/login.vue
index d632d08..289f1cb 100644
--- a/spaces/pages/login.vue
+++ b/spaces/pages/login.vue
@@ -38,16 +38,15 @@ const fields = [{
const onSubmit = async (data) => {
- const { error } = await supabase.auth.signInWithPassword({
+ const {error, data:{ user}} = await supabase.auth.signInWithPassword({
email: data.email,
password: data.password
})
if(error) {
console.log(error.toString())
- alert(error.toString())
} else {
console.log("Login Successful")
- dataStore.changeTenant()
+ dataStore.initializeData(user.id)
router.push("/")
diff --git a/spaces/pages/planningBoard.vue b/spaces/pages/planningBoard.vue
index fb5965c..49a1d27 100644
--- a/spaces/pages/planningBoard.vue
+++ b/spaces/pages/planningBoard.vue
@@ -71,6 +71,7 @@ const calendarOptionsTimeline = reactive({
},
initialEvents: events,
selectable: true,
+ weekNumbers: true,
select: function (info) {
//console.log(info)
newEventData.value.resourceId = info.resource.id
@@ -97,7 +98,7 @@ const calendarOptionsTimeline = reactive({
slotDuration: {hours: 3},
slotMinTime: "06:00:00",
slotMaxTime: "21:00:00",
- /*duration: {days:7},*/
+ duration: {days:7},
buttonText: "Woche",
visibleRange: function(currentDate) {
// Generate a new date for manipulating in the next step
diff --git a/spaces/pages/plants/[mode]/[[id]].vue b/spaces/pages/plants/[mode]/[[id]].vue
index 031f16b..e1cb694 100644
--- a/spaces/pages/plants/[mode]/[[id]].vue
+++ b/spaces/pages/plants/[mode]/[[id]].vue
@@ -2,6 +2,7 @@
import HistoryDisplay from "~/components/HistoryDisplay.vue";
import DocumentList from "~/components/DocumentList.vue";
import DocumentUpload from "~/components/DocumentUpload.vue";
+import Toolbar from "~/components/Toolbar.vue";
definePageMeta({
middleware: "auth"
@@ -15,7 +16,7 @@ const toast = useToast()
const id = ref(route.params.id ? route.params.id : null )
const editor = useEditor({
- content: "
I'm running Tiptap with Vue.js. 🎉
",
+ content: "
Hier kann deine Projektdokumentation stehen
",
extensions: [TiptapStarterKit],
});
@@ -28,6 +29,8 @@ const itemInfo = ref({})
const tabItems = [
{
label: "Informationen"
+ },{
+ label: "Logbuch"
},{
label: "Projekte"
},{
@@ -47,6 +50,11 @@ const setupPage = () => {
if(mode.value === "edit") itemInfo.value = currentItem.value
+ if(mode.value === "create") {
+ let query = route.query
+ if(query.customer) itemInfo.value.customer = Number(query.customer)
+
+ }
}
@@ -59,156 +67,178 @@ const editItem = async () => {
}
const cancelEditorCreate = () => {
- mode.value = "show"
- itemInfo.value = {
- id: 0,
- infoData: {}
+ if(currentItem.value) {
+ router.push(`/plants/show/${currentItem.value.id}`)
+ } else {
+ router.push(`/plants`)
}
+
}
setupPage()
-
+ Objekt: {{currentItem.name}}
+
+
+
+
+
+
+
+ Bearbeiten
+
+
+
+
+
Kunde: {{dataStore.getCustomerById(currentItem.customer).name}}
+
+
+
+
+
+
+
+
+
+ + Projekt
+
+
+
+ router.push(`/projects/show/${row.id}`)"
+ :empty-state="{ icon: 'i-heroicons-circle-stack-20-solid', label: 'Keine zugehörigen Projekte' }"
+ >
+
+
+
+
+
+
+
+ + Aufgabe
+
+
+ router.push(`/tasks/show/${row.id}`)"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bearbeiten
-
-
- Archivieren
-
-
-
-
-
-
-
+ -->
{{itemInfo.name}}
@@ -265,11 +295,7 @@ setupPage()
-
+
\ No newline at end of file
diff --git a/spaces/pages/spaces/[mode]/[[id]].vue b/spaces/pages/spaces/[mode]/[[id]].vue
index 7e141a7..d6e7186 100644
--- a/spaces/pages/spaces/[mode]/[[id]].vue
+++ b/spaces/pages/spaces/[mode]/[[id]].vue
@@ -94,117 +94,112 @@ setupPage()
-
-
- {{currentItem}}
- {{mode}}
-
-
-
- {{currentItem.spaceNumber}} {{currentItem.type}}
-
+ Lagerplatz: {{currentItem.spaceNumber}}
+
+
+
+
+
+
+ Bearbeiten
+
+
+ Label Drucken
+
+
- {{currentItem.description}}
-
-
-
-
-
Artikel in diesem Lagerplatz
-
-
-
- | Artikel |
- Anzahl |
- Einheit |
-
-
- | {{product.name}} |
- {{getSpaceProductCount(product.id)}} |
- {{dataStore.units.find(unit => unit.id === product.unit).name}} |
-
-
-
-
-
Es befinden sich keine Artikel in diesem Lagerplatz
+
+ Beschreibung: {{currentItem.description}}
+
+
+
-
-
- Bearbeiten
-
-
- Label Drucken
-
-
- Archivieren
-
-
+
+
+
+
Artikel in diesem Lagerplatz
+
+
+ | Artikel |
+ Anzahl |
+ Einheit |
+
+
+ | {{product.name}} |
+ {{getSpaceProductCount(product.id)}} |
+ {{dataStore.units.find(unit => unit.id === product.unit).name}} |
+
+
+
+
Es befinden sich keine Artikel in diesem Lagerplatz
+
+
+
+
+
+
+ {{itemInfo.spaceNumber}}{{itemInfo.type}}
+
-
-
-
- {{itemInfo.spaceNumber}}{{itemInfo.type}}
-
-
-
-
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
- Speichern
-
-
- Erstellen
-
-
- Abbrechen
-
-
+
+
+ Speichern
+
+
+ Erstellen
+
+
+ Abbrechen
+
+
-
-
+