@ -1,3 +0,0 @@ |
|||||||
[1229/141605.754:ERROR:directory_reader_win.cc(43)] FindFirstFile: 系统找不到指定的路径。 (0x3) |
|
||||||
[0104/100053.968:ERROR:directory_reader_win.cc(43)] FindFirstFile: 系统找不到指定的路径。 (0x3) |
|
||||||
[0122/085819.900:ERROR:directory_reader_win.cc(43)] FindFirstFile: 系统找不到指定的路径。 (0x3) |
|
@ -0,0 +1,15 @@ |
|||||||
|
<div class="addLinkageForceBox"> |
||||||
|
<div class="topbox"> |
||||||
|
<span>新增联动力量</span> |
||||||
|
</div> |
||||||
|
<div class="contant"> |
||||||
|
<div (click)="selecteAddType(item,key)" *ngFor="let item of addList;let key = index" [ngClass]="{'selectedDiv': item.id == selectedFireForceTypeIndex}"> |
||||||
|
<img [src]="item.imgUrl" alt=""> |
||||||
|
{{item.name}} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="btnbox"> |
||||||
|
<button mat-flat-button color="primary" (click)="confirm()">确定</button> |
||||||
|
<button mat-flat-button style="background-color: #F2F4F6;" mat-dialog-close>取消</button> |
||||||
|
</div> |
||||||
|
</div> |
@ -1,8 +1,260 @@ |
|||||||
<div class="box"> |
<div class="box" style="width: 100%;height: 100%;overflow: hidden;"> |
||||||
<div class="listbox"> |
<div class="listbox"> |
||||||
|
<div class="topbox"> |
||||||
|
<div class="add"> |
||||||
|
<div> |
||||||
|
<mat-slide-toggle color="primary" (change)='slideChange($event)' checked labelPosition='before'>列表过滤</mat-slide-toggle> |
||||||
|
</div> |
||||||
|
<div> |
||||||
|
<button (click)="reset()" style="width: 68px;margin-right: 12px;" mat-flat-button color="primary">重置</button> |
||||||
|
<button (click)="addLinkageForce()" style="width: 68px;" mat-flat-button color="primary">新增</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="searchbox" *ngIf="isCheckedOfSearchDiv"> |
||||||
|
<div class="inputbox"> |
||||||
|
<span> |
||||||
|
关键字: |
||||||
|
</span> |
||||||
|
<input type="text" placeholder="请输入名称/类别" [(ngModel)]="searchForm.name"/> |
||||||
|
</div> |
||||||
|
<div class="inputbox"> |
||||||
|
<span> |
||||||
|
完整度: |
||||||
|
</span> |
||||||
|
<select [(ngModel)]="searchForm.integrityNum" [ngClass]="{'gray': searchForm.integrityNum == ''}"> |
||||||
|
<option value='' selected disabled style='display:none;'>请选择</option> |
||||||
|
<option *ngFor="let item of listIntegrityNum" [value]="item.id">{{item.name}}</option> |
||||||
|
</select> |
||||||
|
</div> |
||||||
|
<div class="searchbtn"> |
||||||
|
<button (click)="searchList()" style="width: 100%;" mat-flat-button color="primary"><mat-icon style="width: 20px;height: 20px;font-size: 20px;">search</mat-icon>搜索</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div style="height: 1px;width: 100%;background-color: #F2F4F6;"></div> |
||||||
|
<div class="contantbox"> |
||||||
|
<div class="title"> |
||||||
|
<span>消防队</span> |
||||||
|
<span>完整度</span> |
||||||
|
</div> |
||||||
|
<div class="linkageForceList"> |
||||||
|
<ul *ngIf="allLinkageForceObj && allLinkageForceObj.items.length != 0"> |
||||||
|
<li *ngFor="let item of allLinkageForceObj.items" (click)="selectedLinkageForce(item)" [ngClass]="{'selectedLi': item.id == LinkageForceDetailInfo.id}"> |
||||||
|
<div class="name" [title]="item.name">{{item.name}}</div> |
||||||
|
<div class="integrity"> |
||||||
|
<span class="integrityNum"> |
||||||
|
{{accMul(item.integrityScore.toFixed(3),100,1)}}% |
||||||
|
</span> |
||||||
|
<div class="integrityColorDiv" [style]="integrity((item.integrityScore.toFixed(2) * 100).toFixed())"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="deletebtn" (click)="deleteLinkageForc(item,$event)"><mat-icon>highlight_off</mat-icon></div> |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
<div class="paginator"> |
||||||
|
<mat-paginator [length]="dataLength" [pageSize]="15" (page)="chagePage($event)"></mat-paginator> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="mapbox" id="linkageForcesSwiper"> |
||||||
|
<div class="mapcheckbox swiper-container"> |
||||||
|
|
||||||
|
<div class="swiper-wrapper"> |
||||||
|
<mat-checkbox (change)="checkBoxChange()" [(ngModel)]="item.isChecked" class="swiper-slide" color="primary" *ngFor="let item of checkBoxList"> |
||||||
|
<span> |
||||||
|
<img style="width: 16px;height:16px;" [src]="item.imgUrl" alt=""> |
||||||
|
{{item.name}} |
||||||
|
</span> |
||||||
|
</mat-checkbox> |
||||||
</div> |
</div> |
||||||
<div class="mapbox"> |
<!-- 如果需要导航按钮 --> |
||||||
|
<div style="left: 2px;top: 52%;" class="swiper-button-prev"></div> |
||||||
|
<div style="top: 52%;"class="swiper-button-next"></div> |
||||||
|
|
||||||
</div> |
</div> |
||||||
|
<div id="map" class="map" style="overflow: hidden;"> |
||||||
|
<div id="container"></div> |
||||||
|
<div class="gistopbox hidden" [ngClass]="{'show': isGisTopBox}"> |
||||||
|
<div class="inputBox"> |
||||||
|
<span>搜索: </span> |
||||||
|
<input name="position" [(ngModel)]="searchTitle" id="tipinput" class="positionInput" type="text" autocomplete="off"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="detailsbox" *ngIf="LinkageForceDetailInfo.linkageForceType || LinkageForceDetailInfo.linkageForceType == '0'"> |
||||||
|
<div class="masklayer" *ngIf="isMasklayer"> |
||||||
|
<mat-spinner [diameter]='30'></mat-spinner> |
||||||
|
<span>请等待...</span> |
||||||
|
</div> |
||||||
|
<div class="masklayer" *ngIf="isMasklayerUploading"> |
||||||
|
<mat-progress-bar class="progressbar" mode="determinate" [value]="progressBarValue"></mat-progress-bar> |
||||||
|
<span>上传中...({{progressBarValue}}%)</span> |
||||||
|
<button (click)="cancelUploading()" class="cancelbtn" mat-flat-button>取消上传</button> |
||||||
|
</div> |
||||||
|
<div class="masklayer" *ngIf="isMasklayerDownload"> |
||||||
|
<mat-progress-bar class="progressbar" mode="determinate" [value]="progressBarValue"></mat-progress-bar> |
||||||
|
<span>下载中...({{progressBarValue}}%)</span> |
||||||
|
</div> |
||||||
|
<div class="tabsbox"> |
||||||
|
<div class="tabs"> |
||||||
|
<div (click)="selectedTab(1)" [ngClass]="{'selectedBtn': tabIndex == 1}"> |
||||||
|
<span>详情</span> |
||||||
|
</div> |
||||||
|
<div (click)="selectedTab(2)" [ngClass]="{'selectedBtn': tabIndex == 2}"> |
||||||
|
<span>相关资料</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="btnbox"> |
||||||
|
<div class="uploadAttachment" *ngIf="tabIndex == 2"> |
||||||
|
<button mat-flat-button color="primary"> |
||||||
|
<mat-icon>attach_file</mat-icon> |
||||||
|
上传附件 |
||||||
|
</button> |
||||||
|
<a href="javascript:;" class="a-upload"> |
||||||
|
<input type="file" (change)='uploadAttachment($event)'> |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
<span class="save" (click)="save()"><mat-icon>save</mat-icon>保存</span> |
||||||
|
<span class="submitAudit"><mat-icon>open_in_browser</mat-icon>提交审核</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<!-- 详情 --> |
||||||
|
<div class="contant" *ngIf="tabIndex == 1"> |
||||||
|
<div> |
||||||
|
<p>基本信息</p> |
||||||
|
<mat-grid-list cols="6" rowHeight="40px"> |
||||||
|
<mat-grid-tile colspan='3' rowspan='1'> |
||||||
|
<span> |
||||||
|
<span style="color: red;">*</span> |
||||||
|
类型: |
||||||
|
</span> |
||||||
|
<select disabled style="width: 67.7%;" [(ngModel)]="LinkageForceDetailInfo.linkageForceType"> |
||||||
|
<option *ngFor="let item of checkBoxList" [value]="item.id">{{item.name}}</option> |
||||||
|
</select> |
||||||
|
</mat-grid-tile> |
||||||
|
<mat-grid-tile colspan='3' rowspan='1'> |
||||||
|
<span> |
||||||
|
<span style="color: red;">*</span> |
||||||
|
名称: |
||||||
|
</span> |
||||||
|
<input type="text" style="width: 63%;" [(ngModel)]="LinkageForceDetailInfo.name"> |
||||||
|
</mat-grid-tile> |
||||||
|
<mat-grid-tile colspan='3' rowspan='1'> |
||||||
|
<span> |
||||||
|
单位联系电话: |
||||||
|
</span> |
||||||
|
<input type="text" [(ngModel)]="LinkageForceDetailInfo.phoneNumber"> |
||||||
|
</mat-grid-tile> |
||||||
|
<mat-grid-tile colspan='3' rowspan='1'> |
||||||
|
<span> |
||||||
|
单位传真: |
||||||
|
</span> |
||||||
|
<input type="text" [(ngModel)]="LinkageForceDetailInfo.faxNumber"> |
||||||
|
</mat-grid-tile> |
||||||
|
<mat-grid-tile colspan='6' rowspan='2'> |
||||||
|
<span> |
||||||
|
备注: |
||||||
|
</span> |
||||||
|
<textarea [(ngModel)]="LinkageForceDetailInfo.remark" style="height: 80%;width: 84.5%;" name="" id="" cols="30" rows="10"></textarea> |
||||||
|
</mat-grid-tile> |
||||||
|
</mat-grid-list> |
||||||
|
<p>位置信息</p> |
||||||
|
<mat-grid-list cols="6" rowHeight="40px"> |
||||||
|
<mat-grid-tile colspan='3' rowspan='1'> |
||||||
|
<span> |
||||||
|
行政区: |
||||||
|
</span> |
||||||
|
<input type="text" style="width: 26%;margin-right: 6%;" [(ngModel)]="LinkageForceDetailInfo.administrativeRegion"> |
||||||
|
<span> |
||||||
|
地址: |
||||||
|
</span> |
||||||
|
<input type="text" style="width: 26%;margin-right: 6%;" [(ngModel)]="LinkageForceDetailInfo.address"> |
||||||
|
</mat-grid-tile> |
||||||
|
<mat-grid-tile colspan='3' rowspan='1'> |
||||||
|
<span> |
||||||
|
经度: |
||||||
|
</span> |
||||||
|
<input [(ngModel)]="positionLngLat.x" disabled type="text" style="width: 26%;margin-right: 6%;"> |
||||||
|
<span> |
||||||
|
纬度: |
||||||
|
</span> |
||||||
|
<input [(ngModel)]="positionLngLat.y" disabled type="text" style="width: 26%;margin-right: 6%;"> |
||||||
|
<button (click)="setPosition()" style="width:85px;text-align: center;" mat-flat-button color="primary"> |
||||||
|
<mat-icon style="width: 20px;height: 20px;font-size: 20px;">place</mat-icon>位置 |
||||||
|
</button> |
||||||
|
</mat-grid-tile> |
||||||
|
|
||||||
|
</mat-grid-list> |
||||||
|
<p>联系人</p> |
||||||
|
<mat-grid-list cols="6" rowHeight="40px"> |
||||||
|
<mat-grid-tile colspan='2' rowspan='1'> |
||||||
|
<span> |
||||||
|
联系人: |
||||||
|
</span> |
||||||
|
<input type="text" [(ngModel)]="LinkageForceDetailInfo.contactName"> |
||||||
|
</mat-grid-tile> |
||||||
|
<mat-grid-tile colspan='2' rowspan='1'> |
||||||
|
<span> |
||||||
|
职务: |
||||||
|
</span> |
||||||
|
<input type="text" [(ngModel)]="LinkageForceDetailInfo.contactTitle"> |
||||||
|
</mat-grid-tile> |
||||||
|
<mat-grid-tile colspan='2' rowspan='1'> |
||||||
|
<span> |
||||||
|
电话: |
||||||
|
</span> |
||||||
|
<input type="text" [(ngModel)]="LinkageForceDetailInfo.contactPhone"> |
||||||
|
</mat-grid-tile> |
||||||
|
</mat-grid-list> |
||||||
|
<p>应急信息</p> |
||||||
|
<mat-grid-list cols="6" rowHeight="40px"> |
||||||
|
<mat-grid-tile colspan='3' rowspan='2'> |
||||||
|
<span> |
||||||
|
服务内容: |
||||||
|
</span> |
||||||
|
<textarea style="height: 80%;width: 70%;" name="" id="" cols="30" rows="10" [(ngModel)]="LinkageForceDetailInfo.serviceContent"></textarea> |
||||||
|
</mat-grid-tile> |
||||||
|
<mat-grid-tile colspan='3' rowspan='2'> |
||||||
|
<span> |
||||||
|
资源说明: |
||||||
|
</span> |
||||||
|
<textarea style="height: 80%;width: 70%;" name="" id="" cols="30" rows="10" [(ngModel)]="LinkageForceDetailInfo.resourceRemark"></textarea> |
||||||
|
</mat-grid-tile> |
||||||
|
|
||||||
|
</mat-grid-list> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<!-- 相关资料 --> |
||||||
|
<div class="contant" *ngIf="tabIndex == 2"> |
||||||
|
<div class="fileDivBox" *ngFor="let item of AttachmentArr" > |
||||||
|
<mat-icon class="deleteFile" (click)="deleteFile(item,$event)">highlight_off</mat-icon> |
||||||
|
<div class="imgbox"> |
||||||
|
<img *ngIf="item.fileName.split('.')[item.fileName.split('.').length-1] == 'png' |
||||||
|
|| item.fileName.split('.')[item.fileName.split('.').length-1] == 'jpg' |
||||||
|
|| item.fileName.split('.')[item.fileName.split('.').length-1] == 'JPG'" |
||||||
|
class="thumbnailImg" src="/api/Objects/PlanPlatform/{{item.objectName}}" alt=""> |
||||||
|
<img *ngIf="item.fileName.split('.')[item.fileName.split('.').length-1] == 'docx' |
||||||
|
|| item.fileName.split('.')[item.fileName.split('.').length-1] == 'doc'" |
||||||
|
class="thumbnailImg" src="/assets/images/word.jpg" alt=""> |
||||||
|
<img *ngIf="item.fileName.split('.')[item.fileName.split('.').length-1] == 'pdf'" |
||||||
|
class="thumbnailImg" src="/assets/images/pdf.jpg" alt=""> |
||||||
|
<img *ngIf="item.fileName.split('.')[item.fileName.split('.').length-1] == 'txt'" |
||||||
|
class="thumbnailImg" src="/assets/images/txt.jpg" alt=""> |
||||||
|
<img *ngIf="item.fileName.split('.')[item.fileName.split('.').length-1] == 'mp4'" |
||||||
|
class="thumbnailImg" src="/assets/images/vedio.jpg" alt=""> |
||||||
|
</div> |
||||||
|
<span [title]="item.fileName">{{item.fileName}}</span> |
||||||
|
<button (click)="clickFile(item)" class="btn btn1" mat-flat-button color="primary">查看</button> |
||||||
|
<button (click)="download (item)" class="btn btn2" mat-flat-button color="primary">下载</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div id="viewerjs" style="display:none"> |
||||||
|
|
||||||
</div> |
</div> |
@ -0,0 +1 @@ |
|||||||
|
<video autoplay controls [src]="Url"></video> |
@ -0,0 +1,24 @@ |
|||||||
|
<div class="functionalDomainContent"> |
||||||
|
<div mat-dialog-title> |
||||||
|
<label *ngIf="!data.parentId">新建处置节点</label> |
||||||
|
<label *ngIf="data.parentId">新建节点</label> |
||||||
|
</div> |
||||||
|
|
||||||
|
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm" class="example-container"> |
||||||
|
|
||||||
|
<div class="keyMargin"> |
||||||
|
<mat-form-field> |
||||||
|
<input matInput name="name" required ngModel placeholder="名称"> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="submitBottom"> |
||||||
|
<button mat-raised-button color="primary" type="submit" [disabled]="!form.form.valid"> |
||||||
|
确定 |
||||||
|
</button> |
||||||
|
<button mat-raised-button mat-dialog-close>取消</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</form> |
||||||
|
|
||||||
|
</div> |
@ -0,0 +1,38 @@ |
|||||||
|
<div class="functionalDomainContent"> |
||||||
|
<div mat-dialog-title> |
||||||
|
<label *ngIf="!data.isBuilding">新建平面图</label> |
||||||
|
<label *ngIf="data.isBuilding">新建楼层/区域</label> |
||||||
|
</div> |
||||||
|
|
||||||
|
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm" class="example-container"> |
||||||
|
|
||||||
|
<div class="keyMargin"> |
||||||
|
<mat-form-field> |
||||||
|
<input matInput name="name" required ngModel placeholder="名称"> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="keyMargin" *ngIf="data.isBuilding"> |
||||||
|
<mat-checkbox name="isRefugeStorey" [(ngModel)]="checked">是否为避难层</mat-checkbox> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="keyMargin"> |
||||||
|
<mat-form-field> |
||||||
|
<input matInput name="area" type="number" required ngModel placeholder="面积 (平方米)"> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="keyMargin"> |
||||||
|
<textarea name="details" ngModel placeholder="详情"></textarea> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="submitBottom"> |
||||||
|
<button mat-raised-button color="primary" type="submit" [disabled]="!form.form.valid"> |
||||||
|
确定 |
||||||
|
</button> |
||||||
|
<button mat-raised-button mat-dialog-close>取消</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</form> |
||||||
|
|
||||||
|
</div> |
@ -0,0 +1,25 @@ |
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
||||||
|
|
||||||
|
import { CollectionToolsComponent } from './collection-tools.component'; |
||||||
|
|
||||||
|
describe('CollectionToolsComponent', () => { |
||||||
|
let component: CollectionToolsComponent; |
||||||
|
let fixture: ComponentFixture<CollectionToolsComponent>; |
||||||
|
|
||||||
|
beforeEach(async(() => { |
||||||
|
TestBed.configureTestingModule({ |
||||||
|
declarations: [ CollectionToolsComponent ] |
||||||
|
}) |
||||||
|
.compileComponents(); |
||||||
|
})); |
||||||
|
|
||||||
|
beforeEach(() => { |
||||||
|
fixture = TestBed.createComponent(CollectionToolsComponent); |
||||||
|
component = fixture.componentInstance; |
||||||
|
fixture.detectChanges(); |
||||||
|
}); |
||||||
|
|
||||||
|
it('should create', () => { |
||||||
|
expect(component).toBeTruthy(); |
||||||
|
}); |
||||||
|
}); |
@ -0,0 +1,28 @@ |
|||||||
|
<div mat-dialog-title>新增建筑</div> |
||||||
|
<div> |
||||||
|
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm" class="example-container"> |
||||||
|
|
||||||
|
<div mat-dialog-content> |
||||||
|
<mat-form-field> |
||||||
|
<input type="text" matInput ngModel |
||||||
|
required name="propertyName" placeholder="建筑名称" autocomplete="off"> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
<div mat-dialog-content> |
||||||
|
<mat-form-field> |
||||||
|
<mat-select [(value)]="selected" required ngModel name="buildingId" placeholder="建筑类型"> |
||||||
|
<mat-option *ngFor="let item of allBuildingType" [value]="item.id"> |
||||||
|
{{item.name}} |
||||||
|
</mat-option> |
||||||
|
</mat-select> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
<div mat-dialog-actions> |
||||||
|
<button mat-raised-button color="primary" type="submit" |
||||||
|
[disabled]="!form.form.valid"> |
||||||
|
确定 |
||||||
|
</button> |
||||||
|
<button mat-raised-button mat-dialog-close>取消</button> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</div> |
@ -0,0 +1,23 @@ |
|||||||
|
<div mat-dialog-title>编辑建筑</div> |
||||||
|
<div> |
||||||
|
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm" class="example-container"> |
||||||
|
<div mat-dialog-content> |
||||||
|
<mat-form-field> |
||||||
|
<input type="text" matInput [(ngModel)]="defaultName" required name="propertyName" placeholder="建筑名称" autocomplete="off"> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
<div mat-dialog-content> |
||||||
|
<mat-form-field> |
||||||
|
<mat-select required [(ngModel)]="defaultBuildingType" name="buildingId" placeholder="建筑类型"> |
||||||
|
<mat-option *ngFor="let item of allBuildingType" [value]="item.id"> |
||||||
|
{{item.name}} |
||||||
|
</mat-option> |
||||||
|
</mat-select> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
<div mat-dialog-actions> |
||||||
|
<button mat-raised-button color="primary" type="submit" [disabled]="!form.form.valid">确定</button> |
||||||
|
<button mat-raised-button mat-dialog-close>取消</button> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</div> |
@ -0,0 +1,23 @@ |
|||||||
|
<div class="functionalDomainContent"> |
||||||
|
<div mat-dialog-title> |
||||||
|
<label>修改灾情节点名称</label> |
||||||
|
</div> |
||||||
|
|
||||||
|
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm" class="example-container"> |
||||||
|
|
||||||
|
<div class="keyMargin"> |
||||||
|
<mat-form-field> |
||||||
|
<input matInput name="name" required [(ngModel)]="nodeName" placeholder="名称"> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="submitBottom"> |
||||||
|
<button mat-raised-button color="primary" type="submit" [disabled]="!form.form.valid"> |
||||||
|
确定 |
||||||
|
</button> |
||||||
|
<button mat-raised-button mat-dialog-close>取消</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</form> |
||||||
|
|
||||||
|
</div> |
@ -0,0 +1,39 @@ |
|||||||
|
<div class="functionalDomainContent"> |
||||||
|
|
||||||
|
<div mat-dialog-title> |
||||||
|
<label *ngIf="!data.isBuilding">编辑平面图</label> |
||||||
|
<label *ngIf="data.isBuilding">编辑楼层/区域</label> |
||||||
|
</div> |
||||||
|
|
||||||
|
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm" class="example-container"> |
||||||
|
|
||||||
|
<div class="keyMargin"> |
||||||
|
<mat-form-field> |
||||||
|
<input matInput name="name" required [(ngModel)]="name" placeholder="名称"> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="keyMargin" *ngIf="data.isBuilding"> |
||||||
|
<mat-checkbox name="isRefugeStorey" [(ngModel)]="checked">是否为避难层</mat-checkbox> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="keyMargin"> |
||||||
|
<mat-form-field> |
||||||
|
<input matInput name="area" type="number" required [(ngModel)]="area" placeholder="面积 (平方米)"> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="keyMargin"> |
||||||
|
<textarea name="details" [(ngModel)]="details" placeholder="详情"></textarea> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="submitBottom"> |
||||||
|
<button mat-raised-button color="primary" type="submit" [disabled]="!form.form.valid"> |
||||||
|
确定 |
||||||
|
</button> |
||||||
|
<button mat-raised-button mat-dialog-close>取消</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</form> |
||||||
|
|
||||||
|
</div> |
@ -0,0 +1,180 @@ |
|||||||
|
import { Component, OnInit, Inject } from '@angular/core'; |
||||||
|
import { HttpClient, HttpHeaders } from '@angular/common/http'; |
||||||
|
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; |
||||||
|
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; |
||||||
|
|
||||||
|
@Component({ |
||||||
|
selector: 'app-leftFunctionalDomain-building', |
||||||
|
templateUrl: './addPlaneFigure.html', |
||||||
|
styleUrls: ['./panel.scss'] |
||||||
|
}) |
||||||
|
export class leftFunctionalDomainBuildingComponent implements OnInit { |
||||||
|
|
||||||
|
constructor( |
||||||
|
private http:HttpClient, |
||||||
|
public dialog: MatDialog, |
||||||
|
public snackBar: MatSnackBar, |
||||||
|
public dialogRef: MatDialogRef<any>, |
||||||
|
@Inject(MAT_DIALOG_DATA) public data) { } |
||||||
|
|
||||||
|
ngOnInit(): void { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
params = {companyId: sessionStorage.getItem('companyId')} |
||||||
|
checked:boolean = false;//是否为避难层
|
||||||
|
|
||||||
|
//提交表单创建平面图
|
||||||
|
onSubmit (e) { |
||||||
|
if (!this.data.isBuilding) { //总平面图 创建平面图
|
||||||
|
let data = { |
||||||
|
companyId: sessionStorage.getItem('companyId'), |
||||||
|
name: e.name, |
||||||
|
order: this.data.order, |
||||||
|
area:e.area, |
||||||
|
details:e.details, |
||||||
|
enabled: true, |
||||||
|
modifiedTime: new Date(), |
||||||
|
} |
||||||
|
this.http.post('/api/SitePlans',data).subscribe(data=>{ |
||||||
|
this.dialogRef.close('总平面图'); |
||||||
|
}) |
||||||
|
} else { //建筑 创建楼层/区域
|
||||||
|
let data = { |
||||||
|
isRefugeStorey: e.isRefugeStorey, |
||||||
|
buildingId: this.data.Panel.id, |
||||||
|
name: e.name, |
||||||
|
order: this.data.order, |
||||||
|
area:e.area, |
||||||
|
details:e.details, |
||||||
|
enabled: true, |
||||||
|
modifiedTime: new Date(), |
||||||
|
} |
||||||
|
this.http.post('/api/BuildingAreas',data,{params:this.params}).subscribe(data=>{ |
||||||
|
this.dialogRef.close('建筑'); |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
//编辑平面图 楼层/区域
|
||||||
|
@Component({ |
||||||
|
selector: 'app-editPlaneFigure-building', |
||||||
|
templateUrl: './editPlaneFigure.html', |
||||||
|
styleUrls: ['./panel.scss'] |
||||||
|
}) |
||||||
|
export class editPlaneFigureBuildingComponent implements OnInit { |
||||||
|
|
||||||
|
constructor(private http:HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef<any>,@Inject(MAT_DIALOG_DATA) public data) { } |
||||||
|
|
||||||
|
ngOnInit(): void { |
||||||
|
this.name = this.data.buildingData.name || '' |
||||||
|
this.checked = this.data.buildingData.isRefugeStorey || false |
||||||
|
this.area = this.data.buildingData.area || 0 |
||||||
|
this.details = this.data.buildingData.details || '' |
||||||
|
} |
||||||
|
|
||||||
|
params = {companyId: sessionStorage.getItem('companyId')} |
||||||
|
name:any; //name
|
||||||
|
checked:boolean = false;//是否为避难层
|
||||||
|
area:number; //面积
|
||||||
|
details:string; //详情
|
||||||
|
|
||||||
|
//提交表单修改平面图
|
||||||
|
onSubmit (e) { |
||||||
|
if (!this.data.isBuilding) { //总平面图 修改平面图
|
||||||
|
let data = { |
||||||
|
companyId: sessionStorage.getItem('companyId'), |
||||||
|
id: this.data.buildingData.id, |
||||||
|
name: e.name, |
||||||
|
cadUrl: this.data.buildingData.cadUrl, |
||||||
|
imageUrl: this.data.buildingData.imageUrl, |
||||||
|
imageAngle: this.data.buildingData.imageAngle, |
||||||
|
order: this.data.buildingData.order, |
||||||
|
area:e.area, |
||||||
|
details:e.details, |
||||||
|
enabled: this.data.buildingData.enabled, |
||||||
|
modifiedTime: new Date(), |
||||||
|
} |
||||||
|
this.http.put(`/api/SitePlans/${this.data.buildingData.id}`,data).subscribe(data=>{ |
||||||
|
this.dialogRef.close('总平面图'); |
||||||
|
}) |
||||||
|
} else { //建筑 修改楼层/区域
|
||||||
|
let data = { |
||||||
|
isRefugeStorey: e.isRefugeStorey, |
||||||
|
buildingId: this.data.Panel.id, |
||||||
|
id: this.data.buildingData.id, |
||||||
|
name: e.name, |
||||||
|
cadUrl: this.data.buildingData.cadUrl, |
||||||
|
imageUrl: this.data.buildingData.imageUrl, |
||||||
|
imageAngle: this.data.buildingData.imageAngle, |
||||||
|
order: this.data.buildingData.order, |
||||||
|
area:e.area, |
||||||
|
details:e.details, |
||||||
|
enabled: this.data.buildingData.enabled, |
||||||
|
modifiedTime: new Date(), |
||||||
|
} |
||||||
|
this.http.put(`/api/BuildingAreas/${this.data.buildingData.id}`,data,{params:this.params}).subscribe(data=>{ |
||||||
|
this.dialogRef.close('建筑'); |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//创建 处置预案 节点
|
||||||
|
@Component({ |
||||||
|
selector: 'app-addDisposalNode-building', |
||||||
|
templateUrl: './addDisposalNode.html', |
||||||
|
styleUrls: ['./panel.scss'] |
||||||
|
}) |
||||||
|
export class addDisposalNodeBuildingComponent implements OnInit { |
||||||
|
|
||||||
|
constructor(private http:HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef<any>,@Inject(MAT_DIALOG_DATA) public data) { } |
||||||
|
|
||||||
|
ngOnInit(): void { |
||||||
|
} |
||||||
|
|
||||||
|
//提交表单
|
||||||
|
onSubmit (e) { |
||||||
|
this.data.name = e.name |
||||||
|
this.http.post('/api/DisposalNodes',this.data).subscribe(data=>{ |
||||||
|
this.dialogRef.close('success'); |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//编辑 处置预案 节点
|
||||||
|
@Component({ |
||||||
|
selector: 'app-editDisposalNode-building', |
||||||
|
templateUrl: './editDisposalNode.html', |
||||||
|
styleUrls: ['./panel.scss'] |
||||||
|
}) |
||||||
|
export class editDisposalNodeBuildingComponent implements OnInit { |
||||||
|
|
||||||
|
constructor(private http:HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef<any>,@Inject(MAT_DIALOG_DATA) public data) { } |
||||||
|
|
||||||
|
ngOnInit(): void { |
||||||
|
this.nodeName = JSON.parse(JSON.stringify( this.data.name || '' ))
|
||||||
|
} |
||||||
|
nodeName:string; |
||||||
|
|
||||||
|
//提交表单
|
||||||
|
onSubmit (e) { |
||||||
|
this.data.name = e.name |
||||||
|
this.http.put(`/api/DisposalNodes/${this.data.id}`,this.data).subscribe(data=>{ |
||||||
|
this.dialogRef.close(e.name); |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,291 @@ |
|||||||
|
.matIcons { |
||||||
|
color: #8E909F; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//平面图 素材库 公共样式 头部 |
||||||
|
.planarGraphHeader{ |
||||||
|
height: 35px; |
||||||
|
min-height: 35px; |
||||||
|
cursor: pointer; |
||||||
|
display: flex; |
||||||
|
flex-direction: row; |
||||||
|
align-items: center; |
||||||
|
padding: 0 24px; |
||||||
|
border-radius: 5px; |
||||||
|
font-family: Roboto, "Helvetica Neue", sans-serif; |
||||||
|
font-size: 15px; |
||||||
|
font-weight: 400; |
||||||
|
color: #000; |
||||||
|
background: linear-gradient(to top,#cdced1,#FFF); |
||||||
|
} |
||||||
|
//平面图头部字体图标样式 |
||||||
|
.hover { |
||||||
|
width: 18px; |
||||||
|
height: 18px; |
||||||
|
margin-left: 90px; |
||||||
|
border: 1px solid #999; |
||||||
|
border-radius: 3px; |
||||||
|
.mat-icon {font-size: 18px; color: #999;} |
||||||
|
} |
||||||
|
.hover:hover { |
||||||
|
background-color: #4DA5FA; |
||||||
|
.mat-icon {color: #fff;} |
||||||
|
} |
||||||
|
|
||||||
|
//平面图 |
||||||
|
.sitePlanContent { |
||||||
|
position: relative; |
||||||
|
width: 100%; |
||||||
|
height: 35px; |
||||||
|
line-height: 35px; |
||||||
|
box-sizing: border-box; |
||||||
|
padding: 0 10px 0 25px; |
||||||
|
.mat-icon { |
||||||
|
font-size: 20px; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//火源/力量 图标 |
||||||
|
.fireForce { |
||||||
|
display: block; |
||||||
|
float: right; |
||||||
|
margin: 8px 5px 0 0; |
||||||
|
width: 40px; |
||||||
|
height: 20px; |
||||||
|
line-height: 20px; |
||||||
|
text-align: center; |
||||||
|
position: relative; |
||||||
|
overflow: hidden; |
||||||
|
img{ |
||||||
|
width: 20px; |
||||||
|
height: 20px; |
||||||
|
} |
||||||
|
} |
||||||
|
//替换底图 inputfile |
||||||
|
.a-upload { |
||||||
|
display: block; |
||||||
|
float: right; |
||||||
|
margin: 8px 18px 0 0; |
||||||
|
width: 20px; |
||||||
|
height: 20px; |
||||||
|
line-height: 20px; |
||||||
|
text-align: center; |
||||||
|
position: relative; |
||||||
|
overflow: hidden; |
||||||
|
input { |
||||||
|
position: absolute; |
||||||
|
width: 20px; |
||||||
|
height: 20px; |
||||||
|
left: 0; |
||||||
|
top: 0; |
||||||
|
opacity: 0; |
||||||
|
} |
||||||
|
} |
||||||
|
.a-upload:hover { |
||||||
|
.mat-icon { |
||||||
|
color: #fff; |
||||||
|
} |
||||||
|
} |
||||||
|
//上传底图 inputfile |
||||||
|
#a-uploadImg { |
||||||
|
display: block; |
||||||
|
width: 300px; |
||||||
|
height: 170px; |
||||||
|
position: fixed; |
||||||
|
top: 40%; |
||||||
|
left: 48%; |
||||||
|
overflow: hidden; |
||||||
|
border-radius: 5px; |
||||||
|
border: 1px solid #999; |
||||||
|
z-index: 999; |
||||||
|
input { |
||||||
|
position: absolute; |
||||||
|
width: 300px; |
||||||
|
height: 170px; |
||||||
|
left: 0; |
||||||
|
top: 0; |
||||||
|
opacity: 0; |
||||||
|
} |
||||||
|
img { |
||||||
|
width: 100%; |
||||||
|
height: auto; |
||||||
|
} |
||||||
|
} |
||||||
|
#a-uploadImg:hover { |
||||||
|
border: 5px solid skyblue; |
||||||
|
} |
||||||
|
|
||||||
|
//hover时显示右边操作栏 |
||||||
|
.sitePlanContent:hover { |
||||||
|
#rightOperate { |
||||||
|
display: block; |
||||||
|
} |
||||||
|
} |
||||||
|
//右边操作栏 |
||||||
|
#rightOperate{ |
||||||
|
width: 50px; |
||||||
|
height: 100px; |
||||||
|
position: absolute; |
||||||
|
top: -32px; |
||||||
|
right: -48px; |
||||||
|
z-index: 99999; |
||||||
|
border-radius: 0 100px 100px 0; |
||||||
|
background-color: #F0F4F7; |
||||||
|
// #F0F4F7 cdced1 |
||||||
|
display: none; |
||||||
|
.functionButton { |
||||||
|
height: 25%; |
||||||
|
line-height: 25px; |
||||||
|
} |
||||||
|
.bigFunctionIcon { |
||||||
|
font-size: 24px; |
||||||
|
} |
||||||
|
.functionIcon { |
||||||
|
color: #999; |
||||||
|
} |
||||||
|
.functionIcon:hover { |
||||||
|
color: #4DA5FA; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//处置预案 素材库 公用div |
||||||
|
.publiclBankPlan { |
||||||
|
flex: 1; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
overflow: hidden; |
||||||
|
padding-bottom: 10px; |
||||||
|
// border-top: 1px dashed #999; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 基本信息/想定作业 切换 |
||||||
|
.scenarioAssignment { |
||||||
|
overflow-y: auto; |
||||||
|
} |
||||||
|
.selectEditMode { |
||||||
|
flex: 1; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
overflow: hidden; |
||||||
|
} |
||||||
|
.materialBankDIV{ |
||||||
|
flex: 1; |
||||||
|
overflow-x: hidden; |
||||||
|
overflow-y: auto; |
||||||
|
} |
||||||
|
// 基本信息/想定作业 切换 |
||||||
|
//处置预案 |
||||||
|
#terrNodePublic { |
||||||
|
height: 35px; |
||||||
|
line-height: 35px; |
||||||
|
display: flex; |
||||||
|
.textNode {flex: 1;} |
||||||
|
} |
||||||
|
//字体图标 |
||||||
|
.planIconDiv { |
||||||
|
display: inline-block; |
||||||
|
.mat-icon{ |
||||||
|
font-size: 20px; |
||||||
|
width: 20px; |
||||||
|
height: 20px; |
||||||
|
color: #666; |
||||||
|
margin-right: 3px; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.mat-expansion-panel-header { |
||||||
|
height: 40px !important; |
||||||
|
} |
||||||
|
//素材库溢出隐藏 |
||||||
|
#materialBank { |
||||||
|
margin: 1px 0; |
||||||
|
} |
||||||
|
//素材库图片flex |
||||||
|
#panelLibrary .text{ |
||||||
|
box-sizing: border-box; |
||||||
|
margin-left: 10px; |
||||||
|
} |
||||||
|
.panelLibraryFlex { |
||||||
|
display: flex; |
||||||
|
flex-direction: row; |
||||||
|
flex-wrap: wrap; |
||||||
|
justify-content: space-between; /* 水平居中 */ |
||||||
|
.imgBox { |
||||||
|
width: 70px; |
||||||
|
height: 100px; |
||||||
|
display: inline-block; |
||||||
|
text-align: center; |
||||||
|
border-radius: 3px; |
||||||
|
margin: 5px 0; |
||||||
|
img { |
||||||
|
width: 70px; |
||||||
|
height: auto; |
||||||
|
max-height: 70px; |
||||||
|
cursor:pointer; |
||||||
|
} |
||||||
|
p { |
||||||
|
font-size: 12px; |
||||||
|
cursor:pointer; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//文本溢出 |
||||||
|
.overflowText { |
||||||
|
overflow: hidden; |
||||||
|
text-overflow:ellipsis; |
||||||
|
white-space: nowrap; |
||||||
|
} |
||||||
|
// 楼层/区域 是避难层时 |
||||||
|
.isRefugeStorey { |
||||||
|
color: #fff; |
||||||
|
background-color: rgb(238, 186, 186); |
||||||
|
} |
||||||
|
//选中平面图时 |
||||||
|
.selectSitePlan { |
||||||
|
color: #fff; |
||||||
|
background-color: #6BC2FF; |
||||||
|
} |
||||||
|
//选中素材库图片时 |
||||||
|
.selectImg { |
||||||
|
color: #fff; |
||||||
|
background-color: #4DA5FA; |
||||||
|
} |
||||||
|
//选中 处置节点时 |
||||||
|
.selectanelPoint { |
||||||
|
background-color: #F4C235; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//左侧功能区弹出框样式 |
||||||
|
.keyMargin { |
||||||
|
width: 100%; |
||||||
|
margin: 5px 0; |
||||||
|
.mat-form-field { |
||||||
|
width: 100%; |
||||||
|
} |
||||||
|
} |
||||||
|
.submitBottom { |
||||||
|
display: flex; |
||||||
|
flex-direction: row; |
||||||
|
flex-wrap: wrap; |
||||||
|
justify-content: space-between; /* 水平居中 */ |
||||||
|
} |
||||||
|
.functionalDomainContent { |
||||||
|
width: 300px; |
||||||
|
height: 100%; |
||||||
|
textarea { |
||||||
|
border-radius: 5px; |
||||||
|
border: 1px solid #999; |
||||||
|
width: 100%; |
||||||
|
height: 120px; |
||||||
|
resize:none; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,300 @@ |
|||||||
|
import { Component, OnInit, Inject } from '@angular/core'; |
||||||
|
import { HttpClient, HttpHeaders } from '@angular/common/http'; |
||||||
|
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; |
||||||
|
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; |
||||||
|
import {CanvasShareDataService,DisposalNodeData} from '../../canvas-share-data.service' //引入服务
|
||||||
|
// 保存想定作业第一个弹窗
|
||||||
|
@Component({ |
||||||
|
selector: 'dialog-overview-example-dialog-building', |
||||||
|
templateUrl: 'saveOne.html', |
||||||
|
styleUrls: ['./collection-tools.component.scss'] |
||||||
|
}) |
||||||
|
export class saveOneDialogBuilding { |
||||||
|
|
||||||
|
constructor( |
||||||
|
private http:HttpClient, |
||||||
|
public dialog: MatDialog, |
||||||
|
public snackBar: MatSnackBar, |
||||||
|
public dialogRef: MatDialogRef<any>, |
||||||
|
@Inject(MAT_DIALOG_DATA) public data) {} |
||||||
|
|
||||||
|
onNoClick(): void { |
||||||
|
this.dialogRef.close() |
||||||
|
} |
||||||
|
allDisposalNode = this.data.allDisposalNode |
||||||
|
|
||||||
|
saveType(type){ |
||||||
|
this.dialogRef.close() |
||||||
|
const dialogRef = this.dialog.open(saveTwoDialogBuilding, { |
||||||
|
data: {type: type, |
||||||
|
allDisposalNode: this.data.allDisposalNode, |
||||||
|
selectedBuildingData:this.data.selectedBuildingData, |
||||||
|
selectedSiteData:this.data.selectedSiteData, |
||||||
|
siteOrbuilding:this.data.siteOrbuilding, |
||||||
|
disasterId:this.data.disasterId} |
||||||
|
}); |
||||||
|
dialogRef.afterClosed().subscribe(result => { |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
// 保存想定作业第二个弹窗
|
||||||
|
@Component({ |
||||||
|
selector: 'dialog-overview-example-dialog-building', |
||||||
|
templateUrl: 'saveTwo.html', |
||||||
|
styleUrls: ['./collection-tools.component.scss'] |
||||||
|
}) |
||||||
|
export class saveTwoDialogBuilding { |
||||||
|
|
||||||
|
constructor( |
||||||
|
private http:HttpClient, |
||||||
|
public dialogRef: MatDialogRef<any>, |
||||||
|
public canvasData: CanvasShareDataService, |
||||||
|
public snackBar: MatSnackBar, |
||||||
|
@Inject(MAT_DIALOG_DATA) public data) {} |
||||||
|
|
||||||
|
type = this.data.type |
||||||
|
allDisposalNode = this.data.allDisposalNode |
||||||
|
allPlanDisposalNode = [] |
||||||
|
allRootDisposalNode = [{name:"根节点",id:null}] |
||||||
|
allDisposalNodeChild = [] |
||||||
|
ngOnInit(): void { |
||||||
|
//所有非数据节点
|
||||||
|
this.allDisposalNode.forEach(item => { |
||||||
|
if(!item.sitePlanId && !item.buildingAreaId){ |
||||||
|
this.allPlanDisposalNode.push(item) |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
//所有一级节点
|
||||||
|
this.allDisposalNode.forEach(item => { |
||||||
|
if(!item.parentId){ |
||||||
|
this.allRootDisposalNode.push(item) |
||||||
|
} |
||||||
|
}) |
||||||
|
this.allDisposalNodeChild = JSON.parse(JSON.stringify(this.allDisposalNode)) |
||||||
|
this.allDisposalNodeChild.forEach(item => { |
||||||
|
item.children = [] |
||||||
|
this.allDisposalNodeChild.forEach(i => { |
||||||
|
if(i.parentId == item.id){ |
||||||
|
item.children.push(i) |
||||||
|
} |
||||||
|
}) |
||||||
|
}) |
||||||
|
// console.log(this.nodeItem.id)
|
||||||
|
} |
||||||
|
onNoClick(): void { |
||||||
|
this.dialogRef.close(); |
||||||
|
} |
||||||
|
nodeItem |
||||||
|
itemChildNum = 0 //点击处置节点子数据节点的数量
|
||||||
|
clickNode(item){ |
||||||
|
// console.log(item)
|
||||||
|
this.nodeItem = item |
||||||
|
this.allDisposalNodeChild.forEach(item => { |
||||||
|
if(item.id == this.nodeItem.id){ |
||||||
|
this.itemChildNum = item.children.length |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
selectedBuildingData = this.data.selectedBuildingData |
||||||
|
selectedSiteData = this.data.selectedSiteData |
||||||
|
onSubmit(value,type){ |
||||||
|
// console.log(type)
|
||||||
|
let name = this.selectedBuildingData.name + '-' + this.selectedSiteData.name |
||||||
|
//如果保存到已有节点
|
||||||
|
var postdata = { |
||||||
|
id: "", |
||||||
|
name: name, |
||||||
|
level: 0, |
||||||
|
order: this.itemChildNum, |
||||||
|
description: "", |
||||||
|
notes: "", |
||||||
|
weather: null, |
||||||
|
airTemperature: null, |
||||||
|
windDirection: null, |
||||||
|
windScale: null, |
||||||
|
imageNames: null, |
||||||
|
imageUrls: null, |
||||||
|
parentId: this.nodeItem ? this.nodeItem.id : null, |
||||||
|
disasterId: this.data.disasterId, |
||||||
|
planComponentId: sessionStorage.getItem('planId') || '', |
||||||
|
companyId: this.data.siteOrbuilding == -1 ? sessionStorage.getItem('companyId') : null, |
||||||
|
sitePlanId: this.data.siteOrbuilding==-1 ? this.selectedSiteData.id : null, |
||||||
|
buildingId: this.selectedBuildingData.id || null, |
||||||
|
buildingAreaId: this.data.siteOrbuilding!=-1 ? this.selectedSiteData.id : null |
||||||
|
} |
||||||
|
if(type == 'old'){ |
||||||
|
let istrue = this.canvasData.findDisposalNode(this.nodeItem.id,name) |
||||||
|
let putdata = this.nodeItem |
||||||
|
putdata.weather = this.canvasData.selectPanelPointBaseData.weather |
||||||
|
putdata.airTemperature = Number(this.canvasData.selectPanelPointBaseData.airTemperature) |
||||||
|
putdata.windScale = Number(this.canvasData.selectPanelPointBaseData.windScale)
|
||||||
|
putdata.windDirection = Number(this.canvasData.selectPanelPointBaseData.windDirection)
|
||||||
|
putdata.description = this.canvasData.selectPanelPointBaseData.description |
||||||
|
putdata.notes = this.canvasData.selectPanelPointBaseData.notes |
||||||
|
|
||||||
|
|
||||||
|
if(istrue){//如果该处置节点下已有同名数据节点 则只修改 2个接口
|
||||||
|
new Promise((resolve,reject)=>{ |
||||||
|
this.http.put(`/api/DisposalNodes/${value.nodeId}`,putdata).subscribe(data => { |
||||||
|
resolve("更新处置节点成功,将天气 节点详情等信息保存到点击的节点") |
||||||
|
}) |
||||||
|
}).then((values)=>{ |
||||||
|
this.canvasData.sendMessage('send a message');//发布一条消息
|
||||||
|
// 保存平面图数据到当前节点
|
||||||
|
let postdata =JSON.parse(JSON.stringify(this.canvasData.selectPanelPoint))
|
||||||
|
postdata.Data = JSON.stringify(postdata.Data) |
||||||
|
this.http.post(`/api/DisposalNodeData`,postdata).subscribe(data => { |
||||||
|
const config = new MatSnackBarConfig(); |
||||||
|
config.verticalPosition = 'top'; |
||||||
|
config.duration = 3000 |
||||||
|
this.snackBar.open('保存成功','确定',config) |
||||||
|
},err=>{ |
||||||
|
const config = new MatSnackBarConfig(); |
||||||
|
config.verticalPosition = 'top'; |
||||||
|
config.duration = 3000 |
||||||
|
this.snackBar.open('保存失败','确定',config) |
||||||
|
}) |
||||||
|
this.dialogRef.close(); |
||||||
|
this.canvasData.sendMessage('send a message');//发布一条消息
|
||||||
|
}) |
||||||
|
|
||||||
|
}else{//需要3个接口
|
||||||
|
new Promise((resolve,reject)=>{ |
||||||
|
this.http.put(`/api/DisposalNodes/${value.nodeId}`,putdata).subscribe(data => { |
||||||
|
resolve("更新处置节点成功,将天气 节点详情等信息保存到点击的节点") |
||||||
|
}) |
||||||
|
}).then((values)=>{ |
||||||
|
// console.log(values)
|
||||||
|
postdata.level = putdata.level + 1
|
||||||
|
new Promise((resolve,reject) => { |
||||||
|
this.http.post(`/api/DisposalNodes`,postdata).subscribe(data => { |
||||||
|
resolve(data) |
||||||
|
}) |
||||||
|
}).then((data:any)=>{ |
||||||
|
// console.log(7788,data)
|
||||||
|
let objData = { |
||||||
|
id: "", |
||||||
|
data: JSON.stringify(this.canvasData.selectPanelPoint.Data) || null, |
||||||
|
version: this.canvasData.selectPanelPoint.Version || "2.0", |
||||||
|
disposalNodeId: data.id, |
||||||
|
planComponentId: sessionStorage.getItem("planId"), |
||||||
|
} |
||||||
|
this.http.post(`/api/DisposalNodeData`,objData).subscribe(data => { |
||||||
|
const config = new MatSnackBarConfig(); |
||||||
|
config.verticalPosition = 'top'; |
||||||
|
config.duration = 3000 |
||||||
|
this.snackBar.open('保存成功','确定',config) |
||||||
|
},err=>{ |
||||||
|
const config = new MatSnackBarConfig(); |
||||||
|
config.verticalPosition = 'top'; |
||||||
|
config.duration = 3000 |
||||||
|
this.snackBar.open('保存失败','确定',config) |
||||||
|
}) |
||||||
|
this.dialogRef.close(); |
||||||
|
this.canvasData.sendMessage('send a message');//发布一条消息
|
||||||
|
}) |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
}else{//如果保存到新建节点
|
||||||
|
let dispositionNodeData //处置节点data
|
||||||
|
let order |
||||||
|
let oneLevelNum = [] |
||||||
|
//将order赋值为所有一级节点最后一个+1
|
||||||
|
this.allDisposalNode.forEach(item => { |
||||||
|
if(!item.parentId){ |
||||||
|
oneLevelNum.push(item) |
||||||
|
} |
||||||
|
}) |
||||||
|
if(oneLevelNum.length == 0){ |
||||||
|
order = 0 |
||||||
|
}else{ |
||||||
|
order = oneLevelNum[oneLevelNum.length - 1].order + 1 |
||||||
|
} |
||||||
|
|
||||||
|
if(this.nodeItem){//如果点击了下拉选择框
|
||||||
|
if(this.nodeItem.id != null){ |
||||||
|
this.allDisposalNodeChild.forEach(item => { |
||||||
|
if(item.id == this.nodeItem.id){ |
||||||
|
order = item.children.length |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
dispositionNodeData = { |
||||||
|
id: "", |
||||||
|
name: value.name, |
||||||
|
level: this.nodeItem && this.nodeItem.id != null ? this.nodeItem.level + 1 : 0, |
||||||
|
order: order, |
||||||
|
description: "", |
||||||
|
notes: "", |
||||||
|
weather: null, |
||||||
|
airTemperature: 0, |
||||||
|
windDirection: 0, |
||||||
|
windScale: 0, |
||||||
|
imageNames: null, |
||||||
|
imageUrls: null, |
||||||
|
parentId: this.nodeItem ? this.nodeItem.id : null, |
||||||
|
disasterId: this.data.disasterId, |
||||||
|
planComponentId: sessionStorage.getItem('planId') || '', |
||||||
|
companyId: null, |
||||||
|
sitePlanId: null, |
||||||
|
buildingId: null, |
||||||
|
buildingAreaId: null |
||||||
|
} |
||||||
|
|
||||||
|
dispositionNodeData.weather = this.canvasData.selectPanelPointBaseData.weather |
||||||
|
dispositionNodeData.airTemperature = Number(this.canvasData.selectPanelPointBaseData.airTemperature) |
||||||
|
dispositionNodeData.windScale = Number(this.canvasData.selectPanelPointBaseData.windScale)
|
||||||
|
dispositionNodeData.windDirection = Number(this.canvasData.selectPanelPointBaseData.windDirection)
|
||||||
|
dispositionNodeData.description = this.canvasData.selectPanelPointBaseData.description |
||||||
|
dispositionNodeData.notes = this.canvasData.selectPanelPointBaseData.notes |
||||||
|
//1.先创建一个处置节点 然后 .then 2.创建数据节点到刚创建的处置节点 3.然后拿着创建好的数据节点的id 将平面图data保存
|
||||||
|
new Promise((resolve,reject) => { |
||||||
|
this.http.post("/api/DisposalNodes",dispositionNodeData).subscribe((data:any) => { |
||||||
|
resolve(data.id) |
||||||
|
}) |
||||||
|
}).then((id) => { |
||||||
|
let dataNodeData
|
||||||
|
new Promise((resolve,reject) => { |
||||||
|
postdata.parentId = id |
||||||
|
postdata.level = dispositionNodeData.level + 1 |
||||||
|
this.http.post("/api/DisposalNodes",postdata).subscribe((data:any) => { |
||||||
|
resolve(data) |
||||||
|
}) |
||||||
|
}).then((data:any) => { |
||||||
|
// 保存平面图数据到当前节点
|
||||||
|
// console.log(6666,data)
|
||||||
|
// let postdata =JSON.parse(JSON.stringify(this.canvasData.selectPanelPoint))
|
||||||
|
// postdata.Data = JSON.stringify(postdata.Data)
|
||||||
|
let objData = { |
||||||
|
id: "", |
||||||
|
data: JSON.stringify(this.canvasData.selectPanelPoint.Data) || null, |
||||||
|
version: this.canvasData.selectPanelPoint.Version || "2.0", |
||||||
|
disposalNodeId: data.id, |
||||||
|
planComponentId: sessionStorage.getItem("planId"), |
||||||
|
} |
||||||
|
|
||||||
|
this.http.post(`/api/DisposalNodeData`,objData).subscribe(data => { |
||||||
|
const config = new MatSnackBarConfig(); |
||||||
|
config.verticalPosition = 'top'; |
||||||
|
config.duration = 3000 |
||||||
|
this.snackBar.open('保存成功','确定',config) |
||||||
|
|
||||||
|
},err=>{ |
||||||
|
const config = new MatSnackBarConfig(); |
||||||
|
config.verticalPosition = 'top'; |
||||||
|
config.duration = 3000 |
||||||
|
this.snackBar.open('保存失败','确定',config) |
||||||
|
}) |
||||||
|
this.dialogRef.close(); |
||||||
|
this.canvasData.sendMessage("send a message") |
||||||
|
}) |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
<div mat-dialog-title>处置节点保存</div> |
||||||
|
<div style="display: flex;"> |
||||||
|
<button mat-stroked-button style="margin-right: 5px;" (click)="saveType('new')">新建节点并保存</button> |
||||||
|
<button mat-stroked-button (click)="saveType('old')">保存到已有节点</button> |
||||||
|
</div> |
@ -0,0 +1,53 @@ |
|||||||
|
<div *ngIf="type == 'new'"> |
||||||
|
<div mat-dialog-title>新增节点</div> |
||||||
|
<div> |
||||||
|
<form (ngSubmit)="onSubmit(form.value,'new')" #form="ngForm" class="example-container"> |
||||||
|
|
||||||
|
<div mat-dialog-content> |
||||||
|
<mat-form-field> |
||||||
|
<input type="text" matInput ngModel |
||||||
|
required name="name" placeholder="节点名称" autocomplete="off"> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
<div mat-dialog-content> |
||||||
|
<mat-form-field> |
||||||
|
<mat-select [(value)]="allRootDisposalNode[0].name" required placeholder="父节点名称"> |
||||||
|
<mat-option *ngFor="let item of allRootDisposalNode" [value]="item.name" (click)="clickNode(item)"> |
||||||
|
{{item.name}} |
||||||
|
</mat-option> |
||||||
|
</mat-select> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
<div mat-dialog-actions> |
||||||
|
<button mat-raised-button color="primary" type="submit" |
||||||
|
[disabled]="!form.form.valid"> |
||||||
|
确定 |
||||||
|
</button> |
||||||
|
<button mat-raised-button mat-dialog-close>取消</button> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div *ngIf="type == 'old'"> |
||||||
|
<div mat-dialog-title>保存到已有节点</div> |
||||||
|
<div> |
||||||
|
<form (ngSubmit)="onSubmit(form.value,'old')" #form="ngForm" class="example-container"> |
||||||
|
<div mat-dialog-content> |
||||||
|
<mat-form-field> |
||||||
|
<mat-select required ngModel placeholder="父节点名称" name="nodeId"> |
||||||
|
<mat-option *ngFor="let item of allPlanDisposalNode" [value]="item.id" (click)="clickNode(item)"> |
||||||
|
{{item.name}} |
||||||
|
</mat-option> |
||||||
|
</mat-select> |
||||||
|
</mat-form-field> |
||||||
|
</div> |
||||||
|
<div mat-dialog-actions> |
||||||
|
<button mat-raised-button color="primary" type="submit" |
||||||
|
[disabled]="!form.form.valid"> |
||||||
|
确定 |
||||||
|
</button> |
||||||
|
<button mat-raised-button mat-dialog-close>取消</button> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
</div> |
@ -0,0 +1,24 @@ |
|||||||
|
<div style="position: relative;width: 1400px;height: 800px;line-height: 800px;" class="swiper-container"> |
||||||
|
<div style="position: absolute;right: -2px;top: -392px;cursor: pointer;z-index: 999;width: 24px;height: 24px;" (click)="closeDialog()"> |
||||||
|
<span><mat-icon>clear</mat-icon></span> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="swiper-wrapper"> |
||||||
|
<div class="swiper-slide" style="text-align: center;" *ngFor="let img of imagesArr"> |
||||||
|
<img id="bigimg" (mousewheel)="zoomimg($event)" style=" |
||||||
|
max-width: 96%; |
||||||
|
max-height: 100%; |
||||||
|
min-width: 1px; |
||||||
|
min-height: 1px; |
||||||
|
position: absolute; |
||||||
|
top: 0; |
||||||
|
left: 0; |
||||||
|
bottom: 0; |
||||||
|
right: 0; |
||||||
|
margin: auto;" [src]="img.PropertyValue" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<!-- 如果需要导航按钮 --> |
||||||
|
<div class="swiper-button-next"></div> |
||||||
|
<div class="swiper-button-prev"></div> |
||||||
|
</div> |
@ -0,0 +1,24 @@ |
|||||||
|
<div class="leftAddBGC"> |
||||||
|
<div mat-dialog-title><label>编辑</label></div> |
||||||
|
|
||||||
|
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm"> |
||||||
|
|
||||||
|
<div> |
||||||
|
<input type="text" name="name" required ngModel placeholder="名称"> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div style="margin: 30px 0;"> |
||||||
|
<a href="javascript:;" class="uploadFile"> |
||||||
|
<input type="file" (change)='selectFile($event)' accept="image/*">↑点击这里上传文件 |
||||||
|
</a> |
||||||
|
<p *ngIf="file">{{file.name}}</p> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="submitBottom"> |
||||||
|
<button mat-raised-button color="primary" type="submit" [disabled]="!form.form.valid">确定</button> |
||||||
|
<button mat-raised-button mat-dialog-close>取消</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</form> |
||||||
|
|
||||||
|
</div> |
@ -1,11 +0,0 @@ |
|||||||
import { AxRectangleShape } from "./axRectangleShape"; |
|
||||||
|
|
||||||
export class AxImageShapeTest extends AxRectangleShape{ |
|
||||||
/** |
|
||||||
*
|
|
||||||
*/ |
|
||||||
constructor(x:number,y:number,width:number,height:number) { |
|
||||||
super(x,y,width,height); |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,90 @@ |
|||||||
|
/** |
||||||
|
* 事件系统 |
||||||
|
*/ |
||||||
|
export class AxMessageSystem { |
||||||
|
/** 监听数组 */ |
||||||
|
private static listeners = {}; |
||||||
|
|
||||||
|
/** |
||||||
|
* 注册事件 |
||||||
|
* @param name 事件名称 |
||||||
|
* @param callback 回调函数 |
||||||
|
* @param context 上下文 |
||||||
|
*/ |
||||||
|
public static addListener(name: string, callback: () => void, context: any) { |
||||||
|
const observers: Observer[] = AxMessageSystem.listeners[name]; |
||||||
|
if (!observers) { |
||||||
|
AxMessageSystem.listeners[name] = []; |
||||||
|
} |
||||||
|
AxMessageSystem.listeners[name].push(new Observer(callback, context)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 移除事件 |
||||||
|
* @param name 事件名称 |
||||||
|
* @param callback 回调函数 |
||||||
|
* @param context 上下文 |
||||||
|
*/ |
||||||
|
public static removeListener(name: string, callback: () => void, context: any) { |
||||||
|
const observers: Observer[] = AxMessageSystem.listeners[name]; |
||||||
|
if (!observers) { return; } |
||||||
|
const length = observers.length; |
||||||
|
for (let i = 0; i < length; i++) { |
||||||
|
const observer = observers[i]; |
||||||
|
if (observer.compar(context)) { |
||||||
|
observers.splice(i, 1); |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
if (observers.length === 0) { |
||||||
|
delete AxMessageSystem.listeners[name]; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 发送事件 |
||||||
|
* @param name 事件名称 |
||||||
|
*/ |
||||||
|
public static send(name: string, ...args: any[]) { |
||||||
|
const observers: Observer[] = AxMessageSystem.listeners[name]; |
||||||
|
if (!observers) { return; } |
||||||
|
const length = observers.length; |
||||||
|
for (let i = 0; i < length; i++) { |
||||||
|
const observer = observers[i]; |
||||||
|
observer.notify(name, ...args); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 观察者 |
||||||
|
*/ |
||||||
|
class Observer { |
||||||
|
/** 回调函数 */ |
||||||
|
private callback: () => void; |
||||||
|
/** 上下文 */ |
||||||
|
private context: any = null; |
||||||
|
|
||||||
|
constructor(callback: () => void, context: any) { |
||||||
|
const self = this; |
||||||
|
self.callback = callback; |
||||||
|
self.context = context; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 发送通知 |
||||||
|
* @param args 不定参数 |
||||||
|
*/ |
||||||
|
notify(...args: any[]): void { |
||||||
|
const self = this; |
||||||
|
self.callback.call(self.context, ...args); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 上下文比较 |
||||||
|
* @param context 上下文 |
||||||
|
*/ |
||||||
|
compar(context: any): boolean { |
||||||
|
return context === this.context; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,52 @@ |
|||||||
|
/** |
||||||
|
* 选择器 |
||||||
|
*/ |
||||||
|
export class AxSelection { |
||||||
|
constructor() { |
||||||
|
} |
||||||
|
private objects: Set<any> = new Set<any>(); |
||||||
|
// 获得第一个对象
|
||||||
|
public first(): any { |
||||||
|
if (this.objects.size > 0) { |
||||||
|
return [...this.objects][0]; |
||||||
|
} else { |
||||||
|
return null; |
||||||
|
} |
||||||
|
} |
||||||
|
// 是否已经选择了对象
|
||||||
|
public has(obj: any): boolean { |
||||||
|
return this.objects.has(obj); |
||||||
|
} |
||||||
|
// 获得所有对象
|
||||||
|
public all() { |
||||||
|
return [...this.objects]; |
||||||
|
} |
||||||
|
// 获取集合长度
|
||||||
|
public size(): number { |
||||||
|
return this.objects.size; |
||||||
|
} |
||||||
|
// 添加对象
|
||||||
|
public add(obj: any) { |
||||||
|
this.objects.add(obj); |
||||||
|
} |
||||||
|
// 添加集合
|
||||||
|
public addArray(array: any[]) { |
||||||
|
array.forEach(item => { |
||||||
|
this.objects.add(item); |
||||||
|
}); |
||||||
|
} |
||||||
|
// 移除对象
|
||||||
|
public delete(obj: any) { |
||||||
|
this.objects.delete(obj); |
||||||
|
} |
||||||
|
// 移除集合
|
||||||
|
public deleteArray(array: any[]) { |
||||||
|
array.forEach(item => { |
||||||
|
this.objects.delete(item); |
||||||
|
}); |
||||||
|
} |
||||||
|
// 清空所有对象
|
||||||
|
public clear() { |
||||||
|
this.objects.clear(); |
||||||
|
} |
||||||
|
} |
@ -1,37 +0,0 @@ |
|||||||
class MyEvent<T> extends CustomEvent<T> {
|
|
||||||
public static readonly CMD: string = "EVENT_NAME"; |
|
||||||
public constructor($type: string , $data: T ) {
|
|
||||||
super( $type , { detail: $data, bubbles: true, cancelable: true, composed: true }); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
class MyDispatch extends EventTarget {
|
|
||||||
private static _instance: MyDispatch; |
|
||||||
public static get Instance(): MyDispatch {
|
|
||||||
if (!MyDispatch._instance) MyDispatch._instance = new MyDispatch(); |
|
||||||
return MyDispatch._instance; |
|
||||||
} |
|
||||||
public send<T>($data: T, $type: string = MyEvent.CMD): void {
|
|
||||||
const $event: CustomEvent = new MyEvent<T>($type, $data); |
|
||||||
this.dispatchEvent($event); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
class Test {
|
|
||||||
|
|
||||||
public constructor() {
|
|
||||||
MyDispatch.Instance.addEventListener(MyEvent.CMD, this.onEvent as EventListener); |
|
||||||
} |
|
||||||
private onEvent($e: MyEvent<ITest>): void {
|
|
||||||
console.log(`target ${$e.target}`); |
|
||||||
console.log(`name: ${$e.detail._name} , occupation: ${$e.detail._occupation}`); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
interface ITest {
|
|
||||||
_name: string; |
|
||||||
_occupation: string; |
|
||||||
} |
|
||||||
|
|
||||||
let $test: Test = new Test(); |
|
||||||
MyDispatch.Instance.send<ITest>({ _name: `Aonaufly`, _occupation: `it` }); |
|
After Width: | Height: | Size: 707 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 748 B |
After Width: | Height: | Size: 845 B |
After Width: | Height: | Size: 687 B |
Before Width: | Height: | Size: 791 B After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 904 B After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 737 B |
After Width: | Height: | Size: 786 B |
After Width: | Height: | Size: 943 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 916 B |
After Width: | Height: | Size: 789 B |
After Width: | Height: | Size: 901 B |
After Width: | Height: | Size: 827 B |
After Width: | Height: | Size: 901 B |
After Width: | Height: | Size: 788 B |
After Width: | Height: | Size: 960 B |
After Width: | Height: | Size: 862 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 920 B |
After Width: | Height: | Size: 561 B |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.1 KiB |