vue3-tree-org创建组织架构图简单案例分享

ops/2025/3/3 4:58:04/

代码环境:Vue3+ElementPlus+TS

使用感受:简单易操作,推荐使用

1. 效果图

2. main.ts导入

import vue3TreeOrg from "vue3-tree-org";
import "vue3-tree-org/lib/vue3-tree-org.css";
const app = createApp(App);
app.use(vue3TreeOrg);

3.主代码

<script setup lang="ts">
import { ElSwitch, ElColorPicker, ElMessage } from "element-plus";
import { onMounted, ref } from "vue";
import { errorMessage } from "/@/utils/message";
const cloneNodeDrag = ref(true);
const horizontal = ref(false);
const collapsable = ref(true);
const onlyOneNode = ref(false);
const expandLevel = ref(2);
const expandAll = ref(false);
const editDisaled = ref(false);
const labelStyle = ref({background: "#108ffe",color: "#fff"
});
const dataInfo = ref({});
const data = ref({id: 0,label: "XXXX科技有限公司",leader: "王总",children: [{id: 1,pid: 0,label: "COO",leader: "宋总工",children: [{id: 2,pid: 1,label: "产品研发部",leader: "张三",style: { color: "#fff", background: "#108ffe" },children: [{id: 6,pid: 2,label: "禁止编辑节点",leader: "张三1",disabled: true},{id: 8,pid: 2,label: "禁止拖拽节点",leader: "张三2",noDragging: true},{ id: 10, pid: 2, leader: "张三3", label: "测试" }]},{id: 3,pid: 1,label: "电气研发部",leader: "李工",children: [{id: 11,pid: 3,label: "研发能力中心",leader: "王工"},{id: 12,pid: 3,label: "平台软件研发",leader: "刘工"}]},{ id: 4, pid: 1, label: "机械研发部", leader: "刘工", expand: true }]}]
});onMounted(() => {try {dataInfo.value = data.value;} catch (err) {errorMessage(err);}
});const beforeDragEnd = (node, targetNode) => {console.log("beforeDragEnd");
};const onNodeClick = (e, data) => {ElMessage.info(data.label);
};const onNodeDblclick = (e, data) => {console.log("onNodeDblclick", data);
};
const onMenus = ({ node, command }) => {console.log("node", node);console.log("command", command);
};const onExpand = (e, data) => {console.log(e, data);
};// const toggleExpand = (data, val: boolean) => {
//   if (Array.isArray(data)) {
//     data.forEach(item => {
//       item.expand = val;
//       if (item.children) {
//         toggleExpand(item.children, val);
//       }
//     });
//   } else {
//     data.expand = val;
//     if (data.children) {
//       toggleExpand(data.children, val);
//     }
//   }
// };
</script>
<template><div><div style="display: flex; padding: 10px"><div style="margin-right: 10px"><el-switch v-model="horizontal" /> 横向</div><div style="margin-right: 10px"><el-switch v-model="collapsable" /> 可收起</div><div style="margin-right: 10px"><el-switch v-model="editDisaled" />禁止编辑</div><div style="margin-right: 10px"><el-switch v-model="onlyOneNode" /> 仅拖动当前节点</div><div style="margin-right: 10px"><el-switch v-model="cloneNodeDrag" /> 拖动节点副本</div></div><div style="padding: 0 10px 10px">背景色:<el-color-pickerv-model="labelStyle.background"size="small"/>&nbsp; 文字颜色:<el-color-pickerv-model="labelStyle.color"size="small"/>&nbsp;</div><div style="height: 800px"><vue3-tree-org:data="dataInfo"center:horizontal="horizontal":collapsable="collapsable":label-style="labelStyle":only-one-node="onlyOneNode":clone-node-drag="cloneNodeDrag":before-drag-end="beforeDragEnd":default-expand-level="expandLevel":disabled="editDisaled"@on-contextmenu="onMenus"@on-expand="onExpand"@on-node-dblclick="onNodeDblclick"@on-node-click="onNodeClick"><template v-slot="{ node }"><div class="tree-org-node__text node-label"><div class="custom-content">{{ node.label }}</div><div>负责人:{{ node.$$data.leader }}</div><!-- <div v-if="node.label === '平台软件研发' || node.label === '测试'">{{ node }}</div> --></div></template></vue3-tree-org></div></div>
</template><style lang="scss" scoped>
.tree-org-node__text {text-align: left;font-size: 14px;.custom-content {padding-bottom: 8px;margin-bottom: 8px;border-bottom: 1px solid currentColor;}
}
</style>


http://www.ppmy.cn/ops/162689.html

相关文章

7.1.1 计算机网络的组成

文章目录 物理组成功能组成工作方式完整导图 物理组成 计算机网络是将分布在不同地域的计算机组织成系统&#xff0c;便于相互之间资源共享、传递信息。 计算机网络的物理组成包括硬件和软件。硬件中包含主机、前端处理器、连接设备、通信线路。软件中包含协议和应用软件。 功…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_pstrdup函数

ngx_pstrdup 声明在 src/core/ngx_string.h u_char *ngx_pstrdup(ngx_pool_t *pool, ngx_str_t *src);实现在 src\core\ngx_string.c u_char * ngx_pstrdup(ngx_pool_t *pool, ngx_str_t *src) {u_char *dst;dst ngx_pnalloc(pool, src->len);if (dst NULL) {return NU…

Redis离线安装(内网,源码安装)

目录 1.下载安装包和安装 2、配置 二、连接方法&#xff1a;1.连接时输入密码&#xff1a; 设置开机自动重启&#xff08;重要&#xff09; 一、源码安装 参考连接&#xff1a; Redis设置密码_惜惜然的博客-CSDN博客_redis设置密码 Centos安装Redis_Champion-Dai的博客-…

Word表格中如何只单独调整某一单元格宽度

大家好&#xff0c;我是小鱼。 在日常制作Word表格时&#xff0c;表格中不同单元格有时需要设置不同的宽度&#xff0c;但是很多小伙伴会发现想单独调整某一个单元格宽度时&#xff0c;发现其它单元格宽度也会发生变化。那么&#xff0c;到底怎么才能单独调整某一单元格宽度呢…

【python】PyPDF2操作pdf

PyPDF2是一个用于处理PDF文件的Python库&#xff0c;可以读取、合并、拆分、裁剪和修改PDF文件。以下是一些使用PyPDF2的基本示例&#xff0c;包括如何安装该库以及执行一些常见的PDF操作。 安装PyPDF2 首先&#xff0c;你需要安装PyPDF2库。你可以使用pip来安装它&#xff1…

清华DeepSeek系列PDF全五弹推文的主要内容如下:

资源链接&#xff1a;https://pan.quark.cn/s/3d4088555ca0 资源链接&#xff1a;https://pan.quark.cn/s/df8ce3ea6f4e 「DeepSeek 资料大全」资源链接&#xff1a;https://pan.quark.cn/s/1352425b0645 「完整版 Dee...键整合包」链接&#xff1a;https://pan.quark.cn/s/…

将QT移植到RK3568开发板

文章目录 前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包 二、编译固件1. 选择板级配置文件2. 编译3. 打包固件4. 配置 Qt5 支持5. 烧写镜像 三、Linux中下载QT1. 安装 Qtcreator2. 创建第一个程序3. 配置 QtCreator 开发环境&#xff08;1&#…

借助naudio 进行编辑VB.NET

好吧&#xff0c;有好多软件可以实现&#xff1b; 好久前了&#xff0c;忘得 Naudio 使用 下载NAUDIO Imports NAudio.Wave录音 1.设置绘冲区大小 BufferMilliseconds 设置缓冲区大小 缓冲区太小&#xff0c;绘冲区太大&#xff0c;导致 声音断开或是重复过快wav.BufferMillis…