191 lines
4.8 KiB
JavaScript
191 lines
4.8 KiB
JavaScript
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
|
||
})
|
||
}
|
||
}
|
||
} |