mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-21 08:52:21 +00:00
Studentenverwaltung Projektarbeit: added possibility to create persons, added phrases
This commit is contained in:
@@ -107,13 +107,9 @@ class Archiv extends FHCAPI_Controller
|
||||
|
||||
$result = $this->AkteModel->load($akte_id);
|
||||
|
||||
|
||||
if (!hasData($result)) $this->terminateWithError('Akte not found');
|
||||
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$data = getData($result)[0];
|
||||
//$this->addMeta("daa", $data->inhalt);
|
||||
|
||||
$fileObj = new stdClass();
|
||||
if (isset($data->inhalt) && $data->inhalt != '')
|
||||
@@ -133,12 +129,7 @@ class Archiv extends FHCAPI_Controller
|
||||
//header("Content-type: $data->mimetype");
|
||||
header('Content-Disposition: attachment; filename="'.$data->titel.'"');
|
||||
readfile($filename);
|
||||
//echo base64_decode($data->inhalt);
|
||||
die();
|
||||
//~ $fileObj->file = $data->inhalt;
|
||||
//~ $fileObj->name = $data->titel;
|
||||
//~ $fileObj->mimetype = $data->mimetype;
|
||||
//~ $fileObj->disposition = 'attachment';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -146,12 +137,6 @@ class Archiv extends FHCAPI_Controller
|
||||
|
||||
$result = $this->aktelib->get($akte_id);
|
||||
}
|
||||
|
||||
/* $fileObj->filename
|
||||
* $fileObj->file
|
||||
* $fileObj->name
|
||||
* $fileObj->mimetype
|
||||
* $fileObj->disposition*/
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,6 +16,7 @@ class Projektbetreuer extends FHCAPI_Controller
|
||||
'getNoten' => ['admin:r', 'assistenz:r'],
|
||||
'getDefaultStundensaetze' => ['admin:r', 'assistenz:r'],
|
||||
'getProjektbetreuerBySearchQuery' => ['admin:r', 'assistenz:r'],
|
||||
'getPerson' => ['admin:r', 'assistenz:r'],
|
||||
'validateProjektbetreuer' => ['admin:r', 'assistenz:r']
|
||||
]);
|
||||
|
||||
@@ -52,7 +53,7 @@ class Projektbetreuer extends FHCAPI_Controller
|
||||
'projektarbeit_id, person_id, nachname, vorname, note, punkte, round(stunden, 1) AS stunden,
|
||||
stundensatz, betreuerart_kurzbz, vertrag_id, titelpre, titelpost'
|
||||
);
|
||||
$this->ProjektbetreuerModel-> addSelect("CASE
|
||||
$this->ProjektbetreuerModel->addSelect("CASE
|
||||
WHEN EXISTS
|
||||
(SELECT 1 FROM public.tbl_benutzer JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) WHERE person_id=pers.person_id)
|
||||
THEN 'Mitarbeiter'
|
||||
@@ -223,16 +224,37 @@ class Projektbetreuer extends FHCAPI_Controller
|
||||
if (!isset($searchString))
|
||||
$this->terminateWithError($this->p->t('ui', 'error_fieldRequired', ['field' => 'Search term']), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
|
||||
$result = $this->PersonModel->searchPerson($searchString);
|
||||
|
||||
$this->addMeta('met', $result);
|
||||
|
||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
return $this->terminateWithSuccess(hasData($result) ? $this->_addFullNameToBetreuer(getData($result)) : []);
|
||||
}
|
||||
|
||||
public function getPerson()
|
||||
{
|
||||
$person_id = $this->input->get('person_id');
|
||||
|
||||
if (!isset($person_id))
|
||||
$this->terminateWithError($this->p->t('ui', 'error_fieldRequired', ['field' => 'Person']), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$this->PersonModel->addSelect("CASE
|
||||
WHEN EXISTS
|
||||
(SELECT 1 FROM public.tbl_benutzer JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) WHERE person_id=tbl_person.person_id)
|
||||
THEN 'Mitarbeiter'
|
||||
WHEN EXISTS
|
||||
(SELECT 1 FROM public.tbl_benutzer JOIN public.tbl_student ON(uid=student_uid) WHERE person_id=tbl_person.person_id)
|
||||
THEN 'Student'
|
||||
ELSE 'Person'
|
||||
END AS status");
|
||||
$result = $this->PersonModel->addSelect('titelpre, titelpost, vorname, nachname, person_id');
|
||||
$result = $this->PersonModel->load($person_id);
|
||||
|
||||
if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
return $this->terminateWithSuccess(hasData($result) ? $this->_addFullNameToBetreuer(getData($result))[0] : []);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param
|
||||
|
||||
@@ -55,7 +55,7 @@ class Student extends FHCAPI_Controller
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases([
|
||||
'ui', 'lehre'
|
||||
'ui', 'lehre', 'person'
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -322,40 +322,47 @@ class Student extends FHCAPI_Controller
|
||||
if (!$this->input->post('person_id')) {
|
||||
if (!isset($_POST['address']) || !is_array($_POST['address']))
|
||||
$_POST['address'] = [];
|
||||
$_POST['address']['func'] = 1;
|
||||
}
|
||||
if ($this->input->post('incoming')) {
|
||||
$_POST['ausbildungssemester'] = 0;
|
||||
}
|
||||
|
||||
$this->addMeta('test', $_POST['personOnly']);
|
||||
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules('nachname', 'Nachname', 'callback_requiredIfNotPersonId', [
|
||||
'requiredIfNotPersonId' => $this->p->t('ui', 'error_required')
|
||||
'requiredIfNotPersonId' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'nachname')])
|
||||
]);
|
||||
$this->form_validation->set_rules('geschlecht', 'Geschlecht', 'callback_requiredIfNotPersonId', [
|
||||
'requiredIfNotPersonId' => $this->p->t('ui', 'error_required')
|
||||
'requiredIfNotPersonId' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'geschlecht')])
|
||||
]);
|
||||
$this->form_validation->set_rules('gebdatum', 'Geburtsdatum', 'callback_isValidDate', [
|
||||
$this->form_validation->set_rules('gebdatum', 'Geburtsdatum', ['isValidDate', function($value) { return isValidDate($value); }], [
|
||||
'isValidDate' => $this->p->t('ui', 'error_invalid_date')
|
||||
]);
|
||||
$this->form_validation->set_rules('address[func]', 'Address', 'required|integer|less_than[2]|greater_than[-2]');
|
||||
$this->form_validation->set_rules('address[plz]', 'PLZ', 'callback_requiredIfAddressFunc', [
|
||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_required')
|
||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'plz')])
|
||||
]);
|
||||
$this->form_validation->set_rules('address[gemeinde]', 'Gemeinde', 'callback_requiredIfAddressFunc', [
|
||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_required')
|
||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'gemeinde')])
|
||||
]);
|
||||
$this->form_validation->set_rules('address[ort]', 'Ort', 'callback_requiredIfAddressFunc', [
|
||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_required')
|
||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'ort')])
|
||||
]);
|
||||
$this->form_validation->set_rules('address[address]', 'Adresse', 'callback_requiredIfAddressFunc', [
|
||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_required')
|
||||
'requiredIfAddressFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('person', 'adresse')])
|
||||
]);
|
||||
$this->form_validation->set_rules('email', 'E-Mail', 'valid_email');
|
||||
$this->form_validation->set_rules('studiengang_kz', 'Studiengang', 'required');
|
||||
$this->form_validation->set_rules('studiensemester_kurzbz', 'Studiensemester', 'required');
|
||||
$this->form_validation->set_rules('ausbildungssemester', 'Ausbildungssemester', 'required|integer|less_than[9]|greater_than[-1]');
|
||||
$this->form_validation->set_rules('studiengang_kz', 'Studiengang', 'callback_requiredIfStudentFunc', [
|
||||
'requiredIfStudentFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'studiengang')])
|
||||
]);
|
||||
$this->form_validation->set_rules('studiensemester_kurzbz', 'Studiensemester', 'callback_requiredIfStudentFunc', [
|
||||
'requiredIfStudentFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'studiensemester')])
|
||||
]);
|
||||
$this->form_validation->set_rules('ausbildungssemester', 'Ausbildungssemester', 'callback_requiredIfStudentFunc|integer|less_than[9]|greater_than[-1]', [
|
||||
'requiredIfStudentFunc' => $this->p->t('ui', 'error_fieldRequired', ['field' => $this->p->t('lehre', 'ausbildungssemester')])
|
||||
]);
|
||||
// TODO(chris): validate studienplan with studiengang, semester and orgform?
|
||||
// TODO(chris): validate person_id, studiengang_kz, studiensemester_kurzbz, orgform_kurzbz, nation, gemeinde, ort, geschlecht?
|
||||
|
||||
@@ -432,6 +439,8 @@ class Student extends FHCAPI_Controller
|
||||
'zustelladresse' => true,
|
||||
];
|
||||
if ($anlegen < 0) { // Überschreiben
|
||||
$this->AdresseModel->addSelect('adresse_id');
|
||||
$this->AdresseModel->addJoin('public.tbl_adressentyp', 'typ = adressentyp_kurzbz');
|
||||
$this->AdresseModel->addOrder('zustelladresse', 'DESC');
|
||||
$this->AdresseModel->addOrder('sort');
|
||||
$result = $this->AdresseModel->loadWhere([
|
||||
@@ -488,79 +497,84 @@ class Student extends FHCAPI_Controller
|
||||
}
|
||||
}
|
||||
|
||||
// Prestudent anlegen
|
||||
$data = [
|
||||
'aufmerksamdurch_kurzbz' => 'k.A.',
|
||||
'person_id' => $person_id,
|
||||
'studiengang_kz' => $this->input->post('studiengang_kz'),
|
||||
'ausbildungcode' => $this->input->post('letzteausbildung'),
|
||||
'anmerkung' => $this->input->post('anmerkungen'),
|
||||
'reihungstestangetreten' => false,
|
||||
'bismelden' => true
|
||||
];
|
||||
$ausbildungsart = $this->input->post('ausbildungsart');
|
||||
if ($ausbildungsart)
|
||||
$data['anmerkung'] .= ' Ausbildungsart:' . $ausbildungsart;
|
||||
// Incomings und ausserordentliche sind bei Meldung nicht förderrelevant
|
||||
$incoming = $this->input->post('incoming');
|
||||
if ($incoming || substr($data['studiengang_kz'], 0, 1) == '9')
|
||||
$data['foerderrelevant'] = false;
|
||||
// Wenn die Person schon im System erfasst ist, dann die ZGV des Datensatzes uebernehmen
|
||||
$this->PrestudentModel->addOrder('zgvmas_code');
|
||||
$this->PrestudentModel->addOrder('zgv_code', 'DESC');
|
||||
$this->PrestudentModel->addLimit(1);
|
||||
$result = $this->PrestudentModel->loadWhere([
|
||||
'person_id' => $person_id
|
||||
]);
|
||||
$prestudent = $this->getDataOrTerminateWithError($result);
|
||||
if ($prestudent) {
|
||||
$prestudent = current($prestudent);
|
||||
if ($prestudent->zgv_code) {
|
||||
$data['zgv_code'] = $prestudent->zgv_code;
|
||||
$data['zgvort'] = $prestudent->zgvort;
|
||||
$data['zgvdatum'] = $prestudent->zgvdatum;
|
||||
$personOnly = $anlegen = $this->input->post('personOnly');
|
||||
|
||||
$data['zgvmas_code'] = $prestudent->zgvmas_code;
|
||||
$data['zgvmaort'] = $prestudent->zgvmaort;
|
||||
$data['zgvmadatum'] = $prestudent->zgvmadatum;
|
||||
if (!$personOnly)
|
||||
{
|
||||
// Prestudent anlegen
|
||||
$data = [
|
||||
'aufmerksamdurch_kurzbz' => 'k.A.',
|
||||
'person_id' => $person_id,
|
||||
'studiengang_kz' => $this->input->post('studiengang_kz'),
|
||||
'ausbildungcode' => $this->input->post('letzteausbildung'),
|
||||
'anmerkung' => $this->input->post('anmerkungen'),
|
||||
'reihungstestangetreten' => false,
|
||||
'bismelden' => true
|
||||
];
|
||||
$ausbildungsart = $this->input->post('ausbildungsart');
|
||||
if ($ausbildungsart)
|
||||
$data['anmerkung'] .= ' Ausbildungsart:' . $ausbildungsart;
|
||||
// Incomings und ausserordentliche sind bei Meldung nicht förderrelevant
|
||||
$incoming = $this->input->post('incoming');
|
||||
if ($incoming || substr($data['studiengang_kz'], 0, 1) == '9')
|
||||
$data['foerderrelevant'] = false;
|
||||
// Wenn die Person schon im System erfasst ist, dann die ZGV des Datensatzes uebernehmen
|
||||
$this->PrestudentModel->addOrder('zgvmas_code');
|
||||
$this->PrestudentModel->addOrder('zgv_code', 'DESC');
|
||||
$this->PrestudentModel->addLimit(1);
|
||||
$result = $this->PrestudentModel->loadWhere([
|
||||
'person_id' => $person_id
|
||||
]);
|
||||
$prestudent = $this->getDataOrTerminateWithError($result);
|
||||
if ($prestudent) {
|
||||
$prestudent = current($prestudent);
|
||||
if ($prestudent->zgv_code) {
|
||||
$data['zgv_code'] = $prestudent->zgv_code;
|
||||
$data['zgvort'] = $prestudent->zgvort;
|
||||
$data['zgvdatum'] = $prestudent->zgvdatum;
|
||||
|
||||
$data['zgvmas_code'] = $prestudent->zgvmas_code;
|
||||
$data['zgvmaort'] = $prestudent->zgvmaort;
|
||||
$data['zgvmadatum'] = $prestudent->zgvmadatum;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Prestudent speichern
|
||||
$result = $this->PrestudentModel->insert($data);
|
||||
$prestudent_id = $this->getDataOrTerminateWithError($result);
|
||||
// Prestudent speichern
|
||||
$result = $this->PrestudentModel->insert($data);
|
||||
$prestudent_id = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
// Prestudent Rolle Anlegen
|
||||
$data = [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'status_kurzbz' => $incoming ? 'Incoming' : 'Interessent',
|
||||
'studiensemester_kurzbz' => $this->input->post('studiensemester_kurzbz'),
|
||||
'ausbildungssemester' => $this->input->post('ausbildungssemester') ?: 0,
|
||||
'orgform_kurzbz' => $this->input->post('orgform_kurzbz') ?: null,
|
||||
'studienplan_id' => $this->input->post('studienplan_id') ?: null,
|
||||
'datum' => date('Y-m-d'),
|
||||
'insertamum' => date('c'),
|
||||
'insertvon' => getAuthUID()
|
||||
];
|
||||
$result = $this->PrestudentstatusModel->insert($data);
|
||||
$this->getDataOrTerminateWithError($result);
|
||||
// Prestudent Rolle Anlegen
|
||||
$data = [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'status_kurzbz' => $incoming ? 'Incoming' : 'Interessent',
|
||||
'studiensemester_kurzbz' => $this->input->post('studiensemester_kurzbz'),
|
||||
'ausbildungssemester' => $this->input->post('ausbildungssemester') ?: 0,
|
||||
'orgform_kurzbz' => $this->input->post('orgform_kurzbz') ?: null,
|
||||
'studienplan_id' => $this->input->post('studienplan_id') ?: null,
|
||||
'datum' => date('Y-m-d'),
|
||||
'insertamum' => date('c'),
|
||||
'insertvon' => getAuthUID()
|
||||
];
|
||||
$result = $this->PrestudentstatusModel->insert($data);
|
||||
$this->getDataOrTerminateWithError($result);
|
||||
|
||||
if ($incoming) {
|
||||
// TODO(chris): IMPLEMENT!
|
||||
//Matrikelnummer und UID generieren
|
||||
//Benutzerdatensatz anlegen
|
||||
//Studentendatensatz anlegen
|
||||
//StudentLehrverband anlegen
|
||||
if ($incoming) {
|
||||
// TODO(chris): IMPLEMENT!
|
||||
//Matrikelnummer und UID generieren
|
||||
//Benutzerdatensatz anlegen
|
||||
//Studentendatensatz anlegen
|
||||
//StudentLehrverband anlegen
|
||||
}
|
||||
|
||||
// TODO(chris): DEBUG
|
||||
/*$result = $this->PrestudentModel->loadWhere([
|
||||
'pestudent_id' => 1
|
||||
]);
|
||||
if (isError($result)) {
|
||||
return $result;
|
||||
}*/
|
||||
}
|
||||
|
||||
// TODO(chris): DEBUG
|
||||
/*$result = $this->PrestudentModel->loadWhere([
|
||||
'pestudent_id' => 1
|
||||
]);
|
||||
if (isError($result)) {
|
||||
return $result;
|
||||
}*/
|
||||
|
||||
$this->terminateWithSuccess(true);
|
||||
return ['person_id' => $person_id ?? null, 'prestudent_id' => $prestudent_id ?? null];
|
||||
}
|
||||
|
||||
public function requiredIfNotPersonId($value)
|
||||
@@ -572,7 +586,14 @@ class Student extends FHCAPI_Controller
|
||||
|
||||
public function requiredIfAddressFunc($value)
|
||||
{
|
||||
if (!$_POST['address']['func'])
|
||||
if (!$_POST['address']['func'] || $_POST['address']['func'] == 0)
|
||||
return true;
|
||||
return !!$value;
|
||||
}
|
||||
|
||||
public function requiredIfStudentFunc($value)
|
||||
{
|
||||
if ($_POST['personOnly'])
|
||||
return true;
|
||||
return !!$value;
|
||||
}
|
||||
|
||||
@@ -63,6 +63,13 @@ export default {
|
||||
params: { searchString }
|
||||
};
|
||||
},
|
||||
getPerson(person_id) {
|
||||
return {
|
||||
method: 'get',
|
||||
url: 'api/frontend/v1/stv/projektbetreuer/getPerson',
|
||||
params: { person_id }
|
||||
};
|
||||
},
|
||||
validateProjektbetreuer(projektbetreuer) {
|
||||
return {
|
||||
method: 'post',
|
||||
|
||||
@@ -46,5 +46,12 @@ export default {
|
||||
url: 'api/frontend/v1/stv/student/check',
|
||||
params
|
||||
};
|
||||
},
|
||||
add(params) {
|
||||
return {
|
||||
method: 'post',
|
||||
url: 'api/frontend/v1/stv/student/add',
|
||||
params
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -221,7 +221,6 @@ export default {
|
||||
handler: async() => {
|
||||
await this.$p.loadCategory(['global', 'person', 'stv', 'ui', 'projektarbeit']);
|
||||
|
||||
|
||||
let cm = this.$refs.table.tabulator.columnManager;
|
||||
|
||||
cm.getColumnByField('projekttyp_kurzbz').component.updateDefinition({
|
||||
|
||||
+45
-20
@@ -2,6 +2,7 @@ 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 NewPerson from "../../List/New.js";
|
||||
|
||||
import ApiStvProjektbetreuer from '../../../../../api/factory/stv/projektbetreuer.js';
|
||||
|
||||
@@ -10,7 +11,8 @@ export default {
|
||||
CoreFilterCmpt,
|
||||
FormForm,
|
||||
FormInput,
|
||||
PvAutoComplete
|
||||
PvAutoComplete,
|
||||
NewPerson
|
||||
},
|
||||
inject: {
|
||||
},
|
||||
@@ -333,12 +335,24 @@ export default {
|
||||
},
|
||||
reload() {
|
||||
this.$refs.projektbetreuerTable.reloadTable();
|
||||
},
|
||||
actionNewPerson() {
|
||||
this.$refs.newPersonModal.reset();
|
||||
this.$refs.newPersonModal.open();
|
||||
},
|
||||
personSaved(result) {
|
||||
this.$api
|
||||
.call(ApiStvProjektbetreuer.getPerson(result.person_id))
|
||||
.then(response => {
|
||||
this.autocompleteSelectedBetreuer = response.data;
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError)
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<div class="stv-details-projektbetreuer h-100 pb-3">
|
||||
|
||||
<legend>{{this.$p.t('projektarbeit','betreuer')}}</legend>
|
||||
<legend>{{this.$p.t('projektarbeit','betreuerGross')}}</legend>
|
||||
<!-- <p v-if="statusNew">[{{$p.t('ui', 'neu')}}]</p> -->
|
||||
|
||||
<core-filter-cmpt
|
||||
@@ -348,7 +362,7 @@ export default {
|
||||
table-only
|
||||
:side-menu="false"
|
||||
new-btn-show
|
||||
:new-btn-label="this.$p.t('projektarbeit', 'betreuer')"
|
||||
:new-btn-label="this.$p.t('projektarbeit', 'betreuerGross')"
|
||||
@click:new="actionNewProjektbetreuer"
|
||||
>
|
||||
</core-filter-cmpt>
|
||||
@@ -369,10 +383,16 @@ export default {
|
||||
</form-input>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
<button class="btn btn-primary" @click="actionNewPerson">{{ $p.t('projektarbeit', 'neuePersonAnlegen') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
container-class="col-6 stv-details-projektbetreuer-betreuerart"
|
||||
:label="$p.t('projektarbeit', 'betreuer')"
|
||||
:label="$p.t('projektarbeit', 'betreuerart')"
|
||||
type="select"
|
||||
v-model="formData.betreuerart_kurzbz"
|
||||
name="betreuerart_kurzbz"
|
||||
@@ -388,22 +408,22 @@ export default {
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
container-class="col-8 stv-details-projektbetreuer-note"
|
||||
:label="$p.t('projektarbeit', 'note')"
|
||||
type="select"
|
||||
v-model="formData.note"
|
||||
name="note"
|
||||
<form-input
|
||||
container-class="col-8 stv-details-projektbetreuer-note"
|
||||
:label="$p.t('projektarbeit', 'note')"
|
||||
type="select"
|
||||
v-model="formData.note"
|
||||
name="note"
|
||||
>
|
||||
<option :value="null"> -- {{$p.t('fehlermonitoring', 'keineAuswahl')}} -- </option>
|
||||
<option
|
||||
v-for="note in arrNoten"
|
||||
:key="note.note"
|
||||
:value="note.note"
|
||||
>
|
||||
<option :value="null"> -- {{$p.t('fehlermonitoring', 'keineAuswahl')}} -- </option>
|
||||
<option
|
||||
v-for="note in arrNoten"
|
||||
:key="note.note"
|
||||
:value="note.note"
|
||||
>
|
||||
{{note.bezeichnung}}
|
||||
</option>
|
||||
</form-input>
|
||||
{{note.bezeichnung}}
|
||||
</option>
|
||||
</form-input>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
@@ -429,7 +449,12 @@ export default {
|
||||
</div>
|
||||
|
||||
</form-form>
|
||||
<button class="btn btn-primary" v-show="betreuerFormOpened" @click="confirmProjektbetreuerAfterValidation">{{ $p.t('projektarbeit', 'betreuerBestaetigen') }}</button>
|
||||
|
||||
<button class="btn btn-primary" v-show="betreuerFormOpened" @click="confirmProjektbetreuerAfterValidation">
|
||||
{{ $p.t('projektarbeit', 'betreuerBestaetigen') }}
|
||||
</button>
|
||||
|
||||
<new-person ref="newPersonModal" :personOnly="true" @saved="personSaved"></new-person>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import ApiStvStudents from '../../../../api/factory/stv/students.js';
|
||||
var _uuid = 0;
|
||||
const FORMDATA_DEFAULT = {
|
||||
address: {
|
||||
func: 0,
|
||||
func: 1,
|
||||
nation: 'A'
|
||||
},
|
||||
geburtsnation: 'A',
|
||||
@@ -33,7 +33,9 @@ export default {
|
||||
inject: [
|
||||
'lists'
|
||||
],
|
||||
emits: ['saved'],
|
||||
props: {
|
||||
personOnly: Boolean,
|
||||
studiengangKz: Number,
|
||||
studiensemesterKurzbz: String
|
||||
},
|
||||
@@ -108,7 +110,7 @@ export default {
|
||||
return;
|
||||
|
||||
this.abortController.suggestions = new AbortController();
|
||||
|
||||
|
||||
this.$api
|
||||
.call(ApiStvStudents.check({
|
||||
vorname: this.formData.vorname,
|
||||
@@ -119,6 +121,11 @@ export default {
|
||||
})
|
||||
.then(result => this.suggestions = result.data)
|
||||
.catch(error => {
|
||||
|
||||
if (error.code == 'ERR_BAD_REQUEST') {
|
||||
return this.suggestions = [];
|
||||
}
|
||||
|
||||
// NOTE(chris): repeat request
|
||||
if (error.code != "ERR_CANCELED")
|
||||
window.setTimeout(this.loadSuggestions, 100);
|
||||
@@ -191,14 +198,22 @@ export default {
|
||||
if (data.studiensemester_kurzbz === undefined)
|
||||
data.studiensemester_kurzbz = this.studiensemesterKurzbz;
|
||||
|
||||
// TODO(chris): move to fhcapi.factory
|
||||
this.$refs.form
|
||||
.send('api/frontend/v1/stv/student/add', data)
|
||||
.then(result => {
|
||||
this.$fhcAlert.alertSuccess('Gespeichert');
|
||||
this.$refs.modal.hide();
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError);
|
||||
data.personOnly = this.personOnly;
|
||||
|
||||
this.$api.call(
|
||||
ApiStvStudents.add(data)
|
||||
)
|
||||
.then(result => {
|
||||
this.$emit('saved', result.data);
|
||||
this.$fhcAlert.alertSuccess('Gespeichert');
|
||||
this.$refs.modal.hide();
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError);
|
||||
},
|
||||
setPerson(suggestion)
|
||||
{
|
||||
this.person = suggestion;
|
||||
this.formData.address.func = -1;
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -215,7 +230,7 @@ export default {
|
||||
<fhc-form ref="form" class="stv-list-new" @submit.prevent="send">
|
||||
<bs-modal ref="modal" dialog-class="modal-lg modal-scrollable" @hidden-bs-modal="reset">
|
||||
<template #title>
|
||||
InteressentIn anlegen
|
||||
{{ personOnly ? $p.t('person', 'personAnlegen') : $p.t('lehre', 'interessentAnlegen') }}
|
||||
</template>
|
||||
<template #default>
|
||||
|
||||
@@ -225,36 +240,38 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Nachname*"
|
||||
:label="$p.t('person', 'nachname')+'*'"
|
||||
type="text"
|
||||
id="stv-list-new-nachname"
|
||||
name="nachname"
|
||||
v-model="formDataPerson['nachname']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
@input="loadSuggestions"
|
||||
:min-length="3"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Vorname"
|
||||
:label="$p.t('person', 'vorname')"
|
||||
type="text"
|
||||
:id="'stv-list-new-vorname-' + uuid"
|
||||
name="vorname"
|
||||
v-model="formDataPerson['vorname']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
@input="loadSuggestions"
|
||||
:min-length="3"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Geburtsdatum"
|
||||
:label="$p.t('person', 'geburtsdatum')"
|
||||
type="datepicker"
|
||||
uid="stv-list-new-gebdatum"
|
||||
name="gebdatum"
|
||||
v-model="formDataPerson['gebdatum']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
@update:model-value="loadSuggestions"
|
||||
text-input
|
||||
auto-apply
|
||||
@@ -267,13 +284,13 @@ export default {
|
||||
</div>
|
||||
<!-- TODO(chris): more details -->
|
||||
<table class="table caption-top table-striped table-hover">
|
||||
<caption>Prüfung ob Person bereits existiert</caption>
|
||||
<caption>{{ $p.t('person', 'personExistiertPruefung') }}</caption>
|
||||
<tbody>
|
||||
<tr
|
||||
v-for="(suggestion, index) in suggestions"
|
||||
:key="suggestion.person_id"
|
||||
:class="{'active': index == 2}"
|
||||
@click="(index == 2) ? suggestions.shift() : person=suggestion"
|
||||
@click="(index == 2) ? suggestions.shift() : setPerson(suggestion)"
|
||||
v-accessibility:tab.vertical
|
||||
>
|
||||
<td>{{suggestion.vorname + ' ' + suggestion.nachname}}</td>
|
||||
@@ -286,34 +303,34 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Anrede"
|
||||
:label="$p.t('person', 'anrede')"
|
||||
type="text"
|
||||
id="stv-list-new-anrede"
|
||||
name="anrede"
|
||||
v-model="formDataPerson['anrede']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Titel (Pre)"
|
||||
:label="$p.t('person', 'titelPre')"
|
||||
type="text"
|
||||
id="stv-list-new-titelpre"
|
||||
name="titelpre"
|
||||
v-model="formDataPerson['titelpre']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Titel (Post)"
|
||||
:label="$p.t('person', 'titelPost')"
|
||||
type="text"
|
||||
id="stv-list-new-titelpost"
|
||||
name="titelpost"
|
||||
v-model="formDataPerson['titelpost']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
@@ -321,36 +338,38 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Nachname*"
|
||||
:label="$p.t('person', 'nachname')+'*'"
|
||||
type="text"
|
||||
id="stv-list-new-nachname"
|
||||
name="nachname"
|
||||
v-model="formDataPerson['nachname']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
@input="loadSuggestions"
|
||||
:min-length="3"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Vorname"
|
||||
:label="$p.t('person', 'vorname')"
|
||||
type="text"
|
||||
id="stv-list-new-vorname"
|
||||
name="vorname"
|
||||
v-model="formDataPerson['vorname']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
@input="loadSuggestions"
|
||||
:min-length="3"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Weitere Vornamen"
|
||||
:label="$p.t('person', 'weitereVornamen')"
|
||||
type="text"
|
||||
id="stv-list-new-vornamen"
|
||||
name="vornamen"
|
||||
v-model="formDataPerson['vornamen']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
@@ -358,12 +377,12 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Wahlname"
|
||||
:label="$p.t('person', 'wahlname')"
|
||||
type="text"
|
||||
id="stv-list-new-wahlname"
|
||||
name="wahlname"
|
||||
v-model="formDataPerson['wahlname']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
@@ -371,24 +390,24 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Geschlecht*"
|
||||
:label="$p.t('person', 'geschlecht')+'*'"
|
||||
type="select"
|
||||
id="stv-list-new-geschlecht"
|
||||
name="geschlecht"
|
||||
v-model="formDataPerson['geschlecht']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
>
|
||||
<option v-for="geschlecht in lists.geschlechter" :key="geschlecht.geschlecht" :value="geschlecht.geschlecht">{{geschlecht.bezeichnung}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Geburtsdatum"
|
||||
:label="$p.t('person', 'geburtsdatum')"
|
||||
type="datepicker"
|
||||
uid="stv-list-new-gebdatum"
|
||||
name="gebdatum"
|
||||
v-model="formDataPerson['gebdatum']"
|
||||
:disabled="person"
|
||||
:disabled="!!person"
|
||||
@update:model-value="loadSuggestions"
|
||||
text-input
|
||||
auto-apply
|
||||
@@ -400,7 +419,7 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="person" class="row">
|
||||
<div class="row">
|
||||
<div class="col-sm-6 mb-3">
|
||||
<form-input
|
||||
type="select"
|
||||
@@ -408,19 +427,19 @@ export default {
|
||||
name="address[func]"
|
||||
v-model="formData['address']['func']"
|
||||
>
|
||||
<option value="-1">Bestehende Adresse überschreiben</option>
|
||||
<option value="1">Adresse hinzufügen</option>
|
||||
<option value="0">Adresse nicht anlegen</option>
|
||||
<option value="-1" v-if="person">{{ $p.t('person', 'bestehendeAdresseUeberschreiben') }}</option>
|
||||
<option value="1">{{ $p.t('person', 'adresseHinzufuegen') }}</option>
|
||||
<option value="0">{{ $p.t('person', 'adresseNichtAnlegen') }}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<fieldset v-if="!person || formData['address']['func']">
|
||||
<fieldset v-if="formData['address']['func'] != 0">
|
||||
<legend>Adresse</legend>
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Land"
|
||||
:label="$p.t('person', 'land')"
|
||||
type="select"
|
||||
id="stv-list-new-address-nation"
|
||||
name="address[nation]"
|
||||
@@ -434,7 +453,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="PLZ"
|
||||
:label="$p.t('person', 'plz')"
|
||||
type="text"
|
||||
id="stv-list-new-address-plz"
|
||||
name="address[plz]"
|
||||
@@ -445,18 +464,18 @@ export default {
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Gemeinde"
|
||||
:label="$p.t('person', 'gemeinde')"
|
||||
type="select"
|
||||
v-if="formData['address']['nation'] == 'A'"
|
||||
id="stv-list-new-address-gemeinde"
|
||||
name="address[gemeinde]"
|
||||
v-model="formData['address']['gemeinde']"
|
||||
>
|
||||
<option v-if="!gemeinden.length" disabled>Bitte gültige PLZ wählen</option>
|
||||
<option v-if="!gemeinden.length" disabled>$p.t('ui', 'bittePlzWaehlen')</option>
|
||||
<option v-for="gemeinde in gemeinden" :key="gemeinde.name" :value="gemeinde.name">{{gemeinde.name}}</option>
|
||||
</form-input>
|
||||
<form-input
|
||||
label="Gemeinde"
|
||||
:label="$p.t('person', 'gemeinde')"
|
||||
type="text"
|
||||
v-else
|
||||
id="stv-list-new-address-gemeinde"
|
||||
@@ -467,7 +486,7 @@ export default {
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Ort"
|
||||
:label="$p.t('person', 'ort')"
|
||||
type="select"
|
||||
v-if="formData['address']['nation'] == 'A'"
|
||||
id="stv-list-new-address-ort"
|
||||
@@ -478,7 +497,7 @@ export default {
|
||||
<option v-for="ort in orte" :key="ort.ortschaftsname" :value="ort.ortschaftsname">{{ort.ortschaftsname}}</option>
|
||||
</form-input>
|
||||
<form-input
|
||||
label="Ort"
|
||||
:label="$p.t('person', 'ort')"
|
||||
type="text"
|
||||
v-else
|
||||
id="stv-list-new-address-ort"
|
||||
@@ -491,7 +510,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col-12 mb-3">
|
||||
<form-input
|
||||
label="Adresse"
|
||||
:label="$p.t('person', 'adresse')"
|
||||
type="text"
|
||||
id="stv-list-new-address-address"
|
||||
name="address[address]"
|
||||
@@ -505,7 +524,7 @@ export default {
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Geburtsnation"
|
||||
:label="$p.t('person', 'geburtsnation')"
|
||||
type="select"
|
||||
id="stv-list-new-geburtsnation"
|
||||
name="geburtsnation" class="form-select"
|
||||
@@ -516,7 +535,7 @@ export default {
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Staatsbürgerschaft"
|
||||
:label="$p.t('person', 'staatsbuergerschaft')"
|
||||
type="select"
|
||||
id="stv-list-new-staatsbuergerschaft"
|
||||
name="staatsbuergerschaft"
|
||||
@@ -539,7 +558,7 @@ export default {
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Telefon"
|
||||
:label="$p.t('person', 'telefon')"
|
||||
type="text"
|
||||
id="stv-list-new-telefon"
|
||||
name="telefon"
|
||||
@@ -549,7 +568,7 @@ export default {
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Mobil"
|
||||
:label="$p.t('person', 'mobil')"
|
||||
type="text"
|
||||
id="stv-list-new-mobil"
|
||||
name="mobil"
|
||||
@@ -558,126 +577,128 @@ export default {
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Letzte Ausbildung"
|
||||
type="select"
|
||||
id="stv-list-new-letzteausbildung"
|
||||
name="letzteausbildung"
|
||||
v-model="formData['letzteausbildung']"
|
||||
>
|
||||
<option v-for="ausbildung in lists.ausbildungen" :key="ausbildung.ausbildungcode" :value="ausbildung.ausbildungcode">{{ausbildung.ausbildungbez}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Ausbildungsart"
|
||||
type="text"
|
||||
id="stv-list-new-ausbildungsart"
|
||||
name="ausbildungsart"
|
||||
v-model="formDataPerson['ausbildungsart']"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-8 mb-3">
|
||||
<form-input
|
||||
label="Anmerkungen"
|
||||
type="textarea"
|
||||
id="stv-list-new-anmerkungen"
|
||||
name="anmerkungen"
|
||||
v-model="formDataPerson['anmerkungen']"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Studiengang*"
|
||||
type="select"
|
||||
id="stv-list-new-studiengang_kz"
|
||||
name="studiengang_kz"
|
||||
v-model="formDataStg"
|
||||
>
|
||||
<option v-for="stg in lists.active_stgs" :key="stg.studiengang_kz" :value="stg.studiengang_kz">{{stg.kuerzel}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Studiensemester*"
|
||||
type="select"
|
||||
id="stv-list-new-studiensemester_kurzbz"
|
||||
name="studiensemester_kurzbz"
|
||||
v-model="formDataSem"
|
||||
>
|
||||
<option v-for="sem in semester" :key="sem.studiensemester_kurzbz" :value="sem.studiensemester_kurzbz">{{sem.studiensemester_kurzbz}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Ausbildungssemester*"
|
||||
type="select"
|
||||
id="stv-list-new-ausbildungssemester"
|
||||
name="ausbildungssemester"
|
||||
v-model="formData['ausbildungssemester']"
|
||||
:disabled="formData['incoming']"
|
||||
@input="loadStudienplaene"
|
||||
>
|
||||
<option v-for="sem in Array.from({length:8}).map((u,i) => i+1)" :key="sem" :value="sem">{{sem}}. Semester</option>
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="OrgForm"
|
||||
type="select"
|
||||
id="stv-list-new-orgform_kurzbz"
|
||||
name="orgform_kurzbz"
|
||||
v-model="formData['orgform_kurzbz']"
|
||||
@input="loadStudienplaene"
|
||||
>
|
||||
<option value="">-- keine Auswahl --</option>
|
||||
<option v-for="orgform in lists.orgforms" :key="orgform.orgform_kurzbz" :value="orgform.orgform_kurzbz">{{orgform.bezeichnung}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Studienplan"
|
||||
type="select"
|
||||
id="stv-list-new-studienplan_id"
|
||||
name="studienplan_id"
|
||||
v-model="formData['studienplan_id']"
|
||||
>
|
||||
<option value="">-- keine Auswahl --</option>
|
||||
<option v-for="plan in studienplaene" :key="plan.studienplan_id" :value="plan.studienplan_id">{{plan.bezeichnung}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-10 mb-3">
|
||||
<div class="form-check">
|
||||
<fieldset v-if="!personOnly">
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
label="Incoming"
|
||||
type="checkbox"
|
||||
id="stv-list-new-incoming"
|
||||
name="incoming"
|
||||
v-model="formData['incoming']"
|
||||
value="1"
|
||||
:label="$p.t('lehre', 'letzeAusbildung')"
|
||||
type="select"
|
||||
id="stv-list-new-letzteausbildung"
|
||||
name="letzteausbildung"
|
||||
v-model="formData['letzteausbildung']"
|
||||
>
|
||||
<option v-for="ausbildung in lists.ausbildungen" :key="ausbildung.ausbildungcode" :value="ausbildung.ausbildungcode">{{ausbildung.ausbildungbez}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'ausbildungsart')"
|
||||
type="text"
|
||||
id="stv-list-new-ausbildungsart"
|
||||
name="ausbildungsart"
|
||||
v-model="formDataPerson['ausbildungsart']"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-8 mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'anmerkungen')"
|
||||
type="textarea"
|
||||
id="stv-list-new-anmerkungen"
|
||||
name="anmerkungen"
|
||||
v-model="formDataPerson['anmerkungen']"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'studiengang')+'*'"
|
||||
type="select"
|
||||
id="stv-list-new-studiengang_kz"
|
||||
name="studiengang_kz"
|
||||
v-model="formDataStg"
|
||||
>
|
||||
<option v-for="stg in lists.active_stgs" :key="stg.studiengang_kz" :value="stg.studiengang_kz">{{stg.kuerzel}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'studiensemester')+'*'"
|
||||
type="select"
|
||||
id="stv-list-new-studiensemester_kurzbz"
|
||||
name="studiensemester_kurzbz"
|
||||
v-model="formDataSem"
|
||||
>
|
||||
<option v-for="sem in semester" :key="sem.studiensemester_kurzbz" :value="sem.studiensemester_kurzbz">{{sem.studiensemester_kurzbz}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'ausbildungssemester')+'*'"
|
||||
type="select"
|
||||
id="stv-list-new-ausbildungssemester"
|
||||
name="ausbildungssemester"
|
||||
v-model="formData['ausbildungssemester']"
|
||||
:disabled="formData['incoming']"
|
||||
@input="loadStudienplaene"
|
||||
>
|
||||
<option v-for="sem in Array.from({length:8}).map((u,i) => i+1)" :key="sem" :value="sem">{{sem}}. Semester</option>
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'organisationsform')"
|
||||
type="select"
|
||||
id="stv-list-new-orgform_kurzbz"
|
||||
name="orgform_kurzbz"
|
||||
v-model="formData['orgform_kurzbz']"
|
||||
@input="loadStudienplaene"
|
||||
>
|
||||
<option value="">-- keine Auswahl --</option>
|
||||
<option v-for="orgform in lists.orgforms" :key="orgform.orgform_kurzbz" :value="orgform.orgform_kurzbz">{{orgform.bezeichnung}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-sm-4 mb-3">
|
||||
<form-input
|
||||
:label="$p.t('lehre', 'studienplan')"
|
||||
type="select"
|
||||
id="stv-list-new-studienplan_id"
|
||||
name="studienplan_id"
|
||||
v-model="formData['studienplan_id']"
|
||||
>
|
||||
<option value="">-- keine Auswahl --</option>
|
||||
<option v-for="plan in studienplaene" :key="plan.studienplan_id" :value="plan.studienplan_id">{{plan.bezeichnung}}</option>
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-10 mb-3">
|
||||
<div class="form-check">
|
||||
<form-input
|
||||
label="Incoming"
|
||||
type="checkbox"
|
||||
id="stv-list-new-incoming"
|
||||
name="incoming"
|
||||
v-model="formData['incoming']"
|
||||
value="1"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</template>
|
||||
</template>
|
||||
<template #footer>
|
||||
<button v-if="person !== null" type="button" class="btn btn-secondary" @click="person = null"><i class="fa fa-chevron-left"></i>Zurück</button>
|
||||
<button type="submit" class="btn btn-primary">{{ person === null ? 'Person anlegen' : 'InteressentIn anlegen' }}</button>
|
||||
<button v-if="person !== null" type="button" class="btn btn-secondary" @click="person = null; formData.address.func = 1;"><i class="fa fa-chevron-left"></i>{{ $p.t('ui', 'zurueck') }}</button>
|
||||
<button type="submit" class="btn btn-primary">{{ person === null || personOnly ? $p.t('person', 'personAnlegen') : $p.t('lehre', 'interessentAnlegen') }}</button>
|
||||
</template>
|
||||
</bs-modal>
|
||||
</fhc-form>`
|
||||
};
|
||||
};
|
||||
|
||||
+375
-15
@@ -41789,7 +41789,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Title',
|
||||
'text' => 'title',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -41809,7 +41809,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Title English',
|
||||
'text' => 'title English',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -41829,7 +41829,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Topic area',
|
||||
'text' => 'topic area',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -41849,7 +41849,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Type',
|
||||
'text' => 'type',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -41869,7 +41869,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Company',
|
||||
'text' => 'company',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -41889,7 +41889,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Course',
|
||||
'text' => 'course',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -41909,7 +41909,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Teaching unit',
|
||||
'text' => 'teaching unit',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -41920,6 +41920,26 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
'category' => 'projektarbeit',
|
||||
'phrase' => 'betreuer',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Betreuer',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'assessor',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'projektarbeit',
|
||||
'phrase' => 'betreuerGross',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
@@ -41935,6 +41955,26 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'projektarbeit',
|
||||
'phrase' => 'betreuerart',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Betreuerart',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'assessor type',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'projektarbeit',
|
||||
@@ -41949,7 +41989,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Grade',
|
||||
'text' => 'grade',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -41969,7 +42009,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Hours',
|
||||
'text' => 'hours',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -41989,7 +42029,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Hourly rate',
|
||||
'text' => 'hourly rate',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -42029,7 +42069,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Start',
|
||||
'text' => 'start',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -42049,7 +42089,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'End',
|
||||
'text' => 'end',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -42089,7 +42129,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Locked until',
|
||||
'text' => 'locked until',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -42109,7 +42149,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Annotation',
|
||||
'text' => 'annotation',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -42129,7 +42169,7 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Company Id',
|
||||
'text' => 'company Id',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -42215,6 +42255,326 @@ and represent the current state of research on the topic. The prescribed citatio
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'projektarbeit',
|
||||
'phrase' => 'neuePersonAnlegen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Neue Person anlegen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Create new person',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'titelPre',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Titel (Pre)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'title (Pre)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'titelPost',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Titel (Post)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'title (Post)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'weitereVornamen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Weitere Vornamen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'other first names',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'bestehendeAdresseUeberschreiben',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bestehende Adresse überschreiben',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Replace existing address',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'adresseHinzufuegen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Adresse hinzufügen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Add new address',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'adresseNichtAnlegen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Adresse nicht anlegen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Do not create address',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'land',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Land',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'nation',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'mobil',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Mobil',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'mobile phone',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'letzeAusbildung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Letzte Ausbildung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'most recent education',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'ausbildungsart',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ausbildungsart',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'education type',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'anmerkungen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Anmerkungen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'notes',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'personAnlegen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Person anlegen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Create person',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
'phrase' => 'interessentAnlegen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'InteressentIn anlegen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Create candidate',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'person',
|
||||
'phrase' => 'personExistiertPruefung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Prüfung ob Person bereits existiert',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Check if a person already exists',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
'phrase' => 'zurueck',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Zurück',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Back',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user