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() } }