Skip to content

ISI-1798-Begrenzung-Ergebnismenge-Bauvorhaben-Auswahl #326

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 34 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
9a7cf3a
Refactoring Datenübernahme
Apr 22, 2025
5c73c99
Refactoring Datenübernahme
Apr 22, 2025
9cc2d4a
Bugfix
Apr 28, 2025
d7729da
Bugfix
Apr 28, 2025
5661910
Optik
Apr 28, 2025
3d76677
Anpassung des Styles
TiagoKocevar Apr 28, 2025
84585ad
Work saved
Apr 28, 2025
9ae3492
Work saved
Apr 28, 2025
fb72a79
Feinschliff
Apr 28, 2025
4ba05c1
Work saved
Apr 29, 2025
c5a2663
Work saved
Apr 29, 2025
411db2d
Button-Größe angepasst
Apr 29, 2025
843291a
Merge branch 'dev' into ISI-1797-Begrenzung-Ergebnismenge-Datenuebern…
May 5, 2025
bf4b75d
Loading Anzeige
May 5, 2025
adca92e
ENTER Key für Suche
May 6, 2025
c268961
Merge branch 'ISI-1797-Begrenzung-Ergebnismenge-Datenuebernahme' into…
May 6, 2025
b775eab
Merge branch 'dev' into ISI-1798-Begrenzung-Ergebnismenge-Bauvorhaben…
May 6, 2025
bb3ac90
Merge branch 'dev' into ISI-1797-Begrenzung-Ergebnismenge-Datenuebern…
May 6, 2025
cb8e3c6
Merge branch 'ISI-1797-Begrenzung-Ergebnismenge-Datenuebernahme' into…
May 6, 2025
a876da7
Work saved
May 7, 2025
a9e7ea7
Fix-Openapi-Version
TiagoKocevar May 8, 2025
7a97ea0
Fix-Openapi-Version
TiagoKocevar May 8, 2025
d9f3a13
Merge branch 'Fix-Openapi-Version' into ISI-1797-Begrenzung-Ergebnism…
May 9, 2025
ed29ffd
Merge branch 'dev' into ISI-1797-Begrenzung-Ergebnismenge-Datenuebern…
May 9, 2025
ddaa391
Merge branch 'ISI-1797-Begrenzung-Ergebnismenge-Datenuebernahme' into…
May 12, 2025
d011b60
Work saved
May 12, 2025
9cc8959
Bugfix isBauverfahrenEditable
May 16, 2025
91c8a15
Bugfix Suchfeld muss gefüllt sein für die Suche
May 19, 2025
ca736e5
Work saved: Umstellung Bauvvorhaben auf watcher
May 20, 2025
46c0926
Work saved: Delete Bauvorhaben
May 20, 2025
c122540
Work saved: Formatierung
May 20, 2025
8e3d6eb
Open Menu on Search Results
TiagoKocevar May 20, 2025
f1abb33
DropDown klappt nach Suche auf
May 20, 2025
a914b48
Merge branch 'ISI-1797-Begrenzung-Ergebnismenge-Datenuebernahme' into…
May 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<v-row justify="center">
<v-col
cols="12"
md="4"
md="3"
>
<v-text-field
id="aktenzeichen_pro_lbk_field"
Expand All @@ -18,7 +18,7 @@
</v-col>
<v-col
cols="12"
md="4"
md="3"
>
<v-text-field
id="bebauungsplannummer_field"
Expand All @@ -34,21 +34,43 @@
<v-col
cols="12"
md="4"
class="d-flex align-center"
>
<v-autocomplete
id="bauvorhaben_dropdown"
ref="bauvorhabenDropdown"
v-model="abfrage.bauvorhaben"
:disabled="!(isEditableByAbfrageerstellung || isEditableBySachbearbeitung)"
variant="underlined"
:items="bauvorhaben"
item-title="nameVorhaben"
item-value="id"
label="Bauvorhaben"
clearable
@update:focused="!$event || fetchBauvorhaben()"
@update:model-value="formChanged"
/>
<span
v-if="isBauverfahrenEditable"
class="v-label theme--light"
>
{{ nameBauvorhaben }}
</span>
<span
v-else
class="v-label text-grey-lighten-1"
>
{{ nameBauvorhaben }}
</span>
</v-col>
<v-col
cols="12"
md="2"
>
<div class="d-flex align-center ml-8">
<v-btn
id="open_auswahl_bauvorhaben"
class="mt-3"
variant="plain"
:icon="isBauverfahrenEditable ? 'mdi-pencil-outline' : 'mdi-eye-outline'"
:disabled="!isBauverfahrenEditable"
@click="isAuswahlBauvorhabenDialogOpen = true"
/>
<v-btn
id="bauvorhaben_loeschen"
variant="plain"
class="mt-3"
icon="mdi-delete"
:disabled="!isBauverfahrenDeleteable"
@click="deleteBauvorhaben"
/>
</div>
</v-col>
</v-row>
<v-row justify="center">
Expand All @@ -68,7 +90,7 @@
:rules="[pflichtfeld, notUnspecified]"
@update:model-value="formChanged"
>
<template #label> Stand des Verfahrens <span class="text-secondary">*</span> </template>
<template #label> Stand des Verfahrens <span class="text-secondary">*</span></template>
</v-select>
</v-col>
<v-col
Expand All @@ -91,39 +113,72 @@
</v-col>
</v-row>
</field-group-card>
<auswahl-bauvorhaben-dialog
id="auswahl_bauvorhaben_dialog"
v-model="isAuswahlBauvorhabenDialogOpen"
@bauvorhaben-uebernehmen="bauvorhabenUebernehmen"
@bauvorhaben-auswahl-abbrechen="isAuswahlBauvorhabenDialogOpen = false"
/>
</template>

<script setup lang="ts">
import { onMounted, ref, watch } from "vue";
import { ref, watch, computed } from "vue";
import FieldGroupCard from "@/components/common/FieldGroupCard.vue";
import BaugenehmigungsverfahrenModel from "@/types/model/abfrage/BaugenehmigungsverfahrenModel";
import {
type BauvorhabenSearchResultDto,
BaugenehmigungsverfahrenDtoStandVerfahrenEnum,
SearchQueryAndSortingDtoSortByEnum,
SearchQueryAndSortingDtoSortOrderEnum,
} from "@/api/api-client/isi-backend";
import { BaugenehmigungsverfahrenDtoStandVerfahrenEnum, BauvorhabenDto } from "@/api/api-client/isi-backend";
import { pflichtfeld, notUnspecified } from "@/utils/FieldValidationRules";
import { useLookupStore } from "@/stores/LookupStore";
import { useSaveLeave } from "@/composables/SaveLeave";
import { useSearchApi } from "@/composables/requests/search/SearchApi";

const { getBauvorhabenById } = useBauvorhabenApi();
import { useAbfrageSecurity } from "@/composables/security/AbfrageSecurity";
import _ from "lodash";
import AuswahlBauvorhabenDialog from "@/components/common/AuswahlBauvorhabenDialog.vue";
import { useBauvorhabenApi } from "@/composables/requests/BauvorhabenApi";
import { createBauvorhabenDto } from "@/utils/Factories";

interface Props {
isEditable?: boolean;
}

const { formChanged } = useSaveLeave();
const lookupStore = useLookupStore();
const { searchForEntities } = useSearchApi();
const { isEditableByAbfrageerstellung, isEditableBySachbearbeitung } = useAbfrageSecurity();
const abfrage = defineModel<BaugenehmigungsverfahrenModel>({ required: true });
const standVerfahrenFreieEingabeVisible = ref(false);
const bauvorhaben = ref<BauvorhabenSearchResultDto[]>([]);
const bauvorhaben = ref<BauvorhabenDto>(createBauvorhabenDto());
const isAuswahlBauvorhabenDialogOpen = ref(false);
const isBauverfahrenEditable = computed(() => {
return isEditableByAbfrageerstellung.value || isEditableBySachbearbeitung.value;
});
const isBauverfahrenDeleteable = computed(() => {
return isBauverfahrenEditable && !_.isEmpty(abfrage.value.bauvorhaben);
});
const nameBauvorhaben = computed(() => {
return !_.isEmpty(bauvorhaben.value.nameVorhaben) ? bauvorhaben.value.nameVorhaben : "Kein Bauvorhaben zugeordnet";
});

withDefaults(defineProps<Props>(), { isEditable: false });
watch(
() => abfrage.value.bauvorhaben,
async (value) => {
await getBauvorhaben();
},
{ immediate: true },
);

async function getBauvorhaben(): Promise<void> {
if (
!_.isNil(abfrage.value.bauvorhaben) &&
!_.isEmpty(abfrage.value.bauvorhaben) &&
abfrage.value.bauvorhaben != bauvorhaben.value.id
) {
bauvorhaben.value = await getBauvorhabenById(abfrage.value.bauvorhaben);
} else {
bauvorhaben.value = createBauvorhabenDto();
}
}

onMounted(() => fetchBauvorhaben());
withDefaults(defineProps<Props>(), { isEditable: false });

watch(
() => abfrage.value.standVerfahren,
Expand All @@ -138,30 +193,14 @@ watch(
{ immediate: true },
);

/**
* Holt alle Bauvorhaben vom Backend.
*/
async function fetchBauvorhaben(): Promise<void> {
const searchQueryAndSortingDto = {
searchQuery: "",
selectBauleitplanverfahren: false,
selectBaugenehmigungsverfahren: false,
selectWeiteresVerfahren: false,
selectBauvorhaben: true,
selectGrundschule: false,
selectGsNachmittagBetreuung: false,
selectHausFuerKinder: false,
selectKindergarten: false,
selectKinderkrippe: false,
selectMittelschule: false,
page: undefined,
pageSize: undefined,
sortBy: SearchQueryAndSortingDtoSortByEnum.LastModifiedDateTime,
sortOrder: SearchQueryAndSortingDtoSortOrderEnum.Desc,
};
const searchResults = await searchForEntities(searchQueryAndSortingDto);
bauvorhaben.value = searchResults.searchResults?.map(
(searchResults) => searchResults as BauvorhabenSearchResultDto,
) as Array<BauvorhabenSearchResultDto>;
function bauvorhabenUebernehmen(idBauvorhaben: string): void {
abfrage.value.bauvorhaben = idBauvorhaben;
isAuswahlBauvorhabenDialogOpen.value = false;
formChanged();
}

function deleteBauvorhaben(): void {
abfrage.value.bauvorhaben = undefined;
formChanged();
}
</script>
Loading
Loading