From f41f066abc4836301d137a9296a5be8e412810e6 Mon Sep 17 00:00:00 2001 From: AoXuan Date: Mon, 1 Sep 2025 01:06:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(Scripts):=20=E6=B7=BB=E5=8A=A0=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E8=84=9A=E6=9C=AC=E5=88=9B=E5=BB=BA=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=92=8C=E6=A8=A1=E6=9D=BF=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/composables/useTemplateApi.ts | 91 ++ frontend/src/views/Scripts.vue | 1017 ++++++++++++++++++-- 2 files changed, 1049 insertions(+), 59 deletions(-) create mode 100644 frontend/src/composables/useTemplateApi.ts diff --git a/frontend/src/composables/useTemplateApi.ts b/frontend/src/composables/useTemplateApi.ts new file mode 100644 index 0000000..6d0db89 --- /dev/null +++ b/frontend/src/composables/useTemplateApi.ts @@ -0,0 +1,91 @@ +import { ref } from 'vue' +import { message } from 'ant-design-vue' +import { Service } from '@/api' + +export interface WebConfigTemplate { + configName: string + description: string + author: string + createTime: string + downloadUrl: string +} + +export interface WebConfigResponse { + code: number + status: string + message: string + data: { + WebConfig: WebConfigTemplate[] + } +} + +export function useTemplateApi() { + const loading = ref(false) + const error = ref(null) + + // 获取Web配置模板列表 + const getWebConfigTemplates = async (): Promise => { + loading.value = true + error.value = null + + try { + const response = await Service.getWebConfigApiInfoWebconfigPost() + + if (response.code !== 200) { + const errorMsg = response.message || '获取模板列表失败' + message.error(errorMsg) + throw new Error(errorMsg) + } + + // 直接返回API响应中的WebConfig数组 + return (response.data as any).WebConfig || [] + } catch (err) { + const errorMsg = err instanceof Error ? err.message : '获取模板列表失败' + error.value = errorMsg + if (!err.message?.includes('HTTP error')) { + message.error(errorMsg) + } + return [] + } finally { + loading.value = false + } + } + + // 从Web导入脚本配置 + const importScriptFromWeb = async (scriptId: string, url: string): Promise => { + loading.value = true + error.value = null + + try { + const response = await Service.importScriptFromWebApiScriptsImportWebPost({ + scriptId, + url + }) + + if (response.code !== 200) { + const errorMsg = response.message || '导入配置失败' + message.error(errorMsg) + throw new Error(errorMsg) + } + + message.success(response.message || '导入配置成功') + return true + } catch (err) { + const errorMsg = err instanceof Error ? err.message : '导入配置失败' + error.value = errorMsg + if (!err.message?.includes('HTTP error')) { + message.error(errorMsg) + } + return false + } finally { + loading.value = false + } + } + + return { + loading, + error, + getWebConfigTemplates, + importScriptFromWeb + } +} diff --git a/frontend/src/views/Scripts.vue b/frontend/src/views/Scripts.vue index 53f5a02..7346909 100644 --- a/frontend/src/views/Scripts.vue +++ b/frontend/src/views/Scripts.vue @@ -1,24 +1,23 @@