@a2simcode/ui 0.0.83 → 0.0.84
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/.cursor/skills/ui-component-helper/README.md +86 -43
- package/.cursor/skills/ui-component-helper/SKILL.md +115 -81
- package/LICENSE +53 -53
- package/README.md +156 -156
- package/dist/components/input/index.d.ts +6 -0
- package/dist/components/input/src/input.vue.d.ts +10 -0
- package/dist/components/input-layer/index.d.ts +1 -3
- package/dist/components/input-layer/src/input-layer.vue.d.ts +1 -3
- package/dist/components/tabs/index.d.ts +25 -25
- package/dist/components/tabs/src/tabs.vue.d.ts +10 -10
- package/dist/simcode-ui.es.js +12305 -12674
- package/dist/simcode-ui.umd.js +2 -2
- package/dist/stats.html +37 -36
- package/dist/ui.css +2 -1
- package/docs/components/autocomplete.md +89 -89
- package/docs/components/barcode.md +101 -101
- package/docs/components/button-select.md +24 -24
- package/docs/components/button.md +117 -117
- package/docs/components/buttons.md +119 -119
- package/docs/components/cascader-select.md +114 -114
- package/docs/components/checkbox.md +114 -114
- package/docs/components/code-mirror.md +85 -85
- package/docs/components/collapse.md +26 -26
- package/docs/components/comp.md +71 -71
- package/docs/components/count-up.md +24 -24
- package/docs/components/count.md +24 -24
- package/docs/components/data-panel.md +24 -24
- package/docs/components/date.md +76 -76
- package/docs/components/dialog-full.md +112 -112
- package/docs/components/dialog.md +127 -127
- package/docs/components/divider.md +24 -24
- package/docs/components/drawer.md +127 -127
- package/docs/components/dynamic-layer.md +118 -118
- package/docs/components/echarts.md +72 -72
- package/docs/components/editor.md +24 -24
- package/docs/components/form.md +27 -27
- package/docs/components/guid.md +39 -39
- package/docs/components/hpanel.md +24 -24
- package/docs/components/icon.md +56 -56
- package/docs/components/input-button.md +24 -24
- package/docs/components/input-code.md +24 -24
- package/docs/components/input-color.md +114 -114
- package/docs/components/input-layer.md +26 -26
- package/docs/components/input-rows.md +370 -370
- package/docs/components/input-tag.md +50 -50
- package/docs/components/input.md +129 -129
- package/docs/components/layer-form.md +61 -61
- package/docs/components/layer.md +127 -127
- package/docs/components/layout.md +132 -132
- package/docs/components/map.md +24 -24
- package/docs/components/menu.md +121 -121
- package/docs/components/meta/button.ts +212 -212
- package/docs/components/meta/buttons.ts +76 -76
- package/docs/components/meta/comp.ts +242 -242
- package/docs/components/meta/date.ts +256 -256
- package/docs/components/meta/echarts.ts +64 -64
- package/docs/components/meta/form.ts +165 -165
- package/docs/components/meta/input-cards.ts +112 -112
- package/docs/components/meta/input-color.ts +243 -243
- package/docs/components/meta/input-rows.ts +113 -113
- package/docs/components/meta/input.ts +20 -0
- package/docs/components/meta/layer-form.ts +56 -56
- package/docs/components/meta/map.ts +68 -68
- package/docs/components/meta/page.ts +46 -46
- package/docs/components/meta/panel.ts +152 -152
- package/docs/components/meta/slider.ts +270 -270
- package/docs/components/meta/table.ts +363 -363
- package/docs/components/meta/tabs.ts +146 -146
- package/docs/components/meta/tree-select.ts +199 -199
- package/docs/components/meta/workflow-viewer.ts +55 -55
- package/docs/components/meta/workflow.ts +113 -113
- package/docs/components/number.md +124 -124
- package/docs/components/page.md +87 -87
- package/docs/components/panel.md +37 -37
- package/docs/components/radio.md +87 -87
- package/docs/components/rate.md +71 -71
- package/docs/components/select.md +133 -133
- package/docs/components/slider-captcha.md +41 -41
- package/docs/components/slider.md +101 -101
- package/docs/components/switch.md +90 -90
- package/docs/components/table-panel.md +218 -218
- package/docs/components/table.md +319 -319
- package/docs/components/tabs.md +26 -26
- package/docs/components/title.md +24 -24
- package/docs/components/tree.md +207 -207
- package/docs/components/upload.md +117 -117
- package/docs/components/workflow-viewer.md +21 -21
- package/docs/components/workflow.md +21 -21
- package/docs/examples/autocomplete/advanced.vue +35 -35
- package/docs/examples/autocomplete/basic.vue +32 -32
- package/docs/examples/autocomplete/clearable.vue +33 -33
- package/docs/examples/autocomplete/custom-template.vue +49 -49
- package/docs/examples/autocomplete/disabled.vue +33 -33
- package/docs/examples/autocomplete/icon.vue +37 -37
- package/docs/examples/barcode/all-types.vue +380 -380
- package/docs/examples/barcode/basic.vue +14 -14
- package/docs/examples/barcode/props-appearance.vue +243 -243
- package/docs/examples/barcode/props-geometry.vue +143 -143
- package/docs/examples/barcode/props-logic.vue +216 -216
- package/docs/examples/barcode/props-symbology.vue +199 -199
- package/docs/examples/barcode/props-text.vue +268 -268
- package/docs/examples/button/basic.vue +7 -7
- package/docs/examples/button/danger-ghost.vue +17 -17
- package/docs/examples/button/disabled.vue +10 -10
- package/docs/examples/button/loading.vue +6 -6
- package/docs/examples/button/shape.vue +7 -7
- package/docs/examples/button/size.vue +14 -14
- package/docs/examples/button/type.vue +9 -9
- package/docs/examples/button-select/basic.vue +19 -19
- package/docs/examples/buttons/basic.vue +45 -45
- package/docs/examples/buttons/disabled.vue +36 -36
- package/docs/examples/buttons/dropdown.vue +63 -63
- package/docs/examples/buttons/group.vue +52 -52
- package/docs/examples/buttons/link.vue +47 -47
- package/docs/examples/buttons/popup.vue +39 -39
- package/docs/examples/buttons/size.vue +45 -45
- package/docs/examples/cascader-select/basic.vue +28 -28
- package/docs/examples/cascader-select/clearable.vue +34 -34
- package/docs/examples/cascader-select/disabled.vue +43 -43
- package/docs/examples/cascader-select/filterable.vue +37 -37
- package/docs/examples/cascader-select/methods.vue +84 -84
- package/docs/examples/cascader-select/multiple.vue +38 -38
- package/docs/examples/cascader-select/slot.vue +45 -45
- package/docs/examples/checkbox/basic.vue +18 -18
- package/docs/examples/checkbox/button.vue +19 -19
- package/docs/examples/checkbox/color.vue +25 -25
- package/docs/examples/checkbox/disabled.vue +17 -17
- package/docs/examples/checkbox/min-max.vue +20 -20
- package/docs/examples/checkbox/mixed.vue +56 -56
- package/docs/examples/checkbox/size.vue +28 -28
- package/docs/examples/code-mirror/basic.vue +11 -11
- package/docs/examples/code-mirror/events.vue +42 -42
- package/docs/examples/code-mirror/height.vue +25 -25
- package/docs/examples/code-mirror/mode.vue +33 -33
- package/docs/examples/code-mirror/readonly.vue +14 -14
- package/docs/examples/collapse/basic.vue +82 -82
- package/docs/examples/comp/basic.vue +7 -7
- package/docs/examples/comp/collapse.vue +38 -38
- package/docs/examples/comp/tabs.vue +38 -38
- package/docs/examples/count/basic.vue +54 -54
- package/docs/examples/count-up/basic.vue +89 -89
- package/docs/examples/data-panel/basic.vue +110 -110
- package/docs/examples/date/basic.vue +73 -73
- package/docs/examples/date/default-value.vue +59 -59
- package/docs/examples/date/format.vue +75 -75
- package/docs/examples/date/range.vue +66 -66
- package/docs/examples/date/types.vue +79 -79
- package/docs/examples/dialog/basic.vue +36 -36
- package/docs/examples/dialog/custom-buttons.vue +44 -44
- package/docs/examples/dialog/fullscreen.vue +23 -23
- package/docs/examples/dialog/no-mask.vue +17 -17
- package/docs/examples/dialog/size.vue +44 -44
- package/docs/examples/dialog/steps.vue +57 -57
- package/docs/examples/dialog-full/basic.vue +29 -29
- package/docs/examples/dialog-full/custom-buttons.vue +45 -45
- package/docs/examples/dialog-full/no-buttons.vue +18 -18
- package/docs/examples/dialog-full/no-header.vue +27 -27
- package/docs/examples/dialog-full/steps.vue +71 -71
- package/docs/examples/divider/basic.vue +52 -52
- package/docs/examples/drawer/basic.vue +35 -35
- package/docs/examples/drawer/custom-buttons.vue +34 -34
- package/docs/examples/drawer/direction.vue +47 -47
- package/docs/examples/drawer/mask.vue +36 -36
- package/docs/examples/drawer/no-buttons.vue +20 -20
- package/docs/examples/drawer/size.vue +28 -28
- package/docs/examples/dynamic-layer/basic.vue +33 -33
- package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
- package/docs/examples/dynamic-layer/form.vue +73 -73
- package/docs/examples/dynamic-layer/steps.vue +52 -52
- package/docs/examples/dynamic-layer/types.vue +40 -40
- package/docs/examples/echarts/basic.vue +31 -31
- package/docs/examples/echarts/dynamic.vue +43 -43
- package/docs/examples/echarts/line.vue +46 -46
- package/docs/examples/echarts/pie.vue +44 -44
- package/docs/examples/editor/basic.vue +15 -15
- package/docs/examples/form/basic.vue +456 -450
- package/docs/examples/guid/basic.vue +10 -10
- package/docs/examples/guid/size.vue +13 -13
- package/docs/examples/hpanel/basic.vue +79 -79
- package/docs/examples/icon/basic.vue +9 -9
- package/docs/examples/icon/rotate-flip.vue +9 -9
- package/docs/examples/icon/size.vue +7 -7
- package/docs/examples/input/basic.vue +10 -10
- package/docs/examples/input/clearable.vue +12 -12
- package/docs/examples/input/disabled.vue +6 -6
- package/docs/examples/input/icon.vue +23 -23
- package/docs/examples/input/password.vue +18 -18
- package/docs/examples/input/size.vue +13 -13
- package/docs/examples/input/textarea.vue +25 -25
- package/docs/examples/input/word-limit.vue +28 -28
- package/docs/examples/input-button/basic.vue +33 -33
- package/docs/examples/input-code/basic.vue +29 -29
- package/docs/examples/input-color/basic.vue +10 -10
- package/docs/examples/input-color/disabled.vue +13 -13
- package/docs/examples/input-color/format.vue +17 -17
- package/docs/examples/input-color/no-alpha.vue +13 -13
- package/docs/examples/input-color/only-button.vue +15 -15
- package/docs/examples/input-color/predefine.vue +31 -31
- package/docs/examples/input-color/size.vue +15 -15
- package/docs/examples/input-layer/basic.vue +69 -69
- package/docs/examples/input-rows/basic.vue +73 -73
- package/docs/examples/input-rows/drag.vue +48 -48
- package/docs/examples/input-rows/layer-form.vue +85 -85
- package/docs/examples/input-rows/nested.vue +91 -91
- package/docs/examples/input-tag/basic.vue +27 -27
- package/docs/examples/input-tag/colors.vue +23 -23
- package/docs/examples/input-tag/readonly.vue +17 -17
- package/docs/examples/layer/basic.vue +43 -43
- package/docs/examples/layer/custom-buttons.vue +61 -61
- package/docs/examples/layer/drawer.vue +37 -37
- package/docs/examples/layer/full.vue +38 -38
- package/docs/examples/layer/modal.vue +34 -34
- package/docs/examples/layer/steps.vue +46 -46
- package/docs/examples/layer-form/basic.vue +76 -76
- package/docs/examples/layer-form/config.vue +82 -82
- package/docs/examples/layer-form/size.vue +72 -72
- package/docs/examples/layout/basic.vue +36 -36
- package/docs/examples/layout/custom-size.vue +50 -50
- package/docs/examples/layout/disable-move.vue +37 -37
- package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
- package/docs/examples/layout/min-size.vue +73 -73
- package/docs/examples/layout/percent-size.vue +80 -80
- package/docs/examples/layout/simple.vue +22 -22
- package/docs/examples/layout/top-side.vue +34 -34
- package/docs/examples/map/basic.vue +22 -22
- package/docs/examples/menu/basic.vue +58 -58
- package/docs/examples/menu/collapsed.vue +49 -49
- package/docs/examples/menu/horizontal.vue +44 -44
- package/docs/examples/menu/selection-test.vue +104 -104
- package/docs/examples/menu/theme.vue +46 -46
- package/docs/examples/menu/vertical.vue +46 -46
- package/docs/examples/number/advanced.vue +143 -143
- package/docs/examples/number/basic.vue +63 -63
- package/docs/examples/number/disabled.vue +49 -49
- package/docs/examples/number/size.vue +42 -42
- package/docs/examples/number/slots.vue +123 -123
- package/docs/examples/number/step-strictly.vue +41 -41
- package/docs/examples/number/step.vue +47 -47
- package/docs/examples/page/basic.vue +41 -41
- package/docs/examples/page/dept-user-management.vue +211 -211
- package/docs/examples/page/init.vue +87 -87
- package/docs/examples/page/log.vue +453 -453
- package/docs/examples/page/user-management.vue +313 -313
- package/docs/examples/panel/tool-buttons.vue +18 -18
- package/docs/examples/radio/basic.vue +17 -17
- package/docs/examples/radio/button.vue +17 -17
- package/docs/examples/radio/color.vue +18 -18
- package/docs/examples/radio/disabled.vue +17 -17
- package/docs/examples/radio/size.vue +29 -29
- package/docs/examples/rate/basic.vue +24 -24
- package/docs/examples/rate/half.vue +24 -24
- package/docs/examples/rate/readonly.vue +11 -11
- package/docs/examples/rate/text.vue +32 -32
- package/docs/examples/select/basic.vue +16 -16
- package/docs/examples/select/clearable.vue +22 -22
- package/docs/examples/select/disabled.vue +31 -31
- package/docs/examples/select/filterable.vue +24 -24
- package/docs/examples/select/group.vue +23 -23
- package/docs/examples/select/icon.vue +16 -16
- package/docs/examples/select/multiple.vue +18 -18
- package/docs/examples/select/size.vue +39 -39
- package/docs/examples/slider/basic.vue +42 -42
- package/docs/examples/slider/disabled.vue +17 -17
- package/docs/examples/slider/marks.vue +30 -30
- package/docs/examples/slider/size.vue +37 -37
- package/docs/examples/slider/tooltip.vue +36 -36
- package/docs/examples/slider/vertical.vue +26 -26
- package/docs/examples/slider-captcha/basic.vue +44 -44
- package/docs/examples/slider-captcha/custom.vue +48 -48
- package/docs/examples/switch/basic.vue +16 -16
- package/docs/examples/switch/disabled.vue +13 -13
- package/docs/examples/switch/loading.vue +13 -13
- package/docs/examples/switch/size.vue +15 -15
- package/docs/examples/switch/text.vue +13 -13
- package/docs/examples/table/actions.vue +116 -116
- package/docs/examples/table/add-row.vue +103 -103
- package/docs/examples/table/basic.vue +168 -168
- package/docs/examples/table/custom-layout.vue +115 -115
- package/docs/examples/table/editable.vue +262 -262
- package/docs/examples/table/field-selection.vue +87 -87
- package/docs/examples/table/frozen-column.vue +140 -140
- package/docs/examples/table/height-mode.vue +99 -99
- package/docs/examples/table/icon.vue +85 -85
- package/docs/examples/table/link.vue +66 -66
- package/docs/examples/table/multiple.vue +178 -178
- package/docs/examples/table/pagination.vue +151 -151
- package/docs/examples/table/single-selection.vue +64 -64
- package/docs/examples/table/sub-table-lazy.vue +97 -97
- package/docs/examples/table/sub-table.vue +103 -103
- package/docs/examples/table/tag.vue +43 -43
- package/docs/examples/table/tree-column.vue +119 -119
- package/docs/examples/table/tree-data.vue +141 -141
- package/docs/examples/table/tree-lazy.vue +80 -80
- package/docs/examples/table-panel/basic.vue +228 -228
- package/docs/examples/table-panel/batch-operations.vue +285 -285
- package/docs/examples/table-panel/filter.vue +219 -219
- package/docs/examples/table-panel/multiple-selection.vue +243 -243
- package/docs/examples/table-panel/pagination.vue +133 -133
- package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
- package/docs/examples/tabs/basic.vue +98 -98
- package/docs/examples/title/basic.vue +80 -80
- package/docs/examples/tree/accordion.vue +46 -46
- package/docs/examples/tree/basic.vue +50 -50
- package/docs/examples/tree/buttons.vue +53 -53
- package/docs/examples/tree/checkable.vue +52 -52
- package/docs/examples/tree/custom-keys.vue +39 -39
- package/docs/examples/tree/default-expanded.vue +52 -52
- package/docs/examples/tree/draggable.vue +29 -29
- package/docs/examples/tree/expand-on-click.vue +39 -39
- package/docs/examples/tree/flat-data.vue +20 -20
- package/docs/examples/tree/icon.vue +40 -40
- package/docs/examples/tree/load-data.vue +37 -37
- package/docs/examples/tree/methods.vue +74 -74
- package/docs/examples/tree/theme.vue +33 -33
- package/docs/examples/upload/accept.vue +31 -31
- package/docs/examples/upload/basic.vue +12 -12
- package/docs/examples/upload/drag.vue +11 -11
- package/docs/examples/upload/image.vue +17 -17
- package/docs/examples/upload/limit.vue +20 -20
- package/docs/examples/upload/multiple.vue +17 -17
- package/docs/examples/upload/readonly.vue +17 -17
- package/docs/examples/utils/cipher.vue +160 -160
- package/docs/examples/utils/common.vue +153 -153
- package/docs/examples/utils/date.vue +56 -56
- package/docs/examples/utils/dom.vue +52 -52
- package/docs/examples/utils/is.vue +70 -70
- package/docs/examples/workflow/basic.vue +265 -265
- package/docs/examples/workflow-viewer/basic.vue +248 -248
- package/package.json +56 -56
package/docs/components/table.md
CHANGED
|
@@ -1,319 +1,319 @@
|
|
|
1
|
-
# Table 表格
|
|
2
|
-
|
|
3
|
-
基于字节 VTable 的高性能表格组件,用于展示大量结构化数据。
|
|
4
|
-
|
|
5
|
-
## 基础用法
|
|
6
|
-
|
|
7
|
-
基础的表格展示用法。
|
|
8
|
-
|
|
9
|
-
<Demo :source-code="tableBasicCode">
|
|
10
|
-
<template #source>
|
|
11
|
-
<table-basic />
|
|
12
|
-
</template>
|
|
13
|
-
<template #description>
|
|
14
|
-
通过 `columns` 属性配置表格列,通过 `records` 属性设置表格数据。
|
|
15
|
-
</template>
|
|
16
|
-
</Demo>
|
|
17
|
-
|
|
18
|
-
## Tag 标签
|
|
19
|
-
|
|
20
|
-
通过列类型 `j-input-tag`(或 `j-tag`)配合 `getObjectList` 映射数据,渲染出类似“标签/胶囊”的效果。
|
|
21
|
-
|
|
22
|
-
<Demo :source-code="tableTagCode">
|
|
23
|
-
<template #source>
|
|
24
|
-
<table-tag />
|
|
25
|
-
</template>
|
|
26
|
-
<template #description>
|
|
27
|
-
示例里通过注入 `jcode_app_provide` 提供 `getObjectList`,返回 `{ value,label,color }` 列表用于渲染。
|
|
28
|
-
其中 `color` 为背景色,设置 `color` 后会自动根据背景色亮度计算 `textColor`(黑/白),无需手动指定。
|
|
29
|
-
</template>
|
|
30
|
-
</Demo>
|
|
31
|
-
|
|
32
|
-
## Icon 图标
|
|
33
|
-
|
|
34
|
-
通过列类型 `j-icon` 可以渲染 SVG 图标。支持传入 SVG 字符串或 Iconify 图标名称。
|
|
35
|
-
|
|
36
|
-
<Demo :source-code="tableIconCode">
|
|
37
|
-
<template #source>
|
|
38
|
-
<table-icon />
|
|
39
|
-
</template>
|
|
40
|
-
<template #description>
|
|
41
|
-
在 `columns` 中设置 `type: 'j-icon'`。数据可以是 SVG 字符串,也可以是 Iconify 图标名称(如 `mdi:home`)。
|
|
42
|
-
可以通过 `config.size` 设置图标大小,`config.color` 设置图标颜色。
|
|
43
|
-
</template>
|
|
44
|
-
</Demo>
|
|
45
|
-
|
|
46
|
-
## Link 链接
|
|
47
|
-
|
|
48
|
-
通过列类型 `link` 可以渲染链接,并支持点击事件。
|
|
49
|
-
|
|
50
|
-
<Demo :source-code="tableLinkCode">
|
|
51
|
-
<template #source>
|
|
52
|
-
<table-link />
|
|
53
|
-
</template>
|
|
54
|
-
<template #description>
|
|
55
|
-
在 `columns` 中设置 `type: 'link'`。
|
|
56
|
-
通过 `config.click` 设置点击回调函数,参数为 `{ row, column, e, openLayer }`。
|
|
57
|
-
</template>
|
|
58
|
-
</Demo>
|
|
59
|
-
|
|
60
|
-
## 自定义布局
|
|
61
|
-
|
|
62
|
-
通过列配置中的 `customLayout` 属性,可以使用 VTable 的 CustomLayout 功能自定义单元格渲染。
|
|
63
|
-
|
|
64
|
-
<Demo :source-code="tableCustomLayoutCode">
|
|
65
|
-
<template #source>
|
|
66
|
-
<table-custom-layout />
|
|
67
|
-
</template>
|
|
68
|
-
<template #description>
|
|
69
|
-
在列对象中定义 `customLayout` 函数。该函数接收 `args` 参数,其中包含 `customLayout` 类(VTable.CustomLayout),可用于创建 Group, Text, Image 等布局元素。
|
|
70
|
-
函数需要返回 `{ rootContainer, renderDefault: false }`。
|
|
71
|
-
</template>
|
|
72
|
-
</Demo>
|
|
73
|
-
|
|
74
|
-
## 冻结列
|
|
75
|
-
|
|
76
|
-
通过 `columns` 中的 `config.frozen` 属性设置列的冻结方式,支持 `left`(左侧冻结)和 `right`(右侧冻结)。
|
|
77
|
-
|
|
78
|
-
> 注意:在列组合(树形表头)中,如果子列设置了冻结属性,则包含该子列的整个父列组都会被冻结。
|
|
79
|
-
|
|
80
|
-
<Demo :source-code="tableFrozenColumnCode">
|
|
81
|
-
<template #source>
|
|
82
|
-
<table-frozen-column />
|
|
83
|
-
</template>
|
|
84
|
-
<template #description>
|
|
85
|
-
设置 `frozen: 'left'` 或 `frozen: 'right'` 来冻结列。
|
|
86
|
-
</template>
|
|
87
|
-
</Demo>
|
|
88
|
-
|
|
89
|
-
## 高度模式
|
|
90
|
-
|
|
91
|
-
通过 `heightMode` 属性控制表格高度模式,支持 `full` (充满父容器) 和 `auto` (内容自适应)。当设置为 `auto` 时,可通过 `maxHeight` 设置最大高度。
|
|
92
|
-
|
|
93
|
-
<Demo :source-code="tableHeightModeCode">
|
|
94
|
-
<template #source>
|
|
95
|
-
<table-height-mode />
|
|
96
|
-
</template>
|
|
97
|
-
<template #description>
|
|
98
|
-
切换 `heightMode` 查看不同高度模式的效果。当 `heightMode` 为 `auto` 且设置了 `maxHeight` 时,超过最大高度会出现滚动条。
|
|
99
|
-
</template>
|
|
100
|
-
</Demo>
|
|
101
|
-
|
|
102
|
-
## 列组合
|
|
103
|
-
|
|
104
|
-
通过在 `columns` 中嵌套 `children` 属性,可以实现多级表头(树形结构列配置)。
|
|
105
|
-
|
|
106
|
-
<Demo :source-code="tableTreeColumnCode">
|
|
107
|
-
<template #source>
|
|
108
|
-
<table-tree-column />
|
|
109
|
-
</template>
|
|
110
|
-
<template #description>
|
|
111
|
-
在 `columns` 中嵌套 `children` 来声明分组。
|
|
112
|
-
</template>
|
|
113
|
-
</Demo>
|
|
114
|
-
|
|
115
|
-
## 树形展示
|
|
116
|
-
|
|
117
|
-
通过 `isTree` 属性开启树形展示。
|
|
118
|
-
|
|
119
|
-
<Demo :source-code="tableTreeDataCode">
|
|
120
|
-
<template #source>
|
|
121
|
-
<table-tree-data />
|
|
122
|
-
</template>
|
|
123
|
-
<template #description>
|
|
124
|
-
设置 `isTree` 为 `true` 开启树形展示,第一列会自动显示展开/折叠图标。
|
|
125
|
-
</template>
|
|
126
|
-
</Demo>
|
|
127
|
-
|
|
128
|
-
## 树形异步数据加载(懒加载)
|
|
129
|
-
|
|
130
|
-
当数据量较大时,可以将记录的 `children` 设置为 `true` 作为懒加载标识;展开该行时,组件会调用 `loadChildren(record)` 异步获取子节点并写入。
|
|
131
|
-
|
|
132
|
-
<Demo :source-code="tableTreeLazyCode">
|
|
133
|
-
<template #source>
|
|
134
|
-
<table-tree-lazy />
|
|
135
|
-
</template>
|
|
136
|
-
<template #description>
|
|
137
|
-
设置 <code>isTree</code> 并在某些行上标记 <code>children: true</code>。展开时将调用 <code>loadChildren(record)</code> 获取并填充该行的子节点。
|
|
138
|
-
</template>
|
|
139
|
-
</Demo>
|
|
140
|
-
|
|
141
|
-
## 子表
|
|
142
|
-
|
|
143
|
-
通过 `subColumns` 属性配置子表列信息(Master-Detail)。
|
|
144
|
-
|
|
145
|
-
<Demo :source-code="tableSubTableCode">
|
|
146
|
-
<template #source>
|
|
147
|
-
<table-sub-table />
|
|
148
|
-
</template>
|
|
149
|
-
<template #description>
|
|
150
|
-
传入 `subColumns` 数组配置子表列,配置格式与 `columns` 一致。
|
|
151
|
-
默认情况下,插件会查找记录中的 `children` 字段作为子表数据。
|
|
152
|
-
|
|
153
|
-
此外,还可以通过以下属性控制子表行为:
|
|
154
|
-
- `isSubShowNumber`: 是否显示子表序号,默认为 `true`。
|
|
155
|
-
- `subActions`: 配置子表行内操作按钮,格式与 `actions` 一致。
|
|
156
|
-
</template>
|
|
157
|
-
</Demo>
|
|
158
|
-
|
|
159
|
-
## 子表异步数据加载(懒加载)
|
|
160
|
-
|
|
161
|
-
当子表数据量较大时,可以将主表记录的 `children` 设置为 `true` 作为“需要懒加载”的标识;在用户展开该行时,组件会调用 `loadChildren(record)` 异步获取子表数据,并自动写入并展开。
|
|
162
|
-
|
|
163
|
-
- 触发条件:展开行且 `originData.children === true`
|
|
164
|
-
- 成功后:会把返回的数组设置为该行的子数据(下次再展开不会重复请求)
|
|
165
|
-
|
|
166
|
-
<Demo :source-code="tableSubTableLazyCode">
|
|
167
|
-
<template #source>
|
|
168
|
-
<table-sub-table-lazy />
|
|
169
|
-
</template>
|
|
170
|
-
<template #description>
|
|
171
|
-
将主表行的 <code>children</code> 设置为 <code>true</code> 作为懒加载标识;展开该行时会调用 <code>loadChildren(record)</code> 获取子表数据并写入。
|
|
172
|
-
</template>
|
|
173
|
-
</Demo>
|
|
174
|
-
|
|
175
|
-
## 多选
|
|
176
|
-
|
|
177
|
-
通过 `isMultiple` 属性开启多选。
|
|
178
|
-
<Demo :source-code="tableMultipleCode">
|
|
179
|
-
<template #source>
|
|
180
|
-
<table-multiple />
|
|
181
|
-
</template>
|
|
182
|
-
<template #description>
|
|
183
|
-
设置 `isMultiple` 为 `true` 开启多选,表格第一列会显示勾选框。
|
|
184
|
-
</template>
|
|
185
|
-
</Demo>
|
|
186
|
-
|
|
187
|
-
## 单选获取选中行
|
|
188
|
-
|
|
189
|
-
在非多选模式下,可以通过 `selectionChanged` 事件或 `getSelection` 方法获取当前选中的行数据。
|
|
190
|
-
|
|
191
|
-
<Demo :source-code="tableSingleSelectionCode">
|
|
192
|
-
<template #source>
|
|
193
|
-
<table-single-selection />
|
|
194
|
-
</template>
|
|
195
|
-
<template #description>
|
|
196
|
-
默认情况下(`isMultiple` 为 `false`),点击表格行会触发 `selectionChanged` 事件。
|
|
197
|
-
</template>
|
|
198
|
-
</Demo>
|
|
199
|
-
|
|
200
|
-
## 字段控制选中状态
|
|
201
|
-
|
|
202
|
-
通过 `selectField` 属性绑定选中状态字段。
|
|
203
|
-
<Demo :source-code="tableFieldSelectionCode">
|
|
204
|
-
<template #source>
|
|
205
|
-
<table-field-selection />
|
|
206
|
-
</template>
|
|
207
|
-
<template #description>
|
|
208
|
-
设置 `selectField` 属性,表格会根据数据中的该字段来渲染选中状态。
|
|
209
|
-
</template>
|
|
210
|
-
</Demo>
|
|
211
|
-
|
|
212
|
-
## 分页
|
|
213
|
-
|
|
214
|
-
通过 `isPage` 属性开启分页功能。
|
|
215
|
-
|
|
216
|
-
<Demo :source-code="tablePaginationCode">
|
|
217
|
-
<template #source>
|
|
218
|
-
<table-pagination />
|
|
219
|
-
</template>
|
|
220
|
-
<template #description>
|
|
221
|
-
设置 `isPage` 为 `true` 开启分页,通过 `v-model:table-page` 和 `v-model:page-size` 绑定当前页码和每页显示数量,监听 `loadPageData` 事件来加载对应页的数据。
|
|
222
|
-
</template>
|
|
223
|
-
</Demo>
|
|
224
|
-
|
|
225
|
-
## 行内操作按钮
|
|
226
|
-
|
|
227
|
-
通过 `actions` 属性配置行内操作按钮。
|
|
228
|
-
|
|
229
|
-
<Demo :source-code="tableActionsCode">
|
|
230
|
-
<template #source>
|
|
231
|
-
<table-actions />
|
|
232
|
-
</template>
|
|
233
|
-
<template #description>
|
|
234
|
-
通过 `actions` 属性传入按钮配置数组,每个按钮需要配置 `id`(唯一标识)、`label`(显示文本)、`click`(点击回调函数)。可选配置 `color` 自定义按钮颜色。操作列宽度自动计算,默认最多显示3个按钮,超出部分收纳到"更多"下拉菜单中。可通过 `actionsMaxCount` 设置最大显示数量,`actionsLabel` 设置操作列标题。
|
|
235
|
-
</template>
|
|
236
|
-
</Demo>
|
|
237
|
-
|
|
238
|
-
## 单元格编辑
|
|
239
|
-
|
|
240
|
-
通过在列配置中设置 `editor` 属性启用单元格编辑功能。
|
|
241
|
-
|
|
242
|
-
<Demo :source-code="tableEditableCode">
|
|
243
|
-
<template #source>
|
|
244
|
-
<table-editable />
|
|
245
|
-
</template>
|
|
246
|
-
<template #description>
|
|
247
|
-
在列配置的 `config` 中设置 `editor: true` 启用编辑功能,点击单元格即可进入编辑模式。支持多种编辑器类型:
|
|
248
|
-
<ul>
|
|
249
|
-
<li><code>j-input</code> - 文本输入框</li>
|
|
250
|
-
<li><code>j-number</code> - 数字输入框</li>
|
|
251
|
-
<li><code>j-select</code> - 下拉选择器</li>
|
|
252
|
-
<li><code>j-radio</code> - 单选框</li>
|
|
253
|
-
<li><code>j-checkbox</code> - 复选框</li>
|
|
254
|
-
<li><code>j-switch</code> - 开关</li>
|
|
255
|
-
<li>以及其他 j-input 开头的输入组件</li>
|
|
256
|
-
</ul>
|
|
257
|
-
通过监听 <code>cell-change</code> 事件可以获取单元格值的变化。
|
|
258
|
-
</template>
|
|
259
|
-
</Demo>
|
|
260
|
-
|
|
261
|
-
## 添加数据
|
|
262
|
-
|
|
263
|
-
通过 `editConfig` 属性配置 `isAddBtn` 为 `true` 来显示添加按钮。
|
|
264
|
-
|
|
265
|
-
<Demo :source-code="tableAddRowCode">
|
|
266
|
-
<template #source>
|
|
267
|
-
<table-add-row />
|
|
268
|
-
</template>
|
|
269
|
-
<template #description>
|
|
270
|
-
设置 `editConfig` 的 `isAddBtn` 为 `true` 开启添加按钮,可通过 `addBtnText` 自定义按钮文本。点击添加按钮会触发 `add` 事件,并自动在表格中插入一行新数据(使用列配置中的 `defaultValue`)。
|
|
271
|
-
</template>
|
|
272
|
-
</Demo>
|
|
273
|
-
|
|
274
|
-
## API
|
|
275
|
-
|
|
276
|
-
<ApiTable :data="tableApi" componentName="table" />
|
|
277
|
-
|
|
278
|
-
<script setup>
|
|
279
|
-
import TableBasic from '../examples/table/basic.vue'
|
|
280
|
-
import TableTag from '../examples/table/tag.vue'
|
|
281
|
-
import TableIcon from '../examples/table/icon.vue'
|
|
282
|
-
import TableLink from '../examples/table/link.vue'
|
|
283
|
-
import TableCustomLayout from '../examples/table/custom-layout.vue'
|
|
284
|
-
import TableFrozenColumn from '../examples/table/frozen-column.vue'
|
|
285
|
-
import TableHeightMode from '../examples/table/height-mode.vue'
|
|
286
|
-
import TableTreeColumn from '../examples/table/tree-column.vue'
|
|
287
|
-
import TableTreeData from '../examples/table/tree-data.vue'
|
|
288
|
-
import TableTreeLazy from '../examples/table/tree-lazy.vue'
|
|
289
|
-
import TableSubTable from '../examples/table/sub-table.vue'
|
|
290
|
-
import TableSubTableLazy from '../examples/table/sub-table-lazy.vue'
|
|
291
|
-
import TableMultiple from '../examples/table/multiple.vue'
|
|
292
|
-
import TableSingleSelection from '../examples/table/single-selection.vue'
|
|
293
|
-
import TableFieldSelection from '../examples/table/field-selection.vue'
|
|
294
|
-
import TablePagination from '../examples/table/pagination.vue'
|
|
295
|
-
import TableActions from '../examples/table/actions.vue'
|
|
296
|
-
import TableEditable from '../examples/table/editable.vue'
|
|
297
|
-
import TableAddRow from '../examples/table/add-row.vue'
|
|
298
|
-
import tableApi from './meta/table'
|
|
299
|
-
|
|
300
|
-
import tableBasicCode from '../examples/table/basic.vue?raw'
|
|
301
|
-
import tableTagCode from '../examples/table/tag.vue?raw'
|
|
302
|
-
import tableIconCode from '../examples/table/icon.vue?raw'
|
|
303
|
-
import tableLinkCode from '../examples/table/link.vue?raw'
|
|
304
|
-
import tableCustomLayoutCode from '../examples/table/custom-layout.vue?raw'
|
|
305
|
-
import tableFrozenColumnCode from '../examples/table/frozen-column.vue?raw'
|
|
306
|
-
import tableHeightModeCode from '../examples/table/height-mode.vue?raw'
|
|
307
|
-
import tableTreeColumnCode from '../examples/table/tree-column.vue?raw'
|
|
308
|
-
import tableTreeDataCode from '../examples/table/tree-data.vue?raw'
|
|
309
|
-
import tableTreeLazyCode from '../examples/table/tree-lazy.vue?raw'
|
|
310
|
-
import tableSubTableCode from '../examples/table/sub-table.vue?raw'
|
|
311
|
-
import tableSubTableLazyCode from '../examples/table/sub-table-lazy.vue?raw'
|
|
312
|
-
import tableMultipleCode from '../examples/table/multiple.vue?raw'
|
|
313
|
-
import tableSingleSelectionCode from '../examples/table/single-selection.vue?raw'
|
|
314
|
-
import tableFieldSelectionCode from '../examples/table/field-selection.vue?raw'
|
|
315
|
-
import tablePaginationCode from '../examples/table/pagination.vue?raw'
|
|
316
|
-
import tableActionsCode from '../examples/table/actions.vue?raw'
|
|
317
|
-
import tableEditableCode from '../examples/table/editable.vue?raw'
|
|
318
|
-
import tableAddRowCode from '../examples/table/add-row.vue?raw'
|
|
319
|
-
</script>
|
|
1
|
+
# Table 表格
|
|
2
|
+
|
|
3
|
+
基于字节 VTable 的高性能表格组件,用于展示大量结构化数据。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
基础的表格展示用法。
|
|
8
|
+
|
|
9
|
+
<Demo :source-code="tableBasicCode">
|
|
10
|
+
<template #source>
|
|
11
|
+
<table-basic />
|
|
12
|
+
</template>
|
|
13
|
+
<template #description>
|
|
14
|
+
通过 `columns` 属性配置表格列,通过 `records` 属性设置表格数据。
|
|
15
|
+
</template>
|
|
16
|
+
</Demo>
|
|
17
|
+
|
|
18
|
+
## Tag 标签
|
|
19
|
+
|
|
20
|
+
通过列类型 `j-input-tag`(或 `j-tag`)配合 `getObjectList` 映射数据,渲染出类似“标签/胶囊”的效果。
|
|
21
|
+
|
|
22
|
+
<Demo :source-code="tableTagCode">
|
|
23
|
+
<template #source>
|
|
24
|
+
<table-tag />
|
|
25
|
+
</template>
|
|
26
|
+
<template #description>
|
|
27
|
+
示例里通过注入 `jcode_app_provide` 提供 `getObjectList`,返回 `{ value,label,color }` 列表用于渲染。
|
|
28
|
+
其中 `color` 为背景色,设置 `color` 后会自动根据背景色亮度计算 `textColor`(黑/白),无需手动指定。
|
|
29
|
+
</template>
|
|
30
|
+
</Demo>
|
|
31
|
+
|
|
32
|
+
## Icon 图标
|
|
33
|
+
|
|
34
|
+
通过列类型 `j-icon` 可以渲染 SVG 图标。支持传入 SVG 字符串或 Iconify 图标名称。
|
|
35
|
+
|
|
36
|
+
<Demo :source-code="tableIconCode">
|
|
37
|
+
<template #source>
|
|
38
|
+
<table-icon />
|
|
39
|
+
</template>
|
|
40
|
+
<template #description>
|
|
41
|
+
在 `columns` 中设置 `type: 'j-icon'`。数据可以是 SVG 字符串,也可以是 Iconify 图标名称(如 `mdi:home`)。
|
|
42
|
+
可以通过 `config.size` 设置图标大小,`config.color` 设置图标颜色。
|
|
43
|
+
</template>
|
|
44
|
+
</Demo>
|
|
45
|
+
|
|
46
|
+
## Link 链接
|
|
47
|
+
|
|
48
|
+
通过列类型 `link` 可以渲染链接,并支持点击事件。
|
|
49
|
+
|
|
50
|
+
<Demo :source-code="tableLinkCode">
|
|
51
|
+
<template #source>
|
|
52
|
+
<table-link />
|
|
53
|
+
</template>
|
|
54
|
+
<template #description>
|
|
55
|
+
在 `columns` 中设置 `type: 'link'`。
|
|
56
|
+
通过 `config.click` 设置点击回调函数,参数为 `{ row, column, e, openLayer }`。
|
|
57
|
+
</template>
|
|
58
|
+
</Demo>
|
|
59
|
+
|
|
60
|
+
## 自定义布局
|
|
61
|
+
|
|
62
|
+
通过列配置中的 `customLayout` 属性,可以使用 VTable 的 CustomLayout 功能自定义单元格渲染。
|
|
63
|
+
|
|
64
|
+
<Demo :source-code="tableCustomLayoutCode">
|
|
65
|
+
<template #source>
|
|
66
|
+
<table-custom-layout />
|
|
67
|
+
</template>
|
|
68
|
+
<template #description>
|
|
69
|
+
在列对象中定义 `customLayout` 函数。该函数接收 `args` 参数,其中包含 `customLayout` 类(VTable.CustomLayout),可用于创建 Group, Text, Image 等布局元素。
|
|
70
|
+
函数需要返回 `{ rootContainer, renderDefault: false }`。
|
|
71
|
+
</template>
|
|
72
|
+
</Demo>
|
|
73
|
+
|
|
74
|
+
## 冻结列
|
|
75
|
+
|
|
76
|
+
通过 `columns` 中的 `config.frozen` 属性设置列的冻结方式,支持 `left`(左侧冻结)和 `right`(右侧冻结)。
|
|
77
|
+
|
|
78
|
+
> 注意:在列组合(树形表头)中,如果子列设置了冻结属性,则包含该子列的整个父列组都会被冻结。
|
|
79
|
+
|
|
80
|
+
<Demo :source-code="tableFrozenColumnCode">
|
|
81
|
+
<template #source>
|
|
82
|
+
<table-frozen-column />
|
|
83
|
+
</template>
|
|
84
|
+
<template #description>
|
|
85
|
+
设置 `frozen: 'left'` 或 `frozen: 'right'` 来冻结列。
|
|
86
|
+
</template>
|
|
87
|
+
</Demo>
|
|
88
|
+
|
|
89
|
+
## 高度模式
|
|
90
|
+
|
|
91
|
+
通过 `heightMode` 属性控制表格高度模式,支持 `full` (充满父容器) 和 `auto` (内容自适应)。当设置为 `auto` 时,可通过 `maxHeight` 设置最大高度。
|
|
92
|
+
|
|
93
|
+
<Demo :source-code="tableHeightModeCode">
|
|
94
|
+
<template #source>
|
|
95
|
+
<table-height-mode />
|
|
96
|
+
</template>
|
|
97
|
+
<template #description>
|
|
98
|
+
切换 `heightMode` 查看不同高度模式的效果。当 `heightMode` 为 `auto` 且设置了 `maxHeight` 时,超过最大高度会出现滚动条。
|
|
99
|
+
</template>
|
|
100
|
+
</Demo>
|
|
101
|
+
|
|
102
|
+
## 列组合
|
|
103
|
+
|
|
104
|
+
通过在 `columns` 中嵌套 `children` 属性,可以实现多级表头(树形结构列配置)。
|
|
105
|
+
|
|
106
|
+
<Demo :source-code="tableTreeColumnCode">
|
|
107
|
+
<template #source>
|
|
108
|
+
<table-tree-column />
|
|
109
|
+
</template>
|
|
110
|
+
<template #description>
|
|
111
|
+
在 `columns` 中嵌套 `children` 来声明分组。
|
|
112
|
+
</template>
|
|
113
|
+
</Demo>
|
|
114
|
+
|
|
115
|
+
## 树形展示
|
|
116
|
+
|
|
117
|
+
通过 `isTree` 属性开启树形展示。
|
|
118
|
+
|
|
119
|
+
<Demo :source-code="tableTreeDataCode">
|
|
120
|
+
<template #source>
|
|
121
|
+
<table-tree-data />
|
|
122
|
+
</template>
|
|
123
|
+
<template #description>
|
|
124
|
+
设置 `isTree` 为 `true` 开启树形展示,第一列会自动显示展开/折叠图标。
|
|
125
|
+
</template>
|
|
126
|
+
</Demo>
|
|
127
|
+
|
|
128
|
+
## 树形异步数据加载(懒加载)
|
|
129
|
+
|
|
130
|
+
当数据量较大时,可以将记录的 `children` 设置为 `true` 作为懒加载标识;展开该行时,组件会调用 `loadChildren(record)` 异步获取子节点并写入。
|
|
131
|
+
|
|
132
|
+
<Demo :source-code="tableTreeLazyCode">
|
|
133
|
+
<template #source>
|
|
134
|
+
<table-tree-lazy />
|
|
135
|
+
</template>
|
|
136
|
+
<template #description>
|
|
137
|
+
设置 <code>isTree</code> 并在某些行上标记 <code>children: true</code>。展开时将调用 <code>loadChildren(record)</code> 获取并填充该行的子节点。
|
|
138
|
+
</template>
|
|
139
|
+
</Demo>
|
|
140
|
+
|
|
141
|
+
## 子表
|
|
142
|
+
|
|
143
|
+
通过 `subColumns` 属性配置子表列信息(Master-Detail)。
|
|
144
|
+
|
|
145
|
+
<Demo :source-code="tableSubTableCode">
|
|
146
|
+
<template #source>
|
|
147
|
+
<table-sub-table />
|
|
148
|
+
</template>
|
|
149
|
+
<template #description>
|
|
150
|
+
传入 `subColumns` 数组配置子表列,配置格式与 `columns` 一致。
|
|
151
|
+
默认情况下,插件会查找记录中的 `children` 字段作为子表数据。
|
|
152
|
+
|
|
153
|
+
此外,还可以通过以下属性控制子表行为:
|
|
154
|
+
- `isSubShowNumber`: 是否显示子表序号,默认为 `true`。
|
|
155
|
+
- `subActions`: 配置子表行内操作按钮,格式与 `actions` 一致。
|
|
156
|
+
</template>
|
|
157
|
+
</Demo>
|
|
158
|
+
|
|
159
|
+
## 子表异步数据加载(懒加载)
|
|
160
|
+
|
|
161
|
+
当子表数据量较大时,可以将主表记录的 `children` 设置为 `true` 作为“需要懒加载”的标识;在用户展开该行时,组件会调用 `loadChildren(record)` 异步获取子表数据,并自动写入并展开。
|
|
162
|
+
|
|
163
|
+
- 触发条件:展开行且 `originData.children === true`
|
|
164
|
+
- 成功后:会把返回的数组设置为该行的子数据(下次再展开不会重复请求)
|
|
165
|
+
|
|
166
|
+
<Demo :source-code="tableSubTableLazyCode">
|
|
167
|
+
<template #source>
|
|
168
|
+
<table-sub-table-lazy />
|
|
169
|
+
</template>
|
|
170
|
+
<template #description>
|
|
171
|
+
将主表行的 <code>children</code> 设置为 <code>true</code> 作为懒加载标识;展开该行时会调用 <code>loadChildren(record)</code> 获取子表数据并写入。
|
|
172
|
+
</template>
|
|
173
|
+
</Demo>
|
|
174
|
+
|
|
175
|
+
## 多选
|
|
176
|
+
|
|
177
|
+
通过 `isMultiple` 属性开启多选。
|
|
178
|
+
<Demo :source-code="tableMultipleCode">
|
|
179
|
+
<template #source>
|
|
180
|
+
<table-multiple />
|
|
181
|
+
</template>
|
|
182
|
+
<template #description>
|
|
183
|
+
设置 `isMultiple` 为 `true` 开启多选,表格第一列会显示勾选框。
|
|
184
|
+
</template>
|
|
185
|
+
</Demo>
|
|
186
|
+
|
|
187
|
+
## 单选获取选中行
|
|
188
|
+
|
|
189
|
+
在非多选模式下,可以通过 `selectionChanged` 事件或 `getSelection` 方法获取当前选中的行数据。
|
|
190
|
+
|
|
191
|
+
<Demo :source-code="tableSingleSelectionCode">
|
|
192
|
+
<template #source>
|
|
193
|
+
<table-single-selection />
|
|
194
|
+
</template>
|
|
195
|
+
<template #description>
|
|
196
|
+
默认情况下(`isMultiple` 为 `false`),点击表格行会触发 `selectionChanged` 事件。
|
|
197
|
+
</template>
|
|
198
|
+
</Demo>
|
|
199
|
+
|
|
200
|
+
## 字段控制选中状态
|
|
201
|
+
|
|
202
|
+
通过 `selectField` 属性绑定选中状态字段。
|
|
203
|
+
<Demo :source-code="tableFieldSelectionCode">
|
|
204
|
+
<template #source>
|
|
205
|
+
<table-field-selection />
|
|
206
|
+
</template>
|
|
207
|
+
<template #description>
|
|
208
|
+
设置 `selectField` 属性,表格会根据数据中的该字段来渲染选中状态。
|
|
209
|
+
</template>
|
|
210
|
+
</Demo>
|
|
211
|
+
|
|
212
|
+
## 分页
|
|
213
|
+
|
|
214
|
+
通过 `isPage` 属性开启分页功能。
|
|
215
|
+
|
|
216
|
+
<Demo :source-code="tablePaginationCode">
|
|
217
|
+
<template #source>
|
|
218
|
+
<table-pagination />
|
|
219
|
+
</template>
|
|
220
|
+
<template #description>
|
|
221
|
+
设置 `isPage` 为 `true` 开启分页,通过 `v-model:table-page` 和 `v-model:page-size` 绑定当前页码和每页显示数量,监听 `loadPageData` 事件来加载对应页的数据。
|
|
222
|
+
</template>
|
|
223
|
+
</Demo>
|
|
224
|
+
|
|
225
|
+
## 行内操作按钮
|
|
226
|
+
|
|
227
|
+
通过 `actions` 属性配置行内操作按钮。
|
|
228
|
+
|
|
229
|
+
<Demo :source-code="tableActionsCode">
|
|
230
|
+
<template #source>
|
|
231
|
+
<table-actions />
|
|
232
|
+
</template>
|
|
233
|
+
<template #description>
|
|
234
|
+
通过 `actions` 属性传入按钮配置数组,每个按钮需要配置 `id`(唯一标识)、`label`(显示文本)、`click`(点击回调函数)。可选配置 `color` 自定义按钮颜色。操作列宽度自动计算,默认最多显示3个按钮,超出部分收纳到"更多"下拉菜单中。可通过 `actionsMaxCount` 设置最大显示数量,`actionsLabel` 设置操作列标题。
|
|
235
|
+
</template>
|
|
236
|
+
</Demo>
|
|
237
|
+
|
|
238
|
+
## 单元格编辑
|
|
239
|
+
|
|
240
|
+
通过在列配置中设置 `editor` 属性启用单元格编辑功能。
|
|
241
|
+
|
|
242
|
+
<Demo :source-code="tableEditableCode">
|
|
243
|
+
<template #source>
|
|
244
|
+
<table-editable />
|
|
245
|
+
</template>
|
|
246
|
+
<template #description>
|
|
247
|
+
在列配置的 `config` 中设置 `editor: true` 启用编辑功能,点击单元格即可进入编辑模式。支持多种编辑器类型:
|
|
248
|
+
<ul>
|
|
249
|
+
<li><code>j-input</code> - 文本输入框</li>
|
|
250
|
+
<li><code>j-number</code> - 数字输入框</li>
|
|
251
|
+
<li><code>j-select</code> - 下拉选择器</li>
|
|
252
|
+
<li><code>j-radio</code> - 单选框</li>
|
|
253
|
+
<li><code>j-checkbox</code> - 复选框</li>
|
|
254
|
+
<li><code>j-switch</code> - 开关</li>
|
|
255
|
+
<li>以及其他 j-input 开头的输入组件</li>
|
|
256
|
+
</ul>
|
|
257
|
+
通过监听 <code>cell-change</code> 事件可以获取单元格值的变化。
|
|
258
|
+
</template>
|
|
259
|
+
</Demo>
|
|
260
|
+
|
|
261
|
+
## 添加数据
|
|
262
|
+
|
|
263
|
+
通过 `editConfig` 属性配置 `isAddBtn` 为 `true` 来显示添加按钮。
|
|
264
|
+
|
|
265
|
+
<Demo :source-code="tableAddRowCode">
|
|
266
|
+
<template #source>
|
|
267
|
+
<table-add-row />
|
|
268
|
+
</template>
|
|
269
|
+
<template #description>
|
|
270
|
+
设置 `editConfig` 的 `isAddBtn` 为 `true` 开启添加按钮,可通过 `addBtnText` 自定义按钮文本。点击添加按钮会触发 `add` 事件,并自动在表格中插入一行新数据(使用列配置中的 `defaultValue`)。
|
|
271
|
+
</template>
|
|
272
|
+
</Demo>
|
|
273
|
+
|
|
274
|
+
## API
|
|
275
|
+
|
|
276
|
+
<ApiTable :data="tableApi" componentName="table" />
|
|
277
|
+
|
|
278
|
+
<script setup>
|
|
279
|
+
import TableBasic from '../examples/table/basic.vue'
|
|
280
|
+
import TableTag from '../examples/table/tag.vue'
|
|
281
|
+
import TableIcon from '../examples/table/icon.vue'
|
|
282
|
+
import TableLink from '../examples/table/link.vue'
|
|
283
|
+
import TableCustomLayout from '../examples/table/custom-layout.vue'
|
|
284
|
+
import TableFrozenColumn from '../examples/table/frozen-column.vue'
|
|
285
|
+
import TableHeightMode from '../examples/table/height-mode.vue'
|
|
286
|
+
import TableTreeColumn from '../examples/table/tree-column.vue'
|
|
287
|
+
import TableTreeData from '../examples/table/tree-data.vue'
|
|
288
|
+
import TableTreeLazy from '../examples/table/tree-lazy.vue'
|
|
289
|
+
import TableSubTable from '../examples/table/sub-table.vue'
|
|
290
|
+
import TableSubTableLazy from '../examples/table/sub-table-lazy.vue'
|
|
291
|
+
import TableMultiple from '../examples/table/multiple.vue'
|
|
292
|
+
import TableSingleSelection from '../examples/table/single-selection.vue'
|
|
293
|
+
import TableFieldSelection from '../examples/table/field-selection.vue'
|
|
294
|
+
import TablePagination from '../examples/table/pagination.vue'
|
|
295
|
+
import TableActions from '../examples/table/actions.vue'
|
|
296
|
+
import TableEditable from '../examples/table/editable.vue'
|
|
297
|
+
import TableAddRow from '../examples/table/add-row.vue'
|
|
298
|
+
import tableApi from './meta/table'
|
|
299
|
+
|
|
300
|
+
import tableBasicCode from '../examples/table/basic.vue?raw'
|
|
301
|
+
import tableTagCode from '../examples/table/tag.vue?raw'
|
|
302
|
+
import tableIconCode from '../examples/table/icon.vue?raw'
|
|
303
|
+
import tableLinkCode from '../examples/table/link.vue?raw'
|
|
304
|
+
import tableCustomLayoutCode from '../examples/table/custom-layout.vue?raw'
|
|
305
|
+
import tableFrozenColumnCode from '../examples/table/frozen-column.vue?raw'
|
|
306
|
+
import tableHeightModeCode from '../examples/table/height-mode.vue?raw'
|
|
307
|
+
import tableTreeColumnCode from '../examples/table/tree-column.vue?raw'
|
|
308
|
+
import tableTreeDataCode from '../examples/table/tree-data.vue?raw'
|
|
309
|
+
import tableTreeLazyCode from '../examples/table/tree-lazy.vue?raw'
|
|
310
|
+
import tableSubTableCode from '../examples/table/sub-table.vue?raw'
|
|
311
|
+
import tableSubTableLazyCode from '../examples/table/sub-table-lazy.vue?raw'
|
|
312
|
+
import tableMultipleCode from '../examples/table/multiple.vue?raw'
|
|
313
|
+
import tableSingleSelectionCode from '../examples/table/single-selection.vue?raw'
|
|
314
|
+
import tableFieldSelectionCode from '../examples/table/field-selection.vue?raw'
|
|
315
|
+
import tablePaginationCode from '../examples/table/pagination.vue?raw'
|
|
316
|
+
import tableActionsCode from '../examples/table/actions.vue?raw'
|
|
317
|
+
import tableEditableCode from '../examples/table/editable.vue?raw'
|
|
318
|
+
import tableAddRowCode from '../examples/table/add-row.vue?raw'
|
|
319
|
+
</script>
|