Browse Source

楼栋统计

seimin 1 year ago
parent
commit
63b9d41d68

+ 7 - 0
src/app/services/main.service.ts

@@ -754,6 +754,13 @@ export class MainService {
754 754
     });
755 755
   }
756 756
 
757
+  // 楼栋检查统计
758
+  postReportBuild(type, data): any {
759
+    return this.http.post(host.host + "/report/build/" + type, data, {
760
+      headers: this.headers,
761
+    });
762
+  }
763
+
757 764
   // 获取检验项目列表
758 765
   specimenCount(data): any {
759 766
     return this.http.post(host.host + "/api/specimenDesc/specimenCount", data, {

+ 21 - 0
src/app/views/building-inspection-statistics/building-inspection-statistics-routing.module.ts

@@ -0,0 +1,21 @@
1
+import { NgModule } from '@angular/core';
2
+import { Routes, RouterModule } from '@angular/router';
3
+import { BuildingInspectionStatisticsComponent } from './building-inspection-statistics.component';
4
+
5
+
6
+const routes: Routes = [{
7
+  path: '',
8
+  component: BuildingInspectionStatisticsComponent,
9
+  children: [
10
+    {
11
+      path: 'workerStatisticsDetail/:workerId/:startTime/:endTime/:groupId/:type/:deptId/:countRemark',//id是workid,startTime是开始时间,endTime是结束时间,groupId是组ID,type区别类型
12
+      loadChildren: () => import('../worker-statistics-detail/worker-statistics-detail.module').then(m => m.WorkerStatisticsDetailModule)
13
+    }
14
+  ]
15
+}];
16
+
17
+@NgModule({
18
+  imports: [RouterModule.forChild(routes)],
19
+  exports: [RouterModule]
20
+})
21
+export class BuildingInspectionStatisticsRoutingModule { }

+ 142 - 0
src/app/views/building-inspection-statistics/building-inspection-statistics.component.html

@@ -0,0 +1,142 @@
1
+<div class="list-template">
2
+  <div class="list-template__content">
3
+    <div class="list-template__top" nz-row>
4
+      <div nz-col nzXl='17' class="list-template__searchBox">
5
+        <div class="list-template__searchItem">
6
+          <span class="label">申请时间</span>:
7
+          <nz-range-picker [(ngModel)]="searchDto.dateRange"></nz-range-picker>
8
+        </div>
9
+        <div class="list-template__searchItem">
10
+          <span class="label">楼栋</span>:
11
+          <nz-select class="formItem" [nzDropdownMatchSelectWidth]="false" nzShowSearch
12
+            nzAllowClear nzPlaceHolder="请选择楼栋" [(ngModel)]="searchDto.building">
13
+            <ng-container *ngFor="let option of buildingList">
14
+              <nz-option *ngIf="!isLoading" [nzLabel]="option.buildingName" [nzValue]="option.id"></nz-option>
15
+            </ng-container>
16
+            <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
17
+              <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
18
+            </nz-option>
19
+          </nz-select>
20
+        </div>
21
+        <div class="list-template__searchItem" style="width: 100%;">
22
+          <span class="label">排除科室</span>:
23
+          <nz-select style="min-width: 135px;" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzMode="multiple"
24
+            (nzOnSearch)="changeInp($event)" nzAllowClear nzPlaceHolder="请选择排除科室" [(ngModel)]="searchDto.department">
25
+            <ng-container *ngFor="let option of alldepart">
26
+              <nz-option *ngIf="!isLoading" [nzLabel]="option.dept" [nzValue]="option.id"></nz-option>
27
+            </ng-container>
28
+            <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
29
+              <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
30
+            </nz-option>
31
+          </nz-select>
32
+        </div>
33
+      </div>
34
+      <div nz-col nzXl='7' class="list-template__btns">
35
+        <button nz-button class="btn default ml8" (click)='search()'>搜索</button>
36
+        <button nz-button class="btn default ml8" (click)='export()' [nzLoading]="loading2">导出</button>
37
+        <button nz-button class="btn default ml8" (click)='reset()'>重置</button>
38
+      </div>
39
+    </div>
40
+    <div class="cont">
41
+      <div>
42
+        <span>总计</span>
43
+        <span class="rate"></span>
44
+      </div>
45
+      <div>
46
+        <span>楼栋数</span>
47
+        <span>{{statisticsObj[0]}}</span>
48
+      </div>
49
+      <div>
50
+        <span>总检查数</span>
51
+        <span>{{statisticsObj[1]}}</span>
52
+      </div>
53
+      <div>
54
+        <span>作废取消数</span>
55
+        <span>{{statisticsObj[2]}}</span>
56
+      </div>
57
+      <div>
58
+        <span>临时急诊数</span>
59
+        <span>{{statisticsObj[3]}}</span>
60
+      </div>
61
+      <div>
62
+        <span>未预约数</span>
63
+        <span>{{statisticsObj[4]}}</span>
64
+      </div>
65
+      <div>
66
+        <span>需检查数</span>
67
+        <span>{{statisticsObj[5]}}</span>
68
+      </div>
69
+      <div>
70
+        <span>陪检数</span>
71
+        <span>{{statisticsObj[6]}}</span>
72
+      </div>
73
+      <div>
74
+        <span>检查率</span>
75
+        <span>{{statisticsObj[7]}}</span>
76
+      </div>
77
+      <div>
78
+        <span>工单数</span>
79
+        <span>{{statisticsObj[8]}}</span>
80
+      </div>
81
+      <div>
82
+        <span>转科数</span>
83
+        <span>{{statisticsObj[9]}}</span>
84
+      </div>
85
+    </div>
86
+    <div class="list-template__bottom">
87
+      <nz-table class="list-template__nzTable" [nzData]="listOfData" nzSize="middle" [nzShowPagination]="false"
88
+        [nzLoading]="loading1">
89
+        <thead>
90
+          <tr class="thead">
91
+            <th nzWidth="5%">序号</th>
92
+            <th nzWidth="9%">楼栋名称</th>
93
+            <th nzWidth="9%">总检查数</th>
94
+            <th nzWidth="9%">作废取消数</th>
95
+            <th nzWidth="9%">临时急诊数</th>
96
+            <th nzWidth="9%">未预约数</th>
97
+            <th nzWidth="10%">需检查数</th>
98
+            <th nzWidth="10%">陪检数</th>
99
+            <th nzWidth="10%">检查率</th>
100
+            <th nzWidth="10%">工单数</th>
101
+            <th nzWidth="10%">转科数</th>
102
+          </tr>
103
+        </thead>
104
+        <tbody>
105
+          <tr *ngFor="let data of listOfData;let index=index;">
106
+            <td>{{index+(pageIndex-1) * pageSize + 1}}</td>
107
+            <td>{{ data[0] }}</td>
108
+            <td>{{ data[1] }}</td>
109
+            <td>{{ data[2] }}</td>
110
+            <td>{{ data[3] }}</td>
111
+            <td>{{ data[4] }}</td>
112
+            <td>{{ data[5] }}</td>
113
+            <td>{{ data[6] }}</td>
114
+            <td>{{ data[7] }}</td>
115
+            <td>{{ data[8] }}</td>
116
+            <td>{{ data[9] }}</td>
117
+          </tr>
118
+        </tbody>
119
+      </nz-table>
120
+      <div class="list-template__pagination">
121
+        <nz-pagination [(nzPageIndex)]="pageIndex" [(nzTotal)]="listLength" nzShowSizeChanger [(nzPageSize)]="pageSize"
122
+          (nzPageIndexChange)="getList()" (nzPageSizeChange)="getList()">
123
+        </nz-pagination>
124
+      </div>
125
+    </div>
126
+  </div>
127
+</div>
128
+<!-- 查看详情 -->
129
+<router-outlet></router-outlet>
130
+
131
+<!-- 业务数据查看 -->
132
+<app-businessData-detail-modal
133
+  *ngIf="businessDataModalShow"
134
+  [show]="businessDataModalShow"
135
+  [type]="businessDataModalType"
136
+  [dataInfo]="dataInfo"
137
+  (closeModelHs)="closeModelBlood($event)"
138
+></app-businessData-detail-modal>
139
+
140
+<!-- 操作成功/失败提示框 -->
141
+<app-prompt-modal *ngIf="promptModalShow" [content]="promptContent" [success]="ifSuccess" [show]="promptModalShow"
142
+  [info]="promptInfo"></app-prompt-modal>

+ 174 - 0
src/app/views/building-inspection-statistics/building-inspection-statistics.component.less

@@ -0,0 +1,174 @@
1
+@import "../../../../src/theme.less";
2
+.cont {
3
+  width: 100%;
4
+  border: 1px solid #dde1e5;
5
+  padding: 8px 16px;
6
+  border-radius: 2px;
7
+  margin-bottom: 8px;
8
+
9
+  &>div {
10
+    display: inline-block;
11
+    margin-right: 4px;
12
+
13
+    &:nth-child(1) {
14
+      position: relative;
15
+      padding-left: 10px;
16
+
17
+      &::before {
18
+        content: '';
19
+        position: absolute;
20
+        left: 0;
21
+        width: 4px;
22
+        height: 100%;
23
+        background: @primary-color;
24
+        margin-right: 8px;
25
+      }
26
+    }
27
+
28
+    span {
29
+      margin-right: 8px;
30
+
31
+      &:nth-child(1) {
32
+        font-size: 12px;
33
+        color: #999;
34
+      }
35
+
36
+      &:nth-child(2) {
37
+        color: #333;
38
+        font-weight: 500;
39
+      }
40
+
41
+      &.rate {
42
+        font-size: 18px;
43
+        color: @primary-color;
44
+      }
45
+    }
46
+
47
+
48
+  }
49
+}
50
+.save {
51
+  position: fixed;
52
+  left: 0;
53
+  top: 0;
54
+  width: 100%;
55
+  height: 100%;
56
+  background: rgba(0, 0, 0, 0.4);
57
+  z-index: 99;
58
+
59
+  .modalBody {
60
+    width: 350px;
61
+    background: #fff;
62
+    border-radius: 5px;
63
+    padding: 10px 20px;
64
+    color: #333;
65
+
66
+    .title {
67
+      width: 100%;
68
+      text-align: center;
69
+      font-size: 18px;
70
+      position: relative;
71
+
72
+      i {
73
+        position: absolute;
74
+        right: 0;
75
+        top: 0;
76
+        font-size: 20px;
77
+        color: #666;
78
+        cursor: pointer;
79
+        padding: 0 5px;
80
+      }
81
+    }
82
+
83
+    .content {
84
+      width: 100%;
85
+      height: 117px;
86
+      background: #f9fafb;
87
+      border: 1px solid #e5e9ed;
88
+      border-radius: 5px;
89
+      overflow: hidden;
90
+      margin-top: 12px;
91
+
92
+      div {
93
+        text-align: center;
94
+        margin: 0;
95
+
96
+        &.icon {
97
+          margin-top: 17px;
98
+
99
+          i {
100
+            color: #34b349;
101
+            font-size: 30px !important;
102
+
103
+            &.transport-wenhao {
104
+              color: #f5a523;
105
+            }
106
+
107
+            &.transport-shibai {
108
+              color: #ff3a52;
109
+            }
110
+          }
111
+        }
112
+
113
+        &.defeat {
114
+          color: #333;
115
+          font-size: 18px;
116
+        }
117
+
118
+        &:nth-child(3) {
119
+          font-size: 14px;
120
+          color: #666;
121
+        }
122
+      }
123
+    }
124
+
125
+    button {
126
+      margin-top: 10px;
127
+
128
+      &.btn {
129
+        margin-left: 8px;
130
+      }
131
+    }
132
+  }
133
+
134
+  // 新增
135
+  &.add {
136
+    .modalBody {
137
+      width: 480px;
138
+      height: auto;
139
+
140
+      .content {
141
+        width: 100%;
142
+        height: auto;
143
+        padding: 19px 14px 0 14px;
144
+        max-height: 500px;
145
+        overflow-y: auto;
146
+
147
+        .addForm {
148
+          .ant-form-item {
149
+            margin-bottom: 8px;
150
+
151
+            .ant-form-item-label {
152
+              line-height: 14px;
153
+              text-align: left;
154
+            }
155
+          }
156
+        }
157
+
158
+        .editForm {
159
+          .ant-form-item {
160
+            margin-bottom: 14px;
161
+
162
+            .ant-form-item-label {
163
+              line-height: 0;
164
+            }
165
+          }
166
+        }
167
+      }
168
+
169
+      button:nth-child(1) {
170
+        margin-right: 20px;
171
+      }
172
+    }
173
+  }
174
+}

+ 226 - 0
src/app/views/building-inspection-statistics/building-inspection-statistics.component.ts

@@ -0,0 +1,226 @@
1
+import { Component, OnInit, ViewChild } from "@angular/core";
2
+import { ActivatedRoute, Router } from "@angular/router";
3
+
4
+import { OverlayScrollbarsComponent } from "overlayscrollbars-ngx";
5
+import { ToolService } from "../../services/tool.service";
6
+import { format, startOfDay, endOfDay, startOfWeek, endOfWeek, add } from 'date-fns';
7
+import { BuildingInspectionStatisticsService } from './building-inspection-statistics.service';
8
+import { Subject } from 'rxjs';
9
+import { debounceTime } from 'rxjs/operators';
10
+
11
+@Component({
12
+  selector: "app-building-inspection-statistics",
13
+  templateUrl: "./building-inspection-statistics.component.html",
14
+  styleUrls: ["./building-inspection-statistics.component.less"],
15
+})
16
+export class BuildingInspectionStatisticsComponent implements OnInit {
17
+  @ViewChild("osComponentRef1", {
18
+    read: OverlayScrollbarsComponent,
19
+    static: false,
20
+  })
21
+  osComponentRef1: OverlayScrollbarsComponent;
22
+  constructor(
23
+    private router: Router,
24
+    private route: ActivatedRoute,
25
+    private tool: ToolService,
26
+    private buildingInspectionStatisticsService: BuildingInspectionStatisticsService,
27
+  ) {}
28
+
29
+  listOfData: any[] = []; //表格数据
30
+  searchDto: any = {
31
+    dateRange: [startOfWeek(add(new Date(), { weeks: -1}), { weekStartsOn: 1 }), endOfWeek(add(new Date(), { weeks: -1}), { weekStartsOn: 1 })],
32
+    department: [],
33
+    buildingList: null,
34
+  }
35
+
36
+  hosId: any; //院区(搜索)
37
+  pageIndex: number = 1; //页码
38
+  listLength: number = 10; //总条数
39
+  pageSize: number = 10; //每页条数
40
+
41
+  // 初始化增删改按钮
42
+  coopBtns: any = {};
43
+
44
+  searchTimerSubject = new Subject();
45
+
46
+  ngOnInit() {
47
+    this.searchTimerSubject.pipe(debounceTime(500)).subscribe((v) => {
48
+      let fun = v[0];
49
+      fun.call(this, v[1]);
50
+    });
51
+    this.coopBtns = this.tool.initCoopBtns(this.route);
52
+    this.hosId = this.tool.getCurrentHospital().id;
53
+    this.getList(true);
54
+    this.getDeparts();
55
+    this.getBuildingList();
56
+  }
57
+
58
+  // 边输入边搜索节流阀
59
+  searchTimer(fun, e) {
60
+    this.isLoading = true;
61
+    this.searchTimerSubject.next([fun, e]);
62
+  }
63
+
64
+  // 科室边输边搜节流阀
65
+  isLoading = false;
66
+  changeInp(e) {
67
+    this.searchTimer(this.getDeparts, e);
68
+  }
69
+
70
+  // 获取科室
71
+  alldepart: any = []; //科室
72
+  getDeparts(dept?) {
73
+    let data = {
74
+      department: {
75
+        cascadeHosId: this.hosId,
76
+        dept: dept,
77
+        configRoom: 1,
78
+      },
79
+      idx: 0,
80
+      sum: 20,
81
+    };
82
+    this.isLoading = true;
83
+    this.buildingInspectionStatisticsService
84
+      .getDeparts(data)
85
+      .subscribe((data) => {
86
+        this.alldepart = data.list;
87
+        this.isLoading = false;
88
+      });
89
+  }
90
+
91
+  // 获取楼栋
92
+  buildingList: any = []; //楼栋
93
+  getBuildingList() {
94
+    let data = {
95
+      building: {
96
+        cascadeHosId: this.hosId,
97
+      },
98
+      idx: 0,
99
+      sum: 9999,
100
+    };
101
+    this.isLoading = true;
102
+    this.buildingInspectionStatisticsService
103
+      .getBuildingList(data)
104
+      .subscribe((data) => {
105
+        this.buildingList = data.list;
106
+        this.isLoading = false;
107
+      });
108
+  }
109
+
110
+  // 搜索
111
+  search() {
112
+    this.getList(true);
113
+  }
114
+  // 重置
115
+  reset() {
116
+    this.searchDto = {
117
+      dateRange: [startOfWeek(add(new Date(), { weeks: -1}), { weekStartsOn: 1 }), endOfWeek(add(new Date(), { weeks: -1}), { weekStartsOn: 1 })],
118
+      department: [],
119
+      buildingList: null,
120
+    }
121
+    this.search();
122
+  }
123
+  // 表格数据
124
+  loading1 = false;
125
+  statisticsObj:any = [];
126
+  getList(isResetPageIndex = false) {
127
+    isResetPageIndex && (this.pageIndex = 1);
128
+    let postData:any = {
129
+      idx: this.pageIndex - 1,
130
+      sum: this.pageSize,
131
+      hosId: this.hosId,
132
+      startTime: this.searchDto.dateRange[0] ? format(startOfDay(this.searchDto.dateRange[0]), 'yyyy-MM-dd HH:mm:ss') : undefined,
133
+      endTime: this.searchDto.dateRange[1] ? format(endOfDay(this.searchDto.dateRange[1]), 'yyyy-MM-dd HH:mm:ss') : undefined,
134
+      deptIds: this.searchDto.department.length ? this.searchDto.department.toString() : undefined,
135
+      buildingId: this.searchDto.building|| undefined,
136
+    };
137
+    this.loading1 = true;
138
+    this.buildingInspectionStatisticsService
139
+      .query(postData)
140
+      .subscribe((result) => {
141
+        this.loading1 = false;
142
+        result.data = result.data || [];
143
+        this.listOfData = result.data;
144
+        this.listLength = result.totalNum;
145
+        let summary = result.summary || [];
146
+        this.statisticsObj = summary.length ? summary[0] : [];
147
+      });
148
+  }
149
+
150
+  // 查看业务数据
151
+  businessDataModalShow = false; //业务数据弹窗开关
152
+  businessDataModalType = ''; //业务数据类型
153
+  dataInfo = null; //查看业务数据携带
154
+  viewDetail(data, type) {
155
+    this.dataInfo = data;
156
+    this.businessDataModalType = type;
157
+    this.businessDataModalShow = true;
158
+  }
159
+  // 关闭业务数据弹窗
160
+  closeModelBlood(e) {
161
+    this.businessDataModalShow = JSON.parse(e).show;
162
+  }
163
+
164
+  // 导出
165
+  loading2 = false;
166
+  export() {
167
+    let postData:any = {
168
+      idx: this.pageIndex - 1,
169
+      sum: this.pageSize,
170
+      hosId: this.hosId,
171
+      startTime: this.searchDto.dateRange[0] ? format(startOfDay(this.searchDto.dateRange[0]), 'yyyy-MM-dd HH:mm:ss') : undefined,
172
+      endTime: this.searchDto.dateRange[1] ? format(endOfDay(this.searchDto.dateRange[1]), 'yyyy-MM-dd HH:mm:ss') : undefined,
173
+      deptIds: this.searchDto.department.length ? this.searchDto.department.toString() : undefined,
174
+      buildingId: this.searchDto.building|| undefined,
175
+    };
176
+    this.loading2 = true;
177
+    this.buildingInspectionStatisticsService.exportReport(postData).subscribe(
178
+      (data) => {
179
+        this.loading2 = false;
180
+        this.showPromptModal("导出", true, "");
181
+        var file = new Blob([data], {
182
+          type: "application/vnd.ms-excel",
183
+        });
184
+        //trick to download store a file having its URL
185
+        var fileURL = URL.createObjectURL(file);
186
+        var a = document.createElement("a");
187
+        a.href = fileURL;
188
+        a.target = "_blank";
189
+        a.download = "楼栋检查统计.xls";
190
+        document.body.appendChild(a);
191
+        a.click();
192
+      },
193
+      (err) => {
194
+        this.loading2 = false;
195
+        this.showPromptModal("导出", false, "");
196
+      }
197
+    );
198
+  }
199
+
200
+  // 展示信息提示框(con:提示信息,success:操作是否成功,promptInfo:操作结果提示信息)
201
+  promptContent: string; //操作提示框提示信息
202
+  ifSuccess: boolean; //操作成功/失败
203
+  promptInfo: string; //操作结果提示信息
204
+  promptModalShow: boolean; //操作提示框是否展示
205
+  showPromptModal(con, success, promptInfo?) {
206
+    this.promptModalShow = false;
207
+    this.promptContent = con;
208
+    this.ifSuccess = success;
209
+    this.promptInfo = promptInfo;
210
+    setTimeout(() => {
211
+      this.promptModalShow = true;
212
+    }, 100);
213
+  }
214
+
215
+  personDetail(dataInfo){
216
+    console.log(dataInfo);
217
+    let startDate = dataInfo.searchDto.dateRange[0] ? format(startOfDay(dataInfo.searchDto.dateRange[0]), 'yyyy-MM-dd HH:mm:ss') : 'null';
218
+    let endDate = dataInfo.searchDto.dateRange[1] ? format(endOfDay(dataInfo.searchDto.dateRange[1]), 'yyyy-MM-dd HH:mm:ss') : 'null';
219
+    let deptId = dataInfo.data[10] || 'null';
220
+    let countRemark = dataInfo.countRemark || 'null';
221
+    this.router.navigateByUrl(
222
+      `/main/buildingInspectionStatistics/workerStatisticsDetail/null/${startDate}/${endDate}/null/buildingInspectionStatistics/${deptId}/${countRemark}`
223
+    );
224
+  }
225
+}
226
+

+ 19 - 0
src/app/views/building-inspection-statistics/building-inspection-statistics.module.ts

@@ -0,0 +1,19 @@
1
+import { NgModule } from '@angular/core';
2
+import { CommonModule } from '@angular/common';
3
+
4
+import { BuildingInspectionStatisticsRoutingModule } from './building-inspection-statistics-routing.module';
5
+import { BuildingInspectionStatisticsComponent } from './building-inspection-statistics.component';
6
+import { ShareModule } from 'src/app/share/share.module';
7
+
8
+
9
+@NgModule({
10
+  declarations: [
11
+    BuildingInspectionStatisticsComponent,
12
+  ],
13
+  imports: [
14
+    CommonModule,
15
+    BuildingInspectionStatisticsRoutingModule,
16
+    ShareModule,
17
+  ]
18
+})
19
+export class BuildingInspectionStatisticsModule { }

+ 39 - 0
src/app/views/building-inspection-statistics/building-inspection-statistics.service.ts

@@ -0,0 +1,39 @@
1
+import { Injectable } from '@angular/core';
2
+import { MainService } from 'src/app/services/main.service';
3
+
4
+@Injectable({
5
+  providedIn: 'root'
6
+})
7
+export class BuildingInspectionStatisticsService {
8
+  constructor(
9
+    private mainService: MainService,
10
+  ) { }
11
+
12
+  // 列表-查
13
+  query(postData) {
14
+    return this.mainService.postReportBuild("inspect", postData);
15
+  }
16
+
17
+  // 字典
18
+  getDictionary(type) {
19
+    return this.mainService.getDictionary("list", type);
20
+  }
21
+
22
+  // 科室
23
+  getDeparts(postData) {
24
+    return this.mainService.getFetchDataList("data", "department", postData);
25
+  }
26
+
27
+  // 楼栋
28
+  getBuildingList(postData) {
29
+    return this.mainService.getFetchDataList("simple/data", "building", postData);
30
+  }
31
+
32
+  // 导出
33
+  exportReport(postData) {
34
+    return this.mainService.exportReport("buildInspect", postData);
35
+  }
36
+}
37
+
38
+
39
+

+ 5 - 0
src/app/views/main/main-routing.module.ts

@@ -233,6 +233,11 @@ const routes: Routes = [
233 233
         path: "deptInspectionStatistics",
234 234
         loadChildren: () => import("../dept-inspection-statistics/dept-inspection-statistics.module").then((m) => m.DeptInspectionStatisticsModule),
235 235
       },
236
+      // 统计分析-楼栋检查统计
237
+      {
238
+        path: "buildingInspectionStatistics",
239
+        loadChildren: () => import("../building-inspection-statistics/building-inspection-statistics.module").then((m) => m.BuildingInspectionStatisticsModule),
240
+      },
236 241
       // 轮巡计划列表
237 242
       {
238 243
         path: "roundRobin",