Studierendenverwaltung Projektarbeit: set default stunden value, correct lvs when new Projektarbeit, Projektarbetreuer form hidden by default

This commit is contained in:
Alexei Karpenko
2025-05-18 15:55:43 +02:00
parent 4cf2ef2927
commit 168e2890c7
4 changed files with 38 additions and 26 deletions
@@ -48,7 +48,8 @@ class Projektbetreuer extends FHCAPI_Controller
if (!isset($projektarbeit_id)) $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Projektarbeit ID']), self::ERROR_TYPE_GENERAL);
$this->ProjektbetreuerModel->addSelect(
'projektarbeit_id, person_id, nachname, vorname, note, punkte, stunden, stundensatz, betreuerart_kurzbz, vertrag_id, titelpre, titelpost'
'projektarbeit_id, person_id, nachname, vorname, note, punkte, round(stunden, 1) AS stunden,
stundensatz, betreuerart_kurzbz, vertrag_id, titelpre, titelpost'
);
$this->ProjektbetreuerModel-> addSelect("CASE
WHEN EXISTS
@@ -10,7 +10,7 @@ export default {
FormInput,
PvAutoComplete
},
emits: ['details-saved'],
emits: ['projekttypChanged'],
inject: {
defaultSemester: {
from: 'defaultSemester'
@@ -82,6 +82,11 @@ export default {
}
}
},
watch: {
'formData.projekttyp_kurzbz'(newValue, oldValue) {
this.$emit('projekttypChanged', newValue);
}
},
methods: {
resetForm() {
this.formData.projektarbeit_id = null;
@@ -284,15 +289,6 @@ export default {
<div class="row mb-3">
<!-- <form-input
v-if= "formData.firma_name"
container-class="col-6 stv-details-projektarbeit-firma"
type="text"
name="name"
:label="$p.t('projektarbeit', 'firma')"
v-model="formData.firma_name"
>
</form-input> -->
<form-input
container-class="stv-details-projektarbeit-firma"
:label="$p.t('projektarbeit', 'firma')"
@@ -247,7 +247,7 @@ export default {
actionNewProjektarbeit() {
this.statusNew = true;
this.$refs.projektarbeitDetails.resetForm();
this.$refs.projektarbeitDetails.getFormData();
this.$refs.projektarbeitDetails.getFormData(this.statusNew);
this.$refs.projektbetreuer.getData();
this.$refs.projektarbeitModal.show();
},
@@ -275,14 +275,12 @@ export default {
})
.then((result) => {
const projektarbeit_id = result.data;
console.log(projektarbeit_id);
if (!isNaN(projektarbeit_id)) {
return this.$refs.projektbetreuer.saveProjektbetreuer(projektarbeit_id);
}
})
.then((result) => {
console.log(result);
this.projektarbeitSaved();
})
.catch(this.$fhcAlert.handleSystemError);
@@ -294,7 +292,6 @@ export default {
})
.then((result) => {
const projektarbeit_id = result.data;
console.log(projektarbeit_id);
if (!isNaN(projektarbeit_id)) {
return this.$refs.projektbetreuer.saveProjektbetreuer(projektarbeit_id);
@@ -325,6 +322,9 @@ export default {
rowSelectionChanged(data) {
this.lastSelected = data.length > 0 ? data[0] : null;
},
setDefaultStunden(projekttyp_kurzbz) {
this.$refs.projektbetreuer.setDefaultStunden(projekttyp_kurzbz);
},
hideModal(modalRef){
this.$refs[modalRef].hide();
},
@@ -361,7 +361,8 @@ export default {
<div class="row">
<div class="col-6">
<projektarbeit-details ref="projektarbeitDetails" :student="student"></projektarbeit-details>
<projektarbeit-details ref="projektarbeitDetails" :student="student" @projekttyp-changed="setDefaultStunden">
</projektarbeit-details>
</div>
<div class="col-6">
<projektbetreuer ref="projektbetreuer" :config="config"></projektbetreuer>
@@ -93,6 +93,7 @@ export default {
stunden: null,
stundensatz: null
},
editMode: false,
initialFormData: null,
defaultFormDataValues: {stunden: null, stundensatz: null},
projektarbeit_id: null,
@@ -111,15 +112,17 @@ export default {
actionNewProjektbetreuer() {
this.resetForm();
this.statusNew = true;
this.editMode = !this.editMode;
this.captureFormData();
},
actionEditProjektbetreuer(projektarbeit_id, person_id, betreuerart_kurzbz) {
this.statusNew = false;
this.editMode = true;
this.$api
.call(ApiStvProjektbetreuer.getDefaultStundensaetze(person_id, this.studiensemester_kurzbz))
.then(result => {
this.resetForm();
this.statusNew = false;
let projektbetreuerListe = this.$refs.table.tabulator.getData();
const idx = projektbetreuerListe.findIndex(
betr =>
@@ -162,9 +165,7 @@ export default {
this.studiensemester_kurzbz = studiensemester_kurzbz;
this.defaultFormDataValues.stunden = '0.0';
if (projekttyp_kurzbz == 'Bachelor') this.defaultFormDataValues.stunden = this.config.defaultProjektbetreuerStunden;
if (projekttyp_kurzbz == 'Diplom') this.defaultFormDataValues.stunden = this.config.defaultProjektbetreuerStundenDiplom;
this.defaultFormDataValues.stunden = this.getDefaultStunden(projekttyp_kurzbz);
this.defaultFormDataValues.stundensatz = this.config.defaultProjektbetreuerStundensatz;
this.$api
@@ -196,18 +197,20 @@ export default {
}
},
confirmProjektbetreuer() {
if (!this.formDataModified()) return;
if (!this.editMode) return;
if (this.statusNew) {
if (typeof this.formData.betreuer_id == 'undefined') {
this.formData.betreuer_id = this.getNewBetreuerId();
this.$refs.table.tabulator.addData(this.addAutoCompleteBetreuerToFormData(this.formData));
} else {
this.$refs.table.tabulator.updateData([this.formData]);
this.statusNew = true;
}
this.editMode = false;
},
confirmProjektbetreuerAfterValidation() {
if (!this.formDataModified()) return;
//if (!this.formDataModified()) return;
this.validateProjektbetreuer()
.then(result => {
@@ -245,7 +248,7 @@ export default {
validateProjektbetreuer() {
let alleBetreuer = this.$refs.table.tabulator.getData();
if (this.formDataModified()) {
if (this.editMode) {
alleBetreuer.push(this.addAutoCompleteBetreuerToFormData(this.formData));
}
@@ -255,6 +258,7 @@ export default {
this.formData = this.getDefaultFormData();
this.autocompleteSelectedBetreuer = null;
this.initialFormData = null;
if (this.projekttyp_kurzbz) this.setDefaultStunden(this.projekttyp_kurzbz);
},
getDefaultFormData() {
let formData = {betreuerart_kurzbz : null, note: null};
@@ -292,6 +296,16 @@ export default {
return preparedFormData;
},
getDefaultStunden(projekttyp_kurzbz) {
let stunden = '0.0';
if (projekttyp_kurzbz == 'Bachelor') stunden = this.config.defaultProjektbetreuerStunden;
if (projekttyp_kurzbz == 'Diplom') stunden = this.config.defaultProjektbetreuerStundenDiplom;
return stunden;
},
setDefaultStunden(projekttyp_kurzbz) {
this.projekttyp_kurzbz = projekttyp_kurzbz;
if (!this.formDataModified()) this.formData.stunden = this.getDefaultStunden(projekttyp_kurzbz);
},
getNewBetreuerId() {
let max = 0;
@@ -333,7 +347,7 @@ export default {
>
</core-filter-cmpt>
<form-form ref="formProjektbetreuer" @submit.prevent>
<form-form ref="formProjektbetreuer" v-show="editMode" @submit.prevent>
<div class="row mb-3">
<form-input
container-class="stv-details-projektarbeit-betreuer"
@@ -409,7 +423,7 @@ export default {
</div>
</form-form>
<button class="btn btn-primary" @click="confirmProjektbetreuerAfterValidation">{{ $p.t('projektarbeit', 'betreuerBestaetigen') }}</button>
<button class="btn btn-primary" v-show="editMode" @click="confirmProjektbetreuerAfterValidation">{{ $p.t('projektarbeit', 'betreuerBestaetigen') }}</button>
</div>
`
}