import { Component, OnInit, ViewChild, Inject } from '@angular/core'; import { HttpClient,HttpHeaders } from '@angular/common/http' import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree'; import { MatPaginator } from '@angular/material/paginator'; import { FlatTreeControl } from '@angular/cdk/tree'; import { FormControl } from '@angular/forms'; import { Router,ActivatedRoute } from '@angular/router' import { PageEvent } from '@angular/material/paginator'; import { MatDialogRef, MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; import { TreeService } from '../../http-interceptors/tree.service' import {FormBuilder, FormGroup, Validators} from '@angular/forms'; import { async } from '@angular/core/testing'; import { Viewer } from 'photo-sphere-viewer'; import {STEPPER_GLOBAL_OPTIONS} from '@angular/cdk/stepper'; declare var CryptoJS @Component({ selector: 'app-entry-plan-look', templateUrl: './entry-plan-look.component.html', styleUrls: ['./entry-plan-look.component.scss'] }) export class EntryPlanLookComponent implements OnInit { constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,private tree: TreeService,public dialog: MatDialog,public snackBar: MatSnackBar) { } pageEvent: PageEvent; private _transformer = (node, level: number) => { //初始化tree return { expandable: !!node.children && node.children.length > 0, name: node.name, level: level, id: node.id, parentId: node.parentId, children: node.children }; } treeControl = new FlatTreeControl(node => node.level, node => node.expandable); treeFlattener = new MatTreeFlattener(this._transformer, node => node.level, node => node.expandable, node => node.children); dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); myControl = new FormControl(); hasChild = (_: number, node: any) => node.expandable; displayedColumns: string[] = ['planname', 'addpeople', 'addtime','plantype','auditstate', 'isopen','preparethelevel','operation']; tabledataSource:any //分页 @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; length:any; //共多少条数据 pageSize:any; //每页条数 pageSizeOptions: number[] = [10] //设置每页条数 PageNumber:any = 1; //第几页 unitdata:any = {} unittypeId:any //单位类型id //获取当前单位信息 compantData:any getCompanyData () { let CompanyName = sessionStorage.getItem("companyName") let header = { CompanyName: CompanyName || '', } this.http.get('/api/Plans',{params:header}).subscribe((data:any)=>{ data.items.forEach(element => { if (element.companyId===this.route.snapshot.queryParams.unitId) { this.compantData = element.company return } }); // console.log(123,this.compantData) this.unitdata.unitname = this.compantData.name this.unitdata.organizationName = this.compantData.organizationName this.unitdata.unittype = this.compantData.buildingTypes[0].name this.unitdata.unitaddress = this.compantData.address this.unittypeId = this.compantData.buildingTypes[0].id }) } //跳转单位信息 lookUnitData(){ sessionStorage.setItem("editable","0") sessionStorage.setItem("companyName",this.route.snapshot.queryParams.unitName) sessionStorage.setItem("companyId",this.route.snapshot.queryParams.unitId) // sessionStorage.setItem(element.id,JSON.stringify(element.companyIntegrityScore)) window.open(`/keyUnit/viewunitinfo?id=${this.route.snapshot.queryParams.unitId}&usci=${this.route.snapshot.queryParams.usci}`) } //分页事件 changePage(e){ this.PageNumber = e.pageIndex+1 this.getAllPlanComponents() } isoperation:any //判断预案录入 和 审核公开预案 区别变量 ngOnInit(): void { this.tabledataSource = [ ] // this.getCompanyData() this.isoperation = this.route.snapshot.queryParams.operation this.unitdata.unitname = this.route.snapshot.queryParams.unitName this.unitdata.organizationName = this.route.snapshot.queryParams.orName this.unitdata.unittype = this.route.snapshot.queryParams.unitType this.unitdata.unitaddress = this.route.snapshot.queryParams.unitAdd this.companyId = this.route.snapshot.queryParams.unitId this.unittypeId = this.route.snapshot.queryParams.unitTypeId this.getAllPlanComponents() } //查看预案 lookPlan(e){ if(e.planMode == 0){ // console.log(e.attachmentUrls) var index=e.attachmentUrls[0].indexOf("\/") if(e.attachmentUrls[0].substr(0,index)=='psw'){ const dialogRef = this.dialog.open(PsViewer, { width: '1500px', height:'800px', data: e.attachmentUrls[0] }); } else /* if(e.attachmentUrls[0].substr(e.attachmentUrls[0].length-4,e.attachmentUrls[0].length-1)=='docx'||e.attachmentUrls[0].substr(e.attachmentUrls[0].length-3,e.attachmentUrls[0].length)=='pdf' ||e.attachmentUrls[0].substr(e.attachmentUrls[0].length-3,e.attachmentUrls[0].length)=='doc'||e.attachmentUrls[0].substr(e.attachmentUrls[0].length-3,e.attachmentUrls[0].length)=='DOC' ||e.attachmentUrls[0].substr(e.attachmentUrls[0].length-3,e.attachmentUrls[0].length)=='txt'||e.attachmentUrls[0].substr(e.attachmentUrls[0].length-3,e.attachmentUrls[0].length)=='JPG') */{ let filename:string let fetchUrl = e.attachmentUrls[0] let docIdWordArray = CryptoJS.enc.Utf8.parse(`PlanPlatform/` + 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) this.http.get(`/api/ObjectMetadata/PlanPlatform/${fetchUrl}`).subscribe((data:any)=>{ filename=data.fileName let json={ doc: { docId: docId, title: filename, fetchUrl: `http://39.106.78.171:8000/api/Objects/PlanPlatform/`+fetchUrl, }, user: { uid: identityJsonparse.sub, nickName: identityJsonparse.name, avatar: "", privilege: e.auditStatus!='1'&&e.auditStatus!='16'?[ 'FILE_READ','FILE_WRITE','FILE_DOWNLOAD', 'FILE_PRINT' ]:[ '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); window.open(`http://121.5.10.84/apps/editor/openPreview?data=${base64}`) }) } } if(e.planMode == 1){ const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('查看导入word文件','确定',config); } if(e.planMode == 2){ //如果是在线编辑 let id = e.id sessionStorage.setItem("planId",id) sessionStorage.setItem("companyId",this.companyId) sessionStorage.setItem("buildingTypeId",this.unittypeId) sessionStorage.setItem("editable","0") sessionStorage.setItem("planName",e.name) let companyId = sessionStorage.getItem("companyId") window.open(`/keyUnit/viewunitinfoplan?id=${companyId}&orName=${this.route.snapshot.queryParams.orName}&orId=${this.route.snapshot.queryParams.orId}`); } if(e.planMode == 3){ //如果是跳转网页 sessionStorage.setItem("url",e.url) window.open(`/planManagement/webLook`) } } //编辑预案 editPlan(e){ if(e.planMode == 2){ //如果是在线编辑 let id = e.id sessionStorage.setItem("planId",id) sessionStorage.setItem("companyId",this.companyId) sessionStorage.setItem("buildingTypeId",this.unittypeId) sessionStorage.setItem("editable","1") sessionStorage.setItem("planName",e.name) let companyId = sessionStorage.getItem("companyId") window.open(`/keyUnit/editunitinfo?id=${companyId}&orName=${this.route.snapshot.queryParams.orName}&orId=${this.route.snapshot.queryParams.orId}`); } } allPlanComponents:any //所有预案组件 companyId : any //新建预案需要使用的id planId : any //统一预案id lookUrl //查看文件路径 //改名 changeName(element){ // console.log(element) const dialogRef = this.dialog.open(ChangeName, { data: {element:element} }); dialogRef.afterClosed().subscribe( data=>{ if(data){ const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('修改成功!','确定',config); this.getAllPlanComponents() } } ); } //获得所有预案组件 getAllPlanComponents(){ let pagetype = this.route.snapshot.queryParams.pagetype let unitId = this.route.snapshot.queryParams.unitId let paramsData:any if(pagetype == 'entryplan'){ paramsData = { companyId:unitId, pageNumber: this.PageNumber, pageSize: "", sort: "" } } if(pagetype == 'passplan'){ paramsData = { companyId:unitId, pageNumber: this.PageNumber, pageSize: "", AuditStatus:2, sort: "" } } if(pagetype == 'openplan'){ paramsData = { companyId:unitId, pageNumber: this.PageNumber, pageSize: "", IsPublic:true, sort: "" } } this.http.get("/api/PlanComponents",{params:paramsData}).subscribe((data:any)=>{ this.length = data.totalCount this.allPlanComponents = data this.tabledataSource = data.items }) } //删除预案 deletePlan(plandata){ const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 let isTrue = confirm('您确定要删除吗') if (isTrue) { if(plandata.planType == 1){//如果删除的是二维预案 this.http.delete(`/api/PlanComponents2D/${plandata.id}`).subscribe(data=>{ this.snackBar.open('删除成功!','确定',config); this.getAllPlanComponents() },err => { this.snackBar.open(err,'确定',config); }) }else{ this.http.delete(`/api/PlanComponents/${plandata.id}`).subscribe(data=>{ const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('删除成功!','确定',config); this.getAllPlanComponents() },err => { this.snackBar.open(err,'确定',config); }) } } } //提交审核 submitAudit(element){ const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 /* if(element.auditStatus == 4){ this.snackBar.open('审核退回的预案需要修改后方可再次提交审核!','确定',config); } */ if(element.planType == 1){//如果提交审核的是二维预案 if(element.auditStatus ==8){ this.http.put(`/api/PlanComponents2D/${element.id}/Commit`,"").subscribe(data=>{ this.getAllPlanComponents() },err => { this.snackBar.open(err,'确定',config); }) } else{ this.snackBar.open('审核退回的预案需要修改后方可再次提交审核!','确定',config); } }else{ this.http.put(`/api/PlanComponents/${element.id}/Commit`,"").subscribe(data=>{ this.getAllPlanComponents() },err => { this.snackBar.open(err,'确定',config); }) } } //撤销审核 cancelAudit(element){ if(element.planType == 1){//如果撤销审核的是二维预案 this.http.put(`/api/PlanComponents2D/${element.id}/Cancel`,"").subscribe(data=>{ this.getAllPlanComponents() }) }else{ this.http.put(`/api/PlanComponents/${element.id}/Cancel`,"").subscribe(data=>{ this.getAllPlanComponents() },err => { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open(err,'确定',config); }) } } //审核结果 auditResult(element){ // console.log(element) const dialogRef = this.dialog.open(AuditResult, { width:"395px", data: {element:element} }); dialogRef.afterClosed().subscribe( data=>{ if(data){ } } ); } //下载↓ selectDownloadFile:any; //选择下载的文件 download:any; //下载文件元数据 downloadisLoading:boolean = false; //进度条loading加载 downloadProgress:number=0; //进度条进度 downloadFileName:any uploadFileLonging:any //读取下载文件信息 readFile (element) { this.uploadFileLonging = element const dialogRef = this.dialog.open(DownloadFile, { width:"435px", // height:"410px", data: {fileUrls:element.attachmentUrls,compantData:this.unitdata.unitname,element:element} }); dialogRef.afterClosed().subscribe( data=>{ if(data){ this.downloadFileName = data.fileName this.download = data this.downloadFile() } } ); } //初始化下载 downloadFile () { this.downloadProgress = 0 let file = this.download let fileSize = file.fileLength//下载文件的总大小 let shardSize = 10 * 1024 * 1024 //文件大小是否大于10MB if (file && fileSize<=shardSize) { //<=10MB时直接下载 this.downloadisLoading = true // this.setFileLoading() this.http.get(`/api/Objects/PlanPlatform/${file.objectName}`,{responseType: 'blob'},).subscribe(data=>{ let url = window.URL.createObjectURL(new Blob([data])); //createObjectURL创建一个下载Blob的url地址 let link = document.createElement("a"); link.style.display = "none"; link.href = url; let suffix = file.objectName.substring(file.objectName.lastIndexOf(".")+1,file.objectName.length) ; link.setAttribute("download", file.fileName ? file.fileName : this.unitdata.unitname + "-" +this.uploadFileLonging.name + "." + suffix); document.body.appendChild(link); link.click(); this.downloadisLoading = false // this.setFileLoading() }) } else if (file && fileSize > shardSize) { //>10MB时分块下载 this.blockingDownload() //分段下载 this.downloadisLoading = true // this.setFileLoading() } } //分段下载并合并 async blockingDownload () { let file = this.download let fileSize = file.fileLength //下载文件的总大小 let shardSize = 3 * 1024 * 1024 //3MB一个分片 let allSlice = Math.ceil(fileSize / shardSize) //总文件/3MB===共分多少段 let allFile:any = [] //所有的file分段 for (let i=0;i{ this.http.get(`/api/Objects/PlanPlatform/${file.objectName}`,{headers:{'range':`bytes= ${start}-${end}`},responseType:'blob'}).subscribe(data=>{ result(data) }) }) allFile.push(result) this.downloadProgress = Number((i/allSlice).toFixed(2))*100 if (allFile.length === allSlice) { //合并文件输出给浏览器 let url = window.URL.createObjectURL(new Blob(allFile)); //createObjectURL创建一个下载Blob的url地址 let link = document.createElement("a"); link.style.display = "none"; link.href = url; let suffix = file.objectName.substring(file.objectName.lastIndexOf(".")+1,file.objectName.length) ; link.setAttribute("download", file.fileName ? file.fileName : this.unitdata.unitname + "-" +this.uploadFileLonging.name + "." + suffix); document.body.appendChild(link); link.click(); // this.downloadProgress = 0 this.downloadisLoading = false // this.setFileLoading() } } //for循环 } //取消分块下载 cancelDowload () { } //封装函数设置当前文件loading状态 setFileLoading () { // let id = this.selectDownloadFile.id // this.CADList.forEach(element => { // if (element.id === id) { element.loading = !element.loading } // }); } //新建预案弹出框 addplan () { const dialogRef = this.dialog.open(AddPlanone, { width:"585px", height:"430px", data: {companyId:this.companyId}, disableClose:true }); dialogRef.afterClosed().subscribe( data=>{ if(data){ // this.route.snapshot.queryParams.id = data.planId this.planId = data.planId this.getAllPlanComponents() if(data.planMode == 2){//如果添加方式为在线编辑 sessionStorage.setItem("planId",data.id); sessionStorage.setItem("companyId",this.companyId) sessionStorage.setItem("buildingTypeId",this.unittypeId) sessionStorage.setItem("editable","1") let companyId = sessionStorage.getItem("companyId") window.open(`/keyUnit/editunitinfo?id=${companyId}`); } } } ); } } //新建预案弹出框 @Component({ selector: 'AddPlanone', templateUrl: './AddPlanone.html', styleUrls: ['./entry-plan-look.component.scss'], }) export class AddPlanone { isLinear = true; //是否为线性步进器 firstFormGroup: FormGroup; secondFormGroup: FormGroup; constructor(private _formBuilder: FormBuilder,private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data,public snackBar: MatSnackBar,private tree: TreeService) {} ngOnInit(): void { this.levels=sessionStorage.getItem("level") this.firstFormGroup = this._formBuilder.group({ firstCtrlone: ['', Validators.required], firstCtrltwo: ['', Validators.required], firstCtrlthree: ['', Validators.required], }); this.secondFormGroup = this._formBuilder.group({ secondCtrl: ['', Validators.required] }); } onNoClick(): void { this.dialogRef.close(); } levels// isup:boolean = true //上传input框是否显示 isweb:boolean = false //web输入框是否显示 isinput:boolean = false //导入是否显示 defaultisshow = '0' //默认显示上传input框 pswShow=false //是否为全景图选项默认不显示 psw//是否为全景图 cadPlan//是否为卡片预案 //选择radio selectradio(e){ if(e.value == "0"){ //如果点击本地上传 this.isup = true this.isinput = false this.isweb = false this.webaddress = "" } if(e.value == "1"){ //如果点击导入word文档 this.isinput = true this.isup = false this.isweb = false this.webaddress = "" } if(e.value == "2"){ //如果点击在线编辑 this.isinput = false this.isup = false this.isweb = false this.webaddress = "" } if(e.value == "3"){ //如果点击输入网址 this.isweb = true this.isup = false this.isinput = false this.webaddress = "" } } file2:any = null; //导入的文件 webaddress:any = "" //输入的网页地址 //上传文件↓ file:any; //上传的文件 fileName:any; //上传文件name uploadisLoading:boolean = false; //进度条loading加载 uploadProgress:number=0; //进度条进度 objectName:any; //上传对象名 uploadId:any; //上传分块上传事件编号 //上传文件input filechange(e){ this.psw=false this.file = e.target.files[0] || null //上传的文件 if(this.selectedPLanType=='4'&&this.file.type!=null&&this.file.type!=undefined){ if(this.file.type=='image/png'||this.file.type=='image/jpeg'){ this.pswShow=true }else{this.pswShow=false} }else{this.pswShow=false} // this.startUploading() } //上传文件 startUploading (planType) { let file = this.file || null //获取上传的文件 let fileSize = file.size || null //上传文件的总大小 let shardSize = 5 * 1024 * 1024 //5MB一个分片 // console.log(this.psw) if (file && fileSize<=shardSize) { //上传文件<=5MB时 let formData = new FormData() formData.append("file",file) this.http.post(this.psw?'/api/Objects/PlanPlatform/psw': `/api/Objects/PlanPlatform/${this.data.companyId}/2D`,formData).subscribe((data:any)=>{ this.objectName = data.objectName const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('上传成功!','确定',config); this.uploadover = true let level = sessionStorage.getItem("level") // console.log(level) let PlanLevel if(level == '0'){ PlanLevel = 1 } if(level == '1'){ PlanLevel = 2 } if(level == '2'){ PlanLevel = 4 } if(level == '3'){ PlanLevel = 8 } let uploadUrl if(planType == "非二维"){ uploadUrl = "/api/PlanComponents" }else{ uploadUrl = "/api/PlanComponents2D" } if(this.uploadover){ this.http.post(uploadUrl,{ id: "", name: this.selectedPLanName, planType:Number(this.selectedPLanType), planMode: Number(this.defaultisshow), planLevel: PlanLevel, planCategory: Number(this.selectedPLanLevel), url: "", attachmentUrls: [`${this.objectName}`] },{params:{ companyId : this.data.companyId }}).subscribe(data=>{ this.dialogRef.close(data); }) }else{ console.log("上传出错") } }) } else if (file && fileSize>shardSize) { //上传文件>5MB时,分块上传 let data = {filename: file.name} this.uploadisLoading = true this.http.post(this.psw?'/api/NewMultipartUpload/PlanPlatform/psw':`/api/NewMultipartUpload/PlanPlatform/${this.data.companyId}/2D`,{},{params:data}).subscribe((data:any)=>{ //初始化分段上传 this.objectName = data.objectName this.uploadId = data.uploadId this.subsectionUploading(planType) }) } } PartNumberETag:any=[]; //每次返回需要保存的信息 //开始分段上传 async subsectionUploading (planType) { let file = this.file || null //获取上传的文件 let fileSize = file.size || null //上传文件的总大小 let shardSize = 5 * 1024 * 1024 //5MB一个分片 let allSlice = Math.ceil(fileSize / shardSize) //总文件/5MB===共分多少段 向上取整 for (let i = 0;i < allSlice;i++) { //循环分段上传 let start = i * shardSize //切割文件开始位置 let end = Math.min(fileSize, start + shardSize); //切割文件结束位置 (对比取小数) let formData = new FormData() formData.append("file",file.slice(start, end)) //同步写法实现异步调用 let result = await new Promise((resolve, reject) => { // await 需要后面返回一个 promise 对象 this.http.post(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}&partNumber=${i+1}`,formData).subscribe((data:any)=>{ let msg = { "partNumber":data.partNumber || null, "eTag": data.eTag || null} resolve(msg) // 调用 promise 内置方法处理成功 }) }); this.PartNumberETag.push(result) this.uploadProgress = Number((i/allSlice).toFixed(2))*100 if (this.PartNumberETag.length === allSlice) { this.uploadProgress = 100 this.endUploading(planType)} }//for循环 } uploadover:any = false //上传完成之后提示 //完成分块上传 endUploading (planType) { let data = this.PartNumberETag let paramsData = {uploadId:this.uploadId} this.http.post(`/api/CompleteMultipartUpload/PlanPlatform/${this.objectName}`,data,{params:paramsData}).subscribe(data=>{ const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('上传成功!','确定',config); this.uploadProgress = 0; this.uploadisLoading = false this.PartNumberETag =[] //清空保存返回的信息 this.uploadover = true let level = sessionStorage.getItem("level") // console.log(level) let PlanLevel if(level == '0'){ PlanLevel = 1 } if(level == '1'){ PlanLevel = 2 } if(level == '2'){ PlanLevel = 4 } if(level == '3'){ PlanLevel = 8 } let uploadUrl if(planType == "非二维"){ uploadUrl = "/api/PlanComponents" }else{ uploadUrl = "/api/PlanComponents2D" } if(this.uploadover){//如果上次成功了才创建 this.http.post(uploadUrl,{ id: "", name: this.selectedPLanName, planType:Number(this.selectedPLanType), planMode: Number(this.defaultisshow), planLevel: PlanLevel, planCategory: Number(this.selectedPLanLevel), url: "", attachmentUrls: [`${this.objectName}`] },{params:{ companyId : this.data.companyId }}).subscribe(data=>{ this.dialogRef.close(data); }) }else{ console.log("上传出错!") } }) } //取消分块上传 cancel () { this.http.delete(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}`).subscribe(data=>{ this.uploadProgress = 0; this.uploadisLoading= false; (document.getElementById('uploadFile')).value = null this.PartNumberETag =[] //清空保存返回的信息 const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('取消上传成功!','确定',config); this.uploadover = false this.file = null }) } //导入word文件 fileInput(e){ this.file2 = e.target.files[0] } //点击下一步 selectedPLanType:any//所选预案类型 selectedPLanName:any//所选预案名称 selectedPLanLevel:any//所选预案级别 localup:boolean = false //本地上传 inputword:boolean = false //导入文档 onlineedit:boolean = false //在线编辑 website:boolean = false //网页地址 next(formdata){ //console.log(formdata.value.firstCtrlthree) //console.log(this.file) this.psw=false this.selectedPLanName = formdata.value.firstCtrlone this.selectedPLanType = formdata.value.firstCtrltwo this.selectedPLanLevel= formdata.value.firstCtrlthree if(formdata.value.firstCtrltwo=='16'){ //如果是卡片预案 this.localup = true this.inputword = true this.onlineedit = false this.website = false } if(formdata.value.firstCtrltwo=='1'){ //如果是2D预案 this.localup = true this.inputword = false this.onlineedit = true this.website = true } if(formdata.value.firstCtrltwo=='2' || formdata.value.firstCtrltwo=='4'){ this.localup = true this.inputword = false this.onlineedit = false this.website = true this.pswShow=true } if(this.selectedPLanType=='4'&&this.file!=undefined&&this.file.type!=null){ if(this.file.type=='image/png'||this.file.type=='image/jpeg'){ this.pswShow=true }else{this.pswShow=false} }else{this.pswShow=false} } setttt(){ this.pswShow=false this.psw=false } closediv(){ //console.log(this.file) if(this.file!=undefined){ this.cancel(); } this.dialogRef.close(); } // 提交创建 onSubmit(value){ let level = sessionStorage.getItem("level") // console.log(level) let PlanLevel if(level == '0'){ PlanLevel = 1 } if(level == '1'){ PlanLevel = 2 } if(level == '2'){ PlanLevel = 4 } if(level == '3'){ PlanLevel = 8 } if(this.selectedPLanType != "1"){//如果创建的不是二维预案 if(this.defaultisshow == '0' && this.file == null){ //如果是本地上传 const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('请先上传文件','确定',config); } if(this.defaultisshow == '0' && this.file){ //如果是本地上传并且有文件 //先上传成功 this.startUploading("非二维") //再创建预案 // this.http.post("/api/PlanComponents",{ // id: "", // name: this.selectedPLanName, // planType:Number(this.selectedPLanType), // planMode: Number(this.defaultisshow), // planLevel: PlanLevel, // url: "", // attachmentUrls: [`${this.objectName}`] // },{params:{ // companyId : this.data.companyId // }}).subscribe(data=>{ // this.dialogRef.close(data); // }) } if(this.defaultisshow == '1'){//如果是导入则很复杂 const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('暂不支持导入','确定',config); } if(this.defaultisshow == '3' && (this.webaddress == "" || this.webaddress == null)){ //如果是填写网址 const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('请先输入网址','确定',config); } if(this.defaultisshow == '3' && this.webaddress){ //如果是填写网址 // console.log(99999,this.selectedPLanType) var reg = new RegExp('(http|https):\/\/([\w.!@#$%^&*()_+-=])*\s*') if(reg.test(this.webaddress)){ let body = { id: "", name: this.selectedPLanName, planType:Number(this.selectedPLanType), planMode: Number(this.defaultisshow), planCategory: Number(this.selectedPLanLevel), planLevel: PlanLevel, url: this.webaddress, attachmentUrls: null } //console.log(body) this.http.post("/api/PlanComponents",body,{params:{ companyId : this.data.companyId }}).subscribe(data=>{ // console.log("创建成功") this.dialogRef.close(data); }) }else{ const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('请填写正确网址格式,需以http://或者https://开头的正确网址','确定',config); } } }else{ //如果创建的是二维预案 if(this.defaultisshow == '0' && this.file == null){ //如果是本地上传 const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('请先上传文件','确定',config); } if(this.defaultisshow == '0' && this.file){ this.startUploading("二维") // let body = { // id: "", // name: this.selectedPLanName, // planType:Number(this.selectedPLanType), // planMode: Number(this.defaultisshow), // planLevel: PlanLevel, // url: "", // attachmentUrls: [`${this.objectName}`] // } // this.http.post("/api/PlanComponents2D",body,{params:{ // companyId : this.data.companyId // }}).subscribe(data=>{ // // console.log("创建成功") // this.dialogRef.close(data); // }) } if(this.defaultisshow == '2'){ //如果是在线编辑------>跳转编制工具 let body = { id: "", name: this.selectedPLanName, planType:Number(this.selectedPLanType), planMode: Number(this.defaultisshow), planLevel: PlanLevel, planCategory:Number(this.selectedPLanLevel), url: "", attachmentUrls: null } this.http.post("/api/PlanComponents2D",body,{params:{ companyId : this.data.companyId }}).subscribe(data=>{ // console.log("创建成功") this.dialogRef.close(data); }) } if(this.defaultisshow == '3' && (this.webaddress == "" || this.webaddress == null)){ //如果是填写网址 const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('请先输入网址','确定',config); } if(this.defaultisshow == '3' && this.webaddress){ //如果是填写网址 var reg = new RegExp('(http|https):\/\/([\w.!@#$%^&*()_+-=])*\s*') if(reg.test(this.webaddress)){ let body = { id: "", name: this.selectedPLanName, planType:Number(this.selectedPLanType), planMode: Number(this.defaultisshow), planCategory: Number(this.selectedPLanLevel), planLevel: PlanLevel, url: this.webaddress, attachmentUrls: null } //console.log(body) this.http.post("/api/PlanComponents2D",body,{params:{ companyId : this.data.companyId }}).subscribe(data=>{ // console.log("创建成功") this.dialogRef.close(data); }) }else{ const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('请填写正确网址格式,需以http://或者https://开头的正确网址','确定',config); } } } } onSubmit2(value){ // console.log(this.webaddress) var reg = new RegExp('(http|https):\/\/([\w.!@#$%^&*()_+-=])*\s*') //console.log(reg.test(this.webaddress)) } } //下载文件弹出框 @Component({ selector: 'downloadfile', templateUrl: './downloadFile.html', styleUrls: ['./entry-plan-look.component.scss'] }) export class DownloadFile { constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data,public snackBar: MatSnackBar) {} fileUrls:any //当前预案附件地址 fileDatas:any = [] selectedFileIndex : any = 0 selectedFileData : any name2:any //如果真实姓名为空时 ngOnInit(): void { this.name2 = this.data.element.name this.fileUrls = this.data.fileUrls this.fileUrls.forEach(item=>{ this.http.get('/api/ObjectMetadata/PlanPlatform/'+item).subscribe((data:any)=>{ data.filePige = (data.fileLength / (1024*1024)).toFixed(2) this.fileDatas.push(data) this.selectedFileData = data }) }) } onNoClick(): void { this.dialogRef.close(); } confirm(){ this.dialogRef.close(this.selectedFileData); } //点击想要下载的文件 addurl(item,key){ // console.log(item,key) this.selectedFileIndex = key this.selectedFileData = item } } //审批结果弹出框 @Component({ selector: 'auditresult', templateUrl: './auditresult.html', styleUrls: ['./entry-plan-look.component.scss'] }) export class AuditResult { constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data,public snackBar: MatSnackBar) {} planName:any = this.data.element.name commitTime:any = this.data.element.committedTime commitOrganizationName:any = this.data.element.committerOrganizationName auditOrganizationName:any = this.data.element.auditorOrganizationName auditResult:any = this.data.element.auditStatus auditOpinion:any = this.data.element.auditOpinion ngOnInit(): void { } onNoClick(): void { this.dialogRef.close(); } } //改名弹出框 @Component({ selector: 'changename', templateUrl: './changename.html', styleUrls: ['./entry-plan-look.component.scss'] }) export class ChangeName { constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data,public snackBar: MatSnackBar) {} planName:any//预案名称 ngOnInit(): void { this.planName = this.data.element.name } onNoClick(): void { this.dialogRef.close(); } onSubmit(value){ let headers = new HttpHeaders({ 'Content-Type': 'text/json' }); let options = { headers }; let body = JSON.stringify(value.name); if(this.data.element.planType == 1){//如果是二维预案 this.http.put(`/api/PlanComponents2D/${this.data.element.id}`,body,options).subscribe(data=>{ this.dialogRef.close("success"); }) }else{ this.http.put(`/api/PlanComponents/${this.data.element.id}`,body,options).subscribe(data=>{ this.dialogRef.close("success"); }) } } } //全景图弹出框 @Component({ selector: 'PsViewer', templateUrl: './Photo-Sphere-Viewer.html', styleUrls: ['./entry-plan-look.component.scss'] }) export class PsViewer{ constructor(private router:Router,private http: HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data: any) {} ngOnInit(): void { // console.log(this.data) const viewer = new Viewer({ container: document.querySelector('#viewer'), panorama:'/api/Objects/PlanPlatform/'+ this.data, }); } }