From 96dd08ff6663a7d6209da5e54513c9745558851e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=8C=AF=E5=8D=87?= <359059686@qq.com> Date: Mon, 1 Mar 2021 11:24:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E6=A0=87=E5=B1=9E=E6=80=A7=E8=BD=AC?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/canvas-share-data.service.ts | 104 +++++++++++++++++---------- 1 file changed, 67 insertions(+), 37 deletions(-) diff --git a/src/app/canvas-share-data.service.ts b/src/app/canvas-share-data.service.ts index cac236d..dbc257c 100644 --- a/src/app/canvas-share-data.service.ts +++ b/src/app/canvas-share-data.service.ts @@ -12,13 +12,13 @@ export class CanvasShareDataService { private _sendMessage: ReplaySubject = new ReplaySubject(1); examDisposalNodesData; // 考生进入时获取当前试卷的处置节点 - examFacilityAssetsData; // 考生进入时获取当前试卷要考察的消防设施 + examFacilityAssetsData; // 考生进入时获取当前试卷要考察的消防设施 examOriginaleveryStoreyData: any; // 考生答卷 总平面图/楼层/区域 楼层数据 hiddenBasicInfoFacilities: any = []; // 考生答卷 当前楼层需要隐藏的基本信息素材 - isChange = false; // 数据 是否改动 + isChange: boolean = false; // 数据 是否改动 selectTemplateData: any; // 选择当前 模板数据 @@ -70,7 +70,7 @@ export class CanvasShareDataService { ['泡沫枪', '泡沫枪'], ['泡沫发生器', '泡沫发生器'], ['消防管网', '消防管网'], - ['泡沫管网', '泡沫管网'], + ['泡沫管网', '消防管网'], ['DCS控制室', 'DCS控制室'] ]); @@ -83,47 +83,47 @@ export class CanvasShareDataService { return this._sendMessage.asObservable(); } - // 分段上传 + //分段上传 sectionUpload(companyId: string, file) { - const data = { filename: file.name }; + let data = { filename: file.name } return new Promise((resolve, reject) => { - this.http.post(`/api/NewMultipartUpload/PlanPlatform/${companyId}/DisposalNode`, {}, { params: data }).subscribe(async (data: any) => { // 初始化分段上传 - const objectName = data.objectName; - const uploadId = data.uploadId; - const PartNumberETag = []; // 每次返回需要保存的信息 - // 分块 处理 - const fileSize = file.size || null; // 上传文件的总大小 - const shardSize = 5 * 1024 * 1024; // 5MB一个分片 - const allSlice = Math.ceil(fileSize / shardSize); // 总文件/5MB===共分多少段 + this.http.post(`/api/NewMultipartUpload/PlanPlatform/${companyId}/DisposalNode`, {}, { 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++) { // 循环分段上传 - const start = i * shardSize; // 切割文件开始位置 - const end = Math.min(fileSize, start + shardSize); // 切割文件结束位置 - const formData = new FormData(); - formData.append('file', file.slice(start, end)); + 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)) - // 同步写法实现异步调用 - const result = await new Promise((resolve, reject) => { + //同步写法实现异步调用 + 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) => { - const msg = { partNumber: data.partNumber || null, eTag: data.eTag || null }; - resolve(msg); // 调用 promise 内置方法处理成功 - }); + let msg = { "partNumber": data.partNumber || null, "eTag": data.eTag || null } + resolve(msg) // 调用 promise 内置方法处理成功 + }) }); - PartNumberETag.push(result); + PartNumberETag.push(result) - if (PartNumberETag.length === allSlice) { // 分块上传完成 - const data = PartNumberETag; - const paramsData = { uploadId }; + 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); - }); + resolve(objectName) + }) } - }// for循环 + }//for循环 - // 分块 处理 - }); - }); + //分块 处理 + }) + }) } // 处置节点 筛选出 匹配数据 匹配不到 return undefined @@ -294,7 +294,22 @@ export class CanvasShareDataService { facility.Id = ''; facility.Name = this.facilityAssetsName.get(item.Name); facility.AssetName = item.Name; - facility.PropertyInfos = item.PropertyInfos; + facility.PropertyInfos = []; + item.PropertyInfos.forEach(e => { + var p: PropertyInfo = new PropertyInfo(); + p.Enabled = e.Enabled; + p.Order = e.Order; + p.PhysicalUnit = e.PhysicalUnit; + p.PropertyName = e.PropertyName; + p.PropertyType = e.PropertyType; + p.PropertyValue = e.PropertyValue.toString(); + p.Required = e.Required; + p.RuleName = e.RuleName; + p.RuleValue = e.RuleValue; + p.Tag = e.Tag; + p.Visible = e.Visible; + facility.PropertyInfos.push(p); + }); facility.SitePlanId = item.FloorId; list.push(facility); } @@ -315,7 +330,22 @@ export class CanvasShareDataService { facility.Id = ''; facility.Name = this.facilityAssetsName.get(item.Name); facility.AssetName = item.Name; - facility.PropertyInfos = item.PropertyInfos; + facility.PropertyInfos = []; + item.PropertyInfos.forEach(e => { + var p: PropertyInfo = new PropertyInfo(); + p.Enabled = e.Enabled; + p.Order = e.Order; + p.PhysicalUnit = e.PhysicalUnit; + p.PropertyName = e.PropertyName; + p.PropertyType = e.PropertyType; + p.PropertyValue = e.PropertyValue.toString(); + p.Required = e.Required; + p.RuleName = e.RuleName; + p.RuleValue = e.RuleValue; + p.Tag = e.Tag; + p.Visible = e.Visible; + facility.PropertyInfos.push(p); + }); facility.BuildingAreaId = item.FloorId; list.push(facility); } @@ -406,7 +436,7 @@ export class CompanyFacilityAssetInfo { public Id: string; public Name: string; public AssetName: string; - public PropertyInfos: string; + public PropertyInfos: PropertyInfo[]; public AssetId: string; public CompanyId: string; public SitePlanId: string; @@ -418,7 +448,7 @@ export class BuildingFacilityAssetInfo { public Id: string; public Name: string; public AssetName: string; - public PropertyInfos: string; + public PropertyInfos: PropertyInfo[]; public AssetId: string; public BuildingId: string; public BuildingAreaId: string;