feat(web): 前端全局重构专业量化后台(深色+红涨绿跌+设计系统)

- 设计系统 styles/tokens.css: 深色token(#0d1117底/#161b22卡片) + 红涨绿跌
  (--up#f85149/--down#3fb950) + 品牌蓝#1890ff + 间距/圆角/阴影/mono
- Element Plus深色(element-dark.css + dark/css-vars)+reset
- 删Vite脚手架残留(style.css重写/HelloWorld/hero/vite/vue资源)
- Layout重构(深色专业侧边)+Login+图表统一深色(useChart/echartsDark)
- 新建paper/Live.vue实走监控(step状态/净值/持仓/今日信号10s轮询)
- 业务页套.page头, 保留所有功能/路由/api
- 验证: vue-tsc --noEmit  + npm run build 
This commit is contained in:
2026-07-09 23:02:31 +08:00
parent 252deb5ec7
commit 18d4ba2013
29 changed files with 987 additions and 574 deletions
+10 -5
View File
@@ -55,10 +55,14 @@ async function onSubmit(): Promise<void> {
</script>
<template>
<el-card v-loading="loading">
<template #header>
<h3>新建因子分析</h3>
</template>
<div class="page">
<div class="page-head">
<div>
<h2 class="page-title">因子分析</h2>
<p class="page-subtitle">IC 横截面分析2 标的· 生成 tears 报告</p>
</div>
</div>
<el-card v-loading="loading">
<el-form label-width="140px">
<el-form-item label="因子">
<el-select v-model="form.factor_names" multiple placeholder="选择因子" style="width: 380px">
@@ -78,5 +82,6 @@ async function onSubmit(): Promise<void> {
<el-button type="primary" :loading="submitting" @click="onSubmit">提交分析</el-button>
</el-form-item>
</el-form>
</el-card>
</el-card>
</div>
</template>
+10 -8
View File
@@ -53,11 +53,15 @@ onMounted(async () => {
</script>
<template>
<div v-loading="loading">
<div v-loading="loading" class="page">
<div class="page-head">
<div>
<h2 class="page-title">因子分析结果 <span class="muted">{{ taskId }}</span></h2>
<p class="page-subtitle">IC 统计 / tears 报告</p>
</div>
</div>
<el-card>
<template #header>
<h3>IC 统计</h3>
</template>
<template #header><span class="section-title">IC 统计</span></template>
<el-table :data="rows" stripe size="small" empty-text=" IC 数据">
<el-table-column prop="factor" label="因子" width="120" />
<el-table-column prop="period" label="周期" width="80" />
@@ -79,10 +83,8 @@ onMounted(async () => {
</el-table>
</el-card>
<el-card v-for="f in factors" :key="f" style="margin-top: 16px">
<template #header>
<h3>tears 报告 {{ f }}</h3>
</template>
<el-card v-for="f in factors" :key="f">
<template #header><span class="section-title">tears 报告 {{ f }}</span></template>
<iframe :src="reportUrl(taskId, f)" style="width: 100%; height: 600px; border: 0" />
</el-card>
</div>