组织机构树形列表实现

news2024/11/17 21:50:02

先看下效果图:
在这里插入图片描述
主要是用xm-select.js组件做的一个树形列表

xm-select.js的说明文档:https://maplemei.gitee.io/xm-select/?select=1#/basic/disabled

实现步骤:

  1. HTML部分
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    	// 简单优化一下列表显示
        .xm-label.auto-row {
            display: none;
        }
		
		.level-icon {
		    width: 18px;
			height: 18px;
			margin-top: 9px;
			margin-right: 6px;
		}
		
		.xm-option-content:hover .org-toolbar {
			display: block;
		}
    </style>
</head>
<body>
<div id="demo1"></div>
</body>
<!-- 这个在附件里面 -->
<script src="xm-select.js"></script>
</html>
  1. JavaScript部分:
<script>
	// 生成一个树形列表
    var demo1 = xmSelect.render({
        el: '#demo1',
        radio: true,
        autoRow: true,
        tree: {
            //是否显示树状结构
            show: true,
            //是否展示三角图标
            showFolderIcon: true,
            //是否显示虚线
            showLine: true,
            //间距
            indent: 20,
            //默认展开节点的数组, 为 true 时, 展开所有节点
            expandedKeys: true,
            //是否严格遵守父子模式
            strict: false,
            //是否开启极简模式
            simple: false,
            //点击节点是否展开
            clickExpand: false,
            //点击节点是否选中
            clickCheck: true
        },
        theme: {
            color: '#b9fce2',
        },
		searchTips: '输入关键字搜索',
        model: {
            icon: 'hidden',
            type: 'relative', //默认 absolute
        },
        // 每一行的显示效果,加了图标
        template({ item, sels, name, value }){
			let htmlText = ''
		    if (item.level === 1) {
				htmlText = '<img src="level_1.png" class="level-icon"/>'
			} else if (item.level === 2) {
				htmlText = '<img src="level_2.png" class="level-icon"/>'
			} else if (item.level === 3) {
				htmlText = '<img src="level_3.png" class="level-icon"/>'
			} else if (item.level === 4) {
				htmlText = '<img src="level_4.png" class="level-icon"/>'
			} else if (item.level === 5) {
				htmlText = '<img src="level_5.png" class="level-icon"/>'
			} else {
				htmlText = '<img src="level_6.png" class="level-icon"/>'
			}
			
			if (item.level !== 1) {
				if (item.sync === 1) {
					htmlText += '<img src="sync_yes.png" class="level-icon"/>';
				} else {
					htmlText += '<img src="sync_no.png" class="level-icon"/>';
				}
			}
			
            return htmlText + item.name + '<div  style="width:30px;height:30px;background-color:red;display:none" class="org-toolbar"></div>'
        },
        filterable: true,
        height: 'auto',
        // 这个可以用ajax传过来
        data: function () {
            return [{
                name: '总公司',
                value: -1,
				level: 1,
                children: [{
                    name: '子品牌1',
                    value: 1,
					level: 2,
					sync: 1,
                    children: [{
                        name: '华南分公司',
                        value: -2,
						level: 3,
						sync: 0,
                        children: [
						{
                            name: '一级A1',
                            value: -3,
							level: 4,
							sync: 1,
                            children: [
							{name: '二级B1', value: 14, level: 5}, 
							{name: '二级B2', value: 15, level: 5},
							{name: '二级B3', value: 16, level: 5},
							]
                        }, 
						{name: '一级A2', value: 4, level: 4}, 
						{name: '一级A3', value: 5, level: 4}, 
						{name: '一级A4', value: 6, level: 4}
						]
                    }]
                }, 
				{name: '子品牌2', value: 2, level: 2}
				]
            }]
        },
        // 单击选中行的事件
        on: function (data) {
            if (isNotEmpty(data.arr)) {
            	// 选中行的数据
                data = data.arr[0]
                // 可以进行一些其他操作
            }
        }
    })
</script>

这个组件的功能还有很多,具体可以参考文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1655960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux系统编程】第十五弹---调试器gdb使用

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、背景 2、安装gdb 3、gdb的使用 总结 1、背景 前面我们学习了文件编辑器&#xff0c;项目自动化构建工具&#xff0c;以及g…

mybatis-plus代码

项目结构 config package com.example.mpdemo.config;import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerIntercept…

1756jsp农产品销售管理系统Myeclipse开发mysql数据库C2C模式java编程计算机网页项目沙箱支付

一、源码特点 java 农产品销售管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0…

Linux文本处理工具【tr、cut、sort、uniq】

1. tr 命令——替换、压缩、删除 tr (Text Replacer) 命令常用来对来自标准输入的字符进行替换、压缩和删除。 命令格式 &#xff1a;tr [选项]... SET1 [SET2] &#xff08;SET 是一组字符串&#xff0c;一般都可按照字面含义理解&#xff09; 选项&#xff1a; -d 删除 -s 压…

vue地址选择器-三级联选择器+详细地址

在页面的显示情况 前端拼接实现存储 具体实现步骤 1.安装中国全省市区的数据 在命令提示符窗口使用管理员身份进入对应vue项目的文件夹&#xff0c;在窗口安装 npm install element-china-area-data -S2.在script内引入安装的数据 import {regionData,codeToText } from…

SpringBoot 使用 @RequiredArgsConstructor(onConstructor_ = @Autowired) 报错解决

若使用 RequiredArgsConstructor(onConstructor_ Autowired) 启动报错&#xff0c;或者爆红可以使用以下方法解决 1. 安装或启用 Lombok插件 2. 检查 Lombok 版本 3. 若 onConstructor_ 爆红&#xff0c; 可能是IDEA中文软件包冲突 4. 若以上还是不行&#xff0c;可以添加…

CSS-盒子模型

盒子模型的重要组成部分 内容区域content&#xff1a;width , height 内边距&#xff1a;内边框和内容区域的距离Padding边框线&#xff1a;Border外边距&#xff1a;Margin Border (边框线) 属性&#xff1a;Border 属性值&#xff1a;边框线粗细px 线条样式 颜色(不区分…

工业无尘布的静电问题及解决方法

工业生产中&#xff0c;无尘布是一种常用的清洁工具&#xff0c;但在使用过程中&#xff0c;静电问题常常会给生产环境带来困扰。本文优斯特将探讨工业无尘布的静电问题&#xff0c;并介绍解决这些问题的方法。 1. 静电产生原因 工业无尘布在擦拭过程中可能会产生静电&#x…

使用凌鲨建立软件研发技能学习小组

凌鲨(OpenLinkSaas)的团队功能除了提供论坛功能&#xff0c;还能记录团队成员的成长记录。 使用方法 打开团队功能 团队功能在默认情况下是关闭的&#xff0c;你可以在登录后打开团队功能开关。 创建学习团队 日报/周报/个人目标一般是企业团队需要&#xff0c;建议关闭。 …

unity基础(一)

内容概要&#xff1a; 生命周期函数vector3 位置 方向 缩放旋转等信息Vector3欧拉角和Quaternion四元素unity脚本执行顺序设置 一 生命周期函数 方法说明Awake最早调用,所以一般可以再此实现单例模式OnEnable组件激活后调用,在Awake后会调用一次Start在Update之前调用一次&a…

Spring 中 @Transactional 是怎么引入事务 AOP 的?

在 Spring 中&#xff0c;Transactional 注解是管理事务的关键工具之一。它允许开发人员通过简单地在方法或类上添加注解来定义事务的边界&#xff0c;从而实现对数据库操作的事务管理。 Transactional 是基于 Spring AOP&#xff08;Aspect-Oriented Programming&#xff0c;…

【小笔记】问答系统可视化实现的三种方式

下面三种方式都是基于Python的哈&#xff0c;从简单到复杂。 方式一&#xff1a;命令行交互问答 优点&#xff1a;原始简单直接 方式二&#xff1a;使用Python可视化框架 优点&#xff1a;无需学习前端技术栈即可搭建一个web。 streamlit&#xff1a;⭐️⭐️⭐️⭐️gra…

炒美股怎么开户?

近年来&#xff0c;随着国内投资者对境外投资需求的不断增长&#xff0c;炒美股逐渐成为许多投资者的选择。然而&#xff0c;随着监管政策的不断完善&#xff0c;传统的互联网券商开户方式已经不再适用。那么&#xff0c;对于想要入场美股市场的投资者来说&#xff0c;该如何开…

太牛逼了,用ComfyUI中一键完成电商模特换装换背景!商业级教程附上!

&#x1f310; 大背景&#xff1a;电商时代的画卷正在翻页 在全球电子商务风起云涌的今天&#xff0c;市场竞争愈发激烈。商家们始终在寻求提高效率、减少成本和增强用户体验的新方法。然而&#xff0c;一个关键问题一直困扰着电商行业——**如何高效且经济地展示商品&#xff…

Vue 项目 尚品汇(二)(暂停进行)

一、Home 模块组件拆分 基本流程 先写静态页面 拆分静态组件 获取服务器的数据进行展示 动态业务 &#xff08;一&#xff09;三级联动组件 如果一个组件在很多模块之间都在使用&#xff0c;我们就拆分成成一个全局组件 只需注册一次 在全局的项目都能使用 三级联动在 …

深入理解Go语言并发编程

随着计算机硬件的发展&#xff0c;多核处理器已经成为现代计算机的主流配置。在这样的背景下&#xff0c;并发编程成为了一种必备的技能。Go 语言作为一门先进的编程语言&#xff0c;天生支持并发编程&#xff0c;提供了丰富的并发原语和工具&#xff0c;使得并发编程变得更加容…

[YOLOv8] 用YOLOv8实现指针式圆形仪表智能读数(一)

最近研究了一个项目&#xff0c;利用python代码实现指针式圆形仪表的自动读数&#xff0c;并将读数结果进行输出&#xff0c;若需要完整数据集和源代码可以私信。 目录 &#x1f353;&#x1f353;1.yolov8实现圆盘形仪表智能读数 &#x1f64b;&#x1f64b;2.仪表目标检测…

机器人系统可以支持对接人工系统吗?

​ 随着科技的飞速发展&#xff0c;机器人系统在各行各业都扮演着越来越重要的角色。它们可以高效地处理大量数据&#xff0c;执行繁琐的任务&#xff0c;甚至在某些领域超越了人类的能力。然而&#xff0c;机器人系统也有其局限性&#xff0c;特别是在处理复杂的人际交往…

linux 服务器无 sudo 权限非 root 用户安装特定版本 cuda

1. 下载 cuda toolkit 下载想要版本的 cuda toolkit CUDA Toolkit 11.8 Downloads | NVIDIA Developer [xxxlocalhost ~]$ hostnamectlStatic hostname: localhost.localdomainIcon name: computer-serverChassis: serverMachine ID: b4258bf9bef54798b03e8e3a13756124Boot …

如何做到销售订单不做可用量检查,而交货单做

如何保证一个用户做某物料可用量检查时&#xff0c;不会锁定物料 可用量和需求冻结标志 Indicates whether, during the availability check, the material is blocked for other users. The block remains until the transaction responsible has been saved. It is set at m…