From bbe7c1b71cb2476e65c03edda6f6b80f07dae145 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Wed, 3 Jun 2026 13:45:17 +0200 Subject: [PATCH] Bestellungen: Karten-Vorschau je Position vor dem Bestellen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Vorschau-Button (👁) je Position im Bestell-Dialog (aktiv wenn Produkt+Mitarbeiter gewählt): rendert card.pdf via pdf.js (Vorder-/ Rückseite) im Vorschau-Modal mit echten Mitarbeiterdaten × Produktlayout. - Auch im Bestell-Detail je Position (Reseller-Prüfung vor Produktion). - Modal: optionaler wide-Prop für Bestell-/Vorschau-Modal. Co-Authored-By: Claude Opus 4.8 --- frontend/src/components/Modal.vue | 5 +- frontend/src/views/OrdersView.vue | 78 +++++++++++++++++++++++++++++-- 2 files changed, 76 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/Modal.vue b/frontend/src/components/Modal.vue index 2caa391..32647d1 100644 --- a/frontend/src/components/Modal.vue +++ b/frontend/src/components/Modal.vue @@ -1,11 +1,11 @@ @@ -244,13 +303,22 @@ onMounted(async () => { await load(); if (canOrder.value) await loadRefs() }) .s-cancel { background: #f3f4f6; color: #6b7280; } .items { border: 1px solid var(--line); border-radius: var(--radius-sm); overflow: hidden; } -.items-head, .item-row { display: grid; grid-template-columns: 1fr 1fr 62px 28px; gap: .35rem; align-items: center; padding: .5rem .6rem; } +.items-head, .item-row { display: grid; grid-template-columns: 1fr 1fr 64px 32px 32px; gap: .4rem; align-items: center; padding: .5rem .6rem; } .items-head { font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); background: #fafafa; } .item-row { border-top: 1px solid #f4f4f4; } .items-head > *, .item-row > * { min-width: 0; } .item-row :deep(.input) { padding-left: .5rem; padding-right: .3rem; } .item-row .qty { text-align: right; } -.item-row .del { padding: 0; } +.item-row .eye, .item-row .del { padding: 0; } +.item-row .del { color: var(--danger); } + +.prev-sub { margin: -.4rem 0 1rem; } +.prev-loading { padding: 2rem; text-align: center; color: var(--muted); } +.prev-pages { display: flex; flex-wrap: wrap; gap: 1.2rem; justify-content: center; } +.prev-pages figure { margin: 0; text-align: center; } +.prev-pages img { width: 300px; max-width: 100%; border: 1px solid var(--line); border-radius: 6px; box-shadow: var(--shadow-sm); background: #fff; } +.prev-pages figcaption { font-size: .78rem; margin-top: .4rem; } +.prev-note { font-size: .8rem; margin: 1.1rem 0 0; text-align: center; } .item-row .del { color: var(--danger); } .addrow { margin: .6rem 0 1rem; } .field { margin-top: .4rem; }