@dssp/supervision 0.0.11 → 0.0.13
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.
- package/client/pages/checklist/checklist-view.ts +12 -12
- package/dist-client/pages/checklist/checklist-view.js +12 -13
- package/dist-client/pages/checklist/checklist-view.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -376,18 +376,18 @@ class ChecklistView extends LitElement {
|
|
|
376
376
|
`
|
|
377
377
|
}
|
|
378
378
|
|
|
379
|
-
updated(_changed: PropertyValues): void {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
}
|
|
379
|
+
// updated(_changed: PropertyValues): void {
|
|
380
|
+
// if (_changed.has('checklist')) {
|
|
381
|
+
// if (this.checklist?.overallConstructorSignature)
|
|
382
|
+
// this.elOverallConstructorSignature.loadSignature(this.checklist?.overallConstructorSignature)
|
|
383
|
+
// if (this.checklist?.taskConstructorSignature)
|
|
384
|
+
// this.elTaskConstructorSignature.loadSignature(this.checklist?.taskConstructorSignature)
|
|
385
|
+
// if (this.checklist?.overallSupervisorySignature)
|
|
386
|
+
// this.elOverallSupervisorySignature.loadSignature(this.checklist?.overallSupervisorySignature)
|
|
387
|
+
// if (this.checklist?.taskSupervisorySignature)
|
|
388
|
+
// this.elTaskSupervisorySignature.loadSignature(this.checklist?.taskSupervisorySignature)
|
|
389
|
+
// }
|
|
390
|
+
// }
|
|
391
391
|
|
|
392
392
|
private _onChangeConfirmStatus(e: Event) {
|
|
393
393
|
const target = e.target as HTMLInputElement
|
|
@@ -216,19 +216,18 @@ let ChecklistView = class ChecklistView extends LitElement {
|
|
|
216
216
|
</div>
|
|
217
217
|
`;
|
|
218
218
|
}
|
|
219
|
-
updated(_changed) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
219
|
+
// updated(_changed: PropertyValues): void {
|
|
220
|
+
// if (_changed.has('checklist')) {
|
|
221
|
+
// if (this.checklist?.overallConstructorSignature)
|
|
222
|
+
// this.elOverallConstructorSignature.loadSignature(this.checklist?.overallConstructorSignature)
|
|
223
|
+
// if (this.checklist?.taskConstructorSignature)
|
|
224
|
+
// this.elTaskConstructorSignature.loadSignature(this.checklist?.taskConstructorSignature)
|
|
225
|
+
// if (this.checklist?.overallSupervisorySignature)
|
|
226
|
+
// this.elOverallSupervisorySignature.loadSignature(this.checklist?.overallSupervisorySignature)
|
|
227
|
+
// if (this.checklist?.taskSupervisorySignature)
|
|
228
|
+
// this.elTaskSupervisorySignature.loadSignature(this.checklist?.taskSupervisorySignature)
|
|
229
|
+
// }
|
|
230
|
+
// }
|
|
232
231
|
_onChangeConfirmStatus(e) {
|
|
233
232
|
var _a, _b;
|
|
234
233
|
const target = e.target;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checklist-view.js","sourceRoot":"","sources":["../../../client/pages/checklist/checklist-view.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport { css, html, LitElement, PropertyValues } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ButtonContainerStyles, ScrollbarStyles } from '@operato/styles'\nimport { CHECKLIST_MAIN_TYPE_LIST, BuildingInspectionStatus } from '../building-inspection/building-inspection-list'\nimport '@operato/input/ox-input-signature.js'\n\nexport const enum ChecklistMode {\n VIEWER = 'VIEWER',\n EDITOR = 'EDITOR'\n}\n\n@customElement('checklist-view')\nclass ChecklistView extends LitElement {\n static styles = [\n ButtonContainerStyles,\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n font-size: 14px;\n padding: 20px;\n min-width: 800px;\n\n background-color: var(--md-sys-color-surface);\n }\n\n [bold] {\n font-weight: bold;\n }\n\n div[name] {\n display: flex;\n color: #586878;\n font-size: 24px;\n font-weight: bold;\n align-items: center;\n justify-content: center;\n }\n\n table {\n width: 100%;\n font-size: 15px;\n color: #586878;\n text-align: left;\n border-collapse: collapse;\n td,\n th {\n border: 1px #999999 solid;\n padding-inline: 8px;\n }\n th {\n background-color: #efefef;\n font-weight: bold;\n }\n td {\n height: 35px;\n &[radio] {\n text-align: center;\n vertical-align: middle;\n width: 55px;\n }\n &[attachment] {\n width: 90px;\n }\n }\n }\n\n table[header] {\n margin-top: 5px;\n\n td {\n min-width: 180px;\n border-left: none;\n }\n th {\n width: 110px;\n border-right: none;\n }\n }\n\n table[body] {\n border: 2px solid #999999;\n border-bottom: none;\n margin-top: 10px;\n\n th {\n text-align: center;\n\n &[type] {\n min-width: 150px;\n }\n &[inspection-name] {\n min-width: 250px;\n }\n &[result] {\n width: 270px;\n }\n &[criteria] {\n width: 90px;\n }\n &[small] {\n width: 60px;\n }\n }\n td {\n &[main-type] {\n width: 50px;\n text-align: center;\n word-break: keep-all;\n }\n }\n }\n\n table[tail] {\n border: 2px solid #999999;\n border-top: none;\n margin-top: -1px;\n\n tr[first] td {\n border-top: none;\n }\n td {\n width: 25%;\n border-left: none;\n text-align: center;\n position: relative;\n }\n th {\n width: 25%;\n border-right: none;\n }\n\n span[sign-text] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n }\n ox-input-signature {\n margin: 10px;\n\n &[disabled] {\n background: #eee;\n }\n }\n }\n\n div[footer] {\n display: flex;\n flex-direction: column;\n gap: 3px;\n font-size: 12px;\n margin-top: 10px;\n color: #586878;\n text-indent: -9px;\n padding-left: 9px;\n }\n `\n ]\n\n @property({ type: String }) mode: ChecklistMode = ChecklistMode.VIEWER\n @property({ type: Object }) checklist: any = {}\n @property({ type: String }) status: BuildingInspectionStatus = BuildingInspectionStatus.WAIT\n\n @query('ox-input-signature[name=\"overallConstructorSignature\"]') private elOverallConstructorSignature\n @query('ox-input-signature[name=\"taskConstructorSignature\"]') private elTaskConstructorSignature\n @query('ox-input-signature[name=\"overallSupervisorySignature\"]') private elOverallSupervisorySignature\n @query('ox-input-signature[name=\"taskSupervisorySignature\"]') private elTaskSupervisorySignature\n\n render() {\n const today = this._getDate(new Date())\n const isConstructorStep = this.status == BuildingInspectionStatus.WAIT || this.status == BuildingInspectionStatus.FAIL\n const isSupervisoryStep = this.status == BuildingInspectionStatus.REQUEST\n\n // 체크리스트 아이템 정렬\n this.checklist?.checklistItems?.sort((a, b) => {\n // 1순위: mainType 오름차순\n if (a.mainType < b.mainType) return -1\n if (a.mainType > b.mainType) return 1\n\n // 2순위: detailType 오름차순\n if (a.detailType < b.detailType) return -1\n if (a.detailType > b.detailType) return 1\n\n // 3순위: sequence 오름차순\n return a.sequence - b.sequence\n })\n\n const processedItems = this.drawChecklistItems(this.checklist?.checklistItems || [])\n\n console.log('this.checklist :', this.checklist)\n\n return html`\n <div wrapper>\n <div name>${this.checklist.name}</div>\n\n <table header>\n <tr>\n <th>공종</th>\n <td>${this.checklist.constructionType}</td>\n <th>문서 번호</th>\n <td>${this.checklist.documentNo}</td>\n </tr>\n <tr>\n <th>세부 공종</th>\n <td>${this.checklist.constructionDetailType}</td>\n <th>위치 및 부위</th>\n <td>${this.checklist.location}</td>\n </tr>\n <tr>\n <th>검측 부위</th>\n <td>${this.checklist?.inspectionParts?.join(', ') || ''}</td>\n <th></th>\n <td></td>\n </tr>\n </table>\n\n <table body>\n <thead>\n <tr>\n <th colspan=\"2\" rowspan=\"3\" type>구분</th>\n <th rowspan=\"3\" inspection-name>검사항목</th>\n <th rowspan=\"3\" criteria>검사기준</th>\n <th colspan=\"4\" result>검사결과</th>\n <th rowspan=\"3\" small>첨부자료</th>\n <th rowspan=\"3\" small>조치사항</th>\n </tr>\n <tr>\n <th colspan=\"2\">시공자</th>\n <th colspan=\"2\">감리자</th>\n </tr>\n <tr>\n <th>적합</th>\n <th>부적합</th>\n <th>적합</th>\n <th>부적합</th>\n </tr>\n </thead>\n <tbody>\n ${processedItems.map(({ item, showMainTypeCell, mainTypeRowspan, showDetailTypeCell, detailTypeRowspan }, idx) => {\n return html` <tr>\n ${showMainTypeCell\n ? html`<td main-type bold rowspan=\"${mainTypeRowspan}\">${CHECKLIST_MAIN_TYPE_LIST[item.mainType]}</td>`\n : ''}\n ${showDetailTypeCell ? html` <td bold rowspan=\"${detailTypeRowspan}\">${item.detailType}</td> ` : ''}\n\n <td bold>${idx + 1}. ${item.name}</td>\n <td>${item.inspctionCriteria}</td>\n <td radio>\n <md-radio\n item-id=${item.id}\n item-name=\"constructionConfirmStatus\"\n name=${'radio-construction-' + item.id}\n value=\"T\"\n .checked=${item.constructionConfirmStatus === 'T'}\n ?disabled=${!isConstructorStep}\n @change=${this._onChangeConfirmStatus}\n ></md-radio>\n </td>\n <td radio>\n <md-radio\n item-id=${item.id}\n item-name=\"constructionConfirmStatus\"\n name=${'radio-construction-' + item.id}\n value=\"F\"\n .checked=${item.constructionConfirmStatus === 'F'}\n ?disabled=${!isConstructorStep}\n @change=${this._onChangeConfirmStatus}\n ></md-radio>\n </td>\n <td radio>\n <md-radio\n item-id=${item.id}\n item-name=\"supervisoryConfirmStatus\"\n name=${'radio-supervisory-' + item.id}\n value=\"T\"\n .checked=${item.supervisoryConfirmStatus === 'T'}\n ?disabled=${!isSupervisoryStep}\n @change=${this._onChangeConfirmStatus}\n ></md-radio>\n </td>\n <td radio>\n <md-radio\n item-id=${item.id}\n item-name=\"supervisoryConfirmStatus\"\n name=${'radio-supervisory-' + item.id}\n value=\"F\"\n .checked=${item.supervisoryConfirmStatus === 'F'}\n ?disabled=${!isSupervisoryStep}\n @change=${this._onChangeConfirmStatus}\n ></md-radio>\n </td>\n <td attachment></td>\n <td></td>\n </tr>`\n })}\n </tbody>\n </table>\n\n <table tail>\n <tbody>\n <tr first>\n <th rowspan=\"2\">시공자점검일</th>\n <td rowspan=\"2\">\n ${this.mode == ChecklistMode.VIEWER ? today : this._getDate(this.checklist.constructionInspectionDate)}\n </td>\n <th>총괄 시공책임자</th>\n <td>\n <span sign-text>(인)</span>\n <ox-input-signature\n .value=${this.checklist.overallConstructorSignature || ''}\n name=\"overallConstructorSignature\"\n @change=${this._onChangeSignature}\n ?disabled=${!isConstructorStep}\n >\n </ox-input-signature>\n </td>\n </tr>\n <tr>\n <th>공종별 시공관리자</th>\n <td>\n <span sign-text>(인)</span>\n <ox-input-signature\n .value=${this.checklist.taskConstructorSignature || ''}\n name=\"taskConstructorSignature\"\n @change=${this._onChangeSignature}\n ?disabled=${!isConstructorStep}\n >\n </ox-input-signature>\n </td>\n </tr>\n <tr>\n <th rowspan=\"2\">감리자점검일</th>\n <td rowspan=\"2\">\n ${this.mode == ChecklistMode.VIEWER ? today : this._getDate(this.checklist.supervisorInspectionDate)}\n </td>\n <th>총괄 감리책임자</th>\n <td>\n <span sign-text>(인)</span>\n <ox-input-signature\n .value=${this.checklist.overallSupervisorySignature || ''}\n name=\"overallSupervisorySignature\"\n @change=${this._onChangeSignature}\n ?disabled=${!isSupervisoryStep}\n >\n </ox-input-signature>\n </td>\n </tr>\n <tr>\n <th>공종별 감리 책임자</th>\n <td>\n <span sign-text>(인)</span>\n <ox-input-signature\n .value=${this.checklist.taskSupervisorySignature || ''}\n name=\"taskSupervisorySignature\"\n @change=${this._onChangeSignature}\n ?disabled=${!isSupervisoryStep}\n >\n </ox-input-signature>\n </td>\n </tr>\n </tbody>\n </table>\n\n <div footer>\n <div>\n - 검사결과는 1차, 2차로 구분 재검측시 2차에 기록하고 검사기준도 검사결과와 비교될 수 있도록 시방서 또는 도면 등에 있는\n 수치를 작성하며, 수치가 없는 검사항목은 시방서 또는 설계도서에 있는 내용과 검사한 내용으로 작성함\n </div>\n <div>- 검사항목 및 검사기준은 각 공종별로 감리원과 협의하여 작성할 것</div>\n </div>\n </div>\n `\n }\n\n updated(_changed: PropertyValues): void {\n if (_changed.has('checklist')) {\n if (this.checklist?.overallConstructorSignature)\n this.elOverallConstructorSignature.loadSignature(this.checklist?.overallConstructorSignature)\n if (this.checklist?.taskConstructorSignature)\n this.elTaskConstructorSignature.loadSignature(this.checklist?.taskConstructorSignature)\n if (this.checklist?.overallSupervisorySignature)\n this.elOverallSupervisorySignature.loadSignature(this.checklist?.overallSupervisorySignature)\n if (this.checklist?.taskSupervisorySignature)\n this.elTaskSupervisorySignature.loadSignature(this.checklist?.taskSupervisorySignature)\n }\n }\n\n private _onChangeConfirmStatus(e: Event) {\n const target = e.target as HTMLInputElement\n const itemId = target.getAttribute('item-id')\n const name = target.getAttribute('item-name') || ''\n const value = target.value\n\n this.checklist.checklistItems = this.checklist?.checklistItems?.map(item =>\n item.id == itemId ? { ...item, [name]: value } : item\n )\n }\n\n private _onChangeSignature(e: Event) {\n const target = e.target as HTMLInputElement\n\n this.checklist[target.name] = target.value\n }\n\n private _getDate(date) {\n if (!date) return ' 년 월 일'\n\n const _date = new Date(date) || new Date()\n return _date.toLocaleDateString('ko-KR', {\n timeZone: 'Asia/Seoul',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n })\n }\n\n private drawChecklistItems(checklistItems) {\n const mainTypeRowspans = {}\n const detailTypeRowspans = {}\n let previousMainType = null\n let previousDetailType = null\n\n return checklistItems.map((item, index) => {\n const mainType = item.mainType\n const detailType = item.detailType\n\n // mainType이 변경되면 rowspan을 계산\n if (mainType !== previousMainType) {\n mainTypeRowspans[mainType] = checklistItems.filter(i => i.mainType === mainType).length\n previousDetailType = null // detailType 초기화\n }\n\n // detailType이 변경되면 rowspan을 계산\n if (detailType !== previousDetailType) {\n detailTypeRowspans[`${mainType}-${detailType}`] = checklistItems.filter(\n i => i.mainType === mainType && i.detailType === detailType\n ).length\n }\n\n const showMainTypeCell = mainType !== previousMainType\n const showDetailTypeCell = detailType !== previousDetailType\n\n const mainTypeRowspan = mainTypeRowspans[mainType]\n const detailTypeRowspan = detailTypeRowspans[`${mainType}-${detailType}`]\n\n // 이전 값을 업데이트\n previousMainType = mainType\n previousDetailType = detailType\n\n return {\n item,\n showMainTypeCell,\n mainTypeRowspan,\n showDetailTypeCell,\n detailTypeRowspan\n }\n })\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"checklist-view.js","sourceRoot":"","sources":["../../../client/pages/checklist/checklist-view.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport { css, html, LitElement, PropertyValues } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ButtonContainerStyles, ScrollbarStyles } from '@operato/styles'\nimport { CHECKLIST_MAIN_TYPE_LIST, BuildingInspectionStatus } from '../building-inspection/building-inspection-list'\nimport '@operato/input/ox-input-signature.js'\n\nexport const enum ChecklistMode {\n VIEWER = 'VIEWER',\n EDITOR = 'EDITOR'\n}\n\n@customElement('checklist-view')\nclass ChecklistView extends LitElement {\n static styles = [\n ButtonContainerStyles,\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n font-size: 14px;\n padding: 20px;\n min-width: 800px;\n\n background-color: var(--md-sys-color-surface);\n }\n\n [bold] {\n font-weight: bold;\n }\n\n div[name] {\n display: flex;\n color: #586878;\n font-size: 24px;\n font-weight: bold;\n align-items: center;\n justify-content: center;\n }\n\n table {\n width: 100%;\n font-size: 15px;\n color: #586878;\n text-align: left;\n border-collapse: collapse;\n td,\n th {\n border: 1px #999999 solid;\n padding-inline: 8px;\n }\n th {\n background-color: #efefef;\n font-weight: bold;\n }\n td {\n height: 35px;\n &[radio] {\n text-align: center;\n vertical-align: middle;\n width: 55px;\n }\n &[attachment] {\n width: 90px;\n }\n }\n }\n\n table[header] {\n margin-top: 5px;\n\n td {\n min-width: 180px;\n border-left: none;\n }\n th {\n width: 110px;\n border-right: none;\n }\n }\n\n table[body] {\n border: 2px solid #999999;\n border-bottom: none;\n margin-top: 10px;\n\n th {\n text-align: center;\n\n &[type] {\n min-width: 150px;\n }\n &[inspection-name] {\n min-width: 250px;\n }\n &[result] {\n width: 270px;\n }\n &[criteria] {\n width: 90px;\n }\n &[small] {\n width: 60px;\n }\n }\n td {\n &[main-type] {\n width: 50px;\n text-align: center;\n word-break: keep-all;\n }\n }\n }\n\n table[tail] {\n border: 2px solid #999999;\n border-top: none;\n margin-top: -1px;\n\n tr[first] td {\n border-top: none;\n }\n td {\n width: 25%;\n border-left: none;\n text-align: center;\n position: relative;\n }\n th {\n width: 25%;\n border-right: none;\n }\n\n span[sign-text] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n }\n ox-input-signature {\n margin: 10px;\n\n &[disabled] {\n background: #eee;\n }\n }\n }\n\n div[footer] {\n display: flex;\n flex-direction: column;\n gap: 3px;\n font-size: 12px;\n margin-top: 10px;\n color: #586878;\n text-indent: -9px;\n padding-left: 9px;\n }\n `\n ]\n\n @property({ type: String }) mode: ChecklistMode = ChecklistMode.VIEWER\n @property({ type: Object }) checklist: any = {}\n @property({ type: String }) status: BuildingInspectionStatus = BuildingInspectionStatus.WAIT\n\n @query('ox-input-signature[name=\"overallConstructorSignature\"]') private elOverallConstructorSignature\n @query('ox-input-signature[name=\"taskConstructorSignature\"]') private elTaskConstructorSignature\n @query('ox-input-signature[name=\"overallSupervisorySignature\"]') private elOverallSupervisorySignature\n @query('ox-input-signature[name=\"taskSupervisorySignature\"]') private elTaskSupervisorySignature\n\n render() {\n const today = this._getDate(new Date())\n const isConstructorStep = this.status == BuildingInspectionStatus.WAIT || this.status == BuildingInspectionStatus.FAIL\n const isSupervisoryStep = this.status == BuildingInspectionStatus.REQUEST\n\n // 체크리스트 아이템 정렬\n this.checklist?.checklistItems?.sort((a, b) => {\n // 1순위: mainType 오름차순\n if (a.mainType < b.mainType) return -1\n if (a.mainType > b.mainType) return 1\n\n // 2순위: detailType 오름차순\n if (a.detailType < b.detailType) return -1\n if (a.detailType > b.detailType) return 1\n\n // 3순위: sequence 오름차순\n return a.sequence - b.sequence\n })\n\n const processedItems = this.drawChecklistItems(this.checklist?.checklistItems || [])\n\n console.log('this.checklist :', this.checklist)\n\n return html`\n <div wrapper>\n <div name>${this.checklist.name}</div>\n\n <table header>\n <tr>\n <th>공종</th>\n <td>${this.checklist.constructionType}</td>\n <th>문서 번호</th>\n <td>${this.checklist.documentNo}</td>\n </tr>\n <tr>\n <th>세부 공종</th>\n <td>${this.checklist.constructionDetailType}</td>\n <th>위치 및 부위</th>\n <td>${this.checklist.location}</td>\n </tr>\n <tr>\n <th>검측 부위</th>\n <td>${this.checklist?.inspectionParts?.join(', ') || ''}</td>\n <th></th>\n <td></td>\n </tr>\n </table>\n\n <table body>\n <thead>\n <tr>\n <th colspan=\"2\" rowspan=\"3\" type>구분</th>\n <th rowspan=\"3\" inspection-name>검사항목</th>\n <th rowspan=\"3\" criteria>검사기준</th>\n <th colspan=\"4\" result>검사결과</th>\n <th rowspan=\"3\" small>첨부자료</th>\n <th rowspan=\"3\" small>조치사항</th>\n </tr>\n <tr>\n <th colspan=\"2\">시공자</th>\n <th colspan=\"2\">감리자</th>\n </tr>\n <tr>\n <th>적합</th>\n <th>부적합</th>\n <th>적합</th>\n <th>부적합</th>\n </tr>\n </thead>\n <tbody>\n ${processedItems.map(({ item, showMainTypeCell, mainTypeRowspan, showDetailTypeCell, detailTypeRowspan }, idx) => {\n return html` <tr>\n ${showMainTypeCell\n ? html`<td main-type bold rowspan=\"${mainTypeRowspan}\">${CHECKLIST_MAIN_TYPE_LIST[item.mainType]}</td>`\n : ''}\n ${showDetailTypeCell ? html` <td bold rowspan=\"${detailTypeRowspan}\">${item.detailType}</td> ` : ''}\n\n <td bold>${idx + 1}. ${item.name}</td>\n <td>${item.inspctionCriteria}</td>\n <td radio>\n <md-radio\n item-id=${item.id}\n item-name=\"constructionConfirmStatus\"\n name=${'radio-construction-' + item.id}\n value=\"T\"\n .checked=${item.constructionConfirmStatus === 'T'}\n ?disabled=${!isConstructorStep}\n @change=${this._onChangeConfirmStatus}\n ></md-radio>\n </td>\n <td radio>\n <md-radio\n item-id=${item.id}\n item-name=\"constructionConfirmStatus\"\n name=${'radio-construction-' + item.id}\n value=\"F\"\n .checked=${item.constructionConfirmStatus === 'F'}\n ?disabled=${!isConstructorStep}\n @change=${this._onChangeConfirmStatus}\n ></md-radio>\n </td>\n <td radio>\n <md-radio\n item-id=${item.id}\n item-name=\"supervisoryConfirmStatus\"\n name=${'radio-supervisory-' + item.id}\n value=\"T\"\n .checked=${item.supervisoryConfirmStatus === 'T'}\n ?disabled=${!isSupervisoryStep}\n @change=${this._onChangeConfirmStatus}\n ></md-radio>\n </td>\n <td radio>\n <md-radio\n item-id=${item.id}\n item-name=\"supervisoryConfirmStatus\"\n name=${'radio-supervisory-' + item.id}\n value=\"F\"\n .checked=${item.supervisoryConfirmStatus === 'F'}\n ?disabled=${!isSupervisoryStep}\n @change=${this._onChangeConfirmStatus}\n ></md-radio>\n </td>\n <td attachment></td>\n <td></td>\n </tr>`\n })}\n </tbody>\n </table>\n\n <table tail>\n <tbody>\n <tr first>\n <th rowspan=\"2\">시공자점검일</th>\n <td rowspan=\"2\">\n ${this.mode == ChecklistMode.VIEWER ? today : this._getDate(this.checklist.constructionInspectionDate)}\n </td>\n <th>총괄 시공책임자</th>\n <td>\n <span sign-text>(인)</span>\n <ox-input-signature\n .value=${this.checklist.overallConstructorSignature || ''}\n name=\"overallConstructorSignature\"\n @change=${this._onChangeSignature}\n ?disabled=${!isConstructorStep}\n >\n </ox-input-signature>\n </td>\n </tr>\n <tr>\n <th>공종별 시공관리자</th>\n <td>\n <span sign-text>(인)</span>\n <ox-input-signature\n .value=${this.checklist.taskConstructorSignature || ''}\n name=\"taskConstructorSignature\"\n @change=${this._onChangeSignature}\n ?disabled=${!isConstructorStep}\n >\n </ox-input-signature>\n </td>\n </tr>\n <tr>\n <th rowspan=\"2\">감리자점검일</th>\n <td rowspan=\"2\">\n ${this.mode == ChecklistMode.VIEWER ? today : this._getDate(this.checklist.supervisorInspectionDate)}\n </td>\n <th>총괄 감리책임자</th>\n <td>\n <span sign-text>(인)</span>\n <ox-input-signature\n .value=${this.checklist.overallSupervisorySignature || ''}\n name=\"overallSupervisorySignature\"\n @change=${this._onChangeSignature}\n ?disabled=${!isSupervisoryStep}\n >\n </ox-input-signature>\n </td>\n </tr>\n <tr>\n <th>공종별 감리 책임자</th>\n <td>\n <span sign-text>(인)</span>\n <ox-input-signature\n .value=${this.checklist.taskSupervisorySignature || ''}\n name=\"taskSupervisorySignature\"\n @change=${this._onChangeSignature}\n ?disabled=${!isSupervisoryStep}\n >\n </ox-input-signature>\n </td>\n </tr>\n </tbody>\n </table>\n\n <div footer>\n <div>\n - 검사결과는 1차, 2차로 구분 재검측시 2차에 기록하고 검사기준도 검사결과와 비교될 수 있도록 시방서 또는 도면 등에 있는\n 수치를 작성하며, 수치가 없는 검사항목은 시방서 또는 설계도서에 있는 내용과 검사한 내용으로 작성함\n </div>\n <div>- 검사항목 및 검사기준은 각 공종별로 감리원과 협의하여 작성할 것</div>\n </div>\n </div>\n `\n }\n\n // updated(_changed: PropertyValues): void {\n // if (_changed.has('checklist')) {\n // if (this.checklist?.overallConstructorSignature)\n // this.elOverallConstructorSignature.loadSignature(this.checklist?.overallConstructorSignature)\n // if (this.checklist?.taskConstructorSignature)\n // this.elTaskConstructorSignature.loadSignature(this.checklist?.taskConstructorSignature)\n // if (this.checklist?.overallSupervisorySignature)\n // this.elOverallSupervisorySignature.loadSignature(this.checklist?.overallSupervisorySignature)\n // if (this.checklist?.taskSupervisorySignature)\n // this.elTaskSupervisorySignature.loadSignature(this.checklist?.taskSupervisorySignature)\n // }\n // }\n\n private _onChangeConfirmStatus(e: Event) {\n const target = e.target as HTMLInputElement\n const itemId = target.getAttribute('item-id')\n const name = target.getAttribute('item-name') || ''\n const value = target.value\n\n this.checklist.checklistItems = this.checklist?.checklistItems?.map(item =>\n item.id == itemId ? { ...item, [name]: value } : item\n )\n }\n\n private _onChangeSignature(e: Event) {\n const target = e.target as HTMLInputElement\n\n this.checklist[target.name] = target.value\n }\n\n private _getDate(date) {\n if (!date) return ' 년 월 일'\n\n const _date = new Date(date) || new Date()\n return _date.toLocaleDateString('ko-KR', {\n timeZone: 'Asia/Seoul',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n })\n }\n\n private drawChecklistItems(checklistItems) {\n const mainTypeRowspans = {}\n const detailTypeRowspans = {}\n let previousMainType = null\n let previousDetailType = null\n\n return checklistItems.map((item, index) => {\n const mainType = item.mainType\n const detailType = item.detailType\n\n // mainType이 변경되면 rowspan을 계산\n if (mainType !== previousMainType) {\n mainTypeRowspans[mainType] = checklistItems.filter(i => i.mainType === mainType).length\n previousDetailType = null // detailType 초기화\n }\n\n // detailType이 변경되면 rowspan을 계산\n if (detailType !== previousDetailType) {\n detailTypeRowspans[`${mainType}-${detailType}`] = checklistItems.filter(\n i => i.mainType === mainType && i.detailType === detailType\n ).length\n }\n\n const showMainTypeCell = mainType !== previousMainType\n const showDetailTypeCell = detailType !== previousDetailType\n\n const mainTypeRowspan = mainTypeRowspans[mainType]\n const detailTypeRowspan = detailTypeRowspans[`${mainType}-${detailType}`]\n\n // 이전 값을 업데이트\n previousMainType = mainType\n previousDetailType = detailType\n\n return {\n item,\n showMainTypeCell,\n mainTypeRowspan,\n showDetailTypeCell,\n detailTypeRowspan\n }\n })\n }\n}\n"]}
|