| | |
| | | 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; |
| | | } |