diff --git a/src/app/babylon/controller/serve-manager.ts b/src/app/babylon/controller/serve-manager.ts index 3939bbf..fc916cc 100644 --- a/src/app/babylon/controller/serve-manager.ts +++ b/src/app/babylon/controller/serve-manager.ts @@ -170,7 +170,7 @@ export class ServeManager { .subscribe(data => { console.log("得到所有模板", data); if (onSuccess) { - onSuccess(JSON.parse((data as any).items)); + onSuccess((data as any).result.items); } }, error => { console.error("From serve:AllMarkTemplate", error); @@ -188,7 +188,8 @@ export class ServeManager { subscribe(data => { console.log("得到单个模板" + id, data); if (onSuccess) { - // onSuccess( JSON.parse((data as any).result)); + + onSuccess(JSON.parse((data as any).result.value)); } }, error => { console.error("From serve:OneMarkTemplate", error); diff --git a/src/app/babylon/model/data/mark/mark-plan-data.ts b/src/app/babylon/model/data/mark/mark-plan-data.ts index c0f0912..b10e625 100644 --- a/src/app/babylon/model/data/mark/mark-plan-data.ts +++ b/src/app/babylon/model/data/mark/mark-plan-data.ts @@ -1,4 +1,4 @@ -import { Type } from "class-transformer"; +import { classToClass, Type } from "class-transformer"; import { TsTool } from "src/app/babylon/tool/ts-tool"; @@ -27,8 +27,6 @@ export class AllMarkPlanData { datas: MarkPlanData[]; - - /** * 创建新方案 * @param name @@ -40,6 +38,19 @@ export class AllMarkPlanData { return data; } + /** + * 根据模板创建新方案 + * @param template + */ + createPlanDataByTemplate(template: MarkPlanData): MarkPlanData { + let id = this.getNextPlaneId(); + let data = classToClass(template); + data.id = id; + this.datas.push(data); + return data; + } + + /** * 删除方案 */ diff --git a/src/app/babylon/view/mark-window/mark-window.ts b/src/app/babylon/view/mark-window/mark-window.ts index ad9ecba..eff1640 100644 --- a/src/app/babylon/view/mark-window/mark-window.ts +++ b/src/app/babylon/view/mark-window/mark-window.ts @@ -1,7 +1,7 @@ import { AbstractMesh, Vector3 } from "@babylonjs/core"; import { PointerEventTypes, PointerInfo } from "@babylonjs/core/Events/pointerEvents"; import { EventState, Observer } from "@babylonjs/core/Misc/observable"; -import { classToClass } from "class-transformer"; +import { classToClass, plainToClass } from "class-transformer"; import { PlanComponent } from "src/app/pages/plan/plan.component"; import { DataManager } from "../../controller/data-manager"; import { EventManager } from "../../controller/event-manager/event-manager"; @@ -1597,24 +1597,26 @@ export class MarkWindow extends UIBase { getAllSandBoxTemplate() { let instance = this; this.allSandBoxTemplate = []; - ServeManager.instance.getAllMarkTemplate((data: string) => { + ServeManager.instance.getAllMarkTemplate((data: any) => { if (data == null) { instance.allSandBoxTemplate = []; } else { - + console.log("getAllSandBoxTemplate", data); + instance.allSandBoxTemplate = data; } }); } /** - * 获取一个模板的详细内容 + * 根据模板创建一个应急预案 * @param id */ - getOneSandBoxTemplate(id: number) { + addMarkPlanByTemplate(id: number) { let instance = this; - ServeManager.instance.getOneMarkTemplate(id, (data: string) => { - + ServeManager.instance.getOneMarkTemplate(id, (data: any) => { + let value = plainToClass(MarkPlanData, data); + instance.allMarkPlanData.createPlanDataByTemplate(value); }) } @@ -1627,7 +1629,7 @@ export class MarkWindow extends UIBase { */ saveToSandBoxTemplate(data: MarkPlanData) { let name: string = data.name; - let id: number = new Date().getTime(); + let id: number = Math.ceil(new Date().getTime() * 0.001); let instance = this; ServeManager.instance.saveOneMarkTemplate(id, name, data, (data: string) => { diff --git a/src/app/pages/left-domain/left-domain.component.html b/src/app/pages/left-domain/left-domain.component.html index f9cb723..c679b77 100644 --- a/src/app/pages/left-domain/left-domain.component.html +++ b/src/app/pages/left-domain/left-domain.component.html @@ -217,6 +217,15 @@ + + 选取模板 + + + + + + + diff --git a/src/app/pages/left-domain/left-domain.component.ts b/src/app/pages/left-domain/left-domain.component.ts index cd005fa..2fbf4ef 100644 --- a/src/app/pages/left-domain/left-domain.component.ts +++ b/src/app/pages/left-domain/left-domain.component.ts @@ -16,6 +16,7 @@ import { ServeManager } from 'src/app/babylon/controller/serve-manager'; import { ObjectsService } from 'src/app/service/objects.service'; import Viewer from 'viewerjs'; import { HttpClient } from '@angular/common/http'; +import { MarkTemplate } from 'src/app/babylon/model/data/mark/mark-template-data'; @Component({ selector: 'app-left-domain', @@ -239,6 +240,7 @@ export class LeftDomainComponent implements OnInit { } allMarkPlanData: AllMarkPlanData; //处置预案节点数据 + allSandBoxTemplate: MarkTemplate[] = []; //所有模板 selectPlanId: number; selectNodeId: number; addDisposalPop: boolean = false; //显示/隐藏 创建预案 弹窗 @@ -247,8 +249,13 @@ export class LeftDomainComponent implements OnInit { //创建预案/节点 addDisposal(e) { if (this.addDisposalPop) { //创建预案 - MarkWindow.instance.createMarkPlaneData(e.name) - this.addDisposalPop = false + if (e.selectMould) { + MarkWindow.instance.addMarkPlanByTemplate(e.selectMould) + this.addDisposalPop = false + } else { + MarkWindow.instance.createMarkPlaneData(e.name) + this.addDisposalPop = false + } } else { //创建节点 MarkWindow.instance.createMarkNodeData(this.addNodePop, e.name) this.addNodePop = null diff --git a/src/app/pages/plan/plan.component.ts b/src/app/pages/plan/plan.component.ts index 754222a..fe82531 100644 --- a/src/app/pages/plan/plan.component.ts +++ b/src/app/pages/plan/plan.component.ts @@ -261,6 +261,7 @@ export class PlanComponent implements OnInit { if (this.isShowChildComponent && this.leftDomain) { if (type) { //创建预案 this.leftDomain.addDisposalPop = true + this.leftDomain.allSandBoxTemplate = MarkWindow.instance.allSandBoxTemplate } else { //整体保存 this.leftDomain.saveDisposal() } diff --git a/src/app/service/babylon/building-basic-infos.service.ts b/src/app/service/babylon/building-basic-infos.service.ts index 1ddf970..d70c6b7 100644 --- a/src/app/service/babylon/building-basic-infos.service.ts +++ b/src/app/service/babylon/building-basic-infos.service.ts @@ -32,12 +32,12 @@ export class BuildingBasicInfosService { /** * 预案模板 */ - readonly api_sandBoxTemplate = "api​/Services/3D/SandboxTemplate​"; + readonly api_sandBoxTemplate = "api/Services/3D/SandboxTemplate"; /** * 获取全部的预案模板 */ - readonly api_sandBoxTemplateGetAll = "api​/Services/3D/SandboxTemplate​/GetAll"; + readonly api_sandBoxTemplateGetAll = "api/Services/3D/SandboxTemplate/GetAll"; @@ -111,7 +111,7 @@ export class BuildingBasicInfosService { * @param data */ postSandBoxTemplate(name: string, id: number, data: object) { - return this.postInfos(this.api_sandBoxTemplate, data, { name: name, "Id": id }); + return this.postInfos(this.api_sandBoxTemplate, data, { name: name, "id": id }); } @@ -156,7 +156,10 @@ export class BuildingBasicInfosService { let headers = this.headers; - return this.http.post(api + this.c_post, `'${JSON.stringify(body)}'`, { headers, params }) + let l_body = `'${JSON.stringify(body)}'`; + console.log("postInfos", l_body, api); + + return this.http.post(api + this.c_post, l_body, { headers, params }) .pipe( catchError((err) => this.handleError(err)) );