@a2simcode/ui 0.0.114 → 0.0.116

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 (333) 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/date/index.d.ts +3 -0
  6. package/dist/components/date/src/date.vue.d.ts +2 -0
  7. package/dist/components/time/index.d.ts +3 -0
  8. package/dist/components/time/src/time.vue.d.ts +2 -0
  9. package/dist/simcode-ui.es.js +3900 -3860
  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 +27 -27
  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 +26 -26
  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/buttons.ts +76 -76
  51. package/docs/components/meta/comp.ts +236 -236
  52. package/docs/components/meta/date.ts +267 -256
  53. package/docs/components/meta/echarts.ts +64 -64
  54. package/docs/components/meta/form.ts +165 -165
  55. package/docs/components/meta/input-cards.ts +112 -112
  56. package/docs/components/meta/input-color.ts +243 -243
  57. package/docs/components/meta/input-rows.ts +113 -113
  58. package/docs/components/meta/layer-form.ts +56 -56
  59. package/docs/components/meta/map.ts +68 -68
  60. package/docs/components/meta/panel.ts +152 -152
  61. package/docs/components/meta/slider.ts +270 -270
  62. package/docs/components/meta/table-panel.ts +232 -232
  63. package/docs/components/meta/table.ts +386 -386
  64. package/docs/components/meta/tabs.ts +146 -146
  65. package/docs/components/meta/tree-select.ts +199 -199
  66. package/docs/components/meta/workflow-viewer.ts +55 -55
  67. package/docs/components/number.md +124 -124
  68. package/docs/components/page.md +87 -87
  69. package/docs/components/panel.md +37 -37
  70. package/docs/components/radio.md +87 -87
  71. package/docs/components/rate.md +71 -71
  72. package/docs/components/select.md +133 -133
  73. package/docs/components/slider-captcha.md +41 -41
  74. package/docs/components/slider.md +101 -101
  75. package/docs/components/switch.md +90 -90
  76. package/docs/components/table-panel.md +236 -236
  77. package/docs/components/table.md +391 -391
  78. package/docs/components/tabs.md +26 -26
  79. package/docs/components/title.md +24 -24
  80. package/docs/components/tree.md +207 -207
  81. package/docs/components/upload.md +117 -117
  82. package/docs/components/workflow-viewer.md +21 -21
  83. package/docs/components/workflow.md +21 -21
  84. package/docs/examples/autocomplete/advanced.vue +35 -35
  85. package/docs/examples/autocomplete/basic.vue +32 -32
  86. package/docs/examples/autocomplete/clearable.vue +33 -33
  87. package/docs/examples/autocomplete/custom-template.vue +49 -49
  88. package/docs/examples/autocomplete/disabled.vue +33 -33
  89. package/docs/examples/autocomplete/icon.vue +37 -37
  90. package/docs/examples/barcode/all-types.vue +380 -380
  91. package/docs/examples/barcode/basic.vue +14 -14
  92. package/docs/examples/barcode/props-appearance.vue +243 -243
  93. package/docs/examples/barcode/props-geometry.vue +143 -143
  94. package/docs/examples/barcode/props-logic.vue +216 -216
  95. package/docs/examples/barcode/props-symbology.vue +199 -199
  96. package/docs/examples/barcode/props-text.vue +268 -268
  97. package/docs/examples/button/basic.vue +7 -7
  98. package/docs/examples/button/danger-ghost.vue +17 -17
  99. package/docs/examples/button/disabled.vue +10 -10
  100. package/docs/examples/button/loading.vue +6 -6
  101. package/docs/examples/button/shape.vue +7 -7
  102. package/docs/examples/button/size.vue +14 -14
  103. package/docs/examples/button/type.vue +9 -9
  104. package/docs/examples/button-select/basic.vue +19 -19
  105. package/docs/examples/buttons/basic.vue +45 -45
  106. package/docs/examples/buttons/disabled.vue +36 -36
  107. package/docs/examples/buttons/dropdown.vue +63 -63
  108. package/docs/examples/buttons/group.vue +52 -52
  109. package/docs/examples/buttons/link.vue +47 -47
  110. package/docs/examples/buttons/popup.vue +39 -39
  111. package/docs/examples/buttons/size.vue +45 -45
  112. package/docs/examples/cascader-select/basic.vue +28 -28
  113. package/docs/examples/cascader-select/clearable.vue +34 -34
  114. package/docs/examples/cascader-select/disabled.vue +43 -43
  115. package/docs/examples/cascader-select/filterable.vue +37 -37
  116. package/docs/examples/cascader-select/methods.vue +84 -84
  117. package/docs/examples/cascader-select/multiple.vue +38 -38
  118. package/docs/examples/cascader-select/slot.vue +45 -45
  119. package/docs/examples/checkbox/basic.vue +18 -18
  120. package/docs/examples/checkbox/button.vue +19 -19
  121. package/docs/examples/checkbox/color.vue +25 -25
  122. package/docs/examples/checkbox/disabled.vue +17 -17
  123. package/docs/examples/checkbox/min-max.vue +20 -20
  124. package/docs/examples/checkbox/mixed.vue +56 -56
  125. package/docs/examples/checkbox/size.vue +28 -28
  126. package/docs/examples/code-mirror/basic.vue +11 -11
  127. package/docs/examples/code-mirror/events.vue +42 -42
  128. package/docs/examples/code-mirror/height.vue +25 -25
  129. package/docs/examples/code-mirror/mode.vue +33 -33
  130. package/docs/examples/code-mirror/readonly.vue +14 -14
  131. package/docs/examples/collapse/basic.vue +82 -82
  132. package/docs/examples/comp/basic.vue +7 -7
  133. package/docs/examples/comp/collapse.vue +38 -38
  134. package/docs/examples/comp/tabs.vue +38 -38
  135. package/docs/examples/count/basic.vue +101 -101
  136. package/docs/examples/count-up/basic.vue +89 -89
  137. package/docs/examples/data-panel/basic.vue +110 -110
  138. package/docs/examples/date/basic.vue +73 -73
  139. package/docs/examples/date/default-value.vue +59 -59
  140. package/docs/examples/date/format.vue +75 -75
  141. package/docs/examples/date/range.vue +66 -66
  142. package/docs/examples/date/types.vue +79 -79
  143. package/docs/examples/dialog/basic.vue +36 -36
  144. package/docs/examples/dialog/custom-buttons.vue +44 -44
  145. package/docs/examples/dialog/fullscreen.vue +23 -23
  146. package/docs/examples/dialog/no-mask.vue +17 -17
  147. package/docs/examples/dialog/size.vue +44 -44
  148. package/docs/examples/dialog/steps.vue +57 -57
  149. package/docs/examples/dialog-full/basic.vue +29 -29
  150. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  151. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  152. package/docs/examples/dialog-full/no-header.vue +27 -27
  153. package/docs/examples/dialog-full/steps.vue +71 -71
  154. package/docs/examples/divider/basic.vue +52 -52
  155. package/docs/examples/drawer/basic.vue +35 -35
  156. package/docs/examples/drawer/custom-buttons.vue +34 -34
  157. package/docs/examples/drawer/direction.vue +47 -47
  158. package/docs/examples/drawer/mask.vue +36 -36
  159. package/docs/examples/drawer/no-buttons.vue +20 -20
  160. package/docs/examples/drawer/size.vue +28 -28
  161. package/docs/examples/dynamic-layer/basic.vue +33 -33
  162. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  163. package/docs/examples/dynamic-layer/form.vue +73 -73
  164. package/docs/examples/dynamic-layer/steps.vue +52 -52
  165. package/docs/examples/dynamic-layer/types.vue +40 -40
  166. package/docs/examples/echarts/basic.vue +31 -31
  167. package/docs/examples/echarts/dynamic.vue +43 -43
  168. package/docs/examples/echarts/line.vue +46 -46
  169. package/docs/examples/echarts/pie.vue +44 -44
  170. package/docs/examples/editor/basic.vue +15 -15
  171. package/docs/examples/form/basic.vue +478 -477
  172. package/docs/examples/guid/basic.vue +10 -10
  173. package/docs/examples/guid/size.vue +13 -13
  174. package/docs/examples/hpanel/basic.vue +79 -79
  175. package/docs/examples/icon/basic.vue +9 -9
  176. package/docs/examples/icon/rotate-flip.vue +9 -9
  177. package/docs/examples/icon/size.vue +7 -7
  178. package/docs/examples/input/basic.vue +10 -10
  179. package/docs/examples/input/clearable.vue +12 -12
  180. package/docs/examples/input/disabled.vue +6 -6
  181. package/docs/examples/input/icon.vue +23 -23
  182. package/docs/examples/input/password.vue +18 -18
  183. package/docs/examples/input/size.vue +13 -13
  184. package/docs/examples/input/textarea.vue +25 -25
  185. package/docs/examples/input/word-limit.vue +28 -28
  186. package/docs/examples/input-button/basic.vue +33 -33
  187. package/docs/examples/input-code/basic.vue +29 -29
  188. package/docs/examples/input-color/basic.vue +10 -10
  189. package/docs/examples/input-color/disabled.vue +13 -13
  190. package/docs/examples/input-color/format.vue +17 -17
  191. package/docs/examples/input-color/no-alpha.vue +13 -13
  192. package/docs/examples/input-color/only-button.vue +15 -15
  193. package/docs/examples/input-color/predefine.vue +31 -31
  194. package/docs/examples/input-color/size.vue +15 -15
  195. package/docs/examples/input-layer/basic.vue +69 -69
  196. package/docs/examples/input-rows/basic.vue +73 -73
  197. package/docs/examples/input-rows/drag.vue +48 -48
  198. package/docs/examples/input-rows/layer-form.vue +85 -85
  199. package/docs/examples/input-rows/nested.vue +91 -91
  200. package/docs/examples/input-tag/basic.vue +27 -27
  201. package/docs/examples/input-tag/colors.vue +23 -23
  202. package/docs/examples/input-tag/readonly.vue +17 -17
  203. package/docs/examples/layer/basic.vue +43 -43
  204. package/docs/examples/layer/custom-buttons.vue +61 -61
  205. package/docs/examples/layer/drawer.vue +37 -37
  206. package/docs/examples/layer/full.vue +38 -38
  207. package/docs/examples/layer/modal.vue +34 -34
  208. package/docs/examples/layer/steps.vue +46 -46
  209. package/docs/examples/layer-form/basic.vue +76 -76
  210. package/docs/examples/layer-form/config.vue +82 -82
  211. package/docs/examples/layer-form/size.vue +72 -72
  212. package/docs/examples/layout/basic.vue +36 -36
  213. package/docs/examples/layout/custom-size.vue +50 -50
  214. package/docs/examples/layout/disable-move.vue +37 -37
  215. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  216. package/docs/examples/layout/min-size.vue +73 -73
  217. package/docs/examples/layout/percent-size.vue +80 -80
  218. package/docs/examples/layout/simple.vue +22 -22
  219. package/docs/examples/layout/top-side.vue +34 -34
  220. package/docs/examples/map/basic.vue +22 -22
  221. package/docs/examples/menu/basic.vue +58 -58
  222. package/docs/examples/menu/collapsed.vue +49 -49
  223. package/docs/examples/menu/horizontal.vue +44 -44
  224. package/docs/examples/menu/selection-test.vue +104 -104
  225. package/docs/examples/menu/theme.vue +46 -46
  226. package/docs/examples/menu/vertical.vue +46 -46
  227. package/docs/examples/number/advanced.vue +143 -143
  228. package/docs/examples/number/basic.vue +63 -63
  229. package/docs/examples/number/disabled.vue +49 -49
  230. package/docs/examples/number/size.vue +42 -42
  231. package/docs/examples/number/slots.vue +123 -123
  232. package/docs/examples/number/step-strictly.vue +41 -41
  233. package/docs/examples/number/step.vue +47 -47
  234. package/docs/examples/page/basic.vue +41 -41
  235. package/docs/examples/page/dept-user-management.vue +211 -211
  236. package/docs/examples/page/init.vue +87 -87
  237. package/docs/examples/page/log.vue +453 -453
  238. package/docs/examples/page/user-management.vue +313 -313
  239. package/docs/examples/panel/tool-buttons.vue +18 -18
  240. package/docs/examples/radio/basic.vue +17 -17
  241. package/docs/examples/radio/button.vue +17 -17
  242. package/docs/examples/radio/color.vue +18 -18
  243. package/docs/examples/radio/disabled.vue +17 -17
  244. package/docs/examples/radio/size.vue +29 -29
  245. package/docs/examples/rate/basic.vue +24 -24
  246. package/docs/examples/rate/half.vue +24 -24
  247. package/docs/examples/rate/readonly.vue +11 -11
  248. package/docs/examples/rate/text.vue +32 -32
  249. package/docs/examples/select/basic.vue +16 -16
  250. package/docs/examples/select/clearable.vue +22 -22
  251. package/docs/examples/select/disabled.vue +31 -31
  252. package/docs/examples/select/filterable.vue +24 -24
  253. package/docs/examples/select/group.vue +23 -23
  254. package/docs/examples/select/icon.vue +16 -16
  255. package/docs/examples/select/multiple.vue +18 -18
  256. package/docs/examples/select/size.vue +39 -39
  257. package/docs/examples/slider/basic.vue +42 -42
  258. package/docs/examples/slider/disabled.vue +17 -17
  259. package/docs/examples/slider/marks.vue +30 -30
  260. package/docs/examples/slider/size.vue +37 -37
  261. package/docs/examples/slider/tooltip.vue +36 -36
  262. package/docs/examples/slider/vertical.vue +26 -26
  263. package/docs/examples/slider-captcha/basic.vue +44 -44
  264. package/docs/examples/slider-captcha/custom.vue +48 -48
  265. package/docs/examples/switch/basic.vue +16 -16
  266. package/docs/examples/switch/disabled.vue +13 -13
  267. package/docs/examples/switch/loading.vue +13 -13
  268. package/docs/examples/switch/size.vue +15 -15
  269. package/docs/examples/switch/text.vue +13 -13
  270. package/docs/examples/table/action-filter.vue +126 -126
  271. package/docs/examples/table/actions.vue +116 -116
  272. package/docs/examples/table/add-row.vue +103 -103
  273. package/docs/examples/table/basic.vue +168 -168
  274. package/docs/examples/table/checkbox-layout.vue +68 -68
  275. package/docs/examples/table/custom-layout.vue +115 -115
  276. package/docs/examples/table/dynamic-type.vue +73 -72
  277. package/docs/examples/table/editable.vue +262 -262
  278. package/docs/examples/table/field-selection.vue +87 -87
  279. package/docs/examples/table/frozen-column.vue +140 -140
  280. package/docs/examples/table/height-mode.vue +99 -99
  281. package/docs/examples/table/icon.vue +85 -85
  282. package/docs/examples/table/link.vue +66 -66
  283. package/docs/examples/table/multiple.vue +178 -178
  284. package/docs/examples/table/pagination.vue +151 -151
  285. package/docs/examples/table/single-selection.vue +64 -64
  286. package/docs/examples/table/sub-table-lazy.vue +97 -97
  287. package/docs/examples/table/sub-table.vue +103 -103
  288. package/docs/examples/table/tag.vue +43 -43
  289. package/docs/examples/table/tree-column.vue +119 -119
  290. package/docs/examples/table/tree-data.vue +141 -141
  291. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  292. package/docs/examples/table/tree-lazy.vue +80 -80
  293. package/docs/examples/table/tree-set-selection.vue +75 -75
  294. package/docs/examples/table-panel/basic.vue +228 -228
  295. package/docs/examples/table-panel/batch-operations.vue +285 -285
  296. package/docs/examples/table-panel/button-visibility.vue +88 -88
  297. package/docs/examples/table-panel/filter.vue +219 -219
  298. package/docs/examples/table-panel/get-selection.vue +111 -111
  299. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  300. package/docs/examples/table-panel/pagination.vue +133 -133
  301. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  302. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  303. package/docs/examples/tabs/basic.vue +98 -98
  304. package/docs/examples/time/base.vue +67 -67
  305. package/docs/examples/title/basic.vue +80 -80
  306. package/docs/examples/tree/accordion.vue +46 -46
  307. package/docs/examples/tree/basic.vue +50 -50
  308. package/docs/examples/tree/buttons.vue +53 -53
  309. package/docs/examples/tree/checkable.vue +52 -52
  310. package/docs/examples/tree/custom-keys.vue +39 -39
  311. package/docs/examples/tree/default-expanded.vue +52 -52
  312. package/docs/examples/tree/draggable.vue +29 -29
  313. package/docs/examples/tree/expand-on-click.vue +39 -39
  314. package/docs/examples/tree/flat-data.vue +20 -20
  315. package/docs/examples/tree/icon.vue +40 -40
  316. package/docs/examples/tree/load-data.vue +37 -37
  317. package/docs/examples/tree/methods.vue +74 -74
  318. package/docs/examples/tree/theme.vue +33 -33
  319. package/docs/examples/upload/accept.vue +31 -31
  320. package/docs/examples/upload/basic.vue +12 -12
  321. package/docs/examples/upload/drag.vue +11 -11
  322. package/docs/examples/upload/image.vue +17 -17
  323. package/docs/examples/upload/limit.vue +20 -20
  324. package/docs/examples/upload/multiple.vue +17 -17
  325. package/docs/examples/upload/readonly.vue +17 -17
  326. package/docs/examples/utils/cipher.vue +160 -160
  327. package/docs/examples/utils/common.vue +153 -153
  328. package/docs/examples/utils/date.vue +56 -56
  329. package/docs/examples/utils/dom.vue +52 -52
  330. package/docs/examples/utils/is.vue +70 -70
  331. package/docs/examples/workflow/basic.vue +265 -265
  332. package/docs/examples/workflow-viewer/basic.vue +248 -248
  333. package/package.json +23 -23
@@ -1,477 +1,478 @@
1
- <template>
2
- <div>
3
- <j-form ref="formRef" :schema="schema" :config="formConfig" />
4
- <div style="margin-top: 16px; padding-left: 100px">
5
- <j-button type="primary" label="提交" @click="handleSubmit"></j-button>
6
- <j-button style="margin-left: 8px" label="重置" @click="handleReset"></j-button>
7
- <j-button style="margin-left: 8px" label="获取数据" @click="handleGetFormData"></j-button>
8
- </div>
9
- </div>
10
- </template>
11
-
12
- <script setup>
13
- import { ref, reactive, h, onMounted } from 'vue'
14
-
15
- const formRef = ref()
16
-
17
- const formConfig = reactive({
18
- labelWidth: 100,
19
- labelPosition: 'right',
20
- size: 'default',
21
- gutter: 16,
22
- span: 24,
23
- })
24
-
25
- const handleGetFormData = () => {
26
- console.log(formRef.value.getFormData(), 'getFormData')
27
- }
28
- const schema = [
29
- {
30
- type: 'el-segmented',
31
- config: {
32
- label: 'el分段控制器',
33
- isInput: true,
34
- options: [
35
- { label: '选项1', value: '1' },
36
- { label: '选项2', value: '2' },
37
- ],
38
- }
39
- },
40
- {
41
- type: 'j-time',
42
- config: {
43
- label: '时间选择',
44
- field: 'time1',
45
- placeholder: '请选择时间',
46
- },
47
- },
48
- {
49
- type: 'j-input-layer',
50
- config: {
51
- label: '弹窗选择',
52
- field: 'dataItem1',
53
- placeholder: '请选择类型',
54
- dataType: 'dataItem',
55
- dataCode: 'dataItem1',
56
- },
57
- },
58
- {
59
- type: 'j-input',
60
- config: {
61
- label: '用户名',
62
- field: 'username',
63
- placeholder: '请输入用户名',
64
- rule: [{ required: true, message: '请输入用户名' }],
65
- },
66
- },
67
- {
68
- type: 'j-input',
69
- config: {
70
- label: '邮箱',
71
- field: 'email',
72
- placeholder: '请输入邮箱',
73
- rule: [
74
- { required: true, message: '请输入邮箱' },
75
- { type: 'email', message: '请输入正确的邮箱格式' },
76
- ],
77
- },
78
- },
79
- {
80
- type: 'j-number',
81
- config: {
82
- label: '年龄',
83
- field: 'age',
84
- placeholder: '请输入年龄',
85
- min: 0,
86
- max: 150,
87
- },
88
- },
89
- {
90
- type: 'j-select',
91
- config: {
92
- label: '选择器',
93
- field: 'select',
94
- placeholder: '请选择',
95
- options: [
96
- { label: '选项1', value: '1' },
97
- { label: '选项2', value: '2' },
98
- ],
99
- },
100
- },
101
- {
102
- type: 'j-radio',
103
- config: {
104
- label: '单选框',
105
- field: 'radio',
106
- options: [
107
- { label: '选项1', value: '1' },
108
- { label: '选项2', value: '2' },
109
- ],
110
- // isColor: true,
111
- // colors: [{ color: '#409eff', value: '1' }, { color: '#67c23a', value: '2' }]
112
- },
113
- },
114
- {
115
- type: 'j-checkbox',
116
- config: {
117
- label: '多选框',
118
- field: 'checkbox',
119
- options: [
120
- { label: '选项1', value: '1' },
121
- { label: '选项2', value: '2' },
122
- ],
123
- defaultValue: '1',
124
- },
125
- },
126
- {
127
- type: 'j-switch',
128
- config: {
129
- label: '开关',
130
- field: 'switch',
131
- },
132
- },
133
- {
134
- type: 'j-slider',
135
- config: {
136
- label: '滑块',
137
- field: 'slider',
138
- },
139
- },
140
- {
141
- type: 'j-rate',
142
- config: {
143
- label: '评分',
144
- field: 'rate',
145
- },
146
- },
147
- {
148
- type: 'j-cascader-select',
149
- config: {
150
- label: '级联选择',
151
- field: 'cascader',
152
- options: [
153
- {
154
- label: '指南',
155
- value: 'guide',
156
- children: [
157
- { label: '设计原则', value: 'design' },
158
- { label: '导航', value: 'navigation' },
159
- ],
160
- },
161
- ],
162
- },
163
- },
164
- {
165
- type: 'j-input-tag',
166
- config: {
167
- label: '标签输入',
168
- field: 'tags',
169
- placeholder: '请输入标签',
170
- },
171
- },
172
- {
173
- type: 'j-input-color',
174
- config: {
175
- label: '颜色选择',
176
- field: 'color',
177
- placeholder: '请选择颜色',
178
- },
179
- },
180
- {
181
- type: 'j-autocomplete',
182
- config: {
183
- label: '自动补全',
184
- field: 'autocomplete',
185
- placeholder: '请输入内容',
186
- options: [
187
- { value: 'Vue', link: 'https://github.com/vuejs/vue' },
188
- { value: 'React', link: 'https://github.com/facebook/react' },
189
- ],
190
- },
191
- },
192
- {
193
- type: 'j-tree-select',
194
- config: {
195
- label: '树形选择',
196
- field: 'tree',
197
- placeholder: '请选择',
198
- options: [
199
- {
200
- label: '指南',
201
- value: 'guide',
202
- children: [
203
- { label: '设计原则', value: 'design' },
204
- { label: '导航', value: 'navigation' },
205
- ],
206
- },
207
- ],
208
- },
209
- },
210
- {
211
- type: 'j-upload',
212
- config: {
213
- label: '上传',
214
- field: 'upload',
215
- placeholder: '点击上传',
216
- isNotApi: true,
217
- },
218
- },
219
- {
220
- type: 'j-code-mirror',
221
- config: {
222
- label: '代码编辑',
223
- field: 'code',
224
- height: 200,
225
- style: { 'margin-bottom': '18px' },
226
- },
227
- },
228
- {
229
- type: 'j-tabs',
230
- config: {
231
- field: 'j_Type',
232
- },
233
- children: [
234
- {
235
- config: {
236
- label: '常规',
237
- },
238
- children: [
239
- {
240
- type: 'j-input',
241
- config: {
242
- label: '主机',
243
- field: 'j_Server',
244
- },
245
- },
246
- ],
247
- },
248
- {
249
- config: {
250
- label: '高级',
251
- },
252
- children: [
253
- {
254
- type: 'j-input',
255
- config: {
256
- label: '连接串',
257
- field: 'j_DbConnection',
258
- },
259
- },
260
- ],
261
- },
262
- ],
263
- },
264
- {
265
- type: 'j-collapse',
266
- config: {
267
- label: '属性设置',
268
- field: 'collapse',
269
- },
270
- children: [
271
- {
272
- config: {
273
- label: '基础信息',
274
- },
275
- children: [
276
- {
277
- type: 'j-input',
278
- config: {
279
- label: '名称',
280
- field: 'j_Name',
281
- rule: [{ required: true, message: '请输入名称' }],
282
- },
283
- },
284
- {
285
- type: 'j-input',
286
- config: {
287
- label: '编码',
288
- field: 'j_Code',
289
- rule: [
290
- { required: true, message: '请输入编码' },
291
- {
292
- type: 'only',
293
- table: 'base_datasource',
294
- key: 'j_Id',
295
- },
296
- ],
297
- },
298
- },
299
- {
300
- type: 'j-tree-select',
301
- config: {
302
- label: '分类',
303
- field: 'j_Category',
304
- dataType: 'dataItem',
305
- dataCode: 'datasourceType',
306
- rule: [{ required: true, message: '请选择' }],
307
- },
308
- },
309
- {
310
- type: 'j-input',
311
- config: {
312
- label: '备注',
313
- field: 'j_Des',
314
- type: 'textarea',
315
- },
316
- },
317
- ],
318
- },
319
- {
320
- config: {
321
- label: '排序字段',
322
- },
323
- children: [
324
- {
325
- type: 'j-input-cards',
326
- config: {
327
- field: 'orders',
328
- labelWidth: '48px',
329
- },
330
- children: [
331
- {
332
- // id: 'field',
333
- type: 'j-autocomplete',
334
- config: {
335
- label: '字段',
336
- field: 'field',
337
- },
338
- },
339
- {
340
- // id: 'isDESC',
341
- type: 'j-switch',
342
- config: {
343
- label: '倒序',
344
- field: 'isDESC',
345
- activeValue: true,
346
- inactiveValue: false,
347
- },
348
- },
349
- ],
350
- },
351
- ],
352
- },
353
- {
354
- config: {
355
- label: '字段信息',
356
- },
357
- children: [
358
- {
359
- type: 'j-input-rows',
360
- config: {
361
- // label: '字段信息',
362
- field: 'fields',
363
- labelWidth: '48px',
364
- // isRemoveBtn: false,
365
- // isAddBtn: false,
366
- // drag: false,
367
- },
368
- children: [
369
- {
370
- type: 'j-input',
371
- config: {
372
- label: '',
373
- field: 'name',
374
- },
375
- getCompConfig: ({ row }) => {
376
- return {
377
- prepend: row.type,
378
- prependStyle: {color: 'blue',display: 'inline-block', width: '30px'},
379
- }
380
- },
381
- },
382
- ],
383
- },
384
- ],
385
- },
386
- ],
387
- },
388
- {
389
- type: 'j-table',
390
- config: {
391
- label: '规则格式',
392
- field: 'ruleFormat',
393
- heightMode: 'auto',
394
- maxHeight: 300,
395
- editConfig: { isAddBtn: true, isRemoveBtn: true },
396
- },
397
- children: [
398
- {
399
- type: 'j-select',
400
- config: {
401
- label: '前缀',
402
- width: 120,
403
- field: 'itemType',
404
- dataType: 'options',
405
- options: [
406
- { value: '0', label: '自定义' },
407
- { value: '1', label: '日期' },
408
- { value: '2', label: '流水号' },
409
- { value: '3', label: '公司' },
410
- { value: '4', label: '部门' },
411
- { value: '5', label: '用户' },
412
- { value: '6', label: '表字段' },
413
- ],
414
- change: (data) => {
415
- console.log(data)
416
- data.row.Product = 'xxx'
417
- },
418
- },
419
- },
420
- {
421
- type: 'j-input',
422
- config: {
423
- label: '格式',
424
- field: 'formatStr',
425
- },
426
- },
427
- {
428
- type: 'j-input',
429
- config: {
430
- label: '步长',
431
- field: 'step',
432
- },
433
- },
434
- {
435
- id: 'Product',
436
- config: {
437
- label: 'Product Name',
438
- width: 'auto',
439
- align: 'left',
440
- },
441
- },
442
- ],
443
- // on: {
444
- // change: (data: any) => {
445
- // console.log(data, 'change')
446
- // }
447
- // }
448
- },
449
- ]
450
-
451
- onMounted(() => {
452
- formRef.value.setFormData({
453
- fields: [
454
- {
455
- name: '字段1',
456
- type: '字符串'
457
- },
458
- {
459
- name: '字段2',
460
- type: '数字'
461
- },
462
- ],
463
- })
464
- })
465
- const handleSubmit = async () => {
466
- const valid = await formRef.value.validate()
467
- if (valid) {
468
- const formData = formRef.value.getFormData()
469
- console.log('表单数据:', formData)
470
- alert('提交成功!')
471
- }
472
- }
473
-
474
- const handleReset = () => {
475
- formRef.value.reset()
476
- }
477
- </script>
1
+ <template>
2
+ <div>
3
+ <j-form ref="formRef" :schema="schema" :config="formConfig" />
4
+ <div style="margin-top: 16px; padding-left: 100px">
5
+ <j-button type="primary" label="提交" @click="handleSubmit"></j-button>
6
+ <j-button style="margin-left: 8px" label="重置" @click="handleReset"></j-button>
7
+ <j-button style="margin-left: 8px" label="获取数据" @click="handleGetFormData"></j-button>
8
+ </div>
9
+ </div>
10
+ </template>
11
+
12
+ <script setup>
13
+ import { ref, reactive, h, onMounted } from 'vue'
14
+
15
+ const formRef = ref()
16
+
17
+ const formConfig = reactive({
18
+ labelWidth: 100,
19
+ labelPosition: 'right',
20
+ size: 'default',
21
+ gutter: 16,
22
+ span: 24,
23
+ })
24
+
25
+ const handleGetFormData = () => {
26
+ console.log(formRef.value.getFormData(), 'getFormData')
27
+ }
28
+ const schema = [
29
+ {
30
+ type: 'el-segmented',
31
+ config: {
32
+ label: 'el分段控制器',
33
+ isInput: true,
34
+ options: [
35
+ { label: '选项1', value: '1' },
36
+ { label: '选项2', value: '2' },
37
+ ],
38
+ }
39
+ },
40
+ {
41
+ type: 'j-time',
42
+ config: {
43
+ label: '时间选择',
44
+ field: 'time1',
45
+ placeholder: '请选择时间',
46
+ isRange: true,
47
+ },
48
+ },
49
+ {
50
+ type: 'j-input-layer',
51
+ config: {
52
+ label: '弹窗选择',
53
+ field: 'dataItem1',
54
+ placeholder: '请选择类型',
55
+ dataType: 'dataItem',
56
+ dataCode: 'dataItem1',
57
+ },
58
+ },
59
+ {
60
+ type: 'j-input',
61
+ config: {
62
+ label: '用户名',
63
+ field: 'username',
64
+ placeholder: '请输入用户名',
65
+ rule: [{ required: true, message: '请输入用户名' }],
66
+ },
67
+ },
68
+ {
69
+ type: 'j-input',
70
+ config: {
71
+ label: '邮箱',
72
+ field: 'email',
73
+ placeholder: '请输入邮箱',
74
+ rule: [
75
+ { required: true, message: '请输入邮箱' },
76
+ { type: 'email', message: '请输入正确的邮箱格式' },
77
+ ],
78
+ },
79
+ },
80
+ {
81
+ type: 'j-number',
82
+ config: {
83
+ label: '年龄',
84
+ field: 'age',
85
+ placeholder: '请输入年龄',
86
+ min: 0,
87
+ max: 150,
88
+ },
89
+ },
90
+ {
91
+ type: 'j-select',
92
+ config: {
93
+ label: '选择器',
94
+ field: 'select',
95
+ placeholder: '请选择',
96
+ options: [
97
+ { label: '选项1', value: '1' },
98
+ { label: '选项2', value: '2' },
99
+ ],
100
+ },
101
+ },
102
+ {
103
+ type: 'j-radio',
104
+ config: {
105
+ label: '单选框',
106
+ field: 'radio',
107
+ options: [
108
+ { label: '选项1', value: '1' },
109
+ { label: '选项2', value: '2' },
110
+ ],
111
+ // isColor: true,
112
+ // colors: [{ color: '#409eff', value: '1' }, { color: '#67c23a', value: '2' }]
113
+ },
114
+ },
115
+ {
116
+ type: 'j-checkbox',
117
+ config: {
118
+ label: '多选框',
119
+ field: 'checkbox',
120
+ options: [
121
+ { label: '选项1', value: '1' },
122
+ { label: '选项2', value: '2' },
123
+ ],
124
+ defaultValue: '1',
125
+ },
126
+ },
127
+ {
128
+ type: 'j-switch',
129
+ config: {
130
+ label: '开关',
131
+ field: 'switch',
132
+ },
133
+ },
134
+ {
135
+ type: 'j-slider',
136
+ config: {
137
+ label: '滑块',
138
+ field: 'slider',
139
+ },
140
+ },
141
+ {
142
+ type: 'j-rate',
143
+ config: {
144
+ label: '评分',
145
+ field: 'rate',
146
+ },
147
+ },
148
+ {
149
+ type: 'j-cascader-select',
150
+ config: {
151
+ label: '级联选择',
152
+ field: 'cascader',
153
+ options: [
154
+ {
155
+ label: '指南',
156
+ value: 'guide',
157
+ children: [
158
+ { label: '设计原则', value: 'design' },
159
+ { label: '导航', value: 'navigation' },
160
+ ],
161
+ },
162
+ ],
163
+ },
164
+ },
165
+ {
166
+ type: 'j-input-tag',
167
+ config: {
168
+ label: '标签输入',
169
+ field: 'tags',
170
+ placeholder: '请输入标签',
171
+ },
172
+ },
173
+ {
174
+ type: 'j-input-color',
175
+ config: {
176
+ label: '颜色选择',
177
+ field: 'color',
178
+ placeholder: '请选择颜色',
179
+ },
180
+ },
181
+ {
182
+ type: 'j-autocomplete',
183
+ config: {
184
+ label: '自动补全',
185
+ field: 'autocomplete',
186
+ placeholder: '请输入内容',
187
+ options: [
188
+ { value: 'Vue', link: 'https://github.com/vuejs/vue' },
189
+ { value: 'React', link: 'https://github.com/facebook/react' },
190
+ ],
191
+ },
192
+ },
193
+ {
194
+ type: 'j-tree-select',
195
+ config: {
196
+ label: '树形选择',
197
+ field: 'tree',
198
+ placeholder: '请选择',
199
+ options: [
200
+ {
201
+ label: '指南',
202
+ value: 'guide',
203
+ children: [
204
+ { label: '设计原则', value: 'design' },
205
+ { label: '导航', value: 'navigation' },
206
+ ],
207
+ },
208
+ ],
209
+ },
210
+ },
211
+ {
212
+ type: 'j-upload',
213
+ config: {
214
+ label: '上传',
215
+ field: 'upload',
216
+ placeholder: '点击上传',
217
+ isNotApi: true,
218
+ },
219
+ },
220
+ {
221
+ type: 'j-code-mirror',
222
+ config: {
223
+ label: '代码编辑',
224
+ field: 'code',
225
+ height: 200,
226
+ style: { 'margin-bottom': '18px' },
227
+ },
228
+ },
229
+ {
230
+ type: 'j-tabs',
231
+ config: {
232
+ field: 'j_Type',
233
+ },
234
+ children: [
235
+ {
236
+ config: {
237
+ label: '常规',
238
+ },
239
+ children: [
240
+ {
241
+ type: 'j-input',
242
+ config: {
243
+ label: '主机',
244
+ field: 'j_Server',
245
+ },
246
+ },
247
+ ],
248
+ },
249
+ {
250
+ config: {
251
+ label: '高级',
252
+ },
253
+ children: [
254
+ {
255
+ type: 'j-input',
256
+ config: {
257
+ label: '连接串',
258
+ field: 'j_DbConnection',
259
+ },
260
+ },
261
+ ],
262
+ },
263
+ ],
264
+ },
265
+ {
266
+ type: 'j-collapse',
267
+ config: {
268
+ label: '属性设置',
269
+ field: 'collapse',
270
+ },
271
+ children: [
272
+ {
273
+ config: {
274
+ label: '基础信息',
275
+ },
276
+ children: [
277
+ {
278
+ type: 'j-input',
279
+ config: {
280
+ label: '名称',
281
+ field: 'j_Name',
282
+ rule: [{ required: true, message: '请输入名称' }],
283
+ },
284
+ },
285
+ {
286
+ type: 'j-input',
287
+ config: {
288
+ label: '编码',
289
+ field: 'j_Code',
290
+ rule: [
291
+ { required: true, message: '请输入编码' },
292
+ {
293
+ type: 'only',
294
+ table: 'base_datasource',
295
+ key: 'j_Id',
296
+ },
297
+ ],
298
+ },
299
+ },
300
+ {
301
+ type: 'j-tree-select',
302
+ config: {
303
+ label: '分类',
304
+ field: 'j_Category',
305
+ dataType: 'dataItem',
306
+ dataCode: 'datasourceType',
307
+ rule: [{ required: true, message: '请选择' }],
308
+ },
309
+ },
310
+ {
311
+ type: 'j-input',
312
+ config: {
313
+ label: '备注',
314
+ field: 'j_Des',
315
+ type: 'textarea',
316
+ },
317
+ },
318
+ ],
319
+ },
320
+ {
321
+ config: {
322
+ label: '排序字段',
323
+ },
324
+ children: [
325
+ {
326
+ type: 'j-input-cards',
327
+ config: {
328
+ field: 'orders',
329
+ labelWidth: '48px',
330
+ },
331
+ children: [
332
+ {
333
+ // id: 'field',
334
+ type: 'j-autocomplete',
335
+ config: {
336
+ label: '字段',
337
+ field: 'field',
338
+ },
339
+ },
340
+ {
341
+ // id: 'isDESC',
342
+ type: 'j-switch',
343
+ config: {
344
+ label: '倒序',
345
+ field: 'isDESC',
346
+ activeValue: true,
347
+ inactiveValue: false,
348
+ },
349
+ },
350
+ ],
351
+ },
352
+ ],
353
+ },
354
+ {
355
+ config: {
356
+ label: '字段信息',
357
+ },
358
+ children: [
359
+ {
360
+ type: 'j-input-rows',
361
+ config: {
362
+ // label: '字段信息',
363
+ field: 'fields',
364
+ labelWidth: '48px',
365
+ // isRemoveBtn: false,
366
+ // isAddBtn: false,
367
+ // drag: false,
368
+ },
369
+ children: [
370
+ {
371
+ type: 'j-input',
372
+ config: {
373
+ label: '',
374
+ field: 'name',
375
+ },
376
+ getCompConfig: ({ row }) => {
377
+ return {
378
+ prepend: row.type,
379
+ prependStyle: {color: 'blue',display: 'inline-block', width: '30px'},
380
+ }
381
+ },
382
+ },
383
+ ],
384
+ },
385
+ ],
386
+ },
387
+ ],
388
+ },
389
+ {
390
+ type: 'j-table',
391
+ config: {
392
+ label: '规则格式',
393
+ field: 'ruleFormat',
394
+ heightMode: 'auto',
395
+ maxHeight: 300,
396
+ editConfig: { isAddBtn: true, isRemoveBtn: true },
397
+ },
398
+ children: [
399
+ {
400
+ type: 'j-select',
401
+ config: {
402
+ label: '前缀',
403
+ width: 120,
404
+ field: 'itemType',
405
+ dataType: 'options',
406
+ options: [
407
+ { value: '0', label: '自定义' },
408
+ { value: '1', label: '日期' },
409
+ { value: '2', label: '流水号' },
410
+ { value: '3', label: '公司' },
411
+ { value: '4', label: '部门' },
412
+ { value: '5', label: '用户' },
413
+ { value: '6', label: '表字段' },
414
+ ],
415
+ change: (data) => {
416
+ console.log(data)
417
+ data.row.Product = 'xxx'
418
+ },
419
+ },
420
+ },
421
+ {
422
+ type: 'j-input',
423
+ config: {
424
+ label: '格式',
425
+ field: 'formatStr',
426
+ },
427
+ },
428
+ {
429
+ type: 'j-input',
430
+ config: {
431
+ label: '步长',
432
+ field: 'step',
433
+ },
434
+ },
435
+ {
436
+ id: 'Product',
437
+ config: {
438
+ label: 'Product Name',
439
+ width: 'auto',
440
+ align: 'left',
441
+ },
442
+ },
443
+ ],
444
+ // on: {
445
+ // change: (data: any) => {
446
+ // console.log(data, 'change')
447
+ // }
448
+ // }
449
+ },
450
+ ]
451
+
452
+ onMounted(() => {
453
+ formRef.value.setFormData({
454
+ fields: [
455
+ {
456
+ name: '字段1',
457
+ type: '字符串'
458
+ },
459
+ {
460
+ name: '字段2',
461
+ type: '数字'
462
+ },
463
+ ],
464
+ })
465
+ })
466
+ const handleSubmit = async () => {
467
+ const valid = await formRef.value.validate()
468
+ if (valid) {
469
+ const formData = formRef.value.getFormData()
470
+ console.log('表单数据:', formData)
471
+ alert('提交成功!')
472
+ }
473
+ }
474
+
475
+ const handleReset = () => {
476
+ formRef.value.reset()
477
+ }
478
+ </script>