当前位置:首页 > VUE

vue实现组织架构页面

2026-01-12 02:47:10VUE

Vue 实现组织架构页面

数据准备

组织架构通常以树形结构展示,需要准备嵌套的节点数据。例如:

data() {
  return {
    orgData: {
      id: 1,
      label: '总公司',
      children: [
        {
          id: 2,
          label: '技术部',
          children: [
            { id: 3, label: '前端组' },
            { id: 4, label: '后端组' }
          ]
        }
      ]
    }
  }
}

递归组件实现

使用递归组件渲染无限层级的树状结构:

<template>
  <div class="org-node">
    <div @click="toggle">{{ node.label }}</div>
    <div v-show="isOpen" v-if="node.children" class="children">
      <org-node 
        v-for="child in node.children" 
        :key="child.id" 
        :node="child"
      />
    </div>
  </div>
</template>

<script>
export default {
  name: 'OrgNode',
  props: ['node'],
  data() {
    return { isOpen: true }
  },
  methods: {
    toggle() { this.isOpen = !this.isOpen }
  }
}
</script>

可视化布局优化

使用CSS实现缩进和连接线:

.org-node {
  margin-left: 20px;
  position: relative;
}
.org-node::before {
  content: "";
  position: absolute;
  left: -15px;
  top: 0;
  height: 100%;
  border-left: 1px dashed #ccc;
}

交互功能扩展

添加节点操作按钮和事件:

<div class="node-actions">
  <button @click.stop="addChild">添加</button>
  <button @click.stop="removeNode">删除</button>
</div>

methods: {
  addChild() {
    if (!this.node.children) {
      this.$set(this.node, 'children', [])
    }
    this.node.children.push({ id: Date.now(), label: '新部门' })
  }
}

第三方库方案

对于复杂需求可使用专业库:

  1. 安装依赖:

    npm install vue-org-tree
  2. 基础用法:

    
    <template>
    <vue-org-tree :data="orgData" :props="propsConfig"/>
    </template>
import VueOrgTree from 'vue-org-tree' export default { components: { VueOrgTree }, data() { return { propsConfig: { label: 'name', expand: 'expanded' } } } } ```

性能优化建议

大数据量时采用虚拟滚动:

npm install vue-virtual-scroll-list

示例实现:

<virtual-list :size="50" :remain="20">
  <org-node v-for="item in flatData" :node="item"/>
</virtual-list>

数据持久化

结合后端API实现数据同步:

async loadOrgData() {
  try {
    const res = await axios.get('/api/organization')
    this.orgData = res.data
  } catch (error) {
    console.error(error)
  }
}

vue实现组织架构页面

分享给朋友:

相关文章

vue实现页面缓存

vue实现页面缓存

使用 <keep-alive> 组件实现缓存 Vue 内置的 <keep-alive> 组件可以缓存动态组件或路由组件。通过包裹需要缓存的组件,可以保留其状态避免重复渲染。…

vue实现反馈页面

vue实现反馈页面

Vue 实现反馈页面的方法 基础表单结构 使用 Vue 的模板语法构建反馈表单,包含输入框、下拉选择、复选框等基础元素。表单需绑定 v-model 实现数据双向绑定。 <template>…

css制作滑动页面

css制作滑动页面

使用CSS实现滑动页面 通过CSS可以实现多种滑动页面效果,包括横向滑动、纵向滑动以及视差滚动等。以下是几种常见的实现方法: 横向滑动效果 横向滑动通常用于展示一组卡片或图片,可以通过CSS的ove…

css制作音乐盒页面

css制作音乐盒页面

音乐盒页面设计思路 音乐盒页面通常需要结合音频播放功能与视觉设计。以下是实现一个基础音乐盒页面的关键步骤。 HTML结构搭建 基础HTML需包含音频播放器控件和播放列表: <!DOC…

vue实现页面跳转

vue实现页面跳转

vue实现页面跳转的方法 在Vue中实现页面跳转主要有以下几种方式: 使用router-link组件 router-link是Vue Router提供的组件,用于声明式导航: <rout…

vue实现预约页面

vue实现预约页面

实现预约页面的基本结构 使用Vue CLI或Vite创建一个新项目,安装必要依赖如vue-router和axios。项目结构建议包含components文件夹存放可复用组件,views文件夹存放页面级…