| | |
| | | import { NzModalService, NzMessageService } from 'ng-zorro-antd'; |
| | | import { PageBean } from '@business/entity/grid'; |
| | | import { Sensor } from '@business/entity/data'; |
| | | import { ModalHelper } from '@delon/theme'; |
| | | import { SensorsService } from '@business/services/http/sensors.service'; |
| | | import { Column, Grid } from '@business/entity/grid'; |
| | | import { Component, OnInit } from '@angular/core'; |
| | | import { Subject } from 'rxjs/Subject'; |
| | | import { SensorEditComponent } from './sensor-edit/sensor-edit.component'; |
| | | |
| | | |
| | | |
| | | @Component({ |
| | | selector: 'app-basic-info', |
| | |
| | | }) |
| | | export class BasicInfoComponent implements OnInit { |
| | | |
| | | constructor() { } |
| | | |
| | | grid: Grid<Sensor> = new Grid(null); |
| | | queryMap = { text: '请输入名称', value: ''}; |
| | | queryTextStream: Subject<string> = new Subject<string>(); |
| | | private initPage() { |
| | | const sensor: Sensor = { |
| | | name: { |
| | | text: '名称', |
| | | width: '200px' |
| | | }, |
| | | key: { |
| | | text: '键值', |
| | | width: '60px' |
| | | }, |
| | | lower: { |
| | | text: '下限值', |
| | | width: '90px' |
| | | }, |
| | | upper: { |
| | | text: '上限值', |
| | | width: '90px' |
| | | }, |
| | | unit: { |
| | | text: '单位', |
| | | width: '100px' |
| | | }, |
| | | description: { |
| | | text: '描述' |
| | | } |
| | | }; |
| | | this.grid.title = '传感器'; |
| | | this.grid.setColumns(sensor); |
| | | this.grid.pageSize = 10; |
| | | } |
| | | constructor( |
| | | private sensorsService: SensorsService, |
| | | |
| | | private confirmServ: NzModalService, |
| | | public msgSrv: NzMessageService, |
| | | private modalHelper: ModalHelper, |
| | | ) {} |
| | | |
| | | ngOnInit() { |
| | | this.initPage(); |
| | | this.queryTextStream |
| | | .debounceTime(500) |
| | | .distinctUntilChanged() |
| | | .subscribe(queryText => { |
| | | this.load(); |
| | | }); |
| | | } |
| | | queryTextChanged($event) { |
| | | this.queryTextStream.next(this.queryMap.value); |
| | | } |
| | | load(reload: boolean = false) { |
| | | if (reload) { |
| | | this.grid.pageIndex = 1 ; |
| | | } |
| | | // 延时加载避免ExpressionChangedAfterItHasBeenCheckedError |
| | | setTimeout(() => { |
| | | this.grid.loading = true; |
| | | }, 1); |
| | | this.sensorsService.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); |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | |
| | | // rowData为null时,为新增 |
| | | addOrModify(d) { |
| | | const data = {}; |
| | | if ( d != null) { |
| | | Object.assign(data, d); |
| | | } |
| | | this.modalHelper.static(SensorEditComponent, { data }).subscribe( |
| | | ( ret: { data: any, close: Function} ) => { |
| | | // 修改状态 |
| | | if (ret.data['index'] != null ) { |
| | | const index: number = ret.data['index'] ; |
| | | const origData = this.grid.getData()[index]; |
| | | const isModified = Object.keys(origData).some( |
| | | (key: string) => { |
| | | return ret.data[key] !== origData[key]; |
| | | } |
| | | ); |
| | | // 未作修改 |
| | | if (!isModified) { |
| | | ret.close(); |
| | | this.msgSrv.success(this.grid.title + '未作任何修改!'); |
| | | return; |
| | | } |
| | | } |
| | | this.sensorsService.save(ret.data).subscribe( |
| | | ( res: any) => { |
| | | if (res.code === 1) { |
| | | this.load(); |
| | | ret.close(); |
| | | this.msgSrv.success(this.grid.title + '保存成功!'); |
| | | } |
| | | } |
| | | ); |
| | | }); |
| | | } |
| | | |
| | | delete(...id: number[]) { |
| | | this.sensorsService.delete( ...id ).subscribe( |
| | | ( res: any) => { |
| | | if (res.code === 1) { |
| | | this.load(); |
| | | this.msgSrv.success(this.grid.title + '删除成功!'); |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | |
| | | deleteSelected() { |
| | | this.confirmServ.confirm({ |
| | | title: '批量删除', |
| | | content: '注意:数据一旦删除,将不可恢复!', |
| | | okText: '确定', |
| | | cancelText: '取消' |
| | | }).on('onOk', () => { |
| | | if (this.grid.selectedIndexs != null && this.grid.selectedIndexs.length > 0) { |
| | | const ids = this.grid.selectedIndexs.map( |
| | | (index: number) => { |
| | | const id = this.grid.data[index].id; |
| | | return Number.parseInt(id); |
| | | } |
| | | ); |
| | | this.delete( ...ids ); |
| | | } |
| | | }); |
| | | } |
| | | 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(); |
| | | } |
| | | |
| | | } |