verce-vue-test 0.0.13 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verce-vue-test",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -64,7 +64,7 @@ const router = createRouter({
64
64
  path: '/executive-management',
65
65
  name: 'executiveManagement',
66
66
  meta: { fullscreen: true },
67
- component: () => import('../views/ExecutiveManagementView.vue'),
67
+ component: () => import('../views/ExecutiveManagementView/index.vue'),
68
68
  },
69
69
  ],
70
70
  })
@@ -1,9 +1,9 @@
1
1
  <script setup lang="ts">
2
- import ExecutiveAccountPanel from '@/components/executive/ExecutiveAccountPanel.vue'
3
- import ExecutiveReliablePanel from '@/components/executive/ExecutiveReliablePanel.vue'
4
- import ExecutiveWarningOverview from '@/components/executive/ExecutiveWarningOverview.vue'
5
- import ExecutiveWarningTablePanel from '@/components/executive/ExecutiveWarningTablePanel.vue'
6
- import '@/assets/executive-management.css'
2
+ import ExecutiveAccountPanel from './components/ExecutiveAccountPanel.vue'
3
+ import ExecutiveReliablePanel from './components/ExecutiveReliablePanel.vue'
4
+ import ExecutiveWarningOverview from './components/ExecutiveWarningOverview.vue'
5
+ import ExecutiveWarningTablePanel from './components/ExecutiveWarningTablePanel.vue'
6
+ import './executive-management.css'
7
7
  </script>
8
8
 
9
9
  <template>
@@ -6,6 +6,10 @@
6
6
  * 展示当前登录用户的待处理任务概览(统计面板),
7
7
  * 并提供快速进入各业务操作(预报填报、修改、复核确认、异常反馈)的入口。
8
8
  *
9
+ * 页面结构:
10
+ * - 统计面板:五等分统计项,匹配设计图的分隔线和数字排版
11
+ * - 快速入口:四张业务卡片,匹配设计图的图标、标题、描述和按钮
12
+ *
9
13
  * 数据来源:
10
14
  * 目前 taskStats 和 quickEntries 为本地静态数据,
11
15
  * 后续替换为接口请求时只需改动数据源,模板无需修改。
@@ -17,7 +21,7 @@ import {
17
21
  CircleCheckFilled, // 复核确认:圆圈对勾
18
22
  Document, // 预报填报:文档
19
23
  RefreshRight, // 修改:向右刷新箭头
20
- WarningFilled, // 异常反馈:实心警告三角
24
+ WarnTriangleFilled, // 异常反馈:实心警告三角
21
25
  } from '@element-plus/icons-vue'
22
26
 
23
27
  // ---- 类型定义 ----
@@ -73,7 +77,7 @@ const taskStats: TaskStat[] = [
73
77
  { label: '预报填报', value: 5, unit: '条', tone: 'blue', icon: Document },
74
78
  { label: '修改', value: 3, unit: '条', tone: 'green', icon: RefreshRight },
75
79
  { label: '复核确认', value: 2, unit: '条', tone: 'orange', icon: CircleCheckFilled },
76
- { label: '异常反馈', value: 2, unit: '条', tone: 'red', icon: WarningFilled },
80
+ { label: '异常反馈', value: 2, unit: '条', tone: 'red', icon: WarnTriangleFilled },
77
81
  ]
78
82
 
79
83
  /**
@@ -85,50 +89,48 @@ const quickEntries: EntryAction[] = [
85
89
  { title: '预报填报', desc: '填写头寸预报数据', button: '立即填报', tone: 'blue', icon: Document },
86
90
  { title: '修改', desc: '修改已填报预报数据', button: '立即处理', tone: 'green', icon: RefreshRight },
87
91
  { title: '复核确认', desc: '复核并确认预报数据', button: '立即处理', tone: 'orange', icon: CircleCheckFilled },
88
- { title: '异常反馈', desc: '处理预报异常反馈', button: '立即处理', tone: 'red', icon: WarningFilled },
92
+ { title: '异常反馈', desc: '处理预报异常反馈', button: '立即处理', tone: 'red', icon: WarnTriangleFilled },
89
93
  ]
90
94
  </script>
91
95
 
92
96
  <!--
93
97
  模板结构说明
94
98
  ===========
95
- <main> 页面根容器,应用全屏背景和设计变量
96
- <section.execution-content> ─ 内容区,限制最大宽度并居中
97
- <div.intro-block> 标题 + 说明文字
98
- <section.stats-panel> 待处理任务统计面板(5 列网格)
99
- <article.stat-item> 单条统计项,循环渲染 taskStats
100
- <div.stat-icon> ─ 业务图标(第一项无图标,v-if 控制)
101
- <div.stat-copy> ─ 标签 + 数值 + 单位
102
- <section.quick-section> ─ 快速入口区
103
- <div.entry-grid> ─ 入口卡片网格(4 列)
104
- <article.entry-card> ─ 单张入口卡片,循环渲染 quickEntries
105
- <div.entry-icon> ─ 卡片图标
106
- <h3> ─ 卡片标题
107
- <p> ─ 业务描述
108
- <el-button> ─ 操作按钮
99
+ <main> 页面根容器,承载背景和设计变量
100
+ <section.execution-content>─ 内容区,限制最大宽度并居中
101
+ <div.intro-block> 任务标题和说明
102
+ <section.stats-panel> 五列统计面板
103
+ <section.quick-section> 四列快速入口
109
104
 
110
105
  无障碍说明:
111
106
  - 统计面板和快速入口区均使用 aria-label 标注用途
112
107
  - 图标容器使用 aria-hidden="true",避免屏幕阅读器重复朗读
113
108
  -->
114
109
  <template>
115
- <!-- 页面根容器:.forecast-execution-page 承载背景和 CSS 变量 -->
110
+ <!-- 页面根容器:承载背景渐变和 CSS 设计变量 -->
116
111
  <main class="forecast-execution-page">
117
-
118
- <!-- 内容区:限制最大宽度 1428px,水平居中 -->
112
+ <!-- 内容区:max-width 1428px,水平居中 -->
119
113
  <section class="execution-content">
120
114
 
121
- <!-- 任务简介块:页面标题和引导文案 -->
115
+ <!--
116
+ 任务简介块
117
+ el-text 替代原生 h2/p,统一使用 Element Plus 排版体系:
118
+ - type="primary" 显示主题色标题
119
+ - size="large" 设置 20px 字号
120
+ - tag="h2" 渲染为 h2 标签,保持语义
121
+ -->
122
122
  <div class="intro-block">
123
- <h2>待处理任务</h2>
124
- <p>您有待处理的业务任务,请及时处理</p>
123
+ <el-text tag="h2" size="large" class="page-title">待处理任务</el-text>
124
+ <p class="intro-desc">您有待处理的业务任务,请及时处理</p>
125
125
  </div>
126
126
 
127
127
  <!--
128
128
  待处理任务统计面板
129
- - 使用 grid 5 列布局,每列展示一个统计项
130
- - v-for 遍历 taskStats,:key label 保证唯一性
131
- - :class 动态绑定色调类(is-blue 等)和汇总标记(is-total
129
+ 布局方案:
130
+ - el-row + el-col 替代原 CSS Grid 5 列布局
131
+ - :gutter="20" 在列间添加 20px 间距(列两侧各 10px padding
132
+ - 桌面: span=5(约 5 列) 平板: span=12(2 列) 手机: span=24(1 列)
133
+ - el-statistic 替代手写数字/标签,自带数字排版
132
134
  -->
133
135
  <section class="stats-panel" aria-label="待处理任务统计">
134
136
  <article
@@ -137,34 +139,23 @@ const quickEntries: EntryAction[] = [
137
139
  class="stat-item"
138
140
  :class="[`is-${item.tone}`, { 'is-total': index === 0 }]"
139
141
  >
140
- <!--
141
- 统计图标
142
- - v-if="item.icon":第一项"全部待处理"无图标,此处留空
143
- - aria-hidden="true":装饰性图标,屏幕阅读器忽略
144
- - <component :is>:动态渲染 Element Plus 图标组件
145
- -->
146
- <div v-if="item.icon" class="stat-icon" aria-hidden="true">
147
- <el-icon><component :is="item.icon" /></el-icon>
142
+ <div v-if="item.icon" class="stat-heading">
143
+ <div class="stat-icon" aria-hidden="true">
144
+ <el-icon :size="46"><component :is="item.icon" /></el-icon>
145
+ </div>
146
+ <span class="stat-label">{{ item.label }}</span>
148
147
  </div>
148
+ <span v-else class="stat-label stat-total-label">{{ item.label }}</span>
149
149
 
150
- <!-- 统计文案区:标签 + 数值 + 单位 -->
151
- <div class="stat-copy">
152
- <h3>{{ item.label }}</h3>
153
- <p>
154
- <strong>{{ item.value }}</strong>
155
- <span>{{ item.unit }}</span>
156
- </p>
150
+ <div class="stat-number-row">
151
+ <strong class="stat-number">{{ item.value }}</strong>
152
+ <span class="stat-unit">{{ item.unit }}</span>
157
153
  </div>
158
154
  </article>
159
155
  </section>
160
156
 
161
- <!--
162
- 快速入口区
163
- - grid 4 列布局,每列一张业务入口卡片
164
- - 与统计面板色调保持一致,便于用户建立视觉关联
165
- -->
166
157
  <section class="quick-section" aria-label="快速进入">
167
- <h2>快速进入</h2>
158
+ <h2 class="section-title">快速进入</h2>
168
159
 
169
160
  <div class="entry-grid">
170
161
  <article
@@ -173,23 +164,12 @@ const quickEntries: EntryAction[] = [
173
164
  class="entry-card"
174
165
  :class="`is-${entry.tone}`"
175
166
  >
176
- <!-- 卡片图标:纯装饰,屏幕阅读器忽略 -->
177
167
  <div class="entry-icon" aria-hidden="true">
178
- <el-icon><component :is="entry.icon" /></el-icon>
168
+ <el-icon :size="58"><component :is="entry.icon" /></el-icon>
179
169
  </div>
180
-
181
- <!-- 卡片内容:标题 + 业务描述 -->
182
- <h3>{{ entry.title }}</h3>
183
- <p>{{ entry.desc }}</p>
184
-
185
- <!--
186
- 操作按钮
187
- - type="primary" 使用 Element Plus 主色(实际颜色由 CSS --tone 覆盖)
188
- - 点击事件待后续接入路由跳转或业务逻辑
189
- -->
190
- <el-button class="entry-button" type="primary">
191
- {{ entry.button }}
192
- </el-button>
170
+ <h3 class="entry-title">{{ entry.title }}</h3>
171
+ <p class="entry-desc">{{ entry.desc }}</p>
172
+ <button class="entry-button" type="button">{{ entry.button }}</button>
193
173
  </article>
194
174
  </div>
195
175
  </section>
@@ -201,16 +181,13 @@ const quickEntries: EntryAction[] = [
201
181
  <style scoped>
202
182
  /* ============================================================
203
183
  头寸预报 - 执行页面样式
204
- 结构:页面根容器内容区 → 任务简介 → 统计面板 → 快速入口
205
- 色彩系统:通过 --tone 变量驱动单个条目/卡片的强调色,
206
- 由 .is-blue / .is-green / .is-orange / .is-red 类设置。
207
- 响应式断点:1180px(平板/小桌面)、720px(手机)
184
+ 结构:内容区 → 任务简介 → 统计面板 → 快速入口
185
+ 色彩系统:通过 --tone 变量驱动图标、数字和按钮的强调色。
208
186
  ============================================================ */
209
187
 
210
188
  /* ---- 页面根容器 ----
211
189
  定义全局设计变量(调色板)、背景渐变和基础排版。
212
- overflow-x: hidden 防止水平滚动条出现;
213
- overflow-y: auto 确保内容超出视口时可纵向滚动。 */
190
+ overflow-x: hidden 防止 el-row 负 margin 导致水平滚动条。 */
214
191
  .forecast-execution-page {
215
192
  --ink: #0a1020; /* 主文字色:深蓝黑,用于标题和正文 */
216
193
  --muted: #4a5568; /* 次要文字色:灰色,用于描述性文字 */
@@ -233,46 +210,57 @@ const quickEntries: EntryAction[] = [
233
210
 
234
211
  /* ---- 内容区 ----
235
212
  max-width 限制最大宽度,margin: 0 auto 实现水平居中;
236
- 上下内边距拉开与页面边缘的距离。 */
213
+ 上下内边距拉开与页面边缘的距离。
214
+ el-col 自带 padding(由 el-row gutter 控制),无需额外 gap。 */
237
215
  .execution-content {
238
- max-width: 1428px;
216
+ max-width: 1536px;
239
217
  margin: 0 auto;
240
- padding: 36px 58px 42px;
218
+ padding: 36px 58px 36px;
241
219
  }
242
220
 
243
221
  /* ---- 任务简介块 ----
244
- 包含标题和说明文字,与下方统计面板保持 24px 间距。
245
- 使用 CSS nesting,h2 和 p 的选择器均相对 .intro-block 声明。 */
222
+ el-text 替代了原生 h2/p,仅保留间距和标题字重。 */
246
223
  .intro-block {
247
- margin-bottom: 24px;
224
+ margin-bottom: 28px;
225
+ }
248
226
 
249
- /* h2 同时作用于简介区标题和快速入口区标题(统一字号/字重) */
250
- & h2,
251
- .quick-section h2 {
252
- margin: 0;
253
- font-size: 24px;
254
- font-weight: 800; /* 800 = Extra Bold,视觉上足够醒目 */
255
- }
227
+ /* 页面标题:el-text 渲染为 h2,额外设置 Extra Bold 字重 */
228
+ .page-title {
229
+ display: block;
230
+ margin-bottom: 18px;
231
+ color: #091225;
232
+ font-size: 30px;
233
+ line-height: 1;
234
+ font-weight: 800 !important;
235
+ }
256
236
 
257
- /* 说明段落:使用 --muted 色降低视觉优先级 */
258
- & p {
259
- margin-top: 14px;
260
- color: var(--muted);
261
- font-size: 16px;
262
- line-height: 1.45;
263
- }
237
+ .intro-desc {
238
+ margin: 0;
239
+ color: #3f4a5c;
240
+ font-size: 18px;
241
+ line-height: 1.4;
264
242
  }
265
243
 
266
- /* ---- 统计面板(待处理任务统计) ----
267
- 5 列等宽网格布局,每列展示一个统计项。
268
- padding-block: 30px 是 padding-top/bottom 的逻辑属性简写;
269
- 半透明白色背景 + 阴影制造浮层质感。 */
244
+ /* 区块标题:快速入口标题,同样 Extra Bold */
245
+ .section-title {
246
+ display: block;
247
+ margin-bottom: 24px;
248
+ color: #070b13;
249
+ font-size: 26px;
250
+ line-height: 1;
251
+ font-weight: 800 !important;
252
+ }
253
+
254
+ /* ---- 统计面板 ----
255
+ 保留面板容器样式(背景、边框、阴影),内部栅格由 el-row 接管。
256
+ overflow-x: hidden 包含 el-row 的负 margin,防止溢出。 */
270
257
  .stats-panel {
258
+ min-height: 188px;
271
259
  display: grid;
272
260
  grid-template-columns: repeat(5, minmax(0, 1fr));
273
- min-height: 188px;
274
- margin-bottom: 34px;
275
- padding-block: 30px;
261
+ align-items: center;
262
+ margin-bottom: 44px;
263
+ padding: 30px 0;
276
264
  border: 1px solid var(--line);
277
265
  border-radius: 10px;
278
266
  background: rgba(255, 255, 255, .9);
@@ -280,134 +268,95 @@ const quickEntries: EntryAction[] = [
280
268
  }
281
269
 
282
270
  /* ---- 单个统计项 ----
283
- flex 布局使图标和文案水平对齐;
284
- min-width: 0 防止 flex 子项溢出网格单元格;
285
- & + & 是 CSS nesting 写法,等价于 .stat-item + .stat-item,
286
- 表示"紧跟在同级元素后面的统计项"添加左侧分隔线。 */
271
+ el-col 自带 gutter padding,仅需 flex 对齐和分隔线。
272
+ & + & 选择器:相邻统计项之间显示左侧分隔线(桌面端)。 */
287
273
  .stat-item {
288
- position: relative;
289
- min-width: 0;
290
- display: flex;
291
- align-items: flex-start;
274
+ min-height: 118px;
275
+ display: grid;
276
+ grid-template-rows: 42px 62px;
277
+ align-content: center;
292
278
  justify-content: center;
293
- gap: 14px;
294
- padding: 4px 22px 0;
279
+ justify-items: center;
280
+ padding: 0 28px;
295
281
 
296
282
  & + & {
297
283
  border-left: 1px solid var(--line);
298
284
  }
299
285
  }
300
286
 
301
- /* ---- 统计文案区(标签 + 数值) ---- */
302
- .stat-copy {
303
- /* 标签文字(如"全部待处理"):稍小字号,加粗,不换行 */
304
- & h3 {
305
- margin: 6px 0 18px;
306
- font-size: 16px;
307
- font-weight: 700;
308
- white-space: nowrap;
309
- }
287
+ .stat-heading {
288
+ display: inline-flex;
289
+ align-items: center;
290
+ gap: 16px;
291
+ color: #070b13;
292
+ }
310
293
 
311
- /* 数值行:使用 --tone 变量继承当前条目的强调色 */
312
- & p {
313
- margin: 0;
314
- color: var(--tone);
315
- line-height: 1;
316
- white-space: nowrap; /* 防止数值和单位换行 */
317
- }
294
+ .stat-total-label {
295
+ align-self: center;
296
+ }
318
297
 
319
- /* 大号数字:50px Extra Bold,视觉重心 */
320
- & strong {
321
- font-size: 50px;
322
- font-weight: 800;
323
- }
298
+ /* 统计标签文字(如"全部待处理"):700 字重,不换行 */
299
+ .stat-label {
300
+ color: #05070d;
301
+ font-size: 18px;
302
+ font-weight: 800;
303
+ white-space: nowrap;
304
+ }
324
305
 
325
- /* 单位文字(如"条"):与数字保持 10px 间距 */
326
- & span {
327
- margin-left: 10px;
328
- font-size: 16px;
329
- font-weight: 700;
330
- }
306
+ .stat-number-row {
307
+ align-self: end;
308
+ display: inline-flex;
309
+ align-items: baseline;
310
+ gap: 14px;
311
+ color: var(--tone);
312
+ }
313
+
314
+ .stat-number {
315
+ font-size: 50px;
316
+ font-weight: 800;
317
+ line-height: .95;
318
+ }
319
+
320
+ .stat-unit {
321
+ font-size: 18px;
322
+ font-weight: 800;
331
323
  }
332
324
 
333
325
  /* ---- 统计图标 ----
334
- 38x38 的固定尺寸容器,flex 居中对齐图标;
335
- flex: 0 0 auto 防止图标被压缩。
336
- 颜色继承 --tone 变量。 */
326
+ el-icon 提供 :size prop,仅需颜色继承和 flex 防压缩。 */
337
327
  .stat-icon {
338
- width: 38px;
339
- height: 38px;
340
328
  flex: 0 0 auto;
341
- display: inline-flex;
342
- align-items: center;
343
- justify-content: center;
344
- margin-top: 2px;
345
329
  color: var(--tone);
346
- font-size: 34px;
330
+ margin-top: 2px;
347
331
  }
348
332
 
349
333
  /* ---- 色调工具类 ----
350
334
  将全局调色板变量映射到 --tone 局部变量,
351
- 使子元素(图标、数字、按钮)通过 var(--tone) 自动继承当前色调。
352
- 每个类只有一条声明,用单行写法节省空间。 */
335
+ 使子元素(图标、数字、按钮)通过 var(--tone) 自动继承色调。 */
353
336
  .is-blue { --tone: var(--blue); }
354
337
  .is-green { --tone: var(--green); }
355
338
  .is-orange { --tone: var(--orange); }
356
339
  .is-red { --tone: var(--red); }
357
340
 
358
- /* ---- 快速入口区 ---- */
359
- .quick-section {
360
- & h2 {
361
- margin-bottom: 20px; /* 标题与卡片网格的间距 */
362
- }
363
- }
364
-
365
- /* ---- 入口卡片网格 ----
366
- 4 列等宽布局,18px 间距,适配四个业务入口。 */
367
341
  .entry-grid {
368
342
  display: grid;
369
343
  grid-template-columns: repeat(4, minmax(0, 1fr));
370
- gap: 18px;
344
+ gap: 24px;
371
345
  }
372
346
 
373
- /* ---- 单张入口卡片 ----
374
- 纵向 flex 布局,align-items: center 使内容水平居中;
375
- min-height 保证卡片高度一致;
376
- 半透明白色背景 + 柔和阴影营造卡片浮层效果。
377
- 子元素 h3/p 使用 nesting 直接嵌套声明。 */
378
347
  .entry-card {
379
- min-height: 316px;
348
+ min-height: 330px;
380
349
  display: flex;
381
350
  flex-direction: column;
382
351
  align-items: center;
383
- padding: 30px 24px 28px;
352
+ padding: 34px 34px 34px;
384
353
  border: 1px solid var(--line);
385
- border-radius: 9px;
386
- background: rgba(255, 255, 255, .78);
387
- box-shadow: 0 8px 20px rgba(23, 42, 75, .05);
388
-
389
- /* 卡片标题(如"预报填报"):22px,Extra Bold */
390
- & h3 {
391
- margin: 18px 0 10px;
392
- font-size: 22px;
393
- font-weight: 800;
394
- }
395
-
396
- /* 卡片描述文字:居中对齐,最小高度保证布局稳定 */
397
- & p {
398
- min-height: 24px;
399
- margin: 0 0 20px;
400
- color: var(--muted);
401
- font-size: 15px;
402
- line-height: 1.55;
403
- text-align: center;
404
- }
354
+ border-radius: 10px;
355
+ background: rgba(255, 255, 255, .86);
356
+ box-shadow: 0 8px 18px rgba(21, 39, 68, .05);
357
+ text-align: center;
405
358
  }
406
359
 
407
- /* ---- 入口卡片图标 ----
408
- 88x88 大图标容器,18px 圆角;
409
- 背景色使用 color-mix 将当前色调与白色按 11:89 混合,
410
- 得到一个极淡的同色系底色,突出图标但不抢眼。 */
411
360
  .entry-icon {
412
361
  width: 88px;
413
362
  height: 88px;
@@ -417,22 +366,35 @@ const quickEntries: EntryAction[] = [
417
366
  border-radius: 18px;
418
367
  color: var(--tone);
419
368
  background: color-mix(in srgb, var(--tone) 11%, #fff);
420
- font-size: 46px;
421
369
  }
422
370
 
423
- /* ---- 入口卡片按钮 ----
424
- margin-top: auto 将按钮推至卡片底部(flex column 布局下生效);
425
- 背景色直接使用 --tone 变量;
426
- hover/focus 时用 color-mix 将色调加深 12%,给出交互反馈。 */
371
+ /* 入口卡片标题:el-text 渲染,额外设置 Extra Bold */
372
+ .entry-title {
373
+ margin: 24px 0 14px;
374
+ color: #030713;
375
+ font-size: 24px;
376
+ line-height: 1;
377
+ font-weight: 800 !important;
378
+ }
379
+
380
+ .entry-desc {
381
+ margin: 0;
382
+ color: #4a5568;
383
+ font-size: 16px;
384
+ line-height: 1.5;
385
+ }
386
+
427
387
  .entry-button {
428
388
  width: 180px;
429
- height: 44px;
389
+ height: 46px;
430
390
  margin-top: auto;
431
391
  border: 0;
432
392
  border-radius: 7px;
433
393
  background: var(--tone);
434
- font-size: 18px;
394
+ color: #fff;
395
+ font-size: 17px;
435
396
  font-weight: 700;
397
+ cursor: pointer;
436
398
 
437
399
  &:hover,
438
400
  &:focus {
@@ -441,23 +403,23 @@ const quickEntries: EntryAction[] = [
441
403
  }
442
404
 
443
405
  /* ============================================================
444
- 响应式:平板 / 小桌面(≤ 1180px
445
- 统计面板改为 2 列,入口卡片改为 2 列;
446
- 统计项左侧对齐,分隔线逻辑从"相邻项之间"改为"偶数列左侧"。
406
+ 响应式:平板 / 小桌面(≤ 992px
407
+ el-col sm="12" 自动切换为 2 列布局;
408
+ 统计项分隔线逻辑从"相邻项之间"改为"偶数列左侧 + 行间横线"。
447
409
  ============================================================ */
448
- @media (max-width: 1180px) {
410
+ @media (max-width: 992px) {
449
411
  .execution-content {
450
- padding-inline: 24px; /* 逻辑属性:左右内边距 */
412
+ padding-inline: 24px;
451
413
  }
452
414
 
453
415
  .stats-panel {
454
416
  grid-template-columns: repeat(2, minmax(0, 1fr));
455
- padding-block: 20px;
417
+ padding: 0;
456
418
  }
457
419
 
458
420
  .stat-item {
459
- justify-content: flex-start; /* 左对齐,更紧凑 */
460
- padding: 24px 32px;
421
+ justify-content: flex-start;
422
+ padding: 28px;
461
423
 
462
424
  /* 移除桌面版的相邻分隔线 */
463
425
  & + & {
@@ -481,36 +443,29 @@ const quickEntries: EntryAction[] = [
481
443
  }
482
444
 
483
445
  /* ============================================================
484
- 响应式:手机(≤ 720px
485
- 所有网格改为单列,字号缩小,统计项分隔线改为纯水平。
446
+ 响应式:手机(≤ 768px
447
+ el-col 的 xs="24" 自动切换为单列布局;
448
+ 统计项分隔线改为纯水平,字号缩小。
486
449
  ============================================================ */
487
- @media (max-width: 720px) {
450
+ @media (max-width: 768px) {
488
451
  .execution-content {
489
452
  padding: 24px 16px;
490
453
  }
491
454
 
492
- /* 标题和说明文字缩小 */
493
- .intro-block {
494
- & h2,
495
- .quick-section h2 {
496
- font-size: 20px;
497
- }
455
+ .page-title {
456
+ font-size: 28px;
457
+ }
498
458
 
499
- & p {
500
- margin-top: 10px;
501
- font-size: 14px;
502
- }
459
+ .section-title {
460
+ font-size: 26px;
503
461
  }
504
462
 
505
- /* 统计面板和入口卡片均为单列 */
506
463
  .stats-panel,
507
464
  .entry-grid {
508
465
  grid-template-columns: 1fr;
509
466
  }
510
467
 
511
- /* 统计项:移除竖线,改为纯水平分隔线;
512
- 同时覆盖桌面和平板的所有分隔线规则;
513
- :first-child 例外:第一项不需要顶部分隔线。 */
468
+ /* 统计项:移除所有竖线,改为纯水平分隔线(首项除外) */
514
469
  .stat-item,
515
470
  .stat-item:nth-child(2n),
516
471
  .stat-item:nth-child(n + 3) {
@@ -523,13 +478,12 @@ const quickEntries: EntryAction[] = [
523
478
  }
524
479
 
525
480
  /* 大号数字缩小,避免在窄屏溢出 */
526
- .stat-copy strong {
527
- font-size: 42px;
481
+ .stat-number {
482
+ font-size: 48px;
528
483
  }
529
484
 
530
- /* 卡片最小高度降低,减少纵向空间占用 */
531
485
  .entry-card {
532
- min-height: 288px;
486
+ min-height: 340px;
533
487
  }
534
488
  }
535
489
  </style>