| | |
| | | <template> |
| | | <div class="menuSettings_box"> |
| | | <div class="menuSettings_tree subpage_Div"> |
| | | <My-bread :list="[ |
| | | <div class="menuSettings_box userRoleAuthorization userRoleAuthorization1"> |
| | | <div class="menuSettings_left_tree subpage_Div userRoleAuthorization_left content-border"> |
| | | <My-bread |
| | | :list="[ |
| | | `${$t('operatManage.operatManage')}`, |
| | | `${$t('operatManage.UserRoleAuthorization')}`, |
| | | ]"></My-bread> |
| | | ]" |
| | | ></My-bread> |
| | | |
| | | <el-divider /> |
| | | <div class="menuTreeBox"> |
| | | |
| | | <div class="card_tree"> |
| | | <el-tree |
| | | :data="depList" |
| | |
| | | > |
| | | </el-tree> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <div class="menuSettings_tree subpage_Div"> |
| | | <div style=" |
| | | <!-- <div class="userRoleAuthorization_resize" title="收缩侧边栏">⋮</div> --> |
| | | <div |
| | | class=" |
| | | menuSettings_tree |
| | | subpage_Div |
| | | userRoleAuthorization_mid userRoleAuthorization_left1 |
| | | content-border |
| | | " |
| | | > |
| | | <div |
| | | style=" |
| | | font-size: 14px; |
| | | color: #409eff; |
| | | line-height: 1; |
| | |
| | | position: relative; |
| | | top: 10px; |
| | | margin-left: 10px; |
| | | "> |
| | | {{ $t('operatManage.UserRoleAuthorizationObj.RoleTable') }} |
| | | " |
| | | > |
| | | {{ $t("operatManage.UserRoleAuthorizationObj.RoleTable") }} |
| | | </div> |
| | | <el-divider /> |
| | | <el-table |
| | | :data="tableData" |
| | | style="width: 100%" |
| | | border |
| | | @row-click="singleElection" |
| | | height="78%" |
| | | height="calc(100% - 80px)" |
| | | > |
| | | <el-table-column |
| | | align="center" |
| | | width="55" |
| | | > |
| | | <el-table-column align="center" width="55"> |
| | | <template slot-scope="scope"> |
| | | <!-- 可以手动的修改label的值,从而控制选择哪一项 --> |
| | | <el-radio |
| | | class="radio" |
| | | v-model="templateSelection" |
| | | :label="scope.row.id" |
| | | > </el-radio> |
| | | > </el-radio |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | |
| | | > |
| | | </el-table-column> |
| | | </el-table> |
| | | <div |
| | | style="text-align: center; margin-top: 20px" |
| | | class="pagination_box" |
| | | > |
| | | <div style="text-align: center; margin-top: 10px" class="pagination_box"> |
| | | <el-pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | <div class="menuSettings_tree subpage_Div"> |
| | | |
| | | <div style=" |
| | | <!-- <div class="userRoleAuthorization_resize1" title="收缩侧边栏">⋮</div> --> |
| | | <div class="menuSettings_tree subpage_Div userRoleAuthorization_mid1 content-border"> |
| | | <div |
| | | style=" |
| | | font-size: 14px; |
| | | color: #409eff; |
| | | line-height: 1; |
| | | cursor: text; |
| | | position: relative; |
| | | top: 5px; |
| | | top: 0px; |
| | | margin-left: 10px; |
| | | display: flex; |
| | | align-items: center; |
| | | "> |
| | | flex-wrap: wrap; |
| | | " |
| | | > |
| | | <span> |
| | | {{ $t('operatManage.UserRoleAuthorizationObj.userTable') }}</span> |
| | | <div |
| | | class="btn" |
| | | style="margin-left: auto" |
| | | {{ $t("operatManage.UserRoleAuthorizationObj.userTable") }}</span |
| | | > |
| | | <div class="btn" style="margin-left: auto;"> |
| | | <el-button |
| | | v-if="menuStatus.insert" |
| | | type="success" |
| | |
| | | size="small" |
| | | :disabled="roleid == null ? true : false" |
| | | @click="adduser" |
| | | >{{ $t('operatManage.UserRoleAuthorizationObj.Added') }}</el-button> |
| | | >{{ $t("operatManage.UserRoleAuthorizationObj.Added") }}</el-button |
| | | > |
| | | <el-button |
| | | v-if="menuStatus.delete" |
| | | type="danger" |
| | |
| | | size="small" |
| | | @click="deletesUser" |
| | | :disabled="roleid == null ? true : false" |
| | | >{{ $t('operatManage.UserRoleAuthorizationObj.delete') }}</el-button> |
| | | >{{ $t("operatManage.UserRoleAuthorizationObj.delete") }}</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | <el-divider class="divider" /> |
| | |
| | | <el-table |
| | | :data="usertableData" |
| | | style="width: 100%" |
| | | height="78%" |
| | | border |
| | | height="calc(100% - 80px)" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column |
| | | type="selection" |
| | | width="55" |
| | | > </el-table-column> |
| | | <el-table-column type="selection" width="55"> </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | type="index" |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div |
| | | style="margin-top: 20px; text-align: center" |
| | | class="pagination_box" |
| | | > |
| | | <div style="margin-top: 10px; text-align: center" class="pagination_box"> |
| | | <el-pagination |
| | | @size-change="userhandleSizeChange" |
| | | @current-change="userhandleCurrentChange" |
| | |
| | | height="40vh" |
| | | @selection-change="addhandleSelectionChange" |
| | | > |
| | | <el-table-column |
| | | type="selection" |
| | | width="55" |
| | | > </el-table-column> |
| | | <el-table-column type="selection" width="55"> </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | type="index" |
| | |
| | | > |
| | | </el-table-column> |
| | | </el-table> |
| | | <div |
| | | style="margin-top: 20px; text-align: center" |
| | | class="pagination_box" |
| | | > |
| | | <div style="margin-top: 20px; text-align: center" class="pagination_box"> |
| | | <el-pagination |
| | | @size-change="addhandleSizeChange" |
| | | @current-change="addhandleCurrentChange" |
| | |
| | | > |
| | | </el-pagination> |
| | | </div> |
| | | <div |
| | | slot="footer" |
| | | class="dialog-footer" |
| | | > |
| | | <el-button |
| | | size="small" |
| | | @click="dialogTableVisible = false" |
| | | >{{ |
| | | $t('dataManage.dictionaryManageObj.cancel') |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button size="small" @click="dialogTableVisible = false">{{ |
| | | $t("dataManage.dictionaryManageObj.cancel") |
| | | }}</el-button> |
| | | <el-button |
| | | size="small" |
| | | type="primary" |
| | | @click="addConfirm" |
| | | >{{ $t('dataManage.dictionaryManageObj.confirm') }}</el-button> |
| | | <el-button size="small" type="primary" @click="addConfirm">{{ |
| | | $t("dataManage.dictionaryManageObj.confirm") |
| | | }}</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import MyBread from '../../components/MyBread.vue'; |
| | | import MyBread from "../../components/MyBread.vue"; |
| | | import { |
| | | queryDepTree, |
| | | select_Role_ByPageAndCount, |
| | |
| | | roleUserdeletes, |
| | | userselectByPageForRole, |
| | | roleUserinserts, |
| | | } from '../../api/api'; |
| | | } from "../../api/api"; |
| | | export default { |
| | | //import引入的组件需要注入到对象中才能使用 |
| | | components: { |
| | |
| | | usercount: 0, |
| | | tableData: [], |
| | | // 当前选择的行的id |
| | | templateSelection: '', |
| | | templateSelection: "", |
| | | // 当前选择的行的数据 |
| | | checkList: [], |
| | | |
| | | defaultProps: { |
| | | children: 'children', |
| | | label: 'name', |
| | | children: "children", |
| | | label: "name", |
| | | }, |
| | | oriData: [], //原始树数据 |
| | | depList: [], //el树数据 |
| | | backUpData: {}, |
| | | formLabelWidth: '170px', |
| | | formLabelWidth: "170px", |
| | | listData: { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | |
| | | }; |
| | | }, |
| | | methods: { |
| | | //左右拖動 |
| | | dragControllerDiv() { |
| | | let resize = document.getElementsByClassName( |
| | | "userRoleAuthorization_resize" |
| | | ); |
| | | let left = document.getElementsByClassName("userRoleAuthorization_left"); |
| | | let mid = document.getElementsByClassName("userRoleAuthorization_mid"); |
| | | let box = document.getElementsByClassName("userRoleAuthorization"); |
| | | for (let i = 0; i < resize.length; i++) { |
| | | // 鼠标按下事件 |
| | | resize[i].onmousedown = function (e) { |
| | | //颜色改变提醒 |
| | | resize[i].style.background = "#818181"; |
| | | let startX = e.clientX; |
| | | resize[i].left = resize[i].offsetLeft; |
| | | // 鼠标拖动事件 |
| | | document.onmousemove = function (e) { |
| | | let endX = e.clientX; |
| | | let moveLen = resize[i].left + (endX - startX); // (endx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度 |
| | | let 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; |
| | | }; |
| | | } |
| | | }, |
| | | dragControllerDiv1() { |
| | | let resize = document.getElementsByClassName( |
| | | "userRoleAuthorization_resize1" |
| | | ); |
| | | let left = document.getElementsByClassName("userRoleAuthorization_left1"); |
| | | let left1 = document.getElementsByClassName("userRoleAuthorization_left"); |
| | | let mid = document.getElementsByClassName("userRoleAuthorization_mid1"); |
| | | let box = document.getElementsByClassName("userRoleAuthorization1"); |
| | | console.log(resize) |
| | | console.log(box) |
| | | console.log(left1) |
| | | for (let i = 0; i < resize.length; i++) { |
| | | // 鼠标按下事件 |
| | | resize[i].onmousedown = function (e) { |
| | | console.log(e) |
| | | //颜色改变提醒 |
| | | resize[i].style.background = "#818181"; |
| | | let startX = e.clientX; |
| | | resize[i].left = resize[i].offsetLeft; |
| | | // 鼠标拖动事件 |
| | | document.onmousemove = function (e) { |
| | | |
| | | let endX = e.clientX; |
| | | console.log(endX ,startX) |
| | | let moveLen = resize[i].left + (endX - startX) - left1[i].offsetWidth ; // (endx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度 |
| | | let 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; |
| | | }; |
| | | } |
| | | }, |
| | | addConfirm() { |
| | | this.$confirm('确定是否新增', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | this.$confirm("确定是否新增", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(async () => { |
| | | let arr = []; |
| | |
| | | }); |
| | | const data = await roleUserinserts(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.getuserList(); |
| | | }) |
| | | .catch(() => { }); |
| | | .catch(() => {}); |
| | | }, |
| | | adduser() { |
| | | this.dialogTableVisible = true; |
| | |
| | | this.usermultipleSelection.forEach((e) => { |
| | | arr.push(e.id); |
| | | }); |
| | | this.$confirm('此操作将永久删除该权限, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(async () => { |
| | | const data = await roleUserdeletes({ ids: arr.toString() }); |
| | | if (data.code == 200) { |
| | | this.InsertFormdialog = false; |
| | | this.$confirm("此操作将永久删除该权限, 是否继续?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(async () => { |
| | | const data = await roleUserdeletes({ ids: arr.toString() }); |
| | | if (data.code == 200) { |
| | | this.InsertFormdialog = false; |
| | | this.$message({ |
| | | message: "删除成功!", |
| | | type: "success", |
| | | }); |
| | | this.getuserList(); |
| | | } else { |
| | | this.$message({ |
| | | message: "删除失败!", |
| | | type: "warning", |
| | | }); |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | this.$message({ |
| | | message: '删除成功!', |
| | | type: 'success', |
| | | type: "info", |
| | | message: "已取消删除", |
| | | }); |
| | | this.getuserList(); |
| | | } else { |
| | | this.$message({ |
| | | message: '删除失败!', |
| | | type: 'warning', |
| | | }); |
| | | } |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已取消删除' |
| | | }); |
| | | }); |
| | | // const data = await roleUserdeletes({ ids: arr.toString() }); |
| | | // if (data.code !== 200) { |
| | | // return this.$message.error('删除失败'); |
| | |
| | | const data = await queryDepTree(); |
| | | |
| | | 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; // 返回一级菜单 |
| | | }); |
| | | }, |
| | |
| | | this.addlistData.debid = this.debid; |
| | | const data = await userselectByPageForRole(this.addlistData); |
| | | if (data.code !== 200) { |
| | | return this.$message.error('新增用户列表请求错误'); |
| | | return this.$message.error("新增用户列表请求错误"); |
| | | } |
| | | this.gridData = data.result; |
| | | this.addcount = data.count; |
| | |
| | | async getuserList() { |
| | | const data = await roleUserselectByPageForRole(this.userlistData); |
| | | if (data.code !== 200) { |
| | | return this.$message.error('用户列表请求错误'); |
| | | return this.$message.error("用户列表请求错误"); |
| | | } |
| | | this.usertableData = data.result; |
| | | this.usercount = data.count; |
| | |
| | | async getRole() { |
| | | const data = await select_Role_ByPageAndCount(this.listData); |
| | | if (data.code !== 200) { |
| | | return this.$message.error('用户角色请求错误'); |
| | | return this.$message.error("用户角色请求错误"); |
| | | } |
| | | this.tableData = data.result; |
| | | this.count = 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(); |
| | | // this.dragControllerDiv1(); |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="less" scoped> |
| | | //@import url(); 引入公共css类 |
| | | .menuSettings_box { |
| | | height: 98%; |
| | | //height: 98%; |
| | | height: 100%; |
| | | width: 98%; |
| | | padding: 1%; |
| | | |
| | | padding: 0 1%; |
| | | // position: relative; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .menuSettings_tree { |
| | | width: 33%; |
| | | .menuSettings_left_tree{ |
| | | width: 20%; |
| | | height: 98%; |
| | | margin-top: 10px; |
| | | position: relative; |
| | | padding: 10px; |
| | | border-radius: 10px; |
| | | box-sizing: border-box; |
| | | overflow: hidden; |
| | | |
| | | overflow-y: auto; |
| | | } |
| | | .menuSettings_tree { |
| | | width: 39%; |
| | | height: 98%; |
| | | margin-top: 10px; |
| | | //height: 100%; |
| | | position: relative; |
| | | //padding: 1%; |
| | | padding: 10px; |
| | | border-radius: 10px; |
| | | box-sizing: border-box; |
| | | .saveBtn { |
| | | position: absolute; |
| | | left: 250px; |
| | |
| | | overflow: auto; |
| | | } |
| | | } |
| | | |
| | | |
| | | .divider { |
| | | margin-top: 8px; |
| | | } |
| | | } |
| | | .el-table, |
| | | .el-table /deep/ .el-table__expanded-cell { |
| | | background-color: transparent !important; |
| | | } |
| | | .el-table /deep/ th, |
| | | .el-table /deep/ tr { |
| | | background-color: transparent !important; |
| | | } |
| | | </style> |
| | | |
| | | |