From 9a9a4dad014a1ac32bf38fb100eeadfd2d709001 Mon Sep 17 00:00:00 2001 From: AoXuan Date: Mon, 4 Aug 2025 19:51:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor(script):=20=E9=87=8D=E6=9E=84=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E7=BC=96=E8=BE=91=E9=A1=B5=E9=9D=A2=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=84=9A=E6=9C=AC=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/composables/useScriptApi.ts | 55 ++- frontend/src/types/script.ts | 7 + frontend/src/views/ScriptEdit.vue | 578 +++++++++++++---------- 3 files changed, 390 insertions(+), 250 deletions(-) diff --git a/frontend/src/composables/useScriptApi.ts b/frontend/src/composables/useScriptApi.ts index 0c2205b..6d7b14f 100644 --- a/frontend/src/composables/useScriptApi.ts +++ b/frontend/src/composables/useScriptApi.ts @@ -1,4 +1,5 @@ import { ref } from 'vue' +import { message } from 'ant-design-vue' import type { ScriptType, AddScriptResponse, @@ -7,7 +8,8 @@ import type { GetScriptsResponse, ScriptDetail, ScriptIndexItem, - DeleteScriptResponse + DeleteScriptResponse, + UpdateScriptResponse } from '../types/script.ts' const API_BASE_URL = 'http://localhost:8000/api' @@ -22,7 +24,7 @@ export function useScriptApi() { error.value = null try { - const response = await fetch(`${API_BASE_URL}/scripts/add`, { + const response = await fetch(`${API_BASE_URL}/add/scripts`, { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -35,9 +37,21 @@ export function useScriptApi() { } const data: AddScriptResponse = await response.json() + + // 检查API响应的code字段 + if (data.code !== 200) { + const errorMsg = data.message || '添加脚本失败' + message.error(errorMsg) + throw new Error(errorMsg) + } + return data } catch (err) { - error.value = err instanceof Error ? err.message : '添加脚本失败' + const errorMsg = err instanceof Error ? err.message : '添加脚本失败' + error.value = errorMsg + if (!err.message?.includes('HTTP error')) { + message.error(errorMsg) + } return null } finally { loading.value = false @@ -147,28 +161,47 @@ export function useScriptApi() { } } - // 更新脚本(暂时模拟) - const updateScript = async (scriptId: string, config: MAAScriptConfig | GeneralScriptConfig) => { + // 更新脚本 + const updateScript = async (scriptId: string, data: MAAScriptConfig | GeneralScriptConfig): Promise => { loading.value = true error.value = null try { - const response = await fetch(`${API_BASE_URL}/update/scripts/${scriptId}`, { - method: 'PUT', + // 创建数据副本并移除 SubConfigsInfo 字段 + const { SubConfigsInfo, ...dataToSend } = data + + const response = await fetch(`${API_BASE_URL}/scripts/update`, { + method: 'POST', headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify(config), + body: JSON.stringify({ scriptId, data: dataToSend }), }) if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`) } - return await response.json() + const apiResponse: UpdateScriptResponse = await response.json() + + // 根据code判断是否成功(非200就是不成功) + if (apiResponse.code !== 200) { + const errorMsg = apiResponse.message || '更新脚本失败' + message.error(errorMsg) + throw new Error(errorMsg) + } + + return true } catch (err) { - error.value = err instanceof Error ? err.message : '更新脚本失败' - return null + const errorMsg = err instanceof Error ? err.message : '更新脚本失败' + error.value = errorMsg + // 如果错误不是来自API响应(即没有显示过message.error),则显示错误消息 + if (err instanceof Error && !err.message.includes('HTTP error')) { + // API响应错误已经在上面显示了,这里只处理其他错误 + } else { + message.error(errorMsg) + } + return false } finally { loading.value = false } diff --git a/frontend/src/types/script.ts b/frontend/src/types/script.ts index c78b6b7..838f085 100644 --- a/frontend/src/types/script.ts +++ b/frontend/src/types/script.ts @@ -175,4 +175,11 @@ export interface DeleteScriptResponse { code: number status: string message: string +} + +// 更新脚本API响应 +export interface UpdateScriptResponse { + code: number + status: string + message: string } \ No newline at end of file diff --git a/frontend/src/views/ScriptEdit.vue b/frontend/src/views/ScriptEdit.vue index be1b01e..bfe8c9c 100644 --- a/frontend/src/views/ScriptEdit.vue +++ b/frontend/src/views/ScriptEdit.vue @@ -87,7 +87,7 @@ MAA脚本 - General脚本 + 通用脚本 @@ -286,15 +286,15 @@
-

基础配置

+

脚本配置

- +