feat: 引入da-tree树组件

This commit is contained in:
zhangyuanpeng
2024-11-25 17:02:24 +08:00
parent 4b757bcfc7
commit 32f5537af8
5 changed files with 2059 additions and 0 deletions

View File

@@ -0,0 +1,150 @@
/** 未选 */
export const unCheckedStatus = 0;
/** 半选 */
export const halfCheckedStatus = 1;
/** 选中 */
export const isCheckedStatus = 2;
/**
* 深拷贝内容
* @param originData 拷贝对象
* @author crlang(https://crlang.com)
*/
export function deepClone(originData) {
const type = Object.prototype.toString.call(originData);
let data;
if (type === "[object Array]") {
data = [];
for (let i = 0; i < originData.length; i++) {
data.push(deepClone(originData[i]));
}
} else if (type === "[object Object]") {
data = {};
for (const prop in originData) {
if (originData.hasOwnProperty(prop)) {
// 非继承属性
data[prop] = deepClone(originData[prop]);
}
}
} else {
data = originData;
}
return data;
}
/**
* 获取所有指定的节点
* @param type
* @param value
* @author crlang(https://crlang.com)
*/
export function getAllNodes(list, type, value, packDisabledkey = true) {
if (!list || list.length === 0) {
return [];
}
const res = [];
for (let i = 0; i < list.length; i++) {
const item = list[i];
if (item[type] === value) {
if ((packDisabledkey && item.disabled) || !item.disabled) {
res.push(item);
}
}
}
return res;
}
/**
* 获取所有指定的key值
* @param type
* @param value
* @author crlang(https://crlang.com)
*/
export function getAllNodeKeys(list, type, value, packDisabledkey = true) {
if (!list || list.length === 0) {
return null;
}
const res = [];
for (let i = 0; i < list.length; i++) {
const item = list[i];
if (item[type] === value) {
if ((packDisabledkey && item.disabled) || !item.disabled) {
res.push(item.key);
}
}
}
return res.length ? res : null;
}
/**
* 错误输出
*
* @param msg
*/
export function logError(msg, ...args) {
console.error(`DaTree: ${msg}`, ...args);
}
const toString = Object.prototype.toString;
export function is(val, type) {
return toString.call(val) === `[object ${type}]`;
}
/**
* 是否对象(Object)
* @param val
*/
export function isObject(val) {
return val !== null && is(val, "Object");
}
/**
* 是否数字(Number)
* @param val
*/
export function isNumber(val) {
return is(val, "Number");
}
/**
* 是否字符串(String)
* @param val
*/
export function isString(val) {
return is(val, "String");
}
/**
* 是否函数方法(Function)
* @param val
*/
export function isFunction(val) {
return typeof val === "function";
}
/**
* 是否布尔(Boolean)
* @param val
*/
export function isBoolean(val) {
return is(val, "Boolean");
}
/**
* 是否数组(Array)
* @param val
*/
export function isArray(val) {
return val && Array.isArray(val);
}