list结构的子节点找到整个链路的code
/**
* @function findCategoryCode
* @description 找到当前节点的code,然后找当前节点的父节点,直到找到parentId = 0的节点
* @description 还可以优化吧childrenNodes等参数的配置成动态的key,用的地方多 可以提到公共的方法中
* @param data list格式的树
* @param categoryId 当前节点的id
*/
const findCategoryCode = (data: any, categoryId: string): any => {
const codes = [] as any
for (let i = 0; i < data.length; i += 1) {
// 找到当前节点
if (data[i].id === categoryId) {
// 把当前节点放起来
codes.unshift(data[i].code)
// 如果这个节点的父id是0 就直接返回数据
if (data[i].parentId === 0) {
return codes
}
// 如果父id不是0,继续查找
const items = findCategoryCode(data, data[i].parentId)
// 正常情况肯定会返回数据,这里做一个判空
if (items.length > 0) {
// 合并起来放起来
codes.unshift(...items)
return codes
}
}
}
return codes
}
// 处理类目回显格式
const dealShowCategory = (clas: any) => {
// 判空
if (!clas || clas.length === 0) {
return []
}
const data = []
for (let i = 0; i < clas.length; i += 1) {
const item = findCategoryCode(state.categoryList, clas[i].categoryId)
if (item.length > 0) {
data.push(item)
}
}
return data
}
tree结构的子节点找到整个链路的code
/**
* @function filterEmptyNode
* @description 先找到叶子节点,然后往回推到根节点,得到想要的数据
* @description 还可以优化吧childrenNodes等参数的配置成动态的key,用的地方多 可以提到公共的方法中
* @param data tree格式的树
* @param categoryCode 叶子节点的code
*/
const findCategoryCode = (data: any, categoryCode: string): any => {
const codes = [] as any
for (let i = 0; i < data.length; i += 1) {
// 先去子节点中查找
if (data[i].childrenNodes && data[i].childrenNodes.length > 0) {
const items = findCategoryCode(data[i].childrenNodes, categoryCode)
// 有数据说明找到子节点了code,逐层返回
if (items.length > 0) {
items.unshift(data[i].code)
return items
}
}
// 判断子节点
if (categoryCode === data[i].code) {
codes.push(data[i].code)
return codes
}
}
return codes
}
// 处理类目回显格式
const dealShowCategory = () => {
// 判空
if (!state.baseForm.items || state.baseForm.items.length === 0) {
return []
}
const data = []
for (let i = 0; i < state.baseForm.items.length; i += 1) {
const item = findCategoryCode(state.options, state.baseForm.items[i].categoryCode)
if (item.length > 0) {
data.push(item)
}
}
return data
}
dealShowCategory()