Browse Source

菜单控制

master
hx 5 days ago
parent
commit
fd77a7d489
  1. 2
      src/store/getters.js
  2. 20
      src/store/modules/user.js
  3. 13
      src/views/device/device/index.vue
  4. 38
      src/views/system/role/index.vue

2
src/store/getters.js

@ -12,6 +12,8 @@
id: state => state.user.id,
name: state => state.user.name,
nickName: state => state.user.nickName,
isAdmin: state => state.user.isAdmin,
parentId: state => state.user.parentId,
introduction: state => state.user.introduction,
roles: state => state.user.roles,
permissions: state => state.user.permissions,

20
src/store/modules/user.js

@ -12,6 +12,8 @@ const user = {
name: '',
nickName: '',
avatar: '',
isAdmin: false,
parentId: '',
roles: [],
permissions: []
},
@ -32,6 +34,12 @@ const user = {
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
SET_IS_ADMIN: (state, isAdmin) => {
state.isAdmin = isAdmin
},
SET_PARENT_ID: (state, parentId) => {
state.parentId = parentId
},
SET_ROLES: (state, roles) => {
state.roles = roles
},
@ -65,6 +73,8 @@ const user = {
res=res.data;
const user = res.user
const userId = user.userId !== undefined && user.userId !== null ? user.userId : user.id
const userName = user.userName || user.account || ""
let avatar = user.avatar || ""
if (!isHttp(avatar)) {
avatar = (isEmpty(avatar)) ? defAva : process.env.VUE_APP_BASE_API + avatar
@ -75,10 +85,12 @@ const user = {
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
}
commit('SET_ID', user.userId)
commit('SET_NAME', user.userName)
commit('SET_ID', userId)
commit('SET_NAME', userName)
commit('SET_NICK_NAME', user.nickName)
commit('SET_AVATAR', avatar)
commit('SET_IS_ADMIN', user.isAdmin === true || user.isAdmin === 1 || user.isAdmin === "1")
commit('SET_PARENT_ID', user.parentId !== undefined && user.parentId !== null ? String(user.parentId) : '')
/* 初始密码提示 */
if(res.isDefaultModifyPwd) {
MessageBox.confirm('您的密码还是初始密码,请修改密码!', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => {
@ -107,6 +119,8 @@ const user = {
reject(error)
}).finally(() => {
commit('SET_TOKEN', '')
commit('SET_IS_ADMIN', false)
commit('SET_PARENT_ID', '')
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
removeToken()
@ -118,6 +132,8 @@ const user = {
FedLogOut({ commit }) {
return new Promise(resolve => {
commit('SET_TOKEN', '')
commit('SET_IS_ADMIN', false)
commit('SET_PARENT_ID', '')
removeToken()
resolve()
})

13
src/views/device/device/index.vue

@ -74,13 +74,13 @@
>
</el-col> -->
<!-- 新增导入按钮 -->
<el-col :span="1.5">
<el-col v-if="canManageDeviceMenus" :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['device:device:import']">{{ $t("device.button.import") }}</el-button>
</el-col>
<el-col :span="1.5">
<el-col v-if="canManageDeviceMenus" :span="1.5">
<el-button type="primary" plain icon="el-icon-s-claim" size="mini" @click="handleClaimDevice" v-hasPermi="['device:device:claim:batch']">{{ $t("device.button.claim") }}</el-button>
</el-col>
<el-col :span="1.5">
<el-col v-if="canManageDeviceMenus" :span="1.5">
<el-button type="warning" plain icon="el-icon-tickets" size="mini" v-hasPermi="['device:device:activate:batch']" @click="handlePendingActivateDialog">{{ $t("device.button.pendingActivate") }}</el-button>
</el-col>
<el-col :span="1.5">
@ -89,7 +89,7 @@
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-circle-close" size="mini" :disabled="multiple" @click="handleBatchDisable" v-hasPermi="['device:device:activate:batch']">{{ $t("device.button.batchDisable") }}</el-button>
</el-col>
<el-col :span="1.5">
<el-col v-if="canManageDeviceMenus" :span="1.5">
<el-button type="info" plain icon="el-icon-user" size="mini" :disabled="multiple" v-hasPermi="['business:businessUser:assign:devices']" @click="handleAssignDevice">{{ $t("device.button.assign") }}</el-button>
</el-col>
@ -696,6 +696,11 @@ export default {
importResultColumns() {
return this.$store.getters.device === "mobile" ? 1 : 2;
},
canManageDeviceMenus() {
const isAdmin = this.$store.getters.isAdmin === true;
const parentId = this.$store.getters.parentId;
return isAdmin || String(parentId) === "0";
},
canSearchByEmployee() {
const permissions = this.$store.getters.permissions || [];
return permissions.includes("*:*:*")

38
src/views/system/role/index.vue

@ -285,7 +285,7 @@ export default {
},
getMenuTreeselect() {
menuTreeselect().then((response) => {
this.menuOptions = response.data;
this.menuOptions = this.filterRoleMenuOptions(response.data);
});
},
getMenuAllCheckedKeys() {
@ -302,10 +302,41 @@ export default {
},
getRoleMenuTreeselect(roleId) {
return roleMenuTreeselect(roleId).then((response) => {
this.menuOptions = response.menus;
this.menuOptions = this.filterRoleMenuOptions(response.menus);
return response;
});
},
filterRoleMenuOptions(options) {
const source = Array.isArray(options) ? options : [];
return source.map((item) => this.filterRoleMenuNode(item)).filter(Boolean);
},
filterRoleMenuNode(node) {
if (!node || typeof node !== "object") {
return null;
}
const current = {
...node,
};
const children = Array.isArray(node.children) ? node.children : [];
if (String(current.id) === "1" || current.label === "系统管理") {
return null;
}
current.children = children
.map((item) => this.filterRoleMenuNode(item))
.filter(Boolean);
return current;
},
collectTreeNodeIds(treeNodes, idSet = new Set()) {
const nodes = Array.isArray(treeNodes) ? treeNodes : [];
nodes.forEach((node) => {
if (!node || node.id === undefined || node.id === null) {
return;
}
idSet.add(node.id);
this.collectTreeNodeIds(node.children, idSet);
});
return idSet;
},
getDeptTree(roleId) {
return deptTreeSelect(roleId).then((response) => {
this.deptOptions = response.depts;
@ -422,7 +453,8 @@ export default {
this.open = true;
this.$nextTick(() => {
roleMenu.then((res) => {
const checkedKeys = res.checkedKeys;
const visibleIdSet = this.collectTreeNodeIds(this.menuOptions);
const checkedKeys = (res.checkedKeys || []).filter((id) => visibleIdSet.has(id));
checkedKeys.forEach((value) => {
this.$nextTick(() => {
this.$refs.menu.setChecked(value, true, false);

Loading…
Cancel
Save