diff --git a/CHANGELOG.zh_CN.md b/CHANGELOG.zh_CN.md index b9f75e602eaa89c9df930ad1a8f4070e1865612a..2363d54f1221e9f798f2978ee955fdf870d11727 100644 --- a/CHANGELOG.zh_CN.md +++ b/CHANGELOG.zh_CN.md @@ -6,6 +6,10 @@ - 升级 husky 到 5.0 - 新增 `brotli`|`gzip`压缩及相关测试命令 +### ⚡ Performance Improvements + +- 调整获取用户信息接口返回值为数组格式 + ### 🐛 Bug Fixes - 修复 Upload 组件 maxNumber 失效问题 diff --git a/mock/sys/user.ts b/mock/sys/user.ts index 681ed04677649571c791ab5bda10532504e3a9a4..318a7b144b71927e13f186b9b4fe54738ddfd687 100644 --- a/mock/sys/user.ts +++ b/mock/sys/user.ts @@ -10,10 +10,12 @@ function createFakeUserList() { desc: 'manager', password: '123456', token: 'fakeToken1', - role: { - roleName: 'Super Admin', - value: 'super', - }, + roles: [ + { + roleName: 'Super Admin', + value: 'super', + }, + ], }, { userId: '2', @@ -22,10 +24,12 @@ function createFakeUserList() { realName: 'test user', desc: 'tester', token: 'fakeToken2', - role: { - roleName: 'Tester', - value: 'test', - }, + roles: [ + { + roleName: 'Tester', + value: 'test', + }, + ], }, ]; } @@ -49,9 +53,9 @@ export default [ if (!checkUser) { return resultError('Incorrect account or password!'); } - const { userId, username: _username, token, realName, desc, role } = checkUser; + const { userId, username: _username, token, realName, desc, roles } = checkUser; return resultSuccess({ - role, + roles, userId, username: _username, token, diff --git a/package.json b/package.json index a2c5d27583096424bd6b7fd3ac7117f8f1a1b96f..d700f9b94844e62032c535a5dd8dfd5f23ee8a15 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,8 @@ }, "resolutions": { "//": "Used to install imagemin dependencies, because imagemin may not be installed in China.If it is abroad, you can delete it", - "bin-wrapper": "npm:bin-wrapper-china" + "bin-wrapper": "npm:bin-wrapper-china", + "ecstatic": "4.1.4" }, "repository": { "type": "git", diff --git a/src/api/sys/model/userModel.ts b/src/api/sys/model/userModel.ts index 797224274171d9285738ae5f51c6eb21f9a0c853..170430c5ce88c85c04838b27114e1d83d4eebeae 100644 --- a/src/api/sys/model/userModel.ts +++ b/src/api/sys/model/userModel.ts @@ -31,7 +31,7 @@ export interface LoginResultModel { * @description: Get user information return value */ export interface GetUserInfoByUserIdModel { - role: RoleInfo; + roles: RoleInfo[]; // 用户id userId: string | number; // 用户名 diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 6a3f47488fa7f323eb4587e0cf93027371cb0f89..35f94b17af0b4164b4987e8deb052d99bef5f099 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -113,8 +113,6 @@ class User extends VuexModule { // get user info const userInfo = await this.getUserInfoAction({ userId }); - // const name = FULL_PAGE_NOT_FOUND_ROUTE.name; - // name && router.removeRoute(name); goHome && (await router.replace(PageEnum.BASE_HOME)); return userInfo; } catch (error) { @@ -125,8 +123,8 @@ class User extends VuexModule { @Action async getUserInfoAction({ userId }: GetUserInfoByUserIdParams) { const userInfo = await getUserInfoById({ userId }); - const { role } = userInfo; - const roleList = [role.value] as RoleEnum[]; + const { roles } = userInfo; + const roleList = roles.map((item) => item.value) as RoleEnum[]; this.commitUserInfoState(userInfo); this.commitRoleListState(roleList); return userInfo; diff --git a/src/utils/http/axios/Axios.ts b/src/utils/http/axios/Axios.ts index 465e2e00c1d07178ebfdeb267ea98e1d24dd40c1..30083b733dd938f203b7b4ef9d26c8e53c39b9a6 100644 --- a/src/utils/http/axios/Axios.ts +++ b/src/utils/http/axios/Axios.ts @@ -6,14 +6,13 @@ import { isFunction } from '/@/utils/is'; import { cloneDeep } from 'lodash-es'; import type { RequestOptions, CreateAxiosOptions, Result, UploadFileParams } from './types'; -// import { ContentTypeEnum } from '/@/enums/httpEnum'; import { errorResult } from './const'; import { ContentTypeEnum } from '/@/enums/httpEnum'; export * from './axiosTransform'; /** - * @description: axios模块 + * @description: axios module */ export class VAxios { private axiosInstance: AxiosInstance; @@ -26,7 +25,7 @@ export class VAxios { } /** - * @description: 创建axios实例 + * @description: Create axios instance */ private createAxios(config: CreateAxiosOptions): void { this.axiosInstance = axios.create(config); @@ -42,7 +41,7 @@ export class VAxios { } /** - * @description: 重新配置axios + * @description: Reconfigure axios */ configAxios(config: CreateAxiosOptions) { if (!this.axiosInstance) { @@ -52,7 +51,7 @@ export class VAxios { } /** - * @description: 设置通用header + * @description: Set general header */ setHeader(headers: any): void { if (!this.axiosInstance) { @@ -62,7 +61,7 @@ export class VAxios { } /** - * @description: 拦截器配置 + * @description: Interceptor configuration */ private setupInterceptors() { const transform = this.getTransform(); @@ -78,7 +77,7 @@ export class VAxios { const axiosCanceler = new AxiosCanceler(); - // 请求拦截器配置处理 + // Request interceptor configuration processing this.axiosInstance.interceptors.request.use((config: AxiosRequestConfig) => { // If cancel repeat request is turned on, then cancel repeat request is prohibited const { @@ -91,12 +90,12 @@ export class VAxios { return config; }, undefined); - // 请求拦截器错误捕获 + // Request interceptor error capture requestInterceptorsCatch && isFunction(requestInterceptorsCatch) && this.axiosInstance.interceptors.request.use(undefined, requestInterceptorsCatch); - // 响应结果拦截器处理 + // Response result interceptor processing this.axiosInstance.interceptors.response.use((res: AxiosResponse) => { res && axiosCanceler.removePending(res.config); if (responseInterceptors && isFunction(responseInterceptors)) { @@ -105,14 +104,14 @@ export class VAxios { return res; }, undefined); - // 响应结果拦截器错误捕获 + // Response result interceptor error capture responseInterceptorsCatch && isFunction(responseInterceptorsCatch) && this.axiosInstance.interceptors.response.use(undefined, responseInterceptorsCatch); } /** - * @description: 文件上传 + * @description: File Upload */ uploadFile(config: AxiosRequestConfig, params: UploadFileParams) { const formData = new window.FormData(); @@ -145,9 +144,6 @@ export class VAxios { }); } - /** - * @description: 请求方法 - */ request(config: AxiosRequestConfig, options?: RequestOptions): Promise { let conf: AxiosRequestConfig = cloneDeep(config); const transform = this.getTransform(); diff --git a/src/utils/http/axios/checkStatus.ts b/src/utils/http/axios/checkStatus.ts index 70ce950bfe0eb2019a544b65870d1ec2beb92259..fe05db1c4a3ddc81c077bfa3c4e47c09aa39d784 100644 --- a/src/utils/http/axios/checkStatus.ts +++ b/src/utils/http/axios/checkStatus.ts @@ -10,9 +10,9 @@ export function checkStatus(status: number, msg: string): void { case 400: error(`${msg}`); break; - // 401: 未登录 - // 未登录则跳转登录页面,并携带当前页面的路径 - // 在登录成功后返回当前页面,这一步需要在登录页操作。 + // 401: Not logged in + // Jump to the login page if not logged in, and carry the path of the current page + // Return to the current page after successful login. This step needs to be operated on the login page. case 401: error(t('sys.api.errMsg401')); userStore.loginOut(true); diff --git a/yarn.lock b/yarn.lock index 5fd5fb94fd04697836757d2f9144cf4cd61f66f5..b59cbbd264fe892ccac64795111e468b63e66e15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2807,6 +2807,11 @@ chardet@^0.7.0: resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +charset@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz#8d59546c355be61049a8fa9164747793319852bd" + integrity sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg== + chokidar@^3.5.1: version "3.5.1" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" @@ -3811,15 +3816,17 @@ echarts@^4.9.0: dependencies: zrender "4.3.2" -ecstatic@^3.3.2: - version "3.3.2" - resolved "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz#6d1dd49814d00594682c652adb66076a69d46c48" - integrity sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog== +ecstatic@4.1.4, ecstatic@^3.3.2: + version "4.1.4" + resolved "https://registry.npmjs.org/ecstatic/-/ecstatic-4.1.4.tgz#86bf340dabe56c4d0c93d406ac36c040f68e1d79" + integrity sha512-8E4ZLK4uRuB9pwywGpy/B9vcz4gCp6IY7u4cMbeCINr/fjb1v+0wf0Ae2XlfSnG8xZYnE4uaJBjFkYI0bqcIdw== dependencies: + charset "^1.0.1" he "^1.1.1" - mime "^1.6.0" + mime "^2.4.1" minimist "^1.1.0" - url-join "^2.0.5" + on-finished "^2.3.0" + url-join "^4.0.0" ee-first@1.1.1: version "1.1.1" @@ -6416,11 +6423,16 @@ mime-types@~2.1.24: dependencies: mime-db "1.45.0" -mime@^1.4.1, mime@^1.6.0: +mime@^1.4.1: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.4.1: + version "2.5.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz#2b4af934401779806ee98026bb42e8c1ae1876b1" + integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag== + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -6768,7 +6780,7 @@ omit.js@^2.0.0: resolved "https://registry.npmjs.org/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f" integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg== -on-finished@~2.3.0: +on-finished@^2.3.0, on-finished@~2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= @@ -9166,10 +9178,10 @@ urix@^0.1.0: resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-join@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" - integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg= +url-join@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== url-parse-lax@^1.0.0: version "1.0.0"