Merge branch 'dev' into beta
This commit is contained in:
@@ -129,21 +129,21 @@ const resourceOptions = ref([
|
|||||||
const resourceToAssign = ref("project")
|
const resourceToAssign = ref("project")
|
||||||
const itemOptions = ref([])
|
const itemOptions = ref([])
|
||||||
const idToAssign = ref(null)
|
const idToAssign = ref(null)
|
||||||
const getItemsBySelectedResource = () => {
|
const getItemsBySelectedResource = async () => {
|
||||||
if(resourceToAssign.value === "project") {
|
if(resourceToAssign.value === "project") {
|
||||||
itemOptions.value = dataStore.projects
|
itemOptions.value = await useSupabaseSelect("projects")
|
||||||
} else if(resourceToAssign.value === "customer") {
|
} else if(resourceToAssign.value === "customer") {
|
||||||
itemOptions.value = dataStore.customers
|
itemOptions.value = await useSupabaseSelect("customers")
|
||||||
} else if(resourceToAssign.value === "vendor") {
|
} else if(resourceToAssign.value === "vendor") {
|
||||||
itemOptions.value = dataStore.vendors
|
itemOptions.value = await useSupabaseSelect("vendors")
|
||||||
} else if(resourceToAssign.value === "vehicle") {
|
} else if(resourceToAssign.value === "vehicle") {
|
||||||
itemOptions.value = dataStore.vehicles
|
itemOptions.value = await useSupabaseSelect("vehicles")
|
||||||
} else if(resourceToAssign.value === "product") {
|
} else if(resourceToAssign.value === "product") {
|
||||||
itemOptions.value = dataStore.products
|
itemOptions.value = await useSupabaseSelect("products")
|
||||||
} else if(resourceToAssign.value === "plant") {
|
} else if(resourceToAssign.value === "plant") {
|
||||||
itemOptions.value = dataStore.plants
|
itemOptions.value = await useSupabaseSelect("plants")
|
||||||
} else if(resourceToAssign.value === "contract") {
|
} else if(resourceToAssign.value === "contract") {
|
||||||
itemOptions.value = dataStore.contracts
|
itemOptions.value = await useSupabaseSelect("contracts")
|
||||||
} else {
|
} else {
|
||||||
itemOptions.value = []
|
itemOptions.value = []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,12 +76,42 @@ const setupQuery = () => {
|
|||||||
if(route.query) {
|
if(route.query) {
|
||||||
Object.keys(route.query).forEach(key => {
|
Object.keys(route.query).forEach(key => {
|
||||||
if(dataType.templateColumns.find(i => i.key === key)) {
|
if(dataType.templateColumns.find(i => i.key === key)) {
|
||||||
console.log(key)
|
|
||||||
if (["customer", "contract", "plant", "contact", "project"].includes(key)) {
|
if (["customer", "contract", "plant", "contact", "project"].includes(key)) {
|
||||||
item.value[key] = Number(route.query[key])
|
item.value[key] = Number(route.query[key])
|
||||||
} else {
|
} else {
|
||||||
item.value[key] = route.query[key]
|
item.value[key] = route.query[key]
|
||||||
}
|
}
|
||||||
|
} else if(key === "resources") {
|
||||||
|
/*item.value[key] = route.query[key]*/
|
||||||
|
JSON.parse(route.query[key]).forEach(async (i) => {
|
||||||
|
console.log(i)
|
||||||
|
let type = i.substring(0,1)
|
||||||
|
let id = i.substring(2,i.length)
|
||||||
|
console.log(type)
|
||||||
|
console.log(id)
|
||||||
|
let holder = ""
|
||||||
|
if(type === "P"){
|
||||||
|
holder = "profiles"
|
||||||
|
} else if(type === "F"){
|
||||||
|
holder = "vehicles"
|
||||||
|
id = Number(id)
|
||||||
|
} else if(type === "I"){
|
||||||
|
holder = "inventoryitems"
|
||||||
|
id = Number(id)
|
||||||
|
} else if(type === "G"){
|
||||||
|
holder = "inventoryitemgroups"
|
||||||
|
}
|
||||||
|
|
||||||
|
if(typeof item.value[holder] === "object") {
|
||||||
|
item.value[holder].push(id)
|
||||||
|
} else {
|
||||||
|
item.value[holder] = [id]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -128,12 +158,10 @@ const contentChanged = (content, datapoint) => {
|
|||||||
|
|
||||||
const saveAllowed = ref(false)
|
const saveAllowed = ref(false)
|
||||||
const calcSaveAllowed = (item) => {
|
const calcSaveAllowed = (item) => {
|
||||||
console.log(dataType.templateColumns)
|
|
||||||
let allowedCount = 0
|
let allowedCount = 0
|
||||||
|
|
||||||
dataType.templateColumns.filter(i => i.inputType).forEach(datapoint => {
|
dataType.templateColumns.filter(i => i.inputType).forEach(datapoint => {
|
||||||
if(datapoint.required) {
|
if(datapoint.required) {
|
||||||
console.log("is required")
|
|
||||||
|
|
||||||
if(datapoint.key.includes(".")){
|
if(datapoint.key.includes(".")){
|
||||||
if(item[datapoint.key.split('.')[0]][datapoint.key.split('.')[1]]) allowedCount += 1
|
if(item[datapoint.key.split('.')[0]][datapoint.key.split('.')[1]]) allowedCount += 1
|
||||||
@@ -225,8 +253,9 @@ watch(item.value, async (newItem, oldItem) => {
|
|||||||
Die Form Group darf nur in der ersten bearbeitet werden und muss dann runterkopiert werden
|
Die Form Group darf nur in der ersten bearbeitet werden und muss dann runterkopiert werden
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<UFormGroup
|
<UFormGroup
|
||||||
v-for="datapoint in dataType.templateColumns.filter(i => i.inputType && !i.inputColumn === columnName)"
|
v-for="datapoint in dataType.templateColumns.filter(i => i.inputType && i.inputColumn === columnName)"
|
||||||
:label="datapoint.label"
|
:label="datapoint.label"
|
||||||
>
|
>
|
||||||
<template #help>
|
<template #help>
|
||||||
|
|||||||
@@ -160,11 +160,11 @@ const links = computed(() => {
|
|||||||
icon: "i-heroicons-puzzle-piece",
|
icon: "i-heroicons-puzzle-piece",
|
||||||
defaultOpen: false,
|
defaultOpen: false,
|
||||||
children: [
|
children: [
|
||||||
{
|
/*{
|
||||||
label: "Vorgänge",
|
label: "Vorgänge",
|
||||||
to: "/inventory",
|
to: "/inventory",
|
||||||
icon: "i-heroicons-square-3-stack-3d"
|
icon: "i-heroicons-square-3-stack-3d"
|
||||||
},/*{
|
},{
|
||||||
label: "Bestände",
|
label: "Bestände",
|
||||||
to: "/inventory/stocks",
|
to: "/inventory/stocks",
|
||||||
icon: "i-heroicons-square-3-stack-3d"
|
icon: "i-heroicons-square-3-stack-3d"
|
||||||
@@ -216,6 +216,11 @@ const links = computed(() => {
|
|||||||
to: "/standardEntity/inventoryitems",
|
to: "/standardEntity/inventoryitems",
|
||||||
icon: "i-heroicons-puzzle-piece"
|
icon: "i-heroicons-puzzle-piece"
|
||||||
}] : [],
|
}] : [],
|
||||||
|
... role.checkRight("inventoryitems") ? [{
|
||||||
|
label: "Inventargruppen",
|
||||||
|
to: "/standardEntity/inventoryitemgroups",
|
||||||
|
icon: "i-heroicons-puzzle-piece"
|
||||||
|
}] : [],
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
... role.checkRight("checks") ? [{
|
... role.checkRight("checks") ? [{
|
||||||
|
|||||||
23
components/columnRenderings/inventoryitemgroupsWithLoad.vue
Normal file
23
components/columnRenderings/inventoryitemgroupsWithLoad.vue
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<script setup>
|
||||||
|
const props = defineProps({
|
||||||
|
row: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
default: {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const supabase = useSupabaseClient()
|
||||||
|
|
||||||
|
|
||||||
|
let inventoryitemgroups = await Promise.all(props.row.inventoryitemgroups.map(async (i) => {
|
||||||
|
return (await supabase.from("inventoryitemgroups").select("id,name").eq("id",i).single()).data.name
|
||||||
|
}))
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div v-if="props.row.inventoryitemgroups">
|
||||||
|
{{props.row.inventoryitemgroups ? inventoryitemgroups.join(", ") : ''}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
23
components/columnRenderings/inventoryitemsWithLoad.vue
Normal file
23
components/columnRenderings/inventoryitemsWithLoad.vue
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<script setup>
|
||||||
|
const props = defineProps({
|
||||||
|
row: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
default: {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const supabase = useSupabaseClient()
|
||||||
|
|
||||||
|
|
||||||
|
let inventoryitems = await Promise.all(props.row.inventoryitems.map(async (i) => {
|
||||||
|
return (await supabase.from("inventoryitems").select("id,name").eq("id",i).single()).data.name
|
||||||
|
}))
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div v-if="props.row.inventoryitems">
|
||||||
|
{{props.row.inventoryitems ? inventoryitems.join(", ") : ''}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
14
components/columnRenderings/space.vue
Normal file
14
components/columnRenderings/space.vue
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<script setup>
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
row: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
default: {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<span v-if="props.row.currentSpace">{{props.row.currentSpace.name}}</span>
|
||||||
|
</template>
|
||||||
23
components/columnRenderings/vehiclesWithLoad.vue
Normal file
23
components/columnRenderings/vehiclesWithLoad.vue
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<script setup>
|
||||||
|
const props = defineProps({
|
||||||
|
row: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
default: {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const supabase = useSupabaseClient()
|
||||||
|
|
||||||
|
|
||||||
|
let vehicles = await Promise.all(props.row.vehicles.map(async (i) => {
|
||||||
|
return (await supabase.from("vehicles").select("id,licensePlate").eq("id",i).single()).data.licensePlate
|
||||||
|
}))
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div v-if="props.row.vehicles">
|
||||||
|
{{props.row.vehicles ? vehicles.join(", ") : ''}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -149,6 +149,19 @@ export const useRole = () => {
|
|||||||
label: "Inventarartikel erstellen",
|
label: "Inventarartikel erstellen",
|
||||||
parent: "inventoryitems"
|
parent: "inventoryitems"
|
||||||
},
|
},
|
||||||
|
inventoryitemgroups: {
|
||||||
|
parent: "inventoryitems",
|
||||||
|
label: "Inventarartikelgruppen",
|
||||||
|
showToAllUsers: false
|
||||||
|
},
|
||||||
|
"inventoryitemgroups-viewAll": {
|
||||||
|
label: "Alle Inventarartikelgruppen einsehen",
|
||||||
|
parent: "inventoryitemgroups"
|
||||||
|
},
|
||||||
|
"inventoryitemgroups-create": {
|
||||||
|
label: "Inventarartikelgruppen erstellen",
|
||||||
|
parent: "inventoryitemgroups"
|
||||||
|
},
|
||||||
absencerequests: {
|
absencerequests: {
|
||||||
label: "Abwesenheiten",
|
label: "Abwesenheiten",
|
||||||
showToAllUsers: false
|
showToAllUsers: false
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ const calendarOptionsTimeline = ref({
|
|||||||
}],
|
}],
|
||||||
selectable: true,
|
selectable: true,
|
||||||
select: function (info) {
|
select: function (info) {
|
||||||
router.push(`/events/edit/?startDate=${info.startStr}&endDate=${info.endStr}&resources=${JSON.stringify([info.resource.id])}&source=timeline`)
|
router.push(`/standardEntity/events/create?startDate=${encodeURIComponent(info.startStr)}&endDate=${encodeURIComponent(info.endStr)}&resources=${encodeURIComponent(JSON.stringify([info.resource.id]))}&source=timeline`)
|
||||||
},
|
},
|
||||||
eventClick: function (info){
|
eventClick: function (info){
|
||||||
console.log(info.event)
|
console.log(info.event)
|
||||||
@@ -126,10 +126,11 @@ const calendarOptionsTimeline = ref({
|
|||||||
|
|
||||||
const loaded = ref(false)
|
const loaded = ref(false)
|
||||||
const setupPage = async () => {
|
const setupPage = async () => {
|
||||||
let tempData = (await useSupabaseSelect("events", "*, vehicles(*), inventoryitems(*)")).filter(i => !i.archived)
|
let tempData = (await useSupabaseSelect("events", "*")).filter(i => !i.archived)
|
||||||
let absencerequests = (await useSupabaseSelect("absencerequests", "*, profile(*)")).filter(i => !i.archived)
|
let absencerequests = (await useSupabaseSelect("absencerequests", "*, profile(*)")).filter(i => !i.archived)
|
||||||
let projects = (await useSupabaseSelect("projects", "*")).filter(i => !i.archived)
|
let projects = (await useSupabaseSelect("projects", "*")).filter(i => !i.archived)
|
||||||
let inventoryitems = (await useSupabaseSelect("inventoryitems", "*")).filter(i => !i.archived)
|
let inventoryitems = (await useSupabaseSelect("inventoryitems", "*")).filter(i => !i.archived)
|
||||||
|
let inventoryitemgroups = (await useSupabaseSelect("inventoryitemgroups", "*")).filter(i => !i.archived)
|
||||||
let profiles = (await useSupabaseSelect("profiles", "*")).filter(i => !i.archived)
|
let profiles = (await useSupabaseSelect("profiles", "*")).filter(i => !i.archived)
|
||||||
let vehicles = (await useSupabaseSelect("vehicles", "*")).filter(i => !i.archived)
|
let vehicles = (await useSupabaseSelect("vehicles", "*")).filter(i => !i.archived)
|
||||||
|
|
||||||
@@ -176,7 +177,7 @@ const setupPage = async () => {
|
|||||||
return {
|
return {
|
||||||
type: 'Mitarbeiter',
|
type: 'Mitarbeiter',
|
||||||
title: profile.fullName,
|
title: profile.fullName,
|
||||||
id: profile.id
|
id: `P-${profile.id}`
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
...vehicles.map(vehicle => {
|
...vehicles.map(vehicle => {
|
||||||
@@ -192,6 +193,13 @@ const setupPage = async () => {
|
|||||||
title: item.name,
|
title: item.name,
|
||||||
id: `I-${item.id}`
|
id: `I-${item.id}`
|
||||||
}
|
}
|
||||||
|
}),
|
||||||
|
...inventoryitemgroups.filter(i=> i.usePlanning).map(item => {
|
||||||
|
return {
|
||||||
|
type: 'Inventargruppen',
|
||||||
|
title: item.name,
|
||||||
|
id: `G-${item.id}`
|
||||||
|
}
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -228,6 +236,7 @@ const setupPage = async () => {
|
|||||||
let tempEvents = []
|
let tempEvents = []
|
||||||
|
|
||||||
tempData.forEach(event => {
|
tempData.forEach(event => {
|
||||||
|
console.log(event)
|
||||||
let eventColor = profileStore.ownTenant.calendarConfig.eventTypes.find(type => type.label === event.eventtype).color
|
let eventColor = profileStore.ownTenant.calendarConfig.eventTypes.find(type => type.label === event.eventtype).color
|
||||||
|
|
||||||
let title = ""
|
let title = ""
|
||||||
@@ -252,22 +261,30 @@ const setupPage = async () => {
|
|||||||
|
|
||||||
if(event.profiles.length > 0) {
|
if(event.profiles.length > 0) {
|
||||||
event.profiles.forEach(profile => {
|
event.profiles.forEach(profile => {
|
||||||
returnData.resourceIds.push(profile)
|
returnData.resourceIds.push(`P-${profile}`)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event.vehicles.length > 0) {
|
if(event.vehicles.length > 0) {
|
||||||
event.vehicles.forEach(vehicle => {
|
event.vehicles.forEach(vehicle => {
|
||||||
returnData.resourceIds.push(`F-${vehicle.id}`)
|
returnData.resourceIds.push(`F-${vehicle}`)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event.inventoryitems.length > 0) {
|
if(event.inventoryitems.length > 0) {
|
||||||
event.inventoryitems.forEach(inventoryitem => {
|
event.inventoryitems.forEach(inventoryitem => {
|
||||||
returnData.resourceIds.push(`I-${inventoryitem.id}`)
|
returnData.resourceIds.push(`I-${inventoryitem}`)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(event.inventoryitemgroups.length > 0) {
|
||||||
|
event.inventoryitemgroups.forEach(inventoryitemgroup => {
|
||||||
|
returnData.resourceIds.push(`G-${inventoryitemgroup}`)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(returnData)
|
||||||
|
|
||||||
tempEvents.push(returnData)
|
tempEvents.push(returnData)
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
143
stores/data.js
143
stores/data.js
@@ -1,6 +1,6 @@
|
|||||||
import {defineStore} from 'pinia'
|
import {defineStore} from 'pinia'
|
||||||
import dayjs from "dayjs"
|
import dayjs from "dayjs"
|
||||||
import {typeOf} from "uri-js/dist/esnext/util";
|
//import {typeOf} from "uri-js/dist/esnext/util";
|
||||||
import {useNumberRange} from "~/composables/useNumberRange.js";
|
import {useNumberRange} from "~/composables/useNumberRange.js";
|
||||||
|
|
||||||
//const supabase = createClient('https://uwppvcxflrcsibuzsbil.supabase.co','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InV3cHB2Y3hmbHJjc2lidXpzYmlsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MDA5MzgxOTQsImV4cCI6MjAxNjUxNDE5NH0.CkxYSQH0uLfwx9GVUlO6AYMU2FMLAxGMrwEKvyPv7Oo')
|
//const supabase = createClient('https://uwppvcxflrcsibuzsbil.supabase.co','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InV3cHB2Y3hmbHJjc2lidXpzYmlsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MDA5MzgxOTQsImV4cCI6MjAxNjUxNDE5NH0.CkxYSQH0uLfwx9GVUlO6AYMU2FMLAxGMrwEKvyPv7Oo')
|
||||||
@@ -34,6 +34,11 @@ import startDateTime from "~/components/columnRenderings/startDateTime.vue"
|
|||||||
import endDateTime from "~/components/columnRenderings/endDateTime.vue"
|
import endDateTime from "~/components/columnRenderings/endDateTime.vue"
|
||||||
import serviceCategories from "~/components/columnRenderings/serviceCategories.vue"
|
import serviceCategories from "~/components/columnRenderings/serviceCategories.vue"
|
||||||
import phase from "~/components/columnRenderings/phase.vue"
|
import phase from "~/components/columnRenderings/phase.vue"
|
||||||
|
import vehiclesWithLoad from "~/components/columnRenderings/vehiclesWithLoad.vue"
|
||||||
|
import inventoryitemsWithLoad from "~/components/columnRenderings/inventoryitemsWithLoad.vue"
|
||||||
|
import inventoryitemgroupsWithLoad from "~/components/columnRenderings/inventoryitemgroupsWithLoad.vue"
|
||||||
|
import space from "~/components/columnRenderings/space.vue"
|
||||||
|
|
||||||
|
|
||||||
import quantity from "~/components/helpRenderings/quantity.vue"
|
import quantity from "~/components/helpRenderings/quantity.vue"
|
||||||
import {useZipCheck} from "~/composables/useZipCheck.js";
|
import {useZipCheck} from "~/composables/useZipCheck.js";
|
||||||
@@ -1283,6 +1288,7 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
supabaseSelectWithInformation: "*, files(*), vendor(id,name), currentSpace(id,name)",
|
supabaseSelectWithInformation: "*, files(*), vendor(id,name), currentSpace(id,name)",
|
||||||
redirect: true,
|
redirect: true,
|
||||||
numberRangeHolder: "articleNumber",
|
numberRangeHolder: "articleNumber",
|
||||||
|
historyItemHolder: "inventoryitem",
|
||||||
inputColumns: [
|
inputColumns: [
|
||||||
"Allgemeines",
|
"Allgemeines",
|
||||||
"Anschaffung"
|
"Anschaffung"
|
||||||
@@ -1326,7 +1332,8 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
selectDataType: "spaces",
|
selectDataType: "spaces",
|
||||||
selectOptionAttribute: "name",
|
selectOptionAttribute: "name",
|
||||||
selectSearchAttributes: ['name'],
|
selectSearchAttributes: ['name'],
|
||||||
inputColumn: "Allgemeines"
|
inputColumn: "Allgemeines",
|
||||||
|
component: space
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "articleNumber",
|
key: "articleNumber",
|
||||||
@@ -1354,7 +1361,8 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
selectDataType: "vendors",
|
selectDataType: "vendors",
|
||||||
selectOptionAttribute: "name",
|
selectOptionAttribute: "name",
|
||||||
selectSearchAttributes: ['name'],
|
selectSearchAttributes: ['name'],
|
||||||
inputColumn: "Anschaffung"
|
inputColumn: "Anschaffung",
|
||||||
|
component: vendor
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "quantity",
|
key: "quantity",
|
||||||
@@ -1412,6 +1420,70 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
inventoryitemgroups: {
|
||||||
|
label: "Inventarartikelgruppen",
|
||||||
|
labelSingle: "Inventarartikelgruppe",
|
||||||
|
isStandardEntity: true,
|
||||||
|
historyItemHolder: "inventoryitemgroup",
|
||||||
|
supabaseSelectWithInformation: "*",
|
||||||
|
redirect: true,
|
||||||
|
filters:[{
|
||||||
|
name: "Archivierte ausblenden",
|
||||||
|
default: true,
|
||||||
|
"filterFunction": function (row) {
|
||||||
|
if(!row.archived) {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
templateColumns: [
|
||||||
|
{
|
||||||
|
key: "name",
|
||||||
|
label: "Name",
|
||||||
|
title: true,
|
||||||
|
required: true,
|
||||||
|
inputType: "text",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "description",
|
||||||
|
label: "Beschreibung",
|
||||||
|
inputType: "textarea"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "usePlanning",
|
||||||
|
label: "In Plantafel anzeigen",
|
||||||
|
inputType: "bool",
|
||||||
|
component: usePlanning
|
||||||
|
},{
|
||||||
|
key: "inventoryitems",
|
||||||
|
label: "Inventarartikel",
|
||||||
|
inputType: "select",
|
||||||
|
selectDataType: "inventoryitems",
|
||||||
|
selectOptionAttribute: "name",
|
||||||
|
selectSearchAttributes: ['name'],
|
||||||
|
selectMultiple: true,
|
||||||
|
required: true,
|
||||||
|
component: inventoryitemsWithLoad
|
||||||
|
},{
|
||||||
|
key: "profiles",
|
||||||
|
label: "Berechtigte Benutzer",
|
||||||
|
inputType: "select",
|
||||||
|
selectDataType: "profiles",
|
||||||
|
selectOptionAttribute: "fullName",
|
||||||
|
selectSearchAttributes: ['fullName'],
|
||||||
|
selectMultiple: true,
|
||||||
|
component: profiles
|
||||||
|
},
|
||||||
|
|
||||||
|
],
|
||||||
|
showTabs: [
|
||||||
|
{
|
||||||
|
label: 'Informationen',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
services: {
|
services: {
|
||||||
label: "Leistungen",
|
label: "Leistungen",
|
||||||
labelSingle: "Leistung",
|
labelSingle: "Leistung",
|
||||||
@@ -1529,7 +1601,7 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
labelSingle: "Termin",
|
labelSingle: "Termin",
|
||||||
isStandardEntity: true,
|
isStandardEntity: true,
|
||||||
historyItemHolder: "event",
|
historyItemHolder: "event",
|
||||||
supabaseSelectWithInformation: "*, project(id,name), vehicles(*), inventoryitems(*)",
|
supabaseSelectWithInformation: "*, project(id,name)",
|
||||||
redirect: true,
|
redirect: true,
|
||||||
filters:[{
|
filters:[{
|
||||||
name: "Archivierte ausblenden",
|
name: "Archivierte ausblenden",
|
||||||
@@ -1585,17 +1657,43 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
selectDataType: "projects",
|
selectDataType: "projects",
|
||||||
selectOptionAttribute: "name",
|
selectOptionAttribute: "name",
|
||||||
selectSearchAttributes: ['name'],
|
selectSearchAttributes: ['name'],
|
||||||
|
},{
|
||||||
|
key: "vehicles",
|
||||||
|
label: "Fahrzeuge",
|
||||||
|
inputType: "select",
|
||||||
|
selectDataType: "vehicles",
|
||||||
|
selectOptionAttribute: "licensePlate",
|
||||||
|
selectSearchAttributes: ['licensePlate'],
|
||||||
|
selectMultiple: true,
|
||||||
|
component: vehiclesWithLoad,
|
||||||
|
},{
|
||||||
|
key: "inventoryitems",
|
||||||
|
label: "Inventarartikel",
|
||||||
|
inputType: "select",
|
||||||
|
selectDataType: "inventoryitems",
|
||||||
|
selectOptionAttribute: "name",
|
||||||
|
selectSearchAttributes: ['name'],
|
||||||
|
selectMultiple: true,
|
||||||
|
component: inventoryitemsWithLoad
|
||||||
|
},{
|
||||||
|
key: "inventoryitemgroups",
|
||||||
|
label: "Inventarartikelgruppen",
|
||||||
|
inputType: "select",
|
||||||
|
selectDataType: "inventoryitemgroups",
|
||||||
|
selectOptionAttribute: "name",
|
||||||
|
selectSearchAttributes: ['name'],
|
||||||
|
selectMultiple: true,
|
||||||
|
component: inventoryitemgroupsWithLoad
|
||||||
},{
|
},{
|
||||||
key: "profiles",
|
key: "profiles",
|
||||||
label: "Beteiligte Benutzer",
|
label: "Beteiligte Benutzer",
|
||||||
required: true,
|
|
||||||
inputType: "select",
|
inputType: "select",
|
||||||
selectDataType: "profiles",
|
selectDataType: "profiles",
|
||||||
selectOptionAttribute: "fullName",
|
selectOptionAttribute: "fullName",
|
||||||
selectSearchAttributes: ['fullName'],
|
selectSearchAttributes: ['fullName'],
|
||||||
selectMultiple: true,
|
selectMultiple: true,
|
||||||
component: profiles
|
component: profiles
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
showTabs: [
|
showTabs: [
|
||||||
{
|
{
|
||||||
@@ -1841,7 +1939,6 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
const contracts = ref([])
|
const contracts = ref([])
|
||||||
const formSubmits = ref([])
|
const formSubmits = ref([])
|
||||||
const contacts = ref([])
|
const contacts = ref([])
|
||||||
const vehicles = ref([])
|
|
||||||
const vendors = ref([])
|
const vendors = ref([])
|
||||||
const incominginvoices = ref([])
|
const incominginvoices = ref([])
|
||||||
const bankAccounts = ref([])
|
const bankAccounts = ref([])
|
||||||
@@ -1876,7 +1973,6 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
await fetchUnits()
|
await fetchUnits()
|
||||||
await fetchMovements()
|
await fetchMovements()
|
||||||
await fetchSpaces()
|
await fetchSpaces()
|
||||||
await fetchVehicles()
|
|
||||||
await fetchVendors()
|
await fetchVendors()
|
||||||
await fetchIncomingInvoices()
|
await fetchIncomingInvoices()
|
||||||
await fetchBankAccounts()
|
await fetchBankAccounts()
|
||||||
@@ -1912,7 +2008,6 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
contracts.value= []
|
contracts.value= []
|
||||||
formSubmits.value= []
|
formSubmits.value= []
|
||||||
contacts.value= []
|
contacts.value= []
|
||||||
vehicles.value= []
|
|
||||||
vendors.value= []
|
vendors.value= []
|
||||||
incominginvoices.value= []
|
incominginvoices.value= []
|
||||||
bankAccounts.value= []
|
bankAccounts.value= []
|
||||||
@@ -2122,6 +2217,18 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
name = "Name"
|
name = "Name"
|
||||||
} else if(key === "approved") {
|
} else if(key === "approved") {
|
||||||
name = "Genehmigt"
|
name = "Genehmigt"
|
||||||
|
} else if(key === "manufacturer") {
|
||||||
|
name = "Hersteller"
|
||||||
|
} else if(key === "purchasePrice") {
|
||||||
|
name = "Kaufpreis"
|
||||||
|
} else if(key === "purchaseDate") {
|
||||||
|
name = "Kaufdatum"
|
||||||
|
} else if(key === "serialNumber") {
|
||||||
|
name = "Seriennummer"
|
||||||
|
} else if(key === "usePlanning") {
|
||||||
|
name = "In Plantafel verwenden"
|
||||||
|
} else if(key === "currentSpace") {
|
||||||
|
name = "In Plantafel verwenden"
|
||||||
} else if(key === "customer") {
|
} else if(key === "customer") {
|
||||||
name = "Kunde"
|
name = "Kunde"
|
||||||
if(prop.data.o) oldVal = customers.value.find(i => i.id === prop.data.o).name
|
if(prop.data.o) oldVal = customers.value.find(i => i.id === prop.data.o).name
|
||||||
@@ -2267,9 +2374,9 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function createNewItem (dataType,data){
|
async function createNewItem (dataType,data){
|
||||||
if(typeOf(data) === 'object') {
|
if(typeof(data) === 'object') {
|
||||||
data = {...data, tenant: profileStore.currentTenant}
|
data = {...data, tenant: profileStore.currentTenant}
|
||||||
} else if(typeOf(data) === 'array') {
|
} else if(typeof(data) === 'array') {
|
||||||
data.map(i => {
|
data.map(i => {
|
||||||
return {
|
return {
|
||||||
...i,
|
...i,
|
||||||
@@ -2319,7 +2426,7 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
|
|
||||||
await generateHistoryItems(dataType, supabaseData[0])
|
await generateHistoryItems(dataType, supabaseData[0])
|
||||||
|
|
||||||
if(!["statementallocations","absencerequests", "productcategories", "servicecategories", "projecttypes", "checks", "profiles","services", "inventoryitems", "incominginvoices"].includes(dataType) ){
|
if(!["statementallocations","absencerequests", "productcategories", "servicecategories", "projecttypes", "checks", "profiles","services", "inventoryitems", "inventoryitemgroups", "incominginvoices"].includes(dataType) ){
|
||||||
await eval( dataType + '.value.push(' + JSON.stringify(...supabaseData) + ')')
|
await eval( dataType + '.value.push(' + JSON.stringify(...supabaseData) + ')')
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2507,9 +2614,6 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
async function fetchMovements () {
|
async function fetchMovements () {
|
||||||
movements.value = (await supabase.from("movements").select().eq('tenant', profileStore.currentTenant)).data
|
movements.value = (await supabase.from("movements").select().eq('tenant', profileStore.currentTenant)).data
|
||||||
}
|
}
|
||||||
async function fetchVehicles () {
|
|
||||||
vehicles.value = (await supabase.from("vehicles").select().eq('tenant', profileStore.currentTenant)).data
|
|
||||||
}
|
|
||||||
async function fetchTimes () {
|
async function fetchTimes () {
|
||||||
times.value = (await supabase.from("times").select().eq('tenant', profileStore.currentTenant).order("startDate", {ascending:false})).data
|
times.value = (await supabase.from("times").select().eq('tenant', profileStore.currentTenant).order("startDate", {ascending:false})).data
|
||||||
}
|
}
|
||||||
@@ -2678,13 +2782,13 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
id: profile.id
|
id: profile.id
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
...vehicles.value.map(vehicle => {
|
/*...vehicles.value.map(vehicle => {
|
||||||
return {
|
return {
|
||||||
type: 'Fahrzeug',
|
type: 'Fahrzeug',
|
||||||
title: vehicle.licensePlate,
|
title: vehicle.licensePlate,
|
||||||
id: `F-${vehicle.id}`
|
id: `F-${vehicle.id}`
|
||||||
}
|
}
|
||||||
}),
|
}),*/
|
||||||
...inventoryitems.value.filter(i=> i.usePlanning).map(item => {
|
...inventoryitems.value.filter(i=> i.usePlanning).map(item => {
|
||||||
return {
|
return {
|
||||||
type: 'Inventar',
|
type: 'Inventar',
|
||||||
@@ -2793,12 +2897,12 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
|
|
||||||
const getCostCentresComposed = computed(() => {
|
const getCostCentresComposed = computed(() => {
|
||||||
return [
|
return [
|
||||||
...vehicles.value.map(vehicle => {
|
/*...vehicles.value.map(vehicle => {
|
||||||
return {
|
return {
|
||||||
label: "Fahrzeug - " + vehicle.licensePlate,
|
label: "Fahrzeug - " + vehicle.licensePlate,
|
||||||
id: vehicle.id
|
id: vehicle.id
|
||||||
}
|
}
|
||||||
}),
|
}),*/
|
||||||
...projects.value.map(project => {
|
...projects.value.map(project => {
|
||||||
return {
|
return {
|
||||||
label: "Projekt - " + project.name,
|
label: "Projekt - " + project.name,
|
||||||
@@ -2887,7 +2991,6 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
contracts,
|
contracts,
|
||||||
formSubmits,
|
formSubmits,
|
||||||
contacts,
|
contacts,
|
||||||
vehicles,
|
|
||||||
vendors,
|
vendors,
|
||||||
incominginvoices,
|
incominginvoices,
|
||||||
bankAccounts,
|
bankAccounts,
|
||||||
|
|||||||
Reference in New Issue
Block a user