pagePermission.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <template>
  2. <ibps-layout ref="layout">
  3. <div slot="west">
  4. <div class="box">
  5. <p class="title">用户信息</p>
  6. <el-input placeholder="输入关键字进行过滤" v-model="filterText">
  7. </el-input>
  8. <div class="treeDiv">
  9. <el-tree ref="tree" :data="peopleData" :props="defaultProps" @node-click="handleNodeClick"
  10. :filter-node-method="filterNode"></el-tree>
  11. </div>
  12. </div>
  13. <ibps-container :margin-left="205 + 'px'" class="page">
  14. <detail v-if="show === 'detail'" :id="orgId" :row-handle="rowHandle" :rights-arr="rightsArr"
  15. :show-tree="false" :is-edit="true" />
  16. <el-alert v-else :closable="false" title="尚未指定一个人员" type="warning" show-icon style="height:50px;" />
  17. </ibps-container>
  18. </div>
  19. </ibps-layout>
  20. </template>
  21. <script>
  22. import { getAllUserInfor } from '@/api/permission/page'
  23. import FixHeight from '@/mixins/height'
  24. import Detail from '../details/pageDetail.vue'
  25. export default {
  26. components: {
  27. Detail,
  28. },
  29. mixins: [FixHeight],
  30. data() {
  31. return {
  32. show: '',
  33. rightsArr: ['join', 'delete'],
  34. rowHandle: true,
  35. width: 230,
  36. height: document.clientHeight,
  37. orgId: '',
  38. orgName: '',
  39. loading: false,
  40. peopleData: [],
  41. filterText: '',
  42. defaultProps: {
  43. children: 'children',
  44. label: 'label'
  45. },
  46. // tableData: [],
  47. // firsthTableData: []
  48. }
  49. },
  50. mounted() {
  51. this.loadNode()
  52. },
  53. methods: {
  54. loadNode() {
  55. this.loading = true
  56. getAllUserInfor().then(res => {
  57. this.loading = false
  58. for (let i of res.variables.data) {
  59. let data = {}
  60. data["id"] = i.id_
  61. data["label"] = i.name_
  62. this.peopleData.push(data)
  63. }
  64. }).catch(res => {
  65. this.loading = false
  66. })
  67. },
  68. filterNode(value, data) {
  69. if (!value) return true;
  70. return data.label.indexOf(value) !== -1;
  71. },
  72. handleNodeClick(data) {
  73. if (data.id === 0 || data.id === '0') {
  74. this.show = 'empty'
  75. return
  76. }
  77. this.orgId = data.id
  78. this.orgName = data.label
  79. this.show = 'detail'
  80. },
  81. },
  82. watch: {
  83. filterText(val) {
  84. this.$refs.tree.filter(val);
  85. }
  86. },
  87. }
  88. </script>
  89. <style lang="scss" >
  90. .box {
  91. width: 210px;
  92. }
  93. .title {
  94. font-size: 14px;
  95. margin: 21px 5px 5px;
  96. padding: 0;
  97. }
  98. .treeDiv {
  99. height: 800px;
  100. overflow-y: auto;
  101. }
  102. </style>