adtec-core-package 0.0.2 → 0.0.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 (164) hide show
  1. package/package.json +10 -4
  2. package/src/App.vue +0 -3
  3. package/src/assets/base.css +0 -86
  4. package/src/assets/main.css +0 -35
  5. package/src/components/ElFlex/ElFlex.vue +297 -0
  6. package/src/components/OperationAuth/operationAuth.vue +26 -0
  7. package/src/components/Search/ElIconSearch.vue +239 -0
  8. package/src/components/Search/ElSearch.vue +132 -0
  9. package/src/components/Title/ElTitle.vue +49 -0
  10. package/src/components/icon/ElIconBtn.vue +182 -0
  11. package/src/components/icon/ElIcons.vue +38 -0
  12. package/src/config/ElementPlusConfig.ts +95 -0
  13. package/src/css/elementUI/affix.scss +7 -0
  14. package/src/css/elementUI/alert.scss +115 -0
  15. package/src/css/elementUI/anchor-link.scss +41 -0
  16. package/src/css/elementUI/anchor.scss +88 -0
  17. package/src/css/elementUI/aside.scss +8 -0
  18. package/src/css/elementUI/autocomplete.scss +89 -0
  19. package/src/css/elementUI/avatar.scss +55 -0
  20. package/src/css/elementUI/backtop.scss +29 -0
  21. package/src/css/elementUI/badge.scss +58 -0
  22. package/src/css/elementUI/base.scss +3 -0
  23. package/src/css/elementUI/breadcrumb-item.scss +0 -0
  24. package/src/css/elementUI/breadcrumb.scss +62 -0
  25. package/src/css/elementUI/button-group.scss +80 -0
  26. package/src/css/elementUI/button.scss +304 -0
  27. package/src/css/elementUI/calendar.scss +80 -0
  28. package/src/css/elementUI/card.scss +45 -0
  29. package/src/css/elementUI/carousel-item.scss +58 -0
  30. package/src/css/elementUI/carousel.scss +188 -0
  31. package/src/css/elementUI/cascader-panel.scss +138 -0
  32. package/src/css/elementUI/cascader.scss +230 -0
  33. package/src/css/elementUI/check-tag.scss +60 -0
  34. package/src/css/elementUI/checkbox-button.scss +140 -0
  35. package/src/css/elementUI/checkbox-group.scss +7 -0
  36. package/src/css/elementUI/checkbox.scss +298 -0
  37. package/src/css/elementUI/col.scss +48 -0
  38. package/src/css/elementUI/collapse-item.scss +0 -0
  39. package/src/css/elementUI/collapse-transition.scss +0 -0
  40. package/src/css/elementUI/collapse.scss +70 -0
  41. package/src/css/elementUI/color/index.scss +20 -0
  42. package/src/css/elementUI/color-picker.scss +392 -0
  43. package/src/css/elementUI/common/popup.scss +47 -0
  44. package/src/css/elementUI/common/transition.scss +122 -0
  45. package/src/css/elementUI/common/var.scss +1549 -0
  46. package/src/css/elementUI/config-provider.scss +0 -0
  47. package/src/css/elementUI/container.scss +14 -0
  48. package/src/css/elementUI/dark/css-vars.scss +39 -0
  49. package/src/css/elementUI/dark/var.scss +222 -0
  50. package/src/css/elementUI/date-picker/date-picker.scss +110 -0
  51. package/src/css/elementUI/date-picker/date-range-picker.scss +113 -0
  52. package/src/css/elementUI/date-picker/date-table.scss +158 -0
  53. package/src/css/elementUI/date-picker/month-table.scss +112 -0
  54. package/src/css/elementUI/date-picker/picker-panel.scss +131 -0
  55. package/src/css/elementUI/date-picker/picker.scss +219 -0
  56. package/src/css/elementUI/date-picker/time-picker.scss +90 -0
  57. package/src/css/elementUI/date-picker/time-range-picker.scss +33 -0
  58. package/src/css/elementUI/date-picker/time-spinner.scss +111 -0
  59. package/src/css/elementUI/date-picker/year-table.scss +108 -0
  60. package/src/css/elementUI/date-picker.scss +9 -0
  61. package/src/css/elementUI/descriptions-item.scss +73 -0
  62. package/src/css/elementUI/descriptions.scss +152 -0
  63. package/src/css/elementUI/dialog.scss +199 -0
  64. package/src/css/elementUI/display.scss +12 -0
  65. package/src/css/elementUI/divider.scss +48 -0
  66. package/src/css/elementUI/drawer.scss +164 -0
  67. package/src/css/elementUI/dropdown-item.scss +0 -0
  68. package/src/css/elementUI/dropdown-menu.scss +0 -0
  69. package/src/css/elementUI/dropdown.scss +208 -0
  70. package/src/css/elementUI/empty.scss +49 -0
  71. package/src/css/elementUI/footer.scss +12 -0
  72. package/src/css/elementUI/form-item.scss +0 -0
  73. package/src/css/elementUI/form.scss +243 -0
  74. package/src/css/elementUI/header.scss +12 -0
  75. package/src/css/elementUI/icon.scss +45 -0
  76. package/src/css/elementUI/image-viewer.scss +139 -0
  77. package/src/css/elementUI/image.scss +49 -0
  78. package/src/css/elementUI/index.scss +110 -0
  79. package/src/css/elementUI/infinite-scroll.scss +0 -0
  80. package/src/css/elementUI/input-number.scss +178 -0
  81. package/src/css/elementUI/input.scss +478 -0
  82. package/src/css/elementUI/link.scss +90 -0
  83. package/src/css/elementUI/loading.scss +104 -0
  84. package/src/css/elementUI/main.scss +14 -0
  85. package/src/css/elementUI/mention.scss +88 -0
  86. package/src/css/elementUI/menu-item-group.scss +0 -0
  87. package/src/css/elementUI/menu-item.scss +0 -0
  88. package/src/css/elementUI/menu.scss +339 -0
  89. package/src/css/elementUI/message-box.scss +213 -0
  90. package/src/css/elementUI/message.scss +98 -0
  91. package/src/css/elementUI/mixins/_button.scss +165 -0
  92. package/src/css/elementUI/mixins/_col.scss +33 -0
  93. package/src/css/elementUI/mixins/_var.scss +67 -0
  94. package/src/css/elementUI/mixins/config.scss +5 -0
  95. package/src/css/elementUI/mixins/function.scss +88 -0
  96. package/src/css/elementUI/mixins/mixins.scss +237 -0
  97. package/src/css/elementUI/mixins/utils.scss +39 -0
  98. package/src/css/elementUI/notification.scss +104 -0
  99. package/src/css/elementUI/option-group.scss +33 -0
  100. package/src/css/elementUI/option.scss +71 -0
  101. package/src/css/elementUI/overlay.scss +17 -0
  102. package/src/css/elementUI/page-header.scss +60 -0
  103. package/src/css/elementUI/pagination.scss +238 -0
  104. package/src/css/elementUI/popconfirm.scss +16 -0
  105. package/src/css/elementUI/popover.scss +61 -0
  106. package/src/css/elementUI/popper.scss +106 -0
  107. package/src/css/elementUI/progress.scss +179 -0
  108. package/src/css/elementUI/radio-button.scss +169 -0
  109. package/src/css/elementUI/radio-group.scss +9 -0
  110. package/src/css/elementUI/radio.scss +215 -0
  111. package/src/css/elementUI/rate.scss +108 -0
  112. package/src/css/elementUI/reset.scss +98 -0
  113. package/src/css/elementUI/result.scss +57 -0
  114. package/src/css/elementUI/row.scss +35 -0
  115. package/src/css/elementUI/scrollbar.scss +97 -0
  116. package/src/css/elementUI/segmented.scss +183 -0
  117. package/src/css/elementUI/select-dropdown-v2.scss +1 -0
  118. package/src/css/elementUI/select-dropdown.scss +57 -0
  119. package/src/css/elementUI/select-v2.scss +4 -0
  120. package/src/css/elementUI/select.scss +253 -0
  121. package/src/css/elementUI/skeleton-item.scss +83 -0
  122. package/src/css/elementUI/skeleton.scss +44 -0
  123. package/src/css/elementUI/slider.scss +212 -0
  124. package/src/css/elementUI/space.scss +20 -0
  125. package/src/css/elementUI/spinner.scss +43 -0
  126. package/src/css/elementUI/statistic.scss +35 -0
  127. package/src/css/elementUI/step.scss +316 -0
  128. package/src/css/elementUI/steps.scss +21 -0
  129. package/src/css/elementUI/sub-menu.scss +0 -0
  130. package/src/css/elementUI/switch.scss +300 -0
  131. package/src/css/elementUI/tab-pane.scss +0 -0
  132. package/src/css/elementUI/table-column.scss +98 -0
  133. package/src/css/elementUI/table-v2.scss +236 -0
  134. package/src/css/elementUI/table.scss +694 -0
  135. package/src/css/elementUI/tabs.scss +659 -0
  136. package/src/css/elementUI/tag.scss +181 -0
  137. package/src/css/elementUI/text.scss +51 -0
  138. package/src/css/elementUI/time-picker.scss +5 -0
  139. package/src/css/elementUI/time-select.scss +37 -0
  140. package/src/css/elementUI/timeline-item.scss +84 -0
  141. package/src/css/elementUI/timeline.scss +46 -0
  142. package/src/css/elementUI/tooltip-v2.scss +95 -0
  143. package/src/css/elementUI/tooltip.scss +0 -0
  144. package/src/css/elementUI/tour.scss +187 -0
  145. package/src/css/elementUI/transfer.scss +203 -0
  146. package/src/css/elementUI/tree-select.scss +41 -0
  147. package/src/css/elementUI/tree.scss +134 -0
  148. package/src/css/elementUI/upload.scss +654 -0
  149. package/src/css/elementUI/var.scss +87 -0
  150. package/src/css/elementUI/virtual-list.scss +40 -0
  151. package/src/interface/ISysMenuDataVo.ts +22 -0
  152. package/src/interface/ISysMenuInfoVo.ts +83 -0
  153. package/src/interface/ISysMenuOperationVo.ts +21 -0
  154. package/src/interface/enum/FlexEnum.ts +85 -0
  155. package/src/views/HomeView.vue +2 -2
  156. package/vite.config.ts +2 -9
  157. package/src/components/HelloWorld.vue +0 -41
  158. package/src/components/TheWelcome.vue +0 -94
  159. package/src/components/WelcomeItem.vue +0 -87
  160. package/src/components/icons/IconCommunity.vue +0 -7
  161. package/src/components/icons/IconDocumentation.vue +0 -7
  162. package/src/components/icons/IconEcosystem.vue +0 -7
  163. package/src/components/icons/IconSupport.vue +0 -7
  164. package/src/components/icons/IconTooling.vue +0 -19
@@ -0,0 +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="alignItemsEnum.center"
66
+ >
67
+ <el-flex>
68
+ <el-text style="font-size: 16px">{{ title }}</el-text>
69
+ </el-flex>
70
+ <el-flex :align="alignItemsEnum.center" :justify="justifyContentEnum.flexEnd">
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="alignItemsEnum.flexEnd"
81
+ :justify="justifyContentEnum.flexEnd"
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 { alignItemsEnum, justifyContentEnum } from '@/interface/enum/FlexEnum'
96
+ import ElFlex from '@/components/ElFlex/ElFlex.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>
@@ -0,0 +1,132 @@
1
+ <template>
2
+ <el-flex
3
+ @keypress="keypress"
4
+ :height="height"
5
+ style="background: #ffffff; /*border-radius: 4px;*/ padding: 15px 10px 15px 15px;"
6
+ >
7
+ <el-flex style="overflow: hidden">
8
+ <div ref="ref_content" style="width: 100%; overflow: hidden" :style="{ height: height }">
9
+ <div ref="ref_div">
10
+ <slot></slot>
11
+ </div>
12
+ </div>
13
+ </el-flex>
14
+
15
+ <el-flex
16
+ width="240px"
17
+ justify="flex-end"
18
+ align="flex-start"
19
+ style="padding-top: 30px"
20
+ >
21
+ <el-button @click="reset">重置</el-button>
22
+ <el-button type="primary" @click="search" :class="getRouteName + '_search'">查询</el-button>
23
+ <el-button type="text" @click="retract" v-show="is_retract">
24
+ <el-icon
25
+ ><ArrowDown v-show="retractval === '展开'" /><ArrowUp
26
+ v-show="retractval === '收起'" /></el-icon
27
+ >{{ retractval }}</el-button
28
+ >
29
+ </el-flex>
30
+ </el-flex>
31
+ </template>
32
+ <script setup lang="ts">
33
+ import { computed, inject, nextTick, onMounted, ref, watch } from 'vue'
34
+ import { useWindowSize } from '@vueuse/core'
35
+ import { useRouter } from 'vue-router'
36
+ import ElFlex from '@/components/ElFlex/ElFlex.vue'
37
+ import { ArrowDown, ArrowUp } from '@element-plus/icons-vue'
38
+
39
+ const router = useRouter()
40
+ const getRouteName = computed(() => {
41
+ return router.currentRoute.value.name as string
42
+ })
43
+ const ref_content = ref()
44
+ const retractval = ref('展开')
45
+ const height = ref('95px')
46
+ const is_retract = ref(false)
47
+ const ref_div = ref()
48
+ const windowContent = useWindowSize()
49
+ const collapsed = inject<boolean>('collapsed')
50
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
51
+ //@ts-expect-error
52
+ watch(collapsed, () => {
53
+ calculation()
54
+ })
55
+ watch(windowContent.width, () => {
56
+ calculation()
57
+ })
58
+ const calculation = () => {
59
+ setTimeout(() => {
60
+ if (!(ref_div.value.offsetHeight > 95)) {
61
+ if (ref_div.value.offsetHeight !== 0) {
62
+ is_retract.value = false
63
+ height.value = ref_div.value.offsetHeight + 15 + 'px'
64
+ retractval.value = '收起'
65
+ } else {
66
+ calculation()
67
+ }
68
+ } else {
69
+ is_retract.value = true
70
+ height.value = '95px'
71
+ retractval.value = '展开'
72
+ }
73
+ }, 100)
74
+ }
75
+ watch(windowContent.height, () => {
76
+ calculation()
77
+ })
78
+ const retract = () => {
79
+ if (height.value === '95px') {
80
+ height.value = ref_content.value.children[0].scrollHeight + 15 + 'px'
81
+ retractval.value = '收起'
82
+ } else {
83
+ height.value = '95px'
84
+ retractval.value = '展开'
85
+ }
86
+ }
87
+ const reset = () => {
88
+ emit('reset')
89
+ }
90
+ const search = () => {
91
+ emit('search')
92
+ }
93
+ const keypress = () => {
94
+ // if (e.key === 'Enter') {
95
+ // emit('search')
96
+ // }
97
+ }
98
+ const emit = defineEmits<{
99
+ (event: 'reset'): void
100
+ (event: 'search'): void
101
+ }>()
102
+ onMounted(() => {
103
+ nextTick(() => {
104
+ if (!(ref_content.value.children[0].scrollHeight > 95)) {
105
+ is_retract.value = false
106
+ height.value = ref_content.value.children[0].scrollHeight + 15 + 'px'
107
+ retractval.value = '收起'
108
+ } else {
109
+ is_retract.value = true
110
+ height.value = '95px'
111
+ retractval.value = '展开'
112
+ }
113
+ })
114
+ })
115
+
116
+ // onKeyStroke(['d', 'D', 'ArrowRight'], () => {
117
+ // translateX.value += 10
118
+ // }, { dedupe: true })
119
+ </script>
120
+ <style scoped lang="scss">
121
+ .elementSelect {
122
+ border: 2px dashed #1a67f8 !important;
123
+ }
124
+
125
+ .demo-form-inline .el-input {
126
+ --el-input-width: 220px;
127
+ }
128
+
129
+ .demo-form-inline .el-select {
130
+ --el-select-width: 220px;
131
+ }
132
+ </style>
@@ -0,0 +1,49 @@
1
+ <!--创建人 丁盼-->
2
+ <!--说明: ElTitle-->
3
+ <!--创建时间: 2024/10/26 下午7:08-->
4
+ <!--修改时间: 2024/10/26 下午7:08-->
5
+ <template>
6
+ <el-flex align="center" height="44px" style="background: #ffffff">
7
+ <el-flex align="center">
8
+ <template v-if="level + '' === '0'">
9
+ <el-icons
10
+ model-value="adtec-titletag"
11
+ style="color: var(--el-color-primary); font-size: 16px"
12
+ ></el-icons>
13
+ <el-text style="font-size: 16px; line-height: 16px">{{ title }}</el-text>
14
+ </template>
15
+ <template v-if="level + '' === '1'">
16
+ <el-icons
17
+ model-value="adtec-contenttitle"
18
+ style="color: var(--el-color-primary); font-size: 16px"
19
+ ></el-icons>
20
+ <el-text style="font-size: 16px; line-height: 16px">{{ title }}</el-text>
21
+ </template>
22
+ <template v-if="level + '' === '2'">
23
+ <el-text style="font-size: 16px; line-height: 16px">{{ title }}</el-text>
24
+ </template>
25
+ </el-flex>
26
+ <slot></slot>
27
+ </el-flex>
28
+ </template>
29
+ <script setup lang="ts">
30
+ import ElIcons from '@/components/icon/ElIcons.vue'
31
+ import ElFlex from '@/components/ElFlex/ElFlex.vue'
32
+
33
+ defineProps({
34
+ /**
35
+ * @type string
36
+ * @default ''
37
+ * @description 提示文字
38
+ */
39
+ title: {
40
+ type: String,
41
+ default: '标题',
42
+ },
43
+ level: {
44
+ type: String,
45
+ default: '0',
46
+ },
47
+ })
48
+ </script>
49
+ <style scoped lang="scss"></style>
@@ -0,0 +1,182 @@
1
+ <!--创建人 丁盼-->
2
+ <!--说明: ElIconBtn-->
3
+ <!--创建时间: 2024/11/24 下午3:12-->
4
+ <!--修改时间: 2024/11/24 下午3:12-->
5
+ <template>
6
+ <el-button v-if="elementType === 'button'" style="padding: 8px 10px; margin-left: 4px">
7
+ <el-icon
8
+ ref="ref_icons"
9
+ @mouseenter="visible = true"
10
+ @mouseleave="visible = false"
11
+ class="icon-btn"
12
+ style="margin: 0"
13
+ :class="getClass"
14
+ >
15
+ <svg v-if="selcomp" class="icon" aria-hidden="true">
16
+ <use :href="'#' + iconName"></use>
17
+ </svg>
18
+ <component v-else :is="iconName"></component>
19
+ <el-tooltip
20
+ v-model:visible="visible"
21
+ v-if="tip"
22
+ :content="tip"
23
+ placement="top"
24
+ effect="light"
25
+ trigger="click"
26
+ virtual-triggering
27
+ :virtual-ref="ref_icons"
28
+ />
29
+ </el-icon>
30
+ </el-button>
31
+ <el-icon
32
+ v-else
33
+ ref="ref_icons"
34
+ @mouseenter="visible = true"
35
+ @mouseleave="visible = false"
36
+ class="icon-btn"
37
+ :class="getClass"
38
+ >
39
+ <svg v-if="selcomp" class="icon" aria-hidden="true">
40
+ <use :href="'#' + iconName"></use>
41
+ </svg>
42
+ <component v-else :is="iconName"></component>
43
+ <el-tooltip
44
+ v-model:visible="visible"
45
+ v-if="tip"
46
+ :content="tip"
47
+ placement="top"
48
+ effect="light"
49
+ trigger="click"
50
+ virtual-triggering
51
+ :virtual-ref="ref_icons"
52
+ />
53
+ </el-icon>
54
+ </template>
55
+ <script setup lang="ts">
56
+ import { useVModel } from '@vueuse/core'
57
+ import { computed, ref } from 'vue'
58
+ const visible = ref(false)
59
+ const ref_icons = ref()
60
+ const selcomp = computed(() => {
61
+ if (iconName.value?.includes('adtec')) {
62
+ return true
63
+ } else {
64
+ return false
65
+ }
66
+ })
67
+ /**
68
+ * 获取样式
69
+ */
70
+ const getClass = computed(() => {
71
+ let className = 'icon-btn--'
72
+ // + props.type
73
+ if (props.type !== 'default') {
74
+ className += props.type
75
+ } else {
76
+ if (iconName.value === 'adtec-plus') {
77
+ className += 'primary'
78
+ } else if (iconName.value === 'adtec-refresh') {
79
+ className += 'default'
80
+ } else if (iconName.value === 'adtec-delete') {
81
+ className += 'danger'
82
+ } else if (iconName.value === 'adtec-edit') {
83
+ className += 'warning'
84
+ }
85
+ }
86
+
87
+ if (props.disabled) {
88
+ className += ' icon-btn--disabled'
89
+ }
90
+ className += ' icon-btn--size-' + props.size
91
+ return className
92
+ })
93
+ // 定义Props类型
94
+ const props = defineProps({
95
+ /**
96
+ * @type string
97
+ * @default ''
98
+ * @description 提示文字
99
+ */
100
+ tip: {
101
+ type: String,
102
+ default: '',
103
+ },
104
+ /**
105
+ * @type {'adtec-plus'|'adtec-refresh'|'adtec-delete'|'adtec-edit'}
106
+ * @default 'default'
107
+ * @description 图标
108
+ */
109
+ modelValue: {
110
+ type: String,
111
+ default: '',
112
+ },
113
+ /**
114
+ * @type {'small'|'default'|'large'}
115
+ * @default 'default'
116
+ * @description 图标大小
117
+ */
118
+ size: {
119
+ type: String,
120
+ default: 'default',
121
+ // 注意:在`<script setup>`中,直接使用函数进行验证,JSDoc辅助IDE提示
122
+ validator: (value: string) => ['large', 'default', 'small'].includes(value),
123
+ },
124
+ /**
125
+ * @type {"default" | "success" | "warning" | "info" | "primary" | "danger"}
126
+ * @default 'default'
127
+ * @description 图标类型
128
+ */
129
+ type: {
130
+ type: String,
131
+ default: 'default',
132
+ validator: (value: string) =>
133
+ ['default', 'success', 'warning', 'info', 'primary', 'danger'].includes(value),
134
+ },
135
+ /**
136
+ * @type {"icon" | "button"}
137
+ * @default 'icon'
138
+ * @description 元素类型
139
+ */
140
+ elementType: {
141
+ type: String,
142
+ default: 'icon',
143
+ },
144
+ disabled: {
145
+ type: Boolean,
146
+ default: false,
147
+ },
148
+ })
149
+ const emit = defineEmits(['update:modelValue'])
150
+ const iconName = useVModel(props, 'modelValue', emit)
151
+ </script>
152
+ <style scoped lang="scss">
153
+ .icon-btn {
154
+ cursor: pointer;
155
+ margin: 0px 0px 0px 8px;
156
+ //margin-left: 5px;
157
+ --el-button-hover-bg-color: var(--el-color-primary-light-3);
158
+ &:hover {
159
+ color: var(--el-button-hover-bg-color);
160
+ }
161
+ &--disabled {
162
+ color: var(--el-color-disabled-text-color);
163
+ cursor: not-allowed !important;
164
+ }
165
+ &--size-large {
166
+ font-size: var(--el-font-size-large);
167
+ }
168
+ &--size-default {
169
+ font-size: var(--el-font-size-base);
170
+ }
171
+ &--size-small {
172
+ font-size: var(--el-font-size-small);
173
+ }
174
+ @each $type in (primary, success, warning, danger, info) {
175
+ &--#{$type} {
176
+ --el-button-hover-bg-color: var(--el-color-#{$type}-light-3);
177
+ --el-button-disabled-bg-color: var(--el-color-#{$type}-light-5);
178
+ color: var(--el-color-#{$type});
179
+ }
180
+ }
181
+ }
182
+ </style>
@@ -0,0 +1,38 @@
1
+ <!--创建人 丁盼-->
2
+ <!--说明: ElIcons-->
3
+ <!--创建时间: 2024/10/18 上午11:47-->
4
+ <!--修改时间: 2024/10/18 上午11:47-->
5
+ <template>
6
+ <!-- <span v-if="selcomp" class="adtec" :class="iconName"></span>-->
7
+ <el-icon>
8
+ <svg v-if="selcomp" class="icon" aria-hidden="true">
9
+ <use :href="'#' + iconName"></use>
10
+ </svg>
11
+ <component v-else :is="iconName"></component>
12
+ </el-icon>
13
+ </template>
14
+ <script setup lang="ts">
15
+ import { computed } from 'vue'
16
+ import { useVModel } from '@vueuse/core'
17
+ const props = defineProps({
18
+ modelValue: String,
19
+ })
20
+ const emit = defineEmits(['update:modelValue'])
21
+ const iconName = useVModel(props, 'modelValue', emit)
22
+ const selcomp = computed(() => {
23
+ if (iconName.value?.includes('adtec')) {
24
+ return true
25
+ } else {
26
+ return false
27
+ }
28
+ })
29
+ </script>
30
+ <style scoped lang="scss">
31
+ .icon {
32
+ width: 1em;
33
+ height: 1em;
34
+ vertical-align: -0.15em;
35
+ fill: currentColor;
36
+ overflow: hidden;
37
+ }
38
+ </style>