|
|
|
import { HttpClient } from '@angular/common/http';
|
|
|
|
import { Component, OnInit, Input } from '@angular/core';
|
|
|
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
|
|
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
|
|
import { NzMessageService } from 'ng-zorro-antd/message';
|
|
|
|
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
|
|
|
|
import { NzTreeModule } from 'ng-zorro-antd/tree';
|
|
|
|
import { ObjectsSimpleService } from 'src/app/service/objectsSimple.service';
|
|
|
|
import Viewer from 'viewerjs';
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'app-get-out-of-line-details',
|
|
|
|
templateUrl: './get-out-of-line-details.component.html',
|
|
|
|
styleUrls: ['./get-out-of-line-details.component.scss']
|
|
|
|
})
|
|
|
|
export class GetOutOfLineDetailsComponent implements OnInit {
|
|
|
|
@Input() data: any
|
|
|
|
|
|
|
|
constructor(private objectsSrv: ObjectsSimpleService, private fb: FormBuilder, private http: HttpClient, private message: NzMessageService, private modal: NzModalService, private initialModal: NzModalRef, private sanitizer: DomSanitizer,private openmodal: NzModalRef) { }
|
|
|
|
|
|
|
|
|
|
|
|
imgUrl: string
|
|
|
|
vedioUrl: string
|
|
|
|
content
|
|
|
|
details
|
|
|
|
|
|
|
|
|
|
|
|
isMisinformation: boolean = false//误报按钮的显隐
|
|
|
|
|
|
|
|
|
|
|
|
isImage = true//传过来的文件是否是图片
|
|
|
|
fileUrl
|
|
|
|
|
|
|
|
isLicenseWarning = false
|
|
|
|
|
|
|
|
|
|
|
|
isSubmit
|
|
|
|
ngOnInit(): void {
|
|
|
|
|
|
|
|
console.log('预警信息', this.data)
|
|
|
|
|
|
|
|
if (this.data.violation.violationType == '证照资质') {
|
|
|
|
this.isLicenseWarning = true
|
|
|
|
} else {
|
|
|
|
this.isLicenseWarning = false
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.details = this.data.content1
|
|
|
|
this.vedioUrl = this.data.violateVideo
|
|
|
|
this.content = this.data.handleRecord
|
|
|
|
this.imgUrl = this.data.violateImage
|
|
|
|
|
|
|
|
if (this.imgUrl) {
|
|
|
|
if (this.getFileType(this.imgUrl) == 'img') {
|
|
|
|
this.isImage = true
|
|
|
|
} else {
|
|
|
|
this.isImage = false
|
|
|
|
if (this.getFileType(this.imgUrl) == 'word') {
|
|
|
|
let arr = this.imgUrl.split('.')
|
|
|
|
arr[arr.length - 1] = 'pdf'
|
|
|
|
this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(arr.join('.'));
|
|
|
|
} else if (this.getFileType(this.imgUrl) == 'pdf') {
|
|
|
|
this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.imgUrl);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let loginUserInfo
|
|
|
|
if (sessionStorage.getItem('isGasStation') == 'true') {
|
|
|
|
loginUserInfo = JSON.parse(sessionStorage.getItem('userdataOfgasstation'))
|
|
|
|
} else {
|
|
|
|
loginUserInfo = JSON.parse(sessionStorage.getItem('userdata'))
|
|
|
|
}
|
|
|
|
|
|
|
|
if (loginUserInfo.userName == 'admin' || sessionStorage.getItem('isGasStation') == 'true') {
|
|
|
|
this.isSubmit = true
|
|
|
|
} else {
|
|
|
|
this.isSubmit = false
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log('this.isSubmit', this.isSubmit)
|
|
|
|
|
|
|
|
|
|
|
|
if (loginUserInfo.permissions.find((item) => {
|
|
|
|
return item.name == 'Data.Violation.Positive.Censor'
|
|
|
|
}) && this.data.violation.eventSystemName.indexOf("证照有效期") == -1) {
|
|
|
|
this.isMisinformation = true
|
|
|
|
} else {
|
|
|
|
this.isMisinformation = false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fileList = []
|
|
|
|
|
|
|
|
isLoadingSave: boolean = false
|
|
|
|
uploadIndex: string
|
|
|
|
filechange(e) {
|
|
|
|
this.isLoadingSave = true
|
|
|
|
let file = e.target.files[0] || null //获取上传的文件
|
|
|
|
this.openFileSelect(file, `stationPhotos/${this.data.gasStation.id}/appealFile/${this.data.id}`)
|
|
|
|
}
|
|
|
|
//设置文件路径并上传
|
|
|
|
postFilePath
|
|
|
|
async openFileSelect(file: File, extensionPath: string) {
|
|
|
|
this.postFilePath = extensionPath;
|
|
|
|
let fileSize = file.size || null //上传文件的总大小
|
|
|
|
let shardSize = 5 * 1024 * 1024 //5MB 超过5MB要分块上传
|
|
|
|
if (fileSize >= shardSize) // 超过5MB要分块上传
|
|
|
|
{
|
|
|
|
await this.postFileByMul(file);
|
|
|
|
}
|
|
|
|
else //普通上传
|
|
|
|
{
|
|
|
|
await this.postFile(file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//上传文件
|
|
|
|
async postFile(file: File) {
|
|
|
|
await new Promise((resolve, reject) => {
|
|
|
|
this.objectsSrv.postFile(this.postFilePath, file).subscribe(data => {
|
|
|
|
let dataObj = data as any;
|
|
|
|
let filePath: string = ObjectsSimpleService.baseUrl + dataObj.objectName;
|
|
|
|
this.fileList.push(filePath)
|
|
|
|
this.isLoadingSave = false
|
|
|
|
resolve('success')
|
|
|
|
});
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 分块上传
|
|
|
|
* @param file
|
|
|
|
*/
|
|
|
|
postFileByMul(file: File) {
|
|
|
|
this.objectsSrv.postFile_MultipartUpload(this.postFilePath, file).then((value) => {
|
|
|
|
let dataObj = value as any;
|
|
|
|
let filePath = dataObj.filePath
|
|
|
|
this.fileList.push(filePath)
|
|
|
|
this.isLoadingSave = false
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
lookfile(item) {
|
|
|
|
if (!item) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if (this.getFileType(item) == 'word') {
|
|
|
|
let arr = item.split('.')
|
|
|
|
arr[arr.length - 1] = 'pdf'
|
|
|
|
window.open(arr.join('.'))
|
|
|
|
} else if (this.getFileType(item) == 'pdf') {
|
|
|
|
window.open(item)
|
|
|
|
} else {
|
|
|
|
this.viewImg(item)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
delete(fileList, key) {
|
|
|
|
this.modal.confirm({
|
|
|
|
nzTitle: `确定要删除这个文件吗?`,
|
|
|
|
nzOkText: '确定',
|
|
|
|
nzOkType: 'primary',
|
|
|
|
nzOnOk: () => {
|
|
|
|
fileList.splice(key, 1)
|
|
|
|
},
|
|
|
|
nzCancelText: '取消'
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//查看图片
|
|
|
|
viewImg(url) {
|
|
|
|
let dom = document.getElementById(`viewerjs`)
|
|
|
|
let pObjs = dom.childNodes;
|
|
|
|
let node = document.createElement("img")
|
|
|
|
node.style.display = "none";
|
|
|
|
node.src = url;
|
|
|
|
node.id = 'img'
|
|
|
|
dom.appendChild(node)
|
|
|
|
setTimeout(() => {
|
|
|
|
let viewer = new Viewer(document.getElementById(`viewerjs`), {
|
|
|
|
hidden: () => {
|
|
|
|
dom.removeChild(pObjs[0]);
|
|
|
|
viewer.destroy();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
node.click();
|
|
|
|
}, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
//获取文件格式
|
|
|
|
getFileType(name: string): string {
|
|
|
|
let suffix
|
|
|
|
if (name.substring(name.length - 4).includes('png') || name.substring(name.length - 4).includes('jpg') || name.substring(name.length - 4).includes('jpeg') || name.substring(name.length - 4).includes('webp')) {
|
|
|
|
suffix = 'img'
|
|
|
|
} else if (name.substring(name.length - 4).includes('doc') || name.substring(name.length - 4).includes('docx')) {
|
|
|
|
suffix = 'word'
|
|
|
|
} else if (name.substring(name.length - 4).includes('pdf')) {
|
|
|
|
suffix = 'pdf'
|
|
|
|
}
|
|
|
|
return suffix
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
selectedType: string = 'img'
|
|
|
|
contentType(type) {
|
|
|
|
this.selectedType = type
|
|
|
|
}
|
|
|
|
submit() {
|
|
|
|
let body = {
|
|
|
|
id: this.data.id,
|
|
|
|
handleRecord: this.content
|
|
|
|
}
|
|
|
|
this.http.post('/api/services/app/ViolateRecord/HandleViolateRecord', body).subscribe(data => {
|
|
|
|
this.message.create('success', '处置成功!');
|
|
|
|
this.data.handleTime = new Date()
|
|
|
|
this.data.handleStateStr = '已处置'
|
|
|
|
this.data.handleRecord = this.content
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
//误报
|
|
|
|
misinformation() {
|
|
|
|
this.modal.confirm({
|
|
|
|
nzTitle: '判定该预警为误报吗?',
|
|
|
|
nzOkText: '确定',
|
|
|
|
nzOkType: 'primary',
|
|
|
|
nzOnOk: () => {
|
|
|
|
let body = {
|
|
|
|
id: this.data.id,
|
|
|
|
positive: false
|
|
|
|
}
|
|
|
|
this.http.post('/api/services/app/ViolateRecord/CensorViolateRecord', body).subscribe(data => {
|
|
|
|
this.message.create('success', '处置成功!');
|
|
|
|
// this.data.handleTime = new Date()
|
|
|
|
this.initialModal.triggerOk()
|
|
|
|
}, err => {
|
|
|
|
this.message.create('warning', '处置失败,请联系管理员!');
|
|
|
|
})
|
|
|
|
|
|
|
|
},
|
|
|
|
nzCancelText: '取消',
|
|
|
|
nzOnCancel: () => console.log('Cancel')
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// 申诉
|
|
|
|
isAppeal
|
|
|
|
appealValue
|
|
|
|
appeal() {
|
|
|
|
this.isAppeal = true
|
|
|
|
}
|
|
|
|
handleOk() {
|
|
|
|
let body = {
|
|
|
|
appealReason: this.appealValue,
|
|
|
|
appealAttachments: this.fileList
|
|
|
|
}
|
|
|
|
this.http.post('/api/services/app/ViolateRecord/Appeal', body, {
|
|
|
|
params: {
|
|
|
|
id: this.data.id
|
|
|
|
}
|
|
|
|
}).subscribe(data => {
|
|
|
|
this.message.create('success', '申诉提交成功');
|
|
|
|
this.isAppeal = false;
|
|
|
|
this.data.appealStatus = 1
|
|
|
|
}, err => {
|
|
|
|
this.message.create('warning', '申诉提交失败,请联系管理员!');
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
handleCancel(): void {
|
|
|
|
this.isAppeal = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
Unappeal() {
|
|
|
|
this.http.post('/api/services/app/ViolateRecord/Unappeal', null, {
|
|
|
|
params: {
|
|
|
|
id: this.data.id
|
|
|
|
}
|
|
|
|
}).subscribe(data => {
|
|
|
|
this.message.create('success', '申诉撤销成功');
|
|
|
|
this.data.appealStatus = 4
|
|
|
|
}, err => {
|
|
|
|
this.message.create('warning', '申诉撤销失败,请联系管理员!');
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
closeModel(){
|
|
|
|
this.openmodal.close()
|
|
|
|
}
|
|
|
|
}
|