feat: M3-M7 全模块落地 + 集成接线

- M3 认证/权限/审计/限流 + 全部 REST 接口
- M4 管理面板(MIUIx + 成绩录入/积分榜下钻/大屏控制)
- M5a 大屏页面(六页 + 明细覆盖层 + 缩放适配)
- M6 WebSocket 实时同步中心
- M7 xlsx 导出 + 赛事包 zip + 备份
- 规则包 YAML 导入导出(差异预览)
- 字体 vendor 子集化(4 套 x2 字重)
- 集成:realtime/export/rules 接入 main+httpapi;backup 子命令
- 修复:中间件包装 ResponseWriter 丢失 Hijacker,导致 WS 握手 501
This commit is contained in:
AskaEth committed 2026-09-09 19:02:24 +08:00
1 parent d0e3b93e76
commit bc8b1ee6c0
145 files changed
+25159 -321

No files matched your search

+105
View File
@@ -0,0 +1,105 @@
/*
* MIUIx 样式入口(管理端专用)。
*
* vendor/miuix-console 是现场离线环境的唯一来源,禁止 CDN。
* 这里按「tokens → base → 组件」的顺序引入,保证组件里的 var() 都能解析。
*/
@import '../../../../vendor/miuix-console/core/tokens.css';
@import '../../../../vendor/miuix-console/core/base.css';
@import '../../../../vendor/miuix-console/core/animations.css';
@import '../../../../vendor/miuix-console/components/layout.css';
@import '../../../../vendor/miuix-console/components/navigation.css';
@import '../../../../vendor/miuix-console/components/button.css';
@import '../../../../vendor/miuix-console/components/card.css';
@import '../../../../vendor/miuix-console/components/input.css';
@import '../../../../vendor/miuix-console/components/select.css';
@import '../../../../vendor/miuix-console/components/table.css';
@import '../../../../vendor/miuix-console/components/badge.css';
@import '../../../../vendor/miuix-console/components/tag.css';
@import '../../../../vendor/miuix-console/components/tabs.css';
@import '../../../../vendor/miuix-console/components/toast.css';
@import '../../../../vendor/miuix-console/components/modal.css';
@import '../../../../vendor/miuix-console/components/stat.css';
@import '../../../../vendor/miuix-console/components/progress.css';
@import '../../../../vendor/miuix-console/components/switch.css';
@import '../../../../vendor/miuix-console/components/empty.css';
@import '../../../../vendor/miuix-console/components/tooltip.css';
@import '../../../../vendor/miuix-console/components/pagination.css';
@import '../../../../vendor/miuix-console/components/checkbox.css';
@import '../../../../vendor/miuix-console/components/drawer.css';
@import '../../../../vendor/miuix-console/components/popover.css';
@import '../../../../vendor/miuix-console/components/avatar.css';
@import '../../../../vendor/miuix-console/components/accordion.css';
@import '../../../../vendor/miuix-console/components/activity.css';
/*
* 上游 tokens.css 只定义了 --mx-error,但 button/input/badge 等组件直接引用
* --mx-red / --mx-accent。不改 vendor 文件(保持可整目录覆盖升级),在这里补齐别名。
*/
:root,
[data-theme='dark'] {
--mx-red: var(--mx-error);
--mx-accent: var(--mx-primary);
}
/*
* 管理端不需要 100dvh 的自适应 App Shell,页面滚动交给 .mx-desktop-main,
* 这里只保证 body 底色与 MIUIx 令牌一致(shared/base.css 的深蓝底不适用管理端)。
*/
body {
background: var(--mx-bg);
color: var(--mx-text);
font-family: var(--mx-font);
}
/* 表格内嵌输入框:用 MIUIx 的输入外观,但去掉外层 40px 高度限制,避免行高被撑爆。 */
.mx-cell-input {
width: 100%;
height: 34px;
padding: 0 10px;
background: var(--mx-s3);
border: 1px solid transparent;
border-radius: var(--mx-r-xs);
color: var(--mx-text);
font-size: 13px;
font-family: var(--mx-font);
transition:
border-color var(--mx-d1) var(--mx-ease),
box-shadow var(--mx-d1) var(--mx-ease);
}
.mx-cell-input:focus {
border-color: var(--mx-primary);
box-shadow: 0 0 0 3px var(--mx-primary-glow);
outline: none;
}
.mx-cell-input.is-invalid {
border-color: var(--mx-error);
}
.mx-cell-input.is-dirty {
border-color: var(--mx-amber);
}
.mx-cell-input.mono {
font-family: var(--mx-mono);
}
/* 紧凑表格里的单元格不再响应 hover 左推,否则录入时会跳。 */
.mx-table-entry tbody tr:hover td {
padding-left: 16px;
}
.mx-table-entry td {
white-space: nowrap;
vertical-align: middle;
}
.mx-table-entry tbody tr.is-dirty {
background: rgba(251, 191, 36, 0.06);
}
.mx-table-entry tbody tr.is-focus {
background: var(--mx-primary-glow);
}
/* 只读访客态:禁用写操作控件。 */
.is-readonly .mx-btn-primary,
.is-readonly .mx-btn-danger {
opacity: 0.45;
pointer-events: none;
}