123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- 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();
- }
- }
|