UNPKG

yw-ui-vue2

Version:

YW-UI-Vue2

93 lines (83 loc) 2.27 kB
// 获取当前多级下的所有数据 export function getKeyOfData(list, key, value) { if (!isArray(list)) throw new Error("getKeyOfData args list invalid!"); let i = -1; const len = list.length; let homeItem = {}; while (++i < len) { const item = list[i]; if (item[key] === value) { homeItem = item; break; } else if (item.children && item.children.length) { const res = getKeyOfData(item.children, key, value); if (res[key]) return res; } } return homeItem; } // 选中 export function setChecked(list = [], ids = []) { list.forEach((ret) => { // console.log(ret.id, ids.includes(ret.id)); ret.check = ids.includes(ret.id); if (ret.children && ret.children.length) { setChecked(ret.children, ids); } }); } // 数组判定 export function isArray(arr) { if (!Array.isArray) { Array.isArray = (arg) => { return Object.prototype.toString.call(arg) === "[object Array]"; }; } return Array.isArray(arr); } // 将树形数据转换为一维数组 export function flattenTree(tree, dep, parentLabel = "") { let result = []; for (const node of tree) { const currentLabel = parentLabel ? `${parentLabel}/${node[dep]}` : node[dep]; result.push({ check: node.check, label: currentLabel, id: node.id, key: node.id, // item: node, }); if (node.children && node.children.length > 0) { result.splice(result.length - 1, 1); result = result.concat(flattenTree(node.children, [dep], currentLabel)); } } return result; } // v-clickoutside指令 点击外部 export const clickoutside = { // 初始化指令 bind(el, binding) { function documentHandler(e) { if (el.contains(e.target)) { return false; } // if (binding.expression) { // binding.value(e); // } // 如果绑定的参数是函数,正常情况也应该是函数,执行 if (binding.value && typeof binding.value === "function") { binding.value(e); } } el.__vueClickOutside__ = documentHandler; document.addEventListener("click", documentHandler); }, update() {}, unbind(el) { document.removeEventListener("click", el.__vueClickOutside__); delete el.__vueClickOutside__; }, };