intestazione sperimentatore, revisione export pdf

This commit is contained in:
LORENZO\pacio 2025-12-03 15:10:55 +01:00
parent 7350390f19
commit 5bd0b83dd9
9 changed files with 80 additions and 12 deletions

View File

@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" type="image/icon" href="/watermark-orig.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Unilab</title>
</head>

BIN
public/watermark-orig.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
public/watermark-orig.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -79,8 +79,13 @@
<div class="signatures">
<div class="signblock">
<span class="sign1">Lo sperimentatore</span><br>
<span class="sign2">Dott. Ing. Giacomo Calussi</span>
<span class="sign2">{{ intestazione.sperimentatore }}</span>
</div>
<div class="pagecount">
Pagina <span class="pagenum">1</span> di <span class="pagetotal">1</span>
</div>
<div class="signblock">
<span class="sign1">Il Direttore del Laboratorio</span><br>
<span class="sign2">Dott. Ing. Paolo Neri</span>
@ -327,8 +332,8 @@ header {
.section-title {
padding: 4px;
font-weight: bold;
margin-top: 16px;
margin-bottom: 2px;
margin-top: 8px;
margin-bottom: 8px;
text-align: center;
}
@ -433,11 +438,11 @@ footer .signatures {
}
footer .sign1{
font-size: 0.9em;
font-size: 0.85em;
}
footer .sign2{
font-size: 0.8em;
font-size: 0.75em;
}
footer .signblock{
@ -457,4 +462,11 @@ footer .signblock{
font-size: 0.7em;
margin: 0;
}
.pagecount {
align-self: end;
font-size: 0.7em;
border-bottom: none;
}
</style>

View File

@ -16,7 +16,7 @@
<td>{{ row.idProvino }}</td>
<td>{{ row.contrassegno }}</td>
<td>{{ row.verbale }}</td>
<td>{{ formatDate(row.dataPrelievo) }}</td>
<td>{{ fmtDDMMYY(row.dataPrelievo) }}</td>
<td>{{ formatNumber(row.rck, 0) }}</td>
<td v-if="row.rowspanArea > 0" :rowspan="row.rowspanArea">{{ row.area }}</td>
</tr>
@ -61,7 +61,7 @@
<tbody>
<tr v-for="row in risult_data" :key="row.idProvino">
<td>{{ row.idProvino }}</td>
<td>{{ formatDate(row.dataProva) }}</td>
<td>{{ fmtDDMMYY(row.dataProva) }}</td>
<td>{{ formatNumber(row.dimA, 2) }}</td>
<td>{{ formatNumber(row.dimH, 2) }}</td>
<td>{{ formatNumber(row.massaVolumica, 0) }}</td>
@ -82,6 +82,8 @@
intestazione: Object
})
import{fmtDDMMYY} from '../../utils/dateformat.js'
function formatDate(dateStr) {
return new Date(dateStr).toLocaleDateString('it-IT')
}

View File

@ -16,7 +16,7 @@
<td>{{ row.idProvino }}</td>
<td>{{ row.contrassegno }}</td>
<td>{{ row.verbale }}</td>
<td>{{ formatDate(row.dataPrelievo) }}</td>
<td>{{ fmtDDMMYY(row.dataPrelievo) }}</td>
<td>{{ formatNumber(row.rck, 0) }}</td>
<td v-if="row.rowspanArea > 0" :rowspan="row.rowspanArea">{{ row.area }}</td>
</tr>
@ -63,7 +63,7 @@
<tbody>
<tr v-for="row in risult_data" :key="row.idProvino">
<td>{{ row.idProvino }}</td>
<td>{{ formatDate(row.dataProva) }}</td>
<td>{{ fmtDDMMYY(row.dataProva) }}</td>
<td>{{ formatNumber(row.dimA, 2) }}</td>
<td>{{ formatNumber(row.dimB, 2) }}</td>
<td>{{ formatNumber(row.dimH, 2) }}</td>
@ -85,6 +85,8 @@
intestazione: Object
})
import{fmtDDMMYY} from '../../utils/dateformat.js'
function formatDate(dateStr) {
return new Date(dateStr).toLocaleDateString('it-IT')
}

View File

@ -27,7 +27,7 @@
<td>{{ row.idProvino }}</td>
<td>{{ row.contrassegno }}</td>
<td>{{ row.verbale }}</td>
<td>{{ formatDate(row.dataPrelievo) }}</td>
<td>{{ fmtDDMMYY(row.dataPrelievo) }}</td>
<td>{{ formatNumber(row.diaNom,0) }}</td>
<td>{{ formatNumber(row.lunBase,0) }}</td>
<td>{{ formatNumber(row.masG,1) }}</td>
@ -82,6 +82,8 @@
intestazione: Object
})
import{fmtDDMMYY} from '../../utils/dateformat.js'
function formatDate(dateStr) {
return new Date(dateStr).toLocaleDateString('it-IT')
}

View File

@ -27,7 +27,7 @@
<td>{{ row.idProvino }}</td>
<td>{{ row.contrassegno }}</td>
<td>{{ row.verbale }}</td>
<td>{{ formatDate(row.dataPrelievo) }}</td>
<td>{{ fmtDDMMYY(row.dataPrelievo) }}</td>
<td>{{ formatNumber(row.diaNom,0) }}</td>
<td>{{ formatNumber(row.lunBase,2) }}</td>
<td>{{ formatNumber(row.masG,2) }}</td>
@ -85,6 +85,8 @@
intestazione: Object
})
import{fmtDDMMYY} from '../../utils/dateformat.js'
function formatDate(dateStr) {
return new Date(dateStr).toLocaleDateString('it-IT')
}

48
src/utils/dateformat.js Normal file
View File

@ -0,0 +1,48 @@
/**
* Format a date to "DD/MM/YY".
* Accepts Date, ISO/string, or timestamp (ms).
*
* @param {Date|string|number|null|undefined} input
* @param {{ utc?: boolean, placeholder?: string }} opts
* @returns {string}
*/
export function fmtDDMMYY(input, opts = {}) {
const { utc = false, placeholder = '' } = opts;
if (input == null || input === '') return placeholder;
let d = null;
if (input instanceof Date) {
d = new Date(input.getTime());
} else if (typeof input === 'number') {
d = new Date(input);
} else if (typeof input === 'string') {
const s = input.trim();
// Try DD/MM/YYYY or DD-MM-YYYY (also accepts 1/1/24 etc.)
const m = /^(\d{1,2})[\/-](\d{1,2})[\/-](\d{2}|\d{4})$/.exec(s);
if (m) {
let dd = Number(m[1]), mm = Number(m[2]), yy = m[3];
let yyyy = yy.length === 2 ? twoDigitYearToFull(Number(yy)) : Number(yy);
d = new Date(yyyy, mm - 1, dd);
} else {
// Fallback: let Date parse ISO-like strings (e.g., "2025-11-13T10:15:00")
const parsed = new Date(s);
if (!isNaN(parsed)) d = parsed;
}
}
if (!d || isNaN(d)) return placeholder;
const get = utc ? 'getUTC' : 'get';
const dd = String(d[`${get}Date`]()).padStart(2, '0');
const mm = String(d[`${get}Month`]() + 1).padStart(2, '0');
const yy = String(d[`${get}FullYear`]()).slice(-2);
return `${dd}/${mm}/${yy}`;
}
/** Map 2-digit year to full year: 0068 → 20002068, 6999 → 19691999 */
function twoDigitYearToFull(yy) {
return yy <= 68 ? 2000 + yy : 1900 + yy;
}