|
|
|
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<any>(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<allSlice;i++) {
|
|
|
|
let start = i * shardSize //每次下载文件开始位置
|
|
|
|
let end = Math.min(fileSize, start + shardSize-1); //每次下载文件结束为止
|
|
|
|
|
|
|
|
let result = await new Promise ((result,reject)=>{
|
|
|
|
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<AddPlanone>,@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;
|
|
|
|
(<HTMLInputElement>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<DownloadFile>,@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<AuditResult>,@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<ChangeName>,@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<PsViewer>,@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,
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|