index.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. :default-expanded-keys="defaultKeys"
  24. :default-checked-keys="defaultKeys"
  25. @node-click="handleNodeClick"
  26. />
  27. </div>
  28. </div>
  29. </template>
  30. <script>
  31. import tableListMixins from "@/mixins/tableList";
  32. import {deptTreeSelect,handsheDeptTreeSelect} from "@/api/system/public";
  33. export default {
  34. name: "k-orgTree",
  35. mixins:[tableListMixins],
  36. data(){
  37. return {
  38. //过滤信息
  39. deptName:'',
  40. //是否关联下级
  41. checked: false,
  42. // 机构树列表
  43. treeList: [],
  44. //默认选中节点
  45. defaultKeys:[],
  46. //自定义取值
  47. defaultProps: {
  48. children: "children",
  49. label: "name"
  50. },
  51. checkSub:true,
  52. defaultKey:null,
  53. }
  54. },
  55. props:{
  56. hangsheTree:{
  57. type:Boolean,
  58. default: false,
  59. }
  60. },
  61. watch: {
  62. // 根据名称筛选机构树
  63. deptName(val) {
  64. this.$refs.tree.filter(val);
  65. }
  66. },
  67. created() {
  68. this.getDeptTree();
  69. },
  70. methods:{
  71. /** 下穿状态改变*/
  72. changeCheckBox(state){
  73. this.$emit('checkChange',state);
  74. },
  75. /** 查询机构下拉树结构 */
  76. getDeptTree() {
  77. let method=deptTreeSelect;
  78. if(this.hangsheTree){
  79. method=handsheDeptTreeSelect
  80. }
  81. method().then(response => {
  82. this.treeList = response.data;
  83. this.defaultKeys.push(response.data[0].id);
  84. this.$emit('defaultKey',response.data[0].id);
  85. this.defaultKey = response.data[0].id;
  86. });
  87. },
  88. // 筛选节点
  89. filterNode(value, data) {
  90. if (!value) return true;
  91. return data.name.indexOf(value) !== -1;
  92. },
  93. // 节点单击事件
  94. handleNodeClick(data) {
  95. this.$emit('click',data);
  96. },
  97. },
  98. }
  99. </script>
  100. <style scoped>
  101. </style>