From 120bad4abe42adaff5e788c13981e584e06601bc Mon Sep 17 00:00:00 2001 From: Apcallover <1503963513@qq.com> Date: Tue, 11 Nov 2025 21:31:32 +0800 Subject: [PATCH] =?UTF-8?q?flat:=20ts=20+=20=E6=8E=A5=E5=8F=A3=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/ipc/live.ts | 29 ++++++++++++++++++++++++- src/main/ipc/workflow.ts | 1 + src/renderer/src/api/home.ts | 22 +++++++++++++++++++ src/renderer/src/stores/useLiveStore.ts | 5 ++++- src/renderer/src/views/Live/index.vue | 4 +++- 5 files changed, 58 insertions(+), 3 deletions(-) diff --git a/src/main/ipc/live.ts b/src/main/ipc/live.ts index 8ce2fbb..0262600 100644 --- a/src/main/ipc/live.ts +++ b/src/main/ipc/live.ts @@ -98,7 +98,7 @@ export function setupLiveHandlers() { contextIsolation: false, }, }); - liveWindow.webContents.openDevTools(); + // liveWindow.webContents.openDevTools(); liveWindow.on("closed", () => { liveWindow = null; }); @@ -134,6 +134,33 @@ async function getSessionId(requestBody: object) { body: JSON.stringify(requestBody), }); + // 首先检查响应内容类型 + const contentType = response.headers.get("content-type"); + if (!contentType || !contentType.includes("application/json")) { + // 如果不是JSON,读取原始文本进行调试 + const rawText = await response.text(); + console.warn("服务器返回非JSON响应:", rawText); + + // 尝试解析可能的JSON响应(即使Content-Type不正确) + try { + const data = JSON.parse(rawText); + if (response.ok && data.sessionid) { + return { success: true, sessionId: data.sessionid }; + } else { + return { + success: false, + error: data.message || "服务器返回非JSON格式", + }; + } + } catch (parseError) { + return { + success: false, + error: `服务器响应格式错误: ${rawText.substring(0, 100)}...`, + }; + } + } + + // 如果是JSON,正常解析 const data = await response.json(); if (response.ok && data.sessionid) { diff --git a/src/main/ipc/workflow.ts b/src/main/ipc/workflow.ts index 92fed04..e3ca896 100644 --- a/src/main/ipc/workflow.ts +++ b/src/main/ipc/workflow.ts @@ -141,6 +141,7 @@ export function setupWorkflowHandlers() { // 将整个工作流封装在 IPC Handler 中 ipcMain.handle("run-job-workflow", async (_, userQuery) => { + console.log("工作流: 正在准备工作..."); let currentJobData = userQuery || {}; let answerText = ""; diff --git a/src/renderer/src/api/home.ts b/src/renderer/src/api/home.ts index 7ca8c7e..700d822 100644 --- a/src/renderer/src/api/home.ts +++ b/src/renderer/src/api/home.ts @@ -8,6 +8,28 @@ export async function getSessionId(requestBody: object) { body: JSON.stringify(requestBody), }); + const contentType = response.headers.get("content-type"); + if (!contentType || !contentType.includes("application/json")) { + const rawText = await response.text(); + try { + const data = JSON.parse(rawText); + if (response.ok && data.sessionid) { + return { success: true, sessionId: data.sessionid }; + } else { + return { + success: false, + error: data.message || "服务器返回非JSON格式", + }; + } + } catch (parseError) { + return { + success: false, + error: `服务器响应格式错误: ${rawText.substring(0, 100)}...`, + }; + } + } + + // 如果是JSON,正常解析 const data = await response.json(); if (response.ok && data.sessionid) { diff --git a/src/renderer/src/stores/useLiveStore.ts b/src/renderer/src/stores/useLiveStore.ts index 33df9df..498530b 100644 --- a/src/renderer/src/stores/useLiveStore.ts +++ b/src/renderer/src/stores/useLiveStore.ts @@ -29,8 +29,11 @@ export const useLiveStore = defineStore("live", () => { if (positions.value.length < 10) { fetchPositions(); } + } else { + throw new Error(resData.msg); } } catch (error) { + alert("获取岗位失败"); console.error("获取岗位列表失败:", error); } } @@ -117,7 +120,7 @@ export const useLiveStore = defineStore("live", () => { try { const result = await window.electron.ipcRenderer.invoke( "open-live-window", - { path: "live", width: 375, height: 682 }, + { path: "live", width: 375, height: 682, userId: "rs876543" }, ); if (result.success) { isLiveWindowOpen.value = true; diff --git a/src/renderer/src/views/Live/index.vue b/src/renderer/src/views/Live/index.vue index 6a10bac..bad1923 100644 --- a/src/renderer/src/views/Live/index.vue +++ b/src/renderer/src/views/Live/index.vue @@ -20,7 +20,7 @@ const isCameraActive = ref(false) const isfullScreen = ref(false); const userId = ref(null); const liveUrl = ref(""); -const soundUrl = ref("https://dmdemo.hx.cn/sound/welcome.mp3"); +const soundUrl = ref(""); const welcome = ref() const live = ref() let cameraStream = null @@ -73,8 +73,10 @@ onBeforeUnmount(() => { function startLive() { const paramsUserId = route.query.userId; + console.log(paramsUserId) if (paramsUserId) { userId.value = paramsUserId + liveUrl.value = `https://dmdemo.hx.cn/dashboard.html?userId=${userId.value}`; } }