@qilitt-mickey/vue3-temp-skill 1.1.18 → 1.1.19

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/SKILL.md CHANGED
@@ -9,6 +9,19 @@ tags: [vue3, typescript, element-plus, vant, pinia, vite, unocss, crud, componen
9
9
 
10
10
  执行顺序:命中模块 → 读 `core-kernel` → 读命中 `references/<模块>.md` → 生成 → 执行 `code-quality` → 回复含审查结果块。
11
11
 
12
+ ## 术语约定
13
+
14
+ 全文统一使用下表术语;不得使用「黄金样板 / 强制完整样板 / 抗略读 / 默记 / 真相源」等表述。
15
+
16
+ | 统一术语 | 含义 | 禁止使用 |
17
+ |----------|------|----------|
18
+ | 标准样板 | 模块内完整代码样板,命中即整段落盘 | 黄金样板、强制完整样板 |
19
+ | 完整性守则 | 全模块通用的防浅读规则 | 抗略读 |
20
+ | 速查约定 | 高频写法的快速指引 | 默记 |
21
+ | 权威性优先级 | 实现方式选取顺序:仓库封装 > 本 Skill 示例 > 通用 Vue 习惯 | 真相源 |
22
+ | 回退至 | 缺档取值动作(如「缺档 → 回退至 default」) | 缺档场景的「落到」 |
23
+ | 未命中模块 | 需求无对应专项模块时的路由结果 | 「兜底」指代路由结果 |
24
+
12
25
  ## 模版约定
13
26
 
14
27
  - 面向由 **vue3-web-temp** 脚手架搭出的业务项目(目录名/安装路径因人而异,以当前工作区为准)
@@ -25,19 +38,19 @@ tags: [vue3, typescript, element-plus, vant, pinia, vite, unocss, crud, componen
25
38
 
26
39
  1. 先读 `references/core-kernel.md`
27
40
  2. 复用仓库已有 `Re*` / Hook / utils;选型表指定库勿擅自替换
28
- 3. 按命中模块内**强制完整样板**整段编写(禁止只抄 API 签名、丢掉 meta/配套段落)
41
+ 3. 按命中模块内**标准样板**整段编写(禁止只抄 API 签名、丢掉 meta/配套段落)
29
42
  4. 无对应能力 → 标注「待确认」,未经同意不引入新依赖
30
- 5. 真相源:`仓库已有封装` > `本 Skill 示例` > 通用 Vue 习惯
43
+ 5. 权威性优先级:`仓库已有封装` > `本 Skill 示例` > 通用 Vue 习惯
31
44
  6. 命中 addon / 缺依赖时再读 `project-inventory.md` 第九节;精确版本安装,禁止 `@latest`
32
45
 
33
- ## 抗略读(全模块 · 提高命中率)
46
+ ## 完整性守则(全模块强制)
34
47
 
35
- 按需模块 ≠ 可浅读。命中即须落到该文件的**完整样板 / Must-do**,生成后靠 `code-quality` 硬失败表兜底。
48
+ 按需模块 ≠ 可浅读。命中即须落到该文件的**标准样板 / Must-do**,生成后靠 `code-quality` 硬失败表兜底。
36
49
 
37
50
  1. **样板字段默认写出**:示例里写明的 `activePath` / `keepAlive` / `roles` / `responseType: "blob"` 等不得改成 `//` 注释再当可选项;仅业务明确不需要时才删除
38
51
  2. **关联能力同批落盘**:列表→详情 = `crud-pages` + `detail-page` 三件套;有 API = 同步 `http-api`;有删除 = 确认框;有编辑回显 = `Object.assign`
39
52
  3. **Hook ≠ 壳层自动**:`toDetail` 写 tag;侧栏高亮 / keepAlive 靠路由 meta;`http` 加解密靠环境开关,不靠单请求配置
40
- 4. **大范围交付仍须逐模块核对硬失败表**,禁止「lint 过了就算完」
53
+ 4. **大范围交付仍须逐模块核对硬失败表**,禁止以 lint 通过代替硬失败表逐项核对
41
54
 
42
55
  ## 模块路由表
43
56
 
@@ -97,13 +110,13 @@ tags: [vue3, typescript, element-plus, vant, pinia, vite, unocss, crud, componen
97
110
  | **feedback-ui** | 通知栏、水印、时间轴、打字机 |
98
111
  | **seamless-scroll** | 无缝滚动、跑马灯 |
99
112
  | **particles** | 粒子、tsparticles、登录背景粒子 |
100
- | **directives-advanced** | 一键复制、标题太长字号变小 → `v-copy` / `v-auto-font` |
113
+ | **directives-advanced** | 一键复制、标题字号自适应 → `v-copy` / `v-auto-font` |
101
114
 
102
115
  ### 匹配规则
103
116
 
104
117
  1. 单模块 → 该模块 + `core-kernel`;结束后执行 `code-quality`
105
118
  2. 多模块 → 同时加载(例:客户列表 = `crud-pages` + `permission-auth` + `http-api`)
106
- 3. 兜底 → 仅 `core-kernel`,询问是否专项
119
+ 3. 未命中模块 → 仅 `core-kernel`,向用户确认是否专项
107
120
  4. 默认不改 `vite.config.ts` / `build/**`
108
121
  5. 效果匹配:
109
122
  - 弹窗 → `form-advanced`
@@ -118,10 +131,10 @@ tags: [vue3, typescript, element-plus, vant, pinia, vite, unocss, crud, componen
118
131
  - 列表→独立详情/编辑页 → `crud-pages` + `detail-page`
119
132
  6. 独立详情路由:跳转与 meta 见 `detail-page`(`toDetail` / `showLink` / `activePath` / `initToDetail`)
120
133
 
121
- ## 默记(细则见对应模块)
134
+ ## 速查约定(细则见对应模块)
122
135
 
123
136
  - HTTP:`import { http } from '@/utils/http'`;方法跟后端(允许 GET/POST);`Result<T>`;`VITE_API_BASE_URL` → `http-api`
124
- - 列表:`onSearch` / `reset` + 黄金样板 → `crud-pages`
137
+ - 列表:`onSearch` / `reset` + 标准样板 → `crud-pages`
125
138
  - 独立详情:`toDetail` **不能替代** `activePath` / `keepAlive` / `moreTags`;三件套 → `detail-page`
126
139
  - 权限:`meta.roles` + `v-auth`/`ReAuth` → `permission-auth`
127
140
  - 不二次挂 Layout;`script setup` + `defineOptions({ name })`;`$t('中文')`;样式契约 → `core-kernel`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qilitt-mickey/vue3-temp-skill",
3
- "version": "1.1.18",
3
+ "version": "1.1.19",
4
4
  "description": "Vue 3 企业级中后台项目开发规范技能包 — core-kernel 架构、按需功能模块",
5
5
  "bin": {
6
6
  "vue3-temp-skill": "./bin/cli.js"
@@ -9,7 +9,7 @@ tags: [api, backend, integration, contract, http, checklist, mock]
9
9
 
10
10
  写法与示例 → **`http-api`**。本文件只做联调核对。权威源:`types/global.d.ts`、`src/utils/http.ts`、`src/api/**`、`mock/**`、`useTableSearch`。
11
11
 
12
- **抗略读**:联调阶段仍须核对「下载是否带 blob」「分页字段是否 content/totalCount」;契约不过 = API 未完成,禁止只靠 lint 放行。
12
+ **完整性守则**:联调阶段仍须核对「下载是否带 blob」「分页字段是否 content/totalCount」;契约不过 = API 未完成,禁止只靠 lint 放行。
13
13
 
14
14
  ## 基本信息
15
15
 
@@ -30,7 +30,7 @@ tags: [code-review, quality, checklist, lint, typescript, vue3, security, perfor
30
30
 
31
31
  ## 硬失败(对照落盘文件;命中即未通过)
32
32
 
33
- lint / type-check **过了也不能放过**下列项。发现即改代码,禁止「已知问题后续再说」。
33
+ lint / type-check **过了也不能放过**下列项。发现即改代码,禁止搁置已知问题。
34
34
 
35
35
  | 触发条件(改动里出现) | 未通过条件 | 正确做法 |
36
36
  |------------------------|------------|----------|
@@ -54,7 +54,7 @@ lint / type-check **过了也不能放过**下列项。发现即改代码,禁
54
54
  - [ ] 列表方法名 `onSearch` / `reset`;HTTP 用 `@/utils/http` + `Result<T>`
55
55
  - [ ] 业务路由未二次挂 Layout
56
56
  - [ ] 独立详情:对照路由文件确认 `showLink:false` + `activePath` + `keepAlive`/`moreTags`(默认)+ `toDetail` + `initToDetail`
57
- - [ ] 列表布局按 `crud-pages` 黄金样板(`el-card.vts-page-card`+`content`、无 `100vh` 减顶栏、`tableHeight`、`otherRef`、分页在 ReTableBar 内;内容区无外层滚动条)
57
+ - [ ] 列表布局按 `crud-pages` 标准样板(`el-card.vts-page-card`+`content`、无 `100vh` 减顶栏、`tableHeight`、`otherRef`、分页在 ReTableBar 内;内容区无外层滚动条)
58
58
  - [ ] 顶栏高度仅 `--header-height` 等 CSS 令牌;禁止 JS 测顶栏 / `platform-config` 顶栏像素字段 / `useApp` 导出顶栏高度
59
59
 
60
60
  ## TypeScript
@@ -105,14 +105,14 @@ lint / type-check **过了也不能放过**下列项。发现即改代码,禁
105
105
  - [ ] 冲突清单已逐条处理(见 `design-system`)
106
106
  - [ ] 有上游设计产出时已读 `design-handoff`:JSON 优先;**原子步骤**含 `Theme=default`(深色侧栏)+ `--sidebar-*` + **`Version++`** + 主色阶;禁止只改 EpThemeColor;错误色 `#F5222D`
107
107
  - [ ] **无**设计落地时未改出厂主色 / ShowModel / 壳层 / 弹窗几何默认
108
- - [ ] 组件尺寸三档已落地并桥接 `--el-component-size*`;缺档落到 default;未全局强制 `size="small"`;**查询区不写 size**(三档对照表 ≠ 查询区要用 small)
108
+ - [ ] 组件尺寸三档已落地并桥接 `--el-component-size*`;缺档回退至 default;未全局强制 `size="small"`;**查询区不写 size**(三档对照表 ≠ 查询区要用 small)
109
109
 
110
110
  ## 业务
111
111
 
112
112
  - [ ] 提交前 `validate()`;删除有确认;提交有 loading;列表有 `v-loading`
113
113
  - [ ] 编辑回显正确(`Object.assign`);分页切换会拉数
114
114
 
115
- ### 列表→详情(改动含 toDetail / *Detail 路由时强制,禁止 N/A 糊弄)
115
+ ### 列表→详情(改动含 toDetail / *Detail 路由时强制,禁止以 N/A 跳过)
116
116
 
117
117
  - [ ] **打开落盘路由文件**核对:兄弟绝对 path;`showLink:false`;`activePath`=列表 path;非空 `title`;默认 `keepAlive`+`moreTags`
118
118
  - [ ] 仅 `toDetail`;详情 `initToDetail`;`name` 对齐;`toDetail` 第 3 参 title 可辨识
@@ -24,7 +24,7 @@ tags: [vue3, kernel, conventions, layout, router, http, crud, inventory]
24
24
  | 9 | i18n:`$t('中文key')` |
25
25
  | 10 | 禁止用 `v-html` 渲染不可信内容 |
26
26
  | 11 | 新依赖须用户确认;已有封装须复用;选型表指定库勿擅自替换 |
27
- | 12 | 列表布局按 **`crud-pages` 黄金样板**(`el-card.vts-page-card`+`content`、无 `100vh` 减顶栏定高、`tableHeight`、`otherRef`、分页在 ReTableBar 内;仅表格体内滚动) |
27
+ | 12 | 列表布局按 **`crud-pages` 标准样板**(`el-card.vts-page-card`+`content`、无 `100vh` 减顶栏定高、`tableHeight`、`otherRef`、分页在 ReTableBar 内;仅表格体内滚动) |
28
28
  | 13 | addon 按 `project-inventory` 第九节精确版本安装;禁止 `@latest` |
29
29
  | 14 | 样式契约见下文「样式契约」 |
30
30
 
@@ -49,9 +49,9 @@ export default {
49
49
  } satisfies RouteConfigsTable;
50
50
  ```
51
51
 
52
- ### 抗略读
52
+ ### 完整性守则
53
53
 
54
- 命中模块须照其**强制完整样板**落盘;样板中的字段默认写出。壳层行为(tag / 侧栏 / keep-alive)以路由 meta + 项目已有实现为准,不假设 Hook 会「全自动」。
54
+ 命中模块须照其**标准样板**整段落盘;样板中的字段默认写出。壳层行为(tag / 侧栏 / keep-alive)以路由 meta + 项目已有实现为准,不假设 Hook 会「全自动」。
55
55
 
56
56
  ### 权限
57
57
 
@@ -78,7 +78,7 @@ export function getCustomerList(data: CustomerQuery, url: string) {
78
78
 
79
79
  细则:`http-api`。字典:`base-code-dict`。提示:`import { message } from '@/utils/message'`。
80
80
 
81
- ## 四、CRUD 积木
81
+ ## 四、CRUD 能力清单
82
82
 
83
83
  | Hook | 用途 | 详例 |
84
84
  |------|------|------|
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: crud-pages
3
- description: 查询列表页、表单页、标准 CRUD。含 useTableSearch、列表黄金样板、表单约定。
3
+ description: 查询列表页、表单页、标准 CRUD。含 useTableSearch、列表标准样板、表单约定。
4
4
  scope: project
5
5
  tags: [vue3, crud, list, form, detail, table, useTableSearch, page, layout]
6
6
  ---
@@ -9,7 +9,7 @@ tags: [vue3, crud, list, form, detail, table, useTableSearch, page, layout]
9
9
 
10
10
  遵守 `core-kernel` / `http-api`。独立详情路由 → 同时加载 `detail-page`。回显 → `data-writeback`。
11
11
 
12
- **抗略读**:列表页必须整段照抄「列表黄金样板」;有独立详情时 **同批** 落 `detail-page` 三件套(禁止只写 `toDetail`)。方法名固定 `onSearch` / `reset`。
12
+ **完整性守则**:列表页必须整段照抄「列表标准样板」;有独立详情时 **同批** 落 `detail-page` 三件套(禁止只写 `toDetail`)。方法名固定 `onSearch` / `reset`。
13
13
 
14
14
  ## useTableSearch
15
15
 
@@ -37,7 +37,7 @@ useTableSearch(formQuery, searchFn, url)
37
37
 
38
38
  > **壳层原理**(`lay-content`):`.main-content` 用 `padding: var(--vts-margin)`(不用 margin);定高页 `.main-content:has(.vts-page-card)` / `.vts-page-fill` 为 `height: 100%`;`.vts-page-card` 填满。`html/body/#app/.app-wrapper/.main-container/.app-main` 均为 `height:100%; overflow:hidden`。禁止业务页 `100vh` 减顶栏定高。
39
39
 
40
- ## 列表黄金样板(唯一完整示例)
40
+ ## 列表标准样板(唯一完整示例)
41
41
 
42
42
  | # | 必须 |
43
43
  |---|------|
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按本文件示例编写,复用项目已有回显/回填约定与选择器回写方式,勿另起一套表单赋值实现。
4
4
 
5
- **抗略读**:编辑回显**必须** `Object.assign(formData, res.data)`,禁止 `formData = res.data` 破坏响应式。提交按钮默认带 `loading`。
5
+ **完整性守则**:编辑回显**必须** `Object.assign(formData, res.data)`,禁止 `formData = res.data` 破坏响应式。提交按钮默认带 `loading`。
6
6
 
7
7
  ## 强制样板(编辑回显)
8
8
 
@@ -11,13 +11,13 @@ tags: [handoff, design-tokens, upstream, artifacts, json]
11
11
 
12
12
  | 场景 | 行为 |
13
13
  |------|------|
14
- | **未调用设计 / 无 handoff** | 保持模版出厂(主色 `#409EFF`、`Theme: light`=**白侧栏**、`ShowModel: chrome`、margin 8 等)。**禁止**为「看起来像设计」而改出厂 |
14
+ | **未调用设计 / 无 handoff** | 保持模版出厂(主色 `#409EFF`、`Theme: light`=**白侧栏**、`ShowModel: chrome`、margin 8 等)。**禁止**为贴合视觉印象而擅自修改出厂值 |
15
15
  | **有 design-handoff/v1 或用户要求按设计落地** | 按下文「落地原子步骤」**整组**回填;只改主色/令牌、不改 `Theme`/`Version` = **落地失败** |
16
16
 
17
17
  跨编辑器一致:设计侧 `handoff-output.md`(JSON 形状)+ 本文件(→ 模版映射)+ 模版令牌。
18
18
  **分工**:设计师改视觉正文;本文件规定 Agent 如何落到模版。禁止只改文档不改令牌。
19
19
 
20
- ### 出厂 vs 设计:侧栏两套开关(易错)
20
+ ### 出厂 vs 设计:侧栏两套开关(高频错误)
21
21
 
22
22
  | 概念 | 出厂 | 设计 page-templates「浅色模式」 |
23
23
  |------|------|--------------------------------|
@@ -66,7 +66,7 @@ tags: [handoff, design-tokens, upstream, artifacts, json]
66
66
  有 JSON 时:**以 JSON 为准**;交接块 / 零散 CSS 仅补 JSON 未覆盖字段。
67
67
  无 JSON 时:回退优先 2~5(旧协议),并在回执中注明「建议补齐 design-handoff/v1」。
68
68
 
69
- 缺主色阶 →「待确认」;有 `brandPrimary` 则可先落主色与壳桥接,不臆造 `primaryScale`。
69
+ 缺主色阶 →「待确认」;有 `brandPrimary` 则可先落主色与壳桥接,禁止虚构 `primaryScale`。
70
70
 
71
71
  ---
72
72
 
@@ -135,7 +135,7 @@ tags: [handoff, design-tokens, upstream, artifacts, json]
135
135
  | `layoutBg` | `--layout-bg` |
136
136
  | `componentBg` | `--component-bg` |
137
137
 
138
- 校验:`primaryScale.length === 10` 且 `primaryScale[5] === brandPrimary`;否则回执「待确认」并先写 brand,不瞎补色阶。
138
+ 校验:`primaryScale.length === 10` 且 `primaryScale[5] === brandPrimary`;否则回执「待确认」并先写 brand,禁止补造色阶。
139
139
 
140
140
  ### `componentSize` → 控件高度
141
141
 
@@ -145,7 +145,7 @@ tags: [handoff, design-tokens, upstream, artifacts, json]
145
145
  | `base` | `--control-height` / `--component-size-base` / `--el-component-size` |
146
146
  | `lg` | `--control-height-lg` / `--component-size-lg` / `--el-component-size-large` |
147
147
 
148
- 细则见 `design-system` 7.5.8。缺档 → 落到 default(base),回执注明。
148
+ 细则见 `design-system` 7.5.8。缺档 → 回退至 default(base),回执注明。
149
149
 
150
150
  ### 卡片页签关闭色(设计约束)
151
151
 
@@ -228,7 +228,7 @@ tags: [handoff, design-tokens, upstream, artifacts, json]
228
228
  4. 核对表 A~E;硬失败项见下
229
229
  5. 回执「已覆盖 / 保留出厂」;提醒用户**硬刷新**一次(Version 会清 layout 缓存)
230
230
 
231
- **反例(禁止)**:只改 `EpThemeColor` / `:root` 主色 → 侧栏仍白、像「没落地」。
231
+ **反例(禁止)**:只改 `EpThemeColor` / `:root` 主色 → 侧栏仍白、未达完整落地效果。
232
232
 
233
233
  ## 规范识别回执(动手前必出)
234
234
 
@@ -13,7 +13,7 @@ tags: [design-system, design-tokens, antd, semi, arco, vuetify, findesign, eleme
13
13
 
14
14
  | 轨 | 含义 | Agent 行为 |
15
15
  |----|------|------------|
16
- | **出厂** | `design-tokens.scss` / `platform-config.json` 已有默认(如壳 64/208/40、主色 `#409EFF`、`ShowModel: chrome`、`--layout-content-padding: 8`) | **勿擅自改掉**以「贴设计」;系统未调用设计技能时保持出厂 |
16
+ | **出厂** | `design-tokens.scss` / `platform-config.json` 已有默认(如壳 64/208/40、主色 `#409EFF`、`ShowModel: chrome`、`--layout-content-padding: 8`) | **勿擅自改掉**以贴合设计;系统未调用设计技能时保持出厂 |
17
17
  | **设计落地** | 会话/仓库存在 `design-handoff/v1` 或用户要求按设计规范适配 | **必须**按设计规范与 JSON **全量回填**令牌;设计未提及的字段保留出厂;壳层/ReDialog/EP 几何须已是 `var(--token)`,改令牌即生效 |
18
18
 
19
19
  视觉关键尺寸(顶栏/侧栏/页签/内容边距/控件高/弹窗/卡片页签等)在模版中**一律为 CSS 变量**;文档里的 64/208 等是默认值说明,不是允许写死在组件里的常量。
@@ -58,7 +58,7 @@ tags: [design-system, design-tokens, antd, semi, arco, vuetify, findesign, eleme
58
58
  1. **令牌驱动优先**:能从上游产出 / 官方文档 / 用户提供的 `:root` 取到令牌 → 直接采用,跳过预设表。
59
59
  2. **缺项就近推导**:缺失的令牌取**风格最接近的预设**同位值补齐(如某企业内部规范缺圆角 → 参考视觉最接近的预设)。
60
60
  3. **回执标注推导项**:识别回执的「目标规范」写实际名称并标 `custom`,推导补齐的令牌逐项列出,请用户确认。
61
- 4. 禁止把无法对应的规范硬套进五大预设,也禁止因"不在表里"而拒绝适配。
61
+ 4. 禁止将无法对应的规范强行归入预设,也不得以未收录为由拒绝适配。
62
62
 
63
63
  ### 1.4 识别回执(强制 · 适配类任务第一步)
64
64
 
@@ -233,7 +233,7 @@ tags: [design-system, design-tokens, antd, semi, arco, vuetify, findesign, eleme
233
233
  2. 每段追加规范注释:`/* —— <规范名> 几何:<组件> —— */`,让后续开发者一眼看出取值来源。
234
234
  3. 模版里同一选择器已有裸值规则(如 `.el-card__body { padding: 5px }`)→ **就地改为令牌引用**,禁止另起一条规则去压盖,避免“同属性两处定义”。
235
235
 
236
- 黄金样板(按需追加/修改,只改数据值,结构不变):
236
+ 标准样板(按需追加/修改,只改数据值,结构不变):
237
237
 
238
238
  ```scss
239
239
  /**
@@ -410,9 +410,9 @@ tags: [design-system, design-tokens, antd, semi, arco, vuetify, findesign, eleme
410
410
 
411
411
  4. 暗黑模式:在 `dark.scss` 内为新增令牌补暗色覆盖(`--vts-table-header-bg`、`--vts-message-bg`、`--vts-dialog-bg` 等),遵守 `layout-theme` 第三节规则。
412
412
 
413
- ### Step 7 存量代码回归扫描(防"令牌层建好了但页面没跟上")
413
+ ### Step 7 存量代码回归扫描(存量页面与令牌层同步校验)
414
414
 
415
- 适配/切换完成后,对 `src/views/` 与 `src/components/` 跑一遍裸值扫描:
415
+ 适配/切换完成后,对 `src/views/` 与 `src/components/` 执行存量裸值扫描:
416
416
 
417
417
  ```
418
418
  grep 目标(*.vue 的 <style> 与行内 style):
@@ -636,7 +636,7 @@ height: \d+px、padding: \d+px、font-size: \d+px、行内 style="...颜色 hex"
636
636
 
637
637
  `.sidebar-container .el-menu` 上写 `--el-menu-item-height: <与 design-tokens 一致>`,**禁止** `--el-menu-item-height: var(--el-menu-item-height, …)` 自引用(EP 回退默认 56px)。
638
638
 
639
- #### 7.5.5 查询区尺寸(core-kernel 黄金样板)
639
+ #### 7.5.5 查询区尺寸(core-kernel 标准样板)
640
640
 
641
641
  列表页查询区 **`el-form` 不写 size**(default 中号 = `--control-height` / 设计 `--component-size-base`,默认 32px),查询/工具栏按钮随表单继承;**禁止**查询区单独写 `size="small"` 导致输入框与按钮变成 24px 档。
642
642
 
@@ -667,7 +667,7 @@ height: \d+px、padding: \d+px、font-size: \d+px、行内 style="...颜色 hex"
667
667
  **缺档规则**(与设计规范「一点九」一致):
668
668
 
669
669
  1. 上游给出完整三档 → 三档都写入 `design-tokens.scss`「用户可自定义」,并确认 `--el-component-size*` 桥接仍指向 `--control-height*`。
670
- 2. 上游**只给一个高度**(如「控件 32」)→ 写入 `--control-height`(default);`--control-height-sm` / `--control-height-lg` 保留模版默认或按比例派生;回执注明「缺档 → 落到 default」。
670
+ 2. 上游**只给一个高度**(如「控件 32」)→ 写入 `--control-height`(default);`--control-height-sm` / `--control-height-lg` 保留模版默认或按比例派生;回执注明「缺档 → 回退至 default」。
671
671
  3. **必须重设 default(未指定 size)**:`element-plus.scss` 中无 `--small`/`--large` 修饰的按钮/输入类选择器须引用 `var(--control-height)`,禁止依赖 EP 出厂像素且与令牌脱节。
672
672
  4. **禁止**把设计 base(32) 映射成全局 `size="small"`;`App.vue` 的 `el-config-provider` 默认不传 `size`(或显式不设),避免全站变 24px。
673
673
  5. 表格行内操作、紧凑工具条可用 `size="small"`;查询区/标准表单/弹窗表单用 default;登录主操作可用 `large`。
@@ -675,7 +675,7 @@ height: \d+px、padding: \d+px、font-size: \d+px、行内 style="...颜色 hex"
675
675
 
676
676
  ---
677
677
 
678
- ## 八、反例(短)
678
+ ## 八、反例对照表
679
679
 
680
680
  | 错误 | 正确 |
681
681
  |------|------|
@@ -7,11 +7,11 @@ tags: [vue3, detail, toDetail, useDetail, activePath, showLink, multiTags, keepA
7
7
 
8
8
  # 详情页 / 编辑页跳转
9
9
 
10
- 真相源:模版 `useDetail.ts`、`multiTags`、侧栏 `NavVertical`。列表打开独立路由页时按本文件落地。
10
+ 权威性优先级:模版 `useDetail.ts`、`multiTags`、侧栏 `NavVertical`。列表打开独立路由页时按本文件落地。
11
11
 
12
12
  **反认知偏差(必读)**:`toDetail` 只负责写顶部 tag 并跳转;**侧栏高亮靠 `meta.activePath`,缓存/多开靠 `meta.keepAlive` / `moreTags`**。三者缺一不可,禁止只写 `toDetail`。
13
13
 
14
- ## 详情三件套(强制完整样板 · 整段照抄再改名)
14
+ ## 详情三件套(标准样板 · 整段照抄再改名)
15
15
 
16
16
  缺任一段 = 未完成。样板内字段**默认全部写出**(勿改成 `//` 注释再「按需打开」)。仅当业务明确不要缓存/多开时,才删掉对应行。
17
17
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  规范文件下载、模板下载、文件流导出与附件预览。在需要下载文件、导出表格或预览附件时参照。
6
6
 
7
- **抗略读**:导出/下载 API **必须**带 `responseType: "blob"`(默认写出,勿当可选项注释掉);前端用 `blobDown` / 项目已有 `download*`,禁止手写 `URL.createObjectURL` 另起一套(除非仓库无封装)。
7
+ **完整性守则**:导出/下载 API **必须**带 `responseType: "blob"`(默认写出,勿当可选项注释掉);前端用 `blobDown` / 项目已有 `download*`,禁止手写 `URL.createObjectURL` 另起一套(除非仓库无封装)。
8
8
 
9
9
  ## 强制样板(导出)
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  规范系统 Loading、Message、MessageBox、NoticeBar 等反馈组件的使用。在需要提示用户或阻塞操作时参照。
6
6
 
7
- **抗略读**:删除/危险操作**默认写出** `ElMessageBox.confirm`;列表请求接 `v-loading`;提交默认 `loading` 防重复。提示文案一律 `$t()`。
7
+ **完整性守则**:删除/危险操作**默认写出** `ElMessageBox.confirm`;列表请求接 `v-loading`;提交默认 `loading` 防重复。提示文案一律 `$t()`。
8
8
 
9
9
  ## 强制样板(删除确认)
10
10
 
@@ -10,7 +10,7 @@ tags: [form, dialog, ReDialog, ReDialogResize, ReSelectQuery, ReCascader, iconPi
10
10
  > 核心选择器与 CRUD 列表筛选项高频相关。
11
11
  > **弹窗**:业务弹窗统一用 `ReDialog` / `ReDialogResize`,禁止业务页直接堆裸 `el-dialog`(除非用户明确要求)。
12
12
 
13
- **抗略读**:弹窗走项目 `ReDialog` 黄金样板(含销毁/禁点遮罩等默认项),勿降级为裸 `el-dialog`。远程下拉用 `ReSelectQuery` 真实 props(`url`/`value`/`label`/`edit-data`),禁止臆造 `:api`。
13
+ **完整性守则**:弹窗走项目 `ReDialog` 标准样板(含销毁/禁点遮罩等默认项),勿降级为裸 `el-dialog`。远程下拉用 `ReSelectQuery` 真实 props(`url`/`value`/`label`/`edit-data`),禁止虚构 `:api`。
14
14
 
15
15
  ## 依赖(缺则先装)
16
16
 
@@ -223,7 +223,7 @@ function parseAddress(text: string) {
223
223
 
224
224
  内置行为:`lock-scroll`、`draggable`、`destroy-on-close`、`close-on-click-modal=false`、自定义关闭/全屏图标(非默认 `show-close`)。
225
225
 
226
- ### 列表页表单弹窗(黄金样板)
226
+ ### 列表页表单弹窗(标准样板)
227
227
 
228
228
  ```vue
229
229
  <script setup lang="ts">
@@ -9,7 +9,7 @@ tags: [axios, http, api, encryption, rsa, aes, download, request]
9
9
 
10
10
  > 实现落点:`src/utils/http.ts`、`src/api/**`、全局 `Result<T>`。
11
11
 
12
- **抗略读**:接口文件须整段按下方「强制样板」落盘;禁止组件内直接 `axios`/`fetch`。加解密靠 `VITE_ENCODE_SWITCH`,禁止臆造单请求 `crypto: true`。下载接口**默认写出** `responseType: "blob"`(勿注释掉)。
12
+ **完整性守则**:接口文件须整段按下方「强制样板」落盘;禁止组件内直接 `axios`/`fetch`。加解密靠 `VITE_ENCODE_SWITCH`,禁止虚构单请求 `crypto: true`。下载接口**默认写出** `responseType: "blob"`(勿注释掉)。
13
13
 
14
14
  ## 强制样板(新建 API 照抄)
15
15
 
@@ -8,10 +8,10 @@ tags: [vue3, icon, svg-icon, ReSvgIcon, ReIconPicker, iconify, ep, ri, unocss, m
8
8
  # 图标体系规范
9
9
 
10
10
  > 页面/菜单/按钮里要用图标时加载本模块。
11
- > **真相源**:`src/components/ReSvgIcon`、`src/components/ReIconPicker`、`src/icons/svg`、`main.ts`、`uno.config.ts`、`build/plugins/SvgSpriteLoader.ts` / `SvgLoader.ts`。
11
+ > **权威性优先级**:`src/components/ReSvgIcon`、`src/components/ReIconPicker`、`src/icons/svg`、`main.ts`、`uno.config.ts`、`build/plugins/SvgSpriteLoader.ts` / `SvgLoader.ts`。
12
12
  > 选型表见 `project-inventory`「图标」节;勿另起 IconFont / 未约定的图标库。
13
13
 
14
- **抗略读**:新建菜单/父级路由时 **`meta.icon` 默认写出**(如 `ep:user`),禁止交无图标菜单。页面内优先 `<svg-icon name="..." />`,勿散落未约定图标库。
14
+ **完整性守则**:新建菜单/父级路由时 **`meta.icon` 默认写出**(如 `ep:user`),禁止交无图标菜单。页面内优先 `<svg-icon name="..." />`,勿散落未约定图标库。
15
15
 
16
16
  ## 强制样板(菜单 icon)
17
17
 
@@ -7,7 +7,7 @@ tags: [vue3, permission, auth, directive, hooks, v-auth, role, access-control]
7
7
 
8
8
  # 权限控制与自定义指令
9
9
 
10
- **抗略读**:有权限需求时,`meta.roles` 与 `v-auth`/`ReAuth` **默认写出**(勿注释成可选项)。禁止 `v-if="roles.includes(...)"` 手写角色判断。
10
+ **完整性守则**:有权限需求时,`meta.roles` 与 `v-auth`/`ReAuth` **默认写出**(勿注释成可选项)。禁止 `v-if="roles.includes(...)"` 手写角色判断。
11
11
 
12
12
  ## 强制样板(页面 + 按钮)
13
13