From 1a6e5d22fdbe2d11aed22eb341a0eba3f654a4b9 Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Fri, 11 Oct 2024 20:58:59 +0800 Subject: [PATCH 1/5] =?UTF-8?q?chore:=20v-access=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=A0=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 4 +++- apps/web-antd/types/directive.d.ts | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 apps/web-antd/types/directive.d.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 0cbfa452..ece7b1f2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -222,5 +222,7 @@ "vitest.disableWorkspaceWarning": true, "cSpell.words": ["tinymce"], "typescript.tsdk": "node_modules/typescript/lib", - "editor.linkedEditing": true // 自动同步更改html标签 + "editor.linkedEditing": true, // 自动同步更改html标签, + "vscodeCustomCodeColor.highlightValue": "v-access", // v-access显示的颜色 + "vscodeCustomCodeColor.highlightValueColor": "#CCFFFF" } diff --git a/apps/web-antd/types/directive.d.ts b/apps/web-antd/types/directive.d.ts new file mode 100644 index 00000000..c2a6ff76 --- /dev/null +++ b/apps/web-antd/types/directive.d.ts @@ -0,0 +1,12 @@ +import type { Directive } from 'vue'; + +declare module 'vue' { + export interface ComponentCustomProperties { + /** + * 判断权限: v-access:code="" + * 判断角色 v-access:role="" + * TODO: 泛型第四个函数为code或role 不生效 + */ + vAccess: Directive; + } +} From fbbb02397148963099e5f3c2dc6097d8afaa149e Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Fri, 11 Oct 2024 21:05:25 +0800 Subject: [PATCH 2/5] =?UTF-8?q?chore:=20=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/types/directive.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/web-antd/types/directive.d.ts b/apps/web-antd/types/directive.d.ts index c2a6ff76..06b9f553 100644 --- a/apps/web-antd/types/directive.d.ts +++ b/apps/web-antd/types/directive.d.ts @@ -5,7 +5,8 @@ declare module 'vue' { /** * 判断权限: v-access:code="" * 判断角色 v-access:role="" - * TODO: 泛型第四个函数为code或role 不生效 + * VueOfficial插件暂时不支持判断modifer/arg + * @see https://github.com/vuejs/language-tools/issues/4810 */ vAccess: Directive; } From 113c2d60b59f333417e0479f9856592feb23e93f Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Fri, 11 Oct 2024 21:20:23 +0800 Subject: [PATCH 3/5] fix: menu support i18n --- apps/web-antd/src/locales/langs/en-US.json | 1 + apps/web-antd/src/locales/langs/zh-CN.json | 1 + apps/web-antd/src/views/system/menu/menu-drawer.vue | 6 +++++- .../src/views/tool/gen/edit-steps/basic-setting.vue | 9 +++++++-- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/web-antd/src/locales/langs/en-US.json b/apps/web-antd/src/locales/langs/en-US.json index 2fac357b..ece9278c 100644 --- a/apps/web-antd/src/locales/langs/en-US.json +++ b/apps/web-antd/src/locales/langs/en-US.json @@ -84,6 +84,7 @@ } }, "menu": { + "root": "Root", "system": { "root": "System", "user": "User", diff --git a/apps/web-antd/src/locales/langs/zh-CN.json b/apps/web-antd/src/locales/langs/zh-CN.json index b6036dea..9ad8e04e 100644 --- a/apps/web-antd/src/locales/langs/zh-CN.json +++ b/apps/web-antd/src/locales/langs/zh-CN.json @@ -84,6 +84,7 @@ } }, "menu": { + "root": "根目录", "system": { "root": "系统管理", "user": "用户管理", diff --git a/apps/web-antd/src/views/system/menu/menu-drawer.vue b/apps/web-antd/src/views/system/menu/menu-drawer.vue index 0298f946..e07224e9 100644 --- a/apps/web-antd/src/views/system/menu/menu-drawer.vue +++ b/apps/web-antd/src/views/system/menu/menu-drawer.vue @@ -43,12 +43,16 @@ const [BasicForm, formApi] = useVbenForm({ async function setupMenuSelect() { // menu const menuArray = await menuList(); + // support i18n + menuArray.forEach((item) => { + item.menuName = $t(item.menuName); + }); // const folderArray = menuArray.filter((item) => item.menuType === 'M'); const menuTree = listToTree(menuArray, { id: 'menuId', pid: 'parentId' }); const fullMenuTree = [ { menuId: 0, - menuName: '根目录', + menuName: $t('menu.root'), children: menuTree, }, ]; diff --git a/apps/web-antd/src/views/tool/gen/edit-steps/basic-setting.vue b/apps/web-antd/src/views/tool/gen/edit-steps/basic-setting.vue index 9edaf73a..76bef792 100644 --- a/apps/web-antd/src/views/tool/gen/edit-steps/basic-setting.vue +++ b/apps/web-antd/src/views/tool/gen/edit-steps/basic-setting.vue @@ -4,6 +4,7 @@ import type { Column, GenInfo } from '#/api/tool/gen/model'; import { inject, onMounted, type Ref } from 'vue'; import { useVbenForm } from '@vben/common-ui'; +import { $t } from '@vben/locales'; import { addFullName, listToTree } from '@vben/utils'; import { Col, Row } from 'ant-design-vue'; @@ -66,12 +67,16 @@ async function initTreeSelect(columns: Column[]) { */ async function initMenuSelect() { const list = await menuList(); + // support i18n + list.forEach((item) => { + item.menuName = $t(item.menuName); + }); const tree = listToTree(list, { id: 'menuId', pid: 'parentId' }); const treeData = [ { - fullName: '根目录', + fullName: $t('menu.root'), menuId: 0, - menuName: '根目录', + menuName: $t('menu.root'), children: tree, }, ]; From 0a27114ea37dc2bdf5710d0812a4eb7f25c6dc16 Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Sat, 12 Oct 2024 11:29:06 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E7=99=BB=E5=87=BA=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=9C=A8=E5=B9=B6=E5=8F=91(=E9=9D=9Eawait)?= =?UTF-8?q?=E6=83=85=E5=86=B5=E4=B8=8B=E9=87=8D=E5=A4=8D=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + apps/web-antd/src/api/request.ts | 25 +++++++++++++------------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab3d09ce..46220a4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - 登录页面 关闭租户后下拉框没有正常隐藏 - 字典管理 关闭租户不应显示`同步租户字典`按钮 - 登录日志 漏掉了登录日志日期查询 +- 登出相关逻辑在并发(非await)情况下重复执行的问题 **OTHERS** diff --git a/apps/web-antd/src/api/request.ts b/apps/web-antd/src/api/request.ts index 2bdc1c7d..989ddda1 100644 --- a/apps/web-antd/src/api/request.ts +++ b/apps/web-antd/src/api/request.ts @@ -34,8 +34,11 @@ const { apiURL, clientId, enableEncrypt } = useAppConfig( import.meta.env.PROD, ); -/** 控制是否弹窗 防止登录超时请求多个api会弹窗多次 */ -let showTimeoutToast = true; +/** + * 是否已经处在登出过程中了 一个标志位 + * 主要是防止一个页面会请求多个api 都401 会导致登出执行多次 + */ +let isLogoutProcessing = false; function createRequestClient(baseURL: string) { const client = new RequestClient({ @@ -234,18 +237,16 @@ function createRequestClient(baseURL: string) { let timeoutMsg = ''; switch (code) { case 401: { + // 已经在登出过程中 不再执行 + if (isLogoutProcessing) { + return; + } + isLogoutProcessing = true; const _msg = '登录超时, 请重新登录'; const userStore = useAuthStore(); - userStore.logout().then(() => { - /** 只弹窗一次 */ - if (showTimeoutToast) { - showTimeoutToast = false; - message.error(_msg); - /** 定时器 3s后再开启弹窗 */ - setTimeout(() => { - showTimeoutToast = true; - }, 3000); - } + userStore.logout().finally(() => { + message.error(_msg); + isLogoutProcessing = false; }); // 不再执行下面逻辑 return; From 329b41bc445854df56636da87f98eaa142cef1d5 Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Sat, 12 Oct 2024 11:30:29 +0800 Subject: [PATCH 5/5] docs: changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46220a4c..30a09d48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - 用户管理 新增从参数取默认密码 - 全局表格加上id 方便进行缓存列排序的操作 +- 支持菜单名称i18n **BUG FIXES**