@dssp/supervision 1.0.0-alpha.9 → 1.0.0-y.0

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 (202) hide show
  1. package/dist-client/graphql/building-inspection.d.ts +1 -0
  2. package/dist-client/graphql/building-inspection.js +100 -0
  3. package/dist-client/graphql/building-inspection.js.map +1 -0
  4. package/dist-client/pages/building-inspection/building-inspection-detail-ai-defect.d.ts +22 -0
  5. package/dist-client/pages/building-inspection/building-inspection-detail-ai-defect.js +169 -0
  6. package/dist-client/pages/building-inspection/building-inspection-detail-ai-defect.js.map +1 -0
  7. package/dist-client/pages/building-inspection/building-inspection-detail-ai-measurement.d.ts +57 -0
  8. package/dist-client/pages/building-inspection/building-inspection-detail-ai-measurement.js +825 -0
  9. package/dist-client/pages/building-inspection/building-inspection-detail-ai-measurement.js.map +1 -0
  10. package/dist-client/pages/building-inspection/building-inspection-detail-camera.d.ts +8 -6
  11. package/dist-client/pages/building-inspection/building-inspection-detail-camera.js +115 -65
  12. package/dist-client/pages/building-inspection/building-inspection-detail-camera.js.map +1 -1
  13. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.d.ts +9 -0
  14. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js +130 -72
  15. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js.map +1 -1
  16. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.d.ts +1 -0
  17. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js +77 -14
  18. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js.map +1 -1
  19. package/dist-client/pages/building-inspection/building-inspection-list.d.ts +18 -2
  20. package/dist-client/pages/building-inspection/building-inspection-list.js +358 -27
  21. package/dist-client/pages/building-inspection/building-inspection-list.js.map +1 -1
  22. package/dist-client/pages/building-inspection/component/building-inspection-detail-header.d.ts +3 -0
  23. package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js +104 -17
  24. package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js.map +1 -1
  25. package/dist-client/pages/building-inspection/component/daily-worklog-popup.d.ts +27 -0
  26. package/dist-client/pages/building-inspection/component/daily-worklog-popup.js +542 -0
  27. package/dist-client/pages/building-inspection/component/daily-worklog-popup.js.map +1 -0
  28. package/dist-client/pages/building-inspection/component/image-preview-popup.d.ts +15 -0
  29. package/dist-client/pages/building-inspection/component/image-preview-popup.js +351 -0
  30. package/dist-client/pages/building-inspection/component/image-preview-popup.js.map +1 -0
  31. package/dist-client/pages/building-inspection/component/inspection-document/inspection-request-document.d.ts +20 -0
  32. package/dist-client/pages/building-inspection/component/inspection-document/inspection-request-document.js +432 -0
  33. package/dist-client/pages/building-inspection/component/inspection-document/inspection-request-document.js.map +1 -0
  34. package/dist-client/pages/building-inspection/component/inspection-document/inspection-result-notification.d.ts +30 -0
  35. package/dist-client/pages/building-inspection/component/inspection-document/inspection-result-notification.js +479 -0
  36. package/dist-client/pages/building-inspection/component/inspection-document/inspection-result-notification.js.map +1 -0
  37. package/dist-client/pages/building-inspection/component/inspection-document/photo-album-popup.d.ts +27 -0
  38. package/dist-client/pages/building-inspection/component/inspection-document/photo-album-popup.js +416 -0
  39. package/dist-client/pages/building-inspection/component/inspection-document/photo-album-popup.js.map +1 -0
  40. package/dist-client/pages/building-inspection/component/inspection-event-provider.d.ts +2 -1
  41. package/dist-client/pages/building-inspection/component/inspection-event-provider.js +39 -17
  42. package/dist-client/pages/building-inspection/component/inspection-event-provider.js.map +1 -1
  43. package/dist-client/pages/building-inspection/inspection-create-popup.js +18 -8
  44. package/dist-client/pages/building-inspection/inspection-create-popup.js.map +1 -1
  45. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.d.ts +16 -2
  46. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.js +245 -43
  47. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.js.map +1 -1
  48. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.js +9 -5
  49. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.js.map +1 -1
  50. package/dist-client/pages/building-inspection-grid/component/grid-inspection-list-layer.d.ts +19 -0
  51. package/dist-client/pages/building-inspection-grid/component/grid-inspection-list-layer.js +205 -0
  52. package/dist-client/pages/building-inspection-grid/component/grid-inspection-list-layer.js.map +1 -0
  53. package/dist-client/pages/checklist/attachment-list-popup.d.ts +1 -0
  54. package/dist-client/pages/checklist/attachment-list-popup.js +250 -67
  55. package/dist-client/pages/checklist/attachment-list-popup.js.map +1 -1
  56. package/dist-client/pages/checklist/checklist-view.d.ts +5 -4
  57. package/dist-client/pages/checklist/checklist-view.js +95 -23
  58. package/dist-client/pages/checklist/checklist-view.js.map +1 -1
  59. package/dist-client/pages/checklist/comment-list-popup.js +14 -3
  60. package/dist-client/pages/checklist/comment-list-popup.js.map +1 -1
  61. package/dist-client/pages/checklist/file-preview-popup.js +0 -1
  62. package/dist-client/pages/checklist/file-preview-popup.js.map +1 -1
  63. package/dist-client/pages/checklist/inspection-info-popup.d.ts +50 -0
  64. package/dist-client/pages/checklist/inspection-info-popup.js +684 -0
  65. package/dist-client/pages/checklist/inspection-info-popup.js.map +1 -0
  66. package/dist-client/pages/checklist/inspection-tab-popup.d.ts +18 -0
  67. package/dist-client/pages/checklist/inspection-tab-popup.js +196 -0
  68. package/dist-client/pages/checklist/inspection-tab-popup.js.map +1 -0
  69. package/dist-client/pages/checklist-template/checklist-template-item.js +14 -3
  70. package/dist-client/pages/checklist-template/checklist-template-item.js.map +1 -1
  71. package/dist-client/pages/checklist-template/checklist-template-list.js +1 -1
  72. package/dist-client/pages/checklist-template/checklist-template-list.js.map +1 -1
  73. package/dist-client/route.d.ts +1 -1
  74. package/dist-client/route.js +6 -0
  75. package/dist-client/route.js.map +1 -1
  76. package/dist-client/tsconfig.tsbuildinfo +1 -1
  77. package/dist-server/service/building-inspection/building-inspection-mutation.d.ts +2 -3
  78. package/dist-server/service/building-inspection/building-inspection-mutation.js +63 -29
  79. package/dist-server/service/building-inspection/building-inspection-mutation.js.map +1 -1
  80. package/dist-server/service/building-inspection/building-inspection-query.d.ts +3 -5
  81. package/dist-server/service/building-inspection/building-inspection-query.js +16 -29
  82. package/dist-server/service/building-inspection/building-inspection-query.js.map +1 -1
  83. package/dist-server/service/building-inspection/building-inspection-type.d.ts +22 -10
  84. package/dist-server/service/building-inspection/building-inspection-type.js +77 -23
  85. package/dist-server/service/building-inspection/building-inspection-type.js.map +1 -1
  86. package/dist-server/service/building-inspection/building-inspection.d.ts +4 -0
  87. package/dist-server/service/building-inspection/building-inspection.js +17 -2
  88. package/dist-server/service/building-inspection/building-inspection.js.map +1 -1
  89. package/dist-server/service/building-inspection/index.d.ts +3 -4
  90. package/dist-server/service/building-inspection/index.js +10 -3
  91. package/dist-server/service/building-inspection/index.js.map +1 -1
  92. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.d.ts +6 -0
  93. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js +56 -0
  94. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js.map +1 -0
  95. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.d.ts +16 -0
  96. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.js +171 -0
  97. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.js.map +1 -0
  98. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.d.ts +23 -0
  99. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.js +90 -0
  100. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.js.map +1 -0
  101. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.d.ts +33 -0
  102. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.js +132 -0
  103. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.js.map +1 -0
  104. package/dist-server/service/building-inspection-daily-worklog/index.d.ts +5 -0
  105. package/dist-server/service/building-inspection-daily-worklog/index.js +9 -0
  106. package/dist-server/service/building-inspection-daily-worklog/index.js.map +1 -0
  107. package/dist-server/service/building-inspection-history/building-inspection-history-query.d.ts +16 -0
  108. package/dist-server/service/building-inspection-history/building-inspection-history-query.js +120 -0
  109. package/dist-server/service/building-inspection-history/building-inspection-history-query.js.map +1 -0
  110. package/dist-server/service/building-inspection-history/building-inspection-history-type.d.ts +5 -0
  111. package/dist-server/service/building-inspection-history/building-inspection-history-type.js +21 -0
  112. package/dist-server/service/building-inspection-history/building-inspection-history-type.js.map +1 -0
  113. package/dist-server/service/building-inspection-history/building-inspection-history.d.ts +34 -0
  114. package/dist-server/service/building-inspection-history/building-inspection-history.js +157 -0
  115. package/dist-server/service/building-inspection-history/building-inspection-history.js.map +1 -0
  116. package/dist-server/service/building-inspection-history/event-subscriber.d.ts +7 -0
  117. package/dist-server/service/building-inspection-history/event-subscriber.js +21 -0
  118. package/dist-server/service/building-inspection-history/event-subscriber.js.map +1 -0
  119. package/dist-server/service/building-inspection-history/index.d.ts +6 -0
  120. package/dist-server/service/building-inspection-history/index.js +10 -0
  121. package/dist-server/service/building-inspection-history/index.js.map +1 -0
  122. package/dist-server/service/checklist/checklist-mutation.d.ts +0 -5
  123. package/dist-server/service/checklist/checklist-mutation.js +1 -67
  124. package/dist-server/service/checklist/checklist-mutation.js.map +1 -1
  125. package/dist-server/service/checklist/checklist-query.d.ts +7 -0
  126. package/dist-server/service/checklist/checklist-query.js +83 -0
  127. package/dist-server/service/checklist/checklist-query.js.map +1 -1
  128. package/dist-server/service/checklist/checklist-type.d.ts +0 -13
  129. package/dist-server/service/checklist/checklist-type.js +1 -49
  130. package/dist-server/service/checklist/checklist-type.js.map +1 -1
  131. package/dist-server/service/checklist/checklist.d.ts +24 -7
  132. package/dist-server/service/checklist/checklist.js +75 -30
  133. package/dist-server/service/checklist/checklist.js.map +1 -1
  134. package/dist-server/service/checklist/event-subscriber.d.ts +7 -0
  135. package/dist-server/service/checklist/event-subscriber.js +21 -0
  136. package/dist-server/service/checklist/event-subscriber.js.map +1 -0
  137. package/dist-server/service/checklist/index.d.ts +1 -2
  138. package/dist-server/service/checklist/index.js +1 -2
  139. package/dist-server/service/checklist/index.js.map +1 -1
  140. package/dist-server/service/checklist-history/checklist-history-query.d.ts +11 -0
  141. package/dist-server/service/checklist-history/checklist-history-query.js +77 -0
  142. package/dist-server/service/checklist-history/checklist-history-query.js.map +1 -0
  143. package/dist-server/service/checklist-history/checklist-history-type.d.ts +5 -0
  144. package/dist-server/service/checklist-history/checklist-history-type.js +21 -0
  145. package/dist-server/service/checklist-history/checklist-history-type.js.map +1 -0
  146. package/dist-server/service/{checklist → checklist-history}/checklist-history.d.ts +19 -1
  147. package/dist-server/service/{checklist → checklist-history}/checklist-history.js +97 -14
  148. package/dist-server/service/checklist-history/checklist-history.js.map +1 -0
  149. package/dist-server/service/checklist-history/event-subscriber.d.ts +7 -0
  150. package/dist-server/service/checklist-history/event-subscriber.js +21 -0
  151. package/dist-server/service/checklist-history/event-subscriber.js.map +1 -0
  152. package/dist-server/service/checklist-history/index.d.ts +6 -0
  153. package/dist-server/service/checklist-history/index.js +10 -0
  154. package/dist-server/service/checklist-history/index.js.map +1 -0
  155. package/dist-server/service/checklist-item/checklist-item-query.d.ts +1 -1
  156. package/dist-server/service/checklist-item/checklist-item-query.js +5 -3
  157. package/dist-server/service/checklist-item/checklist-item-query.js.map +1 -1
  158. package/dist-server/service/checklist-item/index.d.ts +0 -1
  159. package/dist-server/service/checklist-item/index.js +1 -2
  160. package/dist-server/service/checklist-item/index.js.map +1 -1
  161. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.d.ts +1 -0
  162. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.js +33 -6
  163. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.js.map +1 -1
  164. package/dist-server/service/checklist-item-history/checklist-item-history-query.d.ts +16 -0
  165. package/dist-server/service/checklist-item-history/checklist-item-history-query.js +123 -0
  166. package/dist-server/service/checklist-item-history/checklist-item-history-query.js.map +1 -0
  167. package/dist-server/service/checklist-item-history/checklist-item-history-type.d.ts +5 -0
  168. package/dist-server/service/checklist-item-history/checklist-item-history-type.js +21 -0
  169. package/dist-server/service/checklist-item-history/checklist-item-history-type.js.map +1 -0
  170. package/dist-server/service/checklist-item-history/checklist-item-history.d.ts +25 -0
  171. package/dist-server/service/checklist-item-history/checklist-item-history.js +123 -0
  172. package/dist-server/service/checklist-item-history/checklist-item-history.js.map +1 -0
  173. package/dist-server/service/checklist-item-history/event-subscriber.d.ts +7 -0
  174. package/dist-server/service/checklist-item-history/event-subscriber.js +21 -0
  175. package/dist-server/service/checklist-item-history/event-subscriber.js.map +1 -0
  176. package/dist-server/service/checklist-item-history/index.d.ts +6 -0
  177. package/dist-server/service/checklist-item-history/index.js +10 -0
  178. package/dist-server/service/checklist-item-history/index.js.map +1 -0
  179. package/dist-server/service/checklist-template-item/checklist-template-item-mutation.js +4 -1
  180. package/dist-server/service/checklist-template-item/checklist-template-item-mutation.js.map +1 -1
  181. package/dist-server/service/checklist-template-item/checklist-template-item-type.d.ts +2 -0
  182. package/dist-server/service/checklist-template-item/checklist-template-item-type.js +5 -0
  183. package/dist-server/service/checklist-template-item/checklist-template-item-type.js.map +1 -1
  184. package/dist-server/service/checklist-template-item/checklist-template-item.d.ts +6 -0
  185. package/dist-server/service/checklist-template-item/checklist-template-item.js +16 -1
  186. package/dist-server/service/checklist-template-item/checklist-template-item.js.map +1 -1
  187. package/dist-server/service/checklist-template-item/spec-matching-service.d.ts +2 -0
  188. package/dist-server/service/checklist-template-item/spec-matching-service.js +50 -0
  189. package/dist-server/service/checklist-template-item/spec-matching-service.js.map +1 -0
  190. package/dist-server/service/index.d.ts +4 -1
  191. package/dist-server/service/index.js +22 -3
  192. package/dist-server/service/index.js.map +1 -1
  193. package/dist-server/service/project-report/project-report.d.ts +0 -2
  194. package/dist-server/service/project-report/project-report.js +0 -6
  195. package/dist-server/service/project-report/project-report.js.map +1 -1
  196. package/dist-server/tsconfig.tsbuildinfo +1 -1
  197. package/package.json +7 -6
  198. package/things-factory.config.js +2 -0
  199. package/dist-server/service/building-inspection/building-inspection-history.d.ts +0 -17
  200. package/dist-server/service/building-inspection/building-inspection-history.js +0 -86
  201. package/dist-server/service/building-inspection/building-inspection-history.js.map +0 -1
  202. package/dist-server/service/checklist/checklist-history.js.map +0 -1
@@ -0,0 +1,479 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/button/elevated-button.js';
3
+ import '@material/web/icon/icon.js';
4
+ import '@material/web/radio/radio.js';
5
+ import '@material/web/textfield/outlined-text-field.js';
6
+ import { css, html, LitElement } from 'lit';
7
+ import { customElement, property } from 'lit/decorators.js';
8
+ import { ScrollbarStyles } from '@operato/styles';
9
+ import { InspectionMode } from './inspection-request-document';
10
+ export var InspectionResultStatus;
11
+ (function (InspectionResultStatus) {
12
+ InspectionResultStatus["PASS"] = "PASS";
13
+ InspectionResultStatus["FAIL"] = "FAIL"; // 불합격
14
+ })(InspectionResultStatus || (InspectionResultStatus = {}));
15
+ export var InspectionResultType;
16
+ (function (InspectionResultType) {
17
+ InspectionResultType["GENERAL"] = "GENERAL";
18
+ InspectionResultType["FOCUS"] = "FOCUS";
19
+ InspectionResultType["CONCEALED_WORK"] = "CONCEALED_WORK"; // 매몰부위
20
+ })(InspectionResultType || (InspectionResultType = {}));
21
+ let InspectionResultNotification = class InspectionResultNotification extends LitElement {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.checklist = {};
25
+ this.buildingInspection = {};
26
+ this.project = {};
27
+ this.mode = InspectionMode.VIEW;
28
+ }
29
+ render() {
30
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
31
+ const headerDate = this._formatDate(new Date(((_a = this.checklist) === null || _a === void 0 ? void 0 : _a.inspectionResultUpdatedAt) || Date.now()));
32
+ return html `
33
+ <div class="document-container">
34
+ <div class="document-header">
35
+ <div class="document-title">검측 결과 통보</div>
36
+ </div>
37
+
38
+ <div class="document-body">
39
+ <div class="date-section">${headerDate}</div>
40
+
41
+ <div class="recipient-section">
42
+ <div class="recipient-item">
43
+ <span class="recipient-label">문서 번호:</span>
44
+ <span>${((_b = this.checklist) === null || _b === void 0 ? void 0 : _b.inspectionResultDocumentNo) || ''}</span>
45
+ </div>
46
+ <div class="recipient-item">
47
+ <span class="recipient-label">수신:</span>
48
+ <span>${(_f = (_e = (_d = (_c = this.buildingInspection) === null || _c === void 0 ? void 0 : _c.buildingLevel) === null || _d === void 0 ? void 0 : _d.building) === null || _e === void 0 ? void 0 : _e.buildingComplex) === null || _f === void 0 ? void 0 : _f.constructionCompany}</span>
49
+ </div>
50
+ </div>
51
+
52
+ <div class="content-section">
53
+ 문서번호 ${((_g = this.checklist) === null || _g === void 0 ? void 0 : _g.inspectionRequestDocumentNo) || ''} 검측 요청한 건에 대하여
54
+ ${this._formatDate(new Date((_h = this.buildingInspection) === null || _h === void 0 ? void 0 : _h.requestDate))} 검측한 결과를 다음과 같이 통보합니다.
55
+ </div>
56
+
57
+ <table class="request-table">
58
+ <tr>
59
+ <th>검측 결과</th>
60
+ <td>
61
+ <div class="radio-group">
62
+ <div class="radio-item">
63
+ <md-radio
64
+ name="inspectionResultStatus"
65
+ value="PASS"
66
+ ?checked=${this._getOverallResult() === InspectionResultStatus.PASS}
67
+ disabled
68
+ ></md-radio>
69
+ <span>합격</span>
70
+ </div>
71
+ <div class="radio-item">
72
+ <md-radio
73
+ name="inspectionResultStatus"
74
+ value="FAIL"
75
+ ?checked=${this._getOverallResult() === InspectionResultStatus.FAIL}
76
+ disabled
77
+ ></md-radio>
78
+ <span>불합격</span>
79
+ </div>
80
+ </div>
81
+ </td>
82
+ </tr>
83
+ <tr>
84
+ <th>검측 종류</th>
85
+ <td>
86
+ <div class="radio-group">
87
+ <div class="radio-item">
88
+ <md-radio
89
+ name="inspectionResultType"
90
+ value="GENERAL"
91
+ ?checked=${((_j = this.checklist) === null || _j === void 0 ? void 0 : _j.inspectionResultType) === InspectionResultType.GENERAL}
92
+ ?disabled=${this.mode === InspectionMode.VIEW}
93
+ @change=${this._onInspectionTypeChange}
94
+ ></md-radio>
95
+ <span>일반</span>
96
+ </div>
97
+ <div class="radio-item">
98
+ <md-radio
99
+ name="inspectionResultType"
100
+ value="FOCUS"
101
+ ?checked=${((_k = this.checklist) === null || _k === void 0 ? void 0 : _k.inspectionResultType) === InspectionResultType.FOCUS}
102
+ ?disabled=${this.mode === InspectionMode.VIEW}
103
+ @change=${this._onInspectionTypeChange}
104
+ ></md-radio>
105
+ <span>중점</span>
106
+ </div>
107
+ <div class="radio-item">
108
+ <md-radio
109
+ name="inspectionResultType"
110
+ value="CONCEALED_WORK"
111
+ ?checked=${((_l = this.checklist) === null || _l === void 0 ? void 0 : _l.inspectionResultType) === InspectionResultType.CONCEALED_WORK}
112
+ ?disabled=${this.mode === InspectionMode.VIEW}
113
+ @change=${this._onInspectionTypeChange}
114
+ ></md-radio>
115
+ <span>매몰부위</span>
116
+ </div>
117
+ </div>
118
+ </td>
119
+ </tr>
120
+ <tr>
121
+ <th>지시 사항</th>
122
+ <td>
123
+ <input
124
+ type="text"
125
+ class="instructions-field"
126
+ .value=${((_m = this.checklist) === null || _m === void 0 ? void 0 : _m.inspectionResultMemo) || ''}
127
+ ?disabled=${this.mode === InspectionMode.VIEW}
128
+ @input=${this._onInstructionsChange}
129
+ placeholder="지시 사항을 입력하세요."
130
+ />
131
+ </td>
132
+ </tr>
133
+ </table>
134
+
135
+ <div class="document-footer">
136
+ <div class="attachment-section">
137
+ <div class="attachment-title">첨부 파일</div>
138
+ <div class="attachment-list">
139
+ <div class="attachment-item">시공자의 검측 체크리스트</div>
140
+ ${this._getAttachmentCount() > 0
141
+ ? html `<div class="attachment-item">첨부 사진 ${this._getAttachmentCount()}개</div>`
142
+ : ''}
143
+ </div>
144
+ </div>
145
+
146
+ <div class="signature-section">
147
+ <div class="signature-box">
148
+ <div class="signature-title">공종별 감리 책임자</div>
149
+ <div class="signature-name">${(_p = (_o = this.checklist) === null || _o === void 0 ? void 0 : _o.taskSupervisory) === null || _p === void 0 ? void 0 : _p.name}</div>
150
+ <div class="signature-container">
151
+ ${((_q = this.checklist) === null || _q === void 0 ? void 0 : _q.taskSupervisorySignature)
152
+ ? html `<img class="signature-image" src="${this.checklist.taskSupervisorySignature}" alt="서명" />`
153
+ : ''}
154
+ </div>
155
+ </div>
156
+ <div class="signature-box">
157
+ <div class="signature-title">총괄 감리 책임자</div>
158
+ <div class="signature-name">${(_s = (_r = this.checklist) === null || _r === void 0 ? void 0 : _r.overallSupervisory) === null || _s === void 0 ? void 0 : _s.name}</div>
159
+ <div class="signature-container">
160
+ ${((_t = this.checklist) === null || _t === void 0 ? void 0 : _t.overallSupervisorySignature)
161
+ ? html `<img class="signature-image" src="${this.checklist.overallSupervisorySignature}" alt="서명" />`
162
+ : ''}
163
+ </div>
164
+ </div>
165
+ </div>
166
+ </div>
167
+ </div>
168
+ </div>
169
+
170
+ ${this.mode === InspectionMode.EDIT
171
+ ? html `
172
+ <div class="button-container">
173
+ <md-elevated-button @click=${this._onConfirm}> 확인 </md-elevated-button>
174
+ </div>
175
+ `
176
+ : ''}
177
+ `;
178
+ }
179
+ updated() {
180
+ var _a;
181
+ const overall = this._getOverallResult();
182
+ if (((_a = this.checklist) === null || _a === void 0 ? void 0 : _a.inspectionResultStatus) !== overall) {
183
+ this.dispatchEvent(new CustomEvent('inspection-result-change', {
184
+ detail: { inspectionResultStatus: overall },
185
+ bubbles: true
186
+ }));
187
+ }
188
+ }
189
+ _formatDate(date) {
190
+ return `${date.getFullYear()}. ${String(date.getMonth() + 1).padStart(2, '0')}. ${String(date.getDate()).padStart(2, '0')}.`;
191
+ }
192
+ _getAttachmentCount() {
193
+ var _a, _b, _c;
194
+ return (((_c = (_b = (_a = this.buildingInspection) === null || _a === void 0 ? void 0 : _a.checklist) === null || _b === void 0 ? void 0 : _b.checklistItems) === null || _c === void 0 ? void 0 : _c.reduce((acc, item) => {
195
+ return acc + item.checklistItemAttachmentCount;
196
+ }, 0)) || 0);
197
+ }
198
+ _getOverallResult() {
199
+ var _a, _b;
200
+ const hasFailedItems = (_b = (_a = this.checklist) === null || _a === void 0 ? void 0 : _a.checklistItems) === null || _b === void 0 ? void 0 : _b.some(item => item.supervisoryConfirmStatus === 'F');
201
+ return hasFailedItems ? InspectionResultStatus.FAIL : InspectionResultStatus.PASS;
202
+ }
203
+ _onInspectionTypeChange(e) {
204
+ const target = e.target;
205
+ this.checklist = Object.assign(Object.assign({}, this.checklist), { inspectionResultType: target.value });
206
+ this.requestUpdate();
207
+ this.dispatchEvent(new CustomEvent('inspection-type-change', {
208
+ detail: { inspectionResultType: target.value },
209
+ bubbles: true
210
+ }));
211
+ }
212
+ _onInstructionsChange(e) {
213
+ const target = e.target;
214
+ this.checklist = Object.assign(Object.assign({}, this.checklist), { inspectionResultMemo: target.value });
215
+ this.requestUpdate();
216
+ this.dispatchEvent(new CustomEvent('instructions-change', {
217
+ detail: { inspectionResultMemo: target.value },
218
+ bubbles: true
219
+ }));
220
+ }
221
+ // 확인 버튼
222
+ _onConfirm() {
223
+ this.dispatchEvent(new CustomEvent('popup-close', { bubbles: true }));
224
+ history.back();
225
+ }
226
+ };
227
+ InspectionResultNotification.styles = [
228
+ ScrollbarStyles,
229
+ css `
230
+ :host {
231
+ display: block;
232
+ padding: 20px;
233
+ font-family: 'Noto Sans KR', sans-serif;
234
+ line-height: 1.4;
235
+ overflow-y: auto;
236
+ }
237
+
238
+ .document-container {
239
+ max-width: 800px;
240
+ margin: 0 auto;
241
+ background: white;
242
+ border: 2px solid #333;
243
+ }
244
+
245
+ .document-header {
246
+ text-align: center;
247
+ padding: 15px;
248
+ border-bottom: 1px solid #333;
249
+ }
250
+
251
+ .document-title {
252
+ font-size: 18px;
253
+ font-weight: bold;
254
+ margin-bottom: 10px;
255
+ }
256
+
257
+ .document-body {
258
+ padding: 20px;
259
+ }
260
+
261
+ .date-section {
262
+ text-align: right;
263
+ margin-bottom: 20px;
264
+ font-size: 14px;
265
+ }
266
+
267
+ .recipient-section {
268
+ margin-bottom: 30px;
269
+ }
270
+
271
+ .recipient-item {
272
+ display: flex;
273
+ margin-bottom: 5px;
274
+ }
275
+
276
+ .recipient-label {
277
+ font-weight: bold;
278
+ margin-right: 18px;
279
+ }
280
+
281
+ .content-section {
282
+ margin-bottom: 20px;
283
+ line-height: 1.6;
284
+ }
285
+
286
+ .request-table {
287
+ width: 100%;
288
+ border-collapse: collapse;
289
+ margin-bottom: 20px;
290
+ }
291
+
292
+ .request-table th,
293
+ .request-table td {
294
+ border: 1px solid #333;
295
+ padding: 8px;
296
+ text-align: left;
297
+ }
298
+
299
+ .request-table th {
300
+ background-color: #f5f5f5;
301
+ font-weight: bold;
302
+ width: 120px;
303
+ }
304
+
305
+ .radio-group {
306
+ display: flex;
307
+ gap: 20px;
308
+ align-items: center;
309
+ }
310
+
311
+ .radio-item {
312
+ display: flex;
313
+ align-items: center;
314
+ gap: 5px;
315
+ }
316
+
317
+ .signature-section {
318
+ display: flex;
319
+ flex-direction: column;
320
+ align-items: flex-end;
321
+ gap: 15px;
322
+ }
323
+
324
+ .signature-box {
325
+ display: flex;
326
+ align-items: center;
327
+ gap: 15px;
328
+ text-align: right;
329
+ }
330
+
331
+ .signature-title {
332
+ font-size: 14px;
333
+ font-weight: bold;
334
+ color: #333;
335
+ min-width: 120px;
336
+ }
337
+
338
+ .signature-name {
339
+ font-size: 14px;
340
+ color: #333;
341
+ }
342
+
343
+ .signature-container {
344
+ position: relative;
345
+ min-width: 100px;
346
+ min-height: 60px;
347
+ display: flex;
348
+ align-items: center;
349
+ justify-content: center;
350
+ }
351
+
352
+ .signature-container::after {
353
+ content: '(인)';
354
+ position: absolute;
355
+ bottom: 5px;
356
+ right: 5px;
357
+ font-size: 12px;
358
+ color: #333;
359
+ font-weight: bold;
360
+ z-index: 2;
361
+ }
362
+
363
+ .signature-image {
364
+ max-width: 140px;
365
+ max-height: 60px;
366
+ width: auto;
367
+ height: auto;
368
+ }
369
+
370
+ .attachment-section {
371
+ margin-top: 30px;
372
+ margin-bottom: 30px;
373
+ }
374
+
375
+ .attachment-title {
376
+ font-weight: bold;
377
+ font-size: 14px;
378
+ color: #333;
379
+ margin-bottom: 10px;
380
+ display: flex;
381
+ align-items: center;
382
+ gap: 8px;
383
+ }
384
+
385
+ .attachment-list {
386
+ margin-left: 30px;
387
+ }
388
+
389
+ .attachment-item {
390
+ margin-bottom: 5px;
391
+ color: #2196f3;
392
+ font-size: 14px;
393
+ line-height: 1.5;
394
+ }
395
+
396
+ .instructions-field {
397
+ width: 100%;
398
+ max-width: -webkit-fill-available;
399
+ height: 40px;
400
+ border: 1px solid #ddd;
401
+ padding: 10px;
402
+ font-size: 15px;
403
+ border-radius: 5px;
404
+ }
405
+
406
+ .document-footer {
407
+ display: flex;
408
+ justify-content: space-between;
409
+ align-items: center;
410
+ }
411
+
412
+ .signature-container::after {
413
+ content: '(인)';
414
+ position: absolute;
415
+ bottom: 5px;
416
+ right: 5px;
417
+ font-size: 12px;
418
+ color: #333;
419
+ font-weight: bold;
420
+ z-index: 2;
421
+ }
422
+
423
+ .signature-line {
424
+ border-bottom: 1px solid #333;
425
+ height: 60px;
426
+ margin-bottom: 5px;
427
+ position: relative;
428
+ min-width: 100px;
429
+ }
430
+
431
+ .signature-label {
432
+ font-size: 12px;
433
+ }
434
+
435
+ .button-container {
436
+ display: flex;
437
+ justify-content: center;
438
+ margin-top: 20px;
439
+ padding: 15px 0;
440
+ border-top: 1px solid #ddd;
441
+ }
442
+
443
+ .button-container md-elevated-button {
444
+ background-color: #3498db;
445
+ color: white;
446
+ padding: 12px 30px;
447
+ font-size: 16px;
448
+ font-weight: bold;
449
+ border-radius: 8px;
450
+ }
451
+
452
+ .document-footer {
453
+ display: flex;
454
+ justify-content: space-between;
455
+ align-items: center;
456
+ }
457
+ `
458
+ ];
459
+ __decorate([
460
+ property({ type: Object }),
461
+ __metadata("design:type", Object)
462
+ ], InspectionResultNotification.prototype, "checklist", void 0);
463
+ __decorate([
464
+ property({ type: Object }),
465
+ __metadata("design:type", Object)
466
+ ], InspectionResultNotification.prototype, "buildingInspection", void 0);
467
+ __decorate([
468
+ property({ type: Object }),
469
+ __metadata("design:type", Object)
470
+ ], InspectionResultNotification.prototype, "project", void 0);
471
+ __decorate([
472
+ property({ type: String }),
473
+ __metadata("design:type", String)
474
+ ], InspectionResultNotification.prototype, "mode", void 0);
475
+ InspectionResultNotification = __decorate([
476
+ customElement('inspection-result-notification')
477
+ ], InspectionResultNotification);
478
+ export { InspectionResultNotification };
479
+ //# sourceMappingURL=inspection-result-notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection-result-notification.js","sourceRoot":"","sources":["../../../../../client/pages/building-inspection/component/inspection-document/inspection-result-notification.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/elevated-button.js'\nimport '@material/web/icon/icon.js'\nimport '@material/web/radio/radio.js'\nimport '@material/web/textfield/outlined-text-field.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { InspectionMode } from './inspection-request-document'\n\nexport enum InspectionResultStatus {\n PASS = 'PASS', // 합격\n FAIL = 'FAIL' // 불합격\n}\n\nexport enum InspectionResultType {\n GENERAL = 'GENERAL', // 일반\n FOCUS = 'FOCUS', // 중점\n CONCEALED_WORK = 'CONCEALED_WORK' // 매몰부위\n}\n\n@customElement('inspection-result-notification')\nexport class InspectionResultNotification extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: block;\n padding: 20px;\n font-family: 'Noto Sans KR', sans-serif;\n line-height: 1.4;\n overflow-y: auto;\n }\n\n .document-container {\n max-width: 800px;\n margin: 0 auto;\n background: white;\n border: 2px solid #333;\n }\n\n .document-header {\n text-align: center;\n padding: 15px;\n border-bottom: 1px solid #333;\n }\n\n .document-title {\n font-size: 18px;\n font-weight: bold;\n margin-bottom: 10px;\n }\n\n .document-body {\n padding: 20px;\n }\n\n .date-section {\n text-align: right;\n margin-bottom: 20px;\n font-size: 14px;\n }\n\n .recipient-section {\n margin-bottom: 30px;\n }\n\n .recipient-item {\n display: flex;\n margin-bottom: 5px;\n }\n\n .recipient-label {\n font-weight: bold;\n margin-right: 18px;\n }\n\n .content-section {\n margin-bottom: 20px;\n line-height: 1.6;\n }\n\n .request-table {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: 20px;\n }\n\n .request-table th,\n .request-table td {\n border: 1px solid #333;\n padding: 8px;\n text-align: left;\n }\n\n .request-table th {\n background-color: #f5f5f5;\n font-weight: bold;\n width: 120px;\n }\n\n .radio-group {\n display: flex;\n gap: 20px;\n align-items: center;\n }\n\n .radio-item {\n display: flex;\n align-items: center;\n gap: 5px;\n }\n\n .signature-section {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 15px;\n }\n\n .signature-box {\n display: flex;\n align-items: center;\n gap: 15px;\n text-align: right;\n }\n\n .signature-title {\n font-size: 14px;\n font-weight: bold;\n color: #333;\n min-width: 120px;\n }\n\n .signature-name {\n font-size: 14px;\n color: #333;\n }\n\n .signature-container {\n position: relative;\n min-width: 100px;\n min-height: 60px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .signature-container::after {\n content: '(인)';\n position: absolute;\n bottom: 5px;\n right: 5px;\n font-size: 12px;\n color: #333;\n font-weight: bold;\n z-index: 2;\n }\n\n .signature-image {\n max-width: 140px;\n max-height: 60px;\n width: auto;\n height: auto;\n }\n\n .attachment-section {\n margin-top: 30px;\n margin-bottom: 30px;\n }\n\n .attachment-title {\n font-weight: bold;\n font-size: 14px;\n color: #333;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .attachment-list {\n margin-left: 30px;\n }\n\n .attachment-item {\n margin-bottom: 5px;\n color: #2196f3;\n font-size: 14px;\n line-height: 1.5;\n }\n\n .instructions-field {\n width: 100%;\n max-width: -webkit-fill-available;\n height: 40px;\n border: 1px solid #ddd;\n padding: 10px;\n font-size: 15px;\n border-radius: 5px;\n }\n\n .document-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .signature-container::after {\n content: '(인)';\n position: absolute;\n bottom: 5px;\n right: 5px;\n font-size: 12px;\n color: #333;\n font-weight: bold;\n z-index: 2;\n }\n\n .signature-line {\n border-bottom: 1px solid #333;\n height: 60px;\n margin-bottom: 5px;\n position: relative;\n min-width: 100px;\n }\n\n .signature-label {\n font-size: 12px;\n }\n\n .button-container {\n display: flex;\n justify-content: center;\n margin-top: 20px;\n padding: 15px 0;\n border-top: 1px solid #ddd;\n }\n\n .button-container md-elevated-button {\n background-color: #3498db;\n color: white;\n padding: 12px 30px;\n font-size: 16px;\n font-weight: bold;\n border-radius: 8px;\n }\n\n .document-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n `\n ]\n\n @property({ type: Object }) checklist: any = {}\n @property({ type: Object }) buildingInspection: any = {}\n @property({ type: Object }) project: any = {}\n @property({ type: String }) mode: InspectionMode = InspectionMode.VIEW\n\n render() {\n const headerDate = this._formatDate(new Date(this.checklist?.inspectionResultUpdatedAt || Date.now()))\n\n return html`\n <div class=\"document-container\">\n <div class=\"document-header\">\n <div class=\"document-title\">검측 결과 통보</div>\n </div>\n\n <div class=\"document-body\">\n <div class=\"date-section\">${headerDate}</div>\n\n <div class=\"recipient-section\">\n <div class=\"recipient-item\">\n <span class=\"recipient-label\">문서 번호:</span>\n <span>${this.checklist?.inspectionResultDocumentNo || ''}</span>\n </div>\n <div class=\"recipient-item\">\n <span class=\"recipient-label\">수신:</span>\n <span>${this.buildingInspection?.buildingLevel?.building?.buildingComplex?.constructionCompany}</span>\n </div>\n </div>\n\n <div class=\"content-section\">\n 문서번호 ${this.checklist?.inspectionRequestDocumentNo || ''} 검측 요청한 건에 대하여\n ${this._formatDate(new Date(this.buildingInspection?.requestDate))} 검측한 결과를 다음과 같이 통보합니다.\n </div>\n\n <table class=\"request-table\">\n <tr>\n <th>검측 결과</th>\n <td>\n <div class=\"radio-group\">\n <div class=\"radio-item\">\n <md-radio\n name=\"inspectionResultStatus\"\n value=\"PASS\"\n ?checked=${this._getOverallResult() === InspectionResultStatus.PASS}\n disabled\n ></md-radio>\n <span>합격</span>\n </div>\n <div class=\"radio-item\">\n <md-radio\n name=\"inspectionResultStatus\"\n value=\"FAIL\"\n ?checked=${this._getOverallResult() === InspectionResultStatus.FAIL}\n disabled\n ></md-radio>\n <span>불합격</span>\n </div>\n </div>\n </td>\n </tr>\n <tr>\n <th>검측 종류</th>\n <td>\n <div class=\"radio-group\">\n <div class=\"radio-item\">\n <md-radio\n name=\"inspectionResultType\"\n value=\"GENERAL\"\n ?checked=${this.checklist?.inspectionResultType === InspectionResultType.GENERAL}\n ?disabled=${this.mode === InspectionMode.VIEW}\n @change=${this._onInspectionTypeChange}\n ></md-radio>\n <span>일반</span>\n </div>\n <div class=\"radio-item\">\n <md-radio\n name=\"inspectionResultType\"\n value=\"FOCUS\"\n ?checked=${this.checklist?.inspectionResultType === InspectionResultType.FOCUS}\n ?disabled=${this.mode === InspectionMode.VIEW}\n @change=${this._onInspectionTypeChange}\n ></md-radio>\n <span>중점</span>\n </div>\n <div class=\"radio-item\">\n <md-radio\n name=\"inspectionResultType\"\n value=\"CONCEALED_WORK\"\n ?checked=${this.checklist?.inspectionResultType === InspectionResultType.CONCEALED_WORK}\n ?disabled=${this.mode === InspectionMode.VIEW}\n @change=${this._onInspectionTypeChange}\n ></md-radio>\n <span>매몰부위</span>\n </div>\n </div>\n </td>\n </tr>\n <tr>\n <th>지시 사항</th>\n <td>\n <input\n type=\"text\"\n class=\"instructions-field\"\n .value=${this.checklist?.inspectionResultMemo || ''}\n ?disabled=${this.mode === InspectionMode.VIEW}\n @input=${this._onInstructionsChange}\n placeholder=\"지시 사항을 입력하세요.\"\n />\n </td>\n </tr>\n </table>\n\n <div class=\"document-footer\">\n <div class=\"attachment-section\">\n <div class=\"attachment-title\">첨부 파일</div>\n <div class=\"attachment-list\">\n <div class=\"attachment-item\">시공자의 검측 체크리스트</div>\n ${this._getAttachmentCount() > 0\n ? html`<div class=\"attachment-item\">첨부 사진 ${this._getAttachmentCount()}개</div>`\n : ''}\n </div>\n </div>\n\n <div class=\"signature-section\">\n <div class=\"signature-box\">\n <div class=\"signature-title\">공종별 감리 책임자</div>\n <div class=\"signature-name\">${this.checklist?.taskSupervisory?.name}</div>\n <div class=\"signature-container\">\n ${this.checklist?.taskSupervisorySignature\n ? html`<img class=\"signature-image\" src=\"${this.checklist.taskSupervisorySignature}\" alt=\"서명\" />`\n : ''}\n </div>\n </div>\n <div class=\"signature-box\">\n <div class=\"signature-title\">총괄 감리 책임자</div>\n <div class=\"signature-name\">${this.checklist?.overallSupervisory?.name}</div>\n <div class=\"signature-container\">\n ${this.checklist?.overallSupervisorySignature\n ? html`<img class=\"signature-image\" src=\"${this.checklist.overallSupervisorySignature}\" alt=\"서명\" />`\n : ''}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n ${this.mode === InspectionMode.EDIT\n ? html`\n <div class=\"button-container\">\n <md-elevated-button @click=${this._onConfirm}> 확인 </md-elevated-button>\n </div>\n `\n : ''}\n `\n }\n\n protected updated() {\n const overall = this._getOverallResult()\n if (this.checklist?.inspectionResultStatus !== overall) {\n this.dispatchEvent(\n new CustomEvent('inspection-result-change', {\n detail: { inspectionResultStatus: overall },\n bubbles: true\n })\n )\n }\n }\n\n private _formatDate(date: Date): string {\n return `${date.getFullYear()}. ${String(date.getMonth() + 1).padStart(2, '0')}. ${String(date.getDate()).padStart(2, '0')}.`\n }\n\n private _getAttachmentCount(): number {\n return (\n this.buildingInspection?.checklist?.checklistItems?.reduce((acc, item) => {\n return acc + item.checklistItemAttachmentCount\n }, 0) || 0\n )\n }\n\n private _getOverallResult(): string {\n const hasFailedItems = this.checklist?.checklistItems?.some(item => item.supervisoryConfirmStatus === 'F')\n return hasFailedItems ? InspectionResultStatus.FAIL : InspectionResultStatus.PASS\n }\n\n private _onInspectionTypeChange(e: Event) {\n const target = e.target as any\n this.checklist = {\n ...this.checklist,\n inspectionResultType: target.value\n }\n this.requestUpdate()\n this.dispatchEvent(\n new CustomEvent('inspection-type-change', {\n detail: { inspectionResultType: target.value },\n bubbles: true\n })\n )\n }\n\n private _onInstructionsChange(e: Event) {\n const target = e.target as HTMLInputElement\n this.checklist = {\n ...this.checklist,\n inspectionResultMemo: target.value\n }\n this.requestUpdate()\n this.dispatchEvent(\n new CustomEvent('instructions-change', {\n detail: { inspectionResultMemo: target.value },\n bubbles: true\n })\n )\n }\n\n // 확인 버튼\n private _onConfirm() {\n this.dispatchEvent(new CustomEvent('popup-close', { bubbles: true }))\n history.back()\n }\n}\n"]}
@@ -0,0 +1,27 @@
1
+ import '@material/web/button/elevated-button.js';
2
+ import '@material/web/icon/icon.js';
3
+ import '@material/web/tabs/tabs.js';
4
+ import '@material/web/tabs/primary-tab.js';
5
+ import { LitElement } from 'lit';
6
+ import '../image-preview-popup';
7
+ export declare enum PhotoTab {
8
+ CONSTRUCTOR = "constructor",
9
+ SUPERVISOR = "supervisor"
10
+ }
11
+ export declare class PhotoAlbumPopup extends LitElement {
12
+ static styles: import("lit").CSSResult[];
13
+ checklistId: string;
14
+ activeTab: PhotoTab;
15
+ constructorFiles: any[];
16
+ supervisorFiles: any[];
17
+ render(): import("lit-html").TemplateResult<1>;
18
+ firstUpdated(): Promise<void>;
19
+ private _loadPhotos;
20
+ private _isImageFile;
21
+ private _getFileExtension;
22
+ private _setActiveTab;
23
+ private _openFilePreview;
24
+ private _onImageError;
25
+ private _formatDate;
26
+ private _close;
27
+ }