mirror of
https://github.com/layui/layui.git
synced 2026-02-09 10:19:20 +08:00
* style: 统一代码格式,修复ESLint错误 - 为所有模块添加尾随逗号 - 修复缺少分号的语句 - 统一对象字面量格式 - 添加ESLint配置文件和文档 - 更新package.json中的脚本和依赖项 * build: 添加 ESLint 配置文件以支持 IE9+ 兼容性 * refactor(upload): 使用已缓存的hint实例替换直接调用 优化代码性能,避免重复实例化hint对象,直接使用模块顶部已缓存的实例 * chore: 更新.gitignore文件以包含更多忽略规则 添加了更多常见的临时文件、编辑器文件、构建输出目录和运行时数据的忽略规则,使项目更加整洁并避免不必要的文件被提交到版本控制中 * fix(lay.js): 修复passive事件监听器选项的返回值 确保getter函数返回true以正确支持passive事件监听 * refactor(form): 移除表单模块中的冗余代码 删除表单模块中无实际作用的冗余代码行,这些代码只是将属性重新赋值为自身,没有实际功能意义 * fix(form): 修复复选框状态处理逻辑 确保复选框的 indeterminate 和 checked 状态被正确转换为布尔值,并优化事件调用时的空格格式 * feat(eslint): 完善 ESLint 配置并添加 VSCode 支持 添加 VSCode 配置文件以支持 ESLint 自动修复和格式化 更新 ESLint 配置,增强代码风格和兼容性规则 修复 package.json 中的脚本拼写错误并添加 format 脚本 调整 .gitignore 以允许特定 VSCode 配置文件 * style: 统一代码中的引号格式并修复缩进问题 统一将双引号改为单引号,修复部分代码缩进不一致的问题,提升代码风格一致性 * docs: 删除过时的ESLint配置文档文件 * build: 采用 prettier 作为代码格式化工具,剔除 ESLint 格式化部分 * chore: 剔除 .vscode/ 配置,保持编辑器中立 * build: 修改 ESLint 为「扁平化配置」方式,避免大量参数堆砌 * chore: 格式化代码 * ci: 添加 git hooks 和 CI 环节把关代码风格 * ci: update * ci: update * test: 测试 ci format * ci: 改用 husky 作为 git hooks,与 Layui 3 保持一致 经测试,simple-git-hooks 生成的 pre-commit 默认为 sh,在 Windows 不兼容(必须用 git bash 执行 commits) * build: 新增 CI 和生产环境跳过 husky 安装的判断 * build: 剔除重复配置 * build: 优化 eslint 配置 --------- Co-authored-by: 贤心 <3277200+sentsim@users.noreply.github.com>
453 lines
12 KiB
HTML
453 lines
12 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta
|
|
name="viewport"
|
|
content="width=device-width, initial-scale=1, maximum-scale=1"
|
|
/>
|
|
<title>树组件 - layui</title>
|
|
<link rel="stylesheet" href="../src/css/layui.css" media="all" />
|
|
</head>
|
|
<body class="layui-padding-5">
|
|
<div class="layui-btn-container">
|
|
<button type="button" class="layui-btn" lay-on="getChecked">
|
|
获取选中数据
|
|
</button>
|
|
<button type="button" class="layui-btn" lay-on="setChecked">
|
|
设置节点勾选
|
|
</button>
|
|
<button type="button" class="layui-btn" lay-on="reload">重载实例</button>
|
|
</div>
|
|
|
|
<div id="test1"></div>
|
|
<br />
|
|
<hr />
|
|
<br />
|
|
<div id="test2"></div>
|
|
<br />
|
|
<hr />
|
|
<br />
|
|
<div id="test3"></div>
|
|
|
|
<script src="../src/layui.js"></script>
|
|
<script>
|
|
layui.use(['tree', 'layer', 'util'], function () {
|
|
var $ = layui.$;
|
|
var tree = layui.tree;
|
|
var layer = layui.layer;
|
|
var util = layui.util;
|
|
var index = 100;
|
|
|
|
// 数据源
|
|
var data1 = [
|
|
{
|
|
title: 'A-1',
|
|
id: 1,
|
|
children: [
|
|
{
|
|
title: 'B-1-1',
|
|
id: 3,
|
|
href: '',
|
|
children: [
|
|
{
|
|
title: 'C-1-1-3',
|
|
id: 23,
|
|
children: [
|
|
{
|
|
title: 'D-1-1-3-1',
|
|
id: 24,
|
|
children: [
|
|
{
|
|
title: 'E-1-1-3-1-1',
|
|
id: 30
|
|
},
|
|
{
|
|
title: 'E-1-1-3-1-2',
|
|
id: 31
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'C-1-1-1',
|
|
id: 7,
|
|
checked: true,
|
|
children: [
|
|
{
|
|
title: 'D-1-1-1-1',
|
|
id: 15,
|
|
href: ''
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'C-1-1-2',
|
|
id: 8,
|
|
children: [
|
|
{
|
|
title: 'D-1-1-2-1',
|
|
id: 32
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'B-1-2',
|
|
id: 4,
|
|
spread: true,
|
|
children: [
|
|
{
|
|
title: 'C-1-2-1',
|
|
id: 9,
|
|
checked: true,
|
|
disabled: true
|
|
},
|
|
{
|
|
title: 'C-1-2-2',
|
|
id: 10
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'B-1-3',
|
|
id: 20,
|
|
children: [
|
|
{
|
|
title: 'C-1-3-1',
|
|
id: 21
|
|
},
|
|
{
|
|
title: 'C-1-3-2',
|
|
id: 22
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'A-2',
|
|
id: 2,
|
|
spread: true,
|
|
children: [
|
|
{
|
|
title: 'B-2-1',
|
|
id: 5,
|
|
spread: true,
|
|
children: [
|
|
{
|
|
title: 'C-2-1-1',
|
|
id: 11
|
|
},
|
|
{
|
|
title: 'C-2-1-2',
|
|
id: 12
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'B-2-2',
|
|
id: 6,
|
|
checked: true,
|
|
children: [
|
|
{
|
|
title: 'C-2-2-1',
|
|
id: 13
|
|
},
|
|
{
|
|
title: 'C-2-2-2',
|
|
id: 14,
|
|
disabled: true
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'A-3',
|
|
id: 16,
|
|
children: [
|
|
{
|
|
title: 'B-3-1',
|
|
id: 17,
|
|
fixed: true,
|
|
children: [
|
|
{
|
|
title: 'C-3-1-1',
|
|
id: 18
|
|
},
|
|
{
|
|
title: 'C-3-1-2',
|
|
id: 19
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'B-3-2',
|
|
id: 27,
|
|
children: [
|
|
{
|
|
title: 'C-3-2-1',
|
|
id: 28
|
|
},
|
|
{
|
|
title: 'C-3-2-2',
|
|
id: 29
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
];
|
|
|
|
// 数据源 2
|
|
var data2 = [
|
|
{
|
|
title: 'A-1',
|
|
id: 1,
|
|
field: 'name1',
|
|
checked: true,
|
|
spread: true,
|
|
children: [
|
|
{
|
|
title: 'B-1-1 可允许跳转',
|
|
id: 3,
|
|
field: 'name11',
|
|
href: '',
|
|
children: [
|
|
{
|
|
title: 'C-1-1-3',
|
|
id: 23,
|
|
field: '',
|
|
children: [
|
|
{
|
|
title: 'D-1-1-3-1',
|
|
id: 24,
|
|
field: '',
|
|
children: [
|
|
{ title: 'E-1-1-3-1-1', id: 30, field: '' },
|
|
{ title: 'E-1-1-3-1-2', id: 31, field: '' }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'C-1-1-1',
|
|
id: 7,
|
|
field: '',
|
|
children: [
|
|
{
|
|
title: 'D-1-1-1-1 可允许跳转',
|
|
id: 15,
|
|
field: '',
|
|
href: ''
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'C-1-1-2',
|
|
id: 8,
|
|
field: '',
|
|
children: [{ title: 'D-1-1-2-1', id: 32, field: '' }]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'B-1-2',
|
|
id: 4,
|
|
spread: true,
|
|
children: [
|
|
{ title: 'C-1-2-1', id: 9, field: '', disabled: true },
|
|
{ title: 'C-1-2-2', id: 10, field: '' }
|
|
]
|
|
},
|
|
{
|
|
title: 'B-1-3',
|
|
id: 20,
|
|
field: '',
|
|
children: [
|
|
{ title: 'C-1-3-1', id: 21, field: '' },
|
|
{ title: 'C-1-3-2', id: 22, field: '' }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'A-2',
|
|
id: 2,
|
|
field: '',
|
|
spread: true,
|
|
children: [
|
|
{
|
|
title: 'B-2-1',
|
|
id: 5,
|
|
field: '',
|
|
spread: true,
|
|
children: [
|
|
{ title: 'C-2-1-1', id: 11, field: '' },
|
|
{ title: 'C-2-1-2', id: 12, field: '' }
|
|
]
|
|
},
|
|
{
|
|
title: 'B-2-2',
|
|
id: 6,
|
|
field: '',
|
|
children: [
|
|
{ title: 'C-2-2-1', id: 13, field: '' },
|
|
{ title: 'C-2-2-2', id: 14, field: '', disabled: true }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'A-3',
|
|
id: 16,
|
|
field: '',
|
|
children: [
|
|
{
|
|
title: 'B-3-1',
|
|
id: 17,
|
|
field: '',
|
|
fixed: true,
|
|
children: [
|
|
{ title: 'C-3-1-1', id: 18, field: '' },
|
|
{ title: 'C-3-1-2', id: 19, field: '' }
|
|
]
|
|
},
|
|
{
|
|
title: 'B-3-2',
|
|
id: 27,
|
|
field: '',
|
|
children: [
|
|
{ title: 'C-3-2-1', id: 28, field: '' },
|
|
{ title: 'C-3-2-2', id: 29, field: '' }
|
|
]
|
|
}
|
|
]
|
|
}
|
|
];
|
|
|
|
// 数据源 3
|
|
var data3 = [
|
|
{
|
|
title: '节点 1',
|
|
id: '1000',
|
|
spread: true,
|
|
checked: true,
|
|
children: [
|
|
{
|
|
title: '节点 1-1',
|
|
id: '1001',
|
|
spread: true,
|
|
checked: false
|
|
},
|
|
{
|
|
title: '节点 1-2',
|
|
id: '1002',
|
|
spread: true,
|
|
checked: true,
|
|
children: [
|
|
{
|
|
title: '节点 1-2-1',
|
|
id: '1003'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: '节点 2',
|
|
id: '2000'
|
|
}
|
|
];
|
|
|
|
// 实例 1
|
|
var treeInst = tree.render({
|
|
elem: '#test1',
|
|
data: data1,
|
|
click: function (obj) {
|
|
layer.msg(JSON.stringify(obj.data));
|
|
console.log(obj);
|
|
},
|
|
oncheck: function (obj) {
|
|
// console.log(obj);
|
|
},
|
|
operate: function (obj) {
|
|
var type = obj.type;
|
|
if (type == 'add') {
|
|
// ajax 操作,返回 key 值
|
|
return index++;
|
|
} else if (type == 'update') {
|
|
console.log(obj.elem.find('.layui-tree-txt').html());
|
|
} else if (type == 'del') {
|
|
console.log(obj);
|
|
}
|
|
},
|
|
showCheckbox: true, // 是否显示复选框
|
|
accordion: false, // 是否开启手风琴模式
|
|
onlyIconControl: true, // 是否仅允许节点左侧图标控制展开收缩
|
|
isJump: 0, // 点击文案跳转地址
|
|
edit: true // 操作节点图标
|
|
/*
|
|
customName: { // 自定义 data 字段名
|
|
children: 'nodes'
|
|
}
|
|
*/
|
|
});
|
|
|
|
console.log(treeInst);
|
|
console.log('flatData:', treeInst.config.flatData);
|
|
|
|
// 按钮事件
|
|
util.on({
|
|
getChecked: function (othis) {
|
|
var checkedData = tree.getChecked('test1');
|
|
layer.alert(JSON.stringify(checkedData), { shade: 0 });
|
|
console.log(checkedData);
|
|
},
|
|
setChecked: function () {
|
|
tree.setChecked('test1', [11, 12]);
|
|
},
|
|
reload: function () {
|
|
tree.reload('test1', {});
|
|
}
|
|
});
|
|
|
|
// 实例 2 - checked 测试
|
|
tree.render({
|
|
elem: '#test2',
|
|
data: data3,
|
|
showCheckbox: true
|
|
});
|
|
|
|
// 实例 3 - 关闭连接线,箭头展开风格
|
|
tree.render({
|
|
elem: '#test3',
|
|
data: data1,
|
|
// expandClick: false,
|
|
showLine: false, // 关闭连接线
|
|
click: function (obj, state) {
|
|
console.log(obj);
|
|
},
|
|
oncheck: function (obj, checked, child) {
|
|
if (checked) {
|
|
console.log(obj[0]);
|
|
}
|
|
},
|
|
onsearch: function (data, num) {
|
|
console.log(num);
|
|
},
|
|
dragstart: function (obj, parent) {
|
|
console.log(obj, parent);
|
|
},
|
|
dragend: function (state, obj, target) {
|
|
console.log(state, obj, target);
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|