@dssp/project 1.0.0-alpha.1 → 1.0.0-alpha.14

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 (164) hide show
  1. package/dist-client/pages/lib/select2-component.js +1 -1
  2. package/dist-client/pages/lib/select2-component.js.map +1 -1
  3. package/dist-client/pages/lib/waether.d.ts +2 -1
  4. package/dist-client/pages/lib/waether.js +7 -3
  5. package/dist-client/pages/lib/waether.js.map +1 -1
  6. package/dist-client/pages/project/component/project-update-header.js.map +1 -1
  7. package/dist-client/pages/project/popup/checklist/attachment-list-popup.d.ts +1 -0
  8. package/dist-client/pages/project/popup/checklist/attachment-list-popup.js +309 -0
  9. package/dist-client/pages/project/popup/checklist/attachment-list-popup.js.map +1 -0
  10. package/dist-client/pages/project/popup/checklist/comment-list-popup.d.ts +1 -0
  11. package/dist-client/pages/project/popup/checklist/comment-list-popup.js +357 -0
  12. package/dist-client/pages/project/popup/checklist/comment-list-popup.js.map +1 -0
  13. package/dist-client/pages/project/popup/checklist/schedule-checklist-create-popup.d.ts +2 -0
  14. package/dist-client/pages/project/popup/checklist/schedule-checklist-create-popup.js +684 -0
  15. package/dist-client/pages/project/popup/checklist/schedule-checklist-create-popup.js.map +1 -0
  16. package/dist-client/pages/project/popup/checklist/schedule-checklist-view.d.ts +37 -0
  17. package/dist-client/pages/project/popup/checklist/schedule-checklist-view.js +627 -0
  18. package/dist-client/pages/project/popup/checklist/schedule-checklist-view.js.map +1 -0
  19. package/dist-client/pages/project/popup/popup-plan-export.d.ts +10 -0
  20. package/dist-client/pages/project/popup/popup-plan-export.js +236 -0
  21. package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -0
  22. package/dist-client/pages/project/popup/popup-plan-upload.d.ts +3 -0
  23. package/dist-client/pages/project/popup/popup-plan-upload.js +130 -4
  24. package/dist-client/pages/project/popup/popup-plan-upload.js.map +1 -1
  25. package/dist-client/pages/project/popup/popup-project-create.js.map +1 -1
  26. package/dist-client/pages/project/popup/popup-schedule-upload.js.map +1 -1
  27. package/dist-client/pages/project/project-completed-list.js +0 -1
  28. package/dist-client/pages/project/project-completed-list.js.map +1 -1
  29. package/dist-client/pages/project/project-detail.d.ts +2 -1
  30. package/dist-client/pages/project/project-detail.js +269 -80
  31. package/dist-client/pages/project/project-detail.js.map +1 -1
  32. package/dist-client/pages/project/project-list.d.ts +12 -0
  33. package/dist-client/pages/project/project-list.js +15 -8
  34. package/dist-client/pages/project/project-list.js.map +1 -1
  35. package/dist-client/pages/project/project-plan-management.js +29 -13
  36. package/dist-client/pages/project/project-plan-management.js.map +1 -1
  37. package/dist-client/pages/project/project-schedule-list.js.map +1 -1
  38. package/dist-client/pages/project/project-schedule.d.ts +2 -0
  39. package/dist-client/pages/project/project-schedule.js +16 -1
  40. package/dist-client/pages/project/project-schedule.js.map +1 -1
  41. package/dist-client/pages/project/project-setting-list.js +25 -24
  42. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  43. package/dist-client/pages/project/project-update.d.ts +1 -0
  44. package/dist-client/pages/project/project-update.js +128 -17
  45. package/dist-client/pages/project/project-update.js.map +1 -1
  46. package/dist-client/pages/resource/construction-detail-type-popup.js.map +1 -1
  47. package/dist-client/pages/resource/construction-type-management.js.map +1 -1
  48. package/dist-client/pages/resource/inspection-drawing-type-management.js.map +1 -1
  49. package/dist-client/pages/resource/inspection-part-popup.js.map +1 -1
  50. package/dist-client/pages/resource/resource-importer.js.map +1 -1
  51. package/dist-client/pages/resource/resource-list-page.js.map +1 -1
  52. package/dist-client/pages/resource/worker-type-management.js.map +1 -1
  53. package/dist-client/pages/task/task-importer.js.map +1 -1
  54. package/dist-client/pages/task/task-list-page.js.map +1 -1
  55. package/dist-client/pages/task-resource/task-resource-importer.js.map +1 -1
  56. package/dist-client/pages/task-resource/task-resource-list-page.js.map +1 -1
  57. package/dist-client/route.js.map +1 -1
  58. package/dist-client/tsconfig.tsbuildinfo +1 -1
  59. package/dist-server/controllers/export-tasks.js +1 -2
  60. package/dist-server/controllers/export-tasks.js.map +1 -1
  61. package/dist-server/controllers/import-task.js +1 -2
  62. package/dist-server/controllers/import-task.js.map +1 -1
  63. package/dist-server/controllers/parse-excel.d.ts +0 -2
  64. package/dist-server/controllers/parse-excel.js +1 -2
  65. package/dist-server/controllers/parse-excel.js.map +1 -1
  66. package/dist-server/middlewares/index.js +1 -2
  67. package/dist-server/middlewares/index.js.map +1 -1
  68. package/dist-server/migrations/1723861466413-seed-roles.js.map +1 -1
  69. package/dist-server/migrations/1723861466414-seed-codes.js.map +1 -1
  70. package/dist-server/migrations/1723861476419-seed-resources.js.map +1 -1
  71. package/dist-server/migrations/1723861478420-seed-/bsample-project.js.map +1 -1
  72. package/dist-server/migrations/1723861478421-seed-/bsample-tasks.js.map +1 -1
  73. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js +2 -2
  74. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js.map +1 -1
  75. package/dist-server/service/construction-detail-type/construction-detail-type-query.js +2 -2
  76. package/dist-server/service/construction-detail-type/construction-detail-type-query.js.map +1 -1
  77. package/dist-server/service/construction-detail-type/construction-detail-type-type.js +4 -4
  78. package/dist-server/service/construction-detail-type/construction-detail-type-type.js.map +1 -1
  79. package/dist-server/service/construction-detail-type/construction-detail-type.js +2 -2
  80. package/dist-server/service/construction-detail-type/construction-detail-type.js.map +1 -1
  81. package/dist-server/service/construction-type/construction-type-mutation.js +2 -2
  82. package/dist-server/service/construction-type/construction-type-mutation.js.map +1 -1
  83. package/dist-server/service/construction-type/construction-type-query.js +2 -2
  84. package/dist-server/service/construction-type/construction-type-query.js.map +1 -1
  85. package/dist-server/service/construction-type/construction-type-type.js +4 -4
  86. package/dist-server/service/construction-type/construction-type-type.js.map +1 -1
  87. package/dist-server/service/construction-type/construction-type.js +2 -2
  88. package/dist-server/service/construction-type/construction-type.js.map +1 -1
  89. package/dist-server/service/index.d.ts +1 -0
  90. package/dist-server/service/index.js +1 -0
  91. package/dist-server/service/index.js.map +1 -1
  92. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js +2 -2
  93. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js.map +1 -1
  94. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js +2 -2
  95. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js.map +1 -1
  96. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js +4 -4
  97. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js.map +1 -1
  98. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js +2 -2
  99. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js.map +1 -1
  100. package/dist-server/service/inspection-part/inspection-part-mutation.js +2 -2
  101. package/dist-server/service/inspection-part/inspection-part-mutation.js.map +1 -1
  102. package/dist-server/service/inspection-part/inspection-part-query.js +2 -2
  103. package/dist-server/service/inspection-part/inspection-part-query.js.map +1 -1
  104. package/dist-server/service/inspection-part/inspection-part-type.js +4 -4
  105. package/dist-server/service/inspection-part/inspection-part-type.js.map +1 -1
  106. package/dist-server/service/inspection-part/inspection-part.js +2 -2
  107. package/dist-server/service/inspection-part/inspection-part.js.map +1 -1
  108. package/dist-server/service/manager/index.d.ts +2 -0
  109. package/dist-server/service/manager/index.js +3 -1
  110. package/dist-server/service/manager/index.js.map +1 -1
  111. package/dist-server/service/manager/manager-mutation.js +2 -2
  112. package/dist-server/service/manager/manager-mutation.js.map +1 -1
  113. package/dist-server/service/manager/manager-query.js +3 -3
  114. package/dist-server/service/manager/manager-query.js.map +1 -1
  115. package/dist-server/service/manager/manager-type.js +4 -4
  116. package/dist-server/service/manager/manager-type.js.map +1 -1
  117. package/dist-server/service/manager/manager.js +2 -2
  118. package/dist-server/service/manager/manager.js.map +1 -1
  119. package/dist-server/service/project/project-mutation.d.ts +1 -0
  120. package/dist-server/service/project/project-mutation.js +109 -15
  121. package/dist-server/service/project/project-mutation.js.map +1 -1
  122. package/dist-server/service/project/project-query.d.ts +1 -0
  123. package/dist-server/service/project/project-query.js +14 -3
  124. package/dist-server/service/project/project-query.js.map +1 -1
  125. package/dist-server/service/project/project-type.d.ts +1 -0
  126. package/dist-server/service/project/project-type.js +13 -9
  127. package/dist-server/service/project/project-type.js.map +1 -1
  128. package/dist-server/service/project/project.d.ts +6 -0
  129. package/dist-server/service/project/project.js +15 -4
  130. package/dist-server/service/project/project.js.map +1 -1
  131. package/dist-server/service/resource/resource-mutation.js +2 -2
  132. package/dist-server/service/resource/resource-mutation.js.map +1 -1
  133. package/dist-server/service/resource/resource-query.js +2 -2
  134. package/dist-server/service/resource/resource-query.js.map +1 -1
  135. package/dist-server/service/resource/resource-type.js +6 -6
  136. package/dist-server/service/resource/resource-type.js.map +1 -1
  137. package/dist-server/service/resource/resource.js +3 -3
  138. package/dist-server/service/resource/resource.js.map +1 -1
  139. package/dist-server/service/task/task-mutation.js +2 -2
  140. package/dist-server/service/task/task-mutation.js.map +1 -1
  141. package/dist-server/service/task/task-query.js +4 -4
  142. package/dist-server/service/task/task-query.js.map +1 -1
  143. package/dist-server/service/task/task-type.js +10 -10
  144. package/dist-server/service/task/task-type.js.map +1 -1
  145. package/dist-server/service/task/task.js +7 -8
  146. package/dist-server/service/task/task.js.map +1 -1
  147. package/dist-server/service/task-resource/task-resource-mutation.js +2 -2
  148. package/dist-server/service/task-resource/task-resource-mutation.js.map +1 -1
  149. package/dist-server/service/task-resource/task-resource-query.js +2 -2
  150. package/dist-server/service/task-resource/task-resource-query.js.map +1 -1
  151. package/dist-server/service/task-resource/task-resource-type.js +6 -6
  152. package/dist-server/service/task-resource/task-resource-type.js.map +1 -1
  153. package/dist-server/service/task-resource/task-resource.js +2 -2
  154. package/dist-server/service/task-resource/task-resource.js.map +1 -1
  155. package/dist-server/service/worker-type/worker-type-mutation.js +2 -2
  156. package/dist-server/service/worker-type/worker-type-mutation.js.map +1 -1
  157. package/dist-server/service/worker-type/worker-type-query.js +2 -2
  158. package/dist-server/service/worker-type/worker-type-query.js.map +1 -1
  159. package/dist-server/service/worker-type/worker-type-type.js +4 -4
  160. package/dist-server/service/worker-type/worker-type-type.js.map +1 -1
  161. package/dist-server/service/worker-type/worker-type.js +2 -2
  162. package/dist-server/service/worker-type/worker-type.js.map +1 -1
  163. package/dist-server/tsconfig.tsbuildinfo +1 -1
  164. package/package.json +13 -11
@@ -0,0 +1,627 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/fab/fab.js';
3
+ import '@material/web/icon/icon.js';
4
+ import gql from 'graphql-tag';
5
+ import { client } from '@operato/graphql';
6
+ import { css, html, LitElement } from 'lit';
7
+ import { customElement, property } from 'lit/decorators.js';
8
+ import { ButtonContainerStyles, ScrollbarStyles } from '@operato/styles';
9
+ import '@operato/input/ox-input-signature.js';
10
+ import { store } from '@operato/shell';
11
+ import { connect } from 'pwa-helpers/connect-mixin.js';
12
+ import { openPopup } from '@operato/layout';
13
+ import './comment-list-popup';
14
+ import './attachment-list-popup';
15
+ export var ChecklistTypeMainType;
16
+ (function (ChecklistTypeMainType) {
17
+ ChecklistTypeMainType["BASIC"] = "10";
18
+ ChecklistTypeMainType["NON_BASIC"] = "20";
19
+ })(ChecklistTypeMainType || (ChecklistTypeMainType = {}));
20
+ export const CHECKLIST_MAIN_TYPE_LIST = {
21
+ [ChecklistTypeMainType.BASIC]: '기본 업무',
22
+ [ChecklistTypeMainType.NON_BASIC]: '기본 외 업무'
23
+ };
24
+ export var BuildingInspectionStatus;
25
+ (function (BuildingInspectionStatus) {
26
+ BuildingInspectionStatus["WAIT"] = "WAIT";
27
+ BuildingInspectionStatus["OVERALL_WAIT"] = "OVERALL_WAIT";
28
+ BuildingInspectionStatus["REQUEST"] = "REQUEST";
29
+ BuildingInspectionStatus["OVERALL_REQUEST"] = "OVERALL_REQUEST";
30
+ BuildingInspectionStatus["PASS"] = "PASS";
31
+ BuildingInspectionStatus["FAIL"] = "FAIL";
32
+ })(BuildingInspectionStatus || (BuildingInspectionStatus = {}));
33
+ export const BUILDING_INSPECTION_STATUS_DISPLAY = {
34
+ [BuildingInspectionStatus.WAIT]: '검측 대기',
35
+ [BuildingInspectionStatus.OVERALL_WAIT]: '검측 대기',
36
+ [BuildingInspectionStatus.REQUEST]: '검측 요청',
37
+ [BuildingInspectionStatus.OVERALL_REQUEST]: '검측 요청',
38
+ [BuildingInspectionStatus.PASS]: '합격',
39
+ [BuildingInspectionStatus.FAIL]: '불합격'
40
+ };
41
+ export var ChecklistReferenceType;
42
+ (function (ChecklistReferenceType) {
43
+ ChecklistReferenceType["INSPECTION"] = "INSPECTION";
44
+ ChecklistReferenceType["SCHEDULE"] = "SCHEDULE"; // 공정표
45
+ })(ChecklistReferenceType || (ChecklistReferenceType = {}));
46
+ let ScheduleChecklistView = class ScheduleChecklistView extends connect(store)(LitElement) {
47
+ constructor() {
48
+ super(...arguments);
49
+ this.mode = "VIEWER" /* ChecklistMode.VIEWER */;
50
+ this.checklist = {};
51
+ this.buildingComplex = {
52
+ id: '',
53
+ taskConstructorEmails: [],
54
+ overallConstructorEmails: [],
55
+ taskSupervisoryEmails: [],
56
+ overallSupervisoryEmails: []
57
+ };
58
+ this.status = BuildingInspectionStatus.WAIT;
59
+ }
60
+ render() {
61
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
62
+ const today = this._getDate(new Date());
63
+ // 시공자 스탭 여부
64
+ const isConstructorStep = this.status == BuildingInspectionStatus.WAIT ||
65
+ this.status == BuildingInspectionStatus.OVERALL_WAIT ||
66
+ this.status == BuildingInspectionStatus.FAIL;
67
+ // 감리자 스탭 여부
68
+ const isSupervisoryStep = this.status == BuildingInspectionStatus.REQUEST || this.status == BuildingInspectionStatus.OVERALL_REQUEST;
69
+ // 현재 스탭에 해당하는 계정인지 체크 (편집모드만)
70
+ let havePermissionByStatus = false;
71
+ let isTaskConstructor = false;
72
+ let isOverallConstructor = false;
73
+ let isTaskSupervisory = false;
74
+ let isOverallSupervisory = false;
75
+ if (this.mode == "EDITOR" /* ChecklistMode.EDITOR */ && this.status) {
76
+ const email = (_b = (_a = store.getState().auth) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.email;
77
+ // 현재 유저가 "공종별 시공 관리자" 인지 체크
78
+ isTaskConstructor = ((_c = this.buildingComplex.taskConstructorEmails) === null || _c === void 0 ? void 0 : _c.includes(email)) || false;
79
+ // 현재 유저가 "총괄 시공 책임자" 인지 체크
80
+ isOverallConstructor = ((_d = this.buildingComplex.overallConstructorEmails) === null || _d === void 0 ? void 0 : _d.includes(email)) || false;
81
+ // 현재 유저가 "공종별 감리 책임자" 인지 체크
82
+ isTaskSupervisory = ((_e = this.buildingComplex.taskSupervisoryEmails) === null || _e === void 0 ? void 0 : _e.includes(email)) || false;
83
+ // 현재 유저가 "총괄 감리 책임자" 인지 체크
84
+ isOverallSupervisory = ((_f = this.buildingComplex.overallSupervisoryEmails) === null || _f === void 0 ? void 0 : _f.includes(email)) || false;
85
+ // 스탭이 시공자 스탭일때에 내가 시공자 권한이 있는지 체크
86
+ havePermissionByStatus = isConstructorStep
87
+ ? isTaskConstructor || isOverallConstructor
88
+ : isTaskSupervisory || isOverallSupervisory;
89
+ }
90
+ // 체크리스트 아이템 정렬
91
+ (_h = (_g = this.checklist) === null || _g === void 0 ? void 0 : _g.checklistItems) === null || _h === void 0 ? void 0 : _h.sort((a, b) => {
92
+ // 1순위: mainType 오름차순
93
+ if (a.mainType < b.mainType)
94
+ return -1;
95
+ if (a.mainType > b.mainType)
96
+ return 1;
97
+ // 2순위: detailType 오름차순
98
+ if (a.detailType < b.detailType)
99
+ return -1;
100
+ if (a.detailType > b.detailType)
101
+ return 1;
102
+ // 3순위: sequence 오름차순
103
+ return a.sequence - b.sequence;
104
+ });
105
+ const processedItems = this.drawChecklistItems(((_j = this.checklist) === null || _j === void 0 ? void 0 : _j.checklistItems) || []);
106
+ return html `
107
+ <div title-row>
108
+ <div name>${this.checklist.name}</div>
109
+ </div>
110
+ <table header>
111
+ <tr>
112
+ <th>공종</th>
113
+ <td>${this.checklist.constructionType}</td>
114
+ <th>문서 번호</th>
115
+ <td>${this.checklist.documentNo}</td>
116
+ </tr>
117
+ <tr>
118
+ <th>세부 공종</th>
119
+ <td>${this.checklist.constructionDetailType}</td>
120
+ <th>검측 상태</th>
121
+ <td>${BUILDING_INSPECTION_STATUS_DISPLAY[this.status]}</td>
122
+ </tr>
123
+ </table>
124
+
125
+ <table body>
126
+ <thead>
127
+ <tr>
128
+ <th colspan="2" rowspan="3" type>구분</th>
129
+ <th rowspan="3" inspection-name>검사항목</th>
130
+ <th rowspan="3" criteria>검사기준</th>
131
+ <th colspan="4" result>검사결과</th>
132
+ <th rowspan="3" small>첨부자료</th>
133
+ <th rowspan="3" small>조치사항</th>
134
+ </tr>
135
+ <tr>
136
+ <th colspan="2">시공자</th>
137
+ <th colspan="2">감리자</th>
138
+ </tr>
139
+ <tr>
140
+ <th>적합</th>
141
+ <th>부적합</th>
142
+ <th>적합</th>
143
+ <th>부적합</th>
144
+ </tr>
145
+ </thead>
146
+ <tbody>
147
+ ${processedItems.map(({ item, showMainTypeCell, mainTypeRowspan, showDetailTypeCell, detailTypeRowspan }, idx) => {
148
+ return html ` <tr>
149
+ ${showMainTypeCell
150
+ ? html `<td main-type bold rowspan="${mainTypeRowspan}">${CHECKLIST_MAIN_TYPE_LIST[item.mainType]}</td>`
151
+ : ''}
152
+ ${showDetailTypeCell ? html ` <td bold rowspan="${detailTypeRowspan}">${item.detailType}</td> ` : ''}
153
+
154
+ <td>${idx + 1}. ${item.name}</td>
155
+ <td>${item.inspctionCriteria}</td>
156
+ <td radio>
157
+ <md-radio
158
+ item-id=${item.id}
159
+ item-name="constructionConfirmStatus"
160
+ name=${'radio-construction-' + item.id}
161
+ value="T"
162
+ .checked=${item.constructionConfirmStatus === 'T'}
163
+ ?disabled=${!isConstructorStep || !havePermissionByStatus}
164
+ @change=${this._onChangeConfirmStatus}
165
+ ></md-radio>
166
+ </td>
167
+ <td radio>
168
+ <md-radio
169
+ item-id=${item.id}
170
+ item-name="constructionConfirmStatus"
171
+ name=${'radio-construction-' + item.id}
172
+ value="F"
173
+ .checked=${item.constructionConfirmStatus === 'F'}
174
+ ?disabled=${!isConstructorStep || !havePermissionByStatus}
175
+ @change=${this._onChangeConfirmStatus}
176
+ ></md-radio>
177
+ </td>
178
+ <td radio>
179
+ <md-radio
180
+ item-id=${item.id}
181
+ item-name="supervisoryConfirmStatus"
182
+ name=${'radio-supervisory-' + item.id}
183
+ value="T"
184
+ .checked=${item.supervisoryConfirmStatus === 'T'}
185
+ ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
186
+ @change=${this._onChangeConfirmStatus}
187
+ ></md-radio>
188
+ </td>
189
+ <td radio>
190
+ <md-radio
191
+ item-id=${item.id}
192
+ item-name="supervisoryConfirmStatus"
193
+ name=${'radio-supervisory-' + item.id}
194
+ value="F"
195
+ .checked=${item.supervisoryConfirmStatus === 'F'}
196
+ ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
197
+ @change=${this._onChangeConfirmStatus}
198
+ ></md-radio>
199
+ </td>
200
+ <td
201
+ attachment
202
+ ?disabled=${this.status == BuildingInspectionStatus.PASS}
203
+ @click=${() => this._onClickAttachment(item.id)}
204
+ >
205
+ <md-icon slot="icon">attach_file</md-icon>
206
+ <span>${(item === null || item === void 0 ? void 0 : item.checklistItemAttachmentCount) || ''}</span>
207
+ </td>
208
+ <td comment ?disabled=${this.status == BuildingInspectionStatus.PASS} @click=${() => this._onClickComment(item.id)}>
209
+ <md-icon slot="icon">chat</md-icon>
210
+ <span>${(item === null || item === void 0 ? void 0 : item.checklistItemCommentCount) || ''}</span>
211
+ </td>
212
+ </tr>`;
213
+ })}
214
+ </tbody>
215
+ </table>
216
+
217
+ <table tail>
218
+ <tbody>
219
+ <tr first>
220
+ <th rowspan="2">시공자 점검일</th>
221
+ <td rowspan="2">
222
+ ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.constructionInspectionDate)}
223
+ </td>
224
+ <th>공종별 시공 관리자</th>
225
+ <td>
226
+ <span sign-text>(인)</span>
227
+ <ox-input-signature
228
+ .value=${this.checklist.taskConstructorSignature}
229
+ name="taskConstructorSignature"
230
+ @change=${this._onChangeSignature}
231
+ ?disabled=${(this.status != BuildingInspectionStatus.WAIT && this.status != BuildingInspectionStatus.FAIL) ||
232
+ !isTaskConstructor}
233
+ >
234
+ </ox-input-signature>
235
+ </td>
236
+ </tr>
237
+ <tr>
238
+ <th>총괄 시공 책임자</th>
239
+ <td>
240
+ <span sign-text>(인)</span>
241
+ <ox-input-signature
242
+ .value=${this.checklist.overallConstructorSignature}
243
+ name="overallConstructorSignature"
244
+ @change=${this._onChangeSignature}
245
+ ?disabled=${this.status != BuildingInspectionStatus.OVERALL_WAIT || !isOverallConstructor}
246
+ >
247
+ </ox-input-signature>
248
+ </td>
249
+ </tr>
250
+ <tr>
251
+ <th rowspan="2">감리자 점검일</th>
252
+ <td rowspan="2">
253
+ ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.supervisorInspectionDate)}
254
+ </td>
255
+ <th>공종별 감리 책임자</th>
256
+ <td>
257
+ <span sign-text>(인)</span>
258
+ <ox-input-signature
259
+ .value=${this.checklist.taskSupervisorySignature}
260
+ name="taskSupervisorySignature"
261
+ @change=${this._onChangeSignature}
262
+ ?disabled=${this.status != BuildingInspectionStatus.REQUEST || !isTaskSupervisory}
263
+ >
264
+ </ox-input-signature>
265
+ </td>
266
+ </tr>
267
+ <tr>
268
+ <th>총괄 감리 책임자</th>
269
+ <td>
270
+ <span sign-text>(인)</span>
271
+ <ox-input-signature
272
+ .value=${this.checklist.overallSupervisorySignature}
273
+ name="overallSupervisorySignature"
274
+ @change=${this._onChangeSignature}
275
+ ?disabled=${this.status != BuildingInspectionStatus.OVERALL_REQUEST || !isOverallSupervisory}
276
+ >
277
+ </ox-input-signature>
278
+ </td>
279
+ </tr>
280
+ </tbody>
281
+ </table>
282
+
283
+ <div footer>
284
+ <div>
285
+ - 검사결과는 1차, 2차로 구분 재검측시 2차에 기록하고 검사기준도 검사결과와 비교될 수 있도록 시방서 또는 도면 등에 있는
286
+ 수치를 작성하며, 수치가 없는 검사항목은 시방서 또는 설계도서에 있는 내용과 검사한 내용으로 작성함
287
+ </div>
288
+ <div>- 검사항목 및 검사기준은 각 공종별로 감리원과 협의하여 작성할 것</div>
289
+ </div>
290
+ `;
291
+ }
292
+ _onChangeConfirmStatus(e) {
293
+ var _a, _b;
294
+ const target = e.target;
295
+ const itemId = target.getAttribute('item-id');
296
+ const name = target.getAttribute('item-name') || '';
297
+ const value = target.value;
298
+ this.checklist.checklistItems = (_b = (_a = this.checklist) === null || _a === void 0 ? void 0 : _a.checklistItems) === null || _b === void 0 ? void 0 : _b.map(item => item.id == itemId ? Object.assign(Object.assign({}, item), { [name]: value }) : item);
299
+ }
300
+ _onChangeSignature(e) {
301
+ const target = e.target;
302
+ this.checklist[target.name] = target.value;
303
+ }
304
+ _getDate(date) {
305
+ if (!date)
306
+ return ' 년 월 일';
307
+ const _date = new Date(date) || new Date();
308
+ return _date.toLocaleDateString('ko-KR', {
309
+ timeZone: 'Asia/Seoul',
310
+ year: 'numeric',
311
+ month: 'long',
312
+ day: 'numeric'
313
+ });
314
+ }
315
+ drawChecklistItems(checklistItems) {
316
+ const mainTypeRowspans = {};
317
+ const detailTypeRowspans = {};
318
+ let previousMainType = null;
319
+ let previousDetailType = null;
320
+ return checklistItems.map((item, index) => {
321
+ const mainType = item.mainType;
322
+ const detailType = item.detailType;
323
+ // mainType이 변경되면 rowspan을 계산
324
+ if (mainType !== previousMainType) {
325
+ mainTypeRowspans[mainType] = checklistItems.filter(i => i.mainType === mainType).length;
326
+ previousDetailType = null; // detailType 초기화
327
+ }
328
+ // detailType이 변경되면 rowspan을 계산
329
+ if (detailType !== previousDetailType) {
330
+ detailTypeRowspans[`${mainType}-${detailType}`] = checklistItems.filter(i => i.mainType === mainType && i.detailType === detailType).length;
331
+ }
332
+ const showMainTypeCell = mainType !== previousMainType;
333
+ const showDetailTypeCell = detailType !== previousDetailType;
334
+ const mainTypeRowspan = mainTypeRowspans[mainType];
335
+ const detailTypeRowspan = detailTypeRowspans[`${mainType}-${detailType}`];
336
+ // 이전 값을 업데이트
337
+ previousMainType = mainType;
338
+ previousDetailType = detailType;
339
+ return {
340
+ item,
341
+ showMainTypeCell,
342
+ mainTypeRowspan,
343
+ showDetailTypeCell,
344
+ detailTypeRowspan
345
+ };
346
+ });
347
+ }
348
+ _onClickComment(checklistItemId) {
349
+ openPopup(html `
350
+ <comment-list-popup
351
+ .checklistItemId=${checklistItemId}
352
+ .status=${this.status}
353
+ @change-comment=${this._refreshItem.bind(this)}
354
+ ></comment-list-popup>
355
+ `, { backdrop: true, size: 'medium', title: '조치 사항' });
356
+ }
357
+ _onClickAttachment(checklistItemId) {
358
+ openPopup(html `
359
+ <attachment-list-popup
360
+ .checklistItemId=${checklistItemId}
361
+ .status=${this.status}
362
+ @change-attachment=${this._refreshItem.bind(this)}
363
+ ></attachment-list-popup>
364
+ `, { backdrop: true, size: 'medium', title: '첨부 자료' });
365
+ }
366
+ async _refreshItem(e) {
367
+ var _a;
368
+ const { checklistItemId } = e.detail;
369
+ const response = await client.query({
370
+ query: gql `
371
+ query ChecklistItem($checklistItemId: String!) {
372
+ checklistItem(id: $checklistItemId) {
373
+ id
374
+ checklistItemCommentCount
375
+ checklistItemAttachmentCount
376
+ }
377
+ }
378
+ `,
379
+ variables: {
380
+ checklistItemId: checklistItemId
381
+ }
382
+ });
383
+ const checklistItem = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.checklistItem) || [];
384
+ this.checklist.checklistItems = this.checklist.checklistItems.map(item => {
385
+ return item.id != checklistItemId ? item : Object.assign(Object.assign({}, item), checklistItem);
386
+ });
387
+ this.requestUpdate();
388
+ }
389
+ };
390
+ ScheduleChecklistView.styles = [
391
+ ButtonContainerStyles,
392
+ ScrollbarStyles,
393
+ css `
394
+ :host {
395
+ display: flex;
396
+ flex: 1;
397
+ flex-direction: column;
398
+ padding: var(--spacing-large, 12px);
399
+ padding-top: 0;
400
+ font-size: 14px;
401
+ min-width: 800px;
402
+ }
403
+
404
+ [bold] {
405
+ font-weight: bold;
406
+ }
407
+
408
+ div[name] {
409
+ display: flex;
410
+ color: #586878;
411
+ font-size: 24px;
412
+ align-items: center;
413
+ justify-content: center;
414
+ }
415
+
416
+ table {
417
+ width: 100%;
418
+ font-size: 15px;
419
+ color: #586878;
420
+ text-align: left;
421
+ border-collapse: collapse;
422
+ td,
423
+ th {
424
+ border: 1px rgba(51, 51, 51, 0.2) solid;
425
+ padding-inline: var(--spacing-medium, 8px);
426
+ vertical-align: middle;
427
+ }
428
+ th {
429
+ background-color: #efefef;
430
+ font-weight: bold;
431
+ }
432
+ td {
433
+ height: 33px;
434
+ background-color: var(--md-sys-color-on-primary);
435
+ &[radio] {
436
+ text-align: center;
437
+ width: 50px;
438
+ }
439
+ }
440
+ }
441
+
442
+ table[header] {
443
+ margin-top: var(--spacing-small, 4px);
444
+
445
+ td {
446
+ min-width: 180px;
447
+ border-left: none;
448
+ }
449
+ th {
450
+ width: 110px;
451
+ border-right: none;
452
+ }
453
+ }
454
+
455
+ table[body] {
456
+ border: 2px solid var(--md-sys-color-on-primary-container);
457
+ border-bottom: none;
458
+ margin-top: var(--spacing-medium, 8px);
459
+
460
+ th {
461
+ text-align: center;
462
+
463
+ &[type] {
464
+ min-width: 150px;
465
+ }
466
+ &[inspection-name] {
467
+ min-width: 250px;
468
+ }
469
+ &[result] {
470
+ width: 270px;
471
+ }
472
+ &[criteria] {
473
+ width: 90px;
474
+ }
475
+ &[small] {
476
+ width: 60px;
477
+ }
478
+ }
479
+ td {
480
+ &[main-type] {
481
+ width: 50px;
482
+ text-align: center;
483
+ word-break: keep-all;
484
+ }
485
+
486
+ &[attachment] {
487
+ text-align: center;
488
+ cursor: pointer;
489
+
490
+ * {
491
+ vertical-align: middle;
492
+ }
493
+ }
494
+ &[comment] {
495
+ cursor: pointer;
496
+ text-align: center;
497
+
498
+ * {
499
+ vertical-align: middle;
500
+ }
501
+ }
502
+ &[disabled] * {
503
+ opacity: 0.6;
504
+ }
505
+ }
506
+ }
507
+
508
+ table[tail] {
509
+ border: 2px solid var(--md-sys-color-on-primary-container);
510
+ border-top: none;
511
+ margin-top: -1px;
512
+
513
+ td {
514
+ width: 25%;
515
+ border-left: none;
516
+ text-align: center;
517
+ position: relative;
518
+ background-color: var(--md-sys-color-on-primary);
519
+ font-size: 14px;
520
+ }
521
+ th {
522
+ width: 25%;
523
+ border-right: none;
524
+ }
525
+
526
+ span[sign-text] {
527
+ position: absolute;
528
+ top: 50%;
529
+ left: 50%;
530
+ transform: translate(-50%, -50%);
531
+ pointer-events: none;
532
+ }
533
+ ox-input-signature {
534
+ margin: var(--spacing-medium, 8px);
535
+
536
+ &[disabled] {
537
+ background: #eee;
538
+ }
539
+ }
540
+ }
541
+
542
+ div[footer] {
543
+ display: flex;
544
+ flex-direction: column;
545
+ gap: var(--spacing-tiny, 2px);
546
+ font-size: 12px;
547
+ margin-top: var(--spacing-medium, 8px);
548
+ color: #586878;
549
+ text-indent: -9px;
550
+ padding-left: var(--spacing-medium, 8px);
551
+ }
552
+
553
+ .stt-float-btns {
554
+ position: absolute;
555
+ top: 0;
556
+ right: 0;
557
+ display: flex;
558
+ gap: 8px;
559
+ z-index: 10;
560
+ }
561
+ .stt-float-btns button {
562
+ background: #fff;
563
+ border: 1px solid #ccc;
564
+ border-radius: 50%;
565
+ width: 38px;
566
+ height: 38px;
567
+ font-size: 18px;
568
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
569
+ cursor: pointer;
570
+ transition: background 0.2s;
571
+ outline: none;
572
+ }
573
+ .stt-float-btns button:hover {
574
+ background: #f2f2f2;
575
+ }
576
+ div[title-row] {
577
+ position: relative;
578
+ display: flex;
579
+ align-items: center;
580
+ justify-content: center;
581
+ margin-bottom: 8px;
582
+ }
583
+ div[name] {
584
+ color: #586878;
585
+ font-size: 24px;
586
+ font-weight: bold;
587
+ flex: 1;
588
+ text-align: center;
589
+ }
590
+
591
+ @keyframes pulse {
592
+ 0% {
593
+ filter: drop-shadow(0 0 0 #d32f2f);
594
+ }
595
+ 70% {
596
+ filter: drop-shadow(0 0 8px #d32f2f);
597
+ }
598
+ 100% {
599
+ filter: drop-shadow(0 0 0 #d32f2f);
600
+ }
601
+ }
602
+ .stt-fab[active] md-icon {
603
+ color: #d32f2f;
604
+ animation: pulse 1s infinite;
605
+ }
606
+ `
607
+ ];
608
+ __decorate([
609
+ property({ type: String }),
610
+ __metadata("design:type", String)
611
+ ], ScheduleChecklistView.prototype, "mode", void 0);
612
+ __decorate([
613
+ property({ type: Object }),
614
+ __metadata("design:type", Object)
615
+ ], ScheduleChecklistView.prototype, "checklist", void 0);
616
+ __decorate([
617
+ property({ type: Object }),
618
+ __metadata("design:type", Object)
619
+ ], ScheduleChecklistView.prototype, "buildingComplex", void 0);
620
+ __decorate([
621
+ property({ type: String }),
622
+ __metadata("design:type", String)
623
+ ], ScheduleChecklistView.prototype, "status", void 0);
624
+ ScheduleChecklistView = __decorate([
625
+ customElement('schedule-checklist-view')
626
+ ], ScheduleChecklistView);
627
+ //# sourceMappingURL=schedule-checklist-view.js.map