- 新增 src/utils/countryConfig.js 文件,包含各国地址字段规则和邮编格式配置 - 新增 src/i18n/index.js 文件,实现基于货币代码的国际化翻译功能 - 新增 src/i18n/locales.js 文件,提供中英马泰菲多语言静态翻译文本 - 实现货币代码到国家代码映射及地址验证功能 - 添加订单创建页、商品详情页、订单确认页等多页面国际化支持 - 支持新加坡、马来西亚、菲律宾、泰国、越南等国家地址格式配置
65 lines
1.6 KiB
JavaScript
65 lines
1.6 KiB
JavaScript
import axios from 'axios'
|
||
import { ElMessage } from 'element-plus'
|
||
import config from '../config'
|
||
|
||
const request = axios.create({
|
||
baseURL: config.apiBaseUrl,
|
||
timeout: config.requestTimeout,
|
||
headers: {
|
||
'Content-Type': 'application/json'
|
||
}
|
||
})
|
||
|
||
// 请求拦截器
|
||
request.interceptors.request.use(
|
||
config => {
|
||
// 如果是文件上传,不设置 Content-Type,让浏览器自动设置(包含 boundary)
|
||
if (config.data instanceof FormData) {
|
||
delete config.headers['Content-Type']
|
||
}
|
||
return config
|
||
},
|
||
error => {
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
|
||
// 响应拦截器
|
||
request.interceptors.response.use(
|
||
response => {
|
||
const data = response.data
|
||
|
||
// 如果响应格式是统一的Result格式
|
||
if (data && typeof data === 'object' && 'code' in data) {
|
||
if (data.code === '0000') {
|
||
// 返回完整对象,让调用方自己处理
|
||
return data
|
||
} else {
|
||
ElMessage.error(data.message || '请求失败')
|
||
return Promise.reject(new Error(data.message || '请求失败'))
|
||
}
|
||
}
|
||
|
||
return data
|
||
},
|
||
error => {
|
||
console.error('请求错误:', error)
|
||
|
||
let message = '请求失败'
|
||
if (error.response) {
|
||
const data = error.response.data
|
||
message = data?.message || `请求失败: ${error.response.status}`
|
||
} else if (error.request) {
|
||
message = '网络错误,请检查网络连接'
|
||
} else {
|
||
message = error.message || '请求失败'
|
||
}
|
||
|
||
ElMessage.error(message)
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
|
||
export default request
|
||
|