From 608ce47a13268fac31932df4914a200bfee0474b Mon Sep 17 00:00:00 2001
From: betaqi <3188864257@qq.com>
Date: Fri, 22 Aug 2025 18:21:57 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20topo=E8=8A=82=E7=82=B9=20=E5=92=8C=20?=
=?UTF-8?q?=E6=B5=81=E5=8A=A8=E5=8A=A8=E7=94=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 41 +++++++++
package.json | 1 +
src/views/testG6/components/Node.vue | 97 ++++++++++++++++++++-
src/views/testG6/index.vue | 16 ++--
src/views/testG6/type/index.ts | 5 ++
src/views/testG6/utils/GenerateGraphData.ts | 17 ++--
src/views/testG6/utils/MyLineEdge.ts | 62 +++++++++++--
src/views/testG6/utils/MyNode.ts | 38 ++++++--
src/views/testG6/utils/data.ts | 13 +++
src/views/testG6/utils/index.ts | 5 +-
10 files changed, 262 insertions(+), 33 deletions(-)
create mode 100644 src/views/testG6/type/index.ts
diff --git a/package-lock.json b/package-lock.json
index de63566..c862a31 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,6 +17,7 @@
"dexie": "^4.0.11",
"echarts": "^5.6.0",
"element-plus": "^2.9.5",
+ "g6-extension-vue": "^0.1.0",
"jszmq": "^0.1.2",
"lodash-es": "^4.17.21",
"pinia": "^3.0.1",
@@ -5020,6 +5021,46 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/g6-extension-vue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/g6-extension-vue/-/g6-extension-vue-0.1.0.tgz",
+ "integrity": "sha512-2RtL2CdcIdnrCFJYETxsI7TNtsE2m3y1oNyXQwM3EUciPMdxjet5okLk6dzY8ohLRUz8sMk4dM4cAE3ljtQXfA==",
+ "license": "MIT",
+ "dependencies": {
+ "@antv/g": "^6.1.27",
+ "vue-demi": "^0.14.10"
+ },
+ "peerDependencies": {
+ "@antv/g6": ">=5.0.0",
+ "vue": "^2.0.0 || >=3.0.0"
+ }
+ },
+ "node_modules/g6-extension-vue/node_modules/vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
diff --git a/package.json b/package.json
index 146b2f1..421b83b 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
"dexie": "^4.0.11",
"echarts": "^5.6.0",
"element-plus": "^2.9.5",
+ "g6-extension-vue": "^0.1.0",
"jszmq": "^0.1.2",
"lodash-es": "^4.17.21",
"pinia": "^3.0.1",
diff --git a/src/views/testG6/components/Node.vue b/src/views/testG6/components/Node.vue
index 3499f9b..9baf735 100644
--- a/src/views/testG6/components/Node.vue
+++ b/src/views/testG6/components/Node.vue
@@ -1,10 +1,99 @@
+
+
+
+
![]()
+
+
+ {{ Device.name }}
+
+
+
+
+const typeToIconMap: Record = {
+ [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'
+ },
+}
-
- node
-
+const props = defineProps<{
+ data: MyNodeData;
+}>()
+
+const Device = computed(() => {
+ const style = typeToIconMap[props.data.data.type];
+ return Object.assign(props.data.data, style);
+})
+
+