(error: AxiosError)
| 210 | } |
| 211 | |
| 212 | private handleError(error: AxiosError) { |
| 213 | let errorMessage = 'Request error' |
| 214 | |
| 215 | if (error.response) { |
| 216 | switch (error.response.status) { |
| 217 | case 400: |
| 218 | errorMessage = 'Invalid request parameters' |
| 219 | break |
| 220 | case 401: |
| 221 | errorMessage = error.response?.data |
| 222 | ? error.response.data.toString() |
| 223 | : 'Unauthorized, please login again' |
| 224 | // Redirect to login page if needed |
| 225 | if (assistantStore.getAssistant) { |
| 226 | wsCache.delete('user.token') |
| 227 | if (router?.push) { |
| 228 | router.push(`/401?title=${encodeURIComponent(errorMessage)}`) |
| 229 | } else { |
| 230 | window.location.href = `/#/401?title=${encodeURIComponent(errorMessage)}` |
| 231 | } |
| 232 | return |
| 233 | } |
| 234 | ElMessage({ |
| 235 | message: errorMessage, |
| 236 | type: 'error', |
| 237 | showClose: true, |
| 238 | }) |
| 239 | setTimeout(() => { |
| 240 | wsCache.delete('user.token') |
| 241 | window.location.reload() |
| 242 | }, 2000) |
| 243 | return |
| 244 | // break |
| 245 | case 403: |
| 246 | errorMessage = 'Access denied' |
| 247 | break |
| 248 | case 404: |
| 249 | errorMessage = 'Resource not found' |
| 250 | break |
| 251 | case 500: |
| 252 | errorMessage = 'Server error' |
| 253 | break |
| 254 | default: |
| 255 | errorMessage = `Server responded with error: ${error.response.status}` |
| 256 | } |
| 257 | if (error?.response?.data) { |
| 258 | errorMessage = error.response.data.toString() |
| 259 | } |
| 260 | } else if (error.request) { |
| 261 | errorMessage = 'No response from server' |
| 262 | } else if (axios.isCancel(error)) { |
| 263 | errorMessage = 'Request canceled' |
| 264 | return // Skip showing cancel messages |
| 265 | } else { |
| 266 | errorMessage = error['message'] || 'Unknown error' |
| 267 | } |
| 268 | |
| 269 | // Show error using UI library (e.g., Element Plus, Ant Design) |
no test coverage detected