上海预案管理平台
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.
 
 
 
 
 

757 lines
24 KiB

/*
* @Descripttion:
* @version:
* @Author: sueRimn
* @Date: 2020-12-25 16:13:50
* @LastEditors: sueRimn
* @LastEditTime: 2021-03-20 15:35:16
*/
import { Component, Inject, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';
import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';
import { HttpClient } from '@angular/common/http'
declare var CryptoJS
import { DomSanitizer } from '@angular/platform-browser';
import { Viewer } from 'photo-sphere-viewer';
declare var echarts: any;
@Component({
selector: 'app-wait-examineer',
templateUrl: './wait-examineer.component.html',
styleUrls: ['./wait-examineer.component.scss']
})
export class WaitExamineerComponent implements OnInit {
constructor(private http:HttpClient,public snackBar: MatSnackBar,private sanitizer: DomSanitizer,public dialog: MatDialog) {
}
ngOnInit(): void {
sessionStorage.setItem('gisplan','look')
let level = sessionStorage.getItem("level");
if(level == "0"){//如果是总队
this.preparelevels = [
{name:"总队",value:"0"},
{name:"支队",value:"1"},
{name:"大队",value:"2"},
{name:"中队",value:"3"}
]
this.PlanLevel=0
}
if(level == "1"){//如果是支队
this.preparelevels = [
{name:"支队",value:"1"},
{name:"大队",value:"2"},
{name:"中队",value:"3"}
]
this.PlanLevel=1
}
if(level == "2"){//如果是大队
this.preparelevels = [
{name:"大队",value:"2"},
{name:"中队",value:"3"}
]
this.PlanLevel=2
}
if(level == "3"){//如果是中队
this.preparelevels = [
{name:"中队",value:"3"}
]
this.PlanLevel=3
}
var scrollflaga = true;
var win=document.getElementById('tbodydiv')
/* window.setTimeout(()=>{
var a = document.getElementById("table").offsetTop;
window.onscroll=function(){
if(scrollflaga){
if(a>=win.scrollTop&&a<(win.scrollTop+win.offsetHeight)){
scrollflaga=false
this.getAlltabledate()
}
}
}
}) */
this.getAlltabledate()
this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src);
}
ngOnDestroy () {
/* this.indexbar.clear()
this.indexbar.dispose() */
}
iframeSrc
src=''
preparelevels:any
selected = new FormControl(0); //选项卡 实例
level=''//操作类型
js//组织机构
addtime//时间
projectlevel//预案级别
previewshow=false//预览得分是否显示
tableDate
isallDate=true//是否显示完成数据,默认显示
companyBuiltInGrouping=["基本信息","四周毗邻","消防设施"]
indexbar //饼状图实例
indexzhu
PlanLevel//编制级别
count//一共多少条
checked//是否选中
chuorzhong//判断初审还是终审
radioid//选中的id
shenheTable=[]//选中要审核的对象
showtype=-1//0:word,1:全景图,2:二维三维,3:重点单位
compantData={name:'',buildingTypes:[],address:''}
organizationName
planData
id
companyId
fetchUrl
companyName
//获取表格数据
getAlltabledate(){
let paramsdata:any = {
Operation:this.level||[],
ContentType:Number(this.projectlevel)||[],
Level:this.PlanLevel||[],
verifyState:[0,3]
}
this.http.get("/api/ContentVerifies",{params:paramsdata}).subscribe((data:any)=>{
this.tableDate=data.items
this.count=data.totalCount
})
}
//提交查询
onSubmit(value){
this.getAlltabledate()
}
//刷新
record(){
this.level=''
this.projectlevel=''
let level = sessionStorage.getItem("level");
if(level == "0"){//如果是总队
this.PlanLevel=0
}
if(level == "1"){//如果是支队
this.PlanLevel=1
}
if(level == "2"){//如果是大队
this.PlanLevel=2
}
if(level == "3"){//如果是中队
this.PlanLevel=3
}
this.getAlltabledate()
}
//radio点击事件
viewer//全景图对象
waterData:any//需要传递给子组件的水源信息
LinkageForceDetailInfo:any//需要传递给子组件的联动力量信息
fireForceDetailInfo:any//需要传递给子组件的消防力量信息
postlevel:any
radioClick(e,item){
this.showtype = -1
this.organizationName=''
this.id=item.id
this.fetchUrl=''
this.viewer={}
if(item.contentType == 11){
window.setTimeout(()=>{
this.showtype = 3
sessionStorage.setItem('companyId',item.itemId)
},0)
}else if(item.contentType == 12){
//水源
this.http.get(`/api/WaterSources/${item.itemId}`).subscribe((data)=>{
this.waterData = data
this.showtype = 12
})
}else if(item.contentType == 13){
//消防力量
this.http.get(`/api/CustomFireForce/${item.itemId}`).subscribe((data:any)=>{
if(data.forceType != 0){//如果是其他消防力量
this.postlevel = 4
}else{
this.postlevel = data.level
}
if(data.fireForceDetailInfo && data.fireForceDetailInfo.location){
this.fireForceDetailInfo = data.fireForceDetailInfo
this.showtype = 13
}else if(!data.fireForceDetailInfo){
//提示 该提交内容为空,从未保存过,请驳回该审核
this.showtype = 666
} else {
data.fireForceDetailInfo.location={x:null,y:null}
this.fireForceDetailInfo = data.fireForceDetailInfo
this.showtype = 13
}
})
}else if(item.contentType == 14){
//联动力量
this.http.get(`/api/LinkageForces/${item.itemId}`).subscribe((data:any)=>{
data.location ? null : data.location={x:null,y:null}
this.LinkageForceDetailInfo = data
this.showtype = 14
})
}else{
this.http.get(`/api/PlanComponents/${item.itemId}`).subscribe((data:any)=>{
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 Viewer({
container: document.querySelector('#viewer'),
panorama:'/api/Objects/PlanPlatform/'+ this.fetchUrl,
});
})
}else{
this.lookWord()
}
}else{
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`)
}
})
}
if(e.checked){
this.shenheTable.push(item)
}
else{
for(var i=0;i<this.shenheTable.length;i++ ){
if(this.shenheTable[i].id==item.id){
this.shenheTable.splice(i,1)
}
}
}
this.radioid=item.itemId
/* this.chuorzhong=item.verifyState
this.radioid=item.itemId */
}
//毕升
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://${location.host}/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/apps/editor/openPreview?data=${base64}`
this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src);
//window.open(`http://121.5.10.84/apps/editor/openPreview?data=${base64}`)
})
}
//查看按钮跳转
lookNew(){
window.open(this.src)
}
//查看二维三维预案
thirdPartyURL
planType
twoOrthree
handleData () {
this.compantData={name:'',buildingTypes:[],address:''}
this.planType = this.planData.planMode
let data = this.planData
if(data.planType==1){
this.twoOrthree=2
}else if(data.planType==2){
this.twoOrthree=3
}
if (this.planData.planMode==0) { //预案planMode=0时, 查看word
//this.lookWord()
} else if (this.planData.planMode==1) { //预案planMode=1时, 解析文档
} else if (this.planData.planMode==2) { //预案planMode=2时, 跳查看页面组件
this.showtype=2
this.http.get(`/api/Plans/${data.companyId}`).subscribe((data:any)=>{
data && data.company? this.compantData = data.company : null
})
sessionStorage.setItem("buildingTypeId", this.compantData.buildingTypes.length? this.compantData.buildingTypes[0].id: undefined);
sessionStorage.setItem("companyId",this.companyId);
sessionStorage.setItem("planId",this.id);
sessionStorage.setItem("editable",'0');
sessionStorage.setItem("planName",data.name)
let companyId = sessionStorage.getItem("companyId")
this.thirdPartyURL=this.sanitizer.bypassSecurityTrustResourceUrl(`/planAudit/planpass?id=${this.companyId}&companyName=${data.companyName}&auditPlanId=${data.id}&auditStatus=${data.auditStatus}&planType=1`);
//window.open(`/keyUnit/viewunitinfoplan?id=${companyId}`)
} else if (this.planData.planMode==3) { //预案planMode=3时, 第三方网址'
this.showtype=2
this.http.get(`/api/Plans/${data.companyId}`).subscribe((data:any)=>{
data && data.company? this.compantData = data.company : null
})
//this.dialog.open(show3D,{width:'1350px',height:'700px',data:{url:data.url}}); //打开图片弹窗
this.thirdPartyURL = this.sanitizer.bypassSecurityTrustResourceUrl(data.url)
}
}
//打开三维预案弹窗
oopen3Dshow(){
this.dialog.open(show3D,{width:'1650px',height:'850px',data:{url:this.thirdPartyURL,twoOrthree:this.twoOrthree,radioid:this.radioid}});
}
//变更数据和全部数据切换按钮
buttonChange(){
this.isallDate=!this.isallDate
this.previewshow=false
}
//同意操作
agree(){
var agreeList=[]
var companyAgreeList=[]
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
if(this.shenheTable.length==0){
this.snackBar.open('请勾选要审核的条目!','确定',config);
}
else{
const dialogRef =this.dialog.open(remark,{width:'460px',height:'290px',data:{shenhedata:this.shenheTable,type:1,radioid:this.radioid}});
dialogRef.afterClosed().subscribe(result => {
this.shenheTable = []
this.showtype = -1
this.getAlltabledate()
});
}
}
//拒绝操作
refuse(){
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
var refuseList = []
var companyrefuseList=[]
if(this.shenheTable.length==0){
this.snackBar.open('请选择要审核的预案!','确定',config);
}
else{
const dialogRef =this.dialog.open(remark,{width:'460px',height:'290px',data:{shenhedata:this.shenheTable,type:2,radioid:this.radioid}});
dialogRef.afterClosed().subscribe(result => {
this.shenheTable = []
this.showtype = -1
this.getAlltabledate()
});
}
}
//分数饼状图
bar(){
var ec = echarts as any;
this.indexbar=ec.init(document.getElementById('indexbar'),'light');
var option = {
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b}: {c} ({d}%)'
},
title: {
text: '总分',
left: 'center',
bottom:70,
textStyle:{
color:'#FFFFFF',
fontSize:16
}
},
series: [
{
name: '分数',
type: 'pie',
radius: ['50%', '70%'],
bottom:50,
avoidLabelOverlap: false,
label: {
show: true,
position: 'center',
fontSize:16,
color:'#FFFFFF'
},
labelLine: {
show: false
},
data: [
{value: 93, name: '93分', itemStyle:{color:'#2196F3'}},
{value:7, itemStyle:{color:'#FFFFFF'}}
]
}
]
};
this.indexbar.setOption(option);
}
//分数柱状图
zhu(){
var ec = echarts as any;
this.indexzhu=ec.init(document.getElementById('zhu'),'light');
var option={
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'value',
show:false,
axisLine:{
show:false
},
splitLine:{
show:false
},
axisTick:{
show:false
},
},
yAxis: {
type: 'category',
axisTick:{
show:false
},
axisLine:{
show:false
},
axisLabel:{
color:"#FFFFFF",
fontSize:16
},
data: ['实战演练记录', '六熟悉记录', '上传CAD', '实景图', '功能分区', '重点单位', '消防设施','四周毗邻','基本信息']
},
series: [
{
type: 'bar',
stack: '总量',
showBackground: true,
backgroundStyle: {
color: '#FFFFFF'
},
label: {
show: true,
position: 'inside',
fontSize:14,
formatter: '{c}分'
},
data: [
{value:18, itemStyle:{color:'#58D091'}},
{value:16, itemStyle:{color:'#58D091'}},
{value:19, itemStyle:{color:'#58D091'}},
{value:16, itemStyle:{color:'#58D091'}},
{value:16, itemStyle:{color:'#58D091'}},
{value:13, itemStyle:{color:'#FFCC00'}},
{value:6, itemStyle:{color:'#FF4D4D'}},
{value:19, itemStyle:{color:'#58D091'}},
{value:16, itemStyle:{color:'#58D091'}},
]
},
{
type: 'bar',
stack: '总量',
label: {
show: false,
position: 'insideRight'
},
data: [2, 4, 1, 4, 4, 7, 14,1,4],
itemStyle:{
color:"#FFFFFF",
},
},
]
}
this.indexzhu.setOption(option);
}
preview(){
this.previewshow=!this.previewshow
if(this.previewshow){
window.setTimeout(()=>{
this.bar()
this.zhu()
},0)
}
}
}
//二三维预案查看
@Component({
selector: 'app-wait-examineer-show3D',
templateUrl: './show3D.html',
styleUrls: ['./wait-examineer.component.scss']
})
export class show3D{
constructor(private sanitizer: DomSanitizer,public dialogRef: MatDialogRef<show3D>,@Inject(MAT_DIALOG_DATA) public data,public dialog: MatDialog) {}
ngOnInit(): void {
this.threedUrl=this.sanitizer.bypassSecurityTrustResourceUrl(this.data.url.changingThisBreaksApplicationSecurity)
}
threedUrl
}
//审批意见弹窗
@Component({
selector: 'app-wait-examineer-remark',
templateUrl: './remark.html',
styleUrls: ['./wait-examineer.component.scss']
})
export class remark{
constructor(private http:HttpClient,private sanitizer: DomSanitizer,public dialogRef: MatDialogRef<remark>,@Inject(MAT_DIALOG_DATA) public data,public dialog: MatDialog,public snackBar: MatSnackBar) {}
ngOnInit(): void {
this.shenheTable=this.data.shenhedata
this.radioid=this.data.radioid
}
companyrefuseList=[]
refuseList=[]
shenheTable=[]
companyAgreeList=[]
agreeList=[]
remark
radioid
//取消
close(){
this.dialogRef.close()
}
//确定
define(){
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
if(this.data.type==1){
//同意操作
// console.log(this.shenheTable)
//单个审核
if(this.shenheTable.length == 1){
//重点单位审核
if(this.shenheTable[0].contentType == 11){
let body:any = {
id:this.shenheTable[0].id,
itemId:this.shenheTable[0].itemId,
verifyState:4,
contentType:11,
remark:this.remark||'',
title:this.shenheTable[0].title+'基本信息'
}
this.http.put(`/api/ContentVerifies`,body).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
//this.getAlltabledate()
})
}else if(this.shenheTable[0].contentType == 12 || this.shenheTable[0].contentType == 13 || this.shenheTable[0].contentType == 14){
let body:any = {
id:this.shenheTable[0].id,
itemId:this.shenheTable[0].itemId,
verifyState:4,
contentType:this.shenheTable[0].contentType,
remark:this.remark||'',
title:this.shenheTable[0].title
}
this.http.put(`/api/ContentVerifies`,body).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
})
}else{
//预案审核
if(this.shenheTable[0].verifyState==0){
let body:any={
auditStatus:16,
auditOpinion:this.remark||''
}
this.http.put(`/api/PlanAudits/${this.shenheTable[0].itemId}/First`,body).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
//this.getAlltabledate()
})
}else if(this.shenheTable[0].verifyState==3){
let body:any={
auditStatus:2,
auditOpinion:this.remark||''
}
this.http.put(`/api/PlanAudits/${this.radioid}`,body).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
//this.getAlltabledate()
})
}
}
this.shenheTable=[]
}
//批量审核
else{
if(this.shenheTable[0].contentType==11||this.shenheTable[0].contentType==12){ //批量审批水源和重点单位
for(var i=0;i<this.shenheTable.length;i++){
var body={
id:this.shenheTable[i].id,
itemId:this.shenheTable[i].itemId,
verifyState:4,
remark:this.remark
}
this.companyAgreeList.push(body)
}
this.http.put(`/api/ContentVerifies/Batch`,this.companyAgreeList).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
})
}else{ //批量审核预案
for(var i=0;i<this.shenheTable.length;i++){
var cart={
planComponentId:this.shenheTable[i].itemId,
auditStatus:this.shenheTable[i].verifyState==3?2:16,
auditOpinion:this.remark||''
}
this.agreeList.push(cart)
}
this.http.put(`/api/PlanAudits/Batch`,this.agreeList).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
})
}
this.shenheTable=[]
}
}
else{
//单个审核拒绝
if(this.shenheTable.length==1){
//重点单位审核拒绝
if(this.shenheTable[0].contentType == 11){
let body:any = {
id:this.shenheTable[0].id,
itemId:this.shenheTable[0].itemId,
verifyState:5,
contentType:11,
remark:this.remark,
title:this.shenheTable[0].title+'基本信息'
}
this.http.put(`/api/ContentVerifies`,body).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
//this.getAlltabledate()
})
}else if(this.shenheTable[0].contentType == 12 || this.shenheTable[0].contentType == 13 || this.shenheTable[0].contentType == 14){
let body:any = {
id:this.shenheTable[0].id,
itemId:this.shenheTable[0].itemId,
verifyState:5,
contentType:this.shenheTable[0].contentType,
remark:this.remark,
title:this.shenheTable[0].title
}
this.http.put(`/api/ContentVerifies`,body).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
})
}else{
//预案审核拒绝
if(this.shenheTable[0].verifyState==0){
let refbody={
auditOpinion:this.remark,
auditStatus:32
}
this.http.put(`/api/PlanAudits/${this.shenheTable[0].itemId}/First`,refbody).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
})
}else if(this.shenheTable[0].verifyState==3){
let refbody={
auditOpinion:this.remark,
auditStatus:4
}
this.http.put(`/api/PlanAudits/${this.radioid}`,refbody).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
})
}
}
this.shenheTable=[]
}
//批量审核
else{
if(this.shenheTable[0].contentType==11||this.shenheTable[0].contentType==12){ //批量审批水源和重点单位
for(var i=0;i<this.shenheTable.length;i++){
var bodyre={
id:this.shenheTable[i].id,
itemId:this.shenheTable[i].itemId,
remark:this.remark,
verifyState:5
}
this.companyrefuseList.push(bodyre)
}
this.http.put(`/api/ContentVerifies/Batch`,this.companyrefuseList).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
})
}else{
for(var i=0;i<this.shenheTable.length;i++){
var carts={
planComponentId:this.shenheTable[i].itemId,
auditStatus:this.shenheTable[i].verifyState==3?4:32,
auditOpinion:this.remark
}
this.refuseList.push(carts)
}
this.http.put(`/api/PlanAudits/Batch`,this.refuseList).subscribe(data=>{
this.snackBar.open('操作成功!','确定',config);
this.dialogRef.close()
})
}
this.shenheTable=[]
}
}
}
}