tree.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <template>
  2. <div class="tree-list">
  3. <el-tree :data="treeList" :props="defaultProps" :show-checkbox='isCheckbox' @check-change="handleCheckChange"
  4. highlight-current @node-click="treeClick" />
  5. </div>
  6. </template>
  7. <script setup lang="ts">
  8. import { useRouter } from "vue-router";
  9. const emits = defineEmits(["nodeId"]);
  10. const props = defineProps({
  11. isCheckbox: {
  12. type: Boolean,
  13. default: false,
  14. },
  15. });
  16. const defaultProps = {
  17. label: "name",
  18. children: "children",
  19. };
  20. const treeList = ref([]);
  21. const handleCheckChange = (data, checked) => {};
  22. const treeClick = (node, val) => {
  23. emits("nodeId", node.id);
  24. };
  25. const phone = JSON.parse(localStorage.getItem("userInfo")).username;
  26. const getTree = async (api) => {
  27. const { data } = await api({
  28. userId: phone,
  29. });
  30. treeList.value = data;
  31. };
  32. // 暴露给父组件的方法
  33. defineExpose({ getTree });
  34. </script>
  35. <style scoped lang="scss">
  36. .tree-list{
  37. width:100%;
  38. }
  39. :deep(
  40. .el-tree--highlight-current
  41. .el-tree-node.is-current
  42. > .el-tree-node__content
  43. ) {
  44. background-color: #f6fbff; /* 例如: #42b983 */
  45. border-right: 2px solid #0083ff;
  46. }
  47. :deep(.el-tree .el-tree-node > .el-tree-node__content) {
  48. height: 32px;
  49. }
  50. </style>