uni-app 树形菜单展示插件需求 如组织架构

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app 树形菜单展示插件需求 如组织架构

2 回复

我也需要这个,要是开发出来的话 麻烦分享下 1591886747@qq.com 谢谢哈


在uni-app中实现树形菜单展示,特别是用于组织架构展示,可以通过使用递归组件来实现。下面是一个基本的代码案例,展示如何创建一个树形菜单插件。

首先,我们定义一个树形节点的数据结构,例如:

// 示例数据
const treeData = [
    {
        id: 1,
        label: 'CEO',
        children: [
            {
                id: 2,
                label: 'CTO',
                children: [
                    { id: 4, label: '前端开发' },
                    { id: 5, label: '后端开发' }
                ]
            },
            {
                id: 3,
                label: 'CFO',
                children: [
                    { id: 6, label: '会计' },
                    { id: 7, label: '出纳' }
                ]
            }
        ]
    }
];

接下来,我们创建一个递归组件TreeNode.vue来渲染树节点:

<template>
    <view>
        <view class="node">
            {{ node.label }}
        </view>
        <view v-if="node.children && node.children.length" class="children">
            <tree-node
                v-for="(child, index) in node.children"
                :key="index"
                :node="child"
            ></tree-node>
        </view>
    </view>
</template>

<script>
export default {
    name: 'TreeNode',
    props: {
        node: {
            type: Object,
            required: true
        }
    }
};
</script>

<style scoped>
.node {
    padding: 10px;
    border-left: 2px solid #000;
    margin-left: 20px;
}
.children .node {
    border-left: none;
    margin-left: 0;
}
</style>

然后,在主页面中使用这个递归组件来渲染整个树:

<template>
    <view>
        <tree-node :node="treeData[0]"></tree-node>
    </view>
</template>

<script>
import TreeNode from '@/components/TreeNode.vue';

export default {
    components: {
        TreeNode
    },
    data() {
        return {
            treeData: [
                // 这里放置你的树形数据
            ]
        };
    },
    created() {
        // 可以在这里异步获取数据并赋值给treeData
    }
};
</script>

注意,这个示例假设treeData是一个全局数组,且根节点只有一个(即treeData[0])。在实际应用中,你可能需要根据具体需求调整数据结构和组件的使用方式。此外,样式部分可以根据实际需求进行定制,比如添加点击展开/收起功能、图标等。

回到顶部