iov-pro-components 0.0.3

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 (133) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.js +192 -0
  3. package/.gitignore +3 -0
  4. package/README.md +4 -0
  5. package/babel.config.js +5 -0
  6. package/docs/.vuepress/config.js +169 -0
  7. package/docs/.vuepress/styles/index.styl +62 -0
  8. package/docs/.vuepress/styles/palette.styl +20 -0
  9. package/docs/.vuepress/theme/enhanceApp.js +100 -0
  10. package/docs/.vuepress/theme/index.js +3 -0
  11. package/docs/README.md +13 -0
  12. package/docs/components/description.md +519 -0
  13. package/docs/components/dialog-select.md +91 -0
  14. package/docs/components/display.md +36 -0
  15. package/docs/components/enums.md +33 -0
  16. package/docs/components/icon.md +406 -0
  17. package/docs/components/link-group.md +39 -0
  18. package/docs/components/page-detail.md +48 -0
  19. package/docs/components/page-module.md +51 -0
  20. package/docs/components/pro-form.md +958 -0
  21. package/docs/components/pro-table.md +683 -0
  22. package/docs/components/request.md +44 -0
  23. package/docs/components/search-table.md +963 -0
  24. package/docs/components/space.md +35 -0
  25. package/docs/components/sub-title.md +24 -0
  26. package/docs/components/submit-module.md +24 -0
  27. package/docs/template/add.md +124 -0
  28. package/docs/template/confirm.md +28 -0
  29. package/docs/template/detail.md +240 -0
  30. package/docs/template/dialog.md +339 -0
  31. package/docs/template/list.md +464 -0
  32. package/docs/template/tabs-mini.md +32 -0
  33. package/docs/template/tabs.md +32 -0
  34. package/jsconfig.json +19 -0
  35. package/lib/iov-pro-components.css +1 -0
  36. package/lib/iov-pro-components.min.js +7 -0
  37. package/lib/postcss.config.js +8 -0
  38. package/package.json +75 -0
  39. package/patches/vue-server-renderer+2.7.16.patch +13 -0
  40. package/rollup.config.mjs +79 -0
  41. package/src/App.vue +103 -0
  42. package/src/main.js +33 -0
  43. package/src/packages/column-tooltip/index.js +7 -0
  44. package/src/packages/column-tooltip/src/main.vue +127 -0
  45. package/src/packages/description/index.js +7 -0
  46. package/src/packages/description/src/main.vue +375 -0
  47. package/src/packages/description/src/text.vue +103 -0
  48. package/src/packages/dialog-select/index.js +7 -0
  49. package/src/packages/dialog-select/src/main.vue +308 -0
  50. package/src/packages/display/index.js +7 -0
  51. package/src/packages/display/src/main.vue +44 -0
  52. package/src/packages/enums/index.js +7 -0
  53. package/src/packages/enums/src/main.vue +23 -0
  54. package/src/packages/export/index.js +7 -0
  55. package/src/packages/export/src/main.vue +316 -0
  56. package/src/packages/fixed-button-group/index.js +7 -0
  57. package/src/packages/fixed-button-group/src/main.vue +104 -0
  58. package/src/packages/form/index.js +7 -0
  59. package/src/packages/form/src/collapse.vue +149 -0
  60. package/src/packages/form/src/main.vue +1190 -0
  61. package/src/packages/form-collapse/index.js +7 -0
  62. package/src/packages/index.js +86 -0
  63. package/src/packages/link-group/index.js +7 -0
  64. package/src/packages/link-group/src/main.vue +52 -0
  65. package/src/packages/page-detail/index.js +7 -0
  66. package/src/packages/page-detail/src/main.vue +123 -0
  67. package/src/packages/page-module/index.js +7 -0
  68. package/src/packages/page-module/src/main.vue +56 -0
  69. package/src/packages/preview/index.js +7 -0
  70. package/src/packages/preview/src/eval-image-viewer.js +50 -0
  71. package/src/packages/preview/src/image-viewer.vue +366 -0
  72. package/src/packages/preview/src/main.vue +97 -0
  73. package/src/packages/request/index.js +7 -0
  74. package/src/packages/request/src/main.vue +125 -0
  75. package/src/packages/search-table/index.js +7 -0
  76. package/src/packages/search-table/src/inner-tabs.vue +237 -0
  77. package/src/packages/search-table/src/main.vue +472 -0
  78. package/src/packages/search-table/src/outer-tabs.vue +45 -0
  79. package/src/packages/search-table-inner-tabs/index.js +7 -0
  80. package/src/packages/search-table-outer-tabs/index.js +7 -0
  81. package/src/packages/space/index.js +7 -0
  82. package/src/packages/space/src/main.vue +74 -0
  83. package/src/packages/sub-title/index.js +7 -0
  84. package/src/packages/sub-title/src/main.vue +70 -0
  85. package/src/packages/submit-module/index.js +7 -0
  86. package/src/packages/submit-module/src/main.vue +67 -0
  87. package/src/packages/table/index.js +7 -0
  88. package/src/packages/table/src/filter.vue +89 -0
  89. package/src/packages/table/src/main.vue +668 -0
  90. package/src/packages/table/src/search.vue +90 -0
  91. package/src/packages/table/src/sort.vue +118 -0
  92. package/src/packages/theme/index.scss +15 -0
  93. package/src/packages/theme/src/column-tooltip.scss +23 -0
  94. package/src/packages/theme/src/common/color.scss +134 -0
  95. package/src/packages/theme/src/description.scss +56 -0
  96. package/src/packages/theme/src/dialog-select.scss +32 -0
  97. package/src/packages/theme/src/fixed-button-group.scss +25 -0
  98. package/src/packages/theme/src/form.scss +11 -0
  99. package/src/packages/theme/src/link-group.scss +43 -0
  100. package/src/packages/theme/src/page-detail.scss +61 -0
  101. package/src/packages/theme/src/page-module.scss +46 -0
  102. package/src/packages/theme/src/preview.scss +67 -0
  103. package/src/packages/theme/src/search-table.scss +185 -0
  104. package/src/packages/theme/src/space.scss +12 -0
  105. package/src/packages/theme/src/sub-title.scss +47 -0
  106. package/src/packages/theme/src/submit-module.scss +13 -0
  107. package/src/packages/theme/src/table.scss +129 -0
  108. package/src/packages/theme/src/toolbar.scss +109 -0
  109. package/src/packages/toolbar/index.js +7 -0
  110. package/src/packages/toolbar/src/main.vue +126 -0
  111. package/src/packages/toolbar/src/setting.vue +217 -0
  112. package/src/packages/toolbar/src/style.vue +68 -0
  113. package/src/packages/toolbar/src/zoom.vue +65 -0
  114. package/src/router.js +83 -0
  115. package/src/utils/config-center.js +218 -0
  116. package/src/utils/function-eval.js +84 -0
  117. package/src/utils/index.js +104 -0
  118. package/src/views/column-tooltip.vue +37 -0
  119. package/src/views/components/OtherSelect.vue +18 -0
  120. package/src/views/description.vue +60 -0
  121. package/src/views/detail.vue +146 -0
  122. package/src/views/directive/number.js +82 -0
  123. package/src/views/enums.vue +22 -0
  124. package/src/views/export.vue +9 -0
  125. package/src/views/form-collapse.vue +185 -0
  126. package/src/views/form.vue +402 -0
  127. package/src/views/link-group.vue +16 -0
  128. package/src/views/preview.vue +33 -0
  129. package/src/views/request.vue +56 -0
  130. package/src/views/search-table.vue +297 -0
  131. package/src/views/table.vue +145 -0
  132. package/src/views/toolbar.vue +30 -0
  133. package/vue.config.js +22 -0
@@ -0,0 +1,217 @@
1
+ <script>
2
+ import Draggable from 'vuedraggable'
3
+ import { getComponentNames } from '@/utils/config-center'
4
+ import { randomString } from '@/utils'
5
+
6
+ export default {
7
+ name: 'IovProToolbarSetting',
8
+ props: {
9
+ placement: {
10
+ type: String,
11
+ default: ''
12
+ },
13
+ table: {
14
+ type: [Object, Function],
15
+ default: null
16
+ }
17
+ },
18
+ data() {
19
+ return {
20
+ settingVisible: false,
21
+ selectAll: false,
22
+ prevState: {
23
+ columns: [],
24
+ checked: []
25
+ },
26
+ tableColumns: [],
27
+ checkedColumns: []
28
+ }
29
+ },
30
+ mounted() {
31
+ // 初始化表头列
32
+ this.initTableColumns()
33
+ },
34
+ methods: {
35
+ /**
36
+ * 获取表格列数据
37
+ * @time 2024-11-27 16:18:44
38
+ */
39
+ initTableColumns() {
40
+ // 获取IovProTable示例
41
+ const iovProTable = this.table instanceof Function ? this.table() : this.table
42
+ // 记录当前表格列
43
+ this.tableColumns = iovProTable.columns
44
+ .map(column => ({
45
+ label: column.label || column.type,
46
+ value: randomString(32),
47
+ disabled: column.keepInPlace,
48
+ target: column
49
+ }))
50
+ // 设置全选
51
+ this.onSelectAll(true)
52
+ // 重置历史数据
53
+ this.prevState = {
54
+ columns: [...this.tableColumns],
55
+ checked: [...this.checkedColumns]
56
+ }
57
+ },
58
+
59
+ /**
60
+ * 当复选框选中了
61
+ * @param {Array} val 当前所有值
62
+ * @time 2024-11-27 17:12:07
63
+ */
64
+ onCheckboxSelected(val) {
65
+ // 设置当前选中的值
66
+ this.checkedColumns = val
67
+ // 如果当前是选中的状态
68
+ this.selectAll = val.length === this.tableColumns.length
69
+ },
70
+
71
+ /**
72
+ * 当选中了全部
73
+ * @param {} data 参数说明
74
+ * @param {参数类型} data 参数说明
75
+ * @return {返回类型} data 返回说明
76
+ * @time 2024-11-27 17:13:27
77
+ */
78
+ onSelectAll(val) {
79
+ // 设置当前值
80
+ this.selectAll = val
81
+ // 如果当前是选中的状态,则取出所有值。否则清空
82
+ this.checkedColumns = val
83
+ ? this.tableColumns.map(column => column.value)
84
+ : this.tableColumns.filter(column => column.disabled).map(column => column.value)
85
+ },
86
+
87
+ /**
88
+ * 恢复到预设
89
+ * @time 2024-11-27 18:04:28
90
+ */
91
+ onResetToDefault() {
92
+ // 取消全选状态
93
+ this.selectAll = false
94
+ // 清空选中项目
95
+ this.checkedColumns = []
96
+ // 重新生成表头数据
97
+ this.initTableColumns()
98
+ // 获取IovProTable示例
99
+ const iovProTable = this.table instanceof Function ? this.table() : this.table
100
+ // 隐藏当前选中的数据
101
+ iovProTable.doLayout(this.tableColumns.map(column => column.target))
102
+ // 关闭弹出框
103
+ this.settingVisible = false
104
+ },
105
+
106
+ /**
107
+ * 确认用户选择的表头
108
+ * @time 2024-11-27 18:47:11
109
+ */
110
+ onConfirm() {
111
+ // 需要默认选中的列
112
+ const defaultCheckedColumns = this.tableColumns.filter(column => column.disabled)
113
+ // 如果一个都没有选中,则不让点确定
114
+ if (this.checkedColumns.length === defaultCheckedColumns.length) {
115
+ return
116
+ }
117
+ // 获取IovProTable示例
118
+ const iovProTable = this.table instanceof Function ? this.table() : this.table
119
+ // 当前需要展示的key
120
+ const displayColumns = this.tableColumns
121
+ .filter(column => this.checkedColumns.includes(column.value))
122
+ .map(column => column.target)
123
+ // 隐藏当前选中的数据
124
+ iovProTable.doLayout(displayColumns)
125
+ // 记录当前选中的数据到历史数据中
126
+ this.prevState = {
127
+ columns: [...this.tableColumns],
128
+ checked: [...this.checkedColumns]
129
+ }
130
+ // 关闭弹框
131
+ this.settingVisible = false
132
+ },
133
+
134
+ /**
135
+ * 点击取消方法
136
+ * @time 2024-11-27 18:49:10
137
+ */
138
+ onCancel() {
139
+ // 关闭弹框
140
+ this.settingVisible = false
141
+ // 等弹框关闭了再恢复之前的数据
142
+ this.$nextTick(() => {
143
+ // 还原胡乱排序的表头
144
+ this.tableColumns = [...this.prevState.columns]
145
+ // 设置当前选中的值
146
+ this.onCheckboxSelected([...this.prevState.checked])
147
+ })
148
+ }
149
+ },
150
+ render() {
151
+ const [
152
+ Tooltip,
153
+ Popover,
154
+ Checkbox,
155
+ Link,
156
+ Button,
157
+ CheckboxGroup
158
+ ] = getComponentNames(['tooltip', 'popover', 'checkbox', 'link', 'button', 'checkbox-group'])
159
+ // 是否需要模态
160
+ const indeterminate = this.checkedColumns.length > 0 && this.checkedColumns.length < this.tableColumns.length
161
+ return (
162
+ <Popover
163
+ value={this.settingVisible}
164
+ width='184'
165
+ popper-class='iov-pro-toolbar__setting-popper'
166
+ onInput={val => (this.settingVisible = val)}
167
+ >
168
+ <Tooltip
169
+ slot='reference'
170
+ effect='dark'
171
+ content='设置'
172
+ placement={this.placement}
173
+ >
174
+ <i class={['iov-pro-toolbar__icon iov-icon-setting', this.settingVisible ? 'is-active' : ''].join(' ')} />
175
+ </Tooltip>
176
+ <div class='iov-pro-toolbar__setting'>
177
+ <div class='iov-pro-toolbar__setting-header'>
178
+ <Checkbox
179
+ value={this.selectAll}
180
+ indeterminate={indeterminate}
181
+ onInput={this.onSelectAll}
182
+ >列展示</Checkbox>
183
+ <Link type='primary' onClick={this.onResetToDefault}>恢复预设</Link>
184
+ </div>
185
+ <div class='iov-pro-toolbar__setting-body'>
186
+ <CheckboxGroup
187
+ value={this.checkedColumns}
188
+ onInput={this.onCheckboxSelected}
189
+ >
190
+ <Draggable
191
+ list={this.tableColumns}
192
+ item-key='value'
193
+ group='column'
194
+ handle='.iov-pro-toolbar__setting-item--drag'
195
+ filter='.undraggable'
196
+ >
197
+ { // 遍历表格列
198
+ this.tableColumns.map(column => (
199
+ <div class='iov-pro-toolbar__setting-item'>
200
+ <Checkbox label={column.value} disabled={column.disabled}>{column.label}</Checkbox>
201
+ <i class={['iov-pro-toolbar__setting-item--drag iov-icon-line-drag', column.disabled ? 'undraggable' : ''].join(' ')} />
202
+ </div>
203
+ ))
204
+ }
205
+ </Draggable>
206
+ </CheckboxGroup>
207
+ </div>
208
+ <div class='iov-pro-toolbar__setting-footer'>
209
+ <Button size='mini' onClick={this.onCancel}>取消</Button>
210
+ <Button type='info' size='mini' onClick={this.onConfirm}>确定</Button>
211
+ </div>
212
+ </div>
213
+ </Popover>
214
+ )
215
+ }
216
+ }
217
+ </script>
@@ -0,0 +1,68 @@
1
+ <script>
2
+ import { getComponentNames } from '../../../utils/config-center'
3
+
4
+ export default {
5
+ name: 'IovProToolbarStyle',
6
+ props: {
7
+ placement: {
8
+ type: String,
9
+ default: ''
10
+ },
11
+ table: {
12
+ type: [Object, Function],
13
+ default: null
14
+ }
15
+ },
16
+ data() {
17
+ return {
18
+ visible: false
19
+ }
20
+ },
21
+ methods: {
22
+ /**
23
+ * 切换表格的是否展示border
24
+ * @param {String} size 当前尺寸
25
+ * @time 2024-11-27 18:10:59
26
+ */
27
+ onChangeTableBorder(border) {
28
+ // 获取IovProTable示例
29
+ const iovProTable = this.table instanceof Function ? this.table() : this.table
30
+ // 更新配置
31
+ iovProTable.updateTableConfig({
32
+ border: border === 'border',
33
+ outerBorder: border === 'none'
34
+ })
35
+ }
36
+ },
37
+ render() {
38
+ const [
39
+ Dropdown,
40
+ DropdownMenu,
41
+ DropdownItem,
42
+ Tooltip
43
+ ] = getComponentNames(['dropdown', 'dropdown-menu', 'dropdown-item', 'tooltip'])
44
+ return (
45
+ <Dropdown
46
+ trigger='click'
47
+ onCommand={this.onChangeTableBorder}
48
+ on={{
49
+ command: this.onChangeTableBorder,
50
+ 'visible-change': val => (this.visible = val)
51
+ }}
52
+ >
53
+ <Tooltip
54
+ effect='dark'
55
+ content='样式'
56
+ placement={this.placement}
57
+ >
58
+ <i class={['iov-pro-toolbar__icon iov-icon-wand', this.visible ? 'is-active' : ''].join(' ')} />
59
+ </Tooltip>
60
+ <DropdownMenu slot='dropdown' class='iov-pro-toolbar__dropdown-menu'>
61
+ <DropdownItem command='none'>无分割线</DropdownItem>
62
+ <DropdownItem command='border'>有分割线</DropdownItem>
63
+ </DropdownMenu>
64
+ </Dropdown>
65
+ )
66
+ }
67
+ }
68
+ </script>
@@ -0,0 +1,65 @@
1
+ <script>
2
+ import { getComponentNames } from '@/utils/config-center'
3
+
4
+ export default {
5
+ name: 'IovProToolbarZoom',
6
+ props: {
7
+ placement: {
8
+ type: String,
9
+ default: ''
10
+ },
11
+ table: {
12
+ type: [Object, Function],
13
+ default: null
14
+ }
15
+ },
16
+ data() {
17
+ return {
18
+ visible: false
19
+ }
20
+ },
21
+ methods: {
22
+ /**
23
+ * 切换表格的尺寸
24
+ * @param {String} size 当前尺寸
25
+ * @time 2024-11-27 18:10:59
26
+ */
27
+ onChangeTableSize(size) {
28
+ // 获取IovProTable示例
29
+ const iovProTable = this.table instanceof Function ? this.table() : this.table
30
+ // 更新配置
31
+ iovProTable.updateTableConfig({ size })
32
+ }
33
+ },
34
+ render() {
35
+ const [
36
+ Dropdown,
37
+ DropdownMenu,
38
+ DropdownItem,
39
+ Tooltip
40
+ ] = getComponentNames(['dropdown', 'dropdown-menu', 'dropdown-item', 'tooltip'])
41
+ return (
42
+ <Dropdown
43
+ trigger='click'
44
+ on={{
45
+ command: this.onChangeTableSize,
46
+ 'visible-change': val => (this.visible = val)
47
+ }}
48
+ >
49
+ <Tooltip
50
+ effect='dark'
51
+ content='密度'
52
+ placement={this.placement}
53
+ >
54
+ <i class={['iov-pro-toolbar__icon iov-icon-zoom', this.visible ? 'is-active' : ''].join(' ')} />
55
+ </Tooltip>
56
+ <DropdownMenu slot='dropdown' class='iov-pro-toolbar__dropdown-menu'>
57
+ <DropdownItem command='medium'>默认</DropdownItem>
58
+ <DropdownItem command='small'>中等</DropdownItem>
59
+ <DropdownItem command='mini'>紧凑</DropdownItem>
60
+ </DropdownMenu>
61
+ </Dropdown>
62
+ )
63
+ }
64
+ }
65
+ </script>
package/src/router.js ADDED
@@ -0,0 +1,83 @@
1
+ import VueRouter from 'vue-router'
2
+
3
+ // 当前路由
4
+ const routes = [
5
+ {
6
+ path: '/debug/column-tooltip',
7
+ name: 'ColumnTooltipDemo',
8
+ component: () => import('./views/column-tooltip.vue'),
9
+ meta: { title: '单元格提示' }
10
+ },
11
+ {
12
+ path: '/debug/description',
13
+ name: 'DescriptionDemo',
14
+ component: () => import('./views/description.vue'),
15
+ meta: { title: '描述组件' }
16
+ },
17
+ {
18
+ path: '/debug/detail',
19
+ name: 'DetailPageDemo',
20
+ component: () => import('./views/detail.vue'),
21
+ meta: { title: '描述' }
22
+ },
23
+ {
24
+ path: '/debug/enums',
25
+ name: 'EnumsDemo',
26
+ component: () => import('./views/enums.vue'),
27
+ meta: { title: '枚举' }
28
+ },
29
+ {
30
+ path: '/debug/export',
31
+ name: 'ExportDemo',
32
+ component: () => import('./views/export.vue'),
33
+ meta: { title: '导出' }
34
+ },
35
+ {
36
+ path: '/debug/link-group',
37
+ name: 'LinkGroupDemo',
38
+ component: () => import('./views/link-group.vue'),
39
+ meta: { title: '按钮组' }
40
+ },
41
+ {
42
+ path: '/debug/form-collapse',
43
+ name: 'FormCollapseDemo',
44
+ component: () => import('./views/form-collapse.vue'),
45
+ meta: { title: '表格收起/展开' }
46
+ },
47
+ {
48
+ path: '/debug/form',
49
+ name: 'FormDemo',
50
+ component: () => import('./views/form.vue'),
51
+ meta: { title: '表单' }
52
+ },
53
+ {
54
+ path: '/debug/table',
55
+ name: 'TableDemo',
56
+ component: () => import('./views/table.vue'),
57
+ meta: { title: '表格' }
58
+ },
59
+ {
60
+ path: '/debug/request',
61
+ name: 'RequestDemo',
62
+ component: () => import('./views/request.vue'),
63
+ meta: { title: '接口请求' }
64
+ },
65
+ {
66
+ path: '/debug/search-table',
67
+ name: 'SearchTableDemo',
68
+ component: () => import('./views/search-table.vue'),
69
+ meta: { title: '搜索表单' }
70
+ },
71
+ {
72
+ path: '/debug/toolbar',
73
+ name: 'ToolbarDemo',
74
+ component: () => import('./views/toolbar.vue'),
75
+ meta: { title: '工具栏' }
76
+ }
77
+ ]
78
+
79
+ export default new VueRouter({
80
+ mode: 'history',
81
+ base: process.env.VUE_APP_ROUTER,
82
+ routes
83
+ })
@@ -0,0 +1,218 @@
1
+ import { toUpperCamelCase } from './index'
2
+
3
+ let Vue = null
4
+ let componentConfig = {}
5
+
6
+ /**
7
+ * 初始化方法
8
+ * @param {Object} vue vue实例
9
+ * @time 2024-10-28 17:53:17
10
+ */
11
+ export const init = (vue, config) => {
12
+ Vue = vue
13
+ componentConfig = config
14
+ }
15
+
16
+ /**
17
+ * 判断当前是否是ElementUI库
18
+ * @time 2024-10-28 17:52:27
19
+ */
20
+ export function isElementUI() {
21
+ const {
22
+ $ELEMENT,
23
+ $loading,
24
+ $msgbox,
25
+ $alert,
26
+ $confirm,
27
+ $prompt,
28
+ $notify,
29
+ $message
30
+ } = Vue?.prototype || {}
31
+ return $ELEMENT && $loading && $msgbox && $alert && $confirm && $prompt && $notify && $message
32
+ }
33
+
34
+ /**
35
+ * 判断当前是否是AntDesign
36
+ * @time 2024-10-28 17:54:53
37
+ */
38
+ export function isAntDesign() {
39
+ const {
40
+ $message,
41
+ $notification,
42
+ $info,
43
+ $success,
44
+ $error,
45
+ $warning,
46
+ $confirm,
47
+ $destroyAll
48
+ } = Vue?.prototype || {}
49
+ return $message && $notification && $info && $success && $error && $warning && $confirm && $destroyAll
50
+ }
51
+
52
+ /**
53
+ * 是否是组件支持的标签名
54
+ * @param {String} tagName 标签名
55
+ * @time 2024-10-31 17:54:07
56
+ */
57
+ const isSupportTagName = tagName => {
58
+ // 如果是elementUI
59
+ if (isElementUI()) {
60
+ // 字段映射
61
+ const ALIAS_MAP = {
62
+ 'Button': 'Button',
63
+ 'Link': 'Link',
64
+ 'Input': 'Input',
65
+ 'Row': 'Row',
66
+ 'Col': 'Col',
67
+ 'InputNumber': 'InputNumber',
68
+ 'Checkbox': 'Checkbox',
69
+ 'CheckboxButton': 'CheckboxButton',
70
+ 'CheckboxGroup': 'CheckboxGroup',
71
+ 'Radio': 'Radio',
72
+ 'RadioButton': 'RadioButton',
73
+ 'RadioGroup': 'RadioGroup',
74
+ 'Select': 'Select',
75
+ 'Option': 'Option',
76
+ 'Cascader': 'Cascader',
77
+ 'Switch': 'Switch',
78
+ 'Slider': 'Slider',
79
+ 'Rate': 'Rate',
80
+ 'ColorPicker': 'ColorPicker',
81
+ 'Transfer': 'Transfer',
82
+ 'TimePicker': 'TimePicker',
83
+ 'DatePicker': 'DatePicker',
84
+ 'Upload': 'Upload',
85
+ 'Dropdown': 'Dropdown',
86
+ 'DropdownMenu': 'DropdownMenu',
87
+ 'DropdownItem': 'DropdownItem',
88
+ 'Tooltip': 'Tooltip',
89
+ 'Tree': 'Tree',
90
+ 'Tag': 'Tag',
91
+ 'Tabs': 'Tabs',
92
+ 'TabPane': 'TabPane',
93
+ 'Table': 'Table',
94
+ 'TableColumn': 'TableColumn',
95
+ 'Form': 'Form',
96
+ 'FormItem': 'FormItem',
97
+ 'Pagination': 'Pagination',
98
+ 'Popover': 'Popover'
99
+ }
100
+ return Object.keys(ALIAS_MAP).includes(tagName)
101
+ }
102
+ // 如果是AntDesign
103
+ if (isAntDesign()) {
104
+ // 字段映射
105
+ const ALIAS_MAP = {
106
+ 'Button': 'Button',
107
+ 'Link': 'Link',
108
+ 'Icon': 'Icon',
109
+ 'Row': 'Row',
110
+ 'Col': 'Col',
111
+ 'Input': 'Input',
112
+ 'InputNumber': 'InputNumber',
113
+ 'Checkbox': 'Checkbox',
114
+ 'Radio': 'Radio',
115
+ 'Select': 'Select',
116
+ 'Option': 'Option',
117
+ 'Cascader': 'Cascader',
118
+ 'Switch': 'Switch',
119
+ 'Slider': 'Slider',
120
+ 'Rate': 'Rate',
121
+ 'ColorPicker': 'ColorPicker',
122
+ 'Transfer': 'Transfer',
123
+ 'TimePicker': 'TimePicker',
124
+ 'DatePicker': 'DatePicker',
125
+ 'Upload': 'Upload',
126
+ 'TreeSelect': 'TreeSelect',
127
+ 'Dropdown': 'Dropdown',
128
+ 'DropdownMenu': 'Menu',
129
+ 'DropdownItem': 'MenuItem',
130
+ 'Tooltip': 'Tooltip',
131
+ 'Tree': 'Tree',
132
+ 'Tag': 'Tag',
133
+ 'Tabs': 'Tabs',
134
+ 'TabPane': 'TabPane',
135
+ 'Table': 'Table',
136
+ 'TableColumn': 'TableColumn',
137
+ 'Form': 'FormModel',
138
+ 'FormItem': 'FormModelItem',
139
+ 'Pagination': 'Pagination',
140
+ 'Popover': 'Popover'
141
+ }
142
+ return Object.keys(ALIAS_MAP).includes(tagName)
143
+ }
144
+ return false
145
+ }
146
+
147
+ /**
148
+ * 获取组件名称
149
+ * @param {String} componentTagName 组件tag名称
150
+ * @time 2024-10-28 17:50:19
151
+ */
152
+ export const getComponentName = componentTagName => {
153
+ // 首字母大写,并且去掉中划线的格式
154
+ const tagName = toUpperCamelCase(componentTagName)
155
+ // 如果当前是ElementUI
156
+ if (isElementUI() && isSupportTagName(tagName)) {
157
+ return `El${tagName}`
158
+ }
159
+ // 如果当前是AntDesign
160
+ if (isAntDesign() && isSupportTagName(tagName)) {
161
+ return `A${tagName}`
162
+ }
163
+ return componentTagName
164
+ }
165
+
166
+ /**
167
+ * 获取组件名称
168
+ * @param {Array} tagNames 组件名
169
+ * @time 2024-11-13 14:18:18
170
+ */
171
+ export const getComponentNames = componentTagNames => {
172
+ return componentTagNames.map(getComponentName)
173
+ }
174
+
175
+ /**
176
+ * 获取组件配置
177
+ * @param {String} componentTagName 组件名
178
+ * @time 2025-05-09 09:46:46
179
+ */
180
+ export const getComponentConfig = componentTagName => componentConfig[componentTagName]
181
+
182
+ /**
183
+ * 是否是需要过滤的属性数据key
184
+ * @param {String} tagName 标签名称
185
+ * @param {String} propKey 属性key
186
+ * @time 2024-12-10 09:34:34
187
+ */
188
+ export const isFilteredDataKey = (tagName, propKey) => {
189
+ return !!getFilteredDataType(tagName, propKey)
190
+ }
191
+
192
+ /**
193
+ * 获取当前需要过滤的数据类型
194
+ * @param {String} tagName 标签名称
195
+ * @param {String} propKey 属性key
196
+ * @time 2024-12-10 09:36:38
197
+ */
198
+ export const getFilteredDataType = (tagName, propKey) => {
199
+ // 将标签名称转换成大驼峰
200
+ const tagNameUpperCase = toUpperCamelCase(tagName)
201
+ // 如果当前是ElementUI
202
+ if (isElementUI()) {
203
+ // 当前过滤的数据
204
+ const FILTERED_TYPE = {
205
+ 'Select': {
206
+ options: ['remoteMethod', 'filterMethod']
207
+ }
208
+ }
209
+ // 如果没找到对应字段
210
+ if (!FILTERED_TYPE[tagNameUpperCase]) {
211
+ return null
212
+ }
213
+ // 返回需要过滤的key
214
+ return Object
215
+ .keys(FILTERED_TYPE[tagNameUpperCase])
216
+ .find(key => FILTERED_TYPE[tagNameUpperCase][key].includes(propKey))
217
+ }
218
+ }