From 17221a93bf2b148f89c161d6c419e382fee114d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?cls=5F=E5=AE=81=E6=B3=A2=E6=9C=AC=E6=9C=BA?= <908705107@qq.com> Date: Wed, 10 Jun 2026 10:01:06 +0800 Subject: [PATCH] Restore login log management entry --- backend-fastapi/db_init.json | 45 +++++++++++++++++ web/apps/web-ele/src/locales/index.ts | 1 + .../src/locales/langs/en-US/loginLog.json | 9 ++++ .../src/locales/langs/zh-CN/loginLog.json | 9 ++++ .../src/locales/langs/zh-TW/loginLog.json | 9 ++++ web/apps/web-ele/src/router/access.ts | 1 + .../web-ele/src/views/_core/login-log/data.ts | 48 +++++++++++++++---- 7 files changed, 112 insertions(+), 10 deletions(-) diff --git a/backend-fastapi/db_init.json b/backend-fastapi/db_init.json index d9f8f12..5901bc6 100644 --- a/backend-fastapi/db_init.json +++ b/backend-fastapi/db_init.json @@ -7388,6 +7388,51 @@ "sys_dept_id": null } }, + { + "model": "core.menu.model.Menu", + "pk": "ai-agent-admin-system-login-log", + "fields": { + "application_id": null, + "is_system": true, + "parent_id": "2c03f7a0-f4b5-43a9-94", + "name": "SystemLoginLog", + "title": "menu-title.loginLog", + "authCode": null, + "path": "/system/login-log", + "type": "menu", + "component": "/_core/login-log/index", + "redirect": null, + "activePath": null, + "query": null, + "noBasicLayout": false, + "icon": "lucide:history", + "activeIcon": null, + "order": 45, + "hideInMenu": false, + "hideChildrenInMenu": false, + "hideInBreadcrumb": false, + "hideInTab": false, + "affixTab": false, + "affixTabOrder": null, + "keepAlive": false, + "maxNumOfOpenTab": null, + "fullPathKey": true, + "link": null, + "iframeSrc": null, + "openInNewWindow": false, + "badge": null, + "badgeType": null, + "badgeVariants": null, + "id": "ai-agent-admin-system-login-log", + "sort": 45, + "is_deleted": false, + "sys_create_datetime": "2026-06-10T00:00:00.000000", + "sys_update_datetime": "2026-06-10T00:00:00.000000", + "sys_creator_id": null, + "sys_modifier_id": null, + "sys_dept_id": null + } + }, { "model": "core.menu.model.Menu", "pk": "c4b8daa0-7e1c-4039-9a", diff --git a/web/apps/web-ele/src/locales/index.ts b/web/apps/web-ele/src/locales/index.ts index 454cf38..c1b84c9 100644 --- a/web/apps/web-ele/src/locales/index.ts +++ b/web/apps/web-ele/src/locales/index.ts @@ -27,6 +27,7 @@ const modules = import.meta.glob([ './langs/*/announcement.json', './langs/*/authentication.json', './langs/*/common.json', + './langs/*/loginLog.json', './langs/*/menu.json', './langs/*/menu-title.json', './langs/*/message.json', diff --git a/web/apps/web-ele/src/locales/langs/en-US/loginLog.json b/web/apps/web-ele/src/locales/langs/en-US/loginLog.json index 610aea7..eaef17f 100644 --- a/web/apps/web-ele/src/locales/langs/en-US/loginLog.json +++ b/web/apps/web-ele/src/locales/langs/en-US/loginLog.json @@ -4,6 +4,14 @@ "username": "Username", "userId": "User ID", "status": "Login Status", + "loginType": "Login Type", + "passwordLogin": "Password", + "codeLogin": "Verification Code", + "qrcodeLogin": "QR Code", + "wechatLogin": "WeChat", + "microsoftLogin": "Microsoft", + "dingtalkLogin": "DingTalk", + "feishuLogin": "Feishu", "statusSuccess": "Success", "statusFailed": "Failed", "failureReason": "Failure Reason", @@ -47,6 +55,7 @@ "searchPlaceholder": "Please enter {0}", "selectPlaceholder": "Please select {0}", "selectStatus": "Please select login status", + "selectLoginType": "Please select login type", "selectFailureReason": "Please select failure reason", "selectDeviceType": "Please select device type", "startTime": "Start Time", diff --git a/web/apps/web-ele/src/locales/langs/zh-CN/loginLog.json b/web/apps/web-ele/src/locales/langs/zh-CN/loginLog.json index c44a1f5..78e02e8 100644 --- a/web/apps/web-ele/src/locales/langs/zh-CN/loginLog.json +++ b/web/apps/web-ele/src/locales/langs/zh-CN/loginLog.json @@ -4,6 +4,14 @@ "username": "用户名", "userId": "用户ID", "status": "登录状态", + "loginType": "登录方式", + "passwordLogin": "密码登录", + "codeLogin": "验证码登录", + "qrcodeLogin": "二维码登录", + "wechatLogin": "微信", + "microsoftLogin": "微软", + "dingtalkLogin": "钉钉", + "feishuLogin": "飞书", "statusSuccess": "成功", "statusFailed": "失败", "failureReason": "失败原因", @@ -47,6 +55,7 @@ "searchPlaceholder": "请输入{0}", "selectPlaceholder": "请选择{0}", "selectStatus": "请选择登录状态", + "selectLoginType": "请选择登录方式", "selectFailureReason": "请选择失败原因", "selectDeviceType": "请选择设备类型", "startTime": "开始时间", diff --git a/web/apps/web-ele/src/locales/langs/zh-TW/loginLog.json b/web/apps/web-ele/src/locales/langs/zh-TW/loginLog.json index 009c5ab..2cbab3c 100644 --- a/web/apps/web-ele/src/locales/langs/zh-TW/loginLog.json +++ b/web/apps/web-ele/src/locales/langs/zh-TW/loginLog.json @@ -4,6 +4,14 @@ "username": "用戶名", "userId": "用戶ID", "status": "登錄狀態", + "loginType": "登錄方式", + "passwordLogin": "密碼登錄", + "codeLogin": "驗證碼登錄", + "qrcodeLogin": "二維碼登錄", + "wechatLogin": "微信", + "microsoftLogin": "微軟", + "dingtalkLogin": "釘釘", + "feishuLogin": "飛書", "statusSuccess": "成功", "statusFailed": "失敗", "failureReason": "失敗原因", @@ -47,6 +55,7 @@ "searchPlaceholder": "請輸入{0}", "selectPlaceholder": "請選擇{0}", "selectStatus": "請選擇登錄狀態", + "selectLoginType": "請選擇登錄方式", "selectFailureReason": "請選擇失敗原因", "selectDeviceType": "請選擇設備類型", "startTime": "開始時間", diff --git a/web/apps/web-ele/src/router/access.ts b/web/apps/web-ele/src/router/access.ts index b4afbfe..3e24e4a 100644 --- a/web/apps/web-ele/src/router/access.ts +++ b/web/apps/web-ele/src/router/access.ts @@ -28,6 +28,7 @@ async function generateAccess(options: GenerateMenuAndRoutesOptions) { '../views/_core/dept/index.vue', '../views/_core/dict/index.vue', '../views/_core/fallback/**/*.vue', + '../views/_core/login-log/index.vue', '../views/_core/menu/index.vue', '../views/_core/message/index.vue', '../views/_core/org-chart/index.vue', diff --git a/web/apps/web-ele/src/views/_core/login-log/data.ts b/web/apps/web-ele/src/views/_core/login-log/data.ts index 56d9ebd..1c2a94b 100644 --- a/web/apps/web-ele/src/views/_core/login-log/data.ts +++ b/web/apps/web-ele/src/views/_core/login-log/data.ts @@ -41,17 +41,45 @@ export function getDeviceTypeOptions() { export function getLoginTypeOptions() { return [ - { label: '密码登录', value: 'password', type: 'info' as TagType }, - { label: '验证码登录', value: 'code', type: 'info' as TagType }, - { label: '二维码登录', value: 'qrcode', type: 'info' as TagType }, + { + label: $t('loginLog.passwordLogin'), + type: 'info' as TagType, + value: 'password', + }, + { + label: $t('loginLog.codeLogin'), + type: 'info' as TagType, + value: 'code', + }, + { + label: $t('loginLog.qrcodeLogin'), + type: 'info' as TagType, + value: 'qrcode', + }, { label: 'Gitee', value: 'gitee', type: 'success' as TagType }, { label: 'GitHub', value: 'github', type: 'success' as TagType }, { label: 'QQ', value: 'qq', type: 'success' as TagType }, { label: 'Google', value: 'google', type: 'success' as TagType }, - { label: '微信', value: 'wechat', type: 'success' as TagType }, - { label: '微软', value: 'microsoft', type: 'success' as TagType }, - { label: '钉钉', value: 'dingtalk', type: 'success' as TagType }, - { label: '飞书', value: 'feishu', type: 'success' as TagType }, + { + label: $t('loginLog.wechatLogin'), + type: 'success' as TagType, + value: 'wechat', + }, + { + label: $t('loginLog.microsoftLogin'), + type: 'success' as TagType, + value: 'microsoft', + }, + { + label: $t('loginLog.dingtalkLogin'), + type: 'success' as TagType, + value: 'dingtalk', + }, + { + label: $t('loginLog.feishuLogin'), + type: 'success' as TagType, + value: 'feishu', + }, ]; } @@ -96,9 +124,9 @@ export function useSearchFormSchema(): VbenFormSchema[] { { component: 'Select', fieldName: 'login_type', - label: '登录方式', + label: $t('loginLog.loginType'), componentProps: { - placeholder: '请选择登录方式', + placeholder: $t('loginLog.selectLoginType'), options: getLoginTypeOptions(), clearable: true, }, @@ -123,7 +151,7 @@ export function useZqTableColumns(): Column[] { }, { key: 'login_type', - title: '登录方式', + title: $t('loginLog.loginType'), width: 120, align: 'center' as const, slots: { default: 'cell-login_type' },