Produktion: Batch-Gruppierung in allen Status-Reitern; bei aktiver Suche Einzelauftraege statt Batch
This commit is contained in:
@@ -774,7 +774,7 @@ const Board = defineComponent({
|
||||
}
|
||||
|
||||
// Charge-Karte: fasst API-Aufträge (Kunde+Typ+Versandtag+Eingangstag) zusammen.
|
||||
function chargeCard(c) {
|
||||
function chargeCard(c, opts) {
|
||||
const auf = expandedCharges.value.has(c.key);
|
||||
let faelligFarbe = 'var(--background-subdued)';
|
||||
if (c.faellig) {
|
||||
@@ -792,18 +792,27 @@ const Board = defineComponent({
|
||||
c.versandtag ? chip('📅 ' + c.versandtag.charAt(0).toUpperCase() + c.versandtag.slice(1)) : null,
|
||||
c.faellig ? chip('⏰ fällig bis ' + dmY(c.faellig), faelligFarbe) : null,
|
||||
]);
|
||||
const body = auf ? h('div', { style: 'margin-top:12px;display:flex;flex-direction:column;gap:2px;' }, c.orders.map((o) => orderCard(o))) : null;
|
||||
const body = auf ? h('div', { style: 'margin-top:12px;display:flex;flex-direction:column;gap:2px;' }, c.orders.map((o) => orderCard(o, opts))) : null;
|
||||
return h('div', { key: 'c' + c.key, style: CARD + `margin-bottom:14px;border-left:4px solid ${ACCENT};` }, [kopf, body]);
|
||||
}
|
||||
|
||||
// Aufträge einer Ansicht rendern: bei aktiver Suche als EINZELaufträge (damit
|
||||
// man den konkreten Brief/Auftrag findet), sonst API-Aufträge zu Chargen
|
||||
// gebündelt – in allen Status-Reitern gleich.
|
||||
function renderGruppiert(list, opts) {
|
||||
if (suche.value.trim()) return list.map((o) => orderCard(o, opts));
|
||||
const apiO = list.filter((o) => o.source === 'api');
|
||||
const restO = list.filter((o) => o.source !== 'api');
|
||||
return [
|
||||
...bildeChargen(apiO).map((c) => chargeCard(c, opts)),
|
||||
...restO.map((o) => orderCard(o, opts)),
|
||||
];
|
||||
}
|
||||
|
||||
function tabInhalt() {
|
||||
if (tab.value === 'neu') {
|
||||
// API-Aufträge zu Chargen bündeln; alles andere als Einzelkarten.
|
||||
const apiOrders = neueOrders.value.filter((o) => o.source === 'api');
|
||||
const restOrders = neueOrders.value.filter((o) => o.source !== 'api');
|
||||
const items = [
|
||||
...bildeChargen(apiOrders).map(chargeCard),
|
||||
...restOrders.map((o) => orderCard(o)),
|
||||
...renderGruppiert(neueOrders.value),
|
||||
...neueRequests.value.map(requestCard),
|
||||
];
|
||||
return items.length ? items : subdued('Nichts Neues.');
|
||||
@@ -853,20 +862,20 @@ const Board = defineComponent({
|
||||
}
|
||||
if (tab.value === 'druck') {
|
||||
const list = ordersByStatus('im_druck');
|
||||
return list.length ? list.map((o) => orderCard(o, { badges: true })) : subdued('Nichts im Druck.');
|
||||
return list.length ? renderGruppiert(list, { badges: true }) : subdued('Nichts im Druck.');
|
||||
}
|
||||
if (tab.value === 'versendet') {
|
||||
const list = versendetAktiv();
|
||||
return list.length ? list.map((o) => orderCard(o)) : subdued('Nichts (kürzlich) versendet.');
|
||||
return list.length ? renderGruppiert(list) : subdued('Nichts (kürzlich) versendet.');
|
||||
}
|
||||
if (tab.value === 'archiv') {
|
||||
const list = archivListe();
|
||||
return list.length ? list.map((o) => orderCard(o)) : subdued('Archiv leer.');
|
||||
return list.length ? renderGruppiert(list) : subdued('Archiv leer.');
|
||||
}
|
||||
const map = { kuvertierung: 'kuvertieren', versandfertig: 'versandfertig' };
|
||||
const st = map[tab.value];
|
||||
const list = ordersByStatus(st);
|
||||
return list.length ? list.map((o) => orderCard(o, { badges: st === 'kuvertieren' })) : subdued('Leer.');
|
||||
return list.length ? renderGruppiert(list, { badges: st === 'kuvertieren' }) : subdued('Leer.');
|
||||
}
|
||||
|
||||
// ── Modale rendern ──────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user