< div class = "content" >
<!-- header头部 -->
< div class = "header" >
< div class = "headerTitle" > {{examMsg.conpanyName}}< / div >
< div class = "headerCenter" > < input type = "text" placeholder = "请输入考试要点" [ ( ngModel ) ] = " examMsg . keynote " > < / div >
< div class = "headerRight" >
< button style = "border: 1px solid #07CDCF; border-radius: 5px; margin: 0 15px;" ( click ) = ' openFireExamination ( ) ' > < mat-icon > visibility< / mat-icon > 消防设施考题设定< / button >
< button ( click ) = " saveSite ( ) " > < mat-icon > description< / mat-icon > 保存< / button >
< button ( click ) = " openUploadQuestions ( ) " > < mat-icon > open_in_browser< / mat-icon > 上传< / button >
< / div >
< / div >
<!-- header头部 -->
<!-- 功能区 -->
< div class = "functionalDomain" >
< div class = 'functionalDomainContent' id = "functionalDomainContent" >
<!-- H5Canvas -->
< app-working-area # canvas [ init ] = ' this ' > < / app-working-area >
<!-- H5Canvas -->
< div class = "centerBuildingDiv" style = "user-select: none;" cdkDrag >
< div class = "centerTotal" >
< div class = "centerTotalHeader overflowText" >
< mat-icon cdkDragHandle matTooltip = "可移动窗口" matTooltipPosition = "above" > open_with< / mat-icon >
< label ( click ) = ' togglebeforeOneCheckedBuilding ( ) ' > {{beforeOneCheckedBuilding.name}}< / label >
< / div >
< div class = "everyTotal overflowText" * ngFor = "let item of sitePlanData;let key = index"
[ngClass]="{'selectSitePlan': selectSitePlanIndex==key}" (click)='selectSitePlan(item,key)'>
{{item.name}}
< / div >
< / div >
< div style = "flex: 2%;opacity: 0;" [ hidden ] = " ! beforeOneCheckedBuildingIsShow " > < / div >
< div class = "centerTotal" [ hidden ] = " ! beforeOneCheckedBuildingIsShow " >
< div class = "everyTotal" ( click ) = " checkedBuilding ( { name: ' 总平面图 ' } , -1 ) " [ ngClass ] = " { ' buildingbtnchecked ' : checkedBuildingIndex = =-1}" > 总平面图< / div >
< div class = "everyTotal overflowText" * ngFor = "let item of allBuildings;let key = index" ( click ) = " checkedBuilding ( item , key ) " [ ngClass ] = " { ' buildingbtnchecked ' : checkedBuildingIndex = =key}" >
{{item.name}}
< / div >
< / div >
< / div >
< div id = "leftDiv" class = 'functionalDomainLeft publicCss scenarioAssignment' [ ngClass ] = " { ' togglePanel ' : toggleExpandPanel = =true}" style = "user-select: none;" >
<!-- 处置预案 -->
< div class = "handlePlan" >
< div class = "planarGraphHeader" ( click ) = ' toggleHandlePlan ( ) ' >
< mat-icon * ngIf = "toggleHandlePlans" > keyboard_arrow_up< / mat-icon >
< mat-icon * ngIf = "!toggleHandlePlans" > keyboard_arrow_down< / mat-icon >
< label class = "overflowText" style = "font-weight: 550;" > 处置预案< / label >
< label style = "margin-left: 45px;" >
< mat-icon title = "选择考试节点" ( click ) = ' countValue ( $ event ) ' > dashboard< / mat-icon >
< / label >
< / div >
< div [ hidden ] = " ! toggleHandlePlans " >
< nz-tree # nzTreeComponent [ nzData ] = " treeData " nzBlockNode nzDraggable ( nzOnDrop ) = " nzEvent ( $ event ) " [ nzTreeTemplate ] = " nzTreeTemplate " [ nzBeforeDrop ] = " beforeDrop " [ nzExpandedKeys ] = " defaultExpandedKeys " > < / nz-tree >
< ng-template # nzTreeTemplate let-node let-origin = "origin" >
< div id = "terrNodePublic" ( click ) = ' selectanelPoint ( node . origin ) ' [ ngClass ] = " { ' selectanelPoint ' : selectDisposalNode = =node.origin.id}" >
< label title = "{{node.title}}" class = "overflowText textNode" > {{node.title}}< / label >
<!-- <div class="planIconDiv" *ngIf="isEditPattern">
< mat-icon * ngIf = "!node.origin.sitePlanId && !node.origin.buildingAreaId" ( click ) = ' editPanelPoint ( $ event , node ) ' > edit< / mat-icon >
< mat-icon * ngIf = "node.level===0" ( click ) = ' addPanelPoint ( $ event , node . origin , null ) ' > add< / mat-icon >
< mat-icon * ngIf = "!node.origin.sitePlanId && !node.origin.buildingAreaId" ( click ) = ' copyPanelPoint ( $ event , node , treeData ) ' > library_books< / mat-icon >
< mat-icon ( click ) = ' deletePanelPoint ( $ event , node . origin ) ' > delete_forever< / mat-icon >
< / div > -->
< / div >
< / ng-template >
< / div >
< / div >
<!-- 处置预案 -->
<!-- 素材库 -->
< div id = "materialBank" >
< div class = "planarGraphHeader" ( click ) = ' toggleMaterial ( ) ' >
< mat-icon * ngIf = "toggleMaterialBank" > keyboard_arrow_up< / mat-icon >
< mat-icon * ngIf = "!toggleMaterialBank" > keyboard_arrow_down< / mat-icon >
< label class = "overflowText" style = "font-weight: 550;" > 素材库< / label >
< / div >
< div [ hidden ] = " ! toggleMaterialBank " [ ngClass ] = " { ' materialBankDIV ' : pattern } " >
< mat-accordion * ngFor = "let item of allLibrary" id = "panelLibrary" >
< mat-expansion-panel ( opened ) = ' opened ( item ) ' >
< mat-expansion-panel-header >
< label class = "text" > {{item.name}}< / label >
< / mat-expansion-panel-header >
< div class = "panelLibraryFlex" >
< div class = "imgBox" * ngFor = "let items of item.images;let key = index" [ title ] = " items . name "
(click)='selectImg(item,items,key)'
[ngClass]="{'selectImg': selectLibrary==item.name & & selectImageIndex==key}">
< img [ src ] = " items . imageUrl " onerror = "javascript:this.src='../../../assets/images/noImg.png'" >
< p class = "overflowText" > {{items.name}}< / p >
< / div >
< / div >
< / mat-expansion-panel >
< / mat-accordion >
< / div >
< / div >
<!-- 素材库 -->
<!-- 消防设施 -->
< div class = "planarGraph" >
< div class = "planarGraphHeader" ( click ) = ' togglePlanarGraph ( ) ' >
< mat-icon * ngIf = "togglePlane" > keyboard_arrow_up< / mat-icon >
< mat-icon * ngIf = "!togglePlane" > keyboard_arrow_down< / mat-icon >
< label class = "overflowText" style = "font-weight: 550;" > 消防设施< / label >
< / div >
< div [ hidden ] = " ! togglePlane " >
<!-- 消防列表树 -->
< mat-tree [ dataSource ] = " dataSource " [ treeControl ] = " treeControl " >
< mat-tree-node * matTreeNodeDef = "let node;" matTreeNodePadding cdkTreeNodePaddingIndent = '26' ( click ) = " clickTreeNode ( node ) " class = "treeNode" >
< button mat-icon-button disabled > < / button >
< span title = "{{node.name}}" [ ngClass ] = " { ' treeText ' : ! node . isTemplate } " >
{{node.name}}
< / span >
< span * ngIf = "node.isTemplate" > ({{node.children.length}})< / span >
< span class = "isLookCss" ( click ) = " clickLookItem ( node ) " > < mat-icon [ ngClass ] = " { ' icongray ' : node . isLook = = false } " > visibility< / mat-icon > < / span >
< / mat-tree-node >
< mat-tree-node * matTreeNodeDef = "let node;when: hasChild" matTreeNodePadding ( click ) = " clickTreeNode ( node ) " class = "treeNode" >
< button mat-icon-button
matTreeNodeToggle
[attr.aria-label]="'toggle ' + node.name">
< mat-icon class = "mat-icon-rtl-mirror" >
{{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}
< / mat-icon >
< / button >
< span title = "{{node.name}}" [ ngClass ] = " { ' treeText ' : ! node . isTemplate } " >
{{node.name}}
< / span >
< span * ngIf = "node.isTemplate && node.isNewElement" > ({{node.children.length}})< / span >
< span class = "isLookCss" ( click ) = " clickLookItem ( node ) " > < mat-icon [ ngClass ] = " { ' icongray ' : node . isLook = = false } " > visibility< / mat-icon > < / span >
< / mat-tree-node >
< / mat-tree >
<!-- 消防列表树 -->
< / div >
< / div >
<!-- 消防设施 -->
< / div >
< div id = "rightDiv" 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 [ ngClass ] = " { ' forbidden ' : ! isEditPattern } " id = "property" class = "property" style = "height: 100%;background-color: white;" >
< div class = "titleS" > < mat-icon > info< / mat-icon > 属性< / div >
<!-- 平面图属性 -->
< div class = "siteproperty" style = "user-select: none" * ngIf = "isShowProperty && isShowAttribute" >
< p > 面积(平方米)< / p >
< div class = "siteproperty_size" > {{canvasData.selectStorey.area}}< / div >
< p > 详情< / p >
< div class = "siteproperty_size" >
{{canvasData.selectStorey.details}}
< / div >
< / div >
<!-- 素材属性 -->
< div class = "assetsproperty" style = "user-select: none" * ngIf = "isShowProperty && !isShowAttribute" >
< h3 style = "text-align: center;font-weight: 900;" > {{assetName}}< / h3 >
< div * ngIf = "canvasAssetObj.InteractiveMode == 0" >
< p > 宽度(像素)< / p >
< input type = "text" class = "biginput" [ ( ngModel ) ] = " assetWidth " ( input ) = " assetWidthIunput ( ) " [ disabled ] = " ! isEditPattern | | ( canvasAssetObj . GameMode = = 0 & & ! pattern ) " >
< p > 高度(像素)< / p >
< input type = "text" 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 ) " >
< 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 >
< / div >
< / div >
<!-- 如果是多点连线 -->
< div * ngIf = "canvasAssetObj.InteractiveMode == 1" >
< 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 ) " >
< 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 >
< / div >
< / div >
< p style = "margin-top: 4px;margin-bottom: 0px;" > 是否高亮< / p >
< div >
< input 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" >
< div class = "colorBigTemplateDiv" >
< span > 颜色< / span >
< div class = "colorTemplateDiv" [ style ] = " { ' background-color ' :selectedcolor } " >
< / div >
< / 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 >
< / 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 >
< 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 ) " >
< / 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 >
< / 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 ) " >
< / 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 >
< 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 >
<!-- 如果需要导航按钮 -->
< 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" >
< mat-icon class = "hoverred" ( click ) = " deleteImg ( ) " > delete< / mat-icon >
< / span >
< / div >
< / div >
< / div >
<!-- 方向 -->
< 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 >
< / 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 >
< / 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 >
< / 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 >
< / div >
< / div >
< / div >
< / div >
< / div >
< / div >
< / div >
<!-- 功能区 -->
< / div >