import Vue from 'vue' // Flattened array export default function treeToArray(data, children = 'children') { let tmp = [] data.forEach((item, index) => { Vue.set(item, '_index', index) tmp.push(item) if (item[children] && item[children].length > 0) { const res = treeToArray(item[children], children) tmp = tmp.concat(res) } }) return tmp } export function addAttrs(data, { parent = null, preIndex = false, level = 0, expand = false, children = 'children', show = true, select = false } = {}) { data.forEach((item, index) => { const _id = (preIndex ? `${preIndex}-${index}` : index) + '' Vue.set(item, '_id', _id) Vue.set(item, '_level', level) Vue.set(item, '_expand', expand) Vue.set(item, '_parent', parent) Vue.set(item, '_show', show) Vue.set(item, '_select', select) if (item[children] && item[children].length > 0) { addAttrs(item[children], { parent: item, level: level + 1, expand, preIndex: _id, children, status, select }) } }) } export function cleanParentAttr(data, children = 'children') { data.forEach(item => { item._parent = null if (item[children] && item[children].length > 0) { addAttrs(item[children], children) } }) return data }