@qilitt-mickey/vue3-temp-skill 1.1.13 → 1.1.15

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.
@@ -163,51 +163,53 @@
163
163
 
164
164
  ## 二、Re* 自定义组件清单
165
165
 
166
- > 所有自定义组件以 `Re` 为前缀,目录结构统一为 `ReXxx/src/xxx.vue` + `index.ts` + `type.ts`。
167
- > **开发新功能时,必须先检查此清单是否已有对应组件,禁止重复造轮子。**
168
-
169
- | 组件 | 用途 | 所在目录 |
170
- |---|---|---|
171
- | **ReAnchor** | 锚点导航(滚动定位) | `src/components/ReAnchor/` |
172
- | **ReAttachment** | 附件上传/管理 | `src/components/ReAttachment/` |
173
- | **ReAuth** | 权限包裹(按 auth code 控制显隐) | `src/components/ReAuth/` |
174
- | **ReAvatars** | 用户头像展示 | `src/components/ReAvatars/` |
175
- | **ReBarcode** | 条形码生成 | `src/components/ReBarcode/` |
176
- | **ReCascader** | 级联选择器 | `src/components/ReCascader/` |
177
- | **ReCheckCard** | 卡片选择(多选) | `src/components/ReCheckCard/` |
178
- | **ReCollapsible** | 折叠面板 | `src/components/ReCollapsible/` |
179
- | **ReDatePicker** | 日期选择器 | `src/components/ReDatePicker/` |
180
- | **ReDateRangePicker** | 日期范围选择器 | `src/components/ReDateRangePicker/` |
181
- | **ReDialog** | 弹窗 | `src/components/ReDialog/` |
182
- | **ReDialogResize** | 可拖拽缩放弹窗 | `src/components/ReDialogResize/` |
183
- | **ReDragVerify** | 拖拽验证(滑块验证) | `src/components/ReDragVerify/` |
184
- | **ReEchart** | ECharts 图表容器 | `src/components/ReEchart/` |
185
- | **ReFileViewer** | 文件预览(Office/PDF) | `src/components/ReFileViewer/` |
186
- | **ReFlicker** | 闪烁点效果 | `src/components/ReFlicker/` |
187
- | **ReGrid** | 栅格布局容器 | `src/components/ReGrid/` |
188
- | **ReGridItem** | 栅格子项 | `src/components/ReGridItem/` |
189
- | **ReHeaderPage** | 页面头部(标题/面包屑) | `src/components/ReHeaderPage/` |
190
- | **ReIconPicker** | 图标选择器 | `src/components/ReIconPicker/` |
191
- | **ReImageVerify** | 图片验证码 | `src/components/ReImageVerify/` |
192
- | **ReLanguageSwitch** | 语言切换 | `src/components/ReLanguageSwitch/` |
193
- | **ReNoticeBar** | 通知栏(长文本滚动) | `src/components/ReNoticeBar/` |
194
- | **RePagination** | 分页器 | `src/components/RePagination/` |
195
- | **RePopupPicker** | 弹出式选择器(移动端) | `src/components/RePopupPicker/` |
196
- | **ReQrcode** | 二维码生成 | `src/components/ReQrcode/` |
197
- | **ReRichText** | 富文本编辑器 | `src/components/ReRichText/` |
198
- | **ReSeamlessScroll** | 无缝滚动容器 | `src/components/ReSeamlessScroll/` |
199
- | **ReSegmented** | 分段控制器 | `src/components/ReSegmented/` |
200
- | **ReSelectQuery** | 远程搜索选择器(带分页) | `src/components/ReSelectQuery/` |
201
- | **ReSelectVant** | 移动端选择器 | `src/components/ReSelectVant/` |
202
- | **ReSmsCode** | 短信验证码倒计时按钮 | `src/components/ReSmsCode/` |
203
- | **ReSvgIcon** | SVG 图标 | `src/components/ReSvgIcon/` |
204
- | **ReTableBar** | 表格工具栏 | `src/components/ReTableBar/` |
205
- | **ReTableOperate** | 表格操作按钮(增删改查) | `src/components/ReTableOperate/` |
206
- | **ReText** | 文本展示(智能省略/tooltip) | `src/components/ReText/` |
207
- | **ReTimeLine** | 时间轴 | `src/components/ReTimeLine/` |
208
- | **ReTreeLine** | 树形连线 | `src/components/ReTreeLine/` |
209
- | **ReTypeit** | 打字机动画 | `src/components/ReTypeit/` |
210
- | **ReVerify** | 滑块拼图验证 | `src/components/ReVerify/` |
166
+ > 所有自定义组件以 `Re` 为前缀。开发前先查本表,禁止重复造轮子。
167
+ > **用法**按功能模块写(见 `ui-components` 索引),本表只做名录 + 落点。
168
+
169
+ | 组件 | 用途 | 目录 | 用法模块 |
170
+ |---|---|---|---|
171
+ | **ReAnchor** | 锚点导航 | `ReAnchor/` | `form-advanced` |
172
+ | **ReAttachment** | 附件上传/管理 | `ReAttachment/` | `file-management` |
173
+ | **ReAuth** | 权限包裹 | `ReAuth/` | `permission-auth` |
174
+ | **ReAvatars** | 头像组 | `ReAvatars/` | 业务页 / `data-screen` |
175
+ | **ReBarcode** | 条形码 | `ReBarcode/` | `qrcode-barcode` |
176
+ | **ReCascader** | 级联选择 | `ReCascader/` | `form-advanced` |
177
+ | **ReCheckCard** | 卡片多选 | `ReCheckCard/` | `form-advanced` |
178
+ | **ReCollapsible** | 折叠 | `ReCollapsible/` | `form-advanced` |
179
+ | **ReDatePicker** | 日期 | `ReDatePicker/` | `form-advanced` |
180
+ | **ReDateRangePicker** | 日期范围 | `ReDateRangePicker/` | `form-advanced` |
181
+ | **ReDialog** | 弹窗(`fullscreen` 默认 false) | `ReDialog/` | `form-advanced` |
182
+ | **ReDialogResize** | 可缩放弹窗 | `ReDialogResize/` | `form-advanced` |
183
+ | **ReDragVerify** | 滑块拖拽验证 | `ReDragVerify/` | `verify-captcha` |
184
+ | **ReEchart** | ECharts 容器 | `ReEchart/` | `chart-echarts` |
185
+ | **ReFileViewer** | 文件预览 | `ReFileViewer/` | `file-management` |
186
+ | **ReFlicker** | 闪烁点 | `ReFlicker/` | `data-screen` |
187
+ | **ReGrid** | 响应式栅格 | `ReGrid/` | `crud-pages` |
188
+ | **ReGridItem** | 栅格子项 | `ReGridItem/` | `crud-pages` |
189
+ | **ReHeaderPage** | 页头 | `ReHeaderPage/` | `crud-pages` / `detail-page` |
190
+ | **ReIconPicker** | 图标选择 | `ReIconPicker/` | `icons` |
191
+ | **ReImageVerify** | 图形验证码 | `ReImageVerify/` | `verify-captcha` |
192
+ | **ReLanguageSwitch** | 语言切换 | `ReLanguageSwitch/` | `layout-theme` |
193
+ | **ReNoticeBar** | 通知栏 | `ReNoticeBar/` | `feedback-loading` |
194
+ | **RePagination** | 分页 | `RePagination/` | `crud-pages` |
195
+ | **RePopupPicker** | 移动端弹出选择 | `RePopupPicker/` | `mobile-h5` |
196
+ | **ReQrcode** | 二维码 | `ReQrcode/` | `qrcode-barcode` |
197
+ | **ReRichText** | 富文本 | `ReRichText/` | `rich-text` |
198
+ | **ReSeamlessScroll** | 无缝滚动 | `ReSeamlessScroll/` | `seamless-scroll` |
199
+ | **ReSegmented** | 分段控制 | `ReSegmented/` | `layout-theme` |
200
+ | **ReSelectQuery** | 远程分页选择 | `ReSelectQuery/` | `form-advanced` |
201
+ | **ReSelectVant** | 移动端选择 | `ReSelectVant/` | `mobile-h5` |
202
+ | **ReSmsCode** | 短信倒计时 | `ReSmsCode/` | `verify-captcha` |
203
+ | **ReSvgIcon** | SVG / Iconify | `ReSvgIcon/` | `icons` |
204
+ | **ReTableBar** | 表格工具栏 | `ReTableBar/` | `crud-pages` |
205
+ | **ReTableOperate** | 行操作 | `ReTableOperate/` | `crud-pages` |
206
+ | **ReText** | 文本省略 | `ReText/` | `layout-theme` |
207
+ | **ReTimeLine** | 时间轴 | `ReTimeLine/` | `detail-page` / 业务 |
208
+ | **ReTreeLine** | 树连线 | `ReTreeLine/` | `tree-table` |
209
+ | **ReTypeit** | 打字机 | `ReTypeit/` | `data-screen` |
210
+ | **ReVerify** | 拼图验证 | `ReVerify/` | `verify-captcha` |
211
+
212
+ 路径前缀均为 `src/components/`。
211
213
 
212
214
  ---
213
215
 
@@ -217,7 +219,7 @@
217
219
 
218
220
  | Hook | 用途 | 关键 API |
219
221
  |---|---|---|
220
- | **useApp** | 全局应用状态(布局、字典、登出等) | `baseCodeGet(codeType)`、`filterValue()`、`headerHeight`、`svgLoading` |
222
+ | **useApp** | 全局应用状态(布局、字典、登出等) | `baseCodeGet`、`filterValue`、`svgLoading`、`layout`、`logout` 等;顶栏高度不由此导出 |
221
223
  | **useDetail** | 列表→详情:写顶部 tag 并跳转 | `toDetail(name, params, title?, 'query'\|'params')`、`initToDetail(name)`、`getParameter`;路由配 `showLink:false`(不进侧栏)+`activePath`(见 `detail-page`) |
222
224
  | **useFormCheck** | 多表单校验聚合 | 追踪各字段校验状态,emit `form-validate` 事件 |
223
225
  | **useTableSearch** | 列表页搜索/分页/Loading/动态表高 | `content`(须绑 `el-card.vts-page-card`)、`multipleTableRef`(建议绑 `el-table`)、`otherRef`(表上方额外模块)、`tableHeight`(卡片底边 − 表格顶边 − 分页;空数据仍有占位高)、`paginationRef`、`tableData`、`pagination`、`loading`、`onSearch()`、`reset()`、`formRef`、`gridRef`、`collapsed` / `showCollapse` / `collapsedToggle` |
@@ -1,165 +1,67 @@
1
1
  ---
2
2
  skill: ui-components
3
- description: 规范 Re* 前缀自定义组件的目录结构、导出方式、类型定义和开发流程。在创建或修改公共组件时调用。
3
+ description: Re* 公共组件目录/导出/类型约定;用法按功能模块分散在各 references,本文件只做索引与新建规范。
4
4
  scope: project
5
5
  tags: [vue3, component, re-component, library, typescript]
6
6
  ---
7
7
 
8
- # Re* 自定义组件开发规范
8
+ # Re* 自定义组件
9
9
 
10
- > 新建公共组件时加载。
11
- > **核心 vs 附加**:核心 Re* 清单见 `core-kernel` / `project-inventory`;附件、图表、验证码等归各专项模块,勿在无业务场景时塞进默认 CRUD。
10
+ > **新建/改公共组件**时读本文件(目录与导出)。
11
+ > **业务用法与样板**不在此堆砌——按功能进对应模块(下表)。名录见 `project-inventory` 第二节。
12
12
 
13
- ## 组件目录结构
13
+ ## 用法按模块(禁止把示例全堆本文件)
14
14
 
15
- 每个 Re 组件必须遵循以下目录结构:
15
+ | 功能 | 组件 | 读 |
16
+ |------|------|-----|
17
+ | 列表 / CRUD | ReTableBar、ReGrid、ReGridItem、RePagination、ReTableOperate、ReHeaderPage | `crud-pages` |
18
+ | 弹窗 / 高级表单 | ReDialog、ReDialogResize、ReSelectQuery、ReCascader、ReCheckCard、ReCollapsible、ReAnchor、ReDatePicker、ReDateRangePicker | `form-advanced` |
19
+ | 权限 | ReAuth | `permission-auth` |
20
+ | 图标 | ReSvgIcon、ReIconPicker | `icons` |
21
+ | 附件 / 预览 | ReAttachment、ReFileViewer | `file-management` |
22
+ | 富文本 | ReRichText | `rich-text` |
23
+ | 图表 | ReEchart | `chart-echarts` |
24
+ | 验证码 | ReVerify、ReDragVerify、ReImageVerify、ReSmsCode | `verify-captcha` |
25
+ | 码图 | ReQrcode、ReBarcode | `qrcode-barcode` |
26
+ | 无缝滚动 | ReSeamlessScroll | `seamless-scroll` |
27
+ | 树表 | ReTreeLine | `tree-table` |
28
+ | 布局壳辅助 | ReSegmented、ReLanguageSwitch、ReText、ReNoticeBar | `layout-theme`(展示类)+ 组件源码 |
29
+ | 移动端 | ReSelectVant、RePopupPicker | `mobile-h5` |
30
+ | 大屏点缀 | ReFlicker、ReTypeit、ReTimeLine、ReAvatars | `data-screen` / 对应业务页 |
16
31
 
17
- ```
18
- src/components/RePagination/
19
- ├── src/
20
- │ └── pagination.vue # 组件实现文件
21
- ├── index.ts # 统一导出入口
22
- └── type.ts # 类型定义(Props / Emits / Slots)
23
- ```
24
-
25
- ### 规则说明
26
-
27
- 1. 组件目录使用大驼峰命名:`Re[ComponentName]`。
28
- 2. 组件实现文件放在 `src/` 子目录下,使用短横线命名:`pagination.vue`。
29
- 3. `index.ts` 是组件的唯一导出入口,外部通过 `import { RePagination } from "@/components/RePagination"` 引入。
30
- 4. `type.ts` 集中定义 Props、Emits、Slots 类型。
32
+ 新建 Re* 后:在 `project-inventory` 第二节补一行,并在上表对应模块补用法(有则补强,无则新增小节)。
31
33
 
32
- ## 导出模式
34
+ ## 目录与导出
33
35
 
34
- ### index.ts 标准写法
36
+ 优先对齐仓库现有形态:
35
37
 
36
- ```typescript
37
- // src/components/RePagination/index.ts
38
- import pagination from "./src/pagination.vue";
39
-
40
- export const RePagination = pagination;
41
- export default RePagination;
42
38
  ```
43
-
44
- ### 多组件导出
45
-
46
- 如果一个目录下有多个组件:
47
-
48
- ```typescript
49
- // src/components/ReDialog/index.ts
50
- import dialog from "./src/dialog.vue";
51
- import dialogHeader from "./src/dialog-header.vue";
52
-
53
- export const ReDialog = dialog;
54
- export const ReDialogHeader = dialogHeader;
55
- export default ReDialog;
39
+ src/components/ReXxx/
40
+ ├── src/index.vue # 或 src/xxx.vue(以该组件仓库为准)
41
+ ├── index.ts # withInstall / 具名导出
42
+ ├── type.ts # 可选;复杂 Props 必有
43
+ └── hook.ts # 可选
56
44
  ```
57
45
 
58
- ## 类型定义
59
-
60
- ### type.ts 标准写法
61
-
62
46
  ```typescript
63
- // src/components/RePagination/type.ts
64
- import type { ComponentPublicInstance } from "vue";
47
+ // index.ts 常见写法
48
+ import { withInstall } from '@pureadmin/utils'
49
+ import comp from './src/index.vue'
65
50
 
66
- export interface RePaginationProps {
67
- /** 当前页码 */
68
- currentPage: number;
69
- /** 每页条数 */
70
- pageSize: number;
71
- /** 总条数 */
72
- total: number;
73
- /** 每页条数选项 */
74
- pageSizes?: number[];
75
- /** 是否显示总数 */
76
- showTotal?: boolean;
77
- }
78
-
79
- export interface RePaginationEmits {
80
- (e: "update:currentPage", page: number): void;
81
- (e: "update:pageSize", size: number): void;
82
- (e: "change", page: number, size: number): void;
83
- }
84
-
85
- export type RePaginationInstance = ComponentPublicInstance<RePaginationProps>;
51
+ export const ReXxx = withInstall(comp)
52
+ export default ReXxx
86
53
  ```
87
54
 
88
- ### 类型约定
89
-
90
- 1. Props 类型命名:`Re[ComponentName]Props`。
91
- 2. Emits 类型命名:`Re[ComponentName]Emits`,使用函数签名格式。
92
- 3. 如需在组件外部引用实例类型,导出 `Re[ComponentName]Instance`。
93
- 4. 每个 Props 字段必须写 JSDoc 注释说明用途。
94
-
95
- ## 组件实现模板
96
-
97
- ```vue
98
- <script setup lang="ts">
99
- import type { ReComponentNameProps, ReComponentNameEmits } from "../../type";
100
-
101
- defineOptions({
102
- name: "ReComponentName",
103
- });
104
-
105
- const props = withDefaults(defineProps<ReComponentNameProps>(), {
106
- pageSizes: () => [10, 20, 50, 100],
107
- showTotal: true,
108
- });
109
-
110
- const emit = defineEmits<ReComponentNameEmits>();
111
-
112
- function handleChange(page: number, size: number) {
113
- emit("update:currentPage", page);
114
- emit("update:pageSize", size);
115
- emit("change", page, size);
116
- }
117
- </script>
118
-
119
- <template>
120
- <div class="re-component-name">
121
- <!-- 组件内容 -->
122
- </div>
123
- </template>
124
-
125
- <style lang="scss" scoped>
126
- .re-component-name {
127
- /* 样式 */
128
- }
129
- </style>
130
- ```
55
+ 规则:大驼峰目录名;外部只从 `@/components/ReXxx` 引入;`defineOptions({ name })`;样式默认 `scoped`。
131
56
 
132
- ## 现有 Re 组件清单
57
+ ## 类型
133
58
 
134
- | 组件名 | 用途 | 关键特性 |
135
- |--------|------|----------|
136
- | ReDialog | 弹窗 | 拖拽、全屏、表单嵌套 |
137
- | RePagination | 分页 | 配合 useTableSearch |
138
- | ReTableBar | 表格工具栏 | 列配置、密度、全屏 |
139
- | ReGrid | 数据表格 | 基于 el-table 封装 |
140
- | ReTableOperate | 操作列 | 按钮组、权限控制 |
141
- | ReSelectQuery | 查询选择器 | 下拉+搜索+分页 |
142
- | ReCascader | 级联选择 | 支持异步加载 |
143
- | ReRichText | 富文本编辑器 | 基于 wangEditor |
144
- | ReQrcode | 二维码 | 支持 Logo 嵌入 |
145
- | ReBarcode | 条形码 | 多种编码格式 |
146
- | ReVerify | 验证码 | 图形/滑块/拖拽验证 |
147
- | ReSeamlessScroll | 无缝滚动 | 支持多方向 |
148
- | ReNoticeBar | 通知栏 | 滚动/关闭 |
149
- | ReIconPicker | 图标选择器 | 完整规范见 `icons` 模块 |
150
- | ReSvgIcon | 全局 svg-icon | 本地 + Iconify;见 `icons` |
151
- | ReSegmented | 分段控制器 | 自定义选项 |
152
- | ReCheckCard | 多选卡片 | 卡片式选择 |
153
- | ReTreeLine | 树形连线 | 树结构可视化 |
154
- | ReFlicker | 闪烁效果 | 数据大屏常用 |
155
- | ReTypeit | 打字效果 | 逐字显示动画 |
156
- | ReAuth | 权限组件 | 按钮级权限控制 |
59
+ - `ReXxxProps` / `ReXxxEmits`;字段 JSDoc
60
+ - 需要实例类型时导出 `ReXxxInstance`
157
61
 
158
- ## 常见反例
62
+ ## 反例
159
63
 
160
- - 组件没有 `index.ts` 导出文件,外部直接引用 `.vue` 文件。
161
- - Props 类型内联在组件中,没有抽取到 `type.ts`。
162
- - 组件 `name` 没有使用 `defineOptions` 显式声明。
163
- - 样式没有使用 `scoped`,导致全局污染。
164
- - 组件 class 名没有使用 `re-` 前缀。
165
- - Props 字段没有 JSDoc 注释。
64
+ - 业务直接 `import …/src/index.vue`
65
+ - 无 `index.ts`
66
+ - 重复造已有 Re*(先查 inventory)
67
+ - 在本文件粘贴各模块完整业务样板(应写到对应功能模块)