neuauftrag: Kuverts-Haken default an, extra Haken 'Absender aufs Kuvert' + Absender-Groesse (%); envelope_sender_scale gespeichert/durchgereicht; bootstrap-Feld
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -78,14 +78,16 @@ const NeuAuftrag = defineComponent({
|
||||
// Mehrseitiges Schriftstück (Auto-Fluss über mehrere A4-Seiten).
|
||||
mehrseitig: false, seitenInfo: '',
|
||||
// Kuvert-Adresse je Empfänger: '5zeilen' (5 Zeilen) oder 'individuell' (einzeilig).
|
||||
adressModus: '5zeilen', kuverts: false, envelopeSender: '', realistic: true, customer_email: '', text: '', rows: [leereZeile()],
|
||||
adressModus: '5zeilen', kuverts: true, absenderAufKuvert: false, envelopeSender: '', envelopeSenderScale: 100, realistic: true, customer_email: '', text: '', rows: [leereZeile()],
|
||||
importOpen: false, importText: '',
|
||||
docs: [], previewSession: null, pLaedt: false, msg: '', err: '', hinweis: '', lb: '', lbDoc: null,
|
||||
});
|
||||
// Kuverts nur generieren, wenn angehakt (Beschriftung aus der Empfängeradresse).
|
||||
const kuvertPayload = () => (neu.kuverts
|
||||
? { needs_envelope: true, envelope_labeling: 'empfaenger', envelope_text: '', envelope_sender: (neu.envelopeSender || '').trim() }
|
||||
: { needs_envelope: false, envelope_labeling: 'keine', envelope_text: '', envelope_sender: '' });
|
||||
? { needs_envelope: true, envelope_labeling: 'empfaenger', envelope_text: '',
|
||||
envelope_sender: neu.absenderAufKuvert ? (neu.envelopeSender || '').trim() : '',
|
||||
envelope_sender_scale: (Number(neu.envelopeSenderScale) || 100) / 100 }
|
||||
: { needs_envelope: false, envelope_labeling: 'keine', envelope_text: '', envelope_sender: '', envelope_sender_scale: 1 });
|
||||
|
||||
async function laden() {
|
||||
try {
|
||||
@@ -266,7 +268,7 @@ const NeuAuftrag = defineComponent({
|
||||
const kv = kuvertPayload();
|
||||
const res = await api.post('/skrift-orders/preview', {
|
||||
text: neu.text, font: neu.font, format: neu.format, realistic: neu.realistic,
|
||||
envelope_labeling: kv.envelope_labeling, envelope_text: kv.envelope_text, envelope_sender: kv.envelope_sender,
|
||||
envelope_labeling: kv.envelope_labeling, envelope_text: kv.envelope_text, envelope_sender: kv.envelope_sender, envelope_sender_scale: kv.envelope_sender_scale,
|
||||
font_scale_letter: neu.fontSizeLetter / 100, font_scale_envelope: neu.fontSizeEnvelope / 100,
|
||||
multi_page: neu.mehrseitig,
|
||||
...briefSigPayload(),
|
||||
@@ -347,7 +349,7 @@ const NeuAuftrag = defineComponent({
|
||||
font_scale_letter: neu.fontSizeLetter / 100, font_scale_envelope: neu.fontSizeEnvelope / 100,
|
||||
multi_page: neu.mehrseitig,
|
||||
...briefSigPayload(),
|
||||
needs_envelope: kv.needs_envelope, envelope_labeling: kv.envelope_labeling, envelope_text: kv.envelope_text, envelope_sender: kv.envelope_sender,
|
||||
needs_envelope: kv.needs_envelope, envelope_labeling: kv.envelope_labeling, envelope_text: kv.envelope_text, envelope_sender: kv.envelope_sender, envelope_sender_scale: kv.envelope_sender_scale,
|
||||
shipping_type: 'sammel',
|
||||
customer_email: neu.customer_email.trim() || undefined,
|
||||
text_template: neu.text, preview_session: neu.previewSession || undefined,
|
||||
@@ -367,7 +369,7 @@ const NeuAuftrag = defineComponent({
|
||||
product: produkte.value[0]?.key || 'briefe', format: neuFormate()[0]?.key || '', font: 'tilda',
|
||||
fontSizeLetter: 100, fontSizeEnvelope: 100,
|
||||
sigSvg: '', sigLabel: '', sigX: 0, sigY: 0, sigScale: 100, mehrseitig: false, seitenInfo: '',
|
||||
adressModus: '5zeilen', kuverts: false, envelopeSender: '', realistic: true, customer_email: '', text: '', rows: [leereZeile()],
|
||||
adressModus: '5zeilen', kuverts: true, absenderAufKuvert: false, envelopeSender: '', envelopeSenderScale: 100, realistic: true, customer_email: '', text: '', rows: [leereZeile()],
|
||||
importOpen: false, importText: '',
|
||||
docs: [], previewSession: null, pLaedt: false, msg: '', err: '', hinweis: '', lb: '',
|
||||
});
|
||||
@@ -508,17 +510,27 @@ const NeuAuftrag = defineComponent({
|
||||
h('input', { type: 'checkbox', checked: neu.kuverts, onChange: (e) => { neu.kuverts = e.target.checked; neu.previewSession = null; }, style: 'width:16px;height:16px;' }),
|
||||
'Kuverts generieren',
|
||||
]),
|
||||
h('div', { style: 'margin-top:14px;' }, [
|
||||
label('Absender aufs Kuvert (oben links, max. 5 Zeilen, optional)'),
|
||||
neu.kuverts ? h('label', { style: 'display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer;margin-top:8px;' }, [
|
||||
h('input', { type: 'checkbox', checked: neu.absenderAufKuvert, onChange: (e) => { neu.absenderAufKuvert = e.target.checked; neu.previewSession = null; }, style: 'width:16px;height:16px;' }),
|
||||
'Absender aufs Kuvert (oben links)',
|
||||
]) : null,
|
||||
(neu.kuverts && neu.absenderAufKuvert) ? h('div', { style: 'margin-top:10px;' }, [
|
||||
label('Absender (max. 5 Zeilen)'),
|
||||
h('textarea', {
|
||||
value: neu.envelopeSender, rows: 5,
|
||||
placeholder: 'Max Mustermann\nMusterstraße 1\n12345 Musterstadt',
|
||||
style: WFELD + 'width:100%;font-family:var(--family-monospace,monospace);',
|
||||
onInput: (e) => { neu.envelopeSender = saeubere(String(e.target.value)).split('\n').slice(0, 5).join('\n'); neu.previewSession = null; },
|
||||
}),
|
||||
h('div', { style: 'margin-top:8px;max-width:170px;' }, [
|
||||
label('Absender-Größe (%)'),
|
||||
h('input', { type: 'number', min: 50, max: 200, step: 5, value: neu.envelopeSenderScale, style: WFELD + 'width:100%;',
|
||||
onInput: (e) => { neu.envelopeSenderScale = e.target.value; neu.previewSession = null; },
|
||||
onBlur: (e) => { const n = Math.round(Number(e.target.value)); neu.envelopeSenderScale = (Number.isFinite(n) && n) ? Math.max(50, Math.min(200, n)) : 100; } }),
|
||||
]),
|
||||
h('div', { style: 'font-size:11px;color:var(--foreground-subdued,#888);margin-top:4px;line-height:1.5;' },
|
||||
'Ist ein Absender gesetzt, rutscht der Empfänger auf dem Kuvert automatisch nach unten rechts. Wirkt nur, wenn „Kuverts generieren" aktiv ist.'),
|
||||
]),
|
||||
'Der Empfänger rutscht dann auf dem Kuvert automatisch nach unten rechts.'),
|
||||
]) : null,
|
||||
neu.importOpen ? h('div', { style: 'margin-top:12px;' }, [
|
||||
subdued('Aus Excel kopieren und einfügen – eine Zeile pro Empfänger, Spalten mit Tab/Semikolon/Komma. '
|
||||
+ 'Reihenfolge: erst individuelle Platzhalter, dann ' + (neu.adressModus === 'individuell' ? 'die eine Adresszeile.' : 'Zeile 1–5.'), 'margin-bottom:6px;'),
|
||||
|
||||
@@ -695,6 +695,7 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
placeholders: platzhalterVon(e, i), fontScale: fsEnv,
|
||||
// Absender aufs Kuvert (oben links); Empfänger rutscht dann unten rechts.
|
||||
sender: clean(String(body.envelope_sender || '')),
|
||||
senderScale: Number(body.envelope_sender_scale) || 1,
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -1620,6 +1621,7 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
envelope_text: clean(body.envelope_text) ?? null,
|
||||
envelope_format: envelopeFormat,
|
||||
envelope_sender: clean(body.envelope_sender) ?? null,
|
||||
envelope_sender_scale: Math.max(0.5, Math.min(2, Number(body.envelope_sender_scale) || 1)),
|
||||
text_template: clean(body.text_template) ?? null,
|
||||
preview_session: typeof body.preview_session === 'string' ? body.preview_session : null,
|
||||
entries_count: entries.length,
|
||||
|
||||
Reference in New Issue
Block a user