From 1bfa0196343e102d9c4641e6d304fe91438d98b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=AB=E5=9C=B0=E5=83=A7?= <357099073@qq.com> Date: Thu, 2 Apr 2026 00:05:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=BF=AE=E5=A4=8D=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components.d.ts | 1 + .../siteSettings/components/otherSettings.vue | 4 - src/views/login/index.vue | 1587 +++++++++-------- src/views/system/menus/components/edit.vue | 42 +- src/views/system/menus/manager.vue | 14 +- .../components/platformSettings.vue | 182 ++ src/views/system/platformsettings/index.vue | 60 + 7 files changed, 1122 insertions(+), 768 deletions(-) create mode 100644 src/views/system/platformsettings/components/platformSettings.vue create mode 100644 src/views/system/platformsettings/index.vue diff --git a/components.d.ts b/components.d.ts index fb754dd..567e500 100644 --- a/components.d.ts +++ b/components.d.ts @@ -22,6 +22,7 @@ declare module 'vue' { ElCard: typeof import('element-plus/es')['ElCard'] ElCascader: typeof import('element-plus/es')['ElCascader'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] ElCol: typeof import('element-plus/es')['ElCol'] ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] ElContainer: typeof import('element-plus/es')['ElContainer'] diff --git a/src/views/basicSettings/siteSettings/components/otherSettings.vue b/src/views/basicSettings/siteSettings/components/otherSettings.vue index 08c6a41..06722cd 100644 --- a/src/views/basicSettings/siteSettings/components/otherSettings.vue +++ b/src/views/basicSettings/siteSettings/components/otherSettings.vue @@ -13,10 +13,6 @@ 允许用户在前台注册账号 - - - 登录、注册等操作需要验证码 - 保存设置 重置 diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 41c6629..526e5e3 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -1,749 +1,840 @@ - - - - - \ No newline at end of file diff --git a/src/views/system/menus/components/edit.vue b/src/views/system/menus/components/edit.vue index a9786df..74f1559 100644 --- a/src/views/system/menus/components/edit.vue +++ b/src/views/system/menus/components/edit.vue @@ -98,12 +98,11 @@ /> - - + + + + + @@ -138,7 +137,7 @@ interface Menu { sort: number; status: 0 | 1; is_visible: 0 | 1; - is_platform: 0 | 1; + views: number[]; type: 1 | 2 | 3; permission: string; children?: Menu[]; @@ -183,7 +182,7 @@ const currentMenu = ref>({ sort: 0, status: 1, is_visible: 1, - is_platform: 1, + views: [1], type: 1, permission: '', }); @@ -253,7 +252,7 @@ watch(() => props.menu, (newMenu) => { sort: 0, status: 1, is_visible: 1, - is_platform: 1, + views: [1], type: 1, permission: '', }; @@ -291,7 +290,7 @@ watch(() => props.visible, (newVisible) => { sort: 0, status: 1, is_visible: 1, - is_platform: 1, + views: [1], type: 1, permission: '', }; @@ -351,6 +350,7 @@ const formRules = ref({ } ], sort: [{ required: true, message: "请输入排序号", trigger: "blur" }], + views: [{ required: true, message: "请选择菜单显示端", trigger: "change" }], }); // 级联选择器配置 @@ -363,11 +363,23 @@ const cascaderProps = ref({ }); const getMenuSideLabel = (menu: any) => { - return Number(menu?.is_platform) === 1 ? "平台端" : "租户端"; + const views = Array.isArray(menu?.views) ? menu.views : []; + const hasP = views.includes(1); + const hasT = views.includes(2); + if (hasP && hasT) return "双端"; + if (hasP) return "平台端"; + if (hasT) return "租户端"; + return "未设置"; }; const getMenuSideTagType = (menu: any) => { - return Number(menu?.is_platform) === 1 ? "primary" : "warning"; + const views = Array.isArray(menu?.views) ? menu.views : []; + const hasP = views.includes(1); + const hasT = views.includes(2); + if (hasP && hasT) return "success"; + if (hasP) return "primary"; + if (hasT) return "warning"; + return "info"; }; // 监听菜单类型变化,自动清空不相关的字段 @@ -470,4 +482,10 @@ const handleSave = async () => { :deep(.el-form-item) { margin-bottom: 16px; } + +.views-inline{ + display: flex; + align-items: center; + gap: 14px; +} \ No newline at end of file diff --git a/src/views/system/menus/manager.vue b/src/views/system/menus/manager.vue index 0e6a9a9..a7b5e0c 100644 --- a/src/views/system/menus/manager.vue +++ b/src/views/system/menus/manager.vue @@ -95,10 +95,16 @@ - + @@ -197,7 +203,7 @@ interface Menu { sort: number; status: 0 | 1; is_visible?: 0 | 1; - is_platform?: 0 | 1; + views?: number[]; type: 1 | 2 | 3; // 1:目录 2:页面 3:接口 permission: string; children?: Menu[]; diff --git a/src/views/system/platformsettings/components/platformSettings.vue b/src/views/system/platformsettings/components/platformSettings.vue new file mode 100644 index 0000000..2aac301 --- /dev/null +++ b/src/views/system/platformsettings/components/platformSettings.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/views/system/platformsettings/index.vue b/src/views/system/platformsettings/index.vue new file mode 100644 index 0000000..e8daef2 --- /dev/null +++ b/src/views/system/platformsettings/index.vue @@ -0,0 +1,60 @@ + + + + +