98 lines
3.7 KiB
Vue
Raw Normal View History

2025-07-18 13:14:28 +08:00
<template>
<div class="bg-white rounded-lg relative mb-10">
<div ref="architectureChart" class="w-full h-[500px]"></div>
<p class="text-gray-600 mt-4 text-center">核心架构图展示了应用核心通信协议层音频处理系统用户界面系统IoT设备管理等模块的关系</p>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import * as echarts from 'echarts';
const architectureChart = ref(null);
onMounted(() => {
if (architectureChart.value) {
const chart = echarts.init(architectureChart.value);
chart.setOption({
animation: false,
tooltip: {
trigger: 'item',
formatter: '{b}: {c}'
},
legend: {
orient: 'vertical',
right: 10,
top: 'center',
data: ['核心', '主要模块', '子模块']
},
series: [
{
name: '架构图',
type: 'graph',
layout: 'force',
data: [
{ name: '应用核心', value: 'Application', category: 0, symbolSize: 70 },
{ name: '通信协议层', value: 'Protocols', category: 1, symbolSize: 50 },
{ name: '音频处理系统', value: 'Audio Processing', category: 1, symbolSize: 50 },
{ name: '用户界面系统', value: 'UI System', category: 1, symbolSize: 50 },
{ name: 'IoT设备管理', value: 'IoT Management', category: 1, symbolSize: 50 },
{ name: 'WebSocket', value: 'WebSocket', category: 2, symbolSize: 30 },
{ name: 'MQTT', value: 'MQTT', category: 2, symbolSize: 30 },
{ name: '音频编解码', value: 'Audio Codecs', category: 2, symbolSize: 30 },
{ name: 'VAD检测', value: 'VAD', category: 2, symbolSize: 30 },
{ name: '唤醒词检测', value: 'Wakeword', category: 2, symbolSize: 30 },
{ name: 'GUI界面', value: 'GUI', category: 2, symbolSize: 30 },
{ name: 'CLI界面', value: 'CLI', category: 2, symbolSize: 30 },
{ name: '设备抽象', value: 'Device Abstract', category: 2, symbolSize: 30 },
{ name: '智能家居', value: 'Smart Home', category: 2, symbolSize: 30 }
],
links: [
{ source: '应用核心', target: '通信协议层' },
{ source: '应用核心', target: '音频处理系统' },
{ source: '应用核心', target: '用户界面系统' },
{ source: '应用核心', target: 'IoT设备管理' },
{ source: '通信协议层', target: 'WebSocket' },
{ source: '通信协议层', target: 'MQTT' },
{ source: '音频处理系统', target: '音频编解码' },
{ source: '音频处理系统', target: 'VAD检测' },
{ source: '音频处理系统', target: '唤醒词检测' },
{ source: '用户界面系统', target: 'GUI界面' },
{ source: '用户界面系统', target: 'CLI界面' },
{ source: 'IoT设备管理', target: '设备抽象' },
{ source: 'IoT设备管理', target: '智能家居' }
],
categories: [
{ name: '核心' },
{ name: '主要模块' },
{ name: '子模块' }
],
roam: true,
label: {
show: true,
position: 'right',
formatter: '{b}'
},
lineStyle: {
color: 'source',
curveness: 0.3
},
emphasis: {
focus: 'adjacency',
lineStyle: {
width: 3
}
},
force: {
repulsion: 300,
edgeLength: 120
}
}
]
});
window.addEventListener('resize', () => {
chart.resize();
});
}
});
</script>