UserRole.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <!--
  2. * @Descripttion: 为用户分配角色
  3. * @version:
  4. * @Author: Devli
  5. * @Date: 2021-7-17 10:48:27
  6. * @LastEditors: qianlishi
  7. * @LastEditTime: 2021-12-13 14:56:58
  8. -->
  9. <template>
  10. <el-dialog
  11. class="tree_dialog"
  12. title="为用户分配角色"
  13. width="60%"
  14. :close-on-click-modal="false"
  15. center
  16. :visible.sync="visib"
  17. :before-close="closeDialog"
  18. >
  19. <el-tree
  20. ref="roleTree"
  21. :data="treeData"
  22. show-checkbox
  23. node-key="id"
  24. default-expand-all
  25. :default-checked-keys="checkedKeys"
  26. />
  27. <div slot="footer" style="text-align: center">
  28. <el-button type="primary" plain @click="saveTreeData">保存</el-button>
  29. <el-button type="danger" plain @click="closeDialog">取消</el-button>
  30. </div>
  31. </el-dialog>
  32. </template>
  33. <script>
  34. import { getRoleTree, saveRoleTree } from "@/api/accessUser";
  35. export default {
  36. props: {
  37. visib: {
  38. required: true,
  39. type: Boolean,
  40. default: false
  41. },
  42. loginName: {
  43. required: true,
  44. type: String,
  45. default: () => {
  46. return "";
  47. }
  48. }
  49. },
  50. data() {
  51. return {
  52. checkedKeys: [], // 当前选中的keys
  53. treeData: [] // 所有的树结点
  54. };
  55. },
  56. watch: {
  57. visib(val) {
  58. if (val) {
  59. // 弹窗弹出时需要执行的逻辑
  60. this.getTreeData();
  61. }
  62. }
  63. },
  64. created() {},
  65. methods: {
  66. // 获取所有的树形结构数据
  67. async getTreeData() {
  68. const { code, data } = await getRoleTree(this.loginName);
  69. if (code != "200") return;
  70. this.treeData = data.treeData;
  71. this.checkedKeys = data.checkedKeys;
  72. },
  73. async saveTreeData() {
  74. let params = {
  75. loginName: this.loginName,
  76. roleCodeList: this.$refs.roleTree.getCheckedKeys(true)
  77. };
  78. const { code } = await saveRoleTree(params);
  79. if (code != "200") return;
  80. this.closeDialog();
  81. },
  82. // 弹窗关闭之前需要执行的逻辑
  83. closeDialog() {
  84. this.treeData = [];
  85. this.checkedKeys = [];
  86. this.$emit("handleClose");
  87. }
  88. }
  89. };
  90. </script>