1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// table-list 所需的一系列操作方法
/**
* formatter
*
* @param {*} tableData 表单数据
* @param {*} column 列数据
* @returns {string} val 解析后的结果
*/
const formatter = (tableData, column, val) => {
const key = column.property;
if(tableData.dict && tableData.dict[key]){
const dict = tableData.dict[key]
return dict[val] || val;
}
return val;
};
/**
* formatterAmount
*
* @param {*} row 单元格数据
* @param {*} column 列数据
* @returns {string} val 解析后的结果
*/
const formatterAmount = (row, column) => {
const property = column.property;
const amount = row[property];
if(!amount){
return '0.00';
}
if(amount == 0){
return '0.00';
}
return amount;
};
/**
* formatterDate
*
* @param {*} row 单元格数据
* @param {*} column 列数据
* @returns {string} val 解析后的结果
*/
const formatterDate = (row, column) => {
const property = column.property;
const time = row[property];
if(!time) return '-';
let date = time.length<13?new Date(Number(time) * 1000) : new Date(Number(time));
let Y = date.getFullYear() + '-';
let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
let D = panLeft(date.getDate()) + ' ';
let h = panLeft(date.getHours()) + ':';
let m = panLeft(date.getMinutes()) + ':';
let s = panLeft(date.getSeconds());
return Y+M+D+h+m+s;
};
/**
* formatterDateOnly
*
* @param {*} row 单元格数据
* @param {*} column 列数据
* @returns {string} val 解析后的结果
*/
const formatterDateOnly = (row, column) => {
const property = column.property;
const time = row[property];
if(!time) return '-';
let date = new Date(Number(time));
let Y = date.getFullYear() + '-';
let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
let D = panLeft(date.getDate()) + ' ';
return Y+M+D;
};
function panLeft(num){
return num < 10 ? '0'+num : num;
}
/**
* 通过id从数组中查找
*
* @param {array} list 数组
* @param {string} key 需要查找的key
* @param {string} val 需要查找的val
* @returns {object} data 找到的数据
*/
const find = (list, key, val) => {
let index = -1;
let data = null;
list.forEach((item, i)=>{
if(item[key] === val){
index = i;
data = JSON.parse(JSON.stringify(item));
return;
}
})
return {
index,
data,
}
}
/**
* 构造树型结构数据
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
* @param {*} rootId 根Id 默认 0
*/
function handleTree(data, id, parentId, children, rootId) {
id = id || 'id'
parentId = parentId || 'parentId'
children = children || 'children'
rootId = rootId || Math.min.apply(Math, data.map(item => { return item[parentId] })) || 0
//对源数据深度克隆
const cloneData = JSON.parse(JSON.stringify(data))
//循环所有项
const treeData = cloneData.filter(father => {
let branchArr = cloneData.filter(child => {
//返回每一项的子级数组
return father[id] === child[parentId]
});
branchArr.length > 0 ? father.children = branchArr : '';
//返回第一层
return father[parentId] === rootId;
});
return treeData != '' ? treeData : data;
};
export {
formatter,
formatterAmount,
formatterDate,
formatterDateOnly,
find,
handleTree
};