Skip to content

Commit

Permalink
ISI-948 Abfrage Neuanlage-Switch, Baugenehmigungsverfahren Anlage und…
Browse files Browse the repository at this point in the history
… Abfragevariante allg. Daten Komponenten
  • Loading branch information
albrecht.schaenzel committed Nov 2, 2023
1 parent 024205a commit 37c4b7e
Show file tree
Hide file tree
Showing 15 changed files with 938 additions and 45 deletions.
2 changes: 1 addition & 1 deletion frontend/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ module.exports = {
"prettier",
],
rules: {
"no-console": "off",
"no-console": process.env.NODE_ENV === "production" ? "error" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
"vue/component-name-in-template-casing": ["error", "kebab-case"],
"vue/require-default-prop": "off",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
<template>
<field-group-card :card-title="allgemeineInfoCardTitle">
<v-row justify="center">
<v-col
cols="12"
md="4"
>
<v-text-field
id="aktenzeichen_pro_lbk_field"
ref="aktenzeichenProLbkField"
v-model="abfrage.aktenzeichenProLbk"
:disabled="!isEditable"
label="Aktenzeichen ProLBK"
maxlength="255"
@input="formChanged"
/>
</v-col>
<v-col
cols="12"
md="4"
>
<v-text-field
id="bebauungsplannummer_field"
ref="bebauungsplannummerField"
v-model="abfrage.bebauungsplannummer"
:disabled="!isEditable"
label="Bebauungsplannummer"
maxlength="255"
@input="formChanged"
/>
</v-col>
<v-col
cols="12"
md="4"
>
<v-select
id="bauvorhaben_dropdown"
ref="bauvorhabenDropdown"
v-model="abfrage.bauvorhaben"
:disabled="!isEditable"
:items="bauvorhaben"
item-text="nameVorhaben"
item-value="id"
label="Bauvorhaben"
clearable
@focus="fetchBauvorhaben"
@change="formChanged"
/>
</v-col>
</v-row>
<v-row justify="center">
<v-col
cols="12"
md="6"
>
<v-select
id="stand_verfahren_dropdown"
ref="standVerfahrenDropdown"
v-model="abfrage.standVerfahren"
:disabled="!isEditable"
:items="standVerfahrenBaugenehmigungsverfahrenList"
item-value="key"
item-text="value"
:rules="[fieldValidationRules.pflichtfeld, fieldValidationRules.notUnspecified]"
@change="formChanged"
>
<template #label> Stand des Verfahrens <span class="secondary--text">*</span> </template>
</v-select>
</v-col>
<v-col
cols="12"
md="6"
>
<v-slide-y-reverse-transition>
<v-text-field
v-if="standVerfahrenFreieEingabeVisible"
id="stand_verfahren_freie_freie_eingabe_field"
ref="standVerfahrenFreieEingabeField"
v-model="abfrage.standVerfahrenFreieEingabe"
:disabled="!isEditable"
label="freie Eingabe"
maxlength="255"
@input="formChanged"
/>
</v-slide-y-reverse-transition>
</v-col>
</v-row>
</field-group-card>
</template>

<script lang="ts">
import { Component, Mixins, VModel, Prop, Watch } from "vue-property-decorator";
import SaveLeaveMixin from "@/mixins/SaveLeaveMixin";
import BaugenehmigungsverfahrenModel from "@/types/model/abfrage/BaugenehmigungsverfahrenModel";
import {
BauleitplanverfahrenDtoStandVerfahrenEnum,
BauvorhabenSearchResultDto,
LookupEntryDto,
SearchQueryAndSortingDto,
SearchQueryAndSortingDtoSortByEnum,
SearchQueryAndSortingDtoSortOrderEnum,
} from "@/api/api-client/isi-backend";
import FieldValidationRulesMixin from "@/mixins/validation/FieldValidationRulesMixin";
import SearchApiRequestMixin from "@/mixins/requests/search/SearchApiRequestMixin";
import TriSwitch from "@/components/common/TriSwitch.vue";
@Component({
components: { TriSwitch },
})
export default class AllgemeineInformationenBaugenehmigungsverfahrenComponent extends Mixins(
SaveLeaveMixin,
SearchApiRequestMixin,
FieldValidationRulesMixin,
) {
@VModel({ type: BaugenehmigungsverfahrenModel }) abfrage!: BaugenehmigungsverfahrenModel;
@Prop({ type: Boolean, default: true })
private isEditableProp!: boolean;
get isEditable(): boolean {
return this.isEditableProp;
}
private allgemeineInfoCardTitle = "Allgemeine Informationen zum Verfahren / Bauvorhaben";
private sobonJahrVisible = false;
private standVerfahrenFreieEingabeVisible = false;
private bauvorhaben: Array<BauvorhabenSearchResultDto> = [];
mounted(): void {
this.fetchBauvorhaben();
}
get standVerfahrenBaugenehmigungsverfahrenList(): LookupEntryDto[] {
return this.$store.getters["lookup/standVerfahrenBaugenehmigungsverfahren"];
}
/**
* Holt alle Bauvorhaben vom Backend.
*/
private async fetchBauvorhaben(): Promise<void> {
const searchQueryAndSortingDto = {
searchQuery: "",
selectBauleitplanverfahren: false,
selectBaugenehmigungsverfahren: 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,
} as SearchQueryAndSortingDto;
this.searchForEntities(searchQueryAndSortingDto).then((searchResults) => {
this.bauvorhaben = searchResults.searchResults?.map(
(searchResults) => searchResults as BauvorhabenSearchResultDto,
) as Array<BauvorhabenSearchResultDto>;
});
}
@Watch("abfrage.standVerfahren", { immediate: true })
private standVerfahrenChanged(): void {
if (this.abfrage.standVerfahren?.includes(BauleitplanverfahrenDtoStandVerfahrenEnum.FreieEingabe)) {
this.standVerfahrenFreieEingabeVisible = true;
} else {
this.abfrage.standVerfahrenFreieEingabe = undefined;
this.standVerfahrenFreieEingabeVisible = false;
}
}
}
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ import TriSwitch from "@/components/common/TriSwitch.vue";
@Component({
components: { TriSwitch },
})
export default class AllgemeineInformationenComponent extends Mixins(
export default class AllgemeineInformationenBauleitplanverfahrenComponent extends Mixins(
SaveLeaveMixin,
SearchApiRequestMixin,
FieldValidationRulesMixin,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<template>
<field-group-card :card-title="allgemeineInfoZurAbfrageCardTitle">
<v-row justify="center">
<v-col
cols="12"
md="6"
>
<date-picker
id="bearbeitungsfrist_datepicker"
ref="bearbeitungsfristDatepicker"
v-model="abfrage.fristBearbeitung"
:disabled="!isEditable"
label="Bearbeitungsfrist"
:rules="[fieldValidationRules.pflichtfeld]"
required
/>
</v-col>
<v-col
cols="12"
md="6"
>
</v-col>
</v-row>
</field-group-card>
</template>

<script lang="ts">
import { Component, Mixins, VModel, Prop } from "vue-property-decorator";
import SaveLeaveMixin from "@/mixins/SaveLeaveMixin";
import BaugenehmigungsverfahrenModel from "@/types/model/abfrage/BaugenehmigungsverfahrenModel";
import FieldValidationRulesMixin from "@/mixins/validation/FieldValidationRulesMixin";
import TriSwitch from "@/components/common/TriSwitch.vue";
@Component({
components: { TriSwitch },
})
export default class AllgemeineInformationenBauleitplanverfahrenComponent extends Mixins(
SaveLeaveMixin,
FieldValidationRulesMixin,
) {
@VModel({ type: BaugenehmigungsverfahrenModel }) abfrage!: BaugenehmigungsverfahrenModel;
@Prop({ type: Boolean, default: true })
private isEditableProp!: boolean;
get isEditable(): boolean {
return this.isEditableProp;
}
private allgemeineInfoZurAbfrageCardTitle = "Allgemeine Informationen zur Abfrage";
}
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,10 @@ import TriSwitch from "@/components/common/TriSwitch.vue";
@Component({
components: { TriSwitch },
})
export default class AllgemeineInformationenComponent extends Mixins(SaveLeaveMixin, FieldValidationRulesMixin) {
export default class AllgemeineInformationenBauleitplanverfahrenComponent extends Mixins(
SaveLeaveMixin,
FieldValidationRulesMixin,
) {
@VModel({ type: BauleitplanverfahrenModel }) abfrage!: BauleitplanverfahrenModel;
@Prop({ type: Boolean, default: true })
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<template>
<v-container>
<abfrage-common-component
id="abfrage_common_component"
ref="abfrageCommonComponent"
v-model="baugenehmigungsverfahren"
:is-new="isNew"
:is-editable-prop="isEditableByAbfrageerstellung()"
/>
<allgemeine-informationen-baugenehmigungsverfahren-component
id="allgemeine_informationen_baugenehmigungsverfahren-component"
ref="allgemeineInformationenBaugenehmigungsverfahrenComponent"
v-model="baugenehmigungsverfahren"
:is-editable-prop="isEditableByAbfrageerstellung()"
/>
<adresse-component
id="adresse_component"
ref="adresseComponent"
:adresse-prop.sync="baugenehmigungsverfahren.adresse"
:show-in-information-list-prop="true"
:is-editable-prop="isEditableByAbfrageerstellung()"
/>
<verortung
id="verortung_component"
ref="verortungComponent"
v-model="baugenehmigungsverfahren.verortung"
:context="context"
:look-at="baugenehmigungsverfahren.adresse"
/>
<allgemeine-informationen-zur-abfrage-baugenehmigungsverfahren-component
id="allgemeine_informationen_zur_abfrage_baugenehmigunsverfahren-component"
ref="allgemeineInformationenZurAbfrageBaugenehmigungsverfahrenComponent"
v-model="baugenehmigungsverfahren"
:look-at="baugenehmigungsverfahren"
:is-editable-prop="isEditableByAbfrageerstellung()"
/>
<dokumente
id="dokumente_component"
ref="dokumenteComponent"
v-model="baugenehmigungsverfahren.dokumente"
:name-root-folder="nameRootFolder"
:is-dokumente-editable="isEditableByAbfrageerstellung()"
@change="formChanged"
/>
</v-container>
</template>

<script lang="ts">
import { Component, Mixins, VModel, Prop } from "vue-property-decorator";
import AbfrageCommonComponent from "@/components/abfragen/AbfrageCommonComponent.vue";
import AllgemeineInformationenBaugenehmigungsverfahrenComponent from "@/components/abfragen/AllgemeineInformationenBaugenehmigungsverfahrenComponent.vue";
import AllgemeineInformationenZurAbfrageBaugenehmigungsverfahrenComponent from "@/components/abfragen/AllgemeineInformationenZurAbfrageBaugenehmigungsverfahrenComponent.vue";
import BaugenehmigungsverfahrenModel from "@/types/model/abfrage/BaugenehmigungsverfahrenModel";
import FieldGroupCard from "@/components/common/FieldGroupCard.vue";
import AbfrageSecurityMixin from "@/mixins/security/AbfrageSecurityMixin";
import { Context } from "@/utils/Context";
import Dokumente from "@/components/common/dokumente/Dokumente.vue";
import SaveLeaveMixin from "@/mixins/SaveLeaveMixin";
@Component({
computed: {
context() {
return Context.ABFRAGE;
},
},
components: {
Dokumente,
AbfrageCommonComponent,
AllgemeineInformationenBaugenehmigungsverfahrenComponent,
AllgemeineInformationenZurAbfrageBaugenehmigungsverfahrenComponent,
FieldGroupCard,
},
})
export default class BaugenehmigungsverfahrenComponent extends Mixins(AbfrageSecurityMixin, SaveLeaveMixin) {
@VModel({ type: BaugenehmigungsverfahrenModel }) baugenehmigungsverfahren!: BaugenehmigungsverfahrenModel;
@Prop({ type: Boolean, default: false })
private readonly isNew!: boolean;
private nameRootFolder = "baugenehmigungsverfahren";
}
</script>

<style></style>
20 changes: 10 additions & 10 deletions frontend/src/components/abfragen/BauleitplanverfahrenComponent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
:is-new="isNew"
:is-editable-prop="isEditableByAbfrageerstellung()"
/>
<allgemeine-informationen-component
id="allgemeine_informationen_component"
ref="allgemeineInformationenComponent"
<allgemeine-informationen-bauleitplanverfahren-component
id="allgemeine_informationen_bauleitplanverfahren-component"
ref="allgemeineInformationenBauleitplanverfahrenComponent"
v-model="bauleitplanverfahren"
:is-editable-prop="isEditableByAbfrageerstellung()"
/>
Expand All @@ -27,9 +27,9 @@
:context="context"
:look-at="bauleitplanverfahren.adresse"
/>
<allgemeine-informationen-zur-abfrage-component
id="allgemeine_informationen_zur_abfrage_component"
ref="allgemeineInformationenZurAbfrageComponent"
<allgemeine-informationen-zur-abfrage-bauleitplanverfahren-component
id="allgemeine_informationen_zur_abfrage_bauleitplanverfahren-component"
ref="allgemeineInformationenZurAbfrageBauleitplanverfahrenComponent"
v-model="bauleitplanverfahren"
:look-at="bauleitplanverfahren"
:is-editable-prop="isEditableByAbfrageerstellung()"
Expand All @@ -48,8 +48,8 @@
<script lang="ts">
import { Component, Mixins, VModel, Prop } from "vue-property-decorator";
import AbfrageCommonComponent from "@/components/abfragen/AbfrageCommonComponent.vue";
import AllgemeineInformationenComponent from "@/components/abfragen/AllgemeineInformationenComponent.vue";
import AllgemeineInformationenZurAbfrageComponent from "@/components/abfragen/AllgemeineInformationenZurAbfrageComponent.vue";
import AllgemeineInformationenBauleitplanverfahrenComponent from "@/components/abfragen/AllgemeineInformationenBauleitplanverfahrenComponent.vue";
import AllgemeineInformationenZurAbfrageBauleitplanverfahrenComponent from "@/components/abfragen/AllgemeineInformationenZurAbfrageBauleitplanverfahrenComponent.vue";
import BauleitplanverfahrenModel from "@/types/model/abfrage/BauleitplanverfahrenModel";
import FieldGroupCard from "@/components/common/FieldGroupCard.vue";
import AbfrageSecurityMixin from "@/mixins/security/AbfrageSecurityMixin";
Expand All @@ -66,8 +66,8 @@ import SaveLeaveMixin from "@/mixins/SaveLeaveMixin";
components: {
Dokumente,
AbfrageCommonComponent,
AllgemeineInformationenComponent,
AllgemeineInformationenZurAbfrageComponent,
AllgemeineInformationenBauleitplanverfahrenComponent,
AllgemeineInformationenZurAbfrageBauleitplanverfahrenComponent,
FieldGroupCard,
},
})
Expand Down
Loading

0 comments on commit 37c4b7e

Please sign in to comment.