当前位置:   article > 正文

el-select + el-tree下拉树_el-select el-tree

el-select el-tree

 html:

  1. <!-- select框绑定的值是selectVal,也就是treeData里的value -->
  2. <el-select v-model="selectVal" placeholder="请选择..." size="mini" ref="select" style="width:100%">
  3. <!-- 设置一个input框用作模糊搜索选项功能 -->
  4. <el-input class="input" placeholder="此处键入'关键词'搜索查询" prefix-icon="el-icon-search" v-model="treeFilter" size="mini" clearable style="width:100%">
  5. </el-input>
  6. <!-- 设置一个隐藏的下拉选项,选项显示的是汉字label,值是value -->
  7. <!-- 如果不设置一个下拉选项,下面的树形组件将无法正常使用 -->
  8. <el-option hidden key="id" :value="selectVal" :label="selectName">
  9. </el-option>
  10. <!-- 设置树形控件 @node-click="handleNodeClick" @check-change="getSelcetNode" @check="getSelcetNode"-->
  11. <el-tree :data="treeData" :default-expand-all="true" show-checkbox ref="tree" @check="getSelcetNode" node-key="id" :props="defaultProps" :expand-on-click-node="false"
  12. :check-on-click-node="true" :filter-node-method="filterNode">
  13. <!-- @node-click:树形控件选项点击事件 -->
  14. <!-- :expand-on-click-node:使树形控件只有点箭头图标的时候才会展开或者收缩节点,为false则点文字直接选中该项 -->
  15. <!-- :check-on-click-node:是否在点击节点的时候选中节点,当选项为复选框时有用,这个属性可以删除 -->
  16. <!-- :default-expand-all:默认展开所有节点 -->
  17. <!-- :filter-node-method:实现搜索功能的筛选方法 -->
  18. <span slot-scope="{ data }">
  19. <!-- 选项用插槽来显示,匹配搜索功能,并方便增加tag标签需求 -->
  20. <span>{{ data.label }}</span>
  21. <el-tag size="mini" style="margin: 0 10px" v-show="filterorgType(data.tag)">{{ filterorgType(data.tag) }}</el-tag>
  22. </span>
  23. </el-tree>
  24. </el-select>

data:

  1. data() {
  2. return {
  3. selectVal: '', // select框的绑定值
  4. selectName: '', // select框显示的name
  5. treeFilter: '', // 搜索框绑定值,用作过滤
  6. // 树形控件数据
  7. treeData: [
  8. {
  9. value: '1',
  10. label: '运输管理',
  11. tag: 'TMS',
  12. children: [
  13. {
  14. value: 'tms_dispatch',
  15. label: '调度单',
  16. },
  17. {
  18. value: 'tms_led',
  19. label: '配送单',
  20. },
  21. {
  22. value: 'tms_led_dtl',
  23. label: '配送单明细',
  24. },
  25. {
  26. value: 'tms_order',
  27. label: '订单',
  28. },
  29. {
  30. value: 'tms_order_dtl',
  31. label: '订单明细',
  32. },
  33. {
  34. value: 'tms_shipment',
  35. label: '运单',
  36. },
  37. ],
  38. },
  39. {
  40. label: '仓储管理',
  41. value: '2',
  42. tag: 'WMS',
  43. children: [
  44. {
  45. value: 'wms_into_order',
  46. label: '入库单',
  47. },
  48. {
  49. value: 'wms_into_order_dtl',
  50. label: '入库单明细',
  51. },
  52. {
  53. value: 'wms_out_order',
  54. label: '出库单',
  55. },
  56. {
  57. value: 'wms_out_order_dtl',
  58. label: '出库单明细',
  59. },
  60. {
  61. value: 'wms_owner_order',
  62. label: '货权转移单',
  63. },
  64. {
  65. value: 'wms_owner_order_dtl',
  66. label: '货权转移单明细',
  67. },
  68. {
  69. value: 'wms_tally_order',
  70. label: '理货单',
  71. },
  72. {
  73. value: 'wms_tall_order_dtl',
  74. label: '理货单明细',
  75. },
  76. {
  77. value: 'wms_transfer_order',
  78. label: '库存调拨单',
  79. },
  80. {
  81. value: 'wms_transfer_order_dtl',
  82. label: '库存调拨单明细',
  83. },
  84. {
  85. value: 'tms_order_dtl',
  86. label: '订单明细',
  87. },
  88. ],
  89. },
  90. ],
  91. defaultProps: {
  92. children: 'children',
  93. label: 'name',
  94. },
  95. // 标签数组
  96. tagList: [
  97. { value: 'TMS', label: 'TMS' },
  98. { value: 'WMS', label: 'WMS' },
  99. ],
  100. }
  101. }
  1. methods: {
  2. // 复选框选中事件
  3. getSelcetNode(data, selStatus) {
  4. if (selStatus.checkedKeys.length != 0) {
  5. let arr1 = []
  6. let arr2 = []
  7. selStatus.checkedNodes.forEach((item, index) => {
  8. if (item.value != null) {
  9. arr1.push(item.value)
  10. arr2.push(item.label)
  11. }
  12. })
  13. this.selectVal = arr1.join(',')
  14. this.selectName = arr2.join(',')
  15. } else {
  16. this.selectVal = ''
  17. this.selectName = ''
  18. }
  19. },
  20. // 模糊查询(搜索过滤),实质为筛选出树形控件中符合输入条件的选项,过滤掉其他选项
  21. filterNode(value, data) {
  22. if (!value) return true
  23. let filterRes = data.label.indexOf(value) !== -1
  24. return filterRes
  25. },
  26. // 选项卡标签(可忽略,增值迭代需求)
  27. filterorgType(val) {
  28. let arr = this.tagList.filter((item) => {
  29. return item.value == val
  30. })
  31. return arr.length ? arr[0].label : ''
  32. },
  33. selectChange(e) {
  34. if (e == '') {
  35. this.selectVal = ''
  36. this.selectName = ''
  37. this.$refs.tree.setCheckedKeys([])
  38. }
  39. },
  40. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/532434
推荐阅读
相关标签
  

闽ICP备14008679号