Unterschriftenservice als echter Auftrag: signature-order (Seiten-SVGs schreiben + Auftrag anlegen), Kundenmail-Feld + 'Auftrag anlegen'-Button, Output-Mount schreibbar

This commit is contained in:
Lucas Orth committed 2026-08-27 11:05:45 +02:00
1 parent aef08dbbff
commit 1b600ba150
3 files changed
+113 -3

No files matched your search

@@ -58,7 +58,7 @@ const NeuAuftrag = defineComponent({
const sig = reactive({
modus: 'auftrag', // 'auftrag' (aus Auftrag laden) oder 'manuell' (direkt hochladen)
orderNr: '', order: null, docs: [], docId: null, docName: '', signaturen: [],
laden: false, pdf: '', msg: '', err: '',
customerEmail: '', laden: false, pdf: '', msg: '', err: '',
});
// Datei nach Directus hochladen (liefert die Datei-ID).
async function sigUpload(file) {
@@ -646,6 +646,18 @@ const NeuAuftrag = defineComponent({
sig.msg = 'ZIP heruntergeladen – A4-Signaturen an den Plotter geben.';
} catch (e) { sig.err = e?.response?.data?.detail || e?.response?.data?.error || e?.message || 'Erzeugung fehlgeschlagen.'; sig.msg = ''; }
}
// Legt einen echten Auftrag an: erzeugt je PDF-Seite eine A4-SVG (leer wo kein
// Marker) und schreibt sie als Schriftstück. Danach im Produktions-Board unter
// „Neu" → dort Drucken → Plotter (wie ein normaler Auftrag).
async function sigAuftrag() {
if (!sig.docId) { sig.err = 'Bitte ein Dokument wählen/hochladen.'; return; }
if (!sigAktive().length) { sig.err = 'Mindestens eine Unterschrift aktivieren.'; return; }
sig.err = ''; sig.msg = 'Auftrag wird angelegt …';
try {
const res = await api.post('/skrift-orders/signature-order', { ...sigPayload(), customer_email: sig.customerEmail || undefined });
sig.msg = `✔ Auftrag ${res.data.order_number} angelegt (${res.data.pages} Seite/n). Im Produktions-Board unter „Neu" → Drucken.`;
} catch (e) { sig.err = e?.response?.data?.detail || e?.response?.data?.error || e?.message || 'Auftrag konnte nicht angelegt werden.'; sig.msg = ''; }
}
function signaturPanel() {
const sigFeld = (s, k, lbl, step) => h('div', { style: 'display:flex;flex-direction:column;gap:3px;flex:1;min-width:90px;' }, [
@@ -707,8 +719,14 @@ const NeuAuftrag = defineComponent({
sigFeld(s, 'offset_y_mm', 'Y mm'),
]),
])),
h('div', { class: 'sk-btnrow', style: 'display:flex;gap:12px;flex-wrap:wrap;margin-top:8px;' }, [
// Kunde zuordnen (für den anzulegenden Auftrag) + Aktionen.
h('div', { style: 'margin-top:12px;max-width:360px;' }, [
label('Kundenmail (Auftrag zuordnen, optional)'),
h('input', { value: sig.customerEmail, type: 'email', placeholder: 'kunde@…', style: WFELD + 'width:100%;', onInput: (e) => { sig.customerEmail = e.target.value; } }),
]),
h('div', { class: 'sk-btnrow', style: 'display:flex;gap:12px;flex-wrap:wrap;margin-top:12px;' }, [
btn(sig.msg ? '…' : '👁 Vorschau', sigVorschau, 'primary'),
btn('🖨 Auftrag anlegen', sigAuftrag, 'primary'),
btn('⤓ A4-Signaturen (ZIP)', sigDownload),
]),
]);