10 changed files with 262 additions and 33 deletions
@ -1,10 +1,99 @@ |
|||||||
|
<template> |
||||||
|
<div :style="{ |
||||||
|
width: NODE_SIZE[0] + 'px', |
||||||
|
height: NODE_SIZE[1] + 'px', |
||||||
|
borderRadius: '6px', |
||||||
|
marginLeft: -(NODE_SIZE[0] / 2 - 10) + 'px', |
||||||
|
}" class="box-border rounded-md overflow-hidden flex"> |
||||||
|
<div class="h-100% p-4px" :style="{ background: Device.bgColor}"> |
||||||
|
<img :src="Device.icon" style="height: 100%;" alt=""> |
||||||
|
</div> |
||||||
|
<div class="bg-white flex-1 flex items-center justify-center"> |
||||||
|
<span class="text-12px">{{ Device.name }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
<script setup lang="ts"> |
<script setup lang="ts"> |
||||||
|
import type { MyNodeData } from "../type/index.ts"; |
||||||
|
import { DeviceType, NODE_SIZE } from "../utils/index"; |
||||||
|
import EmsIcon from '@/assets/images/device/ems.png'; |
||||||
|
import EcuIcon from '@/assets/images/device/ecu.png'; |
||||||
|
import EmIcon from '@/assets/images/device/em.png'; |
||||||
|
import EmMeasureIcon from '@/assets/images/device/em.png'; |
||||||
|
import BmsIcon from '@/assets/images/device/bms.png'; |
||||||
|
import CacIcon from '@/assets/images/device/cac.png'; |
||||||
|
import DgsIcon from '@/assets/images/device/dgs.png'; |
||||||
|
import FfsIcon from '@/assets/images/device/ffs.png'; |
||||||
|
import MpptIcon from '@/assets/images/device/mppt.png'; |
||||||
|
import PcsIcon from '@/assets/images/device/pcs.png'; |
||||||
|
import ThsIcon from '@/assets/images/device/ths.png'; |
||||||
|
import TmsIcon from '@/assets/images/device/tms.png'; |
||||||
|
import UnitIcon from '@/assets/images/device/unit.png'; |
||||||
|
import WppIcon from '@/assets/images/device/wpp.png'; |
||||||
|
import { computed } from "vue"; |
||||||
|
|
||||||
</script> |
const typeToIconMap: Record<string, Object> = { |
||||||
|
[DeviceType.Ems]: { |
||||||
|
icon: EmsIcon, |
||||||
|
bgColor: '#0769FF' |
||||||
|
}, |
||||||
|
[DeviceType.Ecu]: { |
||||||
|
icon: EcuIcon, |
||||||
|
bgColor: '#0769FF' |
||||||
|
}, |
||||||
|
[DeviceType.Em]: { |
||||||
|
icon: EmIcon, |
||||||
|
bgColor: '#2CA02C' |
||||||
|
}, |
||||||
|
[DeviceType['Em-Measure']]: { |
||||||
|
icon: EmIcon, |
||||||
|
bgColor: '#2CA02C' |
||||||
|
}, |
||||||
|
[DeviceType.Bms]: { |
||||||
|
icon: BmsIcon, |
||||||
|
bgColor: '#FF7F50' |
||||||
|
}, |
||||||
|
[DeviceType.Cac]: { |
||||||
|
icon: CacIcon, |
||||||
|
bgColor: '#17BECF' |
||||||
|
}, |
||||||
|
[DeviceType.Dgs]: { |
||||||
|
icon: DgsIcon, |
||||||
|
bgColor: '#9467BD' |
||||||
|
}, |
||||||
|
[DeviceType.Ffs]: { |
||||||
|
icon: FfsIcon, |
||||||
|
bgColor: '#17BECF' |
||||||
|
}, |
||||||
|
[DeviceType.Mppt]: { |
||||||
|
icon: MpptIcon, |
||||||
|
bgColor: '#9467BD' |
||||||
|
}, |
||||||
|
[DeviceType.Pcs]: { |
||||||
|
icon: PcsIcon, |
||||||
|
bgColor: '#FF7F50' |
||||||
|
}, |
||||||
|
[DeviceType.Wpp]: { |
||||||
|
icon: WppIcon, |
||||||
|
bgColor: '#9467BD' |
||||||
|
}, |
||||||
|
[DeviceType.Tms]: { |
||||||
|
icon: TmsIcon, |
||||||
|
bgColor: '#17BECF' |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
<template> |
const props = defineProps<{ |
||||||
<div>node</div> |
data: MyNodeData; |
||||||
</template> |
}>() |
||||||
|
|
||||||
|
const Device = computed(() => { |
||||||
|
const style = typeToIconMap[props.data.data.type]; |
||||||
|
return Object.assign(props.data.data, style); |
||||||
|
}) |
||||||
|
|
||||||
|
</script> |
||||||
|
|
||||||
<style scoped lang="scss"> |
<style scoped lang="scss"> |
||||||
|
|
||||||
|
@ -0,0 +1,5 @@ |
|||||||
|
import type { NodeData } from "@antv/g6"; |
||||||
|
export type Device = any |
||||||
|
export interface MyNodeData extends Omit<NodeData, 'data'> { |
||||||
|
data?: Device; |
||||||
|
} |
Loading…
Reference in new issue