UNPKG

mt-flowbite-react

Version:

Official React components built for Flowbite and Tailwind CSS

130 lines (129 loc) 4.44 kB
'use client'; /**过时: 新的使用 memClient */ import { useSessionStore } from '@/store/session'; import { camelCase } from 'lodash-es'; const baseApiUrl = 'https://dev18383.yuepa8.com'; const apiBasePath = '/api/v3'; export const mtmApiCall = async (resName, action, searchParams, payload) => { const sessionData = useSessionStore.getState().sessionData; const resName2 = camelCase(resName); let url = `${baseApiUrl}${apiBasePath}/${resName2}/${action}`; if (searchParams) { url = `${url}?${new URLSearchParams(searchParams).toString()}`; } const res = await fetch(url, { method: payload ? 'POST' : 'GET', headers: { Authorization: `Bearer ${sessionData?.user?.accessToken}`, ...(payload && { 'Content-Type': 'application/json', }), }, body: JSON.stringify(payload), }); const contentType = res.headers.get('Content-Type'); if (contentType && contentType.includes('application/json')) { return await res.json(); } else { throw new Error(`响应不是 ${url} , JSON 格式:, ${await res.text()}`); } }; export const httpApiGet = async (apiPath, searchParams) => { let url = `${baseApiUrl}${apiBasePath}/${apiPath}`; if (searchParams) { url = `${url}?${new URLSearchParams(searchParams).toString()}`; } return httpGetRaw(url); }; export const httpGetRaw = async (url) => { const sessionData = useSessionStore.getState().sessionData; const res = await fetch(url, { method: 'GET', headers: { Authorization: `Bearer ${sessionData?.user?.accessToken}`, }, }); const contentType = res.headers.get('Content-Type'); if (contentType && contentType.includes('application/json')) { return await res.json(); } else { throw new Error(`响应不是 ${url} , JSON 格式:, ${await res.text()}`); } }; export const httpDelete = async (apiPath, searchParams) => { const sessionData = useSessionStore.getState().sessionData; let url = `${baseApiUrl}${apiBasePath}/${apiPath}`; if (searchParams) { url = `${url}?${new URLSearchParams(searchParams).toString()}`; } const res = await fetch(url, { method: 'DELETE', headers: { Authorization: `Bearer ${sessionData?.user?.accessToken}`, }, }); const contentType = res.headers.get('Content-Type'); if (contentType && contentType.includes('application/json')) { return await res.json(); } else { throw new Error(`响应不是 ${url} , JSON 格式:, ${await res.text()}`); } }; export const mtmApiPost = async (apiPath, payload) => { const sessionData = useSessionStore.getState().sessionData; const url = `${baseApiUrl}${apiBasePath}/${apiPath}`; const res = await fetch(url, { method: 'POST', headers: { Authorization: `Bearer ${sessionData?.user?.accessToken}`, ...(payload && { 'Content-Type': 'application/json', }), }, body: JSON.stringify(payload), }); const contentType = res.headers.get('Content-Type'); if (contentType && contentType.includes('application/json')) { return await res.json(); } else { throw new Error(`响应不是 ${url} , JSON 格式:, ${await res.text()}`); } }; //从后端获取表单配置 export const LoadFormConfig = (resName, action) => { return mtmApiCall('dash', 'form', undefined, { res: resName, action: action, }); }; // 加载dash 视图配置 export const LoadDashViewConfig = (resName) => { return mtmApiCall('dash', 'view', { res: resName, }); }; export const getResView = (resName) => { return httpGetRaw(baseApiUrl + `${apiBasePath}/resView/byRes/${resName}`); }; export const mtmApiAddItem = (resName, payload) => { return mtmApiPost(resName, payload); }; export const GetById = (resName, id) => { return mtmApiCall(resName, id?.toString()); }; export const DeleteById = (resName, id) => { return httpDelete(`${resName}/${id}`); }; export const loadDashConfig = () => { return httpApiGet('/dash/config'); }; export const getMe = () => { return httpGetRaw(baseApiUrl + '/auth/me'); }; export const oauth2Login = (account) => { return httpGetRaw(baseApiUrl + '/auth/oauth2Login'); };