| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import axios from 'axios'
- import type {
- ApiResponse,
- LocationCapacityMonitorVO,
- LocationRequest,
- LocationResourceDataVO
- } from '../types'
- import { AUTH_INVALID_EVENT, getApiBaseUrl, getToken, removeToken } from '../utils/auth'
- const apiClient = axios.create({
- timeout: 10000,
- headers: {
- 'Content-Type': 'application/json'
- }
- })
- // 请求拦截器:添加 token 和 Source
- apiClient.interceptors.request.use(
- (requestConfig) => {
- const token = getToken()
- if (token) {
- requestConfig.headers.Authorization = token
- }
- requestConfig.baseURL = getApiBaseUrl()
- requestConfig.headers.Source = 'web'
- return requestConfig
- },
- (error) => {
- return Promise.reject(error)
- }
- )
- // 响应拦截器:处理业务错误
- apiClient.interceptors.response.use(
- (response) => {
- const { code, message } = response.data || {}
- if (code === 600) {
- removeToken()
- window.dispatchEvent(new CustomEvent(AUTH_INVALID_EVENT))
- return Promise.reject(new Error(message || '登录失效,请重新登录'))
- }
- if (code !== 200) {
- return Promise.reject(new Error(message || '请求失败'))
- }
- return response
- },
- (error) => {
- return Promise.reject(error)
- }
- )
- export const fetchLocationData = async (
- params: LocationRequest
- ): Promise<LocationResourceDataVO[]> => {
- const response = await apiClient.post<ApiResponse<LocationResourceDataVO[]>>(
- '/api/basic/location/resource/selectLocLevelLocation',
- params
- )
- return response.data.data
- }
- export const fetchCapacityMonitor = async (): Promise<LocationCapacityMonitorVO[]> => {
- const response = await apiClient.get<ApiResponse<LocationCapacityMonitorVO[]>>(
- '/api/basic/location/resource/getCapacityMonitor'
- )
- return response.data.data
- }
|