From 6736d776a89a5e028226469edbc361babe5ebaa4 Mon Sep 17 00:00:00 2001 From: SHAOJIAHAO <55341701@qq.com> Date: Thu, 15 Jul 2021 09:37:06 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=E5=BC=83=E7=94=A8?= =?UTF-8?q?=E6=AF=95=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fire-force/fire-force.component.ts | 24 +- .../linkage-forces.component.ts | 24 +- .../external-links-plan.component.ts | 43 +- .../key-unit/basicinfo/basicinfo.component.ts | 4 - .../fireforce-audit.component.ts | 31 +- .../linkageforces-audit.component.ts | 31 +- .../plan-record/plan-record.component.ts | 324 ++++---- .../wait-examineer.component.ts | 62 +- .../entry-plan-look.component.html | 2 +- .../entry-plan-look.component.ts | 136 ++-- .../meet-plan/meet-plan.component.ts | 698 +++++++++--------- .../onetwo-entry-plan.component.ts | 673 ++++++++--------- .../open-plan/open-plan.component.ts | 294 ++++---- .../pass-plan/pass-plan.component.ts | 464 ++++++------ .../type-plan/type-plan.component.ts | 659 ++++++++--------- .../all-plan/all-plan.component.ts | 122 ++- .../plan-analysis-by-synthesis.component.ts | 46 +- src/app/tabbar/tabbar.component.html | 39 +- .../collection-tools-plan/addPlaneFigure.html | 4 +- src/index.html | 13 +- 20 files changed, 1706 insertions(+), 1987 deletions(-) diff --git a/src/app/data-collection/fire-force/fire-force.component.ts b/src/app/data-collection/fire-force/fire-force.component.ts index ca221a7..bf57296 100644 --- a/src/app/data-collection/fire-force/fire-force.component.ts +++ b/src/app/data-collection/fire-force/fire-force.component.ts @@ -1143,25 +1143,13 @@ export class FireForceComponent implements OnInit { } if(suffix == 'docx' || suffix == 'doc' || suffix == 'pdf'){ let fetchUrl = item.objectName - let json={ - doc: { - docId: new Date(), - title: item.fileName, - fetchUrl: `http://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl - }, - user: { - uid: "test", - nickName: "test", - avatar: "", - privilege: [ - 'FILE_READ','FILE_DOWNLOAD', 'FILE_PRINT' - ], - }, + 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) } - var stringjson=JSON.stringify(json) - var wordArray = CryptoJS.enc.Utf8.parse(stringjson); - var base64 = CryptoJS.enc.Base64.stringify(wordArray); - window.open(`http://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) } if(suffix == 'mp4'){ const dialogRef = this.dialog.open(ViewDetails, {//调用open方法打开对话框并且携带参数过去 diff --git a/src/app/data-collection/linkage-forces/linkage-forces.component.ts b/src/app/data-collection/linkage-forces/linkage-forces.component.ts index dab0e22..2d812cb 100644 --- a/src/app/data-collection/linkage-forces/linkage-forces.component.ts +++ b/src/app/data-collection/linkage-forces/linkage-forces.component.ts @@ -867,25 +867,13 @@ export class LinkageForcesComponent implements OnInit { } if(suffix == 'docx' || suffix == 'doc' || suffix == 'pdf'){ let fetchUrl = item.objectName - let json={ - doc: { - docId: new Date(), - title: item.fileName, - fetchUrl: `http://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl - }, - user: { - uid: "test", - nickName: "test", - avatar: "", - privilege: [ - 'FILE_READ','FILE_DOWNLOAD', 'FILE_PRINT' - ], - }, + 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) } - var stringjson=JSON.stringify(json) - var wordArray = CryptoJS.enc.Utf8.parse(stringjson); - var base64 = CryptoJS.enc.Base64.stringify(wordArray); - window.open(`http://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) } if(suffix == 'mp4'){ const dialogRef = this.dialog.open(ViewDetails2, {//调用open方法打开对话框并且携带参数过去 diff --git a/src/app/external-links-plan/external-links-plan.component.ts b/src/app/external-links-plan/external-links-plan.component.ts index b604c41..c3f65b8 100644 --- a/src/app/external-links-plan/external-links-plan.component.ts +++ b/src/app/external-links-plan/external-links-plan.component.ts @@ -73,38 +73,17 @@ export class ExternalLinksPlanComponent implements OnInit { iframeSrc//毕生服务器链接 src//文件存储地址 lookWord() { - let docIdWordArray = CryptoJS.enc.Utf8.parse(`PlanPlatform/` + this.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) - let filename: string - this.http.get(`/api/ObjectMetadata/PlanPlatform/${this.fetchUrl}`).subscribe((data: any) => { - filename = data.fileName - let json = { - doc: { - docId: docId, - title: filename, - //title: filename, - fetchUrl: `http://172.18.0.1:8000/api/Objects/PlanPlatform/` + this.fetchUrl - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - '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); - this.src = `http://10.81.73.39:18080/apps/editor/openPreview?data=${base64}` - this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); - this.showType = 0 - }) + this.showType = 0 + let src + let suffix = this.fetchUrl.split('.')[this.fetchUrl.split('.').length - 1].toLowerCase() + if (suffix == 'docx' || suffix == 'doc') { + let arr = this.fetchUrl.split('.') + arr[arr.length - 1] = 'pdf' + src = `/api/Objects/PlanPlatform/` + arr.join('.') + }else if (suffix == 'pdf') { + src = `/api/Objects/PlanPlatform/` + this.fetchUrl + } + this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(src); } companyData//当前公司信息 diff --git a/src/app/key-unit/basicinfo/basicinfo.component.ts b/src/app/key-unit/basicinfo/basicinfo.component.ts index 93f7410..fdb4a5a 100644 --- a/src/app/key-unit/basicinfo/basicinfo.component.ts +++ b/src/app/key-unit/basicinfo/basicinfo.component.ts @@ -1048,10 +1048,6 @@ export class BasicinfoComponent implements OnInit { //提交建筑信息 onSubmitBuildingInfo(value, item, key, invalid) { - // console.log(1,item) - // console.log(2,invalid) - // console.log(3,value) - // console.log(4,this.allunittype) if (invalid) { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; diff --git a/src/app/plan-audit/fireforce-audit/fireforce-audit.component.ts b/src/app/plan-audit/fireforce-audit/fireforce-audit.component.ts index d75ec80..e38e736 100644 --- a/src/app/plan-audit/fireforce-audit/fireforce-audit.component.ts +++ b/src/app/plan-audit/fireforce-audit/fireforce-audit.component.ts @@ -161,32 +161,13 @@ export class FireforceAuditComponent implements OnInit { } if(suffix == 'docx' || suffix == 'doc' || suffix == 'pdf'){ let fetchUrl = item.objectName - 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) - let json={ - doc: { - docId: docId, - title: item.fileName, - fetchUrl: `http://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - 'FILE_READ','FILE_DOWNLOAD', 'FILE_PRINT' - ], - }, + 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) } - var stringjson=JSON.stringify(json) - var wordArray = CryptoJS.enc.Utf8.parse(stringjson); - var base64 = CryptoJS.enc.Base64.stringify(wordArray); - window.open(`http://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) } if(suffix == 'mp4'){ const dialogRef = this.dialog.open(ViewDetailsComponent, {//调用open方法打开对话框并且携带参数过去 diff --git a/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.ts b/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.ts index ff71078..8fbedf8 100644 --- a/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.ts +++ b/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.ts @@ -171,32 +171,13 @@ export class LinkageforcesAuditComponent implements OnInit { } if(suffix == 'docx' || suffix == 'doc' || suffix == 'pdf'){ let fetchUrl = item.objectName - 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) - let json={ - doc: { - docId: docId, - title: item.fileName, - fetchUrl: `http://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - 'FILE_READ','FILE_DOWNLOAD', 'FILE_PRINT' - ], - }, + 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) } - var stringjson=JSON.stringify(json) - var wordArray = CryptoJS.enc.Utf8.parse(stringjson); - var base64 = CryptoJS.enc.Base64.stringify(wordArray); - window.open(`http://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) } if(suffix == 'mp4'){ const dialogRef = this.dialog.open(ViewDetailsComponent, {//调用open方法打开对话框并且携带参数过去 diff --git a/src/app/plan-audit/plan-record/plan-record.component.ts b/src/app/plan-audit/plan-record/plan-record.component.ts index 59961f2..9e2024d 100644 --- a/src/app/plan-audit/plan-record/plan-record.component.ts +++ b/src/app/plan-audit/plan-record/plan-record.component.ts @@ -6,10 +6,10 @@ * @LastEditors: sueRimn * @LastEditTime: 2021-04-22 10:47:06 */ -import { Component, OnInit,Inject } from '@angular/core'; +import { Component, OnInit, Inject } from '@angular/core'; import { FormControl } from '@angular/forms'; import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; -import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog'; +import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { HttpClient } from '@angular/common/http' import { DomSanitizer } from '@angular/platform-browser'; import { Viewer } from 'photo-sphere-viewer'; @@ -22,69 +22,69 @@ declare var CryptoJS }) export class PlanRecordComponent implements OnInit { - constructor(private http:HttpClient,public snackBar: MatSnackBar,private sanitizer: DomSanitizer,public dialog: MatDialog) { } + constructor(private http: HttpClient, public snackBar: MatSnackBar, private sanitizer: DomSanitizer, public dialog: MatDialog) { } pcshow ngOnInit(): void { - if(window.matchMedia("(max-width: 1300px)").matches){ - this.pcshow=false - }else{ - this.pcshow=true + if (window.matchMedia("(max-width: 1300px)").matches) { + this.pcshow = false + } else { + this.pcshow = true } let level = sessionStorage.getItem("level"); - if(level == "0"){//如果是总队 + if (level == "0") {//如果是总队 this.preparelevels = [ - {name:"总队",value:"0"}, - {name:"支队",value:"1"}, - {name:"大队",value:"2"}, - {name:"中队",value:"3"} + { name: "总队", value: "0" }, + { name: "支队", value: "1" }, + { name: "大队", value: "2" }, + { name: "中队", value: "3" } ] - + } - if(level == "1"){//如果是支队 + if (level == "1") {//如果是支队 this.preparelevels = [ - {name:"支队",value:"1"}, - {name:"大队",value:"2"}, - {name:"中队",value:"3"} + { name: "支队", value: "1" }, + { name: "大队", value: "2" }, + { name: "中队", value: "3" } ] - + } - if(level == "2"){//如果是大队 + if (level == "2") {//如果是大队 this.preparelevels = [ - {name:"大队",value:"2"}, - {name:"中队",value:"3"} + { name: "大队", value: "2" }, + { name: "中队", value: "3" } ] - + } - if(level == "3"){//如果是中队 + if (level == "3") {//如果是中队 this.preparelevels = [ - {name:"中队",value:"3"} + { name: "中队", value: "3" } ] - + } - this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src); + this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); this.getAlltabledate() } - wordShow=true + wordShow = true iframeSrc - src='' + src = '' selected = new FormControl(0); //选项卡 实例 - preparelevels:any - level=''//类型 - verifyState=''//审核状态 + preparelevels: any + level = ''//类型 + verifyState = ''//审核状态 projectlevel//组织机构 PlanLevel//编制级别 addtime//时间 endtime//结束时间 count//一共多少条 tableDate - showPvt=false//全景图是否显示 - shenheTable=[]//选中要审核的对象 + showPvt = false//全景图是否显示 + shenheTable = []//选中要审核的对象 chuorzhong//判断初审还是终审 radioid//选中的id - showtype=-1//0:word,1:全景图,2:二维三维,3:重点单位 - compantData={name:'',buildingTypes:[],address:''} + showtype = -1//0:word,1:全景图,2:二维三维,3:重点单位 + compantData = { name: '', buildingTypes: [], address: '' } organizationName planData id @@ -94,179 +94,157 @@ export class PlanRecordComponent implements OnInit { companyName //获取表格数据 - getAlltabledate(){ - - let paramsdata:any = { - Operation:this.level||[], - ContentType:Number(this.projectlevel)||[], - Level:this.PlanLevel||[], - verifyState:this.verifyState||[1,2,4,5], - QueryStartTime:this.addtime||'', - QueryEndTime:this.endtime||'' + getAlltabledate() { + + let paramsdata: any = { + Operation: this.level || [], + ContentType: Number(this.projectlevel) || [], + Level: this.PlanLevel || [], + verifyState: this.verifyState || [1, 2, 4, 5], + QueryStartTime: this.addtime || '', + QueryEndTime: this.endtime || '' } - this.http.get("/api/ContentVerifies",{params:paramsdata}).subscribe((data:any)=>{ + this.http.get("/api/ContentVerifies", { params: paramsdata }).subscribe((data: any) => { //console.log(data) - this.tableDate=data.items - this.count=data.totalCount + this.tableDate = data.items + this.count = data.totalCount }) } //提交查询 - onSubmit(value){ + onSubmit(value) { //console.log(value) this.getAlltabledate() } //刷新 - record(){ - this.verifyState='' - this.level='' - this.projectlevel='' - this.addtime='' - this.endtime='' + record() { + this.verifyState = '' + this.level = '' + this.projectlevel = '' + this.addtime = '' + this.endtime = '' let level = sessionStorage.getItem("level"); - this.PlanLevel='' + this.PlanLevel = '' this.getAlltabledate() } //表格点击事件 viewer//全景图对象 - waterData:any//需要传递给子组件的水源信息 - LinkageForceDetailInfo:any//需要传递给子组件的联动力量信息 - fireForceDetailInfo:any//需要传递给子组件的消防力量信息 - postlevel:any - tableClick(e,item){ + waterData: any//需要传递给子组件的水源信息 + LinkageForceDetailInfo: any//需要传递给子组件的联动力量信息 + fireForceDetailInfo: any//需要传递给子组件的消防力量信息 + postlevel: any + tableClick(e, item) { this.showtype = -1 //e.target.parentElement.bgColor='#2196F3' // console.log(item) - this.organizationName='' - this.itemid=item.itemId - this.id=item.id - this.fetchUrl='' - this.viewer={} - if(item.contentType == 11){ - window.setTimeout(()=>{ + this.organizationName = '' + this.itemid = item.itemId + this.id = item.id + this.fetchUrl = '' + this.viewer = {} + if (item.contentType == 11) { + window.setTimeout(() => { this.showtype = 3 - sessionStorage.setItem('companyId',item.itemId) - },0) - }else if(item.contentType == 12){ + sessionStorage.setItem('companyId', item.itemId) + }, 0) + } else if (item.contentType == 12) { //水源 - this.http.get(`/api/WaterSources/${item.itemId}`).subscribe((data)=>{ + this.http.get(`/api/WaterSources/${item.itemId}`).subscribe((data) => { this.waterData = data this.showtype = 12 }) - }else if(item.contentType == 13){ + } else if (item.contentType == 13) { //消防力量 - this.http.get(`/api/CustomFireForce/${item.itemId}`).subscribe((data:any)=>{ - if(data.forceType != 0){//如果是其他消防力量 + this.http.get(`/api/CustomFireForce/${item.itemId}`).subscribe((data: any) => { + if (data.forceType != 0) {//如果是其他消防力量 this.postlevel = 4 - }else{ + } else { this.postlevel = data.level } // console.log('xxx',data) - data.fireForceDetailInfo.location ? null : data.fireForceDetailInfo.location={x:null,y:null} + data.fireForceDetailInfo.location ? null : data.fireForceDetailInfo.location = { x: null, y: null } this.fireForceDetailInfo = data.fireForceDetailInfo this.showtype = 13 }) - }else if(item.contentType == 14){ + } else if (item.contentType == 14) { //联动力量 - this.http.get(`/api/LinkageForces/${item.itemId}`).subscribe((data:any)=>{ + this.http.get(`/api/LinkageForces/${item.itemId}`).subscribe((data: any) => { - data.location ? null : data.location={x:null,y:null} + data.location ? null : data.location = { x: null, y: null } this.LinkageForceDetailInfo = data this.showtype = 14 }) - }else{ - this.http.get(`/api/PlanComponents/${item.itemId}`).subscribe((data:any)=>{ - this.companyId=data.companyId - this.companyName=data.companyName - if(data.planType!=2&&data.planType!=1){ - this.fetchUrl=data.attachmentUrls[0] - var index=this.fetchUrl.indexOf("\/") - if(this.fetchUrl.substr(0,index)=='psw'){ - this.showtype=1 - var obj=document.getElementById('viewer') - if(obj!=null){ - obj.innerHTML='' + } else { + this.http.get(`/api/PlanComponents/${item.itemId}`).subscribe((data: any) => { + this.companyId = data.companyId + this.companyName = data.companyName + if (data.planType != 2 && data.planType != 1) { + this.fetchUrl = data.attachmentUrls[0] + var index = this.fetchUrl.indexOf("\/") + if (this.fetchUrl.substr(0, index) == 'psw') { + this.showtype = 1 + var obj = document.getElementById('viewer') + if (obj != null) { + obj.innerHTML = '' } - window.setTimeout(()=>{ + window.setTimeout(() => { this.viewer = new Viewer({ container: document.querySelector('#viewer'), - panorama:'/api/Objects/PlanPlatform/'+ this.fetchUrl, - + panorama: '/api/Objects/PlanPlatform/' + this.fetchUrl, + }); }) - - }else{ + + } else { this.lookWord() } - }else{ - this.organizationName=item.organizationName + } else { + this.organizationName = item.organizationName this.planData = data this.handleData() return - + //this.src=`/planAudit/planpass?id=${data.companyId}&companyName=${data.companyName}&auditPlanId=${data.id}&auditStatus=${data.auditStatus}&planType=1` //this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src); //window.open(`/planAudit/planpass?id=${data.companyId}&companyName=${data.companyName}&auditPlanId=${data.id}&auditStatus=${data.auditStatus}&planType=1`) } - - - }) + + + }) } - - - - if(e.checked){ + + + + if (e.checked) { this.shenheTable.push(item) } - else{ - for(var i=0;i{ - filename=data.fileName - let json={ - doc: { - docId: docId, - title: filename, - //title: filename, - fetchUrl: `http://172.18.0.1:8000/api/Objects/PlanPlatform/`+this.fetchUrl - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - '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); - this.src=`http://10.81.73.39:18080/apps/editor/openPreview?data=${base64}` - this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src); - //window.open(`http://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) - }) + lookWord() { + this.showtype = 0 + let src + let suffix = this.fetchUrl.split('.')[this.fetchUrl.split('.').length - 1].toLowerCase() + if (suffix == 'docx' || suffix == 'doc') { + let arr = this.fetchUrl.split('.') + arr[arr.length - 1] = 'pdf' + src = `/api/Objects/PlanPlatform/` + arr.join('.') + }else if (suffix == 'pdf') { + src = `/api/Objects/PlanPlatform/` + this.fetchUrl + } + this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(src); } //查看按钮跳转 - lookNew(){ + lookNew() { window.open(this.src) } @@ -274,37 +252,37 @@ export class PlanRecordComponent implements OnInit { thirdPartyURL planType twoOrthree - handleData () { - this.compantData={name:'',buildingTypes:[],address:''} + handleData() { + this.compantData = { name: '', buildingTypes: [], address: '' } this.planType = this.planData.planMode let data = this.planData // console.log(data) - if(data.planType==1){ - this.twoOrthree=2 - }else if(data.planType==2){ - this.twoOrthree=3 + if (data.planType == 1) { + this.twoOrthree = 2 + } else if (data.planType == 2) { + this.twoOrthree = 3 } - if (this.planData.planMode==0) { //预案planMode=0时, 查看word + if (this.planData.planMode == 0) { //预案planMode=0时, 查看word //this.lookWord() - } else if (this.planData.planMode==1) { //预案planMode=1时, 解析文档 + } else if (this.planData.planMode == 1) { //预案planMode=1时, 解析文档 - } else if (this.planData.planMode==2) { //预案planMode=2时, 跳查看页面组件 - this.showtype=2 - this.http.get(`/api/Plans/${data.companyId}`).subscribe((data:any)=>{ - data && data.company? this.compantData = data.company : null + } else if (this.planData.planMode == 2) { //预案planMode=2时, 跳查看页面组件 + this.showtype = 2 + this.http.get(`/api/Plans/${data.companyId}`).subscribe((data: any) => { + data && data.company ? this.compantData = data.company : null }) - sessionStorage.setItem("buildingTypeId", this.compantData.buildingTypes.length? this.compantData.buildingTypes[0].id: undefined); - sessionStorage.setItem("companyId",this.companyId); - sessionStorage.setItem("planId",this.itemid); - sessionStorage.setItem("editable",'0'); - sessionStorage.setItem("planName",data.name) + sessionStorage.setItem("buildingTypeId", this.compantData.buildingTypes.length ? this.compantData.buildingTypes[0].id : undefined); + sessionStorage.setItem("companyId", this.companyId); + sessionStorage.setItem("planId", this.itemid); + sessionStorage.setItem("editable", '0'); + sessionStorage.setItem("planName", data.name) let companyId = sessionStorage.getItem("companyId") - this.thirdPartyURL=this.sanitizer.bypassSecurityTrustResourceUrl(`/keyUnit/viewunitinfoplans?id=${companyId}`); + this.thirdPartyURL = this.sanitizer.bypassSecurityTrustResourceUrl(`/keyUnit/viewunitinfoplans?id=${companyId}`); //window.open(`/keyUnit/viewunitinfoplan?id=${companyId}`) - } else if (this.planData.planMode==3) { //预案planMode=3时, 第三方网址' - this.showtype=2 - this.http.get(`/api/Plans/${data.companyId}`).subscribe((data:any)=>{ - data && data.company? this.compantData = data.company : null + } else if (this.planData.planMode == 3) { //预案planMode=3时, 第三方网址' + this.showtype = 2 + this.http.get(`/api/Plans/${data.companyId}`).subscribe((data: any) => { + data && data.company ? this.compantData = data.company : null }) //this.dialog.open(show3D,{width:'1350px',height:'700px',data:{url:data.url}}); //打开图片弹窗 this.thirdPartyURL = this.sanitizer.bypassSecurityTrustResourceUrl(data.url) @@ -313,8 +291,8 @@ export class PlanRecordComponent implements OnInit { } //打开三维预案弹窗 - oopen3Dshow(){ - this.dialog.open(recordshow3D,{width:'1650px',height:'850px',data:{url:this.thirdPartyURL,twoOrthree:this.twoOrthree}}); + oopen3Dshow() { + this.dialog.open(recordshow3D, { width: '1650px', height: '850px', data: { url: this.thirdPartyURL, twoOrthree: this.twoOrthree } }); } } @@ -324,11 +302,11 @@ export class PlanRecordComponent implements OnInit { templateUrl: './show3D.html', styleUrls: ['./plan-record.component.scss'] }) -export class recordshow3D{ - constructor(private sanitizer: DomSanitizer,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data,public dialog: MatDialog) {} +export class recordshow3D { + constructor(private sanitizer: DomSanitizer, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data, public dialog: MatDialog) { } ngOnInit(): void { // console.log(this.data) - this.threedUrl=this.sanitizer.bypassSecurityTrustResourceUrl(this.data.url.changingThisBreaksApplicationSecurity) + this.threedUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.data.url.changingThisBreaksApplicationSecurity) } threedUrl } diff --git a/src/app/plan-audit/wait-examineer/wait-examineer.component.ts b/src/app/plan-audit/wait-examineer/wait-examineer.component.ts index 6fcdeda..f759355 100644 --- a/src/app/plan-audit/wait-examineer/wait-examineer.component.ts +++ b/src/app/plan-audit/wait-examineer/wait-examineer.component.ts @@ -14,7 +14,7 @@ import { HttpClient } from '@angular/common/http' declare var CryptoJS import { DomSanitizer } from '@angular/platform-browser'; import { Viewer as photoViewer } from 'photo-sphere-viewer'; -import Viewer from 'viewerjs'; +import Viewer from 'viewerjs'; declare var echarts: any; @@ -61,7 +61,7 @@ export class WaitExamineerComponent implements OnInit { ] } this.getAlltabledate() - this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); + this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); } planTypeIndex //平面图类型 选择是总平面图还是层平面图 @@ -133,9 +133,9 @@ export class WaitExamineerComponent implements OnInit { this.getAlltabledate() } - lookImg(imgUrl){ + lookImg(imgUrl) { console.log(imgUrl) - let dom = document.getElementById(`viewerjs`) + let dom = document.getElementById(`viewerjs`) let pObjs = dom.childNodes; let node = document.createElement("img") node.style.display = "none"; @@ -144,7 +144,7 @@ export class WaitExamineerComponent implements OnInit { dom.appendChild(node) setTimeout(() => { let viewer = new Viewer(document.getElementById(`viewerjs`), { - hidden:()=>{ + hidden: () => { dom.removeChild(pObjs[0]); viewer.destroy(); } @@ -169,15 +169,15 @@ export class WaitExamineerComponent implements OnInit { this.selectedItem = item console.log(item) // console.log('当前选择的信息',JSON.parse(this.selectedItem.differentContent) ) - if(item.contentType == 11 && this.selectedItem.differentContent){ - + if (item.contentType == 11 && this.selectedItem.differentContent) { + let differentContent = JSON.parse(this.selectedItem.differentContent) - + // 单位信息 this.differentContentOfUnitInfo = differentContent.filter(item => item.propertyName == 'basicInfo') // 实景图 this.differentContentOfPicture = differentContent.filter(item => item.propertyName == 'realityImageGroups') - + //建筑信息 this.differentContentOfBuildingsInfo = JSON.parse(JSON.stringify(differentContent.filter(item => item.propertyName == 'buildings')[0])) this.differentContentOfBuildingsInfo.childrens.forEach(element => { @@ -196,7 +196,7 @@ export class WaitExamineerComponent implements OnInit { }); } - + // console.log('功能分区', this.differentContentOfFunction) @@ -303,38 +303,16 @@ export class WaitExamineerComponent implements OnInit { //毕升 lookWord() { this.showtype = 0 - let docIdWordArray = CryptoJS.enc.Utf8.parse(`PlanPlatform/` + this.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) - let filename:string - this.http.get(`/api/ObjectMetadata/PlanPlatform/${this.fetchUrl}`).subscribe((data:any)=>{ - filename=data.fileName - let json={ - doc: { - docId: docId, - title: filename, - //title: filename, - fetchUrl: `http://172.18.0.1:8000/api/Objects/PlanPlatform/`+this.fetchUrl - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - '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); - this.src=`http://10.81.73.39:18080/apps/editor/openPreview?data=${base64}` - this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src); - //window.open(`http://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) - }) + let src + let suffix = this.fetchUrl.split('.')[this.fetchUrl.split('.').length - 1].toLowerCase() + if (suffix == 'docx' || suffix == 'doc') { + let arr = this.fetchUrl.split('.') + arr[arr.length - 1] = 'pdf' + src = `/api/Objects/PlanPlatform/` + arr.join('.') + }else if (suffix == 'pdf') { + src = `/api/Objects/PlanPlatform/` + this.fetchUrl + } + this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(src); } //查看按钮跳转 lookNew() { diff --git a/src/app/plan-management/entry-plan-look/entry-plan-look.component.html b/src/app/plan-management/entry-plan-look/entry-plan-look.component.html index 5fbbb6b..b46cfdd 100644 --- a/src/app/plan-management/entry-plan-look/entry-plan-look.component.html +++ b/src/app/plan-management/entry-plan-look/entry-plan-look.component.html @@ -80,7 +80,7 @@ 改名 编辑 - 查看 + 查看 下载 删除 diff --git a/src/app/plan-management/entry-plan-look/entry-plan-look.component.ts b/src/app/plan-management/entry-plan-look/entry-plan-look.component.ts index ef49dae..6caf765 100644 --- a/src/app/plan-management/entry-plan-look/entry-plan-look.component.ts +++ b/src/app/plan-management/entry-plan-look/entry-plan-look.component.ts @@ -106,8 +106,8 @@ export class EntryPlanLookComponent implements OnInit { } //查看预案 lookPlan(e) { + console.log(e) if (e.planType == 16 || e.planType == 4 || e.planType == 8) { - // console.log(e.attachmentUrls) var index = e.attachmentUrls[0].indexOf("\/") if (e.attachmentUrls[0].substr(0, index) == 'psw') { const dialogRef = this.dialog.open(PsViewer, { @@ -121,54 +121,27 @@ export class EntryPlanLookComponent implements OnInit { data: data.attachmentUrls, }); dialogRef.afterClosed().subscribe(); - } - 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 + } else { 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://172.18.0.1: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' - ], - }, + 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); } - var stringjson = JSON.stringify(json) - var wordArray = CryptoJS.enc.Utf8.parse(stringjson); - var base64 = CryptoJS.enc.Base64.stringify(wordArray); - window.open(`http://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) - }) + } 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}`) + } } } - /* if(e.planType == 4){ - 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] - }); - } - } */ if (e.planType == 1) { //如果是在线编辑 let id = e.id sessionStorage.setItem("planId", id) @@ -193,7 +166,7 @@ export class EntryPlanLookComponent implements OnInit { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - if(e.auditStatus==8){ + if (e.auditStatus == 8) { if (e.planType == 1) { //如果是在线编辑 let id = e.id sessionStorage.setItem("planId", id) @@ -206,7 +179,6 @@ export class EntryPlanLookComponent implements OnInit { } 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 { @@ -231,49 +203,49 @@ export class EntryPlanLookComponent implements OnInit { this.snackBar.open('只有二维预案和文本预案可以编辑!', '确定', config); } - }else{ + } else { let isTrue = confirm('编辑后审核状态会成为未审核状态,您确定要编辑吗') - if (isTrue) { - 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}`) + if (isTrue) { + 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 { - 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 => { + 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) + }/* ,err => { this.snackBar.open(err,'确定',config); } */) - } + } - } - else { + } + else { - this.snackBar.open('只有二维预案和文本预案可以编辑!', '确定', config); + this.snackBar.open('只有二维预案和文本预案可以编辑!', '确定', config); + } } } - } - + } allPlanComponents: any //所有预案组件 diff --git a/src/app/plan-management/meet-plan/meet-plan.component.ts b/src/app/plan-management/meet-plan/meet-plan.component.ts index 27d97c6..d3c689c 100644 --- a/src/app/plan-management/meet-plan/meet-plan.component.ts +++ b/src/app/plan-management/meet-plan/meet-plan.component.ts @@ -4,7 +4,7 @@ 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 { 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'; @@ -17,56 +17,56 @@ declare var CryptoJS }) export class MeetPlanComponent implements OnInit { - constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,private tree: TreeService,public dialog: MatDialog,public snackBar: MatSnackBar) { } + constructor(private http: HttpClient, private router: Router, private route: ActivatedRoute, private tree: TreeService, public dialog: MatDialog, public snackBar: MatSnackBar) { } ngOnInit(): void { //console.log(window.matchMedia("(max-width: 1300px)").matches&&window.matchMedia("(max-height: 700px)").matches) - if(window.matchMedia("(max-width: 1400px)").matches){ - this.pcMore=false - this.padMore=true - this.pcfind=false - this.padjt=true - }else{ - this.pcfind=true - this.pcMore=true - this.padMore=false - this.padjt=false + if (window.matchMedia("(max-width: 1400px)").matches) { + this.pcMore = false + this.padMore = true + this.pcfind = false + this.padjt = true + } else { + this.pcfind = true + this.pcMore = true + this.padMore = false + this.padjt = false } this.levels = sessionStorage.getItem("level"); - if(this.levels == "0"){//如果是总队 + if (this.levels == "0") {//如果是总队 this.preparelevels = [ - {name:"总队",value:"1"}, - {name:"支队",value:"2"}, - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "总队", value: "1" }, + { name: "支队", value: "2" }, + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(this.levels == "1"){//如果是支队 + if (this.levels == "1") {//如果是支队 this.preparelevels = [ - {name:"支队",value:"2"}, - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "支队", value: "2" }, + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(this.levels == "2"){//如果是大队 + if (this.levels == "2") {//如果是大队 this.preparelevels = [ - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(this.levels == "3"){//如果是中队 + if (this.levels == "3") {//如果是中队 this.preparelevels = [ - {name:"中队",value:"8"} + { name: "中队", value: "8" } ] } this.getAlltabledate() } //生成word - word(id,fileName){ + word(id, fileName) { /* id :文档dom节点 fileName:文件名称(.doc) */ var header = "" + - "Export HTML to Word Document with JavaScript" + "xmlns:w='urn:schemas-microsoft-com:office:word' >" + + "Export HTML to Word Document with JavaScript" var footer = '' var sourceHTML = header + document.getElementById(id).innerHTML + footer @@ -77,12 +77,12 @@ export class MeetPlanComponent implements OnInit { fileDownload.download = fileName // 下载名称 fileDownload.click() document.body.removeChild(fileDownload) - } - levels + } + levels - preparelevels:any - plcheck:boolean //编制级别勾选框 - displayedColumns: string[] = ['unitname','level','addname','addtime', 'plantype', 'passstate','isopen','projectlevel','operation']; + preparelevels: any + plcheck: boolean //编制级别勾选框 + displayedColumns: string[] = ['unitname', 'level', 'addname', 'addtime', 'plantype', 'passstate', 'isopen', 'projectlevel', 'operation']; tabledataSource typePlan//新预案类型 unitname//预案名称 @@ -95,97 +95,97 @@ export class MeetPlanComponent implements OnInit { unitstate//审核状态 projectlevel//编制级别 //分页 - @ViewChild(MatPaginator, {static: true}) + @ViewChild(MatPaginator, { static: true }) pageEvent: PageEvent; paginator: MatPaginator; - length:any; //共多少条数据 - pageSize:any; //每页条数 + length: any; //共多少条数据 + pageSize: any; //每页条数 pageSizeOptions: number[] = [10] //设置每页条数 - PageNumber:any; //第几页 - + PageNumber: any; //第几页 + pcMore//pc更多 - pcput=false//pc收起 + pcput = false//pc收起 pcfind//pc查询 - padjt=false - padMore=true//pad收缩控制 - padput=false//pad收起按钮 - imgsrcopen="../../../assets/images/routdown2.png" - imgsrcdown="../../../assets/images/routup2.png" - pcInfo(){ - this.pcMore=!this.pcMore - this.pcput=!this.pcput + padjt = false + padMore = true//pad收缩控制 + padput = false//pad收起按钮 + imgsrcopen = "../../../assets/images/routdown2.png" + imgsrcdown = "../../../assets/images/routup2.png" + pcInfo() { + this.pcMore = !this.pcMore + this.pcput = !this.pcput } - padInfo(){ - this.padMore=!this.padMore - this.padput=!this.padput + padInfo() { + this.padMore = !this.padMore + this.padput = !this.padput } //获取表格数据 - getAlltabledate(){ + getAlltabledate() { let reservePlanType this.reservePlanType ? reservePlanType = JSON.parse(JSON.stringify(this.reservePlanType)) : reservePlanType = '' - if(this.reservePlanType && this.reservePlanType.length != 0){ + if (this.reservePlanType && this.reservePlanType.length != 0) { reservePlanType = eval(this.reservePlanType.join("|")) - } - let paramsdata:any = { - Name:this.unitname||'', - planCategories:this.level||[6,7], + } + let paramsdata: any = { + Name: this.unitname || '', + planCategories: this.level || [6, 7], //PlanType:reservePlanType||'', - DisasterType:this.typePlan||'', - CreatorName:this.addname||'', - AuditStatus:this.unitstate|| '', - CreationTimeRangeStart:this.addtime||'', - CreationTimeRangeEnd:this.endtime||'', - PlanLevel:this.projectlevel||'', - HasChildrenPlanLevel:this.plcheck||'', + DisasterType: this.typePlan || '', + CreatorName: this.addname || '', + AuditStatus: this.unitstate || '', + CreationTimeRangeStart: this.addtime || '', + CreationTimeRangeEnd: this.endtime || '', + PlanLevel: this.projectlevel || '', + HasChildrenPlanLevel: this.plcheck || '', PageNumber: this.PageNumber || '1', - PageSize: this.pageSizeOptions[0], - + PageSize: this.pageSizeOptions[0], + } - this.http.get("/api/PlanComponentsMajor",{params:paramsdata}).subscribe((data:any)=>{ + this.http.get("/api/PlanComponentsMajor", { params: paramsdata }).subscribe((data: any) => { this.length = data.totalCount this.tabledataSource = data.items }) } //分页事件 - changePage(e){ - this.PageNumber = e.pageIndex+1 + changePage(e) { + this.PageNumber = e.pageIndex + 1 this.getAlltabledate() } //查询 - onSubmit (value) { - if(this.endtime!=undefined&&this.addtime>this.endtime){ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('开始时间不能大于结束时间!','确定',config); - }else{ + onSubmit(value) { + if (this.endtime != undefined && this.addtime > this.endtime) { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('开始时间不能大于结束时间!', '确定', config); + } else { this.PageNumber = 1 this.pageEvent.pageIndex = 0 this.getAlltabledate(); } - + } //删除预案 - deletePlan(id){ + deletePlan(id) { let isTrue = confirm('您确定要删除吗') - if(isTrue){ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.http.delete(`/api/PlanComponentsMajor/${id}`).subscribe(data=>{ - this.snackBar.open('删除成功!','确定',config); - this.getAlltabledate() - },err => { - this.snackBar.open(err,'确定',config); - }) + if (isTrue) { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.http.delete(`/api/PlanComponentsMajor/${id}`).subscribe(data => { + this.snackBar.open('删除成功!', '确定', config); + this.getAlltabledate() + }, err => { + this.snackBar.open(err, '确定', config); + }) } - + } //提交审核 - submitAudit(element){ + submitAudit(element) { // console.log(element) const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; @@ -193,115 +193,96 @@ export class MeetPlanComponent implements OnInit { /* if(element.auditStatus == 4){ this.snackBar.open('审核退回的预案需要修改后方可再次提交审核!','确定',config); } */ - this.http.put(`/api/PlanComponentsMajor/${element.id}/Commit`,"").subscribe(data=>{ - this.getAlltabledate() - },err => { - this.snackBar.open(err,'确定',config); - }) - - + this.http.put(`/api/PlanComponentsMajor/${element.id}/Commit`, "").subscribe(data => { + this.getAlltabledate() + }, err => { + this.snackBar.open(err, '确定', config); + }) + + } //撤销审核 - cancelAudit(element){ + cancelAudit(element) { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - this.http.put(`/api/PlanComponentsMajor/${element.id}/Cancel`,"").subscribe(data=>{ + this.http.put(`/api/PlanComponentsMajor/${element.id}/Cancel`, "").subscribe(data => { this.getAlltabledate() - },err => { - this.snackBar.open(err,'确定',config); + }, err => { + this.snackBar.open(err, '确定', config); }) } - - + + //查看预案 - openPlan(element){ - //fetchUrl: `http://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl - let filename:string + openPlan(element) { let fetchUrl = element.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://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl, - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege:element.auditStatus!='1'&&element.auditStatus!='16'?[ - 'FILE_READ','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://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) - }) + 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); + } } //下载↓ - selectDownloadFile:any; //选择下载的文件 - download:any; //下载文件元数据 - downloadisLoading:boolean = false; //进度条loading加载 - downloadProgress:number=0; //进度条进度 - downloadFileName:any - fileUrls:any //当前预案附件地址 - fileDatas:any = [] - selectedFileIndex : any = 0 - selectedFileData : any - - uploadFileLonging:any + selectDownloadFile: any; //选择下载的文件 + download: any; //下载文件元数据 + downloadisLoading: boolean = false; //进度条loading加载 + downloadProgress: number = 0; //进度条进度 + downloadFileName: any + fileUrls: any //当前预案附件地址 + fileDatas: any = [] + selectedFileIndex: any = 0 + selectedFileData: any + + uploadFileLonging: any //读取下载文件信息 - readFile (element) { + readFile(element) { this.uploadFileLonging = element - element.attachmentUrls.forEach(item=>{ - this.http.get('/api/ObjectMetadata/PlanPlatform/'+item).subscribe((data:any)=>{ - data.filePige = (data.fileLength / (1024*1024)).toFixed(2) + element.attachmentUrls.forEach(item => { + this.http.get('/api/ObjectMetadata/PlanPlatform/' + item).subscribe((data: any) => { + data.filePige = (data.fileLength / (1024 * 1024)).toFixed(2) this.download = data this.downloadFile() }) }) - + } //初始化下载 - downloadFile () { + downloadFile() { this.downloadProgress = 0 let file = this.download let fileSize = file.fileLength//下载文件的总大小 let shardSize = 10 * 1024 * 1024 //文件大小是否大于10MB - if (file && fileSize<=shardSize) { //<=10MB时直接下载 + if (file && fileSize <= shardSize) { //<=10MB时直接下载 this.downloadisLoading = true // this.setFileLoading() - this.http.get(`/api/Objects/PlanPlatform/${file.objectName}`,{responseType: 'blob'},).subscribe(data=>{ + 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 + "-" +this.uploadFileLonging.name + "." + suffix); + let suffix = file.objectName.substring(file.objectName.lastIndexOf(".") + 1, file.objectName.length); + link.setAttribute("download", file.fileName + "-" + this.uploadFileLonging.name + "." + suffix); document.body.appendChild(link); link.click(); this.downloadisLoading = false // this.setFileLoading() }) - } else if (file && fileSize > shardSize) { //>10MB时分块下载 + } else if (file && fileSize > shardSize) { //>10MB时分块下载 this.blockingDownload() //分段下载 this.downloadisLoading = true // this.setFileLoading() @@ -310,31 +291,32 @@ export class MeetPlanComponent implements OnInit { } //分段下载并合并 - async blockingDownload () { + 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分段 + let allFile: any = [] //所有的file分段 - for (let i=0;i{ - this.http.get(`/api/Objects/PlanPlatform/${file.objectName}`,{headers:{'range':`bytes= ${start}-${end}`},responseType:'blob'}).subscribe(data=>{ - result(data) }) + 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 + 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 + "-" +this.uploadFileLonging.name + "." + suffix); + let suffix = file.objectName.substring(file.objectName.lastIndexOf(".") + 1, file.objectName.length); + link.setAttribute("download", file.fileName + "-" + this.uploadFileLonging.name + "." + suffix); document.body.appendChild(link); link.click(); // this.downloadProgress = 0 @@ -347,29 +329,29 @@ export class MeetPlanComponent implements OnInit { } //取消分块下载 - cancelDowload () { + cancelDowload() { } //重置 - reset(){ - this.typePlan='' - this.unitname='' - this.level='' - this.addname='' - this.addtime='' - this.endtime='' - this.reservePlanType='' - this.unitstate='' - this.projectlevel='' - this.plcheck=false + reset() { + this.typePlan = '' + this.unitname = '' + this.level = '' + this.addname = '' + this.addtime = '' + this.endtime = '' + this.reservePlanType = '' + this.unitstate = '' + this.projectlevel = '' + this.plcheck = false this.getAlltabledate() } //新增预案弹窗 - addunit(){ + addunit() { const dialogRef = this.dialog.open(newunitMeet, { width: '340px', - height:'490px', - disableClose:true + height: '490px', + disableClose: true //data: paperDataInfo }); dialogRef.afterClosed().subscribe(result => { @@ -379,12 +361,12 @@ export class MeetPlanComponent implements OnInit { } //审核结果 - auditResult(element){ + auditResult(element) { // console.log(element) const dialogRef = this.dialog.open(meetAuditResult, { - width:"400px", + width: "400px", //height:"300px", - data: {element:element} + data: { element: element } }); } @@ -396,8 +378,8 @@ export class MeetPlanComponent implements OnInit { templateUrl: './newunit.html', styleUrls: ['./newunit.scss'] }) -export class newunitMeet{ - constructor(private router:Router,private http: HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data: any) {} +export class newunitMeet { + constructor(private router: Router, private http: HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) { } unitname//预案名称 level//预案级别 addname//添加人 @@ -407,182 +389,184 @@ export class newunitMeet{ projectlevel//编制级别 //上传文件↓ - file:any; //上传的文件 - fileName:any; //上传文件name - uploadisLoading:boolean = false; //进度条loading加载 - uploadProgress:number=0; //进度条进度 - objectName:any; //上传对象名 - uploadId:any; //上传分块上传事件编号 - uploadover:any = false //上传完成之后提示 - selectedPLanType:any//所选预案类型 - selectedPLanName:any//所选预案名称 - localup:boolean = false //本地上传 + file: any; //上传的文件 + fileName: any; //上传文件name + uploadisLoading: boolean = false; //进度条loading加载 + uploadProgress: number = 0; //进度条进度 + objectName: any; //上传对象名 + uploadId: any; //上传分块上传事件编号 + uploadover: any = false //上传完成之后提示 + selectedPLanType: any//所选预案类型 + selectedPLanName: any//所选预案名称 + localup: boolean = false //本地上传 defaultisshow = '0' //默认显示上传input框 //上传 - upload(){ - document.getElementById('up').click() + upload() { + document.getElementById('up').click() } -//上传文件input - filechange(e){ - this.file = e.target.files[0] || null //上传的文件 - //console.log(this.file) + //上传文件input + filechange(e) { + this.file = e.target.files[0] || null //上传的文件 + //console.log(this.file) } - //上传文件 - startUploading (planType) { - let file = this.file || null //获取上传的文件 - let fileSize = file.size || null //上传文件的总大小 - let shardSize = 5 * 1024 * 1024 //5MB一个分片 + //上传文件 + 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) - const config = new MatSnackBarConfig(); + if (file && fileSize <= shardSize) { //上传文件<=5MB时 + let formData = new FormData() + formData.append("file", file) + 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.post('/api/Objects/PlanPlatform/meetClass',formData).subscribe((data:any)=>{ - this.objectName = data.objectName - //this.snackBar.open('上传成功!','确定',config); - - let body:any = { - Name:this.unitname||'', - PlanCategory:Number(this.level)||'', - disasterType: this.reservePlanType, - PlanLevel:PlanLevel, - PlanMode:1, - planType:16, - attachmentUrls:[`${this.objectName}`] + // console.log(level) + let PlanLevel + if (level == '0') { + PlanLevel = 1 + } + if (level == '1') { + PlanLevel = 2 + } + if (level == '2') { + PlanLevel = 4 } - // console.log(body) - this.http.post("/api/PlanComponentsMajor",body).subscribe((data:any)=>{ - this.snackBar.open('创建成功!','确定',config); - //console.log(data) - this.dialogRef.close(); - },err=>{ - this.snackBar.open('创建失败!','确定',config); + if (level == '3') { + PlanLevel = 8 + } + this.http.post('/api/Objects/PlanPlatform/meetClass', formData).subscribe((data: any) => { + this.objectName = data.objectName + //this.snackBar.open('上传成功!','确定',config); + + let body: any = { + Name: this.unitname || '', + PlanCategory: Number(this.level) || '', + disasterType: this.reservePlanType, + PlanLevel: PlanLevel, + PlanMode: 1, + planType: 16, + attachmentUrls: [`${this.objectName}`] + } + // console.log(body) + this.http.post("/api/PlanComponentsMajor", body).subscribe((data: any) => { + this.snackBar.open('创建成功!', '确定', config); + //console.log(data) + this.dialogRef.close(); + }, err => { + this.snackBar.open('创建失败!', '确定', config); + }) + }, err => { + this.snackBar.open('上传失败!', '确定', config); }) - },err=>{ - this.snackBar.open('上传失败!','确定',config); - }) - } else if (file && fileSize>shardSize) { //上传文件>5MB时,分块上传 - let data = {filename: file.name} - this.uploadisLoading = true - this.http.post('/api/NewMultipartUpload/PlanPlatform/meetClass',{},{params:data}).subscribe((data:any)=>{ //初始化分段上传 - this.objectName = data.objectName - this.uploadId = data.uploadId - this.subsectionUploading(planType) - }) - } + } else if (file && fileSize > shardSize) { //上传文件>5MB时,分块上传 + let data = { filename: file.name } + this.uploadisLoading = true + this.http.post('/api/NewMultipartUpload/PlanPlatform/meetClass', {}, { params: data }).subscribe((data: any) => { //初始化分段上传 + this.objectName = data.objectName + this.uploadId = data.uploadId + this.subsectionUploading(planType) + }) + } } - PartNumberETag:any=[]; //每次返回需要保存的信息 + PartNumberETag: any = []; //每次返回需要保存的信息 //开始分段上传 - async subsectionUploading (planType) { + 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 (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循环 } //完成分块上传 - endUploading (planType) { + 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 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 body:any = { - Name:this.unitname||'', - PlanCategory:Number(this.level)||'', - disasterType: this.reservePlanType, - PlanLevel:PlanLevel, - PlanMode:1, - planType:16, - attachmentUrls:[`${this.objectName}`] - } - this.http.post("/api/PlanComponentsMajor",body).subscribe((data:any)=>{ - this.snackBar.open('创建成功!','确定',config); - this.dialogRef.close(); - },err=>{ - this.snackBar.open('创建失败!','确定',config); - }) + let body: any = { + Name: this.unitname || '', + PlanCategory: Number(this.level) || '', + disasterType: this.reservePlanType, + PlanLevel: PlanLevel, + PlanMode: 1, + planType: 16, + attachmentUrls: [`${this.objectName}`] + } + this.http.post("/api/PlanComponentsMajor", body).subscribe((data: any) => { + this.snackBar.open('创建成功!', '确定', config); + this.dialogRef.close(); + }, err => { + this.snackBar.open('创建失败!', '确定', config); + }) }) } - + //取消分块上传 - cancel () { + cancel() { const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000; - this.http.delete(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}`).subscribe(data=>{ + config.verticalPosition = 'top'; + config.duration = 3000; + this.http.delete(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}`).subscribe(data => { this.uploadProgress = 0; - this.uploadisLoading= false; - (document.getElementById('up')).value = null - this.PartNumberETag =[] //清空保存返回的信息 - this.snackBar.open('取消上传成功!','确定',config); + this.uploadisLoading = false; + (document.getElementById('up')).value = null + this.PartNumberETag = [] //清空保存返回的信息 + this.snackBar.open('取消上传成功!', '确定', config); this.uploadover = false this.file = null }) @@ -590,35 +574,35 @@ export class newunitMeet{ //创建预案 - newplan(){ + newplan() { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - if(this.unitname==undefined||this.unitname==''){ - this.snackBar.open('请输入预案名称!','确定',config); + if (this.unitname == undefined || this.unitname == '') { + this.snackBar.open('请输入预案名称!', '确定', config); } - else if(this.reservePlanType==undefined||this.reservePlanType==''){ - this.snackBar.open('请输入预案类型!','确定',config); + else if (this.reservePlanType == undefined || this.reservePlanType == '') { + this.snackBar.open('请输入预案类型!', '确定', config); } - else if(this.level==undefined||this.level==''){ - this.snackBar.open('请输入预案级别!','确定',config); + else if (this.level == undefined || this.level == '') { + this.snackBar.open('请输入预案级别!', '确定', config); } - else if(this.file==undefined){ - this.snackBar.open('请先上传文件!','确定',config); + else if (this.file == undefined) { + this.snackBar.open('请先上传文件!', '确定', config); } - else{ - if(this.reservePlanType!='1'){ + else { + if (this.reservePlanType != '1') { this.startUploading("非二维") } - else{this.startUploading("二维")} - - + else { this.startUploading("二维") } + + } - + } //取消 - close(){ + close() { this.dialogRef.close(); } } @@ -629,15 +613,15 @@ export class newunitMeet{ templateUrl: './resultmeetPlan.html', styleUrls: ['./meet-plan.component.scss'] }) -export class meetAuditResult{ - constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data,public snackBar: MatSnackBar) {} - planName:any = this.data.element.name - commitTime:any = this.data.element.committedTime - commitOrganizationName:any = this.data.element.committerOrganizationName - - auditOrganizationName:any = this.data.element.auditorOrganizationName - auditResult:any = this.data.element.auditStatus - auditOpinion:any = this.data.element.auditOpinion +export class meetAuditResult { + constructor(private http: HttpClient, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data, public snackBar: MatSnackBar) { } + planName: any = this.data.element.name + commitTime: any = this.data.element.committedTime + commitOrganizationName: any = this.data.element.committerOrganizationName + + auditOrganizationName: any = this.data.element.auditorOrganizationName + auditResult: any = this.data.element.auditStatus + auditOpinion: any = this.data.element.auditOpinion ngOnInit(): void { } onNoClick(): void { diff --git a/src/app/plan-management/onetwo-entry-plan/onetwo-entry-plan.component.ts b/src/app/plan-management/onetwo-entry-plan/onetwo-entry-plan.component.ts index 87fb062..849ec9c 100644 --- a/src/app/plan-management/onetwo-entry-plan/onetwo-entry-plan.component.ts +++ b/src/app/plan-management/onetwo-entry-plan/onetwo-entry-plan.component.ts @@ -13,7 +13,7 @@ import { MatPaginator } from '@angular/material/paginator'; import { FlatTreeControl } from '@angular/cdk/tree'; import { FormControl } from '@angular/forms'; -import { Router,ActivatedRoute } from '@angular/router' +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'; @@ -30,72 +30,72 @@ declare var CryptoJS }) export class OnetwoEntryPlanComponent implements OnInit { - constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,private tree: TreeService,public dialog: MatDialog,public snackBar: MatSnackBar) { } + constructor(private http: HttpClient, private router: Router, private route: ActivatedRoute, private tree: TreeService, public dialog: MatDialog, public snackBar: MatSnackBar) { } ngOnInit(): void { - if(window.matchMedia("(max-width: 1400px)").matches){ - this.pcMore=false - this.padMore=true - this.pcfind=false - this.padjt=true - }else{ - this.pcfind=true - this.pcMore=true - this.padMore=false - this.padjt=false + if (window.matchMedia("(max-width: 1400px)").matches) { + this.pcMore = false + this.padMore = true + this.pcfind = false + this.padjt = true + } else { + this.pcfind = true + this.pcMore = true + this.padMore = false + this.padjt = false } this.levels = sessionStorage.getItem("level"); - if(this.levels == "0"){//如果是总队 + if (this.levels == "0") {//如果是总队 this.preparelevels = [ - {name:"总队",value:"1"}, - {name:"支队",value:"2"}, - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "总队", value: "1" }, + { name: "支队", value: "2" }, + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(this.levels == "1"){//如果是支队 + if (this.levels == "1") {//如果是支队 this.preparelevels = [ - {name:"支队",value:"2"}, - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "支队", value: "2" }, + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(this.levels == "2"){//如果是大队 + if (this.levels == "2") {//如果是大队 this.preparelevels = [ - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(this.levels == "3"){//如果是中队 + if (this.levels == "3") {//如果是中队 this.preparelevels = [ - {name:"中队",value:"8"} + { name: "中队", value: "8" } ] } - this.url=window.location.href.substring(window.location.href.length-1,window.location.href.length) + this.url = window.location.href.substring(window.location.href.length - 1, window.location.href.length) this.getAlltabledate() } pcMore//pc更多 - pcput=false//pc收起 + pcput = false//pc收起 pcfind//pc查询 - padjt=false - padMore=true//pad收缩控制 - padput=false//pad收起按钮 - imgsrcopen="../../../assets/images/routdown2.png" - imgsrcdown="../../../assets/images/routup2.png" - pcInfo(){ - this.pcMore=!this.pcMore - this.pcput=!this.pcput + padjt = false + padMore = true//pad收缩控制 + padput = false//pad收起按钮 + imgsrcopen = "../../../assets/images/routdown2.png" + imgsrcdown = "../../../assets/images/routup2.png" + pcInfo() { + this.pcMore = !this.pcMore + this.pcput = !this.pcput } - padInfo(){ - this.padMore=!this.padMore - this.padput=!this.padput + padInfo() { + this.padMore = !this.padMore + this.padput = !this.padput } levels url - preparelevels:any - plcheck:boolean //编制级别勾选框 - displayedColumns: string[] = ['unitname','level','addname','addtime', 'plantype', 'passstate','isopen','projectlevel','operation']; + preparelevels: any + plcheck: boolean //编制级别勾选框 + displayedColumns: string[] = ['unitname', 'level', 'addname', 'addtime', 'plantype', 'passstate', 'isopen', 'projectlevel', 'operation']; tabledataSource unitname//预案名称 level//预案级别 @@ -107,96 +107,96 @@ export class OnetwoEntryPlanComponent implements OnInit { projectlevel//编制级别 typePlan//新预案类型 //分页 - @ViewChild(MatPaginator, {static: true}) + @ViewChild(MatPaginator, { static: true }) pageEvent: PageEvent; paginator: MatPaginator; - length:any; //共多少条数据 - pageSize:any; //每页条数 + length: any; //共多少条数据 + pageSize: any; //每页条数 pageSizeOptions: number[] = [10] //设置每页条数 - PageNumber:any; //第几页 + PageNumber: any; //第几页 //获取表格数据 - getAlltabledate(){ + getAlltabledate() { let reservePlanType this.reservePlanType ? reservePlanType = JSON.parse(JSON.stringify(this.reservePlanType)) : reservePlanType = '' - if(this.reservePlanType && this.reservePlanType.length != 0){ + if (this.reservePlanType && this.reservePlanType.length != 0) { reservePlanType = eval(this.reservePlanType.join("|")) - } - let paramsdata:any = { - Name:this.unitname||'', - planCategories:this.url=='2'?2:1, + } + let paramsdata: any = { + Name: this.unitname || '', + planCategories: this.url == '2' ? 2 : 1, //PlanType:reservePlanType||'', - DisasterType:this.typePlan||'', - CreatorName:this.addname||'', - AuditStatus:this.unitstate|| '', - CreationTimeRangeStart:this.addtime||'', - CreationTimeRangeEnd:this.endtime||'', - PlanLevel:this.projectlevel||'', - HasChildrenPlanLevel:this.plcheck||'', + DisasterType: this.typePlan || '', + CreatorName: this.addname || '', + AuditStatus: this.unitstate || '', + CreationTimeRangeStart: this.addtime || '', + CreationTimeRangeEnd: this.endtime || '', + PlanLevel: this.projectlevel || '', + HasChildrenPlanLevel: this.plcheck || '', PageNumber: this.PageNumber || '1', - PageSize: this.pageSizeOptions[0], - + PageSize: this.pageSizeOptions[0], + } - this.http.get("/api/PlanComponentsMajor",{params:paramsdata}).subscribe((data:any)=>{ + this.http.get("/api/PlanComponentsMajor", { params: paramsdata }).subscribe((data: any) => { this.length = data.totalCount this.tabledataSource = data.items }) } //分页事件 - changePage(e){ - this.PageNumber = e.pageIndex+1 + changePage(e) { + this.PageNumber = e.pageIndex + 1 this.getAlltabledate() } //重置 - reset(){ - this.typePlan='' - this.unitname='' - this.level='' - this.addname='' - this.addtime='' - this.endtime='' - this.reservePlanType='' - this.unitstate='' - this.projectlevel='' - this.plcheck=false + reset() { + this.typePlan = '' + this.unitname = '' + this.level = '' + this.addname = '' + this.addtime = '' + this.endtime = '' + this.reservePlanType = '' + this.unitstate = '' + this.projectlevel = '' + this.plcheck = false this.getAlltabledate() } //查询 - onSubmit (value) { + onSubmit(value) { //console.log(value) - if(this.endtime!=undefined&&this.addtime>this.endtime){ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('开始时间不能大于结束时间!','确定',config); - }else{ + if (this.endtime != undefined && this.addtime > this.endtime) { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('开始时间不能大于结束时间!', '确定', config); + } else { this.PageNumber = 1 this.pageEvent.pageIndex = 0 this.getAlltabledate(); } - + } //删除预案 - deletePlan(id){ + deletePlan(id) { let isTrue = confirm('您确定要删除吗') - if(isTrue){ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.http.delete(`/api/PlanComponentsMajor/${id}`).subscribe(data=>{ - this.snackBar.open('删除成功!','确定',config); - this.getAlltabledate() - },err => { - this.snackBar.open(err,'确定',config); - }) + if (isTrue) { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.http.delete(`/api/PlanComponentsMajor/${id}`).subscribe(data => { + this.snackBar.open('删除成功!', '确定', config); + this.getAlltabledate() + }, err => { + this.snackBar.open(err, '确定', config); + }) } - + } //提交审核 - submitAudit(element){ + submitAudit(element) { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 @@ -206,69 +206,49 @@ export class OnetwoEntryPlanComponent implements OnInit { config.duration = 3000 this.snackBar.open('审核退回的预案需要修改后方可再次提交审核!','确定',config); } */ - this.http.put(`/api/PlanComponentsMajor/${element.id}/Commit`,"").subscribe(data=>{ - this.getAlltabledate() - },err => { - this.snackBar.open(err,'确定',config); - }) - - + this.http.put(`/api/PlanComponentsMajor/${element.id}/Commit`, "").subscribe(data => { + this.getAlltabledate() + }, err => { + this.snackBar.open(err, '确定', config); + }) + + } //撤销审核 - cancelAudit(element){ + cancelAudit(element) { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - this.http.put(`/api/PlanComponentsMajor/${element.id}/Cancel`,"").subscribe(data=>{ + this.http.put(`/api/PlanComponentsMajor/${element.id}/Cancel`, "").subscribe(data => { this.getAlltabledate() - },err => { - this.snackBar.open(err,'确定',config); + }, err => { + this.snackBar.open(err, '确定', config); }) } //查看预案 - openPlan(element){ - let filename:string + openPlan(element) { let fetchUrl = element.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://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl, - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege:element.auditStatus!='1'&&element.auditStatus!='16'?[ - 'FILE_READ','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://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) - }) - - + 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/` + element.attachmentUrls[0]) + }else{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('该文件类型暂不支持在线查看', '确定', config); + } } //新增预案弹窗 - addunit(){ + addunit() { const dialogRef = this.dialog.open(newunitComponent, { width: '340px', - height:'410px', - disableClose:true + height: '410px', + disableClose: true //data: paperDataInfo }); dialogRef.afterClosed().subscribe(result => { @@ -278,66 +258,66 @@ export class OnetwoEntryPlanComponent implements OnInit { } //审核结果 - auditResult(element){ + auditResult(element) { // console.log(element) const dialogRef = this.dialog.open(onetwoAuditResult, { - width:"400px", + width: "400px", //height:"300px", - data: {element:element} + data: { element: element } }); } //下载↓ - selectDownloadFile:any; //选择下载的文件 - download:any; //下载文件元数据 - downloadisLoading:boolean = false; //进度条loading加载 - downloadProgress:number=0; //进度条进度 - downloadFileName:any - fileUrls:any //当前预案附件地址 - fileDatas:any = [] - selectedFileIndex : any = 0 - selectedFileData : any - - uploadFileLonging:any + selectDownloadFile: any; //选择下载的文件 + download: any; //下载文件元数据 + downloadisLoading: boolean = false; //进度条loading加载 + downloadProgress: number = 0; //进度条进度 + downloadFileName: any + fileUrls: any //当前预案附件地址 + fileDatas: any = [] + selectedFileIndex: any = 0 + selectedFileData: any + + uploadFileLonging: any //读取下载文件信息 - readFile (element) { + readFile(element) { this.uploadFileLonging = element - element.attachmentUrls.forEach(item=>{ - this.http.get('/api/ObjectMetadata/PlanPlatform/'+item).subscribe((data:any)=>{ - data.filePige = (data.fileLength / (1024*1024)).toFixed(2) + element.attachmentUrls.forEach(item => { + this.http.get('/api/ObjectMetadata/PlanPlatform/' + item).subscribe((data: any) => { + data.filePige = (data.fileLength / (1024 * 1024)).toFixed(2) //console.log(data) this.download = data this.downloadFile() }) }) - + } //初始化下载 - downloadFile () { + downloadFile() { this.downloadProgress = 0 let file = this.download let fileSize = file.fileLength//下载文件的总大小 let shardSize = 10 * 1024 * 1024 //文件大小是否大于10MB - if (file && fileSize<=shardSize) { //<=10MB时直接下载 + if (file && fileSize <= shardSize) { //<=10MB时直接下载 this.downloadisLoading = true // this.setFileLoading() - this.http.get(`/api/Objects/PlanPlatform/${file.objectName}`,{responseType: 'blob'},).subscribe(data=>{ + 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 + "-" +this.uploadFileLonging.name + "." + suffix); + let suffix = file.objectName.substring(file.objectName.lastIndexOf(".") + 1, file.objectName.length); + link.setAttribute("download", file.fileName + "-" + this.uploadFileLonging.name + "." + suffix); document.body.appendChild(link); link.click(); this.downloadisLoading = false // this.setFileLoading() }) - } else if (file && fileSize > shardSize) { //>10MB时分块下载 + } else if (file && fileSize > shardSize) { //>10MB时分块下载 this.blockingDownload() //分段下载 this.downloadisLoading = true // this.setFileLoading() @@ -346,31 +326,32 @@ export class OnetwoEntryPlanComponent implements OnInit { } //分段下载并合并 - async blockingDownload () { + 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分段 + let allFile: any = [] //所有的file分段 - for (let i=0;i{ - this.http.get(`/api/Objects/PlanPlatform/${file.objectName}`,{headers:{'range':`bytes= ${start}-${end}`},responseType:'blob'}).subscribe(data=>{ - result(data) }) + 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 + 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 + "-" +this.uploadFileLonging.name + "." + suffix); + let suffix = file.objectName.substring(file.objectName.lastIndexOf(".") + 1, file.objectName.length); + link.setAttribute("download", file.fileName + "-" + this.uploadFileLonging.name + "." + suffix); document.body.appendChild(link); link.click(); // this.downloadProgress = 0 @@ -383,14 +364,14 @@ export class OnetwoEntryPlanComponent implements OnInit { } //取消分块下载 - cancelDowload () { + cancelDowload() { } - + //查看预案按钮跳转 - routerTo(element){ - sessionStorage.setItem("companyName",element.unitname) - window.open(`/planManagement/entryPlandetail?unitId=${element.company.id}&unitTypeId=${element.company.buildingTypes.length == 0 ? null :element.company.buildingTypes[0].id}&operation=true&pagetype=entryplan&unitName=${element.company.name}&orName=${element.company.organizationName}&unitType=${element.company.buildingTypes.length == 0 ? null :element.company.buildingTypes[0].name}&unitAdd=${element.company.address}`); + routerTo(element) { + sessionStorage.setItem("companyName", element.unitname) + window.open(`/planManagement/entryPlandetail?unitId=${element.company.id}&unitTypeId=${element.company.buildingTypes.length == 0 ? null : element.company.buildingTypes[0].id}&operation=true&pagetype=entryplan&unitName=${element.company.name}&orName=${element.company.organizationName}&unitType=${element.company.buildingTypes.length == 0 ? null : element.company.buildingTypes[0].name}&unitAdd=${element.company.address}`); } } @@ -401,10 +382,10 @@ export class OnetwoEntryPlanComponent implements OnInit { templateUrl: './newunit.html', styleUrls: ['./newunit.scss'] }) -export class newunitComponent{ - constructor(private router:Router,private http: HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data: any) {} +export class newunitComponent { + constructor(private router: Router, private http: HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) { } ngOnInit(): void { - this.url=window.location.href.substring(window.location.href.length-1,window.location.href.length) + this.url = window.location.href.substring(window.location.href.length - 1, window.location.href.length) } url unitname//预案名称 @@ -416,180 +397,182 @@ export class newunitComponent{ projectlevel//编制级别 //上传文件↓ - file:any; //上传的文件 - fileName:any; //上传文件name - uploadisLoading:boolean = false; //进度条loading加载 - uploadProgress:number=0; //进度条进度 - objectName:any; //上传对象名 - uploadId:any; //上传分块上传事件编号 - uploadover:any = false //上传完成之后提示 - selectedPLanType:any//所选预案类型 - selectedPLanName:any//所选预案名称 - localup:boolean = false //本地上传 + file: any; //上传的文件 + fileName: any; //上传文件name + uploadisLoading: boolean = false; //进度条loading加载 + uploadProgress: number = 0; //进度条进度 + objectName: any; //上传对象名 + uploadId: any; //上传分块上传事件编号 + uploadover: any = false //上传完成之后提示 + selectedPLanType: any//所选预案类型 + selectedPLanName: any//所选预案名称 + localup: boolean = false //本地上传 defaultisshow = '0' //默认显示上传input框 - //上传 - upload(){ - document.getElementById('up').click() + //上传 + upload() { + document.getElementById('up').click() } -//上传文件input - filechange(e){ - this.file = e.target.files[0] || null //上传的文件 + //上传文件input + filechange(e) { + this.file = e.target.files[0] || null //上传的文件 } - //上传文件 - startUploading (planType) { - let file = this.file || null //获取上传的文件 - let fileSize = file.size || null //上传文件的总大小 - let shardSize = 5 * 1024 * 1024 //5MB一个分片 + //上传文件 + 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) - const config = new MatSnackBarConfig(); + if (file && fileSize <= shardSize) { //上传文件<=5MB时 + let formData = new FormData() + formData.append("file", file) + const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - this.http.post(this.url=='2'?`/api/Objects/PlanPlatform/twoClass`:'/api/Objects/PlanPlatform/oneClass',formData).subscribe((data:any)=>{ - this.objectName = data.objectName - //this.snackBar.open('上传成功!','确定',config); - let level = sessionStorage.getItem("level") + this.http.post(this.url == '2' ? `/api/Objects/PlanPlatform/twoClass` : '/api/Objects/PlanPlatform/oneClass', formData).subscribe((data: any) => { + this.objectName = data.objectName + //this.snackBar.open('上传成功!','确定',config); + let level = sessionStorage.getItem("level") // console.log(level) - let PlanLevel - if(level == '0'){ - PlanLevel = 1 + let PlanLevel + if (level == '0') { + PlanLevel = 1 } - if(level == '1'){ - PlanLevel = 2 + if (level == '1') { + PlanLevel = 2 } - if(level == '2'){ - PlanLevel = 4 + if (level == '2') { + PlanLevel = 4 } - if(level == '3'){ - PlanLevel = 8 + if (level == '3') { + PlanLevel = 8 } - let body:any = { - Name:this.unitname||'', - PlanCategory:this.url=='2'?2:1, - disasterType: this.reservePlanType, - PlanLevel:PlanLevel, - PlanMode:1, - planType:16, - attachmentUrls:[`${this.objectName}`] - } - this.http.post("/api/PlanComponentsMajor",body).subscribe((data:any)=>{ - this.snackBar.open('创建成功!','确定',config); - this.dialogRef.close(); - },err=>{ - this.snackBar.open('创建失败!','确定',config); + let body: any = { + Name: this.unitname || '', + PlanCategory: this.url == '2' ? 2 : 1, + disasterType: this.reservePlanType, + PlanLevel: PlanLevel, + PlanMode: 1, + planType: 16, + attachmentUrls: [`${this.objectName}`] + } + this.http.post("/api/PlanComponentsMajor", body).subscribe((data: any) => { + this.snackBar.open('创建成功!', '确定', config); + this.dialogRef.close(); + }, err => { + this.snackBar.open('创建失败!', '确定', config); + }) + }, err => { + this.snackBar.open('上传失败!', '确定', config); }) - },err=>{ - this.snackBar.open('上传失败!','确定',config); - }) - } else if (file && fileSize>shardSize) { //上传文件>5MB时,分块上传 - let data = {filename: file.name} - this.uploadisLoading = true - this.http.post(this.url=='2'?`/api/NewMultipartUpload/PlanPlatform/twoClass`:'/api/NewMultipartUpload/PlanPlatform/oneClass',{},{params:data}).subscribe((data:any)=>{ //初始化分段上传 - this.objectName = data.objectName - this.uploadId = data.uploadId - this.subsectionUploading(planType) - }) - } + } else if (file && fileSize > shardSize) { //上传文件>5MB时,分块上传 + let data = { filename: file.name } + this.uploadisLoading = true + this.http.post(this.url == '2' ? `/api/NewMultipartUpload/PlanPlatform/twoClass` : '/api/NewMultipartUpload/PlanPlatform/oneClass', {}, { params: data }).subscribe((data: any) => { //初始化分段上传 + this.objectName = data.objectName + this.uploadId = data.uploadId + this.subsectionUploading(planType) + }) + } } - PartNumberETag:any=[]; //每次返回需要保存的信息 + PartNumberETag: any = []; //每次返回需要保存的信息 //开始分段上传 - async subsectionUploading (planType) { + 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 (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循环 } //完成分块上传 - endUploading (planType) { + 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 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 body:any = { - Name:this.unitname||'', - PlanCategory:this.url=='2'?2:1, - disasterType: this.reservePlanType, - PlanLevel:PlanLevel, - PlanMode:1, - planType:16, - attachmentUrls:[`${this.objectName}`] - } - - this.http.post("/api/PlanComponentsMajor",body).subscribe((data:any)=>{ - this.snackBar.open('创建成功!','确定',config); - this.dialogRef.close(); - },err=>{ - this.snackBar.open('创建失败!','确定',config); - }) + let body: any = { + Name: this.unitname || '', + PlanCategory: this.url == '2' ? 2 : 1, + disasterType: this.reservePlanType, + PlanLevel: PlanLevel, + PlanMode: 1, + planType: 16, + attachmentUrls: [`${this.objectName}`] + } + + this.http.post("/api/PlanComponentsMajor", body).subscribe((data: any) => { + this.snackBar.open('创建成功!', '确定', config); + this.dialogRef.close(); + }, err => { + this.snackBar.open('创建失败!', '确定', config); + }) }) } - + //取消分块上传 - cancel () { - this.http.delete(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}`).subscribe(data=>{ + cancel() { + this.http.delete(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}`).subscribe(data => { this.uploadProgress = 0; - this.uploadisLoading= false; - (document.getElementById('up')).value = null - this.PartNumberETag =[] //清空保存返回的信息 + this.uploadisLoading = false; + (document.getElementById('up')).value = null + this.PartNumberETag = [] //清空保存返回的信息 const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - this.snackBar.open('取消上传成功!','确定',config); + this.snackBar.open('取消上传成功!', '确定', config); this.uploadover = false this.file = null }) @@ -597,29 +580,29 @@ export class newunitComponent{ //创建预案 - newplan(){ + newplan() { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - if(this.unitname==undefined||this.reservePlanType==undefined){ - this.snackBar.open('请输入预案名称或类型!','确定',config); + if (this.unitname == undefined || this.reservePlanType == undefined) { + this.snackBar.open('请输入预案名称或类型!', '确定', config); } - else if(this.file==undefined){ - this.snackBar.open('请先上传文件!','确定',config); + else if (this.file == undefined) { + this.snackBar.open('请先上传文件!', '确定', config); } - else{ - if(this.reservePlanType!='1'){ + else { + if (this.reservePlanType != '1') { this.startUploading("非二维") } - else{this.startUploading("二维")} - - + else { this.startUploading("二维") } + + } - + } //取消按钮 - close(){ + close() { this.dialogRef.close(); } } @@ -630,15 +613,15 @@ export class newunitComponent{ templateUrl: './resultPlanonetwo.html', styleUrls: ['./onetwo-entry-plan.component.scss'] }) -export class onetwoAuditResult{ - constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data,public snackBar: MatSnackBar) {} - planName:any = this.data.element.name - commitTime:any = this.data.element.committedTime - commitOrganizationName:any = this.data.element.committerOrganizationName - - auditOrganizationName:any = this.data.element.auditorOrganizationName - auditResult:any = this.data.element.auditStatus - auditOpinion:any = this.data.element.auditOpinion +export class onetwoAuditResult { + constructor(private http: HttpClient, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data, public snackBar: MatSnackBar) { } + planName: any = this.data.element.name + commitTime: any = this.data.element.committedTime + commitOrganizationName: any = this.data.element.committerOrganizationName + + auditOrganizationName: any = this.data.element.auditorOrganizationName + auditResult: any = this.data.element.auditStatus + auditOpinion: any = this.data.element.auditOpinion ngOnInit(): void { } onNoClick(): void { diff --git a/src/app/plan-management/open-plan/open-plan.component.ts b/src/app/plan-management/open-plan/open-plan.component.ts index e2c7106..f1e6306 100644 --- a/src/app/plan-management/open-plan/open-plan.component.ts +++ b/src/app/plan-management/open-plan/open-plan.component.ts @@ -4,7 +4,7 @@ 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 { 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'; @@ -18,8 +18,8 @@ declare var CryptoJS }) export class OpenPlanComponent implements OnInit { - constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,private tree: TreeService,public dialog: MatDialog,public snackBar: MatSnackBar) { } - + constructor(private http: HttpClient, private router: Router, private route: ActivatedRoute, private tree: TreeService, public dialog: MatDialog, public snackBar: MatSnackBar) { } + private _transformer = (node, level: number) => { //初始化tree return { expandable: !!node.children && node.children.length > 0, @@ -35,145 +35,145 @@ export class OpenPlanComponent implements OnInit { dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); myControl = new FormControl(); hasChild = (_: number, node: any) => node.expandable; - //分页 - @ViewChild(MatPaginator, {static: true}) + //分页 + @ViewChild(MatPaginator, { static: true }) pageEvent: PageEvent; paginator: MatPaginator; - length:any; //共多少条数据 - pageSize:any; //每页条数 + length: any; //共多少条数据 + pageSize: any; //每页条数 pageSizeOptions: number[] = [10] //设置每页条数 - PageNumber:any; //第几页 + PageNumber: any; //第几页 + + displayedColumns: string[] = ['unitname', 'planname', 'addpeople', 'addtime', 'plantype', 'auditStatus', 'openRange', 'projectlevel', 'operation']; - displayedColumns: string[] = ['unitname', 'planname', 'addpeople','addtime','plantype','auditStatus','openRange','projectlevel','operation']; - - allorganizations:any //所有组织机构 - allunittype:any //所有单位类型 - tabledataSource:any //表格数据 - preparelevels:any //编制级别 + allorganizations: any //所有组织机构 + allunittype: any //所有单位类型 + tabledataSource: any //表格数据 + preparelevels: any //编制级别 ngOnInit(): void { - if(window.matchMedia("(max-width: 1400px)").matches){ - this.pcMore=false - this.padMore=true - this.pcfind=false - this.padjt=true - }else{ - this.pcfind=true - this.pcMore=true - this.padMore=false - this.padjt=false + if (window.matchMedia("(max-width: 1400px)").matches) { + this.pcMore = false + this.padMore = true + this.pcfind = false + this.padjt = true + } else { + this.pcfind = true + this.pcMore = true + this.padMore = false + this.padjt = false } this.getunitdata(); this.getOrganizations(); this.getUnittype(); this.getAllPlanInfo(); //得到所有单位 let level = sessionStorage.getItem("level"); - if(level == "0"){//如果是总队 + if (level == "0") {//如果是总队 this.preparelevels = [ - {name:"总队",value:"1"}, - {name:"支队",value:"2"}, - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "总队", value: "1" }, + { name: "支队", value: "2" }, + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(level == "1"){//如果是支队 + if (level == "1") {//如果是支队 this.preparelevels = [ - {name:"支队",value:"2"}, - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "支队", value: "2" }, + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(level == "2"){//如果是大队 + if (level == "2") {//如果是大队 this.preparelevels = [ - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(level == "3"){//如果是中队 + if (level == "3") {//如果是中队 this.preparelevels = [ - {name:"中队",value:"8"} + { name: "中队", value: "8" } ] } } pcMore//pc更多 - pcput=false//pc收起 + pcput = false//pc收起 pcfind//pc查询 - padjt=false - padMore=true//pad收缩控制 - padput=false//pad收起按钮 - imgsrcopen="../../../assets/images/routdown2.png" - imgsrcdown="../../../assets/images/routup2.png" - pcInfo(){ - this.pcMore=!this.pcMore - this.pcput=!this.pcput + padjt = false + padMore = true//pad收缩控制 + padput = false//pad收起按钮 + imgsrcopen = "../../../assets/images/routdown2.png" + imgsrcdown = "../../../assets/images/routup2.png" + pcInfo() { + this.pcMore = !this.pcMore + this.pcput = !this.pcput } - padInfo(){ - this.padMore=!this.padMore - this.padput=!this.padput + padInfo() { + this.padMore = !this.padMore + this.padput = !this.padput } - allPlanInfo:any //存储所有预案信息 + allPlanInfo: any //存储所有预案信息 //获得所有预案信息 - getAllPlanInfo(){ - let paramsdata:any = { + getAllPlanInfo() { + let paramsdata: any = { CompanyName: this.companyName || '', - OrganizationId: '', - HasChildrenOrganization:'', - BuildingTypeId: this.unittype || '', + OrganizationId: '', + HasChildrenOrganization: '', + BuildingTypeId: this.unittype || '', PlanType: this.reservePlanType || '', - AuditStatus:'', //审核状态 - PlanLevel: this.preparelevel || '', + AuditStatus: '', //审核状态 + PlanLevel: this.preparelevel || '', HasChildrenPlanLevel: this.plcheck || '', PageNumber: this.PageNumber || '1', - PageSize: this.pageSizeOptions[0], + PageSize: this.pageSizeOptions[0], Sort: '' } - this.http.get("/api/PublicPlans",{params:paramsdata}).subscribe((data:any)=>{ + this.http.get("/api/PublicPlans", { params: paramsdata }).subscribe((data: any) => { // console.log(111,data) this.length = data.totalCount this.allPlanInfo = data - this.tabledataSource = data.items + this.tabledataSource = data.items }) } //得到当前单位信息 - getunitdata(){ + getunitdata() { this.http.get("/api/Account/Profiles").subscribe( - (data:any)=>{ - this.organizationName = data.organizationName + (data: any) => { + this.organizationName = data.organizationName } ) } - organizationName:any //当前单位组织机构名称 - treedata:any //组织机构树型数据 - newArr:any = [] - newallorganizations:any //用于存储在原始数据基础上的每个机构增加children字段 + organizationName: any //当前单位组织机构名称 + treedata: any //组织机构树型数据 + newArr: any = [] + newallorganizations: any //用于存储在原始数据基础上的每个机构增加children字段 //得到当前单位所在组织机构的tree型数据 - getpresentOrganization(){ + getpresentOrganization() { this.newallorganizations = this.allorganizations this.newallorganizations.forEach(item => { item.children = [] this.newallorganizations.forEach(element => { - if(element.parentId == item.id){ + if (element.parentId == item.id) { item.children.push(element) } }); }); // console.log(666,this.organizationName) - if(this.organizationName){ + if (this.organizationName) { this.newallorganizations.forEach(item => { - if(item.name == this.organizationName){ + if (item.name == this.organizationName) { this.dataSource.data = [item] } }); - }else{ + } else { this.dataSource.data = this.tree.toTree(this.treedata); } - + } //获得所有组织机构 - getOrganizations(){ + getOrganizations() { this.http.get('/api/Organizations').subscribe( - (data:any)=>{ + (data: any) => { this.allorganizations = data this.treedata = this.tree.toTree(data); this.getpresentOrganization(); @@ -182,87 +182,69 @@ export class OpenPlanComponent implements OnInit { } //获得所有单位类型 - getUnittype(){ + getUnittype() { this.http.get('/api/BuildingTypes/Simple').subscribe( - data=>{ + data => { this.allunittype = data } ) } //跳转查看预案页面 公开预案 - routerTo(e){ + routerTo(e) { /* sessionStorage.setItem("companyName",element.companyName) window.open(`/planAudit/planpass?id=${element.companyId}&companyName=${element.companyName}&auditPlanId=${element.id}&auditStatus=${element.auditStatus}&type=6&planType=2`); */ // console.log(e) - if(e.planMode == 0||e.planMode == 1){ - //console.log(e.attachmentUrls) - var index=e.attachmentUrls[0].indexOf("\/") - if(e.attachmentUrls[0].substr(0,index)=='psw'){ - const dialogRef = this.dialog.open(GkhtmlPsViewer, { - 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://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl, - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - '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://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) - }) - } + if (e.planMode == 0 || e.planMode == 1) { + //console.log(e.attachmentUrls) + var index = e.attachmentUrls[0].indexOf("\/") + if (e.attachmentUrls[0].substr(0, index) == 'psw') { + const dialogRef = this.dialog.open(GkhtmlPsViewer, { + width: '1500px', + height: '800px', + data: e.attachmentUrls[0] + }); } - - if(e.planMode == 2){ //如果是在线编辑 - let id = e.id - sessionStorage.setItem("planId",id) - sessionStorage.setItem("companyId",e.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}`); - } - if(e.planMode == 3){ //如果是跳转网页 - sessionStorage.setItem("url",e.url) - window.open(`/planManagement/webLook`) + else { + let fetchUrl = e.attachmentUrls[0] + 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.planMode == 2) { //如果是在线编辑 + let id = e.id + sessionStorage.setItem("planId", id) + sessionStorage.setItem("companyId", e.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}`); + } + if (e.planMode == 3) { //如果是跳转网页 + sessionStorage.setItem("url", e.url) + window.open(`/planManagement/webLook`) + } } //分页事件 - chagePage(e){ - this.PageNumber = e.pageIndex+1 + chagePage(e) { + this.PageNumber = e.pageIndex + 1 this.getAllPlanInfo(); - } + } //辖区中队div是否显示 - isorganizationbox:boolean = false + isorganizationbox: boolean = false //点击辖区中队树,将选择的辖区中队添加到变量 add(node) { this.isorganizationbox = false @@ -278,23 +260,23 @@ export class OpenPlanComponent implements OnInit { this.isorganizationbox = true } //关闭出现的组织机构div - closediv(){ + closediv() { this.isorganizationbox = false } //查询 - onSubmit (e) { + onSubmit(e) { this.getAllPlanInfo() } - companyName:any //单位名称 - js:any //所选组织机构 - jsId:any //所选组织机构的id + companyName: any //单位名称 + js: any //所选组织机构 + jsId: any //所选组织机构的id // jscheck:boolean //所选组织机构勾选框 - unittype:any //单位类型 - reservePlanType:any //预案类型 - preparelevel:any //编制级别 - plcheck:boolean //编制级别勾选框 + unittype: any //单位类型 + reservePlanType: any //预案类型 + preparelevel: any //编制级别 + plcheck: boolean //编制级别勾选框 //重置 - reset(){ + reset() { this.companyName = '' // this.js = '' // this.jsId = '' @@ -307,7 +289,7 @@ export class OpenPlanComponent implements OnInit { this.pageEvent.pageIndex = 0 this.PageNumber = 1 this.getAllPlanInfo(); - + } } @@ -316,14 +298,14 @@ export class OpenPlanComponent implements OnInit { templateUrl: './PsvShow.html', styleUrls: ['./open-plan.component.scss'] }) -export class GkhtmlPsViewer{ - constructor(private router:Router,private http: HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data: any) {} +export class GkhtmlPsViewer { + constructor(private router: Router, private http: HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) { } ngOnInit(): void { // console.log(this.data) const viewer = new Viewer({ container: document.querySelector('#viewer'), - panorama:'/api/Objects/PlanPlatform/'+ this.data, - + panorama: '/api/Objects/PlanPlatform/' + this.data, + }); } } diff --git a/src/app/plan-management/pass-plan/pass-plan.component.ts b/src/app/plan-management/pass-plan/pass-plan.component.ts index 692ae62..973f521 100644 --- a/src/app/plan-management/pass-plan/pass-plan.component.ts +++ b/src/app/plan-management/pass-plan/pass-plan.component.ts @@ -4,7 +4,7 @@ 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 { 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'; @@ -18,8 +18,8 @@ declare var CryptoJS }) export class PassPlanComponent implements OnInit { - constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,private tree: TreeService,public dialog: MatDialog,public snackBar: MatSnackBar) { } - + constructor(private http: HttpClient, private router: Router, private route: ActivatedRoute, private tree: TreeService, public dialog: MatDialog, public snackBar: MatSnackBar) { } + private _transformer = (node, level: number) => { //初始化tree return { expandable: !!node.children && node.children.length > 0, @@ -35,239 +35,239 @@ export class PassPlanComponent implements OnInit { dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); myControl = new FormControl(); hasChild = (_: number, node: any) => node.expandable; - //分页 - @ViewChild(MatPaginator, {static: true}) + //分页 + @ViewChild(MatPaginator, { static: true }) pageEvent: PageEvent; paginator: MatPaginator; - length:any; //共多少条数据 - pageSize:any; //每页条数 + length: any; //共多少条数据 + pageSize: any; //每页条数 pageSizeOptions: number[] = [10] //设置每页条数 - PageNumber:any; //第几页 + PageNumber: any; //第几页 - displayedColumns: string[] = ['planname', 'addpeople','level','addtime','plantype','auditStatus','openRange','projectlevel','operation']; - allorganizations:any //所有组织机构 - allunittype:any //所有单位类型 - tabledataSource:any //表格数据 + displayedColumns: string[] = ['planname', 'addpeople', 'level', 'addtime', 'plantype', 'auditStatus', 'openRange', 'projectlevel', 'operation']; + allorganizations: any //所有组织机构 + allunittype: any //所有单位类型 + tabledataSource: any //表格数据 url - preparelevels:any + preparelevels: any ngOnInit(): void { - if(window.matchMedia("(max-width: 1400px)").matches){ - this.pcMore=false - this.padMore=true - this.pcfind=false - this.padjt=true - }else{ - this.pcfind=true - this.pcMore=true - this.padMore=false - this.padjt=false + if (window.matchMedia("(max-width: 1400px)").matches) { + this.pcMore = false + this.padMore = true + this.pcfind = false + this.padjt = true + } else { + this.pcfind = true + this.pcMore = true + this.padMore = false + this.padjt = false } this.getunitdata(); this.getOrganizations(); this.getUnittype(); this.getAllPlanInfo(); let level = sessionStorage.getItem("level"); - if(level == "0"){//如果是总队 + if (level == "0") {//如果是总队 this.preparelevels = [ - {name:"总队",value:"1"}, - {name:"支队",value:"2"}, - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "总队", value: "1" }, + { name: "支队", value: "2" }, + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(level == "1"){//如果是支队 + if (level == "1") {//如果是支队 this.preparelevels = [ - {name:"支队",value:"2"}, - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "支队", value: "2" }, + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(level == "2"){//如果是大队 + if (level == "2") {//如果是大队 this.preparelevels = [ - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(level == "3"){//如果是中队 + if (level == "3") {//如果是中队 this.preparelevels = [ - {name:"中队",value:"8"} + { name: "中队", value: "8" } ] } - this.url=window.location.href.substring(window.location.href.length-1,window.location.href.length) + this.url = window.location.href.substring(window.location.href.length - 1, window.location.href.length) //console.log(this.url) } pcMore//pc更多 - pcput=false//pc收起 + pcput = false//pc收起 pcfind//pc查询 - padjt=false - padMore=true//pad收缩控制 - padput=false//pad收起按钮 - imgsrcopen="../../../assets/images/routdown2.png" - imgsrcdown="../../../assets/images/routup2.png" - pcInfo(){ - this.pcMore=!this.pcMore - this.pcput=!this.pcput + padjt = false + padMore = true//pad收缩控制 + padput = false//pad收起按钮 + imgsrcopen = "../../../assets/images/routdown2.png" + imgsrcdown = "../../../assets/images/routup2.png" + pcInfo() { + this.pcMore = !this.pcMore + this.pcput = !this.pcput } - padInfo(){ - this.padMore=!this.padMore - this.padput=!this.padput + padInfo() { + this.padMore = !this.padMore + this.padput = !this.padput } - allPlanInfo:any //存储所有预案信息 + allPlanInfo: any //存储所有预案信息 //获得所有预案信息 - getAllPlanInfo(){ + getAllPlanInfo() { let reservePlanType this.reservePlanType ? reservePlanType = JSON.parse(JSON.stringify(this.reservePlanType)) : reservePlanType = '' - if(this.reservePlanType && this.reservePlanType.length != 0){ + if (this.reservePlanType && this.reservePlanType.length != 0) { reservePlanType = eval(this.reservePlanType.join("|")) - } - let paramsdata:any = { + } + let paramsdata: any = { CompanyName: this.companyName || '', OrganizationId: this.jsId || '', - HasChildrenOrganization:this.jscheck || '', - BuildingTypeId: this.unittype || '', + HasChildrenOrganization: this.jscheck || '', + BuildingTypeId: this.unittype || '', PlanType: this.reservePlanType || '', - AuditStatus:'', //审核状态 - PlanLevel: this.preparelevel || '', + AuditStatus: '', //审核状态 + PlanLevel: this.preparelevel || '', HasChildrenPlanLevel: this.plcheck || '', - CreationTimeRangeStart:this.addtime||'', - CreationTimeRangeEnd:this.endtime||'', + CreationTimeRangeStart: this.addtime || '', + CreationTimeRangeEnd: this.endtime || '', PageNumber: this.PageNumber || '1', - PageSize: this.pageSizeOptions[0], + PageSize: this.pageSizeOptions[0], Sort: '', - PlanCategories:this.planCategory + PlanCategories: this.planCategory } - this.http.get("/api/ApprovedPlans",{params:paramsdata}).subscribe((data:any)=>{ + this.http.get("/api/ApprovedPlans", { params: paramsdata }).subscribe((data: any) => { this.length = data.totalCount this.allPlanInfo = data - this.tabledataSource = data.items + this.tabledataSource = data.items }) } - colorRgb(sColor){ + colorRgb(sColor) { var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; var sColor = sColor.toLowerCase(); if (sColor && reg.test(sColor)) { - if (sColor.length === 4) { - var sColorNew = "#"; - for (var i = 1; i < 4; i += 1) { - sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); - } - sColor = sColorNew; + if (sColor.length === 4) { + var sColorNew = "#"; + for (var i = 1; i < 4; i += 1) { + sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); } - //处理六位的颜色值 - var sColorChange = []; - for (var i = 1; i < 7; i += 2) { - sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2))); - } - return sColorChange; + sColor = sColorNew; + } + //处理六位的颜色值 + var sColorChange = []; + for (var i = 1; i < 7; i += 2) { + sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2))); + } + return sColorChange; } else { - return sColor; + return sColor; } } - colorHex(rgb){ + colorHex(rgb) { var _this = rgb; var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; if (/^(rgb|RGB)/.test(_this)) { - var aColor = _this.replace(/(?:(|)|rgb|RGB)*/g, "").split(","); - var strHex = "#"; - for (var i = 0; i < aColor.length; i++) { - var hex:any = Number(aColor[i]).toString(16); - hex = hex < 10 ? 0 + '' + hex : hex;// 保证每个rgb的值为2位 - if (hex === "0") { - hex += hex; - } - strHex += hex; - } - if (strHex.length !== 7) { - strHex = _this; + var aColor = _this.replace(/(?:(|)|rgb|RGB)*/g, "").split(","); + var strHex = "#"; + for (var i = 0; i < aColor.length; i++) { + var hex: any = Number(aColor[i]).toString(16); + hex = hex < 10 ? 0 + '' + hex : hex;// 保证每个rgb的值为2位 + if (hex === "0") { + hex += hex; } - return strHex; + strHex += hex; + } + if (strHex.length !== 7) { + strHex = _this; + } + return strHex; } else if (reg.test(_this)) { - var aNum = _this.replace(/#/, "").split(""); - if (aNum.length === 6) { - return _this; - } else if (aNum.length === 3) { - var numHex = "#"; - for (var i = 0; i < aNum.length; i += 1) { - numHex += (aNum[i] + aNum[i]); - } - return numHex; + var aNum = _this.replace(/#/, "").split(""); + if (aNum.length === 6) { + return _this; + } else if (aNum.length === 3) { + var numHex = "#"; + for (var i = 0; i < aNum.length; i += 1) { + numHex += (aNum[i] + aNum[i]); } + return numHex; + } } else { - return _this; + return _this; } } gradientColor(startColor, endColor, step) { let _this = this - let startRGB = _this.colorRgb(startColor);//转换为rgb数组模式 - let startR = startRGB[0]; - let startG = startRGB[1]; - let startB = startRGB[2]; + let startRGB = _this.colorRgb(startColor);//转换为rgb数组模式 + let startR = startRGB[0]; + let startG = startRGB[1]; + let startB = startRGB[2]; - let endRGB = _this.colorRgb(endColor); - let endR = endRGB[0]; - let endG = endRGB[1]; - let endB = endRGB[2]; + let endRGB = _this.colorRgb(endColor); + let endR = endRGB[0]; + let endG = endRGB[1]; + let endB = endRGB[2]; - let sR = (endR - startR) / step;//总差值 - let sG = (endG - startG) / step; - let sB = (endB - startB) / step; + let sR = (endR - startR) / step;//总差值 + let sG = (endG - startG) / step; + let sB = (endB - startB) / step; var colorArr = []; for (var i = 0; i < step; i++) { - //计算每一步的hex值 - var hex = _this.colorHex('rgb('+ parseInt((sR * i + startR))+ ',' + parseInt((sG * i + startG))+ ',' + parseInt((sB * i + startB)) + ')'); - colorArr.push(hex); + //计算每一步的hex值 + var hex = _this.colorHex('rgb(' + parseInt((sR * i + startR)) + ',' + parseInt((sG * i + startG)) + ',' + parseInt((sB * i + startB)) + ')'); + colorArr.push(hex); } return colorArr; -} - integrity(width){ + } + integrity(width) { let _this = this - - let style:any = {} - style.width = width +'%'; - if(width < 30){ - let colorArr = this.gradientColor('#D50000', '#E53935', 30); - for(let i = 0; i < 30; i++){ - if( i == width){ + + let style: any = {} + style.width = width + '%'; + if (width < 30) { + let colorArr = this.gradientColor('#D50000', '#E53935', 30); + for (let i = 0; i < 30; i++) { + if (i == width) { style.background = colorArr[i] } } } - if(width >= 30 && width < 60){ - let colorArr = this.gradientColor('#FF9800', '#E65100', 30); - for(let i = 30; i < 60; i++){ - if( i == width){ - style.background = colorArr[i-30] + if (width >= 30 && width < 60) { + let colorArr = this.gradientColor('#FF9800', '#E65100', 30); + for (let i = 30; i < 60; i++) { + if (i == width) { + style.background = colorArr[i - 30] } } } - if(width >= 60){ - let colorArr = this.gradientColor('#81C784', '#2E7D32', 41); - for(let i = 60; i <= 100; i++){ - if( i == width){ - style.background = colorArr[i-60] + if (width >= 60) { + let colorArr = this.gradientColor('#81C784', '#2E7D32', 41); + for (let i = 60; i <= 100; i++) { + if (i == width) { + style.background = colorArr[i - 60] } } } return style } - integrityDetails(width,zong){ - let style:any = {} - style.width = (width/zong)*100 +'%'; + integrityDetails(width, zong) { + let style: any = {} + style.width = (width / zong) * 100 + '%'; return style } //得到当前单位信息 - getunitdata(){ + getunitdata() { this.http.get("/api/Account/Profiles").subscribe( - (data:any)=>{ - this.organizationName = data.organizationName + (data: any) => { + this.organizationName = data.organizationName } ) } @@ -275,41 +275,41 @@ export class PassPlanComponent implements OnInit { endtime//结束时间 integrityScoreMin//完整度最小值 integrityScoreMax//完整度最大值 - organizationName:any //当前单位组织机构名称 - treedata:any //组织机构树型数据 - newArr:any = [] - newallorganizations:any //用于存储在原始数据基础上的每个机构增加children字段 + organizationName: any //当前单位组织机构名称 + treedata: any //组织机构树型数据 + newArr: any = [] + newallorganizations: any //用于存储在原始数据基础上的每个机构增加children字段 //得到当前单位所在组织机构的tree型数据 - getpresentOrganization(){ + getpresentOrganization() { this.newallorganizations = this.allorganizations this.newallorganizations.forEach(item => { item.children = [] this.newallorganizations.forEach(element => { - if(element.parentId == item.id){ + if (element.parentId == item.id) { item.children.push(element) } }); }); this.http.get("/api/Account/Profiles").subscribe( - (data:any)=>{ + (data: any) => { this.organizationName = data.organizationName - if(this.organizationName){ + if (this.organizationName) { this.newallorganizations.forEach(item => { - if(item.name == this.organizationName){ + if (item.name == this.organizationName) { this.dataSource.data = [item] } }); - }else{ + } else { this.dataSource.data = this.tree.toTree(this.treedata); } } ) - + } //获得所有组织机构 - getOrganizations(){ + getOrganizations() { this.http.get('/api/Organizations').subscribe( - (data:any)=>{ + (data: any) => { this.allorganizations = data this.treedata = this.tree.toTree(data); this.getpresentOrganization(); @@ -318,120 +318,102 @@ export class PassPlanComponent implements OnInit { } //获得所有单位类型 - getUnittype(){ + getUnittype() { this.http.get('/api/BuildingTypes/Simple').subscribe( - data=>{ + data => { this.allunittype = data } ) } //查看单位信息 - lookUnitInfo(element){ + lookUnitInfo(element) { // console.log(element) // const dialogRef = this.dialog.open(UnitInfo, { // width: '1500px', // height:'800px' // }); - sessionStorage.setItem("editable","0") - sessionStorage.setItem("companyName",element.company.name) - sessionStorage.setItem("companyId",element.company.id) - sessionStorage.setItem(element.company.id,JSON.stringify(element.company.companyIntegrityScore)) - window.open(`/keyUnit/viewunitinfo?id=${element.company.id}&usci=${element.company.usci}`,'_blank'); + sessionStorage.setItem("editable", "0") + sessionStorage.setItem("companyName", element.company.name) + sessionStorage.setItem("companyId", element.company.id) + sessionStorage.setItem(element.company.id, JSON.stringify(element.company.companyIntegrityScore)) + window.open(`/keyUnit/viewunitinfo?id=${element.company.id}&usci=${element.company.usci}`, '_blank'); } //跳转查看预案页面 审核通过预案 - routerTo(e){ + routerTo(e) { // console.log(e) - if(e.planMode == 0||e.planMode == 1){ + if (e.planMode == 0 || e.planMode == 1) { //console.log(e.attachmentUrls) - var index=e.attachmentUrls[0].indexOf("\/") - if(e.attachmentUrls[0].substr(0,index)=='psw'){ + var index = e.attachmentUrls[0].indexOf("\/") + if (e.attachmentUrls[0].substr(0, index) == 'psw') { const dialogRef = this.dialog.open(GkPsViewer, { width: '1500px', - height:'800px', + 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://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl, - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - '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://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) - }) + else { + let fetchUrl = e.attachmentUrls[0] + 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.planMode == 2){ //如果是在线编辑 - let id = e.id - sessionStorage.setItem("planId",id) - sessionStorage.setItem("companyId",e.companyId) + } + + if (e.planMode == 2) { //如果是在线编辑 + let id = e.id + sessionStorage.setItem("planId", id) + sessionStorage.setItem("companyId", e.companyId) //sessionStorage.setItem("buildingTypeId",this.unittypeId) - sessionStorage.setItem("editable","0") - sessionStorage.setItem("planName",e.name) + sessionStorage.setItem("editable", "0") + sessionStorage.setItem("planName", e.name) let companyId = sessionStorage.getItem("companyId") window.open(`/keyUnit/viewunitinfoplan?id=${companyId}`); } - if(e.planMode == 3){ //如果是跳转网页 - sessionStorage.setItem("url",e.url) + if (e.planMode == 3) { //如果是跳转网页 + sessionStorage.setItem("url", e.url) window.open(`/planManagement/webLook`) } } //预案公开 - openReserve (e) { - this.http.put(`/api/PlanAudits/${e.id}/Public`,[]).subscribe(data=>{ + openReserve(e) { + this.http.put(`/api/PlanAudits/${e.id}/Public`, []).subscribe(data => { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - this.snackBar.open('预案已公开','确定',config); + this.snackBar.open('预案已公开', '确定', config); }) } //预案取消公开 - closeReserve (e) { - this.http.put(`/api/PlanAudits/${e.id}/Unpublic`,[]).subscribe(data=>{ + closeReserve(e) { + this.http.put(`/api/PlanAudits/${e.id}/Unpublic`, []).subscribe(data => { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - this.snackBar.open('预案已取消公开','确定',config); + this.snackBar.open('预案已取消公开', '确定', config); }) } - + //分页事件 - chagePage(e){ - this.PageNumber = e.pageIndex+1 + chagePage(e) { + this.PageNumber = e.pageIndex + 1 this.getAllPlanInfo(); } //辖区中队div是否显示 - isorganizationbox:boolean = false + isorganizationbox: boolean = false //点击辖区中队树,将选择的辖区中队添加到变量 add(node) { this.isorganizationbox = false @@ -447,26 +429,26 @@ export class PassPlanComponent implements OnInit { this.isorganizationbox = true } //关闭出现的组织机构div - closediv(){ + closediv() { this.isorganizationbox = false } //查询 - onSubmit (e) { + onSubmit(e) { this.PageNumber = 1 this.pageEvent.pageIndex = 0 this.getAllPlanInfo(); } - companyName:any //单位名称 - js:any //所选组织机构 - jsId:any //所选组织机构的id - jscheck:boolean //所选组织机构勾选框 - unittype:any //单位类型 - reservePlanType:any //预案类型 - preparelevel:any //编制级别 - plcheck:boolean //编制级别勾选框 - planCategory=[]//预案级别 + companyName: any //单位名称 + js: any //所选组织机构 + jsId: any //所选组织机构的id + jscheck: boolean //所选组织机构勾选框 + unittype: any //单位类型 + reservePlanType: any //预案类型 + preparelevel: any //编制级别 + plcheck: boolean //编制级别勾选框 + planCategory = []//预案级别 //重置 - reset(){ + reset() { this.companyName = '' this.js = '' this.jsId = '' @@ -474,13 +456,13 @@ export class PassPlanComponent implements OnInit { this.unittype = '' this.reservePlanType = '' this.preparelevel = '' - this.addtime='' - this.endtime='' + this.addtime = '' + this.endtime = '' this.plcheck = false //重新获取初始化列表 this.pageEvent.pageIndex = 0 this.PageNumber = 1 - this.planCategory=[] + this.planCategory = [] this.getAllPlanInfo(); } } @@ -490,14 +472,14 @@ export class PassPlanComponent implements OnInit { templateUrl: './PsvShow.html', styleUrls: ['./pass-plan.component.scss'] }) -export class GkPsViewer{ - constructor(private router:Router,private http: HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data: any) {} +export class GkPsViewer { + constructor(private router: Router, private http: HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) { } ngOnInit(): void { // console.log(this.data) const viewer = new Viewer({ container: document.querySelector('#viewer'), - panorama:'/api/Objects/PlanPlatform/'+ this.data, - + panorama: '/api/Objects/PlanPlatform/' + this.data, + }); } } @@ -508,8 +490,8 @@ export class GkPsViewer{ templateUrl: './unitInfo.html', styleUrls: ['./pass-plan.component.scss'] }) -export class UnitInfo{ - constructor(private router:Router,private http: HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data: any) {} +export class UnitInfo { + constructor(private router: Router, private http: HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) { } ngOnInit(): void { // console.log(this.data) } diff --git a/src/app/plan-management/type-plan/type-plan.component.ts b/src/app/plan-management/type-plan/type-plan.component.ts index 1dff9e9..6eb1bb3 100644 --- a/src/app/plan-management/type-plan/type-plan.component.ts +++ b/src/app/plan-management/type-plan/type-plan.component.ts @@ -12,7 +12,7 @@ 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 { 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'; @@ -26,70 +26,70 @@ declare var CryptoJS }) export class TypePlanComponent implements OnInit { - constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,private tree: TreeService,public dialog: MatDialog,public snackBar: MatSnackBar) { } + constructor(private http: HttpClient, private router: Router, private route: ActivatedRoute, private tree: TreeService, public dialog: MatDialog, public snackBar: MatSnackBar) { } ngOnInit(): void { - if(window.matchMedia("(max-width: 1400px)").matches){ - this.pcMore=false - this.padMore=true - this.pcfind=false - this.padjt=true - }else{ - this.pcfind=true - this.pcMore=true - this.padMore=false - this.padjt=false + if (window.matchMedia("(max-width: 1400px)").matches) { + this.pcMore = false + this.padMore = true + this.pcfind = false + this.padjt = true + } else { + this.pcfind = true + this.pcMore = true + this.padMore = false + this.padjt = false } this.levels = sessionStorage.getItem("level"); - if(this.levels == "0"){//如果是总队 + if (this.levels == "0") {//如果是总队 this.preparelevels = [ - {name:"总队",value:"1"}, - {name:"支队",value:"2"}, - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "总队", value: "1" }, + { name: "支队", value: "2" }, + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(this.levels == "1"){//如果是支队 + if (this.levels == "1") {//如果是支队 this.preparelevels = [ - {name:"支队",value:"2"}, - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "支队", value: "2" }, + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(this.levels == "2"){//如果是大队 + if (this.levels == "2") {//如果是大队 this.preparelevels = [ - {name:"大队",value:"4"}, - {name:"中队",value:"8"} + { name: "大队", value: "4" }, + { name: "中队", value: "8" } ] } - if(this.levels == "3"){//如果是中队 + if (this.levels == "3") {//如果是中队 this.preparelevels = [ - {name:"中队",value:"8"} + { name: "中队", value: "8" } ] } this.getAlltabledate() } pcMore//pc更多 - pcput=false//pc收起 + pcput = false//pc收起 pcfind//pc查询 - padjt=false - padMore=true//pad收缩控制 - padput=false//pad收起按钮 - imgsrcopen="../../../assets/images/routdown2.png" - imgsrcdown="../../../assets/images/routup2.png" - pcInfo(){ - this.pcMore=!this.pcMore - this.pcput=!this.pcput + padjt = false + padMore = true//pad收缩控制 + padput = false//pad收起按钮 + imgsrcopen = "../../../assets/images/routdown2.png" + imgsrcdown = "../../../assets/images/routup2.png" + pcInfo() { + this.pcMore = !this.pcMore + this.pcput = !this.pcput } - padInfo(){ - this.padMore=!this.padMore - this.padput=!this.padput + padInfo() { + this.padMore = !this.padMore + this.padput = !this.padput } - + levels - preparelevels:any - plcheck:boolean //编制级别勾选框 - displayedColumns: string[] = ['unitname','addname','addtime', 'plantype', 'passstate','isopen','projectlevel','operation']; + preparelevels: any + plcheck: boolean //编制级别勾选框 + displayedColumns: string[] = ['unitname', 'addname', 'addtime', 'plantype', 'passstate', 'isopen', 'projectlevel', 'operation']; tabledataSource unitname//预案名称 level//预案级别 @@ -100,225 +100,205 @@ export class TypePlanComponent implements OnInit { unitstate//审核状态 projectlevel//编制级别 //分页 - @ViewChild(MatPaginator, {static: true}) + @ViewChild(MatPaginator, { static: true }) pageEvent: PageEvent; paginator: MatPaginator; - length:any; //共多少条数据 - pageSize:any; //每页条数 + length: any; //共多少条数据 + pageSize: any; //每页条数 pageSizeOptions: number[] = [10] //设置每页条数 - PageNumber:any; //第几页 + PageNumber: any; //第几页 //获取表格数据 - getAlltabledate(){ - let paramsdata:any = { - Name:this.unitname||'', - planCategories:8, - CreatorName:this.addname||'', - AuditStatus:this.unitstate|| '', - CreationTimeRangeStart:this.addtime||'', - CreationTimeRangeEnd:this.endtime||'', - PlanLevel:this.projectlevel||'', - HasChildrenPlanLevel:this.plcheck||'', + getAlltabledate() { + let paramsdata: any = { + Name: this.unitname || '', + planCategories: 8, + CreatorName: this.addname || '', + AuditStatus: this.unitstate || '', + CreationTimeRangeStart: this.addtime || '', + CreationTimeRangeEnd: this.endtime || '', + PlanLevel: this.projectlevel || '', + HasChildrenPlanLevel: this.plcheck || '', PageNumber: this.PageNumber || '1', - PageSize: this.pageSizeOptions[0], - + PageSize: this.pageSizeOptions[0], + } - this.http.get("/api/PlanComponentsMajor",{params:paramsdata}).subscribe((data:any)=>{ + this.http.get("/api/PlanComponentsMajor", { params: paramsdata }).subscribe((data: any) => { this.length = data.totalCount this.tabledataSource = data.items }) } //分页事件 - changePage(e){ - this.PageNumber = e.pageIndex+1 + changePage(e) { + this.PageNumber = e.pageIndex + 1 this.getAlltabledate() } //重置 - reset(){ - this.unitname='' - this.level='' - this.addname='' - this.addtime='' - this.endtime='' - this.unitstate='' - this.projectlevel='' - this.plcheck=false + reset() { + this.unitname = '' + this.level = '' + this.addname = '' + this.addtime = '' + this.endtime = '' + this.unitstate = '' + this.projectlevel = '' + this.plcheck = false this.getAlltabledate() } //查询 - onSubmit (value) { - if(this.endtime!=undefined&&this.addtime>this.endtime){ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('开始时间不能大于结束时间!','确定',config); - }else{ + onSubmit(value) { + if (this.endtime != undefined && this.addtime > this.endtime) { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('开始时间不能大于结束时间!', '确定', config); + } else { this.PageNumber = 1 this.pageEvent.pageIndex = 0 this.getAlltabledate(); } - + } //删除预案 - deletePlan(id){ + deletePlan(id) { let isTrue = confirm('您确定要删除吗') - if(isTrue){ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.http.delete(`/api/PlanComponentsMajor/${id}`).subscribe(data=>{ - this.snackBar.open('删除成功!','确定',config); - this.getAlltabledate() - },err => { - this.snackBar.open(err,'确定',config); - }) + if (isTrue) { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.http.delete(`/api/PlanComponentsMajor/${id}`).subscribe(data => { + this.snackBar.open('删除成功!', '确定', config); + this.getAlltabledate() + }, err => { + this.snackBar.open(err, '确定', config); + }) } - + } - + //提交审核 - submitAudit(element){ + submitAudit(element) { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 /* if(element.auditStatus == 4){ this.snackBar.open('审核退回的预案需要修改后方可再次提交审核!','确定',config); } */ - this.http.put(`/api/PlanComponentsMajor/${element.id}/Commit`,"").subscribe(data=>{ - this.getAlltabledate() - },err => { - this.snackBar.open(err,'确定',config); - }) - - + this.http.put(`/api/PlanComponentsMajor/${element.id}/Commit`, "").subscribe(data => { + this.getAlltabledate() + }, err => { + this.snackBar.open(err, '确定', config); + }) + + } //撤销审核 - cancelAudit(element){ + cancelAudit(element) { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - this.http.put(`/api/PlanComponentsMajor/${element.id}/Cancel`,"").subscribe(data=>{ + this.http.put(`/api/PlanComponentsMajor/${element.id}/Cancel`, "").subscribe(data => { this.getAlltabledate() - },err => { - this.snackBar.open(err,'确定',config); + }, err => { + this.snackBar.open(err, '确定', config); }) } //查看预案 - openPlan(element){ - let filename:string + openPlan(element) { let fetchUrl = element.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://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl, - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: element.auditStatus!='1'&&element.auditStatus!='16'?[ - 'FILE_READ','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://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) - }) - - + 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); + } } //新增预案弹窗 - addunit(){ + addunit() { const dialogRef = this.dialog.open(newunitType, { width: '340px', - height:'330px', - disableClose:true + height: '330px', + disableClose: true //data: paperDataInfo }); dialogRef.afterClosed().subscribe(result => { this.getAlltabledate() } ); - + } //审核结果 - auditResult(element){ + auditResult(element) { // console.log(element) const dialogRef = this.dialog.open(typeAuditResult, { - width:"400px", + width: "400px", //height:"300px", - data: {element:element} + data: { element: element } }); } //下载↓ - selectDownloadFile:any; //选择下载的文件 - download:any; //下载文件元数据 - downloadisLoading:boolean = false; //进度条loading加载 - downloadProgress:number=0; //进度条进度 - downloadFileName:any - fileUrls:any //当前预案附件地址 - fileDatas:any = [] - selectedFileIndex : any = 0 - selectedFileData : any - - uploadFileLonging:any + selectDownloadFile: any; //选择下载的文件 + download: any; //下载文件元数据 + downloadisLoading: boolean = false; //进度条loading加载 + downloadProgress: number = 0; //进度条进度 + downloadFileName: any + fileUrls: any //当前预案附件地址 + fileDatas: any = [] + selectedFileIndex: any = 0 + selectedFileData: any + + uploadFileLonging: any //读取下载文件信息 - readFile (element) { + readFile(element) { this.uploadFileLonging = element - element.attachmentUrls.forEach(item=>{ - this.http.get('/api/ObjectMetadata/PlanPlatform/'+item).subscribe((data:any)=>{ - data.filePige = (data.fileLength / (1024*1024)).toFixed(2) + element.attachmentUrls.forEach(item => { + this.http.get('/api/ObjectMetadata/PlanPlatform/' + item).subscribe((data: any) => { + data.filePige = (data.fileLength / (1024 * 1024)).toFixed(2) //console.log(data) this.download = data this.downloadFile() }) }) - + } //初始化下载 - downloadFile () { + downloadFile() { this.downloadProgress = 0 let file = this.download let fileSize = file.fileLength//下载文件的总大小 let shardSize = 10 * 1024 * 1024 //文件大小是否大于10MB - if (file && fileSize<=shardSize) { //<=10MB时直接下载 + if (file && fileSize <= shardSize) { //<=10MB时直接下载 this.downloadisLoading = true // this.setFileLoading() - this.http.get(`/api/Objects/PlanPlatform/${file.objectName}`,{responseType: 'blob'},).subscribe(data=>{ + 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 + "-" +this.uploadFileLonging.name + "." + suffix); + let suffix = file.objectName.substring(file.objectName.lastIndexOf(".") + 1, file.objectName.length); + link.setAttribute("download", file.fileName + "-" + this.uploadFileLonging.name + "." + suffix); document.body.appendChild(link); link.click(); this.downloadisLoading = false // this.setFileLoading() }) - } else if (file && fileSize > shardSize) { //>10MB时分块下载 + } else if (file && fileSize > shardSize) { //>10MB时分块下载 this.blockingDownload() //分段下载 this.downloadisLoading = true // this.setFileLoading() @@ -327,31 +307,32 @@ export class TypePlanComponent implements OnInit { } //分段下载并合并 - async blockingDownload () { + 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分段 + let allFile: any = [] //所有的file分段 - for (let i=0;i{ - this.http.get(`/api/Objects/PlanPlatform/${file.objectName}`,{headers:{'range':`bytes= ${start}-${end}`},responseType:'blob'}).subscribe(data=>{ - result(data) }) + 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 + 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 + "-" +this.uploadFileLonging.name + "." + suffix); + let suffix = file.objectName.substring(file.objectName.lastIndexOf(".") + 1, file.objectName.length); + link.setAttribute("download", file.fileName + "-" + this.uploadFileLonging.name + "." + suffix); document.body.appendChild(link); link.click(); // this.downloadProgress = 0 @@ -364,7 +345,7 @@ export class TypePlanComponent implements OnInit { } //取消分块下载 - cancelDowload () { + cancelDowload() { } } @@ -375,8 +356,8 @@ export class TypePlanComponent implements OnInit { templateUrl: './newunit.html', styleUrls: ['./newunit.scss'] }) -export class newunitType{ - constructor(private router:Router,private http: HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data: any) {} +export class newunitType { + constructor(private router: Router, private http: HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) { } unitname//预案名称 level//预案级别 addname//添加人 @@ -386,209 +367,211 @@ export class newunitType{ projectlevel//编制级别 reservePlanType//预案类型 //上传 - upload(){ + upload() { document.getElementById('up').click() } //上传文件↓ - file:any; //上传的文件 - fileName:any; //上传文件name - uploadisLoading:boolean = false; //进度条loading加载 - uploadProgress:number=0; //进度条进度 - objectName:any; //上传对象名 - uploadId:any; //上传分块上传事件编号 - uploadover:any = false //上传完成之后提示 - selectedPLanType:any//所选预案类型 - selectedPLanName:any//所选预案名称 - localup:boolean = false //本地上传 + file: any; //上传的文件 + fileName: any; //上传文件name + uploadisLoading: boolean = false; //进度条loading加载 + uploadProgress: number = 0; //进度条进度 + objectName: any; //上传对象名 + uploadId: any; //上传分块上传事件编号 + uploadover: any = false //上传完成之后提示 + selectedPLanType: any//所选预案类型 + selectedPLanName: any//所选预案名称 + localup: boolean = false //本地上传 defaultisshow = '0' //默认显示上传input框 //上传文件input - filechange(e){ - this.file = e.target.files[0] || null //上传的文件 + filechange(e) { + this.file = e.target.files[0] || null //上传的文件 } - //上传文件 - startUploading (planType) { - let file = this.file || null //获取上传的文件 - let fileSize = file.size || null //上传文件的总大小 - let shardSize = 5 * 1024 * 1024 //5MB一个分片 + //上传文件 + 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) - const config = new MatSnackBarConfig(); + if (file && fileSize <= shardSize) { //上传文件<=5MB时 + let formData = new FormData() + formData.append("file", file) + 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.post(`/api/Objects/PlanPlatform/typeClass`,formData).subscribe((data:any)=>{ - this.objectName = data.objectName - //console.log('上传成功') - - let body:any = { - Name:this.unitname||'', - PlanCategory:8, - PlanLevel:PlanLevel, - PlanMode:1, - PlanType:8, - planType:16, - attachmentUrls:[`${this.objectName}`] + // console.log(level) + let PlanLevel + if (level == '0') { + PlanLevel = 1 + } + if (level == '1') { + PlanLevel = 2 } - this.http.post("/api/PlanComponentsMajor",body).subscribe((data:any)=>{ - this.snackBar.open('创建成功!','确定',config); - this.dialogRef.close(); - },err=>{ - this.snackBar.open('创建失败!','确定',config); + if (level == '2') { + PlanLevel = 4 + } + if (level == '3') { + PlanLevel = 8 + } + this.http.post(`/api/Objects/PlanPlatform/typeClass`, formData).subscribe((data: any) => { + this.objectName = data.objectName + //console.log('上传成功') + + let body: any = { + Name: this.unitname || '', + PlanCategory: 8, + PlanLevel: PlanLevel, + PlanMode: 1, + PlanType: 8, + planType: 16, + attachmentUrls: [`${this.objectName}`] + } + this.http.post("/api/PlanComponentsMajor", body).subscribe((data: any) => { + this.snackBar.open('创建成功!', '确定', config); + this.dialogRef.close(); + }, err => { + this.snackBar.open('创建失败!', '确定', config); + }) + }, err => { + this.snackBar.open('上传失败!', '确定', config); }) - },err=>{ - this.snackBar.open('上传失败!','确定',config); - }) - } else if (file && fileSize>shardSize) { //上传文件>5MB时,分块上传 - let data = {filename: file.name} - this.uploadisLoading = true - this.http.post(`/api/NewMultipartUpload/PlanPlatform/typeClass`,{},{params:data}).subscribe((data:any)=>{ //初始化分段上传 - this.objectName = data.objectName - this.uploadId = data.uploadId - this.subsectionUploading(planType) - }) - } + } else if (file && fileSize > shardSize) { //上传文件>5MB时,分块上传 + let data = { filename: file.name } + this.uploadisLoading = true + this.http.post(`/api/NewMultipartUpload/PlanPlatform/typeClass`, {}, { params: data }).subscribe((data: any) => { //初始化分段上传 + this.objectName = data.objectName + this.uploadId = data.uploadId + this.subsectionUploading(planType) + }) + } } - PartNumberETag:any=[]; //每次返回需要保存的信息 + PartNumberETag: any = []; //每次返回需要保存的信息 //开始分段上传 - async subsectionUploading (planType) { + 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 (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循环 } //完成分块上传 - endUploading (planType) { + 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 - //console.log('创建成功') - 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 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 + //console.log('创建成功') + 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 body:any = { - Name:this.unitname||'', - PlanCategory:8, - PlanLevel:PlanLevel, - PlanMode:1, - PlanType:8, - planType:16, - attachmentUrls:[`${this.objectName}`] - } - - this.http.post("/api/PlanComponentsMajor",body).subscribe((data:any)=>{ - this.snackBar.open('创建成功!','确定',config); - this.dialogRef.close(); - },err=>{ - this.snackBar.open('创建失败!','确定',config); - }) + let body: any = { + Name: this.unitname || '', + PlanCategory: 8, + PlanLevel: PlanLevel, + PlanMode: 1, + PlanType: 8, + planType: 16, + attachmentUrls: [`${this.objectName}`] + } + + this.http.post("/api/PlanComponentsMajor", body).subscribe((data: any) => { + this.snackBar.open('创建成功!', '确定', config); + this.dialogRef.close(); + }, err => { + this.snackBar.open('创建失败!', '确定', config); + }) }) } - + //取消分块上传 - cancel () { - this.http.delete(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}`).subscribe(data=>{ + cancel() { + this.http.delete(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}`).subscribe(data => { this.uploadProgress = 0; - this.uploadisLoading= false; - (document.getElementById('up')).value = null - this.PartNumberETag =[] //清空保存返回的信息 + this.uploadisLoading = false; + (document.getElementById('up')).value = null + this.PartNumberETag = [] //清空保存返回的信息 const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - this.snackBar.open('取消上传成功!','确定',config); + this.snackBar.open('取消上传成功!', '确定', config); this.uploadover = false this.file = null }) } //创建预案 - newplan(){ + newplan() { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 - if(this.unitname==undefined||this.unitname==''){ - this.snackBar.open('请输入预案名称!','确定',config); + if (this.unitname == undefined || this.unitname == '') { + this.snackBar.open('请输入预案名称!', '确定', config); } - else if(this.file==undefined){ - this.snackBar.open('请先上传文件!','确定',config); + else if (this.file == undefined) { + this.snackBar.open('请先上传文件!', '确定', config); } - else{ - if(this.reservePlanType!='1'){ + else { + if (this.reservePlanType != '1') { this.startUploading("非二维") } - else{this.startUploading("二维")} - - + else { this.startUploading("二维") } + + } - + } //取消按钮 - close(){ + close() { this.dialogRef.close(); } } @@ -599,15 +582,15 @@ export class newunitType{ templateUrl: './resulttypePlan.html', styleUrls: ['./type-plan.component.scss'] }) -export class typeAuditResult{ - constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data,public snackBar: MatSnackBar) {} - planName:any = this.data.element.name - commitTime:any = this.data.element.committedTime - commitOrganizationName:any = this.data.element.committerOrganizationName - - auditOrganizationName:any = this.data.element.auditorOrganizationName - auditResult:any = this.data.element.auditStatus - auditOpinion:any = this.data.element.auditOpinion +export class typeAuditResult { + constructor(private http: HttpClient, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data, public snackBar: MatSnackBar) { } + planName: any = this.data.element.name + commitTime: any = this.data.element.committedTime + commitOrganizationName: any = this.data.element.committerOrganizationName + + auditOrganizationName: any = this.data.element.auditorOrganizationName + auditResult: any = this.data.element.auditStatus + auditOpinion: any = this.data.element.auditOpinion ngOnInit(): void { } onNoClick(): void { diff --git a/src/app/statistic-analysis/all-plan/all-plan.component.ts b/src/app/statistic-analysis/all-plan/all-plan.component.ts index 2a905dd..0327f73 100644 --- a/src/app/statistic-analysis/all-plan/all-plan.component.ts +++ b/src/app/statistic-analysis/all-plan/all-plan.component.ts @@ -12,7 +12,7 @@ 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 { 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'; @@ -28,102 +28,84 @@ declare var CryptoJS }) export class AllPlanComponent implements OnInit { - constructor(private http: HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public route: ActivatedRoute,private router: Router) { } + constructor(private http: HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public route: ActivatedRoute, private router: Router) { } ngOnInit(): void { this.route.queryParams.subscribe(params => { this.titlename = params['name']; this.type = params['type']; - this.jsId=params['id'] - this.tid=params.tid + this.jsId = params['id'] + this.tid = params.tid }); this.getAlltabledate() } tid - displayedColumns: string[] = ['unitname','modifiedTime','organizationName','buildingTypes','operation']; + displayedColumns: string[] = ['unitname', 'modifiedTime', 'organizationName', 'buildingTypes', 'operation']; tabledataSource titlename //上个页面传过来的名称 type //上个页面传过来:1重点单位 2预案 jsId //组织机构id //分页 - @ViewChild(MatPaginator, {static: true}) + @ViewChild(MatPaginator, { static: true }) pageEvent: PageEvent; paginator: MatPaginator; - length:any; //共多少条数据 - pageSize:any; //每页条数 + length: any; //共多少条数据 + pageSize: any; //每页条数 pageSizeOptions: number[] = [10] //设置每页条数 - PageNumber:any; //第几页 + PageNumber: any; //第几页 //分页事件 - changePage(e){ - this.PageNumber = e.pageIndex+1 + changePage(e) { + this.PageNumber = e.pageIndex + 1 this.getAlltabledate() } //返回 - goBack () { + goBack() { sessionStorage.setItem('refresh', 'true'); history.go(-1); //this.echartsData.statefulInspectionToggle = true } //获得所有预案 - getAlltabledate(){ - let paramtedate:any={ - organizationId:this.jsId||'', - planStatus:this.tid=='pieone'?'': this.type, - PlanCategory:this.tid=='pieone'?this.type:'', + getAlltabledate() { + let paramtedate: any = { + organizationId: this.jsId || '', + planStatus: this.tid == 'pieone' ? '' : this.type, + PlanCategory: this.tid == 'pieone' ? this.type : '', PageNumber: this.PageNumber || '1', PageSize: this.pageSizeOptions[0] } - this.http.get(`/api/Plans/Organizations`,{params:paramtedate}).subscribe((data:any)=>{ + this.http.get(`/api/Plans/Organizations`, { params: paramtedate }).subscribe((data: any) => { this.length = data.totalCount - this.tabledataSource=data.items + this.tabledataSource = data.items //console.log(this.tabledataSource) }) } //查看详情 - lookPlan(e){ - if(e.planType == 16||e.planType == 4||e.planType == 8){ - var index=e.attachmentUrls[0].indexOf("\/") - if(e.attachmentUrls[0].substr(0,index)=='psw'){ + lookPlan(e) { + if (e.planType == 16 || e.planType == 4 || e.planType == 8) { + var index = e.attachmentUrls[0].indexOf("\/") + if (e.attachmentUrls[0].substr(0, index) == 'psw') { const dialogRef = this.dialog.open(PsViewer, { width: '1500px', - height:'800px', + 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://172.18.0.1:8000/api/Objects/PlanPlatform/`+fetchUrl, - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - '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://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) - }) + else { + let fetchUrl = e.attachmentUrls[0] + 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 == 4){ @@ -136,18 +118,18 @@ export class AllPlanComponent implements OnInit { }); } } */ - if(e.planType == 1){ //如果是在线编辑 - let id = e.id - sessionStorage.setItem("planId",id) - sessionStorage.setItem("companyId",e.company.id) - sessionStorage.setItem("buildingTypeId",e.company.buildingTypes[0].id) - sessionStorage.setItem("editable","0") - sessionStorage.setItem("planName",e.name) + if (e.planType == 1) { //如果是在线编辑 + let id = e.id + sessionStorage.setItem("planId", id) + sessionStorage.setItem("companyId", e.company.id) + sessionStorage.setItem("buildingTypeId", e.company.buildingTypes[0].id) + 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){ //如果是跳转网页 - sessionStorage.setItem("url",e.url) + if (e.planType == 2) { //如果是跳转网页 + sessionStorage.setItem("url", e.url) window.open(`/planManagement/webLook`) } } @@ -160,13 +142,13 @@ export class AllPlanComponent implements OnInit { templateUrl: './Photo-Sphere-Viewer.html', styleUrls: ['./all-plan.component.scss'] }) -export class PsViewer{ - constructor(private router:Router,private http: HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data: any) {} +export class PsViewer { + constructor(private router: Router, private http: HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) { } ngOnInit(): void { const viewer = new Viewer({ container: document.querySelector('#viewer'), - panorama:'/api/Objects/PlanPlatform/'+ this.data, - + panorama: '/api/Objects/PlanPlatform/' + this.data, + }); } } \ No newline at end of file diff --git a/src/app/statistic-analysis/plan-analysis-by-synthesis/plan-analysis-by-synthesis.component.ts b/src/app/statistic-analysis/plan-analysis-by-synthesis/plan-analysis-by-synthesis.component.ts index 2392154..2b42af9 100644 --- a/src/app/statistic-analysis/plan-analysis-by-synthesis/plan-analysis-by-synthesis.component.ts +++ b/src/app/statistic-analysis/plan-analysis-by-synthesis/plan-analysis-by-synthesis.component.ts @@ -353,39 +353,21 @@ export class PlanAnalysisBySynthesisComponent implements OnInit { 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 + else { 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://172.18.0.1:8000/api/Objects/PlanPlatform/` + fetchUrl, - }, - user: { - uid: identityJsonparse.sub, - nickName: identityJsonparse.name, - avatar: "", - privilege: [ - '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://10.81.73.39:18080/apps/editor/openPreview?data=${base64}`) - }) + 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); + } } } diff --git a/src/app/tabbar/tabbar.component.html b/src/app/tabbar/tabbar.component.html index 26fecba..9774d50 100644 --- a/src/app/tabbar/tabbar.component.html +++ b/src/app/tabbar/tabbar.component.html @@ -134,7 +134,6 @@

欢迎您, {{realName}}

-
信息完整度规则 @@ -158,60 +157,62 @@ 规则说明 - 单位名称 + 单位信息 5% - 按填录入内容评判 + 填写项平分该项占比分值,信息填写完整即可 建筑信息 10% 根据创建的建筑个数平分该分值,每个建筑根据实际填写的完整度再进行评判 + + 平面图 + 10% + 总平面图1张,层平面图1张 + 四周毗邻 10% - 按4个方向均分,每个方向的属性信息要填写完整才能得分 + 按4个方向均分,每个方向的属性信息要填写完整,并且包含图片 消防设施 25% - 消防水源占30%     安全疏散占30%
消防水系统占30% + 消防水源占30%   安全疏散设施/消防泡沫系统/安全疏散模块占30%
消防水系统/自动消防设施/消防设施/消防灭火给水系统/消火栓系统模块占30%     内部消防力量占10% 重点部位 10% - 根据耐火等级做区分:一级:添加3个重点部位(1个50%,2个80%,3个满分)二级:添加2个重点部位(一个占50%)三级 添加1个重点部位 其它:填写重点提示自动满分 + 层平面图中重点部位数量大于1个,并且属性信息填写完整(包含图片) 功能分区 10% - 创建2条并填写完整得满分 + 任意建筑下功能分区信息填写两条以上并且信息填写完整 实景图 10% - 外观,保证有2张照片(占30%); 重点部位,保证有2张照片(占30%);安全出口,保证有2张照片(占40%) + 外观,保证有2张照片(占30%); + 重点部位,保证有2张照片(占30%);安全出口,保证有2张照片(占40%) CAD上传 10% - 上传2个cad文件 - - - 平面图 - 10% - 总平面图1张,建筑平面图1张 + 保证至少有1个文件,格式不限 +
+
提交审核 diff --git a/src/app/ui/collection-tools-plan/addPlaneFigure.html b/src/app/ui/collection-tools-plan/addPlaneFigure.html index 344170b..80cbac6 100644 --- a/src/app/ui/collection-tools-plan/addPlaneFigure.html +++ b/src/app/ui/collection-tools-plan/addPlaneFigure.html @@ -12,9 +12,9 @@
- +
diff --git a/src/index.html b/src/index.html index db6e7cb..b23fdc0 100644 --- a/src/index.html +++ b/src/index.html @@ -20,16 +20,15 @@ - - - - + + + - + From 0610c3ad7e8486b00f3d78f9d63d27b7df502c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=8C=AF=E5=8D=87?= <359059686@qq.com> Date: Thu, 15 Jul 2021 14:38:20 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC1.5.1.2?= =?UTF-8?q?0210715=20[=E4=BF=AE=E6=AD=A3]=20=E8=83=8C=E6=99=AF=E5=9B=BE?= =?UTF-8?q?=E6=97=8B=E8=BD=AC=E5=90=8E=E5=9B=BE=E6=A0=87=E6=8B=96=E5=8A=A8?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/working-area/model/axImageShape.ts | 2 +- src/app/working-area/model/axShape.ts | 23 ++++++++++++++----- .../working-area/working-area.component.ts | 4 ++-- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/app/working-area/model/axImageShape.ts b/src/app/working-area/model/axImageShape.ts index ddb7ccf..8a757f1 100644 --- a/src/app/working-area/model/axImageShape.ts +++ b/src/app/working-area/model/axImageShape.ts @@ -236,7 +236,7 @@ export class AxImageShape extends AxShape { if (this.rightDrag) { this.rightDrag = false; this.image.anchor.set(0.5); - this.image.position.set(this.image.position.x + (this.image.width / 2)); + this.image.position.set(this.image.position.x + (this.image.width / 2), this.image.position.y); } }); this.right.visible = false; diff --git a/src/app/working-area/model/axShape.ts b/src/app/working-area/model/axShape.ts index 85ab02c..7675dae 100644 --- a/src/app/working-area/model/axShape.ts +++ b/src/app/working-area/model/axShape.ts @@ -42,7 +42,7 @@ export class AxShape extends Graphics { } if (this.allowEdit) { this.mouseDragging = true; - this.mousePosition = new PIXI.Point(event.data.global.x, event.data.global.y); + this.mousePosition = event.data.getLocalPosition(this.workingArea.backgroundImage); } }) .on('pointerup', event => { @@ -53,15 +53,26 @@ export class AxShape extends Graphics { }) .on('pointermove', event => { if (this.mouseDragging) { + // const newPosition = event.data.getLocalPosition(this.workingArea.backgroundImage); + // const x = newPosition.x - this.x; + // const y = newPosition.y - this.y; + // this.workingArea.selection.all().forEach(item => { + // item.x += x; + // item.y += y; + // item.assetData.Point = new PIXI.Point(item.x, item.y); + // this.workingArea.canvasData.isChange = true; + // }); + + const newPosition = event.data.getLocalPosition(this.workingArea.backgroundImage); + const offsetX = newPosition.x - this.mousePosition.x; + const offsetY = newPosition.y - this.mousePosition.y; this.workingArea.selection.all().forEach(item => { - const x = event.data.global.x - this.mousePosition.x; - const y = event.data.global.y - this.mousePosition.y; - item.x += x * (1 / this.workingArea.camera2D.scale.x); - item.y += y * (1 / this.workingArea.camera2D.scale.y); + item.x += offsetX; + item.y += offsetY; item.assetData.Point = new PIXI.Point(item.x, item.y); this.workingArea.canvasData.isChange = true; }); - this.mousePosition = new PIXI.Point(event.data.global.x, event.data.global.y); + this.mousePosition = newPosition; } }) .on('rightclick', event => { diff --git a/src/app/working-area/working-area.component.ts b/src/app/working-area/working-area.component.ts index c453ce9..e784d80 100644 --- a/src/app/working-area/working-area.component.ts +++ b/src/app/working-area/working-area.component.ts @@ -175,7 +175,7 @@ export class WorkingAreaComponent extends EventEmitter implements OnInit, AfterV * 重大调整-主版本号增加 * 日期变更-日期版本号增加 */ - public VERSION = '1.5.0.20210507_rc'; + public VERSION = '1.5.1.20210715'; /** * 数据初始化 */ @@ -641,7 +641,7 @@ export class WorkingAreaComponent extends EventEmitter implements OnInit, AfterV * 重置画布 */ public resetCanvas() { - if(!this.init.isGis){ + if (!this.init.isGis) { this.app.renderer.resize(this.content.nativeElement.clientWidth, this.content.nativeElement.clientHeight); } } From 6b2532824134e8ea2ef174dd2bb204f628d0a426 Mon Sep 17 00:00:00 2001 From: SHAOJIAHAO <55341701@qq.com> Date: Thu, 15 Jul 2021 16:01:06 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[=E5=AE=8C=E5=96=84]=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E5=8D=95=E4=BD=8D=E5=88=86=E6=95=B0=E6=8E=A5=E5=8F=A3=EF=BC=9B?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8A=9F=E8=83=BD=E5=88=86=E5=8C=BA=E8=8E=B7?= =?UTF-8?q?=E5=BE=97=E6=95=B0=E6=8D=AE=E9=A1=BA=E5=BA=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- angular.json | 4 +-- .../function-division.component.ts | 34 +++++++++++-------- src/app/tabbar/tabbar.component.ts | 8 ++--- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/angular.json b/angular.json index f8d3f75..a5689c7 100644 --- a/angular.json +++ b/angular.json @@ -63,8 +63,8 @@ "budgets": [ { "type": "initial", - "maximumWarning": "8mb", - "maximumError": "8mb" + "maximumWarning": "18mb", + "maximumError": "18mb" }, { "type": "anyComponentStyle", diff --git a/src/app/key-unit/function-division/function-division.component.ts b/src/app/key-unit/function-division/function-division.component.ts index 0f75c4b..3251d28 100644 --- a/src/app/key-unit/function-division/function-division.component.ts +++ b/src/app/key-unit/function-division/function-division.component.ts @@ -133,24 +133,30 @@ export class FunctionDivisionComponent implements OnInit { noDataList = [] //没有 创建功能分区 的建筑 //获得所有建筑的功能分区 - getAllBuildingFunctionalZoning () { + async getAllBuildingFunctionalZoning () { this.selectBuildingFunctionalZoning = [] this.allBuildingFunctionalZoning = [] this.noDataList = [] - this.allBuilding.forEach((element,index) => { + for (let index = 0; index < this.allBuilding.length; index++) { + const element = this.allBuilding[index]; let data={buildingId: element.id} - this.http.get(`/api/BuildingFunctionalDivisions`,{params:data}).subscribe((data:any)=>{ - if (data.length) { - element.functionalZoning = data - this.selectBuildingFunctionalZoning.push([]) //拥有建筑功能分区的提前push空数组 - this.allBuildingFunctionalZoning.push(element) - this.noDataList.push(true) - } else { - this.noDataList.push(false) - } - if (this.noDataList.length === this.allBuilding.length) { this.addVoluntarilyPartition() } - }) - }); + await new Promise((resolve,reject)=>{ + this.http.get(`/api/BuildingFunctionalDivisions`,{params:data}).subscribe((data:any)=>{ + if (data.length) { + element.functionalZoning = data + this.selectBuildingFunctionalZoning.push([]) //拥有建筑功能分区的提前push空数组 + this.allBuildingFunctionalZoning.push(element) + this.noDataList.push(true) + } else { + this.noDataList.push(false) + } + if (this.noDataList.length === this.allBuilding.length) { this.addVoluntarilyPartition() } + resolve(data) + }) + }) + } + + } // 没有 创建 建筑功能分区时 自动创建 diff --git a/src/app/tabbar/tabbar.component.ts b/src/app/tabbar/tabbar.component.ts index 22b415c..ee414e3 100644 --- a/src/app/tabbar/tabbar.component.ts +++ b/src/app/tabbar/tabbar.component.ts @@ -76,11 +76,9 @@ export class TabbarComponent implements OnInit { } //根据usci获取当前单位的分数信息 getIntegrityScore(){ - let params:any = { - USCI : this.route.snapshot.queryParams.usci - } - this.http.get('/api/Companies',{params:params}).subscribe((data:any) => { - this.companyIntegrityScore = data.items[0].companyIntegrityScore + let unitId = sessionStorage.getItem('companyId') + this.http.get(`/api/Companies/${unitId}`).subscribe((data:any) => { + this.companyIntegrityScore = data.companyIntegrityScore }) } isSpinner:boolean = false//下载帮助文档进度 From f1c42a3f33d601771357b81ca56a5b2c15eb00b6 Mon Sep 17 00:00:00 2001 From: chenjingyu Date: Fri, 16 Jul 2021 09:27:46 +0800 Subject: [PATCH 4/4] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=E9=A2=84=E6=A1=88?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=BB=9F=E8=AE=A1=E9=A6=96=E9=A1=B5=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=A2=84=E6=A1=88=E7=B1=BB=E5=9E=8B=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../state/page-one/page-one.component.html | 6 +- .../state/page-one/page-one.component.ts | 62 +++++++++++++------ 2 files changed, 48 insertions(+), 20 deletions(-) diff --git a/src/app/statistic-analysis/state/page-one/page-one.component.html b/src/app/statistic-analysis/state/page-one/page-one.component.html index ff564e1..5a6f8e0 100644 --- a/src/app/statistic-analysis/state/page-one/page-one.component.html +++ b/src/app/statistic-analysis/state/page-one/page-one.component.html @@ -4,13 +4,17 @@ * @Author: sueRimn * @Date: 2020-09-01 15:24:39 * @LastEditors: sueRimn - * @LastEditTime: 2020-09-02 14:49:05 + * @LastEditTime: 2021-07-14 14:13:42 -->
+ + autorenew + +
diff --git a/src/app/statistic-analysis/state/page-one/page-one.component.ts b/src/app/statistic-analysis/state/page-one/page-one.component.ts index 94e4231..11b472c 100644 --- a/src/app/statistic-analysis/state/page-one/page-one.component.ts +++ b/src/app/statistic-analysis/state/page-one/page-one.component.ts @@ -4,7 +4,7 @@ * @Author: sueRimn * @Date: 2020-09-01 15:24:39 * @LastEditors: sueRimn - * @LastEditTime: 2021-07-07 14:07:26 + * @LastEditTime: 2021-07-14 14:31:47 */ import { Component, OnInit } from '@angular/core'; import { Router } from '@angular/router'; @@ -55,31 +55,55 @@ export class PageOneComponent implements OnInit { this.initCharts("pieone") this.initCharts("pietwo") } + //级别和类型转换 + pieonetype=true//级别 + clickhuan(){ + this.pieonetype=!this.pieonetype + this.initCharts("pieone") + } /* 首页饼状图 */ indexBzt tabledata count indexData - planCategoriesData=[] - planStatusesData=[] + planCategoriesData=[]//预案级别 + planStatusesData=[]//预案状态 + planTypeStatisticsdata=[]//预案类型 initCharts(tid){ + this.planTypeStatisticsdata=[] + this.planCategoriesData=[] this.tabledata=JSON.parse(JSON.stringify(this.echartsData.allDate)) if(tid=='pieone') { - this.tabledata[0].planCategoryStatistics.planCategories.forEach((value,index,array) => { - if(array[index].planCategoryName=='LevelOne'){ - this.planCategoriesData.push({name:'Ⅰ级预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:1}) - }else if(array[index].planCategoryName=='LevelTwo'){ - this.planCategoriesData.push({name:'Ⅱ级预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:2}) - }else if(array[index].planCategoryName=='LevelThree'){ - this.planCategoriesData.push({name:'Ⅲ级预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:3}) - }else if(array[index].planCategoryName=='LevelFour'){ - this.planCategoriesData.push({name:'Ⅳ级预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:4}) - }else if(array[index].planCategoryName=='LevelFive'){ - this.planCategoriesData.push({name:'Ⅴ级预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:5}) - } - }); + if(this.pieonetype){ + this.tabledata[0].planCategoryStatistics.planCategories.forEach((value,index,array) => { + if(array[index].planCategoryName=='LevelOne'){ + this.planCategoriesData.push({name:'Ⅰ级预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:1}) + }else if(array[index].planCategoryName=='LevelTwo'){ + this.planCategoriesData.push({name:'Ⅱ级预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:2}) + }else if(array[index].planCategoryName=='LevelThree'){ + this.planCategoriesData.push({name:'Ⅲ级预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:3}) + }else if(array[index].planCategoryName=='LevelFour'){ + this.planCategoriesData.push({name:'Ⅳ级预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:4}) + }else if(array[index].planCategoryName=='LevelFive'){ + this.planCategoriesData.push({name:'Ⅴ级预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:5}) + } + }); + }else{ + this.tabledata[0].planTypeStatistics.planTypes.forEach((value,index,array) => { + if(array[index].planTypeName=='Plan2D'){ + this.planTypeStatisticsdata.push({name:'二维预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:1}) + }else if(array[index].planTypeName=='Plan3D'){ + this.planTypeStatisticsdata.push({name:'三维预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:2}) + }else if(array[index].planTypeName=='Other'){ + this.planTypeStatisticsdata.push({name:'其它预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:3}) + }else if(array[index].planTypeName=='PlanText'){ + this.planTypeStatisticsdata.push({name:'文本预案',value:array[index].count,planStatusName:array[index].planCategoryName,type:4}) + } + }); + } + }else{ this.tabledata[0].planStatusStatistics.planStatuses.forEach((value,index,array) => { if(array[index].planStatusName=='New'){ @@ -101,7 +125,7 @@ export class PageOneComponent implements OnInit { this.indexBzt = ec.init(document.getElementById(tid),'walden'); var options={ title: { - text:tid=='pieone'?`预案级别统计(${this.tabledata[0].planCategoryStatistics.totalCount}份)` :`预案状态统计(${this.tabledata[0].planStatusStatistics.totalCount}份)`, + text:tid=='pieone'&&this.pieonetype?`预案级别统计(${this.tabledata[0].planCategoryStatistics.totalCount}份)` :tid=='pieone'&&!this.pieonetype?`预案类型统计(${this.tabledata[0].planTypeStatistics.totalCount}份)`:`预案状态统计(${this.tabledata[0].planStatusStatistics.totalCount}份)`, top: "7%", left: 'center', textStyle:{ @@ -125,7 +149,7 @@ export class PageOneComponent implements OnInit { fontSize:this.padHw?15: 18, color:"#000000" }, - data:tid=='pieone'?['Ⅰ级预案', 'Ⅱ级预案', 'Ⅲ级预案', 'Ⅳ级预案', 'Ⅴ级预案'] :['预案新增', '预案审核通过', '预案编制', '预案审核退回', '预案审核中'] + data:tid=='pieone'&&this.pieonetype?['Ⅰ级预案', 'Ⅱ级预案', 'Ⅲ级预案', 'Ⅳ级预案', 'Ⅴ级预案']:tid=='pieone'&&!this.pieonetype?['二维预案', '三维预案', '其它预案', '文本预案'] :['预案新增', '预案审核通过', '预案编制', '预案审核退回', '预案审核中'] }, series: [ { @@ -147,7 +171,7 @@ export class PageOneComponent implements OnInit { }, }, - data:tid=='pieone'?this.planCategoriesData:this.planStatusesData, + data:tid=='pieone'&&this.pieonetype?this.planCategoriesData:tid=='pieone'&&!this.pieonetype?this.planTypeStatisticsdata:this.planStatusesData, emphasis: { itemStyle: { shadowBlur: 10,