Form and Start Backend

This commit is contained in:
ma0068
2026-01-15 15:39:42 +01:00
parent 519cbc7601
commit b5382b1bdf
7 changed files with 806 additions and 121 deletions
@@ -9,6 +9,12 @@ class Zeitsperren extends FHCAPI_Controller
parent::__construct([
'getZeitsperrenUser' => self::PERM_LOGGED,
'getTypenZeitsperren' => self::PERM_LOGGED,
'getTypenErreichbarkeit' => self::PERM_LOGGED,
'getStunden' => self::PERM_LOGGED,
'loadZeitsperre' => self::PERM_LOGGED,
'add' => self::PERM_LOGGED,
'update' => self::PERM_LOGGED,
'delete' => self::PERM_LOGGED,
]);
// Load Libraries
@@ -24,6 +30,8 @@ class Zeitsperren extends FHCAPI_Controller
// Load models
$this->load->model('ressource/Zeitsperre_model', 'ZeitsperreModel');
$this->load->model('ressource/Zeitsperretyp_model', 'ZeitsperretypModel');
$this->load->model('ressource/Erreichbarkeit_model', 'ErreichbarkeitModel');
$this->load->model('ressource/Stunde_model', 'StundeModel');
}
public function getZeitsperrenUser($uid)
@@ -46,4 +54,119 @@ class Zeitsperren extends FHCAPI_Controller
$this->terminateWithSuccess((getData($result) ?: []));
}
public function getTypenErreichbarkeit()
{
$result = $this->ErreichbarkeitModel->load();
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
public function getStunden()
{
$this->StundeModel->addOrder('stunde', 'ASC');
$result = $this->StundeModel->load();
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
public function loadZeitsperre($zeitsperre_id)
{
$result = $this->ZeitsperreModel->addSelect(
'campus.tbl_zeitsperre.*, typ.*,
ma.person_id AS ma_person_id, ma.vorname AS ma_vorname, ma.nachname AS ma_nachname,
ma.titelpre AS ma_titelpre, ma.titelpost AS ma_titelpost'
);
$this->ZeitsperreModel->addJoin('campus.tbl_zeitsperretyp typ', 'ON (typ.zeitsperretyp_kurzbz = campus.tbl_zeitsperre.zeitsperretyp_kurzbz)');
$this->ZeitsperreModel->addJoin('public.tbl_benutzer ben', 'ON (ben.uid = campus.tbl_zeitsperre.vertretung_uid)', 'LEFT');
$this->ZeitsperreModel->addJoin('public.tbl_person ma', 'ON (ma.person_id = ben.person_id)', 'LEFT');
$result = $this->ZeitsperreModel->loadWhere(
array('zeitsperre_id' => $zeitsperre_id)
);
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess((current(getData($result)) ?: []));
}
public function add($mitarbeiter_uid)
{
$this->form_validation->set_rules('zeitsperretyp_kurzbz', 'Grund Zeitsperre', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Grund Zeitsperre'])
]);
$this->form_validation->set_rules('vondatum', 'VON-DATUM', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'VON-DATUM'])
]);
$this->form_validation->set_rules('bisdatum', 'BIS-DATUM', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'BIS-DATUM'])
]);
if ($this->form_validation->run() == false)
{
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
$bezeichnung = $this->input->post('bezeichnung');
$vondatum = $this->input->post('vondatum');
$vonstunde = $this->input->post('vonstunde');
$bisdatum = $this->input->post('bisdatum');
$bisstunde = $this->input->post('bisstunde');
//$vonIso = $this->input->post('vonISO'); //Timestamp für Stunde
//$bisIso = $this->input->post('bisISO'); //Timestamp für Stunde
$erreichbarkeit_kurzbz = $this->input->post('erreichbarkeit_kurzbz');
$vertretung_uid = $this->input->post('vertretung_uid');
$zeitsperretyp_kurzbz = $this->input->post('zeitsperretyp_kurzbz');
// $this->terminateWithError("for later: Stunden Timestamps: VON " . $vonIso . " BIS " . $bisIso, self::ERROR_TYPE_GENERAL);
$uid = getAuthUID();
$result = $this->ZeitsperreModel->insert(
[
'mitarbeiter_uid' => $mitarbeiter_uid,
'bezeichnung' => $bezeichnung,
'vondatum' => $vondatum,
'vonstunde' => $vonstunde,
'bisdatum' => $bisdatum,
'bisstunde' => $bisstunde,
'erreichbarkeit_kurzbz' => $erreichbarkeit_kurzbz,
'zeitsperretyp_kurzbz' => $zeitsperretyp_kurzbz,
'vertretung_uid' => $vertretung_uid,
'insertvon' => $uid,
'insertamum' => date('c'),
]
);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function update()
{
}
public function delete($zeitsperre_id)
{
if (!is_numeric($zeitsperre_id) || (int)$zeitsperre_id <= 0)
{
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'Zeitsperre_id']), self::ERROR_TYPE_GENERAL);
}
$result = $this->ZeitsperreModel->delete(
array('zeitsperre_id' => $zeitsperre_id)
);
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
}
@@ -66,15 +66,12 @@ class Zeitsperre_model extends DB_Model
* get Zeitsperren of a user
*
* @param $uid mitarbeiteruid
* @param $bisgrenze @true show only entries of actual business year (1.9.- 31.8.)
*
* @return array
*/
public function getZeitsperrenUser($uid, $bisgrenze=true)
{
//TODO(Manu) check if bisDate is needed
/* $parametersArray = array();
array_push($parametersArray, $uid);
$parametersArray = [$uid];*/
$qry = "
SELECT tbl_zeitsperre.*, tbl_zeitsperretyp.*, tbl_erreichbarkeit.farbe AS erreichbarkeit_farbe, tbl_erreichbarkeit.beschreibung AS erreichbarkeit_beschreibung
FROM (campus.tbl_zeitsperre JOIN campus.tbl_zeitsperretyp USING (zeitsperretyp_kurzbz))
@@ -23,6 +23,7 @@ $includesArray = array(
'public/css/components/FormUnderline.css',
'public/css/Cis4/Cms.css',
'public/css/Cis4/Studium.css',
'public/css/Cis4/Zeitsperren.css',
),
'customJSs' => array(
'vendor/npm-asset/primevue/accordion/accordion.min.js',
+29
View File
@@ -0,0 +1,29 @@
/* Repositioning clear icon Datepicker for not being outside the textfield */
/* Wrapper */
.dp__input_wrap {
position: relative;
}
/* calender-Icon left */
.dp__input_icon {
position: absolute;
left: 10px;
right: auto;
top: 50%;
transform: translateY(-50%);
}
/* Clear-Icon right */
.dp__clear_icon {
position: absolute;
right: 10px;
left: auto;
top: 50%;
transform: translateY(-50%);
}
/* padding for Icons */
.dp__input {
padding-left: 36px !important;
padding-right: 36px !important;
}
+33
View File
@@ -27,5 +27,38 @@ export default {
method: 'get',
url: '/api/frontend/v1/Zeitsperren/getTypenZeitsperren/'
};
},
getTypenErreichbarkeit(){
return {
method: 'get',
url: '/api/frontend/v1/Zeitsperren/getTypenErreichbarkeit/'
};
},
getStunden(){
return {
method: 'get',
url: '/api/frontend/v1/Zeitsperren/getStunden/'
};
},
addZeitsperre(uid, params) {
return {
method: 'post',
url: '/api/frontend/v1/Zeitsperren/add/' + uid,
params
};
},
loadZeitsperre(zeitsperre_id) {
return {
method: 'get',
url: '/api/frontend/v1/Zeitsperren/loadZeitsperre/' + zeitsperre_id
};
},
deleteZeitsperre(zeitsperre_id) {
console.log("zeitsperre_id " + zeitsperre_id);
return {
method: 'post',
url: '/api/frontend/v1/Zeitsperren/delete/' + zeitsperre_id
};
}
};
@@ -1,35 +1,176 @@
import {CoreFilterCmpt} from "../../filter/Filter.js";
import FormForm from '../../Form/Form.js';
import FormInput from '../../Form/Input.js';
import PvAutoComplete from '../../../../../index.ci.php/public/js/components/primevue/autocomplete/autocomplete.esm.min.js';
import ApiAuthinfo from '../../../api/factory/authinfo.js';
import ApiTimelocks from "../../../api/factory/cis/zeitsperren.js";
import ApiStvAbschlusspruefung from "../../../api/factory/stv/abschlusspruefung";
export default {
name: 'ZeitsperrenComponent',
components: {
CoreFilterCmpt,
FormForm,
FormInput
FormInput,
PvAutoComplete
},
data(){
return {
uid: null,
timeRecordingLockedUntil: '2015-08-31', //TODO(Manu) check if needed
typesTimeLocks: ["Urlaub", "PflegeU", "ZA", "Krank", "DienstF", "DienstV", "CovidSB", "CovidKS"],
typesHideStunden: ["Urlaub", "ZA", "Krank", "DienstF", "DienstV", "CovidSB", "CovidKS"],
listTypenZeitsperren: [],
listTypenErreichbarkeit: [],
listStunden: [],
tabulatorOptions: null,
tabulatorEvents: [],
zeitsperreData: {}
zeitsperreData: {
vondatum : new Date(),
bisdatum: new Date(),
vonISO : "00:00:00", //later
bisISO: "23:59:59", //later
erreichbarkeit_kurzbz: 'n',
zeitsperretyp_kurzbz: 'Arzt',
vonstunde: null,
bisstunde: null
},
selectedVertretung: null,
filteredMitarbeiter: [],
abortController: {
mitarbeiter: null
},
};
},
computed: {
dienstverhinderungen() {
return {
"Eheschließung": "a) " + this.$p.t('zeitsperren', 'eheschliessung'),
"Geburt eigenes Kind": "b) " + this.$p.t('zeitsperren', 'geburt'),
"Heirat Kind/Geschwister": "c) " + this.$p.t('zeitsperren', 'heirat'),
"Eigene Sponsion/Promotion": "d) " + this.$p.t('zeitsperren', 'sponsion'),
"Lebensbedr. Erkrankung P/K/E": "e) " + this.$p.t('zeitsperren', 'erkrankung_lebensbedr'),
"Ableben P/K/E": "f) " + this.$p.t('zeitsperren', 'ableben'),
"Bestattung G/S/G": "g) " + this.$p.t('zeitsperren', 'bestattung'),
"Wohnungswechsel": "h) " + this.$p.t('zeitsperren', 'umzug'),
"Bundesheer": "i) " + this.$p.t('zeitsperren', 'bundesheer'),
"Volksschultag": "j) " + this.$p.t('zeitsperren', 'volksschultag')};
},
},
methods: {
actionNewZeitsperre(){
console.log("actionNewZeitsperre ");
},
actionEditZeitsperre(zeitsperre_id){
console.log("actionEditZeitsperre " + zeitsperre_id);
return this.$api
.call(ApiTimelocks.loadZeitsperre(zeitsperre_id))
.then(response => {
console.log(response);
this.zeitsperreData = response.data;
//this.getMaData(this.zeitsperreData.mitarbeiter);
this.selectedVertretung = {
label: this.getPersonLabel(this.zeitsperreData.ma_titelpre, this.zeitsperreData.ma_nachname, this.zeitsperreData.ma_vorname, this.zeitsperreData.ma_titelpost, this.zeitsperreData.vertretung_uid),
person_id: this.zeitsperreData.ma_person_id,
mitarbeiter_uid: this.zeitsperreData.vertretung_uid
};
})
.catch(this.$fhcAlert.handleSystemError);
},
actionDeleteZeitsperre(zeitsperre_id){
console.log("actionDeleteZeitsperre " + zeitsperre_id);
this.$fhcAlert
.confirmDelete()
.then(result => result
? zeitsperre_id
: Promise.reject({ handled: true })
)
.then(() => this.deleteZeitsperre(zeitsperre_id))
.catch(this.$fhcAlert.handleSystemError);
},
addZeitsperre(){
return this.$refs.dataZeitsperre
.call(ApiTimelocks.addZeitsperre(this.uid, this.zeitsperreData))
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
})
.catch(this.$fhcAlert.handleSystemError)
.finally(() => {
this.reload();
});
},
deleteZeitsperre(zeitsperre_id){
return this.$api
.call(ApiTimelocks.deleteZeitsperre(zeitsperre_id))
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
})
.catch(this.$fhcAlert.handleSystemError)
.finally(()=> {
this.reload();
});
},
searchMitarbeiter(event) {
if (this.abortController.mitarbeiter) {
this.abortController.mitarbeiter.abort();
}
this.abortController.mitarbeiter = new AbortController();
return this.$api
.call(ApiStvAbschlusspruefung.getMitarbeiter(event.query))
.then(result => {
this.filteredMitarbeiter = [];
for (let mitarbeiter of result.data.retval) {
this.filteredMitarbeiter.push(
{
label: this.getPersonLabel(
mitarbeiter.titelpre,
mitarbeiter.nachname,
mitarbeiter.vorname,
mitarbeiter.titelpost,
mitarbeiter.mitarbeiter_uid
),
person_id: mitarbeiter.person_id,
mitarbeiter_uid: mitarbeiter.mitarbeiter_uid
}
);
}
});
},
getPersonLabel(titelpre, nachname, vorname, titelpost, uid) {
if(!uid)
return '';
return nachname + ' ' + vorname + (titelpre ? ' ' + titelpre : '') + (titelpost ? ' ' + titelpost : '') + (uid ? ' (' + uid + ')' : '');
},
reload() {
if (this.$refs.table)
this.$refs.table.reloadTable();
},
handleChangeVonStunde(){
let stunde = this.zeitsperreData.vonstunde;
const result = this.listStunden.find(item => item.stunde === stunde);
if (!result) {
this.zeitsperreData.vonISO = '00:00:00';
return;
}
this.zeitsperreData.vonISO = result.beginn;
},
handleChangeBisStunde(){
let stunde = this.zeitsperreData.bisstunde;
const result = this.listStunden.find(item => item.stunde === stunde);
if (!result) {
this.zeitsperreData.vonISO = '23:59:59';
return;
}
this.zeitsperreData.bisISO = result.ende;
}
},
watch: {
selectedVertretung(newVal) {
this.zeitsperreData.vertretung_uid = newVal?.mitarbeiter_uid || 'keine Vertretung';
},
},
created() {
@@ -42,8 +183,8 @@ export default {
this.$api.call(ApiTimelocks.getTimelocksUser(this.uid)),
ajaxResponse: (url, params, response) => response.data,
columns: [
{title:"beschreibung", field:"beschreibung"},
{title:"Grund", field:"zeitsperretyp_kurzbz"},
{title:"bezeichnung", field:"bezeichnung"},
{title:"Grund", field:"beschreibung"},
{title:"Von", field:"vondatum",
formatter: function (cell) {
const dateStr = cell.getValue();
@@ -73,7 +214,7 @@ export default {
{title:"vonstunde", field:"vonstunde", visible: false},
{title:"bisstunde", field:"bisstunde", visible: false},
{title:"Vertretung", field:"vertretung_uid"},
{title:"Erreichbarkeit", field:"erreichbarkeit_kurzbz"},
{title:"Erreichbarkeit", field:"erreichbarkeit_beschreibung"},
{title:"zeitsperre_id", field:"zeitsperre_id", visible: false},
{title:"mitarbeiter_uid", field:"mitarbeiter_uid", visible: false},
{title: 'Aktionen', field: 'actions',
@@ -85,19 +226,34 @@ export default {
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.title = this.$p.t('person', 'bankvb_edit');
button.title = this.$p.t('ui', 'bearbeiten');
button.addEventListener('click', (event) =>
this.actionEditZeitsperre(cell.getData().zeitsperre_id)
);
if(cell.getData().zeitsperretyp_kurzbz == 'DienstV' || cell.getData().zeitsperretyp_kurzbz == 'ZVerfueg'){
button.disabled = true;
}
//TODO(Manu) check if needed
if(this.typesTimeLocks.includes(cell.getData().zeitsperretyp_kurzbz) && (cell.getData().vondatum < this.timeRecordingLockedUntil)){
button.disabled = true;
}
container.append(button);
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = this.$p.t('person', 'bankvb_delete');
button.title = this.$p.t('ui', 'loeschen');
button.addEventListener('click', () =>
this.actionDeleteZeitsperre(cell.getData().zeitsperre_id)
//this.deleteZeitsperre(cell.getData().zeitsperre_id)
this.actionDeleteZeitsperre(cell.getData().zeitsperre_id) //TODO(Manu) not working with prompt
);
if(cell.getData().zeitsperretyp_kurzbz == 'Urlaub' || cell.getData().zeitsperretyp_kurzbz == 'ZVerfueg'){
button.disabled = true;
}
//TODO(Manu) check if needed
if(this.typesTimeLocks.includes(cell.getData().zeitsperretyp_kurzbz) && (cell.getData().vondatum < this.timeRecordingLockedUntil)){
button.disabled = true;
}
container.append(button);
return container;
@@ -115,6 +271,20 @@ export default {
})
.catch(this.$fhcAlert.handleSystemError);
this.$api
.call(ApiTimelocks.getTypenErreichbarkeit())
.then(result => {
this.listTypenErreichbarkeit = result.data;
})
.catch(this.$fhcAlert.handleSystemError);
this.$api
.call(ApiTimelocks.getStunden())
.then(result => {
this.listStunden = result.data;
})
.catch(this.$fhcAlert.handleSystemError);
},
/* created(){
@@ -138,121 +308,230 @@ export default {
{title:"insertvon", field:"insertvon"},
{title:"freigabevon", field:"freigabevon"},
{title:"freigabeamum", field:"freigabeamum"},
{{zeitsperreData}} <hr>
{{listTypenErreichbarkeit}}person
*/
template: /* html */`
<div class="zeitsperre">
<h4>Meine Zeitsperren ({{uid}}) </h4>
{{zeitsperreData}}
<form-form class="row g-3 mt-3" ref="dataZeitsperre">
<div class="row mb-3 col-6">
<form-input
type="text"
name="beschreibung"
:label="$p.t('ui/bezeichnung')"
v-model="zeitsperreData.beschreibung"
>
</form-input>
</div>
<div class="row mb-3 col-6">
<form-input
type="select"
name="zeitsperretyp_kurzbz"
:label="$p.t('person/grund')"
v-model="zeitsperreData.zeitsperretyp_kurzbz"
>
<option
v-for="typ in listTypenZeitsperren"
:key="typ.zeitsperretyp_kurzbz"
:value="typ.zeitsperretyp_kurzbz"
>
{{typ.beschreibung}}
</option>
</form-input>
</div>
<div class="row mb-3 col-3">
<form-input
type="text"
name="vondatum"
:label="$p.t('ui/from')"
v-model="zeitsperreData.vondatum"
required
>
</form-input>
</div>
<div class="row mb-3 col-3">
<form-input
type="text"
name="bisdatum"
:label="$p.t('global/bis')"
v-model="zeitsperreData.bisdatum"
required
>
</form-input>
</div>
<div class="row mb-3 col-3">
<form-input
type="text"
name="vonstunde"
label="vonstunde"
v-model="zeitsperreData.vonstunde"
required
>
</form-input>
</div>
<div class="row mb-3 col-3">
<form-input
type="text"
name="bisstunde"
label="bisstunde"
v-model="zeitsperreData.bisstunde"
required
>
</form-input>
</div>
<div class="row mb-3 col-6">
<form-input
type="text"
name="vertretung_uid"
:label="$p.t('person/vertretung')"
v-model="zeitsperreData.vertretung_uid"
<div class= "w-50">
<div class="row mb-3">
<form-input
type="select"
name="zeitsperretyp_kurzbz"
:label="$p.t('person/grund')"
v-model="zeitsperreData.zeitsperretyp_kurzbz"
>
</form-input>
</div>
<div class="row mb-3 col-6">
<form-input
type="text"
name="erreichbarkeit"
:label="$p.t('person/erreichbarkeit')"
v-model="zeitsperreData.erreichbarkeit_kurzbz"
>
</form-input>
</div>
<div class="row mb-3">
<div class="col-2 ms-auto">
<button
type="button"
class="btn btn-primary"
@click="addNewZeitsperre()">
Zeitsperre hinzufügen
</button>
</div>
</div>
</form-form>
<option
v-for="typ in listTypenZeitsperren"
:key="typ.zeitsperretyp_kurzbz"
:value="typ.zeitsperretyp_kurzbz"
>
{{typ.beschreibung}}
</option>
</form-input>
</div>
<div v-if="zeitsperreData.zeitsperretyp_kurzbz == 'DienstV'" class="row mb-3">
<form-input
type="select"
name="beschreibung"
:label="$p.t('ui/bezeichnung')"
v-model="zeitsperreData.bezeichnung"
>
<option v-for="(beschreibung, key) in dienstverhinderungen"
:key="key"
:value="key">{{beschreibung}}
</option>
</form-input>
</div>
<div v-else class="row mb-3">
<form-input
type="text"
name="beschreibung"
:label="$p.t('ui/bezeichnung')"
v-model="zeitsperreData.bezeichnung"
>
</form-input>
</div>
</div>
<div>
<div class="row">
<div class="mb-3 col-3">
<form-input
type="DatePicker"
name="vondatum"
:label="$p.t('ui/from')"
v-model="zeitsperreData.vondatum"
auto-apply
:enable-time-picker="false"
format="dd.MM.yyyy"
text-input
preview-format="dd.MM.yyyy"
:teleport="true"
required
>
</form-input>
</div>
<div class="mb-3 col-3">
<form-input
v-if="!typesHideStunden.includes(zeitsperreData.zeitsperretyp_kurzbz)"
type="select"
name="vonstunde"
label="vonstunde"
v-model="zeitsperreData.vonstunde"
@change="handleChangeVonStunde"
>
<option value='null'>*</option>
<option
v-for="std in listStunden"
:key="std.stunde"
:value="std.stunde"
>
{{std.stunde}} ({{std.beginn}} - {{std.ende}})
</option>
</form-input>
</div>
<!-- Uncomment to use timestamp VON
<div class="mb-3 col-3">
<form-input
type="text"
name="vonISO"
label="vonISO"
v-model="zeitsperreData.vonISO"
auto-apply
:enable-time-picker="true"
format="dd.MM.yyyy HH:mm"
text-input
preview-format="dd.MM.yyyy HH:mm"
:teleport="true"
>
{{timestampHoursVon}}
</form-input>
</div>
-->
</div>
<div class="row">
<div class="mb-3 col-3">
<form-input
type="DatePicker"
name="bisdatum"
:label="$p.t('global/bis')"
v-model="zeitsperreData.bisdatum"
auto-apply
:enable-time-picker="false"
format="dd.MM.yyyy"
text-input
preview-format="dd.MM.yyyy"
:teleport="true"
required
>
</form-input>
</div>
<div class="mb-3 col-3">
<form-input
v-if="!typesHideStunden.includes(zeitsperreData.zeitsperretyp_kurzbz)"
type="select"
name="bisstunde"
label="bisstunde"
v-model="zeitsperreData.bisstunde"
@change="handleChangeBisStunde"
>
<option value='null'>*</option>
<option
v-for="std in listStunden"
:key="std.stunde"
:value="std.stunde"
>
{{std.stunde}} ({{std.beginn}} - {{std.ende}})
</option>
</form-input>
</div>
<!-- Uncomment to use timestamp BIS
<div class="mb-3 col-3">
<form-input
type="text"
name="bisISO"
label="bisISO"
v-model="zeitsperreData.bisISO"
auto-apply
:enable-time-picker="true"
format="dd.MM.yyyy HH:mm"
text-input
preview-format="dd.MM.yyyy HH:mm"
:teleport="true"
>
</form-input>
</div>
-->
</div>
<div class= "w-50">
<div class="row mb-3">
<form-input
type="autocomplete"
name="vertretung_uid"
:label="$p.t('person/vertretung')"
v-model="selectedVertretung"
optionLabel="label"
optionValue="mitarbeiter_uid"
dropdown
forceSelection
:suggestions="filteredMitarbeiter"
@complete="searchMitarbeiter"
:min-length="3"
>
</form-input>
</div>
</div>
<div class="row align-items-end">
<div class="mb-3 col-4">
<form-input
type="select"
name="erreichbarkeit"
:label="$p.t('person/erreichbarkeit')"
v-model="zeitsperreData.erreichbarkeit_kurzbz"
>
<option
v-for="typ in listTypenErreichbarkeit"
:key="typ.erreichbarkeit_kurzbz"
:value="typ.erreichbarkeit_kurzbz"
>
{{typ.beschreibung}}
</option>
</form-input>
</div>
<div class="mb-3 col-3">
<button
type="button"
class="btn btn-primary"
@click="addZeitsperre()">
Zeitsperre hinzufügen
</button>
</div>
</div>
</div>
</form-form>
<hr>
<core-filter-cmpt
v-if="tabulatorOptions"
ref="table"
+223
View File
@@ -52851,6 +52851,229 @@ I have been informed that I am under no obligation to consent to the transmissio
)
),
// ### Refactor Messages END
//// ### ZEITSPERREN START
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'eheschliessung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Eigene Eheschließung oder Verpartnerung (3 Tage)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Own marriage or civil partnership (3 days)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'geburt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Geburt eines Kindes der Ehefrau/Lebensgefährtin (2 Tage)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Birth of a child of the wife/partner (2 days)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'heirat',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Eheschließung oder Verpartnerung eines Kindes/eigener Geschwister (1 Tag)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Marriage or civil partnership of a child or own sibling (1 day)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'sponsion',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Teilnahme an eigener Sponsion/Promotion (1 Tag)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Participation in own graduation/promotion ceremony (1 day)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'erkrankung_lebensbedr',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Lebensbedrohliche Erkrankung Partner/Kinder/Eltern (3 Tage)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Life-threatening illness of partner/children/parents (3 days)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'ableben',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Ableben Partner/Kinder/Elternteil (3 Tage)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Death of partner/children/parent (3 days)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'bestattung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Teilnahme an Bestattung Geschwister/Schwiegereltern/eigener Großeltern (1 Tag)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Attendance at the funeral of siblings/parents-in-law/own grandparents (1 day)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'umzug',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Wohnungswechsel in eigenen Haushalt (2 Tage)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Moving to your own home (2 days)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'bundesheer',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Einberufung Bundesheer',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Conscription of the Austrian Armed Forces',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'volksschultag',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'erster Volksschultag (1 Tag)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'First day of primary school (1 day)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'zeitsperren',
'phrase' => 'geburt222',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Eigene Eheschließung oder Verpartnerung (3 Tage)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Own marriage or civil partnership (3 days)',
'description' => '',
'insertvon' => 'system'
)
)
),
/// ### ZEITSPERREN END
);