adtec-core-package 0.4.0 → 0.4.2

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 (207) hide show
  1. package/.editorconfig +6 -6
  2. package/.prettierrc.json +7 -7
  3. package/.vscode/extensions.json +8 -8
  4. package/README.en.md +36 -36
  5. package/README.md +39 -39
  6. package/env.d.ts +1 -1
  7. package/eslint.config.js +56 -56
  8. package/index.html +13 -13
  9. package/package.json +59 -59
  10. package/src/App.vue +9 -9
  11. package/src/api/BasicApi.ts +17 -17
  12. package/src/api/DocumentApi.ts +27 -27
  13. package/src/api/SysDictCacheApi.ts +26 -26
  14. package/src/api/SysUserApi.ts +35 -35
  15. package/src/api/framework.ts +12 -12
  16. package/src/assets/base.css +86 -86
  17. package/src/assets/logo.svg +1 -1
  18. package/src/assets/main.css +35 -35
  19. package/src/assets/style/ant.scss +19 -19
  20. package/src/assets/style/index.less +180 -180
  21. package/src/assets/style/transition.scss +49 -49
  22. package/src/components/ElFlex/ElFlex.vue +297 -297
  23. package/src/components/OperationAuth/operationAuth.vue +26 -26
  24. package/src/components/Search/ElIconSearch.vue +260 -239
  25. package/src/components/Search/ElSearch.vue +154 -154
  26. package/src/components/Table/ElTableColumnEdit.vue +218 -218
  27. package/src/components/Title/ElTitle.vue +49 -49
  28. package/src/components/autoToolTip/ElAutoToolTip.vue +61 -61
  29. package/src/components/baseEcharts/index.vue +48 -48
  30. package/src/components/business/userSelect.vue +412 -412
  31. package/src/components/icon/ElIconBtn.vue +182 -182
  32. package/src/components/icon/ElIcons.vue +38 -38
  33. package/src/components/upload/ElUploads.vue +286 -279
  34. package/src/components/upload/FileView.vue +158 -158
  35. package/src/components/upload/FileViewComponents.vue +57 -57
  36. package/src/config/ElementPlusConfig.ts +95 -95
  37. package/src/css/elementUI/affix.scss +7 -7
  38. package/src/css/elementUI/alert.scss +115 -115
  39. package/src/css/elementUI/anchor-link.scss +41 -41
  40. package/src/css/elementUI/anchor.scss +88 -88
  41. package/src/css/elementUI/aside.scss +8 -8
  42. package/src/css/elementUI/autocomplete.scss +89 -89
  43. package/src/css/elementUI/avatar.scss +55 -55
  44. package/src/css/elementUI/backtop.scss +29 -29
  45. package/src/css/elementUI/badge.scss +58 -58
  46. package/src/css/elementUI/base.scss +3 -3
  47. package/src/css/elementUI/breadcrumb.scss +62 -62
  48. package/src/css/elementUI/button-group.scss +80 -80
  49. package/src/css/elementUI/button.scss +304 -304
  50. package/src/css/elementUI/calendar.scss +80 -80
  51. package/src/css/elementUI/card.scss +45 -45
  52. package/src/css/elementUI/carousel-item.scss +58 -58
  53. package/src/css/elementUI/carousel.scss +188 -188
  54. package/src/css/elementUI/cascader-panel.scss +138 -138
  55. package/src/css/elementUI/cascader.scss +230 -230
  56. package/src/css/elementUI/check-tag.scss +60 -60
  57. package/src/css/elementUI/checkbox-button.scss +140 -140
  58. package/src/css/elementUI/checkbox-group.scss +7 -7
  59. package/src/css/elementUI/checkbox.scss +298 -298
  60. package/src/css/elementUI/col.scss +48 -48
  61. package/src/css/elementUI/collapse.scss +70 -70
  62. package/src/css/elementUI/color/index.scss +20 -20
  63. package/src/css/elementUI/color-picker.scss +392 -392
  64. package/src/css/elementUI/common/popup.scss +47 -47
  65. package/src/css/elementUI/common/transition.scss +122 -122
  66. package/src/css/elementUI/common/var.scss +1549 -1549
  67. package/src/css/elementUI/container.scss +14 -14
  68. package/src/css/elementUI/dark/css-vars.scss +39 -39
  69. package/src/css/elementUI/dark/var.scss +222 -222
  70. package/src/css/elementUI/date-picker/date-picker.scss +110 -110
  71. package/src/css/elementUI/date-picker/date-range-picker.scss +113 -113
  72. package/src/css/elementUI/date-picker/date-table.scss +158 -158
  73. package/src/css/elementUI/date-picker/month-table.scss +112 -112
  74. package/src/css/elementUI/date-picker/picker-panel.scss +131 -131
  75. package/src/css/elementUI/date-picker/picker.scss +219 -219
  76. package/src/css/elementUI/date-picker/time-picker.scss +90 -90
  77. package/src/css/elementUI/date-picker/time-range-picker.scss +33 -33
  78. package/src/css/elementUI/date-picker/time-spinner.scss +111 -111
  79. package/src/css/elementUI/date-picker/year-table.scss +108 -108
  80. package/src/css/elementUI/date-picker.scss +9 -9
  81. package/src/css/elementUI/descriptions-item.scss +73 -73
  82. package/src/css/elementUI/descriptions.scss +152 -152
  83. package/src/css/elementUI/dialog.scss +199 -199
  84. package/src/css/elementUI/display.scss +12 -12
  85. package/src/css/elementUI/divider.scss +48 -48
  86. package/src/css/elementUI/drawer.scss +164 -164
  87. package/src/css/elementUI/dropdown.scss +208 -208
  88. package/src/css/elementUI/empty.scss +49 -49
  89. package/src/css/elementUI/footer.scss +12 -12
  90. package/src/css/elementUI/form.scss +243 -243
  91. package/src/css/elementUI/header.scss +12 -12
  92. package/src/css/elementUI/icon.scss +45 -45
  93. package/src/css/elementUI/image-viewer.scss +139 -139
  94. package/src/css/elementUI/image.scss +49 -49
  95. package/src/css/elementUI/index.scss +110 -110
  96. package/src/css/elementUI/input-number.scss +178 -178
  97. package/src/css/elementUI/input.scss +478 -478
  98. package/src/css/elementUI/link.scss +90 -90
  99. package/src/css/elementUI/loading.scss +104 -104
  100. package/src/css/elementUI/main.scss +14 -14
  101. package/src/css/elementUI/mention.scss +88 -88
  102. package/src/css/elementUI/menu.scss +339 -339
  103. package/src/css/elementUI/message-box.scss +213 -213
  104. package/src/css/elementUI/message.scss +98 -98
  105. package/src/css/elementUI/mixins/_button.scss +165 -165
  106. package/src/css/elementUI/mixins/_col.scss +33 -33
  107. package/src/css/elementUI/mixins/_var.scss +67 -67
  108. package/src/css/elementUI/mixins/config.scss +5 -5
  109. package/src/css/elementUI/mixins/function.scss +88 -88
  110. package/src/css/elementUI/mixins/mixins.scss +237 -237
  111. package/src/css/elementUI/mixins/utils.scss +39 -39
  112. package/src/css/elementUI/notification.scss +104 -104
  113. package/src/css/elementUI/option-group.scss +33 -33
  114. package/src/css/elementUI/option.scss +71 -71
  115. package/src/css/elementUI/overlay.scss +17 -17
  116. package/src/css/elementUI/page-header.scss +60 -60
  117. package/src/css/elementUI/pagination.scss +238 -238
  118. package/src/css/elementUI/popconfirm.scss +16 -16
  119. package/src/css/elementUI/popover.scss +61 -61
  120. package/src/css/elementUI/popper.scss +106 -106
  121. package/src/css/elementUI/progress.scss +179 -179
  122. package/src/css/elementUI/radio-button.scss +169 -169
  123. package/src/css/elementUI/radio-group.scss +9 -9
  124. package/src/css/elementUI/radio.scss +215 -215
  125. package/src/css/elementUI/rate.scss +108 -108
  126. package/src/css/elementUI/reset.scss +98 -98
  127. package/src/css/elementUI/result.scss +57 -57
  128. package/src/css/elementUI/row.scss +35 -35
  129. package/src/css/elementUI/scrollbar.scss +97 -97
  130. package/src/css/elementUI/segmented.scss +183 -183
  131. package/src/css/elementUI/select-dropdown-v2.scss +1 -1
  132. package/src/css/elementUI/select-dropdown.scss +57 -57
  133. package/src/css/elementUI/select-v2.scss +4 -4
  134. package/src/css/elementUI/select.scss +253 -253
  135. package/src/css/elementUI/skeleton-item.scss +83 -83
  136. package/src/css/elementUI/skeleton.scss +44 -44
  137. package/src/css/elementUI/slider.scss +212 -212
  138. package/src/css/elementUI/space.scss +20 -20
  139. package/src/css/elementUI/spinner.scss +43 -43
  140. package/src/css/elementUI/statistic.scss +35 -35
  141. package/src/css/elementUI/step.scss +316 -316
  142. package/src/css/elementUI/steps.scss +21 -21
  143. package/src/css/elementUI/switch.scss +300 -300
  144. package/src/css/elementUI/table-column.scss +98 -98
  145. package/src/css/elementUI/table-v2.scss +236 -236
  146. package/src/css/elementUI/table.scss +694 -694
  147. package/src/css/elementUI/tabs.scss +659 -659
  148. package/src/css/elementUI/tag.scss +181 -181
  149. package/src/css/elementUI/text.scss +51 -51
  150. package/src/css/elementUI/time-picker.scss +5 -5
  151. package/src/css/elementUI/time-select.scss +37 -37
  152. package/src/css/elementUI/timeline-item.scss +84 -84
  153. package/src/css/elementUI/timeline.scss +46 -46
  154. package/src/css/elementUI/tooltip-v2.scss +95 -95
  155. package/src/css/elementUI/tour.scss +187 -187
  156. package/src/css/elementUI/transfer.scss +203 -203
  157. package/src/css/elementUI/tree-select.scss +41 -41
  158. package/src/css/elementUI/tree.scss +134 -134
  159. package/src/css/elementUI/upload.scss +654 -654
  160. package/src/css/elementUI/var.scss +87 -87
  161. package/src/css/elementUI/virtual-list.scss +40 -40
  162. package/src/directives/vKeydown.ts +93 -93
  163. package/src/hooks/useDictHooks.ts +79 -76
  164. package/src/hooks/useEcharts.ts +58 -58
  165. package/src/hooks/useFileView.ts +34 -34
  166. package/src/hooks/useMessageHooks.ts +132 -132
  167. package/src/hooks/useResetRefHooks.ts +18 -18
  168. package/src/interface/BaseEntity.ts +28 -28
  169. package/src/interface/IMdmDept.ts +82 -82
  170. package/src/interface/IOrgDeptInfo.ts +12 -12
  171. package/src/interface/ISysDictDataCacheVo.ts +46 -46
  172. package/src/interface/ISysDictType.ts +37 -37
  173. package/src/interface/ISysMenuDataVo.ts +22 -22
  174. package/src/interface/ISysMenuInfoVo.ts +83 -83
  175. package/src/interface/ISysMenuOperationVo.ts +21 -21
  176. package/src/interface/ISysUploadFiles.ts +16 -16
  177. package/src/interface/ISysUserInfo.ts +70 -70
  178. package/src/interface/IUserPermissionVo.ts +34 -34
  179. package/src/interface/Message.ts +69 -69
  180. package/src/interface/PageData.ts +17 -17
  181. package/src/interface/ResponseData.ts +16 -16
  182. package/src/interface/dictMapType.ts +11 -11
  183. package/src/interface/enum/FlexEnum.ts +85 -85
  184. package/src/interface/enum/MessageEnum.ts +41 -41
  185. package/src/main.ts +14 -14
  186. package/src/mixin/globalMixin.ts +37 -37
  187. package/src/packages/index.ts +18 -18
  188. package/src/packages/text.vue +13 -13
  189. package/src/plugins/echartsConfig.ts +73 -73
  190. package/src/plugins/plugins.ts +12 -12
  191. package/src/router/index.ts +23 -23
  192. package/src/stores/dictStore.ts +27 -20
  193. package/src/stores/messageStore.ts +49 -49
  194. package/src/stores/permissionStore.ts +108 -108
  195. package/src/stores/storeConfig.ts +23 -23
  196. package/src/stores/userInfoStore.ts +31 -31
  197. package/src/utils/AxiosConfig.ts +216 -216
  198. package/src/utils/encrypt.ts +10 -10
  199. package/src/utils/request.ts +55 -55
  200. package/tsconfig.app.json +12 -12
  201. package/tsconfig.json +11 -11
  202. package/tsconfig.node.json +18 -18
  203. package/vite.config.ts +38 -38
  204. package/adtec-core-package/adtec-core-package.css +0 -1
  205. package/adtec-core-package/adtec-core-package.js +0 -41364
  206. package/adtec-core-package/adtec-core-package.umd.cjs +0 -79
  207. package/adtec-core-package/favicon.ico +0 -0
@@ -1,239 +1,260 @@
1
- <!--创建人 丁盼-->
2
- <!--说明: ELIconSearch-->
3
- <!--创建时间: 2024/11/25 上午10:17-->
4
- <!--修改时间: 2024/11/25 上午10:17-->
5
- <template>
6
- <el-popover
7
- :popper-options="{
8
- modifiers: [
9
- {
10
- name: 'offset',
11
- options: {
12
- offset: elementType === 'button' ? [0 - 15, 20] : [0 - 15, 12],
13
- },
14
- },
15
- ],
16
- }"
17
- @hide="visible = false"
18
- :popper-style="{ paddingTop: 0 }"
19
- ref="popoverRef"
20
- :virtual-ref="buttonRef"
21
- placement="right-end"
22
- :width="width"
23
- trigger="click"
24
- :teleported="false"
25
- :visible="visible"
26
- >
27
- <template #reference>
28
- <el-tooltip :content="tip" placement="top" style="cursor: pointer">
29
- <el-button v-if="elementType === 'button'" style="padding: 8px 10px; margin-left: 4px">
30
- <el-icon
31
- ref="buttonRef"
32
- :model-value="iconName"
33
- :style="style"
34
- :tip="tip"
35
- @click="iconClick"
36
- :class="getClass"
37
- >
38
- <svg v-if="selcomp" aria-hidden="true">
39
- <use :href="'#' + iconName"></use>
40
- </svg>
41
- <component v-else :is="iconName"></component>
42
- </el-icon>
43
- </el-button>
44
- <el-icon
45
- ref="buttonRef"
46
- v-else
47
- :model-value="iconName"
48
- :style="style"
49
- :tip="tip"
50
- @click="iconClick"
51
- class="icon-btn"
52
- :class="getClass"
53
- >
54
- <svg v-if="selcomp" class="icon" aria-hidden="true">
55
- <use :href="'#' + iconName"></use>
56
- </svg>
57
- <component v-else :is="iconName"></component>
58
- </el-icon>
59
- </el-tooltip>
60
- </template>
61
- <el-flex :vertical="true" @keypress="keypress">
62
- <el-flex
63
- height="45px"
64
- style="border-bottom: var(--border); margin-bottom: 10px"
65
- align="center"
66
- >
67
- <el-flex>
68
- <el-text style="font-size: 16px">{{ title }}</el-text>
69
- </el-flex>
70
- <el-flex align="center" justify="flex-end">
71
- <el-icons
72
- model-value="Close"
73
- style="font-size: 16px; cursor: pointer"
74
- @click="visible = false"
75
- ></el-icons>
76
- </el-flex>
77
- </el-flex>
78
- <slot></slot>
79
- <el-flex
80
- align="flex-end"
81
- justify="flex-end"
82
- height="40px"
83
- style="border-top: var(--border)"
84
- >
85
- <el-button @click="reset">重置</el-button>
86
- <el-button type="primary" @click="search">查询</el-button>
87
- </el-flex>
88
- </el-flex>
89
- </el-popover>
90
- </template>
91
- <script setup lang="ts">
92
- // 定义Props类型
93
- import { useVModel } from '@vueuse/core'
94
- import { computed, ref, unref } from 'vue'
95
- import ElFlex from '../ElFlex/ElFlex.vue'
96
- import ElIcons from '../icon/ElIcons.vue'
97
-
98
- const iconClick = () => {
99
- unref(popoverRef).popperRef?.delayHide?.()
100
- visible.value = !visible.value
101
- }
102
- const keypress = (e: KeyboardEvent) => {
103
- if (e.key === 'Enter') {
104
- visible.value = false
105
- emit('search')
106
- }
107
- }
108
- const search = () => {
109
- visible.value = false
110
- emit('search')
111
- }
112
- const reset = () => {
113
- emit('reset')
114
- }
115
- const visible = ref(false)
116
- const buttonRef = ref()
117
- const popoverRef = ref()
118
- const props = defineProps({
119
- /**
120
- * @type Object
121
- * @default {}
122
- * @description 样式对象
123
- */
124
- style: {
125
- type: Object,
126
- default: () => ({}),
127
- },
128
- /**
129
- * @type string
130
- * @default ''
131
- * @description 提示文字
132
- */
133
- tip: {
134
- type: String,
135
- default: '高级筛选',
136
- },
137
- /**
138
- * @type number
139
- * @default 400
140
- * @description 宽度
141
- */
142
- width: {
143
- type: Number,
144
- default: 350,
145
- },
146
- title: {
147
- type: String,
148
- default: '高级筛选',
149
- },
150
- modelValue: {
151
- type: String,
152
- default: 'adtec-filter',
153
- },
154
- /**
155
- * @type {'small'|'default'|'large'}
156
- * @default 'default'
157
- * @description 图标大小
158
- */
159
- size: {
160
- type: String,
161
- default: 'default',
162
- // 注意:在`<script setup>`中,直接使用函数进行验证,JSDoc辅助IDE提示
163
- validator: (value: string) => ['large', 'default', 'small'].includes(value),
164
- },
165
- /**
166
- * @type {"default" | "success" | "warning" | "info" | "primary" | "danger"}
167
- * @default 'default'
168
- * @description 图标类型
169
- */
170
- type: {
171
- type: String,
172
- default: 'default',
173
- validator: (value: string) =>
174
- ['default', 'success', 'warning', 'info', 'primary', 'danger'].includes(value),
175
- },
176
- /**
177
- * @type {"icon" | "button"}
178
- * @default 'icon'
179
- * @description 元素类型
180
- */
181
- elementType: {
182
- type: String,
183
- default: 'icon',
184
- },
185
- disabled: {
186
- type: Boolean,
187
- default: false,
188
- },
189
- })
190
-
191
- const getClass = computed(() => {
192
- let className = 'icon-btn--' + props.type
193
- if (props.disabled) {
194
- className += ' icon-btn--disabled'
195
- }
196
- className += ' icon-btn--size-' + props.size
197
- return className
198
- })
199
- const emit = defineEmits(['update:modelValue', 'click', 'search', 'reset'])
200
- const iconName = useVModel(props, 'modelValue', emit)
201
-
202
- const selcomp = computed(() => {
203
- if (iconName.value?.includes('adtec')) {
204
- return true
205
- } else {
206
- return false
207
- }
208
- })
209
- </script>
210
- <style scoped lang="scss">
211
- .icon-btn {
212
- margin-right: 5px;
213
- cursor: pointer;
214
- --el-button-hover-bg-color: var(--el-color-primary-light-3);
215
- &:hover {
216
- color: var(--el-button-hover-bg-color);
217
- }
218
- &--disabled {
219
- color: var(--el-color-disabled-text-color);
220
- cursor: not-allowed !important;
221
- }
222
- &--size-large {
223
- font-size: var(--el-font-size-large);
224
- }
225
- &--size-default {
226
- font-size: var(--el-font-size-base);
227
- }
228
- &--size-small {
229
- font-size: var(--el-font-size-small);
230
- }
231
- @each $type in (primary, success, warning, danger, info) {
232
- &--#{$type} {
233
- --el-button-hover-bg-color: var(--el-color-#{$type}-light-3);
234
- --el-button-disabled-bg-color: var(--el-color-#{$type}-light-5);
235
- color: var(--el-color-#{$type});
236
- }
237
- }
238
- }
239
- </style>
1
+ <!--创建人 丁盼-->
2
+ <!--说明: ELIconSearch-->
3
+ <!--创建时间: 2024/11/25 上午10:17-->
4
+ <!--修改时间: 2024/11/25 上午10:17-->
5
+ <template>
6
+ <el-popover
7
+ :popper-options="{
8
+ modifiers: [
9
+ {
10
+ name: 'offset',
11
+ options: {
12
+ offset: elementType === 'button' ? [0 - 15, 20] : [0 - 15, 12],
13
+ },
14
+ },
15
+ ],
16
+ }"
17
+ @hide="visible = false"
18
+ :popper-style="{ paddingTop: 0 }"
19
+ ref="popoverRef"
20
+ :virtual-ref="buttonRef"
21
+ placement="right-end"
22
+ :width="width"
23
+ trigger="click"
24
+ :teleported="false"
25
+ :visible="visible"
26
+ >
27
+ <template #reference>
28
+ <el-tooltip :content="tip" placement="top" style="cursor: pointer">
29
+ <el-button v-if="elementType === 'button'" style="padding: 8px 10px; margin-left: 4px" @click="iconClick">
30
+ <el-icon
31
+ ref="buttonRef"
32
+ :model-value="iconName"
33
+ :style="style"
34
+ :tip="tip"
35
+
36
+ :class="getClass"
37
+ >
38
+ <svg v-if="selcomp" aria-hidden="true">
39
+ <use :href="'#' + iconName"></use>
40
+ </svg>
41
+ <component v-else :is="iconName"></component>
42
+ </el-icon>
43
+ </el-button>
44
+ <el-icon
45
+ ref="buttonRef"
46
+ v-else
47
+ :model-value="iconName"
48
+ :style="style"
49
+ :tip="tip"
50
+ @click="iconClick"
51
+ class="icon-btn"
52
+ :class="getClass"
53
+ >
54
+ <svg v-if="selcomp" class="icon" aria-hidden="true">
55
+ <use :href="'#' + iconName"></use>
56
+ </svg>
57
+ <component v-else :is="iconName"></component>
58
+ </el-icon>
59
+ </el-tooltip>
60
+ </template>
61
+ <el-flex :vertical="true" @keypress="keypress">
62
+ <el-flex
63
+ height="45px"
64
+ style="border-bottom: var(--border); margin-bottom: 10px"
65
+ align="center"
66
+ >
67
+ <el-flex>
68
+ <el-text style="font-size: 16px">{{ title }}</el-text>
69
+ </el-flex>
70
+ <el-flex align="center" justify="flex-end">
71
+ <el-icons
72
+ model-value="Close"
73
+ style="font-size: 16px; cursor: pointer"
74
+ @click="visible = false"
75
+ ></el-icons>
76
+ </el-flex>
77
+ </el-flex>
78
+ <slot></slot>
79
+ <el-flex align="flex-end" justify="flex-end" height="40px" style="border-top: var(--border)">
80
+ <el-button @click="reset">重置</el-button>
81
+ <el-button type="primary" @click="search">查询</el-button>
82
+ </el-flex>
83
+ </el-flex>
84
+ </el-popover>
85
+ </template>
86
+ <script setup lang="ts">
87
+ // 定义Props类型
88
+ import { useMousePressed, useVModel } from '@vueuse/core'
89
+ import { computed, ref, unref, watch } from 'vue'
90
+ const { pressed } = useMousePressed()
91
+ const iconClick = () => {
92
+ unref(popoverRef).popperRef?.delayHide?.()
93
+ visible.value = !visible.value
94
+ }
95
+ watch(pressed, () => {
96
+ if (pressed.value) {
97
+ //@ts-ignore
98
+ if (!hasParentWithStyle(event.target, 'el-popper')) {
99
+ visible.value = false
100
+ }
101
+ }
102
+ })
103
+ function hasParentWithStyle(element: any, styleSelector: string) {
104
+ let currentElement = element.parentNode
105
+ let i = 0
106
+ while (currentElement && i < 15) {
107
+ if (currentElement?.tagName !== 'BODY') {
108
+ if (currentElement.className?.indexOf(styleSelector) > -1) {
109
+ return true
110
+ }
111
+ currentElement = currentElement.parentNode
112
+ i++
113
+ } else {
114
+ return false
115
+ }
116
+ }
117
+ return false
118
+ }
119
+ const keypress = (e: KeyboardEvent) => {
120
+ if (e.key === 'Enter') {
121
+ visible.value = false
122
+ setTimeout(() => {
123
+ emit('search')
124
+ }, 200)
125
+ }
126
+ }
127
+ const search = () => {
128
+ visible.value = false
129
+ setTimeout(() => {
130
+ emit('search')
131
+ }, 200)
132
+ }
133
+ const reset = () => {
134
+ emit('reset')
135
+ }
136
+ const visible = ref(false)
137
+ const buttonRef = ref()
138
+ const popoverRef = ref()
139
+ const props = defineProps({
140
+ /**
141
+ * @type Object
142
+ * @default {}
143
+ * @description 样式对象
144
+ */
145
+ style: {
146
+ type: Object,
147
+ default: () => ({}),
148
+ },
149
+ /**
150
+ * @type string
151
+ * @default ''
152
+ * @description 提示文字
153
+ */
154
+ tip: {
155
+ type: String,
156
+ default: '高级筛选',
157
+ },
158
+ /**
159
+ * @type number
160
+ * @default 400
161
+ * @description 宽度
162
+ */
163
+ width: {
164
+ type: Number,
165
+ default: 350,
166
+ },
167
+ title: {
168
+ type: String,
169
+ default: '高级筛选',
170
+ },
171
+ modelValue: {
172
+ type: String,
173
+ default: 'adtec-filter',
174
+ },
175
+ /**
176
+ * @type {'small'|'default'|'large'}
177
+ * @default 'default'
178
+ * @description 图标大小
179
+ */
180
+ size: {
181
+ type: String,
182
+ default: 'default',
183
+ // 注意:在`<script setup>`中,直接使用函数进行验证,JSDoc辅助IDE提示
184
+ validator: (value: string) => ['large', 'default', 'small'].includes(value),
185
+ },
186
+ /**
187
+ * @type {"default" | "success" | "warning" | "info" | "primary" | "danger"}
188
+ * @default 'default'
189
+ * @description 图标类型
190
+ */
191
+ type: {
192
+ type: String,
193
+ default: 'default',
194
+ validator: (value: string) =>
195
+ ['default', 'success', 'warning', 'info', 'primary', 'danger'].includes(value),
196
+ },
197
+ /**
198
+ * @type {"icon" | "button"}
199
+ * @default 'icon'
200
+ * @description 元素类型
201
+ */
202
+ elementType: {
203
+ type: String,
204
+ default: 'icon',
205
+ },
206
+ disabled: {
207
+ type: Boolean,
208
+ default: false,
209
+ },
210
+ })
211
+
212
+ const getClass = computed(() => {
213
+ let className = 'icon-btn--' + props.type
214
+ if (props.disabled) {
215
+ className += ' icon-btn--disabled'
216
+ }
217
+ className += ' icon-btn--size-' + props.size
218
+ return className
219
+ })
220
+ const emit = defineEmits(['update:modelValue', 'click', 'search', 'reset'])
221
+ const iconName = useVModel(props, 'modelValue', emit)
222
+
223
+ const selcomp = computed(() => {
224
+ if (iconName.value?.includes('adtec')) {
225
+ return true
226
+ } else {
227
+ return false
228
+ }
229
+ })
230
+ </script>
231
+ <style scoped lang="scss">
232
+ .icon-btn {
233
+ margin-right: 5px;
234
+ cursor: pointer;
235
+ --el-button-hover-bg-color: var(--el-color-primary-light-3);
236
+ &:hover {
237
+ color: var(--el-button-hover-bg-color);
238
+ }
239
+ &--disabled {
240
+ color: var(--el-color-disabled-text-color);
241
+ cursor: not-allowed !important;
242
+ }
243
+ &--size-large {
244
+ font-size: var(--el-font-size-large);
245
+ }
246
+ &--size-default {
247
+ font-size: var(--el-font-size-base);
248
+ }
249
+ &--size-small {
250
+ font-size: var(--el-font-size-small);
251
+ }
252
+ @each $type in (primary, success, warning, danger, info) {
253
+ &--#{$type} {
254
+ --el-button-hover-bg-color: var(--el-color-#{$type}-light-3);
255
+ --el-button-disabled-bg-color: var(--el-color-#{$type}-light-5);
256
+ color: var(--el-color-#{$type});
257
+ }
258
+ }
259
+ }
260
+ </style>