|
@@ -6,36 +6,40 @@ export default {
|
|
|
mixins: [LayoutObserver],
|
|
|
|
|
|
render(h) {
|
|
|
- const sums = [];
|
|
|
- this.columns.forEach((column, index) => {
|
|
|
- if (index === 0) {
|
|
|
- sums[index] = this.sumText;
|
|
|
- return;
|
|
|
- }
|
|
|
- const values = this.store.states.data.map(item => Number(item[column.property]));
|
|
|
- const precisions = [];
|
|
|
- let notNumber = true;
|
|
|
- values.forEach(value => {
|
|
|
- if (!isNaN(value)) {
|
|
|
- notNumber = false;
|
|
|
- let decimal = ('' + value).split('.')[1];
|
|
|
- precisions.push(decimal ? decimal.length : 0);
|
|
|
+ let sums = [];
|
|
|
+ if (this.summaryMethod) {
|
|
|
+ sums = this.summaryMethod({ columns: this.columns, data: this.store.states.data });
|
|
|
+ } else {
|
|
|
+ this.columns.forEach((column, index) => {
|
|
|
+ if (index === 0) {
|
|
|
+ sums[index] = this.sumText;
|
|
|
+ return;
|
|
|
}
|
|
|
- });
|
|
|
- const precision = Math.max.apply(null, precisions);
|
|
|
- if (!notNumber) {
|
|
|
- sums[index] = values.reduce((prev, curr) => {
|
|
|
- const value = Number(curr);
|
|
|
+ const values = this.store.states.data.map(item => Number(item[column.property]));
|
|
|
+ const precisions = [];
|
|
|
+ let notNumber = true;
|
|
|
+ values.forEach(value => {
|
|
|
if (!isNaN(value)) {
|
|
|
- return parseFloat((prev + curr).toFixed(Math.min(precision, 20)));
|
|
|
- } else {
|
|
|
- return prev;
|
|
|
+ notNumber = false;
|
|
|
+ let decimal = ('' + value).split('.')[1];
|
|
|
+ precisions.push(decimal ? decimal.length : 0);
|
|
|
}
|
|
|
- }, 0);
|
|
|
- } else {
|
|
|
- sums[index] = '';
|
|
|
- }
|
|
|
- });
|
|
|
+ });
|
|
|
+ const precision = Math.max.apply(null, precisions);
|
|
|
+ if (!notNumber) {
|
|
|
+ sums[index] = values.reduce((prev, curr) => {
|
|
|
+ const value = Number(curr);
|
|
|
+ if (!isNaN(value)) {
|
|
|
+ return parseFloat((prev + curr).toFixed(Math.min(precision, 20)));
|
|
|
+ } else {
|
|
|
+ return prev;
|
|
|
+ }
|
|
|
+ }, 0);
|
|
|
+ } else {
|
|
|
+ sums[index] = '';
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
return (
|
|
|
<table
|
|
@@ -61,7 +65,7 @@ export default {
|
|
|
class={ [column.id, column.headerAlign, column.className || '', this.isCellHidden(cellIndex, this.columns) ? 'is-hidden' : '', !column.children ? 'is-leaf' : '', column.labelClassName] }>
|
|
|
<div class={ ['cell', column.labelClassName] }>
|
|
|
{
|
|
|
- this.summaryMethod ? this.summaryMethod({ columns: this.columns, data: this.store.states.data })[cellIndex] : sums[cellIndex]
|
|
|
+ sums[cellIndex]
|
|
|
}
|
|
|
</div>
|
|
|
</td>
|