添加了访问控制功能

This commit is contained in:
moon 2025-07-23 11:39:35 +08:00
parent 7eb2e26673
commit fefd70b500
4 changed files with 65 additions and 39 deletions

View File

@ -3,15 +3,15 @@
</template> </template>
<script> <script>
import { webSocketService } from '@/utils/websocket' import { webSocketService } from '@/utils/websocket'
import { useAclStore } from '@/store/modules/acl' import { useAclStore } from '@/store/modules/acl'
import { baseURL } from '@/config' import { baseURL } from '@/config'
import { v4 as uuidv4 } from 'uuid' // uuidUUID import { v4 as uuidv4 } from 'uuid' // uuidUUID
export default { export default {
name: 'App', name: 'App',
created() { created() {
// //
const aclStore = useAclStore() const aclStore = useAclStore()
//const userId = aclStore.getUserAccount //const userId = aclStore.getUserAccount
const urlList = baseURL.split(':') const urlList = baseURL.split(':')
// 5UUID // 5UUID
@ -23,7 +23,7 @@ export default {
try { try {
console.log("urlList",urlList) console.log("urlList",urlList)
webSocketService.connect(`ws:` + urlList[1] + `:16750/api/webSocketServer/` + auth) webSocketService.connect(`ws:${ urlList[1] }:16750/api/webSocketServer/${ auth}`)
console.log("auth-app",auth) console.log("auth-app",auth)
} catch (error) { } catch (error) {
console.error('Failed to parse user message:', error) console.error('Failed to parse user message:', error)

View File

@ -24,16 +24,16 @@ export const getMenuLeaves = function() {
//单个菜单 //单个菜单
export const getMenuRoles = function(param) { export const getMenuRoles = function(param) {
let menuId = param; const menuId = param;
return request({ return request({
url: '/infra-service/menus/'+menuId+'/roles', url: `/infra-service/menus/${menuId}/roles`,
method:'get'}); method:'get'});
}; };
//添加菜单 //添加菜单
export const addMenu = function(param) { export const addMenu = function(param) {
let hostUrl = ""; const hostUrl = "";
let parentId = param.parent.id; const parentId = param.parent.id;
//判断是根菜单 还是子菜单 //判断是根菜单 还是子菜单
if(parentId === undefined){ if(parentId === undefined){
return request({ return request({
@ -42,7 +42,7 @@ export const addMenu = function(param) {
params:Object.assign({},param),}); params:Object.assign({},param),});
}else{ }else{
return request({ return request({
url:'/infra-service/menus/'+parentId+'/children', url:`/infra-service/menus/${parentId}/children`,
method:'post', method:'post',
params:Object.assign({},param),}); params:Object.assign({},param),});
} }
@ -50,7 +50,7 @@ export const addMenu = function(param) {
//添加菜单附加信息 //添加菜单附加信息
export const addMenuApendix = function(param) { export const addMenuApendix = function(param) {
let parentId = param.menu.parent?.id; const parentId = param.menu.parent?.id;
//判断是根菜单 还是子菜单 //判断是根菜单 还是子菜单
if(parentId === undefined){ if(parentId === undefined){
return request({ return request({
@ -59,7 +59,7 @@ export const addMenuApendix = function(param) {
data: param}); data: param});
}else{ }else{
return request({ return request({
url:'/infra-service/menus/'+parentId+'/children', url:`/infra-service/menus/${parentId}/children`,
method:'post', method:'post',
data: param}); data: param});
} }
@ -67,51 +67,52 @@ export const addMenuApendix = function(param) {
//修改菜单 //修改菜单
export const editMenu = function(param) { export const editMenu = function(param) {
let menuId = param.id; const menuId = param.id;
return request({ return request({
url: '/infra-service/menus/' + menuId, url: `/infra-service/menus/${ menuId}`,
params:Object.assign({},param), params:Object.assign({},param),
method:'put'}); method:'put'});
}; };
//修改菜单附加信息 //修改菜单附加信息
export const editMenuApendix = function(param) { export const editMenuApendix = function(param) {
let menuId = param.menu.id; const menuId = param.menu.id;
return request({ return request({
url: '/infra-service/menus/' + menuId, url: `/infra-service/menus/${ menuId}`,
data: param, data: param,
method:'put'}); method:'put'});
}; };
//删除菜单 //删除菜单
export const removeMenu = function(param) { export const removeMenu = function(param) {
let menuId = param.menuId; const menuId = param.menuId;
return request({ return request({
url: '/infra-service/menus/' + menuId, url: `/infra-service/menus/${ menuId}`,
method:'delete'}); method:'delete'});
}; };
//保存菜单角色 //保存菜单角色
export const addMenuRoles = function(param) { export const addMenuRoles = function(param) {
let menuId = param.id; const menuId = param.id;
let roleIds = param.roleIds; const roleIds = param.roleIds;
let hostUrl = ""; const hostUrl = "";
if (roleIds && roleIds.length > 0) { if (roleIds != null && (Array.isArray(roleIds) ? roleIds.length > 0 : roleIds !== '')){
console.log("parm",param)
return request({ return request({
url: "/infra-service/menus/" + menuId + "/roles/" + roleIds.toString(), url: `/infra-service/menus/${ menuId }/roles/${ roleIds.toString()}`,
method:'put'}); method:'put'});
} else { } else {
return request({ return request({
url: "/infra-service/menus/" + menuId + "/roles", url: `/infra-service/menus/${ menuId }/roles`,
method:'delete'}); method:'delete'});
} }
}; };
//该菜单未有的角色列表 //该菜单未有的角色列表
export const getRoleList = function(param) { export const getRoleList = function(param) {
let menuId = param; const menuId = param;
return request({ return request({
url: '/infra-service/menus/'+menuId+'/barring-roles', url: `/infra-service/menus/${menuId}/barring-roles`,
method:'get', method:'get',
}); });
}; };
@ -119,7 +120,7 @@ export const getRoleList = function(param) {
//根据菜单ID查询菜单详细信息 //根据菜单ID查询菜单详细信息
export const queryById = function(menuId) { export const queryById = function(menuId) {
return request({ return request({
url: '/infra-service/menus/' + menuId, url: `/infra-service/menus/${ menuId}`,
method: 'get' method: 'get'
}); });
}; };
@ -136,12 +137,11 @@ export const getIconImageResourceList = function() {
// 删除菜单图片资源 // 删除菜单图片资源
export const deleteIconImageFile = function(filename) { export const deleteIconImageFile = function(filename) {
return request({ return request({
url: '/infra-service/menus/icon-image-resources/' + filename, url: `/infra-service/menus/icon-image-resources/${filename}`,
method:'delete',}); method:'delete',});
}; };
// } added by justincao84 @ 2024.06.05 // } added by justincao84 @ 2024.06.05
//修改菜单角色
export const selectableMenuIcons = [ export const selectableMenuIcons = [
'el-icon-lx-attentionforbid', 'el-icon-lx-attentionforbid',
'el-icon-lx-attentionforbidfill', 'el-icon-lx-attentionforbidfill',

View File

@ -2,7 +2,9 @@
<el-dialog v-model="dialogFormVisible" title="权限控制" width="80%" @close="close"> <el-dialog v-model="dialogFormVisible" title="权限控制" width="80%" @close="close">
<el-form ref="formRef" :model="form" :rules="rules" label-width="150px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="150px">
<el-form-item label="角色" prop="role"> <el-form-item label="角色" prop="role">
<el-select v-model="form.role" placeholder="请选择角色"></el-select> <el-select v-model="form.roleIds" placeholder="请选择角色">
<el-option v-for="item in options.role" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
@ -12,14 +14,34 @@
</el-dialog> </el-dialog>
</template> </template>
<script setup> <script setup>
import {getRoleMenuList,getRoleList,addMenuRoles,getMenuRoles} from "@/api/menuManagement";
const dialogFormVisible = ref(false) const dialogFormVisible = ref(false)
const form = reactive({}) const form = reactive({
roleIds:"",
id:""
})
const rules = reactive({}) const rules = reactive({})
const formRef = ref(null) const formRef = ref(null)
const options = reactive({})
const getRoleListApi = async (data) => {
const res = await getMenuRoles(data.id)
options.role = res
}
const showAccess = async (Item) => {
await getRoleListApi(Item)
form.id = Item.id
dialogFormVisible.value = true
}
const addSubmit = () => { const addSubmit = () => {
formRef.value.validate((valid) => { formRef.value.validate((valid) => {
if (valid) { if (valid) {
console.log('submit', form) addMenuRoles(form)
.then(() => {
ElMessage({
message: '修改成功',
type: 'success'
})
})
dialogFormVisible.value = false dialogFormVisible.value = false
} else { } else {
console.log('error submit') console.log('error submit')
@ -32,4 +54,7 @@
dialogFormVisible.value = false dialogFormVisible.value = false
emit('refresh') emit('refresh')
} }
defineExpose({
showAccess
})
</script> </script>

View File

@ -203,6 +203,7 @@
const accessRef = ref(null) const accessRef = ref(null)
const handleAccessControlView = (data) => { const handleAccessControlView = (data) => {
//TODO: 访 //TODO: 访
accessRef.value.showAccess(data)
} }
onMounted(() => { onMounted(() => {
getMenuTree() getMenuTree()