From 9bec4dcae002f36aa23231da11cb03a156b40110 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周三, 30 4月 2025 16:24:16 +0800 Subject: [PATCH] 222 --- PipeLineLems/web/src/components/Icon/Icon.tsx | 40 +++++++++++++++++++++++++++++++++++++--- 1 files changed, 37 insertions(+), 3 deletions(-) diff --git a/PipeLineLems/web/src/components/Icon/Icon.tsx b/PipeLineLems/web/src/components/Icon/Icon.tsx index 5b5d157..f38e4b9 100644 --- a/PipeLineLems/web/src/components/Icon/Icon.tsx +++ b/PipeLineLems/web/src/components/Icon/Icon.tsx @@ -1,4 +1,5 @@ -import { computed, defineComponent } from 'vue' +import { computed, defineComponent, ref } from 'vue' +import parse from 'style-to-object' export default defineComponent({ name: '鍥炬爣', props: { @@ -14,21 +15,54 @@ type: Number, default: 12, }, + draggable: { + type: Boolean, + default: false, + }, + cursor: { + type: String, + default: '', + }, + class: { + type: String, + default: '', + }, + style: { + type: [Object, String], + default: () => ({}), + }, }, emits: ['click'], setup(props, { attrs, slots, emit }) { + const VITE_STATIC_URL = process.env.VITE_STATIC_URL || '' const imgUrl = computed(() => { - const imgName = props.icon - return new URL(`../../assets/images/${imgName}.png`, import.meta.url).href + let imgName = props.icon + if (!imgName) return '' + let baseDir = 'images' + if (imgName.includes('files/')) { + baseDir = 'files' + imgName = imgName.split('/')[1] + } + return `${VITE_STATIC_URL}/resources/assets/${baseDir}/${imgName}.png` + }) + const style = computed(() => { + if (typeof props.style === 'string') { + return parse(props.style) + } + return props.style }) return () => { + if (imgUrl.value.includes('undefined')) return null + return ( <img onClick={(evt: Event) => emit('click', evt)} width={props.width} height={props.height} src={imgUrl.value} + style={{ cursor: props.cursor, ...style.value }} + class={props.class} {...attrs} /> ) -- Gitblit v1.9.3