// `api/x/${id}?t=i1ShCjbpxC5&pagSize`
//     fetch("/api/x?t=RalWodrampleFromGitp&paternerId[]", {
//         method: "PdST",
//         headers: {
//             "Content-Type": "application/json",
//         },
//         body: JSON.stringify(data),
// })
// .then((response)
//     => response.json ()
//     .then((data) => {
//         console.log("Success:", data);
//             .catch((error)
//                 =>
//                 (
//                     console.error("Error:", error
//     )
// src/api/api_path.ts

// const API_BASE_URL = '/api/x';

// const API_BASE_URL = '/api/x'; // 接口根路径
//
// /**
//  * 获取原料列表（支持分页、搜索）
//  * @param params - 分页参数（page: 当前页, pageSize: 每页数量）、搜索参数（search: 关键词）
//  */
// export const fetchList = async (params: {
//     page?: number;
//     pageSize?: number;
//     search?: string;
//     [key: string]: any; // 扩展参数
// }) => {
//     const query = new URLSearchParams({
//         t: 'i1ShCjbpxC5', // 固定参数（根据需求保留）
//         ...(params.page ? { page: params.page.toString() } : {}),
//         ...(params.pageSize ? { pageSize: params.pageSize.toString() } : {}),
//         ...(params.search ? { search: params.search } : {}),
//     });
//
//     try {
//         const response = await fetch(`${API_BASE_URL}?${query}`, {
//             method: 'GET',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//         });
//
//         if (!response.ok) {
//             const errorData = await response.json();
//             throw new Error(errorData.msg || `请求失败: ${response.status}`);
//         }
//
//         const data = await response.json();
//         return {
//             data: data.records || [], // 假设接口返回 { records: [], total: number }
//             total: data.total || 0,
//         };
//     } catch (error) {
//         console.error('获取原料列表失败:', error);
//         throw new Error('获取原料列表失败，请重试');
//     }
// };
//
// /**
//  * 获取单个原料详情
//  * @param id - 原料编码（主键）
//  */
// export const fetchItem = async (id: string) => {
//     try {
//         const response = await fetch(`${API_BASE_URL}/${id}?t=i1ShCjbpxC5`, {
//             method: 'GET',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//         });
//
//         if (!response.ok) {
//             const errorData = await response.json();
//             throw new Error(errorData.msg || `获取详情失败: ${response.status}`);
//         }
//
//         return await response.json();
//     } catch (error) {
//         console.error('获取原料详情失败:', error);
//         throw new Error('获取原料详情失败，请重试');
//     }
// };
//
// /**
//  * 新增原料
//  * @param data - 原料数据（需包含 id、name、type、unit、price、status 等必填字段）
//  */
// export const createItem = async (data: {
//     id: string;
//     name: string;
//     type: string;
//     unit: string;
//     price: number;
//     status?: number;
//     proprietorId?: string; // 创建用户 ID（可选，根据权限系统调整）
//     proprietorName?: string; // 创建用户名称（可选）
// }) => {
//     // 字段映射：确保前端驼峰字段与数据库下划线字段一致（如需）
//     const requestData = {
//         ...data,
//         // 示例：若数据库字段为 proprietor_id，需手动转换
//         // proprietor_id: data.proprietorId,
//         // proprietor_name: data.proprietorName,
//     };
//
//     try {
//         const response = await fetch(`${API_BASE_URL}?t=i1ShCjbpxC5`, {
//             method: 'POST',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//             body: JSON.stringify(requestData),
//         });
//
//         if (!response.ok) {
//             const errorData = await response.json();
//             throw new Error(errorData.msg || `新增失败: ${response.status}`);
//         }
//
//         return await response.json();
//     } catch (error) {
//         console.error('新增原料失败:', error);
//         throw new Error('新增原料失败，请检查参数');
//     }
// };
//
// /**
//  * 更新原料
//  * @param id - 原料编码（主键）
//  * @param data - 更新的数据（需包含至少一个可修改字段）
//  */
// export const updateItem = async (id: string, data: {
//     name?: string;
//     type?: string;
//     spaces?: string;
//     unit?: string;
//     price?: number;
//     status?: number;
// }) => {
//     try {
//         const response = await fetch(`${API_BASE_URL}/${id}?t=i1ShCjbpxC5`, {
//             method: 'PUT',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//             body: JSON.stringify(data),
//         });
//
//         if (!response.ok) {
//             const errorData = await response.json();
//             throw new Error(errorData.msg || `更新失败: ${response.status}`);
//         }
//
//         return await response.json();
//     } catch (error) {
//         console.error('更新原料失败:', error);
//         throw new Error('更新原料失败，请检查参数');
//     }
// };
//
// /**
//  * 删除原料（物理删除或逻辑删除）
//  * @param id - 原料编码（主键）
//  */
// export const deleteItem = async (id: string) => {
//     try {
//         const response = await fetch(`${API_BASE_URL}/${id}?t=i1ShCjbpxC5`, {
//             method: 'DELETE',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//         });
//
//         if (!response.ok) {
//             const errorData = await response.json();
//             throw new Error(errorData.msg || `删除失败: ${response.status}`);
//         }
//
//         return await response.json();
//     } catch (error) {
//         console.error('删除原料失败:', error);
//         throw new Error('删除原料失败，请确认权限');
//     }
// };


// // 获取列表数据
// export const fetchList = async (params: { pageSize?: number, [key: string]: any } = {}) => {
//     const query = new URLSearchParams();
//     if (params.pageSize) query.append('pageSize', params.pageSize.toString());
//     // 添加其他查询参数
//     Object.keys(params).forEach(key => {
//         if (key !== 'pageSize' && params[key] !== undefined) {
//             query.append(key, params[key]);
//         }
//     });
//
//     try {
//         const response = await fetch(`${API_BASE_URL}?t=i1ShCjbpxC5&${query.toString()}`, {
//             method: 'GET',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//         });
//         return await response.json();
//     } catch (error) {
//         console.error('获取列表失败:', error);
//         throw error;
//     }
// };
//
// // 获取单个数据项
// export const fetchItem = async (id: string) => {
//     try {
//         const response = await fetch(`${API_BASE_URL}/${id}?t=i1ShCjbpxC5`, {
//             method: 'GET',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//         });
//         return await response.json();
//     } catch (error) {
//         console.error('获取数据项失败:', error);
//         throw error;
//     }
// };
//
// // 创建数据
// export const createItem = async (data: any) => {
//     try {
//         const response = await fetch(`${API_BASE_URL}?t=i1ShCjbpxC5`, {
//             method: 'POST',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//             body: JSON.stringify(data),
//         });
//         console.log(JSON.stringify(data)+"qqqqqqqqqqqqqqqq")
//         return await response.json();
//     } catch (error) {
//         console.error('创建数据失败:', error);
//         throw error;
//     }
// };
//
// // 更新数据
// export const updateItem = async (id: string, data: any) => {
//     try {
//         const response = await fetch(`${API_BASE_URL}/${id}?t=i1ShCjbpxC5`, {
//             method: 'PUT',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//             body: JSON.stringify(data),
//         });
//         return await response.json();
//     } catch (error) {
//         console.error('更新数据失败:', error);
//         throw error;
//     }
// };
//
// // 删除数据
// export const deleteItem = async (id: string) => {
//     try {
//         const response = await fetch(`${API_BASE_URL}/${id}?t=i1ShCjbpxC5`, {
//             method: 'DELETE',
//             headers: {
//                 'Content-Type': 'application/json',
//             },
//         });
//         console.log(id+"要删除的IDgggggggggg")
//         return await response.json();
//     } catch (error) {
//         console.error('删除数据失败:', error);
//         throw error;
//     }
// };



// API基础路径
export const getDataPath = "/api/x";
export const getDataByFunc = "/api/f";
export const getDictPath = "/api/dict/data/type";
export const getDataByFuncV2 = "/api/f?f=my_hours_v2";

// 项目相关函数名称
const PROJECT_FUNC = "myprojectts";
const PROJECT_MANAGERS_FUNC = "myprojectmanagers";

// 通用请求函数
const lowcodeRequest = async (func: string, method: string = 'GET', data?: any) => {
    const url = `${getDataByFunc}?f=${func}`;
    const options: RequestInit = {
        method,
        headers: {
            'Content-Type': 'application/json',
        },
    };

    if (data && method !== 'GET') {
        options.body = JSON.stringify(data);
    }

    try {
        const response = await fetch(url, options);
        const result = await response.json();

        if (!response.ok) {
            throw new Error(result.msg || '请求失败');
        }

        return result;
    } catch (error) {
        console.error('API请求错误:', error);
        throw error;
    }
};

// 项目相关API
export const projectApi = {
    // 获取项目列表
    getProjects: () => lowcodeRequest(PROJECT_FUNC),

    // 获取单个项目
    getProjectById: (id: string) => lowcodeRequest(`${PROJECT_FUNC}&id=${id}`),

    // 创建项目
    createProject: (data: any) => lowcodeRequest(PROJECT_FUNC, 'POST', data),

    // 更新项目
    updateProject: (id: string, data: any) => lowcodeRequest(PROJECT_FUNC, 'PUT', { id, ...data }),

    // 删除项目
    deleteProject: (id: string | string[]) => {
        const ids = Array.isArray(id) ? id : [id];
        return lowcodeRequest(PROJECT_FUNC, 'DELETE', { ids });
    },

    // 获取项目管理者
    getProjectManagers: (projectId: string) =>
        lowcodeRequest(`${PROJECT_MANAGERS_FUNC}&project_id=${projectId}`),

    // 添加项目管理者
    addProjectManager: (projectId: string, managerId: number, role: string) =>
        lowcodeRequest(PROJECT_MANAGERS_FUNC, 'POST', { project_id: projectId, manager_id: managerId, role }),

    // 移除项目管理者
    removeProjectManager: (id: string) =>
        lowcodeRequest(PROJECT_MANAGERS_FUNC, 'DELETE', { id })
};
