diff --git a/eslint-suppressions.json b/eslint-suppressions.json index d95c5a0a..4644eb33 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -101,7 +101,7 @@ }, "src/components/cards/DirectoryCard.vue": { "@typescript-eslint/no-explicit-any": { - "count": 3 + "count": 1 }, "sonarjs/super-linear-regex": { "count": 1 diff --git a/src/api/manage.ts b/src/api/manage.ts new file mode 100644 index 00000000..2bf177b7 --- /dev/null +++ b/src/api/manage.ts @@ -0,0 +1,43 @@ +import type { AxiosRequestConfig } from 'axios' +import api from './index' + +/** 通用管理请求:目标标识 + 管理动作 + 透传参数,与后端 ManageRequest 一致。 */ +export interface ManageRequest { + target: string + action: string + params?: Record +} + +/** + * 调用统一管理端点(通知渠道 / 网盘存储) + * + * 端点层不定义任何目标特定的名称与参数, + * 目标标识、管理动作与表单参数原样透传给后端模块 + */ +function manageTarget>( + endpoint: 'notification/manage' | 'storage/manage', + request: ManageRequest, + config?: AxiosRequestConfig, +): Promise { + return api.post(endpoint, { params: {}, ...request }, config) +} + +/** 对指定通知渠道执行管理动作,返回响应中的业务数据。 */ +export function manageNotificationChannel>( + channel: string, + action: string, + params: Record = {}, + config?: AxiosRequestConfig, +): Promise { + return manageTarget('notification/manage', { target: channel, action, params }, config) +} + +/** 对指定网盘存储执行管理动作,返回响应中的业务数据。 */ +export function manageStorage>( + storage: string, + action: string, + params: Record = {}, + config?: AxiosRequestConfig, +): Promise { + return manageTarget('storage/manage', { target: storage, action, params }, config) +} diff --git a/src/components/cards/DirectoryCard.vue b/src/components/cards/DirectoryCard.vue index 22be7ace..d489a86c 100644 --- a/src/components/cards/DirectoryCard.vue +++ b/src/components/cards/DirectoryCard.vue @@ -1,6 +1,6 @@