import React, { useState, useEffect } from 'react'; import useDeviceStore from '@/store/deviceStore'; import Image from 'next/image'; export default function WorldSkill({ onPortClick = () => {}, onPortHover = () => {}, selectedPort = null, targetPort = null, connections = {} }) { // 获取端口的连接状态样式 const getPortStyle = (portId) => { if (selectedPort === portId) { return 'bg-blue-300'; } if (targetPort === portId) { return 'bg-green-300'; } if (connections && connections[portId]) { return 'bg-[#00ff7f]'; } return 'bg-gray-300'; }; const {faultScenarios,seatUUID,seatNumber,updateWorldSkillScenarios} = useDeviceStore(); // 从localStorage加载清洁状态 const loadCleanState = () => { if (!seatUUID) return; const lccleanStates = JSON.parse(localStorage.getItem(`cleanState_${seatUUID}_lc`) || '{}'); // 恢复LC端口状态 document.querySelectorAll('[lcclean]').forEach(el => { const elementId = el.id; if (elementId && lccleanStates[elementId] !== undefined) { el.setAttribute('lcclean', lccleanStates[elementId].toString()); } }); }; // 监听seatUUID变化 useEffect(() => { if (seatUUID) { // 使用setTimeout确保DOM元素已加载 setTimeout(loadCleanState, 500); } }, [seatUUID]); return (
{/* 办公区域 */}
{/* Room */}
{/* Room 1 - 上半部分 */}
Room1
onPortClick('Room1-TO-1')} onMouseEnter={() => onPortHover('Room1-TO-1')} >
TO-1
onPortClick('Room1-TO-2')} onMouseEnter={() => onPortHover('Room1-TO-2')} >
TO-2
{/* Room 3 - 下半部分 */}
Room3
onPortClick('Room3A-TO-1')} onMouseEnter={() => onPortHover('Room3-TO-1')} >
TO-1
onPortClick('Room3-TO-2')} onMouseEnter={() => onPortHover('Room3-TO-2')} >
TO-2
{/* Room 4 */}
{/* Room 1A - 上半部分 */}
Room4
onPortClick('Room4-CAM')} onMouseEnter={() => onPortHover('Room4-CAM')} >
{/* 2F配线架 */}
2F-RackA
{/* Row 1A - taking 1/2 of rack height */}
1A
{[...Array(3)].map((_, groupIndex) => (
{[0, 1].map((portIndex) => { const portId = `2F-RackA-1A-${groupIndex * 2 + portIndex + 1}`; const portNumber = groupIndex * 2 + portIndex + 1; return (
onPortClick(portId)} onMouseEnter={() => onPortHover(portId)} >
{portNumber}
); })}
))}
{/* Row 1B - taking 1/2 of rack height */}
1B
{[...Array(3)].map((_, groupIndex) => (
{[0, 1].map((portIndex) => { const portId = `2F-RackA-1B-${groupIndex * 2 + portIndex + 1}`; const portNumber = groupIndex * 2 + portIndex + 1; return (
onPortClick(portId)} onMouseEnter={() => onPortHover(portId)} >
{portNumber}
); })}
))}
{/* 1F DataCenter */}
1F-RackA
{/* Row 1A - taking 1/2 of rack height */}
1A
{[...Array(12)].map((_, i) => (
onPortClick(`1F-RackA-1A-${i + 1}`)} onMouseEnter={() => onPortHover(`1F-RackA-1A-${i + 1}`)} >
{i + 1}
))}
{/* Row 1B - taking 1/2 of rack height */}
1B
{[...Array(6)].map((_, groupIndex) => (
{[0, 1].map((portIndex) => { const portId = `1F-RackA-1B-${groupIndex * 2 + portIndex + 1}`; const portNumber = groupIndex * 2 + portIndex + 1; return (
onPortClick(portId)} onMouseEnter={() => onPortHover(portId)} >
{portNumber}
); })}
))}
{/* Row 1C - taking 1/2 of rack height */}
1C
{[...Array(6)].map((_, groupIndex) => (
{[0, 1].map((portIndex) => { const portId = `1F-RackA-1C-${groupIndex * 2 + portIndex + 1}`; const portNumber = groupIndex * 2 + portIndex + 1; return (
onPortClick(portId)} onMouseEnter={() => onPortHover(portId)} >
{portNumber}
); })}
))}
{/* 竞技模式场景切换 */}
); }