refactor tab contact: form component, dropwdowns plz, ort, gemeinde

This commit is contained in:
ma0068
2024-05-28 16:34:34 +02:00
parent dd138380c9
commit 0a4d89543a
4 changed files with 524 additions and 200 deletions
@@ -524,7 +524,7 @@ class Kontakt extends FHCAPI_Controller
$name = $this->input->post('name');
$anschrift = $this->input->post('anschrift');
$bic = $this->input->post('bic');
$blz = $this->input->post('blz ');
$blz = $this->input->post('blz');
$kontonr = $this->input->post('kontonr');
$result = $this->BankverbindungModel->insert(
@@ -2,13 +2,17 @@ import {CoreFilterCmpt} from "../../../../filter/Filter.js";
import PvAutoComplete from "../../../../../../../index.ci.php/public/js/components/primevue/autocomplete/autocomplete.esm.min.js";
import FhcFormValidation from '../../../../Form/Validation.js';
import BsModal from "../../../../Bootstrap/Modal.js";
import FormForm from '../../../../Form/Form.js';
import FormInput from '../../../../Form/Input.js';
export default{
components: {
CoreFilterCmpt,
PvAutoComplete,
FhcFormValidation,
BsModal
BsModal,
FormForm,
FormInput
},
props: {
uid: Number
@@ -50,7 +54,6 @@ export default{
{title:"Abweich.Empf", field:"co_name"},
{title:"Firma", field:"firmenname"},
{title:"Firma_id", field:"firma_id", visible:false},
{title:"Name", field:"name"},
{title:"Adresse_id", field:"adresse_id", visible:false},
{title:"Person_id", field:"person_id", visible:false},
{title:"Name", field:"name", visible:false},
@@ -184,16 +187,21 @@ export default{
watch: {
uid() {
this.$refs.table.tabulator.setData('api/frontend/v1/stv/Kontakt/getAdressen/' + this.uid);
}
},
},
methods:{
actionNewAdress() {
this.resetModal();
this.$refs.newAdressModal.show();
},
actionEditAdress(adress_id) {
this.loadAdress(adress_id).then(() => {
if(this.addressData.adresse_id)
{
this.loadPlaces(this.addressData.plz);
this.$refs.editAdressModal.show();
}
});
},
actionDeleteAdress(adress_id) {
@@ -303,121 +311,218 @@ export default{
})
.catch(this.$fhcAlert.handleSystemError)
},
// TODO(chris): use Form Component
template: `
<div class="stv-details-kontakt-address h-100 pt-3">
<!--Modal: Add Address-->
<bs-modal ref="newAdressModal">
<template #title>{{$p.t('person', 'adresse_new')}}</template>
<form class="row g-3" ref="addressData">
<form-form class="row g-3" ref="addressData">
<div class="row mb-3">
<label for="adressentyp" class="form-label col-sm-4">{{$p.t('global', 'typ')}}</label>
<div class="col-sm-6">
<select id="adressentyp" class="form-select" v-model="addressData.typ">
<option v-for="typ in adressentypen" :key="typ.adressentyp_kurzbz" :value="typ.adressentyp_kurzbz" >{{typ.bezeichnung}}</option>
</select>
<form-input
type="select"
name="adressentyp"
v-model="addressData.typ"
>
<option
v-for="typ in adressentypen"
:key="typ.adressentyp_kurzbz"
:value="typ.adressentyp_kurzbz"
>
{{typ.bezeichnung}}
</option>
</form-input>
</div>
</div>
</div>
<div class="row mb-3">
<div class="row mb-3">
<label for="strasse" class="form-label col-sm-4">{{$p.t('person', 'strasse')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="strasse" v-model="addressData['strasse']">
</div>
</div>
<div class="row mb-3">
<label for="nation" class="form-label col-sm-4">{{$p.t('person', 'nation')}}</label>
<div class="col-sm-6">
<select id="nation" class="form-select" v-model="addressData.nation">
<option v-for="nation in nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
</select>
</div>
</div>
<div class="row mb-3">
<label for="plz" class="required form-label col-sm-4" >{{$p.t('person', 'plz')}}<sup>*</sup></label>
<div class="col-sm-6">
<input type="text" class="form-control" required v-model="addressData['plz']" @input="loadPlaces" >
<form-input
type="text"
name="strasse"
v-model="addressData.strasse"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="gemeinde" class="form-label col-sm-4">{{$p.t('person', 'gemeinde')}}</label>
<label for="nation" class="form-label col-sm-4">{{$p.t('person', 'nation')}}</label>
<div class="col-sm-6">
<select v-if="addressData['nation'] == 'A'" name="addressData[gemeinde]" class="form-select" v-model="addressData['gemeinde']">
<option v-if="!gemeinden.length" disabled>Bitte gültige PLZ wählen</option>
<option v-for="gemeinde in gemeinden" :key="gemeinde.name" :value="gemeinde.name">{{gemeinde.name}}</option>
</select><!---->
<input v-else type="text" class="form-control" v-model="addressData['gemeinde']">
<form-input
type="select"
name="nation"
v-model="addressData.nation"
>
<option
v-for="nation in nations"
:key="nation.nation_code"
:value="nation.nation_code"
:disabled="nation.sperre"
>
{{nation.kurztext}}
</option>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="plz" class="required form-label col-sm-4" >{{$p.t('person', 'plz')}}<sup>*</sup></label>
<div class="col-sm-6">
<form-input
type="text"
name="plz"
v-model="addressData.plz"
required
@input="loadPlaces"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="gemeinde" class="form-label col-sm-4">{{$p.t('person', 'gemeinde')}}</label>
<div class="col-sm-6">
<form-input
v-if="addressData.nation == 'A'"
type="select"
name="gemeinde"
v-model="addressData.gemeinde"
>
<option v-if="!gemeinden.length" disabled>Bitte gültige PLZ wählen</option>
<option
v-for="gemeinde in gemeinden"
:key="gemeinde.name"
:value="gemeinde.name"
>
{{gemeinde.name}}
</option>
</form-input>
<form-input
v-else
type="text"
name="addressData.gemeinde"
v-model="addressData.gemeinde"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="Ort" class="form-label col-sm-4">{{$p.t('person', 'ort')}}</label>
<div class="col-sm-6">
<select v-if="addressData['nation'] == 'A'" name="address[ort]" class="form-select" v-model="addressData['ort']">
<form-input
v-if="addressData.nation == 'A'"
type="select"
name="ort"
v-model="addressData.ort"
>
<option v-if="!orte.length" disabled>Bitte gültige Gemeinde wählen</option>
<option v-for="ort in orte" :key="ort.ortschaftsname" :value="ort.ortschaftsname">{{ort.ortschaftsname}}</option>
</select>
<input v-else type="text" name="ort" class="form-control" v-model="addressData['ort']">
<option
v-for="ort in orte"
:key="ort.ortschaftsname"
:value="ort.ortschaftsname"
>
{{ort.ortschaftsname}}
</option>
</form-input>
<form-input
v-else
type="text"
name="ort"
v-model="addressData.ort"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="heimatadresse" class="form-label col-sm-4">{{$p.t('person', 'heimatadresse')}}</label>
<div class="col-sm-3">
<div class="form-check">
<input id="heimatadresse" type="checkbox" class="form-check-input" value="1" v-model="addressData['heimatadresse']">
</div>
<div class="col-sm-4">
<form-input
container-class="form-check"
type="checkbox"
name="heimatadresse"
v-model="addressData.heimatadresse"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="zustelladresse" class="form-label col-sm-4">{{$p.t('person', 'zustelladresse')}}</label>
<div class="col-sm-3">
<div class="form-check">
<input id="zustelladresse" type="checkbox" class="form-check-input" value="1" v-model="addressData['zustelladresse']">
</div>
<div class="col-sm-4">
<form-input
container-class="form-check"
type="checkbox"
name="zustelladresse"
v-model="addressData.zustelladresse"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="co_name" class="form-label col-sm-4">{{$p.t('person', 'co_name')}}</label>
<div class="col-sm-6">
<input type="text" id="co_name" class="form-control" v-model="addressData['co_name']">
<form-input
type="text"
name="co_name"
v-model="addressData.co_name"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="rechnungsadresse" class="form-label col-sm-4">{{$p.t('person', 'rechnungsadresse')}}</label>
<div class="col-sm-3">
<div class="form-check">
<input id="rechnungsadresse" type="checkbox" class="form-check-input" v-model="addressData['rechnungsadresse']">
</div>
<div class="col-sm-4">
<form-input
container-class="form-check"
type="checkbox"
name="rechnungsadresse"
v-model="addressData.rechnungsadresse"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="firma_name" class="form-label col-sm-4">{{$p.t('person', 'firma')}}</label>
<div class="col-sm-3">
<PvAutoComplete v-model="addressData['firma']" optionLabel="name" :suggestions="filteredFirmen" @complete="search" :min-length="3"/>
<PvAutoComplete v-model="addressData.firma" optionLabel="name" :suggestions="filteredFirmen" @complete="search" :min-length="3"/>
</div>
</div>
<div class="row mb-3">
<label for="name" class="form-label col-sm-4">{{$p.t('person', 'firma_zusatz')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="name" v-model="addressData['name']">
<form-input
type="text"
name="firma_zusatz"
v-model="addressData.name"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="anmerkung" class="form-label col-sm-4">{{$p.t('global', 'anmerkung')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="anmerkung" v-model="addressData['anmerkung']">
<form-input
type="text"
name="anmerkung"
v-model="addressData.anmerkung"
>
</form-input>
</div>
</div>
</form>
</form-form>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{$p.t('ui', 'abbrechen')}}</button>
<button type="button" class="btn btn-primary" @click="addNewAddress()">OK</button>
@@ -427,95 +532,163 @@ export default{
<!--Modal: Edit Address-->
<bs-modal ref="editAdressModal">
<template #title>{{$p.t('person', 'adresse_edit')}}</template>
<form class="row g-3" ref="addressData">
<form-form class="row g-3" ref="addressData">
<div class="row mb-3">
<label for="adressentyp" class="form-label col-sm-4">{{$p.t('global', 'typ')}}</label>
<div class="col-sm-6">
<select id="adressentyp" class="form-control" v-model="addressData.typ">
<option v-for="typ in adressentypen" :key="typ.adressentyp_kurzbz" :value="typ.adressentyp_kurzbz" >{{typ.bezeichnung}}</option>
</select>
<form-input
type="select"
name="adressentyp"
v-model="addressData.typ"
>
<option
v-for="typ in adressentypen"
:key="typ.adressentyp_kurzbz"
:value="typ.adressentyp_kurzbz"
>
{{typ.bezeichnung}}
</option>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="strasse" class="form-label col-sm-4">{{$p.t('person', 'strasse')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="strasse" v-model="addressData.strasse">
</div>
</div>
<div class="row mb-3">
<label for="nation" class="form-label col-sm-4">{{$p.t('person', 'nation')}}</label>
<div class="col-sm-6">
<select id="nation" class="form-select" v-model="addressData.nation">
<option v-for="nation in nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
</select>
<form-input
type="text"
name="strasse"
v-model="addressData.strasse"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="plz" class="required form-label col-sm-4" >{{$p.t('person', 'plz')}}<sup>*</sup></label>
<div class="col-sm-6">
<input type="text" class="form-control" required v-model="addressData['plz']" @input="loadPlaces">
<label for="nation" class="form-label col-sm-4">{{$p.t('person', 'nation')}}</label>
<div class="col-sm-6">
<form-input
type="select"
name="nation"
v-model="addressData.nation"
>
<option
v-for="nation in nations"
:key="nation.nation_code"
:value="nation.nation_code"
:disabled="nation.sperre"
>
{{nation.kurztext}}
</option>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="plz" class="required form-label col-sm-4" >{{$p.t('person', 'plz')}}<sup>*</sup></label>
<div class="col-sm-6">
<form-input
type="text"
name="plz"
v-model="addressData.plz"
required
@input="loadPlaces"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="gemeinde" class="form-label col-sm-4">{{$p.t('person', 'gemeinde')}}</label>
<div v-if="addressData['gemeinde']" class="col-sm-6">
<input type="text" class="form-control" v-model="addressData['gemeinde']">
</div>
<div v-else class="col-sm-6">
<select v-if="addressData['nation'] == 'A'" name="addressData[gemeinde]" class="form-select" v-model="addressData['gemeinde']">
<option v-if="!gemeinden.length" disabled>{{$p.t('person', 'plz_waehlen')}}</option>
<option v-for="gemeinde in gemeinden" :key="gemeinde.name" :value="gemeinde.name">{{gemeinde.name}}</option>
</select>
<div class="col-sm-6">
<form-input
v-if="addressData.gemeinde"
type="select"
name="addressData.gemeinde"
v-model="addressData.gemeinde"
>
<option v-if="!gemeinden.length" disabled>Bitte gültige PLZ wählen</option>
<option
v-for="gemeinde in gemeinden"
:key="gemeinde.name"
:value="gemeinde.name"
>
{{gemeinde.name}}
</option>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="Ort" class="form-label col-sm-4">{{$p.t('person', 'ort')}}</label>
<div v-if="addressData['ort']" class="col-sm-6">
<input type="text" name="ort" class="form-control" v-model="addressData['ort']">
</div>
<div v-else class="col-sm-6">
<select v-if="addressData['nation'] == 'A'" name="address[ort]" class="form-select" v-model="addressData['ort']">
<option v-if="!orte.length" disabled>{{$p.t('person', 'gemeinde_waehlen')}}</option>
<option v-for="ort in orte" :key="ort.ortschaftsname" :value="ort.ortschaftsname">{{ort.ortschaftsname}}</option>
</select>
<div class="col-sm-6">
<form-input
v-if="addressData.ort"
type="select"
name="ort"
v-model="addressData.ort"
>
<option v-if="!orte.length" disabled>Bitte gültige Gemeinde wählen</option>
<option
v-for="ort in orte"
:key="ort.ortschaftsname"
:value="ort.ortschaftsname"
>
{{ort.ortschaftsname}}
</option>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="heimatadresse" class="form-label col-sm-4">{{$p.t('person', 'heimatadresse')}}</label>
<div class="col-sm-3">
<div class="form-check">
<input id="heimatadresse" type="checkbox" class="form-check-input" value="1" v-model="addressData['heimatadresse']">
</div>
<div class="col-sm-4">
<form-input
container-class="form-check"
type="checkbox"
name="heimatadresse"
v-model="addressData.heimatadresse"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="zustelladresse" class="form-label col-sm-4">{{$p.t('person', 'zustelladresse')}}</label>
<div class="col-sm-3">
<div class="form-check">
<input id="zustelladresse" type="checkbox" class="form-check-input" value="1" v-model="addressData['zustelladresse']">
</div>
<div class="col-sm-4">
<form-input
container-class="form-check"
type="checkbox"
name="zustelladresse"
v-model="addressData.zustelladresse"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="co_name" class="form-label col-sm-4">{{$p.t('person', 'co_name')}}</label>
<div class="col-sm-6">
<input type="text" id="co_name" class="form-control" v-model="addressData['co_name']">
<form-input
type="text"
name="co_name"
v-model="addressData.co_name"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="rechnungsadresse" class="form-label col-sm-4">{{$p.t('person', 'rechnungsadresse')}}</label>
<div class="col-sm-3">
<div class="form-check">
<input id="rechnungsadresse" type="checkbox" class="form-check-input" v-model="addressData['rechnungsadresse']">
</div>
<div class="col-sm-4">
<form-input
container-class="form-check"
type="checkbox"
name="rechnungsadresse"
v-model="addressData.rechnungsadresse"
>
</form-input>
</div>
</div>
@@ -525,29 +698,39 @@ export default{
<input type="text" class="form-control" id="name" v-model="addressData.firmenname">
</div>
<div v-else class="col-sm-6">
<PvAutoComplete v-model="addressData['firma']" optionLabel="name" :suggestions="filteredFirmen" @complete="search" :min-length="3"/>
<PvAutoComplete v-model="addressData.firma" optionLabel="name" :suggestions="filteredFirmen" @complete="search" :min-length="3"/>
</div>
</div>
<div class="row mb-3">
<input type="hidden" class="form-control" id="firma_id" v-model="addressData.firma_id">
</div>
<div class="row mb-3">
<label for="name" class="form-label col-sm-4">{{$p.t('person', 'firma_zusatz')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="name" v-model="addressData['name']">
<form-input
type="text"
name="firma_zusatz"
v-model="addressData.name"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="anmerkung" class="form-label col-sm-4">{{$p.t('global', 'anmerkung')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="anmerkung" v-model="addressData['anmerkung']">
<form-input
type="text"
name="anmerkung"
v-model="addressData.anmerkung"
>
</form-input>
</div>
</div>
</form>
</form-form>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="resetModal">{{$p.t('ui', 'abbrechen')}}</button>
<button ref="Close" type="button" class="btn btn-primary" @click="updateAddress(addressData.adresse_id)">OK</button>
@@ -1,10 +1,14 @@
import {CoreFilterCmpt} from "../../../../filter/Filter.js";
import BsModal from "../../../../Bootstrap/Modal.js";
import FormForm from '../../../../Form/Form.js';
import FormInput from '../../../../Form/Input.js';
export default{
components: {
CoreFilterCmpt,
BsModal
BsModal,
FormForm,
FormInput
},
props: {
uid: Number
@@ -114,10 +118,6 @@ export default{
verrechnung: true,
typ: 'p'
},
initData: {
verrechnung: true,
typ: 'p'
}
}
},
watch: {
@@ -127,6 +127,7 @@ export default{
},
methods:{
actionNewBankverbindung(){
this.resetModal();
this.$refs.newBankverbindungModal.show();
},
actionEditBankverbindung(bankverbindung_id){
@@ -196,7 +197,15 @@ export default{
},
resetModal(){
this.bankverbindungData = {};
this.bankverbindungData = this.initData;
this.bankverbindungData.name = "";
this.bankverbindungData.anschrift = "";
this.bankverbindungData.iban = "";
this.bankverbindungData.bic = "";
this.bankverbindungData.kontonr = "";
this.bankverbindungData.blz = "";
this.bankverbindungData.bic = "";
this.bankverbindungData.verrechnung = true;
this.bankverbindungData.typ = 'p';
},
},
template: `
@@ -204,63 +213,103 @@ export default{
<!--Modal: Add Bankverbindung-->
<BsModal title="Bankverbindung anlegen" ref="newBankverbindungModal">
<template #title>{{$p.t('person', 'bankvb_new')}}</template>
<form class="row g-3" ref="bankverbindungData">
<form-form class="row g-3" ref="bankverbindungData">
<div class="row mb-3">
<label for="name" class="form-label col-sm-4">Name</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="name" v-model="bankverbindungData['name']">
</div>
<label for="name" class="form-label col-sm-4">Name</label>
<div class="col-sm-6">
<form-input
type="text"
name="name"
v-model="bankverbindungData.name"
>
</div>
<div class="row mb-3">
<label for="anschrift" class="form-label col-sm-4">{{$p.t('person', 'anschrift')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="anschrift" v-model="bankverbindungData['anschrift']">
</div>
</div>
<div class="row mb-3">
<label for="anschrift" class="form-label col-sm-4">{{$p.t('person', 'anschrift')}}</label>
<div class="col-sm-6">
<form-input
type="text"
name="anschrift"
v-model="bankverbindungData.anschrift"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="iban" class="form-label col-sm-4">IBAN<sup>*</sup></label>
<div class="col-sm-6">
<input type="text" required class="form-control" id="iban" v-model="bankverbindungData['iban']">
<form-input
type="text"
name="iban"
v-model="bankverbindungData.iban"
required
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="bic" class="form-label col-sm-4">BIC</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="bic" v-model="bankverbindungData['bic']">
<form-input
type="text"
name="bic"
v-model="bankverbindungData.bic"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="kontonr" class="form-label col-sm-4">{{$p.t('person', 'kontonr')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="kontonr" v-model="bankverbindungData['kontonr']">
<form-input
type="text"
name="kontonr"
v-model="bankverbindungData.kontonr"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="blz" class="form-label col-sm-4">{{$p.t('person', 'blz')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="blz" v-model="bankverbindungData['blz']">
<form-input
type="text"
name="blz"
v-model="bankverbindungData.blz"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="typ" class="form-label col-sm-4">{{$p.t('global', 'typ')}}<sup>*</sup></label>
<div class="col-sm-6">
<select id="typ" class="form-select" required v-model="bankverbindungData['typ']">
<form-input
type="select"
name="typ"
v-model="bankverbindungData.typ"
required
>
<option value="p">{{$p.t('person', 'privatkonto')}}</option>
<option value="f">{{$p.t('person', 'firmenkonto')}}</option>
</select>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="verrechnung" class="form-label col-sm-4">{{$p.t('person', 'verrechnung')}}</label>
<div class="col-sm-3">
<div class="form-check">
<input id="verrechnung" type="checkbox" class="form-check-input" value="1" v-model="bankverbindungData['verrechnung']">
</div>
</div>
<label for="verrechnung" class="form-label col-sm-4">{{$p.t('person', 'verrechnung')}}</label>
<div class="col-sm-4">
<form-input
container-class="form-check"
type="checkbox"
name="verrechnung"
v-model="bankverbindungData.verrechnung"
>
</form-input>
</div>
</form>
</div>
</form-form>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{$p.t('ui', 'abbrechen')}}</button>
<button type="button" class="btn btn-primary" @click="addNewBankverbindung()">OK</button>
@@ -270,62 +319,101 @@ export default{
<!--Modal: Edit Bankverbindung-->
<BsModal ref="editBankverbindungModal">
<template #title>{{$p.t('person', 'bankvb_edit')}}</template>
<form class="row g-3" ref="bankverbindungData">
<form-form class="row g-3" ref="bankverbindungData">
<div class="row mb-3">
<label for="name" class="form-label col-sm-4">Name</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="name" v-model="bankverbindungData['name']">
<form-input
type="text"
name="name"
v-model="bankverbindungData.name"
>
</div>
</div>
<div class="row mb-3">
<label for="anschrift" class="form-label col-sm-4">{{$p.t('person', 'anschrift')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="anschrift" v-model="bankverbindungData['anschrift']">
<form-input
type="text"
name="anschrift"
v-model="bankverbindungData.anschrift"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="iban" class="form-label col-sm-4">IBAN<sup>*</sup></label>
<div class="col-sm-6">
<input type="text" required class="form-control" id="iban" v-model="bankverbindungData['iban']">
<form-input
type="text"
name="iban"
v-model="bankverbindungData.iban"
required
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="bic" class="form-label col-sm-4">BIC</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="bic" v-model="bankverbindungData['bic']">
<form-input
type="text"
name="bic"
v-model="bankverbindungData.bic"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="kontonr" class="form-label col-sm-4">{{$p.t('person', 'kontonr')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="kontonr" v-model="bankverbindungData['kontonr']">
<form-input
type="text"
name="kontonr"
v-model="bankverbindungData.kontonr"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="blz" class="form-label col-sm-4">{{$p.t('person', 'blz')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="blz" v-model="bankverbindungData['blz']">
<form-input
type="text"
name="blz"
v-model="bankverbindungData.blz"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="typ" class="form-label col-sm-4">{{$p.t('global', 'typ')}}<sup>*</sup></label>
<div class="col-sm-6">
<select id="typ" class="form-select" required v-model="bankverbindungData['typ']">
<form-input
type="select"
name="typ"
v-model="bankverbindungData.typ"
required
>
<option value="p">{{$p.t('person', 'privatkonto')}}</option>
<option value="f">{{$p.t('person', 'firmenkonto')}}</option>
</select>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="verrechnung" class="form-label col-sm-4">{{$p.t('person', 'verrechnung')}}</label>
<div class="col-sm-3">
<div class="form-check">
<input id="verrechnung" type="checkbox" class="form-check-input" value="1" v-model="bankverbindungData['verrechnung']">
</div>
<div class="col-sm-4">
<form-input
container-class="form-check"
type="checkbox"
name="verrechnung"
v-model="bankverbindungData.verrechnung"
>
</form-input>
</div>
</div>
</form>
</form-form>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="resetModal">{{$p.t('ui', 'abbrechen')}}</button>
<button ref="Close" type="button" class="btn btn-primary" @click="updateBankverbindung(bankverbindungData.bankverbindung_id)">OK</button>
@@ -1,14 +1,16 @@
import {CoreFilterCmpt} from "../../../../filter/Filter.js";
/*import {CoreRESTClient} from "../../../../../RESTClient.js";*/
import BsModal from "../../../../Bootstrap/Modal.js";
/*import PvToast from "../../../../../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js";*/
import PvAutoComplete from "../../../../../../../index.ci.php/public/js/components/primevue/autocomplete/autocomplete.esm.min.js";
import FormForm from '../../../../Form/Form.js';
import FormInput from '../../../../Form/Input.js';
export default{
components: {
CoreFilterCmpt,
PvAutoComplete,
BsModal
BsModal,
FormForm,
FormInput
},
props: {
uid: Number
@@ -123,6 +125,7 @@ export default{
},
methods:{
actionNewContact(){
this.resetModal();
this.$refs.newContactModal.show();
},
actionEditContact(contact_id){
@@ -214,46 +217,69 @@ export default{
<!--Modal: new Contact-->
<BsModal ref="newContactModal">
<template #title>{{$p.t('person', 'kontakt_new')}}</template>
<form class="row g-3" ref="contactData">
<div class="row mb-3">
<label for="kontakttyp" class="form-label col-sm-4">{{$p.t('global', 'typ')}}</label>
<div class="col-sm-6">
<select id="kontakttyp" class="form-control" v-model="contactData.kontakttyp">
<option value="">keine Auswahl</option>
<option v-for="typ in kontakttypen" :key="typ.kontakttyp_kurzbz" :value="typ.kontakttyp" >{{typ.kontakttyp}}</option>
</select>
</div>
<form-form class="row g-3" ref="contactData">
<div class="row mb-3">
<label for="kontakttyp" class="form-label col-sm-4">{{$p.t('global', 'typ')}}</label>
<div class="col-sm-6">
<form-input
type="select"
name="typ"
v-model="contactData.kontakttyp">
>
<option value="">keine Auswahl</option>
<option v-for="typ in kontakttypen" :key="typ.kontakttyp_kurzbz" :value="typ.kontakttyp" >{{typ.kontakttyp}}</option>
</form-input>
</div>
<div class="row mb-3">
<label for="kontakt" class="form-label col-sm-4">{{$p.t('global', 'kontakt')}}<sup>*</sup></label>
<div class="col-sm-6">
<input type="text" class="form-control" id="kontakt" v-model="contactData['kontakt']">
</div>
</div>
<div class="row mb-3">
<label for="kontakt" class="form-label col-sm-4">{{$p.t('global', 'kontakt')}}<sup>*</sup></label>
<div class="col-sm-6">
<form-input
type="text"
name="kontakt"
v-model="contactData.kontakt">
required
>
</form-input>
</div>
<div class="row mb-3">
<label for="anmerkung" class="form-label col-sm-4">{{$p.t('global', 'anmerkung')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="anmerkung" v-model="contactData['anmerkung']">
</div>
</div>
<div class="row mb-3">
<label for="anmerkung" class="form-label col-sm-4">{{$p.t('global', 'anmerkung')}}</label>
<div class="col-sm-6">
<form-input
type="text"
name="anmerkung"
v-model="contactData.anmerkung">
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="zustellung" class="form-label col-sm-4">{{$p.t('person', 'zustellung')}}</label>
<div class="col-sm-4">
<form-input
container-class="form-check"
type="checkbox"
name="zustellung"
v-model="contactData.zustellung"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="zustellung" class="form-label col-sm-4">{{$p.t('person', 'zustellung')}}</label>
<div class="row mb-3">
<label for="firma_name" class="form-label col-sm-4">{{$p.t('person', 'firma')}} / {{$p.t('person', 'standort')}}</label>
<div class="col-sm-6">
<div class="form-check">
<input id="zustellung" type="checkbox" class="form-check-input" value="1" v-model="contactData['zustellung']">
</div>
<PvAutoComplete v-model="contactData['standort']" optionLabel="kurzbz" :suggestions="filteredStandorte" @complete="search" :min-length="3"/>
</div>
</div>
<div class="row mb-3">
<label for="firma_name" class="form-label col-sm-4">{{$p.t('person', 'firma')}} / {{$p.t('person', 'standort')}}</label>
<div class="col-sm-6">
<PvAutoComplete v-model="contactData['standort']" optionLabel="kurzbz" :suggestions="filteredStandorte" @complete="search" :min-length="3"/>
</div>
</div>
</form>
</div>
</form-form>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{$p.t('ui', 'abbrechen')}}</button>
<button type="button" class="btn btn-primary" @click="addNewContact()">OK</button>
@@ -262,8 +288,10 @@ export default{
<!--Modal: Edit Contact-->
<BsModal ref="editContactModal">
<template #title>{{$p.t('person', 'kontakt_edit')}}</template>
<form class="row g-3" ref="contactData">
<form-form class="row g-3" ref="contactData">
<div class="row mb-3">
<label for="kontakttyp" class="form-label col-sm-4">{{$p.t('global', 'typ')}}</label>
<div class="col-sm-6">
@@ -273,26 +301,45 @@ export default{
</select>
</div>
</div>
<div class="row mb-3">
<label for="kontakt" class="form-label col-sm-4">{{$p.t('global', 'kontakt')}}<sup>*</sup></label>
<div class="col-sm-6">
<input type="text" class="form-control" id="kontakt" v-model="contactData['kontakt']">
<form-input
type="text"
name="kontakt"
v-model="contactData.kontakt">
required
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="anmerkung" class="form-label col-sm-4">{{$p.t('global', 'anmerkung')}}</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="anmerkung" v-model="contactData['anmerkung']">
<form-input
type="text"
name="anmerkung"
v-model="contactData.anmerkung">
>
</form-input>
</div>
</div>
<div class="row mb-3">
<label for="zustellung" class="form-label col-sm-4">{{$p.t('person', 'zustellung')}}</label>
<div class="col-sm-6">
<div class="form-check">
<input id="zustellung" type="checkbox" class="form-check-input" value="1" v-model="contactData['zustellung']">
</div>
<div class="col-sm-4">
<form-input
container-class="form-check"
type="checkbox"
name="zustellung"
v-model="contactData.zustellung"
>
</form-input>
</div>
</div>
<div class="row mb-3">
<input type="hidden" class="form-control" id="standort_id" v-model="contactData.standort_id">
</div>
@@ -300,13 +347,19 @@ export default{
<div class="row mb-3">
<label for="standort" class="form-label col-sm-4">{{$p.t('person', 'firma')}} / {{$p.t('person', 'standort')}}</label>
<div v-if="contactData.kurzbz" class="col-sm-6">
<input type="text" class="form-control" id="name" v-model="contactData.kurzbz">
<form-input
type="text"
name="name"
v-model="contactData.kurzbz"
>
</form-input>
</div>
<div v-else class="col-sm-3">
<PvAutoComplete v-model="contactData['standort']" optionLabel="kurzbz" :suggestions="filteredStandorte" @complete="search" :min-length="3"/>
</div>
</div>
</form>
</form-form>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="resetModal">{{$p.t('ui', 'abbrechen')}}</button>
<button type="button" class="btn btn-primary" @click="updateContact(contactData.kontakt_id)">OK</button>