import { HttpInterceptor } from '@dt-cloud/core' import { simpleCopy } from '@dt-cloud/common' export const DateFixInterceptor: HttpInterceptor = (req, next) => { return next({ ...req, data: req.data instanceof FormData ? req.data : mapDateFiled(false, req.data ? simpleCopy(req.data) : req.data), params: mapDateFiled(false, req.params ? simpleCopy(req.params) : req.params), }).then((res) => { let data = res.data if (req.fixDateField !== false) { data = mapDateFiled(true, res.data) } return { ...res, data, } }) } function mapDateFiled(revert: boolean, obj: any, field = '') { if (!obj) { return obj } if ((field.endsWith('Date') || field.endsWith('Time')) && typeof obj === 'number') { const result = revert ? obj * 1000 : Number.parseInt(obj / 1000 + '') if (isNaN(result)) { console.log(field, obj, result) } return result } if (typeof obj === 'object') { if (Array.isArray(obj)) { for (let i = 0; i < obj.length; i++) { obj[i] = mapDateFiled(revert, obj[i], field) } } else { Object.keys(obj).forEach((key) => { const value = obj[key] obj[key] = mapDateFiled(revert, value, key) }) } } return obj }