@a2simcode/ui 0.0.322 → 0.0.323

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 (375) 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-panel/src/table-panel.vue.d.ts +4 -4
  6. package/dist/simcode-ui.es.js +186 -190
  7. package/dist/simcode-ui.umd.js +2 -2
  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/card-list.md +38 -38
  16. package/docs/components/cascader-select.md +114 -114
  17. package/docs/components/checkbox.md +114 -114
  18. package/docs/components/code-mirror.md +85 -85
  19. package/docs/components/collapse.md +26 -26
  20. package/docs/components/comp.md +106 -106
  21. package/docs/components/count-up.md +24 -24
  22. package/docs/components/count.md +24 -24
  23. package/docs/components/data-panel.md +24 -24
  24. package/docs/components/date.md +76 -76
  25. package/docs/components/dialog-full.md +112 -112
  26. package/docs/components/dialog.md +127 -127
  27. package/docs/components/divider.md +24 -24
  28. package/docs/components/drawer.md +127 -127
  29. package/docs/components/dynamic-layer.md +118 -118
  30. package/docs/components/echarts.md +72 -72
  31. package/docs/components/editor.md +24 -24
  32. package/docs/components/form.md +87 -87
  33. package/docs/components/guid.md +39 -39
  34. package/docs/components/hpanel.md +24 -24
  35. package/docs/components/icon.md +56 -56
  36. package/docs/components/input-button.md +24 -24
  37. package/docs/components/input-code.md +24 -24
  38. package/docs/components/input-color.md +114 -114
  39. package/docs/components/input-layer.md +56 -56
  40. package/docs/components/input-rows.md +370 -370
  41. package/docs/components/input-tag.md +50 -50
  42. package/docs/components/input.md +129 -129
  43. package/docs/components/layer-form.md +61 -61
  44. package/docs/components/layer.md +127 -127
  45. package/docs/components/layout.md +132 -132
  46. package/docs/components/map.md +24 -24
  47. package/docs/components/menu.md +121 -121
  48. package/docs/components/meta/button.ts +212 -212
  49. package/docs/components/meta/buttons.ts +81 -81
  50. package/docs/components/meta/card-list.ts +210 -210
  51. package/docs/components/meta/code-mirror.ts +108 -108
  52. package/docs/components/meta/comp.ts +235 -235
  53. package/docs/components/meta/date.ts +277 -277
  54. package/docs/components/meta/echarts.ts +64 -64
  55. package/docs/components/meta/form-item.ts +62 -62
  56. package/docs/components/meta/form.ts +181 -181
  57. package/docs/components/meta/input-button.ts +175 -175
  58. package/docs/components/meta/input-cards.ts +112 -112
  59. package/docs/components/meta/input-code.ts +161 -161
  60. package/docs/components/meta/input-color.ts +243 -243
  61. package/docs/components/meta/input-rows.ts +119 -119
  62. package/docs/components/meta/layer-form.ts +74 -74
  63. package/docs/components/meta/map.ts +68 -68
  64. package/docs/components/meta/panel.ts +152 -152
  65. package/docs/components/meta/radio.ts +55 -55
  66. package/docs/components/meta/select.ts +289 -289
  67. package/docs/components/meta/slider.ts +270 -270
  68. package/docs/components/meta/table-panel.ts +343 -343
  69. package/docs/components/meta/table.ts +495 -495
  70. package/docs/components/meta/tabs.ts +146 -146
  71. package/docs/components/meta/title.ts +91 -91
  72. package/docs/components/meta/tree-select.ts +220 -220
  73. package/docs/components/meta/tree.ts +225 -225
  74. package/docs/components/meta/vpanel.ts +19 -19
  75. package/docs/components/meta/workflow-viewer.ts +55 -55
  76. package/docs/components/number.md +124 -124
  77. package/docs/components/page.md +102 -102
  78. package/docs/components/panel.md +37 -37
  79. package/docs/components/radio.md +87 -87
  80. package/docs/components/rate.md +71 -71
  81. package/docs/components/select.md +149 -149
  82. package/docs/components/slider-captcha.md +41 -41
  83. package/docs/components/slider.md +101 -101
  84. package/docs/components/switch.md +90 -90
  85. package/docs/components/table-panel.md +342 -342
  86. package/docs/components/table.md +526 -526
  87. package/docs/components/tabs.md +26 -26
  88. package/docs/components/title.md +24 -24
  89. package/docs/components/tree.md +222 -222
  90. package/docs/components/upload.md +117 -117
  91. package/docs/components/workflow-viewer.md +21 -21
  92. package/docs/components/workflow.md +21 -21
  93. package/docs/examples/autocomplete/advanced.vue +35 -35
  94. package/docs/examples/autocomplete/basic.vue +32 -32
  95. package/docs/examples/autocomplete/clearable.vue +33 -33
  96. package/docs/examples/autocomplete/custom-template.vue +49 -49
  97. package/docs/examples/autocomplete/disabled.vue +33 -33
  98. package/docs/examples/autocomplete/icon.vue +37 -37
  99. package/docs/examples/barcode/all-types.vue +380 -380
  100. package/docs/examples/barcode/basic.vue +14 -14
  101. package/docs/examples/barcode/props-appearance.vue +243 -243
  102. package/docs/examples/barcode/props-geometry.vue +143 -143
  103. package/docs/examples/barcode/props-logic.vue +216 -216
  104. package/docs/examples/barcode/props-symbology.vue +199 -199
  105. package/docs/examples/barcode/props-text.vue +268 -268
  106. package/docs/examples/button/basic.vue +7 -7
  107. package/docs/examples/button/disabled.vue +42 -42
  108. package/docs/examples/button/loading.vue +6 -6
  109. package/docs/examples/button/shape.vue +7 -7
  110. package/docs/examples/button/size.vue +14 -14
  111. package/docs/examples/button/status.vue +34 -34
  112. package/docs/examples/button/type.vue +10 -10
  113. package/docs/examples/button-select/basic.vue +19 -19
  114. package/docs/examples/buttons/basic.vue +62 -62
  115. package/docs/examples/buttons/disabled.vue +36 -36
  116. package/docs/examples/buttons/dropdown.vue +63 -63
  117. package/docs/examples/buttons/group.vue +52 -52
  118. package/docs/examples/buttons/link.vue +47 -47
  119. package/docs/examples/buttons/popup.vue +39 -39
  120. package/docs/examples/buttons/size.vue +45 -45
  121. package/docs/examples/card-list/basic.vue +70 -70
  122. package/docs/examples/card-list/selection-pagination.vue +69 -69
  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/table-merge-rows.vue +77 -77
  146. package/docs/examples/comp/table-row-fixed-merge.vue +105 -105
  147. package/docs/examples/comp/tabs.vue +38 -38
  148. package/docs/examples/count/basic.vue +101 -101
  149. package/docs/examples/count-up/basic.vue +89 -89
  150. package/docs/examples/data-panel/basic.vue +110 -110
  151. package/docs/examples/date/basic.vue +73 -73
  152. package/docs/examples/date/default-value.vue +59 -59
  153. package/docs/examples/date/format.vue +75 -75
  154. package/docs/examples/date/range.vue +66 -66
  155. package/docs/examples/date/types.vue +79 -79
  156. package/docs/examples/decorated-title/basic.vue +31 -31
  157. package/docs/examples/dialog/basic.vue +36 -36
  158. package/docs/examples/dialog/custom-buttons.vue +44 -44
  159. package/docs/examples/dialog/fullscreen.vue +23 -23
  160. package/docs/examples/dialog/no-mask.vue +17 -17
  161. package/docs/examples/dialog/size.vue +44 -44
  162. package/docs/examples/dialog/steps.vue +57 -57
  163. package/docs/examples/dialog-full/basic.vue +29 -29
  164. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  165. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  166. package/docs/examples/dialog-full/no-header.vue +27 -27
  167. package/docs/examples/dialog-full/steps.vue +71 -71
  168. package/docs/examples/divider/basic.vue +52 -52
  169. package/docs/examples/drawer/basic.vue +35 -35
  170. package/docs/examples/drawer/custom-buttons.vue +34 -34
  171. package/docs/examples/drawer/direction.vue +47 -47
  172. package/docs/examples/drawer/mask.vue +36 -36
  173. package/docs/examples/drawer/no-buttons.vue +20 -20
  174. package/docs/examples/drawer/size.vue +28 -28
  175. package/docs/examples/dynamic-layer/basic.vue +33 -33
  176. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  177. package/docs/examples/dynamic-layer/form.vue +73 -73
  178. package/docs/examples/dynamic-layer/steps.vue +52 -52
  179. package/docs/examples/dynamic-layer/types.vue +40 -40
  180. package/docs/examples/echarts/basic.vue +31 -31
  181. package/docs/examples/echarts/dynamic.vue +43 -43
  182. package/docs/examples/echarts/line.vue +46 -46
  183. package/docs/examples/echarts/pie.vue +44 -44
  184. package/docs/examples/editor/basic.vue +15 -15
  185. package/docs/examples/form/basic.vue +688 -688
  186. package/docs/examples/form/init.vue +76 -76
  187. package/docs/examples/form/master-detail.vue +203 -203
  188. package/docs/examples/form/rule-format.vue +179 -179
  189. package/docs/examples/form/view-table.vue +378 -378
  190. package/docs/examples/guid/basic.vue +10 -10
  191. package/docs/examples/guid/size.vue +13 -13
  192. package/docs/examples/hpanel/basic.vue +79 -79
  193. package/docs/examples/icon/basic.vue +9 -9
  194. package/docs/examples/icon/rotate-flip.vue +9 -9
  195. package/docs/examples/icon/size.vue +7 -7
  196. package/docs/examples/input/basic.vue +10 -10
  197. package/docs/examples/input/clearable.vue +12 -12
  198. package/docs/examples/input/disabled.vue +6 -6
  199. package/docs/examples/input/icon.vue +23 -23
  200. package/docs/examples/input/password.vue +18 -18
  201. package/docs/examples/input/size.vue +13 -13
  202. package/docs/examples/input/textarea.vue +25 -25
  203. package/docs/examples/input/word-limit.vue +28 -28
  204. package/docs/examples/input-button/basic.vue +33 -33
  205. package/docs/examples/input-cards/basic.vue +79 -79
  206. package/docs/examples/input-code/basic.vue +29 -29
  207. package/docs/examples/input-color/basic.vue +10 -10
  208. package/docs/examples/input-color/disabled.vue +13 -13
  209. package/docs/examples/input-color/format.vue +17 -17
  210. package/docs/examples/input-color/no-alpha.vue +13 -13
  211. package/docs/examples/input-color/only-button.vue +15 -15
  212. package/docs/examples/input-color/predefine.vue +31 -31
  213. package/docs/examples/input-color/size.vue +15 -15
  214. package/docs/examples/input-layer/basic.vue +85 -85
  215. package/docs/examples/input-layer/render-vnode-page.vue +160 -160
  216. package/docs/examples/input-layer/render-vnode.vue +127 -127
  217. package/docs/examples/input-rows/basic.vue +73 -73
  218. package/docs/examples/input-rows/drag.vue +48 -48
  219. package/docs/examples/input-rows/layer-form.vue +85 -85
  220. package/docs/examples/input-rows/nested.vue +91 -91
  221. package/docs/examples/input-tag/basic.vue +27 -27
  222. package/docs/examples/input-tag/colors.vue +23 -23
  223. package/docs/examples/input-tag/readonly.vue +17 -17
  224. package/docs/examples/layer/basic.vue +43 -43
  225. package/docs/examples/layer/custom-buttons.vue +61 -61
  226. package/docs/examples/layer/drawer.vue +37 -37
  227. package/docs/examples/layer/full.vue +38 -38
  228. package/docs/examples/layer/modal.vue +34 -34
  229. package/docs/examples/layer/steps.vue +46 -46
  230. package/docs/examples/layer-form/basic.vue +76 -76
  231. package/docs/examples/layer-form/config.vue +82 -82
  232. package/docs/examples/layer-form/size.vue +72 -72
  233. package/docs/examples/layout/basic.vue +36 -36
  234. package/docs/examples/layout/custom-size.vue +50 -50
  235. package/docs/examples/layout/disable-move.vue +37 -37
  236. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  237. package/docs/examples/layout/min-size.vue +73 -73
  238. package/docs/examples/layout/percent-size.vue +80 -80
  239. package/docs/examples/layout/simple.vue +22 -22
  240. package/docs/examples/layout/top-side.vue +34 -34
  241. package/docs/examples/map/basic.vue +22 -22
  242. package/docs/examples/menu/basic.vue +58 -58
  243. package/docs/examples/menu/collapsed.vue +49 -49
  244. package/docs/examples/menu/horizontal.vue +44 -44
  245. package/docs/examples/menu/selection-test.vue +104 -104
  246. package/docs/examples/menu/theme.vue +46 -46
  247. package/docs/examples/menu/vertical.vue +46 -46
  248. package/docs/examples/number/advanced.vue +143 -143
  249. package/docs/examples/number/basic.vue +63 -63
  250. package/docs/examples/number/disabled.vue +49 -49
  251. package/docs/examples/number/size.vue +42 -42
  252. package/docs/examples/number/slots.vue +123 -123
  253. package/docs/examples/number/step-strictly.vue +41 -41
  254. package/docs/examples/number/step.vue +47 -47
  255. package/docs/examples/page/basic.vue +41 -41
  256. package/docs/examples/page/code-table-model.vue +428 -428
  257. package/docs/examples/page/dept-user-management.vue +211 -211
  258. package/docs/examples/page/init.vue +87 -87
  259. package/docs/examples/page/log.vue +453 -453
  260. package/docs/examples/page/user-management.vue +313 -313
  261. package/docs/examples/panel/tool-buttons.vue +18 -18
  262. package/docs/examples/radio/basic.vue +17 -17
  263. package/docs/examples/radio/button.vue +17 -17
  264. package/docs/examples/radio/color.vue +18 -18
  265. package/docs/examples/radio/disabled.vue +17 -17
  266. package/docs/examples/radio/size.vue +29 -29
  267. package/docs/examples/rate/basic.vue +24 -24
  268. package/docs/examples/rate/half.vue +24 -24
  269. package/docs/examples/rate/readonly.vue +11 -11
  270. package/docs/examples/rate/text.vue +37 -37
  271. package/docs/examples/select/basic.vue +16 -16
  272. package/docs/examples/select/clearable.vue +22 -22
  273. package/docs/examples/select/color.vue +16 -16
  274. package/docs/examples/select/disabled.vue +31 -31
  275. package/docs/examples/select/filterable.vue +24 -24
  276. package/docs/examples/select/group.vue +23 -23
  277. package/docs/examples/select/icon.vue +16 -16
  278. package/docs/examples/select/multiple.vue +18 -18
  279. package/docs/examples/select/size.vue +39 -39
  280. package/docs/examples/slider/basic.vue +42 -42
  281. package/docs/examples/slider/disabled.vue +17 -17
  282. package/docs/examples/slider/marks.vue +30 -30
  283. package/docs/examples/slider/size.vue +37 -37
  284. package/docs/examples/slider/tooltip.vue +36 -36
  285. package/docs/examples/slider/vertical.vue +26 -26
  286. package/docs/examples/slider-captcha/basic.vue +44 -44
  287. package/docs/examples/slider-captcha/custom.vue +48 -48
  288. package/docs/examples/switch/basic.vue +16 -16
  289. package/docs/examples/switch/disabled.vue +13 -13
  290. package/docs/examples/switch/loading.vue +13 -13
  291. package/docs/examples/switch/size.vue +15 -15
  292. package/docs/examples/switch/text.vue +13 -13
  293. package/docs/examples/table/action-filter.vue +126 -126
  294. package/docs/examples/table/actions.vue +116 -116
  295. package/docs/examples/table/add-row.vue +98 -98
  296. package/docs/examples/table/basic.vue +168 -168
  297. package/docs/examples/table/checkbox-layout.vue +68 -68
  298. package/docs/examples/table/column-filter.vue +96 -96
  299. package/docs/examples/table/custom-layout.vue +115 -115
  300. package/docs/examples/table/custom-merge-cell.vue +206 -206
  301. package/docs/examples/table/dynamic-type.vue +74 -74
  302. package/docs/examples/table/editable.vue +290 -290
  303. package/docs/examples/table/field-selection.vue +87 -87
  304. package/docs/examples/table/frozen-column.vue +140 -140
  305. package/docs/examples/table/height-mode.vue +99 -99
  306. package/docs/examples/table/icon.vue +85 -85
  307. package/docs/examples/table/layer-form.vue +133 -133
  308. package/docs/examples/table/link.vue +66 -66
  309. package/docs/examples/table/merge-cell.vue +78 -78
  310. package/docs/examples/table/merge-header.vue +86 -86
  311. package/docs/examples/table/multiple-disabled.vue +112 -112
  312. package/docs/examples/table/multiple.vue +188 -188
  313. package/docs/examples/table/pagination.vue +151 -151
  314. package/docs/examples/table/row-drag.vue +67 -67
  315. package/docs/examples/table/row-fixed.vue +61 -61
  316. package/docs/examples/table/show-tag.vue +68 -68
  317. package/docs/examples/table/single-selection.vue +64 -64
  318. package/docs/examples/table/sub-table-lazy.vue +97 -97
  319. package/docs/examples/table/sub-table.vue +103 -103
  320. package/docs/examples/table/tag.vue +43 -43
  321. package/docs/examples/table/tree-column.vue +119 -119
  322. package/docs/examples/table/tree-data.vue +141 -141
  323. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  324. package/docs/examples/table/tree-lazy.vue +80 -80
  325. package/docs/examples/table/tree-set-selection.vue +75 -75
  326. package/docs/examples/table-panel/basic.vue +229 -229
  327. package/docs/examples/table-panel/batch-operations.vue +286 -286
  328. package/docs/examples/table-panel/button-visibility.vue +88 -88
  329. package/docs/examples/table-panel/card.vue +101 -101
  330. package/docs/examples/table-panel/column-filter.vue +116 -116
  331. package/docs/examples/table-panel/filter.vue +219 -219
  332. package/docs/examples/table-panel/get-selection.vue +111 -111
  333. package/docs/examples/table-panel/mask.vue +151 -151
  334. package/docs/examples/table-panel/model-value.vue +87 -87
  335. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  336. package/docs/examples/table-panel/pagination-select-state-key.vue +176 -176
  337. package/docs/examples/table-panel/pagination.vue +133 -133
  338. package/docs/examples/table-panel/remote-selection.vue +159 -159
  339. package/docs/examples/table-panel/search-list.vue +207 -207
  340. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  341. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  342. package/docs/examples/tabs/basic.vue +98 -98
  343. package/docs/examples/time/base.vue +67 -67
  344. package/docs/examples/title/basic.vue +87 -87
  345. package/docs/examples/tree/accordion.vue +46 -46
  346. package/docs/examples/tree/basic.vue +50 -50
  347. package/docs/examples/tree/buttons.vue +53 -53
  348. package/docs/examples/tree/check-strictly.vue +53 -53
  349. package/docs/examples/tree/checkable.vue +52 -52
  350. package/docs/examples/tree/custom-keys.vue +39 -39
  351. package/docs/examples/tree/default-expanded.vue +52 -52
  352. package/docs/examples/tree/draggable.vue +29 -29
  353. package/docs/examples/tree/expand-on-click.vue +39 -39
  354. package/docs/examples/tree/flat-data.vue +20 -20
  355. package/docs/examples/tree/icon.vue +40 -40
  356. package/docs/examples/tree/load-data.vue +37 -37
  357. package/docs/examples/tree/methods.vue +74 -74
  358. package/docs/examples/tree/theme.vue +33 -33
  359. package/docs/examples/tree-select/basic.vue +47 -47
  360. package/docs/examples/tree-select/lazy.vue +42 -42
  361. package/docs/examples/upload/accept.vue +31 -31
  362. package/docs/examples/upload/basic.vue +12 -12
  363. package/docs/examples/upload/drag.vue +11 -11
  364. package/docs/examples/upload/image.vue +17 -17
  365. package/docs/examples/upload/limit.vue +20 -20
  366. package/docs/examples/upload/multiple.vue +17 -17
  367. package/docs/examples/upload/readonly.vue +17 -17
  368. package/docs/examples/utils/cipher.vue +160 -160
  369. package/docs/examples/utils/common.vue +153 -153
  370. package/docs/examples/utils/date.vue +56 -56
  371. package/docs/examples/utils/dom.vue +52 -52
  372. package/docs/examples/utils/is.vue +70 -70
  373. package/docs/examples/workflow/basic.vue +265 -265
  374. package/docs/examples/workflow-viewer/basic.vue +248 -248
  375. package/package.json +23 -23
@@ -1,188 +1,188 @@
1
- <template>
2
- <div style="margin-bottom: 10px">
3
- <j-button type="primary" label="获取选中数据" @click="getSelection" />
4
- <j-button label="选中前两行" @click="setSelection" />
5
- </div>
6
- <div style="position: relative; width: 100%; height: 500px">
7
- <j-table ref="tableRef" :columns="columns" :records="records" is-multiple />
8
- </div>
9
- </template>
10
-
11
- <script setup lang="ts">
12
- import { ref } from 'vue'
13
-
14
- const tableRef = ref()
15
-
16
- const getSelection = () => {
17
- const records = tableRef.value.getSelection()
18
- console.log(records)
19
- alert(`选中了 ${records.length} 条数据,详情请查看控制台`)
20
- }
21
-
22
- const setSelection = () => {
23
- const selectedRecords = [records.value[0], records.value[1]]
24
- tableRef.value.setSelection(selectedRecords)
25
- }
26
-
27
- const columns = ref([
28
- {
29
- id: 'Order ID',
30
- config: {
31
- label: 'Order ID',
32
- width: 'auto',
33
- align: 'left',
34
- },
35
- },
36
- {
37
- id: 'Customer ID',
38
- config: {
39
- label: 'Customer ID',
40
- width: 'auto',
41
- align: 'left',
42
- },
43
- },
44
- {
45
- id: 'Product Name',
46
- config: {
47
- label: 'Product Name',
48
- width: 'auto',
49
- align: 'left',
50
- },
51
- },
52
- {
53
- id: 'Category',
54
- config: {
55
- label: 'Category',
56
- width: 'auto',
57
- align: 'left',
58
- },
59
- },
60
- {
61
- id: 'Quantity',
62
- config: {
63
- label: 'Quantity',
64
- width: 'auto',
65
- align: 'right',
66
- },
67
- },
68
- {
69
- id: 'Sales',
70
- config: {
71
- label: 'Sales',
72
- width: 'auto',
73
- align: 'right',
74
- },
75
- },
76
- {
77
- id: 'Profit',
78
- config: {
79
- label: 'Profit',
80
- width: 'auto',
81
- align: 'right',
82
- },
83
- },
84
- ])
85
-
86
- const records = ref([
87
- {
88
- id: 'CA-2016-152156',
89
- 'Order ID': 'CA-2016-152156',
90
- 'Customer ID': 'CG-12520',
91
- 'Product Name': 'Canon ImageCLASS 2200 Advanced Copier',
92
- Category: 'Office Supplies',
93
- Quantity: 2,
94
- Sales: 2399.99,
95
- Profit: 400.0,
96
- },
97
- {
98
- id: 'CA-2017-152157',
99
- 'Order ID': 'CA-2017-152157',
100
- 'Customer ID': 'DV-13045',
101
- 'Product Name': 'Logitech Wireless Mouse',
102
- Category: 'Technology',
103
- Quantity: 3,
104
- Sales: 89.97,
105
- Profit: 25.5,
106
- },
107
- {
108
- id: 'US-2017-108966',
109
- 'Order ID': 'US-2017-108966',
110
- 'Customer ID': 'SO-20335',
111
- 'Product Name': 'HON Mesh Task Chair',
112
- Category: 'Furniture',
113
- Quantity: 4,
114
- Sales: 799.96,
115
- Profit: 120.0,
116
- },
117
- {
118
- id: 'US-2016-108967',
119
- 'Order ID': 'US-2016-108967',
120
- 'Customer ID': 'AB-10015',
121
- 'Product Name': 'Avery Binder Labels',
122
- Category: 'Office Supplies',
123
- Quantity: 10,
124
- Sales: 15.9,
125
- Profit: 5.2,
126
- },
127
- {
128
- id: 'CA-2015-108968',
129
- 'Order ID': 'CA-2015-108968',
130
- 'Customer ID': 'ML-12515',
131
- 'Product Name': 'Apple iPhone 7',
132
- Category: 'Technology',
133
- Quantity: 1,
134
- Sales: 699.0,
135
- Profit: 80.0,
136
- },
137
- {
138
- id: 'CA-2016-108969',
139
- 'Order ID': 'CA-2016-108969',
140
- 'Customer ID': 'CG-12520',
141
- 'Product Name': 'Staples Paper',
142
- Category: 'Office Supplies',
143
- Quantity: 20,
144
- Sales: 40.0,
145
- Profit: 12.0,
146
- },
147
- {
148
- id: 'US-2016-108970',
149
- 'Order ID': 'US-2016-108970',
150
- 'Customer ID': 'DV-13045',
151
- 'Product Name': 'Dell Monitor 24"',
152
- Category: 'Technology',
153
- Quantity: 2,
154
- Sales: 320.0,
155
- Profit: 60.0,
156
- },
157
- {
158
- id: 'US-2017-108971',
159
- 'Order ID': 'US-2017-108971',
160
- 'Customer ID': 'SO-20335',
161
- 'Product Name': 'Office Chair Ergonomic',
162
- Category: 'Furniture',
163
- Quantity: 1,
164
- Sales: 199.0,
165
- Profit: 35.0,
166
- },
167
- {
168
- id: 'CA-2017-108972',
169
- 'Order ID': 'CA-2017-108972',
170
- 'Customer ID': 'AB-10015',
171
- 'Product Name': 'Notebook Set',
172
- Category: 'Office Supplies',
173
- Quantity: 15,
174
- Sales: 60.0,
175
- Profit: 18.0,
176
- },
177
- {
178
- id: 'US-2015-108973',
179
- 'Order ID': 'US-2015-108973',
180
- 'Customer ID': 'ML-12515',
181
- 'Product Name': 'Bluetooth Headset',
182
- Category: 'Technology',
183
- Quantity: 2,
184
- Sales: 150.0,
185
- Profit: 30.0,
186
- },
187
- ])
188
- </script>
1
+ <template>
2
+ <div style="margin-bottom: 10px">
3
+ <j-button type="primary" label="获取选中数据" @click="getSelection" />
4
+ <j-button label="选中前两行" @click="setSelection" />
5
+ </div>
6
+ <div style="position: relative; width: 100%; height: 500px">
7
+ <j-table ref="tableRef" :columns="columns" :records="records" is-multiple />
8
+ </div>
9
+ </template>
10
+
11
+ <script setup lang="ts">
12
+ import { ref } from 'vue'
13
+
14
+ const tableRef = ref()
15
+
16
+ const getSelection = () => {
17
+ const records = tableRef.value.getSelection()
18
+ console.log(records)
19
+ alert(`选中了 ${records.length} 条数据,详情请查看控制台`)
20
+ }
21
+
22
+ const setSelection = () => {
23
+ const selectedRecords = [records.value[0], records.value[1]]
24
+ tableRef.value.setSelection(selectedRecords)
25
+ }
26
+
27
+ const columns = ref([
28
+ {
29
+ id: 'Order ID',
30
+ config: {
31
+ label: 'Order ID',
32
+ width: 'auto',
33
+ align: 'left',
34
+ },
35
+ },
36
+ {
37
+ id: 'Customer ID',
38
+ config: {
39
+ label: 'Customer ID',
40
+ width: 'auto',
41
+ align: 'left',
42
+ },
43
+ },
44
+ {
45
+ id: 'Product Name',
46
+ config: {
47
+ label: 'Product Name',
48
+ width: 'auto',
49
+ align: 'left',
50
+ },
51
+ },
52
+ {
53
+ id: 'Category',
54
+ config: {
55
+ label: 'Category',
56
+ width: 'auto',
57
+ align: 'left',
58
+ },
59
+ },
60
+ {
61
+ id: 'Quantity',
62
+ config: {
63
+ label: 'Quantity',
64
+ width: 'auto',
65
+ align: 'right',
66
+ },
67
+ },
68
+ {
69
+ id: 'Sales',
70
+ config: {
71
+ label: 'Sales',
72
+ width: 'auto',
73
+ align: 'right',
74
+ },
75
+ },
76
+ {
77
+ id: 'Profit',
78
+ config: {
79
+ label: 'Profit',
80
+ width: 'auto',
81
+ align: 'right',
82
+ },
83
+ },
84
+ ])
85
+
86
+ const records = ref([
87
+ {
88
+ id: 'CA-2016-152156',
89
+ 'Order ID': 'CA-2016-152156',
90
+ 'Customer ID': 'CG-12520',
91
+ 'Product Name': 'Canon ImageCLASS 2200 Advanced Copier',
92
+ Category: 'Office Supplies',
93
+ Quantity: 2,
94
+ Sales: 2399.99,
95
+ Profit: 400.0,
96
+ },
97
+ {
98
+ id: 'CA-2017-152157',
99
+ 'Order ID': 'CA-2017-152157',
100
+ 'Customer ID': 'DV-13045',
101
+ 'Product Name': 'Logitech Wireless Mouse',
102
+ Category: 'Technology',
103
+ Quantity: 3,
104
+ Sales: 89.97,
105
+ Profit: 25.5,
106
+ },
107
+ {
108
+ id: 'US-2017-108966',
109
+ 'Order ID': 'US-2017-108966',
110
+ 'Customer ID': 'SO-20335',
111
+ 'Product Name': 'HON Mesh Task Chair',
112
+ Category: 'Furniture',
113
+ Quantity: 4,
114
+ Sales: 799.96,
115
+ Profit: 120.0,
116
+ },
117
+ {
118
+ id: 'US-2016-108967',
119
+ 'Order ID': 'US-2016-108967',
120
+ 'Customer ID': 'AB-10015',
121
+ 'Product Name': 'Avery Binder Labels',
122
+ Category: 'Office Supplies',
123
+ Quantity: 10,
124
+ Sales: 15.9,
125
+ Profit: 5.2,
126
+ },
127
+ {
128
+ id: 'CA-2015-108968',
129
+ 'Order ID': 'CA-2015-108968',
130
+ 'Customer ID': 'ML-12515',
131
+ 'Product Name': 'Apple iPhone 7',
132
+ Category: 'Technology',
133
+ Quantity: 1,
134
+ Sales: 699.0,
135
+ Profit: 80.0,
136
+ },
137
+ {
138
+ id: 'CA-2016-108969',
139
+ 'Order ID': 'CA-2016-108969',
140
+ 'Customer ID': 'CG-12520',
141
+ 'Product Name': 'Staples Paper',
142
+ Category: 'Office Supplies',
143
+ Quantity: 20,
144
+ Sales: 40.0,
145
+ Profit: 12.0,
146
+ },
147
+ {
148
+ id: 'US-2016-108970',
149
+ 'Order ID': 'US-2016-108970',
150
+ 'Customer ID': 'DV-13045',
151
+ 'Product Name': 'Dell Monitor 24"',
152
+ Category: 'Technology',
153
+ Quantity: 2,
154
+ Sales: 320.0,
155
+ Profit: 60.0,
156
+ },
157
+ {
158
+ id: 'US-2017-108971',
159
+ 'Order ID': 'US-2017-108971',
160
+ 'Customer ID': 'SO-20335',
161
+ 'Product Name': 'Office Chair Ergonomic',
162
+ Category: 'Furniture',
163
+ Quantity: 1,
164
+ Sales: 199.0,
165
+ Profit: 35.0,
166
+ },
167
+ {
168
+ id: 'CA-2017-108972',
169
+ 'Order ID': 'CA-2017-108972',
170
+ 'Customer ID': 'AB-10015',
171
+ 'Product Name': 'Notebook Set',
172
+ Category: 'Office Supplies',
173
+ Quantity: 15,
174
+ Sales: 60.0,
175
+ Profit: 18.0,
176
+ },
177
+ {
178
+ id: 'US-2015-108973',
179
+ 'Order ID': 'US-2015-108973',
180
+ 'Customer ID': 'ML-12515',
181
+ 'Product Name': 'Bluetooth Headset',
182
+ Category: 'Technology',
183
+ Quantity: 2,
184
+ Sales: 150.0,
185
+ Profit: 30.0,
186
+ },
187
+ ])
188
+ </script>
@@ -1,151 +1,151 @@
1
- <template>
2
- <div style="position: relative; width: 100%; height: 500px">
3
- <j-table
4
- ref="tableRef"
5
- v-model:table-page="currentPage"
6
- v-model:page-size="pageSize"
7
- :columns="columns"
8
- :records="records"
9
- :is-page="true"
10
- :page-total="pageTotal"
11
- @load-page-data="handleLoadPageData"
12
- />
13
- </div>
14
- </template>
15
-
16
- <script setup lang="ts">
17
- import { ref, onMounted } from 'vue'
18
-
19
- const columns = ref([
20
- {
21
- id: 'Order ID',
22
- config: {
23
- label: 'Order ID',
24
- width: 'auto',
25
- align: 'left',
26
- },
27
- },
28
- {
29
- id: 'Customer ID',
30
- config: {
31
- label: 'Customer ID',
32
- width: 'auto',
33
- align: 'left',
34
- },
35
- },
36
- {
37
- id: 'Product Name',
38
- config: {
39
- label: 'Product Name',
40
- width: 'auto',
41
- align: 'left',
42
- },
43
- },
44
- {
45
- id: 'Category',
46
- config: {
47
- label: 'Category',
48
- width: 'auto',
49
- align: 'left',
50
- },
51
- },
52
- {
53
- id: 'Sub-Category',
54
- config: {
55
- label: 'Sub-Category',
56
- width: 'auto',
57
- align: 'left',
58
- },
59
- },
60
- {
61
- id: 'Region',
62
- config: {
63
- label: 'Region',
64
- width: 'auto',
65
- align: 'left',
66
- },
67
- },
68
- {
69
- id: 'City',
70
- config: {
71
- label: 'City',
72
- width: 'auto',
73
- align: 'left',
74
- },
75
- },
76
- {
77
- id: 'Order Date',
78
- config: {
79
- label: 'Order Date',
80
- width: 'auto',
81
- align: 'center',
82
- },
83
- },
84
- {
85
- id: 'Quantity',
86
- config: {
87
- label: 'Quantity',
88
- width: 'auto',
89
- align: 'right',
90
- },
91
- },
92
- {
93
- id: 'Sales',
94
- config: {
95
- label: 'Sales',
96
- width: 'auto',
97
- align: 'right',
98
- },
99
- },
100
- {
101
- id: 'Profit',
102
- config: {
103
- label: 'Profit',
104
- width: 'auto',
105
- align: 'right',
106
- },
107
- },
108
- ])
109
-
110
- let records: Record<string, any>[] = []
111
- const tableRef = ref()
112
- const allData = ref<any[]>([])
113
- const currentPage = ref(1)
114
- const pageSize = ref(20)
115
- const pageTotal = ref(0)
116
-
117
- // 加载分页数据
118
- const handleLoadPageData = ({ page, rows }: { page: number; rows: number }) => {
119
- const start = (page - 1) * rows
120
- const end = start + rows
121
- records = allData.value.slice(start, end)
122
-
123
- tableRef.value?.setRecords(records)
124
- }
125
-
126
- const generateLocalData = () => {
127
- const data: any[] = []
128
- for (let i = 1; i <= 100; i++) {
129
- data.push({
130
- 'Order ID': `CA-2016-${150000 + i}`,
131
- 'Customer ID': `CU-${10000 + i}`,
132
- 'Product Name': `Sample Product ${i}`,
133
- Category: i % 2 === 0 ? 'Office Supplies' : 'Technology',
134
- 'Sub-Category': i % 3 === 0 ? 'Chairs' : 'Accessories',
135
- Region: i % 4 === 0 ? 'West' : 'East',
136
- City: i % 5 === 0 ? 'Los Angeles' : 'New York',
137
- 'Order Date': `2016-01-${(i % 28) + 1}`.padStart(10, '0'),
138
- Quantity: (i % 10) + 1,
139
- Sales: 50 + i,
140
- Profit: 10 + (i % 20),
141
- })
142
- }
143
- return data
144
- }
145
-
146
- onMounted(() => {
147
- allData.value = generateLocalData()
148
- pageTotal.value = allData.value.length
149
- handleLoadPageData({ page: currentPage.value, rows: pageSize.value })
150
- })
151
- </script>
1
+ <template>
2
+ <div style="position: relative; width: 100%; height: 500px">
3
+ <j-table
4
+ ref="tableRef"
5
+ v-model:table-page="currentPage"
6
+ v-model:page-size="pageSize"
7
+ :columns="columns"
8
+ :records="records"
9
+ :is-page="true"
10
+ :page-total="pageTotal"
11
+ @load-page-data="handleLoadPageData"
12
+ />
13
+ </div>
14
+ </template>
15
+
16
+ <script setup lang="ts">
17
+ import { ref, onMounted } from 'vue'
18
+
19
+ const columns = ref([
20
+ {
21
+ id: 'Order ID',
22
+ config: {
23
+ label: 'Order ID',
24
+ width: 'auto',
25
+ align: 'left',
26
+ },
27
+ },
28
+ {
29
+ id: 'Customer ID',
30
+ config: {
31
+ label: 'Customer ID',
32
+ width: 'auto',
33
+ align: 'left',
34
+ },
35
+ },
36
+ {
37
+ id: 'Product Name',
38
+ config: {
39
+ label: 'Product Name',
40
+ width: 'auto',
41
+ align: 'left',
42
+ },
43
+ },
44
+ {
45
+ id: 'Category',
46
+ config: {
47
+ label: 'Category',
48
+ width: 'auto',
49
+ align: 'left',
50
+ },
51
+ },
52
+ {
53
+ id: 'Sub-Category',
54
+ config: {
55
+ label: 'Sub-Category',
56
+ width: 'auto',
57
+ align: 'left',
58
+ },
59
+ },
60
+ {
61
+ id: 'Region',
62
+ config: {
63
+ label: 'Region',
64
+ width: 'auto',
65
+ align: 'left',
66
+ },
67
+ },
68
+ {
69
+ id: 'City',
70
+ config: {
71
+ label: 'City',
72
+ width: 'auto',
73
+ align: 'left',
74
+ },
75
+ },
76
+ {
77
+ id: 'Order Date',
78
+ config: {
79
+ label: 'Order Date',
80
+ width: 'auto',
81
+ align: 'center',
82
+ },
83
+ },
84
+ {
85
+ id: 'Quantity',
86
+ config: {
87
+ label: 'Quantity',
88
+ width: 'auto',
89
+ align: 'right',
90
+ },
91
+ },
92
+ {
93
+ id: 'Sales',
94
+ config: {
95
+ label: 'Sales',
96
+ width: 'auto',
97
+ align: 'right',
98
+ },
99
+ },
100
+ {
101
+ id: 'Profit',
102
+ config: {
103
+ label: 'Profit',
104
+ width: 'auto',
105
+ align: 'right',
106
+ },
107
+ },
108
+ ])
109
+
110
+ let records: Record<string, any>[] = []
111
+ const tableRef = ref()
112
+ const allData = ref<any[]>([])
113
+ const currentPage = ref(1)
114
+ const pageSize = ref(20)
115
+ const pageTotal = ref(0)
116
+
117
+ // 加载分页数据
118
+ const handleLoadPageData = ({ page, rows }: { page: number; rows: number }) => {
119
+ const start = (page - 1) * rows
120
+ const end = start + rows
121
+ records = allData.value.slice(start, end)
122
+
123
+ tableRef.value?.setRecords(records)
124
+ }
125
+
126
+ const generateLocalData = () => {
127
+ const data: any[] = []
128
+ for (let i = 1; i <= 100; i++) {
129
+ data.push({
130
+ 'Order ID': `CA-2016-${150000 + i}`,
131
+ 'Customer ID': `CU-${10000 + i}`,
132
+ 'Product Name': `Sample Product ${i}`,
133
+ Category: i % 2 === 0 ? 'Office Supplies' : 'Technology',
134
+ 'Sub-Category': i % 3 === 0 ? 'Chairs' : 'Accessories',
135
+ Region: i % 4 === 0 ? 'West' : 'East',
136
+ City: i % 5 === 0 ? 'Los Angeles' : 'New York',
137
+ 'Order Date': `2016-01-${(i % 28) + 1}`.padStart(10, '0'),
138
+ Quantity: (i % 10) + 1,
139
+ Sales: 50 + i,
140
+ Profit: 10 + (i % 20),
141
+ })
142
+ }
143
+ return data
144
+ }
145
+
146
+ onMounted(() => {
147
+ allData.value = generateLocalData()
148
+ pageTotal.value = allData.value.length
149
+ handleLoadPageData({ page: currentPage.value, rows: pageSize.value })
150
+ })
151
+ </script>