diff --git a/web/src/api/groups.ts b/web/src/api/groups.ts index 6b2326e..963ab93 100644 --- a/web/src/api/groups.ts +++ b/web/src/api/groups.ts @@ -1,11 +1,21 @@ -import apiClient from './index'; -import type { Group } from '../types/models'; +import apiClient from "./index"; +import type { Group } from "../types/models"; /** * 获取所有分组列表 */ export const fetchGroups = (): Promise => { - return apiClient.get('/groups').then(res => res.data.data); + return apiClient.get("/groups").then((res) => { + const groups = res.data.data; + // 将后端返回的 config 字符串解析为对象 + return groups.map((group: any) => ({ + ...group, + config: + typeof group.config === "string" + ? JSON.parse(group.config) + : group.config, + })); + }); }; /** @@ -13,15 +23,40 @@ export const fetchGroups = (): Promise => { * @param id 分组ID */ export const fetchGroup = (id: string): Promise => { - return apiClient.get(`/groups/${id}`).then(res => res.data.data); + return apiClient.get(`/groups/${id}`).then((res) => { + const group = res.data.data; + // 将后端返回的 config 字符串解析为对象 + return { + ...group, + config: + typeof group.config === "string" + ? JSON.parse(group.config) + : group.config, + }; + }); }; /** * 创建一个新的分组 * @param groupData 新分组的数据 */ -export const createGroup = (groupData: Omit): Promise => { - return apiClient.post('/groups', groupData).then(res => res.data.data); +export const createGroup = ( + groupData: Omit +): Promise => { + // 将 config 对象转换为 JSON 字符串,匹配后端期望的格式 + const requestData = { + ...groupData, + config: + typeof groupData.config === "object" + ? JSON.stringify(groupData.config) + : groupData.config, + }; + + console.log("createGroup - Original data:", groupData); + console.log("createGroup - Request data:", requestData); + console.log("createGroup - Config type:", typeof requestData.config); + + return apiClient.post("/groups", requestData).then((res) => res.data.data); }; /** @@ -29,8 +64,23 @@ export const createGroup = (groupData: Omit>): Promise => { - return apiClient.put(`/groups/${id}`, groupData).then(res => res.data.data); +export const updateGroup = ( + id: string, + groupData: Partial< + Omit + > +): Promise => { + // 将 config 对象转换为 JSON 字符串,匹配后端期望的格式 + const requestData = { + ...groupData, + config: + groupData.config && typeof groupData.config === "object" + ? JSON.stringify(groupData.config) + : groupData.config, + }; + return apiClient + .put(`/groups/${id}`, requestData) + .then((res) => res.data.data); }; /** @@ -38,5 +88,5 @@ export const updateGroup = (id: string, groupData: Partial => { - return apiClient.delete(`/groups/${id}`).then(res => res.data); -}; \ No newline at end of file + return apiClient.delete(`/groups/${id}`).then((res) => res.data); +};