🚩 scTable增加props remoteSummary 支持显示远程合计行

This commit is contained in:
sakuya 2021-11-29 22:21:59 +08:00
parent 4dd61edc99
commit 08c742f358
2 changed files with 28 additions and 4 deletions

View File

@ -1,8 +1,8 @@
<!--
* @Descripttion: 数据表格组件
* @version: 1.3
* @version: 1.4
* @Author: sakuya
* @Date: 2021年10月19日16:04:54
* @Date: 2021年11月29日21:51:15
* @LastEditors:
* @LastEditTime:
-->
@ -10,7 +10,7 @@
<template>
<div class="scTable" :style="{'height':_height}" ref="scTableMain" v-loading="loading">
<div class="scTable-table">
<el-table v-bind="$attrs" :data="tableData" :row-key="rowKey" :key="toggleIndex" ref="scTable" height="100%" @sort-change="sortChange" @filter-change="filterChange">
<el-table v-bind="$attrs" :data="tableData" :row-key="rowKey" :key="toggleIndex" ref="scTable" height="100%" :summary-method="remoteSummary?remoteSummaryMethod:summaryMethod" @sort-change="sortChange" @filter-change="filterChange">
<slot></slot>
<template v-for="(item, index) in userColumn" :key="index">
<el-table-column v-if="!item.hide" :column-key="item.prop" :label="item.label" :prop="item.prop" :width="item.width" :sortable="item.sortable" :fixed="item.fixed" :filters="item.filters" :filter-method="remoteFilter||!item.filters?null:filterHandler">
@ -61,9 +61,11 @@
height: { type: [String,Number], default: "100%" },
pageSize: { type: Number, default: config.pageSize },
rowKey: { type: String, default: "" },
summaryMethod: { type: Function, default: null },
column: { type: Object, default: () => {} },
remoteSort: { type: Boolean, default: false },
remoteFilter: { type: Boolean, default: false },
remoteSummary: { type: Boolean, default: false },
hidePagination: { type: Boolean, default: false },
hideDo: { type: Boolean, default: false },
paginationLayout: { type: String, default: "total, prev, pager, next, jumper" },
@ -97,7 +99,8 @@
tableHeight:'100%',
tableParams: this.params,
userColumn: [],
customColumnShow: false
customColumnShow: false,
summary: {}
}
},
mounted() {
@ -161,6 +164,7 @@
this.tableData = response.rows || [];
}
this.total = response.total || 0;
this.summary = response.summary || {};
this.loading = false;
}
this.$refs.scTable.$el.querySelector('.el-table__body-wrapper').scrollTop = 0
@ -249,6 +253,24 @@
})
this.upData(filters)
},
//
remoteSummaryMethod(param){
const {columns} = param
const sums = []
columns.forEach((column, index) => {
if(index === 0) {
sums[index] = '合计'
return
}
const values = this.summary[column.property]
if(values){
sums[index] = values
}else{
sums[index] = ''
}
})
return sums
},
//
clearSelection(){
this.$refs.scTable.clearSelection()
@ -286,4 +308,5 @@
.scTable-table {height: calc(100% - 50px);}
.scTable-page {height:50px;display: flex;align-items: center;justify-content: space-between;padding:0 15px;}
.scTable-do {white-space: nowrap;}
.scTable:deep(.el-table__footer) .cell {font-weight: bold;}
</style>

View File

@ -10,6 +10,7 @@ export default {
data: res.data, //分析无分页的数据字段结构
rows: res.data.rows, //分析行数据字段结构
total: res.data.total, //分析总数字段结构
summary: res.data.summary, //分析合计行字段结构
msg: res.message, //分析描述字段结构
code: res.code //分析状态字段结构
}