intestazione sperimentatore, revisione export pdf
This commit is contained in:
parent
7350390f19
commit
5bd0b83dd9
@ -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
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
BIN
public/watermark-orig.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 39 KiB |
22
src/App.vue
22
src/App.vue
@ -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>
|
||||
|
||||
@ -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')
|
||||
}
|
||||
|
||||
@ -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')
|
||||
}
|
||||
|
||||
@ -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')
|
||||
}
|
||||
|
||||
@ -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
48
src/utils/dateformat.js
Normal 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: 00–68 → 2000–2068, 69–99 → 1969–1999 */
|
||||
function twoDigitYearToFull(yy) {
|
||||
return yy <= 68 ? 2000 + yy : 1900 + yy;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user