import { Component, OnInit, Inject, ViewChild } from '@angular/core'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; import {CanvasShareDataService,DisposalNodeData} from '../../canvas-share-data.service' //引入服务 import { FlatTreeControl } from '@angular/cdk/tree'; import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree'; import { NzFormatBeforeDropEvent, NzFormatEmitEvent,NzTreeComponent } from 'ng-zorro-antd/tree'; @Component({ selector: 'dialog-examination-questions', templateUrl: './examinationQuestions.html', styleUrls: ['./collection-tools.component.scss',] }) export class examinationQuestions { constructor(private http:HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data) {} @ViewChild('nzTreeComponent', { static: false }) nzTreeComponent!: NzTreeComponent; defaultCheckedKeys = []; //指定选中复选框的树节点 key值 defaultExpandedKeys = []; //展开指定的树节点 key值 defaultSelectedKeys = []; //指定选中的树节点 key值 renderData:any ngOnInit(): void { this.renderData = this.data.treeData if(JSON.parse(sessionStorage.getItem('tree型数据')) && JSON.parse(sessionStorage.getItem('tree型数据'))[this.data.buildFloorData.floorData.id]){ // console.log(123,JSON.parse(sessionStorage.getItem('tree型数据'))[this.data.buildFloorData.floorData.id]) this.defaultCheckedKeys = JSON.parse(sessionStorage.getItem('tree型数据'))[this.data.buildFloorData.floorData.id] } this.data.treeData.forEach(element => { if(element.isTemplate){ element.isLeaf = false }else{ element.isLeaf = true } if(element.children && element.children.length != 0){ element.children.forEach(ele => { if(ele.isTemplate){ ele.isLeaf = false }else{ ele.isLeaf = true } if(ele.children && ele.children.length != 0){ ele.children.forEach(item => { if(item.isTemplate){ item.isLeaf = false }else{ item.isLeaf = true } }); }}) } }) } nzEvent($event){ console.log($event) } //提交 submit () { let oldTreeData = this.nzTreeComponent.getCheckedNodeList() let alltreedata = JSON.parse(sessionStorage.getItem("tree型数据")) let keyArr = [] oldTreeData.forEach(element => { keyArr.push(element.origin.key) }) if(alltreedata){ //如果已经保存过当前楼层则替换 alltreedata[this.data.buildFloorData.floorData.id] = keyArr sessionStorage.setItem('tree型数据',JSON.stringify(alltreedata)) }else{ alltreedata = {} alltreedata[this.data.buildFloorData.floorData.id] = keyArr sessionStorage.setItem('tree型数据',JSON.stringify(alltreedata)) } let checkList = [] //只存真实素材 for (const key in this.data.oldRealData.data) { let element = this.data.oldRealData.data[key] let isChecked = (this.nzTreeComponent.getTreeNodeByKey(key)).isChecked isChecked? checkList.push(element) : null } //存储真实素材数据 let obj = { name:this.data.buildFloorData.buildingData.name + '-' + this.data.buildFloorData.floorData.name, key:this.data.buildFloorData.floorData.id, children:checkList } let data = JSON.parse(sessionStorage.getItem("试卷id")) if(data && data.length != 0){ console.log(1) let ind = null data.forEach((item,index) => { if(item.key == obj.key){ ind = index + 1 } }) if(ind){ if(checkList.length != 0){ data[ind - 1].children = checkList }else{ data.splice(ind - 1,1) } }else{ data.push(obj) } sessionStorage.setItem("试卷id",JSON.stringify(data)) }else{ console.log(2) data = [] data[0] = obj sessionStorage.setItem("试卷id",JSON.stringify(data)) } const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('当层消防设施考题设置完成','确定',config); // this.dialogRef.close() } } @Component({ selector: 'dialog-upload-questions', templateUrl: './uploadQuestions.html', styleUrls: ['./collection-tools.component.scss',] }) export class uploadQuestions { constructor(private http:HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data) {} defaultCheckedKeys = []; //指定选中复选框的树节点 key值 defaultExpandedKeys = []; //展开指定的树节点 key值 defaultSelectedKeys = []; //指定选中的树节点 key值 renderData:any ngOnInit(): void { let data = JSON.parse(sessionStorage.getItem("试卷id")) data.forEach(item => { item.children.forEach(i => { i.isLeaf = true }) }) this.renderData = data } nzEvent($event){ console.log($event) } //上传 submit () { console.log(this.data.question) } } @Component({ selector: 'dialog-disposal-nodes', templateUrl: './uploadDisposalNodes.html', styleUrls: ['./collection-tools.component.scss',] }) export class uploadDisposalNodes { constructor(private http:HttpClient, public dialog: MatDialog, public snackBar: MatSnackBar, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data) {} @ViewChild('nzTreeComponent', { static: false }) nzTreeComponent!: NzTreeComponent; ngOnInit(): void { this.treeData = [...this.data.treeData] } treeData:any = []; //tree //提交 保存考试节点 submit () { let checkList = [] this.data.oldTreeData.forEach(element => { let isChecked = (this.nzTreeComponent.getTreeNodeByKey(element.id)).isChecked isChecked? checkList.push(element) : null }); if (checkList.length) { this.dialogRef.close(checkList); } else { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('请选择节点','确定',config); } } }