修改权限bug

This commit is contained in:
龙运模 2024-08-28 23:41:22 +08:00
parent e7a8185325
commit 3bb60109a3
7 changed files with 81 additions and 33 deletions

View File

@ -10,7 +10,7 @@
<span class="item part">部分确认</span> <span class="item part">部分确认</span>
</span> </span>
<emailSync @updateSync="refreshDom" :show="refreshShow" :text="syncText"> <emailSync @updateSync="refreshDom" :show="refreshShow" :text="syncText">
<span class="refreshEmail" @click="manualClick"><el-icon size="16px" :class="refreshShow?'refreshEmailIcon':''"><sc-icon-Refresh/></el-icon></span> <span class="refreshEmail" v-auth="'mailSyncManual'" @click="manualClick"><el-icon size="16px" :class="refreshShow?'refreshEmailIcon':''"><sc-icon-Refresh/></el-icon></span>
</emailSync> </emailSync>
</el-header> </el-header>
<el-main class="nopadding" v-loading="listLoading" element-loading-text="加载中..."> <el-main class="nopadding" v-loading="listLoading" element-loading-text="加载中...">
@ -43,9 +43,9 @@
<div class="rightBtnMain"> <div class="rightBtnMain">
<div class="date">{{emailParams.sent_at}}</div> <div class="date">{{emailParams.sent_at}}</div>
<div class="btnItem"> <div class="btnItem">
<el-button type="primary" plain :size="size" @click="seeEmail">查看原邮件</el-button> <el-button type="primary" v-auth="'mailBodyInfo'" plain :size="size" @click="seeEmail">查看原邮件</el-button>
<el-dropdown placement="bottom-start"> <el-dropdown placement="bottom-start">
<el-button type="primary" :size="size" >确认维保 <el-icon class="el-icon--right"><el-icon-ArrowDown/></el-icon></el-button> <el-button type="primary" v-auth="['repairConfirm']" :size="size">确认维保 <el-icon class="el-icon--right"><el-icon-ArrowDown/></el-icon></el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item @click="allDefend('all')">全部入保</el-dropdown-item> <el-dropdown-item @click="allDefend('all')">全部入保</el-dropdown-item>

View File

@ -2,23 +2,23 @@
<el-container class="mainBox mainHeaderNoBorderPadding"> <el-container class="mainBox mainHeaderNoBorderPadding">
<el-header class="header"> <el-header class="header">
<div class="left-panel"> <div class="left-panel">
<el-button type="primary" :size="size" icon="el-icon-plus" @click="add">新增工单</el-button> <el-button type="primary" v-auth="'maintenanceOrderAdd'" :size="size" icon="el-icon-plus" @click="add">新增工单</el-button>
<scImport ref="scImport" :size="size" title="批量导入维保工单" @parentParams="importUpload" @importSuccess="importSuccess"> <scImport ref="scImport" :size="size" title="批量导入维保工单" @parentParams="importUpload" @importSuccess="importSuccess">
<template #header> <template #header>
<el-button v-auth="'organizationImport'" type="primary" :size="size" plain @click="importFile" style="margin-right: 12px;">批量导入</el-button> <el-button v-auth="'maintenanceOrderImport'" type="primary" :size="size" plain @click="importFile" style="margin-right: 12px;">批量导入</el-button>
</template> </template>
<template #download> <template #download>
<div v-auth="'companyImportTemplate'" @click="importTemplate">下载导入模版</div> <div v-auth="'maintenanceOrderImport'" @click="importTemplate">下载导入模版</div>
</template> </template>
</scImport> </scImport>
<el-button type="primary" plain :size="size" :disabled="selection.length==0" @click="save_maintenance">提交维保</el-button> <el-button type="primary" v-auth="'maintenanceOrderSubmit'" plain :size="size" :disabled="selection.length==0" @click="save_maintenance">提交维保</el-button>
<el-button type="success" :size="size" icon="sc-icon-OrderReview" :disabled="selection.length==0" @click="batch_review">批量审核</el-button> <el-button type="success" v-auth="'maintenanceOrderApproval'" :size="size" icon="sc-icon-OrderReview" :disabled="selection.length==0" @click="batch_review">批量审核</el-button>
<el-button type="primary" plain :size="size" :disabled="selection.length==0" @click="issued_maintenance">下发维保</el-button> <el-button type="primary" v-auth="'maintenanceOrderSend'" plain :size="size" :disabled="selection.length==0" @click="issued_maintenance">下发维保</el-button>
<el-button type="danger" plain :size="size" icon="el-icon-Delete" :disabled="selection.length==0" @click="batch_del"></el-button> <el-button type="danger" v-auth="'maintenanceOrderDelete'" plain :size="size" icon="el-icon-Delete" :disabled="selection.length==0" @click="batch_del"></el-button>
</div> </div>
<div class="right-panel"> <div class="right-panel">
<scExport :size="size" @exportData="exportData" @updateShow="exportChangeShow" :show="exportShow" type="11"> <scExport :size="size" @exportData="exportData" @updateShow="exportChangeShow" :show="exportShow" type="11">
<el-button :size="size" icon="sc-icon-Download" @click="exportData">下载</el-button> <el-button :size="size" v-auth="'maintenanceOrderExport'" icon="sc-icon-Download" @click="exportData">下载</el-button>
</scExport> </scExport>
</div> </div>
</el-header> </el-header>
@ -61,13 +61,27 @@
<el-button class="noBorderBtn" icon="el-icon-more" :size="size"></el-button> <el-button class="noBorderBtn" icon="el-icon-more" :size="size"></el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<div v-auth="'maintenanceOrderAdd'">
<el-dropdown-item @click="table_edit(scope.row)" icon="sc-icon-Edit">编辑工单</el-dropdown-item> <el-dropdown-item @click="table_edit(scope.row)" icon="sc-icon-Edit">编辑工单</el-dropdown-item>
</div>
<div v-auth="'maintenanceOrderDelete'">
<el-dropdown-item @click="table_del(scope.row)" icon="sc-icon-Delete">删除工单</el-dropdown-item> <el-dropdown-item @click="table_del(scope.row)" icon="sc-icon-Delete">删除工单</el-dropdown-item>
</div>
<div v-auth="'maintenanceOrderApproval'">
<el-dropdown-item @click="table_review(scope.row)" icon="sc-icon-OrderReview" divided>审核工单</el-dropdown-item> <el-dropdown-item @click="table_review(scope.row)" icon="sc-icon-OrderReview" divided>审核工单</el-dropdown-item>
</div>
<div v-auth="'maintenanceOrderDetail'">
<el-dropdown-item @click="table_show(scope.row)" icon="sc-icon-See">工单详情</el-dropdown-item> <el-dropdown-item @click="table_show(scope.row)" icon="sc-icon-See">工单详情</el-dropdown-item>
</div>
<div v-auth="'maintenanceOrderSubmit'">
<el-dropdown-item icon="sc-icon-SaveMaintenance" @click="table_submit(scope.row)" divided>提交维保</el-dropdown-item> <el-dropdown-item icon="sc-icon-SaveMaintenance" @click="table_submit(scope.row)" divided>提交维保</el-dropdown-item>
</div>
<div v-auth="'maintenanceOrderSend'">
<el-dropdown-item icon="sc-icon-OrderMaintenance" @click="table_send(scope.row)">下发维保</el-dropdown-item> <el-dropdown-item icon="sc-icon-OrderMaintenance" @click="table_send(scope.row)">下发维保</el-dropdown-item>
</div>
<div v-auth="'orderLogsList'">
<el-dropdown-item icon="sc-icon-OrderLog" @click="table_logs(scope.row)" divided>工单日志</el-dropdown-item> <el-dropdown-item icon="sc-icon-OrderLog" @click="table_logs(scope.row)" divided>工单日志</el-dropdown-item>
</div>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>

View File

@ -26,7 +26,7 @@
<div class="leftBox"> <div class="leftBox">
<el-icon style="font-size: 26px;"><sc-icon-Excel/></el-icon> <el-icon style="font-size: 26px;"><sc-icon-Excel/></el-icon>
</div> </div>
<div class="rightBox" @click="downFile(emailParams)"> <div class="rightBox" v-auth="'mailAttachmentDownload'" @click="downFile(emailParams)">
<div class="name">{{emailParams.file_name && emailParams.file_name.file}}</div> <div class="name">{{emailParams.file_name && emailParams.file_name.file}}</div>
<div class="size"> <div class="size">
{{emailParams.file_name && emailParams.file_name.size}} {{emailParams.file_name && emailParams.file_name.size}}

View File

@ -4,7 +4,8 @@
<el-container> <el-container>
<el-main class="nopadding"> <el-main class="nopadding">
<el-menu class="menu mainMenu" :default-active="page"> <el-menu class="menu mainMenu" :default-active="page">
<el-menu-item-group v-for="group in menu" :key="group.groupName" :title="group.groupName"> <div v-for="group in menu" :key="group.groupName">
<el-menu-item-group v-if="group.show" :title="group.groupName">
<div v-for="item in group.list" :key="item.component"> <div v-for="item in group.list" :key="item.component">
<el-menu-item v-authSetup="item.actions" :index="item.component" @click="openPage"> <el-menu-item v-authSetup="item.actions" :index="item.component" @click="openPage">
<el-icon v-if="item.icon"><component :is="item.icon"/></el-icon> <el-icon v-if="item.icon"><component :is="item.icon"/></el-icon>
@ -14,6 +15,7 @@
</el-menu-item> </el-menu-item>
</div> </div>
</el-menu-item-group> </el-menu-item-group>
</div>
</el-menu> </el-menu>
</el-main> </el-main>
</el-container> </el-container>
@ -51,12 +53,13 @@ export default {
menu: [ menu: [
{ {
groupName: "账号设置", groupName: "账号设置",
show:true,
list: [ list: [
{ {
icon: "sc-icon-MachineRoom", icon: "sc-icon-MachineRoom",
title: "机房配置", title: "机房配置",
component: "account", component: "account",
actions:'roomConfig' actions:'roomConfig',
}, },
{ {
icon: "sc-icon-CostAllocation", icon: "sc-icon-CostAllocation",
@ -68,6 +71,7 @@ export default {
}, },
{ {
groupName: "数据管理", groupName: "数据管理",
show:true,
list: [ list: [
{ {
icon: "sc-icon-DataSource", icon: "sc-icon-DataSource",
@ -110,6 +114,16 @@ export default {
created() { created() {
const userInfo = this.$TOOL.data.get('USER_INFO'); const userInfo = this.$TOOL.data.get('USER_INFO');
this.user.role = userInfo.user_roles && userInfo.user_roles.role_names.length>0?userInfo.user_roles.role_names[0]:''; this.user.role = userInfo.user_roles && userInfo.user_roles.role_names.length>0?userInfo.user_roles.role_names[0]:'';
const permissions = this.$TOOL.data.get("PERMISSIONS");
this.menu.forEach(item=>{
item.show = false;
item.list.forEach(em=>{
if(permissions.auth.indexOf(em.actions)!=-1){
item.show = true;
this.page = item.list[0].component
}
})
})
}, },
methods: { methods: {
openPage(item){ openPage(item){

View File

@ -227,6 +227,13 @@ export default {
obj.data_permission.push({[em.meta.code]:list}) obj.data_permission.push({[em.meta.code]:list})
} }
} }
if(em.children && em.children.length>0){
em.children.forEach(daList=>{
if(em.checked || em.isCheck && daList.meta.hidden){
obj.menu_permission.push(daList.meta.code);
}
})
}
}) })
} }
}) })

View File

@ -42,13 +42,13 @@
</div> </div>
<el-tabs class="role_tabs" tab-position="top" @tab-change="activeClick"> <el-tabs class="role_tabs" tab-position="top" @tab-change="activeClick">
<el-tab-pane label="功能权限"> <el-tab-pane label="功能权限">
<dataTree ref="dataTree" :data="menu.list"/> <dataTree ref="dataTree" v-loading="dataTreeLoading" element-loading-text="加载中..." :data="menu.list"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="数据权限"> <el-tab-pane label="数据权限">
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="角色成员"> <el-tab-pane label="角色成员">
<members ref="members" :data="roleUser.list" /> <members ref="members" v-loading="roleUserLoading" element-loading-text="加载中..." :data="roleUser.list" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</el-main> </el-main>
@ -143,9 +143,11 @@
activeNum:0, activeNum:0,
roleCheckList:[], roleCheckList:[],
role_id:"", role_id:"",
dataTreeLoading:false,
menu: { menu: {
list: [], list: [],
}, },
roleUserLoading:false,
roleUser:{ roleUser:{
list:[] list:[]
}, },
@ -323,6 +325,13 @@
obj.data_permission.push({[em.meta.code]:list}) obj.data_permission.push({[em.meta.code]:list})
} }
} }
if(em.children && em.children.length>0){
em.children.forEach(daList=>{
if(em.checked || em.isCheck && daList.meta.hidden){
obj.menu_permission.push(daList.meta.code);
}
})
}
}) })
} }
}) })
@ -341,7 +350,9 @@
let params = { let params = {
role_id: this.role_id, role_id: this.role_id,
}; };
this.dataTreeLoading = true;
const res = await this.$API.system.role.roleMenu.post(params); const res = await this.$API.system.role.roleMenu.post(params);
this.dataTreeLoading = false;
this.menu.list = res.data; this.menu.list = res.data;
} }
}, },
@ -350,7 +361,9 @@
let params = { let params = {
role_id: this.role_id, role_id: this.role_id,
}; };
this.roleUserLoading = true;
const res = await this.$API.system.role.roleUser.post(params); const res = await this.$API.system.role.roleUser.post(params);
this.roleUserLoading = false;
this.roleUser.list = res.data; this.roleUser.list = res.data;
this.userCheckList = res.data; this.userCheckList = res.data;
if(res.data && res.data.length>0){ if(res.data && res.data.length>0){

View File

@ -45,7 +45,7 @@ export default {
}, },
watch:{ watch:{
data(val){ data(val){
if(val && val.length>0){ if(val){
val.forEach(item=>{ val.forEach(item=>{
item.checked = false; item.checked = false;
}) })