|
|
|
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);
|
|
|
|
}
|