UNPKG

@fmdevui/fm-dev

Version:

Page level components developed based on Element Plus.

236 lines (233 loc) 5.18 kB
import { cancelRequest, service } from '../utils/request.mjs'; const useBaseApi = (module, options = {}) => { const baseUrl = `/api/${module}/`; const request = (config, cancel = false) => { if (cancel) { cancelRequest(config.url || ""); return Promise.resolve({}); } config = { ...config, ...options }; return service(config); }; return { baseUrl, request, pcomm: function(data, action, cancel = false) { return request( { url: baseUrl + action, method: "post", data }, cancel ); }, post: function(data, action, cancel = false) { return request( { url: baseUrl + action, method: "post", data }, cancel ); }, gcomm: function(params, action, cancel = false) { return request( { url: baseUrl + action, method: "get", params }, cancel ); }, get: function(params, action, cancel = false) { return request( { url: baseUrl + action, method: "get", params }, cancel ); }, page: function(data, cancel = false) { return request( { url: baseUrl + "page", method: "post", data }, cancel ); }, detail: function(id, cancel = false) { return request( { url: baseUrl + "detail", method: "get", data: { id } }, cancel ); }, dropdownData: function(data, cancel = false) { return request( { url: baseUrl + "dropdownData", method: "post", data }, cancel ); }, add: function(data, cancel = false) { return request( { url: baseUrl + "add", method: "post", data }, cancel ); }, update: function(data, cancel = false) { return request( { url: baseUrl + "update", method: "post", data }, cancel ); }, setStatus: function(data, cancel = false) { return request( { url: baseUrl + "setStatus", method: "post", data }, cancel ); }, delete: function(data, cancel = false) { return request( { url: baseUrl + "delete", method: "post", data }, cancel ); }, batchDelete: function(data, cancel = false) { return request( { url: baseUrl + "batchDelete", method: "post", data }, cancel ); }, exportData: function(data, cancel = false) { return request( { responseType: "arraybuffer", url: baseUrl + "export", method: "post", data }, cancel ); }, downloadTemplate: function(cancel = false) { return request( { responseType: "arraybuffer", url: baseUrl + "import", method: "get" }, cancel ); }, importData: function(file, cancel = false) { const formData = new FormData(); formData.append("file", file); return request( { headers: { "Content-Type": "multipart/form-data;charset=UTF-8" }, responseType: "arraybuffer", url: baseUrl + "import", method: "post", data: formData }, cancel ); }, uploadFile: function(params, action, cancel = false) { const formData = new FormData(); formData.append("file", params.file); if (params.data) { Object.keys(params.data).forEach((key) => { const value = params.data[key]; if (Array.isArray(value)) { value.forEach((item) => formData.append(`${key}[]`, item)); return; } formData.append(key, params.data[key]); }); } return request( { url: baseUrl + action, method: "POST", data: formData, headers: { "Content-Type": "multipart/form-data;charset=UTF-8", ignoreCancelToken: true } }, cancel ); } }; }; const useApi = (url, options = {}) => { const baseUrl = url || ""; const request = (config, cancel = false) => { if (cancel) { cancelRequest(config.url || ""); return Promise.resolve({}); } config = { ...config, ...options }; return service(config); }; return { baseUrl, request, post: function(data, action, cancel = false) { return request( { url: baseUrl + action, method: "post", data }, cancel ); }, get: function(params, action, cancel = false) { return request( { url: baseUrl + action, method: "get", params }, cancel ); } }; }; export { useApi, useBaseApi };