diff --git a/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.html b/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.html index f9cdac4..f2fed48 100644 --- a/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.html +++ b/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.html @@ -51,7 +51,12 @@ *预案级别:
- V级 + + Ⅴ级 + + + Ⅲ级 +
  • @@ -121,9 +126,35 @@
    -
    +
    111
    +
    +
    +
    + + delete +
    +
    + +
    + + +
    + +
    + +
    + +
    + +
    +
    diff --git a/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.scss b/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.scss index d026ba2..f2acd35 100644 --- a/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.scss +++ b/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.scss @@ -3,7 +3,7 @@ height: 100%; transform: translate(0, 0); background: #f2f4f5; - .redspan{ + .redspan { color: red; } .titlebox { @@ -117,16 +117,71 @@ } } } - .centerBox{ + .centerBox { width: 100%; height: 100%; - .paneltitle{ + .paneltitle { width: 100%; font-size: 16px; color: #2196f3; display: flex; } } + .keyImg { + div { + width: 100%; + } + .keyImgItem { + border: 1px solid #e8e9e9; + .keyImgTitle { + height: 30px; + border-left: 1px solid #2196F3; + position: relative; + input { + width: 100%; + height: 100%; + background: #e8f4fe; + color: #2196f3; + border: 0; + box-sizing: border-box; + padding: 0 5px; + } + .deleteItem{ + position: absolute; + right: 5px; + top: 3px; + cursor: pointer; + color: #292c2c; + } + .deleteItem:hover{ + color: red; + } + } + .keyImgImg { + .uploadBtn{ + display: flex; + justify-content: center; + margin: 50px 0; + position: relative; + input{ + width: 112px; + height: 36px; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%,-50%); + opacity: 0; + cursor: pointer; + } + } + } + } + .addkeyImgItem{ + display: flex; + justify-content: center; + margin: 10px 0; + } + } } } } diff --git a/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.ts b/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.ts index 240a1fc..d206397 100644 --- a/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.ts +++ b/src/app/plan-management/create-plan-online-five/create-plan-online-five.component.ts @@ -13,15 +13,18 @@ export class CreatePlanOnlineFiveComponent implements OnInit { 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 + unitData: any getUnitData() { let paramsdata: any = { Name: this.route.snapshot.queryParams.unitName || '', @@ -51,9 +54,121 @@ export class CreatePlanOnlineFiveComponent implements OnInit { 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) + }) }) } + //分段上传 + 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循环 + + //分块 处理 + }) + }) + } }