Browse Source

[修改]修改初验需求,差异对比功能和导入gis功能

zhuzhou
邵佳豪 4 years ago
parent
commit
cc0fcb59ce
  1. 8
      src/app/key-unit/fire-fighting-device-look/fire-fighting-device.component.html
  2. 2
      src/app/key-unit/fire-fighting-device-look/fire-fighting-device.component.scss
  3. 6
      src/app/key-unit/fire-fighting-device/fire-fighting-device.component.html
  4. 2
      src/app/key-unit/fire-fighting-device/fire-fighting-device.component.scss
  5. 36
      src/app/key-unit/key-unit-management/key-unit-management.component.html
  6. 15
      src/app/pipes/boolean.pipe.ts
  7. 3
      src/app/plan-audit/plan-audit.module.ts
  8. 480
      src/app/plan-audit/wait-examineer/wait-examineer.component.html
  9. 296
      src/app/plan-audit/wait-examineer/wait-examineer.component.scss
  10. 929
      src/app/plan-audit/wait-examineer/wait-examineer.component.ts
  11. 36
      src/app/plan-management/entry-plan/entry-plan.component.html
  12. 36
      src/app/plan-management/maintain-up/maintain-up.component.html
  13. 60
      src/app/tabbar/tabbar.component.html
  14. 2
      src/app/tabbar/tabbar.component.scss
  15. 10
      src/app/ui/collection-tools-plan/addPlaneFigure.html
  16. 282
      src/app/ui/collection-tools-plan/collection-tools.component.html
  17. 274
      src/app/ui/collection-tools-plan/collection-tools.component.ts
  18. 33
      src/app/ui/collection-tools-plan/leftFunctionalDomain.ts
  19. 4
      src/app/ui/collection-tools-plan/panel.scss
  20. 4
      src/app/ui/collection-tools/collection-tools.component.html
  21. 11
      src/styles.scss

8
src/app/key-unit/fire-fighting-device-look/fire-fighting-device.component.html

@ -1,4 +1,4 @@
<div class="content">
<div class="content" id="firefightingdevicelook">
<mat-tab-group>
<!--
<mat-tab label="单位消防设施">
@ -115,7 +115,7 @@
</mat-expansion-panel>
<mat-expansion-panel *ngFor="let items of item.facilityItems" disabled [expanded]=items.expanded>
<mat-expansion-panel-header>
<mat-expansion-panel-header class="expansionheader">
<label class="firstContent">
<mat-checkbox (change)='checkedCompany($event,item,items)' [disabled]='items.isBuiltin'></mat-checkbox>
</label>
@ -124,10 +124,10 @@
<label class="totalContent">{{items.total ? items.total : '总数: 0'}}</label>
<label class="lastTextContent">
<textarea readonly maxlength="250" [(ngModel)]="items.details" style="width: 80%;"></textarea>
<textarea readonly maxlength="250" [(ngModel)]="items.details" style="width:98%;"></textarea>
</label>
<label><mat-icon (click)='SwitchBuildingBoard(newItem,items)' *ngIf="items.isBuiltin">keyboard_arrow_down</mat-icon></label>
<!-- <label><mat-icon (click)='SwitchBuildingBoard(newItem,items)' *ngIf="items.isBuiltin">keyboard_arrow_down</mat-icon></label> -->
</mat-expansion-panel-header>
<div class="overflowTable">

2
src/app/key-unit/fire-fighting-device-look/fire-fighting-device.component.scss

@ -38,7 +38,7 @@
color: black;
text-align: center;
white-space: pre-line;
max-height: 48px;
// max-height: 48px;
overflow-y: auto;
}
.lastTextContent { //textarea多行文本

6
src/app/key-unit/fire-fighting-device/fire-fighting-device.component.html

@ -1,4 +1,4 @@
<div class="content">
<div class="content" id="firefightingdevice">
<mat-tab-group (selectedIndexChange)="selectedChange($event)">
<!-- <mat-tab style="display: none;" label="单位消防设施">
@ -119,7 +119,7 @@
</mat-expansion-panel>
<mat-expansion-panel *ngFor="let items of item.facilityItems" disabled [expanded]=items.expanded>
<mat-expansion-panel-header>
<mat-expansion-panel-header class="expansionheader">
<label class="firstContent">
<mat-checkbox (change)='checkedCompany($event,item,items)' [disabled]='items.isBuiltin'></mat-checkbox>
</label>
@ -236,7 +236,7 @@
<textarea maxlength="250" [(ngModel)]="items.details" style="width: 80%;" *ngIf="!((item.name == '消防水系统' && items.name == '供水管网') || (item.name == '消防水系统' && items.name == '自动喷水灭火系统') || (item.name == '消防灭火给水系统' && items.name == '自动喷水灭火系统') || (item.name == '消防灭火给水系统' && items.name == '气体自动灭火系统') || (item.name == '消防灭火给水系统' && items.name == '消防泵房') || (item.name == '其它' && items.name == '排烟系统') || (item.name == '其它' && items.name == '灭火器') || (item.name == '其它' && items.name == '气体灭火') || (item.name == '其它' && items.name == '消防通信') || (item.name == '消防设施' && items.name == '自动报警系统') || (item.name == '消防设施' && items.name == '消防泵') || (item.name == '消火栓系统' && items.name == '灭火剂') || (item.name == '消火栓系统' && items.name == '报警设施') || (item.name == '消火栓系统' && items.name == '消防管网') || (item.name == '其它设施' && items.name == '优先广播') || (item.name == '其它设施' && items.name == 'VI检测仪') || (item.name == '其它设施' && items.name == '泡沫水喷雾系统') || (item.name == '自动消防设施' && items.name == '喷水灭火系统') || (item.name == '自动消防设施' && items.name == '自动报警系统') || (item.name == '自动消防设施' && items.name == '防排烟系统') || (item.name == '自动消防设施' && items.name == '水幕系统') || (item.name == '自动消防设施' && items.name == '消防泵') || (item.name == '消防水源' && items.name == '消防水池'))"></textarea>
</label>
<label><mat-icon (click)='SwitchBuildingBoard(newItem,items)' *ngIf="items.isBuiltin">keyboard_arrow_down</mat-icon></label>
<!-- <label><mat-icon (click)='SwitchBuildingBoard(newItem,items)' *ngIf="items.isBuiltin">keyboard_arrow_down</mat-icon></label> -->
</mat-expansion-panel-header>
<div class="overflowTable">

2
src/app/key-unit/fire-fighting-device/fire-fighting-device.component.scss

@ -38,7 +38,7 @@
color: black;
text-align: center;
white-space: pre-line;
max-height: 48px;
// max-height: 48px;
overflow-y: auto;
}
.lastTextContent { //textarea多行文本

36
src/app/key-unit/key-unit-management/key-unit-management.component.html

@ -160,9 +160,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.basicInfoScore * 5).toFixed(1),5)"></div>
</div>
<span>{{(element.companyIntegrityScore.basicInfoScore * 5).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.basicInfoScore * 5).toFixed(1)}}%</span>
</div>
<div class="number">5</div>
<div class="number">5%</div>
</li>
<li>
<div class="name">建筑信息</div>
@ -170,9 +170,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.buildingInfoScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.buildingInfoScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.buildingInfoScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">平面图</div>
@ -180,9 +180,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.planImageScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.planImageScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.planImageScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">四周毗邻</div>
@ -190,9 +190,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.adjoinScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.adjoinScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.adjoinScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">消防设施</div>
@ -200,9 +200,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.facilityScore * 25).toFixed(1),25)"></div>
</div>
<span>{{(element.companyIntegrityScore.facilityScore * 25).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.facilityScore * 25).toFixed(1)}}%</span>
</div>
<div class="number">25</div>
<div class="number">25%</div>
</li>
<li>
<div class="name">重点部位</div>
@ -210,9 +210,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.importantLocationScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.importantLocationScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.importantLocationScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">功能分区</div>
@ -220,9 +220,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.functionalDivisionScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.functionalDivisionScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.functionalDivisionScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">实景图</div>
@ -230,9 +230,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.realityImageScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.realityImageScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.realityImageScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">CAD上传</div>
@ -240,9 +240,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.cadScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.cadScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.cadScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
</ul>
</div>

15
src/app/pipes/boolean.pipe.ts

@ -45,3 +45,18 @@ export class state implements PipeTransform {
}
}
}
@Pipe({name: 'differentContentTitle'})
export class differentContentTitle implements PipeTransform {
transform(value: string): string {
console.log(666,typeof(value))
if(typeof(value) == 'boolean' && value){
return '是'
}else if(typeof(value) == 'boolean' && !value){
return '否'
}else{
return value
}
}
}

3
src/app/plan-audit/plan-audit.module.ts

@ -72,11 +72,12 @@ import { previewImg3 } from './realistic-picture-look/realistic-picture.componen
import { show3D } from './wait-examineer/wait-examineer.component';
import { recordshow3D } from './plan-record/plan-record.component'
import { ViewDetailsComponent } from './view-details/view-details.component'
import { differentContentTitle } from '../pipes/boolean.pipe';
@NgModule({
declarations: [DetachmentLevelComponent, PlanAuditComponent, PlanPassComponent,PlanOpen, PlanRecordComponent, BasicInfoComponent,
WaitExamineerComponent,AllaroundComponent,ImgDetails,FireFacilitiesComponent,ImagesData2,previewBigImg2,PlanListComponent,OpenPlanToolDialog,
KeySiteLookComponent,KeySiteImgs2,FunctionPartitionComponent,CadDrawComponent,RealisticPictureLookComponent,previewImg3,show3D, WaterAuditComponent,
FireforceAuditComponent, LinkageforcesAuditComponent, ViewDetailsComponent,recordshow3D,remark],
FireforceAuditComponent, LinkageforcesAuditComponent, ViewDetailsComponent,recordshow3D,remark,differentContentTitle],
imports: [
CommonModule,
PlanAuditRoutingModule,

480
src/app/plan-audit/wait-examineer/wait-examineer.component.html

@ -1,263 +1,232 @@
<div class="box">
<div class="boxleft">
<div class="lefthead">
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm">
<div class="headdiv" style="margin-top: 30px;">
<span>操作类型:</span>
<!-- <div></div>
<div></div>
<div></div>
<div></div> -->
<input type="radio" name="level" value="" [(ngModel)]="level"><span>全部</span>
<input type="radio" name="level" value="1" [(ngModel)]="level"><span>更新</span>
<input type="radio" name="level" value="0" [(ngModel)]="level"><span>新增</span>
<input type="radio" name="level" value="2" [(ngModel)]="level"><span>删除</span>
<div class="count">
<span >共计:{{count}}条</span>
</div>
</div>
<div class="headthree">
<span>类型:</span>
<mat-form-field>
<mat-select placeholder='请选择单位类型' name="unittype" [(ngModel)]="projectlevel">
<mat-option value="1">Ⅰ级预案</mat-option>
<mat-option value="2">Ⅱ级预案</mat-option>
<mat-option value="3">Ⅲ级预案</mat-option>
<mat-option value="4">Ⅳ级预案</mat-option>
<mat-option value="5">Ⅴ级预案</mat-option>
<mat-option value="6">应急预案(国家级)</mat-option>
<mat-option value="7">应急预案(市级)</mat-option>
<mat-option value="8">类型预案</mat-option>
<mat-option value="11">重点单位</mat-option>
<mat-option value="12">消防水源</mat-option>
<mat-option value="13">消防力量</mat-option>
<mat-option value="14">联动力量</mat-option>
</mat-select>
</mat-form-field>
<span style="margin-left: 15px;">编制级别:</span>
<mat-form-field>
<mat-select name="preparelevel" placeholder='请选择编制级别' [(ngModel)]="PlanLevel">
<mat-option *ngFor="let item of preparelevels" [value]="item.value">{{item.name}}</mat-option>
</mat-select>
</mat-form-field>
<button mat-raised-button color="primary" type="submit" >查询</button>
<button mat-raised-button color="primary" (click)='record()'><img src="../../../assets/images/refresh.png" > 重置</button>
<div class="boxleft">
<div class="lefthead">
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm">
<div class="headdiv" style="margin-top: 30px;">
<span>操作类型:</span>
<input type="radio" name="level" value="" [(ngModel)]="level"><span>全部</span>
<input type="radio" name="level" value="1" [(ngModel)]="level"><span>更新</span>
<input type="radio" name="level" value="0" [(ngModel)]="level"><span>新增</span>
<input type="radio" name="level" value="2" [(ngModel)]="level"><span>删除</span>
<div class="count">
<span>共计:{{count}}条</span>
</div>
</form>
<div class="tablediv">
<table cellspacing="0" cellpadding="0" style="margin-top: 10px;">
<thead>
<th style="width: 15%;">类型</th>
<th style="width: 15%;">名称</th>
<th style="width: 10%;">操作</th>
<th style="width: 15%;">所属组织</th>
<th style="width: 15%;">审核状态</th>
<th style="width: 15%;">提交人</th>
<th style="width: 25%;">提交时间</th>
</thead>
</table>
<div class="tbodycss" id="tbodydiv" >
<table cellspacing="0" cellpadding="0" id="table" >
<tr [ngClass]="{'selectedTr': item.id == id}" *ngFor="let item of tableDate;let key = index" (click)='radioClick($event,item)'>
<td style="width: 15%;">
<mat-checkbox color="primary" (change)='radioClick($event,item)'style="float: left;margin-top:'2px'"></mat-checkbox>
{{item.contentType=='1'?'Ⅰ级预案':item.contentType=='2'?'Ⅱ级预案':item.contentType=='3'?'Ⅲ级预案':item.contentType=='4'?'Ⅳ级预案':item.contentType=='5'?
'Ⅴ级预案':item.contentType=='6'?'应急预案(国家级)':item.contentType=='7'?'应急预案(市级)':item.contentType=='8'?'类型预案':item.contentType=='11'?'重点单位':item.contentType=='12'?'水源':item.contentType=='13'?'消防力量':item.contentType=='14'?'联动力量':'未知'}}</td>
<td style="width: 15%;">{{item.title}}</td>
<td style="width: 10%;" [ngClass]="{'green': item.operation == '1','red':item.operation == '2','blue':item.operation == '0'}">{{item.operation=='0'?'新增':item.operation=='1'?'更新':'删除'}}</td>
<td style="width: 15%;">{{item.organizationName}}</td>
<td style="width: 15%;" [ngClass]="{'green': item.verifyState == '1'||item.verifyState == '4','red':item.verifyState == '2'||item.verifyState == '5'}">{{item.verifyState=='0'?'待初审':item.verifyState=='1'?
'初审通过':item.verifyState=='2'?'初审驳回':item.verifyState=='3'?'待终审':item.verifyState=='4'?'终审通过':'终审驳回'}}</td>
<td style="width: 15%;">{{item.creatorName}}</td>
<td style="width: 25%;">{{item.createTime|date:'yyyy-MM-dd'}}</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="boxright">
<div class="righthead">
<div class="rightheadtwo">
<button mat-raised-button color="primary" style="float: right;" (click)='lookNew()' *ngIf="showtype == 0">查看详情</button>
<button mat-raised-button style="color: #FFFFFF;background-color: #FF7161;float: right;" (click)='refuse()'>拒绝</button>
<button mat-raised-button style="color: #FFFFFF;background-color: #38D984;float: right;" (click)='agree()'>同意</button>
<div class="headthree">
<span>类型:</span>
<mat-form-field>
<mat-select placeholder='请选择单位类型' name="unittype" [(ngModel)]="projectlevel">
<mat-option value="1">Ⅰ级预案</mat-option>
<mat-option value="2">Ⅱ级预案</mat-option>
<mat-option value="3">Ⅲ级预案</mat-option>
<mat-option value="4">Ⅳ级预案</mat-option>
<mat-option value="5">Ⅴ级预案</mat-option>
<mat-option value="6">应急预案(国家级)</mat-option>
<mat-option value="7">应急预案(市级)</mat-option>
<mat-option value="8">类型预案</mat-option>
<mat-option value="11">重点单位</mat-option>
<mat-option value="12">消防水源</mat-option>
<mat-option value="13">消防力量</mat-option>
<mat-option value="14">联动力量</mat-option>
</mat-select>
</mat-form-field>
<span style="margin-left: 15px;">编制级别:</span>
<mat-form-field>
<mat-select name="preparelevel" placeholder='请选择编制级别' [(ngModel)]="PlanLevel">
<mat-option *ngFor="let item of preparelevels" [value]="item.value">{{item.name}}</mat-option>
</mat-select>
</mat-form-field>
<button mat-raised-button color="primary" type="submit">查询</button>
<button mat-raised-button color="primary" (click)='record()'><img src="../../../assets/images/refresh.png">
重置</button>
</div>
<div class="rightheadone" style="display: none;">
<button mat-raised-button color="primary" (click)="buttonChange()"><img src="../../../assets/images/preview.png" style="margin-right: 3px;margin-bottom: 3px;display: none;">{{isallDate?'显示变更数据':'显示完整数据'}} </button>
<button mat-raised-button *ngIf="isallDate" style="background-color: #FFCC00; color: #FFFFFF;" (click)="preview()"><img src="../../../assets/images/change.png" style="margin-bottom: 2px;" > 预览得分</button>
</form>
<div class="tablediv">
<table cellspacing="0" cellpadding="0" style="margin-top: 10px;">
<thead>
<th style="width: 15%;">类型</th>
<th style="width: 15%;">名称</th>
<th style="width: 10%;">操作</th>
<th style="width: 15%;">所属组织</th>
<th style="width: 15%;">审核状态</th>
<th style="width: 15%;">提交人</th>
<th style="width: 25%;">提交时间</th>
</thead>
</table>
<div class="tbodycss" id="tbodydiv">
<table cellspacing="0" cellpadding="0" id="table">
<tr [ngClass]="{'selectedTr': item.id == id}" *ngFor="let item of tableDate;let key = index"
(click)='radioClick($event,item)'>
<td style="width: 15%;">
<mat-checkbox color="primary" (change)='radioClick($event,item)' style="float: left;margin-top:'2px'">
</mat-checkbox>
{{item.contentType=='1'?'Ⅰ级预案':item.contentType=='2'?'Ⅱ级预案':item.contentType=='3'?'Ⅲ级预案':item.contentType=='4'?'Ⅳ级预案':item.contentType=='5'?
'Ⅴ级预案':item.contentType=='6'?'应急预案(国家级)':item.contentType=='7'?'应急预案(市级)':item.contentType=='8'?'类型预案':item.contentType=='11'?'重点单位':item.contentType=='12'?'水源':item.contentType=='13'?'消防力量':item.contentType=='14'?'联动力量':'未知'}}
</td>
<td style="width: 15%;">{{item.title}}</td>
<td style="width: 10%;"
[ngClass]="{'green': item.operation == '1','red':item.operation == '2','blue':item.operation == '0'}">
{{item.operation=='0'?'新增':item.operation=='1'?'更新':'删除'}}</td>
<td style="width: 15%;">{{item.organizationName}}</td>
<td style="width: 15%;"
[ngClass]="{'green': item.verifyState == '1'||item.verifyState == '4','red':item.verifyState == '2'||item.verifyState == '5'}">
{{item.verifyState=='0'?'待初审':item.verifyState=='1'?
'初审通过':item.verifyState=='2'?'初审驳回':item.verifyState=='3'?'待终审':item.verifyState=='4'?'终审通过':'终审驳回'}}
</td>
<td style="width: 15%;">{{item.creatorName}}</td>
<td style="width: 25%;">{{item.createTime|date:'yyyy-MM-dd'}}</td>
</tr>
</table>
</div>
</div>
<div id="company">
<mat-tab-group *ngIf="showtype == 3" class="company" [selectedIndex]="selected.value" (selectedIndexChange)="selectedIndexChange($event)">
<mat-tab label="基本信息">
<ng-template matTabContent>
<app-basic-info></app-basic-info>
</ng-template>
</mat-tab>
<mat-tab label="总平面图">
<ng-template matTabContent>
<app-plan-list [planType]="planTypeIndex"></app-plan-list>
</ng-template>
</mat-tab>
<mat-tab label="层平面图">
<ng-template matTabContent>
<app-plan-list [planType]="planTypeIndex"></app-plan-list>
</ng-template>
</mat-tab>
<mat-tab label="四周毗邻">
<ng-template matTabContent>
<app-allaround></app-allaround>
</ng-template>
</mat-tab>
<mat-tab label="消防设施">
<ng-template matTabContent>
<app-fire-facilities></app-fire-facilities>
</ng-template>
</mat-tab>
<mat-tab label="重点部位">
<ng-template matTabContent>
<app-key-site-look></app-key-site-look>
</ng-template>
</mat-tab>
<mat-tab label="功能分区">
<ng-template matTabContent>
<app-function-partition></app-function-partition>
</ng-template>
</mat-tab>
<mat-tab label="实景图">
<ng-template matTabContent>
<app-realistic-picture-look></app-realistic-picture-look>
</ng-template>
</mat-tab>
<mat-tab label="CAD">
<ng-template matTabContent>
<app-cad-draw></app-cad-draw>
</ng-template>
</mat-tab>
</mat-tab-group>
</div>
</div>
<div class="boxright" id="waitexamineergis">
<!-- 头部按钮栏 -->
<div class="righthead">
<div class="rightheadtwo">
<button mat-raised-button color="primary" style="float: right;" (click)='lookNew()'
*ngIf="showtype == 0">查看详情</button>
<button mat-raised-button style="color: #FFFFFF;background-color: #FF7161;float: right;"
(click)='refuse()'>拒绝</button>
<button mat-raised-button style="color: #FFFFFF;background-color: #38D984;float: right;"
(click)='agree()'>同意</button>
</div>
<!-- <div class="rightheadone" style="display: block;">
<button mat-raised-button color="primary" (click)="buttonChange()">{{isallDate?'显示变更数据':'显示完整数据'}} </button>
<button mat-raised-button *ngIf="isallDate" style="background-color: #FFCC00; color: #FFFFFF;"
(click)="preview()"><img src="../../../assets/images/change.png" style="margin-bottom: 2px;"> 预览得分</button>
</div> -->
</div>
<div id="firefacilities" *ngIf="showtype == 3 && !isallDate" style="margin: 10px;">
<mat-accordion class="tableContent" >
<mat-expansion-panel expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight ='40px' expandedHeight='40px' class="panelhead" style="background-color: #2196F3;">
<mat-panel-title style="font-size: 16px;color: #FFFFFF;" >
<!-- 数据变更div -->
<div *ngIf="!isallDate" style="flex: 1;overflow-y: auto;">
<div *ngIf="showtype == 3" id="firefacilities" style="margin: 10px;">
<mat-accordion class="tableContent" multi>
<!-- 基本信息 -->
<mat-expansion-panel *ngIf="this.differentContentOfUnitInfo[0].childrens.length != 0" expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight='40px' expandedHeight='40px' class="panelhead"
style="background-color: #2196F3;">
<mat-panel-title style="font-size: 16px;color: #FFFFFF;">
基本信息
</mat-panel-title>
</mat-expansion-panel-header >
</mat-expansion-panel-header>
<div class="accordingin">
<mat-accordion>
<mat-expansion-panel expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight ='30px' expandedHeight='30px' class="panelhead" >
<mat-panel-title style="font-size: 16px;color:#2196F3;" >
<img src="../../../assets/images/update.png"><span>修改-沃尔玛(上海)职业发展有限公司</span>
<mat-expansion-panel expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight='30px' expandedHeight='30px' class="panelhead">
<mat-panel-title style="font-size: 16px;color:#2196F3;">
<mat-icon style="font-size: 18px;width: 18px;height: 18px;">border_color</mat-icon>
<span>修改-{{selectedItem.title}}</span>
</mat-panel-title>
</mat-expansion-panel-header>
<table>
<tr>
<th>单位地址 :</th>
<td><span style="margin-left: 7px;"></span> <span style="color: #2196F3;">上海市上海市黄浦区武胜路333号</span>变更为
<span style="color: #2196F3;">上海市上海市黄浦区金陵西路28号</span></td>
</tr>
<tr>
<th>联系电话 :</th>
<td><span style="margin-left: 7px;"></span><span style="color: #2196F3;">15069853369</span>变更为
<span style="color: #2196F3;">13869877764</span></td>
</tr>
<tr>
<th>始建于(年):</th>
<td><span style="margin-left: 7px;"></span><span style="color: #2196F3;">1991</span>变更为
<span style="color: #2196F3;">2003</span></td>
<tr *ngFor="let i of this.differentContentOfUnitInfo[0].childrens">
<th>{{i.displayName}} :</th>
<ng-container *ngIf="i.propertyName == 'imageUrl'; else elseTemplate">
<td>
<span class="spantext" style="vertical-align: top;"></span>
<img class="spantext" style="width: 150px;height: 105px;" [src]="i.oldValue" alt="">
<span class="spantext" style="vertical-align: top;">变更为</span>
<img class="spantext" style="width: 150px;height: 105px;" [src]="i.newValue" alt="">
</td>
</ng-container>
<ng-template #elseTemplate>
<td>
<span class="spantext"></span>
<span class="spantext buleColor">{{i.oldValue}}</span>
<span class="spantext">变更为</span>
<span class="spantext buleColor">{{i.newValue}}</span>
</td>
</ng-template>
</tr>
</table>
</mat-expansion-panel>
</mat-accordion>
</div>
</mat-expansion-panel>
</mat-accordion>
<mat-accordion class="tableContent" >
<mat-expansion-panel expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight ='40px' expandedHeight='40px' class="panelhead" style="background-color: #2196F3;">
<mat-panel-title style="font-size: 16px;color: #FFFFFF;" >
基本信息
<!-- 建筑信息 -->
<mat-expansion-panel *ngIf="this.differentContentOfBuildingsInfo.childrens.length != 0" expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight='40px' expandedHeight='40px' class="panelhead"
style="background-color: #2196F3;">
<mat-panel-title style="font-size: 16px;color: #FFFFFF;">
建筑信息
</mat-panel-title>
</mat-expansion-panel-header >
</mat-expansion-panel-header>
<div class="accordingin">
<mat-accordion>
<mat-expansion-panel expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight ='30px' expandedHeight='30px' class="panelhead" >
<mat-panel-title style="font-size: 16px;color:#2196F3;" >
<img src="../../../assets/images/update.png"><span>修改-沃尔玛(上海)职业发展有限公司</span>
<mat-accordion *ngFor="let item of this.differentContentOfBuildingsInfo.childrens">
<mat-expansion-panel *ngIf="item.childrens.length != 0" expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight='30px' expandedHeight='30px' class="panelhead">
<mat-panel-title style="font-size: 16px;color:#2196F3;">
<mat-icon style="font-size: 18px;width: 18px;height: 18px;">border_color</mat-icon>
<span>{{item.propertyName}}</span>
</mat-panel-title>
</mat-expansion-panel-header>
<table>
<tr>
<th>单位地址 :</th>
<td><span style="margin-left: 7px;"></span> <span style="color: #2196F3;">上海市上海市黄浦区武胜路333号</span>变更为
<span style="color: #2196F3;">上海市上海市黄浦区金陵西路28号</span></td>
</tr>
<tr>
<th>联系电话 :</th>
<td><span style="margin-left: 7px;"></span><span style="color: #2196F3;">15069853369</span>变更为
<span style="color: #2196F3;">13869877764</span></td>
<tr *ngFor="let i of item.childrens">
<th>{{i.displayName}} :</th>
<td>
<span class="spantext"></span>
<span class="spantext buleColor">{{i.oldValue | differentContentTitle}}</span>
<span class="spantext">变更为</span>
<span class="spantext buleColor">{{i.newValue | differentContentTitle}}</span>
</td>
</tr>
<tr>
<th>始建于(年):</th>
<td><span style="margin-left: 7px;"></span><span style="color: #2196F3;">1991</span>变更为
<span style="color: #2196F3;">2003</span></td>
</table>
</mat-expansion-panel>
</mat-accordion>
</div>
</mat-expansion-panel>
<!-- 功能分区 -->
<mat-expansion-panel *ngIf="this.differentContentOfFunction.length != 0" expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight='40px' expandedHeight='40px' class="panelhead"
style="background-color: #2196F3;">
<mat-panel-title style="font-size: 16px;color: #FFFFFF;">
功能分区
</mat-panel-title>
</mat-expansion-panel-header>
<div class="accordingin">
<mat-accordion *ngFor="let item of this.differentContentOfFunction">
<mat-expansion-panel *ngIf="item.childrens.length != 0" expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight='30px' expandedHeight='30px' class="panelhead">
<mat-panel-title style="font-size: 16px;color:#2196F3;">
<mat-icon style="font-size: 18px;width: 18px;height: 18px;">border_color</mat-icon>
<span>{{item.propertyName}}</span>
</mat-panel-title>
</mat-expansion-panel-header>
<table>
<tr *ngFor="let i of item.childrens[0].childrens">
<th>{{i.displayName}} :</th>
<td>
<span class="spantext"></span>
<span class="spantext buleColor">{{i.oldValue | differentContentTitle}}</span>
<span class="spantext">变更为</span>
<span class="spantext buleColor">{{i.newValue | differentContentTitle}}</span>
</td>
</tr>
</table>
</mat-expansion-panel>
</mat-accordion>
</div>
</mat-expansion-panel>
</mat-accordion>
<mat-accordion class="tableContent" >
<mat-expansion-panel *ngIf="!isallDate" style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight ='40px' expandedHeight='40px' class="panelhead" style="background-color: #2196F3;">
<mat-panel-title style="font-size: 16px;color: #FFFFFF;" >
四周毗邻
</mat-panel-title>
</mat-expansion-panel-header >
<div class="accordingin">
<mat-accordion>
<mat-expansion-panel style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight ='30px' expandedHeight='30px' class="panelhead" >
<mat-panel-title style="font-size: 16px;color:#2196F3;" >
<img src="../../../assets/images/update.png"><span>一号建筑</span>
</mat-panel-title>
</mat-expansion-panel-header>
<div class="onebuilding">
<div class="accordingleft">
<span>一号建筑:</span>
</div>
<div class="accordingright">
<span></span><img src="../../../assets/images/chatchange.png">
<span>变更为</span><img src="../../../assets/images/chatchange.png">
</div>
</div>
</mat-expansion-panel>
</mat-accordion>
</div>
</mat-expansion-panel>
</mat-accordion>
<!-- 实景图 -->
</mat-accordion>
</div>
</div>
<!-- 点击每条表格右边显示内容 -->
<div *ngIf="isallDate">
<!-- word文档 -->
<div class="word" *ngIf="showtype == 0">
<iframe [src]='iframeSrc'></iframe>
<iframe [src]='iframeSrc'></iframe>
</div>
<div id="viewer" *ngIf="showtype == 1"></div>
<!-- 全景图 -->
<div id="viewer" *ngIf="showtype == 1"></div>
<div class="twoD" *ngIf="showtype == 2">
<div class="planBox">
<span>单位名称: </span>
@ -279,24 +248,77 @@
<span style="color: #2196F3;cursor:pointer;" (click)='oopen3Dshow()'>查看详情</span>
</div>
</div>
<!-- 重点单位 -->
<div id="company" *ngIf="showtype == 3">
<mat-tab-group class="company" [selectedIndex]="selected.value"
(selectedIndexChange)="selectedIndexChange($event)">
<mat-tab label="基本信息">
<ng-template matTabContent>
<app-basic-info></app-basic-info>
</ng-template>
</mat-tab>
<mat-tab label="总平面图">
<ng-template matTabContent>
<app-plan-list [planType]="planTypeIndex"></app-plan-list>
</ng-template>
</mat-tab>
<mat-tab label="层平面图">
<ng-template matTabContent>
<app-plan-list [planType]="planTypeIndex"></app-plan-list>
</ng-template>
</mat-tab>
<mat-tab label="四周毗邻">
<ng-template matTabContent>
<app-allaround></app-allaround>
</ng-template>
</mat-tab>
<mat-tab label="消防设施">
<ng-template matTabContent>
<app-fire-facilities></app-fire-facilities>
</ng-template>
</mat-tab>
<mat-tab label="重点部位">
<ng-template matTabContent>
<app-key-site-look></app-key-site-look>
</ng-template>
</mat-tab>
<mat-tab label="功能分区">
<ng-template matTabContent>
<app-function-partition></app-function-partition>
</ng-template>
</mat-tab>
<mat-tab label="实景图">
<ng-template matTabContent>
<app-realistic-picture-look></app-realistic-picture-look>
</ng-template>
</mat-tab>
<mat-tab label="CAD">
<ng-template matTabContent>
<app-cad-draw></app-cad-draw>
</ng-template>
</mat-tab>
</mat-tab-group>
</div>
<!-- 水源审核 -->
<div class="waterAudit" *ngIf="showtype == 12">
<app-water-audit [waterData]="waterData"></app-water-audit>
</div>
<!-- 消防力量审核 -->
<div class="fireForceAudit" *ngIf="showtype == 13">
<app-fireforce-audit [FireForceDetailInfo]="fireForceDetailInfo" [level]="postlevel"></app-fireforce-audit>
</div>
<div class="emptyContent" *ngIf="showtype == 666">
<span>该提交内容为空,从未保存过,请驳回该审核</span>
<app-fireforce-audit [FireForceDetailInfo]="fireForceDetailInfo" [level]="postlevel"></app-fireforce-audit>
</div>
<!-- 联动力量审核 -->
<div class="LinkageForcesAudit" *ngIf="showtype == 14">
<app-linkageforces-audit [LinkageForceDetailInfo]="LinkageForceDetailInfo"></app-linkageforces-audit>
</div>
<div class="emptyContent" *ngIf="showtype == 666">
<span>该提交内容为空,从未保存过,请驳回该审核</span>
</div>
</div>
</div>
</div>
<div class="echarts" *ngIf="previewshow" ><!-- [style.display]="previewshow==true?'block':'none'" -->
<div class="bar" id="indexbar" ></div>
<div class="zhu" id="zhu" ></div>
<div class="echarts" *ngIf="previewshow">
<div class="bar" id="indexbar"></div>
<div class="zhu" id="zhu"></div>
</div>

296
src/app/plan-audit/wait-examineer/wait-examineer.component.scss

@ -1,217 +1,214 @@
.box{
.box {
height: 100%;
width: 100%;
display: flex;
.boxleft{
.boxleft {
height: 100%;
width: 45%;
background-color: #FFFFFF;
background-color: #ffffff;
display: flex;
flex-direction: column;
overflow: auto;
.lefthead{
.lefthead {
display: flex;
flex-direction: column;
.headdiv{
@media screen and (min-device-width:1400px){
.headdiv {
@media screen and (min-device-width: 1400px) {
margin: 0 0 0 28px;
}
@media screen and (max-device-width:1400px) and (min-device-width:1200px){
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) {
margin-left: 15px;
}
@media screen and (max-device-width:1200px){
@media screen and (max-device-width: 1200px) {
margin-left: 5px;
}
height: 40px;
display: flex;
flex-direction: row;
.radio{
.radio {
height: 10px;
}
span{
@media screen and (min-device-width:1400px){
span {
@media screen and (min-device-width: 1400px) {
font-size: 16px;
}
@media screen and (max-device-width:1400px) and (min-device-width:1200px){
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) {
font-size: 16px;
}
@media screen and (max-device-width:1200px){
@media screen and (max-device-width: 1200px) {
font-size: 14px;
}
margin-left: 3px;
}
input{
input {
position: relative;
@media screen and (min-device-width:1400px){
@media screen and (min-device-width: 1400px) {
margin-left: 50px;
top: 6px;
}
@media screen and (max-device-width:1200px){
@media screen and (max-device-width: 1200px) {
margin-left: 8px;
top: 4px;
}
@media screen and (max-device-width:1400px) and (min-device-width:1200px){
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) {
margin-left: 8px;
top: 6px;
}
}
.count{
@media screen and (min-device-width:1400px){
.count {
@media screen and (min-device-width: 1400px) {
margin-left: 110px;
}
@media screen and (max-device-width:1200px){
@media screen and (max-device-width: 1200px) {
margin-left: 20px;
position: relative;
bottom: 3px;
}
@media screen and (max-device-width:1400px) and (min-device-width:1200px){
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) {
margin-left: 20px;
/* position: relative;
bottom: 3px; */
}
}
}
.headthree{
@media screen and (min-device-width:1400px){
.headthree {
@media screen and (min-device-width: 1400px) {
margin-left: 30px;
}
@media screen and (max-device-width:1200px){
@media screen and (max-device-width: 1200px) {
margin-left: 7px;
font-size: 14px;
mat-form-field{
mat-form-field {
width: 120px;
}
}
@media screen and (max-device-width:1400px) and (min-device-width:1200px){
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) {
margin-left: 15px;
//font-size: 14px;
mat-form-field{
mat-form-field {
width: 140px;
}
}
button{
@media screen and (min-device-width:1400px){
button {
@media screen and (min-device-width: 1400px) {
margin-left: 30px;
font-size: 16px;
width: 80px;
height: 36px;
}
@media screen and (max-device-width:1400px){
@media screen and (max-device-width: 1400px) {
margin-left: 90px;
font-size: 14px;
}
}
img{
@media screen and (min-device-width:1400px){
img {
@media screen and (min-device-width: 1400px) {
height: 14px;
width: 14px;
}
@media screen and (max-device-width:1400px){
@media screen and (max-device-width: 1400px) {
height: 12px;
width: 12px;
}
}
}
}
.tablediv{
.tablediv {
width: 100%;
height: 100%;
.tbodycss{
@media screen and (min-device-width:1400px){
.tbodycss {
@media screen and (min-device-width: 1400px) {
overflow-y: auto;
}
height: 650px;
width: 100%;
.selectedTr{
.selectedTr {
background-color: #b3d3ee;
}
td{
font-weight:10;
@media screen and (min-device-width:1200px){
td {
font-weight: 10;
@media screen and (min-device-width: 1200px) {
font-size: 16px;
}
@media screen and (max-device-width:1200px){
@media screen and (max-device-width: 1200px) {
font-size: 14px;
}
}
}
table{
margin-left:10px;
table {
margin-left: 10px;
margin-right: 10px;
width: 97.5%;
//margin-bottom: 10px;
thead{
height:48px;
color: #FFFFFF;
background-color: #2196F3;
thead {
height: 48px;
color: #ffffff;
background-color: #2196f3;
//font-size: 10px;
th{
font-weight:10;
@media screen and (min-device-width:1200px){
th {
font-weight: 10;
@media screen and (min-device-width: 1200px) {
font-size: 16px;
}
@media screen and (max-device-width:1200px){
@media screen and (max-device-width: 1200px) {
font-size: 14px;
}
}
}
tr:nth-child(odd){
background: #FAFAFA;
}
tr:nth-child(odd) {
background: #fafafa;
}
}
}
}
.boxright{
.boxright {
height: 100%;
@media screen and (max-device-width:1400px){
width: 53%;
@media screen and (max-device-width: 1400px) {
overflow-y: auto;
}
width: 53%;
flex: 1;
background-color: #FFFFFF;
background-color: #ffffff;
margin-left: 10px;
display: flex;
flex-direction: column;
.company{
.company {
//margin-left: 20px;
@media screen and (min-device-width:1400px){
@media screen and (min-device-width: 1400px) {
overflow-y: auto;
}
flex: 1;
//overflow-y: auto;
margin-top: 10px;
}
.righthead{
.righthead {
width: 100%;
display: flex;
height: 50px;
align-items: center;
flex-direction: row-reverse;
button{
button {
margin-left: 10px;
font-size: 16px;
}
.rightheadone{
.rightheadone {
width: 40%;
margin-right: 7%;
}
.rightheadtwo{
.rightheadtwo {
width: 60%;
margin-right: 2%;
}
}
.word{
.word {
width: 100%;
height: 100%;
iframe{
iframe {
height: 95%;
width: 97%;
margin: 10px 10px 10px 10px;
@ -219,82 +216,97 @@
border: medium none;
}
}
#viewer{
#viewer {
margin: 10px 10px 10px 10px;
width: 97%;
height: 93%;
}
.waterAudit,.fireForceAudit,.LinkageForcesAudit{
.waterAudit,
.fireForceAudit,
.LinkageForcesAudit {
flex: 1;
width: 100%;
height: 100%;
box-sizing: border-box;
}
.emptyContent{
.emptyContent {
width: 100%;
text-align: center;
}
}
}
th,td{
height:48px;
@media screen and (min-device-width:1400px){
th,
td {
height: 43px;
@media screen and (min-device-width: 1400px) {
font-size: 16px;
}
@media screen and (max-device-width:1400px){
@media screen and (max-device-width: 1400px) {
font-size: 14px;
}
text-align: center;
//white-space: nowrap;
}
.green{color: #00C756;}
.red{color: #FF4D4D;}
.blue{color: #2196F3;}
.accordingin{
.green {
color: #00c756;
}
.red {
color: #ff4d4d;
}
.blue {
color: #2196f3;
}
.accordingin {
margin: 5px;
.panelhead{
background-color:#E8F4FE;
color: #2196F3;
.panelhead {
background-color: #e8f4fe;
color: #2196f3;
font-size: 16px;
span{
span {
margin-left: 10px;
}
}
table{
table {
margin: 5px 0;
width: 100%;
th{
background-color: #FAFAFA;
th {
background-color: #fafafa;
width: 30%;
font-size: 16px;
text-align: right;
}
td{
td {
text-align: left;
font-size: 16px;
margin-left: 3px;
.spantext{
margin-left: 7px;
}
.buleColor{
color: #2196f3;
}
}
}
.onebuilding{
.onebuilding {
display: flex;
margin: 5px 0;
width: 100%;
.accordingleft{
background-color: #FAFAFA;
.accordingleft {
background-color: #fafafa;
width: 30%;
height: 120px;
font-size: 16px;
text-align: right;
}
.accordingright{
.accordingright {
margin: 7px;
height: 100px;
font-size: 16px;
img{
img {
margin-left: 10px;
//height: 80px;
}
span{
span {
margin-left: 10px;
position: relative;
bottom: 90px;
@ -302,7 +314,7 @@ th,td{
}
}
}
.echarts{
.echarts {
width: 480px;
height: 304px;
display: flex;
@ -312,13 +324,13 @@ th,td{
top: 13%;
left: 55%;
z-index: 100;
.bar{
.bar {
height: 100%;
width: 40%;
opacity: 1;
//margin: 40px 30px;
}
.zhu{
.zhu {
margin-bottom: 100px;
margin-right: 20px;
height: 95%;
@ -333,51 +345,53 @@ th,td{
flex-direction: column;
align-items: left;
.planBox {
margin: 30px 30px;
color: black;
:first-child {margin-right: 10px;}
margin: 30px 30px;
color: black;
:first-child {
margin-right: 10px;
}
}
}
}
//滚动条样式
::-webkit-scrollbar{
::-webkit-scrollbar {
width: 6px;
background-color: white;
}
::-webkit-scrollbar-thumb{
background-color: #2196F3;
}
}
::-webkit-scrollbar-thumb {
background-color: #2196f3;
}
.remarkbox{
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.remarkhead{
width: 100%;
span{
font-size: 20px;
text-align: center;
width: 80px;
margin-left: 40%;
}
}
.remarktext{
width: 100%;
margin-top: 20px;
textarea{
width: 420px;
height: 110px;
outline:none;
}
}
.remarkbottom{
width: 100%;
margin-top: 22px;
button{
width: 100px;
height: 36px;
font-size: 17px;
}
}
}
.remarkbox {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.remarkhead {
width: 100%;
span {
font-size: 20px;
text-align: center;
width: 80px;
margin-left: 40%;
}
}
.remarktext {
width: 100%;
margin-top: 20px;
textarea {
width: 420px;
height: 110px;
outline: none;
}
}
.remarkbottom {
width: 100%;
margin-top: 22px;
button {
width: 100px;
height: 36px;
font-size: 17px;
}
}
}

929
src/app/plan-audit/wait-examineer/wait-examineer.component.ts

File diff suppressed because it is too large Load Diff

36
src/app/plan-management/entry-plan/entry-plan.component.html

@ -160,9 +160,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.company.companyIntegrityScore.basicInfoScore * 5).toFixed(1),5)"></div>
</div>
<span>{{(element.company.companyIntegrityScore.basicInfoScore * 5).toFixed(1)}}</span>
<span>{{(element.company.companyIntegrityScore.basicInfoScore * 5).toFixed(1)}}%</span>
</div>
<div class="number">5</div>
<div class="number">5%</div>
</li>
<li>
<div class="name">建筑信息</div>
@ -170,9 +170,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.company.companyIntegrityScore.buildingInfoScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.company.companyIntegrityScore.buildingInfoScore * 10).toFixed(1)}}</span>
<span>{{(element.company.companyIntegrityScore.buildingInfoScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">平面图</div>
@ -180,9 +180,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.company.companyIntegrityScore.planImageScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.company.companyIntegrityScore.planImageScore * 10).toFixed(1)}}</span>
<span>{{(element.company.companyIntegrityScore.planImageScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">四周毗邻</div>
@ -190,9 +190,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.company.companyIntegrityScore.adjoinScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.company.companyIntegrityScore.adjoinScore * 10).toFixed(1)}}</span>
<span>{{(element.company.companyIntegrityScore.adjoinScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">消防设施</div>
@ -200,9 +200,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.company.companyIntegrityScore.facilityScore * 25).toFixed(1),25)"></div>
</div>
<span>{{(element.company.companyIntegrityScore.facilityScore * 25).toFixed(1)}}</span>
<span>{{(element.company.companyIntegrityScore.facilityScore * 25).toFixed(1)}}%</span>
</div>
<div class="number">25</div>
<div class="number">25%</div>
</li>
<li>
<div class="name">重点部位</div>
@ -210,9 +210,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.company.companyIntegrityScore.importantLocationScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.company.companyIntegrityScore.importantLocationScore * 10).toFixed(1)}}</span>
<span>{{(element.company.companyIntegrityScore.importantLocationScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">功能分区</div>
@ -220,9 +220,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.company.companyIntegrityScore.functionalDivisionScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.company.companyIntegrityScore.functionalDivisionScore * 10).toFixed(1)}}</span>
<span>{{(element.company.companyIntegrityScore.functionalDivisionScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">实景图</div>
@ -230,9 +230,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.company.companyIntegrityScore.realityImageScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.company.companyIntegrityScore.realityImageScore * 10).toFixed(1)}}</span>
<span>{{(element.company.companyIntegrityScore.realityImageScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">CAD上传</div>
@ -240,9 +240,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.company.companyIntegrityScore.cadScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.company.companyIntegrityScore.cadScore * 10).toFixed(1)}}</span>
<span>{{(element.company.companyIntegrityScore.cadScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
</ul>
</div>

36
src/app/plan-management/maintain-up/maintain-up.component.html

@ -156,9 +156,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.basicInfoScore * 5).toFixed(1),5)"></div>
</div>
<span>{{(element.companyIntegrityScore.basicInfoScore * 5).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.basicInfoScore * 5).toFixed(1)}}%</span>
</div>
<div class="number">5</div>
<div class="number">5%</div>
</li>
<li>
<div class="name">建筑信息</div>
@ -166,9 +166,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.buildingInfoScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.buildingInfoScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.buildingInfoScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">平面图</div>
@ -176,9 +176,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.planImageScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.planImageScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.planImageScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">四周毗邻</div>
@ -186,9 +186,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.adjoinScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.adjoinScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.adjoinScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">消防设施</div>
@ -196,9 +196,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.facilityScore * 25).toFixed(1),25)"></div>
</div>
<span>{{(element.companyIntegrityScore.facilityScore * 25).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.facilityScore * 25).toFixed(1)}}%</span>
</div>
<div class="number">25</div>
<div class="number">25%</div>
</li>
<li>
<div class="name">重点部位</div>
@ -206,9 +206,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.importantLocationScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.importantLocationScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.importantLocationScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">功能分区</div>
@ -216,9 +216,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.functionalDivisionScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.functionalDivisionScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.functionalDivisionScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">实景图</div>
@ -226,9 +226,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.realityImageScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.realityImageScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.realityImageScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">CAD上传</div>
@ -236,9 +236,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((element.companyIntegrityScore.cadScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(element.companyIntegrityScore.cadScore * 10).toFixed(1)}}</span>
<span>{{(element.companyIntegrityScore.cadScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
</ul>
</div>

60
src/app/tabbar/tabbar.component.html

@ -20,9 +20,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((companyIntegrityScore.basicInfoScore * 5).toFixed(1),5)"></div>
</div>
<span>{{(companyIntegrityScore.basicInfoScore * 5).toFixed(1)}}</span>
<span>{{(companyIntegrityScore.basicInfoScore * 5).toFixed(1)}}%</span>
</div>
<div class="number">5</div>
<div class="number">5%</div>
</li>
<li>
<div class="name">建筑信息</div>
@ -30,9 +30,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((companyIntegrityScore.buildingInfoScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(companyIntegrityScore.buildingInfoScore * 10).toFixed(1)}}</span>
<span>{{(companyIntegrityScore.buildingInfoScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">平面图</div>
@ -40,9 +40,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((companyIntegrityScore.planImageScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(companyIntegrityScore.planImageScore * 10).toFixed(1)}}</span>
<span>{{(companyIntegrityScore.planImageScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">四周毗邻</div>
@ -50,9 +50,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((companyIntegrityScore.adjoinScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(companyIntegrityScore.adjoinScore * 10).toFixed(1)}}</span>
<span>{{(companyIntegrityScore.adjoinScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">消防设施</div>
@ -60,9 +60,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((companyIntegrityScore.facilityScore * 25).toFixed(1),25)"></div>
</div>
<span>{{(companyIntegrityScore.facilityScore * 25).toFixed(1)}}</span>
<span>{{(companyIntegrityScore.facilityScore * 25).toFixed(1)}}%</span>
</div>
<div class="number">25</div>
<div class="number">25%</div>
</li>
<li>
<div class="name">重点部位</div>
@ -70,9 +70,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((companyIntegrityScore.importantLocationScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(companyIntegrityScore.importantLocationScore * 10).toFixed(1)}}</span>
<span>{{(companyIntegrityScore.importantLocationScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">功能分区</div>
@ -80,9 +80,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((companyIntegrityScore.functionalDivisionScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(companyIntegrityScore.functionalDivisionScore * 10).toFixed(1)}}</span>
<span>{{(companyIntegrityScore.functionalDivisionScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">实景图</div>
@ -90,9 +90,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((companyIntegrityScore.realityImageScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(companyIntegrityScore.realityImageScore * 10).toFixed(1)}}</span>
<span>{{(companyIntegrityScore.realityImageScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
<li>
<div class="name">CAD上传</div>
@ -100,9 +100,9 @@
<div class="colorDivBac">
<div class="colorDivCon" [style]="integrityDetails((companyIntegrityScore.cadScore * 10).toFixed(1),10)"></div>
</div>
<span>{{(companyIntegrityScore.cadScore * 10).toFixed(1)}}</span>
<span>{{(companyIntegrityScore.cadScore * 10).toFixed(1)}}%</span>
</div>
<div class="number">10</div>
<div class="number">10%</div>
</li>
</ul>
</div>
@ -117,12 +117,12 @@
<div class="scoringRule" *ngIf="companyIntegrityScore">
<span class="name" (click)="scoringRule()">
计分规则
信息完整度规则
</span>
<div class="scoringRuleImg" *ngIf="scoringRuleImg">
<div class="topbox">
<span style="font-size: 18px;margin-left: 20px;font-weight: 600;">计分规则 &nbsp;</span>
<span style="font-size: 12px;">单位基本信息部分共计100分</span>
<span style="font-size: 18px;margin-left: 20px;font-weight: 600;">信息完整度规则 &nbsp;</span>
<!-- <span style="font-size: 12px;">单位基本信息部分共计100分</span> -->
<span class="imgbox">
<img src="../../assets/images/ruletopimg.png" alt="">
</span>
@ -139,47 +139,47 @@
</tr>
<tr>
<td>单位名称</td>
<td class="bulecolor">5</td>
<td class="bulecolor">5%</td>
<td>按填录入内容评判</td>
</tr>
<tr>
<td>建筑信息</td>
<td class="bulecolor">10</td>
<td class="bulecolor">10%</td>
<td>根据创建的建筑个数平分该分值,每个建筑根据实际填写的完整度再进行评判</td>
</tr>
<tr>
<td>四周毗邻</td>
<td class="bulecolor">10</td>
<td class="bulecolor">10%</td>
<td><span class="bulecolor">4</span>个方向均分,每个方向的属性信息要填写完整才能得分</td>
</tr>
<tr>
<td>消防设施</td>
<td class="bulecolor">25</td>
<td class="bulecolor">25%</td>
<td>消防水源占<span class="bulecolor">30%</span> &nbsp;&nbsp;&nbsp; 安全疏散占<span class="bulecolor">30%</span> <br> 消防水系统占<span class="bulecolor">30%</span> &nbsp;&nbsp;&nbsp; 内部消防力量占<span class="bulecolor">10%</span></td>
</tr>
<tr>
<td>重点部位</td>
<td class="bulecolor">10</td>
<td class="bulecolor">10%</td>
<td><span>根据耐火等级做区分</span>:一级:添加<span class="bulecolor">3</span>个重点部位(1个50%,2个80%,3个满分)<span class="bulecolor">二级</span>:添加<span class="bulecolor">2</span>个重点部位(一个占50%)<span class="bulecolor">三级</span> 添加<span class="bulecolor">1</span>个重点部位 其它:填写重点提示自动满分</td>
</tr>
<tr>
<td>功能分区</td>
<td class="bulecolor">10</td>
<td class="bulecolor">10%</td>
<td>创建<span class="bulecolor">2</span>条并填写完整得满分</td>
</tr>
<tr>
<td>实景图</td>
<td class="bulecolor">10</td>
<td class="bulecolor">10%</td>
<td>外观,保证有<span class="bulecolor">2</span>张照片(占<span class="bulecolor">30%</span>); 室内,保证有<span class="bulecolor">2</span>张照片(占<span class="bulecolor">30%</span>);安全出口,保证有<span class="bulecolor">2</span>张照片(占<span class="bulecolor">40%</span></td>
</tr>
<tr>
<td>CAD上传</td>
<td class="bulecolor">10</td>
<td class="bulecolor">10%</td>
<td>上传<span class="bulecolor">2</span>个cad文件</td>
</tr>
<tr>
<td>平面图</td>
<td class="bulecolor">10</td>
<td class="bulecolor">10%</td>
<td>总平面图<span class="bulecolor">1</span>张,建筑平面图<span class="bulecolor">1</span></td>
</tr>
</table>

2
src/app/tabbar/tabbar.component.scss

@ -196,7 +196,7 @@ mat-icon{
border-radius: 6px;
color: #2196F3;
display: inline-block;
width: 100px;
width: 128px;
height:36px;
text-align: center;
line-height: 36px;

10
src/app/ui/collection-tools-plan/addPlaneFigure.html

@ -12,13 +12,13 @@
</mat-form-field>
</div>
<div class="keyMargin">
<a href="javascript:;" class="uploadBackGround" (click)='toGIS()'>导入GIS地图</a>
</div>
<!-- <div class="keyMargin">
<a href="javascript:;" class="uploadBackGround" (click)='toGIS()' [ngClass]="{'uploadBackGroundSelected': selectedType == 'gis'}">导入GIS地图</a>
</div> -->
<div class="keyMargin">
<a href="javascript:;" class="uploadBackGround">
<input type="file" (change)='selectFile($event)' accept="image/*">上传本地图片
<a href="javascript:;" class="uploadBackGround" [ngClass]="{'uploadBackGroundSelected': selectedType == 'image'}">
<input id="uploadFile" type="file" (change)='selectFile($event)' accept="image/*">上传本地图片
</a>
<p *ngIf="file" style="font-size: 14px; text-align: left;">选择文件: {{file.name}}</p>
</div>

282
src/app/ui/collection-tools-plan/collection-tools.component.html

@ -12,10 +12,12 @@
<mat-checkbox color="primary" [(ngModel)]="isMultiSelect" (change)='changeMultiSelect($event)'></mat-checkbox> 多选
</span>
<span class="marginLeftRight">
<mat-checkbox color="primary" [(ngModel)]="isShowLegend" (change)='changeLegend($event)' [disabled]='this.canvasData.selectPanelPoint.BackgroundImageUrl'></mat-checkbox> 显示图例
<mat-checkbox color="primary" [(ngModel)]="isShowLegend" (change)='changeLegend($event)'
[disabled]='this.canvasData.selectPanelPoint.BackgroundImageUrl'></mat-checkbox> 显示图例
</span>
<button (click)="copyAsset()" class="copytobutn marginLeftRight" mat-button title="复制" style="margin:0 5px;" *ngIf="isEditPattern">
<button (click)="copyAsset()" class="copytobutn marginLeftRight" mat-button title="复制" style="margin:0 5px;"
*ngIf="isEditPattern">
复制<mat-icon>library_books</mat-icon>
</button>
<button (click)="pasteAsset()" class="copytobutn marginLeftRight" mat-button title="粘贴" *ngIf="isEditPattern">
@ -37,7 +39,9 @@
<span class="rightSave">
<!-- <mat-icon title="查看/编辑模式" (click)="lookpat()" *ngIf="isEditPattern">tv</mat-icon>
<mat-icon title="查看/编辑模式" (click)="editpat()" *ngIf="!isEditPattern && isediticon">create</mat-icon> -->
<label title="保存" (click)="saveSite()" *ngIf="isEditPattern"><mat-icon>description</mat-icon>保存</label>
<label title="保存" (click)="saveSite()" *ngIf="isEditPattern">
<mat-icon>description</mat-icon>保存
</label>
</span>
</div>
@ -46,10 +50,14 @@
<div class='functionalDomainContent' id="functionalDomainContent">
<!-- H5Canvas -->
<app-working-area #canvas [init]='this'></app-working-area>
<app-working-area *ngIf="!isGis" #canvas [init]='this'></app-working-area>
<!-- gis -->
<div *ngIf="isGis" id="container" style="width: 100%;height: 100%;"></div>
<!-- H5Canvas -->
<div id="leftDiv" (mousewheel)="$event.stopPropagation()" class='functionalDomainLeft publicCss' [ngClass]="{'togglePanel': toggleExpandPanel==true,'scenarioAssignment': !pattern}" style="user-select: none;">
<div class="leftDragDiv" (mousedown)="leftDivMouseDown($event)"></div>
<div id="leftDiv" (mousewheel)="$event.stopPropagation()" class='functionalDomainLeft publicCss'
[ngClass]="{'togglePanel': toggleExpandPanel==true,'scenarioAssignment': !pattern}" style="user-select: none;">
<div class="leftDragDiv" (mousedown)="leftDivMouseDown($event)"></div>
<!-- 平面图 -->
<div class="planarGraph" style="display: flex;flex-direction: column;">
<div class="planarGraphHeader" (click)='togglePlanarGraph()'>
@ -57,30 +65,38 @@
<mat-icon *ngIf="!togglePlane">keyboard_arrow_down</mat-icon>
<label class="overflowText" style="font-weight: 550;">平面图</label>
<label class="hover" *ngIf="isEditPattern && pattern" (click)='foundPanel($event)'>
<mat-icon >add</mat-icon>
<mat-icon>add</mat-icon>
</label>
</div>
<div [hidden]="!togglePlane" style="flex: 1;">
<div class="sitePlanContent" *ngFor="let item of sitePlanData;let key = index" [ngClass]="{'isRefugeStorey':item.isRefugeStorey==true,'selectSitePlan': selectSitePlanIndex==key}" (click)='selectSitePlan(item,key)'>
<label class="overflowText" style="display:inline-block; max-width: 160px;"><mat-icon *ngIf="!item.imageUrl" class="matIcons">broken_image</mat-icon>{{item.name}}</label>
<div class="sitePlanContent" *ngFor="let item of sitePlanData;let key = index"
[ngClass]="{'isRefugeStorey':item.isRefugeStorey==true,'selectSitePlan': selectSitePlanIndex==key}"
(click)='selectSitePlan(item,key)'>
<label class="overflowText" style="display:inline-block; max-width: 160px;">
<mat-icon *ngIf="!item.imageUrl" class="matIcons">broken_image</mat-icon>{{item.name}}
</label>
<a href="javascript:;" class="fireForce" *ngIf="isEditPattern && !pattern">
<img src="../../../assets/images/fire.png" *ngIf="item.fire && item.fire==2">
<img src="../../../assets/images/noFire.png" *ngIf="item.fire && item.fire==1">
<img src="../../../assets/images/force.png" *ngIf="item.force && item.force==2">
<img src="../../../assets/images/noForce.png" *ngIf="item.force && item.force==1">
</a>
<a href="javascript:;" class="a-upload" *ngIf="selectSitePlanIndex==key && isEditPattern && pattern" title="替换底图" >
<a href="javascript:;" class="a-upload" *ngIf="selectSitePlanIndex==key && isEditPattern && pattern && !item.isGis"
title="替换底图">
<input type="file" (change)='replaceBaseMap($event,item)' accept="image/*">
<mat-icon class="matIcons">photo_size_select_actual</mat-icon>
</a>
<a href="javascript:;" id="a-uploadImg" *ngIf="selectSitePlanIndex==key && !item.imageUrl && isEditPattern" title="上传底图" >
<a href="javascript:;" id="a-uploadImg"
*ngIf="selectSitePlanIndex==key && !item.imageUrl && isEditPattern" title="上传底图">
<input type="file" (change)='replaceBaseMap($event,item)' accept="image/*">
<img src="../../../assets/images/upload.jpg">
</a>
<!-- 右边定位操作栏 -->
<div id="rightOperate" *ngIf="selectSitePlanIndex==key && item.imageUrl && isEditPattern" (click)="$event.stopPropagation();">
<div id="rightOperate" *ngIf="selectSitePlanIndex==key && item.imageUrl && isEditPattern"
(click)="$event.stopPropagation();">
<p class="functionButton">
<mat-icon class="functionIcon bigFunctionIcon" title="上移" (click)='moveUp(item,key)'>keyboard_arrow_up</mat-icon>
<mat-icon class="functionIcon bigFunctionIcon" title="上移" (click)='moveUp(item,key)'>keyboard_arrow_up
</mat-icon>
</p>
<p class="functionButton">
<mat-icon class="functionIcon" title="编辑属性" (click)='editPlaneData(item)'>edit</mat-icon>
@ -91,7 +107,8 @@
<mat-icon class="functionIcon" title="复制" (click)="duplicateLayer(item)">library_books</mat-icon>
</p>
<p class="functionButton">
<mat-icon class="functionIcon bigFunctionIcon" title="下移" (click)='moveDown(item,key)'>keyboard_arrow_down</mat-icon>
<mat-icon class="functionIcon bigFunctionIcon" title="下移" (click)='moveDown(item,key)'>
keyboard_arrow_down</mat-icon>
</p>
</div>
<!-- 右边定位操作栏 -->
@ -111,7 +128,8 @@
<input type="text" class="searchLibrary" [(ngModel)]="searchInput" (ngModelChange)="libraryChange()">
<div class="panelLibraryFlex" *ngIf="searchLibrary.length">
<div class="imgBox" *ngFor="let items of searchLibrary;let key = index" [title]="items.name"
[ngClass]="{'selectImg': selectLibrary=='搜索' && selectImageIndex==key}" (click)='selectImg({name:"搜索"},items,key)'>
[ngClass]="{'selectImg': selectLibrary=='搜索' && selectImageIndex==key}"
(click)='selectImg({name:"搜索"},items,key)'>
<img [src]="items.imageUrl" onerror="javascript:this.src='../../../assets/images/noImg.png'">
<p class="overflowText">{{items.name}}</p>
</div>
@ -126,7 +144,8 @@
<div class="panelLibraryFlex">
<div class="imgBox" *ngFor="let items of item.images;let key = index" [title]="items.name"
[ngClass]="{'selectImg': selectLibrary==item.name && selectImageIndex==key}" (click)='selectImg(item,items,key)'>
[ngClass]="{'selectImg': selectLibrary==item.name && selectImageIndex==key}"
(click)='selectImg(item,items,key)'>
<img [src]="items.imageUrl" onerror="javascript:this.src='../../../assets/images/noImg.png'">
<p class="overflowText">{{items.name}}</p>
</div>
@ -141,14 +160,18 @@
</div>
<div id="rightDiv" (mousewheel)="$event.stopPropagation()" class="functionalDomainRight publicCss " [ngClass]="{'togglePanel2': toggleExpandPanelRight==true}" style="user-select: none;">
<div id="rightDiv" (mousewheel)="$event.stopPropagation()" class="functionalDomainRight publicCss "
[ngClass]="{'togglePanel2': toggleExpandPanelRight==true}" style="user-select: none;">
<!-- 右侧div鼠标拖动div -->
<div style="width: 3px;height: 100%;position: absolute;left: 0;cursor: e-resize;z-index: 1000;" (mousedown)="rightDivMouseDown($event)"></div>
<div style="width: 3px;height: 100%;position: absolute;left: 0;cursor: e-resize;z-index: 1000;"
(mousedown)="rightDivMouseDown($event)"></div>
<!-- 属性 -->
<div [ngClass]="{'forbidden': !isEditPattern}" id="property" class="property" style="height: 100%;background-color: white;">
<div [ngClass]="{'forbidden': !isEditPattern}" id="property" class="property"
style="height: 100%;background-color: white;">
<div class="rightTitle">属性</div>
<!-- 平面图属性 -->
<div class="siteproperty" style="user-select: none" *ngIf="isShowProperty && isShowAttribute && !isMultipleAsset">
<div class="siteproperty" style="user-select: none"
*ngIf="isShowProperty && isShowAttribute && !isMultipleAsset">
<p>面积(平方米)</p>
<div class="siteproperty_size">{{canvasData.selectStorey.area}}</div>
<p>详情</p>
@ -157,20 +180,25 @@
</div>
</div>
<!-- 素材属性 -->
<div class="assetsproperty" style="user-select: none" *ngIf="isShowProperty && !isShowAttribute && !isMultipleAsset">
<div class="assetsproperty" style="user-select: none"
*ngIf="isShowProperty && !isShowAttribute && !isMultipleAsset">
<h3 style="text-align: center;font-weight: 900;">{{assetName}}</h3>
<div *ngIf="canvasAssetObj.InteractiveMode == 0">
<p>宽度(像素)</p>
<input type="number" class="biginput" [(ngModel)]="assetWidth" (input)="assetWidthIunput()" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<input type="number" class="biginput" [(ngModel)]="assetWidth" (input)="assetWidthIunput()"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<p>高度(像素)</p>
<input type="number" class="biginput" [(ngModel)]="assetHeight" (input)="assetHeightIunput()" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<input type="number" class="biginput" [(ngModel)]="assetHeight" (input)="assetHeightIunput()"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<p>角度</p>
<div style="width: 100%;display: flex;vertical-align: top;height: 22px;">
<input type="number" class="smallinput" [(ngModel)]="sliderValue"
oninput="if(value>360)value=360;if(value<0)value=0;" (input)="assetAngleIunput()" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
oninput="if(value>360)value=360;if(value<0)value=0;" (input)="assetAngleIunput()"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<mat-slider color="primary" min="0" max="360" step="1" style="bottom: 12px;left: 2px;width: 70%;"
[(ngModel)]="sliderValue" (change)="assetAngleIunput()" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)"></mat-slider>
[(ngModel)]="sliderValue" (change)="assetAngleIunput()"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)"></mat-slider>
</div>
</div>
<!-- 如果是多点连线 -->
@ -178,15 +206,18 @@
<p>厚度</p>
<div style="width: 100%;display: flex;vertical-align: top;height: 22px;">
<input type="number" class="smallinput" [(ngModel)]="sliderValueThickness"
oninput="if(value>999)value=999;if(value<0)value=0;" (input)="assetThicknessIunput()" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
oninput="if(value>999)value=999;if(value<0)value=0;" (input)="assetThicknessIunput()"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<mat-slider color="primary" min="0" max="999" step="1" style="bottom: 12px;left: 2px;width: 70%;"
[(ngModel)]="sliderValueThickness" (change)="assetThicknessIunput()" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)"></mat-slider>
[(ngModel)]="sliderValueThickness" (change)="assetThicknessIunput()"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)"></mat-slider>
</div>
</div>
<p style="margin-top: 4px;margin-bottom: 0px;">是否高亮</p>
<div>
<input (change)="assetHighLightIunput()" class="input" [(ngModel)]="isHighLight" type="checkbox" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<input (change)="assetHighLightIunput()" class="input" [(ngModel)]="isHighLight" type="checkbox"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<span style="font-size: 14px;">选中高亮</span>
</div>
<div class="colorBigDiv" *ngIf="canvasAssetObj.FillMode == 0">
@ -198,47 +229,67 @@
</div>
<div class="colorDiv" *ngIf="isEditPattern && pattern && canvasAssetObj.GameMode == 0">
<ul>
<li (click)="selectcolor(item,key)" class="colorLi" *ngFor="let item of colors,let key=index" [style]="{'background-color':item}"></li>
<li (click)="selectcolor(item,key)" class="colorLi" *ngFor="let item of colors,let key=index"
[style]="{'background-color':item}"></li>
</ul>
</div>
<span style="color: #9c9fa5;font-size: 14px;">透明度</span>
<mat-slider color="primary" min="0" max="100%" step="1" style="left: 1px; width: 55%;min-width: 90px;"
[(ngModel)]="colorDivSliderValue" (change)="colorDivSliderChange()" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)"></mat-slider>
[(ngModel)]="colorDivSliderValue" (change)="colorDivSliderChange()"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)"></mat-slider>
<span style="color: #9c9fa5;font-size: 12px;">{{colorDivSliderValue}}%</span>
</div>
<div *ngFor="let item of PropertyInfos;index as key ">
<!-- 单行文本 -->
<div *ngIf="item.PropertyType == 0">
<p>{{item.PropertyName}}<span style="font-size: 14px;" *ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<input type="text" class="biginput" [value]="item.PropertyValue" (input)="assetInputChange(item,$event)" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<p>{{item.PropertyName}}<span style="font-size: 14px;"
*ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<input type="text" class="biginput" [value]="item.PropertyValue" (input)="assetInputChange(item,$event)"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
</div>
<!-- 多行文本 -->
<div *ngIf="item.PropertyType == 1">
<p>{{item.PropertyName}}<span style="font-size: 14px;" *ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<textarea class="textarea" name="" id="" [value]="item.PropertyValue" (input)="assetInputChange(item,$event)" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)"></textarea>
<p>{{item.PropertyName}}<span style="font-size: 14px;"
*ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<textarea class="textarea" name="" id="" [value]="item.PropertyValue"
(input)="assetInputChange(item,$event)"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)"></textarea>
</div>
<!-- 数值 -->
<div *ngIf="item.PropertyType == 2">
<p>{{item.PropertyName}}<span style="font-size: 14px;" *ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<input type="number" class="biginput" [value]="item.PropertyValue" (input)="assetInputChange(item,$event)" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<p>{{item.PropertyName}}<span style="font-size: 14px;"
*ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<input type="number" class="biginput" [value]="item.PropertyValue"
(input)="assetInputChange(item,$event)"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
</div>
<!-- 图片数量 -->
<div *ngIf="item.PropertyType == 4" style="height: 140px;">
<div style="position: relative;width: 100%;height: 21px;margin: 1px 0;">
<p style="width: 40%;display: inline-block;">{{item.PropertyName}}</p>
<span style="width: 26%;text-align:right;font-size: 13px;">{{imagesArr.length ? imagesArr.length : 0}} / {{item.PropertyValue}}</span>
<input [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)" *ngIf="isImgNumCss" accept="image/*" (change)="selectFile($event)" type="file" style="width: 33%;position: absolute;right: 10px;top: 1px;opacity: 0;z-index: 100;cursor: pointer;height: 21px;">
<div style="width: 33%;height: 21px;line-height: 21px;text-align: center;position: absolute;right: 10px;top: 1px;z-index: 99;border: 1px solid rgb(208, 211, 214);border-radius: 2px;font-size: 13px;cursor: pointer;" (click)="imgNumBeyond()">添加</div>
<span style="width: 26%;text-align:right;font-size: 13px;">{{imagesArr.length ? imagesArr.length : 0}}
/ {{item.PropertyValue}}</span>
<input [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)" *ngIf="isImgNumCss"
accept="image/*" (change)="selectFile($event)" type="file"
style="width: 33%;position: absolute;right: 10px;top: 1px;opacity: 0;z-index: 100;cursor: pointer;height: 21px;">
<div
style="width: 33%;height: 21px;line-height: 21px;text-align: center;position: absolute;right: 10px;top: 1px;z-index: 99;border: 1px solid rgb(208, 211, 214);border-radius: 2px;font-size: 13px;cursor: pointer;"
(click)="imgNumBeyond()">添加</div>
<div style="position: relative;;width: 89%;border:1px solid rgb(208, 211, 214);height: 100px;margin: 6px auto;" class="swiper-container">
<div
style="position: relative;;width: 89%;border:1px solid rgb(208, 211, 214);height: 100px;margin: 6px auto;"
class="swiper-container">
<div id="viewerjs" class="swiper-wrapper" [ngClass]="{'noImgCss': imagesArr.length == 0}">
<div class="swiper-slide" style="text-align: center;" *ngFor="let img of imagesArr"><img [src]="img.PropertyValue + '?x-oss-process=image/resize,m_fixed,h_100,w_100'" alt="" [attr.data-original]="img.PropertyValue"></div>
<div class="swiper-slide" style="text-align: center;" *ngFor="let img of imagesArr"><img
[src]="img.PropertyValue + '?x-oss-process=image/resize,m_fixed,h_100,w_100'" alt=""
[attr.data-original]="img.PropertyValue"></div>
</div>
<!-- 如果需要导航按钮 -->
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
<span style="position: absolute;right: 2px;top: 2px;cursor: pointer;z-index: 200;" *ngIf="isEditPattern">
<span style="position: absolute;right: 2px;top: 2px;cursor: pointer;z-index: 200;"
*ngIf="isEditPattern">
<mat-icon class="hoverred" (click)="deleteImg()">delete</mat-icon>
</span>
</div>
@ -247,62 +298,76 @@
<!-- 方向 -->
<div *ngIf="item.PropertyType == 5" class="selectDiv">
<p style="display: inline-block;">{{item.PropertyName}}</p>
<select (change)="direction(item,$event)" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<option value ="0" [selected]="item.PropertyValue =='0'"></option>
<option value ="1" [selected]="item.PropertyValue =='1'">西</option>
<option value ="2" [selected]="item.PropertyValue =='2'"></option>
<option value ="3" [selected]="item.PropertyValue =='3'"></option>
<option value ="4" [selected]="item.PropertyValue =='4'">东南</option>
<option value ="5" [selected]="item.PropertyValue =='5'">西南</option>
<option value ="6" [selected]="item.PropertyValue =='6'">东北</option>
<option value ="7" [selected]="item.PropertyValue =='7'">西北</option>
<select (change)="direction(item,$event)"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<option value="0" [selected]="item.PropertyValue =='0'"></option>
<option value="1" [selected]="item.PropertyValue =='1'">西</option>
<option value="2" [selected]="item.PropertyValue =='2'"></option>
<option value="3" [selected]="item.PropertyValue =='3'"></option>
<option value="4" [selected]="item.PropertyValue =='4'">东南</option>
<option value="5" [selected]="item.PropertyValue =='5'">西南</option>
<option value="6" [selected]="item.PropertyValue =='6'">东北</option>
<option value="7" [selected]="item.PropertyValue =='7'">西北</option>
</select>
</div>
<!-- 布尔值 是1或否0 -->
<div *ngIf="item.PropertyType == 6">
<p>{{item.PropertyName}}</p>
<input [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)" [checked]="item.PropertyValue == '1'" class="input" type="radio" name="radio" (click)="assetRadioChange(item,'1')"><span></span>
<input [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)" [checked]="item.PropertyValue == '0'" class="input" type="radio" name="radio" (click)="assetRadioChange(item,'0')"><span></span>
<input [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)"
[checked]="item.PropertyValue == '1'" class="input" type="radio" name="radio"
(click)="assetRadioChange(item,'1')"><span></span>
<input [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)"
[checked]="item.PropertyValue == '0'" class="input" type="radio" name="radio"
(click)="assetRadioChange(item,'0')"><span></span>
</div>
<!-- 供给区域 -->
<div *ngIf="item.PropertyType == 7" class="selectDiv">
<p style="display: inline-block;">{{item.PropertyName}}</p>
<select (change)="supplyArea(item,$event)" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<option value ="0" [selected]="item.PropertyValue =='0'">全部</option>
<option value ="1" [selected]="item.PropertyValue =='1'">高区</option>
<option value ="2" [selected]="item.PropertyValue =='2'">中区</option>
<option value ="3" [selected]="item.PropertyValue =='3'">低区</option>
<option value ="4" [selected]="item.PropertyValue =='4'">高中区</option>
<option value ="5" [selected]="item.PropertyValue =='5'">高低区</option>
<option value ="6" [selected]="item.PropertyValue =='6'">中低区</option>
<select (change)="supplyArea(item,$event)"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<option value="0" [selected]="item.PropertyValue =='0'">全部</option>
<option value="1" [selected]="item.PropertyValue =='1'">高区</option>
<option value="2" [selected]="item.PropertyValue =='2'">中区</option>
<option value="3" [selected]="item.PropertyValue =='3'">低区</option>
<option value="4" [selected]="item.PropertyValue =='4'">高中区</option>
<option value="5" [selected]="item.PropertyValue =='5'">高低区</option>
<option value="6" [selected]="item.PropertyValue =='6'">中低区</option>
</select>
</div>
<!-- 供给类型 -->
<div *ngIf="item.PropertyType == 8" class="selectDiv">
<p style="display: inline-block;">{{item.PropertyName}}</p>
<select (change)="supplyType(item,$event)" value="4" [disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<option value ="0" [selected]="item.PropertyValue =='0'">消火栓</option>
<option value ="1" [selected]="item.PropertyValue =='1'">喷淋</option>
<option value ="2" [selected]="item.PropertyValue =='2'">水幕</option>
<option value ="3" [selected]="item.PropertyValue =='3'">泡沫</option>
<option value ="4" [selected]="item.PropertyValue =='4'">消防</option>
<select (change)="supplyType(item,$event)" value="4"
[disabled]="!isEditPattern || (canvasAssetObj.GameMode == 0 && !pattern)">
<option value="0" [selected]="item.PropertyValue =='0'">消火栓</option>
<option value="1" [selected]="item.PropertyValue =='1'">喷淋</option>
<option value="2" [selected]="item.PropertyValue =='2'">水幕</option>
<option value="3" [selected]="item.PropertyValue =='3'">泡沫</option>
<option value="4" [selected]="item.PropertyValue =='4'">消防</option>
</select>
</div>
</div>
</div>
</div>
<!-- 框选多个素材属性 -->
<div class="assetsproperty" style="user-select: none" *ngIf="isShowProperty && isMultipleAsset">
<div *ngIf="multipleAsset.InteractiveMode == 0">
<p>宽度(像素)</p>
<input type="number" class="biginput" [(ngModel)]="multipleAsset.Width" (input)="multipleAssetWidthInput()" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<input type="number" class="biginput" [(ngModel)]="multipleAsset.Width"
(input)="multipleAssetWidthInput()"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<p>高度(像素)</p>
<input type="number" class="biginput" [(ngModel)]="multipleAsset.Height" (input)="multipleAssetHeightInput()" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<input type="number" class="biginput" [(ngModel)]="multipleAsset.Height"
(input)="multipleAssetHeightInput()"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<p>角度</p>
<div style="width: 100%;display: flex;vertical-align: top;height: 22px;">
<input type="number" class="smallinput" [(ngModel)]="multipleAsset.Angle"
oninput="if(value>360)value=360;if(value<0)value=0;" (input)="multipleAssetAngleInput()" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
oninput="if(value>360)value=360;if(value<0)value=0;" (input)="multipleAssetAngleInput()"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<mat-slider color="primary" min="0" max="360" step="1" style="bottom: 12px;left: 2px;width: 70%;"
[(ngModel)]="multipleAsset.Angle" (change)="multipleAssetAngleInput()" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)"></mat-slider>
[(ngModel)]="multipleAsset.Angle" (change)="multipleAssetAngleInput()"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
</mat-slider>
</div>
</div>
<!-- 如果是多点连线 -->
@ -310,9 +375,12 @@
<p>厚度</p>
<div style="width: 100%;display: flex;vertical-align: top;height: 22px;">
<input type="number" class="smallinput" [(ngModel)]="multipleAsset.Thickness"
oninput="if(value>999)value=999;if(value<0)value=0;" (input)="multipleAssetThicknessInput()" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
oninput="if(value>999)value=999;if(value<0)value=0;" (input)="multipleAssetThicknessInput()"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<mat-slider color="primary" min="0" max="999" step="1" style="bottom: 12px;left: 2px;width: 70%;"
[(ngModel)]="multipleAsset.Thickness" (change)="multipleAssetThicknessInput()" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)"></mat-slider>
[(ngModel)]="multipleAsset.Thickness" (change)="multipleAssetThicknessInput()"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
</mat-slider>
</div>
</div>
<div class="colorBigDiv" *ngIf="multipleAsset.FillMode == 0">
@ -324,29 +392,41 @@
</div>
<div class="colorDiv" *ngIf="isEditPattern && pattern && firstMultipleAssetData.assetData.GameMode == 0">
<ul>
<li (click)="multipleAssetSelectcolor(item,key)" class="colorLi" *ngFor="let item of colors,let key=index" [style]="{'background-color':item}"></li>
<li (click)="multipleAssetSelectcolor(item,key)" class="colorLi"
*ngFor="let item of colors,let key=index" [style]="{'background-color':item}"></li>
</ul>
</div>
<span style="color: #9c9fa5;font-size: 14px;">透明度</span>
<mat-slider color="primary" min="0" max="100%" step="1" style="left: 1px; width: 55%;min-width: 90px;"
[(ngModel)]="colorDivSliderValue" (change)="multipleColorDivSliderChange()" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)"></mat-slider>
[(ngModel)]="colorDivSliderValue" (change)="multipleColorDivSliderChange()"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
</mat-slider>
<span style="color: #9c9fa5;font-size: 12px;">{{colorDivSliderValue}}%</span>
</div>
<div *ngFor="let item of multipleAsset.PropertyInfos;index as key ">
<!-- 单行文本 -->
<div *ngIf="item.PropertyType == 0">
<p>{{item.PropertyName}}<span style="font-size: 14px;" *ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<input type="text" class="biginput" [name]="item.PropertyName" [(ngModel)]="item.PropertyValue" (input)="multipleAssetInputChange(item,$event)" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<p>{{item.PropertyName}}<span style="font-size: 14px;"
*ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<input type="text" class="biginput" [name]="item.PropertyName" [(ngModel)]="item.PropertyValue"
(input)="multipleAssetInputChange(item,$event)"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
</div>
<!-- 多行文本 -->
<div *ngIf="item.PropertyType == 1">
<p>{{item.PropertyName}}<span style="font-size: 14px;" *ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<textarea class="textarea" name="" id="" [(ngModel)]="item.PropertyValue" (input)="multipleAssetInputChange(item,$event)" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)"></textarea>
<p>{{item.PropertyName}}<span style="font-size: 14px;"
*ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<textarea class="textarea" name="" id="" [(ngModel)]="item.PropertyValue"
(input)="multipleAssetInputChange(item,$event)"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)"></textarea>
</div>
<!-- 数值 -->
<div *ngIf="item.PropertyType == 2">
<p>{{item.PropertyName}}<span style="font-size: 14px;" *ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<input type="number" class="biginput" [(ngModel)]="item.PropertyValue" (input)="multipleAssetInputChange(item,$event)" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<p>{{item.PropertyName}}<span style="font-size: 14px;"
*ngIf="item.PhysicalUnit">({{item.PhysicalUnit}})</span></p>
<input type="number" class="biginput" [(ngModel)]="item.PropertyValue"
(input)="multipleAssetInputChange(item,$event)"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
</div>
<!-- 方向 -->
<!-- <div *ngIf="item.PropertyType == 5 " class="selectDiv">
@ -365,31 +445,37 @@
<!-- 布尔值 是1或否0 -->
<div *ngIf="item.PropertyType == 6">
<p>{{item.PropertyName}}</p>
<input value='1' [(ngModel)]="item.PropertyValue" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)" class="input" type="radio" name="radio" (click)="multipleAssetRadioChange(item,'1')"><span></span>
<input value='0' [(ngModel)]="item.PropertyValue" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)" class="input" type="radio" name="radio" (click)="multipleAssetRadioChange(item,'0')"><span></span>
<input value='1' [(ngModel)]="item.PropertyValue"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)"
class="input" type="radio" name="radio" (click)="multipleAssetRadioChange(item,'1')"><span></span>
<input value='0' [(ngModel)]="item.PropertyValue"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)"
class="input" type="radio" name="radio" (click)="multipleAssetRadioChange(item,'0')"><span></span>
</div>
<!-- 供给区域 -->
<div *ngIf="item.PropertyType == 7" class="selectDiv">
<p style="display: inline-block;">{{item.PropertyName}}</p>
<select [(ngModel)]="item.PropertyValue" (change)="multipleSupplyArea(item,$event)" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<option value ="0">全部</option>
<option value ="1">高区</option>
<option value ="2">中区</option>
<option value ="3">低区</option>
<option value ="4">高中区</option>
<option value ="5">高低区</option>
<option value ="6">中低区</option>
<select [(ngModel)]="item.PropertyValue" (change)="multipleSupplyArea(item,$event)"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<option value="0">全部</option>
<option value="1">高区</option>
<option value="2">中区</option>
<option value="3">低区</option>
<option value="4">高中区</option>
<option value="5">高低区</option>
<option value="6">中低区</option>
</select>
</div>
<!-- 供给类型 -->
<div *ngIf="item.PropertyType == 8" class="selectDiv">
<p style="display: inline-block;">{{item.PropertyName}}</p>
<select [(ngModel)]="item.PropertyValue" (change)="multipleSupplyArea(item,$event)" [disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<option value ="0">消火栓</option>
<option value ="1">喷淋</option>
<option value ="2">水幕</option>
<option value ="3">泡沫</option>
<option value ="4">消防</option>
<select [(ngModel)]="item.PropertyValue" (change)="multipleSupplyArea(item,$event)"
[disabled]="!isEditPattern || (firstMultipleAssetData.assetData.GameMode == 0 && !pattern)">
<option value="0">消火栓</option>
<option value="1">喷淋</option>
<option value="2">水幕</option>
<option value="3">泡沫</option>
<option value="4">消防</option>
</select>
</div>
</div>

274
src/app/ui/collection-tools-plan/collection-tools.component.ts

@ -17,6 +17,8 @@ import { TabbarAndScoreService } from 'src/app/http-interceptors/tabbar-and-scor
import { MaskLayerService } from 'src/app/mask-layer.service';
import * as ObjectID from 'bson-objectid';
import { AxMessageSystem } from 'src/app/working-area/model/axMessageSystem';
declare var AMap:any
@Component({
selector: 'app-collection-tools-plan',
templateUrl: './collection-tools.component.html',
@ -24,7 +26,7 @@ import { AxMessageSystem } from 'src/app/working-area/model/axMessageSystem';
})
export class CollectionToolsPlanComponent implements OnInit {
@ViewChild('canvas', { static: true }) canvas: WorkingAreaComponent; //父组件中获得子组件的引用
@ViewChild('canvas') canvas: WorkingAreaComponent; //父组件中获得子组件的引用
constructor(public _ngZone: NgZone, private maskLayerService: MaskLayerService, private tabbarService: TabbarAndScoreService, private http: HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, private element: ElementRef, public canvasData: CanvasShareDataService, private router: Router, private route: ActivatedRoute) { }
@ViewChild('nzTreeComponent', { static: false }) nzTreeComponent!: NzTreeComponent;
@ -148,30 +150,6 @@ export class CollectionToolsPlanComponent implements OnInit {
}
}
pattern: boolean = true//默认为基本信息编辑
//基本信息编辑模式
baseInfo() {
if (!this.pattern) {
this.pattern = true
this.canvasData.gameMode = GameMode.BasicInformation
this.canvasData.selectPanelPoint = new DisposalNodeData();
this.mateDeleteCustomize()
this.getAllLibrary()
this.checkedBuildingIndex = -1
this.getSitePlan() //总平面图一层
}
}
//想定作业编辑模式
wantWork() {
if (this.pattern) {
this.pattern = false
this.canvasData.gameMode = GameMode.Assignment
this.getAllLibrary('plan')
this.getDisposalNode()
}
}
//适应缩放
adaptZoom() {
this.canvas.zoomFit()
@ -180,136 +158,7 @@ export class CollectionToolsPlanComponent implements OnInit {
resetZoom() {
this.canvas.resetCamera2D()
}
//ngzorro tree 拖拽
nzEvent(event: NzFormatEmitEvent): void {
if (this.isDrag) {
let parentId
if (this.pos == 0) {
parentId = event.node.key
} else {
if (event.node.level == 0) {
parentId = null
} else {
parentId = event.node.origin.parentId
}
}
let orders = {}
let originalData = JSON.parse(JSON.stringify(this.canvasData.allDisposalNode || [])) //tree原始数据
let targetNodeData = []//拖动移入节点的数据,用于遍历求出放在该数组的第几位
//找到需要重新排序的数组
if (this.pos == 0) {
originalData.forEach(item => {
if (item.parentId == event.node.key) {
targetNodeData.push(item)
}
})
} else {
if (event.node.origin.parentId) {//如果拖动目标为非一级节点
originalData.forEach(item => {
if (item.parentId == event.node.origin.parentId) {
targetNodeData.push(item)
}
})
} else {//如果拖动目标为一级节点
originalData.forEach(item => {
if (!item.parentId) {
targetNodeData.push(item)
}
})
}
}
let idArr = []
targetNodeData.forEach(i => {
idArr.push(i.id)
})
if (this.pos == 0 && event.node.origin.children.length == 1) {
let key = event.dragNode.key
orders[key] = 0
parentId = event.node.key
} else {
let array = []
targetNodeData.forEach(item => {
if (item.id != event.dragNode.key) { //将拖动项先移除掉
array.push(item)
}
})
if (event.dragNode.isEnd[event.dragNode.isEnd.length - 1]) { //如果移入到最后一个
array.push(event.dragNode.origin)
} else if (event.dragNode.isStart[event.dragNode.isStart.length - 1]) {//如果移入到第一个
array.unshift(event.dragNode.origin)
} else {//如果移入中间位置
array.splice(event.node.origin.order, 0, event.dragNode.origin)
}
array.forEach((item, key) => {
orders[item.id] = key
})
}
let obj = {
id: event.dragNode.origin.id,
parentId: parentId,
orders: orders
}
this.http.put("/api/DisposalNodes/Sort", obj).subscribe(data => {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('排序成功', '确定', config)
this.refurbishTreeData()
})
}
}
isDrag //是否可以拖动
pos//放置位置
beforeDrop = (arg: NzFormatBeforeDropEvent) => {
if (arg.dragNode.origin.isDataNode && arg.node.level === 0) {//如果为数据节点则不允许拖到一级节点
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('数据节点不允许拖拽到一级节点', '确定', config)
this.isDrag = false
return of(false);
} else if (!arg.dragNode.origin.isDataNode && arg.node.level === 2) {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('处置节点不允许拖拽到三级节点', '确定', config)
this.isDrag = false
return of(false);
} else {
this.isDrag = true
this.pos = arg.pos
return of(true)
}
}
//ngzorro tree 拖拽
//天气栏目
weatherBtn = true
weatherBtnShow() {
this.weatherBtn = !this.weatherBtn
}
weatherBtnHidden() {
this.weatherBtn = !this.weatherBtn
}
//底部切换按钮div
detailsAndattentBtn = true
//节点详情
details() {
this.detailsAndattentBtn = true
}
//注意事项
attent() {
this.detailsAndattentBtn = false
}
//消防要素div边框高度调节
firecategoriesDivMouseDown(e) {
@ -347,22 +196,6 @@ export class CollectionToolsPlanComponent implements OnInit {
}
}
//底部div高度调节
bottomDivMouseDown(e) {
document.onmousemove = (ev) => {
let bodyHeight = document.body.clientHeight //网页高度
let maxHeight = this.element.nativeElement.querySelector('#rightDiv').clientHeight //最大高度
if (bodyHeight - ev.clientY >= maxHeight) {
this.element.nativeElement.querySelector('#bottomDiv').style.height = maxHeight + 'px'
} else {
this.element.nativeElement.querySelector('#bottomDiv').style.height = (bodyHeight - ev.clientY) + 'px';
}
}
document.onmouseup = () => {
document.onmousemove = null;
document.onmouseup = null;
}
}
//右侧div边框宽度调节
rightDivMouseDown(e) {
@ -826,11 +659,6 @@ export class CollectionToolsPlanComponent implements OnInit {
if (this.router.url.indexOf("gis") == -1) {
this.getSitePlan()
}
//监听数据变化后
this.canvas.on('canvasDataChanged', () => {
// 收到数据表示共享数据发生变化
// this.renovateTreeData(false)
});
}
copyAssetData: any //存储用于复制的素材
@ -895,7 +723,6 @@ export class CollectionToolsPlanComponent implements OnInit {
//更新用于统计的数据
this.canvasData.updateBuildingData()
if (this.selectingSitePlan && this.selectingSitePlan.id) {
//打开遮罩层
this.maskLayerService.sendMessage(true)
@ -1209,13 +1036,6 @@ export class CollectionToolsPlanComponent implements OnInit {
})
}
//拖拽tree
drop(e) {
// console.log(1111,e)
}
drop2(e) {
// console.log(222,e)
}
//创建建筑
createBuilding() {
@ -1337,7 +1157,6 @@ export class CollectionToolsPlanComponent implements OnInit {
}
storeyData //将建筑素材和当前楼层素材合二为一
//处理 tree 数据结构
handleTreeData(storeyData) {
@ -1478,42 +1297,22 @@ export class CollectionToolsPlanComponent implements OnInit {
this.canvas.setIconVisible(iconVisibleArr, !node.isLook)
}
//计算 可视区域内宽度, 是否缩放背景图
backGroundScale() {
// let that = this
// let dad = this.element.nativeElement.querySelector('.functionalDomainContent').clientWidth
// let dadHeight = this.element.nativeElement.querySelector('.functionalDomainContent').clientHeight
// let left = this.element.nativeElement.querySelector('.functionalDomainLeft').clientWidth
// let right = this.element.nativeElement.querySelector('.functionalDomainRight').clientWidth
// let imgWidth = dad - left - right//可视区域内 宽度
// let img = new Image()
// img.src = this.selectingSitePlan.imageUrl;
// img.onload = function(){
// if (img.height > dadHeight && img.width > imgWidth) {
// let width = imgWidth/img.width
// let height = dadHeight/img.height
// that.canvas.setBackgroundScale((width>height? height : width)-0.005)
// return
// } else if (img.height > dadHeight) {
// that.canvas.setBackgroundScale((dadHeight/img.height)-0.005)
// return
// } else if (img.width > imgWidth) {
// that.canvas.setBackgroundScale((imgWidth/img.width)-0.005)
// return
// }
// };
}
//封装 刷新 tree 数据
async renovateTreeData(isRefresh: boolean = true) {
// this.allFireElements[this.allFireElements.length-1].children = []
isRefresh ? await this.canvas.refresh() : null
this.canvas.setNameVisible(this.basicInfo, 0)
this.canvas.setNameVisible(this.wantToWork, 1)
this.canvas.setLegendVisible(this.isShowLegend) //图例显隐
isRefresh ? this.canvasData.isChange = false : null //服务中 数据是否改动 改为false
isRefresh ? this.isShowProperty = true : null
isRefresh ? this.isShowAttribute = true : null
if(!this.selectingSitePlan.isGis){
isRefresh ? await this.canvas.refresh() : null
this.canvas.setNameVisible(this.basicInfo, 0)
this.canvas.setNameVisible(this.wantToWork, 1)
this.canvas.setLegendVisible(this.isShowLegend) //图例显隐
isRefresh ? this.canvasData.isChange = false : null //服务中 数据是否改动 改为false
isRefresh ? this.isShowProperty = true : null
isRefresh ? this.isShowAttribute = true : null
}else{
//加载高德地图
this.toLoadGis()
}
// let beforeOneId = this.selectingSitePlan.id || '' //当前 选中 平面图 楼层/区域 id
// let companyBuildingData = JSON.parse(JSON.stringify( this.canvasData.originalcompanyBuildingData || {} )) // 当前 单位/建筑 数据
@ -1532,6 +1331,19 @@ export class CollectionToolsPlanComponent implements OnInit {
// }
// this.handleTreeData(storeyData) //处理tree数据结构
}
map:any
toLoadGis(){
this.map = new AMap.Map('container', {
viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
zoom:11, //初始化地图层级
center: [116.397428, 39.90923] //初始化地图中心点
});
}
@ -1582,6 +1394,11 @@ export class CollectionToolsPlanComponent implements OnInit {
this.sitePlanData = data
this.selectingSitePlan = this.sitePlanData[0] || {}
this.canvasData.selectStorey = this.sitePlanData[0] || {} //服务中 存一份数据
if(this.sitePlanData.length != 0 && this.sitePlanData[0].isGis){
this.isGis = true
}else{
this.isGis = false
}
this.selectSitePlanIndex = 0
Promise.all([planData]).then((res) => {
@ -1591,7 +1408,7 @@ export class CollectionToolsPlanComponent implements OnInit {
})
}
//获取建筑 楼层/区域
//获取建筑 楼层/区域 废弃
getBuildingSitePlan(item) {
let params = { buildingId: item.id }
// let fireData = this.getFireElements(item.buildingTypes[0].id || '') //获取建筑下 消防要素
@ -1682,7 +1499,15 @@ export class CollectionToolsPlanComponent implements OnInit {
}
//点击选中 平面图 楼层/区域 时
isGis:boolean
selectSitePlan(item, index) {
console.log('点击楼层',item)
if(item.isGis){
this.isGis = true
}else{
this.isGis = false
}
if (this.selectSitePlanIndex != index) {
this.canvasData.selectPanelPoint = new DisposalNodeData();
if (this.canvasData.isChange) { //true 数据被改动
@ -1829,6 +1654,13 @@ export class CollectionToolsPlanComponent implements OnInit {
//旋转底图
revolveImg(item) {
if(item.isGis){
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('gis底图不允许旋转', '确定', config);
return
}
item.imageAngle == 270 ? item.imageAngle = 0 : item.imageAngle = item.imageAngle + 90
if (this.checkedBuildingIndex == -1) { //总平面图
this.http.put(`/api/SitePlans/${item.id}`, item).subscribe(data => {
@ -1911,6 +1743,14 @@ export class CollectionToolsPlanComponent implements OnInit {
//复制图层 平面图 楼层/区域
duplicateLayer(item) {
if(item.isGis){
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('gis底图不允许复制', '确定', config);
return
}
let paramsData = JSON.parse(JSON.stringify(this.canvasData.originaleveryStoreyData.data || {}))
Object.keys(paramsData).forEach((key) => {
if (key != '图例') {

33
src/app/ui/collection-tools-plan/leftFunctionalDomain.ts

@ -34,6 +34,7 @@ export class leftFunctionalDomainComponentPlan implements OnInit {
let maxSize = 10*1024*1024 //10MB限制
if (e.target.files[0].size <= maxSize) {
this.file = e.target.files[0]
this.selectedType = 'image'
} else {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
@ -43,17 +44,22 @@ export class leftFunctionalDomainComponentPlan implements OnInit {
}
}
selectedType:String //新建平面图的底图类型 gis/image
//导入GIS
toGIS () {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('功能开发测试中,即将上线','确定',config);
this.selectedType = 'gis';
this.file = null;
(<HTMLInputElement>document.getElementById('uploadFile')).value = null; //清空input框缓存
// const config = new MatSnackBarConfig();
// config.verticalPosition = 'top';
// config.duration = 3000
// this.snackBar.open('功能开发测试中,即将上线','确定',config);
}
//提交表单创建平面图
onSubmit (e) {
if (this.file) {
if (this.file && this.selectedType == 'image') {
this.maskLayerService.sendMessage(true)
if (this.file.size<=5*1024*1024) { //小于5MB
let formData = new FormData()
@ -145,6 +151,23 @@ export class leftFunctionalDomainComponentPlan implements OnInit {
}
})
}
} else if(this.selectedType == 'gis'){
let data = {
companyId: sessionStorage.getItem('companyId'),
name: e.name,
order: this.data.order,
area:Number(e.area),
details:e.details,
enabled: true,
modifiedTime: new Date(),
imageUrl: 'null',
imageWidth: 0,
imageHeight: 0,
isGis:true
}
this.http.post('/api/SitePlans',data).subscribe(data=>{
this.dialogRef.close('总平面图');
})
} else {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';

4
src/app/ui/collection-tools-plan/panel.scss

@ -304,6 +304,10 @@
overflow: hidden;
display: inline-block;
}
.uploadBackGroundSelected{
background-color: #6BC2FF;
color: #fff;
}
.uploadBackGround input {
position: absolute;
width: 100%;

4
src/app/ui/collection-tools/collection-tools.component.html

@ -300,7 +300,7 @@
</div>
</div>
<div class="colorDiv" *ngIf="isEditPattern && pattern && canvasAssetObj.GameMode == 0">
<div class="colorDiv" *ngIf="isEditPattern">
<ul>
<li (click)="selectcolor(item,key)" class="colorLi" *ngFor="let item of colors,let key=index" [style]="{'background-color':item}"></li>
</ul>
@ -435,7 +435,7 @@
</div>
</div>
<div class="colorDiv" *ngIf="isEditPattern && pattern && firstMultipleAssetData.assetData.GameMode == 0">
<div class="colorDiv" *ngIf="isEditPattern && firstMultipleAssetData.assetData.GameMode == 0">
<ul>
<li (click)="multipleAssetSelectcolor(item,key)" class="colorLi" *ngFor="let item of colors,let key=index" [style]="{'background-color':item}"></li>
</ul>

11
src/styles.scss

@ -113,6 +113,11 @@ table td.mat-footer-cell:last-of-type{
color: #333333;
}
}
#waitexamineergis{
.mat-expansion-indicator::after {
color: #fff;
}
}
//gis标点弹出框样式
#gispopupbox{
.btn{
@ -222,3 +227,9 @@ td{
height: 50px!important;
}
}
#firefightingdevicelook,#firefightingdevice{
.expansionheader{
height: auto!important;
}
}
Loading…
Cancel
Save