@qilitt-mickey/vue3-temp-skill 1.0.12 → 1.1.2

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.
Files changed (42) hide show
  1. package/README.md +66 -214
  2. package/SKILL.md +165 -527
  3. package/package.json +2 -2
  4. package/references/api-check.md +187 -128
  5. package/references/base-code-dict.md +49 -48
  6. package/references/chart-echarts.md +61 -0
  7. package/references/code-quality.md +44 -15
  8. package/references/core-kernel.md +305 -0
  9. package/references/crud-pages.md +87 -261
  10. package/references/data-compare.md +502 -501
  11. package/references/data-mapping.md +218 -213
  12. package/references/data-screen.md +94 -79
  13. package/references/data-writeback.md +104 -104
  14. package/references/detail-page.md +100 -99
  15. package/references/directives-advanced.md +27 -4
  16. package/references/download-export.md +70 -68
  17. package/references/feedback-loading.md +62 -60
  18. package/references/feedback-ui.md +125 -111
  19. package/references/file-management.md +28 -7
  20. package/references/flowchart-g6.md +249 -244
  21. package/references/form-advanced.md +264 -26
  22. package/references/graph-relation.md +12 -7
  23. package/references/http-api.md +138 -103
  24. package/references/icons.md +326 -0
  25. package/references/layout-theme.md +1 -1
  26. package/references/mobile-h5.md +20 -0
  27. package/references/particles.md +143 -0
  28. package/references/permission-auth.md +8 -31
  29. package/references/project-inventory.md +175 -120
  30. package/references/qrcode-barcode.md +107 -92
  31. package/references/rich-text.md +85 -73
  32. package/references/seamless-scroll.md +40 -38
  33. package/references/table-vxe.md +114 -0
  34. package/references/tree-table.md +2 -1
  35. package/references/ui-components.md +5 -1
  36. package/references/verify-captcha.md +110 -96
  37. package/references/websocket-realtime.md +2 -1
  38. package/references/wechat-js.md +58 -0
  39. package/references/workflow-bpmn.md +207 -206
  40. package/references/advanced-ui.md +0 -302
  41. package/references/build-optim.md +0 -282
  42. package/references/vue-core.md +0 -209
@@ -7,6 +7,26 @@ tags: [vue3, mobile, h5, vant, wechat, miniprogram, responsive, touch]
7
7
 
8
8
  # 移动端 H5 与微信开发规范
9
9
 
10
+ > 按本模块与 `wechat-js` 示例编写。
11
+ > **构建附属**:`VITE_VCONSOLE` → `build/plugins/Vconsole.ts`。
12
+ > 微信 JS-SDK 细节优先加载 **`wechat-js`**;本模块侧重 Vant 页面与移动路由。
13
+
14
+ ## 依赖(缺则先装)
15
+
16
+ | 包 | 版本 | 类型 |
17
+ |---|---|---|
18
+ | `vant` | `4.10.0` | dependencies |
19
+ | `vconsole` | `3.15.1` | dependencies |
20
+ | `@vant/auto-import-resolver` | `1.3.0` | **devDependencies** |
21
+ | `vite-plugin-vconsole` | `2.1.1` | **devDependencies** |
22
+
23
+ ```bash
24
+ pnpm add vant@4.10.0 vconsole@3.15.1
25
+ pnpm add -D @vant/auto-import-resolver@1.3.0 vite-plugin-vconsole@2.1.1
26
+ ```
27
+
28
+ 核对 AutoImport 中 Vant resolver 与 `build/plugins/Vconsole.ts` 是否仍在;模板已接线则勿改 Vite。微信能力另装 `weixin-js-sdk@1.6.5`(见 wechat-js)。
29
+
10
30
  ## 移动端页面结构
11
31
 
12
32
  ### 页面目录
@@ -0,0 +1,143 @@
1
+ # 粒子特效(tsParticles)
2
+
3
+ > 按本文件示例编写,复用项目已有 `@tsparticles/*` 注册与 `src/utils/particles.ts` 配置,勿另起一套粒子实现,勿引入 `particles.js`。
4
+
5
+ 规范登录页 / 氛围页粒子背景的依赖、全局注册、配置与页面用法。在需要粒子背景、登录特效、连线粒子时参照。
6
+
7
+ ## 依赖(缺则先装)
8
+
9
+ | 包 | 版本 | 用途 |
10
+ |---|---|---|
11
+ | `@tsparticles/slim` | `4.3.1` | 轻量引擎(`loadSlim`) |
12
+ | `@tsparticles/vue3` | `4.3.1` | Vue3 组件 `vue-particles` |
13
+
14
+ ```bash
15
+ pnpm add @tsparticles/slim@4.3.1 @tsparticles/vue3@4.3.1
16
+ ```
17
+
18
+ 完整模板一般为 **core** 已装齐;裁剪项目缺失时按上表精确版本安装。构建侧若有 `tsparticles-vendor` 拆包(见 `build/chunks.ts`),模板已接线则勿改。
19
+
20
+ ## 全局注册(`main.ts`)
21
+
22
+ 必须在应用挂载前注册,并用 `loadSlim` 初始化引擎:
23
+
24
+ ```typescript
25
+ import type { Plugin } from "vue";
26
+ import { loadSlim } from "@tsparticles/slim";
27
+ import Particles from "@tsparticles/vue3";
28
+
29
+ app.use(Particles as unknown as Plugin, {
30
+ init: async (engine: unknown) => {
31
+ await loadSlim(engine as Parameters<typeof loadSlim>[0]);
32
+ },
33
+ });
34
+ ```
35
+
36
+ - 使用 **slim** 包即可覆盖登录背景常见能力;勿默认换成 `@tsparticles/engine` 全量包。
37
+ - 类型断言以仓库现有写法为准(`as unknown as Plugin`)。
38
+
39
+ ## 配置(`src/utils/particles.ts`)
40
+
41
+ 导出名为 **`particlesOptions`**(以仓库为准)。v4 已移除 `particles.color` / `particles.stroke`,必须用 **paint** 系统:
42
+
43
+ | 旧(勿再用) | 新(v4) |
44
+ |---|---|
45
+ | `particles.color` | `particles.paint[].fill` |
46
+ | `particles.stroke` | `particles.paint[].stroke` |
47
+ | `links.color` 直接传数组/字符串 | `links.color: { value: '...' }`(`IRangeColor`) |
48
+
49
+ 关键约定:
50
+
51
+ 1. **登录背景**:`background.color.value` 用 `transparent`,避免挡住背景图。
52
+ 2. **非全屏铺层**:`fullScreen.enable: false`,由页面 CSS 控制 `#tsparticles` 尺寸(见 `src/styles/login.css`)。
53
+ 3. **彩色粒子**:用 `paint` 数组(多组 fill)实现;勿写回旧 `color` 字段。
54
+ 4. **交互**:项目默认 hover `repulse`、click `push`;业务可按场景改 `interactivity`,但保持配置集中在 `particles.ts`。
55
+
56
+ 精简示例(完整默认值以仓库 `src/utils/particles.ts` 为准):
57
+
58
+ ```typescript
59
+ export const particlesOptions = {
60
+ background: {
61
+ color: { value: "transparent" },
62
+ },
63
+ fullScreen: { enable: false },
64
+ fpsLimit: 120,
65
+ interactivity: {
66
+ events: {
67
+ onClick: { enable: true, mode: "push" },
68
+ onHover: { enable: true, mode: "repulse" },
69
+ },
70
+ modes: {
71
+ push: { quantity: 4 },
72
+ repulse: { distance: 200, duration: 0.4 },
73
+ },
74
+ },
75
+ particles: {
76
+ paint: [
77
+ {
78
+ fill: {
79
+ enable: true,
80
+ color: { value: "#4a5568" },
81
+ opacity: 0.95,
82
+ },
83
+ stroke: { enable: false },
84
+ },
85
+ ],
86
+ links: {
87
+ enable: true,
88
+ color: { value: "#4a5568" },
89
+ distance: 150,
90
+ opacity: 0.8,
91
+ width: 1,
92
+ },
93
+ move: {
94
+ direction: "none",
95
+ enable: true,
96
+ outModes: "bounce",
97
+ speed: 5,
98
+ },
99
+ number: {
100
+ density: { enable: true },
101
+ value: 80,
102
+ },
103
+ shape: { type: "circle" },
104
+ size: { value: { min: 2.5, max: 6 } },
105
+ },
106
+ detectRetina: true,
107
+ };
108
+ ```
109
+
110
+ ## 页面用法(登录页)
111
+
112
+ ```vue
113
+ <script setup lang="ts">
114
+ import { particlesOptions } from "@/utils/particles";
115
+ </script>
116
+
117
+ <template>
118
+ <vue-particles id="tsparticles" :options="particlesOptions" />
119
+ <!-- 业务内容 -->
120
+ </template>
121
+ ```
122
+
123
+ 配套样式(登录场景):
124
+
125
+ ```css
126
+ #tsparticles {
127
+ position: absolute;
128
+ width: 100%;
129
+ height: 100%;
130
+ }
131
+ ```
132
+
133
+ - `id` 与 CSS 选择器保持一致(默认 `#tsparticles`)。
134
+ - 粒子层放在页面内容之下,避免挡住表单点击;必要时用 `z-index` / 容器定位调整。
135
+ - 其他氛围页可复用同一配置,或在 `particles.ts` 中导出第二套 options(如 `particlesOptionsDark`),勿在页面内联大段配置。
136
+
137
+ ## 选型与禁止项
138
+
139
+ 1. **只用** `@tsparticles/slim` + `@tsparticles/vue3`,禁止 `particles.js` / `vue-particles`(旧包)等替代库。
140
+ 2. **配置集中**在 `src/utils/particles.ts`,页面只引用 `particlesOptions`。
141
+ 3. **v4 API**:禁止写 `particles.color`;必须用 `paint.fill` / `paint.stroke`。
142
+ 4. 低端设备或弱网场景可降低 `number.value` / `fpsLimit`,勿为特效再引入第二套动画库。
143
+ 5. 中后台业务列表页默认不加粒子;仅登录、营销壳、氛围背景等场景使用。
@@ -189,42 +189,19 @@ const {
189
189
  } = useApp();
190
190
  ```
191
191
 
192
- ### useTableSearch
192
+ ### useTableSearch / useDetail
193
193
 
194
- ```typescript
195
- import { useTableSearch } from "@/hooks/useTableSearch";
196
-
197
- const {
198
- content, // 表格数据
199
- pagination, // 分页信息
200
- loading, // 加载状态
201
- handleSearch, // 查询
202
- handleReset, // 重置
203
- handlePageChange, // 翻页
204
- handleSizeChange, // 切换每页条数
205
- } = useTableSearch(formQuery, apiFn, options);
206
- ```
194
+ 列表与详情 Hook **不属于权限模块职责**,正确用法见:
207
195
 
208
- ### useDetail
196
+ - `crud-pages` / `core-kernel`:`useTableSearch` → **`onSearch` / `reset`**
197
+ - `detail-page`:`useDetail` → `toDetail` / `getParameter`
209
198
 
210
- ```typescript
211
- import { useDetail } from "@/hooks/useDetail";
212
-
213
- const {
214
- detail, // 详情数据
215
- loading, // 加载状态
216
- loadDetail, // 加载详情
217
- isEdit, // 是否编辑模式
218
- } = useDetail(detailApi, { idKey: "id" });
219
- ```
199
+ 本模块只处理:`meta.roles`、`v-auth`、`ReAuth`、`hasAuth`。
220
200
 
221
- ### Hooks 约定
201
+ ### Hooks 约定(权限相关)
222
202
 
223
- 1. Hook 文件名使用 `use[Name].ts` 命名。
224
- 2. Hook 必须返回类型明确的对象或方法。
225
- 3. Hook 内部处理 loading、error 状态,组件只需消费结果。
226
- 4. 不要在 Hook 中直接操作 DOM。
227
- 5. 通用 Hook 放在 `src/hooks/`,模块专属 Hook 放在 `src/hooks/modules/`。
203
+ 1. 权限判断优先指令/组件;JS 中用项目已有 `hasAuth`(`utils/router`)。
204
+ 2. 不要在权限模块里重新发明列表 Hook。
228
205
 
229
206
  ## 常见反例
230
207
 
@@ -2,132 +2,163 @@
2
2
 
3
3
  > **本模块是 AI 代码生成的前置必读文件。**
4
4
  > 在生成任何功能代码之前,AI 必须先查阅本清单,确认项目中是否已有对应的库、组件、Hook 或工具函数。
5
- > **如果项目中已有实现,必须直接使用,禁止引入替代方案。**
5
+ > **已有封装须复用,勿另起一套同能力实现;选型表已指定的三方库勿擅自换成同类其他库(新依赖须待确认)。**
6
+ >
7
+ > **版本真相源**:下表版本对齐模板仓库 `package.json`(2026-08 冻结)。生成前先查业务项目 `package.json`:
8
+ > - 已存在且版本一致 → 直接写代码,勿重复安装
9
+ > - 缺失或被裁剪 → 按「九、专项能力依赖安装表」给出 **精确版本** 的 `pnpm` 命令,**征得用户确认后再执行**
10
+ > - 禁止擅自升降级;禁止用 `latest` / 不带版本号安装选型表内的库
6
11
 
7
12
  ---
8
13
 
9
14
  ## 一、三方库清单(按功能分类)
10
15
 
16
+ > 版本号为模板锁定精确版;`scope`:`core` = 脚手架默认保留;`addon` = 附加能力,裁剪项目可能缺失。
17
+
11
18
  ### UI 框架
12
19
 
13
- | 库 | 版本 | 用途 | 备注 |
14
- |---|---|---|---|
15
- | `element-plus` | 2.14.x | PC 端 UI 组件库 | 主力框架,自动引入 |
16
- | `vant` | 4.10.x | 移动端 UI 组件库 | 移动端页面使用 |
17
- | `@wocwin/t-ui-plus` | 2.0.x | 基于 Element Plus 的企业级增强组件 | |
18
- | `plus-pro-components` | 0.1.x | Element Plus 企业级扩展组件 | |
19
- | `vxe-table` | 4.19.x | 高性能大数据表格 | >1000 行数据时使用 |
20
- | `vxe-pc-ui` | 4.15.x | VXE 配套 PC UI 组件 | |
21
- | `animate.css` | 4.1.x | CSS 动画库 | |
20
+ | 库 | 版本 | scope | 用途 | 备注 |
21
+ |---|---|---|---|---|
22
+ | `element-plus` | `2.14.2` | core | PC 端 UI | 自动引入 |
23
+ | `vant` | `4.10.0` | addon | 移动端 UI | 见 mobile-h5 |
24
+ | `plus-pro-components` | `0.1.31` | addon | EP 企业扩展(ReCheckCard 等) | 见 form-advanced |
25
+ | `vxe-table` | `4.19.21` | addon | 高性能大数据表格 | 见 table-vxe |
26
+ | `vxe-pc-ui` | `4.15.19` | addon | VXE 配套 PC UI | 与 vxe-table 同装 |
22
27
 
23
28
  ### 图表与可视化
24
29
 
25
- | 库 | 版本 | 用途 | 备注 |
26
- |---|---|---|---|
27
- | `echarts` | 6.1.x | 图表引擎 | 配合 `ReEchart` 组件使用 |
28
- | `echarts-wordcloud` | 2.1.x | 词云图 | ECharts 扩展 |
29
- | `relation-graph-vue3` | 2.2.x | 关系/知识图谱 | 力导向/圆形/树形布局 |
30
- | `@antv/g6` | 5.1.x | 图可视化引擎 | 流程图,配合 `g6-extension-vue` |
31
- | `g6-extension-vue` | 0.1.x | G6 的 Vue 节点扩展 | 支持 Vue 组件作为图节点 |
30
+ | 库 | 版本 | scope | 用途 | 备注 |
31
+ |---|---|---|---|---|
32
+ | `echarts` | `6.1.0` | addon | 图表引擎 | + `ReEchart` |
33
+ | `echarts-wordcloud` | `2.1.0` | addon | 词云 | ECharts 扩展 |
34
+ | `relation-graph-vue3` | `2.2.11` | addon | 关系/知识图谱 | 见 graph-relation |
35
+ | `@antv/g6` | `5.1.1` | addon | 图可视化 | 见 flowchart-g6 |
36
+ | `g6-extension-vue` | `0.1.0` | addon | G6 Vue 节点 | 与 g6 同装 |
32
37
 
33
38
  ### 工作流与流程
34
39
 
35
- | 库 | 版本 | 用途 | 备注 |
36
- |---|---|---|---|
37
- | `bpmn-js` | 18.19.x | BPMN 2.0 工作流图渲染 | 使用 Viewer(只读),不用 Modeler |
38
- | `jsplumb` | 2.15.x | 可视化连线/字段映射 | 拖拽连接场景 |
40
+ | 库 | 版本 | scope | 用途 | 备注 |
41
+ |---|---|---|---|---|
42
+ | `bpmn-js` | `18.19.0` | addon | BPMN Viewer(只读) | 见 workflow-bpmn;不用 Modeler |
43
+ | `jsplumb` | `2.15.6` | addon | 连线/字段映射 | 见 data-mapping |
39
44
 
40
45
  ### 富文本与编辑器
41
46
 
42
- | 库 | 版本 | 用途 | 备注 |
43
- |---|---|---|---|
44
- | `@wangeditor/editor` | 5.1.x | 富文本编辑器 | 配合 `ReRichText` 组件使用 |
47
+ | 库 | 版本 | scope | 用途 | 备注 |
48
+ |---|---|---|---|---|
49
+ | `@wangeditor/editor` | `5.1.23` | addon | 富文本 | + `ReRichText` |
45
50
 
46
51
  ### 图标
47
52
 
48
- | 库 | 版本 | 用途 | 备注 |
49
- |---|---|---|---|
50
- | `@iconify/vue` | 5.0.x | 图标框架 | 支持多图标集 |
51
- | `@iconify-json/ep` | 1.2.x | Element Plus 图标集 | |
52
- | `@iconify-json/ri` | 1.2.x | Remix Icon 图标集 | |
53
- | `vite-plugin-svg-icons` | 2.0.x | SVG 雪碧图 | 配合 `ReSvgIcon` 组件 |
53
+ > 用法规范见专项模块 **`icons`**(`references/icons.md`)。
54
+
55
+ | 库 | 版本 | scope | 用途 | 备注 |
56
+ |---|---|---|---|---|
57
+ | `@iconify/vue` | `5.0.1` | core | 图标框架 | 经全局 `svg-icon` |
58
+ | `@iconify-json/ep` | `1.2.4` | core | EP 图标集 | devDependency |
59
+ | `@iconify-json/ri` | `1.2.10` | core | Remix 图标集 | devDependency |
60
+ | `vite-plugin-svg-icons` | `2.0.1` | core | SVG 雪碧图 | + `ReSvgIcon`;扫描 `src/icons/svg` |
61
+ | `vite-svg-loader` | `5.1.1` | core | `svg?component` | 见 `build/plugins/SvgLoader.ts` |
54
62
 
55
63
  ### 状态管理与路由
56
64
 
57
- | 库 | 版本 | 用途 | 备注 |
58
- |---|---|---|---|
59
- | `pinia` | 3.0.x | 状态管理 | Composition API 风格 |
60
- | `pinia-plugin-persistedstate` | 4.7.x | Pinia 持久化插件 | localStorage |
61
- | `vue-router` | 5.1.x | 路由 | Hash 模式 + 动态路由 |
65
+ | 库 | 版本 | scope | 用途 | 备注 |
66
+ |---|---|---|---|---|
67
+ | `pinia` | `3.0.4` | core | 状态管理 | |
68
+ | `pinia-plugin-persistedstate` | `4.7.1` | core | Pinia 持久化 | |
69
+ | `vue-router` | `5.1.0` | core | 路由 Hash + 动态路由 | |
62
70
 
63
71
  ### HTTP 与加密
64
72
 
65
- | 库 | 版本 | 用途 | 备注 |
66
- |---|---|---|---|
67
- | `axios` | 1.18.x | HTTP 请求 | 项目已封装 `src/utils/http.ts` |
68
- | `crypto-js` | 4.2.x | AES 加解密 | 请求体加密 |
69
- | `jsencrypt` | 3.5.x | RSA 加解密 | 密钥交换 |
70
- | `js-md5` | 0.8.x | MD5 哈希 | 请求签名 |
73
+ | 库 | 版本 | scope | 用途 | 备注 |
74
+ |---|---|---|---|---|
75
+ | `axios` | `1.18.1` | core | HTTP | 仅经 `@/utils/http` |
76
+ | `crypto-js` | `4.2.0` | core | AES | + `@types/crypto-js@4.2.2` |
77
+ | `jsencrypt` | `3.5.4` | core | RSA | |
78
+ | `js-md5` | `0.8.3` | core | MD5 签名 | + `@types/js-md5@0.8.0` |
71
79
 
72
80
  ### 工具库
73
81
 
74
- | 库 | 版本 | 用途 | 备注 |
75
- |---|---|---|---|
76
- | `@vueuse/core` | 14.3.x | Vue 组合式工具集 | 自动引入 |
77
- | `@vueuse/math` | 14.3.x | 数学相关组合式函数 | |
78
- | `@vueuse/motion` | 3.0.x | 运动/入场动画 | `v-motion` 指令 |
79
- | `@pureadmin/utils` | 2.6.x | 工具函数集 | 下载、存储、设备检测等 |
80
- | `dayjs` | 1.11.x | 日期处理 | 不用 moment |
81
- | `qs` | 6.15.x | 查询字符串序列化 | |
82
- | `js-cookie` | 3.0.x | Cookie 操作 | |
83
- | `mitt` | 3.0.x | 事件总线 | 全局事件通信 |
84
- | `chroma-js` | 3.2.x | 颜色处理 | 主题色生成 |
85
- | `address-parse` | 1.2.x | 中文地址解析 | |
86
- | `nprogress` | 0.2.x | 路由进度条 | |
87
- | `responsive-storage` | 2.2.x | 响应式 localStorage | |
88
- | `sortablejs` | 1.15.x | 拖拽排序 | |
89
- | `vue-dompurify-html` | 5.3.x | 安全 HTML 渲染 | DOMPurify 过滤 XSS |
90
- | `browser-image-compression` | 2.0.x | 客户端图片压缩 | 上传前压缩 |
91
- | `version-rocket` | 1.7.x | 前端版本检测/自动更新 | |
82
+ | 库 | 版本 | scope | 用途 | 备注 |
83
+ |---|---|---|---|---|
84
+ | `@vueuse/core` | `14.3.0` | core | 组合式工具 | 自动引入 |
85
+ | `@vueuse/math` | `14.3.0` | core | 数学组合式 | |
86
+ | `@vueuse/motion` | `3.0.3` | core | 入场动画 | `v-motion` |
87
+ | `@pureadmin/utils` | `2.6.4` | core | 下载/存储/设备等 | |
88
+ | `dayjs` | `1.11.21` | core | 日期 | 不用 moment |
89
+ | `qs` | `6.15.3` | core | query 序列化 | + `@types/qs@6.15.1` |
90
+ | `js-cookie` | `3.0.8` | core | Cookie | + `@types/js-cookie@3.0.6` |
91
+ | `mitt` | `3.0.1` | core | 事件总线 | |
92
+ | `chroma-js` | `3.2.0` | core | 颜色/主题 | + `@types/chroma-js@3.1.2` |
93
+ | `address-parse` | `1.2.19` | addon | 中文地址解析 | 见 form-advanced |
94
+ | `nprogress` | `0.2.0` | core | 路由进度条 | + `@types/nprogress@0.2.3` |
95
+ | `responsive-storage` | `2.2.0` | core | 响应式 storage | |
96
+ | `sortablejs` | `1.15.7` | core | 拖拽排序 | + `@types/sortablejs@1.15.9` |
97
+ | `vue-dompurify-html` | `5.3.0` | core | 安全 HTML | |
98
+ | `browser-image-compression` | `2.0.2` | addon | 上传前压缩 | 见 file-management |
92
99
 
93
100
  ### 文件预览
94
101
 
95
- | 库 | 版本 | 用途 | 备注 |
96
- |---|---|---|---|
97
- | `@file-viewer/core` | 2.1.x | 文件预览核心 | |
98
- | `@file-viewer/vue3` | 2.1.x | 文件预览 Vue3 集成 | 配合 `ReFileViewer` |
99
- | `@file-viewer/preset-all` | 2.1.x | 文件预览全格式预设 | |
102
+ | 库 | 版本 | scope | 用途 | 备注 |
103
+ |---|---|---|---|---|
104
+ | `@file-viewer/core` | `2.1.14` | addon | 预览核心 | 三件套同版本 |
105
+ | `@file-viewer/vue3` | `2.1.14` | addon | Vue3 集成 | + `ReFileViewer` |
106
+ | `@file-viewer/preset-all` | `2.1.14` | addon | 全格式预设 | |
107
+ | `@file-viewer/vite-plugin` | `2.1.14` | addon | Vite 插件 | **devDependency**;见 file-management |
100
108
 
101
109
  ### 二维码与条形码
102
110
 
103
- | 库 | 版本 | 用途 | 备注 |
104
- |---|---|---|---|
105
- | `qrcode` | 1.5.x | 二维码生成 | 配合 `ReQrcode` 组件 |
106
- | `jsbarcode` | 3.12.x | 条形码生成 | 配合 `ReBarcode` 组件 |
111
+ | 库 | 版本 | scope | 用途 | 备注 |
112
+ |---|---|---|---|---|
113
+ | `qrcode` | `1.5.4` | addon | 二维码 | + `ReQrcode`;`@types/qrcode@1.5.6` |
114
+ | `jsbarcode` | `3.12.3` | addon | 条形码 | + `ReBarcode` |
107
115
 
108
116
  ### 验证与动画
109
117
 
110
- | 库 | 版本 | 用途 | 备注 |
111
- |---|---|---|---|
112
- | `vue3-puzzle-vcode` | 1.1.x | 滑块拼图验证码 | 配合 `ReVerify` 组件 |
113
- | `typeit` | 8.8.x | 打字机动画 | 配合 `ReTypeit` 组件 |
114
- | `@tsparticles/slim` | 4.3.x | 粒子动画 | 登录页背景 |
115
- | `@tsparticles/vue3` | 4.3.x | 粒子动画 Vue3 集成 | |
116
- | `tippy.js` / `vue-tippy` | 6.x | Tooltip 提示 | |
118
+ | 库 | 版本 | scope | 用途 | 备注 |
119
+ |---|---|---|---|---|
120
+ | `vue3-puzzle-vcode` | `1.1.7` | addon | 滑块拼图 | + `ReVerify` |
121
+ | `typeit` | `8.8.7` | addon | 打字机 | + `ReTypeit` |
122
+ | `@tsparticles/slim` | `4.3.1` | core | 粒子 | 登录背景 |
123
+ | `@tsparticles/vue3` | `4.3.1` | core | 粒子 Vue3 | |
124
+ | `tippy.js` | `6.3.7` | core | Tooltip | |
125
+ | `vue-tippy` | `6.7.1` | core | Tippy Vue 封装 | |
117
126
 
118
- ### 微信集成
127
+ ### 微信 / 移动调试
119
128
 
120
- | 库 | 版本 | 用途 | 备注 |
121
- |---|---|---|---|
122
- | `weixin-js-sdk` | 1.6.x | 微信 JS-SDK | 分享/定位,配合 `useWechat` Hook |
123
- | `vconsole` | 3.15.x | 移动端调试控制台 | 仅开发/测试环境 |
129
+ | 库 | 版本 | scope | 用途 | 备注 |
130
+ |---|---|---|---|---|
131
+ | `weixin-js-sdk` | `1.6.5` | addon | 微信 JS-SDK | 见 wechat-js |
132
+ | `vconsole` | `3.15.1` | addon | 移动调试台 | 见 mobile-h5 |
133
+ | `vite-plugin-vconsole` | `2.1.1` | addon | vConsole Vite 插件 | **devDependency** |
124
134
 
125
- ### 布局
135
+ ### 布局 / CSS
126
136
 
127
- | 库 | 版本 | 用途 | 备注 |
128
- |---|---|---|---|
129
- | `grid-layout-plus` | 1.1.x | 拖拽网格布局 | 大屏/仪表盘 widget |
130
- | `unocss` | 66.x | 原子化 CSS | presetWind3,类 Tailwind 语法 |
137
+ | 库 | 版本 | scope | 用途 | 备注 |
138
+ |---|---|---|---|---|
139
+ | `grid-layout-plus` | `1.1.1` | addon | 拖拽网格 | 大屏/仪表盘 |
140
+ | `unocss` | `66.7.4` | core | 原子化 CSS | 及相关 `@unocss/*` 同版本 |
141
+
142
+ ### 构建链路常用插件(core,一般勿随业务安装)
143
+
144
+ | 库 | 版本 | 用途 |
145
+ |---|---|---|
146
+ | `vite` | `8.1.2` | 构建 |
147
+ | `@vitejs/plugin-vue` | `6.0.7` | SFC |
148
+ | `@vitejs/plugin-vue-jsx` | `5.1.6` | JSX |
149
+ | `unplugin-auto-import` | `21.0.0` | 自动 API |
150
+ | `unplugin-vue-components` | `32.1.0` | 自动组件 |
151
+ | `@vant/auto-import-resolver` | `1.3.0` | Vant 解析(mobile 时需要) |
152
+ | `vite-plugin-fake-server` | `2.2.4` | Mock(`VITE_USE_MOCK`) |
153
+ | `vite-plugin-compression` | `0.5.1` | Gzip |
154
+ | `rollup-plugin-visualizer` | `7.0.1` | 包分析 |
155
+ | `vite-plugin-bundle-obfuscator` | `1.13.0` | 混淆 |
156
+ | `vite-plugin-vue-devtools` | `8.1.5` | DevTools |
157
+ | `vite-svg-loader` | `5.1.1` | SVG as component |
158
+ | `vue` | `3.5.39` | 框架 |
159
+ | `vue-i18n` | `11.4.6` | 国际化 |
160
+ | `typescript` | `6.0.3` | 类型 |
161
+ | `vue-tsc` | `3.3.6` | 类型检查 |
131
162
 
132
163
  ---
133
164
 
@@ -190,7 +221,7 @@
190
221
  | **useApp** | 全局应用状态(布局、字典、登出等) | `baseCodeGet(codeType)`、`filterValue()`、`headerHeight`、`svgLoading` |
191
222
  | **useDetail** | 详情页跳转与参数传递 | `toDetail({ id, mark, text })`、`initToDetail()`、`getParameter()` |
192
223
  | **useFormCheck** | 多表单校验聚合 | 追踪各字段校验状态,emit `form-validate` 事件 |
193
- | **useTableSearch** | 列表页搜索/分页/Loading | `content`、`pagination`、`loading`、`handleSearch()`、`handleReset()` |
224
+ | **useTableSearch** | 列表页搜索/分页/Loading | `content`、`tableData`、`pagination`、`loading`、`onSearch()`、`reset()`、`formRef` |
194
225
  | **useTags** | 多标签页管理 | 右键菜单(刷新/关闭/关闭其他/全屏) |
195
226
  | **useTheme** | 主题切换(暗色/亮色) | 主题色生成、布局预设、缓存重置 |
196
227
  | **useWebSocket** | WebSocket 通信 | `subscribe()`、`send()`、`sendRaw()`、`isConnected` |
@@ -208,13 +239,13 @@
208
239
  | `autoUpdate.ts` | `checkUpdate()` | 前端版本检测/自动刷新 |
209
240
  | `changeSummaryService.ts` | `ChangeSummaryService.getChangeSummaryData()` | v-compare 变更汇总读取/元素引用修复 |
210
241
  | `encryptUtils.ts` | `aesEncrypt()`、`aesDecrypt()`、`rsaEncrypt()`、`md5Sign()` | 加解密工具 |
211
- | `http.ts` | `http.request()` | Axios 封装(统一 POST + 加密 + 拦截器) |
242
+ | `http.ts` | `http.request()` | Axios 封装(支持 GET/POST + 加密开关 + 拦截器) |
212
243
  | `i18n.ts` | `getLocale()` | 语言检测 |
213
244
  | `imageCompression.ts` | `compressImage()` | 图片压缩(上传前) |
214
245
  | `message.ts` | `message()` | 消息提示封装(ElMessage 包装) |
215
246
  | `mitt.ts` | `mitt()` | 全局事件总线 |
216
247
  | `motion.tsx` | `MotionComponent` | 入场动画 TSX 组件 |
217
- | `particles.ts` | `particlesConfig` | 粒子动画配置 |
248
+ | `particles.ts` | `particlesOptions` | 粒子动画配置(tsParticles v4 paint) |
218
249
  | `progress/` | `NProgress` | 路由进度条配置 |
219
250
  | `responsive.ts` | `ResponsiveStorage` | 响应式存储注入 |
220
251
  | `router.ts` | `hasAuth()`、路由扁平化、权限过滤 | 路由工具 |
@@ -260,35 +291,11 @@
260
291
 
261
292
  ---
262
293
 
263
- ## 七、示例页面索引
264
-
265
- > 所有示例位于 `src/views/`,是功能开发的参考模板。遇到类似需求时,AI 应优先参考对应示例的代码模式。
266
-
267
- | 示例页面 | 路径 | 对应功能 |
268
- |---|---|---|
269
- | 附件管理 | `views/attachment/` | 文件上传/下载/管理 |
270
- | 组件展示 | `views/component/` | 头像、按钮、详情页、Loading、消息提示 |
271
- | 数据大屏 | `views/dataScreen/` | 可视化大屏 |
272
- | 表单示例 | `views/form/` | 级联、图标选择、选择器、树选择、多表单 |
273
- | 数据变更对比 | `views/form/moreForm/`(`/form/moreFormAnchor`) | v-compare、变更汇总、表格行 I/U/D |
274
- | 功能示例 | `views/function/` | 地址解析、字典、下载、通知栏、二维码、滚动、时间轴、水印 |
275
- | 知识图谱 | `views/graph/` | 关系图谱(relation-graph) |
276
- | 首页/仪表盘 | `views/home/` | Widget 侧边栏、词云、分类图 |
277
- | 登录页 | `views/login/` | 登录 + 二维码登录 |
278
- | 移动端 | `views/mobile/` | 客户管理、Loading(Vant) |
279
- | 权限演示 | `views/permission/` | 角色页面、按钮权限、页面权限 |
280
- | 表格示例 | `views/table/` | 基础表格、树形表格、VXE 高性能表格 |
281
- | WebSocket | `views/websocket/` | 实时通信 |
282
- | 微信 | `views/wechat/` | JS-SDK 集成 |
283
- | 工作流 | `views/workflow/` | BPMN、G6 流程图、JsPlumb 映射 |
284
-
285
- ---
286
-
287
- ## 八、功能选型对照表(禁止替换)
294
+ ## 七、功能选型对照表(禁止替换)
288
295
 
289
- > 当用户需求涉及以下场景时,**必须使用项目已有的库/组件**,不得引入替代方案。
296
+ > 当用户需求涉及以下场景时,**必须使用选型表指定的库/组件**;勿擅自换成同类其他库,新依赖须待确认。
290
297
 
291
- | 需求场景 | 项目选型 | 禁止替代 |
298
+ | 需求场景 | 项目选型 | 勿擅自替换为 |
292
299
  |---|---|---|
293
300
  | 图表 | `echarts` + `ReEchart` | 禁止使用 Chart.js / D3 / Plotly 等 |
294
301
  | 关系/知识图谱 | `relation-graph-vue3` | 禁止引入 D3 / vis.js / Cytoscape 等 |
@@ -301,7 +308,7 @@
301
308
  | 文件预览 | `@file-viewer/*` + `ReFileViewer` | 禁止引入 pdf.js / mammoth 等 |
302
309
  | 滑块验证 | `vue3-puzzle-vcode` + `ReVerify` | 禁止引入其他验证码库 |
303
310
  | 打字机动画 | `typeit` + `ReTypeit` | 禁止引入其他打字机库 |
304
- | 粒子动画 | `@tsparticles/slim` | 禁止引入 particles.js 等 |
311
+ | 粒子动画 | `@tsparticles/slim` + `@tsparticles/vue3` + `particlesOptions` | 禁止引入 particles.js 等;配置见 `particles` 模块 |
305
312
  | 日期处理 | `dayjs` | 禁止引入 moment / date-fns 等 |
306
313
  | HTTP 请求 | 项目封装的 `src/utils/http.ts`(基于 axios) | 禁止直接使用 axios / fetch / ky 等 |
307
314
  | 状态管理 | `pinia` + `pinia-plugin-persistedstate` | 禁止引入 vuex / zustand 等 |
@@ -317,10 +324,58 @@
317
324
 
318
325
  ---
319
326
 
320
- ## 九、使用规则
327
+ ## 八、使用规则
321
328
 
322
329
  1. **先查后写**:生成任何功能代码前,必须先在本清单中查找是否已有对应的库/组件/Hook/工具
323
- 2. **有则必用**:如果项目已有实现,必须直接使用,不得引入替代方案
330
+ 2. **有则必用**:已有封装直接复用,勿另起一套同能力实现;选型表指定库勿擅自替换
324
331
  3. **无则上报**:如果确实需要引入新库(清单中没有),必须在输出中明确说明原因,并标注为"待确认"让用户审批
325
- 4. **参考示例**:`src/views/` 下有对应功能的示例页面,应优先参考示例的代码模式
326
- 5. **版本一致**:使用库的版本必须与清单中一致,不得降级或升级
332
+ 4. **按示例编写**:以对应 Skill 模块 `references/<模块>.md` 完整示例与约定写法为准
333
+ 5. **版本一致**:使用库的版本必须与清单中**精确版本**一致,不得擅自升降级,不得 `pnpm add xxx` 不带版本
334
+ 6. **缺依赖先装**:命中 addon 模块时,先读业务项目 `package.json`;缺失则按第九节安装命令征得确认后执行,再生成业务代码
335
+ 7. **Vite 插件成套**:涉及 `@file-viewer/vite-plugin`、`vite-plugin-vconsole` 等时,运行时包与 `-D` 插件、以及仓库内 `build/plugins/*` 接线一并检查;模板已接线则勿改 `vite.config`;裁剪缺失时需恢复对应插件文件后再装依赖
336
+ 8. **已移除依赖(勿再推荐)**:`@wocwin/t-ui-plus`、`animate.css`、`version-rocket`、`vue-types`、`vite-plugin-remove-console`、`vite-plugin-router-warn`;发版检测用 `utils/autoUpdate`;去 console 用构建 Terser
337
+
338
+ ---
339
+
340
+ ## 九、专项能力依赖安装表(addon)
341
+
342
+ > **何时用**:裁剪过的派生项目、或 `package.json` 中找不到对应包时。
343
+ > **包管理**:统一 `pnpm`。`-D` 表示写入 `devDependencies`。
344
+ > **AI 流程**:① 查 `package.json` → ② 列出缺失包 → ③ 展示下方命令并征得确认 → ④ 执行安装 → ⑤ 再写业务代码。
345
+ > 完整模板通常已装齐,**不要**重复安装。
346
+
347
+ | Skill 模块 | 生产依赖(精确版本) | 开发依赖(精确版本) | 构建/接线附属 | 一键安装命令 |
348
+ |---|---|---|---|---|
349
+ | **table-vxe** | `vxe-table@4.19.21` `vxe-pc-ui@4.15.19` | — | `main.ts` 中 vxe 注册(以仓库为准) | `pnpm add vxe-table@4.19.21 vxe-pc-ui@4.15.19` |
350
+ | **form-advanced**(地址解析 / CheckCard) | `address-parse@1.2.19` `plus-pro-components@0.1.31` | — | — | `pnpm add address-parse@1.2.19 plus-pro-components@0.1.31` |
351
+ | **file-management** | `@file-viewer/core@2.1.14` `@file-viewer/vue3@2.1.14` `@file-viewer/preset-all@2.1.14` `browser-image-compression@2.0.2` | `@file-viewer/vite-plugin@2.1.14` | `build/plugins/FileViewer.ts`;chunks 大体积 vendor | `pnpm add @file-viewer/core@2.1.14 @file-viewer/vue3@2.1.14 @file-viewer/preset-all@2.1.14 browser-image-compression@2.0.2` + `pnpm add -D @file-viewer/vite-plugin@2.1.14` |
352
+ | **rich-text** | `@wangeditor/editor@5.1.23` | — | — | `pnpm add @wangeditor/editor@5.1.23` |
353
+ | **chart-echarts** | `echarts@6.1.0` | — | — | `pnpm add echarts@6.1.0` |
354
+ | **chart-echarts**(词云) | 上 + `echarts-wordcloud@2.1.0` | — | 业务侧 `import 'echarts-wordcloud'` | `pnpm add echarts@6.1.0 echarts-wordcloud@2.1.0` |
355
+ | **data-screen** | `grid-layout-plus@1.1.1`(图表另见 chart-echarts) | — | 大屏缩放按模块示例 | `pnpm add grid-layout-plus@1.1.1` |
356
+ | **graph-relation** | `relation-graph-vue3@2.2.11` | — | chunks 拆包(若模板有) | `pnpm add relation-graph-vue3@2.2.11` |
357
+ | **workflow-bpmn** | `bpmn-js@18.19.0` | — | 仅 Viewer | `pnpm add bpmn-js@18.19.0` |
358
+ | **flowchart-g6** | `@antv/g6@5.1.1` `g6-extension-vue@0.1.0` | — | chunks:`antv-g6` / `antv-vendor` | `pnpm add @antv/g6@5.1.1 g6-extension-vue@0.1.0` |
359
+ | **data-mapping** | `jsplumb@2.15.6` | — | — | `pnpm add jsplumb@2.15.6` |
360
+ | **mobile-h5** | `vant@4.10.0` `vconsole@3.15.1` | `@vant/auto-import-resolver@1.3.0` `vite-plugin-vconsole@2.1.1` | `build/plugins/Vconsole.ts`;`VITE_VCONSOLE`;AutoImport Vant resolver | `pnpm add vant@4.10.0 vconsole@3.15.1` + `pnpm add -D @vant/auto-import-resolver@1.3.0 vite-plugin-vconsole@2.1.1` |
361
+ | **wechat-js** | `weixin-js-sdk@1.6.5` | — | `utils/wechat` + `useWechat` + `api/wechat` | `pnpm add weixin-js-sdk@1.6.5` |
362
+ | **verify-captcha** | `vue3-puzzle-vcode@1.1.7` | — | — | `pnpm add vue3-puzzle-vcode@1.1.7` |
363
+ | **qrcode-barcode** | `qrcode@1.5.4` `jsbarcode@3.12.3` | `@types/qrcode@1.5.6` | — | `pnpm add qrcode@1.5.4 jsbarcode@3.12.3` + `pnpm add -D @types/qrcode@1.5.6` |
364
+ | **feedback-ui**(打字机) | `typeit@8.8.7` | — | — | `pnpm add typeit@8.8.7` |
365
+ | **particles** | `@tsparticles/slim@4.3.1` `@tsparticles/vue3@4.3.1` | — | `main.ts` 中 `Particles` + `loadSlim`;可选 `build/chunks.ts` 的 `tsparticles-vendor` | `pnpm add @tsparticles/slim@4.3.1 @tsparticles/vue3@4.3.1` |
366
+ | **api-check** / Mock | —(运行时无额外包) | `vite-plugin-fake-server@2.2.4`(core 通常已有) | `build/plugins/ViteMockServe.ts`;`VITE_USE_MOCK` | 缺失时:`pnpm add -D vite-plugin-fake-server@2.2.4` |
367
+ | **websocket-realtime** / **data-compare** / **seamless-scroll** / **directives-advanced** / **download-export** / **tree-table** | 无额外 npm 包(用项目封装) | — | 见各模块 | 无需安装 |
368
+
369
+ ### 安装输出模板(AI 对用户)
370
+
371
+ ```text
372
+ 检测到以下依赖缺失(对齐模板锁定版本):
373
+ - xxx@a.b.c
374
+ 拟执行:
375
+ pnpm add ...
376
+ pnpm add -D ...
377
+ 涉及构建插件时还需确认:build/plugins/Xxx.ts 是否仍在。
378
+ 是否确认安装?
379
+ ```
380
+
381
+ 未经用户确认**不得**擅自改 `package.json` 或执行安装。