tm-trees.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <template>
  2. <view class="tm-trees">
  3. <tm-trees-row v-for="(item,index) in options"
  4. :option="item"
  5. :openKeys="openKeys"
  6. :checkedKeys="checkedKeys"
  7. v-on:open-keys="openKeysHandle"
  8. v-on:checked-keys="checkedKeysHandle"
  9. :key="index"/>
  10. </view>
  11. </template>
  12. <script>
  13. /**
  14. * 树形控件,支持多选
  15. * 千里及
  16. * 2021.2.1
  17. * props: {
  18. * options:树节点数据,
  19. * defaultOpen:默认展开的项(节点key),
  20. * defaultChecked:默认选中的项(节点key),
  21. * open-keys:展开事件监听,会返回展开项的key,
  22. * checked-keys:选中事件监听,返回选中项的key
  23. * }
  24. */
  25. export default {
  26. data() {
  27. return {
  28. openKeys: [],
  29. checkedKeys: []
  30. };
  31. },
  32. props: ['options', 'defaultOpen', 'defaultChecked'],
  33. created:function(){
  34. this.openKeys = this.defaultOpen || [];
  35. this.checkedKeys = this.defaultChecked || [];
  36. },
  37. watch: {
  38. defaultOpen: function(open) {
  39. this.openKeys = open;
  40. },
  41. defaultChecked: function(checked) {
  42. this.checkedKeys = checked;
  43. }
  44. },
  45. methods: {
  46. openKeysHandle: function(keys) {
  47. this.openKeys = keys;
  48. this.$emit('open-keys', keys);
  49. },
  50. checkedKeysHandle: function(keys) {
  51. this.checkedKeys = keys;
  52. this.$emit('checked-keys', keys);
  53. }
  54. }
  55. }
  56. </script>
  57. <style lang="less">
  58. .tm-trees {
  59. width: 100%;
  60. height: 100%;
  61. }
  62. </style>