lct-55: ошибка адреса и сообщение в 112
This commit is contained in:
parent
4623c83927
commit
e2d3c56576
14 changed files with 267 additions and 7 deletions
|
|
@ -103,6 +103,8 @@ export function Debrief({ report, big = false }: { report: SessionReport; big?:
|
|||
{card.address ? ` · ${card.address}` : ""}</summary>
|
||||
{card.managed_service && <p><strong>Ответственная служба:</strong> {card.managed_service}</p>}
|
||||
<p><strong>Ответ диспетчера:</strong> {card.reply_text || "не внесён"}</p>
|
||||
{(card.actions ?? []).filter((action) => action.type === "card.error_report_112").map((action, actionIndex) =>
|
||||
<p key={`report-112-${actionIndex}`}><strong>Сообщение об ошибке в 112:</strong> {String(action.text ?? "")}</p>)}
|
||||
{card.metrics.some((metric) => !metric.passed || (metric.credit != null && metric.credit < 1)) && <ul>
|
||||
{card.metrics.filter((metric) => !metric.passed || (metric.credit != null && metric.credit < 1)).map((metric) =>
|
||||
<li key={metric.key} className={metric.passed ? "ref" : "state-violated"}>
|
||||
|
|
|
|||
|
|
@ -242,6 +242,7 @@ export function Dds() {
|
|||
const [crewReplyText, setCrewReplyText] = useState("");
|
||||
const [adjacentTarget, setAdjacentTarget] = useState("");
|
||||
const [adjacentText, setAdjacentText] = useState("");
|
||||
const [report112Text, setReport112Text] = useState("");
|
||||
const [error, setError] = useState("");
|
||||
const [ended, setEnded] = useState(false);
|
||||
const [paused, setPaused] = useState(false);
|
||||
|
|
@ -295,6 +296,7 @@ export function Dds() {
|
|||
setCrewReplyText("");
|
||||
setAdjacentTarget("");
|
||||
setAdjacentText("");
|
||||
setReport112Text("");
|
||||
setZone(null);
|
||||
setScoreReady(false);
|
||||
setView(openCardAfterSwitch.current ? "card" : "registry");
|
||||
|
|
@ -719,6 +721,20 @@ export function Dds() {
|
|||
{adjacentLines.map((line, index) => <p key={`${line.at}-${index}`}><small>{time(line.at)} · {line.speaker === "crew" ? line.crew : "Диспетчер ДДС"}</small><br />{line.text}</p>)}
|
||||
</div>}
|
||||
</>}
|
||||
{station?.card_error_discovered && <div className="dds-phone-form">
|
||||
<h3>Сообщение об ошибке карточки в 112</h3>
|
||||
{station.report_112_text ? <p>Сообщено в 112: {station.report_112_text}</p> : <>
|
||||
<p>После доклада бригады сообщите оператору 112, что указано в карточке и что установлено на месте.</p>
|
||||
<label htmlFor="dds-report-112">Содержание сообщения</label>
|
||||
<textarea id="dds-report-112" rows={3} value={report112Text}
|
||||
disabled={!isConnected || ended || paused}
|
||||
onChange={(event) => setReport112Text(event.target.value)} />
|
||||
<button type="button" disabled={!cardId || !isConnected || ended || paused || report112Text.trim().length < 10}
|
||||
onClick={() => send({ type: "card.error_report_112", card_id: cardId, text: report112Text })}>
|
||||
Зафиксировать сообщение в 112
|
||||
</button>
|
||||
</>}
|
||||
</div>}
|
||||
</section>}
|
||||
{pane === "reply" && <section className="dds-panel dds-reply">
|
||||
<div className="dds-panel-title"><h2>Рабочая заметка диспетчера</h2>
|
||||
|
|
|
|||
|
|
@ -393,6 +393,9 @@ export function Instructor() {
|
|||
<small>{report.text}</small>
|
||||
</p>)}
|
||||
</div> : null}
|
||||
{item.dds_snapshot.report_112_text && <p className="active-session-log">
|
||||
<strong>Сообщено в 112 об ошибке карточки:</strong> {item.dds_snapshot.report_112_text}
|
||||
</p>}
|
||||
</details>}</td>
|
||||
<td>{item.exercise === "dds" ? `Открытых карточек: ${item.dds_open_cards}` : "—"}</td>
|
||||
<td className={item.dds_overdue_cards ? "state-violated" : "state-ok"}>
|
||||
|
|
|
|||
|
|
@ -108,6 +108,13 @@ export interface CardBriefing {
|
|||
handoff_to_dds?: boolean;
|
||||
}
|
||||
|
||||
/** Сообщение диспетчера в 112 после доклада бригады с места. */
|
||||
export interface CardErrorReport112 {
|
||||
type: "card.error_report_112";
|
||||
card_id: string;
|
||||
text: string;
|
||||
}
|
||||
|
||||
export interface CardNext {
|
||||
type: "card.next";
|
||||
card_id: string;
|
||||
|
|
@ -719,6 +726,8 @@ export interface StationSnapshot {
|
|||
phone_reports?: Array<PhoneReportRecord>;
|
||||
phone_lines?: Array<PhoneLineRecord>;
|
||||
phone_pending?: PhoneCallPending | null;
|
||||
card_error_discovered?: boolean;
|
||||
report_112_text?: string | null;
|
||||
card_id?: string | null;
|
||||
card_index?: number;
|
||||
card_total?: number;
|
||||
|
|
@ -847,7 +856,7 @@ export type InstructorToServer = ScenarioStart | DirectorInject | ReferencePlay
|
|||
|
||||
export type ServerToStation = CardReceived | StationState | PhoneLine | PhoneReport | TimerTick | SessionEnded | ScoreReady | CommandAck | SessionPaused | ErrorEvent;
|
||||
|
||||
export type StationToServer = CardAck | CardBounce | ServiceStatusSet | CrewSelect | PhoneDial | PhoneBrief | PhoneCheck | PhoneHangup | PhoneReply | AdjacentDial | StationFinish | CardReply | CardNext | CardOpen | ZoneDecision | CrewDispatched | CrewArrived;
|
||||
export type StationToServer = CardAck | CardBounce | ServiceStatusSet | CrewSelect | PhoneDial | PhoneBrief | PhoneCheck | PhoneHangup | PhoneReply | AdjacentDial | StationFinish | CardReply | CardErrorReport112 | CardNext | CardOpen | ZoneDecision | CrewDispatched | CrewArrived;
|
||||
|
||||
export type EventName =
|
||||
"adjacent.dial"
|
||||
|
|
@ -864,6 +873,7 @@ export type EventName =
|
|||
| "card.ack"
|
||||
| "card.bounce"
|
||||
| "card.briefing"
|
||||
| "card.error_report_112"
|
||||
| "card.next"
|
||||
| "card.open"
|
||||
| "card.received"
|
||||
|
|
|
|||
Loading…
Reference in a new issue