import { TabService } from './../../services/tab.service'; import { NzMessageService } from 'ng-zorro-antd/message'; import { format, addMonths, startOfMonth, endOfMonth, startOfDay, endOfDay } from 'date-fns'; import { Component, OnInit, HostListener, AfterViewInit } from "@angular/core"; import { MainService } from 'src/app/services/main.service'; import { ActivatedRoute } from '@angular/router'; @Component({ selector: "app-department-evaluate-statistics", templateUrl: "./department-evaluate-statistics.component.html", styleUrls: ["./department-evaluate-statistics.component.less"], }) export class DepartmentEvaluateStatisticsComponent implements OnInit, AfterViewInit { constructor( private mainService: MainService, private message: NzMessageService, private route: ActivatedRoute, private tabService: TabService, ) {} listOfData: any[] = []; //表格数据 listOfDataEnd: any[] = []; //表格合计 pageIndex: number = 1; //表格当前页码 pageSize: number = 30; //表格每页展示条数 listLength: number = 0; //表格总数据量 deptTypeId;//科室类型id ngOnInit() { this.initSessionData(); this.getQueryParams(); this.search(); } ngAfterViewInit(){ this.onResize(); } tableHeight:number = 0; @HostListener('window:resize') onResize(): void { setTimeout(() => { this.tableHeight = window.innerHeight - document.querySelector('.searchDataWrap').clientHeight - 64 - 36 - 48 - 8 - document.querySelector('.ant-table-header').clientHeight - 55 - this.getMoreFilter - 2; }, 0) } getQueryParams(){ let queryParams = this.tabService.getQueryParams(); this.tabService.clearQueryParams(); if(queryParams.dateRange){ this.dateRange = queryParams.dateRange; } } get getMoreFilter(){ let flag = this.fieldConfig.fields.groupDTO || this.fieldConfig.fields.userDTO || this.fieldConfig.fields.category1DTO || this.fieldConfig.fields.category2DTO || this.fieldConfig.fields.category3DTO || this.fieldConfig.fields.buildingDTO || this.fieldConfig.fields.floorDTO; return flag ? 21 : 0; } // 初始化缓存数据 queryType:any; hosId:any; dutyId:any; parentDutyId:any; initSessionData(){ let maintenanceStatistics = JSON.parse(sessionStorage.getItem('maintenanceStatistics')); let queryType:any = maintenanceStatistics.queryType; let hosId:any = maintenanceStatistics.hospitalId; let dutyId:any = maintenanceStatistics.dutyId; queryType = queryType ? +queryType : undefined; hosId = hosId ? +hosId : undefined; dutyId = dutyId ? +dutyId : undefined; this.queryType = queryType; if(queryType == 1){ this.hosId = undefined; this.dutyId = undefined; this.parentDutyId = undefined; }else if(queryType == 2){ this.hosId = hosId; this.dutyId = undefined; this.parentDutyId = undefined; }else if(queryType == 3){ this.hosId = undefined; this.dutyId = dutyId; this.parentDutyId = undefined; }else if(queryType == 4){ this.hosId = undefined; this.dutyId = undefined; this.parentDutyId = dutyId; } } get getHosId(){ return this.parentDutyId || this.dutyId || this.hosId; } // 表格数据 loading1 = false; getList(num?: number, field?: string, sort?: string) { if (num !== undefined) { this.pageIndex = num; } let postData:any = { idx: this.pageIndex - 1, sum: this.pageSize, startDate: this.dateRange[0] || undefined, endDate: this.dateRange[1] || undefined, hosId: this.hosId || undefined, dutyId: this.dutyId || undefined, parentDutyId: this.parentDutyId || undefined, deptTypeId: this.deptTypeId || undefined, groupId: this.fieldConfig.fields.groupId || undefined, userId: this.fieldConfig.fields.groupId ? (this.fieldConfig.fields.userId || undefined) : undefined, categoryId: this.fieldConfig.fields.categoryId || undefined, buildingId: this.fieldConfig.fields.buildingId || undefined, placeId: this.fieldConfig.fields.floorId || undefined, }; if (field && sort) { postData.sort = `${field} ${sort === "ascend" ? `asc` : `desc`}` } this.loading1 = true; this.mainService .postCustom("itsm/report", "deptEvaluate", postData) .subscribe((result) => { this.loading1 = false; this.listOfData = result.dataList.filter((v, i) => { return i != result.dataList.length - 1 }); this.listOfDataEnd = result.dataList.filter((v, i) => { return i == result.dataList.length - 1 }); this.listLength = result.totalCount; }); } // 列表排序 sortCurrent:any = {}; sortCurrentKey: string = ""; sortCurrentValue: string | null = ""; sort(e) { const { key, value } = e; this.sortCurrentKey = key; this.sortCurrentValue = value; this.getList(this.pageIndex, this.sortCurrentKey, this.sortCurrentValue); } // 搜索 search() { this.getList(1, this.sortCurrentKey, this.sortCurrentValue); } // 日期选择 dateRange: any = [format(startOfMonth(addMonths(new Date(), -1)), 'yyyy-MM-dd HH:mm:ss'), format(endOfMonth(addMonths(new Date(), -1)), 'yyyy-MM-dd HH:mm:ss')]; changeDate(result?): void { result[0] = format(startOfDay(result[0]), 'yyyy-MM-dd HH:mm:ss'); result[1] = format(endOfDay(result[1]), 'yyyy-MM-dd HH:mm:ss'); this.dateRange = result; } onCalendarChangeDate(dateArr){ console.log(dateArr) if(dateArr.length == 2){ this.dateRange = [format(startOfDay(dateArr[0]), 'yyyy-MM-dd HH:mm:ss'), format(endOfDay(dateArr[1]), 'yyyy-MM-dd HH:mm:ss')]; } } // 导出 excelExportLoading:any = false; excelExport(){ this.excelExportLoading = this.message.loading("导出中..", { nzDuration: 0, }).messageId; let postData:any = { startDate: this.dateRange[0] || undefined, endDate: this.dateRange[1] || undefined, hosId: this.hosId || undefined, dutyId: this.dutyId || undefined, parentDutyId: this.parentDutyId || undefined, deptTypeId: this.deptTypeId || undefined, groupId: this.fieldConfig.fields.groupId || undefined, userId: this.fieldConfig.fields.groupId ? (this.fieldConfig.fields.userId || undefined) : undefined, categoryId: this.fieldConfig.fields.categoryId || undefined, buildingId: this.fieldConfig.fields.buildingId || undefined, placeId: this.fieldConfig.fields.floorId || undefined, }; if (this.sortCurrentKey && this.sortCurrentValue) { postData.sort = `${this.sortCurrentKey} ${this.sortCurrentValue === "ascend" ? `asc` : `desc`}` } this.mainService .postExportCustom("itsm/export", "deptEvaluate", postData) .subscribe((data) => { this.message.remove(this.excelExportLoading); this.excelExportLoading = false; this.message.success('导出成功'); var file = new Blob([data], { type: "application/vnd.ms-excel", }); //trick to download store a file having its URL var fileURL = URL.createObjectURL(file); var a = document.createElement("a"); a.href = fileURL; a.target = "_blank"; a.download = `${this.route.parent.routeConfig.data.title}.xls`; document.body.appendChild(a); a.click(); },(err) => { this.message.remove(this.excelExportLoading); this.excelExportLoading = false; this.message.error('导出失败'); }); } // 重置 reset(){ this.sortCurrentKey = ""; this.sortCurrentValue = ""; this.sortCurrent = {}; this.dateRange = [format(startOfMonth(addMonths(new Date(), -1)), 'yyyy-MM-dd HH:mm:ss'), format(endOfMonth(addMonths(new Date(), -1)), 'yyyy-MM-dd HH:mm:ss')] this.deptTypeId = undefined; this.fieldConfig.fields = {groupId: undefined, userId: undefined, categoryId: undefined, buildingId: undefined, floorId: undefined}; this.search(); } // 防抖 isLoading = false; openChangeDeptType(flag){ flag && this.getDeptTypeList(); } // 获取科室类型列表 deptTypeList:any[] = []; getDeptTypeList(keyword?) { this.isLoading = true; this.mainService .getDictionary("list", "dept_type") .subscribe((data) => { this.isLoading = false; this.deptTypeList = data; }); } // 详细搜索 fieldConfig:any = { fields: {groupId: undefined, userId: undefined, categoryId: undefined, buildingId: undefined, floorId: undefined}, config: {groupAndUser: true, category123: true, buildingAndFloor: true}, } showSearchMore:boolean = false; showMore(){ this.showSearchMore = true; } cancelEvent(){ this.showSearchMore = false; } submitEvent(fields){ this.showSearchMore = false; this.fieldConfig.fields = fields; console.log('this.fieldConfig.fields:', this.fieldConfig.fields) this.search(); this.onResize(); } }