import axios from 'axios' // 格式化日期字段 function formatDateFields(data) { const dateFields = ['timestamp', 'onlineDate', 'startDate', 'endDate', 'furInDate', 'furOutDate', 'createTime', 'updateTime']; // 对每个日期字段进行格式化 dateFields.forEach(field => { // 处理空值情况 if (!data[field] || data[field] === '') { data[field] = null; return; } // 如果已经是ISO格式的日期字符串,保持不变 if (typeof data[field] === 'string' && data[field].includes('T')) { return; } // 如果是日期对象,转换为ISO格式字符串 if (data[field] instanceof Date) { data[field] = data[field].toISOString().slice(0, 19); return; } // 如果是其他格式的日期字符串,转换为ISO格式 if (typeof data[field] === 'string') { try { const date = new Date(data[field]); if (!isNaN(date.getTime())) { data[field] = date.toISOString().slice(0, 19); } else { data[field] = null; } } catch (e) { console.error(`日期格式化错误 (${field}):`, e); data[field] = null; } } }); return data; } export default function createFetch(url) { const l2Request = axios.create({ baseURL: url, headers: { 'Content-Type': 'application/json' }, timeout: 10000, // 自定义响应数据转换,处理大整数ID精度问题 transformResponse: [data => { // 在JSON解析前将所有id数值转换为字符串,避免大整数精度丢失 const modifiedData = data.replace(/"id":\s*(\d+)/g, '"id": "$1"'); return JSON.parse(modifiedData); }] }) l2Request.interceptors.response.use(response => { return response.data }) return { listPlan: (query) => { // 确保查询参数格式正确 const params = { coilid: query.coilid || '', entryThick: query.entryThick || null, entryWidth: query.entryWidth || null, status: query.status || '', // 使用ISO格式的日期时间,不添加额外的时间部分 startDate: query.startDate || '', endDate: query.endDate || '' }; return l2Request({ url: '/api/pdi/list', method: 'post', data: params }) }, getPlan: (coilId) => l2Request({ url: '/api/pdi/getByCoilId', method: 'get', params: { coilId: coilId } }), addPlan: (data) => { // 深拷贝数据,避免修改原始对象 const formattedData = JSON.parse(JSON.stringify(data)); // 处理日期字段,确保格式正确 formatDateFields(formattedData); return l2Request({ url: '/api/pdi/add', method: 'post', data: formattedData }) }, updatePlan: (data) => { // 深拷贝数据,避免修改原始对象 const formattedData = JSON.parse(JSON.stringify(data)); // 处理日期字段,确保格式正确 formatDateFields(formattedData); return l2Request({ url: '/api/pdi/update', method: 'put', data: formattedData }) }, delPlan: (data) => { // 确保ids是数组 const idArray = Array.isArray(ids) ? ids : [ids]; // 始终保持ID为字符串类型,避免大整数精度问题 const processedIds = idArray.map(id => String(id)); console.log('删除的ID:', processedIds); return l2Request({ url: '/api/pdi/delete', method: 'post', data: processedIds }) }, getSetup: (ID) => { return l2Request({ url: '/business/setup/' + ID, method: 'get', }) }, addSetup: (data) => { return l2Request({ url: '/business/setup', method: 'post', data: data }) }, listSetup: (query) => { return l2Request({ url: '/business/setup/list', method: 'post', data: query }) }, getBendforce: (query) => { return l2Request({ url: '/business/bendforce', method: 'get', params: query }) }, getFur: (steelGrade) => { return l2Request({ url: '/business/fur/' + steelGrade, method: 'get' }) }, getMesh: (query) => { return l2Request({ url: '/business/mesh', method: 'get', params: query }) }, getRollforce: (query) => { return l2Request({ url: '/business/rollforce', method: 'get', params: query }) }, getTension: (query) => { return l2Request({ url: '/business/tension', method: 'get', params: query }) }, getTl: (query) => { return l2Request({ url: '/business/tl', method: 'get', params: query }) } } }