@a2simcode/ui 0.0.242 → 0.0.243

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/.cursor/skills/ui-component-helper/README.md +86 -86
  2. package/.cursor/skills/ui-component-helper/SKILL.md +115 -115
  3. package/LICENSE +53 -53
  4. package/README.md +156 -156
  5. package/dist/components/table/src/editors/j-comp-editor.d.ts +1 -0
  6. package/dist/simcode-ui.es.js +140 -131
  7. package/dist/simcode-ui.umd.js +1 -1
  8. package/dist/stats.html +1 -1
  9. package/dist/ui.css +1 -1
  10. package/docs/components/autocomplete.md +89 -89
  11. package/docs/components/barcode.md +101 -101
  12. package/docs/components/button-select.md +24 -24
  13. package/docs/components/button.md +117 -117
  14. package/docs/components/buttons.md +119 -119
  15. package/docs/components/cascader-select.md +114 -114
  16. package/docs/components/checkbox.md +114 -114
  17. package/docs/components/code-mirror.md +85 -85
  18. package/docs/components/collapse.md +26 -26
  19. package/docs/components/comp.md +71 -71
  20. package/docs/components/count-up.md +24 -24
  21. package/docs/components/count.md +24 -24
  22. package/docs/components/data-panel.md +24 -24
  23. package/docs/components/date.md +76 -76
  24. package/docs/components/dialog-full.md +112 -112
  25. package/docs/components/dialog.md +127 -127
  26. package/docs/components/divider.md +24 -24
  27. package/docs/components/drawer.md +127 -127
  28. package/docs/components/dynamic-layer.md +118 -118
  29. package/docs/components/echarts.md +72 -72
  30. package/docs/components/editor.md +24 -24
  31. package/docs/components/form.md +87 -87
  32. package/docs/components/guid.md +39 -39
  33. package/docs/components/hpanel.md +24 -24
  34. package/docs/components/icon.md +56 -56
  35. package/docs/components/input-button.md +24 -24
  36. package/docs/components/input-code.md +24 -24
  37. package/docs/components/input-color.md +114 -114
  38. package/docs/components/input-layer.md +56 -56
  39. package/docs/components/input-rows.md +370 -370
  40. package/docs/components/input-tag.md +50 -50
  41. package/docs/components/input.md +129 -129
  42. package/docs/components/layer-form.md +61 -61
  43. package/docs/components/layer.md +127 -127
  44. package/docs/components/layout.md +132 -132
  45. package/docs/components/map.md +24 -24
  46. package/docs/components/menu.md +121 -121
  47. package/docs/components/meta/button.ts +212 -212
  48. package/docs/components/meta/buttons.ts +76 -76
  49. package/docs/components/meta/code-mirror.ts +108 -108
  50. package/docs/components/meta/comp.ts +236 -236
  51. package/docs/components/meta/date.ts +267 -267
  52. package/docs/components/meta/echarts.ts +64 -64
  53. package/docs/components/meta/form-item.ts +50 -50
  54. package/docs/components/meta/form.ts +181 -181
  55. package/docs/components/meta/input-button.ts +175 -175
  56. package/docs/components/meta/input-cards.ts +112 -112
  57. package/docs/components/meta/input-code.ts +161 -161
  58. package/docs/components/meta/input-color.ts +243 -243
  59. package/docs/components/meta/input-layer.ts +382 -382
  60. package/docs/components/meta/input-rows.ts +119 -119
  61. package/docs/components/meta/layer-form.ts +74 -74
  62. package/docs/components/meta/map.ts +68 -68
  63. package/docs/components/meta/panel.ts +152 -152
  64. package/docs/components/meta/radio.ts +55 -55
  65. package/docs/components/meta/select.ts +279 -279
  66. package/docs/components/meta/slider.ts +270 -270
  67. package/docs/components/meta/tabs.ts +146 -146
  68. package/docs/components/meta/title.ts +91 -91
  69. package/docs/components/meta/tree-select.ts +199 -199
  70. package/docs/components/meta/tree.ts +219 -219
  71. package/docs/components/meta/vpanel.ts +19 -19
  72. package/docs/components/meta/workflow-viewer.ts +55 -55
  73. package/docs/components/number.md +124 -124
  74. package/docs/components/page.md +102 -102
  75. package/docs/components/panel.md +37 -37
  76. package/docs/components/radio.md +87 -87
  77. package/docs/components/rate.md +71 -71
  78. package/docs/components/select.md +133 -133
  79. package/docs/components/slider-captcha.md +41 -41
  80. package/docs/components/slider.md +101 -101
  81. package/docs/components/switch.md +90 -90
  82. package/docs/components/table-panel.md +297 -297
  83. package/docs/components/table.md +450 -450
  84. package/docs/components/tabs.md +26 -26
  85. package/docs/components/title.md +24 -24
  86. package/docs/components/tree.md +207 -207
  87. package/docs/components/upload.md +117 -117
  88. package/docs/components/workflow-viewer.md +21 -21
  89. package/docs/components/workflow.md +21 -21
  90. package/docs/examples/autocomplete/advanced.vue +35 -35
  91. package/docs/examples/autocomplete/basic.vue +32 -32
  92. package/docs/examples/autocomplete/clearable.vue +33 -33
  93. package/docs/examples/autocomplete/custom-template.vue +49 -49
  94. package/docs/examples/autocomplete/disabled.vue +33 -33
  95. package/docs/examples/autocomplete/icon.vue +37 -37
  96. package/docs/examples/barcode/all-types.vue +380 -380
  97. package/docs/examples/barcode/basic.vue +14 -14
  98. package/docs/examples/barcode/props-appearance.vue +243 -243
  99. package/docs/examples/barcode/props-geometry.vue +143 -143
  100. package/docs/examples/barcode/props-logic.vue +216 -216
  101. package/docs/examples/barcode/props-symbology.vue +199 -199
  102. package/docs/examples/barcode/props-text.vue +268 -268
  103. package/docs/examples/button/basic.vue +7 -7
  104. package/docs/examples/button/disabled.vue +42 -42
  105. package/docs/examples/button/loading.vue +6 -6
  106. package/docs/examples/button/shape.vue +7 -7
  107. package/docs/examples/button/size.vue +14 -14
  108. package/docs/examples/button/status.vue +34 -34
  109. package/docs/examples/button/type.vue +10 -10
  110. package/docs/examples/button-select/basic.vue +19 -19
  111. package/docs/examples/buttons/basic.vue +62 -62
  112. package/docs/examples/buttons/disabled.vue +36 -36
  113. package/docs/examples/buttons/dropdown.vue +63 -63
  114. package/docs/examples/buttons/group.vue +52 -52
  115. package/docs/examples/buttons/link.vue +47 -47
  116. package/docs/examples/buttons/popup.vue +39 -39
  117. package/docs/examples/buttons/size.vue +45 -45
  118. package/docs/examples/cascader-select/basic.vue +28 -28
  119. package/docs/examples/cascader-select/clearable.vue +34 -34
  120. package/docs/examples/cascader-select/disabled.vue +43 -43
  121. package/docs/examples/cascader-select/filterable.vue +37 -37
  122. package/docs/examples/cascader-select/methods.vue +84 -84
  123. package/docs/examples/cascader-select/multiple.vue +38 -38
  124. package/docs/examples/cascader-select/slot.vue +45 -45
  125. package/docs/examples/checkbox/basic.vue +18 -18
  126. package/docs/examples/checkbox/button.vue +19 -19
  127. package/docs/examples/checkbox/color.vue +25 -25
  128. package/docs/examples/checkbox/disabled.vue +17 -17
  129. package/docs/examples/checkbox/min-max.vue +20 -20
  130. package/docs/examples/checkbox/mixed.vue +56 -56
  131. package/docs/examples/checkbox/size.vue +28 -28
  132. package/docs/examples/code-mirror/basic.vue +11 -11
  133. package/docs/examples/code-mirror/events.vue +42 -42
  134. package/docs/examples/code-mirror/height.vue +25 -25
  135. package/docs/examples/code-mirror/mode.vue +33 -33
  136. package/docs/examples/code-mirror/readonly.vue +14 -14
  137. package/docs/examples/collapse/basic.vue +82 -82
  138. package/docs/examples/comp/basic.vue +7 -7
  139. package/docs/examples/comp/collapse.vue +38 -38
  140. package/docs/examples/comp/tabs.vue +38 -38
  141. package/docs/examples/count/basic.vue +101 -101
  142. package/docs/examples/count-up/basic.vue +89 -89
  143. package/docs/examples/data-panel/basic.vue +110 -110
  144. package/docs/examples/date/basic.vue +73 -73
  145. package/docs/examples/date/default-value.vue +59 -59
  146. package/docs/examples/date/format.vue +75 -75
  147. package/docs/examples/date/range.vue +66 -66
  148. package/docs/examples/date/types.vue +79 -79
  149. package/docs/examples/decorated-title/basic.vue +31 -31
  150. package/docs/examples/dialog/basic.vue +36 -36
  151. package/docs/examples/dialog/custom-buttons.vue +44 -44
  152. package/docs/examples/dialog/fullscreen.vue +23 -23
  153. package/docs/examples/dialog/no-mask.vue +17 -17
  154. package/docs/examples/dialog/size.vue +44 -44
  155. package/docs/examples/dialog/steps.vue +57 -57
  156. package/docs/examples/dialog-full/basic.vue +29 -29
  157. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  158. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  159. package/docs/examples/dialog-full/no-header.vue +27 -27
  160. package/docs/examples/dialog-full/steps.vue +71 -71
  161. package/docs/examples/divider/basic.vue +52 -52
  162. package/docs/examples/drawer/basic.vue +35 -35
  163. package/docs/examples/drawer/custom-buttons.vue +34 -34
  164. package/docs/examples/drawer/direction.vue +47 -47
  165. package/docs/examples/drawer/mask.vue +36 -36
  166. package/docs/examples/drawer/no-buttons.vue +20 -20
  167. package/docs/examples/drawer/size.vue +28 -28
  168. package/docs/examples/dynamic-layer/basic.vue +33 -33
  169. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  170. package/docs/examples/dynamic-layer/form.vue +73 -73
  171. package/docs/examples/dynamic-layer/steps.vue +52 -52
  172. package/docs/examples/dynamic-layer/types.vue +40 -40
  173. package/docs/examples/echarts/basic.vue +31 -31
  174. package/docs/examples/echarts/dynamic.vue +43 -43
  175. package/docs/examples/echarts/line.vue +46 -46
  176. package/docs/examples/echarts/pie.vue +44 -44
  177. package/docs/examples/editor/basic.vue +15 -15
  178. package/docs/examples/form/basic.vue +663 -663
  179. package/docs/examples/form/init.vue +76 -76
  180. package/docs/examples/form/master-detail.vue +203 -203
  181. package/docs/examples/form/rule-format.vue +179 -179
  182. package/docs/examples/form/view-table.vue +378 -378
  183. package/docs/examples/guid/basic.vue +10 -10
  184. package/docs/examples/guid/size.vue +13 -13
  185. package/docs/examples/hpanel/basic.vue +79 -79
  186. package/docs/examples/icon/basic.vue +9 -9
  187. package/docs/examples/icon/rotate-flip.vue +9 -9
  188. package/docs/examples/icon/size.vue +7 -7
  189. package/docs/examples/input/basic.vue +10 -10
  190. package/docs/examples/input/clearable.vue +12 -12
  191. package/docs/examples/input/disabled.vue +6 -6
  192. package/docs/examples/input/icon.vue +23 -23
  193. package/docs/examples/input/password.vue +18 -18
  194. package/docs/examples/input/size.vue +13 -13
  195. package/docs/examples/input/textarea.vue +25 -25
  196. package/docs/examples/input/word-limit.vue +28 -28
  197. package/docs/examples/input-button/basic.vue +33 -33
  198. package/docs/examples/input-cards/basic.vue +79 -79
  199. package/docs/examples/input-code/basic.vue +29 -29
  200. package/docs/examples/input-color/basic.vue +10 -10
  201. package/docs/examples/input-color/disabled.vue +13 -13
  202. package/docs/examples/input-color/format.vue +17 -17
  203. package/docs/examples/input-color/no-alpha.vue +13 -13
  204. package/docs/examples/input-color/only-button.vue +15 -15
  205. package/docs/examples/input-color/predefine.vue +31 -31
  206. package/docs/examples/input-color/size.vue +15 -15
  207. package/docs/examples/input-layer/basic.vue +85 -85
  208. package/docs/examples/input-layer/render-vnode-page.vue +160 -160
  209. package/docs/examples/input-layer/render-vnode.vue +127 -127
  210. package/docs/examples/input-rows/basic.vue +73 -73
  211. package/docs/examples/input-rows/drag.vue +48 -48
  212. package/docs/examples/input-rows/layer-form.vue +85 -85
  213. package/docs/examples/input-rows/nested.vue +91 -91
  214. package/docs/examples/input-tag/basic.vue +27 -27
  215. package/docs/examples/input-tag/colors.vue +23 -23
  216. package/docs/examples/input-tag/readonly.vue +17 -17
  217. package/docs/examples/layer/basic.vue +43 -43
  218. package/docs/examples/layer/custom-buttons.vue +61 -61
  219. package/docs/examples/layer/drawer.vue +37 -37
  220. package/docs/examples/layer/full.vue +38 -38
  221. package/docs/examples/layer/modal.vue +34 -34
  222. package/docs/examples/layer/steps.vue +46 -46
  223. package/docs/examples/layer-form/basic.vue +76 -76
  224. package/docs/examples/layer-form/config.vue +82 -82
  225. package/docs/examples/layer-form/size.vue +72 -72
  226. package/docs/examples/layout/basic.vue +36 -36
  227. package/docs/examples/layout/custom-size.vue +50 -50
  228. package/docs/examples/layout/disable-move.vue +37 -37
  229. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  230. package/docs/examples/layout/min-size.vue +73 -73
  231. package/docs/examples/layout/percent-size.vue +80 -80
  232. package/docs/examples/layout/simple.vue +22 -22
  233. package/docs/examples/layout/top-side.vue +34 -34
  234. package/docs/examples/map/basic.vue +22 -22
  235. package/docs/examples/menu/basic.vue +58 -58
  236. package/docs/examples/menu/collapsed.vue +49 -49
  237. package/docs/examples/menu/horizontal.vue +44 -44
  238. package/docs/examples/menu/selection-test.vue +104 -104
  239. package/docs/examples/menu/theme.vue +46 -46
  240. package/docs/examples/menu/vertical.vue +46 -46
  241. package/docs/examples/number/advanced.vue +143 -143
  242. package/docs/examples/number/basic.vue +63 -63
  243. package/docs/examples/number/disabled.vue +49 -49
  244. package/docs/examples/number/size.vue +42 -42
  245. package/docs/examples/number/slots.vue +123 -123
  246. package/docs/examples/number/step-strictly.vue +41 -41
  247. package/docs/examples/number/step.vue +47 -47
  248. package/docs/examples/page/basic.vue +41 -41
  249. package/docs/examples/page/code-table-model.vue +428 -428
  250. package/docs/examples/page/dept-user-management.vue +211 -211
  251. package/docs/examples/page/init.vue +87 -87
  252. package/docs/examples/page/log.vue +453 -453
  253. package/docs/examples/page/user-management.vue +313 -313
  254. package/docs/examples/panel/tool-buttons.vue +18 -18
  255. package/docs/examples/radio/basic.vue +17 -17
  256. package/docs/examples/radio/button.vue +17 -17
  257. package/docs/examples/radio/color.vue +18 -18
  258. package/docs/examples/radio/disabled.vue +17 -17
  259. package/docs/examples/radio/size.vue +29 -29
  260. package/docs/examples/rate/basic.vue +24 -24
  261. package/docs/examples/rate/half.vue +24 -24
  262. package/docs/examples/rate/readonly.vue +11 -11
  263. package/docs/examples/rate/text.vue +37 -37
  264. package/docs/examples/select/basic.vue +16 -16
  265. package/docs/examples/select/clearable.vue +22 -22
  266. package/docs/examples/select/disabled.vue +31 -31
  267. package/docs/examples/select/filterable.vue +24 -24
  268. package/docs/examples/select/group.vue +23 -23
  269. package/docs/examples/select/icon.vue +16 -16
  270. package/docs/examples/select/multiple.vue +18 -18
  271. package/docs/examples/select/size.vue +39 -39
  272. package/docs/examples/slider/basic.vue +42 -42
  273. package/docs/examples/slider/disabled.vue +17 -17
  274. package/docs/examples/slider/marks.vue +30 -30
  275. package/docs/examples/slider/size.vue +37 -37
  276. package/docs/examples/slider/tooltip.vue +36 -36
  277. package/docs/examples/slider/vertical.vue +26 -26
  278. package/docs/examples/slider-captcha/basic.vue +44 -44
  279. package/docs/examples/slider-captcha/custom.vue +48 -48
  280. package/docs/examples/switch/basic.vue +16 -16
  281. package/docs/examples/switch/disabled.vue +13 -13
  282. package/docs/examples/switch/loading.vue +13 -13
  283. package/docs/examples/switch/size.vue +15 -15
  284. package/docs/examples/switch/text.vue +13 -13
  285. package/docs/examples/table/action-filter.vue +126 -126
  286. package/docs/examples/table/actions.vue +116 -116
  287. package/docs/examples/table/add-row.vue +103 -103
  288. package/docs/examples/table/basic.vue +168 -168
  289. package/docs/examples/table/checkbox-layout.vue +68 -68
  290. package/docs/examples/table/column-filter.vue +96 -96
  291. package/docs/examples/table/custom-layout.vue +115 -115
  292. package/docs/examples/table/dynamic-type.vue +73 -73
  293. package/docs/examples/table/editable.vue +262 -262
  294. package/docs/examples/table/field-selection.vue +87 -87
  295. package/docs/examples/table/frozen-column.vue +140 -140
  296. package/docs/examples/table/height-mode.vue +99 -99
  297. package/docs/examples/table/icon.vue +85 -85
  298. package/docs/examples/table/layer-form.vue +133 -133
  299. package/docs/examples/table/link.vue +66 -66
  300. package/docs/examples/table/multiple-disabled.vue +112 -112
  301. package/docs/examples/table/multiple.vue +188 -188
  302. package/docs/examples/table/pagination.vue +151 -151
  303. package/docs/examples/table/row-drag.vue +67 -67
  304. package/docs/examples/table/single-selection.vue +64 -64
  305. package/docs/examples/table/sub-table-lazy.vue +97 -97
  306. package/docs/examples/table/sub-table.vue +103 -103
  307. package/docs/examples/table/tag.vue +43 -43
  308. package/docs/examples/table/tree-column.vue +119 -119
  309. package/docs/examples/table/tree-data.vue +141 -141
  310. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  311. package/docs/examples/table/tree-lazy.vue +80 -80
  312. package/docs/examples/table/tree-set-selection.vue +75 -75
  313. package/docs/examples/table-panel/basic.vue +229 -229
  314. package/docs/examples/table-panel/batch-operations.vue +286 -286
  315. package/docs/examples/table-panel/button-visibility.vue +88 -88
  316. package/docs/examples/table-panel/column-filter.vue +116 -116
  317. package/docs/examples/table-panel/filter.vue +219 -219
  318. package/docs/examples/table-panel/get-selection.vue +111 -111
  319. package/docs/examples/table-panel/mask.vue +151 -151
  320. package/docs/examples/table-panel/model-value.vue +87 -87
  321. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  322. package/docs/examples/table-panel/pagination.vue +133 -133
  323. package/docs/examples/table-panel/search-list.vue +207 -207
  324. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  325. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  326. package/docs/examples/tabs/basic.vue +98 -98
  327. package/docs/examples/time/base.vue +67 -67
  328. package/docs/examples/title/basic.vue +87 -87
  329. package/docs/examples/tree/accordion.vue +46 -46
  330. package/docs/examples/tree/basic.vue +50 -50
  331. package/docs/examples/tree/buttons.vue +53 -53
  332. package/docs/examples/tree/checkable.vue +52 -52
  333. package/docs/examples/tree/custom-keys.vue +39 -39
  334. package/docs/examples/tree/default-expanded.vue +52 -52
  335. package/docs/examples/tree/draggable.vue +29 -29
  336. package/docs/examples/tree/expand-on-click.vue +39 -39
  337. package/docs/examples/tree/flat-data.vue +20 -20
  338. package/docs/examples/tree/icon.vue +40 -40
  339. package/docs/examples/tree/load-data.vue +37 -37
  340. package/docs/examples/tree/methods.vue +74 -74
  341. package/docs/examples/tree/theme.vue +33 -33
  342. package/docs/examples/tree-select/basic.vue +47 -47
  343. package/docs/examples/upload/accept.vue +31 -31
  344. package/docs/examples/upload/basic.vue +12 -12
  345. package/docs/examples/upload/drag.vue +11 -11
  346. package/docs/examples/upload/image.vue +17 -17
  347. package/docs/examples/upload/limit.vue +20 -20
  348. package/docs/examples/upload/multiple.vue +17 -17
  349. package/docs/examples/upload/readonly.vue +17 -17
  350. package/docs/examples/utils/cipher.vue +160 -160
  351. package/docs/examples/utils/common.vue +153 -153
  352. package/docs/examples/utils/date.vue +56 -56
  353. package/docs/examples/utils/dom.vue +52 -52
  354. package/docs/examples/utils/is.vue +70 -70
  355. package/docs/examples/workflow/basic.vue +265 -265
  356. package/docs/examples/workflow-viewer/basic.vue +248 -248
  357. package/package.json +23 -23
@@ -1,118 +1,118 @@
1
- <template>
2
- <div style="position: relative; width: 100%; height: 500px">
3
- <j-table-panel
4
- :columns="columns"
5
- :load-data="loadData"
6
- :sub-columns="subColumns"
7
- :load-children="loadChildren"
8
- row-key="id"
9
- />
10
- </div>
11
- </template>
12
-
13
- <script lang="ts" setup>
14
- import type { ColumnSchemaConfig } from '@a2simcode/ui'
15
- import * as VTable from '@visactor/vtable'
16
-
17
- VTable.register.icon('loading', {
18
- type: 'image',
19
- width: 16,
20
- height: 16,
21
- src: 'https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/VTable/media/loading-circle.gif',
22
- name: 'loading',
23
- positionType: VTable.TYPES.IconPosition.contentLeft,
24
- marginLeft: 0,
25
- marginRight: 4,
26
- visibleTime: 'always',
27
- hover: {
28
- width: 22,
29
- height: 22,
30
- bgColor: 'rgba(101,117,168,0.1)',
31
- },
32
- isGif: true,
33
- })
34
- const columns: ColumnSchemaConfig[] = [
35
- {
36
- id: 'id',
37
- type: '',
38
- config: {
39
- align: 'center',
40
- label: 'ID',
41
- width: 100,
42
- },
43
- },
44
- {
45
- id: 'name',
46
- type: '',
47
- config: {
48
- label: '名称',
49
- width: 200,
50
- },
51
- },
52
- {
53
- id: 'value',
54
- type: 'j-switch',
55
- config: {
56
- label: '值',
57
- width: 100,
58
- align: 'center',
59
- activeValue: 1,
60
- inactiveValue: 0,
61
- },
62
- },
63
- ]
64
-
65
- const subColumns: ColumnSchemaConfig[] = [
66
- {
67
- id: 'id',
68
- type: '',
69
- config: {
70
- label: '子ID',
71
- width: 100,
72
- },
73
- },
74
- {
75
- id: 'name',
76
- type: '',
77
- config: {
78
- label: '子名称',
79
- width: 200,
80
- },
81
- },
82
- {
83
- id: 'value',
84
- type: '',
85
- config: {
86
- label: '子值',
87
- width: 100,
88
- },
89
- },
90
- ]
91
-
92
- const loadData = async (params: Record<string, any>) => {
93
- console.log('Loading main table data with params:', params)
94
- return new Promise((resolve) => {
95
- setTimeout(() => {
96
- const data = [
97
- { id: '1', name: 'Parent 1', value: 1, children: true },
98
- { id: '2', name: 'Parent 2', value: 0, children: true },
99
- ]
100
- resolve(data)
101
- }, 500)
102
- })
103
- }
104
-
105
- const loadChildren = async (record: Record<string, any>): Promise<any[]> => {
106
- console.log('Loading children for record:', record)
107
- // 模拟异步加载数据
108
- return new Promise((resolve) => {
109
- setTimeout(() => {
110
- const children = [
111
- { id: record.id + '-1', name: record.name + ' Child 1', value: Math.random() * 100 },
112
- { id: record.id + '-2', name: record.name + ' Child 2', value: Math.random() * 100 },
113
- ]
114
- resolve(children)
115
- }, 1000)
116
- })
117
- }
118
- </script>
1
+ <template>
2
+ <div style="position: relative; width: 100%; height: 500px">
3
+ <j-table-panel
4
+ :columns="columns"
5
+ :load-data="loadData"
6
+ :sub-columns="subColumns"
7
+ :load-children="loadChildren"
8
+ row-key="id"
9
+ />
10
+ </div>
11
+ </template>
12
+
13
+ <script lang="ts" setup>
14
+ import type { ColumnSchemaConfig } from '@a2simcode/ui'
15
+ import * as VTable from '@visactor/vtable'
16
+
17
+ VTable.register.icon('loading', {
18
+ type: 'image',
19
+ width: 16,
20
+ height: 16,
21
+ src: 'https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/VTable/media/loading-circle.gif',
22
+ name: 'loading',
23
+ positionType: VTable.TYPES.IconPosition.contentLeft,
24
+ marginLeft: 0,
25
+ marginRight: 4,
26
+ visibleTime: 'always',
27
+ hover: {
28
+ width: 22,
29
+ height: 22,
30
+ bgColor: 'rgba(101,117,168,0.1)',
31
+ },
32
+ isGif: true,
33
+ })
34
+ const columns: ColumnSchemaConfig[] = [
35
+ {
36
+ id: 'id',
37
+ type: '',
38
+ config: {
39
+ align: 'center',
40
+ label: 'ID',
41
+ width: 100,
42
+ },
43
+ },
44
+ {
45
+ id: 'name',
46
+ type: '',
47
+ config: {
48
+ label: '名称',
49
+ width: 200,
50
+ },
51
+ },
52
+ {
53
+ id: 'value',
54
+ type: 'j-switch',
55
+ config: {
56
+ label: '值',
57
+ width: 100,
58
+ align: 'center',
59
+ activeValue: 1,
60
+ inactiveValue: 0,
61
+ },
62
+ },
63
+ ]
64
+
65
+ const subColumns: ColumnSchemaConfig[] = [
66
+ {
67
+ id: 'id',
68
+ type: '',
69
+ config: {
70
+ label: '子ID',
71
+ width: 100,
72
+ },
73
+ },
74
+ {
75
+ id: 'name',
76
+ type: '',
77
+ config: {
78
+ label: '子名称',
79
+ width: 200,
80
+ },
81
+ },
82
+ {
83
+ id: 'value',
84
+ type: '',
85
+ config: {
86
+ label: '子值',
87
+ width: 100,
88
+ },
89
+ },
90
+ ]
91
+
92
+ const loadData = async (params: Record<string, any>) => {
93
+ console.log('Loading main table data with params:', params)
94
+ return new Promise((resolve) => {
95
+ setTimeout(() => {
96
+ const data = [
97
+ { id: '1', name: 'Parent 1', value: 1, children: true },
98
+ { id: '2', name: 'Parent 2', value: 0, children: true },
99
+ ]
100
+ resolve(data)
101
+ }, 500)
102
+ })
103
+ }
104
+
105
+ const loadChildren = async (record: Record<string, any>): Promise<any[]> => {
106
+ console.log('Loading children for record:', record)
107
+ // 模拟异步加载数据
108
+ return new Promise((resolve) => {
109
+ setTimeout(() => {
110
+ const children = [
111
+ { id: record.id + '-1', name: record.name + ' Child 1', value: Math.random() * 100 },
112
+ { id: record.id + '-2', name: record.name + ' Child 2', value: Math.random() * 100 },
113
+ ]
114
+ resolve(children)
115
+ }, 1000)
116
+ })
117
+ }
118
+ </script>
@@ -1,67 +1,67 @@
1
- <template>
2
- <div style="position: relative; width: 100%; height: 500px">
3
- <j-table-panel
4
- row-key="id"
5
- :columns="columns"
6
- :load-data="loadData"
7
- :is-tree="true"
8
- is-multiple
9
- parent-key="pid"
10
- />
11
- </div>
12
- </template>
13
-
14
- <script setup lang="ts">
15
- import { ref } from 'vue'
16
-
17
- const columns = ref([
18
- {
19
- id: 'name',
20
- type: '',
21
- config: {
22
- label: '名称',
23
- width: 240,
24
- },
25
- },
26
- {
27
- id: 'id',
28
- type: '',
29
- config: {
30
- label: 'ID',
31
- width: 160,
32
- },
33
- },
34
- {
35
- id: 'pid',
36
- type: '',
37
- config: {
38
- label: '父ID',
39
- width: 160,
40
- },
41
- },
42
- {
43
- id: 'value',
44
- type: '',
45
- config: {
46
- label: '值',
47
- width: 120,
48
- align: 'right',
49
- },
50
- },
51
- ])
52
-
53
- const flatData = [
54
- { id: '1', pid: '', name: '父节点 1', value: 10 },
55
- { id: '1-1', pid: '1', name: '子节点 1-1', value: 11 },
56
- { id: '1-2', pid: '1', name: '子节点 1-2', value: 12 },
57
- { id: '1-2-1', pid: '1-2', name: '子节点 1-2-1', value: 121 },
58
- { id: '2', pid: '', name: '父节点 2', value: 20 },
59
- { id: '2-1', pid: '2', name: '子节点 2-1', value: 21 },
60
- ]
61
-
62
- const loadData = async (_params: Record<string, any>) => {
63
- return new Promise((resolve) => {
64
- setTimeout(() => resolve(flatData), 200)
65
- })
66
- }
67
- </script>
1
+ <template>
2
+ <div style="position: relative; width: 100%; height: 500px">
3
+ <j-table-panel
4
+ row-key="id"
5
+ :columns="columns"
6
+ :load-data="loadData"
7
+ :is-tree="true"
8
+ is-multiple
9
+ parent-key="pid"
10
+ />
11
+ </div>
12
+ </template>
13
+
14
+ <script setup lang="ts">
15
+ import { ref } from 'vue'
16
+
17
+ const columns = ref([
18
+ {
19
+ id: 'name',
20
+ type: '',
21
+ config: {
22
+ label: '名称',
23
+ width: 240,
24
+ },
25
+ },
26
+ {
27
+ id: 'id',
28
+ type: '',
29
+ config: {
30
+ label: 'ID',
31
+ width: 160,
32
+ },
33
+ },
34
+ {
35
+ id: 'pid',
36
+ type: '',
37
+ config: {
38
+ label: '父ID',
39
+ width: 160,
40
+ },
41
+ },
42
+ {
43
+ id: 'value',
44
+ type: '',
45
+ config: {
46
+ label: '值',
47
+ width: 120,
48
+ align: 'right',
49
+ },
50
+ },
51
+ ])
52
+
53
+ const flatData = [
54
+ { id: '1', pid: '', name: '父节点 1', value: 10 },
55
+ { id: '1-1', pid: '1', name: '子节点 1-1', value: 11 },
56
+ { id: '1-2', pid: '1', name: '子节点 1-2', value: 12 },
57
+ { id: '1-2-1', pid: '1-2', name: '子节点 1-2-1', value: 121 },
58
+ { id: '2', pid: '', name: '父节点 2', value: 20 },
59
+ { id: '2-1', pid: '2', name: '子节点 2-1', value: 21 },
60
+ ]
61
+
62
+ const loadData = async (_params: Record<string, any>) => {
63
+ return new Promise((resolve) => {
64
+ setTimeout(() => resolve(flatData), 200)
65
+ })
66
+ }
67
+ </script>
@@ -1,98 +1,98 @@
1
- <template>
2
- <div class="tabs-demo">
3
- <div class="demo-item">
4
- <p>基础用法</p>
5
- <j-tabs v-model="activeName1">
6
- <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
7
- <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
8
- <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
9
- <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
10
- </j-tabs>
11
- </div>
12
-
13
- <div class="demo-item">
14
- <p>卡片风格</p>
15
- <j-tabs v-model="activeName2" type="card">
16
- <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
17
- <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
18
- <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
19
- <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
20
- </j-tabs>
21
- </div>
22
-
23
- <div class="demo-item">
24
- <p>边框卡片风格</p>
25
- <j-tabs v-model="activeName3" type="border-card">
26
- <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
27
- <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
28
- <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
29
- <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
30
- </j-tabs>
31
- </div>
32
-
33
- <div class="demo-item" style="height: 300px">
34
- <p>标签位置</p>
35
- <div class="j-block" style="height: 0; flex: 1">
36
- <j-tabs v-model="activeName4" tab-position="left">
37
- <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
38
- <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
39
- <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
40
- <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
41
- </j-tabs>
42
- </div>
43
- </div>
44
-
45
- <div class="demo-item">
46
- <p>可关闭标签</p>
47
- <j-tabs v-model="activeName5" type="card" closable>
48
- <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
49
- <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
50
- <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
51
- <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
52
- </j-tabs>
53
- </div>
54
-
55
- <div class="demo-item">
56
- <p>可增加标签</p>
57
- <j-tabs v-model="activeName6" type="card" addable>
58
- <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
59
- <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
60
- <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
61
- <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
62
- </j-tabs>
63
- </div>
64
- </div>
65
- </template>
66
-
67
- <script setup lang="ts">
68
- import { ref } from 'vue'
69
-
70
- const activeName1 = ref('first')
71
- const activeName2 = ref('first')
72
- const activeName3 = ref('first')
73
- const activeName4 = ref('first')
74
- const activeName5 = ref('first')
75
- const activeName6 = ref('first')
76
- </script>
77
-
78
- <style scoped>
79
- .tabs-demo {
80
- display: flex;
81
- flex-direction: column;
82
- gap: 24px;
83
- }
84
-
85
- .demo-item p {
86
- margin: 0 0 12px;
87
- font-size: 14px;
88
- color: var(--j-color-text-2);
89
- font-weight: 500;
90
- }
91
-
92
- .demo-item {
93
- position: relative;
94
- width: 100%;
95
- display: flex;
96
- flex-direction: column;
97
- }
98
- </style>
1
+ <template>
2
+ <div class="tabs-demo">
3
+ <div class="demo-item">
4
+ <p>基础用法</p>
5
+ <j-tabs v-model="activeName1">
6
+ <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
7
+ <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
8
+ <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
9
+ <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
10
+ </j-tabs>
11
+ </div>
12
+
13
+ <div class="demo-item">
14
+ <p>卡片风格</p>
15
+ <j-tabs v-model="activeName2" type="card">
16
+ <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
17
+ <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
18
+ <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
19
+ <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
20
+ </j-tabs>
21
+ </div>
22
+
23
+ <div class="demo-item">
24
+ <p>边框卡片风格</p>
25
+ <j-tabs v-model="activeName3" type="border-card">
26
+ <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
27
+ <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
28
+ <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
29
+ <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
30
+ </j-tabs>
31
+ </div>
32
+
33
+ <div class="demo-item" style="height: 300px">
34
+ <p>标签位置</p>
35
+ <div class="j-block" style="height: 0; flex: 1">
36
+ <j-tabs v-model="activeName4" tab-position="left">
37
+ <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
38
+ <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
39
+ <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
40
+ <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
41
+ </j-tabs>
42
+ </div>
43
+ </div>
44
+
45
+ <div class="demo-item">
46
+ <p>可关闭标签</p>
47
+ <j-tabs v-model="activeName5" type="card" closable>
48
+ <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
49
+ <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
50
+ <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
51
+ <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
52
+ </j-tabs>
53
+ </div>
54
+
55
+ <div class="demo-item">
56
+ <p>可增加标签</p>
57
+ <j-tabs v-model="activeName6" type="card" addable>
58
+ <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
59
+ <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
60
+ <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
61
+ <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
62
+ </j-tabs>
63
+ </div>
64
+ </div>
65
+ </template>
66
+
67
+ <script setup lang="ts">
68
+ import { ref } from 'vue'
69
+
70
+ const activeName1 = ref('first')
71
+ const activeName2 = ref('first')
72
+ const activeName3 = ref('first')
73
+ const activeName4 = ref('first')
74
+ const activeName5 = ref('first')
75
+ const activeName6 = ref('first')
76
+ </script>
77
+
78
+ <style scoped>
79
+ .tabs-demo {
80
+ display: flex;
81
+ flex-direction: column;
82
+ gap: 24px;
83
+ }
84
+
85
+ .demo-item p {
86
+ margin: 0 0 12px;
87
+ font-size: 14px;
88
+ color: var(--j-color-text-2);
89
+ font-weight: 500;
90
+ }
91
+
92
+ .demo-item {
93
+ position: relative;
94
+ width: 100%;
95
+ display: flex;
96
+ flex-direction: column;
97
+ }
98
+ </style>