From 168e2890c710fc4f0948c6484a7a3b7febfcadf4 Mon Sep 17 00:00:00 2001 From: Alexei Karpenko Date: Sun, 18 May 2025 15:55:43 +0200 Subject: [PATCH] Studierendenverwaltung Projektarbeit: set default stunden value, correct lvs when new Projektarbeit, Projektarbetreuer form hidden by default --- .../api/frontend/v1/stv/Projektbetreuer.php | 3 +- .../Details/Projektarbeit/Details.js | 16 ++++----- .../Details/Projektarbeit/Projektarbeit.js | 11 +++--- .../Details/Projektarbeit/Projektbetreuer.js | 34 +++++++++++++------ 4 files changed, 38 insertions(+), 26 deletions(-) diff --git a/application/controllers/api/frontend/v1/stv/Projektbetreuer.php b/application/controllers/api/frontend/v1/stv/Projektbetreuer.php index ac6663132..58b963ede 100644 --- a/application/controllers/api/frontend/v1/stv/Projektbetreuer.php +++ b/application/controllers/api/frontend/v1/stv/Projektbetreuer.php @@ -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 diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js index 7f98948d4..b384196d8 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js @@ -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 {
- { 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 {
- + +
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektbetreuer.js b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektbetreuer.js index e1a06cb23..ea8dba94f 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektbetreuer.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektbetreuer.js @@ -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 { > - +
- +
` }