diff --git a/src/app/plan-audit/plan-record/plan-record.component.html b/src/app/plan-audit/plan-record/plan-record.component.html index f61698a..4e52bcf 100644 --- a/src/app/plan-audit/plan-record/plan-record.component.html +++ b/src/app/plan-audit/plan-record/plan-record.component.html @@ -176,6 +176,11 @@ + +
+ +
+
@@ -212,3 +217,6 @@
+
+ +
diff --git a/src/app/plan-audit/plan-record/plan-record.component.ts b/src/app/plan-audit/plan-record/plan-record.component.ts index 5d1e0aa..7bd68e5 100644 --- a/src/app/plan-audit/plan-record/plan-record.component.ts +++ b/src/app/plan-audit/plan-record/plan-record.component.ts @@ -12,7 +12,8 @@ import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog'; import { HttpClient } from '@angular/common/http' import { DomSanitizer } from '@angular/platform-browser'; -import { Viewer } from 'photo-sphere-viewer'; +import { Viewer as photoViewer } from 'photo-sphere-viewer'; +import Viewer from 'viewerjs'; declare var CryptoJS @Component({ @@ -187,7 +188,7 @@ export class PlanRecordComponent implements OnInit { obj.innerHTML='' } window.setTimeout(()=>{ - this.viewer = new Viewer({ + this.viewer = new photoViewer({ container: document.querySelector('#viewer'), panorama:'/api/Objects/PlanPlatform/'+ this.fetchUrl, @@ -231,43 +232,54 @@ export class PlanRecordComponent implements OnInit { //毕升 lookWord(){ - this.showtype=0 - let docIdWordArray = CryptoJS.enc.Utf8.parse(`PlanPlatform/` + this.fetchUrl); - let docId = CryptoJS.enc.Base64.stringify(docIdWordArray); - let jwt = sessionStorage.getItem("token"); - let rawJwt = CryptoJS.enc.Base64.parse(jwt.split('.')[1]); - let identityJson = CryptoJS.enc.Utf8.stringify(rawJwt); - let identityJsonparse=JSON.parse(identityJson) - let filename:string - this.http.get(`/api/ObjectMetadata/PlanPlatform/${this.fetchUrl}`).subscribe((data:any)=>{ - filename=data.fileName - let json={ - doc: { - docId: docId, - title: filename, - //title: filename, - fetchUrl: `http://39.106.78.171:8000/api/Objects/PlanPlatform/`+this.fetchUrl - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - 'FILE_READ','FILE_DOWNLOAD', 'FILE_PRINT' - ], - }, - } - var stringjson=JSON.stringify(json) - var wordArray = CryptoJS.enc.Utf8.parse(stringjson); - var base64 = CryptoJS.enc.Base64.stringify(wordArray); - this.src=`http://121.5.10.84:80/apps/editor/openPreview?data=${base64}` - this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src); - //window.open(`http://121.5.10.84:80/apps/editor/openPreview?data=${base64}`) - }) + console.log('lookWord') + this.showtype = 0 + //let src + let suffix = this.fetchUrl.split('.')[this.fetchUrl.split('.').length - 1].toLowerCase() + if (suffix == 'docx' || suffix == 'doc') { + let arr = this.fetchUrl.split('.') + arr[arr.length - 1] = 'pdf' + this.src = `/api/Objects/PlanPlatform/` + arr.join('.') + } else if (suffix == 'pdf') { + this.src = `/api/Objects/PlanPlatform/` + this.fetchUrl + } else if (suffix == 'jpeg' || suffix == 'jpg' || suffix == 'png') { + this.src = "" + this.lookImg(this.fetchUrl) + } else if (suffix == 'mp4' || suffix == 'MP4') { + this.showtype = 1080 //视频 + this.src = `/api/Objects/PlanPlatform/` + this.fetchUrl + } + this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); } //查看按钮跳转 lookNew(){ - window.open(this.src) + if (this.src) { + window.open(this.src) + } + } + lookImg(imgUrl,type?:boolean) { + // console.log(imgUrl) + let dom = document.getElementById(`viewerjs`) + let pObjs = dom.childNodes; + let node = document.createElement("img") + node.style.display = "none"; + if(type){ + let src = imgUrl.split("?")[0] + node.src = src + }else{ + node.src = "/api/Objects/PlanPlatform/" + imgUrl; + } + node.id = 'imgxxx' + dom.appendChild(node) + setTimeout(() => { + let viewer = new Viewer(document.getElementById(`viewerjs`), { + hidden: () => { + dom.removeChild(pObjs[0]); + viewer.destroy(); + } + }); + node.click(); + }, 0); } //查看二维三维预案 diff --git a/src/app/plan-audit/wait-examineer/wait-examineer.component.html b/src/app/plan-audit/wait-examineer/wait-examineer.component.html index c0127ca..4a84f6c 100644 --- a/src/app/plan-audit/wait-examineer/wait-examineer.component.html +++ b/src/app/plan-audit/wait-examineer/wait-examineer.component.html @@ -282,6 +282,11 @@
+ +
+ +
+
diff --git a/src/app/plan-audit/wait-examineer/wait-examineer.component.ts b/src/app/plan-audit/wait-examineer/wait-examineer.component.ts index 44ac802..b5704ec 100644 --- a/src/app/plan-audit/wait-examineer/wait-examineer.component.ts +++ b/src/app/plan-audit/wait-examineer/wait-examineer.component.ts @@ -4,7 +4,7 @@ * @Author: sueRimn * @Date: 2020-12-25 16:13:50 * @LastEditors: sueRimn - * @LastEditTime: 2021-06-04 10:14:51 + * @LastEditTime: 2021-08-16 11:12:52 */ import { Component, Inject, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; @@ -14,7 +14,7 @@ import { HttpClient } from '@angular/common/http' declare var CryptoJS import { DomSanitizer } from '@angular/platform-browser'; import { Viewer as photoViewer } from 'photo-sphere-viewer'; -import Viewer from 'viewerjs'; +import Viewer from 'viewerjs'; declare var echarts: any; @@ -61,7 +61,10 @@ export class WaitExamineerComponent implements OnInit { ] } this.getAlltabledate() - this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); + this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); + + + } planTypeIndex //平面图类型 选择是总平面图还是层平面图 @@ -106,6 +109,8 @@ export class WaitExamineerComponent implements OnInit { companyId fetchUrl companyName + plantypes + IsNewData=[true,false] //获取表格数据 getAlltabledate() { @@ -113,7 +118,9 @@ export class WaitExamineerComponent implements OnInit { Operation: this.level || [], ContentType: Number(this.projectlevel) || [], Level: this.PlanLevel || [], - verifyState: [0, 3] + verifyState: [0, 3], + PlanType:this.plantypes||[], + IsNewData:this.IsNewData } this.http.get("/api/ContentVerifies", { params: paramsdata }).subscribe((data: any) => { this.tableDate = data.items @@ -129,22 +136,28 @@ export class WaitExamineerComponent implements OnInit { this.level = '' this.projectlevel = '' this.PlanLevel = '' + this.plantypes=[] let level = sessionStorage.getItem("level"); this.getAlltabledate() } - lookImg(imgUrl){ - console.log(imgUrl) - let dom = document.getElementById(`viewerjs`) + lookImg(imgUrl,type?:boolean) { + // console.log(imgUrl) + let dom = document.getElementById(`viewerjs`) let pObjs = dom.childNodes; let node = document.createElement("img") node.style.display = "none"; - node.src = "/api/Objects/PlanPlatform/" + imgUrl; + if(type){ + let src = imgUrl.split("?")[0] + node.src = src + }else{ + node.src = "/api/Objects/PlanPlatform/" + imgUrl; + } node.id = 'imgxxx' dom.appendChild(node) setTimeout(() => { let viewer = new Viewer(document.getElementById(`viewerjs`), { - hidden:()=>{ + hidden: () => { dom.removeChild(pObjs[0]); viewer.destroy(); } @@ -165,38 +178,67 @@ export class WaitExamineerComponent implements OnInit { differentContentOfBuildingsInfo: any//当前单位变更数据 之 建筑信息 differentContentOfFunction: any = []//当前单位变更数据 之 功能分区 differentContentOfPicture: any//当前单位变更数据 之 实景图 + bianzhi = false radioClick(e, item) { this.selectedItem = item - console.log(item) + //console.log(item) // console.log('当前选择的信息',JSON.parse(this.selectedItem.differentContent) ) - if(item.contentType == 11 && this.selectedItem.differentContent){ - + if (item.contentType == 11 && this.selectedItem.differentContent) { + let differentContent = JSON.parse(this.selectedItem.differentContent) - + + + //console.log('差异信息', differentContent) + + // 单位信息 this.differentContentOfUnitInfo = differentContent.filter(item => item.propertyName == 'basicInfo') // 实景图 this.differentContentOfPicture = differentContent.filter(item => item.propertyName == 'realityImageGroups') - - //建筑信息 - this.differentContentOfBuildingsInfo = JSON.parse(JSON.stringify(differentContent.filter(item => item.propertyName == 'buildings')[0])) - this.differentContentOfBuildingsInfo.childrens.forEach(element => { - element.childrens = element.childrens.filter(item => item.isObj == false) - }); - //功能分区 - let differentContentOfFunction = JSON.parse(JSON.stringify(differentContent.filter(item => item.propertyName == 'buildings')[0])) - this.differentContentOfFunction = [] - differentContentOfFunction.childrens.forEach(item => { - item.childrens.forEach(i => { - if (i.propertyName == "buildingFunctionalDivisions") { - i.propertyName = item.propertyName - this.differentContentOfFunction.push(i) + + + if (differentContent.filter(item => item.propertyName == 'buildings').length != 0) { + //建筑信息 + this.differentContentOfBuildingsInfo = JSON.parse(JSON.stringify(differentContent.filter(item => item.propertyName == 'buildings')[0])) + + function resolveDiff(list: Array, path?: Array): Array { + let resultList: Array = []; + for (let i = 0; i < list.length; i++) { + if (path == null) path = []; + let item = list[i]; + //递归最底层 + if (!item.childrens.length) { + let res = new Result(); + res.path = path.concat([item.displayName]); + res.oldValue = item.oldValue; + res.newValue = item.newValue; + resultList.push(res); + } else { + !!item.displayName && path.push(item.displayName); + let deepList = resolveDiff(item.childrens, path) + resultList = resultList.concat(deepList); + } } + return resultList; + } + this.differentContentOfBuildingsInfo.childrens.forEach(element => { + element.difData = resolveDiff(element.childrens) }); - }); - + //console.log('建筑信息', this.differentContentOfBuildingsInfo) + //功能分区 + let differentContentOfFunction = JSON.parse(JSON.stringify(differentContent.filter(item => item.propertyName == 'buildings')[0])) + this.differentContentOfFunction = [] + differentContentOfFunction.childrens.forEach(item => { + item.childrens.forEach(i => { + if (i.propertyName == "buildingFunctionalDivisions") { + i.propertyName = item.propertyName + this.differentContentOfFunction.push(i) + } + }); + }); + } } - + // console.log('功能分区', this.differentContentOfFunction) @@ -209,18 +251,22 @@ export class WaitExamineerComponent implements OnInit { this.id = item.id this.fetchUrl = '' this.viewer = {} + if (item.contentType == 11) { + this.bianzhi = false window.setTimeout(() => { this.showtype = 3 sessionStorage.setItem('companyId', item.itemId) }, 0) } else if (item.contentType == 12) { + this.bianzhi = false //水源 this.http.get(`/api/WaterSources/${item.itemId}`).subscribe((data) => { this.waterData = data this.showtype = 12 }) } else if (item.contentType == 13) { + this.bianzhi = false //消防力量 this.http.get(`/api/CustomFireForce/${item.itemId}`).subscribe((data: any) => { if (data.forceType != 0) {//如果是其他消防力量 @@ -242,6 +288,7 @@ export class WaitExamineerComponent implements OnInit { }) } else if (item.contentType == 14) { + this.bianzhi = false //联动力量 this.http.get(`/api/LinkageForces/${item.itemId}`).subscribe((data: any) => { @@ -251,37 +298,45 @@ export class WaitExamineerComponent implements OnInit { }) } else { this.http.get(`/api/PlanComponents/${item.itemId}`).subscribe((data: any) => { + //console.log('预案信息',data) this.companyId = data.companyId this.companyName = data.companyName if (data.planType != 2 && data.planType != 1) { - this.fetchUrl = data.attachmentUrls[0] - var index = this.fetchUrl.indexOf("\/") - if (this.fetchUrl.substr(0, index) == 'psw') { - this.showtype = 1 - var obj = document.getElementById('viewer') - if (obj != null) { - obj.innerHTML = '' - } - window.setTimeout(() => { - this.viewer = new photoViewer({ - container: document.querySelector('#viewer'), - panorama: '/api/Objects/PlanPlatform/' + this.fetchUrl, - - }); - }) - + if (data.planMode == 2 ||data.planMode==4) { + this.showtype = 0 + this.bianzhi = true + this.src = `/CreatePlanOnlineFive?navIsOpen=false&companyId=${data.companyId}&planName=${data.name}&unitName=${data.companyName}&planCategory=${data.planCategory}&planId=${data.id}&unitTypeId=${data.company.buildingTypes[0].id}&orName=${data.company.organizationName}&orId=${data.company.organizationId}&pattern=false` + this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); + //this.src=`/keyUnit/viewunitinfoplan?id=${data.companyId}&orName=${data.company.organizationId}&orId=${data.company.organizationName}` } else { - this.lookWord() + this.bianzhi = false + this.fetchUrl = data.attachmentUrls[0] + var index = this.fetchUrl.indexOf("\/") + if (this.fetchUrl.substr(0, index) == 'psw') { + this.showtype = 1 + var obj = document.getElementById('viewer') + if (obj != null) { + obj.innerHTML = '' + } + window.setTimeout(() => { + this.viewer = new photoViewer({ + container: document.querySelector('#viewer'), + panorama: '/api/Objects/PlanPlatform/' + this.fetchUrl, + + }); + }) + + } else { + this.lookWord() + } } + } else { + this.bianzhi = false this.organizationName = item.organizationName this.planData = data this.handleData() return - - //this.src=`/planAudit/planpass?id=${data.companyId}&companyName=${data.companyName}&auditPlanId=${data.id}&auditStatus=${data.auditStatus}&planType=1` - //this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src); - //window.open(`/planAudit/planpass?id=${data.companyId}&companyName=${data.companyName}&auditPlanId=${data.id}&auditStatus=${data.auditStatus}&planType=1`) } @@ -302,43 +357,30 @@ export class WaitExamineerComponent implements OnInit { //毕升 lookWord() { + console.log('lookWord') this.showtype = 0 - let docIdWordArray = CryptoJS.enc.Utf8.parse(`PlanPlatform/` + this.fetchUrl); - let docId = CryptoJS.enc.Base64.stringify(docIdWordArray); - let jwt = sessionStorage.getItem("token"); - let rawJwt = CryptoJS.enc.Base64.parse(jwt.split('.')[1]); - let identityJson = CryptoJS.enc.Utf8.stringify(rawJwt); - let identityJsonparse=JSON.parse(identityJson) - let filename:string - this.http.get(`/api/ObjectMetadata/PlanPlatform/${this.fetchUrl}`).subscribe((data:any)=>{ - filename=data.fileName - let json={ - doc: { - docId: docId, - title: filename, - //title: filename, - fetchUrl: `http://39.106.78.171:8000/api/Objects/PlanPlatform/`+this.fetchUrl - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - 'FILE_READ','FILE_DOWNLOAD', 'FILE_PRINT' - ], - }, - } - var stringjson=JSON.stringify(json) - var wordArray = CryptoJS.enc.Utf8.parse(stringjson); - var base64 = CryptoJS.enc.Base64.stringify(wordArray); - this.src=`http://121.5.10.84:80/apps/editor/openPreview?data=${base64}` - this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src); - //window.open(`http://121.5.10.84:80/apps/editor/openPreview?data=${base64}`) - }) + //let src + let suffix = this.fetchUrl.split('.')[this.fetchUrl.split('.').length - 1].toLowerCase() + if (suffix == 'docx' || suffix == 'doc') { + let arr = this.fetchUrl.split('.') + arr[arr.length - 1] = 'pdf' + this.src = `/api/Objects/PlanPlatform/` + arr.join('.') + } else if (suffix == 'pdf') { + this.src = `/api/Objects/PlanPlatform/` + this.fetchUrl + } else if (suffix == 'jpeg' || suffix == 'jpg' || suffix == 'png') { + this.src = "" + this.lookImg(this.fetchUrl) + } else if (suffix == 'mp4' || suffix == 'MP4') { + this.showtype = 1080 //视频 + this.src = `/api/Objects/PlanPlatform/` + this.fetchUrl + } + this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); } //查看按钮跳转 lookNew() { - window.open(this.src) + if (this.src) { + window.open(this.src) + } } //查看二维三维预案 @@ -573,6 +615,14 @@ export class WaitExamineerComponent implements OnInit { }, 0) } } + //判断iframe是否加载完成 + iftrue=true + ifranmeLoad(){ + var iframe = document.getElementById("myiframe"); + iframe.onload = function(){ + } + this.iftrue=!this.iftrue + } } @@ -803,4 +853,19 @@ export class remark { } } } +} + +class DiffItem { + newValue: any + oldValue: any + childrens: Array + operation: number + displayName: string + propertyName: string +} + +class Result { + path: string[] + oldValue: any + newValue: any } \ No newline at end of file