HEL-269: 完成月结锁账、撤演示数据与代码收尾

锁账后写保护与闭期补录留痕;重开须审批并按版本链再结;列表/导出改走真实 API。

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
总工
2026-08-30 21:42:22 +08:00
co-authored by Cursor multica-agent
parent f5e0915f63
commit e5e326514d
26 changed files with 3455 additions and 487 deletions
+114
View File
@@ -1177,3 +1177,117 @@ body[data-portal="company"] .side-nav a[data-view="transfers"].active svg {
border-top: 1px solid var(--border);
}
}
/* ─── 月结 / 重开 / 审计(HEL-268,仅 5 条组件规则) ───────────── */
.btn-warn {
background: var(--warn);
border-color: var(--warn);
color: var(--surface);
}
.btn-warn:hover {
background: color-mix(in oklch, var(--warn) 88%, black);
border-color: color-mix(in oklch, var(--warn) 88%, black);
}
.btn-warn[disabled] {
opacity: 1;
background: var(--fg-soft);
border-color: var(--border);
color: var(--muted);
}
.pill-lock {
background: var(--fg-soft);
color: var(--muted);
height: 23px;
}
.pill-lock::before {
width: 11px;
height: 11px;
border-radius: 0;
background-color: currentColor;
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Crect x='5' y='11' width='14' height='10' rx='1.5'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E") center / contain no-repeat;
}
.tl-cell.locked { background: var(--fg-soft); }
.tl-cell.locked .tl-state { color: var(--muted); }
.tl-cell.locked .tl-state::before {
content: "";
width: 11px;
height: 11px;
background-color: currentColor;
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Crect x='5' y='11' width='14' height='10' rx='1.5'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E") center / contain no-repeat;
}
.tl-cell.reopened { background: var(--warn-soft); }
.tl-cell.reopened .tl-state { color: color-mix(in oklch, var(--warn) 80%, black); }
.tl-cell.failed { background: var(--danger-soft); }
.tl-cell.failed .tl-state { color: var(--danger); }
.diff-grid {
display: grid;
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
gap: 10px 12px;
align-items: start;
}
.diff-grid .diff-row {
display: contents;
}
.diff-grid .diff-label {
grid-column: 1 / -1;
font-size: 12px;
color: var(--muted);
}
.diff-grid .diff-before {
color: var(--muted);
text-decoration: line-through;
font-family: var(--font-mono);
font-size: 13px;
}
.diff-grid .diff-arrow {
color: var(--muted);
align-self: center;
}
.diff-grid .diff-after {
color: color-mix(in oklch, var(--warn) 78%, black);
font-family: var(--font-mono);
font-size: 13px;
}
.diff-grid .diff-row.changed .diff-before,
.diff-grid .diff-row.changed .diff-after,
.diff-grid .diff-row.changed .diff-arrow {
box-shadow: inset 3px 0 0 var(--warn);
padding-left: 8px;
}
@media (max-width: 860px) {
.diff-grid { grid-template-columns: minmax(0, 1fr); }
.diff-grid .diff-arrow { transform: rotate(90deg); justify-self: center; }
}
.empty-icon {
width: 48px;
height: 48px;
margin: 0 auto 12px;
color: var(--border);
display: block;
}
.closing-panel.is-processing {
pointer-events: none;
opacity: 0.55;
}
.closing-kv {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
margin-top: 16px;
padding-top: 14px;
border-top: 1px solid var(--border);
}
.closing-kv .ck-label { font-size: 12px; color: var(--muted); }
.closing-kv .ck-value { font-family: var(--font-mono); font-size: 13px; margin-top: 4px; }
.lock-view-only { color: var(--muted); font-size: 12px; }
.audit-event-cards { display: none; }
@media (max-width: 460px) {
.closing-kv { grid-template-columns: 1fr 1fr; }
[data-page="period-audit"] .table-wrap { display: none; }
.audit-event-cards { display: grid; gap: 10px; }
}