@dssp/supervision 1.0.0-alpha.26 → 1.0.0-alpha.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist-client/graphql/building-inspection.js +6 -0
  2. package/dist-client/graphql/building-inspection.js.map +1 -1
  3. package/dist-client/pages/action-plan/action-plan-importer.d.ts +1 -1
  4. package/dist-client/pages/action-plan/action-plan-list-page.d.ts +1 -1
  5. package/dist-client/pages/building-inspection/building-inspection-detail-camera.d.ts +1 -1
  6. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.d.ts +1 -1
  7. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js +25 -11
  8. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js.map +1 -1
  9. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.d.ts +1 -1
  10. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js +1 -1
  11. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js.map +1 -1
  12. package/dist-client/pages/building-inspection/building-inspection-list.d.ts +11 -2
  13. package/dist-client/pages/building-inspection/building-inspection-list.js +141 -10
  14. package/dist-client/pages/building-inspection/building-inspection-list.js.map +1 -1
  15. package/dist-client/pages/building-inspection/component/daily-worklog-popup.d.ts +22 -0
  16. package/dist-client/pages/building-inspection/component/daily-worklog-popup.js +431 -0
  17. package/dist-client/pages/building-inspection/component/daily-worklog-popup.js.map +1 -0
  18. package/dist-client/pages/building-inspection/component/image-preview-popup.d.ts +1 -1
  19. package/dist-client/pages/building-inspection/component/inspection-document/inspection-request-document.d.ts +1 -1
  20. package/dist-client/pages/building-inspection/component/inspection-document/inspection-request-document.js +17 -21
  21. package/dist-client/pages/building-inspection/component/inspection-document/inspection-request-document.js.map +1 -1
  22. package/dist-client/pages/building-inspection/component/inspection-document/inspection-result-notification.d.ts +4 -1
  23. package/dist-client/pages/building-inspection/component/inspection-document/inspection-result-notification.js +45 -19
  24. package/dist-client/pages/building-inspection/component/inspection-document/inspection-result-notification.js.map +1 -1
  25. package/dist-client/pages/building-inspection/component/inspection-document/photo-album-popup.d.ts +1 -1
  26. package/dist-client/pages/building-inspection/component/inspection-event-provider.d.ts +2 -1
  27. package/dist-client/pages/building-inspection/component/inspection-event-provider.js +39 -17
  28. package/dist-client/pages/building-inspection/component/inspection-event-provider.js.map +1 -1
  29. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.d.ts +2 -2
  30. package/dist-client/pages/building-inspection-grid/component/plan-preview-popup.d.ts +1 -1
  31. package/dist-client/pages/checklist/checklist-view.js +28 -3
  32. package/dist-client/pages/checklist/checklist-view.js.map +1 -1
  33. package/dist-client/pages/checklist/inspection-info-popup.d.ts +1 -1
  34. package/dist-client/pages/checklist/inspection-tab-popup.d.ts +1 -1
  35. package/dist-client/pages/checklist-template/checklist-template-list.d.ts +1 -1
  36. package/dist-client/pages/checklist-template/checklist-type-management.d.ts +1 -1
  37. package/dist-client/pages/issue/issue-importer.d.ts +1 -1
  38. package/dist-client/pages/issue/issue-list-page.d.ts +1 -1
  39. package/dist-client/pages/project-report/project-report-importer.d.ts +1 -1
  40. package/dist-client/pages/project-report/project-report-list-page.d.ts +1 -1
  41. package/dist-client/pages/supervisor/supervisor-importer.d.ts +1 -1
  42. package/dist-client/pages/supervisor/supervisor-list-page.d.ts +1 -1
  43. package/dist-client/tsconfig.tsbuildinfo +1 -1
  44. package/dist-server/service/building-inspection/building-inspection-mutation.js +7 -2
  45. package/dist-server/service/building-inspection/building-inspection-mutation.js.map +1 -1
  46. package/dist-server/service/building-inspection/building-inspection-query.js +7 -1
  47. package/dist-server/service/building-inspection/building-inspection-query.js.map +1 -1
  48. package/dist-server/service/building-inspection/building-inspection-type.d.ts +2 -0
  49. package/dist-server/service/building-inspection/building-inspection-type.js +8 -0
  50. package/dist-server/service/building-inspection/building-inspection-type.js.map +1 -1
  51. package/dist-server/service/building-inspection/building-inspection.d.ts +3 -0
  52. package/dist-server/service/building-inspection/building-inspection.js +10 -0
  53. package/dist-server/service/building-inspection/building-inspection.js.map +1 -1
  54. package/dist-server/service/building-inspection/index.d.ts +1 -1
  55. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.d.ts +6 -0
  56. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js +56 -0
  57. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js.map +1 -0
  58. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.d.ts +14 -0
  59. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.js +135 -0
  60. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.js.map +1 -0
  61. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.d.ts +19 -0
  62. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.js +74 -0
  63. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.js.map +1 -0
  64. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.d.ts +27 -0
  65. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.js +104 -0
  66. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.js.map +1 -0
  67. package/dist-server/service/building-inspection-daily-worklog/index.d.ts +5 -0
  68. package/dist-server/service/building-inspection-daily-worklog/index.js +9 -0
  69. package/dist-server/service/building-inspection-daily-worklog/index.js.map +1 -0
  70. package/dist-server/service/checklist/checklist.d.ts +4 -1
  71. package/dist-server/service/checklist/checklist.js +15 -4
  72. package/dist-server/service/checklist/checklist.js.map +1 -1
  73. package/dist-server/service/index.d.ts +2 -1
  74. package/dist-server/service/index.js +6 -2
  75. package/dist-server/service/index.js.map +1 -1
  76. package/dist-server/tsconfig.tsbuildinfo +1 -1
  77. package/package.json +5 -4
  78. package/dist-client/pages/building-inspection/component/inspection-document/name-list-upload-popup.d.ts +0 -21
  79. package/dist-client/pages/building-inspection/component/inspection-document/name-list-upload-popup.js +0 -327
  80. package/dist-client/pages/building-inspection/component/inspection-document/name-list-upload-popup.js.map +0 -1
  81. package/dist-client/pages/building-inspection/component/photo-album-popup.d.ts +0 -41
  82. package/dist-client/pages/building-inspection/component/photo-album-popup.js +0 -406
  83. package/dist-client/pages/building-inspection/component/photo-album-popup.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import '@material/web/icon/icon.js';
3
3
  import '@operato/data-grist';
4
+ import '@operato/image-marker/ox-image-marker-view.js';
4
5
  import { CommonGristStyles, CommonButtonStyles, ScrollbarStyles } from '@operato/styles';
5
6
  import { PageView, navigate } from '@operato/shell';
6
7
  import { css, html } from 'lit';
@@ -14,11 +15,16 @@ import { openPopup } from '@operato/layout';
14
15
  import './inspection-create-popup';
15
16
  import './component/inspection-document/photo-album-popup';
16
17
  import './component/inspection-document/inspection-request-document';
18
+ import './component/inspection-document/inspection-result-notification';
17
19
  import './component/image-preview-popup';
20
+ import './component/daily-worklog-popup';
18
21
  import '@operato/event-view/ox-event-view.js';
19
22
  import { InspectionEventProvider } from './component/inspection-event-provider';
20
23
  import { getBuildingInspectionForChecklist } from '../../graphql/building-inspection';
21
24
  import { InspectionMode } from './component/inspection-document/inspection-request-document';
25
+ import moment from 'moment-timezone';
26
+ import { DailyWorklogMode } from './component/daily-worklog-popup';
27
+ import { DrawingImageProvider } from '@dssp/drawing/dist-client/drawing-management/drawing-image-provider.js';
22
28
  export var ChecklistTypeMainType;
23
29
  (function (ChecklistTypeMainType) {
24
30
  ChecklistTypeMainType["BASIC"] = "10";
@@ -60,6 +66,13 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
60
66
  this.building = {};
61
67
  this.drawingImage = '';
62
68
  this.buildingInspectionSummary = {};
69
+ this.selectedYearMonth = moment().tz('Asia/Seoul').format('YYYY-MM');
70
+ this.selectedDate = moment().tz('Asia/Seoul').format('YYYY-MM-DD');
71
+ this.dailyWorklog = {};
72
+ // 캘린더 객체 재 생성하여 재 랜더링
73
+ this._refreshCalendar = (e) => {
74
+ this.calendarData = new InspectionEventProvider(this.buildingLevelId, this.project.id);
75
+ };
63
76
  }
64
77
  get context() {
65
78
  return {
@@ -123,8 +136,15 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
123
136
  .mode=${'monthly'}
124
137
  .eventProvider=${this.calendarData}
125
138
  @select-date=${(e) => {
126
- // TODO 선택된 날짜의 검측데이터만 그리드에 보여야함
127
- console.log('select-date', e.detail);
139
+ this.selectedDate = moment(e.detail[0]).format('YYYY-MM-DD');
140
+ this._fetchDailyWorklog(this.selectedDate);
141
+ }}
142
+ @change-month=${(e) => {
143
+ var _a, _b, _c;
144
+ const year = e.detail.year;
145
+ const month = (_c = (_b = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.month) === null || _b === void 0 ? void 0 : _b.toString()) === null || _c === void 0 ? void 0 : _c.padStart(2, '0');
146
+ this.selectedYearMonth = `${year}-${month}`;
147
+ this.grist.fetch();
128
148
  }}
129
149
  >
130
150
  </ox-event-view>
@@ -132,6 +152,15 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
132
152
  </div>
133
153
 
134
154
  <div bottom>
155
+ <div daily-worklog-actions>
156
+ ${this.dailyWorklog.id
157
+ ? html `<md-filled-button green @click=${this._openDailyWorklogPopup}>
158
+ <md-icon slot="icon">edit</md-icon>일일 업무일지 수정
159
+ </md-filled-button>`
160
+ : html `<md-filled-button @click=${this._openDailyWorklogPopup}>
161
+ <md-icon slot="icon">note_add</md-icon>일일 업무일지 작성
162
+ </md-filled-button>`}
163
+ </div>
135
164
  <ox-grist .mode=${'GRID'} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}> </ox-grist>
136
165
  </div>
137
166
  </div>
@@ -186,7 +215,7 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
186
215
  return;
187
216
  this.project = (_a = response.data) === null || _a === void 0 ? void 0 : _a.projectByBuildingLevelId;
188
217
  this.buildingInspectionSummary = (_b = response.data) === null || _b === void 0 ? void 0 : _b.buildingInspectionSummaryOfBuildingLevel;
189
- this.calendarData = new InspectionEventProvider(buildingLevelId);
218
+ this.calendarData = new InspectionEventProvider(buildingLevelId, this.project.id);
190
219
  // 캘린더 최소 높이 속성 수정
191
220
  this.eventView.style.setProperty('--calendar-monthly-date-min-height', '50px');
192
221
  }
@@ -256,7 +285,7 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
256
285
  width: 50,
257
286
  handlers: {
258
287
  click: (columns, data, column, record, rowIndex) => {
259
- console.log('record : ', record);
288
+ this._openDrawingPopup(record);
260
289
  }
261
290
  }
262
291
  },
@@ -330,6 +359,8 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
330
359
  id
331
360
  status
332
361
  requestDate
362
+ drawingMarker
363
+
333
364
  checklist {
334
365
  checklistId: id
335
366
  name
@@ -337,6 +368,8 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
337
368
  constructionDetailType
338
369
  location
339
370
  inspectionParts
371
+ inspectionDrawingType
372
+
340
373
  nameListAttachment {
341
374
  id
342
375
  name
@@ -367,7 +400,9 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
367
400
  variables: {
368
401
  params: {
369
402
  buildingLevelId: this.buildingLevelId,
370
- limit: 0
403
+ limit: 0,
404
+ startDate: moment(this.selectedYearMonth).startOf('month').format('YYYY-MM-DD'),
405
+ endDate: moment(this.selectedYearMonth).endOf('month').format('YYYY-MM-DD')
371
406
  },
372
407
  buildingLevelId: this.buildingLevelId
373
408
  }
@@ -448,12 +483,30 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
448
483
  }
449
484
  async _openInspectionRequestDocument(buildingInspectionId) {
450
485
  const buildingInspection = await getBuildingInspectionForChecklist(buildingInspectionId);
486
+ if (!buildingInspection.checklist.inspectionRequestUpdatedAt) {
487
+ notify({ message: '검측 요청서가 없습니다.', level: 'info' });
488
+ return;
489
+ }
451
490
  openPopup(html `
452
- <inspection-request-document
453
- .checklist=${buildingInspection.checklist}
454
- .buildingInspection=${buildingInspection}
455
- .mode=${InspectionMode.VIEW}
456
- ></inspection-request-document>
491
+ <div style="overflow-y: auto;">
492
+ <inspection-request-document
493
+ .checklist=${buildingInspection.checklist}
494
+ .buildingInspection=${buildingInspection}
495
+ .mode=${InspectionMode.VIEW}
496
+ ></inspection-request-document>
497
+
498
+ ${buildingInspection.checklist.inspectionResultUpdatedAt
499
+ ? html `
500
+ <hr />
501
+
502
+ <inspection-result-notification
503
+ .checklist=${buildingInspection.checklist}
504
+ .buildingInspection=${buildingInspection}
505
+ .mode=${InspectionMode.VIEW}
506
+ ></inspection-result-notification>
507
+ `
508
+ : ''}
509
+ </div>
457
510
  `, { backdrop: true, size: 'large', title: '검측요청결과 통보내용' });
458
511
  }
459
512
  // 실명부 미리보기
@@ -471,6 +524,62 @@ let BuildingInspectionList = class BuildingInspectionList extends ScopedElements
471
524
  ></image-preview-popup>
472
525
  `, { backdrop: true, size: 'large', title: '실명부' });
473
526
  }
527
+ _openDailyWorklogPopup() {
528
+ const date = this.selectedDate;
529
+ openPopup(html `<daily-worklog-popup
530
+ .project=${this.project}
531
+ .date=${date}
532
+ .dailyWorklog=${this.dailyWorklog}
533
+ .mode=${this.dailyWorklog.id ? DailyWorklogMode.EDIT : DailyWorklogMode.CREATE}
534
+ @createdDailyWorklog=${this._refreshCalendar}
535
+ ></daily-worklog-popup>`, {
536
+ backdrop: true,
537
+ size: 'large',
538
+ title: '일일 업무일지 작성'
539
+ });
540
+ }
541
+ async _fetchDailyWorklog(date) {
542
+ var _a;
543
+ const response = await client.query({
544
+ query: gql `
545
+ query ($projectId: String!, $date: String!) {
546
+ buildingInspectionDailyWorklogByProjectIdAndDate(projectId: $projectId, date: $date) {
547
+ id
548
+ date
549
+ documentNo
550
+ worklogs
551
+ memo
552
+ directiveMemo
553
+
554
+ buildingInspections {
555
+ id
556
+ }
557
+ }
558
+ }
559
+ `,
560
+ variables: { projectId: this.project.id, date }
561
+ });
562
+ this.dailyWorklog = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.buildingInspectionDailyWorklogByProjectIdAndDate) || {};
563
+ }
564
+ async _openDrawingPopup(buildingInspection) {
565
+ const drawingImageProvider = new DrawingImageProvider();
566
+ const inspectionDrawingType = buildingInspection.checklist.inspectionDrawingType;
567
+ const drawingShapes = JSON.parse((buildingInspection === null || buildingInspection === void 0 ? void 0 : buildingInspection.drawingMarker) || null) || [];
568
+ const markers = await drawingImageProvider.getMarkers(inspectionDrawingType);
569
+ const imageUrl = String(inspectionDrawingType).normalize('NFC');
570
+ const shapes = [...drawingShapes, ...markers];
571
+ openPopup(html `<ox-image-marker-view
572
+ style="pointer-events: none;"
573
+ id="image-marker"
574
+ .imageUrl=${imageUrl}
575
+ .shapes=${shapes}
576
+ .imageProvider=${drawingImageProvider}
577
+ ></ox-image-marker-view>`, {
578
+ backdrop: true,
579
+ size: 'large',
580
+ title: '검측 도면'
581
+ });
582
+ }
474
583
  };
475
584
  BuildingInspectionList.styles = [
476
585
  ScrollbarStyles,
@@ -496,6 +605,10 @@ BuildingInspectionList.styles = [
496
605
  --md-filled-button-leading-space: 15px;
497
606
  }
498
607
 
608
+ md-filled-button[green] {
609
+ --md-filled-button-container-color: #008000;
610
+ }
611
+
499
612
  md-outlined-button {
500
613
  --md-outlined-button-container-height: 30px;
501
614
  --md-outlined-button-trailing-space: var(--spacing-medium, 8px);
@@ -661,6 +774,12 @@ BuildingInspectionList.styles = [
661
774
  flex-direction: column;
662
775
  overflow: hidden;
663
776
  min-height: 300px;
777
+ gap: 0px !important;
778
+ }
779
+
780
+ div[daily-worklog-actions] {
781
+ display: flex;
782
+ justify-content: flex-end;
664
783
  }
665
784
 
666
785
  ox-grist {
@@ -701,6 +820,18 @@ __decorate([
701
820
  state(),
702
821
  __metadata("design:type", Object)
703
822
  ], BuildingInspectionList.prototype, "calendarData", void 0);
823
+ __decorate([
824
+ state(),
825
+ __metadata("design:type", String)
826
+ ], BuildingInspectionList.prototype, "selectedYearMonth", void 0);
827
+ __decorate([
828
+ state(),
829
+ __metadata("design:type", String)
830
+ ], BuildingInspectionList.prototype, "selectedDate", void 0);
831
+ __decorate([
832
+ state(),
833
+ __metadata("design:type", Object)
834
+ ], BuildingInspectionList.prototype, "dailyWorklog", void 0);
704
835
  __decorate([
705
836
  query('ox-grist'),
706
837
  __metadata("design:type", DataGrist)
@@ -1 +1 @@
1
- {"version":3,"file":"building-inspection-list.js","sourceRoot":"","sources":["../../../client/pages/building-inspection/building-inspection-list.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/data-grist'\n\nimport { CommonGristStyles, CommonButtonStyles, ScrollbarStyles } from '@operato/styles'\nimport { PageView, navigate } from '@operato/shell'\nimport { css, html, TemplateResult } from 'lit'\nimport { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'\nimport { customElement, query, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { DataGrist, FetchOption } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { notify } from '@operato/layout'\nimport gql from 'graphql-tag'\nimport { openPopup } from '@operato/layout'\nimport './inspection-create-popup'\nimport './component/inspection-document/photo-album-popup'\nimport './component/inspection-document/inspection-request-document'\nimport './component/image-preview-popup'\nimport '@operato/event-view/ox-event-view.js'\nimport { InspectionEventProvider } from './component/inspection-event-provider'\nimport { EventProvider } from '@operato/event-view'\nimport { ChecklistMode } from '../checklist/checklist-view'\nimport { getBuildingInspectionForChecklist } from '../../graphql/building-inspection'\nimport { InspectionMode } from './component/inspection-document/inspection-request-document'\n\nexport enum ChecklistTypeMainType {\n BASIC = '10',\n NON_BASIC = '20'\n}\nexport const CHECKLIST_MAIN_TYPE_LIST = {\n [ChecklistTypeMainType.BASIC]: '기본 업무',\n [ChecklistTypeMainType.NON_BASIC]: '기본 외 업무'\n}\n\nexport enum BuildingInspectionStatus {\n WAIT = 'WAIT',\n OVERALL_WAIT = 'OVERALL_WAIT',\n REQUEST = 'REQUEST',\n OVERALL_REQUEST = 'OVERALL_REQUEST',\n PASS = 'PASS',\n FAIL = 'FAIL'\n}\nexport const BUILDING_INSPECTION_STATUS_DISPLAY = {\n [BuildingInspectionStatus.WAIT]: '검측 대기',\n [BuildingInspectionStatus.OVERALL_WAIT]: '검측 대기',\n [BuildingInspectionStatus.REQUEST]: '검측 요청',\n [BuildingInspectionStatus.OVERALL_REQUEST]: '검측 요청',\n [BuildingInspectionStatus.PASS]: '합격',\n [BuildingInspectionStatus.FAIL]: '불합격'\n}\n\n@customElement('building-inspection-list')\nexport class BuildingInspectionList extends ScopedElementsMixin(PageView) {\n static styles = [\n ScrollbarStyles,\n CommonGristStyles,\n css`\n :host {\n display: grid;\n grid-template-rows: 55px auto;\n color: #4e5055;\n\n width: 100%;\n background-color: var(--md-sys-color-background, #f6f6f6);\n overflow-y: auto;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n md-filled-button {\n --md-filled-button-container-color: #0595e5;\n --md-filled-button-container-height: 30px;\n --md-filled-button-trailing-space: 15px;\n --md-filled-button-leading-space: 15px;\n }\n\n md-outlined-button {\n --md-outlined-button-container-height: 30px;\n --md-outlined-button-trailing-space: var(--spacing-medium, 8px);\n --md-outlined-button-leading-space: var(--spacing-medium, 8px);\n --md-sys-color-outline: rgba(51, 51, 51, 0.2);\n }\n\n *[bold] {\n font-weight: bold;\n }\n\n div[header] {\n display: flex;\n margin: 0px var(--spacing-large, 12px);\n margin-bottom: var(--spacing-small, 5px);\n\n h2 {\n display: flex;\n gap: 7px;\n flex: 0.5;\n color: #3f71a0;\n font-size: 18px;\n\n md-icon[back] {\n background: linear-gradient(135deg, #3f71a0 0%, #5a8cc7 100%);\n color: white;\n padding: 8px;\n border-radius: 50%;\n cursor: pointer;\n box-shadow: 0 2px 8px rgba(63, 113, 160, 0.3);\n width: 14px;\n height: 14px;\n --md-icon-size: 20px;\n }\n\n md-icon[back]:hover {\n background: linear-gradient(135deg, #2e5c89 0%, #4a7bb0 100%);\n box-shadow: 0 4px 12px rgba(63, 113, 160, 0.4);\n }\n }\n }\n\n div[body] {\n display: flex;\n flex-direction: column;\n margin: var(--spacing-large, 12px);\n margin-top: 0;\n gap: var(--spacing-medium, 8px);\n min-height: fit-content;\n overflow-x: hidden;\n }\n\n div[body] h3 {\n color: #2e79be;\n font-size: 16px;\n margin: 0px;\n }\n\n div[body] > div {\n display: flex;\n gap: var(--spacing-medium, 8px);\n border-radius: 5px;\n }\n\n div[top] {\n flex: 1;\n\n display: flex;\n background-color: #f7f7f7;\n }\n\n div[drawing] {\n flex: 1;\n border: 1px solid #cccccc80;\n background-color: var(--md-sys-color-on-primary);\n padding: var(--spacing-large, 12px);\n border-radius: 5px;\n\n img {\n width: 100%;\n\n display: block;\n object-fit: contain;\n object-position: center;\n }\n }\n\n div[inspection-container] {\n flex: 1;\n gap: var(--spacing-medium, 8px);\n\n display: flex;\n flex-direction: column;\n\n div[inspection] {\n display: grid;\n grid-template-columns: 90px 1fr 1fr 1fr 1fr;\n background: #ebc8321a;\n border-radius: 5px;\n padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);\n\n & > div {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n span::before {\n display: inline-block;\n position: relative;\n content: '';\n width: 10px;\n height: 10px;\n border-radius: 6px;\n top: -1px;\n margin-right: 2px;\n }\n\n span[status='wait']::before {\n background-color: #4e5055;\n }\n span[status='request']::before {\n background-color: #3395f1;\n }\n span[status='pass']::before {\n background-color: #1bb401;\n }\n span[status='fail']::before {\n background-color: #ff4444;\n }\n span[dot] {\n font-size: 1.3em;\n }\n }\n & > div[name] {\n flex-direction: row;\n text-align: right;\n gap: var(--spacing-small, 4px);\n padding-right: var(--spacing-large, 12px);\n border-right: 2px dotted #ccc;\n max-width: 100%;\n line-height: 1.3;\n\n md-icon {\n width: 40px;\n height: 40px;\n border-radius: 5px;\n color: #fff;\n background: #f16154;\n }\n }\n }\n }\n\n ox-event-view {\n flex: 1;\n }\n\n div[bottom] {\n flex: 1;\n\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 300px;\n }\n\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n `\n ]\n\n private defaultProject = {\n name: '',\n buildingComplex: {\n buildings: []\n }\n }\n\n @state() private gristConfig: any\n @state() buildingLevelId: string = ''\n @state() project: any = { ...this.defaultProject }\n @state() location: string = ''\n @state() building: any = {}\n @state() drawingImage: string = ''\n @state() buildingInspectionSummary: any = {}\n @state() calendarData?: EventProvider\n\n @query('ox-grist') private grist!: DataGrist\n @query('ox-event-view') private eventView!: HTMLElement\n\n get context() {\n return {\n title: '검측 관리',\n actions: [\n {\n title: '검측 등록',\n action: this._openCreateInspection.bind(this),\n ...CommonButtonStyles.submit\n },\n {\n title: '삭제',\n action: this._deleteChecklistType.bind(this),\n ...CommonButtonStyles.delete\n }\n ]\n }\n }\n\n render() {\n return html`\n <div header>\n <h2>\n <md-icon slot=\"icon\" back @click=${() => history.back()}>arrow_back</md-icon>\n ${this.project.name}\n </h2>\n </div>\n\n <div body>\n <div top>\n <div drawing>\n <h3>도면: ${this.location}</h3>\n <img src=${this.drawingImage || '/assets/images/img-drawing-default.png'} />\n </div>\n\n <div inspection-container>\n <div inspection>\n <div name bold>\n <md-icon slot=\"icon\">fact_check</md-icon>\n 검측 현황\n </div>\n\n <div>\n <label>${BUILDING_INSPECTION_STATUS_DISPLAY[BuildingInspectionStatus.WAIT]}</label>\n <span bold status=${BuildingInspectionStatus.WAIT.toLowerCase()}>\n ${this.buildingInspectionSummary[BuildingInspectionStatus.WAIT.toLowerCase()]}\n </span>\n </div>\n <div>\n <label>${BUILDING_INSPECTION_STATUS_DISPLAY[BuildingInspectionStatus.REQUEST]}</label>\n <span bold status=${BuildingInspectionStatus.REQUEST.toLowerCase()}>\n ${this.buildingInspectionSummary[BuildingInspectionStatus.REQUEST.toLowerCase()]}\n </span>\n </div>\n <div>\n <label>${BUILDING_INSPECTION_STATUS_DISPLAY[BuildingInspectionStatus.PASS]}</label>\n <span bold status=${BuildingInspectionStatus.PASS.toLowerCase()}>\n ${this.buildingInspectionSummary[BuildingInspectionStatus.PASS.toLowerCase()]}\n </span>\n </div>\n <div>\n <label>${BUILDING_INSPECTION_STATUS_DISPLAY[BuildingInspectionStatus.FAIL]}</label>\n <span bold status=${BuildingInspectionStatus.FAIL.toLowerCase()}>\n ${this.buildingInspectionSummary[BuildingInspectionStatus.FAIL.toLowerCase()]}\n </span>\n </div>\n </div>\n\n <ox-event-view\n .mode=${'monthly'}\n .eventProvider=${this.calendarData}\n @select-date=${(e: CustomEvent) => {\n // TODO 선택된 날짜의 검측데이터만 그리드에 보여야함\n console.log('select-date', e.detail)\n }}\n >\n </ox-event-view>\n </div>\n </div>\n\n <div bottom>\n <ox-grist .mode=${'GRID'} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}> </ox-grist>\n </div>\n </div>\n `\n }\n\n async pageUpdated(changes: any, lifecycle: PageLifecycle) {\n if (this.active) {\n this.buildingLevelId = lifecycle.resourceId || ''\n\n await this.initProject(this.buildingLevelId)\n this.grist.fetch()\n }\n }\n\n async initProject(buildingLevelId: string = '') {\n const response = await client.query({\n query: gql`\n query ProjectByBuildingLevelId($buildingLevelId: String!) {\n projectByBuildingLevelId(buildingLevelId: $buildingLevelId) {\n id\n name\n projectType\n mainPhoto {\n fullpath\n }\n buildingComplex {\n id\n drawing {\n id\n name\n fullpath\n }\n buildings {\n id\n name\n }\n }\n }\n\n buildingInspectionSummaryOfBuildingLevel(buildingLevelId: $buildingLevelId) {\n wait\n request\n pass\n fail\n }\n }\n `,\n variables: {\n buildingLevelId\n }\n })\n\n if (response.errors) return\n\n this.project = response.data?.projectByBuildingLevelId\n this.buildingInspectionSummary = response.data?.buildingInspectionSummaryOfBuildingLevel\n\n this.calendarData = new InspectionEventProvider(buildingLevelId)\n\n // 캘린더 최소 높이 속성 수정\n this.eventView.style.setProperty('--calendar-monthly-date-min-height', '50px')\n }\n\n async pageInitialized(lifecycle: any) {\n this.gristConfig = {\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'open_in_new',\n header: '상세보기',\n width: 60,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n navigate(`building-inspection-detail-drawing/${record.id}`)\n }\n }\n },\n {\n type: 'string',\n name: 'id',\n hidden: true\n },\n {\n type: 'string',\n name: 'location',\n header: '위치',\n width: 150\n },\n {\n type: 'string',\n name: 'constructionType',\n header: '공종',\n width: 120\n },\n {\n type: 'string',\n name: 'inspectionParts',\n header: '검측 부위',\n record: {\n renderer: value => value?.join(', ') || ''\n },\n width: 200\n },\n {\n type: 'string',\n name: 'requestDate',\n header: '검측 요청일',\n width: 120\n },\n {\n type: 'string',\n name: 'status',\n header: '검측 결과',\n record: {\n renderer: value => BUILDING_INSPECTION_STATUS_DISPLAY[value]\n },\n width: 120\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'fact_check',\n header: '도면',\n width: 50,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n console.log('record : ', record)\n }\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'edit_square',\n header: '요청서/결과통보',\n width: 100,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this._openInspectionRequestDocument(record.id)\n }\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'task',\n header: '체크리스트',\n width: 70,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this._openChecklistPopup(record.id)\n }\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'photo_camera',\n header: '사진대지',\n width: 60,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this._openPhotoAlbumPopup(record.checklistId)\n }\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'engineering',\n header: '실명부',\n width: 50,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this._showNameListPreview(record)\n }\n }\n }\n ],\n rows: {\n selectable: {\n multiple: true\n },\n appendable: false\n },\n sorters: [{ name: 'requestDate' }]\n }\n }\n\n async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }: FetchOption) {\n if (!this.buildingLevelId) return\n\n const response = await client.query({\n query: gql`\n query BuildingInspectionsOfBuildingLevel($params: BuildingInspectionsOfBuildingLevel!, $buildingLevelId: String!) {\n buildingInspectionsOfBuildingLevel(params: $params) {\n items {\n id\n status\n requestDate\n checklist {\n checklistId: id\n name\n constructionType\n constructionDetailType\n location\n inspectionParts\n nameListAttachment {\n id\n name\n fullpath\n }\n }\n }\n total\n }\n\n buildingLevel(id: $buildingLevelId) {\n id\n floor\n floorDisplayName\n building {\n id\n name\n }\n mainDrawing {\n id\n name\n fullpath\n }\n mainDrawingImage\n }\n }\n `,\n variables: {\n params: {\n buildingLevelId: this.buildingLevelId,\n limit: 0\n },\n buildingLevelId: this.buildingLevelId\n }\n })\n\n let items = response.data?.buildingInspectionsOfBuildingLevel?.items || []\n items = items.map(item => ({\n ...item,\n ...item.checklist,\n requestDate: this._formatDate(item.requestDate)\n }))\n const buildingLevel = response.data?.buildingLevel\n\n this.location = `${buildingLevel.building.name} ${buildingLevel.floorDisplayName}층` || ''\n this.drawingImage = buildingLevel?.mainDrawingImage || ''\n this.building = buildingLevel?.building || {}\n\n return {\n total: response.data?.buildingInspectionsOfBuildingLevel?.total || 0,\n records: items\n }\n }\n\n private async _deleteChecklistType() {\n if (confirm('삭제하시겠습니까?')) {\n const ids = this.grist.selected.map(record => record.id)\n if (ids && ids.length > 0) {\n const response = await client.mutate({\n mutation: gql`\n mutation ($ids: [String!]!) {\n deleteBuildingInspections(ids: $ids)\n }\n `,\n variables: {\n ids\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n notify({ message: '삭제되었습니다.' })\n }\n }\n }\n }\n\n private _openCreateInspection() {\n openPopup(\n html`\n <inspection-create-popup\n .projectId=${this.project.id}\n .selectedBuildingId=${this.building.id}\n .selectedBuildingLevelId=${this.buildingLevelId}\n @requestRefresh=\"${() => this.grist.fetch()}\"\n ></inspection-create-popup>\n `,\n { backdrop: true, size: 'large', title: '검측 등록' }\n )\n }\n\n private _formatDate(date: Date | undefined) {\n return date\n ? new Intl.DateTimeFormat('en-CA', {\n timeZone: 'Asia/Seoul',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n }).format(new Date(date))\n : ''\n }\n\n private async _openChecklistPopup(buildingInspectionId: string) {\n const buildingInspection = await getBuildingInspectionForChecklist(buildingInspectionId)\n\n openPopup(\n html`\n <div style=\"overflow-y: auto;\">\n <checklist-view\n .mode=${ChecklistMode.VIEWER}\n .checklist=${buildingInspection?.checklist}\n .buildingComplex=${buildingInspection?.buildingLevel?.building?.buildingComplex || {}}\n .status=${buildingInspection?.status}\n .projectType=${this.project.projectType}\n ></checklist-view>\n </div>\n `,\n { backdrop: true, size: 'large', title: '체크 리스트 미리보기' }\n )\n }\n\n async _openPhotoAlbumPopup(checklistId: string) {\n openPopup(html` <photo-album-popup .checklistId=${checklistId}></photo-album-popup> `, {\n backdrop: true,\n size: 'large',\n title: '사진대지'\n })\n }\n\n async _openInspectionRequestDocument(buildingInspectionId: string) {\n const buildingInspection = await getBuildingInspectionForChecklist(buildingInspectionId)\n\n openPopup(\n html`\n <inspection-request-document\n .checklist=${buildingInspection.checklist}\n .buildingInspection=${buildingInspection}\n .mode=${InspectionMode.VIEW}\n ></inspection-request-document>\n `,\n { backdrop: true, size: 'large', title: '검측요청결과 통보내용' }\n )\n }\n\n // 실명부 미리보기\n private _showNameListPreview(record: any) {\n const nameListAttachment = record.nameListAttachment\n\n if (!nameListAttachment) {\n notify({ message: '실명부 파일이 없습니다.', level: 'info' })\n return\n }\n\n // 이미지 미리보기 팝업\n openPopup(\n html`\n <image-preview-popup\n .images=${[{ fullpath: nameListAttachment.fullpath, name: nameListAttachment.name }]}\n .currentIndex=${0}\n ></image-preview-popup>\n `,\n { backdrop: true, size: 'large', title: '실명부' }\n )\n }\n}\n"]}
1
+ {"version":3,"file":"building-inspection-list.js","sourceRoot":"","sources":["../../../client/pages/building-inspection/building-inspection-list.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/data-grist'\nimport '@operato/image-marker/ox-image-marker-view.js'\n\nimport { CommonGristStyles, CommonButtonStyles, ScrollbarStyles } from '@operato/styles'\nimport { PageView, navigate } from '@operato/shell'\nimport { css, html } from 'lit'\nimport { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'\nimport { customElement, query, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { DataGrist, FetchOption } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { notify } from '@operato/layout'\nimport gql from 'graphql-tag'\nimport { openPopup } from '@operato/layout'\nimport './inspection-create-popup'\nimport './component/inspection-document/photo-album-popup'\nimport './component/inspection-document/inspection-request-document'\nimport './component/inspection-document/inspection-result-notification'\nimport './component/image-preview-popup'\nimport './component/daily-worklog-popup'\nimport '@operato/event-view/ox-event-view.js'\nimport { InspectionEventProvider } from './component/inspection-event-provider'\nimport { EventProvider } from '@operato/event-view'\nimport { ChecklistMode } from '../checklist/checklist-view'\nimport { getBuildingInspectionForChecklist } from '../../graphql/building-inspection'\nimport { InspectionMode } from './component/inspection-document/inspection-request-document'\nimport moment from 'moment-timezone'\nimport { DailyWorklogMode } from './component/daily-worklog-popup'\nimport { DrawingImageProvider } from '@dssp/drawing/dist-client/drawing-management/drawing-image-provider.js'\n\nexport enum ChecklistTypeMainType {\n BASIC = '10',\n NON_BASIC = '20'\n}\nexport const CHECKLIST_MAIN_TYPE_LIST = {\n [ChecklistTypeMainType.BASIC]: '기본 업무',\n [ChecklistTypeMainType.NON_BASIC]: '기본 외 업무'\n}\n\nexport enum BuildingInspectionStatus {\n WAIT = 'WAIT',\n OVERALL_WAIT = 'OVERALL_WAIT',\n REQUEST = 'REQUEST',\n OVERALL_REQUEST = 'OVERALL_REQUEST',\n PASS = 'PASS',\n FAIL = 'FAIL'\n}\nexport const BUILDING_INSPECTION_STATUS_DISPLAY = {\n [BuildingInspectionStatus.WAIT]: '검측 대기',\n [BuildingInspectionStatus.OVERALL_WAIT]: '검측 대기',\n [BuildingInspectionStatus.REQUEST]: '검측 요청',\n [BuildingInspectionStatus.OVERALL_REQUEST]: '검측 요청',\n [BuildingInspectionStatus.PASS]: '합격',\n [BuildingInspectionStatus.FAIL]: '불합격'\n}\n\n@customElement('building-inspection-list')\nexport class BuildingInspectionList extends ScopedElementsMixin(PageView) {\n static styles = [\n ScrollbarStyles,\n CommonGristStyles,\n css`\n :host {\n display: grid;\n grid-template-rows: 55px auto;\n color: #4e5055;\n\n width: 100%;\n background-color: var(--md-sys-color-background, #f6f6f6);\n overflow-y: auto;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n md-filled-button {\n --md-filled-button-container-color: #0595e5;\n --md-filled-button-container-height: 30px;\n --md-filled-button-trailing-space: 15px;\n --md-filled-button-leading-space: 15px;\n }\n\n md-filled-button[green] {\n --md-filled-button-container-color: #008000;\n }\n\n md-outlined-button {\n --md-outlined-button-container-height: 30px;\n --md-outlined-button-trailing-space: var(--spacing-medium, 8px);\n --md-outlined-button-leading-space: var(--spacing-medium, 8px);\n --md-sys-color-outline: rgba(51, 51, 51, 0.2);\n }\n\n *[bold] {\n font-weight: bold;\n }\n\n div[header] {\n display: flex;\n margin: 0px var(--spacing-large, 12px);\n margin-bottom: var(--spacing-small, 5px);\n\n h2 {\n display: flex;\n gap: 7px;\n flex: 0.5;\n color: #3f71a0;\n font-size: 18px;\n\n md-icon[back] {\n background: linear-gradient(135deg, #3f71a0 0%, #5a8cc7 100%);\n color: white;\n padding: 8px;\n border-radius: 50%;\n cursor: pointer;\n box-shadow: 0 2px 8px rgba(63, 113, 160, 0.3);\n width: 14px;\n height: 14px;\n --md-icon-size: 20px;\n }\n\n md-icon[back]:hover {\n background: linear-gradient(135deg, #2e5c89 0%, #4a7bb0 100%);\n box-shadow: 0 4px 12px rgba(63, 113, 160, 0.4);\n }\n }\n }\n\n div[body] {\n display: flex;\n flex-direction: column;\n margin: var(--spacing-large, 12px);\n margin-top: 0;\n gap: var(--spacing-medium, 8px);\n min-height: fit-content;\n overflow-x: hidden;\n }\n\n div[body] h3 {\n color: #2e79be;\n font-size: 16px;\n margin: 0px;\n }\n\n div[body] > div {\n display: flex;\n gap: var(--spacing-medium, 8px);\n border-radius: 5px;\n }\n\n div[top] {\n flex: 1;\n\n display: flex;\n background-color: #f7f7f7;\n }\n\n div[drawing] {\n flex: 1;\n border: 1px solid #cccccc80;\n background-color: var(--md-sys-color-on-primary);\n padding: var(--spacing-large, 12px);\n border-radius: 5px;\n\n img {\n width: 100%;\n\n display: block;\n object-fit: contain;\n object-position: center;\n }\n }\n\n div[inspection-container] {\n flex: 1;\n gap: var(--spacing-medium, 8px);\n\n display: flex;\n flex-direction: column;\n\n div[inspection] {\n display: grid;\n grid-template-columns: 90px 1fr 1fr 1fr 1fr;\n background: #ebc8321a;\n border-radius: 5px;\n padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);\n\n & > div {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n span::before {\n display: inline-block;\n position: relative;\n content: '';\n width: 10px;\n height: 10px;\n border-radius: 6px;\n top: -1px;\n margin-right: 2px;\n }\n\n span[status='wait']::before {\n background-color: #4e5055;\n }\n span[status='request']::before {\n background-color: #3395f1;\n }\n span[status='pass']::before {\n background-color: #1bb401;\n }\n span[status='fail']::before {\n background-color: #ff4444;\n }\n span[dot] {\n font-size: 1.3em;\n }\n }\n & > div[name] {\n flex-direction: row;\n text-align: right;\n gap: var(--spacing-small, 4px);\n padding-right: var(--spacing-large, 12px);\n border-right: 2px dotted #ccc;\n max-width: 100%;\n line-height: 1.3;\n\n md-icon {\n width: 40px;\n height: 40px;\n border-radius: 5px;\n color: #fff;\n background: #f16154;\n }\n }\n }\n }\n\n ox-event-view {\n flex: 1;\n }\n\n div[bottom] {\n flex: 1;\n\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 300px;\n gap: 0px !important;\n }\n\n div[daily-worklog-actions] {\n display: flex;\n justify-content: flex-end;\n }\n\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n `\n ]\n\n private defaultProject = {\n name: '',\n buildingComplex: {\n buildings: []\n }\n }\n\n @state() private gristConfig: any\n @state() buildingLevelId: string = ''\n @state() project: any = { ...this.defaultProject }\n @state() location: string = ''\n @state() building: any = {}\n @state() drawingImage: string = ''\n @state() buildingInspectionSummary: any = {}\n @state() calendarData?: EventProvider\n @state() selectedYearMonth: string = moment().tz('Asia/Seoul').format('YYYY-MM')\n @state() selectedDate?: string = moment().tz('Asia/Seoul').format('YYYY-MM-DD')\n @state() dailyWorklog: any = {}\n\n @query('ox-grist') private grist!: DataGrist\n @query('ox-event-view') private eventView!: HTMLElement\n\n get context() {\n return {\n title: '검측 관리',\n actions: [\n {\n title: '검측 등록',\n action: this._openCreateInspection.bind(this),\n ...CommonButtonStyles.submit\n },\n {\n title: '삭제',\n action: this._deleteChecklistType.bind(this),\n ...CommonButtonStyles.delete\n }\n ]\n }\n }\n\n render() {\n return html`\n <div header>\n <h2>\n <md-icon slot=\"icon\" back @click=${() => history.back()}>arrow_back</md-icon>\n ${this.project.name}\n </h2>\n </div>\n\n <div body>\n <div top>\n <div drawing>\n <h3>도면: ${this.location}</h3>\n <img src=${this.drawingImage || '/assets/images/img-drawing-default.png'} />\n </div>\n\n <div inspection-container>\n <div inspection>\n <div name bold>\n <md-icon slot=\"icon\">fact_check</md-icon>\n 검측 현황\n </div>\n\n <div>\n <label>${BUILDING_INSPECTION_STATUS_DISPLAY[BuildingInspectionStatus.WAIT]}</label>\n <span bold status=${BuildingInspectionStatus.WAIT.toLowerCase()}>\n ${this.buildingInspectionSummary[BuildingInspectionStatus.WAIT.toLowerCase()]}\n </span>\n </div>\n <div>\n <label>${BUILDING_INSPECTION_STATUS_DISPLAY[BuildingInspectionStatus.REQUEST]}</label>\n <span bold status=${BuildingInspectionStatus.REQUEST.toLowerCase()}>\n ${this.buildingInspectionSummary[BuildingInspectionStatus.REQUEST.toLowerCase()]}\n </span>\n </div>\n <div>\n <label>${BUILDING_INSPECTION_STATUS_DISPLAY[BuildingInspectionStatus.PASS]}</label>\n <span bold status=${BuildingInspectionStatus.PASS.toLowerCase()}>\n ${this.buildingInspectionSummary[BuildingInspectionStatus.PASS.toLowerCase()]}\n </span>\n </div>\n <div>\n <label>${BUILDING_INSPECTION_STATUS_DISPLAY[BuildingInspectionStatus.FAIL]}</label>\n <span bold status=${BuildingInspectionStatus.FAIL.toLowerCase()}>\n ${this.buildingInspectionSummary[BuildingInspectionStatus.FAIL.toLowerCase()]}\n </span>\n </div>\n </div>\n\n <ox-event-view\n .mode=${'monthly'}\n .eventProvider=${this.calendarData}\n @select-date=${(e: CustomEvent) => {\n this.selectedDate = moment(e.detail[0]).format('YYYY-MM-DD')\n this._fetchDailyWorklog(this.selectedDate)\n }}\n @change-month=${(e: CustomEvent) => {\n const year = e.detail.year\n const month = e.detail?.month?.toString()?.padStart(2, '0')\n this.selectedYearMonth = `${year}-${month}`\n this.grist.fetch()\n }}\n >\n </ox-event-view>\n </div>\n </div>\n\n <div bottom>\n <div daily-worklog-actions>\n ${this.dailyWorklog.id\n ? html`<md-filled-button green @click=${this._openDailyWorklogPopup}>\n <md-icon slot=\"icon\">edit</md-icon>일일 업무일지 수정\n </md-filled-button>`\n : html`<md-filled-button @click=${this._openDailyWorklogPopup}>\n <md-icon slot=\"icon\">note_add</md-icon>일일 업무일지 작성\n </md-filled-button>`}\n </div>\n <ox-grist .mode=${'GRID'} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}> </ox-grist>\n </div>\n </div>\n `\n }\n\n async pageUpdated(changes: any, lifecycle: PageLifecycle) {\n if (this.active) {\n this.buildingLevelId = lifecycle.resourceId || ''\n\n await this.initProject(this.buildingLevelId)\n this.grist.fetch()\n }\n }\n\n async initProject(buildingLevelId: string = '') {\n const response = await client.query({\n query: gql`\n query ProjectByBuildingLevelId($buildingLevelId: String!) {\n projectByBuildingLevelId(buildingLevelId: $buildingLevelId) {\n id\n name\n projectType\n mainPhoto {\n fullpath\n }\n buildingComplex {\n id\n drawing {\n id\n name\n fullpath\n }\n buildings {\n id\n name\n }\n }\n }\n\n buildingInspectionSummaryOfBuildingLevel(buildingLevelId: $buildingLevelId) {\n wait\n request\n pass\n fail\n }\n }\n `,\n variables: {\n buildingLevelId\n }\n })\n\n if (response.errors) return\n\n this.project = response.data?.projectByBuildingLevelId\n this.buildingInspectionSummary = response.data?.buildingInspectionSummaryOfBuildingLevel\n\n this.calendarData = new InspectionEventProvider(buildingLevelId, this.project.id)\n\n // 캘린더 최소 높이 속성 수정\n this.eventView.style.setProperty('--calendar-monthly-date-min-height', '50px')\n }\n\n async pageInitialized(lifecycle: any) {\n this.gristConfig = {\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'open_in_new',\n header: '상세보기',\n width: 60,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n navigate(`building-inspection-detail-drawing/${record.id}`)\n }\n }\n },\n {\n type: 'string',\n name: 'id',\n hidden: true\n },\n {\n type: 'string',\n name: 'location',\n header: '위치',\n width: 150\n },\n {\n type: 'string',\n name: 'constructionType',\n header: '공종',\n width: 120\n },\n {\n type: 'string',\n name: 'inspectionParts',\n header: '검측 부위',\n record: {\n renderer: value => value?.join(', ') || ''\n },\n width: 200\n },\n {\n type: 'string',\n name: 'requestDate',\n header: '검측 요청일',\n width: 120\n },\n {\n type: 'string',\n name: 'status',\n header: '검측 결과',\n record: {\n renderer: value => BUILDING_INSPECTION_STATUS_DISPLAY[value]\n },\n width: 120\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'fact_check',\n header: '도면',\n width: 50,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this._openDrawingPopup(record)\n }\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'edit_square',\n header: '요청서/결과통보',\n width: 100,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this._openInspectionRequestDocument(record.id)\n }\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'task',\n header: '체크리스트',\n width: 70,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this._openChecklistPopup(record.id)\n }\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'photo_camera',\n header: '사진대지',\n width: 60,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this._openPhotoAlbumPopup(record.checklistId)\n }\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'engineering',\n header: '실명부',\n width: 50,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this._showNameListPreview(record)\n }\n }\n }\n ],\n rows: {\n selectable: {\n multiple: true\n },\n appendable: false\n },\n sorters: [{ name: 'requestDate' }]\n }\n }\n\n async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }: FetchOption) {\n if (!this.buildingLevelId) return\n\n const response = await client.query({\n query: gql`\n query BuildingInspectionsOfBuildingLevel($params: BuildingInspectionsOfBuildingLevel!, $buildingLevelId: String!) {\n buildingInspectionsOfBuildingLevel(params: $params) {\n items {\n id\n status\n requestDate\n drawingMarker\n\n checklist {\n checklistId: id\n name\n constructionType\n constructionDetailType\n location\n inspectionParts\n inspectionDrawingType\n\n nameListAttachment {\n id\n name\n fullpath\n }\n }\n }\n total\n }\n\n buildingLevel(id: $buildingLevelId) {\n id\n floor\n floorDisplayName\n building {\n id\n name\n }\n mainDrawing {\n id\n name\n fullpath\n }\n mainDrawingImage\n }\n }\n `,\n variables: {\n params: {\n buildingLevelId: this.buildingLevelId,\n limit: 0,\n startDate: moment(this.selectedYearMonth).startOf('month').format('YYYY-MM-DD'),\n endDate: moment(this.selectedYearMonth).endOf('month').format('YYYY-MM-DD')\n },\n buildingLevelId: this.buildingLevelId\n }\n })\n\n let items = response.data?.buildingInspectionsOfBuildingLevel?.items || []\n items = items.map(item => ({\n ...item,\n ...item.checklist,\n requestDate: this._formatDate(item.requestDate)\n }))\n const buildingLevel = response.data?.buildingLevel\n\n this.location = `${buildingLevel.building.name} ${buildingLevel.floorDisplayName}층` || ''\n this.drawingImage = buildingLevel?.mainDrawingImage || ''\n this.building = buildingLevel?.building || {}\n\n return {\n total: response.data?.buildingInspectionsOfBuildingLevel?.total || 0,\n records: items\n }\n }\n\n private async _deleteChecklistType() {\n if (confirm('삭제하시겠습니까?')) {\n const ids = this.grist.selected.map(record => record.id)\n if (ids && ids.length > 0) {\n const response = await client.mutate({\n mutation: gql`\n mutation ($ids: [String!]!) {\n deleteBuildingInspections(ids: $ids)\n }\n `,\n variables: {\n ids\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n notify({ message: '삭제되었습니다.' })\n }\n }\n }\n }\n\n private _openCreateInspection() {\n openPopup(\n html`\n <inspection-create-popup\n .projectId=${this.project.id}\n .selectedBuildingId=${this.building.id}\n .selectedBuildingLevelId=${this.buildingLevelId}\n @requestRefresh=\"${() => this.grist.fetch()}\"\n ></inspection-create-popup>\n `,\n { backdrop: true, size: 'large', title: '검측 등록' }\n )\n }\n\n private _formatDate(date: Date | undefined) {\n return date\n ? new Intl.DateTimeFormat('en-CA', {\n timeZone: 'Asia/Seoul',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n }).format(new Date(date))\n : ''\n }\n\n private async _openChecklistPopup(buildingInspectionId: string) {\n const buildingInspection = await getBuildingInspectionForChecklist(buildingInspectionId)\n\n openPopup(\n html`\n <div style=\"overflow-y: auto;\">\n <checklist-view\n .mode=${ChecklistMode.VIEWER}\n .checklist=${buildingInspection?.checklist}\n .buildingComplex=${buildingInspection?.buildingLevel?.building?.buildingComplex || {}}\n .status=${buildingInspection?.status}\n .projectType=${this.project.projectType}\n ></checklist-view>\n </div>\n `,\n { backdrop: true, size: 'large', title: '체크 리스트 미리보기' }\n )\n }\n\n async _openPhotoAlbumPopup(checklistId: string) {\n openPopup(html` <photo-album-popup .checklistId=${checklistId}></photo-album-popup> `, {\n backdrop: true,\n size: 'large',\n title: '사진대지'\n })\n }\n\n async _openInspectionRequestDocument(buildingInspectionId: string) {\n const buildingInspection = await getBuildingInspectionForChecklist(buildingInspectionId)\n\n if (!buildingInspection.checklist.inspectionRequestUpdatedAt) {\n notify({ message: '검측 요청서가 없습니다.', level: 'info' })\n return\n }\n\n openPopup(\n html`\n <div style=\"overflow-y: auto;\">\n <inspection-request-document\n .checklist=${buildingInspection.checklist}\n .buildingInspection=${buildingInspection}\n .mode=${InspectionMode.VIEW}\n ></inspection-request-document>\n\n ${buildingInspection.checklist.inspectionResultUpdatedAt\n ? html`\n <hr />\n\n <inspection-result-notification\n .checklist=${buildingInspection.checklist}\n .buildingInspection=${buildingInspection}\n .mode=${InspectionMode.VIEW}\n ></inspection-result-notification>\n `\n : ''}\n </div>\n `,\n { backdrop: true, size: 'large', title: '검측요청결과 통보내용' }\n )\n }\n\n // 실명부 미리보기\n private _showNameListPreview(record: any) {\n const nameListAttachment = record.nameListAttachment\n\n if (!nameListAttachment) {\n notify({ message: '실명부 파일이 없습니다.', level: 'info' })\n return\n }\n\n // 이미지 미리보기 팝업\n openPopup(\n html`\n <image-preview-popup\n .images=${[{ fullpath: nameListAttachment.fullpath, name: nameListAttachment.name }]}\n .currentIndex=${0}\n ></image-preview-popup>\n `,\n { backdrop: true, size: 'large', title: '실명부' }\n )\n }\n\n private _openDailyWorklogPopup() {\n const date = this.selectedDate\n\n openPopup(\n html`<daily-worklog-popup\n .project=${this.project}\n .date=${date}\n .dailyWorklog=${this.dailyWorklog}\n .mode=${this.dailyWorklog.id ? DailyWorklogMode.EDIT : DailyWorklogMode.CREATE}\n @createdDailyWorklog=${this._refreshCalendar}\n ></daily-worklog-popup>`,\n {\n backdrop: true,\n size: 'large',\n title: '일일 업무일지 작성'\n }\n )\n }\n\n // 캘린더 객체 재 생성하여 재 랜더링\n private _refreshCalendar = (e: CustomEvent<{ date?: string }>) => {\n this.calendarData = new InspectionEventProvider(this.buildingLevelId, this.project.id)\n }\n\n private async _fetchDailyWorklog(date: string) {\n const response = await client.query({\n query: gql`\n query ($projectId: String!, $date: String!) {\n buildingInspectionDailyWorklogByProjectIdAndDate(projectId: $projectId, date: $date) {\n id\n date\n documentNo\n worklogs\n memo\n directiveMemo\n\n buildingInspections {\n id\n }\n }\n }\n `,\n variables: { projectId: this.project.id, date }\n })\n\n this.dailyWorklog = response.data?.buildingInspectionDailyWorklogByProjectIdAndDate || {}\n }\n\n private async _openDrawingPopup(buildingInspection: any) {\n const drawingImageProvider: DrawingImageProvider = new DrawingImageProvider()\n\n const inspectionDrawingType = buildingInspection.checklist.inspectionDrawingType\n\n const drawingShapes = JSON.parse(buildingInspection?.drawingMarker || null) || []\n const markers = await drawingImageProvider.getMarkers(inspectionDrawingType)\n\n const imageUrl = String(inspectionDrawingType).normalize('NFC')\n const shapes = [...drawingShapes, ...markers]\n\n openPopup(\n html`<ox-image-marker-view\n style=\"pointer-events: none;\"\n id=\"image-marker\"\n .imageUrl=${imageUrl}\n .shapes=${shapes}\n .imageProvider=${drawingImageProvider}\n ></ox-image-marker-view>`,\n {\n backdrop: true,\n size: 'large',\n title: '검측 도면'\n }\n )\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import '@material/web/button/elevated-button.js';
2
+ import '@material/web/icon/icon.js';
3
+ import { LitElement } from 'lit';
4
+ export declare enum DailyWorklogMode {
5
+ EDIT = "edit",
6
+ CREATE = "create"
7
+ }
8
+ export declare class DailyWorklogPopup extends LitElement {
9
+ static styles: import("lit").CSSResult[];
10
+ date?: string;
11
+ project?: any;
12
+ dailyWorklog: any;
13
+ mode?: DailyWorklogMode;
14
+ render(): import("lit").TemplateResult<1>;
15
+ connectedCallback(): void;
16
+ private _formatSelectedDate;
17
+ private _updateWorklogs;
18
+ private _addRow;
19
+ private _remove;
20
+ private _create;
21
+ private _update;
22
+ }