This commit is contained in:
ma0068
2024-02-05 07:56:24 +01:00
parent 2fcbbcac84
commit 23853e4a19
3 changed files with 25 additions and 297 deletions
+2 -2
View File
@@ -65,7 +65,7 @@ export default {
],
layout: 'fitDataFill',
layoutColumnsOnNewData: false,
height: '250',
height: '150',
selectableRangeMode: 'click',
selectable: true,
index: 'notiz_id'
@@ -403,7 +403,7 @@ export default {
@click:new="actionNewNotiz"
>
</core-filter-cmpt>
<br><br>
<br>
<form ref="formc" @submit.prevent class="row pt-3">
<br><br>
-295
View File
@@ -1,295 +0,0 @@
import VueDatePicker from '../vueDatepicker.js.php';
import PvAutoComplete from "../../../../index.ci.php/public/js/components/primevue/autocomplete/autocomplete.esm.min.js";
import File from '../Form/Upload/File.js';
import FormUploadDms from '../Form/Upload/Dms.js';
import {CoreRESTClient} from "../../RESTClient";
export default {
components: {
VueDatePicker,
File,
PvAutoComplete,
FormUploadDms
},
props: [
'typeId',
'titel',
'text',
'lastChange',
'von',
'bis',
'statusNew',
'document',
'erledigt',
'verfasser',
'bearbeiter',
'showErweitert',
'showDocument',
'anhang'
],
data(){
return {
multiupload: true,
mitarbeiter: [],
filteredMitarbeiter: [],
zwischenvar: '',
editorInitialized: false,
editor: null
}
},
computed: {
intTitel: {
get() {
return this.titel;
},
set(value) {
this.$emit('update:titel', value);
}
},
intText: {
get() {
return this.text;
},
set(value) {
this.$emit('update:text', value);
}
},
intVon: {
get() {
return this.von;
},
set(value) {
const tempVon = new Date(value).toISOString().split('T')[0];
this.$emit('update:von', tempVon);
}
},
intBis: {
get() {
return this.bis;
},
set(value) {
const tempBis = new Date(value).toISOString().split('T')[0];
this.$emit('update:bis', tempBis);
}
},
intDocument: {
get() {
return this.document;
},
set(value) {
this.$emit('update:document', value);
}
},
intErledigt: {
get() {
return this.erledigt;
},
set(value) {
this.$emit('update:erledigt', value);
}
},
intVerfasser: {
get() {
return this.verfasser;
},
set(value) {
//this.$emit('update:verfasser', value);
this.$emit('update:verfasser', value.mitarbeiter_uid);
}
},
intBearbeiter: {
get() {
return this.bearbeiter;
},
set(value) {
if(value)
{
this.$emit('update:bearbeiter', value.mitarbeiter_uid);
}
else
this.$emit('update:bearbeiter', value);
}
},
intAnhang: {
get() {
return this.anhang;
},
set(value) {
this.$emit('update:anhang', value);
}
}
},
methods: {
reset() {
this.$refs.form.reset();
this.intAnhang = null;
},
search(event) {
return CoreRESTClient
.get('components/stv/Notiz/getMitarbeiter/' + event.query)
.then(result => {
this.filteredMitarbeiter = CoreRESTClient.getData(result.data);
});
},
initTinyMCE() {
const vm = this;
tinymce.init({
target: this.$refs.editor, //Important: not selector: to enable multiple import of component
//height: 800,
//plugins: ['lists'],
//toolbar: " blocks | bold italic underline | alignleft aligncenter alignright alignjustify",
toolbar: 'styleselect | bold italic underline | alignleft aligncenter alignright alignjustify',
style_formats: [
{ title: 'Blocks', block: 'div' },
{ title: 'Paragraph', block: 'p' },
{ title: 'Heading 1', block: 'h1' },
{ title: 'Heading 2', block: 'h2' },
{ title: 'Heading 3', block: 'h3' },
{ title: 'Heading 4', block: 'h4' },
{ title: 'Heading 5', block: 'h5' },
{ title: 'Heading 6', block: 'h6' },
],
autoresize_bottom_margin: 16,
setup: (editor) => {
vm.editor = editor;
editor.on('input', () => {
const newContent = editor.getContent();
vm.intText = newContent;
});
},
});
},
},
mounted() {
this.initTinyMCE();
},
watch: {
intText: function(newVal) {
const tinymcsVal = this.editor.getContent();
if (tinymcsVal != newVal) {
//Inhalt des Editors aktualisieren
//Todo(manu) hier gibts ein problem mit update function
this.editor.setContent(newVal);
}
},
},
beforeDestroy() {
this.editor.destroy();
},
template: `
<div class="notiz-notiz">
<form ref="form" @submit.prevent class="row">
<div>
<div class="row mb-3">
<div class="col-sm-7">
<span class="small">[{{typeId}}]</span>
</div>
</div>
<div class="row mb-3">
<div class="col-sm-7">
<p v-if="statusNew" class="fw-bold"> {{$p.t('notiz','notiz_new')}}</p>
<p v-else class="fw-bold">{{$p.t('notiz','notiz_edit')}}</p>
</div>
</div>
<div class="row mb-3">
<label for="titel" class="form-label col-sm-2">{{$p.t('global','titel')}}</label>
<div class="col-sm-7">
<input type="text" v-model="intTitel" class="form-control">
</div>
</div>
<div class="row mb-3">
<label for="text" class="form-label col-sm-2">{{$p.t('global','text')}}</label>
<!-- TinyMce 5 -->
<div class="col-sm-7">
<textarea ref="editor" rows="5" cols="75" class="form-control"></textarea>
</div>
</div>
<!-- show Documentupload-->
<div v-if="showDocument">
<div class="row mb-3">
<label for="text" class="form-label col-sm-2">{{$p.t('notiz','document')}}</label>
<div class="col-sm-7 py-3">
<!--Upload Component-->
<FormUploadDms ref="upload" id="file" multiple v-model="intAnhang"></FormUploadDms>
</div>
</div>
</div>
<!-- show Details-->
<div v-if="showErweitert">
<div class="row mb-3">
<label for="bis" class="form-label col-sm-2">{{$p.t('notiz','verfasser')}}</label>
<div class="col-sm-3">
<PvAutoComplete v-model="intVerfasser" optionLabel="mitarbeiter" :suggestions="filteredMitarbeiter" @complete="search" minLength="3"/>
</div>
<label for="von" class="form-label col-sm-1">{{$p.t('global','gueltigVon')}}</label>
<div class="col-sm-3">
<vue-date-picker
id="von"
v-model="intVon"
clearable="false"
auto-apply
:enable-time-picker="false"
format="dd.MM.yyyy"
preview-format="dd.MM.yyyy"></vue-date-picker>
</div>
</div>
<div class="row mb-3">
<label for="bis" class="form-label col-sm-2">{{$p.t('notiz','bearbeiter')}}</label>
<div class="col-sm-3">
<PvAutoComplete v-model="intBearbeiter" optionLabel="mitarbeiter" :suggestions="filteredMitarbeiter" @complete="search" minlength="3"/>
</div>
<label for="bis" class="form-label col-sm-1">{{$p.t('global','gueltigBis')}}</label>
<div class="col-sm-3">
<vue-date-picker
id="bis"
v-model="intBis"
clearable="false"
auto-apply
:enable-time-picker="false"
format="dd.MM.yyyy"
preview-format="dd.MM.yyyy"></vue-date-picker>
</div>
</div>
<div class="row mb-3">
<label for="bis" class="form-label col-sm-2">{{$p.t('notiz','erledigt')}}</label>
<div class="col-sm-1">
<input type="checkbox" v-model="intErledigt">
</div>
</div>
</div>
<div class="row mb-3">
<label for="lastChange" class="form-label col-sm-2 small">{{$p.t('notiz','letzte_aenderung')}}</label>
<div class="col-sm-7">
<p class="small">{{this.lastChange}}</p>
</div>
</div>
</form>
</div>`
}
@@ -15,6 +15,7 @@ export default {
},
template: `
<div class="stv-details-details h-100 pb-3">
<h3>Notizen</h3>
<NotizComponent
ref="formc"
typeId="person_id"
@@ -23,6 +24,28 @@ export default {
:showDocument=true
>
</NotizComponent>
<br><br>
<h3>Test prestudentId</h3>
<NotizComponent
ref="formc"
typeId="prestudent_id"
:id="modelValue.prestudent_id"
:showErweitert=false
:showDocument=true
>
</NotizComponent>
<br><br>
<h3>Test Projekt</h3>
<NotizComponent
ref="formc"
typeId="projekt_kurzbz"
:id="ZeitErfassung"
:showErweitert=true
:showDocument=false
>
</NotizComponent>
</div>
`
};