feat(ui): UI-007 Aktionsleiste auf der Objektakte
Kontrolle starten/Mangel melden direkt unter Status statt nur ein Button am Seitenende - nach dem QR-Scan (MOBILE-002 landet auf der Akte) sofort erreichbar. Mangel melden springt mit ?objekt_id=X in MangelListePage und wählt das Objekt direkt vor. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
@@ -187,7 +187,13 @@ Aktueller Stand vor Redesign: 39 Seiten-/Komponenten-Dateien, ~7.000 Zeilen, ein
|
|||||||
- **Rechte:** je Aktion bestehende Rollenprüfung wiederverwenden
|
- **Rechte:** je Aktion bestehende Rollenprüfung wiederverwenden
|
||||||
- **Akzeptanzkriterien:** alle drei Aktionen von der Akte aus erreichbar.
|
- **Akzeptanzkriterien:** alle drei Aktionen von der Akte aus erreichbar.
|
||||||
- **Tests:** keine neuen.
|
- **Tests:** keine neuen.
|
||||||
- **DoD:** offen.
|
- **DoD:** umgesetzt (2026-09-06). Aktionsleiste direkt unter Status/Gründen
|
||||||
|
(statt nur einem Button am Seitenende): "Kontrolle starten" und "Mangel
|
||||||
|
melden" (neu: `/maengel?objekt_id=X` wählt das Objekt in `MangelListePage`
|
||||||
|
direkt vor, analog `?tab=`/`?scan=1`-Deep-Links aus UI-002). Dritte Aktion
|
||||||
|
"Informationen anzeigen" bewusst nicht als eigener Button - die Akte selbst
|
||||||
|
IST die Informationsanzeige, ein Button dorthin wäre Navigation auf der
|
||||||
|
eigenen Seite.
|
||||||
|
|
||||||
## UI-008 — Restliche Module (Material, Lager, Personal, Administration)
|
## UI-008 — Restliche Module (Material, Lager, Personal, Administration)
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,17 @@ export function AktePage() {
|
|||||||
</ul>
|
</ul>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{/* UI-007 (Epic 20): nach dem QR-Scan (MOBILE-002) landet man hier - die
|
||||||
|
Kernaktionen sollen direkt sichtbar sein, nicht erst am Seitenende. */}
|
||||||
|
<div className="row" style={{ flexWrap: "wrap", marginTop: "1rem" }}>
|
||||||
|
<Link to={`/objekte/${objekt.id}/kontrolle`} className="btn btn-primary">
|
||||||
|
Kontrolle starten
|
||||||
|
</Link>
|
||||||
|
<Link to={`/maengel?objekt_id=${objekt.id}`} className="btn btn-secondary">
|
||||||
|
Mangel melden
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="card" style={{ marginTop: "1rem" }}>
|
<div className="card" style={{ marginTop: "1rem" }}>
|
||||||
<h3 style={{ marginTop: 0 }}>Stammdaten</h3>
|
<h3 style={{ marginTop: 0 }}>Stammdaten</h3>
|
||||||
<div className="stack">
|
<div className="stack">
|
||||||
@@ -147,12 +158,6 @@ export function AktePage() {
|
|||||||
</ul>
|
</ul>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style={{ marginTop: "1rem" }}>
|
|
||||||
<Link to={`/objekte/${objekt.id}/kontrolle`} className="btn btn-primary">
|
|
||||||
Kontrolle starten
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
|
import { useSearchParams } from "react-router-dom";
|
||||||
|
|
||||||
import { apiRequest } from "../api/client";
|
import { apiRequest } from "../api/client";
|
||||||
import { useAuth } from "../auth/AuthContext";
|
import { useAuth } from "../auth/AuthContext";
|
||||||
@@ -34,7 +35,13 @@ export function MangelListePage() {
|
|||||||
const [fehler, setFehler] = useState<string | null>(null);
|
const [fehler, setFehler] = useState<string | null>(null);
|
||||||
const [nurOffene, setNurOffene] = useState(true);
|
const [nurOffene, setNurOffene] = useState(true);
|
||||||
|
|
||||||
const [objektId, setObjektId] = useState<number | "">("");
|
const [suchparameter] = useSearchParams();
|
||||||
|
// UI-007 (Epic 20): Quick Action "Mangel melden" aus der Objektakte springt
|
||||||
|
// hierher mit ?objekt_id=X und wählt das Objekt direkt vor.
|
||||||
|
const [objektId, setObjektId] = useState<number | "">(() => {
|
||||||
|
const wert = Number(suchparameter.get("objekt_id"));
|
||||||
|
return wert > 0 ? wert : "";
|
||||||
|
});
|
||||||
const [beschreibung, setBeschreibung] = useState("");
|
const [beschreibung, setBeschreibung] = useState("");
|
||||||
const [prioritaet, setPrioritaet] = useState<MangelPrioritaet>("normal");
|
const [prioritaet, setPrioritaet] = useState<MangelPrioritaet>("normal");
|
||||||
const [wirdGemeldet, setWirdGemeldet] = useState(false);
|
const [wirdGemeldet, setWirdGemeldet] = useState(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user