Files
Scoreboard/web/src/admin/components/PageHeader.vue
T
AskaEth bc8b1ee6c0 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
2026-09-09 19:02:24 +08:00

31 lines
599 B
Vue

<script setup lang="ts">
defineProps<{ title: string; subtitle?: string }>()
</script>
<template>
<header class="mx-page-head page-head">
<div>
<h1 class="mx-page-title">{{ title }}</h1>
<p v-if="subtitle" class="mx-page-sub">{{ subtitle }}</p>
</div>
<div class="page-head-actions">
<slot name="actions" />
</div>
</header>
</template>
<style scoped>
.page-head {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 16px;
flex-wrap: wrap;
}
.page-head-actions {
display: flex;
align-items: center;
gap: 8px;
}
</style>