|
|
@@ -0,0 +1,93 @@
|
|
|
+<template>
|
|
|
+ <v-image ref="pointRef" :config="getIconConfig(curvImage)" />
|
|
|
+ <!-- <v-image :config="getCirConfig(props.shop.posType, cirImage)" />
|
|
|
+ <v-image ref="rectRef" :config="getRectCurConfig(props.shop.posType, rectImage)" /> -->
|
|
|
+ <v-rect :config="getRectConfig(props.shop)" />
|
|
|
+ <v-text :config="getTextConfig(props.shop)" />
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup lang="ts">
|
|
|
+ import { ref, onMounted, nextTick, watch } from 'vue';
|
|
|
+ import ProductionSafe from '@/assets/images/MobileConfigMap/production-safe.svg';
|
|
|
+ import SafeEnv from '@/assets/images/MobileConfigMap/safe-env.svg';
|
|
|
+ import Life from '@/assets/images/MobileConfigMap/life.svg';
|
|
|
+ import Logistics from '@/assets/images/MobileConfigMap/logistics.svg';
|
|
|
+ import Konva from 'konva';
|
|
|
+ import { MapWorkShopInfoItem } from '../../stores/useMapEditor';
|
|
|
+ import { getIconConfig, getRectConfig, getTextConfig } from './labelConfigMobile';
|
|
|
+
|
|
|
+ const props = defineProps<{ shop: MapWorkShopInfoItem; moduleCode: string }>();
|
|
|
+
|
|
|
+ const curvImage = ref<HTMLImageElement>(new Image());
|
|
|
+ // const rectImage = ref<HTMLImageElement>(new Image());
|
|
|
+ // const shineImage = ref<HTMLImageElement>(new Image());
|
|
|
+ // const cirImage = ref<HTMLImageElement>(new Image());
|
|
|
+ const rectRef = ref<Konva.Image>();
|
|
|
+ const pointRef = ref<Konva.Image>();
|
|
|
+
|
|
|
+ const nodeUpdateFilter = (node: Konva.Node) => {
|
|
|
+ node.cache();
|
|
|
+ // const rgba = getRGBANum(props.shop.bgColor);
|
|
|
+ // node.red(rgba[0]);
|
|
|
+ // node.green(rgba[1]);
|
|
|
+ // node.blue(rgba[2]);
|
|
|
+ // node.alpha(rgba[3]);
|
|
|
+ };
|
|
|
+
|
|
|
+ const IconMap = {
|
|
|
+ companyLife: Life,
|
|
|
+ companyProductionSafe: ProductionSafe,
|
|
|
+ companySafeEnv: SafeEnv,
|
|
|
+ companyLogistics: Logistics,
|
|
|
+ // 加入了一个默认code用于其他code都找不到的情况
|
|
|
+ default: ProductionSafe,
|
|
|
+ };
|
|
|
+
|
|
|
+ watch(
|
|
|
+ () => props.shop,
|
|
|
+ () => {
|
|
|
+ nextTick(() => {
|
|
|
+ nodeUpdateFilter(pointRef.value!.getNode());
|
|
|
+ nodeUpdateFilter(rectRef.value!.getNode());
|
|
|
+ });
|
|
|
+ },
|
|
|
+ { deep: true },
|
|
|
+ );
|
|
|
+
|
|
|
+ onMounted(() => {
|
|
|
+ const svgImg = new Image();
|
|
|
+ svgImg.onload = () => {
|
|
|
+ curvImage.value = svgImg;
|
|
|
+ nextTick(() => {
|
|
|
+ nodeUpdateFilter(pointRef.value?.getNode());
|
|
|
+ });
|
|
|
+ };
|
|
|
+ svgImg.src = IconMap[props.moduleCode];
|
|
|
+
|
|
|
+ // const rectImg = new Image();
|
|
|
+ // rectImg.onload = () => {
|
|
|
+ // rectImage.value = rectImg;
|
|
|
+ // nextTick(() => {
|
|
|
+ // nodeUpdateFilter(rectRef.value?.getNode());
|
|
|
+ // });
|
|
|
+ // };
|
|
|
+ // rectImg.src = rectBlock;
|
|
|
+
|
|
|
+ // const shineImg = new Image();
|
|
|
+ // shineImg.onload = () => {
|
|
|
+ // shineImage.value = shineImg;
|
|
|
+ // };
|
|
|
+ // shineImg.src = shine;
|
|
|
+
|
|
|
+ // const cirImg = new Image();
|
|
|
+ // cirImg.onload = () => {
|
|
|
+ // cirImage.value = cirImg;
|
|
|
+ // };
|
|
|
+ // cirImg.src = circle;
|
|
|
+
|
|
|
+ // rectRef.value?.getNode().filters([Konva.Filters.RGBA]);
|
|
|
+ // pointRef.value?.getNode().filters([Konva.Filters.RGBA]);
|
|
|
+ });
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped></style>
|