123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <template>
- <a-card :bordered="false">
- <a-table
- rowKey="rowIndex"
- bordered
- :columns="columns"
- :dataSource="dataSource"
- :pagination="ipagination"
- @change="handleTableChange"
- >
- </a-table>
- </a-card>
- </template>
- <script>
- export default {
- name: 'TableTotal',
- data() {
- return {
- columns: [
- {
- title: '#',
- width: '180px',
- align: 'center',
- dataIndex: 'rowIndex',
- customRender: function (text, r, index) {
- return (text !== '合计') ? (parseInt(index) + 1) : text
- }
- },
- {
- title: '姓名',
- dataIndex: 'name',
- },
- {
- title: '贡献点',
- dataIndex: 'point',
- },
- {
- title: '等级',
- dataIndex: 'level',
- },
- {
- title: '更新时间',
- dataIndex: 'updateTime',
- },
- ],
- /* 分页参数 */
- ipagination:{
- current: 1,
- pageSize: 10,
- pageSizeOptions: ['10', '20', '30'],
- showTotal: (total, range) => {
- return range[0] + "-" + range[1] + " 共" + total + "条"
- },
- showQuickJumper: true,
- showSizeChanger: true,
- total: 0
- },
- dataSource: [
- { id:"1",name: '张三', point: 23, level: 3, updateTime: '2019-8-14' },
- { name: '小王', point: 6, level: 1, updateTime: '2019-8-13' },
- { name: '李四', point: 53, level: 8, updateTime: '2019-8-12' },
- { name: '小红', point: 44, level: 5, updateTime: '2019-8-11' },
- { name: '王五', point: 97, level: 10, updateTime: '2019-8-10' },
- { name: '小明', point: 33, level: 2, updateTime: '2019-8-10' },
- { name: '小张', point: 33, level: 2, updateTime: '2019-8-10' },
- { name: '小六', point: 33, level: 2, updateTime: '2019-8-10' },
- { name: '小五', point: 33, level: 2, updateTime: '2019-8-10' },
- { name: '小赵', point: 33, level: 2, updateTime: '2019-8-10' },
- { name: '李华', point: 33, level: 2, updateTime: '2019-8-10' },
- { name: '小康', point: 33, level: 2, updateTime: '2019-8-10' },
- { name: '小鹿', point: 33, level: 2, updateTime: '2019-8-10' },
- ],
- newArr:[],
- newDataSource:[],
- }
- },
- mounted() {
- // this.tableAddTotalRow(this.columns, this.dataSource)
- /*新增分页合计方法*/
- this.newDataSource=this.dataSource
- this.dataHandling(this.ipagination.pageSize-1)
- },
- watch:{
- 'ipagination.pageSize':function(val) {
- this.dataHandling(val-1)
- }
- },
- methods: {
- /** 表格增加合计行 */
- tableAddTotalRow(columns, dataSource) {
- let numKey = 'rowIndex'
- let totalRow = { [numKey]: '合计' }
- columns.forEach(column => {
- let { key, dataIndex } = column
- if (![key, dataIndex].includes(numKey)) {
- let total = 0
- dataSource.forEach(data => {
- total += /^\d+\.?\d?$/.test(data[dataIndex]) ? Number.parseInt(data[dataIndex]) : Number.NaN
- console.log(data[dataIndex], ':', (/^\d+\.?\d?$/.test(data[dataIndex]) ? Number.parseInt(data[dataIndex]) : Number.NaN))
- })
- if (Number.isNaN(total)) {
- total = '-'
- }
- totalRow[dataIndex] = total
- }
- })
- dataSource.push(totalRow)
- },
- handleTableChange(pagination, filters, sorter) {
- this.ipagination = pagination;
- },
- /*如果分页走这个方法*/
- dataHandling(num) {
- this.newArr=[];
- let arrLength = this.newDataSource.length; // 数组长度;
- let index = 0;
- for (let i = 0; i < arrLength; i++) {
- if (i % num === 0 && i !== 0) {
- this.newArr.push(this.newDataSource.slice(index, i));
- index = i;
- }
- if ((i + 1) === arrLength) {
- this.newArr.push(this.newDataSource.slice(index, (i + 1)));
- }
- }
- var arrs=this.newArr;
- for (let i =0;i<arrs.length;i++){
- let arr = arrs[i];
- let newArr= { };
- newArr.name="-";
- newArr.updateTime="-";
- newArr.rowIndex="合计"
- var level=0;
- var point=0;
- for (let j=0;j<arr.length;j++){
- level+=arr[j].level;
- point+=arr[j].point;
- }
- newArr.level=level;
- newArr.point=point;
- arrs[i].push(newArr);
- }
- var newDataSource=[];
- for (let i =0;i<arrs.length;i++){
- let arr = arrs[i];
- for(var j in arr){
- newDataSource.push(arr[j]);
- }
- }
- console.log(this.dataSource)
- this.dataSource = Object.values(newDataSource);
- console.log(this.dataSource)
- }
- }
- }
- </script>
- <style scoped>
- </style>
|