@dssp/project 1.0.0-y.0 → 1.0.1

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 (92) hide show
  1. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js +1 -2
  2. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js.map +1 -1
  3. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js +1 -2
  4. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js.map +1 -1
  5. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js +5 -4
  6. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js.map +1 -1
  7. package/dist-client/pages/project/popup/checklist/task-checklist-view.d.ts +1 -0
  8. package/dist-client/pages/project/popup/checklist/task-checklist-view.js +65 -10
  9. package/dist-client/pages/project/popup/checklist/task-checklist-view.js.map +1 -1
  10. package/dist-client/pages/project/project-detail.d.ts +6 -0
  11. package/dist-client/pages/project/project-detail.js +188 -82
  12. package/dist-client/pages/project/project-detail.js.map +1 -1
  13. package/dist-client/pages/project/project-list.d.ts +16 -0
  14. package/dist-client/pages/project/project-list.js +14 -6
  15. package/dist-client/pages/project/project-list.js.map +1 -1
  16. package/dist-client/pages/project/project-plan-management.js +6 -1
  17. package/dist-client/pages/project/project-plan-management.js.map +1 -1
  18. package/dist-client/pages/project/project-setting-list.d.ts +2 -0
  19. package/dist-client/pages/project/project-setting-list.js +29 -4
  20. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  21. package/dist-client/pages/project/project-task.js +8 -2
  22. package/dist-client/pages/project/project-task.js.map +1 -1
  23. package/dist-client/pages/project/project-update.d.ts +34 -0
  24. package/dist-client/pages/project/project-update.js +288 -8
  25. package/dist-client/pages/project/project-update.js.map +1 -1
  26. package/dist-client/pages/resource/construction-type-management.js +14 -0
  27. package/dist-client/pages/resource/construction-type-management.js.map +1 -1
  28. package/dist-client/pages/resource/resource-list-page.d.ts +1 -2
  29. package/dist-client/pages/resource/resource-list-page.js +1 -2
  30. package/dist-client/pages/resource/resource-list-page.js.map +1 -1
  31. package/dist-client/pages/task/task-list-page.d.ts +1 -2
  32. package/dist-client/pages/task/task-list-page.js +1 -2
  33. package/dist-client/pages/task/task-list-page.js.map +1 -1
  34. package/dist-client/pages/task-resource/task-resource-list-page.d.ts +1 -2
  35. package/dist-client/pages/task-resource/task-resource-list-page.js +1 -2
  36. package/dist-client/pages/task-resource/task-resource-list-page.js.map +1 -1
  37. package/dist-client/shared/domain-context.d.ts +18 -0
  38. package/dist-client/shared/domain-context.js +28 -0
  39. package/dist-client/shared/domain-context.js.map +1 -0
  40. package/dist-client/tsconfig.tsbuildinfo +1 -1
  41. package/dist-client/viewparts/domain-switch.d.ts +19 -0
  42. package/dist-client/viewparts/domain-switch.js +274 -0
  43. package/dist-client/viewparts/domain-switch.js.map +1 -0
  44. package/dist-server/migrations/1723861466414-seed-codes.js +1 -1
  45. package/dist-server/migrations/1723861466414-seed-codes.js.map +1 -1
  46. package/dist-server/service/construction-type/construction-type-query.d.ts +2 -2
  47. package/dist-server/service/construction-type/construction-type-query.js +5 -10
  48. package/dist-server/service/construction-type/construction-type-query.js.map +1 -1
  49. package/dist-server/service/construction-type/construction-type-type.d.ts +1 -0
  50. package/dist-server/service/construction-type/construction-type-type.js +4 -0
  51. package/dist-server/service/construction-type/construction-type-type.js.map +1 -1
  52. package/dist-server/service/construction-type/construction-type.d.ts +1 -0
  53. package/dist-server/service/construction-type/construction-type.js +5 -0
  54. package/dist-server/service/construction-type/construction-type.js.map +1 -1
  55. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.d.ts +2 -2
  56. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js +5 -10
  57. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js.map +1 -1
  58. package/dist-server/service/manager/manager-query.d.ts +1 -1
  59. package/dist-server/service/manager/manager-query.js +2 -6
  60. package/dist-server/service/manager/manager-query.js.map +1 -1
  61. package/dist-server/service/project/issue-project-code.d.ts +7 -0
  62. package/dist-server/service/project/issue-project-code.js +27 -0
  63. package/dist-server/service/project/issue-project-code.js.map +1 -0
  64. package/dist-server/service/project/project-mutation.d.ts +2 -0
  65. package/dist-server/service/project/project-mutation.js +119 -10
  66. package/dist-server/service/project/project-mutation.js.map +1 -1
  67. package/dist-server/service/project/project-query.d.ts +11 -3
  68. package/dist-server/service/project/project-query.js +118 -26
  69. package/dist-server/service/project/project-query.js.map +1 -1
  70. package/dist-server/service/project/project-type.d.ts +8 -2
  71. package/dist-server/service/project/project-type.js +25 -1
  72. package/dist-server/service/project/project-type.js.map +1 -1
  73. package/dist-server/service/project/project.d.ts +14 -0
  74. package/dist-server/service/project/project.js +59 -2
  75. package/dist-server/service/project/project.js.map +1 -1
  76. package/dist-server/service/resource/resource-mutation.js +5 -6
  77. package/dist-server/service/resource/resource-mutation.js.map +1 -1
  78. package/dist-server/service/resource/resource-query.d.ts +2 -2
  79. package/dist-server/service/resource/resource-query.js +5 -10
  80. package/dist-server/service/resource/resource-query.js.map +1 -1
  81. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js +2 -0
  82. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js.map +1 -1
  83. package/dist-server/service/task-checklist-binding/task-checklist-binding.js +1 -1
  84. package/dist-server/service/task-checklist-binding/task-checklist-binding.js.map +1 -1
  85. package/dist-server/service/task-resource/task-resource-query.d.ts +2 -2
  86. package/dist-server/service/task-resource/task-resource-query.js +4 -9
  87. package/dist-server/service/task-resource/task-resource-query.js.map +1 -1
  88. package/dist-server/service/worker-type/worker-type-query.d.ts +2 -2
  89. package/dist-server/service/worker-type/worker-type-query.js +5 -10
  90. package/dist-server/service/worker-type/worker-type-query.js.map +1 -1
  91. package/dist-server/tsconfig.tsbuildinfo +1 -1
  92. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"task-checklist-view.js","sourceRoot":"","sources":["../../../../../client/pages/project/popup/checklist/task-checklist-view.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { ButtonContainerStyles, ScrollbarStyles } from '@operato/styles'\nimport '@operato/input/ox-input-signature.js'\nimport { store } from '@operato/shell'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\nimport { openPopup } from '@operato/layout'\nimport './task-checklist-comment-list-popup'\nimport './task-checklist-attachment-list-popup'\n\nexport const enum ChecklistMode {\n VIEWER = 'VIEWER',\n EDITOR = 'EDITOR'\n}\nexport enum ChecklistTypeMainType {\n BASIC = '10',\n NON_BASIC = '20'\n}\nexport const CHECKLIST_MAIN_TYPE_LIST = {\n [ChecklistTypeMainType.BASIC]: '기본 업무',\n [ChecklistTypeMainType.NON_BASIC]: '기본 외 업무'\n}\nexport enum BuildingInspectionStatus {\n WAIT = 'WAIT',\n OVERALL_WAIT = 'OVERALL_WAIT',\n REQUEST = 'REQUEST',\n OVERALL_REQUEST = 'OVERALL_REQUEST',\n PASS = 'PASS',\n FAIL = 'FAIL'\n}\nexport const BUILDING_INSPECTION_STATUS_DISPLAY = {\n [BuildingInspectionStatus.WAIT]: '검측 대기',\n [BuildingInspectionStatus.OVERALL_WAIT]: '검측 대기',\n [BuildingInspectionStatus.REQUEST]: '검측 요청',\n [BuildingInspectionStatus.OVERALL_REQUEST]: '검측 요청',\n [BuildingInspectionStatus.PASS]: '합격',\n [BuildingInspectionStatus.FAIL]: '불합격'\n}\n\n@customElement('task-checklist-view')\nclass TaskChecklistView extends connect(store)(LitElement) {\n static styles = [\n ButtonContainerStyles,\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex: 1;\n flex-direction: column;\n padding: var(--spacing-large, 12px);\n padding-top: 0;\n font-size: 14px;\n min-width: 800px;\n }\n\n [bold] {\n font-weight: bold;\n }\n\n div[name] {\n display: flex;\n color: #586878;\n font-size: 24px;\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 rgba(51, 51, 51, 0.2) solid;\n padding-inline: var(--spacing-medium, 8px);\n vertical-align: middle;\n }\n th {\n background-color: #efefef;\n font-weight: bold;\n }\n td {\n height: 33px;\n background-color: var(--md-sys-color-on-primary);\n &[radio] {\n text-align: center;\n width: 50px;\n }\n }\n }\n\n table[header] {\n margin-top: var(--spacing-small, 4px);\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 var(--md-sys-color-on-primary-container);\n border-bottom: none;\n margin-top: var(--spacing-medium, 8px);\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 &[attachment] {\n text-align: center;\n cursor: pointer;\n\n * {\n vertical-align: middle;\n }\n }\n &[comment] {\n cursor: pointer;\n text-align: center;\n\n * {\n vertical-align: middle;\n }\n }\n &[disabled] * {\n opacity: 0.6;\n }\n }\n }\n\n table[tail] {\n border: 2px solid var(--md-sys-color-on-primary-container);\n border-top: none;\n margin-top: -1px;\n\n td {\n width: 25%;\n border-left: none;\n text-align: center;\n position: relative;\n background-color: var(--md-sys-color-on-primary);\n font-size: 14px;\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: var(--spacing-medium, 8px);\n\n &[disabled] {\n background: #eee;\n }\n }\n }\n\n div[footer] {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-tiny, 2px);\n font-size: 12px;\n margin-top: var(--spacing-medium, 8px);\n color: #586878;\n text-indent: -9px;\n padding-left: var(--spacing-medium, 8px);\n }\n\n .stt-float-btns {\n position: absolute;\n top: 0;\n right: 0;\n display: flex;\n gap: 8px;\n z-index: 10;\n }\n .stt-float-btns button {\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 50%;\n width: 38px;\n height: 38px;\n font-size: 18px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n cursor: pointer;\n transition: background 0.2s;\n outline: none;\n }\n .stt-float-btns button:hover {\n background: #f2f2f2;\n }\n div[title-row] {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 8px;\n }\n div[name] {\n color: #586878;\n font-size: 24px;\n font-weight: bold;\n flex: 1;\n text-align: center;\n }\n\n @keyframes pulse {\n 0% {\n filter: drop-shadow(0 0 0 #d32f2f);\n }\n 70% {\n filter: drop-shadow(0 0 8px #d32f2f);\n }\n 100% {\n filter: drop-shadow(0 0 0 #d32f2f);\n }\n }\n .stt-fab[active] md-icon {\n color: #d32f2f;\n animation: pulse 1s infinite;\n }\n `\n ]\n\n @property({ type: String }) mode: ChecklistMode = ChecklistMode.VIEWER\n @property({ type: Object }) checklist: any = {}\n @property({ type: Object }) buildingComplex = {\n id: '',\n taskConstructorEmails: [] as string[],\n overallConstructorEmails: [] as string[],\n taskSupervisoryEmails: [] as string[],\n overallSupervisoryEmails: [] as string[]\n }\n @property({ type: String }) status: BuildingInspectionStatus = BuildingInspectionStatus.WAIT\n\n render() {\n const today = this._getDate(new Date())\n\n // 시공자 스탭 여부\n const isConstructorStep =\n this.status == BuildingInspectionStatus.WAIT ||\n this.status == BuildingInspectionStatus.OVERALL_WAIT ||\n this.status == BuildingInspectionStatus.FAIL\n\n // 감리자 스탭 여부\n const isSupervisoryStep =\n this.status == BuildingInspectionStatus.REQUEST || this.status == BuildingInspectionStatus.OVERALL_REQUEST\n\n // 현재 스탭에 해당하는 계정인지 체크 (편집모드만)\n let havePermissionByStatus: boolean = false\n let isTaskConstructor: boolean = false\n let isOverallConstructor: boolean = false\n let isTaskSupervisory: boolean = false\n let isOverallSupervisory: boolean = false\n\n if (this.mode == ChecklistMode.EDITOR && this.status) {\n const email = (store.getState() as any).auth?.user?.email\n // 현재 유저가 \"공종별 시공 관리자\" 인지 체크\n isTaskConstructor = this.buildingComplex.taskConstructorEmails?.includes(email) || false\n // 현재 유저가 \"총괄 시공 책임자\" 인지 체크\n isOverallConstructor = this.buildingComplex.overallConstructorEmails?.includes(email) || false\n // 현재 유저가 \"공종별 감리 책임자\" 인지 체크\n isTaskSupervisory = this.buildingComplex.taskSupervisoryEmails?.includes(email) || false\n // 현재 유저가 \"총괄 감리 책임자\" 인지 체크\n isOverallSupervisory = this.buildingComplex.overallSupervisoryEmails?.includes(email) || false\n // 스탭이 시공자 스탭일때에 내가 시공자 권한이 있는지 체크\n havePermissionByStatus = isConstructorStep\n ? isTaskConstructor || isOverallConstructor\n : isTaskSupervisory || isOverallSupervisory\n }\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 return html`\n <div title-row>\n <div name>${this.checklist.name}</div>\n </div>\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>${BUILDING_INSPECTION_STATUS_DISPLAY[this.status]}</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>${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 || !havePermissionByStatus}\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 || !havePermissionByStatus}\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 || !havePermissionByStatus}\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 || !havePermissionByStatus}\n @change=${this._onChangeConfirmStatus}\n ></md-radio>\n </td>\n <td\n attachment\n ?disabled=${this.status == BuildingInspectionStatus.PASS}\n @click=${() => this._onClickAttachment(item.id)}\n >\n <md-icon slot=\"icon\">attach_file</md-icon>\n <span>${item?.checklistItemAttachmentCount || ''}</span>\n </td>\n <td comment ?disabled=${this.status == BuildingInspectionStatus.PASS} @click=${() => this._onClickComment(item.id)}>\n <md-icon slot=\"icon\">chat</md-icon>\n <span>${item?.checklistItemCommentCount || ''}</span>\n </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.taskConstructorSignature}\n name=\"taskConstructorSignature\"\n @change=${this._onChangeSignature}\n ?disabled=${(this.status != BuildingInspectionStatus.WAIT && this.status != BuildingInspectionStatus.FAIL) ||\n !isTaskConstructor}\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.overallConstructorSignature}\n name=\"overallConstructorSignature\"\n @change=${this._onChangeSignature}\n ?disabled=${this.status != BuildingInspectionStatus.OVERALL_WAIT || !isOverallConstructor}\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.taskSupervisorySignature}\n name=\"taskSupervisorySignature\"\n @change=${this._onChangeSignature}\n ?disabled=${this.status != BuildingInspectionStatus.REQUEST || !isTaskSupervisory}\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.overallSupervisorySignature}\n name=\"overallSupervisorySignature\"\n @change=${this._onChangeSignature}\n ?disabled=${this.status != BuildingInspectionStatus.OVERALL_REQUEST || !isOverallSupervisory}\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 `\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 private _onClickComment(checklistItemId: string) {\n openPopup(\n html`\n <task-checklist-comment-list-popup\n .checklistItemId=${checklistItemId}\n .status=${this.status}\n @change-comment=${this._refreshItem.bind(this)}\n ></task-checklist-comment-list-popup>\n `,\n { backdrop: true, size: 'medium', title: '조치 사항' }\n )\n }\n\n private _onClickAttachment(checklistItemId: string) {\n openPopup(\n html`\n <task-checklist-attachment-list-popup\n .checklistItemId=${checklistItemId}\n .status=${this.status}\n @change-attachment=${this._refreshItem.bind(this)}\n ></task-checklist-attachment-list-popup>\n `,\n { backdrop: true, size: 'medium', title: '첨부 자료' }\n )\n }\n\n private async _refreshItem(e) {\n const { checklistItemId } = e.detail\n const response = await client.query({\n query: gql`\n query ChecklistItem($checklistItemId: String!) {\n checklistItem(id: $checklistItemId) {\n id\n checklistItemCommentCount\n checklistItemAttachmentCount\n }\n }\n `,\n variables: {\n checklistItemId: checklistItemId\n }\n })\n\n const checklistItem = response.data?.checklistItem || []\n this.checklist.checklistItems = this.checklist.checklistItems.map(item => {\n return item.id != checklistItemId ? item : { ...item, ...checklistItem }\n })\n\n this.requestUpdate()\n }\n}\n"]}
1
+ {"version":3,"file":"task-checklist-view.js","sourceRoot":"","sources":["../../../../../client/pages/project/popup/checklist/task-checklist-view.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { ButtonContainerStyles, ScrollbarStyles } from '@operato/styles'\nimport '@operato/input/ox-input-signature.js'\nimport { store, connect } from '@operato/shell'\nimport { openPopup } from '@operato/layout'\nimport './task-checklist-comment-list-popup'\nimport './task-checklist-attachment-list-popup'\nimport '@dssp/supervision/dist-client/pages/checklist/kcs-criteria-popup'\n\nexport const enum ChecklistMode {\n VIEWER = 'VIEWER',\n EDITOR = 'EDITOR'\n}\nexport enum ChecklistTypeMainType {\n BASIC = '10',\n NON_BASIC = '20'\n}\nexport const CHECKLIST_MAIN_TYPE_LIST = {\n [ChecklistTypeMainType.BASIC]: '기본 업무',\n [ChecklistTypeMainType.NON_BASIC]: '기본 외 업무'\n}\nexport enum BuildingInspectionStatus {\n WAIT = 'WAIT',\n OVERALL_WAIT = 'OVERALL_WAIT',\n REQUEST = 'REQUEST',\n OVERALL_REQUEST = 'OVERALL_REQUEST',\n PASS = 'PASS',\n FAIL = 'FAIL'\n}\nexport const BUILDING_INSPECTION_STATUS_DISPLAY = {\n [BuildingInspectionStatus.WAIT]: '작업 완료',\n [BuildingInspectionStatus.OVERALL_WAIT]: '작업 완료',\n [BuildingInspectionStatus.REQUEST]: '감리 대기',\n [BuildingInspectionStatus.OVERALL_REQUEST]: '감리 대기',\n [BuildingInspectionStatus.PASS]: '검측 완료',\n [BuildingInspectionStatus.FAIL]: '조치 필요'\n}\n\n@customElement('task-checklist-view')\nclass TaskChecklistView extends connect(store)(LitElement) {\n static styles = [\n ButtonContainerStyles,\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex: 1;\n flex-direction: column;\n padding: var(--spacing-large, 12px);\n padding-top: 0;\n font-size: 14px;\n min-width: 800px;\n }\n\n [bold] {\n font-weight: bold;\n }\n\n div[name] {\n display: flex;\n color: #586878;\n font-size: 24px;\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 rgba(51, 51, 51, 0.2) solid;\n padding-inline: var(--spacing-medium, 8px);\n vertical-align: middle;\n }\n th {\n background-color: #efefef;\n font-weight: bold;\n }\n td {\n height: 33px;\n background-color: var(--md-sys-color-on-primary);\n &[radio] {\n text-align: center;\n width: 50px;\n }\n }\n }\n\n table[header] {\n margin-top: var(--spacing-small, 4px);\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 var(--md-sys-color-on-primary-container);\n border-bottom: none;\n margin-top: var(--spacing-medium, 8px);\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 &[attachment] {\n text-align: center;\n cursor: pointer;\n\n * {\n vertical-align: middle;\n }\n }\n &[comment] {\n cursor: pointer;\n text-align: center;\n\n * {\n vertical-align: middle;\n }\n }\n &[disabled] * {\n opacity: 0.6;\n }\n }\n }\n\n table[tail] {\n border: 2px solid var(--md-sys-color-on-primary-container);\n border-top: none;\n margin-top: -1px;\n\n td {\n width: 25%;\n border-left: none;\n text-align: center;\n position: relative;\n background-color: var(--md-sys-color-on-primary);\n font-size: 14px;\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: var(--spacing-medium, 8px);\n\n &[disabled] {\n background: #eee;\n }\n }\n }\n\n div[footer] {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-tiny, 2px);\n font-size: 12px;\n margin-top: var(--spacing-medium, 8px);\n color: #586878;\n text-indent: -9px;\n padding-left: var(--spacing-medium, 8px);\n }\n\n .stt-float-btns {\n position: absolute;\n top: 0;\n right: 0;\n display: flex;\n gap: 8px;\n z-index: 10;\n }\n .stt-float-btns button {\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 50%;\n width: 38px;\n height: 38px;\n font-size: 18px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n cursor: pointer;\n transition: background 0.2s;\n outline: none;\n }\n .stt-float-btns button:hover {\n background: #f2f2f2;\n }\n div[title-row] {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 8px;\n }\n div[name] {\n color: #586878;\n font-size: 24px;\n font-weight: bold;\n flex: 1;\n text-align: center;\n }\n\n @keyframes pulse {\n 0% {\n filter: drop-shadow(0 0 0 #d32f2f);\n }\n 70% {\n filter: drop-shadow(0 0 8px #d32f2f);\n }\n 100% {\n filter: drop-shadow(0 0 0 #d32f2f);\n }\n }\n .stt-fab[active] md-icon {\n color: #d32f2f;\n animation: pulse 1s infinite;\n }\n\n /* KCS 시방서 기준 셀 (클릭 시 상세 팝업) */\n td[kcs-criteria][has-kcs] {\n cursor: pointer;\n color: #2e79be;\n }\n td[kcs-criteria][has-kcs]:hover {\n background-color: #f0f7ff !important;\n }\n td[site-spec-criteria] {\n white-space: pre-wrap;\n }\n `\n ]\n\n @property({ type: String }) mode: ChecklistMode = ChecklistMode.VIEWER\n @property({ type: Object }) checklist: any = {}\n @property({ type: Object }) buildingComplex = {\n id: '',\n taskConstructorEmails: [] as string[],\n overallConstructorEmails: [] as string[],\n taskSupervisoryEmails: [] as string[],\n overallSupervisoryEmails: [] as string[]\n }\n @property({ type: String }) status: BuildingInspectionStatus = BuildingInspectionStatus.WAIT\n\n render() {\n const today = this._getDate(new Date())\n\n // 시공자 스탭 여부\n const isConstructorStep =\n this.status == BuildingInspectionStatus.WAIT ||\n this.status == BuildingInspectionStatus.OVERALL_WAIT ||\n this.status == BuildingInspectionStatus.FAIL\n\n // 감리자 스탭 여부\n const isSupervisoryStep =\n this.status == BuildingInspectionStatus.REQUEST || this.status == BuildingInspectionStatus.OVERALL_REQUEST\n\n // 현재 스탭에 해당하는 계정인지 체크 (편집모드만)\n let havePermissionByStatus: boolean = false\n let isTaskConstructor: boolean = false\n let isOverallConstructor: boolean = false\n let isTaskSupervisory: boolean = false\n let isOverallSupervisory: boolean = false\n\n if (this.mode == ChecklistMode.EDITOR && this.status) {\n const email = (store.getState() as any).auth?.user?.email\n // 현재 유저가 \"공종별 시공 관리자\" 인지 체크\n isTaskConstructor = this.buildingComplex.taskConstructorEmails?.includes(email) || false\n // 현재 유저가 \"총괄 시공 책임자\" 인지 체크\n isOverallConstructor = this.buildingComplex.overallConstructorEmails?.includes(email) || false\n // 현재 유저가 \"공종별 감리 책임자\" 인지 체크\n isTaskSupervisory = this.buildingComplex.taskSupervisoryEmails?.includes(email) || false\n // 현재 유저가 \"총괄 감리 책임자\" 인지 체크\n isOverallSupervisory = this.buildingComplex.overallSupervisoryEmails?.includes(email) || false\n // 스탭이 시공자 스탭일때에 내가 시공자 권한이 있는지 체크\n havePermissionByStatus = isConstructorStep\n ? isTaskConstructor || isOverallConstructor\n : isTaskSupervisory || isOverallSupervisory\n }\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 return html`\n <div title-row>\n <div name>${this.checklist.name}</div>\n </div>\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>${BUILDING_INSPECTION_STATUS_DISPLAY[this.status]}</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>KCS 시방서 기준</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 const kcs = this._parseKcs(item.kcsCriteria)\n const hasKcs = !!kcs\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>${idx + 1}. ${item.name}</td>\n <td\n kcs-criteria\n ?has-kcs=${hasKcs}\n @click=${hasKcs ? () => this._showKcsDetail(kcs, item.name) : null}\n >\n ${kcs?.file_label || ''}\n ${hasKcs ? html`<md-icon style=\"font-size:14px;vertical-align:middle;color:#2e79be;\">search</md-icon>` : ''}\n </td>\n <td site-spec-criteria>${item.siteSpecCriteria || ''}</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 || !havePermissionByStatus}\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 || !havePermissionByStatus}\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 || !havePermissionByStatus}\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 || !havePermissionByStatus}\n @change=${this._onChangeConfirmStatus}\n ></md-radio>\n </td>\n <td\n attachment\n ?disabled=${this.status == BuildingInspectionStatus.PASS}\n @click=${() => this._onClickAttachment(item.id)}\n >\n <md-icon slot=\"icon\">attach_file</md-icon>\n <span>${item?.checklistItemAttachmentCount || ''}</span>\n </td>\n <td comment ?disabled=${this.status == BuildingInspectionStatus.PASS} @click=${() => this._onClickComment(item.id)}>\n <md-icon slot=\"icon\">chat</md-icon>\n <span>${item?.checklistItemCommentCount || ''}</span>\n </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.taskConstructorSignature}\n name=\"taskConstructorSignature\"\n @change=${this._onChangeSignature}\n ?disabled=${(this.status != BuildingInspectionStatus.WAIT && this.status != BuildingInspectionStatus.FAIL) ||\n !isTaskConstructor}\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.overallConstructorSignature}\n name=\"overallConstructorSignature\"\n @change=${this._onChangeSignature}\n ?disabled=${this.status != BuildingInspectionStatus.OVERALL_WAIT || !isOverallConstructor}\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.taskSupervisorySignature}\n name=\"taskSupervisorySignature\"\n @change=${this._onChangeSignature}\n ?disabled=${this.status != BuildingInspectionStatus.REQUEST || !isTaskSupervisory}\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.overallSupervisorySignature}\n name=\"overallSupervisorySignature\"\n @change=${this._onChangeSignature}\n ?disabled=${this.status != BuildingInspectionStatus.OVERALL_REQUEST || !isOverallSupervisory}\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\n ${this._kcsDetail\n ? html`<kcs-criteria-popup\n .kcs=${this._kcsDetail}\n .itemName=${this._kcsDetailItem}\n @close=${this._hideKcsDetail}\n ></kcs-criteria-popup>`\n : ''}\n `\n }\n\n private _kcsDetail: any = null\n private _kcsDetailItem: string = ''\n\n // KCS 기준 JSON 문자열을 오브젝트로 파싱\n private _parseKcs(kcsCriteria?: string): any {\n if (!kcsCriteria) return null\n try {\n const obj = JSON.parse(kcsCriteria)\n return obj && (obj.file_label || obj.text) ? obj : null\n } catch {\n return null\n }\n }\n\n // KCS 기준 상세(text)를 팝업으로 표시\n private _showKcsDetail(kcs: any, itemName: string = '') {\n this._kcsDetail = kcs\n this._kcsDetailItem = itemName\n this.requestUpdate()\n }\n\n private _hideKcsDetail = () => {\n this._kcsDetail = null\n this.requestUpdate()\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 private _onClickComment(checklistItemId: string) {\n openPopup(\n html`\n <task-checklist-comment-list-popup\n .checklistItemId=${checklistItemId}\n .status=${this.status}\n @change-comment=${this._refreshItem.bind(this)}\n ></task-checklist-comment-list-popup>\n `,\n { backdrop: true, size: 'medium', title: '조치 사항' }\n )\n }\n\n private _onClickAttachment(checklistItemId: string) {\n openPopup(\n html`\n <task-checklist-attachment-list-popup\n .checklistItemId=${checklistItemId}\n .status=${this.status}\n @change-attachment=${this._refreshItem.bind(this)}\n ></task-checklist-attachment-list-popup>\n `,\n { backdrop: true, size: 'medium', title: '첨부 자료' }\n )\n }\n\n private async _refreshItem(e) {\n const { checklistItemId } = e.detail\n const response = await client.query({\n query: gql`\n query ChecklistItem($checklistItemId: String!) {\n checklistItem(id: $checklistItemId) {\n id\n checklistItemCommentCount\n checklistItemAttachmentCount\n }\n }\n `,\n variables: {\n checklistItemId: checklistItemId\n }\n })\n\n const checklistItem = response.data?.checklistItem || []\n this.checklist.checklistItems = this.checklist.checklistItems.map(item => {\n return item.id != checklistItemId ? item : { ...item, ...checklistItem }\n })\n\n this.requestUpdate()\n }\n}\n"]}
@@ -11,6 +11,7 @@ export interface InspectionSummary {
11
11
  request: number;
12
12
  pass: number;
13
13
  fail: number;
14
+ reWait: number;
14
15
  }
15
16
  interface Weather {
16
17
  rain: number;
@@ -30,11 +31,16 @@ export declare class ProjectDetail extends ProjectDetail_base {
30
31
  project: Project;
31
32
  buildingInspections: BuildingInspection[];
32
33
  inspectionSummary: InspectionSummary;
34
+ statusFilter: string;
35
+ configProjectType: string;
33
36
  weather: Weather;
34
37
  render(): import("lit-html").TemplateResult<1>;
35
38
  pageInitialized(lifecycle: PageLifecycle): Promise<void>;
36
39
  pageUpdated(changes: any, lifecycle: PageLifecycle): Promise<void>;
40
+ private _fetchProjectType;
37
41
  initProject(projectId?: string): Promise<void>;
42
+ private _onClickStatusFilter;
43
+ private _getStatusFilterLabel;
38
44
  private _onClickInspection;
39
45
  private _formatDate;
40
46
  }
@@ -10,9 +10,10 @@ import { ScopedElementsMixin } from '@open-wc/scoped-elements';
10
10
  import { client } from '@operato/graphql';
11
11
  import { ScrollbarStyles } from '@operato/styles';
12
12
  import gql from 'graphql-tag';
13
- import { BUILDING_INSPECTION_STATUS, ProjectType } from './project-list';
13
+ import { BUILDING_INSPECTION_STATUS, BUILDING_INSPECTION_RE_STATUS, ProjectType } from './project-list';
14
14
  import _getWeather from '../lib/waether';
15
15
  import '@operato/chart/ox-progress-circle.js';
16
+ import { isProjectTypeDomain } from '../../shared/domain-context';
16
17
  let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
17
18
  constructor() {
18
19
  super(...arguments);
@@ -36,8 +37,11 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
36
37
  wait: 0,
37
38
  request: 0,
38
39
  pass: 0,
39
- fail: 0
40
+ fail: 0,
41
+ reWait: 0
40
42
  };
43
+ this.statusFilter = '';
44
+ this.configProjectType = '';
41
45
  this.weather = {
42
46
  rain: 0,
43
47
  temperature: 0,
@@ -47,8 +51,11 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
47
51
  };
48
52
  }
49
53
  get context() {
54
+ var _a;
50
55
  return {
51
- title: '진행 프로젝트 상세 정보'
56
+ title: !isProjectTypeDomain() && ((_a = this.project) === null || _a === void 0 ? void 0 : _a.name)
57
+ ? `진행 중 프로젝트 상세 정보 - ${this.project.name}`
58
+ : '진행 중 프로젝트 상세 정보'
52
59
  };
53
60
  }
54
61
  render() {
@@ -61,29 +68,52 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
61
68
  ${this.project.name}
62
69
  </h2>
63
70
  <div button-container>
64
- <md-elevated-button
65
- target="_blank"
66
- href=${((_a = this.project.buildingComplex) === null || _a === void 0 ? void 0 : _a.virtualTourLink) || ''}
67
- ?disabled=${!((_b = this.project.buildingComplex) === null || _b === void 0 ? void 0 : _b.virtualTourLink)}
68
- >
69
- <md-icon slot="icon">smart_toy</md-icon>Virtual Tour
70
- </md-elevated-button>
71
- <md-elevated-button href=${`project-update/${this.project.id}`}>
72
- <md-icon slot="icon">assignment</md-icon>프로젝트 정보 수정
73
- </md-elevated-button>
74
- <md-elevated-button href=${`project-plan-management/${this.project.id}`}>
75
- <md-icon slot="icon">description</md-icon>도면 관리
76
- </md-elevated-button>
77
- <md-elevated-button href=${`project-task/${this.project.id}`}>
78
- <md-icon slot="icon">event_note</md-icon>공정표 관리
79
- </md-elevated-button>
71
+ ${this.configProjectType === ProjectType.DCSP
72
+ ? html `
73
+ <md-elevated-button href="employee-list"> <md-icon slot="icon">badge</md-icon>인력 관리 </md-elevated-button>
74
+ <md-elevated-button href=${`project-plan-management/${this.project.id}`}>
75
+ <md-icon slot="icon">description</md-icon>도면 관리
76
+ </md-elevated-button>
77
+ <md-elevated-button href=${`project-task/${this.project.id}`}>
78
+ <md-icon slot="icon">event_note</md-icon>공정표 관리
79
+ </md-elevated-button>
80
+ <md-elevated-button href=${`project-checklist-management/${this.project.id}`}>
81
+ <md-icon slot="icon">checklist</md-icon>체크리스트 관리
82
+ </md-elevated-button>
83
+ <md-elevated-button href=${`building-inspection-management/${this.project.id}`}>
84
+ <md-icon slot="icon">open_in_new</md-icon>업무 바로가기
85
+ </md-elevated-button>
86
+ `
87
+ : html `
88
+ <md-elevated-button
89
+ target="_blank"
90
+ href=${((_a = this.project.buildingComplex) === null || _a === void 0 ? void 0 : _a.virtualTourLink) || ''}
91
+ ?disabled=${!((_b = this.project.buildingComplex) === null || _b === void 0 ? void 0 : _b.virtualTourLink)}
92
+ >
93
+ <md-icon slot="icon">smart_toy</md-icon>Virtual Tour
94
+ </md-elevated-button>
95
+ <md-elevated-button href=${`project-update/${this.project.id}`}>
96
+ <md-icon slot="icon">assignment</md-icon>프로젝트 정보 수정
97
+ </md-elevated-button>
98
+ <md-elevated-button href=${`project-plan-management/${this.project.id}`}>
99
+ <md-icon slot="icon">description</md-icon>도면 관리
100
+ </md-elevated-button>
101
+ <md-elevated-button href=${`project-task/${this.project.id}`}>
102
+ <md-icon slot="icon">event_note</md-icon>공정표 관리
103
+ </md-elevated-button>
104
+ `}
80
105
  </div>
81
106
  </div>
82
107
 
83
108
  <div body>
84
109
  <div>
85
110
  <div left-top>
86
- <h3>기본 정보</h3>
111
+ <h3>
112
+ 기본 정보
113
+ <md-elevated-button href=${`project-update/${this.project.id}`}>
114
+ <md-icon slot="icon">assignment</md-icon>프로젝트 정보 수정
115
+ </md-elevated-button>
116
+ </h3>
87
117
  <div content-1>
88
118
  <img
89
119
  ?no-image=${!((_c = this.project.mainPhoto) === null || _c === void 0 ? void 0 : _c.fullpath)}
@@ -125,7 +155,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
125
155
  </div>
126
156
  <div row>
127
157
  <span>- 공사금액 : </span>
128
- <span>${(_o = (_m = this.project.buildingComplex) === null || _m === void 0 ? void 0 : _m.constructionCost) === null || _o === void 0 ? void 0 : _o.toLocaleString()} 원</span>
158
+ <span>${(_o = (_m = this.project.buildingComplex) === null || _m === void 0 ? void 0 : _m.constructionCost) === null || _o === void 0 ? void 0 : _o.toLocaleString()} 억원</span>
129
159
  </div>
130
160
  <div row>
131
161
  <span>- 세대수 : </span>
@@ -139,20 +169,19 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
139
169
  </div>
140
170
 
141
171
  <div left-bottom>
142
- <h3>조감도(BIM도면)</h3>
143
- ${((_t = (_s = this.project.buildingComplex) === null || _s === void 0 ? void 0 : _s.drawing) === null || _t === void 0 ? void 0 : _t.fullpath)
172
+ <h3>
173
+ 조감도(BIM도면)
174
+ <md-elevated-button
175
+ target="_blank"
176
+ href=${((_s = this.project.buildingComplex) === null || _s === void 0 ? void 0 : _s.virtualTourLink) || ''}
177
+ ?disabled=${!((_t = this.project.buildingComplex) === null || _t === void 0 ? void 0 : _t.virtualTourLink)}
178
+ >
179
+ <md-icon slot="icon">smart_toy</md-icon>Virtual Tour
180
+ </md-elevated-button>
181
+ </h3>
182
+ ${((_v = (_u = this.project.buildingComplex) === null || _u === void 0 ? void 0 : _u.drawing) === null || _v === void 0 ? void 0 : _v.fullpath)
144
183
  ? html `<div building-complex-img></div>`
145
184
  : html `<img building-complex-img src="/assets/images/img-building-complex-default.jpg" />`}
146
- <div>
147
- <div subject bold>개별 단지 상세정보 바로가기</div>
148
- <div building-container>
149
- ${(_v = (_u = this.project.buildingComplex) === null || _u === void 0 ? void 0 : _u.buildings) === null || _v === void 0 ? void 0 : _v.map(building => {
150
- return html `<md-outlined-button href=${`building-complex-detail/${this.project.id}?buildingId=${building.id}`}>
151
- ${building.name}
152
- </md-outlined-button>`;
153
- })}
154
- </div>
155
- </div>
156
185
  </div>
157
186
  </div>
158
187
 
@@ -289,36 +318,41 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
289
318
  </span>
290
319
  </div>
291
320
  </div>
321
+ <div notice>
322
+ <div name bold>공지사항</div>
323
+ <div content>${this.project.buildingComplex.notice}</div>
324
+ </div>
325
+
292
326
  <div inspection>
293
327
  <span name bold>
294
328
  <md-icon slot="icon">list_alt_add</md-icon>
295
- 시공검측<br />현황
329
+ 작업 현황
296
330
  </span>
297
- <span>
298
- <div>검측요청</div>
299
- <div bold>${this.inspectionSummary.request}</div>
331
+ <span ?active=${this.statusFilter === 'WAIT'} @click=${() => this._onClickStatusFilter('WAIT')}>
332
+ <div>작업 완료</div>
333
+ <div bold wait>${(this.inspectionSummary.wait || 0) - (this.inspectionSummary.reWait || 0)}</div>
300
334
  </span>
301
- <span>
302
- <div>검측대기</div>
303
- <div bold>${this.inspectionSummary.wait}</div>
335
+ <span ?active=${this.statusFilter === 'REQUEST'} @click=${() => this._onClickStatusFilter('REQUEST')}>
336
+ <div>감리 대기</div>
337
+ <div bold request>${this.inspectionSummary.request}</div>
304
338
  </span>
305
- <span>
306
- <div>합격</div>
307
- <div bold pass>${this.inspectionSummary.pass}</div>
308
- </span>
309
- <span>
310
- <div>불합격</div>
339
+ <span ?active=${this.statusFilter === 'FAIL'} @click=${() => this._onClickStatusFilter('FAIL')}>
340
+ <div>조치 필요</div>
311
341
  <div bold fail>${this.inspectionSummary.fail}</div>
312
342
  </span>
313
- </div>
314
- <div notice>
315
- <div name bold>공지사항</div>
316
- <div content>${this.project.buildingComplex.notice}</div>
343
+ <span ?active=${this.statusFilter === 'RE_WAIT'} @click=${() => this._onClickStatusFilter('RE_WAIT')}>
344
+ <div>재검측 대기</div>
345
+ <div bold re-wait>${this.inspectionSummary.reWait || 0}</div>
346
+ </span>
347
+ <span ?active=${this.statusFilter === 'PASS'} @click=${() => this._onClickStatusFilter('PASS')}>
348
+ <div>검측 완료</div>
349
+ <div bold pass>${this.inspectionSummary.pass}</div>
350
+ </span>
317
351
  </div>
318
352
  </div>
319
353
 
320
354
  <div right-bottom>
321
- <h3>검측 현황</h3>
355
+ <h3>검측 현황${this.statusFilter ? ` (${this._getStatusFilterLabel()} 목록)` : ''}</h3>
322
356
  <div table-container>
323
357
  <hr />
324
358
  <table>
@@ -329,7 +363,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
329
363
  <th width="10%">공종</th>
330
364
  <th width="22%">내용</th>
331
365
  <th width="15%">검측 요청일</th>
332
- <th width="10%">검측 결과</th>
366
+ <th width="10%">작업 상태</th>
333
367
  </tr>
334
368
  </thead>
335
369
  <tbody>
@@ -342,7 +376,8 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
342
376
  <td>${((_f = (_e = inspection.checklist) === null || _e === void 0 ? void 0 : _e.inspectionParts) === null || _f === void 0 ? void 0 : _f.join(', ')) || ''}</td>
343
377
  <td>${this._formatDate(inspection.requestDate)}</td>
344
378
  <td bold status=${inspection.status || ''}>
345
- ${inspection.status && BUILDING_INSPECTION_STATUS[inspection.status]}
379
+ ${inspection.status &&
380
+ ((inspection.failCount || 0) > 0 ? BUILDING_INSPECTION_RE_STATUS : BUILDING_INSPECTION_STATUS)[inspection.status]}
346
381
  </td>
347
382
  </tr>`;
348
383
  })}
@@ -356,10 +391,39 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
356
391
  }
357
392
  async pageInitialized(lifecycle) { }
358
393
  async pageUpdated(changes, lifecycle) {
394
+ var _a, _b;
359
395
  if (this.active) {
360
396
  this.projectId = lifecycle.resourceId || '';
361
- await this.initProject(lifecycle.resourceId);
397
+ // resourceId 없이 진입한 경우 (프로젝트 테넌트 → / 접속)
398
+ if (!this.projectId) {
399
+ const res = await client.query({
400
+ query: gql `
401
+ query {
402
+ currentProject {
403
+ id
404
+ }
405
+ }
406
+ `
407
+ });
408
+ const projectId = (_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.currentProject) === null || _b === void 0 ? void 0 : _b.id;
409
+ if (projectId) {
410
+ navigate(`project-detail/${projectId}`);
411
+ return;
412
+ }
413
+ }
414
+ await Promise.all([this.initProject(lifecycle.resourceId), this._fetchProjectType()]);
415
+ }
416
+ }
417
+ async _fetchProjectType() {
418
+ var _a;
419
+ const response = await client.query({
420
+ query: gql `
421
+ query {
422
+ currentProjectType
362
423
  }
424
+ `
425
+ });
426
+ this.configProjectType = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.currentProjectType) || '';
363
427
  }
364
428
  async initProject(projectId = '') {
365
429
  var _a, _b, _c, _d, _e;
@@ -417,12 +481,14 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
417
481
  request
418
482
  pass
419
483
  fail
484
+ reWait
420
485
  }
421
486
 
422
487
  buildingInspectionsOfProject(params: $params) {
423
488
  items {
424
489
  id
425
490
  status
491
+ failCount
426
492
  requestDate
427
493
  buildingLevel {
428
494
  id
@@ -447,10 +513,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
447
513
  variables: {
448
514
  id: projectId,
449
515
  projectId,
450
- params: {
451
- projectId,
452
- limit: 10
453
- }
516
+ params: Object.assign({ projectId, limit: 10 }, (this.statusFilter ? { statusFilter: this.statusFilter } : {}))
454
517
  }
455
518
  });
456
519
  if (response.errors)
@@ -458,11 +521,27 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
458
521
  this.project = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.project) || {};
459
522
  this.inspectionSummary = ((_b = response.data) === null || _b === void 0 ? void 0 : _b.inspectionSummary) || {};
460
523
  this.buildingInspections = ((_d = (_c = response.data) === null || _c === void 0 ? void 0 : _c.buildingInspectionsOfProject) === null || _d === void 0 ? void 0 : _d.items) || [];
524
+ this.updateContext();
461
525
  const { latitude, longitude } = (_e = this.project) === null || _e === void 0 ? void 0 : _e.buildingComplex;
462
526
  if (latitude && longitude) {
463
527
  this.weather = await _getWeather(latitude, longitude);
464
528
  }
465
529
  }
530
+ async _onClickStatusFilter(filter) {
531
+ // 같은 필터 클릭 시 해제
532
+ this.statusFilter = this.statusFilter === filter ? '' : filter;
533
+ await this.initProject(this.projectId);
534
+ }
535
+ _getStatusFilterLabel() {
536
+ const labels = {
537
+ WAIT: '작업 완료',
538
+ REQUEST: '감리 대기',
539
+ FAIL: '조치 필요',
540
+ RE_WAIT: '재검측 대기',
541
+ PASS: '검측 완료'
542
+ };
543
+ return labels[this.statusFilter] || '';
544
+ }
466
545
  _onClickInspection(buildingInspection) {
467
546
  var _a, _b, _c;
468
547
  console.log('buildingInspection :', buildingInspection);
@@ -474,14 +553,20 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
474
553
  }
475
554
  }
476
555
  _formatDate(date) {
477
- return date
478
- ? new Intl.DateTimeFormat('en-CA', {
556
+ if (!date)
557
+ return '';
558
+ try {
559
+ const parsed = typeof date === 'string' && /^\d+$/.test(date) ? new Date(Number(date)) : new Date(date);
560
+ return new Intl.DateTimeFormat('en-CA', {
479
561
  timeZone: 'Asia/Seoul',
480
562
  year: 'numeric',
481
563
  month: '2-digit',
482
564
  day: '2-digit'
483
- }).format(new Date(date))
484
- : '';
565
+ }).format(parsed);
566
+ }
567
+ catch (_a) {
568
+ return String(date).split('T')[0] || '';
569
+ }
485
570
  }
486
571
  };
487
572
  ProjectDetail.styles = [
@@ -572,6 +657,9 @@ ProjectDetail.styles = [
572
657
  gap: var(--spacing-medium, 8px);
573
658
 
574
659
  h3 {
660
+ display: flex;
661
+ align-items: center;
662
+ justify-content: space-between;
575
663
  color: #2e79be;
576
664
  font-size: 16px;
577
665
  margin: 0px;
@@ -580,6 +668,20 @@ ProjectDetail.styles = [
580
668
  text-decoration: none;
581
669
  color: #2e79be;
582
670
  }
671
+
672
+ md-elevated-button {
673
+ --md-elevated-button-container-height: 28px;
674
+ --md-elevated-button-label-text-size: 13px;
675
+ --md-elevated-button-container-color: #0595e5;
676
+ --md-elevated-button-label-text-color: var(--md-sys-color-on-primary);
677
+ --md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);
678
+ --md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);
679
+ --md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);
680
+ --md-elevated-button-icon-color: var(--md-sys-color-on-primary);
681
+ --md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);
682
+ --md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);
683
+ --md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);
684
+ }
583
685
  }
584
686
 
585
687
  & > div {
@@ -638,25 +740,6 @@ ProjectDetail.styles = [
638
740
  img {
639
741
  opacity: 0.5;
640
742
  }
641
-
642
- div[subject] {
643
- margin-bottom: var(--spacing-small, 4px);
644
- }
645
-
646
- div[building-container] {
647
- display: block;
648
-
649
- & > * {
650
- margin-right: var(--spacing-medium, 8px);
651
- margin-bottom: var(--spacing-medium, 8px);
652
- }
653
- md-outlined-button {
654
- --md-outlined-button-container-height: 30px;
655
- --md-outlined-button-trailing-space: var(--spacing-medium, 8px);
656
- --md-outlined-button-leading-space: var(--spacing-medium, 8px);
657
- --md-sys-color-outline: rgba(51, 51, 51, 0.2);
658
- }
659
- }
660
743
  }
661
744
 
662
745
  div[right-top] {
@@ -720,7 +803,7 @@ ProjectDetail.styles = [
720
803
  }
721
804
  div[inspection] {
722
805
  display: grid;
723
- grid-template-columns: 1.4fr 0.9fr 0.9fr 0.9fr 0.9fr;
806
+ grid-template-columns: 1.4fr 0.9fr 0.9fr 0.9fr 0.9fr 0.9fr;
724
807
  margin-top: 10px;
725
808
  background: #f6f6f6;
726
809
  border-radius: 7px;
@@ -731,6 +814,18 @@ ProjectDetail.styles = [
731
814
  flex-direction: column;
732
815
  align-items: center;
733
816
  justify-content: center;
817
+ border-radius: 5px;
818
+ padding: 4px 0;
819
+
820
+ &:not([name]) {
821
+ cursor: pointer;
822
+ }
823
+ &:not([name]):hover {
824
+ background: #e8e8e8;
825
+ }
826
+ &[active] {
827
+ background: #dceefb;
828
+ }
734
829
 
735
830
  div[wait] {
736
831
  color: #4e5055;
@@ -744,6 +839,9 @@ ProjectDetail.styles = [
744
839
  div[fail] {
745
840
  color: #ff4444;
746
841
  }
842
+ div[re-wait] {
843
+ color: #e89c0e;
844
+ }
747
845
  }
748
846
  & > span[name] {
749
847
  flex-direction: row;
@@ -948,6 +1046,14 @@ __decorate([
948
1046
  state(),
949
1047
  __metadata("design:type", Object)
950
1048
  ], ProjectDetail.prototype, "inspectionSummary", void 0);
1049
+ __decorate([
1050
+ state(),
1051
+ __metadata("design:type", String)
1052
+ ], ProjectDetail.prototype, "statusFilter", void 0);
1053
+ __decorate([
1054
+ state(),
1055
+ __metadata("design:type", String)
1056
+ ], ProjectDetail.prototype, "configProjectType", void 0);
951
1057
  __decorate([
952
1058
  state(),
953
1059
  __metadata("design:type", Object)