修复设备管理页,关闭IMEI模态弹框时自动跳转到设备详情页的问题。

This commit is contained in:
柳清爽
2025-04-02 17:25:45 +08:00
parent 6b47cb942c
commit 0335c8fc98
4 changed files with 59 additions and 9 deletions

View File

@@ -480,8 +480,23 @@ export default function DevicesPage() {
}
// 设备详情页跳转
const handleDeviceClick = (deviceId: number) => {
router.push(`/devices/${deviceId}`)
const handleDeviceClick = (deviceId: number, event: React.MouseEvent) => {
// 判断点击事件是否来自ImeiDisplay组件或其后代元素
// 如果点击事件已经被处理例如ImeiDisplay中已阻止传播则不执行跳转
if (event.defaultPrevented) {
return;
}
// 如果点击的元素或其父元素有imei-display类则不跳转
let target = event.target as HTMLElement;
while (target && target !== event.currentTarget) {
if (target.classList.contains('imei-display-area')) {
return;
}
target = target.parentElement as HTMLElement;
}
router.push(`/devices/${deviceId}`);
}
return (
@@ -574,7 +589,7 @@ export default function DevicesPage() {
<Card
key={device.id}
className="p-3 hover:shadow-md transition-shadow cursor-pointer relative"
onClick={() => handleDeviceClick(device.id)}
onClick={(e) => handleDeviceClick(device.id, e)}
>
<div className="flex items-center space-x-3">
<Checkbox
@@ -595,7 +610,7 @@ export default function DevicesPage() {
{device.status === "online" ? "在线" : "离线"}
</Badge>
</div>
<div className="text-sm text-gray-500 flex items-center">
<div className="text-sm text-gray-500 flex items-center imei-display-area">
<span className="mr-1">IMEI:</span>
<ImeiDisplay imei={device.imei} containerWidth={180} />
</div>