Merge branch 'feature-27351/Digitalisierung_Formulare_Neu' into feature-25999/C4

This commit is contained in:
cgfhtw
2023-07-25 10:40:38 +02:00
23 changed files with 794 additions and 508 deletions
+1 -2
View File
@@ -15,8 +15,7 @@ const app = Vue.createApp({
statusMsg: "",
statusSeverity: "",
infoArray: []
}
};
}
});
app.mount('#wrapper');
@@ -3,6 +3,11 @@ import LvZuweisung from '../../../components/Studierendenantrag/Lvzuweisung.js';
const app = Vue.createApp({
components: {
LvZuweisung
},
computed: {
notinframe() {
return window.self === window.top;
}
}
});
app.mount('#wrapper');
@@ -22,4 +22,4 @@ export default {
</div>
</div>
`
}
}
@@ -15,12 +15,14 @@ export default {
antragId: Number,
countRemaining: Number
},
data: () => ({
lvs: null,
refresh: true,
result: false,
check: false
}),
data(){
return {
lvs: null,
refresh: true,
result: false,
check: false
};
},
computed: {
lvzugelassen() {
let zwischen = {};
@@ -73,7 +73,8 @@ export default {
}
},
mounted() {
function dateFormatter (cell) {
function dateFormatter(cell)
{
let val = cell.getValue();
if (!val)
return '';
@@ -96,239 +97,219 @@ export default {
columns: ["width", "visible"], //persist columns
},
persistenceID: 'studierendenantrag_leitung',
columns: [
{
formatter: 'rowSelection',
titleFormatter: 'rowSelection',
titleFormatterParams: {
rowRange: 'active'
},
hozAlign: 'center',
headerSort: false
columns: [{
formatter: 'rowSelection',
titleFormatter: 'rowSelection',
titleFormatterParams: {
rowRange: 'active'
},
{
field: 'studierendenantrag_id',
title: '#'
hozAlign: 'center',
headerSort: false
}, {
field: 'studierendenantrag_id',
title: '#'
}, {
field: 'bezeichnung',
title: this.p.t('lehre', 'studiengang'),
headerFilter: 'list',
headerFilterParams: {
valuesLookup: true,
clearable: true,
autocomplete: true,
}
}, {
field: 'orgform',
title: this.p.t('lehre', 'organisationsform'),
headerFilter: 'list',
headerFilterParams: {
valuesLookup: true,
clearable: true,
autocomplete: true,
}
}, {
field: 'typ',
title: this.p.t('studierendenantrag', 'antrag_typ'),
headerFilter: 'list',
headerFilterParams: {
valuesLookup: true,
clearable: true,
autocomplete: true,
},
{
field: 'bezeichnung',
title: this.p.t('lehre', 'studiengang'),
headerFilter: 'list',
headerFilterParams: {
valuesLookup: true,
clearable: true,
autocomplete: true,
}
},
{
field: 'orgform',
title: this.p.t('lehre', 'organisationsform'),
headerFilter: 'list',
headerFilterParams: {
valuesLookup: true,
clearable: true,
autocomplete: true,
}
},
{
field: 'typ',
title: this.p.t('studierendenantrag', 'antrag_typ'),
headerFilter: 'list',
headerFilterParams: {
valuesLookup: true,
clearable: true,
autocomplete: true,
},
formatter: (cell, formatterParams, onRendered) => {
return this.p.t('studierendenantrag','antrag_typ_' + cell.getValue());
}
},
{
field: 'statustyp',
title: this.p.t('studierendenantrag', 'antrag_status'),
headerFilter: 'list',
headerFilterParams: {
valuesLookup: true,
clearable: true,
autocomplete: true,
}
},
{
field: 'matrikelnr',
title: this.p.t('person', 'personenkennzeichen'),
headerFilter: 'input'
},
{
field: 'prestudent_id',
title: this.p.t('lehre', 'prestudent'),
headerFilter: 'input'
},
{
field: 'name',
title: this.p.t('global', 'name'),
mutator: (value, data) => (data.vorname + ' ' + data.nachname).replace(/^\s*(.*)\s*$/, '$1'),
headerFilter: 'input'
},
{
field: 'datum',
title: this.p.t('global', 'datum'),
formatter: dateFormatter,
headerFilterFunc: 'dates',
headerFilter: dateFilter
},
{
field: 'datum_wiedereinstieg',
title: this.p.t('studierendenantrag', 'antrag_datum_wiedereinstieg'),
formatter: dateFormatter,
headerFilterFunc: 'dates',
headerFilter: dateFilter
},
{
field: 'grund',
title: this.p.t('studierendenantrag', 'antrag_grund'),
formatter: (cell, formatterParams, onRendered) => {
let link = document.createElement('a'),
val = cell.getValue();
link.href = "#modal-grund";
link.setAttribute('data-bs-toggle', 'modal');
link.innerHTML = this.p.t('studierendenantrag', 'antrag_grund');
link.addEventListener('click', () => {
this.$refs.modalGrundPre.innerHTML = val;
});
formatter: (cell, formatterParams, onRendered) => {
return this.p.t('studierendenantrag','antrag_typ_' + cell.getValue());
}
}, {
field: 'statustyp',
title: this.p.t('studierendenantrag', 'antrag_status'),
headerFilter: 'list',
headerFilterParams: {
valuesLookup: true,
clearable: true,
autocomplete: true,
}
}, {
field: 'matrikelnr',
title: this.p.t('person', 'personenkennzeichen'),
headerFilter: 'input'
}, {
field: 'prestudent_id',
title: this.p.t('lehre', 'prestudent'),
headerFilter: 'input'
}, {
field: 'name',
title: this.p.t('global', 'name'),
mutator: (value, data) => (data.vorname + ' ' + data.nachname).replace(/^\s*(.*)\s*$/, '$1'),
headerFilter: 'input'
}, {
field: 'datum',
title: this.p.t('global', 'datum'),
formatter: dateFormatter,
headerFilterFunc: 'dates',
headerFilter: dateFilter
}, {
field: 'datum_wiedereinstieg',
title: this.p.t('studierendenantrag', 'antrag_datum_wiedereinstieg'),
formatter: dateFormatter,
headerFilterFunc: 'dates',
headerFilter: dateFilter
}, {
field: 'grund',
title: this.p.t('studierendenantrag', 'antrag_grund'),
formatter: (cell, formatterParams, onRendered) => {
let link = document.createElement('a'),
val = cell.getValue();
link.href = "#modal-grund";
link.setAttribute('data-bs-toggle', 'modal');
link.innerHTML = this.p.t('studierendenantrag', 'antrag_grund');
link.addEventListener('click', () => {
this.$refs.modalGrundPre.innerHTML = val;
});
return val ? link : '';
}
},
{
field: 'dms_id',
title: this.p.t('studierendenantrag', 'antrag_dateianhaenge'),
formatter: (cell, formatterParams, onRendered) => {
let val = cell.getValue();
if (!val)
return '';
return '<a href="' + FHC_JS_DATA_STORAGE_OBJECT.app_root +
FHC_JS_DATA_STORAGE_OBJECT.ci_router +
'/lehre/Antrag/Attachment/show/' + val + '" target="_blank"><i class="fa fa-paperclip" aria-hidden="true"></i> ' + this.p.t('studierendenantrag', 'antrag_anhang') + '</a>';
}
},
{
field: 'actions',
formatter: (cell, formatterParams, onRendered) => {
let container = document.createElement('div'),
data = cell.getData();
return val ? link : '';
}
}, {
field: 'dms_id',
title: this.p.t('studierendenantrag', 'antrag_dateianhaenge'),
formatter: (cell, formatterParams, onRendered) => {
let val = cell.getValue();
if (!val)
return '';
return '<a href="' + FHC_JS_DATA_STORAGE_OBJECT.app_root +
FHC_JS_DATA_STORAGE_OBJECT.ci_router +
'/lehre/Antrag/Attachment/show/' + val + '" target="_blank"><i class="fa fa-paperclip" aria-hidden="true"></i> ' + this.p.t('studierendenantrag', 'antrag_anhang') + '</a>';
}
}, {
field: 'actions',
formatter: (cell, formatterParams, onRendered) => {
let container = document.createElement('div'),
data = cell.getData();
container.className = "d-flex gap-2";
container.className = "d-flex gap-2";
if((data.typ == 'Abmeldung' || data.typ == 'Unterbrechung') && (data.status == 'Genehmigt'))
{
// NOTE(chris): Download PDF
if ((data.typ == 'Abmeldung' || data.typ == 'Unterbrechung') && (data.status == 'Genehmigt')) {
// NOTE(chris): Download PDF
let button = document.createElement('a');
button.innerHTML = '<i class="fa-solid fa-download" title="' + this.p.t('studierendenantrag', 'btn_download_antrag') + '"></i>';
button.className = "btn btn-outline-secondary";
button.target = "_blank";
button.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +
'content/pdfExport.php?xml=Antrag' + data.typ + '.xml.php&xsl=Antrag' + data.typ + '&id=' + data.studierendenantrag_id + '&output=pdf';
container.append(button);
}
if (data.typ == 'AbmeldungStgl' && data.status == 'Genehmigt') {
// NOTE(chris): Object
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_object');
button.className = "btn btn-outline-secondary";
button.addEventListener('click', () => this.$emit('action:object', [cell.getData()]));
container.append(button);
}
if (data.typ == 'AbmeldungStgl' && data.status == 'Beeinsprucht') {
// NOTE(chris): Deny Objection
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_objection_deny');
button.className = "btn btn-outline-secondary";
button.addEventListener('click', () => this.$emit('action:objectionDeny', [cell.getData()]));
container.append(button);
// NOTE(chris): Approve Objection
button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_objection_approve');
button.className = "btn btn-outline-secondary";
button.addEventListener('click', () => this.$emit('action:objectionApprove', [cell.getData()]));
container.append(button);
}
if (this.stgA.includes(data.studiengang_kz)) {
// NOTE(chris): Reopen
if (data.typ == 'Wiederholung' && data.status == 'Verzichtet') {
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_reopen');
button.className = "btn btn-outline-secondary";
button.addEventListener('click', () => this.$emit('action:reopen', [cell.getData()]));
container.append(button);
}
// NOTE(chris): Lv Zuweisen
if (data.typ == 'Wiederholung' && (data.status == 'Erstellt' || data.status == 'Lvszugewiesen')) {
let button = document.createElement('a');
button.innerHTML = '<i class="fa-solid fa-download" title="' + this.p.t('studierendenantrag', 'btn_download_antrag') + '"></i>';
button.innerHTML = this.p.t('studierendenantrag', 'btn_lvzuweisen');
button.className = "btn btn-outline-secondary";
button.target = "_blank";
button.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +
'content/pdfExport.php?xml=Antrag' + data.typ + '.xml.php&xsl=Antrag' + data.typ + '&id='+ data.studierendenantrag_id +'&output=pdf';
container.append(button);
}
if(data.typ == 'AbmeldungStgl' && data.status == 'Genehmigt')
{
// NOTE(chris): Object
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_object');
button.className = "btn btn-outline-secondary";
button.addEventListener('click',() => this.$emit('action:object', [cell.getData()]));
container.append(button);
}
if(data.typ == 'AbmeldungStgl' && data.status == 'Beeinsprucht')
{
// NOTE(chris): Deny Objection
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_objection_deny');
button.className = "btn btn-outline-secondary";
button.addEventListener('click',() => this.$emit('action:objectionDeny', [cell.getData()]));
container.append(button);
// NOTE(chris): Approve Objection
button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_objection_approve');
button.className = "btn btn-outline-secondary";
button.addEventListener('click',() => this.$emit('action:objectionApprove', [cell.getData()]));
container.append(button);
}
if (this.stgA.includes(data.studiengang_kz))
{
// NOTE(chris): Reopen
if (data.typ == 'Wiederholung' && data.status == 'Verzichtet') {
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_reopen');
button.className = "btn btn-outline-secondary";
button.addEventListener('click',() => this.$emit('action:reopen', [cell.getData()]));
container.append(button);
}
// NOTE(chris): Lv Zuweisen
if (data.typ == 'Wiederholung' && (data.status == 'Erstellt' || data.status == 'Lvszugewiesen')) {
let button = document.createElement('a');
button.innerHTML = this.p.t('studierendenantrag', 'btn_lvzuweisen');
button.className = "btn btn-outline-secondary";
button.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +
FHC_JS_DATA_STORAGE_OBJECT.ci_router +
'/lehre/Antrag/Wiederholung/assistenz/' +
cell.getData().studierendenantrag_id + '/frame';
button.onclick = e => {
e.preventDefault();
BsModal.popup(Vue.h('iframe', {
src: button.href,
class: 'position-absolute top-0 start-0 w-100 h-100'
}), {
dialogClass: 'modal-fullscreen'
}, this.p.t('studierendenantrag', 'title_lvzuweisen', cell.getData())).then(() => {
this.$emit('reload');
});
};
container.append(button);
}
}
if (this.stgL.includes(data.studiengang_kz))
{
// NOTE(chris): Approve
if ((data.typ == 'Wiederholung' && data.status == 'Lvszugewiesen') || (data.typ != 'Wiederholung' && data.status == 'Erstellt')) {
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_approve');
button.className = "btn btn-outline-secondary";
button.addEventListener('click', () => this.$emit('action:approve', [cell.getData()]));
container.append(button);
}
// NOTE(chris): Reject (Unterbrechung braucht grund)
if (data.status == 'Erstellt' && data.typ == 'Unterbrechung') {
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_reject');
button.className = "btn btn-outline-secondary";
button.addEventListener('click', () => this.$emit('action:reject', [cell.getData()]));
container.append(button);
}
}
// NOTE(chris): Show LVs
if (data.typ == 'Wiederholung' && (data.status == 'Lvszugewiesen' || data.status == 'Genehmigt')) {
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_show_lvs');
button.className = "btn btn-outline-secondary";
button.addEventListener('click', () => this.showLVs(cell.getData()));
button.onclick = e => {
e.preventDefault();
BsModal.popup(Vue.h('iframe', {
src: button.href,
class: 'position-absolute top-0 start-0 w-100 h-100'
}), {
dialogClass: 'modal-fullscreen'
}, this.p.t('studierendenantrag', 'title_lvzuweisen', cell.getData())).then(() => {
this.$emit('reload');
});
};
container.append(button);
}
// TODO(chris): not yet perfect
onRendered(() => {
cell.getColumn().setWidth(true);
});
return container;
}
if (this.stgL.includes(data.studiengang_kz)) {
// NOTE(chris): Approve
if ((data.typ == 'Wiederholung' && data.status == 'Lvszugewiesen') || (data.typ != 'Wiederholung' && data.status == 'Erstellt')) {
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_approve');
button.className = "btn btn-outline-secondary";
button.addEventListener('click', () => this.$emit('action:approve', [cell.getData()]));
container.append(button);
}
// NOTE(chris): Reject (Unterbrechung braucht grund)
if (data.status == 'Erstellt' && data.typ == 'Unterbrechung') {
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_reject');
button.className = "btn btn-outline-secondary";
button.addEventListener('click', () => this.$emit('action:reject', [cell.getData()]));
container.append(button);
}
}
// NOTE(chris): Show LVs
if (data.typ == 'Wiederholung' && (data.status == 'Lvszugewiesen' || data.status == 'Genehmigt')) {
let button = document.createElement('button');
button.innerHTML = this.p.t('studierendenantrag', 'btn_show_lvs');
button.className = "btn btn-outline-secondary";
button.addEventListener('click', () => this.showLVs(cell.getData()));
container.append(button);
}
// TODO(chris): not yet perfect
onRendered(() => {
cell.getColumn().setWidth(true);
});
return container;
}
]
}]
});
this.table.on("tableBuilt", () => {
let columns = this.table.getColumns();