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

1109 lines
37 KiB

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