flyzto hace 2 semanas
padre
commit
f18f38e264
Se han modificado 1 ficheros con 23 adiciones y 5 borrados
  1. 23 5
      web/apps/web-antd/src/views/match/data-sync/index.vue

+ 23 - 5
web/apps/web-antd/src/views/match/data-sync/index.vue

@@ -63,6 +63,7 @@ const editClient = ref<SyncClient>();
 const editDeviceId = ref<number>();
 const editVisible = ref(false);
 const refreshTimer = ref<ReturnType<typeof setTimeout>>();
+const deviceWindows = new Map<number, Window>();
 
 const columns = [
   {
@@ -153,6 +154,22 @@ const getDeviceUrl = (deviceId?: number) => {
   return `https://rdp.long.bid/#/client/${payload}`;
 };
 
+const openDevice = (deviceId?: number) => {
+  if (!Number.isInteger(deviceId)) {
+    return;
+  }
+  const existingWindow = deviceWindows.get(deviceId);
+  if (existingWindow && !existingWindow.closed) {
+    existingWindow.focus();
+    return;
+  }
+  const deviceWindow = window.open(getDeviceUrl(deviceId), `rdp-device-${deviceId}`);
+  if (deviceWindow) {
+    deviceWindows.set(deviceId, deviceWindow);
+    deviceWindow.focus();
+  }
+};
+
 const isOnline = (time?: number) => {
   return !!time && Date.now() - time <= onlineThreshold;
 };
@@ -480,14 +497,14 @@ onUnmounted(() => {
         </template>
         <template v-else-if="column.key === 'deviceId'">
           <Tooltip v-if="Number.isInteger(record.deviceId)" title="打开设备">
-            <a
+            <Button
               class="device-link"
-              :href="getDeviceUrl(record.deviceId)"
-              rel="noopener noreferrer"
-              target="_blank"
+              size="small"
+              type="link"
+              @click="openDevice(record.deviceId)"
             >
               <DesktopOutlined />
-            </a>
+            </Button>
           </Tooltip>
           <span v-else>-</span>
         </template>
@@ -549,6 +566,7 @@ onUnmounted(() => {
   width: 24px;
   height: 24px;
   font-size: 16px;
+  padding: 0;
 }
 
 :deep(.hidden-expand-icon) {