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 { TreeService } from "../../service/tree.service"; import { NavChangeService } from "../../service/navChange.service"; import * as moment from "moment"; import { DispositionComponent } from "../disposition/disposition.component"; import { NzMessageService } from "ng-zorro-antd/message"; import { listRefreshService } from "../../service/listRefresh.service"; import { DisposeequipmentComponent } from "../records/warning-statistics-list/disposeequipment/disposeequipment.component"; @Component({ selector: "app-today-warning", templateUrl: "./today-warning.component.html", styleUrls: ["./today-warning.component.scss"], }) export class TodayWarningComponent implements OnInit { validateForm!: FormGroup; constructor( private listRefreshService: listRefreshService, private http: HttpClient, private fb: FormBuilder, private toTree: TreeService, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private navChangeService: NavChangeService, private message: NzMessageService ) {} isMisinformation: boolean = false; //误报按钮的显隐 ngOnInit(): void { this.validateForm = this.fb.group({ level: [null], type: [null], event: [null], area: [null], disposalState: [null], appealState: [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(); 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 loginUserInfo; if (sessionStorage.getItem("isGasStation") == "true") { loginUserInfo = JSON.parse( sessionStorage.getItem("userdataOfgasstation") ); } else { loginUserInfo = JSON.parse(sessionStorage.getItem("userdata")); } if ( loginUserInfo.permissions.find((item) => { return item.name == "Data.Violation.Positive.Censor"; }) ) { this.isMisinformation = true; } else { this.isMisinformation = false; } } //预警类型接口 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, }); } //获得预警列表 list: any = []; totalCount: string; //预警总数 isSpin: boolean = false; 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; } let params = { Level: this.validateForm.value.level, ViolationIds: ViolationIds, ViolateAreas: 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, IsHandled: disposalState, AppealStatus: this.validateForm.value.appealState, // ViolateTime: ['2021-10-27', '2021-11-26'], IsContainsChildren: "true", SkipCount: "0", MaxResultCount: "9999", Positive: "true", }; this.isSpin = 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(() => { 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) { if (item.violation.violationType == "设备监测") { 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 { this.modal.create({ nzContent: GetOutOfLineDetailsComponent, nzWrapClassName: "vertical-center-modal", nzViewContainerRef: this.viewContainerRef, nzWidth: document.documentElement.clientHeight < 650 || document.documentElement.clientWidth < 1400 ? 1000 : 1200, nzClosable: false, nzClassName: "modelnobg", nzBodyStyle: { "border-radius": "0px", padding: "0px", }, 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) } } }, }); } } dispose(item) { console.log(item); if (item.isEnableHandle) { 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(); } else { this.message.create("warning", "无处置权限!"); } } }