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.
417 lines
15 KiB
417 lines
15 KiB
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 '../../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 '../records/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 |
|
|
|
isMisinformation: boolean = false//误报按钮的显隐 |
|
ngOnInit(): void { |
|
this.validateForm = this.fb.group({ |
|
level: [null], |
|
type: [null], |
|
event: [null], |
|
organization: [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.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 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, |
|
}); |
|
} |
|
|
|
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, |
|
AppealStatus: this.validateForm.value.appealState, |
|
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(() => { |
|
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.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 { |
|
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, |
|
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) |
|
} |
|
} |
|
} |
|
}); |
|
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(); |
|
} |
|
}
|
|
|