import { Component, OnInit, ViewContainerRef } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Router } from '@angular/router'; import { HttpClient } from '@angular/common/http'; import { NzModalService } from 'ng-zorro-antd/modal'; import { GetOutOfLineDetailsComponent } from '../today-warning/get-out-of-line-details/get-out-of-line-details.component'; import * as moment from 'moment'; // import { TreeService } from 'src/app/service/tree.service'; // import { NavChangeService } from 'src/app/service/navChange.service'; import { TreeService } from '../../service/tree.service'; import { NavChangeService } from '../../service/navChange.service'; import 'linqjs'; import { DispositionComponent } from '../disposition/disposition.component'; import { NzMessageService } from 'ng-zorro-antd/message'; @Component({ selector: 'app-today-warning-admin', templateUrl: './today-warning-admin.component.html', styleUrls: ['./today-warning-admin.component.scss'] }) export class TodayWarningAdminComponent implements OnInit { validateForm!: FormGroup; constructor(private http: HttpClient, private fb: FormBuilder, private router: Router, private toTree: TreeService, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private navChangeService: NavChangeService, private message: NzMessageService) { } isSpin:boolean = false ngOnInit(): void { this.validateForm = this.fb.group({ level: [null], type: [null], event: [null], organization: [null], area: [null], disposalState: [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.isSpin = true this.getAllOrganization() } //预警类型接口 warningTypes: any //预警接口数据 warningTypesDetailsMetadata:any warningTypesDetails: any warningType() { this.http.get('/api/services/app/Violation/GetAllList').subscribe((data: any) => { this.warningTypesDetailsMetadata = JSON.parse(JSON.stringify(data.result)) this.warningTypesDetails = data.result this.warningTypes = (data.result as any).groupBy((t) => { return t.violationType }); }) } typeChange(e) { // console.log(e) if(!e){ this.warningTypesDetails = this.warningTypesDetailsMetadata } this.warningTypes.forEach(element => { if (element.key == e) { this.warningTypesDetails = element } }); this.validateForm.patchValue({ event: null, }); } defaultOrId: string //获取所有组织机构 nodes: any = [] getAllOrganization() { let OrganizationUnitId = sessionStorage.getItem('isGasStation') == 'true' ? JSON.parse(sessionStorage.getItem('userdataOfgasstation')).organization.id : JSON.parse(sessionStorage.getItem('userdata')).organization.id let params = { OrganizationUnitId: OrganizationUnitId, IsContainsChildren: "true" } this.http.get('/api/services/app/Organization/GetAll', { params: params }).subscribe((data: any) => { data.result.items.forEach(element => { if (element.id == OrganizationUnitId) { element.parentId = null } element.key = element.id element.title = element.displayName }); this.nodes = [...this.toTree.toTree(data.result.items)] this.defaultOrId = JSON.parse(sessionStorage.getItem('userdata')).organization.id this.validateForm.value.organization = this.defaultOrId this.getEarlyWarningList() }) } //获得预警列表 list: any = [ ] totalCount: string //预警总数 getEarlyWarningList() { let ViolationIds = [] if (this.validateForm.value.event) { ViolationIds.push(this.validateForm.value.event) } if (this.validateForm.value.type && !this.validateForm.value.event) { this.warningTypesDetails.forEach(item => { item.id ? ViolationIds.push(item.id) : null }); } let disposalState if (this.validateForm.value.disposalState == '0') { disposalState = true } else if (this.validateForm.value.disposalState == '1') { disposalState = false } else { disposalState = null } // console.log(this.validateForm.value) this.isSpin = true let params = { Level: this.validateForm.value.level, ViolationIds: ViolationIds, ViolateArea: this.validateForm.value.area, organizationUnitId: this.validateForm.value.organization, 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, // ViolateTime: ['2021-10-27', '2021-11-26'], IsHandled: disposalState, IsContainsChildren: 'true', 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) this.isSpin = false let obj = { name: '改变数量', num: this.totalCount } setTimeout(() => { console.log('走这里了') 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({ organization: JSON.parse(sessionStorage.getItem('userdata')).organization.id, 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() } isVisible = false look(item) { console.log(item) const modal = this.modal.create({ nzContent: GetOutOfLineDetailsComponent, nzWrapClassName: "vertical-center-modal", nzViewContainerRef: this.viewContainerRef, nzWidth: (document.documentElement.clientHeight < 650 || document.documentElement.clientWidth < 1400) ? 1000 : 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 () => { console.log(99999,instance.content) } }); const instance = modal.getContentComponent(); } dispose(item) { console.log(item) const modal = this.modal.create({ nzContent: DispositionComponent, nzWrapClassName: "vertical-center-modal", nzViewContainerRef: this.viewContainerRef, nzWidth: 380, nzBodyStyle: { 'border': '1px solid #91CCFF', 'border-radius': '0px', 'padding': '7px', 'box-shadow': '0 0 8px 0 #fff', 'background-image': 'linear-gradient(#003665, #000f25)' }, nzComponentParams: {}, nzFooter: null, nzClosable: false, nzOnOk: async () => { if (instance.validateForm.valid) { await new Promise(resolve => { let body = { id: item.id, handleRecord: instance.validateForm.value.content } this.http.post('/api/services/app/ViolateRecord/HandleViolateRecord', body).subscribe(data => { resolve(data) this.message.create('success', '处置成功!'); item.handleTime = new Date() return true }) }) } else { this.message.create('warning', '请填写完整!'); return false } }, }); const instance = modal.getContentComponent(); } }