315 lines
7.4 KiB
HTML
315 lines
7.4 KiB
HTML
<!doctype html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Druckbeleg</title>
|
|
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}">
|
|
<style>
|
|
@page {
|
|
size: A4 portrait;
|
|
margin: 10mm;
|
|
}
|
|
|
|
:root {
|
|
--ccm-bg: #f4f6f8;
|
|
--ccm-text: #212121;
|
|
--ccm-primary: #da002d;
|
|
--ccm-primary-hover: #b00024;
|
|
--ccm-header: #2b2f36;
|
|
--ccm-surface: #ffffff;
|
|
--ccm-border: #d9dee3;
|
|
--ccm-muted: #6b7280;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
font-family: "Segoe UI", Arial, sans-serif;
|
|
color: var(--ccm-text);
|
|
background: var(--ccm-bg);
|
|
}
|
|
|
|
.page {
|
|
max-width: 960px;
|
|
margin: 0 auto;
|
|
padding: 2rem;
|
|
}
|
|
|
|
.sheet {
|
|
background: var(--ccm-surface);
|
|
border: 1px solid var(--ccm-border);
|
|
border-radius: 1rem;
|
|
box-shadow: 0 12px 30px rgba(43, 47, 54, 0.08);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.topbar {
|
|
background: linear-gradient(135deg, #da002d 0%, #b00024 100%);
|
|
padding: 1rem 1.5rem;
|
|
}
|
|
|
|
.logo-row {
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
align-items: center;
|
|
padding: 1.25rem 1.5rem 0;
|
|
background: linear-gradient(135deg, #da002d 0%, #b00024 100%);
|
|
}
|
|
|
|
.header {
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
align-items: flex-start;
|
|
background: linear-gradient(135deg, #da002d 0%, #b00024 100%);
|
|
color: #ffffff;
|
|
padding: 1.5rem;
|
|
text-align: left;
|
|
}
|
|
|
|
.header-content {
|
|
text-align: left;
|
|
}
|
|
|
|
.header img {
|
|
height: 28px;
|
|
width: auto;
|
|
}
|
|
|
|
.print-logo {
|
|
filter: none;
|
|
}
|
|
|
|
h1 {
|
|
margin: 0;
|
|
font-size: 1.8rem;
|
|
}
|
|
|
|
.subtitle {
|
|
margin-top: 0.35rem;
|
|
color: rgba(255, 255, 255, 0.9);
|
|
}
|
|
|
|
.content {
|
|
padding: 1.5rem;
|
|
}
|
|
|
|
.details {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
}
|
|
|
|
.details th,
|
|
.details td {
|
|
text-align: left;
|
|
padding: 0.75rem 0;
|
|
border-bottom: 1px solid var(--ccm-border);
|
|
vertical-align: top;
|
|
}
|
|
|
|
.details th {
|
|
width: 30%;
|
|
color: var(--ccm-muted);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.note-box {
|
|
margin-top: 1.5rem;
|
|
padding: 1rem 1.25rem;
|
|
border-left: 4px solid var(--ccm-primary);
|
|
background: rgba(218, 0, 45, 0.06);
|
|
border-radius: 0.75rem;
|
|
}
|
|
|
|
.signature-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 2rem;
|
|
margin-top: 4rem;
|
|
}
|
|
|
|
.signature-box {
|
|
min-height: 120px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.signature-line {
|
|
border-top: 1px solid var(--ccm-text);
|
|
padding-top: 0.75rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.signature-date {
|
|
margin-top: 0.5rem;
|
|
color: var(--ccm-muted);
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
.print-actions {
|
|
display: flex;
|
|
gap: 0.75rem;
|
|
margin-top: 2rem;
|
|
}
|
|
|
|
.button {
|
|
display: inline-block;
|
|
padding: 0.75rem 1rem;
|
|
border-radius: 0.5rem;
|
|
text-decoration: none;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.button-primary {
|
|
background: var(--ccm-primary);
|
|
color: #ffffff;
|
|
}
|
|
|
|
.button-secondary {
|
|
background: var(--ccm-bg);
|
|
color: var(--ccm-text);
|
|
}
|
|
|
|
@media print {
|
|
html,
|
|
body {
|
|
width: 210mm;
|
|
min-height: 297mm;
|
|
background: #ffffff;
|
|
}
|
|
|
|
body {
|
|
display: flex;
|
|
justify-content: center;
|
|
}
|
|
|
|
.print-actions {
|
|
display: none;
|
|
}
|
|
|
|
.page {
|
|
width: 100%;
|
|
max-width: 190mm;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
.sheet {
|
|
border: 0;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
width: 100%;
|
|
min-height: 277mm;
|
|
}
|
|
|
|
.print-logo {
|
|
filter: brightness(0) saturate(100%);
|
|
}
|
|
|
|
.topbar {
|
|
padding: 0 8mm 8mm;
|
|
}
|
|
|
|
.logo-row {
|
|
padding: 0 8mm 6mm;
|
|
}
|
|
|
|
.header {
|
|
padding: 8mm;
|
|
}
|
|
|
|
.content {
|
|
padding: 8mm;
|
|
}
|
|
|
|
.signature-grid {
|
|
margin-top: 26mm;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 700px) {
|
|
.page {
|
|
padding: 1rem;
|
|
}
|
|
|
|
.header {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.signature-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<main class="page">
|
|
<section class="sheet">
|
|
<div class="topbar"></div>
|
|
<div class="logo-row">
|
|
<img class="print-logo" src="{{ url_for('static', filename='cancom.svg') }}" alt="CANCOM Logo">
|
|
</div>
|
|
<div class="header">
|
|
<div class="header-content">
|
|
<h1>{{ action_labels[transaction.action] }} {{ asset_labels[transaction.asset_type] }}</h1>
|
|
<div class="subtitle">{{ print_descriptions[transaction.action] }}</div>
|
|
</div>
|
|
</div>
|
|
<div class="content">
|
|
<table class="details">
|
|
<tr>
|
|
<th>Datum</th>
|
|
<td>{{ transaction.created_at }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Anwender</th>
|
|
<td>{{ transaction.full_name }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>E-Mail</th>
|
|
<td>{{ transaction.email or "-" }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Abteilung</th>
|
|
<td>{{ transaction.department or "-" }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Medium</th>
|
|
<td>{{ asset_labels[transaction.asset_type] }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>{% if transaction.asset_type == 'pool_vehicle' %}Kennzeichen{% else %}Kennung{% endif %}</th>
|
|
<td>{{ transaction.asset_code }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Bearbeiter</th>
|
|
<td>{{ transaction.handled_by or "-" }}</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<div class="note-box">
|
|
Mit den untenstehenden Unterschriften bestätigen Bearbeiter und Anwender die korrekte {{ action_labels[transaction.action] }} des angegebenen Mediums.
|
|
</div>
|
|
|
|
<div class="signature-grid">
|
|
<div class="signature-box">
|
|
<div class="signature-line">{{ transaction.handled_by or "Bearbeiter" }}</div>
|
|
<div class="signature-date">Datum: {{ transaction.created_at }}</div>
|
|
</div>
|
|
<div class="signature-box">
|
|
<div class="signature-line">{{ transaction.full_name }}</div>
|
|
<div class="signature-date">Datum: {{ transaction.created_at }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<div class="print-actions">
|
|
<a class="button button-primary" href="#" onclick="window.print(); return false;">Drucken</a>
|
|
<a class="button button-secondary" href="{{ url_for('index') }}">Zur Übersicht</a>
|
|
</div>
|
|
</main>
|
|
</body>
|
|
</html>
|