Unterschriftenservice: Datei-Lesen von Platte (behebt transforms-Fehler), Marker-Token [[..]] statt paragraph, Breite/Versatz aus hinterlegter Signatur (Service + Brief)

This commit is contained in:
Lucas Orth committed 2026-08-27 09:42:10 +02:00
1 parent 30c9e80f9c
commit cc3f4fb758
2 files changed
+19 -11

No files matched your search

@@ -95,7 +95,7 @@ const NeuAuftrag = defineComponent({
api.get('/items/pricing_settings', { params: { fields: 'char_whitelist' } }).catch(() => ({ data: { data: {} } })),
api.get('/items/muster_settings', { params: { fields: 'text_du,text_sie' } }).catch(() => ({ data: { data: {} } })),
api.get('/items/muster_texts', { params: { limit: -1, filter: { active: { _eq: true } }, sort: 'sort', fields: 'id,label,text' } }).catch(() => ({ data: { data: [] } })),
api.get('/items/signatures', { params: { limit: -1, sort: '-date_created', fields: 'id,label,file,customer.first_name,customer.last_name' } }).catch(() => ({ data: { data: [] } })),
api.get('/items/signatures', { params: { limit: -1, sort: '-date_created', fields: 'id,label,file,marker_key,offset_x_mm,offset_y_mm,width_mm,customer.first_name,customer.last_name' } }).catch(() => ({ data: { data: [] } })),
]);
produkte.value = p.data?.data || [];
formate.value = f.data?.data || [];
@@ -204,6 +204,9 @@ const NeuAuftrag = defineComponent({
const res = await api.get(`/assets/${s.file}`, { responseType: 'text' });
neu.sigSvg = typeof res.data === 'string' ? res.data : String(res.data || '');
neu.sigLabel = s.label || 'Unterschrift';
// Versatz aus der hinterlegten Unterschrift übernehmen (X/Y in mm).
neu.sigX = Number(s.offset_x_mm) || 0;
neu.sigY = Number(s.offset_y_mm) || 0;
sigEinfuegen();
} catch { neu.err = 'Signatur konnte nicht geladen werden.'; }
}
@@ -596,8 +599,10 @@ const NeuAuftrag = defineComponent({
function sigBestehendeWaehlen(id) {
const s = signaturListe.value.find((x) => String(x.id) === String(id));
if (!s || !s.file) return;
// Breite/Versatz/Marker aus der hinterlegten Unterschrift übernehmen.
sig.signaturen.push({ file_id: s.file, label: s.label || 'Unterschrift', aktiv: true,
marker_key: 'SIG' + (sig.signaturen.length + 1), position: 'genau', width_mm: 40, offset_x_mm: 0, offset_y_mm: 0 });
marker_key: s.marker_key || ('SIG' + (sig.signaturen.length + 1)), position: 'genau',
width_mm: s.width_mm ?? 40, offset_x_mm: s.offset_x_mm ?? 0, offset_y_mm: s.offset_y_mm ?? 0 });
sig.pdf = '';
}
async function sigSvgUpload(file) {
@@ -657,7 +662,7 @@ const NeuAuftrag = defineComponent({
sig.docs.length > 1 ? h('div', { style: 'margin-top:12px;' }, [label('Dokument'), sel(sig.docId, sig.docs.map((d, i) => ({ v: d, t: `Dokument ${i + 1}` })), (e) => { sig.docId = e.target.value; sig.pdf = ''; })]) : null,
])
: h('div', {}, [
label('Dokument (PDF mit Marker §§SIG…§§)'),
label('Dokument (PDF mit Marker [[SIG…]] – Token wie bei Brief-Platzhaltern)'),
h('input', { type: 'file', accept: '.pdf', onChange: (e) => sigPdfUpload(e.target.files && e.target.files[0]), style: 'font-size:13px;' }),
sig.docName ? subdued(`${sig.docName} hochgeladen.`, 'margin-top:6px;') : null,
]),