From 5bd73867b6a24dd183a7ccc77734f2c9d0021ebd Mon Sep 17 00:00:00 2001 From: Netfan Date: Tue, 21 Jan 2025 13:09:42 +0800 Subject: [PATCH 1/3] feat: auto fetch icon list in iconPicker (#5446) * feat: auto fetch icon list in iconPicker * fix: add timeout controller for fetching * feat: add pending controller * fix: icon demo prefix --- .../components/icon-picker/icon-picker.vue | 99 ++++++++++++++++--- .../src/components/icon-picker/icons.ts | 56 +++++++++++ .../src/views/demos/features/icons/index.vue | 25 +++-- 3 files changed, 158 insertions(+), 22 deletions(-) create mode 100644 packages/effects/common-ui/src/components/icon-picker/icons.ts diff --git a/packages/effects/common-ui/src/components/icon-picker/icon-picker.vue b/packages/effects/common-ui/src/components/icon-picker/icon-picker.vue index 2b54a937..8ac65814 100644 --- a/packages/effects/common-ui/src/components/icon-picker/icon-picker.vue +++ b/packages/effects/common-ui/src/components/icon-picker/icon-picker.vue @@ -1,7 +1,7 @@ @@ -78,26 +81,32 @@ const inputComponent = h(Input);
原始样式(Iconify): - +
原始样式(svg): - +
- 使用Input: - + 自定义Input: +
- 可手动输入,只能点击图标打开弹窗: + 显示为一个Icon:
From 195ceec9b4d4d4dc889651eba5c74f655f090c0c Mon Sep 17 00:00:00 2001 From: vben Date: Tue, 21 Jan 2025 22:07:55 +0800 Subject: [PATCH 2/3] chore: release 5.5.3 --- apps/web-antd/package.json | 2 +- apps/web-ele/package.json | 2 +- apps/web-naive/package.json | 2 +- docs/package.json | 2 +- internal/lint-configs/commitlint-config/package.json | 2 +- internal/lint-configs/stylelint-config/package.json | 2 +- internal/node-utils/package.json | 2 +- internal/tailwind-config/package.json | 2 +- internal/tsconfig/package.json | 2 +- internal/vite-config/package.json | 2 +- package.json | 2 +- packages/@core/base/design/package.json | 2 +- packages/@core/base/icons/package.json | 2 +- packages/@core/base/shared/package.json | 2 +- packages/@core/base/typings/package.json | 2 +- packages/@core/composables/package.json | 2 +- packages/@core/preferences/package.json | 2 +- packages/@core/ui-kit/form-ui/package.json | 2 +- packages/@core/ui-kit/layout-ui/package.json | 2 +- packages/@core/ui-kit/menu-ui/package.json | 2 +- packages/@core/ui-kit/shadcn-ui/package.json | 2 +- packages/@core/ui-kit/tabs-ui/package.json | 2 +- packages/constants/package.json | 2 +- packages/effects/access/package.json | 2 +- packages/effects/common-ui/package.json | 2 +- packages/effects/hooks/package.json | 2 +- packages/effects/layouts/package.json | 2 +- packages/effects/plugins/package.json | 2 +- packages/effects/request/package.json | 2 +- packages/icons/package.json | 2 +- packages/locales/package.json | 2 +- packages/preferences/package.json | 2 +- packages/stores/package.json | 2 +- packages/styles/package.json | 2 +- packages/types/package.json | 2 +- packages/utils/package.json | 2 +- playground/package.json | 2 +- scripts/turbo-run/package.json | 2 +- scripts/vsh/package.json | 2 +- 39 files changed, 39 insertions(+), 39 deletions(-) diff --git a/apps/web-antd/package.json b/apps/web-antd/package.json index 33b98764..48762257 100644 --- a/apps/web-antd/package.json +++ b/apps/web-antd/package.json @@ -1,6 +1,6 @@ { "name": "@vben/web-antd", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://vben.pro", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/apps/web-ele/package.json b/apps/web-ele/package.json index 58769400..0b21070d 100644 --- a/apps/web-ele/package.json +++ b/apps/web-ele/package.json @@ -1,6 +1,6 @@ { "name": "@vben/web-ele", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://vben.pro", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/apps/web-naive/package.json b/apps/web-naive/package.json index 57857c89..c649252d 100644 --- a/apps/web-naive/package.json +++ b/apps/web-naive/package.json @@ -1,6 +1,6 @@ { "name": "@vben/web-naive", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://vben.pro", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/docs/package.json b/docs/package.json index 5ea22fd1..ca04e836 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@vben/docs", - "version": "5.5.2", + "version": "5.5.3", "private": true, "scripts": { "build": "vitepress build", diff --git a/internal/lint-configs/commitlint-config/package.json b/internal/lint-configs/commitlint-config/package.json index d7e4c518..a1645bb7 100644 --- a/internal/lint-configs/commitlint-config/package.json +++ b/internal/lint-configs/commitlint-config/package.json @@ -1,6 +1,6 @@ { "name": "@vben/commitlint-config", - "version": "5.5.2", + "version": "5.5.3", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/internal/lint-configs/stylelint-config/package.json b/internal/lint-configs/stylelint-config/package.json index 02491dd0..da7f4e8d 100644 --- a/internal/lint-configs/stylelint-config/package.json +++ b/internal/lint-configs/stylelint-config/package.json @@ -1,6 +1,6 @@ { "name": "@vben/stylelint-config", - "version": "5.5.2", + "version": "5.5.3", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/internal/node-utils/package.json b/internal/node-utils/package.json index b2a60da8..2ad95772 100644 --- a/internal/node-utils/package.json +++ b/internal/node-utils/package.json @@ -1,6 +1,6 @@ { "name": "@vben/node-utils", - "version": "5.5.2", + "version": "5.5.3", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/internal/tailwind-config/package.json b/internal/tailwind-config/package.json index 0b64d1d5..9737ab33 100644 --- a/internal/tailwind-config/package.json +++ b/internal/tailwind-config/package.json @@ -1,6 +1,6 @@ { "name": "@vben/tailwind-config", - "version": "5.5.2", + "version": "5.5.3", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/internal/tsconfig/package.json b/internal/tsconfig/package.json index 8ebfeebf..efeef619 100644 --- a/internal/tsconfig/package.json +++ b/internal/tsconfig/package.json @@ -1,6 +1,6 @@ { "name": "@vben/tsconfig", - "version": "5.5.2", + "version": "5.5.3", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/internal/vite-config/package.json b/internal/vite-config/package.json index 6c589a1f..708d519c 100644 --- a/internal/vite-config/package.json +++ b/internal/vite-config/package.json @@ -1,6 +1,6 @@ { "name": "@vben/vite-config", - "version": "5.5.2", + "version": "5.5.3", "private": true, "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", diff --git a/package.json b/package.json index bb74ea02..4b44e97d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vben-admin-monorepo", - "version": "5.5.2", + "version": "5.5.3", "private": true, "keywords": [ "monorepo", diff --git a/packages/@core/base/design/package.json b/packages/@core/base/design/package.json index 1d9888ca..ee196811 100644 --- a/packages/@core/base/design/package.json +++ b/packages/@core/base/design/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/design", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/base/icons/package.json b/packages/@core/base/icons/package.json index 144814a0..cd8b3896 100644 --- a/packages/@core/base/icons/package.json +++ b/packages/@core/base/icons/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/icons", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/base/shared/package.json b/packages/@core/base/shared/package.json index 53964a65..bc1c6f3e 100644 --- a/packages/@core/base/shared/package.json +++ b/packages/@core/base/shared/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/shared", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/base/typings/package.json b/packages/@core/base/typings/package.json index c7153939..f453b6ec 100644 --- a/packages/@core/base/typings/package.json +++ b/packages/@core/base/typings/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/typings", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/composables/package.json b/packages/@core/composables/package.json index 49f972fe..1a8df355 100644 --- a/packages/@core/composables/package.json +++ b/packages/@core/composables/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/composables", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/preferences/package.json b/packages/@core/preferences/package.json index 26232bf5..1ab498a8 100644 --- a/packages/@core/preferences/package.json +++ b/packages/@core/preferences/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/preferences", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/ui-kit/form-ui/package.json b/packages/@core/ui-kit/form-ui/package.json index a3f42ded..36a0596d 100644 --- a/packages/@core/ui-kit/form-ui/package.json +++ b/packages/@core/ui-kit/form-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/form-ui", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/ui-kit/layout-ui/package.json b/packages/@core/ui-kit/layout-ui/package.json index 25bf6715..0bed9beb 100644 --- a/packages/@core/ui-kit/layout-ui/package.json +++ b/packages/@core/ui-kit/layout-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/layout-ui", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/ui-kit/menu-ui/package.json b/packages/@core/ui-kit/menu-ui/package.json index 768c6e70..edb320f4 100644 --- a/packages/@core/ui-kit/menu-ui/package.json +++ b/packages/@core/ui-kit/menu-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/menu-ui", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/@core/ui-kit/shadcn-ui/package.json b/packages/@core/ui-kit/shadcn-ui/package.json index 439725a2..8f649d4c 100644 --- a/packages/@core/ui-kit/shadcn-ui/package.json +++ b/packages/@core/ui-kit/shadcn-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/shadcn-ui", - "version": "5.5.2", + "version": "5.5.3", "#main": "./dist/index.mjs", "#module": "./dist/index.mjs", "homepage": "https://github.com/vbenjs/vue-vben-admin", diff --git a/packages/@core/ui-kit/tabs-ui/package.json b/packages/@core/ui-kit/tabs-ui/package.json index 37970151..af32067e 100644 --- a/packages/@core/ui-kit/tabs-ui/package.json +++ b/packages/@core/ui-kit/tabs-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben-core/tabs-ui", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/constants/package.json b/packages/constants/package.json index c9372a50..dae564a4 100644 --- a/packages/constants/package.json +++ b/packages/constants/package.json @@ -1,6 +1,6 @@ { "name": "@vben/constants", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/access/package.json b/packages/effects/access/package.json index 4fa518b1..7a24ba8b 100644 --- a/packages/effects/access/package.json +++ b/packages/effects/access/package.json @@ -1,6 +1,6 @@ { "name": "@vben/access", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/common-ui/package.json b/packages/effects/common-ui/package.json index dc8ee773..aca45c7a 100644 --- a/packages/effects/common-ui/package.json +++ b/packages/effects/common-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vben/common-ui", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/hooks/package.json b/packages/effects/hooks/package.json index 2eb5708d..c9120d2a 100644 --- a/packages/effects/hooks/package.json +++ b/packages/effects/hooks/package.json @@ -1,6 +1,6 @@ { "name": "@vben/hooks", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/layouts/package.json b/packages/effects/layouts/package.json index ec230905..34da7f99 100644 --- a/packages/effects/layouts/package.json +++ b/packages/effects/layouts/package.json @@ -1,6 +1,6 @@ { "name": "@vben/layouts", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/plugins/package.json b/packages/effects/plugins/package.json index 85f7a86d..997e6601 100644 --- a/packages/effects/plugins/package.json +++ b/packages/effects/plugins/package.json @@ -1,6 +1,6 @@ { "name": "@vben/plugins", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/effects/request/package.json b/packages/effects/request/package.json index fb8c7885..bbea7262 100644 --- a/packages/effects/request/package.json +++ b/packages/effects/request/package.json @@ -1,6 +1,6 @@ { "name": "@vben/request", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/icons/package.json b/packages/icons/package.json index f0936abe..57a7c9d4 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -1,6 +1,6 @@ { "name": "@vben/icons", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/locales/package.json b/packages/locales/package.json index 0f887979..4ec64306 100644 --- a/packages/locales/package.json +++ b/packages/locales/package.json @@ -1,6 +1,6 @@ { "name": "@vben/locales", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/preferences/package.json b/packages/preferences/package.json index 65bfc4c6..950ba847 100644 --- a/packages/preferences/package.json +++ b/packages/preferences/package.json @@ -1,6 +1,6 @@ { "name": "@vben/preferences", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/stores/package.json b/packages/stores/package.json index 1deac22c..83f8a100 100644 --- a/packages/stores/package.json +++ b/packages/stores/package.json @@ -1,6 +1,6 @@ { "name": "@vben/stores", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/styles/package.json b/packages/styles/package.json index 518aea36..b8d96dab 100644 --- a/packages/styles/package.json +++ b/packages/styles/package.json @@ -1,6 +1,6 @@ { "name": "@vben/styles", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/types/package.json b/packages/types/package.json index e062922e..3b2323fc 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@vben/types", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/packages/utils/package.json b/packages/utils/package.json index bd64a1db..6550554f 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@vben/utils", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://github.com/vbenjs/vue-vben-admin", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/playground/package.json b/playground/package.json index 21e9c4d2..8897e0e3 100644 --- a/playground/package.json +++ b/playground/package.json @@ -1,6 +1,6 @@ { "name": "@vben/playground", - "version": "5.5.2", + "version": "5.5.3", "homepage": "https://vben.pro", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { diff --git a/scripts/turbo-run/package.json b/scripts/turbo-run/package.json index 367367bd..8128ec5c 100644 --- a/scripts/turbo-run/package.json +++ b/scripts/turbo-run/package.json @@ -1,6 +1,6 @@ { "name": "@vben/turbo-run", - "version": "5.5.2", + "version": "5.5.3", "private": true, "license": "MIT", "type": "module", diff --git a/scripts/vsh/package.json b/scripts/vsh/package.json index 5ec654ea..9767a4dc 100644 --- a/scripts/vsh/package.json +++ b/scripts/vsh/package.json @@ -1,6 +1,6 @@ { "name": "@vben/vsh", - "version": "5.5.2", + "version": "5.5.3", "private": true, "license": "MIT", "type": "module", From e225159cce49eea76f5b5f4796cfc3686d6d684d Mon Sep 17 00:00:00 2001 From: Netfan Date: Wed, 22 Jan 2025 00:59:10 +0800 Subject: [PATCH 3/3] fix: request download and upload not support `responseReturn` (#5456) * fix: request download and upload not support `responseReturn` * docs: update * fix: type of request client upload result --- .../request-client/modules/downloader.test.ts | 2 ++ .../src/request-client/modules/downloader.ts | 34 ++++++++++++------- .../src/request-client/modules/uploader.ts | 11 +++--- .../src/request-client/preset-interceptors.ts | 14 ++++---- .../request/src/request-client/types.ts | 6 ++-- playground/src/api/examples/download.ts | 28 +++++++++++++++ .../demos/features/file-download/index.vue | 26 ++++++++++++++ 7 files changed, 93 insertions(+), 28 deletions(-) create mode 100644 playground/src/api/examples/download.ts diff --git a/packages/effects/request/src/request-client/modules/downloader.test.ts b/packages/effects/request/src/request-client/modules/downloader.test.ts index 0e78b54f..d44dcbb7 100644 --- a/packages/effects/request/src/request-client/modules/downloader.test.ts +++ b/packages/effects/request/src/request-client/modules/downloader.test.ts @@ -31,6 +31,7 @@ describe('fileDownloader', () => { expect(result).toEqual(mockBlob); expect(mockAxiosInstance.get).toHaveBeenCalledWith(url, { responseType: 'blob', + responseReturn: 'body', }); }); @@ -51,6 +52,7 @@ describe('fileDownloader', () => { expect(mockAxiosInstance.get).toHaveBeenCalledWith(url, { ...customConfig, responseType: 'blob', + responseReturn: 'body', }); }); diff --git a/packages/effects/request/src/request-client/modules/downloader.ts b/packages/effects/request/src/request-client/modules/downloader.ts index bf065d33..77e72c6c 100644 --- a/packages/effects/request/src/request-client/modules/downloader.ts +++ b/packages/effects/request/src/request-client/modules/downloader.ts @@ -1,7 +1,14 @@ -import type { AxiosRequestConfig } from 'axios'; - import type { RequestClient } from '../request-client'; -import type { RequestResponse } from '../types'; +import type { RequestClientConfig } from '../types'; + +type DownloadRequestConfig = { + /** + * 定义期望获得的数据类型。 + * raw: 原始的AxiosResponse,包括headers、status等。 + * body: 只返回响应数据的BODY部分(Blob) + */ + responseReturn?: 'body' | 'raw'; +} & Omit; class FileDownloader { private client: RequestClient; @@ -9,20 +16,23 @@ class FileDownloader { constructor(client: RequestClient) { this.client = client; } - - public async download( + /** + * 下载文件 + * @param url 文件的完整链接 + * @param config 配置信息,可选。 + * @returns 如果config.responseReturn为'body',则返回Blob(默认),否则返回RequestResponse + */ + public async download( url: string, - config?: AxiosRequestConfig, - ): Promise> { - const finalConfig: AxiosRequestConfig = { + config?: DownloadRequestConfig, + ): Promise { + const finalConfig: DownloadRequestConfig = { + responseReturn: 'body', ...config, responseType: 'blob', }; - const response = await this.client.get>( - url, - finalConfig, - ); + const response = await this.client.get(url, finalConfig); return response; } diff --git a/packages/effects/request/src/request-client/modules/uploader.ts b/packages/effects/request/src/request-client/modules/uploader.ts index eed69f85..ee5e7a23 100644 --- a/packages/effects/request/src/request-client/modules/uploader.ts +++ b/packages/effects/request/src/request-client/modules/uploader.ts @@ -1,6 +1,5 @@ -import type { AxiosRequestConfig, AxiosResponse } from 'axios'; - import type { RequestClient } from '../request-client'; +import type { RequestClientConfig } from '../types'; class FileUploader { private client: RequestClient; @@ -9,18 +8,18 @@ class FileUploader { this.client = client; } - public async upload( + public async upload( url: string, data: Record & { file: Blob | File }, - config?: AxiosRequestConfig, - ): Promise { + config?: RequestClientConfig, + ): Promise { const formData = new FormData(); Object.entries(data).forEach(([key, value]) => { formData.append(key, value); }); - const finalConfig: AxiosRequestConfig = { + const finalConfig: RequestClientConfig = { ...config, headers: { 'Content-Type': 'multipart/form-data', diff --git a/packages/effects/request/src/request-client/preset-interceptors.ts b/packages/effects/request/src/request-client/preset-interceptors.ts index 4f327dd0..71ddc74b 100644 --- a/packages/effects/request/src/request-client/preset-interceptors.ts +++ b/packages/effects/request/src/request-client/preset-interceptors.ts @@ -25,15 +25,15 @@ export const defaultResponseInterceptor = ({ if (config.responseReturn === 'raw') { return response; } - const code = responseData[codeField]; - if ( - status >= 200 && status < 400 && isFunction(successCode) - ? successCode(code) - : code === successCode - ) { + + if (status >= 200 && status < 400) { if (config.responseReturn === 'body') { return responseData; - } else { + } else if ( + isFunction(successCode) + ? successCode(responseData[codeField]) + : responseData[codeField] === successCode + ) { return isFunction(dataField) ? dataField(responseData) : responseData[dataField]; diff --git a/packages/effects/request/src/request-client/types.ts b/packages/effects/request/src/request-client/types.ts index e37db5c1..1abfd981 100644 --- a/packages/effects/request/src/request-client/types.ts +++ b/packages/effects/request/src/request-client/types.ts @@ -7,9 +7,9 @@ import type { type ExtendOptions = { /** 响应数据的返回方式。 - * raw: 原始的AxiosResponse,包括headers、status等。 - * body: 返回响应数据的BODY部分。 - * data: 解构响应的BODY数据,只返回其中的data节点数据。 + * raw: 原始的AxiosResponse,包括headers、status等,不做是否成功请求的检查。 + * body: 返回响应数据的BODY部分(只会根据status检查请求是否成功,忽略对code的判断,这种情况下应由调用方检查请求是否成功)。 + * data: 解构响应的BODY数据,只返回其中的data节点数据(会检查status和code是否为成功状态)。 */ responseReturn?: 'body' | 'data' | 'raw'; }; diff --git a/playground/src/api/examples/download.ts b/playground/src/api/examples/download.ts new file mode 100644 index 00000000..0b4dcd36 --- /dev/null +++ b/playground/src/api/examples/download.ts @@ -0,0 +1,28 @@ +import type { RequestResponse } from '@vben/request'; + +import { requestClient } from '../request'; + +/** + * 下载文件,获取Blob + * @returns Blob + */ +async function downloadFile1() { + return requestClient.download( + 'https://unpkg.com/@vbenjs/static-source@0.1.7/source/logo-v1.webp', + ); +} + +/** + * 下载文件,获取完整的Response + * @returns RequestResponse + */ +async function downloadFile2() { + return requestClient.download>( + 'https://unpkg.com/@vbenjs/static-source@0.1.7/source/logo-v1.webp', + { + responseReturn: 'raw', + }, + ); +} + +export { downloadFile1, downloadFile2 }; diff --git a/playground/src/views/demos/features/file-download/index.vue b/playground/src/views/demos/features/file-download/index.vue index b4125b8a..5342141d 100644 --- a/playground/src/views/demos/features/file-download/index.vue +++ b/playground/src/views/demos/features/file-download/index.vue @@ -1,4 +1,6 @@