| | |
| | | <template> |
| | | <div class="menuSettings_box"> |
| | | <My-bread |
| | | <div class="menuSettings_box menuRoleAuthorization"> |
| | | <!-- <My-bread |
| | | :list="[ |
| | | `${$t('operatManage.operatManage')}`, |
| | | |
| | | `${$t('operatManage.MenuRoleAuthorization')}`, |
| | | ]" |
| | | ></My-bread> |
| | | <el-divider /> |
| | | <div class="menuTreeBox"> |
| | | <div class="left_tree"> |
| | | <el-divider /> --> |
| | | <div class="menuSettings_tree subpage_Div menuRoleAuthorization_left content-border" style="padding-top:10px;width: 20%;overflow-y: auto;"> |
| | | <My-bread |
| | | :list="[ |
| | | `${$t('operatManage.operatManage')}`, |
| | | `${$t('operatManage.MenuRoleAuthorization')}`, |
| | | ]" |
| | | ></My-bread> |
| | | |
| | | <el-divider /> |
| | | <div> |
| | | <div class="card_tree"> |
| | | <el-tree |
| | | :data="depList" |
| | | :props="defaultProps" |
| | | :show-checkbox="false" |
| | | :check-on-click-node="true" |
| | | :check-strictly="true" |
| | | node-key="id" |
| | | @check="treeCheck" |
| | | :default-expanded-keys="[1]" |
| | | ref="treeForm" |
| | | > |
| | | </el-tree> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="menuRoleAuthorization_resize" title="收缩侧边栏">⋮</div> --> |
| | | |
| | | <!-- <div class="left_tree subpage_Div"> |
| | | <el-tree |
| | | :data="depList" |
| | | :props="defaultProps" |
| | | :show-checkbox="true" |
| | | :show-checkbox="false" |
| | | :check-on-click-node="true" |
| | | :check-strictly="true" |
| | | node-key="id" |
| | |
| | | :default-expanded-keys="[1]" |
| | | > |
| | | </el-tree> |
| | | </div> |
| | | <div class="right_menu"> |
| | | </div> --> |
| | | <div class="right_menu subpage_Div content-border"> |
| | | <div |
| | | style=" |
| | | font-size: 14px; |
| | | color: #409eff; |
| | | line-height: 1; |
| | | cursor: text; |
| | | position: relative; |
| | | top: 5px; |
| | | margin-left: 10px; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | " |
| | | > |
| | | <span> |
| | | {{ |
| | | $t('operatManage.UserRoleAuthorizationObj.PermissionTable') |
| | | $t("operatManage.UserRoleAuthorizationObj.PermissionTable") |
| | | }}</span |
| | | > |
| | | <div class="btn" style="margin-left: auto"> |
| | | <el-button |
| | | v-if="menuStatus.insert" |
| | | type="primary" |
| | | type="success" |
| | | icon="el-icon-circle-plus-outline" |
| | | size="small" |
| | | :disabled="roleid == null ? true : false" |
| | | @click="adduser" |
| | | style="background: #409eff" |
| | | >{{ |
| | | $t('operatManage.UserRoleAuthorizationObj.Added') |
| | | $t("operatManage.UserRoleAuthorizationObj.Added") |
| | | }}</el-button |
| | | > |
| | | <el-button |
| | |
| | | @click="deletesUser" |
| | | :disabled="roleid == null ? true : false" |
| | | >{{ |
| | | $t('operatManage.UserRoleAuthorizationObj.delete') |
| | | $t("operatManage.UserRoleAuthorizationObj.delete") |
| | | }}</el-button |
| | | > |
| | | </div> |
| | |
| | | <el-table |
| | | :data="tableData" |
| | | style="width: 100%" |
| | | height="80%" |
| | | border |
| | | height="calc(100% - 80px)" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"> </el-table-column> |
| | |
| | | align="center" |
| | | type="index" |
| | | :label="$t('dataManage.styleObj.index')" |
| | | width="55" |
| | | /> |
| | | <el-table-column |
| | | prop="authName" |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div |
| | | style="margin-top: 20px; text-align: center" |
| | | class="pagination_box" |
| | | > |
| | | <div class="pagination_box" style="margin-top: 10px"> |
| | | <el-pagination |
| | | @size-change="userhandleSizeChange" |
| | | @current-change="userhandleCurrentChange" |
| | | :current-page="userlistData.pageIndex" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-sizes="[10, 20, 50, 100]" |
| | | :page-size="userlistData.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="usercount" |
| | |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- <div class="menuSettings"> |
| | | |
| | |
| | | @size-change="addhandleSizeChange" |
| | | @current-change="addhandleCurrentChange" |
| | | :current-page="addlistData.pageIndex" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-sizes="[10, 20, 50, 100]" |
| | | :page-size="addlistData.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="addcount" |
| | |
| | | </el-pagination> |
| | | </div> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogTableVisible = false">{{ |
| | | $t('dataManage.dictionaryManageObj.cancel') |
| | | <el-button size="small" @click="dialogTableVisible = false">{{ |
| | | $t("dataManage.dictionaryManageObj.cancel") |
| | | }}</el-button> |
| | | <el-button type="primary" @click="addConfirm">{{ |
| | | $t('dataManage.dictionaryManageObj.confirm') |
| | | <el-button size="small" type="primary" @click="addConfirm">{{ |
| | | $t("dataManage.dictionaryManageObj.confirm") |
| | | }}</el-button> |
| | | </div> |
| | | </el-dialog> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import MyBread from '../../components/MyBread.vue'; |
| | | import MyBread from "../../components/MyBread.vue"; |
| | | import { |
| | | selectMenuRecursive, |
| | | selectMenuRecursives, |
| | | select_menuAuth_ByPageAndCount, |
| | | menuAuthDeletes, |
| | | select_AuthMenu_ByPageAndCount, |
| | | menuAuthinserts, |
| | | } from '../../api/api'; |
| | | } from "../../api/api"; |
| | | export default { |
| | | //import引入的组件需要注入到对象中才能使用 |
| | | components: { |
| | |
| | | usercount: 0, |
| | | tableData: [], |
| | | // 当前选择的行的id |
| | | templateSelection: '', |
| | | templateSelection: "", |
| | | // 当前选择的行的数据 |
| | | checkList: [], |
| | | |
| | | defaultProps: { |
| | | children: 'children', |
| | | label: 'cnName', |
| | | children: "children", |
| | | label: "cnName", |
| | | }, |
| | | oriData: [], //原始树数据 |
| | | depList: [], //el树数据 |
| | | backUpData: {}, |
| | | formLabelWidth: '170px', |
| | | formLabelWidth: "170px", |
| | | listData: { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | |
| | | }; |
| | | }, |
| | | methods: { |
| | | //左右拖動 |
| | | dragControllerDiv() { |
| | | var resize = document.getElementsByClassName( |
| | | "menuRoleAuthorization_resize" |
| | | ); |
| | | var left = document.getElementsByClassName("menuRoleAuthorization_left"); |
| | | var mid = document.getElementsByClassName("menuRoleAuthorization_mid"); |
| | | var box = document.getElementsByClassName("menuRoleAuthorization"); |
| | | for (let i = 0; i < resize.length; i++) { |
| | | // 鼠标按下事件 |
| | | resize[i].onmousedown = function (e) { |
| | | //颜色改变提醒 |
| | | resize[i].style.background = "#818181"; |
| | | var startX = e.clientX; |
| | | resize[i].left = resize[i].offsetLeft; |
| | | // 鼠标拖动事件 |
| | | document.onmousemove = function (e) { |
| | | var endX = e.clientX; |
| | | var moveLen = resize[i].left + (endX - startX); // (endx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度 |
| | | var maxT = box[i].clientWidth - resize[i].offsetWidth; // 容器宽度 - 左边区域的宽度 = 右边区域的宽度 |
| | | |
| | | if (moveLen < 205) moveLen = 205; // 左边区域的最小宽度为32px |
| | | if (moveLen > maxT - 300) moveLen = maxT - 300; //右边区域最小宽度为150px |
| | | |
| | | resize[i].style.left = moveLen; // 设置左侧区域的宽度 |
| | | |
| | | for (let j = 0; j < left.length; j++) { |
| | | left[j].style.width = moveLen + "px"; |
| | | mid[j].style.width = box[i].clientWidth - moveLen - 10 + "px"; |
| | | } |
| | | }; |
| | | // 鼠标松开事件 |
| | | document.onmouseup = function (evt) { |
| | | //颜色恢复 |
| | | resize[i].style.background = "#d6d6d6"; |
| | | document.onmousemove = null; |
| | | document.onmouseup = null; |
| | | resize[i].releaseCapture && resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉 |
| | | }; |
| | | resize[i].setCapture && resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获 |
| | | return false; |
| | | }; |
| | | } |
| | | }, |
| | | /** |
| | | * sws |
| | | */ |
| | |
| | | // 部门请求 |
| | | async getMenuTree() { |
| | | //获取目录树最大ID,新建节点使用 |
| | | const data = await selectMenuRecursive({ name: '管道基础大数据平台' }); |
| | | const data = await selectMenuRecursives({ name: menuStartName }); |
| | | if (data.code !== 200) { |
| | | return this.$message.error('请求单位报错'); |
| | | return this.$message.error("请求单位报错"); |
| | | } |
| | | |
| | | this.depList = this.treeData(data.result); |
| | |
| | | return cloneData.filter((father) => { |
| | | // 循环所有项 |
| | | let branchArr = cloneData.filter((child) => father.id == child.pid); // 对比ID,分别上下级菜单,并返回数据 |
| | | branchArr.length > 0 ? (father.children = branchArr) : ''; // 给父级添加一个children属性,并赋值 |
| | | branchArr.length > 0 ? (father.children = branchArr) : ""; // 给父级添加一个children属性,并赋值 |
| | | return father.pid == 0; // 返回一级菜单 |
| | | }); |
| | | }, |
| | |
| | | }, |
| | | |
| | | addConfirm() { |
| | | this.$confirm('确定是否新增', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | this.$confirm("确定是否新增", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(async () => { |
| | | let arr = []; |
| | |
| | | |
| | | const data = await menuAuthinserts(arr); |
| | | if (data.code !== 200) { |
| | | return this.$message.error('新增失败'); |
| | | return this.$message.error("新增失败"); |
| | | } |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '新增成功!', |
| | | type: "success", |
| | | message: "新增成功!", |
| | | }); |
| | | this.dialogTableVisible = false; |
| | | this.getRole(); |
| | |
| | | this.usermultipleSelection.forEach((e) => { |
| | | arr.push(e.id); |
| | | }); |
| | | const data = await menuAuthDeletes({ ids: arr.toString() }); |
| | | if (data.code !== 200) { |
| | | return this.$message.error('删除失败'); |
| | | } |
| | | this.$message({ |
| | | message: '删除成功', |
| | | type: 'success', |
| | | }); |
| | | this.getRole(); |
| | | this.$confirm("此操作将永久删除该权限, 是否继续?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(async () => { |
| | | const data = await menuAuthDeletes({ ids: arr.toString() }); |
| | | if (data.code == 200) { |
| | | this.InsertFormdialog = false; |
| | | this.$message({ |
| | | message: "删除成功!", |
| | | type: "success", |
| | | }); |
| | | this.getRole(); |
| | | } else { |
| | | this.$message({ |
| | | message: "删除失败!", |
| | | type: "warning", |
| | | }); |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | this.$message({ |
| | | type: "info", |
| | | message: "已取消删除", |
| | | }); |
| | | }); |
| | | // const data = await menuAuthDeletes({ ids: arr.toString() }); |
| | | // if (data.code !== 200) { |
| | | // return this.$message.error('删除失败'); |
| | | // } |
| | | // this.$message({ |
| | | // message: '删除成功', |
| | | // type: 'success', |
| | | // }); |
| | | // this.getRole(); |
| | | }, |
| | | |
| | | async getadduserList() { |
| | | this.addlistData.menuid = this.roleid; |
| | | const data = await select_AuthMenu_ByPageAndCount(this.addlistData); |
| | | if (data.code !== 200) { |
| | | return this.$message.error('新增用户列表请求错误'); |
| | | return this.$message.error("新增用户列表请求错误"); |
| | | } |
| | | this.gridData = data.result; |
| | | this.addcount = data.count; |
| | |
| | | async getRole() { |
| | | const data = await select_menuAuth_ByPageAndCount(this.listData); |
| | | if (data.code !== 200) { |
| | | return this.$message.error('用户角色请求错误'); |
| | | return this.$message.error("用户角色请求错误"); |
| | | } |
| | | this.tableData = data.result; |
| | | this.usercount = data.count; |
| | | }, |
| | | showPermsMenu(res) { |
| | | switch (res.tag) { |
| | | case '/delete': |
| | | case "/delete": |
| | | this.menuStatus.delete = true; |
| | | break; |
| | | case '/insert': |
| | | case "/insert": |
| | | this.menuStatus.insert = true; |
| | | break; |
| | | case '/update': |
| | | case "/update": |
| | | this.menuStatus.update = true; |
| | | break; |
| | | } |
| | |
| | | } |
| | | this.getMenuTree(); |
| | | }, |
| | | mounted() { |
| | | // this.dragControllerDiv(); |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="less" scoped> |
| | | //@import url(); 引入公共css类 |
| | | .menuSettings_box { |
| | | width: 97%; |
| | | height: 81%; |
| | | //height: 96%; |
| | | height: calc(100% - 20px); |
| | | width: 98%; |
| | | padding:10px; |
| | | border-radius: 10px; |
| | | position: relative; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | position: absolute; |
| | | .menuTreeBox { |
| | | width: 100%; |
| | | height: 91%; |
| | | position: relative; |
| | | |
| | | .left_tree { |
| | | width: 30%; |
| | | height: 94%; |
| | | padding: 20px; |
| | | border: 1px solid rgb(202, 201, 204); |
| | | width: 23%; |
| | | height: 92%; |
| | | padding: 10px; |
| | | |
| | | border-radius: 5px; |
| | | float: left; |
| | | overflow-y: auto; |
| | | // 更改指标树图标颜色 |
| | | /deep/ .el-tree .el-icon-caret-right:before { |
| | | color: white; /** 这里是要修改图标的颜色 **/ |
| | | } |
| | | /deep/ .el-tree { |
| | | color: white; /** 这里是要修改图标的颜色 **/ |
| | | background: transparent; |
| | | } |
| | | /deep/.el-tree-node__content { |
| | | &:hover { |
| | | background-color: rgba(255, 255, 255, 0.3) !important; |
| | | } |
| | | } |
| | | /deep/.el-tree-node.is-current > .el-tree-node__content { |
| | | background-color: rgba(255, 255, 255, 0.3) !important; |
| | | color: #409eff; |
| | | } |
| | | } |
| | | .right_menu { |
| | | width: 63%; |
| | | height: 94%; |
| | | padding: 20px; |
| | | border: 1px solid rgb(202, 201, 204); |
| | | border-radius: 5px; |
| | | float: right; |
| | | } |
| | | } |
| | | /*里面的代码可以根据自己需求去进行更改*/ |
| | | /* 设置滚动条的样式 */ |
| | | ::-webkit-scrollbar { |
| | | width: 4px; |
| | | } |
| | | /* 滚动槽 */ |
| | | ::-webkit-scrollbar-track { |
| | | -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.3); |
| | | border-radius: 10px; |
| | | } |
| | | /* 滚动条滑块 */ |
| | | ::-webkit-scrollbar-thumb { |
| | | border-radius: 10px; |
| | | background: #8b8b8b; |
| | | -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.5); |
| | | } |
| | | ::-webkit-scrollbar-thumb:window-inactive { |
| | | background: #8b8b8b; |
| | | height: 289px; |
| | | } |
| | | .pagination_box { |
| | | /deep/.el-input__inner { |
| | | background-color: transparent !important; |
| | | border: 1px solid; |
| | | color: white; |
| | | } |
| | | /deep/.el-pagination__total { |
| | | color: white; |
| | | } |
| | | /deep/.el-pagination__jump { |
| | | color: white; |
| | | } |
| | | /deep/.el-pager li.active { |
| | | color: #1890ff; |
| | | } |
| | | /deep/.el-pager li { |
| | | color: white; |
| | | background: transparent; |
| | | } |
| | | /deep/.el-pager li { |
| | | color: white; |
| | | } |
| | | /deep/.btn-prev { |
| | | background: transparent; |
| | | } |
| | | /deep/.btn-next { |
| | | background: transparent; |
| | | } |
| | | } |
| | | /deep/ .el-dialog { |
| | | background: #303030; |
| | | } |
| | | /deep/.el-range-editor.is-active, |
| | | .el-range-editor.is-active:hover, |
| | | .el-select .el-input.is-focus .el-input__inner { |
| | | border: 1px solid; |
| | | } |
| | | /deep/.el-dialog__title { |
| | | color: white; |
| | | } |
| | | /*修改table 表体的背景颜色和文字颜色*/ |
| | | /deep/ .el-table { |
| | | background-color: transparent; |
| | | |
| | | th, |
| | | td { |
| | | background-color: transparent; |
| | | } |
| | | .el-table__expanded-cell { |
| | | background-color: transparent !important; |
| | | } |
| | | |
| | | // 表头背景色 |
| | | th.el-table__cell { |
| | | background-color: #303030; |
| | | color: #fff; |
| | | } |
| | | tr > td { |
| | | background-color: #303030; |
| | | color: #fff; |
| | | } |
| | | |
| | | // hover效果 |
| | | tr:hover > td { |
| | | background-color: rgba(255, 255, 255, 0.3) !important; |
| | | } |
| | | |
| | | tbody tr:hover { |
| | | background-color: rgba(255, 255, 255, 0.3) !important; |
| | | // text-align: center; |
| | | } |
| | | |
| | | // 滚动条宽高 |
| | | .el-table__body-wrapper::-webkit-scrollbar { |
| | | width: 5px; |
| | | height: 5px; |
| | | } |
| | | |
| | | .el-table__body-wrapper::-webkit-scrollbar { |
| | | width: 5px; |
| | | /*滚动条宽度*/ |
| | | height: 10px; |
| | | /*滚动条高度*/ |
| | | } |
| | | /*定义滚动条轨道 内阴影+圆角*/ |
| | | .el-table__body-wrapper::-webkit-scrollbar-track { |
| | | box-shadow: 0px 1px 3px #216fe6 inset; |
| | | /*滚动条的背景区域的内阴影*/ |
| | | border-radius: 10px; |
| | | } |
| | | |
| | | /*定义滑块 内阴影+圆角*/ |
| | | .el-table__body-wrapper::-webkit-scrollbar-thumb { |
| | | box-shadow: 0px 1px 3px #216fe6 inset; |
| | | border-radius: 6px; |
| | | background-color: #216fe6; |
| | | .right_menu { |
| | | border-radius: 10px; |
| | | width: 77.5%; |
| | | // height: 92%; |
| | | padding: 10px; |
| | | // padding-top:0; |
| | | border-radius: 10px; |
| | | float: right; |
| | | } |
| | | |
| | | |
| | | .divider { |
| | | margin-top: 8px; |
| | | } |
| | | } |
| | | </style> |
| | | <style> |
| | | .el-select-dropdown { |
| | | background: #303030 !important; |
| | | border-color: 1px solid !important; |
| | | .subpage_Div { |
| | | border-radius: 10px; |
| | | } |
| | | |
| | | .el-scrollbar__wrap { |
| | | margin-bottom: -20px !important; |
| | | margin-right: -20px !important; |
| | | .el-table, |
| | | .el-table /deep/ .el-table__expanded-cell { |
| | | background-color: transparent !important; |
| | | } |
| | | .el-select-dropdown__item.hover, |
| | | .el-select-dropdown__item:hover { |
| | | background: rgba(255, 255, 255, 0.3) !important; |
| | | } |
| | | .el-select-dropdown__item { |
| | | color: white !important; |
| | | .el-table /deep/ th, |
| | | .el-table /deep/ tr { |
| | | background-color: transparent !important; |
| | | } |
| | | </style> |