@a2simcode/ui 0.0.234 → 0.0.236

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 (360) 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/layer-form/index.d.ts +1 -1
  6. package/dist/components/layer-form/src/layer-form.vue.d.ts +1 -1
  7. package/dist/components/select/index.d.ts +20 -5
  8. package/dist/components/select/src/select.vue.d.ts +8 -2
  9. package/dist/simcode-ui.es.js +395 -383
  10. package/dist/simcode-ui.umd.js +2 -2
  11. package/dist/stats.html +1 -1
  12. package/dist/ui.css +1 -1
  13. package/docs/components/autocomplete.md +89 -89
  14. package/docs/components/barcode.md +101 -101
  15. package/docs/components/button-select.md +24 -24
  16. package/docs/components/button.md +117 -117
  17. package/docs/components/buttons.md +119 -119
  18. package/docs/components/cascader-select.md +114 -114
  19. package/docs/components/checkbox.md +114 -114
  20. package/docs/components/code-mirror.md +85 -85
  21. package/docs/components/collapse.md +26 -26
  22. package/docs/components/comp.md +71 -71
  23. package/docs/components/count-up.md +24 -24
  24. package/docs/components/count.md +24 -24
  25. package/docs/components/data-panel.md +24 -24
  26. package/docs/components/date.md +76 -76
  27. package/docs/components/dialog-full.md +112 -112
  28. package/docs/components/dialog.md +127 -127
  29. package/docs/components/divider.md +24 -24
  30. package/docs/components/drawer.md +127 -127
  31. package/docs/components/dynamic-layer.md +118 -118
  32. package/docs/components/echarts.md +72 -72
  33. package/docs/components/editor.md +24 -24
  34. package/docs/components/form.md +87 -87
  35. package/docs/components/guid.md +39 -39
  36. package/docs/components/hpanel.md +24 -24
  37. package/docs/components/icon.md +56 -56
  38. package/docs/components/input-button.md +24 -24
  39. package/docs/components/input-code.md +24 -24
  40. package/docs/components/input-color.md +114 -114
  41. package/docs/components/input-layer.md +56 -56
  42. package/docs/components/input-rows.md +370 -370
  43. package/docs/components/input-tag.md +50 -50
  44. package/docs/components/input.md +129 -129
  45. package/docs/components/layer-form.md +61 -61
  46. package/docs/components/layer.md +127 -127
  47. package/docs/components/layout.md +132 -132
  48. package/docs/components/map.md +24 -24
  49. package/docs/components/menu.md +121 -121
  50. package/docs/components/meta/button.ts +212 -212
  51. package/docs/components/meta/buttons.ts +76 -76
  52. package/docs/components/meta/code-mirror.ts +108 -108
  53. package/docs/components/meta/comp.ts +236 -236
  54. package/docs/components/meta/date.ts +267 -267
  55. package/docs/components/meta/echarts.ts +64 -64
  56. package/docs/components/meta/form-item.ts +50 -50
  57. package/docs/components/meta/form.ts +181 -181
  58. package/docs/components/meta/input-button.ts +165 -165
  59. package/docs/components/meta/input-cards.ts +112 -112
  60. package/docs/components/meta/input-code.ts +151 -151
  61. package/docs/components/meta/input-color.ts +243 -243
  62. package/docs/components/meta/input-layer.ts +382 -382
  63. package/docs/components/meta/input-rows.ts +119 -119
  64. package/docs/components/meta/layer-form.ts +74 -74
  65. package/docs/components/meta/map.ts +68 -68
  66. package/docs/components/meta/panel.ts +152 -152
  67. package/docs/components/meta/radio.ts +55 -55
  68. package/docs/components/meta/select.ts +279 -279
  69. package/docs/components/meta/slider.ts +270 -270
  70. package/docs/components/meta/table-panel.ts +260 -260
  71. package/docs/components/meta/table.ts +403 -403
  72. package/docs/components/meta/tabs.ts +146 -146
  73. package/docs/components/meta/title.ts +91 -91
  74. package/docs/components/meta/tree-select.ts +199 -199
  75. package/docs/components/meta/tree.ts +219 -219
  76. package/docs/components/meta/vpanel.ts +19 -19
  77. package/docs/components/meta/workflow-viewer.ts +55 -55
  78. package/docs/components/number.md +124 -124
  79. package/docs/components/page.md +102 -102
  80. package/docs/components/panel.md +37 -37
  81. package/docs/components/radio.md +87 -87
  82. package/docs/components/rate.md +71 -71
  83. package/docs/components/select.md +133 -133
  84. package/docs/components/slider-captcha.md +41 -41
  85. package/docs/components/slider.md +101 -101
  86. package/docs/components/switch.md +90 -90
  87. package/docs/components/table-panel.md +282 -282
  88. package/docs/components/table.md +435 -435
  89. package/docs/components/tabs.md +26 -26
  90. package/docs/components/title.md +24 -24
  91. package/docs/components/tree.md +207 -207
  92. package/docs/components/upload.md +117 -117
  93. package/docs/components/workflow-viewer.md +21 -21
  94. package/docs/components/workflow.md +21 -21
  95. package/docs/examples/autocomplete/advanced.vue +35 -35
  96. package/docs/examples/autocomplete/basic.vue +32 -32
  97. package/docs/examples/autocomplete/clearable.vue +33 -33
  98. package/docs/examples/autocomplete/custom-template.vue +49 -49
  99. package/docs/examples/autocomplete/disabled.vue +33 -33
  100. package/docs/examples/autocomplete/icon.vue +37 -37
  101. package/docs/examples/barcode/all-types.vue +380 -380
  102. package/docs/examples/barcode/basic.vue +14 -14
  103. package/docs/examples/barcode/props-appearance.vue +243 -243
  104. package/docs/examples/barcode/props-geometry.vue +143 -143
  105. package/docs/examples/barcode/props-logic.vue +216 -216
  106. package/docs/examples/barcode/props-symbology.vue +199 -199
  107. package/docs/examples/barcode/props-text.vue +268 -268
  108. package/docs/examples/button/basic.vue +7 -7
  109. package/docs/examples/button/disabled.vue +42 -42
  110. package/docs/examples/button/loading.vue +6 -6
  111. package/docs/examples/button/shape.vue +7 -7
  112. package/docs/examples/button/size.vue +14 -14
  113. package/docs/examples/button/status.vue +34 -34
  114. package/docs/examples/button/type.vue +10 -10
  115. package/docs/examples/button-select/basic.vue +19 -19
  116. package/docs/examples/buttons/basic.vue +62 -62
  117. package/docs/examples/buttons/disabled.vue +36 -36
  118. package/docs/examples/buttons/dropdown.vue +63 -63
  119. package/docs/examples/buttons/group.vue +52 -52
  120. package/docs/examples/buttons/link.vue +47 -47
  121. package/docs/examples/buttons/popup.vue +39 -39
  122. package/docs/examples/buttons/size.vue +45 -45
  123. package/docs/examples/cascader-select/basic.vue +28 -28
  124. package/docs/examples/cascader-select/clearable.vue +34 -34
  125. package/docs/examples/cascader-select/disabled.vue +43 -43
  126. package/docs/examples/cascader-select/filterable.vue +37 -37
  127. package/docs/examples/cascader-select/methods.vue +84 -84
  128. package/docs/examples/cascader-select/multiple.vue +38 -38
  129. package/docs/examples/cascader-select/slot.vue +45 -45
  130. package/docs/examples/checkbox/basic.vue +18 -18
  131. package/docs/examples/checkbox/button.vue +19 -19
  132. package/docs/examples/checkbox/color.vue +25 -25
  133. package/docs/examples/checkbox/disabled.vue +17 -17
  134. package/docs/examples/checkbox/min-max.vue +20 -20
  135. package/docs/examples/checkbox/mixed.vue +56 -56
  136. package/docs/examples/checkbox/size.vue +28 -28
  137. package/docs/examples/code-mirror/basic.vue +11 -11
  138. package/docs/examples/code-mirror/events.vue +42 -42
  139. package/docs/examples/code-mirror/height.vue +25 -25
  140. package/docs/examples/code-mirror/mode.vue +33 -33
  141. package/docs/examples/code-mirror/readonly.vue +14 -14
  142. package/docs/examples/collapse/basic.vue +82 -82
  143. package/docs/examples/comp/basic.vue +7 -7
  144. package/docs/examples/comp/collapse.vue +38 -38
  145. package/docs/examples/comp/tabs.vue +38 -38
  146. package/docs/examples/count/basic.vue +101 -101
  147. package/docs/examples/count-up/basic.vue +89 -89
  148. package/docs/examples/data-panel/basic.vue +110 -110
  149. package/docs/examples/date/basic.vue +73 -73
  150. package/docs/examples/date/default-value.vue +59 -59
  151. package/docs/examples/date/format.vue +75 -75
  152. package/docs/examples/date/range.vue +66 -66
  153. package/docs/examples/date/types.vue +79 -79
  154. package/docs/examples/decorated-title/basic.vue +31 -31
  155. package/docs/examples/dialog/basic.vue +36 -36
  156. package/docs/examples/dialog/custom-buttons.vue +44 -44
  157. package/docs/examples/dialog/fullscreen.vue +23 -23
  158. package/docs/examples/dialog/no-mask.vue +17 -17
  159. package/docs/examples/dialog/size.vue +44 -44
  160. package/docs/examples/dialog/steps.vue +57 -57
  161. package/docs/examples/dialog-full/basic.vue +29 -29
  162. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  163. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  164. package/docs/examples/dialog-full/no-header.vue +27 -27
  165. package/docs/examples/dialog-full/steps.vue +71 -71
  166. package/docs/examples/divider/basic.vue +52 -52
  167. package/docs/examples/drawer/basic.vue +35 -35
  168. package/docs/examples/drawer/custom-buttons.vue +34 -34
  169. package/docs/examples/drawer/direction.vue +47 -47
  170. package/docs/examples/drawer/mask.vue +36 -36
  171. package/docs/examples/drawer/no-buttons.vue +20 -20
  172. package/docs/examples/drawer/size.vue +28 -28
  173. package/docs/examples/dynamic-layer/basic.vue +33 -33
  174. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  175. package/docs/examples/dynamic-layer/form.vue +73 -73
  176. package/docs/examples/dynamic-layer/steps.vue +52 -52
  177. package/docs/examples/dynamic-layer/types.vue +40 -40
  178. package/docs/examples/echarts/basic.vue +31 -31
  179. package/docs/examples/echarts/dynamic.vue +43 -43
  180. package/docs/examples/echarts/line.vue +46 -46
  181. package/docs/examples/echarts/pie.vue +44 -44
  182. package/docs/examples/editor/basic.vue +15 -15
  183. package/docs/examples/form/basic.vue +663 -663
  184. package/docs/examples/form/init.vue +76 -76
  185. package/docs/examples/form/master-detail.vue +203 -203
  186. package/docs/examples/form/rule-format.vue +179 -179
  187. package/docs/examples/form/view-table.vue +378 -378
  188. package/docs/examples/guid/basic.vue +10 -10
  189. package/docs/examples/guid/size.vue +13 -13
  190. package/docs/examples/hpanel/basic.vue +79 -79
  191. package/docs/examples/icon/basic.vue +9 -9
  192. package/docs/examples/icon/rotate-flip.vue +9 -9
  193. package/docs/examples/icon/size.vue +7 -7
  194. package/docs/examples/input/basic.vue +10 -10
  195. package/docs/examples/input/clearable.vue +12 -12
  196. package/docs/examples/input/disabled.vue +6 -6
  197. package/docs/examples/input/icon.vue +23 -23
  198. package/docs/examples/input/password.vue +18 -18
  199. package/docs/examples/input/size.vue +13 -13
  200. package/docs/examples/input/textarea.vue +25 -25
  201. package/docs/examples/input/word-limit.vue +28 -28
  202. package/docs/examples/input-button/basic.vue +33 -33
  203. package/docs/examples/input-cards/basic.vue +79 -79
  204. package/docs/examples/input-code/basic.vue +29 -29
  205. package/docs/examples/input-color/basic.vue +10 -10
  206. package/docs/examples/input-color/disabled.vue +13 -13
  207. package/docs/examples/input-color/format.vue +17 -17
  208. package/docs/examples/input-color/no-alpha.vue +13 -13
  209. package/docs/examples/input-color/only-button.vue +15 -15
  210. package/docs/examples/input-color/predefine.vue +31 -31
  211. package/docs/examples/input-color/size.vue +15 -15
  212. package/docs/examples/input-layer/basic.vue +85 -85
  213. package/docs/examples/input-layer/render-vnode-page.vue +160 -160
  214. package/docs/examples/input-layer/render-vnode.vue +127 -127
  215. package/docs/examples/input-rows/basic.vue +73 -73
  216. package/docs/examples/input-rows/drag.vue +48 -48
  217. package/docs/examples/input-rows/layer-form.vue +85 -85
  218. package/docs/examples/input-rows/nested.vue +91 -91
  219. package/docs/examples/input-tag/basic.vue +27 -27
  220. package/docs/examples/input-tag/colors.vue +23 -23
  221. package/docs/examples/input-tag/readonly.vue +17 -17
  222. package/docs/examples/layer/basic.vue +43 -43
  223. package/docs/examples/layer/custom-buttons.vue +61 -61
  224. package/docs/examples/layer/drawer.vue +37 -37
  225. package/docs/examples/layer/full.vue +38 -38
  226. package/docs/examples/layer/modal.vue +34 -34
  227. package/docs/examples/layer/steps.vue +46 -46
  228. package/docs/examples/layer-form/basic.vue +76 -76
  229. package/docs/examples/layer-form/config.vue +82 -82
  230. package/docs/examples/layer-form/size.vue +72 -72
  231. package/docs/examples/layout/basic.vue +36 -36
  232. package/docs/examples/layout/custom-size.vue +50 -50
  233. package/docs/examples/layout/disable-move.vue +37 -37
  234. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  235. package/docs/examples/layout/min-size.vue +73 -73
  236. package/docs/examples/layout/percent-size.vue +80 -80
  237. package/docs/examples/layout/simple.vue +22 -22
  238. package/docs/examples/layout/top-side.vue +34 -34
  239. package/docs/examples/map/basic.vue +22 -22
  240. package/docs/examples/menu/basic.vue +58 -58
  241. package/docs/examples/menu/collapsed.vue +49 -49
  242. package/docs/examples/menu/horizontal.vue +44 -44
  243. package/docs/examples/menu/selection-test.vue +104 -104
  244. package/docs/examples/menu/theme.vue +46 -46
  245. package/docs/examples/menu/vertical.vue +46 -46
  246. package/docs/examples/number/advanced.vue +143 -143
  247. package/docs/examples/number/basic.vue +63 -63
  248. package/docs/examples/number/disabled.vue +49 -49
  249. package/docs/examples/number/size.vue +42 -42
  250. package/docs/examples/number/slots.vue +123 -123
  251. package/docs/examples/number/step-strictly.vue +41 -41
  252. package/docs/examples/number/step.vue +47 -47
  253. package/docs/examples/page/basic.vue +41 -41
  254. package/docs/examples/page/code-table-model.vue +428 -428
  255. package/docs/examples/page/dept-user-management.vue +211 -211
  256. package/docs/examples/page/init.vue +87 -87
  257. package/docs/examples/page/log.vue +453 -453
  258. package/docs/examples/page/user-management.vue +313 -313
  259. package/docs/examples/panel/tool-buttons.vue +18 -18
  260. package/docs/examples/radio/basic.vue +17 -17
  261. package/docs/examples/radio/button.vue +17 -17
  262. package/docs/examples/radio/color.vue +18 -18
  263. package/docs/examples/radio/disabled.vue +17 -17
  264. package/docs/examples/radio/size.vue +29 -29
  265. package/docs/examples/rate/basic.vue +24 -24
  266. package/docs/examples/rate/half.vue +24 -24
  267. package/docs/examples/rate/readonly.vue +11 -11
  268. package/docs/examples/rate/text.vue +37 -37
  269. package/docs/examples/select/basic.vue +16 -16
  270. package/docs/examples/select/clearable.vue +22 -22
  271. package/docs/examples/select/disabled.vue +31 -31
  272. package/docs/examples/select/filterable.vue +24 -24
  273. package/docs/examples/select/group.vue +23 -23
  274. package/docs/examples/select/icon.vue +16 -16
  275. package/docs/examples/select/multiple.vue +18 -18
  276. package/docs/examples/select/size.vue +39 -39
  277. package/docs/examples/slider/basic.vue +42 -42
  278. package/docs/examples/slider/disabled.vue +17 -17
  279. package/docs/examples/slider/marks.vue +30 -30
  280. package/docs/examples/slider/size.vue +37 -37
  281. package/docs/examples/slider/tooltip.vue +36 -36
  282. package/docs/examples/slider/vertical.vue +26 -26
  283. package/docs/examples/slider-captcha/basic.vue +44 -44
  284. package/docs/examples/slider-captcha/custom.vue +48 -48
  285. package/docs/examples/switch/basic.vue +16 -16
  286. package/docs/examples/switch/disabled.vue +13 -13
  287. package/docs/examples/switch/loading.vue +13 -13
  288. package/docs/examples/switch/size.vue +15 -15
  289. package/docs/examples/switch/text.vue +13 -13
  290. package/docs/examples/table/action-filter.vue +126 -126
  291. package/docs/examples/table/actions.vue +116 -116
  292. package/docs/examples/table/add-row.vue +103 -103
  293. package/docs/examples/table/basic.vue +168 -168
  294. package/docs/examples/table/checkbox-layout.vue +68 -68
  295. package/docs/examples/table/custom-layout.vue +115 -115
  296. package/docs/examples/table/dynamic-type.vue +73 -73
  297. package/docs/examples/table/editable.vue +262 -262
  298. package/docs/examples/table/field-selection.vue +87 -87
  299. package/docs/examples/table/frozen-column.vue +140 -140
  300. package/docs/examples/table/height-mode.vue +99 -99
  301. package/docs/examples/table/icon.vue +85 -85
  302. package/docs/examples/table/layer-form.vue +133 -133
  303. package/docs/examples/table/link.vue +66 -66
  304. package/docs/examples/table/multiple-disabled.vue +112 -112
  305. package/docs/examples/table/multiple.vue +188 -188
  306. package/docs/examples/table/pagination.vue +151 -151
  307. package/docs/examples/table/row-drag.vue +67 -67
  308. package/docs/examples/table/single-selection.vue +64 -64
  309. package/docs/examples/table/sub-table-lazy.vue +97 -97
  310. package/docs/examples/table/sub-table.vue +103 -103
  311. package/docs/examples/table/tag.vue +43 -43
  312. package/docs/examples/table/tree-column.vue +119 -119
  313. package/docs/examples/table/tree-data.vue +141 -141
  314. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  315. package/docs/examples/table/tree-lazy.vue +80 -80
  316. package/docs/examples/table/tree-set-selection.vue +75 -75
  317. package/docs/examples/table-panel/basic.vue +229 -229
  318. package/docs/examples/table-panel/batch-operations.vue +286 -286
  319. package/docs/examples/table-panel/button-visibility.vue +88 -88
  320. package/docs/examples/table-panel/filter.vue +219 -219
  321. package/docs/examples/table-panel/get-selection.vue +111 -111
  322. package/docs/examples/table-panel/mask.vue +151 -151
  323. package/docs/examples/table-panel/model-value.vue +87 -87
  324. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  325. package/docs/examples/table-panel/pagination.vue +133 -133
  326. package/docs/examples/table-panel/search-list.vue +207 -207
  327. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  328. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  329. package/docs/examples/tabs/basic.vue +98 -98
  330. package/docs/examples/time/base.vue +67 -67
  331. package/docs/examples/title/basic.vue +87 -87
  332. package/docs/examples/tree/accordion.vue +46 -46
  333. package/docs/examples/tree/basic.vue +50 -50
  334. package/docs/examples/tree/buttons.vue +53 -53
  335. package/docs/examples/tree/checkable.vue +52 -52
  336. package/docs/examples/tree/custom-keys.vue +39 -39
  337. package/docs/examples/tree/default-expanded.vue +52 -52
  338. package/docs/examples/tree/draggable.vue +29 -29
  339. package/docs/examples/tree/expand-on-click.vue +39 -39
  340. package/docs/examples/tree/flat-data.vue +20 -20
  341. package/docs/examples/tree/icon.vue +40 -40
  342. package/docs/examples/tree/load-data.vue +37 -37
  343. package/docs/examples/tree/methods.vue +74 -74
  344. package/docs/examples/tree/theme.vue +33 -33
  345. package/docs/examples/tree-select/basic.vue +47 -47
  346. package/docs/examples/upload/accept.vue +31 -31
  347. package/docs/examples/upload/basic.vue +12 -12
  348. package/docs/examples/upload/drag.vue +11 -11
  349. package/docs/examples/upload/image.vue +17 -17
  350. package/docs/examples/upload/limit.vue +20 -20
  351. package/docs/examples/upload/multiple.vue +17 -17
  352. package/docs/examples/upload/readonly.vue +17 -17
  353. package/docs/examples/utils/cipher.vue +160 -160
  354. package/docs/examples/utils/common.vue +153 -153
  355. package/docs/examples/utils/date.vue +56 -56
  356. package/docs/examples/utils/dom.vue +52 -52
  357. package/docs/examples/utils/is.vue +70 -70
  358. package/docs/examples/workflow/basic.vue +265 -265
  359. package/docs/examples/workflow-viewer/basic.vue +248 -248
  360. 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>