src/app/core/entity/grid.ts | ●●●●● patch | view | raw | blame | history | |
src/app/core/enum/types.enum.ts | ●●●●● patch | view | raw | blame | history | |
src/app/routes/devices/version/add-or-edit/add-or-edit.component.html | ●●●●● patch | view | raw | blame | history | |
src/app/routes/devices/version/add-or-edit/add-or-edit.component.ts | ●●●●● patch | view | raw | blame | history | |
src/app/routes/devices/version/version.component.html | ●●●●● patch | view | raw | blame | history | |
src/app/routes/devices/version/version.component.ts | ●●●●● patch | view | raw | blame | history | |
src/app/routes/devices/version/version.service.ts | ●●●●● patch | view | raw | blame | history | |
src/app/shared/shared.module.ts | ●●●●● patch | view | raw | blame | history |
src/app/core/entity/grid.ts
@@ -1,10 +1,11 @@ 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; width?: string; sort?: boolean; sort?: string; isSort?: boolean; type?: DataType; } export interface DataType { @@ -18,8 +19,21 @@ total?: number; data?: any[]; queryParams?: string; orderByClause?: string; getOrderByClause ?(): string; } 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; // 每页几行数据 @@ -27,14 +41,14 @@ 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; } src/app/core/enum/types.enum.ts
@@ -1,3 +1,3 @@ export enum Types { Date, json Date, Json } src/app/routes/devices/version/add-or-edit/add-or-edit.component.html
@@ -6,7 +6,7 @@ <div nz-form-label nz-col [nzSm]="4" [nzXs]="24"> <label nz-form-item-required>{{ cols.name.text }}</label> </div> <div nz-form-control nz-col [nzSpan]="6" nzHasFeedback> <div nz-form-control nz-col [nzSpan]="7" nzHasFeedback> <input nz-input formControlName="{{ cols.name.name }}" maxlength="20" /> </div> <div nz-form-label nz-col [nzSpan]="4"> @@ -23,8 +23,8 @@ <div nz-form-label nz-col [nzSm]="4" [nzXs]="24"> <label nz-form-item-required>{{ cols.createTime.text }}</label> </div> <div nz-form-control nz-col [nzSpan]="6" nzHasFeedback> <nz-datepicker formControlName="{{ cols.createTime.name }}" nzShowTime [nzPlaceHolder]="'选择时间'" <div nz-form-control nz-col [nzSpan]="7" nzHasFeedback> <nz-datepicker nzSize="large" style="width: 90%;" formControlName="{{ cols.createTime.name }}" nzShowTime [nzPlaceHolder]="'选择时间'" [nzFormat]="'YYYY-MM-DD HH:mm:ss'" ></nz-datepicker> </div> <div nz-form-label nz-col [nzSpan]="4"> src/app/routes/devices/version/add-or-edit/add-or-edit.component.ts
@@ -42,8 +42,22 @@ for (const i in this.validateForm.controls) { this.validateForm.controls[ i ].disable(); } const isModified = Object.keys(value).some( (key: string) => { return this.data[key] !== value[key]; } ); // 未作修改 if (!isModified) { this.close(); return; } this.isSaving = true; this.data = value; Object.keys(this.data).forEach( (key: string) => { if ( value[key] != null ) { this.data[key] = value[key]; } } ); this.subject.next( this ); }else { for (const i in this.validateForm.controls) { src/app/routes/devices/version/version.component.html
@@ -22,10 +22,9 @@ [nzTotal]="grid.total" [(nzPageIndex)]="grid.pageIndex" [(nzPageSize)]="grid.pageSize" [nzLoading]="versionService.loading" [nzLoading]="grid.loading" [nzShowTotal]="true" (nzPageIndexChange)="load()" (nzDataChange)="dataChange($event)"> (nzPageIndexChange)="load()"> <thead nz-thead> <tr> <th nz-th [nzCheckbox]="true"> @@ -34,6 +33,7 @@ <th nz-th *ngFor="let col of grid.columns" [ngStyle]="{'width':col.width,'text-align':col['align'] === undefined?'left':col.align}" > <span>{{ col.text }}</span> <nz-table-sort *ngIf="col.isSort" [(nzValue)]="col.sort" (nzValueChange)="sort(col.name,$event)"></nz-table-sort> </th> <th nz-th><span>操作</span></th> </tr> src/app/routes/devices/version/version.component.ts
@@ -12,6 +12,7 @@ import { VersionService } from 'app/routes/devices/version/version.service'; import { Types } from '@core/enum/types.enum'; import { Column, Grid, PageBean } from '@core/entity/grid'; import { filter } from 'rxjs/operators/filter'; export interface DeviceVersion { createTime?: Column|any; @@ -38,7 +39,8 @@ }, version: { text: '型号', width: '18%' width: '18%', isSort: true }, createTime: { text: '创建时间', @@ -46,7 +48,8 @@ type: { name: Types.Date, format: 'YYYY-MM-DD HH:mm:ss' } }, isSort: true }, description: { text: '备注', @@ -77,26 +80,28 @@ queryTextChanged($event) { this.queryTextStream.next(this.queryMap.value); } load(reload: boolean = false) { load(reload: boolean = false) { if (reload) { this.grid.pageIndex = 1 ; } // 延时加载避免ExpressionChangedAfterItHasBeenCheckedError setTimeout(() => { this.grid.loading = true; }, 1); this.versionService.getPagingList(this.grid, this.queryMap.value).subscribe( (res: PageBean) => { this.grid.loading = true; if (res != null && res.data != null) { this.grid.initData(res); this.grid.refreshStatus(); setTimeout(() => { this.grid.loading = false; }, 1); } } ); } edit() { // this.modalHelper.static(VersionEditComponent, { user }).subscribe(() => { // this.load(true); // this.msgSrv.success('安装用户修改成功!'); // }); } // rowData为null时,为新增 addOrModify(data) { if ( data == null) { @@ -108,7 +113,7 @@ this.versionService.save(ret.data).subscribe( ( res: any) => { if (res.code === 1) { this.load(true); this.load(); ret.close(); this.msgSrv.success('设备型号保存成功!'); } @@ -121,7 +126,7 @@ this.versionService.delete( ...id ).subscribe( ( res: any) => { if (res.code === 1) { this.load(true); this.load(); this.msgSrv.success('设备型号删除成功!'); } } @@ -138,24 +143,26 @@ if (this.grid.selectedIndexs != null && this.grid.selectedIndexs.length > 0) { const ids = this.grid.selectedIndexs.map( (index: number) => { return Number.parseInt(this.grid.data[index].id); const id = this.grid.data[index].id; return Number.parseInt(id); } ); this.delete( ...ids ); } }); } dataChange(res: any) { } sort(field: string, value: any) { // this.sortMap = {}; // this.sortMap[field] = value; // this.q.sorter = value ? `${field}_${value}` : ''; // this.load(true); sort(field: string, value: string) { // 删除当前field this.grid.sorts = this.grid.sorts.filter( (fn: string) => { return fn !== field; } ); // 如果value不为null,在排序数组最后加上filed if ( value != null ) { this.grid.sorts.push(field); } this.load(); } reset(ls: any[]) { src/app/routes/devices/version/version.service.ts
@@ -15,7 +15,6 @@ save: environment.SERVER_BASH_URL + '/device-version/add-or-modify', delete: environment.SERVER_BASH_URL + '/device-version/delete-by-ids' }; public loading = this.http.loading; constructor(private http: _HttpClient) { } public getPagingList(page: PageBean, queryText: string): Observable<PageBean> { const example = new ExampleService(); @@ -23,7 +22,8 @@ example.or().andLike({name: 'name', value: '%' + queryText + '%'}); example.or().andEqualTo({name: 'version', value: queryText}); } const param: PageBean = {pageSize: page.pageSize, pageIndex: page.pageIndex, queryParams: example.getSqlParam()}; const param: PageBean = {pageSize: page.pageSize, pageIndex: page.pageIndex, queryParams: example.getSqlParam(), orderByClause: page.getOrderByClause()}; return this.http.get(this.urls.edit, param); } public save(data: any): Observable<any> { src/app/shared/shared.module.ts
@@ -27,6 +27,7 @@ import 'rxjs/add/operator/map'; import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/toPromise'; import 'rxjs/add/operator/filter'; import { // LoggerModule,