Icon.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <template>
  2. <component :is="iconCom"></component>
  3. </template>
  4. <script setup>
  5. import SimpleIconsInsta360 from '~icons/simple-icons/insta360'
  6. import WpfPanorama from '~icons/wpf/panorama'
  7. import SolarPlaybackSpeedBold from '~icons/solar/playback-speed-bold'
  8. import UisRefresh from '~icons/uis/refresh'
  9. import LucideRotate3d from '~icons/lucide/rotate-3d'
  10. import MdiTagAdd from '~icons/mdi/tag-add'
  11. import MdiGear from '~icons/mdi/gear'
  12. import ClaritySwitchLine from '~icons/clarity/switch-line'
  13. import RiAlarmWarningFill from '~icons/ri/alarm-warning-fill'
  14. import AkarIconsReduce from '~icons/akar-icons/reduce'
  15. import AkarIconsFullScreen from '~icons/akar-icons/full-screen'
  16. import GrommetIconsPowerShutdown from '~icons/grommet-icons/power-shutdown'
  17. import CarbonTagGroup from '~icons/carbon/tag-group'
  18. import MingcuteDelete2Fill from '~icons/mingcute/delete-2-fill'
  19. import IconamoonStarLight from '~icons/iconamoon/star-light'
  20. import IconamoonStarFill from '~icons/iconamoon/star-fill'
  21. import AntDesignTagOutlined from '~icons/ant-design/tag-outlined'
  22. import IconoirScreenshot from '~icons/iconoir/screenshot'
  23. import CarbonVideo from '~icons/carbon/video';
  24. import MdiVideo3d from '~icons/mdi/video-3d'
  25. import EpSetUp from '~icons/ep/set-up'
  26. import FadArmrecording from '~icons/fad/armrecording'
  27. import IconamoonScreenFull from '~icons/iconamoon/screen-full'
  28. import IconParkOutlineOffScreen from '~icons/icon-park-outline/off-screen'
  29. import PhStarBold from '~icons/ph/star-bold'
  30. import PhArrowUpDuotone from '~icons/ph/arrow-up-duotone'
  31. import RiArrowRightSLine from '~icons/ri/arrow-right-s-line'
  32. import RiArrowLeftSLine from '~icons/ri/arrow-left-s-line'
  33. import GisPedestrian from '~icons/gis/pedestrian'
  34. import IconParkOutlineFaceRecognition from '~icons/icon-park-outline/face-recognition'
  35. import MingcuteRightFill from '~icons/mingcute/right-fill'
  36. import MingcuteLeftFill from '~icons/mingcute/left-fill'
  37. import TeenyiconsUpSolid from '~icons/teenyicons/up-solid'
  38. import SimpleLineIconsMagnifierAdd from '~icons/simple-line-icons/magnifier-add'
  39. import SimpleLineIconsMagnifierRemove from '~icons/simple-line-icons/magnifier-remove'
  40. import FluentScreenshot20Regular from '~icons/fluent/screenshot-20-regular'
  41. import EpCloseBold from '~icons/ep/close-bold'
  42. import GrommetIconsClearOption from '~icons/grommet-icons/clear-option'
  43. import MaterialSymbolsLightSwitchOutlineSharp from '~icons/material-symbols-light/switch-outline-sharp'
  44. import EosIconsBubbleLoading from '~icons/eos-icons/bubble-loading'
  45. import MdiTransitDetour from '~icons/mdi/transit-detour'
  46. import AntDesignAlertOutlined from '~icons/ant-design/alert-outlined'
  47. import MaterialSymbolsFrameSourceSharp from '~icons/material-symbols/frame-source-sharp'
  48. import FluentCursorClick24Regular from '~icons/fluent/cursor-click-24-regular'
  49. import IcOutlineMenuOpen from '~icons/ic/outline-menu-open'
  50. import MdiMenuClose from '~icons/mdi/menu-close'
  51. import MaterialSymbolsPip from '~icons/material-symbols/pip'
  52. import TablerDeviceCctv from '~icons/tabler/device-cctv'
  53. import GisCompassRoseN from '~icons/gis/compass-rose-n'
  54. import LineMdCompassLoop from '~icons/line-md/compass-loop'
  55. import LucideHardHat from '~icons/lucide/hard-hat';
  56. const props = defineProps({
  57. icon: {
  58. type: String
  59. }
  60. })
  61. const iconCom = shallowRef(null)
  62. const setIcon = () => {
  63. switch (props.icon) {
  64. case 'wpf:panorama':
  65. iconCom.value = WpfPanorama
  66. break
  67. case 'simple-icons:insta360':
  68. iconCom.value = SimpleIconsInsta360
  69. break
  70. case 'solar:playback-speed-bold':
  71. iconCom.value = SolarPlaybackSpeedBold
  72. break
  73. case 'uil:refresh':
  74. iconCom.value = UisRefresh
  75. break
  76. case 'lucide:rotate-3d':
  77. iconCom.value = LucideRotate3d
  78. break
  79. case 'mdi:tag-add':
  80. iconCom.value = MdiTagAdd
  81. break
  82. case 'pepicons-pop:gear':
  83. iconCom.value = MdiGear
  84. break
  85. case 'clarity:switch-line':
  86. iconCom.value = ClaritySwitchLine
  87. break
  88. case 'ri:alarm-warning-fill':
  89. iconCom.value = RiAlarmWarningFill
  90. break
  91. case 'akar-icons:reduce':
  92. iconCom.value = AkarIconsReduce
  93. break
  94. case 'akar-icons:full-screen':
  95. iconCom.value = AkarIconsFullScreen
  96. break
  97. case 'grommet-icons:power-shutdown':
  98. iconCom.value = GrommetIconsPowerShutdown
  99. break
  100. case 'carbon:tag-group':
  101. iconCom.value = CarbonTagGroup
  102. break
  103. case 'mingcute:delete-2-fill':
  104. iconCom.value = MingcuteDelete2Fill
  105. break
  106. case 'iconamoon:star-light':
  107. iconCom.value = IconamoonStarLight
  108. break
  109. case 'iconamoon:star-fill':
  110. iconCom.value = IconamoonStarFill
  111. break
  112. case 'ant-design:tag-outlined':
  113. iconCom.value = AntDesignTagOutlined
  114. break
  115. case 'iconoir:screenshot':
  116. iconCom.value = IconoirScreenshot
  117. break
  118. case 'carbon:video':
  119. iconCom.value = CarbonVideo
  120. break
  121. case 'mdi:video-3d':
  122. iconCom.value = MdiVideo3d
  123. break
  124. case 'ep:set-up':
  125. iconCom.value = EpSetUp
  126. break
  127. case 'fad:armrecording':
  128. iconCom.value = FadArmrecording
  129. break
  130. case 'icon-park-outline:off-screen':
  131. iconCom.value = IconParkOutlineOffScreen
  132. break
  133. case 'iconamoon:screen-full':
  134. iconCom.value = IconamoonScreenFull
  135. break
  136. case 'solar:star-bold':
  137. iconCom.value = PhStarBold
  138. break
  139. case 'ph:arrow-up-duotone':
  140. iconCom.value = PhArrowUpDuotone
  141. break
  142. case 'ri:arrow-left-s-line':
  143. iconCom.value = RiArrowLeftSLine
  144. break
  145. case 'ri:arrow-right-s-line':
  146. iconCom.value = RiArrowRightSLine
  147. break
  148. case 'gis:pedestrian':
  149. iconCom.value = GisPedestrian
  150. break
  151. case 'icon-park-outline:face-recognition':
  152. iconCom.value = IconParkOutlineFaceRecognition
  153. break
  154. case 'mingcute:right-fill':
  155. iconCom.value = MingcuteRightFill
  156. break
  157. case 'mingcute:left-fill':
  158. iconCom.value = MingcuteLeftFill
  159. break
  160. case 'teenyicons:up-solid':
  161. iconCom.value = TeenyiconsUpSolid
  162. break
  163. case 'simple-line-icons:magnifier-add':
  164. iconCom.value = SimpleLineIconsMagnifierAdd
  165. break
  166. case 'simple-line-icons:magnifier-remove':
  167. iconCom.value = SimpleLineIconsMagnifierRemove
  168. break
  169. case 'fluent:screenshot-20-regular':
  170. iconCom.value = FluentScreenshot20Regular
  171. break
  172. case 'ep:close-bold':
  173. iconCom.value = EpCloseBold
  174. break
  175. case 'grommet-icons:clear-option':
  176. iconCom.value = GrommetIconsClearOption
  177. break
  178. case 'material-symbols-light:switch-outline-sharp':
  179. iconCom.value = MaterialSymbolsLightSwitchOutlineSharp
  180. break
  181. case 'loading':
  182. iconCom.value = EosIconsBubbleLoading
  183. break
  184. case 'mdi:transit-detour':
  185. iconCom.value = MdiTransitDetour
  186. break
  187. case 'ant-design:alert-outlined':
  188. iconCom.value = AntDesignAlertOutlined
  189. break
  190. case 'material-symbols-light:frame-source-sharp':
  191. iconCom.value = MaterialSymbolsFrameSourceSharp
  192. break
  193. case 'fluent:cursor-click-24-regular':
  194. iconCom.value = FluentCursorClick24Regular
  195. break
  196. case 'ic:outline-menu-open':
  197. iconCom.value = IcOutlineMenuOpen
  198. break
  199. case 'mdi:menu-close':
  200. iconCom.value = MdiMenuClose
  201. break
  202. case 'material-symbols:pip':
  203. iconCom.value = MaterialSymbolsPip
  204. break
  205. case 'tabler:device-cctv':
  206. iconCom.value = TablerDeviceCctv
  207. break
  208. case 'gis:compass-rose-n':
  209. iconCom.value = GisCompassRoseN
  210. break
  211. case 'line-md:compass-loop':
  212. iconCom.value = LineMdCompassLoop
  213. break
  214. case 'lucide:hard-hat':
  215. iconCom.value = LucideHardHat
  216. break
  217. default:
  218. console.error(`${props.icon}需要到 src/components/Icon.vue 中配置改图标`)
  219. break
  220. }
  221. }
  222. watch(() => props.icon, (newV) => {
  223. setIcon()
  224. })
  225. onMounted(() => {
  226. setIcon()
  227. })
  228. </script>