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'; import { listRefreshService } from '../../service/listRefresh.service'; import { DisposeequipmentComponent } from '../warning-statistics-list/disposeequipment/disposeequipment.component'; @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 listRefreshService: listRefreshService, 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() this.listRefreshService.getMessage().subscribe((message: any) => { //列表刷新 if (message.type == 'add') { this.getEarlyWarningList() } //更新处置状态 if (message.type == 'updatehandleTime') { console.log('更新处置状态', message) console.log(this.list) this.list.forEach(element => { if (element.id == message.data) { element.handleTime = new Date() } }); } // let params = { // id: message.notification.entityId // } // this.http.get('/api/services/app/ViolateRecord/Get', { // params: params // }).subscribe((data: any) => { // this.list.unshift(data.result) // console.log('新获取一条', data.result) // }) }); } //预警类型接口 warningTypesDetails: any warningTypesDetailsCopy: any warningTypes: any //预警接口数据 warningTypesCopy: any warningLevels: any warningLevelsCopy: any warningType() { this.http.get('/api/services/app/Violation/GetAllList').subscribe((data: any) => { this.warningTypesDetails = JSON.parse(JSON.stringify(data.result)) this.warningTypesDetailsCopy = JSON.parse(JSON.stringify(data.result)) //原始数据备份 this.warningTypes = (data.result as any).groupBy((t) => { return t.violationType }); this.warningTypesCopy = (data.result as any).groupBy((t) => { return t.violationType }) this.warningLevels = (data.result as any).groupBy((t) => { return t.level }); this.warningLevelsCopy = (data.result as any).groupBy((t) => { return t.level }) this.warningLevels.sort(function (a, b) { if (a.key < b.key) { return -1; } else if (a.key == b.key) { return 0; } else { return 1; } }); this.warningLevelsCopy.sort(function (a, b) { if (a.key < b.key) { return -1; } else if (a.key == b.key) { return 0; } else { return 1; } }); // console.log(111, this.warningTypesDetails) // console.log(222, this.warningTypesCopy) // console.log(333, this.warningLevels) }) } typeChange(e) { if (!e) { this.warningTypesDetails = this.warningTypesDetailsCopy this.warningLevels = this.warningLevelsCopy return } this.warningTypes.forEach(element => { if (element.key == e) { this.warningTypesDetails = element this.warningLevels = (element as any).groupBy((t) => { return t.level }); } }); this.validateForm.patchValue({ event: null, }); } levelChange(e) { if (!e) { this.warningTypesDetails = this.warningTypesDetailsCopy this.warningTypes = this.warningTypesCopy this.validateForm.patchValue({ type: null, }); return } this.warningLevels.forEach(element => { if (element.key == e) { this.warningTypesDetails = element this.warningTypes = (element as any).groupBy((t) => { return t.violationType }); } }); 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 //预警总数 isLoading = false getEarlyWarningList() { this.isLoading = true let ViolationIds = [] if (this.validateForm.value.event) { ViolationIds = 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, ViolateAreas: 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', Positive: 'true' } 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 this.isLoading = 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) { if (item.violation.eventSystemName == '灭火器维护') { item.violatedItemSnapshotObj = JSON.parse(item.violatedItemSnapshot) const modal = this.modal.create({ nzContent: DisposeequipmentComponent, 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: { data: item }, nzFooter: null, nzClosable: false, nzOnOk: async () => { if (instance.isScrap) { await new Promise(resolve => { let body = { id: item.violatedItemSnapshotObj.id, name: instance.copydata2.violatedItemSnapshotObj.name, storageLocation: instance.copydata2.violatedItemSnapshotObj.storageLocation, productionDate: moment(instance.copydata2.violatedItemSnapshotObj.productionDate).format('yyyy-MM-DD'), maintenanceDate: moment(instance.copydata2.violatedItemSnapshotObj.maintenanceDate).format('yyyy-MM-DD'), validityEndTime: moment(instance.copydata2.violatedItemSnapshotObj.validityEndTime).format('yyyy-MM-DD'), isScrapped: true, organizationUnitId: item.violatedItemSnapshotObj.organizationUnitId } this.http.put('/api/services/app/FireEquipment/Update', body).subscribe((data: any) => { let body = { id: item.id, handleRecord: '报废成功!' } this.http.post('/api/services/app/ViolateRecord/HandleViolateRecord', body).subscribe(data => { resolve(data) this.message.create('success', '报废成功!'); item.handleTime = new Date() return true }) }) }) } else { if (instance.validateForm.valid) { await new Promise(resolve => { let body = { id: item.violatedItemSnapshotObj.id, name: instance.validateForm.value.name, storageLocation: instance.validateForm.value.storageLocation, productionDate: moment(instance.validateForm.value.productionDate).format('yyyy-MM-DD'), maintenanceDate: moment(instance.validateForm.value.maintenanceDate).format('yyyy-MM-DD'), validityEndTime: moment(instance.validateForm.value.validityEndTime).format('yyyy-MM-DD'), organizationUnitId: item.violatedItemSnapshotObj.organizationUnitId } this.http.put('/api/services/app/FireEquipment/Update', body).subscribe((data: any) => { // item.violatedItemSnapshotObj = data.result let body = { id: item.id, handleRecord: '维保成功!' } 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(); } else { 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('误报处理') for (let index = 0; index < this.list.length; index++) { const element = this.list[index]; if (element.id == item.id) { this.list.splice(index, 1) this.totalCount = String(Number(this.totalCount) - 1) // this.SkipCount = String(Number(this.SkipCount) - 1) } } } }); 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(); } }