feat: WC2026 赛事 seed、生产上线初始化脚本与目录归档

重构 seed 为 WC2026 72 场小组赛与 48 强优胜盘;新增 production 模式仅保留 admin 与赛事示例;提供 prod-init-db 全量重置脚本;管理端 i18n 分包与赛事归档能力。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-12 18:17:00 +08:00
parent 8f14e85ebd
commit e7e938f261
94 changed files with 12332 additions and 976 deletions

View File

@@ -1,23 +1,38 @@
<script setup lang="ts">
import { computed } from 'vue';
import { computed, shallowRef, watch } from 'vue';
import { RouterView } from 'vue-router';
import { ElConfigProvider } from 'element-plus';
import zhCn from 'element-plus/es/locale/lang/zh-cn';
import en from 'element-plus/es/locale/lang/en';
import ms from 'element-plus/es/locale/lang/ms';
import type { Language } from 'element-plus/es/locale';
import { useAdminLocale } from './composables/useAdminLocale';
const { locale } = useAdminLocale();
const elLocale = shallowRef<Language | undefined>(undefined);
const elLocale = computed(() => {
if (locale.value.startsWith('zh')) return zhCn;
if (locale.value.startsWith('ms')) return ms;
return en;
});
async function loadElLocale(tag: string) {
if (tag.startsWith('zh')) {
elLocale.value = (await import('element-plus/es/locale/lang/zh-cn')).default;
return;
}
if (tag.startsWith('ms')) {
elLocale.value = (await import('element-plus/es/locale/lang/ms')).default;
return;
}
elLocale.value = (await import('element-plus/es/locale/lang/en')).default;
}
watch(
() => locale.value,
(tag) => {
void loadElLocale(tag);
},
{ immediate: true },
);
const configLocale = computed(() => elLocale.value);
</script>
<template>
<ElConfigProvider :locale="elLocale">
<ElConfigProvider :locale="configLocale">
<RouterView />
</ElConfigProvider>
</template>