|
|
|
/*
|
|
|
|
* @Descripttion:
|
|
|
|
* @version:
|
|
|
|
* @Author: sueRimn
|
|
|
|
* @Date: 2021-06-16 13:56:54
|
|
|
|
* @LastEditors: sueRimn
|
|
|
|
* @LastEditTime: 2021-06-17 10:01:26
|
|
|
|
*/
|
|
|
|
import { HttpClient } from '@angular/common/http';
|
|
|
|
import { Component, OnInit } from '@angular/core';
|
|
|
|
import { ActivatedRoute } from '@angular/router';
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'app-create-plan-online-five',
|
|
|
|
templateUrl: './create-plan-online-five.component.html',
|
|
|
|
styleUrls: ['./create-plan-online-five.component.scss']
|
|
|
|
})
|
|
|
|
export class CreatePlanOnlineFiveComponent implements OnInit {
|
|
|
|
|
|
|
|
constructor(private http: HttpClient, private route: ActivatedRoute) { }
|
|
|
|
|
|
|
|
|
|
|
|
planName: string //预案名称
|
|
|
|
planLevel: string//预案级别
|
|
|
|
ngOnInit(): void {
|
|
|
|
this.planName = this.route.snapshot.queryParams.planName
|
|
|
|
this.planLevel = this.route.snapshot.queryParams.planCategory
|
|
|
|
console.log('级别', this.planLevel)
|
|
|
|
this.getTemplateData()
|
|
|
|
this.getUnitData()
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//获得单位信息
|
|
|
|
unitData: any
|
|
|
|
getUnitData() {
|
|
|
|
let paramsdata: any = {
|
|
|
|
Name: this.route.snapshot.queryParams.unitName || '',
|
|
|
|
}
|
|
|
|
this.http.get("/api/Companies", { params: paramsdata }).subscribe((data: any) => {
|
|
|
|
data.items.forEach(element => {
|
|
|
|
if (element.id == this.route.snapshot.queryParams.companyId) {
|
|
|
|
this.unitData = element
|
|
|
|
console.log('单位列表信息', this.unitData)
|
|
|
|
}
|
|
|
|
});
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
selectedItem: string = '封面'
|
|
|
|
clickTitleItem(item) {
|
|
|
|
item == '封面' ? this.selectedItem = '封面' : this.selectedItem = item.groupName
|
|
|
|
}
|
|
|
|
planTemplateData: any
|
|
|
|
//获得模板信息
|
|
|
|
getTemplateData() {
|
|
|
|
this.http.get('/api/PlanTemplate').subscribe(data => {
|
|
|
|
this.planTemplateData = JSON.parse(data[2].data).filter(item =>
|
|
|
|
item.completed == true
|
|
|
|
)
|
|
|
|
console.log(this.planTemplateData)
|
|
|
|
this.planTemplateData.forEach(element => {
|
|
|
|
if (element.groupName == '重点图示') {
|
|
|
|
if (!element.attribute) {
|
|
|
|
element.attribute = [{ name: '', imgArr: [] }]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//重点图示增加分组
|
|
|
|
addkeyImgItem() {
|
|
|
|
this.planTemplateData.forEach(element => {
|
|
|
|
if (element.groupName == '重点图示') {
|
|
|
|
element.attribute.push({ name: '', imgArr: [] })
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
//重点图示删除指定分组
|
|
|
|
deleteItem(key) {
|
|
|
|
let isDelete = window.confirm('确定要删除该分组吗?分组下上传的图片将一同被删除!')
|
|
|
|
if (isDelete) {
|
|
|
|
this.planTemplateData.forEach(element => {
|
|
|
|
if (element.groupName == '重点图示') {
|
|
|
|
element.attribute.splice(key, 1)
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//重点图示上传图片
|
|
|
|
file: any
|
|
|
|
filechange(e) {
|
|
|
|
this.file = e.target.files[0] || null //上传的文件
|
|
|
|
let file = e.target.files[0] || null //获取上传的文件
|
|
|
|
let fileSize = file.size || null //上传文件的总大小
|
|
|
|
let maxSize = 5 * 1024 * 1024 //5MB一个分片
|
|
|
|
let tenSize = 100 * 1024 * 1024 //100MB限制
|
|
|
|
if (file && fileSize <= maxSize) { //上传文件<=5MB时
|
|
|
|
let upload = this.uploadFile(this.route.snapshot.queryParams.companyId, this.route.snapshot.queryParams.companyId, file)
|
|
|
|
upload.then(res => {
|
|
|
|
console.log('小于5M', res)
|
|
|
|
//图片地址 /api/Objects/PlanPlatform/res.objectName
|
|
|
|
})
|
|
|
|
} else { //上传文件>5MB时
|
|
|
|
let upload = this.sectionUpload(this.route.snapshot.queryParams.companyId, this.route.snapshot.queryParams.companyId, file)
|
|
|
|
upload.then(res => {
|
|
|
|
// this.renovateBaseMap('/api/Objects/PlanPlatform/' + res, item)
|
|
|
|
console.log('大于5M', res)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
// else {
|
|
|
|
// const config = new MatSnackBarConfig();
|
|
|
|
// config.verticalPosition = 'top';
|
|
|
|
// config.duration = 3000
|
|
|
|
// this.snackBar.open('上传底图需小于100MB', '确定', config);
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async uploadFile(companyId: string, planId: string, file) {
|
|
|
|
let formData = new FormData()
|
|
|
|
formData.append("file", file)
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
this.http.post(`/api/Objects/PlanPlatform/${companyId}/${planId}`, formData).subscribe((data: any) => {
|
|
|
|
resolve(data)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
//input key值,一个字符焦点消失问题
|
|
|
|
trackByFn(index){
|
|
|
|
return index
|
|
|
|
}
|
|
|
|
|
|
|
|
//分段上传
|
|
|
|
sectionUpload(companyId: string, planId: string, file) {
|
|
|
|
let data = { filename: file.name }
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
this.http.post(`/api/NewMultipartUpload/PlanPlatform/${companyId}/${planId}`, {}, { params: data }).subscribe(async (data: any) => { //初始化分段上传
|
|
|
|
let objectName = data.objectName
|
|
|
|
let uploadId = data.uploadId
|
|
|
|
let PartNumberETag = []; //每次返回需要保存的信息
|
|
|
|
//分块 处理
|
|
|
|
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/${objectName}?uploadId=${uploadId}&partNumber=${i + 1}`, formData).subscribe((data: any) => {
|
|
|
|
let msg = { "partNumber": data.partNumber || null, "eTag": data.eTag || null }
|
|
|
|
resolve(msg) // 调用 promise 内置方法处理成功
|
|
|
|
})
|
|
|
|
});
|
|
|
|
PartNumberETag.push(result)
|
|
|
|
|
|
|
|
if (PartNumberETag.length === allSlice) { //分块上传完成
|
|
|
|
let data = PartNumberETag
|
|
|
|
let paramsData = { uploadId: uploadId }
|
|
|
|
this.http.post(`/api/CompleteMultipartUpload/PlanPlatform/${objectName}`, data, { params: paramsData }).subscribe(data => {
|
|
|
|
resolve(objectName)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}//for循环
|
|
|
|
|
|
|
|
//分块 处理
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export interface unitData {
|
|
|
|
name: string,
|
|
|
|
organizationName: number,
|
|
|
|
buildingTypes: buildingTypes[]
|
|
|
|
}
|
|
|
|
export interface buildingTypes {
|
|
|
|
id: string,
|
|
|
|
name: string,
|
|
|
|
}
|