import request from "../utils/request"; import * as Common from "../utils/common"; // 出库历史单与入库历史单共用 asnOrderLog 接口,仅前端 resource 不同 const getApiResource = (resource) => (resource === "outStockOrderLog" ? "asnOrderLog" : resource); const MyDataProvider = { // *** https://marmelab.com/react-admin/DataProviderWriting.html *** // get a list of records based on sort, filter, and pagination getList: async (resource, params) => { const apiResource = getApiResource(resource); const _params = Common.integrateParams(params); const res = await request.post(apiResource + "/page", _params); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: data.records, total: data.total, }); } return Promise.reject(new Error(msg)); }, // get a single record by id getOne: async (resource, params) => { const apiResource = getApiResource(resource); const res = await request.get(apiResource + "/" + params.id); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: { id: data.id, ...data, }, }); } return Promise.reject(new Error(msg)); }, // get a list of records based on an array of ids getMany: async (resource, params) => { if (resource === "user") { await new Promise((r) => setTimeout(r, 1000)); } const apiResource = getApiResource(resource); const res = await request.post(apiResource + "/many/" + params.ids); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: data.map((item) => ({ id: item.id, ...item, })), }); } return Promise.reject(new Error(msg)); }, // get the records referenced to another record, e.g. comments for a post getManyReference: async (resource, params) => { console.log("getManyReference", resource, params); return Promise.resolve(); }, // create a record create: async (resource, params) => { const apiResource = getApiResource(resource); const res = await request.post(apiResource + "/save", params?.data); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: { id: data.id, }, }); } return Promise.reject(new Error(msg)); }, // update a record based on a patch update: async (resource, params) => { const apiResource = getApiResource(resource); const res = await request.post(apiResource + "/update", { id: params.id, ...params.data, }); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: data, }); } return Promise.reject(new Error(msg)); }, // update a list of records based on an array of ids and a common patch updateMany: async (resource, params) => { const apiResource = getApiResource(resource); const res = await request.post( apiResource + "/update/many", params.ids.map((id) => ({ id, ...params.data })), ); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: data, }); } return Promise.reject(new Error(msg)); }, // delete a record by id delete: async (resource, params) => { const apiResource = getApiResource(resource); const res = await request.post(apiResource + "/remove/" + [params.id]); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: { id: params.id, }, }); } return Promise.reject(new Error(msg)); }, // delete a list of records based on an array of ids deleteMany: async (resource, params) => { const apiResource = getApiResource(resource); const res = await request.post(apiResource + "/remove/" + params?.ids); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: data, }); } return Promise.reject(new Error(msg)); }, // export excel from all data export: async (resource, params) => { const apiResource = getApiResource(resource); const _params = Common.integrateParams(params); try { const res = await request.post(`${apiResource}/export`, _params, { responseType: "blob", }); return res; } catch (error) { return Promise.reject(new Error(error)); } }, }; export default MyDataProvider;