@qilitt-mickey/vue3-temp-skill 1.1.25 → 1.1.26
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 +77 -37
- package/package.json +15 -1
- package/references/auth-pages.md +217 -0
- package/references/base-code-dict.md +7 -0
- package/references/chart-echarts.md +1 -1
- package/references/crud-pages.md +1 -1
- package/references/data-compare.md +7 -0
- package/references/data-mapping.md +7 -0
- package/references/data-screen.md +7 -0
- package/references/data-writeback.md +7 -0
- package/references/directives-advanced.md +7 -0
- package/references/download-export.md +7 -0
- package/references/feedback-loading.md +7 -0
- package/references/feedback-ui.md +7 -0
- package/references/file-management.md +7 -0
- package/references/flowchart-g6.md +7 -0
- package/references/form-advanced.md +1 -1
- package/references/graph-relation.md +7 -0
- package/references/i18n-localization.md +230 -0
- package/references/layout-theme.md +1 -1
- package/references/particles.md +7 -0
- package/references/project-inventory.md +7 -0
- package/references/qrcode-barcode.md +7 -0
- package/references/rich-text.md +7 -0
- package/references/seamless-scroll.md +7 -0
- package/references/table-vxe.md +1 -1
- package/references/tree-table.md +7 -0
- package/references/verify-captcha.md +7 -0
- package/references/websocket-realtime.md +7 -0
- package/references/workflow-bpmn.md +7 -0
- package/scripts/ai-content-audit.mjs +244 -0
- package/scripts/ai-match-audit.mjs +348 -0
- package/scripts/ai-workflow-sim.mjs +393 -0
- package/scripts/analyze-deps.mjs +278 -0
- package/scripts/check.cmd +7 -0
- package/scripts/check.mjs +95 -0
- package/scripts/cli.mjs +153 -0
- package/scripts/generate-index.mjs +214 -0
- package/scripts/match.py +323 -0
- package/scripts/modules.json +348 -0
- package/scripts/scaffold-module.mjs +232 -0
- package/scripts/validate.mjs +256 -0
package/SKILL.md
CHANGED
|
@@ -7,7 +7,25 @@ tags: [vue3, typescript, element-plus, vant, pinia, vite, unocss, crud, componen
|
|
|
7
7
|
|
|
8
8
|
# Vue 3 项目开发规范技能包
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
执行顺序:运行 `python scripts/match.py "<需求>"` 获取精确匹配 → 按 `load_files` 读参考文件 → 生成 → 按 `quality_gates` 检查 → 执行 `code-quality` → 回复含审查结果块。
|
|
11
|
+
|
|
12
|
+
> **模块路由优先用脚本**:`python scripts/match.py "需求描述"` 输出 JSON,含命中模块、同批加载、闸门项、加载文件清单。AI 按此结果加载文件,不自行推理匹配。无 Python 环境时回退至下方路由表手动匹配。
|
|
13
|
+
|
|
14
|
+
### 脚本工具
|
|
15
|
+
|
|
16
|
+
| 命令 | 用途 |
|
|
17
|
+
|------|------|
|
|
18
|
+
| `python scripts/match.py "<需求>"` | **运行时匹配器**(AI 调用):输出命中模块、同批加载、闸门项、文件清单 |
|
|
19
|
+
| `python scripts/match.py --batch` | 批量测试 15 个典型场景 |
|
|
20
|
+
| `npm run check` | **发布前全量检查**(5 项任一失败即中断) |
|
|
21
|
+
| `npm run validate` | 结构校验:frontmatter、路由表一致性、孤立模块、交叉引用 |
|
|
22
|
+
| `npm run audit` | 命中精度审计:关键词重叠、盲区、模块评分、边界冲突 |
|
|
23
|
+
| `npm run content` | 内容可用性审计:样板完整性、Must-do 清单 |
|
|
24
|
+
| `npm run deps` | 依赖图分析:断链、循环依赖、引用热度 |
|
|
25
|
+
| `npm run match:batch` | 批量测试(npm 封装) |
|
|
26
|
+
| `node scripts/cli.mjs --list` | 列出所有可用命令 |
|
|
27
|
+
|
|
28
|
+
> `npm run release` 会自动先执行全量检查,通过后才升版本、提交、发布。
|
|
11
29
|
|
|
12
30
|
## 术语约定
|
|
13
31
|
|
|
@@ -77,45 +95,47 @@ tags: [vue3, typescript, element-plus, vant, pinia, vite, unocss, crud, componen
|
|
|
77
95
|
|
|
78
96
|
| 模块 | 关键词 |
|
|
79
97
|
|------|--------|
|
|
80
|
-
| **http-api** | 接口、http、加密、API |
|
|
81
|
-
| **crud-pages** | 列表、表格、查询、管理、CRUD
|
|
82
|
-
| **detail-page** | 详情、编辑页、查看页、新开路由、toDetail、activePath、showLink、顶部 tag |
|
|
83
|
-
| **data-writeback** |
|
|
84
|
-
| **permission-auth** | 权限、v-auth、roles、ReAuth |
|
|
85
|
-
| **layout-theme** | 布局、主题、暗黑、`--vts-*`、UnoCSS |
|
|
98
|
+
| **http-api** | 接口、http、加密、API、请求、响应、axios |
|
|
99
|
+
| **crud-pages** | 列表、表格、查询、管理、CRUD、新增、行编辑、操作列、行操作、分页、筛选、批量、排序 |
|
|
100
|
+
| **detail-page** | 详情、编辑页、查看页、新开路由、toDetail、activePath、showLink、顶部 tag、跳转 |
|
|
101
|
+
| **data-writeback** | 回显、回填、回写、useFormCheck、编辑数据 |
|
|
102
|
+
| **permission-auth** | 权限、v-auth、roles、ReAuth、按钮权限、页面权限、角色可见 |
|
|
103
|
+
| **layout-theme** | 布局、主题、暗黑、`--vts-*`、UnoCSS、夜间模式、换肤、侧栏、标签页、面包屑 |
|
|
86
104
|
| **design-system** | 设计规范、UI 规范、按 XX 规范适配、design-tokens、主题色系、令牌体系、暗色模式 |
|
|
87
|
-
| **icons** | 图标、svg-icon、Iconify、ReIconPicker
|
|
88
|
-
| **feedback-loading** | message、loading
|
|
89
|
-
| **base-code-dict** | 字典、baseCode
|
|
90
|
-
| **api-check** | 联调、mock
|
|
105
|
+
| **icons** | 图标、svg-icon、Iconify、ReIconPicker、菜单图标、icon |
|
|
106
|
+
| **feedback-loading** | message、loading、确认框、提示、加载、操作反馈、骨架屏 |
|
|
107
|
+
| **base-code-dict** | 字典、baseCode、码表、下拉字典、数据字典 |
|
|
108
|
+
| **api-check** | 联调、mock、契约、对接后端、接口核对 |
|
|
109
|
+
| **i18n-localization** | 国际化、多语言、i18n、vue-i18n、locale、语言切换、语言包、useI18n、ReLanguageSwitch |
|
|
110
|
+
| **auth-pages** | 登录、注册、忘记密码、重置密码、认证、auth、login、register、signup、forgot-password、找回密码(**设计自由,仅规范流程**) |
|
|
91
111
|
| **ui-components** | 新建 Re*、type.ts、组件目录;**用法见各功能模块**(本文件仅索引) |
|
|
92
112
|
|
|
93
113
|
### 专项能力包
|
|
94
114
|
|
|
95
115
|
| 模块 | 关键词 |
|
|
96
116
|
|------|--------|
|
|
97
|
-
| **tree-table** | 树表、ReTreeLine、handleTree |
|
|
98
|
-
| **table-vxe** | vxe
|
|
99
|
-
| **form-advanced** |
|
|
100
|
-
| **data-compare** | v-compare
|
|
101
|
-
| **file-management** | 附件、ReAttachment、ReFileViewer
|
|
102
|
-
| **download-export** | 导出、excel、blob
|
|
103
|
-
| **rich-text** | 富文本、wangeditor、ReRichText |
|
|
104
|
-
| **chart-echarts** | echarts、图表、ReEchart |
|
|
105
|
-
| **data-screen** | 大屏、dataScreen |
|
|
106
|
-
| **graph-relation** | 图谱、relation-graph |
|
|
107
|
-
| **workflow-bpmn** | bpmn
|
|
108
|
-
| **flowchart-g6** | g6
|
|
109
|
-
| **data-mapping** | jsplumb
|
|
110
|
-
| **websocket-realtime** | websocket、ws
|
|
111
|
-
| **mobile-h5** | 移动端、H5、vant、vconsole |
|
|
112
|
-
| **wechat-js** | 微信、weixin、wechat |
|
|
113
|
-
| **verify-captcha** |
|
|
114
|
-
| **qrcode-barcode** |
|
|
115
|
-
| **feedback-ui** |
|
|
116
|
-
| **seamless-scroll** |
|
|
117
|
-
| **particles** | 粒子、tsparticles
|
|
118
|
-
| **directives-advanced** |
|
|
117
|
+
| **tree-table** | 树表、ReTreeLine、handleTree、树形、树状、层级表格、组织架构、部门树 |
|
|
118
|
+
| **table-vxe** | vxe、高性能表格、虚拟滚动、虚拟表格、大数据表格、单元格编辑 |
|
|
119
|
+
| **form-advanced** | 弹窗、对话框、抽屉、ReDialog、ReDialogResize、锚点、卡片选择、地址解析、ReSelectQuery、级联、远程搜索、下拉选择、高级表单、步骤条、折叠面板、穿梭框、分步表单、联动、动态表单、日历、时间选择、日期选择、拖动、拖拽排序 |
|
|
120
|
+
| **data-compare** | v-compare、变更汇总、变更对比、数据对比、字段对比、高亮变更 |
|
|
121
|
+
| **file-management** | 附件、ReAttachment、ReFileViewer、预览、上传、文件上传、图片上传、断点续传、分片上传、打印、截图、视频播放、音频 |
|
|
122
|
+
| **download-export** | 导出、excel、blob、下载文件、下载、导出Excel |
|
|
123
|
+
| **rich-text** | 富文本、wangeditor、ReRichText、编辑器、Markdown |
|
|
124
|
+
| **chart-echarts** | echarts、图表、ReEchart、折线图、柱状图、饼图、统计图、雷达图、散点图、热力图、趋势图、地图、甘特图 |
|
|
125
|
+
| **data-screen** | 大屏、dataScreen、数据大屏、看板、数据看板、仪表盘、全屏可视化 |
|
|
126
|
+
| **graph-relation** | 图谱、relation-graph、关系图、知识图谱、关系网络 |
|
|
127
|
+
| **workflow-bpmn** | bpmn、流程审批、审批流、工作流、审批流程 |
|
|
128
|
+
| **flowchart-g6** | g6、流程图、拓扑图、antv、自定义流程图、流程设计 |
|
|
129
|
+
| **data-mapping** | jsplumb、字段映射、连线映射、数据映射 |
|
|
130
|
+
| **websocket-realtime** | websocket、ws、实时、消息推送、实时推送、在线状态 |
|
|
131
|
+
| **mobile-h5** | 移动端、H5、vant、vconsole、手机 |
|
|
132
|
+
| **wechat-js** | 微信、weixin、wechat、js-sdk |
|
|
133
|
+
| **verify-captcha** | 验证码、滑块、短信验证、拖拽验证、图片验证码 |
|
|
134
|
+
| **qrcode-barcode** | 二维码、条形码、扫码 |
|
|
135
|
+
| **feedback-ui** | 通知栏、水印、时间轴、打字机、展示组件、空状态 |
|
|
136
|
+
| **seamless-scroll** | 无缝滚动、跑马灯、marquee、滚动公告 |
|
|
137
|
+
| **particles** | 粒子、tsparticles、登录背景粒子、粒子动画 |
|
|
138
|
+
| **directives-advanced** | 一键复制、复制、标题字号自适应、字号自适应 → `v-copy` / `v-auto-font` |
|
|
119
139
|
|
|
120
140
|
### 匹配规则
|
|
121
141
|
|
|
@@ -125,16 +145,36 @@ tags: [vue3, typescript, element-plus, vant, pinia, vite, unocss, crud, componen
|
|
|
125
145
|
4. 默认不改 `vite.config.ts` / `build/**`;**例外**:按 `addon-enable.md` 恢复 FileViewer / VantResolver / Vconsole 等占位插件时允许改 `build/plugins/*`
|
|
126
146
|
5. 效果匹配:
|
|
127
147
|
- 启用 echarts / vant / file-viewer / 富文本等已删 addon → 功能模块 + **`addon-enable`**
|
|
128
|
-
-
|
|
148
|
+
- 弹窗、对话框、抽屉 → `form-advanced`
|
|
149
|
+
- 远程搜索下拉、级联选择 → `form-advanced`
|
|
150
|
+
- 步骤条、分步表单、穿梭框、折叠面板、动态表单 → `form-advanced`
|
|
151
|
+
- 日历、时间选择、日期选择、联动 → `form-advanced`
|
|
129
152
|
- 点一下复制 → `directives-advanced`(`v-copy`)
|
|
130
153
|
- 标题字跟着宽度变小 → `directives-advanced`(`v-auto-font`)
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
154
|
+
- 角色可见、按钮权限 → `permission-auth`
|
|
155
|
+
- 变更对比、数据对比 → `data-compare`
|
|
156
|
+
- 导出、下载文件 → `download-export`
|
|
134
157
|
- 菜单/本地图标 → `icons`
|
|
135
158
|
- 粒子背景 → `particles`
|
|
159
|
+
- 树形列表、层级表格、组织架构、部门树 → `tree-table`
|
|
160
|
+
- 虚拟滚动、大数据表格 → `table-vxe`
|
|
161
|
+
- 骨架屏 → `feedback-loading`
|
|
162
|
+
- 空状态 → `feedback-ui`
|
|
163
|
+
- 标签页、面包屑 → `layout-theme`
|
|
164
|
+
- 批量操作、表格排序 → `crud-pages`
|
|
165
|
+
- 趋势图、地图、甘特图 → `chart-echarts`
|
|
166
|
+
- 附件上传、断点续传 → `file-management`
|
|
136
167
|
- 按 XX / UI 规范适配、设计交接块、整站风格重构 → `design-system`(项目设计系统说明)+ `layout-theme`;有令牌/交接产出时加读 `design-handoff.md`(逐文件修改清单)+ 设计 Skill `project-implementation-protocol.md`
|
|
137
168
|
- 列表→独立详情/编辑页 → `crud-pages` + `detail-page`
|
|
169
|
+
- 图表(折线/柱状/饼图) → `chart-echarts`
|
|
170
|
+
- 数据大屏、看板 → `data-screen`
|
|
171
|
+
- 实时推送、在线状态 → `websocket-realtime`
|
|
172
|
+
- BPMN 流程、审批、工作流 → `workflow-bpmn`
|
|
173
|
+
- 自定义流程图、流程设计、拓扑 → `flowchart-g6`
|
|
174
|
+
- 国际化、多语言、i18n、语言切换 → `i18n-localization`
|
|
175
|
+
- 注册、忘记密码、重置密码、认证 → `auth-pages`(设计自由,仅规范流程;含验证码 → `verify-captcha`)
|
|
176
|
+
- 打印、截图 → `file-management`(ReFileViewer)
|
|
177
|
+
- 视频播放、音频 → `file-management`(ReFileViewer 文件预览)
|
|
138
178
|
6. 独立详情路由:跳转与 meta 见 `detail-page`(`toDetail` / `showLink` / `activePath` / `initToDetail`)
|
|
139
179
|
|
|
140
180
|
## 速查约定(细则见对应模块)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qilitt-mickey/vue3-temp-skill",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.26",
|
|
4
4
|
"description": "Vue 3 企业级中后台项目开发规范技能包 — core-kernel 架构、按需功能模块",
|
|
5
5
|
"bin": {
|
|
6
6
|
"vue3-temp-skill": "./bin/cli.js"
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"files": [
|
|
13
13
|
"bin/",
|
|
14
14
|
"references/",
|
|
15
|
+
"scripts/",
|
|
15
16
|
"SKILL.md",
|
|
16
17
|
"README.md"
|
|
17
18
|
],
|
|
@@ -22,6 +23,19 @@
|
|
|
22
23
|
"release": "node release.js",
|
|
23
24
|
"release:minor": "node release.js minor",
|
|
24
25
|
"release:major": "node release.js major",
|
|
26
|
+
"check": "scripts\\check.cmd",
|
|
27
|
+
"prepack": "scripts\\check.cmd",
|
|
28
|
+
"validate": "node scripts/validate.mjs",
|
|
29
|
+
"audit": "node scripts/ai-match-audit.mjs",
|
|
30
|
+
"content": "node scripts/ai-content-audit.mjs",
|
|
31
|
+
"deps": "node scripts/analyze-deps.mjs",
|
|
32
|
+
"deps:hot": "node scripts/analyze-deps.mjs --hot",
|
|
33
|
+
"deps:mermaid": "node scripts/analyze-deps.mjs --mermaid",
|
|
34
|
+
"match": "python scripts/match.py",
|
|
35
|
+
"match:batch": "python scripts/match.py --batch",
|
|
36
|
+
"gen:index": "node scripts/generate-index.mjs",
|
|
37
|
+
"gen:index:write": "node scripts/generate-index.mjs --write",
|
|
38
|
+
"scaffold": "node scripts/scaffold-module.mjs",
|
|
25
39
|
"postpublish": "echo 'Published @qilitt-mickey/vue3-temp-skill to npmjs.org'"
|
|
26
40
|
},
|
|
27
41
|
"keywords": [
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill: auth-pages
|
|
3
|
+
description: 登录/注册/忘记密码认证流程、API 模式、userStore 集成、路由配置
|
|
4
|
+
scope: project
|
|
5
|
+
tags: [登录, 注册, 忘记密码, 重置密码, 认证, auth, login, register, signup, forgot-password, 找回密码]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 认证流程规范(登录 / 注册 / 忘记密码)
|
|
9
|
+
|
|
10
|
+
> **页面设计自由**:认证页面的视觉布局、交互形式、背景效果均由设计主导,本模块仅规范**认证流程、API 模式、Store 集成、路由配置**。勿将此处代码片段当作页面样板整段抄录,仅提取流程模式。
|
|
11
|
+
>
|
|
12
|
+
> **验证码/滑块组件**:见 `verify-captcha` 模块(ReVerify 滑块拼图、ReDragVerify 拖拽验证、ReImageVerify 图片验证码、ReSmsCode 短信倒计时)。本模块不重复其用法。
|
|
13
|
+
|
|
14
|
+
## 涉及文件
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
src/
|
|
18
|
+
├── api/login/index.ts # 认证 API(按后端实际接口调整字段)
|
|
19
|
+
├── store/modules/user.ts # useUserStore:login()、logOut()、token 管理
|
|
20
|
+
├── views/login/ # 登录页(设计自由,仅流程受规范)
|
|
21
|
+
├── utils/rule.ts # 表单校验规则
|
|
22
|
+
└── router/ # 认证页路由(showLink:false)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## API 模式
|
|
26
|
+
|
|
27
|
+
> 字段名和接口路径按后端实际定义,以下仅展示结构模式。**勿将字段当作硬约束**。
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// src/api/login/index.ts
|
|
31
|
+
import { http } from '@/utils/http'
|
|
32
|
+
|
|
33
|
+
// 接口参数类型 — 字段按后端实际定义
|
|
34
|
+
interface LoginParams {
|
|
35
|
+
[key: string]: any // 常见:账号、密码、验证码等,字段名不固定
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// 登录返回 — 结构按后端实际返回
|
|
39
|
+
interface LoginResult {
|
|
40
|
+
[key: string]: any // 常见:token、用户信息等,字段名不固定
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** 登录 */
|
|
44
|
+
export const getLogin = (data: LoginParams) => {
|
|
45
|
+
return http.request<Result<LoginResult>>('post', '/auth/login', { data })
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** 发送短信验证码 */
|
|
49
|
+
export const sendSmsCode = (params: Record<string, any>) => {
|
|
50
|
+
return http.request<Result<null>>('post', '/auth/sms-code', { data: params })
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// 注册/忘记密码 API 按需新增,遵循同一模式:
|
|
54
|
+
// 1. 参数类型用 interface 声明,字段按后端定义
|
|
55
|
+
// 2. 返回值用 Result<T> 包裹
|
|
56
|
+
// 3. 方法名语义化(getRegister、sendResetLink、resetPassword)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 认证流程模式
|
|
60
|
+
|
|
61
|
+
> 无论页面长什么样,认证流程必须遵循以下链路。
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
用户输入 → 表单校验 → [验证码校验] → 调用 API → useUserStore 处理 token → initRouter → 跳转首页
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 1. Store 集成
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
// store/modules/user.ts — 认证状态管理
|
|
71
|
+
export const useUserStore = defineStore('user', {
|
|
72
|
+
state: () => ({
|
|
73
|
+
token: '',
|
|
74
|
+
userInfo: null as any,
|
|
75
|
+
}),
|
|
76
|
+
actions: {
|
|
77
|
+
// 登录:调用 API → 存 token → 返回结果
|
|
78
|
+
async login(data: Record<string, any>) {
|
|
79
|
+
const res = await getLogin(data)
|
|
80
|
+
if (res.status === 200 && res.data) {
|
|
81
|
+
// token 存储方式按项目实际(localStorage / cookie / pinia 持久化)
|
|
82
|
+
this.token = res.data.accessToken ?? ''
|
|
83
|
+
// 用户信息按后端返回结构存储
|
|
84
|
+
this.userInfo = res.data
|
|
85
|
+
}
|
|
86
|
+
return res
|
|
87
|
+
},
|
|
88
|
+
// 退出
|
|
89
|
+
logOut() {
|
|
90
|
+
this.token = ''
|
|
91
|
+
this.userInfo = null
|
|
92
|
+
// 清除存储、跳转登录
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
})
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 2. 登录流程
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
// 登录页脚本 — 仅展示流程,页面模板设计自由
|
|
102
|
+
import { useUserStoreHook } from '@/store/modules/user'
|
|
103
|
+
import { getTopMenu, initRouter } from '@/utils/router'
|
|
104
|
+
|
|
105
|
+
const useUserStore = useUserStoreHook()
|
|
106
|
+
const router = useRouter()
|
|
107
|
+
const loading = ref(false)
|
|
108
|
+
|
|
109
|
+
async function handleLogin(formData: Record<string, any>) {
|
|
110
|
+
loading.value = true
|
|
111
|
+
try {
|
|
112
|
+
const res = await useUserStore.login(formData)
|
|
113
|
+
if (res.status === 200) {
|
|
114
|
+
// 初始化路由(动态路由/权限路由)
|
|
115
|
+
await initRouter(router)
|
|
116
|
+
// 跳转到首页或来源页
|
|
117
|
+
router.push(getTopMenu().path)
|
|
118
|
+
}
|
|
119
|
+
} finally {
|
|
120
|
+
loading.value = false
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 3. 注册流程
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// 注册页脚本 — 仅展示流程
|
|
129
|
+
import { getRegister } from '@/api/login'
|
|
130
|
+
|
|
131
|
+
async function handleRegister(formData: Record<string, any>) {
|
|
132
|
+
loading.value = true
|
|
133
|
+
try {
|
|
134
|
+
const res = await getRegister(formData)
|
|
135
|
+
if (res.status === 200) {
|
|
136
|
+
// 注册成功 → 跳转登录或自动登录
|
|
137
|
+
router.push('/login')
|
|
138
|
+
}
|
|
139
|
+
} finally {
|
|
140
|
+
loading.value = false
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 4. 忘记密码流程
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
// 忘记密码 — 分步流程,页面交互设计自由
|
|
149
|
+
const step = ref(1) // 步骤数按实际流程定
|
|
150
|
+
|
|
151
|
+
// 步骤 1:验证身份 → 发送重置凭证
|
|
152
|
+
async function handleSendReset(account: string) { /* 调用 API */ }
|
|
153
|
+
|
|
154
|
+
// 步骤 2:重置密码
|
|
155
|
+
async function handleReset(formData: Record<string, any>) { /* 调用 API */ }
|
|
156
|
+
|
|
157
|
+
// 步骤 3:完成 → 跳转登录
|
|
158
|
+
function handleDone() {
|
|
159
|
+
router.push('/login')
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## 路由配置
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
// 认证页路由统一约定
|
|
167
|
+
{
|
|
168
|
+
path: '/login',
|
|
169
|
+
name: 'Login',
|
|
170
|
+
component: () => import('@/views/login/index.vue'),
|
|
171
|
+
meta: {
|
|
172
|
+
title: '登录',
|
|
173
|
+
showLink: false, // 不在菜单显示
|
|
174
|
+
activePath: '/login', // 高亮路径
|
|
175
|
+
},
|
|
176
|
+
}
|
|
177
|
+
// 注册/忘记密码页同理:showLink: false + activePath
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## 表单校验模式
|
|
181
|
+
|
|
182
|
+
> 校验规则按业务实际调整,以下为常见模式。
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
import { loginRules } from '@/utils/rule'
|
|
186
|
+
|
|
187
|
+
// 必填校验
|
|
188
|
+
const rules = {
|
|
189
|
+
// 字段名按表单实际定义,不固定
|
|
190
|
+
account: [{ required: true, message: $t('请输入账号'), trigger: 'blur' }],
|
|
191
|
+
password: [{ required: true, message: $t('请输入密码'), trigger: 'blur' }],
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// 密码确认校验(注册/重置密码场景)
|
|
195
|
+
const confirmPasswordRule = {
|
|
196
|
+
validator: (rule: any, value: string, callback: any) => {
|
|
197
|
+
if (value !== formData.password) {
|
|
198
|
+
callback(new Error($t('两次密码不一致')))
|
|
199
|
+
} else {
|
|
200
|
+
callback()
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
trigger: 'blur',
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Must-do 清单
|
|
208
|
+
|
|
209
|
+
1. **认证流程链路**:`API → useUserStore.login() → initRouter() → 跳转`,勿另起流程
|
|
210
|
+
2. **页面设计自由**:布局、背景、交互形式由设计主导,本模块不约束视觉
|
|
211
|
+
3. **API 字段动态**:参数和返回值字段按后端实际定义,勿硬编码字段名
|
|
212
|
+
4. **验证码组件**:见 `verify-captcha` 模块,不在本模块重复
|
|
213
|
+
5. **路由约定**:认证页 `showLink: false` 不在菜单显示,`activePath` 指向自身
|
|
214
|
+
6. **路由白名单**:登录/注册/忘记密码页在路由守卫白名单中,无需 token
|
|
215
|
+
7. **国际化**:所有提示文案用 `$t()` 包裹
|
|
216
|
+
8. **密码确认**:注册和重置密码须有确认密码字段 + 自定义校验
|
|
217
|
+
9. **loading 状态**:提交期间禁用按钮,防止重复提交
|
package/references/crud-pages.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
skill: crud-pages
|
|
3
3
|
description: 查询列表页、表单页、标准 CRUD。含 useTableSearch、列表标准样板、表单约定。
|
|
4
4
|
scope: project
|
|
5
|
-
tags: [vue3, crud, list, form, detail, table, useTableSearch, page, layout]
|
|
5
|
+
tags: [vue3, crud, list, form, detail, table, useTableSearch, page, layout, 批量, 排序, 批量操作]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# CRUD 页面开发规范
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill: data-compare
|
|
3
|
+
description: 编辑页数据变更对比:v-compare、compareStore、ChangeSummaryService
|
|
4
|
+
scope: project
|
|
5
|
+
tags: [v-compare, 变更汇总, 变更对比, 数据对比, 字段对比, 高亮变更]
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# 数据变更对比
|
|
2
9
|
|
|
3
10
|
> 按本文件示例编写,复用 `v-compare` / `compareStore` / `ChangeSummaryService` 等已有能力,勿另起一套对比实现。
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill: flowchart-g6
|
|
3
|
+
description: '@antv/g6 + g6-extension-vue 流程图,支持 Vue 节点'
|
|
4
|
+
scope: project
|
|
5
|
+
tags: [g6, 流程图, 拓扑图, antv, G6流程图, 自定义流程图, 流程设计, 拓扑]
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# G6 流程图(@antv/g6 v5)
|
|
2
9
|
|
|
3
10
|
> 按本文件示例编写;必须使用选型表中的 `@antv/g6`(见 project-inventory),勿改用同类其他流程图库;新依赖须待确认。
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
skill: form-advanced
|
|
3
3
|
description: 弹窗(ReDialog / ReDialogResize)、远程下拉、级联、锚点、卡片选择、地址解析等高级表单能力。图标选择完整规范见 icons 模块。
|
|
4
4
|
scope: project
|
|
5
|
-
tags: [form, dialog, ReDialog, ReDialogResize, ReSelectQuery, ReCascader, iconPicker, anchor, address-parse]
|
|
5
|
+
tags: [form, dialog, ReDialog, ReDialogResize, ReSelectQuery, ReCascader, iconPicker, anchor, address-parse, 抽屉, 步骤条, 折叠面板, 穿梭框, 分步表单, 联动, 动态表单, 日历, 时间选择, 日期选择, 下拉选择, 拖动, 拖拽排序]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# 高级表单组件
|