From 34b24494625fd4d207297f5be45be8ddd90e8bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=AB=E5=9C=B0=E5=83=A7?= <357099073@qq.com> Date: Wed, 9 Sep 2026 00:30:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B9=B3=E5=8F=B0=E7=AB=AF?= =?UTF-8?q?=E7=A7=9F=E6=88=B7=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/api/menu.js | 4 +- backend/src/api/platformRole.js | 39 +++ backend/src/api/tenantUser.js | 40 +++ .../basicSettings/roles/components/detail.vue | 23 +- .../basicSettings/roles/components/edit.vue | 41 ++- .../src/views/basicSettings/roles/index.vue | 47 +++- .../tenants/components/TenantUsersTab.vue | 74 +++++- .../tenants/components/adduser.vue | 4 +- .../users/components/userEdit.vue | 43 +++ go/controllers/backend_admin_user.go | 24 ++ go/controllers/backend_menu.go | 100 ++++++- go/controllers/backend_role.go | 249 ++++++++++++++++++ go/controllers/platform_tenant_user.go | 8 + go/models/admin_role.go | 3 +- go/models/admin_role_default.go | 80 ++++++ go/models/system_tenant_user.go | 22 +- go/routers/backend/backend.go | 12 + go/services/tenant_user.go | 4 + platform/src/api/tenantUser.js | 10 +- .../tenants/components/TenantUsersTab.vue | 62 ++++- 20 files changed, 847 insertions(+), 42 deletions(-) create mode 100644 backend/src/api/platformRole.js create mode 100644 backend/src/api/tenantUser.js create mode 100644 go/controllers/backend_role.go create mode 100644 go/models/admin_role_default.go diff --git a/backend/src/api/menu.js b/backend/src/api/menu.js index 00cd43c..a80b66b 100644 --- a/backend/src/api/menu.js +++ b/backend/src/api/menu.js @@ -1,10 +1,12 @@ import request from "@/utils/request"; // 获取所有菜单 -export function getAllMenus() { +// params.cid=2 时仅返回租户端(backend)菜单,用于角色权限编辑 +export function getAllMenus(params = {}) { return request({ url: `/backend/allmenu`, method: "get", + params, }); } diff --git a/backend/src/api/platformRole.js b/backend/src/api/platformRole.js new file mode 100644 index 0000000..f0dffea --- /dev/null +++ b/backend/src/api/platformRole.js @@ -0,0 +1,39 @@ +import request from '@/utils/request' + +// 平台端角色管理(yz_system_admin_role,可同时管理平台角色 cid=1 与租户角色 cid=2) +export function getAllPlatformRoles() { + return request({ + url: '/platform/allRoles', + method: 'get' + }) +} + +export function getPlatformRoleById(id) { + return request({ + url: `/platform/roles/${id}`, + method: 'get' + }) +} + +export function createPlatformRole(data) { + return request({ + url: '/platform/roles', + method: 'post', + data + }) +} + +export function updatePlatformRole(id, data) { + return request({ + url: `/platform/roles/${id}`, + method: 'put', + data + }) +} + +export function deletePlatformRole(id) { + return request({ + url: `/platform/roles/${id}`, + method: 'delete' + }) +} diff --git a/backend/src/api/tenantUser.js b/backend/src/api/tenantUser.js new file mode 100644 index 0000000..3d1e7b1 --- /dev/null +++ b/backend/src/api/tenantUser.js @@ -0,0 +1,40 @@ +import request from '@/utils/request' + +// 平台端租户用户(yz_system_tenant_user)相关接口 +export function getTenantUserList(params) { + return request({ + url: '/platform/tenantUser/list', + method: 'get', + params, + }) +} + +export function getTenantUsersByTid(tid) { + return request({ + url: `/platform/getTenantUsers/${tid}`, + method: 'get', + }) +} + +export function createTenantUser(data) { + return request({ + url: '/platform/tenantUser/create', + method: 'post', + data, + }) +} + +export function editTenantUser(id, data) { + return request({ + url: `/platform/tenantUser/edit/${id}`, + method: 'post', + data, + }) +} + +export function deleteTenantUser(id) { + return request({ + url: `/platform/tenantUser/delete/${id}`, + method: 'delete', + }) +} diff --git a/backend/src/views/basicSettings/roles/components/detail.vue b/backend/src/views/basicSettings/roles/components/detail.vue index d7d1bed..188f23c 100644 --- a/backend/src/views/basicSettings/roles/components/detail.vue +++ b/backend/src/views/basicSettings/roles/components/detail.vue @@ -12,6 +12,11 @@ {{ roleDetail.status === 1 ? "启用" : "禁用" }} + + + {{ roleDetail.cid === 1 ? "平台角色" : "租户角色" }} + +
import { ref, watch, computed } from "vue"; import { ElMessage } from "element-plus"; -import { getRoleById } from "@/api/role"; +import { getPlatformRoleById } from "@/api/platformRole"; import { getAllMenus } from "@/api/menu"; interface Props { @@ -67,11 +72,11 @@ const allMenus = ref([]); // 监听 modelValue watch( () => props.modelValue, - (val) => { + async (val) => { visible.value = val; if (val && props.roleId) { - loadRoleDetail(); - loadMenus(); + await loadRoleDetail(); + await loadMenus(roleDetail.value.cid); } } ); @@ -127,7 +132,7 @@ const loadRoleDetail = async () => { loading.value = true; try { - const res = await getRoleById(props.roleId); + const res = await getPlatformRoleById(props.roleId); if (res.code === 200) { roleDetail.value = res.data || {}; } else { @@ -141,10 +146,12 @@ const loadRoleDetail = async () => { } }; -// 加载菜单树 -const loadMenus = async () => { +// 加载菜单树:租户角色(cid=2)只展示租户端菜单;平台角色展示全部权限 +const loadMenus = async (cid?: number) => { try { - const res = await getAllMenus(); + const isTenant = cid === undefined || cid === 2; + const params = isTenant ? { cid: 2 } : {}; + const res = await getAllMenus(params); if (res.code === 200) { allMenus.value = res.data || []; } diff --git a/backend/src/views/basicSettings/roles/components/edit.vue b/backend/src/views/basicSettings/roles/components/edit.vue index 116db43..d3bbe49 100644 --- a/backend/src/views/basicSettings/roles/components/edit.vue +++ b/backend/src/views/basicSettings/roles/components/edit.vue @@ -12,6 +12,14 @@ + + + 租户角色 + 平台角色 + +
租户角色仅显示租户端菜单;平台角色显示全部权限
+
+
@@ -38,7 +46,7 @@