固定资产项目前端文件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

114 lines
2.9 KiB

import { HttpResponse } from '@angular/common/http'
import { AnyObject } from 'app/shared/components/server-paginated-table'
import { NzTreeNodeOptions } from 'ng-zorro-antd/tree'
export * from './form'
export * from './storage'
export class Utils {
static flatListToTree(data: any[]): any[] {
const res: any[] = []
const map = data.reduce((a, c) => {
a[c.id] = c
return a
}, Object.create(null))
for (let i of data) {
if (i.parentId) {
if (map[i.parentId]['children']) {
map[i.parentId]['children'].push(i)
} else {
map[i.parentId]['children'] = [i]
}
map[i.parentId]['isLeaf'] = !map[i.parentId]['children']
map[i.id]['isLeaf'] = !map[i.id]['children']
} else {
i.isLeaf = true
res.push(i)
}
}
return res
}
static treeToFlatList(tree: any[]) {
tree = JSON.parse(JSON.stringify(tree))
const res: any[] = []
const loop = (arr: any[], id?: number) => {
arr.forEach((i) => {
if (Array.isArray(i.children) && i.children.length > 0) {
loop(i.children, i.id) // 如果有children 就递归
Reflect.deleteProperty(i, 'children') // 删除children,然后push 不能结束
}
res.push({ ...i, parentId: id } as any)
})
}
loop(tree)
return res
}
static isEmpty(v: any) {
return [null, '', void 0].includes(v)
}
static objectToURLSearchParams(obj: {}): URLSearchParams {
const params = new URLSearchParams()
Object.entries(obj).forEach(([k, v]: [string, any]) => {
if (!Utils.isEmpty(v)) {
params.append(k, v)
}
})
return params
}
static buildTree<T extends { parentId: number } & AnyObject>(
organizations: T[],
keyName: string = 'key',
titleName: string = 'title',
): NzTreeNodeOptions[] {
const map: { [parentId: number]: NzTreeNodeOptions[] } = {}
organizations.forEach((org) => {
if (!map[org.parentId]) {
map[org.parentId] = []
}
const treeNode: NzTreeNodeOptions = {
...org,
title: org[titleName],
key: org[keyName].toString(),
}
map[org.parentId].push(treeNode)
})
const build = (parentId: number): NzTreeNodeOptions[] => {
if (!map[parentId]) {
return []
}
return map[parentId].map((node) => {
const children = build(parseInt(node.key))
return {
...node,
isLeaf: children.length === 0,
children,
}
})
}
return build(0)
}
static downLoadFile(response: HttpResponse<Object>, type: string, ext: string = 'pdf') {
const fileNameFromHeader = response.headers.get('Content-Disposition')
let fileName = ''
if (fileNameFromHeader) {
fileName = fileNameFromHeader.trim().split('=')[1].replace(/"/g, '')
}
console.log('fileName', fileName)
const blob = new Blob([response.body as any], { type })
const downloadLink = document.createElement('a')
downloadLink.href = URL.createObjectURL(blob)
downloadLink.download = decodeURIComponent(fileName)
document.body.appendChild(downloadLink)
downloadLink.click()
document.body.removeChild(downloadLink)
}
}