address-client
Version:
地址管理前台组件
102 lines (92 loc) • 2.07 kB
JavaScript
/**
* 获得给定资源的名称全路径
* @param res: 资源
* @param name: 全路径字段
*/
export function getFullName (res, name) {
let result = ''
while (true) {
let data = res.data
if (result === '') {
result = data[name]
} else {
result = data[name] + '.' + result
}
res = res.parent
if(!res){
break
}
}
return result
}
/**
* 获得给定资源的 名称和类型 全路径
* @param res: 资源
* @param name: 全路径字段
*/
export function getFullNameType (res, name, type) {
let result = []
while (true) {
let data = res.data
if(result === '') {
result = {name: data[name],type: data[type]}
} else {
result.unshift({name: data[name],type: data[type]})
}
res = res.parent
if(!res){
break
}
}
return result
}
/**
* 给拿到的资源添加父关系
* @param res
*/
export function procParent (reses) {
for (let value of reses) {
procInnerParent(value)
}
}
// 给资源res的所有子,添加父关系
function procInnerParent (res) {
for (let value of res.children) {
value.parent = res
procInnerParent(value)
}
}
/**
* 从给定一批资源中,递归找到给定号码的资源
* @param model:给定的一批资源
* @param id:要查找的资源id串
*/
export function find (model, id) {
// 返回最后一个id信息
let index = id.lastIndexOf('.')
if (index !== -1) {
id = id.substr(index + 1)
}
// 子中有,返回子里的
for (let value of model) {
let ret = getInnerResourceById(value, id)
if (ret) {
return ret
}
}
return null
}
// 根据id号取资源,自己不是,递归从子中找
function getInnerResourceById (res, id) {
if (res.id === id) {
return res
}
// 子中有,返回子里的
for (let value of res.children) {
let ret = getInnerResourceById(value, id)
if (ret) {
return ret
}
}
return null
}