b98d1a2e7b4d9452713d87ff5cbaf0c583cf475f.svn-base 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <div style="overflow: hidden">
  3. <el-select v-model="mineStatus" placeholder="请选择" multiple collapse-tags @change="selectChange">
  4. <el-option :value="mineStatusValue" class="filter-tree">
  5. <el-tree :data="data"
  6. v-loading="initTreeLoading"
  7. show-checkbox
  8. node-key="id"
  9. ref="tree"
  10. highlight-current
  11. :props="defaultProps"
  12. @check-change="handleCheckChange"></el-tree>
  13. </el-option>
  14. </el-select>
  15. </div>
  16. </template>
  17. <script>
  18. import { getAddTree} from "../api/duChaAPI.js";
  19. export default {
  20. name:"addvTree",
  21. props:['rootAddCode','level'],
  22. components: {},
  23. data() {
  24. return {
  25. mineStatus: [],
  26. mineStatusValue:"",
  27. initTreeLoading:true,
  28. data: [],
  29. defaultProps: {
  30. children: 'children',
  31. label: 'nm'
  32. },
  33. };
  34. },
  35. //监听属性 类似于data概念
  36. computed: {},
  37. //监控data中的数据变化
  38. watch: {
  39. },
  40. //方法集合
  41. methods: {
  42. getAdDataList() {
  43. var _self = this;
  44. getAddTree(this.rootAddCode,this.level).then((res)=>{
  45. if(res.data){
  46. _self.data = res.data.children;
  47. _self.initTreeLoading = false;
  48. }
  49. })
  50. },
  51. selectChange(e){
  52. var arrNew = [];
  53. var dataLength = this.mineStatusValue.length;
  54. var eleng = e.length;
  55. for(let i = 0; i< dataLength ;i++){
  56. for(let j = 0; j < eleng; j++){
  57. if(e[j] === this.mineStatusValue[i].nm){
  58. arrNew.push(this.mineStatusValue[i])
  59. }
  60. }
  61. }
  62. this.$refs.tree.setCheckedNodes(arrNew);//设置勾选的值
  63. },
  64. handleCheckChange(data, checked, node) {
  65. let res = this.$refs.tree.getCheckedNodes(true, true); //这里两个true,1. 是否只是叶子节点 2. 是否包含半选节点(就是使得选择的时候不包含父节点)
  66. let arrLabel = [];
  67. let arrId = [];
  68. let arr = [];
  69. res.forEach(item => {
  70. arrLabel.push(item.nm);
  71. arrId.push(item.id);
  72. arr.push(item);
  73. });
  74. this.mineStatusValue = arr;
  75. this.mineStatus = arrLabel;
  76. console.log('arr:'+JSON.stringify(arr))
  77. console.log('arrLabel:'+arrLabel)
  78. this.$emit('checkchange',arrId.join(","));
  79. },
  80. // changeSelect(data, check) {
  81. //
  82. // var parentNm = [];
  83. // var currNm = [];
  84. // //getCheckedNodes 接收两个 boolean 类型的参数,1. 是否只是叶子节点,默认值为 false 2. 是否包含半选节点,默认值为 false
  85. // this.TreeList= this.$refs.tree.getCheckedNodes(false, true).map(i => i.id);
  86. // if(check.halfCheckedNodes && check.halfCheckedNodes.length>0){
  87. // check.halfCheckedNodes.forEach((item)=>{
  88. // parentNm.push(item.nm);
  89. // })
  90. // }
  91. // if(check.checkedNodes && check.checkedNodes.length>0){
  92. // check.checkedNodes.forEach((item)=>{
  93. // currNm.push(parentNm.join("-")+"-"+item.nm);
  94. // })
  95. // }
  96. // this.mineStatus = currNm;
  97. // }
  98. },
  99. //生命周期 - 创建完成(可以访问当前this实例)
  100. created() {
  101. },
  102. //生命周期 - 挂载完成(可以访问DOM元素)
  103. mounted() {
  104. this.getAdDataList();
  105. },
  106. beforeCreate() {}, //生命周期 - 创建之前
  107. beforeMount() {}, //生命周期 - 挂载之前
  108. beforeUpdate() {}, //生命周期 - 更新之前
  109. updated() {}, //生命周期 - 更新之后
  110. beforeDestroy() {}, //生命周期 - 销毁之前
  111. destroyed() {}, //生命周期 - 销毁完成
  112. activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
  113. }
  114. </script>
  115. <style scoped>
  116. .filter-tree{
  117. height:auto;
  118. overflow-y:auto;
  119. max-height: 200px;
  120. padding: 0;
  121. background: white;
  122. }
  123. </style>