index.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <template>
  2. <div>
  3. <div class="head-container">
  4. <el-input
  5. v-model="deptName"
  6. placeholder="请输入机构名称"
  7. clearable
  8. size="small"
  9. prefix-icon="el-icon-search"
  10. style="margin-bottom: 20px"/>
  11. </div>
  12. <div class="tree-container">
  13. <div style="margin-bottom: 10px;">
  14. <el-checkbox v-model="checkSub" @change="changeCheckBox">是否关联下级机构</el-checkbox>
  15. </div>
  16. <el-tree
  17. :data="treeList"
  18. :props="defaultProps"
  19. :expand-on-click-node="false"
  20. :filter-node-method="filterNode"
  21. ref="tree"
  22. node-key="id"
  23. class="el-tree-ex"
  24. :default-expanded-keys="defaultKeys"
  25. :default-checked-keys="defaultKeys"
  26. @node-click="handleNodeClick"
  27. />
  28. </div>
  29. </div>
  30. </template>
  31. <script>
  32. import tableListMixins from "@/mixins/tableList";
  33. import {deptTreeSelect,handsheDeptTreeSelect} from "@/api/system/public";
  34. export default {
  35. name: "orgTree",
  36. mixins:[tableListMixins],
  37. data(){
  38. return {
  39. //过滤信息
  40. deptName:'',
  41. //是否关联下级
  42. checked: false,
  43. // 机构树列表
  44. treeList: [],
  45. //默认选中节点
  46. defaultKeys:[],
  47. //自定义取值
  48. defaultProps: {
  49. children: "children",
  50. label: "name"
  51. },
  52. checkSub:false,
  53. defaultKey:null,
  54. }
  55. },
  56. props:{
  57. hangsheTree:{
  58. type:Boolean,
  59. default:false,
  60. },
  61. defaultProps:{
  62. type:Object,
  63. default:{
  64. children: "children",
  65. label: "name"
  66. },
  67. }
  68. },
  69. watch: {
  70. // 根据名称筛选机构树
  71. deptName(val) {
  72. this.$refs.tree.filter(val);
  73. },
  74. defaultProps(val) {
  75. this.defaultProps={...val};
  76. }
  77. },
  78. created() {
  79. this.getDeptTree();
  80. },
  81. methods:{
  82. /** 下穿状态改变*/
  83. changeCheckBox(state){
  84. this.$emit('checkChange',state);
  85. },
  86. /** 查询机构下拉树结构 */
  87. getDeptTree() {
  88. let method=deptTreeSelect;
  89. if(this.hangsheTree){
  90. method=handsheDeptTreeSelect
  91. }
  92. method().then(response => {
  93. this.treeList = response.data;
  94. this.defaultKeys.push(response.data[0].id);
  95. this.$emit('defaultKey',response.data[0].id);
  96. this.defaultKey = response.data[0].id;
  97. setTimeout(() => {
  98. this.$refs.tree.setCurrentKey(response.data[0].id)
  99. }, 100);
  100. });
  101. },
  102. // 筛选节点
  103. filterNode(value, data) {
  104. if (!value) return true;
  105. return data.name.indexOf(value) !== -1;
  106. },
  107. // 节点单击事件
  108. handleNodeClick(data) {
  109. this.$emit('click',data);
  110. },
  111. },
  112. }
  113. </script>
  114. <style lang='scss' scoped>
  115. .el-tree-ex {
  116. overflow: auto;
  117. ::v-deep .is-current > .el-tree-node__content {
  118. background-color: #d1e0f1 !important;
  119. }
  120. }
  121. </style>