You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.3 KiB
131 lines
4.3 KiB
import { Component, OnInit, ViewContainerRef } from '@angular/core'; |
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms'; |
|
import { HttpClient } from '@angular/common/http'; |
|
import { NzModalService } from 'ng-zorro-antd/modal'; |
|
import { GetOutOfLineDetailsComponent } from './get-out-of-line-details/get-out-of-line-details.component'; |
|
import { TreeService } from 'src/app/service/tree.service'; |
|
import { NavChangeService } from 'src/app/service/navChange.service'; |
|
import * as moment from 'moment'; |
|
@Component({ |
|
selector: 'app-today-warning', |
|
templateUrl: './today-warning.component.html', |
|
styleUrls: ['./today-warning.component.scss'] |
|
}) |
|
export class TodayWarningComponent implements OnInit { |
|
validateForm!: FormGroup; |
|
constructor(private http: HttpClient, private fb: FormBuilder, private toTree: TreeService, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private navChangeService: NavChangeService) { } |
|
|
|
ngOnInit(): void { |
|
this.validateForm = this.fb.group({ |
|
level: [null], |
|
type: [null], |
|
area: [null], |
|
datePickerStart: [new Date(`${moment(new Date()).format('YYYY-MM-DD')} 00:00`)], |
|
datePickerEnd: [new Date(`${moment(new Date()).format('YYYY-MM-DD')} 23:59`)] |
|
}); |
|
this.warningType() |
|
this.getEarlyWarningList() |
|
} |
|
|
|
//预警类型接口 |
|
warningTypes: any //预警接口数据 |
|
warningTypesDetails: any |
|
warningType() { |
|
this.http.get('/api/services/app/Violation/GetAllList').subscribe((data: any) => { |
|
this.warningTypesDetails = data.result |
|
this.warningTypes = (data.result as any).groupBy((t) => { return t.violationType }); |
|
}) |
|
} |
|
|
|
typeChange(e) { |
|
this.warningTypes.forEach(element => { |
|
if (element.key == e) { |
|
this.warningTypesDetails = element |
|
} |
|
}); |
|
} |
|
|
|
//获得预警列表 |
|
list: any = [ |
|
] |
|
totalCount: string //预警总数 |
|
getEarlyWarningList() { |
|
let ViolationIds = [] |
|
if (this.validateForm.value.type) { |
|
this.warningTypesDetails.forEach(item => { |
|
item.id ? ViolationIds.push(item.id) : null |
|
}); |
|
} |
|
let params = { |
|
Level: this.validateForm.value.level, |
|
ViolationIds: ViolationIds, |
|
ViolateArea: this.validateForm.value.area, |
|
organizationUnitId: JSON.parse(sessionStorage.getItem('userdataOfgasstation')).organization.id, |
|
ViolateTime: (this.validateForm.value.datePickerEnd && this.validateForm.value.datePickerStart) ? [moment(this.validateForm.value.datePickerStart).format('yyyy-MM-DD HH:mm:ss'), moment(this.validateForm.value.datePickerEnd).format('yyyy-MM-DD HH:mm:ss')] : null, |
|
SkipCount: '0', |
|
MaxResultCount: '9999' |
|
} |
|
this.http.get('/api/services/app/ViolateRecord/GetAll', { |
|
params: params |
|
}).subscribe((data: any) => { |
|
this.list = data.result.items |
|
this.totalCount = data.result.totalCount |
|
console.log('预警列表', this.list) |
|
|
|
let obj = { |
|
name: '改变数量', |
|
num: this.totalCount |
|
} |
|
setTimeout(() => { |
|
this.navChangeService.sendMessage(obj);//发布一条消息 |
|
}, 0); |
|
|
|
}) |
|
} |
|
|
|
submitForm(): void { |
|
for (const i in this.validateForm.controls) { |
|
this.validateForm.controls[i].markAsDirty(); |
|
this.validateForm.controls[i].updateValueAndValidity(); |
|
} |
|
this.getEarlyWarningList() |
|
} |
|
resetForm(e: MouseEvent): void { |
|
e.preventDefault(); |
|
this.validateForm.reset(); |
|
for (const key in this.validateForm.controls) { |
|
this.validateForm.controls[key].markAsPristine(); |
|
this.validateForm.controls[key].updateValueAndValidity(); |
|
} |
|
this.validateForm.patchValue({ |
|
datePickerStart: new Date(`${moment(new Date()).format('YYYY-MM-DD')} 00:00`), |
|
datePickerEnd: new Date(`${moment(new Date()).format('YYYY-MM-DD')} 23:59`) |
|
}); |
|
this.getEarlyWarningList() |
|
} |
|
|
|
|
|
|
|
look(item) { |
|
const modal = this.modal.create({ |
|
nzContent: GetOutOfLineDetailsComponent, |
|
nzViewContainerRef: this.viewContainerRef, |
|
nzWidth: 1200, |
|
nzBodyStyle: { |
|
'border': '1px solid #6d9cc7', |
|
'border-radius': '0px', |
|
'padding': '0px', |
|
'box-shadow': '0 0 8px 0 #fff', |
|
'background': '#000D21', |
|
}, |
|
nzComponentParams: { |
|
data: item |
|
}, |
|
nzFooter: null, |
|
nzOnOk: async () => { |
|
|
|
} |
|
}); |
|
const instance = modal.getContentComponent(); |
|
} |
|
}
|
|
|