util.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { getUserInfo } from '@/common/store-mixin'
  2. import DataService from '../dataUphold/data-config'
  3. // 生成树形
  4. export function generateTree(data, id, parentId, children) {
  5. const idMap = {}
  6. const jsonTree = []
  7. data.forEach((v) => {
  8. v.key = v.id
  9. idMap[v[id]] = v
  10. })
  11. data.forEach((v) => {
  12. const parent = idMap[v[parentId]]
  13. if (parent) {
  14. !parent[children] && (parent[children] = [])
  15. parent[children].push(v)
  16. } else {
  17. jsonTree.push(v)
  18. }
  19. })
  20. return jsonTree
  21. }
  22. // 根据id获取树形结构的所有父级
  23. export function getTreeIds(tree, nodeId, config) {
  24. const { children = 'children', id = 'id' } = config || {}
  25. const toFlatArray = (tree, parentId) => {
  26. return tree.reduce((t, _) => {
  27. const child = _[children]
  28. return [
  29. ...t,
  30. parentId ? { ..._, parentId } : _,
  31. ...(child && child.length ? toFlatArray(child, _[id]) : []),
  32. ]
  33. }, [])
  34. }
  35. const getIds = (flatArray) => {
  36. let ids = [nodeId]
  37. let child = flatArray.find((_) => _[id] === nodeId)
  38. while (child && child.parentId) {
  39. ids = [child.parentId, ...ids]
  40. child = flatArray.find((_) => _[id] === child.parentId)
  41. }
  42. const isFlag = flatArray.find((_) => _[id] === 0)
  43. if (isFlag && ids[0] !== 0) {
  44. ids = [0, ...ids]
  45. }
  46. return ids
  47. }
  48. return getIds(toFlatArray(tree))
  49. }
  50. export function userRootGroup() {
  51. const userInfo = getUserInfo()
  52. DataService.getCompany(userInfo.account).then((res) => {
  53. let rootNodeData = {
  54. code: res.data.id,
  55. name: res.data.name,
  56. }
  57. const allUserAdmin = ['00942922', '00332032', '00372263', '00350134', '00965077', '00935000']
  58. if (allUserAdmin.includes(userInfo.account)) {
  59. rootNodeData = {}
  60. }
  61. console.log('🚀 ~ DataService.getCompany ~ rootNodeData:', rootNodeData)
  62. return rootNodeData
  63. })
  64. }