adtec-core-package 0.2.2 → 0.2.4

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 (156) hide show
  1. package/.editorconfig +6 -6
  2. package/.prettierrc.json +7 -7
  3. package/.vscode/extensions.json +8 -8
  4. package/README.md +39 -39
  5. package/env.d.ts +1 -1
  6. package/eslint.config.js +56 -56
  7. package/index.html +13 -13
  8. package/package.json +56 -56
  9. package/src/App.vue +9 -9
  10. package/src/assets/base.css +86 -86
  11. package/src/assets/logo.svg +1 -1
  12. package/src/assets/main.css +35 -35
  13. package/src/assets/style/transition.scss +49 -49
  14. package/src/components/OperationAuth/operationAuth.vue +26 -26
  15. package/src/components/Search/ElIconSearch.vue +239 -239
  16. package/src/components/Search/ElSearch.vue +132 -132
  17. package/src/components/icon/ElIconBtn.vue +182 -182
  18. package/src/components/icon/ElIcons.vue +38 -38
  19. package/src/components/upload/ElUploads.vue +279 -279
  20. package/src/css/elementUI/affix.scss +7 -7
  21. package/src/css/elementUI/alert.scss +115 -115
  22. package/src/css/elementUI/anchor-link.scss +41 -41
  23. package/src/css/elementUI/anchor.scss +88 -88
  24. package/src/css/elementUI/aside.scss +8 -8
  25. package/src/css/elementUI/avatar.scss +55 -55
  26. package/src/css/elementUI/backtop.scss +29 -29
  27. package/src/css/elementUI/badge.scss +58 -58
  28. package/src/css/elementUI/base.scss +3 -3
  29. package/src/css/elementUI/breadcrumb.scss +62 -62
  30. package/src/css/elementUI/button-group.scss +80 -80
  31. package/src/css/elementUI/button.scss +304 -304
  32. package/src/css/elementUI/calendar.scss +80 -80
  33. package/src/css/elementUI/card.scss +45 -45
  34. package/src/css/elementUI/carousel-item.scss +58 -58
  35. package/src/css/elementUI/carousel.scss +188 -188
  36. package/src/css/elementUI/cascader-panel.scss +138 -138
  37. package/src/css/elementUI/cascader.scss +230 -230
  38. package/src/css/elementUI/check-tag.scss +60 -60
  39. package/src/css/elementUI/checkbox-button.scss +140 -140
  40. package/src/css/elementUI/checkbox-group.scss +7 -7
  41. package/src/css/elementUI/checkbox.scss +298 -298
  42. package/src/css/elementUI/col.scss +48 -48
  43. package/src/css/elementUI/collapse.scss +70 -70
  44. package/src/css/elementUI/color/index.scss +20 -20
  45. package/src/css/elementUI/color-picker.scss +392 -392
  46. package/src/css/elementUI/common/popup.scss +47 -47
  47. package/src/css/elementUI/common/transition.scss +122 -122
  48. package/src/css/elementUI/container.scss +14 -14
  49. package/src/css/elementUI/dark/css-vars.scss +39 -39
  50. package/src/css/elementUI/dark/var.scss +222 -222
  51. package/src/css/elementUI/date-picker/date-picker.scss +110 -110
  52. package/src/css/elementUI/date-picker/date-range-picker.scss +113 -113
  53. package/src/css/elementUI/date-picker/date-table.scss +158 -158
  54. package/src/css/elementUI/date-picker/month-table.scss +112 -112
  55. package/src/css/elementUI/date-picker/picker-panel.scss +131 -131
  56. package/src/css/elementUI/date-picker/time-picker.scss +90 -90
  57. package/src/css/elementUI/date-picker/time-range-picker.scss +33 -33
  58. package/src/css/elementUI/date-picker/time-spinner.scss +111 -111
  59. package/src/css/elementUI/date-picker/year-table.scss +108 -108
  60. package/src/css/elementUI/date-picker.scss +9 -9
  61. package/src/css/elementUI/descriptions-item.scss +73 -73
  62. package/src/css/elementUI/descriptions.scss +152 -152
  63. package/src/css/elementUI/dialog.scss +199 -199
  64. package/src/css/elementUI/display.scss +12 -12
  65. package/src/css/elementUI/divider.scss +48 -48
  66. package/src/css/elementUI/dropdown.scss +208 -208
  67. package/src/css/elementUI/empty.scss +49 -49
  68. package/src/css/elementUI/footer.scss +12 -12
  69. package/src/css/elementUI/form.scss +243 -243
  70. package/src/css/elementUI/header.scss +12 -12
  71. package/src/css/elementUI/icon.scss +45 -45
  72. package/src/css/elementUI/image-viewer.scss +139 -139
  73. package/src/css/elementUI/image.scss +49 -49
  74. package/src/css/elementUI/index.scss +110 -110
  75. package/src/css/elementUI/input-number.scss +178 -178
  76. package/src/css/elementUI/input.scss +478 -478
  77. package/src/css/elementUI/link.scss +90 -90
  78. package/src/css/elementUI/loading.scss +104 -104
  79. package/src/css/elementUI/main.scss +14 -14
  80. package/src/css/elementUI/mention.scss +88 -88
  81. package/src/css/elementUI/menu.scss +339 -339
  82. package/src/css/elementUI/message-box.scss +213 -213
  83. package/src/css/elementUI/message.scss +98 -98
  84. package/src/css/elementUI/mixins/_button.scss +165 -165
  85. package/src/css/elementUI/mixins/_col.scss +33 -33
  86. package/src/css/elementUI/mixins/_var.scss +67 -67
  87. package/src/css/elementUI/mixins/config.scss +5 -5
  88. package/src/css/elementUI/mixins/function.scss +88 -88
  89. package/src/css/elementUI/mixins/mixins.scss +237 -237
  90. package/src/css/elementUI/mixins/utils.scss +39 -39
  91. package/src/css/elementUI/notification.scss +104 -104
  92. package/src/css/elementUI/option-group.scss +33 -33
  93. package/src/css/elementUI/option.scss +71 -71
  94. package/src/css/elementUI/overlay.scss +17 -17
  95. package/src/css/elementUI/page-header.scss +60 -60
  96. package/src/css/elementUI/pagination.scss +238 -238
  97. package/src/css/elementUI/popconfirm.scss +16 -16
  98. package/src/css/elementUI/popover.scss +61 -61
  99. package/src/css/elementUI/popper.scss +106 -106
  100. package/src/css/elementUI/progress.scss +179 -179
  101. package/src/css/elementUI/radio-button.scss +169 -169
  102. package/src/css/elementUI/radio-group.scss +9 -9
  103. package/src/css/elementUI/radio.scss +215 -215
  104. package/src/css/elementUI/rate.scss +108 -108
  105. package/src/css/elementUI/reset.scss +98 -98
  106. package/src/css/elementUI/result.scss +57 -57
  107. package/src/css/elementUI/row.scss +35 -35
  108. package/src/css/elementUI/scrollbar.scss +97 -97
  109. package/src/css/elementUI/segmented.scss +183 -183
  110. package/src/css/elementUI/select-dropdown-v2.scss +1 -1
  111. package/src/css/elementUI/select-dropdown.scss +57 -57
  112. package/src/css/elementUI/select-v2.scss +4 -4
  113. package/src/css/elementUI/select.scss +253 -253
  114. package/src/css/elementUI/skeleton-item.scss +83 -83
  115. package/src/css/elementUI/skeleton.scss +44 -44
  116. package/src/css/elementUI/slider.scss +212 -212
  117. package/src/css/elementUI/space.scss +20 -20
  118. package/src/css/elementUI/spinner.scss +43 -43
  119. package/src/css/elementUI/statistic.scss +35 -35
  120. package/src/css/elementUI/step.scss +316 -316
  121. package/src/css/elementUI/steps.scss +21 -21
  122. package/src/css/elementUI/switch.scss +300 -300
  123. package/src/css/elementUI/table-column.scss +98 -98
  124. package/src/css/elementUI/table-v2.scss +236 -236
  125. package/src/css/elementUI/tag.scss +181 -181
  126. package/src/css/elementUI/text.scss +51 -51
  127. package/src/css/elementUI/time-picker.scss +5 -5
  128. package/src/css/elementUI/time-select.scss +37 -37
  129. package/src/css/elementUI/timeline-item.scss +84 -84
  130. package/src/css/elementUI/timeline.scss +46 -46
  131. package/src/css/elementUI/tooltip-v2.scss +95 -95
  132. package/src/css/elementUI/tour.scss +187 -187
  133. package/src/css/elementUI/transfer.scss +203 -203
  134. package/src/css/elementUI/tree-select.scss +41 -41
  135. package/src/css/elementUI/tree.scss +134 -134
  136. package/src/css/elementUI/upload.scss +654 -654
  137. package/src/css/elementUI/var.scss +87 -87
  138. package/src/css/elementUI/virtual-list.scss +40 -40
  139. package/src/interface/enum/FlexEnum.ts +85 -85
  140. package/src/main.ts +14 -14
  141. package/src/mixin/globalMixin.ts +31 -33
  142. package/src/router/index.ts +23 -23
  143. package/src/utils/encrypt.ts +10 -10
  144. package/src/utils/request.ts +55 -55
  145. package/tsconfig.app.json +12 -12
  146. package/tsconfig.json +11 -11
  147. package/tsconfig.node.json +18 -18
  148. package/vite.config.ts +38 -38
  149. package/src/api/BasicApi.ts +0 -17
  150. package/src/api/SysUserApi.ts +0 -35
  151. package/src/components/business/userSelect.vue +0 -412
  152. package/src/hooks/useDictHooks.ts +0 -81
  153. package/src/interface/IMdmDept.ts +0 -82
  154. package/src/interface/IOrgDeptInfo.ts +0 -12
  155. package/src/interface/ISysUserInfo.ts +0 -70
  156. /package/src/components/autoToolTip/{ElAutoToolTip.vue → index.vue} +0 -0
@@ -1,49 +1,49 @@
1
- // global transition css
2
-
3
- /* fade */
4
- .fade-enter-active,
5
- .fade-leave-active {
6
- transition: opacity 0.28s;
7
- }
8
-
9
- .fade-enter,
10
- .fade-leave-active {
11
- opacity: 0;
12
- }
13
-
14
- /* fade-transform */
15
- .fade-transform--move,
16
- .fade-transform-leave-active,
17
- .fade-transform-enter-active {
18
- transition: all 0.5s;
19
- }
20
-
21
- .fade-transform-enter {
22
- opacity: 0;
23
- transform: translateX(-30px);
24
- }
25
-
26
- .fade-transform-leave-to {
27
- opacity: 0;
28
- transform: translateX(30px);
29
- }
30
-
31
- /* breadcrumb transition */
32
- .breadcrumb-enter-active,
33
- .breadcrumb-leave-active {
34
- transition: all 0.5s;
35
- }
36
-
37
- .breadcrumb-enter,
38
- .breadcrumb-leave-active {
39
- opacity: 0;
40
- transform: translateX(20px);
41
- }
42
-
43
- .breadcrumb-move {
44
- transition: all 0.5s;
45
- }
46
-
47
- .breadcrumb-leave-active {
48
- position: absolute;
49
- }
1
+ // global transition css
2
+
3
+ /* fade */
4
+ .fade-enter-active,
5
+ .fade-leave-active {
6
+ transition: opacity 0.28s;
7
+ }
8
+
9
+ .fade-enter,
10
+ .fade-leave-active {
11
+ opacity: 0;
12
+ }
13
+
14
+ /* fade-transform */
15
+ .fade-transform--move,
16
+ .fade-transform-leave-active,
17
+ .fade-transform-enter-active {
18
+ transition: all 0.5s;
19
+ }
20
+
21
+ .fade-transform-enter {
22
+ opacity: 0;
23
+ transform: translateX(-30px);
24
+ }
25
+
26
+ .fade-transform-leave-to {
27
+ opacity: 0;
28
+ transform: translateX(30px);
29
+ }
30
+
31
+ /* breadcrumb transition */
32
+ .breadcrumb-enter-active,
33
+ .breadcrumb-leave-active {
34
+ transition: all 0.5s;
35
+ }
36
+
37
+ .breadcrumb-enter,
38
+ .breadcrumb-leave-active {
39
+ opacity: 0;
40
+ transform: translateX(20px);
41
+ }
42
+
43
+ .breadcrumb-move {
44
+ transition: all 0.5s;
45
+ }
46
+
47
+ .breadcrumb-leave-active {
48
+ position: absolute;
49
+ }
@@ -1,26 +1,26 @@
1
- <!--创建人:丁盼-->
2
- <!--说明: 操作权限控制组件-->
3
- <!--创建时间: 2024/8/29 下午2:31-->
4
- <!--修改时间: 2024/8/29 下午2:31-->
5
- <template>
6
- <slot v-if="IsOperationAuth()"></slot>
7
- </template>
8
- <script setup lang="ts">
9
- import { useRoute } from 'vue-router'
10
- import type { ISysMenuInfoVo } from '../../interface/ISysMenuInfoVo.ts'
11
- const route = useRoute()
12
-
13
- const IsOperationAuth = () => {
14
- const data: ISysMenuInfoVo = route.meta.sysMenuData as ISysMenuInfoVo
15
- const o = data.operation.find((c) => c.code === props.operCode)
16
- if (o) {
17
- return true
18
- } else {
19
- return false
20
- }
21
- }
22
- const props = defineProps<{
23
- operCode: string
24
- }>()
25
- </script>
26
- <style scoped lang="scss"></style>
1
+ <!--创建人:丁盼-->
2
+ <!--说明: 操作权限控制组件-->
3
+ <!--创建时间: 2024/8/29 下午2:31-->
4
+ <!--修改时间: 2024/8/29 下午2:31-->
5
+ <template>
6
+ <slot v-if="IsOperationAuth()"></slot>
7
+ </template>
8
+ <script setup lang="ts">
9
+ import { useRoute } from 'vue-router'
10
+ import type { ISysMenuInfoVo } from '../../interface/ISysMenuInfoVo.ts'
11
+ const route = useRoute()
12
+
13
+ const IsOperationAuth = () => {
14
+ const data: ISysMenuInfoVo = route.meta.sysMenuData as ISysMenuInfoVo
15
+ const o = data.operation.find((c) => c.code === props.operCode)
16
+ if (o) {
17
+ return true
18
+ } else {
19
+ return false
20
+ }
21
+ }
22
+ const props = defineProps<{
23
+ operCode: string
24
+ }>()
25
+ </script>
26
+ <style scoped lang="scss"></style>
@@ -1,239 +1,239 @@
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">
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>