Servis: radni nalog za servisera, hover napomena, responsive popravke

- Nalepnica: uklonjen QR (ostaje na uređaju u servisu, klijent nema šta da skenira);
  oslobođen prostor iskorišćen za telefon klijenta i datume (prijem + rok)
- Radni nalog: obrisani „servis_stampa" i „servis_predracun"; nov interni
  „servis_radni_nalog" (ruta /servis/{id}/radni-nalog) sa podacima samo za
  servisera, bez cena, sa barkodom i praznim poljima (dijagnoza, urađen rad, potpis)
- Forma „Izmeni nalog": kartice „Serviser" i „Avans i napomena" spojene u jednu
  „Serviser, avans i napomena"
- Servis kanban: dugme uz SN broj otvara internu napomenu (hover na desktopu,
  tap→focus na mobilnom); okidač na omotaču da napomena ne treperi
- Detalji naloga (responsive): forme „Dodaj rad/deo" izvučene iz inline grid-a u
  klase + @media (2 kolone na telefonu); tabele radova/delova u tabela-skrol
This commit is contained in:
2026-06-23 11:08:58 +02:00
parent e5d73b2149
commit b132ac6cef
10 changed files with 226 additions and 594 deletions
+24 -10
View File
@@ -29,17 +29,18 @@
.barkod { flex: 0 0 auto; text-align: center; }
.barkod img { display: block; width: 100%; height: 9mm; object-fit: fill; }
.donji-red { flex: 1; min-width: 0; display: flex; align-items: center; gap: 3mm; }
.donji-red { flex: 1; min-width: 0; display: flex; align-items: stretch; }
.podaci { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 1.5mm; }
.podaci { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 1.2mm; }
.broj { font-family: monospace; font-size: 14pt; font-weight: 700; line-height: 1.1; }
.red { font-size: 8pt; line-height: 1.25; }
.red .labela { color: #777; text-transform: uppercase; letter-spacing: .3px; font-size: 6.5pt; }
.red { font-size: 8pt; line-height: 1.25; display: flex; gap: 2mm; }
.red .labela { color: #777; text-transform: uppercase; letter-spacing: .3px; font-size: 6.5pt; flex: 0 0 14mm; align-self: center; }
.red .vrednost { font-weight: 600; word-break: break-word; }
.prazno { color: #aaa; font-style: italic; font-weight: 400; }
.qr { flex: 0 0 auto; }
.qr img { display: block; width: 22mm; height: 22mm; }
.datumi { display: flex; gap: 5mm; font-size: 8pt; }
.datumi .stavka { display: flex; gap: 1.5mm; align-items: baseline; }
.datumi .labela { color: #777; text-transform: uppercase; letter-spacing: .3px; font-size: 6.5pt; }
.datumi .vrednost { font-weight: 600; }
@page { size: 70mm 40mm; margin: 0; }
@media print {
@@ -60,14 +61,27 @@
<div class="labela">Klijent</div>
<div class="vrednost">{{if .KlijentNaziv}}{{.KlijentNaziv}}{{else}}<span class="prazno"></span>{{end}}</div>
</div>
<div class="red">
<div class="labela">Telefon</div>
<div class="vrednost">{{if .Telefon}}{{telefon .Telefon}}{{else}}<span class="prazno"></span>{{end}}</div>
</div>
<div class="red">
<div class="labela">Uređaj</div>
<div class="vrednost">{{if .Nalog.Uredjaj}}{{.Nalog.Uredjaj}}{{else}}<span class="prazno"></span>{{end}}</div>
</div>
<div class="datumi">
<div class="stavka">
<span class="labela">Primljen</span>
<span class="vrednost">{{.DatumPrijema}}</span>
</div>
{{if .PredvidjenRok}}
<div class="stavka">
<span class="labela">Rok</span>
<span class="vrednost">{{.PredvidjenRok}}</span>
</div>
{{end}}
</div>
</div>
{{if .QRKod}}
<div class="qr"><img src="data:image/png;base64,{{.QRKod}}" alt="QR"></div>
{{end}}
</div>
</div>
<script>window.addEventListener('load', function(){ window.print(); });</script>