From f4cef1779c57091a22dcd1a9428c4f56ee9b88a6 Mon Sep 17 00:00:00 2001 From: "xiao@123.123" Date: Thu, 6 Nov 2025 18:06:15 +0800 Subject: [PATCH] =?UTF-8?q?2025=E5=B9=B411=E6=9C=886=E6=97=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/api/psychology/permission.js | 73 ++++ ruoyi-ui/src/router/index.js | 22 + ruoyi-ui/src/views/login.vue | 4 +- .../src/views/psychology/assessment/start.vue | 31 +- .../views/psychology/interpretation/index.vue | 183 +++++++- .../src/views/psychology/permission/index.vue | 310 ++++++++++++++ .../src/views/psychology/permission/user.vue | 118 ++++++ .../src/views/psychology/scale/factor.vue | 149 ++++++- ruoyi-ui/src/views/psychology/scale/index.vue | 48 ++- .../src/views/system/menu/menuCleanup.vue | 171 ++++++++ ruoyi-ui/src/views/system/user/index.vue | 8 + .../controller/MenuCleanupController.java | 156 +++++++ .../PsyScalePermissionController.java | 127 ++++++ .../com/ddnai/admin/test/FastJsonTest.java | 65 +++ .../test/LoginUserSerializationTest.java | 56 +++ .../com/ddnai/admin/tool/MenuCleanupTool.java | 220 ++++++++++ .../domain/psychology/PsyScalePermission.java | 208 +++++++++ .../psychology/PsyScalePermissionMapper.java | 95 +++++ .../PsyScalePermissionServiceImpl.java | 174 ++++++++ .../IPsyScalePermissionService.java | 95 +++++ .../system/psychology/PsyScaleMapper.xml | 30 +- .../psychology/PsyScalePermissionMapper.xml | 179 ++++++++ sql/cleanup_duplicate_menus_enhanced.sql | 141 +++++++ sql/enable_register_and_permission_menu.sql | 58 +++ sql/psy_scale_permission_menu.sql | 38 ++ .../14-用户注册和量表权限管理功能开发.md | 301 +++++++++++++ z_Project change/15-新量表导入完整操作指南.md | 399 ++++++++++++++++++ 27 files changed, 3394 insertions(+), 65 deletions(-) create mode 100644 ruoyi-ui/src/api/psychology/permission.js create mode 100644 ruoyi-ui/src/views/psychology/permission/index.vue create mode 100644 ruoyi-ui/src/views/psychology/permission/user.vue create mode 100644 ruoyi-ui/src/views/system/menu/menuCleanup.vue create mode 100644 ry-news-admin/src/main/java/com/ddnai/admin/controller/MenuCleanupController.java create mode 100644 ry-news-admin/src/main/java/com/ddnai/web/controller/psychology/PsyScalePermissionController.java create mode 100644 ry-news-admin/src/test/java/com/ddnai/admin/test/FastJsonTest.java create mode 100644 ry-news-admin/src/test/java/com/ddnai/admin/test/LoginUserSerializationTest.java create mode 100644 ry-news-admin/src/test/java/com/ddnai/admin/tool/MenuCleanupTool.java create mode 100644 ry-news-system/src/main/java/com/ddnai/system/domain/psychology/PsyScalePermission.java create mode 100644 ry-news-system/src/main/java/com/ddnai/system/mapper/psychology/PsyScalePermissionMapper.java create mode 100644 ry-news-system/src/main/java/com/ddnai/system/service/impl/psychology/PsyScalePermissionServiceImpl.java create mode 100644 ry-news-system/src/main/java/com/ddnai/system/service/psychology/IPsyScalePermissionService.java create mode 100644 ry-news-system/src/main/resources/mapper/system/psychology/PsyScalePermissionMapper.xml create mode 100644 sql/cleanup_duplicate_menus_enhanced.sql create mode 100644 sql/enable_register_and_permission_menu.sql create mode 100644 sql/psy_scale_permission_menu.sql create mode 100644 z_Project change/14-用户注册和量表权限管理功能开发.md create mode 100644 z_Project change/15-新量表导入完整操作指南.md diff --git a/ruoyi-ui/src/api/psychology/permission.js b/ruoyi-ui/src/api/psychology/permission.js new file mode 100644 index 00000000..e69cb519 --- /dev/null +++ b/ruoyi-ui/src/api/psychology/permission.js @@ -0,0 +1,73 @@ +import request from '@/utils/request' + +// 查询权限列表 +export function listPermission(query) { + return request({ + url: '/psychology/permission/list', + method: 'get', + params: query + }) +} + +// 查询权限详细 +export function getPermission(permissionId) { + return request({ + url: '/psychology/permission/' + permissionId, + method: 'get' + }) +} + +// 根据用户ID获取用户有权限访问的量表ID列表 +export function getUserScaleIds(userId) { + return request({ + url: '/psychology/permission/user/' + userId + '/scales', + method: 'get' + }) +} + +// 检查用户是否有权限访问指定量表 +export function checkPermission(userId, scaleId) { + return request({ + url: '/psychology/permission/check/' + userId + '/' + scaleId, + method: 'get' + }) +} + +// 新增权限 +export function addPermission(data) { + return request({ + url: '/psychology/permission', + method: 'post', + data: data + }) +} + +// 修改权限 +export function updatePermission(data) { + return request({ + url: '/psychology/permission', + method: 'put', + data: data + }) +} + +// 删除权限 +export function delPermission(permissionIds) { + return request({ + url: '/psychology/permission/' + permissionIds, + method: 'delete' + }) +} + +// 批量分配用户量表权限 +export function assignUserScales(userId, scaleIds) { + return request({ + url: '/psychology/permission/assign', + method: 'post', + data: { + userId: userId, + scaleIds: scaleIds + } + }) +} + diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index 0cf50280..09df4f03 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -298,6 +298,28 @@ export const dynamicRoutes = [ roles: ['admin'] } }, + // 量表权限管理 + { + path: 'permission', + name: 'ScalePermission', + component: () => import('@/views/psychology/permission/index'), + meta: { + title: '量表权限管理', + icon: 'lock', + roles: ['admin'] + } + }, + // 用户量表权限分配 + { + path: 'permission/user/:userId', + name: 'UserScalePermission', + component: () => import('@/views/psychology/permission/user'), + hidden: true, + meta: { + title: '分配量表权限', + roles: ['admin'] + } + }, // 解释配置 { path: 'interpretation', diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue index 12b7560e..cc0d9489 100644 --- a/ruoyi-ui/src/views/login.vue +++ b/ruoyi-ui/src/views/login.vue @@ -91,8 +91,8 @@ export default { loading: false, // 验证码开关 captchaEnabled: true, - // 注册开关 - register: false, + // 注册开关(默认启用,实际应该从后端配置读取) + register: true, redirect: undefined } }, diff --git a/ruoyi-ui/src/views/psychology/assessment/start.vue b/ruoyi-ui/src/views/psychology/assessment/start.vue index 866a6ea0..5d4bd15c 100644 --- a/ruoyi-ui/src/views/psychology/assessment/start.vue +++ b/ruoyi-ui/src/views/psychology/assessment/start.vue @@ -110,9 +110,34 @@ export default { methods: { /** 加载量表列表 */ loadScales() { - listScale({ status: '0' }).then(response => { - this.scaleList = response.rows.filter(scale => scale.itemCount > 0); - }); + // 获取当前登录用户ID + const userId = this.$store.getters.userId; + + // 如果是管理员,显示所有量表;否则只显示有权限的量表 + if (userId === 1) { + // 管理员显示所有量表 + listScale({ status: '0' }).then(response => { + this.scaleList = response.rows.filter(scale => scale.itemCount > 0); + }); + } else { + // 普通用户只显示有权限的量表 + import('@/api/psychology/permission').then(module => { + module.getUserScaleIds(userId).then(permissionResponse => { + const allowedScaleIds = permissionResponse.data || []; + if (allowedScaleIds.length === 0) { + this.scaleList = []; + this.$message.warning('您还没有被分配任何量表权限,请联系管理员'); + return; + } + // 获取所有量表,然后过滤 + listScale({ status: '0' }).then(response => { + this.scaleList = response.rows.filter(scale => + scale.itemCount > 0 && allowedScaleIds.includes(scale.scaleId) + ); + }); + }); + }); + } }, /** 加载用户档案列表 */ loadProfiles() { diff --git a/ruoyi-ui/src/views/psychology/interpretation/index.vue b/ruoyi-ui/src/views/psychology/interpretation/index.vue index 1b291d37..03cebad9 100644 --- a/ruoyi-ui/src/views/psychology/interpretation/index.vue +++ b/ruoyi-ui/src/views/psychology/interpretation/index.vue @@ -1,21 +1,39 @@