@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.
- package/README.md +66 -214
- package/SKILL.md +165 -527
- package/package.json +2 -2
- package/references/api-check.md +187 -128
- package/references/base-code-dict.md +49 -48
- package/references/chart-echarts.md +61 -0
- package/references/code-quality.md +44 -15
- package/references/core-kernel.md +305 -0
- package/references/crud-pages.md +87 -261
- package/references/data-compare.md +502 -501
- package/references/data-mapping.md +218 -213
- package/references/data-screen.md +94 -79
- package/references/data-writeback.md +104 -104
- package/references/detail-page.md +100 -99
- package/references/directives-advanced.md +27 -4
- package/references/download-export.md +70 -68
- package/references/feedback-loading.md +62 -60
- package/references/feedback-ui.md +125 -111
- package/references/file-management.md +28 -7
- package/references/flowchart-g6.md +249 -244
- package/references/form-advanced.md +264 -26
- package/references/graph-relation.md +12 -7
- package/references/http-api.md +138 -103
- package/references/icons.md +326 -0
- package/references/layout-theme.md +1 -1
- package/references/mobile-h5.md +20 -0
- package/references/particles.md +143 -0
- package/references/permission-auth.md +8 -31
- package/references/project-inventory.md +175 -120
- package/references/qrcode-barcode.md +107 -92
- package/references/rich-text.md +85 -73
- package/references/seamless-scroll.md +40 -38
- package/references/table-vxe.md +114 -0
- package/references/tree-table.md +2 -1
- package/references/ui-components.md +5 -1
- package/references/verify-captcha.md +110 -96
- package/references/websocket-realtime.md +2 -1
- package/references/wechat-js.md +58 -0
- package/references/workflow-bpmn.md +207 -206
- package/references/advanced-ui.md +0 -302
- package/references/build-optim.md +0 -282
- package/references/vue-core.md +0 -209
|
@@ -1,92 +1,107 @@
|
|
|
1
|
-
# 二维码与条形码
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
</
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
1
|
+
# 二维码与条形码
|
|
2
|
+
|
|
3
|
+
> 按本文件示例编写,复用项目已有 `ReQrcode` / `ReBarcode` 等封装,勿另起一套码生成实现。
|
|
4
|
+
|
|
5
|
+
规范二维码/条形码生成组件的使用。在需要展示扫码、商品条码、票据二维码等场景时参照。
|
|
6
|
+
|
|
7
|
+
## 依赖(缺则先装)
|
|
8
|
+
|
|
9
|
+
| 包 | 版本 | 类型 |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `qrcode` | `1.5.4` | dependencies |
|
|
12
|
+
| `jsbarcode` | `3.12.3` | dependencies |
|
|
13
|
+
| `@types/qrcode` | `1.5.6` | **devDependencies** |
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm add qrcode@1.5.4 jsbarcode@3.12.3
|
|
17
|
+
pnpm add -D @types/qrcode@1.5.6
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 组件选型
|
|
21
|
+
|
|
22
|
+
| 场景 | 组件 | 底层库 |
|
|
23
|
+
| ------------------- | ----------- | ----------- |
|
|
24
|
+
| 二维码(支持 logo) | `ReQrcode` | `qrcode` |
|
|
25
|
+
| 条形码 | `ReBarcode` | `jsbarcode` |
|
|
26
|
+
|
|
27
|
+
## ReQrcode
|
|
28
|
+
|
|
29
|
+
```vue
|
|
30
|
+
<script setup lang="ts">
|
|
31
|
+
import ReQrcode from "@/components/ReQrcode";
|
|
32
|
+
import logoImg from "@/assets/logo.png";
|
|
33
|
+
|
|
34
|
+
const text = ref("https://example.com");
|
|
35
|
+
const logoUrl = ref(logoImg);
|
|
36
|
+
|
|
37
|
+
function onDone(url: string) {
|
|
38
|
+
console.log("生成完成:", url);
|
|
39
|
+
}
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<template>
|
|
43
|
+
<ReQrcode :text="text" :width="200" @done="onDone" />
|
|
44
|
+
|
|
45
|
+
<!-- 带 logo / 颜色配置 -->
|
|
46
|
+
<ReQrcode
|
|
47
|
+
:text="text"
|
|
48
|
+
:logo="logoUrl"
|
|
49
|
+
:width="200"
|
|
50
|
+
:options="{
|
|
51
|
+
color: { dark: '#55D187', light: '#2d8cf0' },
|
|
52
|
+
}"
|
|
53
|
+
@click="text = ''"
|
|
54
|
+
/>
|
|
55
|
+
</template>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Props
|
|
59
|
+
|
|
60
|
+
| Prop | 类型 | 默认值 | 说明 |
|
|
61
|
+
| ---------- | ------------------------ | ---------- | --------------------------- |
|
|
62
|
+
| `text` | `string \| array` | - | 二维码内容 |
|
|
63
|
+
| `tag` | `'canvas' \| 'img'` | `'canvas'` | 渲染标签;`img` 不支持 logo |
|
|
64
|
+
| `width` | `number` | `200` | 宽度(正方形) |
|
|
65
|
+
| `logo` | `string \| object` | - | logo 地址或配置对象 |
|
|
66
|
+
| `options` | `QRCodeRenderersOptions` | `{}` | qrcode.js 配置 |
|
|
67
|
+
| `disabled` | `boolean` | `false` | 是否显示过期遮罩 |
|
|
68
|
+
|
|
69
|
+
### Events
|
|
70
|
+
|
|
71
|
+
- `done(url)`:生成完成返回 base64 URL。
|
|
72
|
+
- `click`:点击二维码触发。
|
|
73
|
+
- `disabled-click`:点击过期遮罩触发。
|
|
74
|
+
|
|
75
|
+
## ReBarcode
|
|
76
|
+
|
|
77
|
+
```vue
|
|
78
|
+
<script setup lang="ts">
|
|
79
|
+
import ReBarcode from "@/components/ReBarcode";
|
|
80
|
+
|
|
81
|
+
const barcodeText = ref("HP12399300-12");
|
|
82
|
+
const options = reactive({
|
|
83
|
+
lineColor: "#990000",
|
|
84
|
+
background: "#eee",
|
|
85
|
+
});
|
|
86
|
+
</script>
|
|
87
|
+
|
|
88
|
+
<template>
|
|
89
|
+
<ReBarcode :text="barcodeText" />
|
|
90
|
+
<ReBarcode :text="barcodeText" type="EAN13" :options="options" />
|
|
91
|
+
</template>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Props
|
|
95
|
+
|
|
96
|
+
| Prop | 类型 | 默认值 | 说明 |
|
|
97
|
+
| --------- | ---------------------------- | ----------- | ------------------------------------------------------------ |
|
|
98
|
+
| `text` | `string` | - | 条形码内容 |
|
|
99
|
+
| `tag` | `'canvas' \| 'img' \| 'svg'` | `'canvas'` | 渲染标签 |
|
|
100
|
+
| `type` | `string` | `'CODE128'` | 编码格式:`CODE128` / `CODE39` / `EAN13` / `EAN8` / `UPC` 等 |
|
|
101
|
+
| `options` | `object` | `{}` | JsBarcode 完整配置 |
|
|
102
|
+
|
|
103
|
+
## 关键约定
|
|
104
|
+
|
|
105
|
+
1. 二维码内容为空时不渲染,需配合 `v-if` 或默认值处理。
|
|
106
|
+
2. logo 图片需考虑跨域;本地图片建议通过 `import` 引入。
|
|
107
|
+
3. 条形码 `type` 与 `options.format` 同时存在时,`type` 优先级更高。
|
package/references/rich-text.md
CHANGED
|
@@ -1,73 +1,85 @@
|
|
|
1
|
-
# 富文本编辑器
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
1
|
+
# 富文本编辑器
|
|
2
|
+
|
|
3
|
+
> 按本文件示例编写;富文本使用选型表中的 `@wangeditor/editor` + `ReRichText`,勿改用 Quill / TinyMCE 等;新依赖须待确认。
|
|
4
|
+
|
|
5
|
+
规范 wangEditor 富文本编辑器 ReRichText 的使用,含图片/视频上传与 v-model 同步。在需要富文本录入时参照。
|
|
6
|
+
|
|
7
|
+
## 依赖(缺则先装)
|
|
8
|
+
|
|
9
|
+
| 包 | 版本 |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `@wangeditor/editor` | `5.1.23` |
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pnpm add @wangeditor/editor@5.1.23
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 组件
|
|
18
|
+
|
|
19
|
+
使用 `ReRichText` 封装 `@wangeditor/editor`。
|
|
20
|
+
|
|
21
|
+
```vue
|
|
22
|
+
<script setup lang="ts">
|
|
23
|
+
import ReRichText from "@/components/ReRichText";
|
|
24
|
+
|
|
25
|
+
const content = ref("");
|
|
26
|
+
const attachmentIds = ref<string[]>([]);
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<template>
|
|
30
|
+
<ReRichText
|
|
31
|
+
v-model="content"
|
|
32
|
+
v-model:attachment-ids="attachmentIds"
|
|
33
|
+
:height="300"
|
|
34
|
+
placeholder="请输入内容"
|
|
35
|
+
:toolbar-config="{ excludeKeys: ['insertImage', 'insertVideo'] }"
|
|
36
|
+
:upload-params="{ bizKey: 'news_001', projectStage: 'draft' }"
|
|
37
|
+
/>
|
|
38
|
+
</template>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Props
|
|
42
|
+
|
|
43
|
+
| Prop | 类型 | 默认值 | 说明 |
|
|
44
|
+
| ----------------- | ------------------ | ------------------------------------------------- | ---------------- |
|
|
45
|
+
| `modelValue` | `string` | `''` | HTML 内容 |
|
|
46
|
+
| `height` | `string \| number` | `300` | 编辑器高度 |
|
|
47
|
+
| `placeholder` | `string` | `'请输入内容'` | 占位文案 |
|
|
48
|
+
| `disabled` | `boolean` | `false` | 只读模式 |
|
|
49
|
+
| `uploadImagePath` | `string` | `'/documentInfo/uploadFile'` | 图片上传接口路径 |
|
|
50
|
+
| `uploadVideoPath` | `string` | `'/documentInfo/uploadFile'` | 视频上传接口路径 |
|
|
51
|
+
| `bizKey` | `string` | `''` | 业务主键 |
|
|
52
|
+
| `projectStage` | `string` | `''` | 附件阶段 |
|
|
53
|
+
| `uploadParams` | `object` | `{}` | 上传额外参数 |
|
|
54
|
+
| `toolbarConfig` | `object` | `{ excludeKeys: ['insertImage', 'insertVideo'] }` | 工具栏配置 |
|
|
55
|
+
|
|
56
|
+
## Events
|
|
57
|
+
|
|
58
|
+
- `update:modelValue(html)`:内容同步。
|
|
59
|
+
- `change(html)`:内容变化回调。
|
|
60
|
+
|
|
61
|
+
## 上传模式
|
|
62
|
+
|
|
63
|
+
当前启用 **自定义上传**(`customUpload`),通过项目统一 `getUploadUrl` 接口上传:
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
// 关键参数
|
|
67
|
+
{
|
|
68
|
+
multipartFile: file,
|
|
69
|
+
...uploadParams,
|
|
70
|
+
bizKey,
|
|
71
|
+
projectStage,
|
|
72
|
+
attachmentType: 'news_image',
|
|
73
|
+
fileType: getFileType(file.name),
|
|
74
|
+
operatorCode: userStore.userCode || ''
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
如需切换为 wangEditor 默认 server 模式,注释 `customUpload` 并开放 `server`、`customInsert` 等配置。
|
|
79
|
+
|
|
80
|
+
## 关键约定
|
|
81
|
+
|
|
82
|
+
1. 编辑器实例在 `onBeforeUnmount` 中销毁,避免内存泄漏。
|
|
83
|
+
2. 空内容使用 `editor.isEmpty()` 判断,图片/视频等非文本场景也能正确处理。
|
|
84
|
+
3. 上传成功后会将附件 ID 追加到 `attachmentIds`,用于业务关联。
|
|
85
|
+
4. 全屏编辑时自动启用编辑器,退出后恢复 `disabled` 状态。
|
|
@@ -1,38 +1,40 @@
|
|
|
1
|
-
# 无缝滚动
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
</
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
1
|
+
# 无缝滚动
|
|
2
|
+
|
|
3
|
+
> 按本文件示例编写,复用项目已有 `ReSeamlessScroll` 等封装,勿另起一套滚动实现。
|
|
4
|
+
|
|
5
|
+
规范无缝滚动、无限滚动列表与轮播滚动效果。在需要公告栏、排行榜、滚动列表时参照。
|
|
6
|
+
|
|
7
|
+
## 组件
|
|
8
|
+
|
|
9
|
+
使用 `ReSeamlessScroll` 实现无缝滚动:
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<ReSeamlessScroll :data="list" :class-option="classOption">
|
|
13
|
+
<ul>
|
|
14
|
+
<li v-for="item in list" :key="item.id">
|
|
15
|
+
{{ item.title }}
|
|
16
|
+
</li>
|
|
17
|
+
</ul>
|
|
18
|
+
</ReSeamlessScroll>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 常用配置
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
const classOption = {
|
|
25
|
+
step: 1, // 步长
|
|
26
|
+
limitMoveNum: 5, // 启动滚动的最小数据量
|
|
27
|
+
hoverStop: true, // 鼠标悬停停止
|
|
28
|
+
direction: "top", // top | bottom | left | right
|
|
29
|
+
singleHeight: 0, // 单步停顿高度
|
|
30
|
+
singleWidth: 0,
|
|
31
|
+
waitTime: 1000, // 单步停顿时间
|
|
32
|
+
autoPlay: true,
|
|
33
|
+
};
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 关键约定
|
|
37
|
+
|
|
38
|
+
1. 数据量小于 `limitMoveNum` 时不滚动。
|
|
39
|
+
2. 水平滚动时内容需要足够宽;垂直滚动时容器需要固定高度。
|
|
40
|
+
3. 组件内部会复制一份内容实现无缝效果,DOM 操作-heavy 场景避免数据频繁更新。
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill: table-vxe
|
|
3
|
+
description: vxe-table / vxe-pc-ui 高性能表格规范。大数据量或复杂网格编辑时加载。自带完整示例。
|
|
4
|
+
scope: project
|
|
5
|
+
tags: [vxe-table, vxe-pc-ui, grid, performance, table]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# VXE 高性能表格
|
|
9
|
+
|
|
10
|
+
> **何时命中**:数据量大(建议 >1000 行)、虚拟滚动、复杂网格。
|
|
11
|
+
> **反例**:普通 CRUD 分页列表优先 `el-table` + `useTableSearch`(`crud-pages`),不要滥用 VXE。
|
|
12
|
+
|
|
13
|
+
## 依赖(缺则先装)
|
|
14
|
+
|
|
15
|
+
| 包 | 版本 |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `vxe-table` | `4.19.21` |
|
|
18
|
+
| `vxe-pc-ui` | `4.15.19` |
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pnpm add vxe-table@4.19.21 vxe-pc-ui@4.15.19
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
选型表已指定,勿改用 ag-grid 等。注册方式以项目 `main.ts` 现有 vxe 注册为准。
|
|
25
|
+
|
|
26
|
+
## 必须复用
|
|
27
|
+
|
|
28
|
+
- HTTP / 分页约定仍走 `@/utils/http` + `Result<T>`
|
|
29
|
+
|
|
30
|
+
## 完整示例
|
|
31
|
+
|
|
32
|
+
```vue
|
|
33
|
+
<script setup lang="ts">
|
|
34
|
+
import type { VxeGridInstance, VxeGridProps } from "vxe-table";
|
|
35
|
+
import { http } from "@/utils/http";
|
|
36
|
+
|
|
37
|
+
defineOptions({ name: "OrderVxeList" });
|
|
38
|
+
|
|
39
|
+
interface RowVO {
|
|
40
|
+
id: string;
|
|
41
|
+
name: string;
|
|
42
|
+
status: number;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const gridRef = ref<VxeGridInstance>();
|
|
46
|
+
const loading = ref(false);
|
|
47
|
+
|
|
48
|
+
const gridOptions = reactive<VxeGridProps<RowVO>>({
|
|
49
|
+
border: true,
|
|
50
|
+
height: 600,
|
|
51
|
+
loading: false,
|
|
52
|
+
rowConfig: { keyField: "id" },
|
|
53
|
+
columnConfig: { resizable: true },
|
|
54
|
+
columns: [
|
|
55
|
+
{ type: "seq", width: 60 },
|
|
56
|
+
{ field: "name", title: "名称", minWidth: 140 },
|
|
57
|
+
{
|
|
58
|
+
field: "status",
|
|
59
|
+
title: "状态",
|
|
60
|
+
width: 100,
|
|
61
|
+
formatter: ({ cellValue }) => (cellValue === 1 ? "启用" : "禁用"),
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
data: [],
|
|
65
|
+
pagerConfig: {
|
|
66
|
+
total: 0,
|
|
67
|
+
currentPage: 1,
|
|
68
|
+
pageSize: 20,
|
|
69
|
+
pageSizes: [20, 50, 100],
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
async function loadData() {
|
|
74
|
+
loading.value = true;
|
|
75
|
+
gridOptions.loading = true;
|
|
76
|
+
try {
|
|
77
|
+
const pager = gridOptions.pagerConfig!;
|
|
78
|
+
const res = await http.request<
|
|
79
|
+
Result<{ content?: RowVO[]; totalCount?: number }>
|
|
80
|
+
>("post", `${import.meta.env.VITE_API_BASE_URL}/console/order/list`, {
|
|
81
|
+
data: {
|
|
82
|
+
pageNo: pager.currentPage,
|
|
83
|
+
pageSize: pager.pageSize,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
if (res.status === 200) {
|
|
87
|
+
gridOptions.data = res.data?.content || [];
|
|
88
|
+
pager.total = res.data?.totalCount || 0;
|
|
89
|
+
}
|
|
90
|
+
} finally {
|
|
91
|
+
loading.value = false;
|
|
92
|
+
gridOptions.loading = false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function onPageChange({ currentPage, pageSize }: { currentPage: number; pageSize: number }) {
|
|
97
|
+
gridOptions.pagerConfig!.currentPage = currentPage;
|
|
98
|
+
gridOptions.pagerConfig!.pageSize = pageSize;
|
|
99
|
+
loadData();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
onMounted(() => loadData());
|
|
103
|
+
</script>
|
|
104
|
+
|
|
105
|
+
<template>
|
|
106
|
+
<vxe-grid ref="gridRef" v-bind="gridOptions" @page-change="onPageChange" />
|
|
107
|
+
</template>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## 额外审查
|
|
111
|
+
|
|
112
|
+
- [ ] 未对普通小列表强行上 VXE
|
|
113
|
+
- [ ] 未引入其它表格库
|
|
114
|
+
- [ ] 分页字段与项目一致(`pageNo`/`pageSize`/`content`/`totalCount`)
|
package/references/tree-table.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# 树形表格与树结构
|
|
2
2
|
|
|
3
|
+
> 使用 `handleTree` / `ReTreeLine` + `el-table` tree,按本示例编写。
|
|
4
|
+
|
|
3
5
|
## 树结构工具函数
|
|
4
6
|
|
|
5
7
|
### handleTree — 扁平转树
|
|
@@ -108,4 +110,3 @@ import { ReTreeLine } from '@/components/ReTreeLine'
|
|
|
108
110
|
|
|
109
111
|
- [src/utils/tree.ts](file:///e:/work/vue3-web-temp/src/utils/tree.ts)
|
|
110
112
|
- [src/components/ReTreeLine/index.ts](file:///e:/work/vue3-web-temp/src/components/ReTreeLine/index.ts)
|
|
111
|
-
- [src/views/table/treeTable/index.vue](file:///e:/work/vue3-web-temp/src/views/table/treeTable/index.vue)
|
|
@@ -7,6 +7,9 @@ tags: [vue3, component, re-component, library, typescript]
|
|
|
7
7
|
|
|
8
8
|
# Re* 自定义组件开发规范
|
|
9
9
|
|
|
10
|
+
> 新建公共组件时加载。
|
|
11
|
+
> **核心 vs 附加**:核心 Re* 清单见 `core-kernel` / `project-inventory`;附件、图表、验证码等归各专项模块,勿在无业务场景时塞进默认 CRUD。
|
|
12
|
+
|
|
10
13
|
## 组件目录结构
|
|
11
14
|
|
|
12
15
|
每个 Re 组件必须遵循以下目录结构:
|
|
@@ -143,7 +146,8 @@ function handleChange(page: number, size: number) {
|
|
|
143
146
|
| ReVerify | 验证码 | 图形/滑块/拖拽验证 |
|
|
144
147
|
| ReSeamlessScroll | 无缝滚动 | 支持多方向 |
|
|
145
148
|
| ReNoticeBar | 通知栏 | 滚动/关闭 |
|
|
146
|
-
| ReIconPicker | 图标选择器 |
|
|
149
|
+
| ReIconPicker | 图标选择器 | 完整规范见 `icons` 模块 |
|
|
150
|
+
| ReSvgIcon | 全局 svg-icon | 本地 + Iconify;见 `icons` |
|
|
147
151
|
| ReSegmented | 分段控制器 | 自定义选项 |
|
|
148
152
|
| ReCheckCard | 多选卡片 | 卡片式选择 |
|
|
149
153
|
| ReTreeLine | 树形连线 | 树结构可视化 |
|