refactor(script): 重构脚本编辑页面并优化脚本配置功能

This commit is contained in:
2025-08-04 19:51:56 +08:00
parent f68c1c95eb
commit 9a9a4dad01
3 changed files with 390 additions and 250 deletions

View File

@@ -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<boolean> => {
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
}