diff --git a/public/js/pages/WarehouseShippingNote/WarehouseShippingNote.js b/public/js/pages/WarehouseShippingNote/WarehouseShippingNote.js
index 4d3e1e6da..8a93f684f 100644
--- a/public/js/pages/WarehouseShippingNote/WarehouseShippingNote.js
+++ b/public/js/pages/WarehouseShippingNote/WarehouseShippingNote.js
@@ -306,12 +306,25 @@ Vue.component('warehouse-shipping-note-see-through', {
-
+
Erstellt aus Kalendereintrag: {{ calendarEventType }}
+
+
+
+ Erstellt am: {{ formatDate(currentRow.create) }}
+
+
+
+ Erstellt von:
+
+ {{ creatorName || 'Unbekannt' }}
+
+
+
@@ -340,7 +353,9 @@ Vue.component('warehouse-shipping-note-see-through', {
perPage: 1,
rows: [],
activeTab: 'Editieren',
- window: window
+ window: window,
+ creatorName: null,
+ creatorLoading: false,
}
},
computed: {
@@ -363,7 +378,35 @@ Vue.component('warehouse-shipping-note-see-through', {
return null;
}
},
+ watch: {
+ currentRow(newVal) {
+ if (newVal && newVal.createBy) {
+ this.fetchCreatorInfo(newVal.createBy);
+ } else {
+ this.creatorName = null;
+ }
+ }
+ },
methods: {
+ formatDate(timestamp) {
+ return window.moment(timestamp * 1000).format('DD.MM.YYYY HH:mm');
+ },
+ async fetchCreatorInfo(userId) {
+ if (!userId) {
+ this.creatorName = null;
+ return;
+ }
+ this.creatorLoading = true;
+ try {
+ const response = await axios.get(`/User/getById?id=${userId}`);
+ this.creatorName = response.data?.name || 'Unbekannt';
+ } catch (error) {
+ console.error(`Failed to fetch user with ID ${userId}`, error);
+ this.creatorName = 'Fehler';
+ } finally {
+ this.creatorLoading = false;
+ }
+ },
tabStyle(tab) {
return {
padding: '10px 20px',
@@ -421,222 +464,9 @@ Vue.component('warehouse-shipping-note-see-through', {
-Vue.component('warehouse-shipping-note', {
- //language=Vue
- template: `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- `,
- data() {
- return {
- window: window,
- historyModal: false,
- historyModalId: null,
- shippingNoteModalId: null,
- signingShippingNoteId: null,
- addLogModalId: null,
- viewerItem: null,
- viewerUrl: null,
- shippingNoteSeeThrough: false,
- articleModalId: null,
- calendarEvents: [],
- showCalendarDropdown: false,
- }
- },
- mounted() {
- if (window.location.search.includes('doAction=createNew')) {
- this.shippingNoteModalId = 'create';
- }
- this.fetchCalendarEvents();
- document.addEventListener('click', this.closeDropdown);
- },
- beforeDestroy() {
- document.removeEventListener('click', this.closeDropdown);
- },
- methods: {
- async fetchCalendarEvents() {
- try {
- const response = await axios.get(window.TT_CONFIG.BASE_PATH + '/WarehouseShippingNote/getRecentCalendarEvents');
- this.calendarEvents = response.data;
- } catch (error) {
- console.error("Could not fetch calendar events", error);
- window.notify('error', 'Kalendereinträge konnten nicht geladen werden.');
- }
- },
- showPrintPreview(row) {
- this.viewerUrl = `${window.TT_CONFIG['BASE_PATH']}/WarehouseShippingNote/createPDF?id=${row.id}`;
- this.viewerItem = { mimetype: 'application/pdf' };
- },
- formatEventDate(dateString) {
- return window.moment(dateString).format('DD.MM.YYYY HH:mm');
- },
- async createFromEvent(event) {
- this.showCalendarDropdown = false;
- this.shippingNoteModalId = 'create';
-
- await this.$nextTick(); // Wait for the modal component to be created
-
- if (this.$refs.modal) {
- // Parse address string
- const locationParts = event.location.split(',');
- const line = locationParts[0].trim();
- const plzCityRaw = locationParts[1].trim();
- const plzMatch = plzCityRaw.match(/^(\d+)/);
- const plz = plzMatch ? plzMatch[1] : '';
- const city = plzCityRaw.replace(/^\d+\s*/, '').trim();
-
- // Create metadata object
- const eventTypeMap = {
- '2': 'Xinon Inbetriebnahmen',
- '3': 'ESTMK Inbetriebnahmen',
- '7': 'Sbidi Inbetriebnahmen',
- '4': 'SNOPP',
- '5': 'Störungen',
- '6': 'Support Gespräch'
- };
- const eventTypeText = eventTypeMap[event.event_type] || 'Unbekannter Termintyp';
-
- const metadata = {
- from_calendar: true,
- event_type_id: event.event_type,
- event_type_text: eventTypeText
- };
-
- // Check for default positions for SBIDI event type
- let defaultPositions = [];
- if (event.event_type === '7') {
- defaultPositions = [
- {"article": 56, "amount": "1", "isEnergieMaterial": 1},
- {"article": 71, "amount": "1", "isEnergieMaterial": 1},
- {"article": 134, "amount": "1", "isEnergieMaterial": 1},
- {"article": 324, "isEnergieMaterial": 1, "amount": "1"},
- {"article": 325, "amount": "1", "isEnergieMaterial": 1},
- {"article": 539, "amount": "1", "isEnergieMaterial": 1},
- {"article": 660, "amount": "1", "isEnergieMaterial": 1}
- ];
- }
-
- // Directly set the data in the modal's `shippingNote` object
- const modalData = this.$refs.modal.shippingNote;
- this.$set(modalData, 'deliveryAddressName', event.category);
- this.$set(modalData, 'deliveryAddressLine', line);
- this.$set(modalData, 'deliveryAddressPLZ', plz);
- this.$set(modalData, 'deliveryAddressCity', city);
- this.$set(modalData, 'metadata', metadata); // Set metadata
-
- if (defaultPositions.length > 0) {
- this.$set(modalData, 'positions', defaultPositions); // Set default positions
- }
- }
- },
- closeDropdown(event) {
- if (!event.target.closest('.dropdown')) {
- this.showCalendarDropdown = false;
- }
- },
- async changeStatus(id, status) {
- const response = await axios.post(window.TT_CONFIG.BASE_PATH + '/WarehouseShippingNote/changeStatus', {
- id,
- status
- });
- if (response.data.success) {
- this.window.notify('success', response.data.message || 'Erfolgreich aktualisiert');
- this.$refs.table.$refs.table.refreshTable();
- } else {
- this.window.notify('error', response.data.message || 'Ein Fehler ist aufgetreten');
- }
- },
- }
-})
let hiddenTime = null;
const RELOAD_AFTER_SECONDS = 300;
@@ -692,4 +522,4 @@ document.addEventListener('DOMContentLoaded', () => {
logoutButton.addEventListener('click', handleLogout);
document.body.appendChild(logoutButton);
-});
\ No newline at end of file
+});