mt-flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
130 lines (129 loc) • 4.44 kB
JavaScript
'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');
};