import { Router } from '@angular/router'; import { HttpClient } from '@angular/common/http'; import { Component, OnInit, AfterViewInit, ViewChild, ViewContainerRef } from '@angular/core'; import { TreeService } from 'src/app/service/tree.service'; import { NzFormatEmitEvent, NzTreeComponent, NzTreeNodeOptions } from 'ng-zorro-antd/tree'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { NzModalService } from 'ng-zorro-antd/modal'; import { NzMessageService } from 'ng-zorro-antd/message'; import { AddUnitComponent } from '../add-unit/add-unit.component'; import { UnitEditComponent } from '../unit-edit/unit-edit.component' import { asBlob } from 'html-docx-js-typescript' // 要保存这个docx文件推荐引入file-saver哦,你可以用npm i -D file-saver来安装 import { saveAs } from 'file-saver' import { MethodService } from 'src/app/service/method.service'; import * as moment from 'moment'; @Component({ selector: 'app-unit', templateUrl: './unit.component.html', styleUrls: ['./unit.component.scss'] }) export class UnitComponent implements OnInit { listOfData: any = []; validateForm!: FormGroup; constructor(public methodService: MethodService, private router: Router, private fb: FormBuilder, private http: HttpClient, private toTree: TreeService, private modal: NzModalService, private message: NzMessageService, private viewContainerRef: ViewContainerRef) { } PageNumber = 1 PageSize = 10 ngOnInit(): void { this.getBuildingTypes() this.getAllOrganization() } expandKeys defaultOrId: string //获取所有组织机构 nodes: any = [] getAllOrganization() { let organizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId let params = { ContainsChildren: "true", PageNumber: 1, PageSize: 9999 } this.http.get('/api/Organizations', { params: params }).subscribe((data: any) => { data.items.forEach(element => { if (element.id == organizationId) { element.parentId = null } element.key = element.id element.title = element.name }); this.nodes = [...this.toTree.toTree(data.items)] this.searchValue.or = JSON.parse(sessionStorage.getItem('userData')).organizationId //回显 let unitPagesData = JSON.parse(sessionStorage.getItem('unitPagesData')) || null if (unitPagesData) { this.searchValue = unitPagesData.searchValue this.PageNumber = unitPagesData.PageNumber } this.getCompanies() }) } BuildingTypes getBuildingTypes() { this.http.get('/api/BuildingTypes').subscribe((data: any) => { this.BuildingTypes = data }) } searchValue = { unit: '', uniytype: '', or: JSON.parse(sessionStorage.getItem('userData')).organizationId, property: '', date:null }; aaa(){ console.log(this.searchValue.date); } nzLoading = false totalCount getCompanies() { let OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId this.nzLoading = true let params = { CompanyName: this.searchValue.unit, BuildingTypeId: this.searchValue.uniytype, OrganizationId: this.searchValue.or ? this.searchValue.or : OrganizationId, CompanyLevel: this.searchValue.property, PlanCheckStartTime:this.searchValue.date&&JSON.stringify(this.searchValue.date)!="[]"?moment(this.searchValue.date[0]).format('yyyy-MM-DD') + ' 00:00:00':null, PlanCheckEndTime:this.searchValue.date&&JSON.stringify(this.searchValue.date)!="[]"?moment(this.searchValue.date[1]).format('yyyy-MM-DD') + ' 23:59:59':null, PageNumber: this.PageNumber, PageSize: this.PageSize } this.http.get('/api/Companies', { params: params }).subscribe((data: any) => { this.nzLoading = false console.log(data); this.totalCount = data.totalCount this.listOfData = data.items this.listOfData.forEach(element => { if(element.lastPlanTaskTime){ element.lastPlanTaskTime=moment(element.lastPlanTaskTime).format('yyyy-MM-DD HH:ss') } }); this.listOfData = [...this.listOfData] }) } pageChange($event) { this.PageNumber = $event this.getCompanies() } search() { this.PageNumber = 1 this.getCompanies() } reset() { this.PageNumber = 1 this.searchValue = { unit: '', uniytype: '', or: JSON.parse(sessionStorage.getItem('userData')).organizationId, property: '', date:null }; this.getCompanies() } ngOnDestroy(): void { // CustomReuseStrategy.deleteRouteSnapshot('/basicInfo/unit'); } addUnit() { const modal = this.modal.create({ nzTitle: "新增单位", nzContent: AddUnitComponent, nzViewContainerRef: this.viewContainerRef, nzWidth: 450, nzComponentParams: { nodes: this.nodes, BuildingTypes: this.BuildingTypes, }, nzOnOk: async () => { if (instance.validateForm.valid) { await new Promise((resolve, reject) => { let integrity = this.methodService.getAddIntegrity(instance.validateForm.value) let body = { companyName: instance.validateForm.value.unitname, directorName: instance.validateForm.value.person, directorPhone: instance.validateForm.value.phone, address: instance.validateForm.value.addr, organizationId: instance.validateForm.value.orStation || null, relatedOrganizationId: instance.validateForm.value.orDa || null, buildingTypeId: instance.validateForm.value.unittype || null, companyLevel: instance.validateForm.value.companyLevel, useNature: instance.validateForm.value.nature, data: null, integrity: integrity } this.http.post('/api/Companies', body).subscribe({ next: async (data) => { this.message.create('success', '创建成功'); resolve(data) await this.getCompanies() return true }, error: (err) => { this.message.create('warning', '创建失败'); reject(err) return false } }) }) } else { this.message.create('warning', '请填写完整!'); return false } } }); const instance = modal.getContentComponent(); } look(data) { let unitPagesData = { searchValue: this.searchValue, PageNumber: this.PageNumber } sessionStorage.setItem('unitPagesData', JSON.stringify(unitPagesData)) this.router.navigate(['/basicInfo/unit/details'], { queryParams: { id: data.id, pattern: 'look' } }) } edit(data) { console.log(data) let unitPagesData = { searchValue: this.searchValue, PageNumber: this.PageNumber } sessionStorage.setItem('unitPagesData', JSON.stringify(unitPagesData)) this.router.navigate(['/basicInfo/unit/details'], { queryParams: { id: data.id, pattern: 'edit', company: data.companyName, organization: data.organization.name } }) } delete(item) { this.modal.confirm({ nzTitle: `确定要删除${item.companyName}这个单位吗?`, nzOkText: '确定', nzOkType: 'default', nzOnOk: () => { this.http.delete(`/api/Companies/${item.id}`).subscribe(data => { this.message.create('success', '删除成功!'); this.getCompanies() }) }, nzCancelText: '取消' }); } //下载 datas download(data) { // console.log(data) if (data.data) { this.datas = JSON.parse(data.data) } else { this.message.create('warning', '该单位未保存过数据'); return } let keyHtml = '' if (this.datas.key.length != 0) { this.datas.key.forEach((item, key) => { keyHtml += `
重点部位情况(`+ key + `)
重点部位名称
`+ item.data[0].value + `
重点部位所在位置
`+ item.data[1].value + `
建筑结构
`+ item.data[2].value + `
使用性质
`+ item.data[3].value + `
主要危险性
`+ item.data[4].value + `
单位基本情况 |
单位名称 |
`+ this.datas.basicInfo.name + ` |
单位地址 |
`+ this.datas.basicInfo.address + ` |
联系电话 |
`+ this.datas.basicInfo.phone + ` |
|||||||||||||
人员总数 |
`+ this.datas.basicInfo.peoplenum + ` |
建筑高度 |
`+ this.datas.basicInfo.buildingheight + ` |
层数 |
`+ this.datas.basicInfo.cengshu + ` |
||||||||||||||
建筑结构 |
`+ this.datas.basicInfo.jiegou + ` |
占地面积 |
`+ this.datas.basicInfo.zhandimianji + ` |
总建筑面积 |
`+ this.datas.basicInfo.zongmianji + ` |
主要使用性质 |
`+ this.datas.basicInfo.xingzhi + ` |
||||||||||||
毗邻建筑 |
东:`+ this.datas.basicInfo.pilin.dong + ` |
南:`+ this.datas.basicInfo.pilin.nan + ` |
西:`+ this.datas.basicInfo.pilin.xi + ` |
北:`+ this.datas.basicInfo.pilin.bei + ` |
|||||||||||||||
辖区中队行驶路线及时间 |
`+ this.datas.basicInfo.luxian + ` |
||||||||||||||||||
单位内部主要消防设施 |
消防控制室 |
位置 |
`+ this.datas.ewai.kongzhishiweizhi + ` |
||||||||||||||||
消防水源 |
消防水池数量 |
`+ this.datas.other.listdata[0].data[0].value + ` |
位置 |
`+ this.datas.other.listdata[0].data[1].value + ` |
总容量 |
`+ this.datas.other.listdata[0].data[2].value + ` |
补给方式 |
`+ this.datas.other.listdata[0].data[3].value + ` |
|||||||||||
室外其他水源 |
`+ this.datas.other.listdata[0].data[4].value + ` |
位置 |
`+ this.datas.other.listdata[0].data[5].value + ` |
||||||||||||||||
自动报警系统 |
`+ (this.datas.other.radiodata[0].isHave ? '有' : '无') + ` |
自动喷水系统 |
`+ (this.datas.other.radiodata[1].isHave ? '有' : '无') + ` |
应急广播系统 |
`+ (this.datas.other.radiodata[2].isHave ? '有' : '无') + ` |
防排烟系统 |
`+ (this.datas.other.radiodata[3].isHave ? '有' : '无') + ` |
||||||||||||
室外消火栓数量 |
`+ this.datas.ewai.shiwaishuliang + `个 |
室外消火栓位置分布 |
`+ this.datas.ewai.shiwaiweizhi + ` |
||||||||||||||||
消防泵 |
消火栓泵 |
数量:`+ this.datas.other.listdata[1].data[0].value + ` |
扬程:`+ this.datas.other.listdata[1].data[1].value + `m |
流量:`+ this.datas.other.listdata[1].data[2].value + `L/S |
水泵接合器 |
数量:`+ this.datas.other.listdata[1].data[3].value + ` |
`+ this.datas.other.listdata[1].data[4].value + ` |
||||||||||||
喷淋泵 |
数量:`+ this.datas.other.listdata[2].data[0].value + ` |
扬程:`+ this.datas.other.listdata[2].data[1].value + `m |
流量:`+ this.datas.other.listdata[2].data[2].value + `L/S |
水泵接合器 |
数量:`+ this.datas.other.listdata[2].data[3].value + ` |
`+ this.datas.other.listdata[2].data[4].value + ` |
|||||||||||||
消防电梯 数量及位置 |
`+ this.datas.other.listdata[3].data[0].value + ',' + this.datas.other.listdata[3].data[1].value + ` |
疏散楼梯 数量及位置 |
`+ this.datas.other.listdata[4].data[0].value + ',' + this.datas.other.listdata[4].data[1].value + ` |
安全出口 数量及位置 |
`+ this.datas.other.listdata[5].data[0].value + ',' + this.datas.other.listdata[5].data[1].value + ` |
||||||||||||||
室内消火栓数量 |
`+ this.datas.ewai.shineishuliang + `个 |
标准层室内消火栓数量及位置 |
`+ this.datas.other.listdata[6].data[0].value + ',' + this.datas.other.listdata[6].data[1].value + ` |
||||||||||||||||
重点 提示 |
`+ this.datas.zhongdiantishi + ` |
||||||||||||||||||
` const htmlString = `