|  |  | 
 |  |  | import { Type } from '@angular/core'; | 
 |  |  | import { Column } from '@core/entity/grid'; | 
 |  |  | import { Types } from '@core/enum/types.enum'; | 
 |  |  | export interface Column { | 
 |  |  |    text?: string; | 
 |  |  |    name?: string; | 
 |  |  |    value?: any; | 
 |  |  |    width?: string; | 
 |  |  |    sort?: boolean; | 
 |  |  |    sort?: string; | 
 |  |  |    isSort?: boolean; | 
 |  |  |    type?: DataType; | 
 |  |  | } | 
 |  |  | export interface DataType { | 
 |  |  | 
 |  |  |     pageSize?: number ; // 一页多少条 | 
 |  |  |     total?: number; | 
 |  |  |     data?: any[]; | 
 |  |  |     queryParams?: string;     | 
 |  |  |     queryParams?: string; | 
 |  |  |     orderByClause?: string; | 
 |  |  |     getOrderByClause ?(): string; | 
 |  |  | } | 
 |  |  | export class Grid implements PageBean { | 
 |  |  | export class Grid<T> implements PageBean { | 
 |  |  |     getOrderByClause(): string { | 
 |  |  |         const orderby = this.sorts.map( (fn) => { | 
 |  |  |           return this.columns.find( (col: Column) => { | 
 |  |  |                  return fn === col.name; | 
 |  |  |            } ); | 
 |  |  |         }).map( (col: Column) => { | 
 |  |  |             const sort = col.sort.startsWith('asc') ? 'asc' : 'desc' ; | 
 |  |  |             return col.name + '||' + sort; | 
 |  |  |         }).join('|||'); | 
 |  |  |         return  encodeURI(orderby); | 
 |  |  |     } | 
 |  |  |     title = ''; | 
 |  |  |     pageIndex = 0; // 页码 | 
 |  |  |     pageSize = 10; // 每页几行数据 | 
 |  |  |     data: any[] = []; | 
 |  |  |     data: T[] = []; | 
 |  |  |     total = 0; | 
 |  |  |     queryParams = '';    | 
 |  |  |     pages = 0; // 总页数 | 
 |  |  |     queryMap?: any = {}; | 
 |  |  |     size  = 0;  // 当前页数据条数 | 
 |  |  |     sorts?: any[] = []; | 
 |  |  |     loading = false; | 
 |  |  |     indeterminate = false; | 
 |  |  |     allChecked = false; | 
 |  |  |     selectedIndexs?: number[] = []; // 被选中序列号 | 
 |  |  |     columns?: Column[] = [];     | 
 |  |  |      | 
 |  |  |  | 
 |  |  |     checkAll(value: boolean) { | 
 |  |  |         this.data.forEach( | 
 |  |  |             row => {row.checked = value;} | 
 |  |  |         ) | 
 |  |  |             row => {row['checked'] = value; } | 
 |  |  |         );  | 
 |  |  |         this.refreshStatus(); | 
 |  |  |     } | 
 |  |  |     getData():any[]{ | 
 |  |  |     getData(): any [] { | 
 |  |  |         return this.data; | 
 |  |  |     } | 
 |  |  |     initData(pageData: {data?: any[], total?: number}) { | 
 |  |  | 
 |  |  |     } | 
 |  |  |     refreshStatus() { | 
 |  |  |         const data = this.data; | 
 |  |  |         const allChecked =   data.every(value => value.checked); | 
 |  |  |         const allUnChecked = data.every(value => !value.checked); | 
 |  |  |         const allChecked =   data.every(value => value['checked']); | 
 |  |  |         const allUnChecked = data.every(value => !value['checked']); | 
 |  |  |         this.allChecked = allChecked; | 
 |  |  |         this.indeterminate = (!allChecked) && (!allUnChecked); | 
 |  |  |         this.selectedIndexs = data.filter(value => value.checked).map( | 
 |  |  |         this.selectedIndexs = data.filter(value => value['checked']).map( | 
 |  |  |             row => { | 
 |  |  |                return row['index'] != null ? row['index'] : 0; | 
 |  |  |             } |