From 0dc8f985b6dad238c4d525919634d22e32f1e1d8 Mon Sep 17 00:00:00 2001
From: SHAOJIAHAO <55341701@qq.com>
Date: Tue, 19 Jan 2021 15:34:04 +0800
Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=E6=B6=88=E9=98=B2=E5=8A=9B?=
=?UTF-8?q?=E9=87=8F=E9=87=87=E9=9B=86=E5=9F=BA=E7=A1=80=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../fire-force/fire-force.component.html | 75 +++++-
.../fire-force/fire-force.component.scss | 227 ++++++++++++++--
.../fire-force/fire-force.component.ts | 247 ++++++++++++++++--
src/assets/images/pdf.jpg | Bin 0 -> 4679 bytes
src/assets/images/txt.jpg | Bin 0 -> 4564 bytes
src/assets/images/vedio.jpg | Bin 0 -> 4808 bytes
src/assets/images/word.jpg | Bin 0 -> 4964 bytes
7 files changed, 506 insertions(+), 43 deletions(-)
create mode 100644 src/assets/images/pdf.jpg
create mode 100644 src/assets/images/txt.jpg
create mode 100644 src/assets/images/vedio.jpg
create mode 100644 src/assets/images/word.jpg
diff --git a/src/app/data-collection/fire-force/fire-force.component.html b/src/app/data-collection/fire-force/fire-force.component.html
index 2a96222..bebd0d4 100644
--- a/src/app/data-collection/fire-force/fire-force.component.html
+++ b/src/app/data-collection/fire-force/fire-force.component.html
@@ -6,6 +6,7 @@
列表过滤
+
@@ -36,7 +37,7 @@
消防队
完整度
-
+
@@ -44,7 +45,11 @@
{{node.name}}
-
+
+ {{node.fireForceDetailInfo ? accMul(node.fireForceDetailInfo.integrityScore.toFixed(3),100,1) : 0}}%
+
+
+
highlight_off
@@ -60,11 +65,30 @@
{{node.name}}
-
+
+ {{node.fireForceDetailInfo ? accMul(node.fireForceDetailInfo.integrityScore.toFixed(3),100,1) : 0}}%
+
+
+
highlight_off
-
+
+
+
+
+ -
+
{{item.name}}
+
+
+ {{item.fireForceDetailInfo ? accMul(item.fireForceDetailInfo.integrityScore.toFixed(3),100,1) : 0}}%
+
+
+
+
+ highlight_off
+
+
@@ -82,6 +106,10 @@
+
+
+ 上传中...
+
-
+
+
+
+
+
+
+
save保存
open_in_browser提交审核
@@ -513,8 +547,31 @@
-->
- 相关资料
+
+
highlight_off
+
+
{{item.fileName}}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/data-collection/fire-force/fire-force.component.scss b/src/app/data-collection/fire-force/fire-force.component.scss
index 5029bf4..e56576d 100644
--- a/src/app/data-collection/fire-force/fire-force.component.scss
+++ b/src/app/data-collection/fire-force/fire-force.component.scss
@@ -91,8 +91,20 @@
.integrity{
width: 100px;
height: 16px;
- background-color: green;
-
+ position: relative;
+ background-color: #F2F4F6;
+ .integrityNum{
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ color: black;
+ font-size: 13px;
+ cursor: default;
+ }
+ .integrityColorDiv{
+ height: 100%;
+ }
}
.mat-tree-node{
cursor: pointer;
@@ -119,6 +131,71 @@
}
}
}
+ .fireForceList{
+ flex: 1;
+ overflow-y: auto;
+ li{
+ cursor: pointer;
+ width: 100%;
+ height: 36px;
+ line-height: 36px;
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ div{
+ float: left;
+ box-sizing: border-box;
+ }
+ .name{
+ text-align: left;
+ width: 60%;
+ padding-left: 22px;
+ white-space:nowrap;
+ overflow:hidden;
+ text-overflow:ellipsis;
+ }
+ .integrity{
+ height: 58%;
+ width: 32%;
+ position: relative;
+ background-color: #F2F4F6;
+ .integrityNum{
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ color: black;
+ font-size: 13px;
+ cursor: default;
+ }
+ .integrityColorDiv{
+ height: 100%;
+ }
+ }
+ .deletebtn{
+ flex: 1;
+ text-align: center;
+ mat-icon{
+ width: 20px;
+ height: 20px;
+ cursor: pointer;
+ font-size: 20px;
+ vertical-align: text-top;
+ color: rgba(49, 46, 46, 0.144);
+ }
+ mat-icon:hover{
+ color: #000;
+ }
+ }
+ }
+ li:hover{
+ background-color: #b3d3ee;
+ }
+ .selectedLi{
+ background-color: #b3d3ee;
+ }
+
+ }
.paginator{
height: 56px;
width: 100%;
@@ -193,9 +270,12 @@
.detailsbox{
width: 100%;
height:500px;
+ position: relative;
.tabsbox{
width: 100%;
height: 40px;
+ overflow: hidden;
+ overflow-x: auto;
line-height: 40px;
display: flex;
justify-content: space-between;
@@ -217,7 +297,45 @@
}
}
.btnbox{
+ display: flex;
+ align-items: center;
+ .uploadAttachment{
+ display: inline-block;
+ margin-right: 20px;
+ width: 120px;
+ text-align: center;
+ height: 28px;
+ line-height: 28px;
+ position: relative;
+ button{
+ width: 100%;
+ height: 28px;
+ line-height: 28px;
+ mat-icon{
+ transform: rotate(25deg);
+ font-size: 20px;
+ width: 20px;
+ height: 20px;
+ }
+ }
+ .a-upload{
+ display: inline-block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+ input{
+ width: 100%;
+ height: 100%;
+ cursor: pointer;
+ }
+ }
+ }
span{
+ display: inline-block;
cursor: pointer;
color: #2196F3;
mat-icon{
@@ -233,22 +351,7 @@
.submitAudit{
margin: 0 30px;
}
- .uploadAttachment{
- margin-right: 20px;
- width: 120px;
- text-align: center;
- height: 28px;
- line-height: 28px;
- mat-icon{
- transform: rotate(25deg);
- font-size: 20px;
- width: 20px;
- height: 20px;
- }
- mat-icon{
- padding: 0 8px;
- }
- }
+
}
}
.contant{
@@ -306,6 +409,94 @@
.smallwidth{
width: 30%;
}
+ // 相关资料
+ .fileDivBox{
+ position: relative;
+ float: left;
+ border: 1px solid #EBEBEB;
+ width: 160px;
+ height: 162px;
+ box-sizing: border-box;
+ padding: 16px 16px 0;
+ display: flex;
+ flex-direction: column;
+ margin: 12px;
+ align-items: center;
+ cursor: pointer;
+ .imgbox{
+ width: 134px;
+ height: 110px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ .thumbnailImg{
+ width: 134px;
+ height: 110px;
+ }
+ }
+
+ span{
+ width: 100%;
+ text-align: center;
+ margin-top: 5px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ color: gray;
+ }
+ .deleteFile{
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 18px;
+ height: 18px;
+ font-size: 18px;
+ display: none;
+ }
+ .btn{
+ position: absolute;
+ height: 30px;
+ line-height: 30px;
+ font-size: 14px;
+ display: none;
+ }
+ .btn1{
+ top: 35px;
+ }
+ .btn2{
+ top: 75px;
+ }
+ }
+ .fileDivBox:hover{
+ border: 1px solid #000;
+ .deleteFile{
+ display: block;
+
+ }
+ .deleteFile:hover{
+ color: red;
+ }
+ .btn{
+ display: block;
+ }
+ }
+ }
+ .masklayer{
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 2000;
+ width: 100%;
+ height: 100%;
+ background: rgba(0,0,0,0.2);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ span{
+ font-size: 14px;
+ margin-top: 5px;
+ }
}
}
}
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 799587a..ea547cf 100644
--- a/src/app/data-collection/fire-force/fire-force.component.ts
+++ b/src/app/data-collection/fire-force/fire-force.component.ts
@@ -8,6 +8,7 @@ import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';
import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
import { NzTreeNode } from 'ng-zorro-antd/tree';
import { TreeService } from 'src/app/http-interceptors/tree.service';
+import Viewer from 'viewerjs'
declare var AMap: any;
@Component({
@@ -18,7 +19,7 @@ declare var AMap: any;
export class FireForceComponent implements OnInit {
constructor(private tree: TreeService,public snackBar: MatSnackBar,private http:HttpClient,private elementRef: ElementRef,public renderer2: Renderer2,public dialog: MatDialog) { }
-
+ isMasklayer:boolean = false//遮罩层是否打开
isCheckedOfSearchDiv:boolean = true//列表过滤滑块
slideChange(e){
this.isCheckedOfSearchDiv = e.checked
@@ -51,9 +52,42 @@ export class FireForceComponent implements OnInit {
}
//获得所有消防力量
newdata:any
+ allFireForceList:any= []
getAllFireForce(){
- this.http.get('/api/CustomFireForce').subscribe((data:any) => {
- this.dataSource.data = this.tree.toTree(data)
+ let MinIntegrity = 0
+ let MaxIntegrity = 1.1
+ if(this.searchForm.integrityNum == '0'){
+ MinIntegrity = 0
+ MaxIntegrity = 0.5
+ }else if(this.searchForm.integrityNum == '1'){
+ MinIntegrity = 0.5
+ MaxIntegrity = 0.6
+ }else if(this.searchForm.integrityNum == '2'){
+ MinIntegrity = 0.6
+ MaxIntegrity = 0.7
+ }else if(this.searchForm.integrityNum == '3'){
+ MinIntegrity = 0.7
+ MaxIntegrity = 0.8
+ }else if(this.searchForm.integrityNum == '4'){
+ MinIntegrity = 0.8
+ MaxIntegrity = 0.9
+ }else if(this.searchForm.integrityNum == '5'){
+ MinIntegrity = 0.9
+ MaxIntegrity = 1.1
+ }else if(this.searchForm.integrityNum == '-1'){
+ MinIntegrity = 0
+ MaxIntegrity = 1.1
+ }
+ let params:any = {
+ Keyword : this.searchForm.name ? this.searchForm.name : '',
+ MinIntegrity : MinIntegrity,
+ MaxIntegrity : MaxIntegrity
+ }
+ this.http.get('/api/CustomFireForce',{params:params}).subscribe((data:any) => {
+ console.log('所有消防力量列表',data)
+ this.allFireForceList = data
+ this.dataSource.data = this.tree.toTree(data)
+ this.treeControl.expand(this.treeControl.dataNodes[0]);
})
}
upDateAllFireForce = ():void=>{
@@ -91,7 +125,8 @@ export class FireForceComponent implements OnInit {
code:node.code,
division:node.division,
fireForceDetailId:node.fireForceDetailId,
- forceType:node.forceType
+ forceType:node.forceType,
+ fireForceDetailInfo:node.fireForceDetailInfo
};
}
treeControl = new FlatTreeControl(node => node.level, node => node.expandable);
@@ -111,7 +146,7 @@ export class FireForceComponent implements OnInit {
this.isGisTopBox = false
if(this.selectedFireForceId != node.id){
this.clearData()
-
+
this.selectedFireForce = node
this.selectedFireForceId = node.id
if(node.forceType != 0){//如果是其他消防力量
@@ -147,6 +182,10 @@ export class FireForceComponent implements OnInit {
}else{
this.map.setCity('上海市');
}
+ //相关资料
+ console.log('详情',data)
+ data.relevantInfomationData ? this.AttachmentArr = JSON.parse(data.relevantInfomationData) : null
+
if(node.forceType == 0 && node.level == 0){
this.ZongpersonCountData = JSON.parse(data.personCountData)
this.ZongcontactData = JSON.parse(data.contactData)
@@ -162,20 +201,36 @@ export class FireForceComponent implements OnInit {
if(node.forceType != 0){
this.otherpersonCountData = JSON.parse(data.personCountData)
this.othercontactData = JSON.parse(data.contactData)
-
}
})
}else{
+
this.map.setCity('上海市');
}
}
}
//搜索
+ isTreeView:boolean = true//决定显示树还是列表
searchList(){
console.log(this.searchForm)
+ if(!this.searchForm.name && !this.searchForm.integrityNum){
+ this.isTreeView = true
+ }else{
+ this.isTreeView = false
+ }
+
+ this.getAllFireForce()
+ }
+ //重置搜索
+ reset(){
+ this.isTreeView = true
+ this.selectedFireForceLevel = null
+ this.searchForm = {
+ name:'',
+ integrityNum:''
+ }
this.getAllFireForce()
}
-
//js乘法
accMul(arg1,arg2,fix) {
if(!parseInt(fix)==fix)
@@ -248,7 +303,8 @@ export class FireForceComponent implements OnInit {
},
personCountData:[],//人员数量自定义
contactData:[],//联系方式自定义
- dutyForceData:[]//执勤力量自定义
+ dutyForceData:[],//执勤力量自定义
+ RelevantInfomationData:[]//相关资料
}
//总队支队人员数量
ZongpersonCountData:any=[
@@ -305,6 +361,8 @@ export class FireForceComponent implements OnInit {
]
//清空表单数据
clearData(){
+ this.deletedFile = []//清空相关资料已删除缓存
+ this.AttachmentArr = []//清空相关资料
this.superior = {
name:'',
code:''
@@ -325,7 +383,8 @@ export class FireForceComponent implements OnInit {
},
personCountData:[],//人员数量自定义
contactData:[],//联系方式自定义
- dutyForceData:[]//执勤力量自定义
+ dutyForceData:[],//执勤力量自定义
+ RelevantInfomationData:[]//相关资料
}
this.ZongpersonCountData = [
{PropertyName :'现役官兵人数',PropertyValue:''},
@@ -412,10 +471,21 @@ export class FireForceComponent implements OnInit {
alert('名称必填')
return
}
- console.log(777,this.atLastPositionLngLat)
+ //删除一下数据库的文件
+ if(this.deletedFile.length != 0){
+ this.deletedFile.forEach(item => {
+ // this.http.delete(`/api/Objects/PlanPlatform/${item.objectName}?x-oss-process=image/resize,m_fixed,h_100,w_100`).subscribe(data=>{
+ // console.log('删除缩略图成功')
+ // })
+ this.http.delete(`/api/Objects/PlanPlatform/${item.objectName}`).subscribe(data=>{
+ console.log('删除原文件成功')
+ })
+ });
+
+ }
this.FireForceDetailInfo.jurisdictionArea = Number(this.FireForceDetailInfo.jurisdictionArea)
+ this.FireForceDetailInfo.RelevantInfomationData = JSON.stringify(this.AttachmentArr)
//如果是总支大中
- // console.log(8888, this.FireForceDetailInfo)
this.FireForceDetailInfo.location = {x:'',y:''}
if(this.atLastPositionLngLat.x){
this.FireForceDetailInfo.location.x = this.atLastPositionLngLat.x
@@ -447,7 +517,6 @@ export class FireForceComponent implements OnInit {
config.duration = 3000
this.snackBar.open('保存成功','确定',config);
this.upDateAllFireForce()
- console.log(123,data)
})
}
//如果是其他消防力量
@@ -468,6 +537,7 @@ export class FireForceComponent implements OnInit {
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('保存成功','确定',config);
+ this.upDateAllFireForce()
// console.log(123,data)
})
}else{
@@ -564,18 +634,18 @@ export class FireForceComponent implements OnInit {
isGisTopBox:boolean = false //
searchTitle:any = ''//
- positionLngLat:any = {}//临时坐标点
- atLastPositionLngLat:any = {x:null,y:null}//最终坐标点
+ positionLngLat:any = {x:'',y:''}//临时坐标点
+ atLastPositionLngLat:any = {x:'',y:''}//最终坐标点
setPosition(){
if(!this.isGisTopBox){
this.isGisTopBox = true
this.newPositionMarker ? this.map.remove(this.newPositionMarker) : null
let center
- console.log()
+ console.log(789,this.atLastPositionLngLat)
if(this.newPositionMarker && this.atLastPositionLngLat.x){//如果已经标注单位坐标
console.log(1)
center = [this.atLastPositionLngLat.x, this.atLastPositionLngLat.y]
- }else if(this.newPositionMarker && !this.atLastPositionLngLat.x && this.FireForceDetailInfo.location.x){
+ }else if(this.newPositionMarker && !this.atLastPositionLngLat.x && this.FireForceDetailInfo.location && this.FireForceDetailInfo.location.x){
console.log(2)
center = [this.FireForceDetailInfo.location.x, this.FireForceDetailInfo.location.y]
}else{
@@ -628,6 +698,151 @@ export class FireForceComponent implements OnInit {
}
}
+
+
+
+
+ //上传附件
+ file:any; //上传的文件
+ AttachmentArr:any = []//上传附件地址集合
+ uploadId:any//分块上传id
+ objectName:any
+ uploadAttachment(e){
+ console.log('选择的文件',e)
+ this.file = e.target.files[0] || null //上传的文件
+ let file = e.target.files[0] || null //获取上传的文件
+ let fileSize = file.size || null //上传文件的总大小
+ let shardSize = 5 * 1024 * 1024 //5MB一个分片
+ this.isMasklayer = true
+ if (file && fileSize<=shardSize) { //上传文件<=5MB时
+ console.log('file',this.file)
+ let formData = new FormData()
+ formData.append("file",file)
+ //this.selectedFireForce.id 选择的组织机构的id
+ this.http.post(`/api/Objects/PlanPlatform/FireForce/${this.selectedFireForce.id}`,formData).subscribe((data:any)=>{
+ // this.objectName = data.objectName
+ let obj = {
+ objectName:data.objectName,
+ fileName:data.fileName,
+ fileLength:data.fileLength
+ }
+ this.AttachmentArr.push(obj)
+ this.isMasklayer = false
+ console.log('上传成功',data)
+ })
+ } else if (file && fileSize>shardSize) { //上传文件>5MB时,分块上传
+ let data = {filename: file.name}
+ this.http.post(`/api/NewMultipartUpload/PlanPlatform/FireForce/${this.selectedFireForce.id}`,{},{params:data}).subscribe((data:any)=>{ //初始化分段上传
+ console.log('初始化分块上传成功',data)
+ this.objectName = data.objectName
+ this.uploadId = data.uploadId
+ this.subsectionUploading()
+ })
+ }
+ }
+ PartNumberETag:any=[]; //每次返回需要保存的信息
+ //开始分段上传
+ async subsectionUploading () {
+
+ let file = this.file || null //获取上传的文件
+ let fileSize = file.size || null //上传文件的总大小
+ let shardSize = 5 * 1024 * 1024 //5MB一个分片
+ let allSlice = Math.ceil(fileSize / shardSize) //总文件/5MB===共分多少段
+
+ for (let i = 0;i < allSlice;i++) { //循环分段上传
+ let start = i * shardSize //切割文件开始位置
+ let end = Math.min(fileSize, start + shardSize); //切割文件结束位置
+ let formData = new FormData()
+ formData.append("file",file.slice(start, end))
+
+ //同步写法实现异步调用
+ let result = await new Promise((resolve, reject) => {
+ // await 需要后面返回一个 promise 对象
+ this.http.post(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}&partNumber=${i+1}`,formData).subscribe((data:any)=>{
+ let msg = {
+ "partNumber":data.partNumber || null,
+ "eTag": data.eTag || null}
+ resolve(msg) // 调用 promise 内置方法处理成功
+ })
+ });
+ this.PartNumberETag.push(result)
+ // this.uploadProgress = Number((i/allSlice).toFixed(2))*100
+ if (this.PartNumberETag.length === allSlice) {
+ // this.uploadProgress = 100
+ this.endUploading()}
+ }//for循环
+
+ }
+
+ //完成分块上传
+ endUploading () {
+ let data = this.PartNumberETag
+ let paramsData = {uploadId:this.uploadId}
+ this.http.post(`/api/CompleteMultipartUpload/PlanPlatform/${this.objectName}`,data,{params:paramsData}).subscribe(data=>{
+ this.PartNumberETag =[] //清空保存返回的信息
+ let obj = {
+ objectName:this.objectName,
+ fileName:this.file.name,
+ fileLength:this.file.size
+ }
+ this.AttachmentArr.push(obj)
+ console.log('完成分块上传',data)
+ this.isMasklayer = false
+ })
+ }
+
+ //删除图片
+ deletedFile:any = []
+ deleteFile(item,e){
+ console.log(this.AttachmentArr)
+ e.stopPropagation()
+ let isTrue = window.confirm('确定要删除该文件吗?')
+ if(isTrue){
+ let index
+ this.AttachmentArr.forEach((element,key) => {
+ if(element.objectName == item.objectName){
+ index = key
+ }
+ });
+ this.AttachmentArr.splice(index,1)
+ this.deletedFile.push(item)
+ let config = new MatSnackBarConfig();
+ config.verticalPosition = 'top';
+ config.duration = 3000
+ this.snackBar.open('删除成功','确定',config);
+ }
+ }
+
+ //点击文件
+ clickFile(item){
+ console.log(item)
+ let suffix = item.fileName.split('.')[item.fileName.split('.').length-1]
+ if(suffix == 'png' || suffix == 'jpg'){
+ console.log('这是图片')
+ let dom = document.getElementById(`viewerjs`)
+ let pObjs = dom.childNodes;
+ let node = document.createElement("img")
+ node.style.display = "none";
+ node.src = "/api/Objects/PlanPlatform/" + item.objectName;
+ node.id = 'img'
+ dom.appendChild(node)
+ setTimeout(() => {
+ let viewer = new Viewer(document.getElementById(`viewerjs`), {
+ hidden:()=>{
+ dom.removeChild(pObjs[0]);
+ viewer.destroy();
+ }
+ });
+ node.click();
+ }, 0);
+ }
+ if(suffix == 'docx' || suffix == 'doc' || suffix == 'pdf'){
+ let config = new MatSnackBarConfig();
+ config.verticalPosition = 'top';
+ config.duration = 3000
+ this.snackBar.open('暂不支持查看','确定',config);
+ }
+ }
}
diff --git a/src/assets/images/pdf.jpg b/src/assets/images/pdf.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..77b4f55e69e83181dc1853e2c9807357de796dab
GIT binary patch
literal 4679
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
literal 0
HcmV?d00001