中化加油站项目
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.
 
 
 
 
 
 

464 lines
15 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 { 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", "无处置权限!");
}
}
}