diff --git a/src/api/modules/index.js b/src/api/modules/index.js index 68a1cd8..4fc61bf 100644 --- a/src/api/modules/index.js +++ b/src/api/modules/index.js @@ -49,12 +49,13 @@ export function getNonGroupUsers() { }); } -// 添加/修改组内人员角色 -export function updateGroupUserRole(groupId, userid, role) { +// 更新组内用户角色 +export const updateGroupUserRole = (data) => { return service({ - url: `/group/${groupId}/user/${userid}/role/${role}`, - method: "post", - }); + url: '/group/user', + method: 'post', + data + }) } // 获取组内人员列表 diff --git a/src/directives/auth.js b/src/directives/auth.js index 7e14718..477a88e 100644 --- a/src/directives/auth.js +++ b/src/directives/auth.js @@ -35,7 +35,7 @@ export default { mounted(el, binding) { const { value } = binding const userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '{}') - const userRole = userInfo.role || 0 + const userRole = userInfo.roles || 0 // 如果没有权限配置,默认显示 if (!value) { diff --git a/src/layout/menu/index.vue b/src/layout/menu/index.vue index 3533162..f93631b 100644 --- a/src/layout/menu/index.vue +++ b/src/layout/menu/index.vue @@ -44,7 +44,7 @@ const themeConfig = store.getters.themeConfig; onMounted(() => { // 权限检查 const userInfo = JSON.parse(sessionStorage.getItem("userInfo") || "{}"); - const menuTable = generateMenu(routerList, userInfo.role) + const menuTable = generateMenu(routerList, userInfo.roles) // 获取本地菜单表渲染 menuList.value = menuTable; }); diff --git a/src/router/generateMenu.js b/src/router/generateMenu.js index c7db977..e6ae344 100644 --- a/src/router/generateMenu.js +++ b/src/router/generateMenu.js @@ -1,5 +1,5 @@ // 递归处理路由列表生成菜单数据 -export const generateMenu = (routes, userRole) => { +export const generateMenu = (routes, userRoles) => { const menuList = []; // 递归处理路由 @@ -7,10 +7,17 @@ export const generateMenu = (routes, userRole) => { // 检查路由是否需要权限验证 if (route.meta && route.meta.requiresAuth) { // 检查用户角色是否有权限访问 - if (route.meta.roles && !route.meta.roles.includes(userRole)) { - return null; + if (route.meta.roles) { + const hasPermission = userRoles.some(role => + route.meta.roles.includes(Number(role)) + ); + if (!hasPermission) { + return null + } } + + const menuItem = { title: route.meta.name, path: route.path, @@ -61,7 +68,7 @@ export const generateMenu = (routes, userRole) => { // 使用示例 /* -const userRole = 2; // 用户角色 -const menuList = generateMenu(routerList, userRole); +const userRoles = [2]; // 用户角色 +const menuList = generateMenu(routerList, userRoles); console.log(menuList); */ \ No newline at end of file diff --git a/src/views/groupManagement/index.vue b/src/views/groupManagement/index.vue index 9cb4ac5..dbd4006 100644 --- a/src/views/groupManagement/index.vue +++ b/src/views/groupManagement/index.vue @@ -15,7 +15,7 @@ - 添加组别 + 添加组别 @@ -28,12 +28,12 @@ {{ scope.row.createTime || "暂无" }} - + 编辑 + v-if="canEdit">编辑 删除 + v-if="canDelete">删除 @@ -55,7 +55,7 @@ - 添加成员 + 添加成员 @@ -72,31 +72,37 @@ - - + handleRoleChange(scope.row, value)"> - - - - + + + + - - {{ getRoleName(scope.row.role) }} - + + + {{ getRoleName(role) }} + + + v-if="canViewSalary || canRemoveUser"> - - 查看工资配置 + + + 查看工资配置 + 移除 + v-if="canRemoveUser"> + 移除 + @@ -203,7 +209,7 @@ diff --git a/src/views/payroll/sheets/index.vue b/src/views/payroll/sheets/index.vue index 51ad412..7a6ecd5 100644 --- a/src/views/payroll/sheets/index.vue +++ b/src/views/payroll/sheets/index.vue @@ -5,24 +5,14 @@ 工资条列表 - - + + - + + + 批量展示给员工 @@ -30,24 +20,15 @@ - + }" @selection-change="handleSelectionChange"> @@ -105,12 +86,14 @@ {{ formatMoney(scope.row.grossPaySummary) }} - + {{ formatMoney(scope.row.annualPerformanceDeduction) }} - + {{ formatMoney(scope.row.monthlyPerformanceDeduction) }} @@ -130,7 +113,8 @@ {{ formatMoney(scope.row.lateEarlyDeduction) }} - + {{ formatMoney(scope.row.missedCheckInOutDeduction) }} @@ -155,7 +139,8 @@ {{ formatMoney(scope.row.basicPensionDeduction) }} - + {{ formatMoney(scope.row.unemploymentInsuranceDeduction) }} @@ -197,20 +182,10 @@ - + 修改 - + 展示给员工 @@ -218,44 +193,24 @@ - + - + - + 违纪扣款 - + @@ -263,49 +218,24 @@ 社保公积金 - + - + - + - + - + @@ -313,22 +243,12 @@ 其他扣款 - + - + @@ -358,7 +278,7 @@ import { // 权限检查 const userInfo = JSON.parse(sessionStorage.getItem("userInfo") || "{}"); -// if (userInfo.role !== 3) { +// if (userInfo.roles !== 3) { // ElMessage.error("您没有权限访问此页面"); // window.history.back(); // } @@ -534,7 +454,7 @@ const handleEdit = (row) => { // 提交修改 const handleSubmitEdit = async () => { if (!editFormRef.value) return; - + await editFormRef.value.validate(async (valid) => { if (valid) { try { @@ -633,7 +553,7 @@ onMounted(() => { :deep(.el-table) { flex: 1; - + .el-table__body-wrapper { height: 100%; } @@ -854,8 +774,8 @@ onMounted(() => { background-color: #f8fafd; border-radius: 8px; padding: 20px 24px 8px 24px; - box-shadow: 0 2px 8px rgba(0,0,0,0.03); - + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03); + &:last-child { margin-bottom: 0; } @@ -879,14 +799,17 @@ onMounted(() => { :deep(.el-form-item) { margin-bottom: 0; + .el-form-item__label { font-weight: 500; color: #333; font-size: 15px; } + .el-input-number { width: 100%; min-width: 120px; + .el-input__wrapper { padding-right: 40px; } @@ -902,4 +825,4 @@ onMounted(() => { border-top: 1px solid var(--el-border-color-light); background-color: var(--el-bg-color); } - \ No newline at end of file + \ No newline at end of file diff --git a/src/views/performance/attendance/finance/index.vue b/src/views/performance/attendance/finance/index.vue index cdeab75..ce951a1 100644 --- a/src/views/performance/attendance/finance/index.vue +++ b/src/views/performance/attendance/finance/index.vue @@ -226,10 +226,6 @@ const formatMoney = (value) => { // 权限检查 const userInfo = JSON.parse(sessionStorage.getItem("userInfo") || "{}"); -// if (userInfo.role !== 3) { -// ElMessage.error("您没有权限访问此页面"); -// window.history.back(); -// } // 列表数据 const attendanceList = ref([]); diff --git a/src/views/performance/attendance/general/index.vue b/src/views/performance/attendance/general/index.vue index 9baede9..ab0ae91 100644 --- a/src/views/performance/attendance/general/index.vue +++ b/src/views/performance/attendance/general/index.vue @@ -278,10 +278,7 @@ import { // 权限检查 const userInfo = JSON.parse(sessionStorage.getItem("userInfo") || "{}"); -// if (userInfo.role !== 2) { -// ElMessage.error("您没有权限访问此页面"); -// window.history.back(); -// } + // 列表数据 const attendanceList = ref([]); diff --git a/src/views/performance/attendance/manager/index.vue b/src/views/performance/attendance/manager/index.vue index 1beb767..ba03aa2 100644 --- a/src/views/performance/attendance/manager/index.vue +++ b/src/views/performance/attendance/manager/index.vue @@ -165,10 +165,7 @@ import { // 权限检查 const userInfo = JSON.parse(sessionStorage.getItem("userInfo") || "{}"); -// if (userInfo.role !== 2) { -// ElMessage.error("您没有权限访问此页面"); -// window.history.back(); -// } + // 列表数据 const attendanceList = ref([]); diff --git a/src/views/performance/attendance/reviewed/index.vue b/src/views/performance/attendance/reviewed/index.vue index 32b6fc5..2b5068f 100644 --- a/src/views/performance/attendance/reviewed/index.vue +++ b/src/views/performance/attendance/reviewed/index.vue @@ -164,10 +164,7 @@ import { // 权限检查 const userInfo = JSON.parse(sessionStorage.getItem("userInfo") || "{}"); -// if (userInfo.role !== 2) { -// ElMessage.error("您没有权限访问此页面"); -// window.history.back(); -// } + // 列表数据 const attendanceList = ref([]);