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.
2315 lines
75 KiB
2315 lines
75 KiB
import { Component, OnInit, ViewChild, Inject } from "@angular/core"; |
|
import { |
|
HttpClient, |
|
HttpHeaders, |
|
HttpErrorResponse, |
|
} 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"; |
|
import Swiper from "swiper"; |
|
import { resolve } from "dns"; |
|
import { DomSanitizer } from "@angular/platform-browser"; |
|
import { EditPlanCategoryComponent } from "./edit-plan-category/edit-plan-category.component"; |
|
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, |
|
private sanitizer: DomSanitizer |
|
) {} |
|
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; |
|
IsNewData = true; //维护更新活新增 |
|
displayedColumns: string[] = [ |
|
"state", |
|
"planname", |
|
"addpeople", |
|
"addtime", |
|
"planCategory", |
|
"plantype", |
|
"auditstate", |
|
"weihustate", |
|
"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.planType == 16 || e.planType == 4 || e.planType == 8) { |
|
if (e.planType == 16 && e.attachmentUrls == null) { |
|
window.open( |
|
`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${e.name}&unitName=${this.unitdata.unitname}&planCategory=${e.planCategory}&planId=${e.id}&unitTypeId=${this.compantData.buildingTypes[0].id}&orName=${this.compantData.organizationName}&orId=${this.compantData.organizationId}&pattern=false` |
|
); |
|
} else { |
|
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 - 3, |
|
e.attachmentUrls[0].length |
|
) == "JPG" || |
|
e.attachmentUrls[0].substr( |
|
e.attachmentUrls[0].length - 3, |
|
e.attachmentUrls[0].length |
|
) == "png" || |
|
e.attachmentUrls[0].substr( |
|
e.attachmentUrls[0].length - 3, |
|
e.attachmentUrls[0].length |
|
) == "jpeg" || |
|
e.attachmentUrls[0].substr( |
|
e.attachmentUrls[0].length - 3, |
|
e.attachmentUrls[0].length |
|
) == "jpg" |
|
) { |
|
let data = e; |
|
const dialogRef = this.dialog.open(ImgDetails, { |
|
//调用open方法打开对话框并且携带参数过去 |
|
data: data.attachmentUrls, |
|
}); |
|
dialogRef.afterClosed().subscribe(); |
|
} else { |
|
let fetchUrl = e.attachmentUrls[0]; |
|
if (fetchUrl) { |
|
let suffix = fetchUrl |
|
.split(".") |
|
[fetchUrl.split(".").length - 1].toLowerCase(); |
|
if (suffix == "docx" || suffix == "doc") { |
|
let arr = fetchUrl.split("."); |
|
arr[arr.length - 1] = "pdf"; |
|
window.open(`/api/Objects/PlanPlatform/` + arr.join(".")); |
|
} else if (suffix == "pdf") { |
|
window.open(`/api/Objects/PlanPlatform/` + fetchUrl); |
|
} else { |
|
let config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
this.snackBar.open("该文件类型暂不支持在线查看", "确定", config); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if (e.planType == 1 && 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.planType == 2 && e.planMode == 3) { |
|
//如果是跳转网页 |
|
if (e.url.indexOf("app") == 0) { |
|
window.location.href = e.url; |
|
} else { |
|
sessionStorage.setItem("url", e.url); |
|
if ((e.url as string).includes("gis/threeDimensionalHome")) { |
|
//三维预案 |
|
window.open( |
|
`${e.url}?unitId=${this.companyId}&unitName=${this.unitdata.unitname}&editMode=false` |
|
); |
|
} else { |
|
window.open(`/planManagement/webLook`); |
|
} |
|
} |
|
} |
|
} |
|
//编辑预案 |
|
editPlan(e) { |
|
console.log(e); |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
if (e.openRange != "未公开" || e.auditStatus != 8) { |
|
let isTrue = confirm( |
|
"您确定编辑吗,若是公开预案会变成未公开状态,审核状态也会改变" |
|
); |
|
if (isTrue) { |
|
if (e.auditStatus == 8) { |
|
if (e.planType == 1) { |
|
//如果是在线编辑 |
|
let id = e.id; |
|
let body = {}; |
|
let resetAudit = true; |
|
let headers = new HttpHeaders({ |
|
"Content-Type": "text/json", |
|
}); |
|
let options = { |
|
headers, |
|
}; |
|
this.http |
|
.put( |
|
`/api/PlanComponents/${e.id}?resetAudit=${resetAudit}`, |
|
body, |
|
options |
|
) |
|
.subscribe((data) => { |
|
this.getAllPlanComponents(); |
|
// this.lookPlan(e) |
|
}); |
|
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}` |
|
); |
|
} else if (e.planType == 16) { |
|
if (e.attachmentUrls == null) { |
|
if (e.planMode == 4) { |
|
window.open( |
|
`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${e.name}&unitName=${this.unitdata.unitname}&planCategory=${e.planCategory}&planId=${e.id}&unitTypeId=${this.compantData.buildingTypes[0].id}&orName=${this.compantData.organizationName}&orId=${this.compantData.organizationId}&pattern=true&planMode=${e.planMode}` |
|
); |
|
} else { |
|
window.open( |
|
`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${e.name}&unitName=${this.unitdata.unitname}&planCategory=${e.planCategory}&planId=${e.id}&unitTypeId=${this.compantData.buildingTypes[0].id}&orName=${this.compantData.organizationName}&orId=${this.compantData.organizationId}&pattern=true&planMode=${e.planMode}` |
|
); |
|
} |
|
} else { |
|
let body = {}; |
|
let resetAudit = true; |
|
let headers = new HttpHeaders({ |
|
"Content-Type": "text/json", |
|
}); |
|
let options = { |
|
headers, |
|
}; |
|
this.http |
|
.put( |
|
`/api/PlanComponents/${e.id}?resetAudit=${resetAudit}`, |
|
body, |
|
options |
|
) |
|
.subscribe( |
|
(data) => { |
|
/* this.getAllPlanComponents() |
|
this.lookPlan(e) */ |
|
const dialogRef = this.dialog.open(editUpload, { |
|
width: "300px", |
|
height: "150px", |
|
data: { |
|
id: e.id, |
|
companyId: this.companyId, |
|
unitType: this.unitdata.unittype, |
|
unitName: this.unitdata.unitname, |
|
}, |
|
disableClose: true, |
|
}); |
|
dialogRef.afterClosed().subscribe((data) => { |
|
this.getAllPlanComponents(); |
|
}); |
|
} /* ,err => { |
|
this.snackBar.open(err,'确定',config); |
|
} */ |
|
); |
|
} |
|
} else if (e.planType == 2) { |
|
//三维预案 |
|
const dialogRef = this.dialog.open(ChangeUrl, { |
|
//改网址 |
|
data: { element: e }, |
|
}); |
|
dialogRef.afterClosed().subscribe((data) => { |
|
if (data) { |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
this.snackBar.open("修改成功!", "确定", config); |
|
this.getAllPlanComponents(); |
|
} |
|
}); |
|
} else { |
|
this.snackBar.open( |
|
"只有二维预案和文本预案可以编辑!", |
|
"确定", |
|
config |
|
); |
|
} |
|
} else { |
|
//let isTrue = confirm('编辑后审核状态会成为未审核状态,您确定要编辑吗') |
|
if (e.planType == 1) { |
|
//如果是在线编辑 |
|
let id = e.id; |
|
let body = {}; |
|
let resetAudit = true; |
|
let headers = new HttpHeaders({ |
|
"Content-Type": "text/json", |
|
}); |
|
let options = { |
|
headers, |
|
}; |
|
this.http |
|
.put( |
|
`/api/PlanComponents/${e.id}?resetAudit=${resetAudit}`, |
|
body, |
|
options |
|
) |
|
.subscribe( |
|
(data) => { |
|
this.getAllPlanComponents(); |
|
// this.lookPlan(e) |
|
} /* ,err => { |
|
this.snackBar.open(err,'确定',config); |
|
} */ |
|
); |
|
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}` |
|
); |
|
} else if (e.planType == 16) { |
|
if (e.attachmentUrls == null) { |
|
console.log(this.compantData); |
|
window.open( |
|
`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${e.name}&unitName=${this.unitdata.unitname}&planCategory=${e.planCategory}&planId=${e.id}&unitTypeId=${this.compantData.buildingTypes[0].id}&orName=${this.compantData.organizationName}&orId=${this.compantData.organizationId}&planMode=${e.planMode}` |
|
); |
|
} else { |
|
let body = {}; |
|
let resetAudit = true; |
|
let headers = new HttpHeaders({ |
|
"Content-Type": "text/json", |
|
}); |
|
let options = { |
|
headers, |
|
}; |
|
this.http |
|
.put( |
|
`/api/PlanComponents/${e.id}?resetAudit=${resetAudit}`, |
|
body, |
|
options |
|
) |
|
.subscribe( |
|
(data) => { |
|
const dialogRef = this.dialog.open(editUpload, { |
|
width: "300px", |
|
height: "150px", |
|
data: { |
|
id: e.id, |
|
companyId: this.companyId, |
|
unitType: this.unitdata.unittype, |
|
unitName: this.unitdata.unitname, |
|
}, |
|
disableClose: true, |
|
}); |
|
dialogRef.afterClosed().subscribe((data) => { |
|
this.getAllPlanComponents(); |
|
}); |
|
} /* ,err => { |
|
this.snackBar.open(err,'确定',config); |
|
} */ |
|
); |
|
} |
|
} else if (e.planType == 2) { |
|
//三维预案 |
|
|
|
const dialogRef = this.dialog.open(ChangeUrl, { |
|
data: { element: e }, |
|
}); |
|
dialogRef.afterClosed().subscribe((data) => { |
|
if (data) { |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
this.snackBar.open("修改成功!", "确定", config); |
|
this.getAllPlanComponents(); |
|
} |
|
}); |
|
} else { |
|
this.snackBar.open( |
|
"只有二维预案和文本预案可以编辑!", |
|
"确定", |
|
config |
|
); |
|
} |
|
} |
|
} |
|
} else { |
|
if (e.planType == 1) { |
|
//如果是在线编辑 |
|
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}` |
|
); |
|
} else if (e.planType == 16) { |
|
if (e.attachmentUrls == null) { |
|
if (e.planMode == 4) { |
|
window.open( |
|
`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${e.name}&unitName=${this.unitdata.unitname}&planCategory=${e.planCategory}&planId=${e.id}&unitTypeId=${this.compantData.buildingTypes[0].id}&orName=${this.compantData.organizationName}&orId=${this.compantData.organizationId}&pattern=true&planMode=${e.planMode}` |
|
); |
|
} else { |
|
window.open( |
|
`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${e.name}&unitName=${this.unitdata.unitname}&planCategory=${e.planCategory}&planId=${e.id}&unitTypeId=${this.compantData.buildingTypes[0].id}&orName=${this.compantData.organizationName}&orId=${this.compantData.organizationId}&pattern=true&planMode=${e.planMode}` |
|
); |
|
} |
|
} else { |
|
let body = {}; |
|
let resetAudit = true; |
|
let headers = new HttpHeaders({ |
|
"Content-Type": "text/json", |
|
}); |
|
let options = { |
|
headers, |
|
}; |
|
this.http |
|
.put( |
|
`/api/PlanComponents/${e.id}?resetAudit=${resetAudit}`, |
|
body, |
|
options |
|
) |
|
.subscribe((data) => { |
|
const dialogRef = this.dialog.open(editUpload, { |
|
width: "300px", |
|
height: "200px", |
|
data: { |
|
id: e.id, |
|
companyId: this.companyId, |
|
unitType: this.unitdata.unittype, |
|
unitName: this.unitdata.unitname, |
|
}, |
|
disableClose: true, |
|
}); |
|
dialogRef.afterClosed().subscribe((data) => { |
|
this.getAllPlanComponents(); |
|
}); |
|
}); |
|
} |
|
} else if (e.planType == 2) { |
|
//三维预案 |
|
const dialogRef = this.dialog.open(ChangeUrl, { |
|
//改网址 |
|
data: { element: e }, |
|
}); |
|
dialogRef.afterClosed().subscribe((data) => { |
|
if (data) { |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
this.snackBar.open("修改成功!", "确定", config); |
|
this.getAllPlanComponents(); |
|
} |
|
}); |
|
/* if (e.url.indexOf('app') == 0) { |
|
window.location.href = e.url |
|
} else { |
|
sessionStorage.setItem("url", e.url) |
|
if ((e.url as string).includes('gis/threeDimensionalHome')) { //三维预案 |
|
window.open(`${e.url}?unitId=${this.companyId}&unitName=${this.unitdata.unitname}&editMode=true`) |
|
} else { |
|
window.open(`/planManagement/webLook`) |
|
} |
|
} */ |
|
} else { |
|
this.snackBar.open("只有二维预案和文本预案可以编辑!", "确定", config); |
|
} |
|
/* else { |
|
if (e.planType == 1) { //如果是在线编辑 |
|
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}`); |
|
} |
|
else if (e.planType == 16) { |
|
if (e.attachmentUrls == null) { |
|
console.log(this.compantData) |
|
window.open(`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${e.name}&unitName=${this.unitdata.unitname}&planCategory=${e.planCategory}&planId=${e.id}&unitTypeId=${this.compantData.buildingTypes[0].id}&orName=${this.compantData.organizationName}&orId=${this.compantData.organizationId}`) |
|
} |
|
else { |
|
let body = {}; |
|
let resetAudit = true |
|
let headers = new HttpHeaders({ |
|
'Content-Type': 'text/json' |
|
}); |
|
let options = { |
|
headers |
|
}; |
|
this.http.put(`/api/PlanComponents/${e.id}?resetAudit=${resetAudit}`, body, options).subscribe(data => { |
|
this.getAllPlanComponents() |
|
this.lookPlan(e) |
|
}) |
|
} |
|
|
|
} |
|
else if (e.planType == 2) { //三维预案 |
|
const dialogRef = this.dialog.open(ChangeUrl, { |
|
data: { element: e } |
|
}); |
|
dialogRef.afterClosed().subscribe( |
|
data => { |
|
if (data) { |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = 'top'; |
|
config.duration = 3000 |
|
this.snackBar.open('修改成功!', '确定', config); |
|
this.getAllPlanComponents() |
|
|
|
} |
|
} |
|
); |
|
} else { |
|
|
|
this.snackBar.open('只有二维预案和文本预案可以编辑!', '确定', config); |
|
} |
|
|
|
} */ |
|
} |
|
} |
|
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(); |
|
} |
|
}); |
|
} |
|
|
|
//修改预案级别 |
|
editPlanCategory(data) { |
|
console.log(data); |
|
const dialogRef = this.dialog.open(EditPlanCategoryComponent, { |
|
data: data, |
|
}); |
|
dialogRef.afterClosed().subscribe((data) => { |
|
if (data) { |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
this.snackBar.open("修改成功!", "确定", config); |
|
this.getAllPlanComponents(); |
|
} |
|
}); |
|
} |
|
//获得所有预案组件 |
|
audit: boolean; |
|
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; |
|
console.log("预案列表", data.items); |
|
/* if(this.tabledataSource.isNewData){ |
|
this.tabledataSource.auditStatus==8?this.audit=true:false |
|
}else{ |
|
(this.tabledataSource.newVerifyState=='待终审'&&this.tabledataSource.newVerifyState=='审核中'&&this.tabledataSource.maintenanceVerifyState!='未提交审核')?this.audit=false:true |
|
} */ |
|
}); |
|
} |
|
//删除预案 |
|
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 || element.auditStatus == 32) { |
|
this.snackBar.open( |
|
"审核退回的预案需要修改后方可再次提交审核!", |
|
"确定", |
|
config |
|
); |
|
} |
|
if (element.planType == 1) { |
|
//如果提交审核的是二维预案 |
|
if ( |
|
element.auditStatus == 8 || |
|
(element.auditStatus == 2 && !element.isNewData) |
|
) { |
|
this.http |
|
.put(`/api/PlanComponents2D/${element.id}/Commit`, "") |
|
.subscribe((data) => { |
|
this.getAllPlanComponents(); |
|
}); |
|
} |
|
} else { |
|
this.http |
|
.put(`/api/PlanComponents/${element.id}/Commit`, "") |
|
.subscribe((data) => { |
|
this.getAllPlanComponents(); |
|
}); |
|
} |
|
} |
|
|
|
//撤销审核 |
|
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(); |
|
}); |
|
} |
|
} |
|
//审核结果 |
|
auditResult(element) { |
|
const dialogRef = this.dialog.open(AuditResult, { |
|
width: "395px", |
|
data: { element: element }, |
|
}); |
|
} |
|
|
|
//下载↓ |
|
selectDownloadFile: any; //选择下载的文件 |
|
download: any; //下载文件元数据 |
|
downloadisLoading: boolean = false; //进度条loading加载 |
|
downloadProgress: number = 0; //进度条进度 |
|
downloadFileName: any; |
|
|
|
uploadFileLonging: any; |
|
//读取下载文件信息 |
|
readFile(element) { |
|
this.uploadFileLonging = element; |
|
console.log(element); |
|
if ( |
|
element.planType == 16 && |
|
(element.planMode == 4 || element.planMode == 2) |
|
) { |
|
const dialogRef = this.dialog.open(wenbenUpload, { |
|
width: "180px", |
|
height: "200px", |
|
disableClose: true, |
|
data: { |
|
src: `/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${element.name}&unitName=${this.unitdata.unitname}&planCategory=${element.planCategory}&planId=${element.id}&unitTypeId=${this.compantData.buildingTypes[0].id}&orName=${this.compantData.organizationName}&orId=${this.compantData.organizationId}&pattern=false&xiazai=true`, |
|
}, |
|
}); |
|
//window.open(`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${element.name}&unitName=${this.unitdata.unitname}&planCategory=${element.planCategory}&planId=${element.id}&unitTypeId=${this.compantData.buildingTypes[0].id}&orName=${this.compantData.organizationName}&orId=${this.compantData.organizationId}&pattern=false&xiazai=true`) |
|
} else { |
|
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 |
|
console.log(file); |
|
if (file && fileSize <= shardSize) { |
|
//<=10MB时直接下载 |
|
this.downloadisLoading = true; |
|
// this.setFileLoading() |
|
this.http |
|
.get(`/api/Objects/PlanPlatform/${file.objectName}`, { |
|
responseType: "blob", |
|
}) |
|
.subscribe((data) => { |
|
console.log(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, |
|
unitType: this.unitdata.unittype, |
|
unitName: this.unitdata.unitname, |
|
}, |
|
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}&orName=${this.route.snapshot.queryParams.orName}&orId=${this.route.snapshot.queryParams.orId}` |
|
); |
|
} |
|
} |
|
}); |
|
} |
|
//上传word转在线编制 |
|
spinner = false; //圈圈是否存在 |
|
async upzhuanMb(element) { |
|
this.spinner = true; |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
let objectName; //预案文件名称 |
|
let formData = new FormData(); |
|
//模板导入接口传参 |
|
let type = |
|
this.unitdata.unittype == "高层建筑" |
|
? 1 |
|
: this.unitdata.unittype == "居民小区" |
|
? 2 |
|
: this.unitdata.unittype == "厂房" |
|
? 3 |
|
: this.unitdata.unittype == "商市场" || |
|
this.unitdata.unittype == "医院" || |
|
this.unitdata.unittype == "学校" || |
|
this.unitdata.unittype == "宾馆" || |
|
this.unitdata.unittype == "娱乐场所" || |
|
this.unitdata.unittype == "餐饮业" || |
|
this.unitdata.unittype == "影剧院" || |
|
this.unitdata.unittype == "展览建筑" || |
|
this.unitdata.unittype == "养老院" || |
|
this.unitdata.unittype == "会议中心" || |
|
this.unitdata.unittype == "古建筑" || |
|
this.unitdata.unittype == "多层" |
|
? 4 |
|
: this.unitdata.unittype == "储罐类" |
|
? "StorageTankFivePlan" |
|
: this.unitdata.unittype == "化工生产" |
|
? "ChemicalProductionFivePlan" |
|
: this.unitdata.unittype == "轨道交通" |
|
? "MetroFivePlan" |
|
: this.unitdata.unittype == "地下建筑" |
|
? "UndergroundBuildingFivePlan" |
|
: this.unitdata.unittype == "农村" |
|
? "CountrysideFivePlan" |
|
: ""; |
|
|
|
let blob = []; |
|
/* |
|
调用下载接口获取文件流,并赋值给blob |
|
*/ |
|
let fileRuquest = await new Promise((resolve, reject) => { |
|
this.http |
|
.get(`/api/ObjectMetadata/PlanPlatform/` + element.attachmentUrls[0]) |
|
.subscribe((obdata: any) => { |
|
objectName = obdata.objectName; |
|
this.http |
|
.get(`/api/Objects/PlanPlatform/${objectName}`, { |
|
responseType: "blob", |
|
}) |
|
.subscribe((blobdata) => { |
|
resolve(blobdata); |
|
}); |
|
}); |
|
}); |
|
blob.push(fileRuquest); //接收返回的blob类型数据 |
|
let file = new File(blob, objectName); //转化为file类型 |
|
formData.append("file", file); |
|
let pData; //接受返回的模板信息数据 |
|
/* |
|
调用模板导入接口,获取在线编制的json,并赋值给pData |
|
*/ |
|
let pRequest = await new Promise((resolve, rejest) => { |
|
this.http |
|
.post(`/api/OfficeExtract/ExtractWordPlan?type=${type}`, formData) |
|
.subscribe( |
|
(data: any) => { |
|
resolve(data); |
|
}, |
|
(err) => { |
|
this.spinner = false; |
|
this.snackBar.open( |
|
"解析失败,请确定好格式再重新上传!", |
|
"确定", |
|
config |
|
); |
|
} |
|
); |
|
}); |
|
pData = pRequest; |
|
/* 调用新建预案接口,新建一条新的预案,并跳转新建在线编制页面 */ |
|
let body = { |
|
name: element.name, |
|
planType: element.planType, |
|
planMode: 2, |
|
planLevel: element.planLevel, |
|
planCategory: element.planCategory, |
|
webTextData: JSON.stringify(pData), |
|
}; |
|
let planData; |
|
let newyuan = await new Promise((resolve, reject) => { |
|
this.http |
|
.post("/api/PlanComponents", body, { |
|
params: { |
|
companyId: this.route.snapshot.queryParams.unitId, |
|
}, |
|
}) |
|
.subscribe((plandata) => { |
|
resolve(plandata); |
|
}); |
|
}); |
|
planData = newyuan; |
|
window.open( |
|
`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.route.snapshot.queryParams.unitId}&planName=${planData.name}&unitName=${this.unitdata.unitname}&planCategory=${planData.planCategory}&planId=${planData.id}&&wordChange=true` |
|
); |
|
this.getAllPlanComponents(); |
|
this.spinner = false; |
|
} |
|
} |
|
|
|
//新建预案弹出框 |
|
@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 = false; //上传input框是否显示 |
|
isweb: boolean = false; //web输入框是否显示 |
|
isinput: boolean = false; //编制按钮是否显示 |
|
defaultisshow = "0"; //默认显示上传input框 |
|
pswShow = false; //是否为全景图选项默认不显示 |
|
psw; //是否为全景图 |
|
cadPlan; //是否为卡片预案 |
|
//选择radio |
|
selectradio(e) { |
|
if (e.value == "1") { |
|
//如果点击本地上传 |
|
this.isup = true; |
|
this.isinput = false; |
|
this.isweb = false; |
|
this.webaddress = ""; |
|
} |
|
if (e.value == "4") { |
|
//如果点击导入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; |
|
} |
|
} |
|
|
|
//上传文件 |
|
startUploading(planType) { |
|
let file = this.file || null; //获取上传的文件 |
|
let fileSize = file.size || null; //上传文件的总大小 |
|
let shardSize = 5 * 1024 * 1024; //5MB一个分片 |
|
|
|
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; //网页地址 |
|
inputNew: boolean = false; //自定义编辑 |
|
next(formdata) { |
|
this.psw = false; |
|
this.selectedPLanName = formdata.value.firstCtrlone; |
|
this.selectedPLanType = formdata.value.firstCtrltwo; |
|
this.selectedPLanLevel = formdata.value.firstCtrlthree; |
|
if ( |
|
formdata.value.firstCtrltwo == "16" && |
|
formdata.value.firstCtrlthree == "4" |
|
) { |
|
//如果是文本预案 |
|
this.localup = true; |
|
this.inputword = false; |
|
this.onlineedit = false; |
|
this.website = false; |
|
} |
|
if (formdata.value.firstCtrltwo == "16") { |
|
//&& formdata.value.firstCtrlthree != '4' |
|
this.localup = true; |
|
this.inputword = true; |
|
this.onlineedit = false; |
|
this.website = false; |
|
this.inputNew = true; |
|
} |
|
if ( |
|
formdata.value.firstCtrltwo == "16" && |
|
formdata.value.firstCtrlthree != "4" |
|
) { |
|
//&& formdata.value.firstCtrlthree != '4' |
|
this.localup = true; |
|
this.inputword = true; |
|
this.inputNew = true; |
|
this.onlineedit = false; |
|
this.website = false; |
|
} |
|
if (formdata.value.firstCtrltwo == "1") { |
|
//如果是2D预案 |
|
this.localup = false; |
|
this.inputword = false; |
|
this.onlineedit = true; |
|
this.website = true; |
|
this.inputNew = false; |
|
} |
|
if ( |
|
formdata.value.firstCtrltwo == "2" || |
|
formdata.value.firstCtrltwo == "4" |
|
) { |
|
this.localup = true; |
|
this.inputword = false; |
|
this.inputNew = 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; |
|
this.website = false; |
|
} 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(); |
|
} |
|
//文本预案在线编制跳转 |
|
newleftTabledata; |
|
planData; |
|
createWord(haveNew) { |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
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; |
|
} |
|
this.http.get("/api/PlanTemplate").subscribe((data: any) => { |
|
this.newleftTabledata = data; |
|
this.newleftTabledata.forEach((value, index, array) => { |
|
value.data = JSON.parse(value.data); |
|
}); |
|
this.http.get("/api/BuildingTypes").subscribe((buildData: any) => { |
|
this.newleftTabledata.forEach((value, index, array) => { |
|
buildData.forEach((element, i, buildArray) => { |
|
if (value.buildingTypeId == element.id) { |
|
array[index].unitname = buildArray[i].name; |
|
array[index].facilityCategoryId = |
|
buildArray[i].facilityCategoryId; |
|
} |
|
}); |
|
}); |
|
let open = this.newleftTabledata.filter((value, index, array) => { |
|
return ( |
|
value.unitname == this.data.unitType && |
|
value.planCategory == this.selectedPLanLevel |
|
); |
|
}); |
|
if (haveNew == true) { |
|
this.http |
|
.post( |
|
"/api/PlanComponents", |
|
{ |
|
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((plandata) => { |
|
this.planData = plandata; |
|
this.dialogRef.close(plandata); |
|
//console.log(plandata) |
|
window.open( |
|
`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.data.companyId}&planName=${this.planData.name}&unitName=${this.data.unitName}&planCategory=${this.selectedPLanLevel}&planId=${this.planData.id}&haveNew=${haveNew}&planMode=${this.defaultisshow}` |
|
); |
|
}); |
|
} else { |
|
if (open.length > 0) { |
|
this.http |
|
.post( |
|
"/api/PlanComponents", |
|
{ |
|
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((plandata) => { |
|
this.planData = plandata; |
|
this.dialogRef.close(plandata); |
|
//console.log(plandata) |
|
window.open( |
|
`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.data.companyId}&planName=${this.planData.name}&unitName=${this.data.unitName}&planCategory=${this.selectedPLanLevel}&planId=${this.planData.id}&haveNew=${haveNew}` |
|
); |
|
}); |
|
} else { |
|
this.snackBar.open("请先创建模板!", "确定", config); |
|
} |
|
} |
|
}); |
|
}); |
|
//window.open('') |
|
} |
|
|
|
// 提交创建 |
|
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 == "1" && this.file == null) { |
|
//如果是本地上传 |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
this.snackBar.open("请先上传文件", "确定", config); |
|
} |
|
if (this.defaultisshow == "1" && 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 == "2") { |
|
//如果是导入则很复杂 |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
//this.snackBar.open('暂不支持导入','确定',config); |
|
this.createWord(false); |
|
} |
|
if (this.defaultisshow == "4") { |
|
this.createWord(true); |
|
} |
|
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|app1|app2)://([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) => { |
|
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 == "1" && this.file == null) { |
|
//如果是本地上传 |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
this.snackBar.open("请先上传文件", "确定", config); |
|
} |
|
if (this.defaultisshow == "1" && 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 = { |
|
name: value.name, |
|
}; |
|
let body2d = JSON.stringify(value.name); |
|
if (this.data.element.planType == 1) { |
|
//如果是二维预案 |
|
this.http |
|
.put(`/api/PlanComponents2D/${this.data.element.id}`, body2d, 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, |
|
}); |
|
} |
|
} |
|
|
|
//普通图片弹窗 |
|
@Component({ |
|
selector: "imgdetails", |
|
templateUrl: "./previewImg.html", |
|
styleUrls: ["./entry-plan-look.component.scss"], |
|
}) |
|
export class ImgDetails { |
|
constructor( |
|
private http: HttpClient, |
|
public dialog: MatDialog, |
|
public dialogRef: MatDialogRef<ImgDetails>, |
|
@Inject(MAT_DIALOG_DATA) public data |
|
) {} |
|
testSwiper: Swiper; |
|
|
|
ngOnInit(): void { |
|
//console.log(this.data) |
|
this.allImages = []; |
|
this.data.forEach((element) => { |
|
element = `/api/Objects/PlanPlatform/${element}?x-oss-process=image/auto-orient,1`; |
|
this.allImages.push(element); |
|
}); |
|
//this.allImages.push(`${this.data.attachmentUrls[0]}?x-oss-process=image/auto-orient,1`) |
|
} |
|
|
|
ngAfterViewInit() { |
|
this.testSwiper = new Swiper(".swiper-container", { |
|
lazy: true, |
|
direction: "horizontal", |
|
loop: false, |
|
|
|
// 如果需要前进后退按钮 |
|
navigation: { |
|
nextEl: ".swiper-button-next", |
|
prevEl: ".swiper-button-prev", |
|
}, |
|
}); |
|
} |
|
|
|
allImages: any; //展示所有的图片 |
|
rotationAngle: number = 0; //旋转角度 |
|
|
|
//旋转图片 |
|
rotate() { |
|
this.rotationAngle = this.rotationAngle + 90; |
|
if (this.rotationAngle === 360) { |
|
this.rotationAngle = 0; |
|
} |
|
} |
|
} |
|
|
|
//修改三维预案地址 |
|
@Component({ |
|
selector: "changename", |
|
templateUrl: "./changeurl.html", |
|
styleUrls: ["./entry-plan-look.component.scss"], |
|
}) |
|
export class ChangeUrl { |
|
constructor( |
|
private http: HttpClient, |
|
public dialogRef: MatDialogRef<ChangeUrl>, |
|
@Inject(MAT_DIALOG_DATA) public data, |
|
public snackBar: MatSnackBar |
|
) {} |
|
planUrl: any; //预案路径 |
|
updata; //修改后的data |
|
ngOnInit(): void { |
|
this.planUrl = this.data.element.url; |
|
} |
|
onNoClick(): void { |
|
this.dialogRef.close(); |
|
} |
|
onSubmit(value) { |
|
console.log(value); |
|
let headers = new HttpHeaders({ |
|
"Content-Type": "text/json", |
|
}); |
|
let options = { |
|
headers, |
|
}; |
|
let body = { |
|
url: value.name, |
|
auditStatus: 8, |
|
}; |
|
this.http |
|
.put(`/api/PlanComponents/${this.data.element.id}`, body, options) |
|
.subscribe((data) => { |
|
console.log(data); |
|
this.updata = data; |
|
this.dialogRef.close("success"); |
|
sessionStorage.setItem("url", this.updata.url); |
|
if ((this.updata.url as string).includes("gis/threeDimensionalHome")) { |
|
//三维预案 |
|
window.open( |
|
`${this.updata.url}?unitId=${this.updata.companyId}&unitName=${this.updata.name}&editMode=true` |
|
); |
|
} else { |
|
window.open(`/planManagement/webLook`); |
|
} |
|
}); |
|
} |
|
} |
|
|
|
//编辑上传文件 |
|
@Component({ |
|
selector: "editUpload", |
|
templateUrl: "./upLoad.html", |
|
styleUrls: ["./entry-plan-look.component.scss"], |
|
}) |
|
export class editUpload { |
|
constructor( |
|
private http: HttpClient, |
|
public dialogRef: MatDialogRef<editUpload>, |
|
@Inject(MAT_DIALOG_DATA) public data, |
|
public snackBar: MatSnackBar |
|
) {} |
|
planName: any; //预案名称 |
|
ngOnInit(): void { |
|
//console.log(this.data) |
|
} |
|
onNoClick(): void { |
|
this.dialogRef.close(); |
|
} |
|
//上传文件↓ |
|
file: any; //上传的文件 |
|
fileName: any; //上传文件name |
|
uploadisLoading: boolean = false; //进度条loading加载 |
|
uploadProgress: number = 0; //进度条进度 |
|
objectName: any; //上传对象名 |
|
uploadId: any; //上传分块上传事件编号 |
|
lastyuanData; //之前的预案数据 |
|
//上传 |
|
upload() { |
|
document.getElementById("up").click(); |
|
} |
|
//上传文件input |
|
filechange(e) { |
|
this.file = e.target.files[0] || null; //上传的文件 |
|
} |
|
//上传文件 |
|
startUploading() { |
|
console.log(this.file); |
|
let file = this.file || null; //获取上传的文件 |
|
let fileSize = file.size || null; //上传文件的总大小 |
|
let shardSize = 5 * 1024 * 1024; //5MB一个分片 |
|
if (this.file != undefined) { |
|
if (file && fileSize <= shardSize) { |
|
//上传文件<=5MB时 |
|
let formData = new FormData(); |
|
formData.append("file", file); |
|
this.http |
|
.post(`/api/Objects/PlanPlatform/${this.data.companyId}/2D`, formData) |
|
.subscribe((data: any) => { |
|
this.objectName = data.objectName; |
|
let headers = new HttpHeaders({ |
|
"Content-Type": "text/json", |
|
}); |
|
let options = { |
|
headers, |
|
}; |
|
this.uploadover = true; |
|
let level = sessionStorage.getItem("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 = "/api/PlanComponents"; |
|
this.http |
|
.get(`/api/PlanComponents/${this.data.id}`) |
|
.subscribe((yuandata) => { |
|
console.log(yuandata); |
|
this.lastyuanData = yuandata; |
|
this.lastyuanData.attachmentUrls[0] = this.objectName; |
|
this.http |
|
.put( |
|
`/api/PlanComponents/${this.data.id}`, |
|
this.lastyuanData, |
|
options |
|
) |
|
.subscribe((data) => { |
|
this.dialogRef.close(data); |
|
}); |
|
}); |
|
}); |
|
} else if (file && fileSize > shardSize) { |
|
//上传文件>5MB时,分块上传 |
|
let data = { filename: file.name }; |
|
this.http |
|
.post( |
|
`/api/NewMultipartUpload/PlanPlatform/${this.data.companyId}/2D`, |
|
{}, |
|
{ params: data } |
|
) |
|
.subscribe((data: any) => { |
|
//初始化分段上传 |
|
this.objectName = data.objectName; |
|
this.uploadId = data.uploadId; |
|
this.uploadisLoading = true; |
|
this.subsectionUploading(); |
|
}); |
|
} |
|
} else { |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = "top"; |
|
config.duration = 3000; |
|
this.snackBar.open("请选择文件!", "确定", config); |
|
} |
|
} |
|
|
|
PartNumberETag: any = []; //每次返回需要保存的信息 |
|
//开始分段上传 |
|
async subsectionUploading() { |
|
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(); |
|
} |
|
} //for循环 |
|
} |
|
uploadover: any = false; //上传完成之后提示 |
|
//完成分块上传 |
|
endUploading() { |
|
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"); |
|
let headers = new HttpHeaders({ |
|
"Content-Type": "text/json", |
|
}); |
|
let options = { |
|
headers, |
|
}; |
|
// 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 = "/api/PlanComponents"; |
|
|
|
if (this.uploadover) { |
|
//如果上次成功了才创建 |
|
this.http |
|
.get(`/api/PlanComponents/${this.data.id}`) |
|
.subscribe((yuandata) => { |
|
console.log(yuandata); |
|
this.lastyuanData = yuandata; |
|
this.lastyuanData.attachmentUrls[0] = this.objectName; |
|
this.http |
|
.put( |
|
`/api/PlanComponents/${this.data.id}`, |
|
this.lastyuanData, |
|
options |
|
) |
|
.subscribe((data) => { |
|
this.dialogRef.close(data); |
|
}); |
|
}); |
|
} else { |
|
console.log("上传出错!"); |
|
} |
|
}); |
|
} |
|
} |
|
//在线编制文本预案下载 |
|
@Component({ |
|
selector: "wenbenUpload", |
|
templateUrl: "./upNew.html", |
|
styleUrls: ["./entry-plan-look.component.scss"], |
|
}) |
|
export class wenbenUpload { |
|
constructor( |
|
private http: HttpClient, |
|
public dialogRef: MatDialogRef<wenbenUpload>, |
|
@Inject(MAT_DIALOG_DATA) public data, |
|
public snackBar: MatSnackBar, |
|
private sanitizer: DomSanitizer |
|
) {} |
|
ngOnInit(): void { |
|
console.log(this.data); |
|
window.setTimeout(() => { |
|
this.dialogRef.close(); |
|
}, 45000); |
|
} |
|
src = this.sanitizer.bypassSecurityTrustResourceUrl(this.data.src); |
|
}
|
|
|