From ffe674a88f73d0228be44342c2712eb488356687 Mon Sep 17 00:00:00 2001 From: xlsea Date: Tue, 13 May 2025 22:28:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=9C=A8=E6=9C=AA=E8=AF=B7=E6=B1=82=E5=AE=8C=E6=88=90=E6=97=B6?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E8=8F=9C=E5=8D=95=E5=87=BA=E7=8E=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=9B=9E=E6=98=BE=E5=8D=A1=E9=A1=BF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/axios/src/constant.ts | 3 +++ packages/axios/src/index.ts | 4 ++-- src/service/api/system/menu.ts | 5 +++-- src/service/request/index.ts | 7 ++++++- src/typings/components.d.ts | 32 ++++++++++++++++++++++++++++++++ src/views/system/menu/index.vue | 9 ++++++++- 6 files changed, 54 insertions(+), 6 deletions(-) diff --git a/packages/axios/src/constant.ts b/packages/axios/src/constant.ts index d6c5a338..e85ded38 100644 --- a/packages/axios/src/constant.ts +++ b/packages/axios/src/constant.ts @@ -3,3 +3,6 @@ export const REQUEST_ID_KEY = 'X-Request-Id'; /** the backend error code key */ export const BACKEND_ERROR_CODE = 'BACKEND_ERROR'; + +/** the request canceled code */ +export const REQUEST_CANCELED_CODE = 'ERR_CANCELED'; diff --git a/packages/axios/src/index.ts b/packages/axios/src/index.ts index c29d9d2b..89a6bf8a 100644 --- a/packages/axios/src/index.ts +++ b/packages/axios/src/index.ts @@ -3,7 +3,7 @@ import type { AxiosResponse, CreateAxiosDefaults, InternalAxiosRequestConfig } f import axiosRetry from 'axios-retry'; import { nanoid } from '@sa/utils'; import { createAxiosConfig, createDefaultOptions, createRetryOptions } from './options'; -import { BACKEND_ERROR_CODE, REQUEST_ID_KEY } from './constant'; +import { BACKEND_ERROR_CODE, REQUEST_CANCELED_CODE, REQUEST_ID_KEY } from './constant'; import type { CustomAxiosRequestConfig, FlatRequestInstance, @@ -178,6 +178,6 @@ export function createFlatRequest({ url: '/system/menu/list', method: 'get', - params + params, + signal }); } diff --git a/src/service/request/index.ts b/src/service/request/index.ts index e640b1d8..211fc403 100644 --- a/src/service/request/index.ts +++ b/src/service/request/index.ts @@ -1,5 +1,5 @@ import type { AxiosResponse, InternalAxiosRequestConfig } from 'axios'; -import { BACKEND_ERROR_CODE, createFlatRequest } from '@sa/axios'; +import { BACKEND_ERROR_CODE, REQUEST_CANCELED_CODE, createFlatRequest } from '@sa/axios'; import { useAuthStore } from '@/store/modules/auth'; import { localStg, sessionStg } from '@/utils/storage'; import { getServiceBaseURL } from '@/utils/service'; @@ -142,7 +142,12 @@ export const request = createFlatRequest = { '2': 'primary' }; +let controller = new AbortController(); + async function getBtnMenuList() { if (!currentMenu.value?.menuId) { return; } + controller.abort(); + controller = new AbortController(); startBtnLoading(); btnData.value = []; - const { data, error } = await fetchGetMenuList({ parentId: currentMenu.value?.menuId, menuType: 'F' }); + const { data, error } = await fetchGetMenuList( + { parentId: currentMenu.value?.menuId, menuType: 'F' }, + controller.signal + ); if (error) return; btnData.value = data || []; endBtnLoading();