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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist-client/index.d.ts +1 -0
  2. package/dist-client/index.js +1 -1
  3. package/dist-client/index.js.map +1 -1
  4. package/dist-client/pages/lib/chatbot-widget.d.ts +53 -0
  5. package/dist-client/pages/lib/chatbot-widget.js +631 -0
  6. package/dist-client/pages/lib/chatbot-widget.js.map +1 -0
  7. package/dist-client/pages/lib/select2-component.d.ts +1 -1
  8. package/dist-client/pages/lib/select2-component.js +35 -35
  9. package/dist-client/pages/lib/select2-component.js.map +1 -1
  10. package/dist-client/pages/project/component/pagenation.d.ts +18 -0
  11. package/dist-client/pages/project/component/pagenation.js +142 -0
  12. package/dist-client/pages/project/component/pagenation.js.map +1 -0
  13. package/dist-client/pages/project/component/project-update-header.js +26 -3
  14. package/dist-client/pages/project/component/project-update-header.js.map +1 -1
  15. package/dist-client/pages/project/popup/checklist/{attachment-list-popup.js → task-checklist-attachment-list-popup.js} +15 -15
  16. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js.map +1 -0
  17. package/dist-client/pages/project/popup/checklist/{comment-list-popup.js → task-checklist-comment-list-popup.js} +18 -18
  18. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js.map +1 -0
  19. package/dist-client/pages/project/popup/checklist/{schedule-checklist-create-popup.d.ts → task-checklist-create-popup.d.ts} +0 -1
  20. package/dist-client/pages/project/popup/checklist/{schedule-checklist-create-popup.js → task-checklist-create-popup.js} +35 -38
  21. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js.map +1 -0
  22. package/dist-client/pages/project/popup/checklist/{schedule-checklist-view.d.ts → task-checklist-view.d.ts} +2 -7
  23. package/dist-client/pages/project/popup/checklist/{schedule-checklist-view.js → task-checklist-view.js} +16 -22
  24. package/dist-client/pages/project/popup/checklist/task-checklist-view.js.map +1 -0
  25. package/dist-client/pages/project/popup/popup-plan-export.js +8 -2
  26. package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -1
  27. package/dist-client/pages/project/popup/{popup-schedule-upload.d.ts → popup-task-upload.d.ts} +1 -1
  28. package/dist-client/pages/project/popup/{popup-schedule-upload.js → popup-task-upload.js} +9 -9
  29. package/dist-client/pages/project/popup/popup-task-upload.js.map +1 -0
  30. package/dist-client/pages/project/project-completed-list.d.ts +5 -0
  31. package/dist-client/pages/project/project-completed-list.js +32 -3
  32. package/dist-client/pages/project/project-completed-list.js.map +1 -1
  33. package/dist-client/pages/project/project-detail.js +50 -20
  34. package/dist-client/pages/project/project-detail.js.map +1 -1
  35. package/dist-client/pages/project/project-list.d.ts +41 -0
  36. package/dist-client/pages/project/project-list.js +66 -3
  37. package/dist-client/pages/project/project-list.js.map +1 -1
  38. package/dist-client/pages/project/project-setting-list.d.ts +5 -0
  39. package/dist-client/pages/project/project-setting-list.js +32 -3
  40. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  41. package/dist-client/pages/project/{project-schedule-list.d.ts → project-task-list.d.ts} +2 -2
  42. package/dist-client/pages/project/{project-schedule-list.js → project-task-list.js} +11 -11
  43. package/dist-client/pages/project/project-task-list.js.map +1 -0
  44. package/dist-client/pages/project/{project-schedule.d.ts → project-task.d.ts} +17 -6
  45. package/dist-client/pages/project/project-task.js +686 -0
  46. package/dist-client/pages/project/project-task.js.map +1 -0
  47. package/dist-client/pages/project/project-update.js +221 -28
  48. package/dist-client/pages/project/project-update.js.map +1 -1
  49. package/dist-client/route.d.ts +1 -1
  50. package/dist-client/route.js +4 -4
  51. package/dist-client/route.js.map +1 -1
  52. package/dist-client/tsconfig.tsbuildinfo +1 -1
  53. package/dist-server/controllers/parse-excel.js.map +1 -1
  54. package/dist-server/service/index.d.ts +2 -2
  55. package/dist-server/service/index.js +5 -2
  56. package/dist-server/service/index.js.map +1 -1
  57. package/dist-server/service/project/project-mutation.js +5 -1
  58. package/dist-server/service/project/project-mutation.js.map +1 -1
  59. package/dist-server/service/project/project-query.d.ts +3 -0
  60. package/dist-server/service/project/project-query.js +48 -0
  61. package/dist-server/service/project/project-query.js.map +1 -1
  62. package/dist-server/service/project/project-type.d.ts +5 -0
  63. package/dist-server/service/project/project-type.js +19 -1
  64. package/dist-server/service/project/project-type.js.map +1 -1
  65. package/dist-server/service/project/project.d.ts +9 -0
  66. package/dist-server/service/project/project.js +31 -1
  67. package/dist-server/service/project/project.js.map +1 -1
  68. package/dist-server/service/task/task-query.d.ts +2 -0
  69. package/dist-server/service/task/task-query.js +11 -0
  70. package/dist-server/service/task/task-query.js.map +1 -1
  71. package/dist-server/service/task/task.d.ts +2 -0
  72. package/dist-server/service/task/task.js +6 -0
  73. package/dist-server/service/task/task.js.map +1 -1
  74. package/dist-server/service/task-checklist-binding/index.d.ts +5 -0
  75. package/dist-server/service/task-checklist-binding/index.js +9 -0
  76. package/dist-server/service/task-checklist-binding/index.js.map +1 -0
  77. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.d.ts +5 -0
  78. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js +186 -0
  79. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js.map +1 -0
  80. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.d.ts +8 -0
  81. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js +61 -0
  82. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js.map +1 -0
  83. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.d.ts +15 -0
  84. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js +57 -0
  85. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js.map +1 -0
  86. package/dist-server/service/task-checklist-binding/task-checklist-binding.d.ts +22 -0
  87. package/dist-server/service/task-checklist-binding/task-checklist-binding.js +106 -0
  88. package/dist-server/service/task-checklist-binding/task-checklist-binding.js.map +1 -0
  89. package/dist-server/tsconfig.tsbuildinfo +1 -1
  90. package/package.json +5 -3
  91. package/things-factory.config.js +3 -3
  92. package/translations/en.json +10 -9
  93. package/translations/ja.json +15 -1
  94. package/translations/ko.json +3 -0
  95. package/translations/ms.json +15 -1
  96. package/translations/zh.json +15 -1
  97. package/dist-client/pages/project/popup/checklist/attachment-list-popup.js.map +0 -1
  98. package/dist-client/pages/project/popup/checklist/comment-list-popup.js.map +0 -1
  99. package/dist-client/pages/project/popup/checklist/schedule-checklist-create-popup.js.map +0 -1
  100. package/dist-client/pages/project/popup/checklist/schedule-checklist-view.js.map +0 -1
  101. package/dist-client/pages/project/popup/popup-schedule-upload.js.map +0 -1
  102. package/dist-client/pages/project/project-schedule-list.js.map +0 -1
  103. package/dist-client/pages/project/project-schedule.js +0 -422
  104. package/dist-client/pages/project/project-schedule.js.map +0 -1
  105. /package/dist-client/pages/project/popup/checklist/{attachment-list-popup.d.ts → task-checklist-attachment-list-popup.d.ts} +0 -0
  106. /package/dist-client/pages/project/popup/checklist/{comment-list-popup.d.ts → task-checklist-comment-list-popup.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"project-update.js","sourceRoot":"","sources":["../../../client/pages/project/project-update.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\nimport '@material/web/textfield/outlined-text-field.js'\n\nimport { PageView } from '@operato/shell'\nimport { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'\nimport { css, html } from 'lit'\nimport { customElement, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { client } from '@operato/graphql'\nimport { notify } from '@operato/layout'\nimport gql from 'graphql-tag'\nimport { Project } from './project-list'\nimport '../lib/select2-component'\nimport './component/project-update-header'\n\n@customElement('project-update')\nexport class ProjectUpdate extends ScopedElementsMixin(PageView) {\n static styles = [\n css`\n :host {\n display: grid;\n grid-template-rows: 55px auto;\n color: #4e5055;\n\n width: 100%;\n background-color: var(--md-sys-color-background, #f6f6f6);\n overflow-y: auto;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n md-outlined-text-field {\n width: 100%;\n\n --md-outlined-text-field-container-shape: 5px;\n --md-outlined-text-field-outline-color: rgba(51, 51, 51, 0.2);\n --md-outlined-text-field-focus-outline-color: #1f7fd9;\n --md-outlined-text-field-focus-outline-width: 1px;\n --md-sys-color-primary: #586878;\n --md-outlined-text-field-input-text-size: 14px;\n --md-outlined-field-bottom-space: 3px;\n --md-outlined-field-top-space: 3px;\n --md-outlined-field-leading-space: var(--spacing-medium, 8px);\n --md-outlined-field-trailing-space: var(--spacing-medium, 8px);\n }\n select2-component {\n width: 100%;\n }\n input[type='date'] {\n border: 1px solid rgba(51, 51, 51, 0.2);\n padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);\n border-radius: 5px;\n }\n md-outlined-text-field[type='textarea'] {\n width: 100%;\n height: 120px;\n resize: none;\n }\n\n ox-input-image {\n width: 120px;\n height: 90px;\n }\n ox-input-file {\n width: 120px;\n height: 90px;\n padding: 0;\n }\n\n div[body] {\n display: flex;\n margin: var(--spacing-large, 12px);\n margin-top: 0;\n gap: var(--spacing-medium, 8px);\n\n & > div {\n display: flex;\n height: fit-content;\n flex-direction: column;\n padding: var(--spacing-large, 12px);\n background-color: var(--md-sys-color-on-primary);\n border: 1px solid #cccccc80;\n border-radius: 5px;\n gap: var(--spacing-medium, 8px);\n\n h3 {\n color: #2e79be;\n font-size: 16px;\n margin: 0px;\n }\n\n div[row] {\n display: flex;\n align-items: center;\n\n span:first-child {\n flex: 0.3;\n text-align: right;\n font-size: 14px;\n }\n\n span:last-child {\n flex: 0.7;\n display: flex;\n gap: var(--spacing-medium, 8px);\n margin-left: var(--spacing-medium, 8px);\n align-items: center;\n\n &[align-end] {\n align-items: end;\n }\n }\n }\n }\n\n div[project-info] {\n flex: 0.55;\n }\n\n div[detail-info] {\n flex: 0.45;\n padding: 0px;\n gap: 10px;\n background-color: transparent;\n border: none;\n\n & > div {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-medium, 8px);\n border: 1px solid #cccccc80;\n border-radius: 5px;\n padding: var(--spacing-large, 12px);\n background-color: var(--md-sys-color-on-primary);\n\n md-outlined-text-field[type='text'] {\n width: 60%;\n }\n\n md-elevated-button {\n --md-elevated-button-container-height: 30px;\n --md-elevated-button-container-color: var(--md-sys-color-on-primary);\n --md-elevated-button-label-text-size: 16px;\n }\n hr {\n border: 1px rgba(51, 51, 51, 0.1) dashed;\n width: 100%;\n margin-bottom: var(--spacing-tiny, 2px);\n }\n div[warn] {\n font-size: 12px;\n color: red;\n margin-left: var(--spacing-small, 4px);\n margin-bottom: var(--spacing-small, 4px);\n }\n\n md-outlined-button {\n min-height: 30px;\n padding: 0 var(--spacing-large, 12px);\n box-shadow: 1px 1px 1px #0000001a;\n --md-outlined-button-label-text-color: #586878;\n --md-outlined-button-label-text-weight: bold;\n --md-sys-color-outline: rgba(51, 51, 51, 0.2);\n }\n\n div[row] {\n span:first-child {\n flex: 0.2;\n }\n span:last-child {\n flex: 0.8;\n }\n }\n\n div[separate-container] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 8px 30px;\n margin-left: 15px;\n\n md-outlined-text-field {\n width: 80px;\n }\n\n & > div {\n display: flex;\n gap: 15px;\n\n span[floor-row] {\n display: inline-flex;\n align-items: center;\n margin-left: 5px;\n }\n\n span[floor-title] {\n min-width: 33px;\n margin-right: var(--spacing-small, 4px);\n }\n span:first-child {\n flex: 0.4;\n justify-content: flex-start;\n display: flex;\n }\n span:last-child {\n flex: 0.6;\n display: flex;\n align-items: center;\n padding-left: var(--spacing-medium, 8px);\n }\n }\n\n div[basement-container] {\n display: flex;\n align-items: center;\n gap: 4px;\n\n div[basement-checkbox] {\n display: flex;\n align-items: center;\n cursor: pointer;\n\n md-icon {\n --md-icon-size: 25px;\n color: #808080;\n transition: opacity 0.2s ease;\n }\n\n &[disabled] {\n cursor: not-allowed;\n opacity: 0.4;\n\n md-icon {\n color: #cccccc;\n }\n }\n\n &[checked] md-icon {\n background-color: #2e79be;\n color: white;\n border-radius: 3px;\n }\n }\n\n md-outlined-text-field[basement-floor] {\n width: 70px;\n margin-left: var(--spacing-small, 4px);\n opacity: 1;\n transition: opacity 0.2s ease;\n\n &[disabled] {\n opacity: 0.4;\n pointer-events: none;\n }\n }\n }\n }\n\n &[project] {\n div[separate-container] {\n margin-left: 15px;\n\n & > div {\n align-items: center;\n\n span:first-child {\n flex: 0.4;\n min-width: 100px;\n }\n span:last-child {\n flex: 0.4;\n margin-left: 0;\n }\n }\n }\n }\n }\n }\n }\n `\n ]\n\n get context() {\n return {\n title: '프로젝트 정보 관리'\n }\n }\n\n private defaultProject = {\n name: '',\n buildingComplex: {\n address: '',\n area: 0,\n constructionCompany: '',\n clientCompany: '',\n supervisoryCompany: '',\n designCompany: '',\n constructionType: '',\n buildings: []\n }\n }\n @state() projectId: string = ''\n @state() project: Project = { ...this.defaultProject }\n @state() selectedValues: string[] = []\n @state() overallConstructorList: Array<{ name: string; value: string }> = []\n @state() taskConstructorList: Array<{ name: string; value: string }> = []\n @state() taskSupervisoryList: Array<{ name: string; value: string }> = []\n @state() overallSupervisoryList: Array<{ name: string; value: string }> = []\n\n render() {\n return html`\n <project-update-header .projectId=${this.project.id || ''} title=\"프로젝트 정보 관리\" @custom-click=${this._saveProject}>\n </project-update-header>\n\n <div body>\n <div project-info>\n <h3>기본 정보</h3>\n <div row>\n <span>프로젝트명</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"name\"\n project\n .value=${this.project.name || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>프로젝트 주소</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n name=\"address\"\n building-complex\n .value=${this.project?.buildingComplex?.address || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>위도</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n name=\"latitude\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.latitude?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>경도</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n name=\"longitude\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.longitude?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>면적</span>\n <span align-end\n ><md-outlined-text-field\n type=\"text\"\n name=\"area\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.area?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n ㎡</span\n >\n </div>\n <div row>\n <span>착공일정 ~ 준공일정</span>\n <span\n ><input\n type=\"date\"\n name=\"startDate\"\n project\n .value=${this.project.startDate || ''}\n @input=${this._onInputChange}\n max=\"9999-12-31\"\n />\n ~\n <input\n type=\"date\"\n name=\"endDate\"\n project\n .value=${this.project.endDate || ''}\n @input=${this._onInputChange}\n max=\"9999-12-31\"\n />\n </span>\n </div>\n <div row>\n <span>발주처</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"clientCompany\"\n building-complex\n .value=${this.project?.buildingComplex?.clientCompany || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>건설사</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"constructionCompany\"\n building-complex\n .value=${this.project?.buildingComplex?.constructionCompany || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>설계사</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"designCompany\"\n building-complex\n .value=${this.project?.buildingComplex?.designCompany || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>감리사</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"supervisoryCompany\"\n building-complex\n .value=${this.project?.buildingComplex?.supervisoryCompany || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>건설구분</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"constructionType\"\n building-complex\n .value=${this.project?.buildingComplex?.constructionType || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>대표사진 업로드</span>\n <span>\n <ox-input-image\n name=\"mainPhoto\"\n value=${this.project?.mainPhoto?.fullpath || ''}\n @change=${this.onCreateAttachment.bind(this)}\n ></ox-input-image>\n </span>\n </div>\n <div row>\n <span>단지 BIM</span>\n <span>\n <ox-input-file\n name=\"drawing\"\n label=\" \"\n description=\"IFC 업로드\"\n .value=${this.project?.buildingComplex?.drawing || ''}\n @change=${this.onCreateAttachment.bind(this)}\n ></ox-input-file>\n </span>\n </div>\n <div row>\n <span>공사금액</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"constructionCost\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.constructionCost?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>기타사항</span>\n <span>\n <md-outlined-text-field\n type=\"textarea\"\n name=\"etc\"\n building-complex\n .value=${this.project?.buildingComplex?.etc || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>총괄 시공 관리자 리스트</span>\n <span>\n <select2-component\n placeholder=\"총괄 시공 관리자 리스트\"\n name=\"overallConstructorEmails\"\n .options=${this.overallConstructorList}\n .selectedValues=${this.project?.buildingComplex?.overallConstructorEmails || []}\n @selection-changed=${this._handleSelectionChange}\n ></select2-component>\n </span>\n </div>\n <div row>\n <span>공종별 시공 관리자 리스트</span>\n <span>\n <select2-component\n placeholder=\"공종별 시공 관리자 리스트\"\n name=\"taskConstructorEmails\"\n .options=${this.taskConstructorList}\n .selectedValues=${this.project?.buildingComplex?.taskConstructorEmails || []}\n @selection-changed=${this._handleSelectionChange}\n ></select2-component>\n </span>\n </div>\n <div row>\n <span>총괄 감리 책임자 리스트</span>\n <span>\n <select2-component\n placeholder=\"총괄 감리 책임자 리스트\"\n name=\"overallSupervisoryEmails\"\n .options=${this.overallSupervisoryList}\n .selectedValues=${this.project?.buildingComplex?.overallSupervisoryEmails || []}\n @selection-changed=${this._handleSelectionChange}\n ></select2-component>\n </span>\n </div>\n <div row>\n <span>공종별 감리 책임자 리스트</span>\n <span>\n <select2-component\n placeholder=\"공종별 감리 책임자 리스트\"\n name=\"taskSupervisoryEmails\"\n .options=${this.taskSupervisoryList}\n .selectedValues=${this.project?.buildingComplex?.taskSupervisoryEmails || []}\n @selection-changed=${this._handleSelectionChange}\n ></select2-component\n ></span>\n </div>\n </div>\n\n <div detail-info>\n <div>\n <h3>건설구분 상세 정보</h3>\n <div row>\n <span>세대수</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n building-complex\n name=\"householdCount\"\n .value=${this.project?.buildingComplex?.householdCount?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>동수</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n building-complex\n name=\"buildingCount\"\n value=${this.project?.buildingComplex?.buildingCount?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n <md-outlined-button @click=${this._setBuilding}>적용</md-outlined-button>\n </span>\n </div>\n <hr />\n <div warn>* 동/층의 정보를 수정하면 기존의 동/층 정보는 모두 제거됩니다.</div>\n <div separate-container>\n ${this.project?.buildingComplex?.buildings?.map(\n (building, idx) => html`\n <div>\n <span>\n <md-outlined-text-field\n type=\"text\"\n building\n name=\"name\"\n .value=${building?.name || ''}\n @input=${e => this._onInputChange(e, idx)}\n placeholder=\"ooo동\"\n ></md-outlined-text-field>\n </span>\n <span floor-row>\n <span floor-title>층수</span>\n <md-outlined-text-field\n type=\"text\"\n numeric\n building\n name=\"floorCount\"\n .value=${building?.floorCount?.toString() || ''}\n @input=${e => this._onInputChange(e, idx)}\n placeholder=\"oo\"\n ></md-outlined-text-field>\n </span>\n\n <div basement-container>\n <div\n basement-checkbox\n name=\"hasBasement\"\n ?checked=${building?.hasBasement || false}\n @click=${() => this._toggleBasement(idx)}\n >\n <md-icon>format_bold</md-icon>\n </div>\n ${building?.hasBasement\n ? html`\n <md-outlined-text-field\n basement-floor\n type=\"text\"\n numeric\n building\n name=\"basementFloorCount\"\n .value=${building?.basementFloorCount?.toString() || ''}\n @input=${e => this._onInputChange(e, idx)}\n placeholder=\"지하층수\"\n ></md-outlined-text-field>\n `\n : ''}\n </div>\n </div>\n `\n )}\n </div>\n </div>\n\n <div project>\n <h3>프로젝트 현황</h3>\n <div row separate-container>\n <div>\n <span>전체 진행현황</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"totalProgress\"\n .value=${this.project.totalProgress?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n <div>\n <span>검측/통과비율</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"inspPassRate\"\n .value=${this.project.inspPassRate?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n <div row separate-container>\n <div>\n <span>주간 진행현황</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"weeklyProgress\"\n .value=${this.project.weeklyProgress?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n <div>\n <span>로봇작업진행율</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"robotProgressRate\"\n .value=${this.project.robotProgressRate?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n <div row separate-container>\n <div>\n <span>KPI</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"kpi\"\n .value=${this.project.kpi?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n <div>\n <span>구조안전도</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"structuralSafetyRate\"\n .value=${this.project.structuralSafetyRate?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n\n <div row separate-container>\n <div>\n <span>로봇 작업 대수</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"robotCount\"\n .value=${this.project.robotCount?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n </div>\n\n <div>\n <h3>공지사항</h3>\n <div>\n <span></span>\n <span>\n <md-outlined-text-field\n type=\"textarea\"\n name=\"notice\"\n building-complex\n .value=${this.project?.buildingComplex?.notice || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n </div>\n </div>\n `\n }\n\n async pageInitialized(lifecycle: PageLifecycle) {}\n\n async pageUpdated(changes: any, lifecycle: PageLifecycle) {\n if (this.active) {\n this.projectId = lifecycle.resourceId || ''\n await this.initProject(this.projectId)\n }\n }\n\n async initProject(projectId: string = '') {\n const response = await client.query({\n query: gql`\n query Project($id: String!, $filters: [Filter!]) {\n project(id: $id) {\n id\n name\n startDate\n endDate\n mainPhoto {\n fullpath\n }\n totalProgress\n weeklyProgress\n kpi\n inspPassRate\n robotProgressRate\n structuralSafetyRate\n robotCount\n buildingComplex {\n id\n address\n latitude\n longitude\n area\n clientCompany\n constructionCompany\n supervisoryCompany\n designCompany\n drawing {\n id\n name\n }\n constructionType\n constructionCost\n etc\n notice\n householdCount\n buildingCount\n overallConstructorEmails\n taskConstructorEmails\n overallSupervisoryEmails\n taskSupervisoryEmails\n buildings {\n id\n name\n floorCount\n hasBasement\n basementFloorCount\n }\n }\n }\n\n employees(filters: $filters) {\n items {\n id\n name\n jobResponsibility\n active\n user {\n id\n name\n email\n }\n }\n }\n }\n `,\n variables: {\n id: projectId,\n filters: [\n {\n name: 'active',\n operator: 'eq',\n value: true\n },\n {\n name: 'userId',\n operator: 'is_not_null',\n value: ''\n }\n ]\n }\n })\n\n this.project = response.data?.project\n\n const items = response.data?.employees?.items || []\n this.overallConstructorList = this._filterUserByPermission(items, 'OVERALL_CONSTRUCTOR')\n this.taskConstructorList = this._filterUserByPermission(items, 'TASK_CONSTRUCTOR')\n this.overallSupervisoryList = this._filterUserByPermission(items, 'OVERALL_SUPERVISORY')\n this.taskSupervisoryList = this._filterUserByPermission(items, 'TASK_SUPERVISORY')\n }\n\n private _filterUserByPermission(userList, permission: string) {\n return userList\n .filter(v => v.jobResponsibility == permission || v.jobResponsibility == 'ADMIN')\n .map(v => ({ name: v.name, value: v.user.email }))\n }\n\n private async _saveProject() {\n // 첨부 파일 필드 제거 (첨부 파일은 {filename}Upload 로 전송)\n delete this.project.mainPhoto\n delete this.project.buildingComplex.drawing\n\n const response = await client.mutate({\n mutation: gql`\n mutation UpdateProject($project: ProjectPatch!) {\n updateProject(project: $project) {\n id\n }\n }\n `,\n variables: {\n project: this.project\n },\n context: {\n hasUpload: true\n }\n })\n\n if (!response.errors) {\n notify({ message: '저장에 성공하였습니다.' })\n }\n }\n\n // 동 적용 버튼을 누르면 입력한 수 만큼 해당 단지에 동 데이터 생성\n private _setBuilding() {\n const buildingCount: number = this.project?.buildingComplex?.buildingCount || 0\n const buildingInitData = { name: undefined, floorCount: undefined }\n\n // 빌딩 데이터가 없으면 빈 배열 넣어줌\n if (!this.project?.buildingComplex?.buildings?.length) {\n this.project.buildingComplex.buildings = []\n }\n\n if (this.project.buildingComplex.buildings.length >= buildingCount) {\n // 동 수가 더 작게 들어오면 기존 배열을 필요한 크기만큼 잘라내기\n this.project.buildingComplex.buildings = [...this.project.buildingComplex.buildings!.slice(0, buildingCount)]\n } else {\n // 동수가 더 크게 들어오면 기존 배열 + 빈 값을 채움\n const additionalCount = buildingCount - this.project.buildingComplex.buildings.length\n const additionalBuildings = Array.from({ length: additionalCount }, () => ({ ...buildingInitData }))\n this.project.buildingComplex.buildings = [...this.project.buildingComplex.buildings, ...additionalBuildings]\n }\n\n // 리렌더링\n this.project = { ...this.project }\n }\n\n // Input 요소의 값이 변경될 때 호출되는 콜백 함수\n private _onInputChange(event: InputEvent, idx: number) {\n const target = event.target as HTMLInputElement\n let inputVal: any = target.value\n\n // 숫자 타입은 다른 문자 입력 제거\n if (target.hasAttribute('numeric')) {\n inputVal = Number(inputVal.replace(/[^\\d.]/g, ''))\n }\n\n if (target.hasAttribute('project')) {\n this.project[target.name] = inputVal\n } else if (target.hasAttribute('building-complex')) {\n this.project.buildingComplex![target.name] = inputVal\n } else if (target.hasAttribute('building')) {\n this.project.buildingComplex.buildings![idx][target.name] = inputVal\n }\n }\n\n // 이미지 업로드\n async onCreateAttachment(e: CustomEvent) {\n const target = e.target as HTMLInputElement\n const file = (target.name === 'mainPhoto' ? e.detail : e.detail[0]) || null\n\n if (target.name === 'mainPhoto') {\n this.project.mainPhotoUpload = file\n } else {\n this.project.buildingComplex.drawingUpload = file\n }\n }\n\n private _handleSelectionChange(e) {\n const name = e.target.getAttribute('name')\n const selectedValues = e.detail.selectedValues\n\n this.project.buildingComplex[name] = selectedValues\n }\n\n private _toggleBasement(idx: number) {\n const building = this.project.buildingComplex.buildings![idx]\n building.hasBasement = !building.hasBasement\n\n // 층 수가 0이거나 체크 해제시 지하층수 초기화 (플레이스 홀더 나오게 하기 위함)\n if (building.basementFloorCount == 0 || !building.hasBasement) {\n building.basementFloorCount = undefined\n }\n\n this.project.buildingComplex.buildings![idx]['hasBasement'] = building.hasBasement\n this.requestUpdate()\n }\n}\n"]}
1
+ {"version":3,"file":"project-update.js","sourceRoot":"","sources":["../../../client/pages/project/project-update.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\nimport '@material/web/textfield/outlined-text-field.js'\n\nimport { PageView } from '@operato/shell'\nimport { PageLifecycle } from '@operato/shell/dist/src/app/pages/page-view'\nimport { css, html } from 'lit'\nimport { customElement, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { client } from '@operato/graphql'\nimport { notify } from '@operato/layout'\nimport gql from 'graphql-tag'\nimport { Project, SITE_TYPE_DISPLAY } from './project-list'\nimport '../lib/select2-component'\nimport './component/project-update-header'\n\n@customElement('project-update')\nexport class ProjectUpdate extends ScopedElementsMixin(PageView) {\n static styles = [\n css`\n :host {\n display: grid;\n grid-template-rows: 55px auto;\n color: #4e5055;\n\n width: 100%;\n background-color: var(--md-sys-color-background, #f6f6f6);\n overflow-y: auto;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n md-outlined-text-field {\n width: 100%;\n\n --md-outlined-text-field-container-shape: 5px;\n --md-outlined-text-field-outline-color: rgba(51, 51, 51, 0.2);\n --md-outlined-text-field-focus-outline-color: #1f7fd9;\n --md-outlined-text-field-focus-outline-width: 1px;\n --md-sys-color-primary: #586878;\n --md-outlined-text-field-input-text-size: 14px;\n --md-outlined-field-bottom-space: 3px;\n --md-outlined-field-top-space: 3px;\n --md-outlined-field-leading-space: var(--spacing-medium, 8px);\n --md-outlined-field-trailing-space: var(--spacing-medium, 8px);\n }\n select2-component {\n width: 100%;\n }\n md-filled-select {\n width: 100%;\n --md-filled-select-text-field-container-color: transparent;\n --md-filled-select-text-field-active-indicator-color: #999;\n --md-filled-select-text-field-input-text-size: 14px;\n --md-filled-select-text-field-input-text-line-height: 6px;\n }\n input[type='date'] {\n border: 1px solid rgba(51, 51, 51, 0.2);\n padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);\n border-radius: 5px;\n }\n md-outlined-text-field[type='textarea'] {\n width: 100%;\n height: 120px;\n resize: none;\n }\n\n ox-input-image {\n width: 120px;\n height: 90px;\n }\n ox-input-file {\n width: 120px;\n height: 90px;\n padding: 0;\n }\n\n div[body] {\n display: flex;\n margin: var(--spacing-large, 12px);\n margin-top: 0;\n gap: var(--spacing-medium, 8px);\n\n & > div {\n display: flex;\n height: fit-content;\n flex-direction: column;\n padding: var(--spacing-large, 12px);\n background-color: var(--md-sys-color-on-primary);\n border: 1px solid #cccccc80;\n border-radius: 5px;\n gap: var(--spacing-medium, 8px);\n\n h3 {\n color: #2e79be;\n font-size: 16px;\n margin: 0px;\n }\n\n div[row] {\n display: flex;\n align-items: center;\n\n span:first-child {\n flex: 0.3;\n text-align: right;\n font-size: 14px;\n }\n\n span:last-child {\n flex: 0.7;\n display: flex;\n gap: var(--spacing-medium, 8px);\n margin-left: var(--spacing-medium, 8px);\n align-items: center;\n\n &[align-end] {\n align-items: end;\n }\n }\n }\n }\n\n div[project-info] {\n flex: 0.55;\n }\n\n div[document-preview] {\n width: 100%;\n font-size: 12px;\n color: #2e79be;\n font-weight: 500;\n background-color: #f8f9fa;\n padding: 8px 12px;\n border-radius: 4px;\n border-left: 3px solid #2e79be;\n margin-top: 4px;\n }\n\n div[detail-info] {\n flex: 0.45;\n padding: 0px;\n gap: 10px;\n background-color: transparent;\n border: none;\n\n & > div {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-medium, 8px);\n border: 1px solid #cccccc80;\n border-radius: 5px;\n padding: var(--spacing-large, 12px);\n background-color: var(--md-sys-color-on-primary);\n\n md-outlined-text-field[type='text'] {\n width: 60%;\n }\n\n md-elevated-button {\n --md-elevated-button-container-height: 30px;\n --md-elevated-button-container-color: var(--md-sys-color-on-primary);\n --md-elevated-button-label-text-size: 16px;\n }\n hr {\n border: 1px rgba(51, 51, 51, 0.1) dashed;\n width: 100%;\n margin-bottom: var(--spacing-tiny, 2px);\n }\n div[warn] {\n font-size: 12px;\n color: red;\n margin-left: var(--spacing-small, 4px);\n margin-bottom: var(--spacing-small, 4px);\n }\n\n md-outlined-button {\n min-height: 30px;\n padding: 0 var(--spacing-large, 12px);\n box-shadow: 1px 1px 1px #0000001a;\n --md-outlined-button-label-text-color: #586878;\n --md-outlined-button-label-text-weight: bold;\n --md-sys-color-outline: rgba(51, 51, 51, 0.2);\n }\n\n div[row] {\n span:first-child {\n flex: 0.2;\n }\n span:last-child {\n flex: 0.8;\n }\n }\n\n div[separate-container] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 8px 30px;\n margin-left: 15px;\n\n md-outlined-text-field {\n width: 80px;\n }\n\n & > div {\n display: flex;\n gap: 15px;\n\n span[floor-row] {\n display: inline-flex;\n align-items: center;\n margin-left: 5px;\n }\n\n span[floor-title] {\n min-width: 33px;\n margin-right: var(--spacing-small, 4px);\n }\n span:first-child {\n flex: 0.4;\n justify-content: flex-start;\n display: flex;\n }\n span:last-child {\n flex: 0.6;\n display: flex;\n align-items: center;\n padding-left: var(--spacing-medium, 8px);\n }\n }\n\n div[basement-container] {\n display: flex;\n align-items: center;\n gap: 4px;\n\n div[basement-checkbox] {\n display: flex;\n align-items: center;\n cursor: pointer;\n\n md-icon {\n --md-icon-size: 25px;\n color: #808080;\n transition: opacity 0.2s ease;\n }\n\n &[disabled] {\n cursor: not-allowed;\n opacity: 0.4;\n\n md-icon {\n color: #cccccc;\n }\n }\n\n &[checked] md-icon {\n background-color: #2e79be;\n color: white;\n border-radius: 3px;\n }\n }\n\n md-outlined-text-field[basement-floor] {\n width: 70px;\n margin-left: var(--spacing-small, 4px);\n opacity: 1;\n transition: opacity 0.2s ease;\n\n &[disabled] {\n opacity: 0.4;\n pointer-events: none;\n }\n }\n }\n }\n\n &[project] {\n div[separate-container] {\n margin-left: 15px;\n\n & > div {\n align-items: center;\n\n span:first-child {\n flex: 0.4;\n min-width: 100px;\n }\n span:last-child {\n flex: 0.4;\n margin-left: 0;\n }\n }\n }\n }\n }\n }\n }\n `\n ]\n\n get context() {\n return {\n title: '프로젝트 정보 관리'\n }\n }\n\n private defaultProject = {\n name: '',\n documentNaming: '',\n buildingComplex: {\n address: '',\n area: 0,\n constructionCompany: '',\n clientCompany: '',\n supervisoryCompany: '',\n designCompany: '',\n constructionType: '',\n buildings: []\n }\n }\n @state() projectId: string = ''\n @state() project: Project = { ...this.defaultProject }\n @state() selectedValues: string[] = []\n @state() overallConstructorList: Array<{ name: string; value: string }> = []\n @state() taskConstructorList: Array<{ name: string; value: string }> = []\n @state() taskSupervisoryList: Array<{ name: string; value: string }> = []\n @state() overallSupervisoryList: Array<{ name: string; value: string }> = []\n\n render() {\n return html`\n <project-update-header .projectId=${this.project.id || ''} title=\"프로젝트 정보 관리\" @custom-click=${this._saveProject}>\n </project-update-header>\n\n <div body>\n <div project-info>\n <h3>기본 정보</h3>\n <div row>\n <span>프로젝트명</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"name\"\n project\n .value=${this.project.name || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>프로젝트 문서 네이밍</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n name=\"documentNaming\"\n project\n .value=${this.project.documentNaming || ''}\n @input=${this._onInputChange}\n placeholder=\"프로젝트 문서 네이밍\"\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span></span>\n <span>\n <div document-preview>📄 문서 생성 예시: <br />${this.project.documentNaming} 검측 제01-00001호</div>\n </span>\n </div>\n <div row>\n <span>프로젝트 주소</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n name=\"address\"\n building-complex\n .value=${this.project?.buildingComplex?.address || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>위도</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n name=\"latitude\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.latitude?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>경도</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n name=\"longitude\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.longitude?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>연 면적</span>\n <span align-end\n ><md-outlined-text-field\n type=\"text\"\n name=\"area\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.area?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"㎡\"\n ></md-outlined-text-field>\n </span>\n </div>\n\n <div row>\n <span>건폐율</span>\n <span align-end>\n <md-outlined-text-field\n type=\"text\"\n name=\"coverageRatio\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.coverageRatio?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>용적률</span>\n <span align-end>\n <md-outlined-text-field\n type=\"text\"\n name=\"floorAreaRatio\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.floorAreaRatio?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n\n <div row>\n <span>현장유형</span>\n <span\n ><md-filled-select name=\"siteType\" building-complex @change=${this._onInputChange}>\n ${Object.entries(SITE_TYPE_DISPLAY).map(\n ([key, display]) => html`\n <md-select-option ?selected=${this.project?.buildingComplex?.siteType === key} .value=${key}>\n <div slot=\"headline\">${display}</div>\n </md-select-option>\n `\n )}\n </md-filled-select>\n </span>\n </div>\n\n <div row>\n <span>착공일정 ~ 준공일정</span>\n <span\n ><input\n type=\"date\"\n name=\"startDate\"\n project\n .value=${this.project.startDate || ''}\n @input=${this._onInputChange}\n max=\"9999-12-31\"\n />\n ~\n <input\n type=\"date\"\n name=\"endDate\"\n project\n .value=${this.project.endDate || ''}\n @input=${this._onInputChange}\n max=\"9999-12-31\"\n />\n </span>\n </div>\n <div row>\n <span>발주처</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"clientCompany\"\n building-complex\n .value=${this.project?.buildingComplex?.clientCompany || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>건설사</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"constructionCompany\"\n building-complex\n .value=${this.project?.buildingComplex?.constructionCompany || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>설계사</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"designCompany\"\n building-complex\n .value=${this.project?.buildingComplex?.designCompany || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>감리사</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"supervisoryCompany\"\n building-complex\n .value=${this.project?.buildingComplex?.supervisoryCompany || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>건설구분</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"constructionType\"\n building-complex\n .value=${this.project?.buildingComplex?.constructionType || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>구조 유형</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"structureType\"\n building-complex\n .value=${this.project?.buildingComplex?.structureType || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n\n <div row>\n <span>대표사진 업로드</span>\n <span>\n <ox-input-image\n name=\"mainPhoto\"\n value=${this.project?.mainPhoto?.fullpath || ''}\n @change=${this.onCreateAttachment.bind(this)}\n ></ox-input-image>\n </span>\n </div>\n <div row>\n <span>단지 BIM</span>\n <span>\n <ox-input-file\n name=\"drawing\"\n label=\" \"\n description=\"IFC 업로드\"\n .value=${this.project?.buildingComplex?.drawing || ''}\n @change=${this.onCreateAttachment.bind(this)}\n ></ox-input-file>\n </span>\n </div>\n <div row>\n <span>공사금액</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"constructionCost\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.constructionCost?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"원\"\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>투입 인력</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n name=\"workerCount\"\n numeric\n building-complex\n .value=${this.project?.buildingComplex?.workerCount?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"명\"\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>기타사항</span>\n <span>\n <md-outlined-text-field\n type=\"textarea\"\n name=\"etc\"\n building-complex\n .value=${this.project?.buildingComplex?.etc || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>총괄 시공 관리자 리스트</span>\n <span>\n <select2-component\n placeholder=\"총괄 시공 관리자 리스트\"\n name=\"overallConstructorEmails\"\n .options=${this.overallConstructorList}\n .selectedValues=${this.project?.buildingComplex?.overallConstructorEmails || []}\n @selection-changed=${this._handleSelectionChange}\n ></select2-component>\n </span>\n </div>\n <div row>\n <span>공종별 시공 관리자 리스트</span>\n <span>\n <select2-component\n placeholder=\"공종별 시공 관리자 리스트\"\n name=\"taskConstructorEmails\"\n .options=${this.taskConstructorList}\n .selectedValues=${this.project?.buildingComplex?.taskConstructorEmails || []}\n @selection-changed=${this._handleSelectionChange}\n ></select2-component>\n </span>\n </div>\n <div row>\n <span>총괄 감리 책임자 리스트</span>\n <span>\n <select2-component\n placeholder=\"총괄 감리 책임자 리스트\"\n name=\"overallSupervisoryEmails\"\n .options=${this.overallSupervisoryList}\n .selectedValues=${this.project?.buildingComplex?.overallSupervisoryEmails || []}\n @selection-changed=${this._handleSelectionChange}\n ></select2-component>\n </span>\n </div>\n <div row>\n <span>공종별 감리 책임자 리스트</span>\n <span>\n <select2-component\n placeholder=\"공종별 감리 책임자 리스트\"\n name=\"taskSupervisoryEmails\"\n .options=${this.taskSupervisoryList}\n .selectedValues=${this.project?.buildingComplex?.taskSupervisoryEmails || []}\n @selection-changed=${this._handleSelectionChange}\n ></select2-component\n ></span>\n </div>\n </div>\n\n <div detail-info>\n <div>\n <h3>건설구분 상세 정보</h3>\n <div row>\n <span>세대수</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n building-complex\n name=\"householdCount\"\n .value=${this.project?.buildingComplex?.householdCount?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div row>\n <span>동수</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n building-complex\n name=\"buildingCount\"\n value=${this.project?.buildingComplex?.buildingCount?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n <md-outlined-button @click=${this._setBuilding}>적용</md-outlined-button>\n </span>\n </div>\n <hr />\n <div warn>* 동/층의 정보를 수정하면 기존의 동/층 정보는 모두 제거됩니다.</div>\n <div separate-container>\n ${this.project?.buildingComplex?.buildings?.map(\n (building, idx) => html`\n <div>\n <span>\n <md-outlined-text-field\n type=\"text\"\n building\n name=\"name\"\n .value=${building?.name || ''}\n @input=${e => this._onInputChange(e, idx)}\n placeholder=\"ooo동\"\n ></md-outlined-text-field>\n </span>\n <span floor-row>\n <span floor-title>층수</span>\n <md-outlined-text-field\n type=\"text\"\n numeric\n building\n name=\"floorCount\"\n .value=${building?.floorCount?.toString() || ''}\n @input=${e => this._onInputChange(e, idx)}\n placeholder=\"oo\"\n ></md-outlined-text-field>\n </span>\n\n <div basement-container>\n <div\n basement-checkbox\n name=\"hasBasement\"\n ?checked=${building?.hasBasement || false}\n @click=${() => this._toggleBasement(idx)}\n >\n <md-icon>format_bold</md-icon>\n </div>\n ${building?.hasBasement\n ? html`\n <md-outlined-text-field\n basement-floor\n type=\"text\"\n numeric\n building\n name=\"basementFloorCount\"\n .value=${building?.basementFloorCount?.toString() || ''}\n @input=${e => this._onInputChange(e, idx)}\n placeholder=\"지하층수\"\n ></md-outlined-text-field>\n `\n : ''}\n </div>\n </div>\n `\n )}\n </div>\n </div>\n\n <div project>\n <h3>프로젝트 현황</h3>\n <div row separate-container>\n <div>\n <span>전체 진행현황</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"totalProgress\"\n .value=${this.project.totalProgress?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n <div>\n <span>검측/통과비율</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"inspPassRate\"\n .value=${this.project.inspPassRate?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n <div row separate-container>\n <div>\n <span>주간 진행현황</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"weeklyProgress\"\n .value=${this.project.weeklyProgress?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n <div>\n <span>로봇작업진행율</span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"robotProgressRate\"\n .value=${this.project.robotProgressRate?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n <div row separate-container>\n <div>\n <span>KPI</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"kpi\"\n .value=${this.project.kpi?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n <div>\n <span>구조안전도</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"structuralSafetyRate\"\n .value=${this.project.structuralSafetyRate?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n\n <div row separate-container>\n <div>\n <span>로봇 작업 대수</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n project\n name=\"robotCount\"\n .value=${this.project.robotCount?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n\n <hr />\n\n <div row separate-container>\n <div>\n <span>설계 변경 횟수</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n building-complex\n name=\"designChangeCount\"\n .value=${this.project.buildingComplex?.designChangeCount?.toString() || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n <div>\n <span>계획 공정률</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n building-complex\n name=\"plannedProgress\"\n .value=${this.project.buildingComplex?.plannedProgress?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n\n <div row separate-container>\n <div>\n <span>실제 공정률</span>\n <span\n ><md-outlined-text-field\n type=\"text\"\n numeric\n building-complex\n name=\"actualProgress\"\n .value=${this.project.buildingComplex?.actualProgress?.toString() || ''}\n @input=${this._onInputChange}\n suffix-text=\"%\"\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n </div>\n\n <div>\n <h3>공지사항</h3>\n <div>\n <span></span>\n <span>\n <md-outlined-text-field\n type=\"textarea\"\n name=\"notice\"\n building-complex\n .value=${this.project?.buildingComplex?.notice || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n\n <div>\n <h3>Virtual Tour Link</h3>\n <div>\n <span></span>\n <span>\n <md-outlined-text-field\n type=\"text\"\n name=\"virtualTourLink\"\n building-complex\n .value=${this.project?.buildingComplex?.virtualTourLink || ''}\n @input=${this._onInputChange}\n ></md-outlined-text-field>\n </span>\n </div>\n </div>\n </div>\n </div>\n `\n }\n\n async pageInitialized(lifecycle: PageLifecycle) {}\n\n async pageUpdated(changes: any, lifecycle: PageLifecycle) {\n if (this.active) {\n this.projectId = lifecycle.resourceId || ''\n await this.initProject(this.projectId)\n }\n }\n\n async initProject(projectId: string = '') {\n const response = await client.query({\n query: gql`\n query Project($id: String!, $filters: [Filter!]) {\n project(id: $id) {\n id\n name\n documentNaming\n startDate\n endDate\n mainPhoto {\n fullpath\n }\n totalProgress\n weeklyProgress\n kpi\n inspPassRate\n robotProgressRate\n structuralSafetyRate\n robotCount\n buildingComplex {\n id\n address\n siteType\n latitude\n longitude\n area\n coverageRatio\n floorAreaRatio\n structureType\n workerCount\n designChangeCount\n plannedProgress\n actualProgress\n clientCompany\n constructionCompany\n supervisoryCompany\n designCompany\n drawing {\n id\n name\n }\n constructionType\n constructionCost\n etc\n notice\n householdCount\n buildingCount\n overallConstructorEmails\n taskConstructorEmails\n overallSupervisoryEmails\n taskSupervisoryEmails\n virtualTourLink\n buildings {\n id\n name\n floorCount\n hasBasement\n basementFloorCount\n }\n }\n }\n\n employees(filters: $filters) {\n items {\n id\n name\n jobResponsibility\n active\n user {\n id\n name\n email\n }\n }\n }\n }\n `,\n variables: {\n id: projectId,\n filters: [\n {\n name: 'active',\n operator: 'eq',\n value: true\n },\n {\n name: 'userId',\n operator: 'is_not_null',\n value: ''\n }\n ]\n }\n })\n\n this.project = response.data?.project\n\n const items = response.data?.employees?.items || []\n this.overallConstructorList = this._filterUserByPermission(items, 'OVERALL_CONSTRUCTOR')\n this.taskConstructorList = this._filterUserByPermission(items, 'TASK_CONSTRUCTOR')\n this.overallSupervisoryList = this._filterUserByPermission(items, 'OVERALL_SUPERVISORY')\n this.taskSupervisoryList = this._filterUserByPermission(items, 'TASK_SUPERVISORY')\n }\n\n private _filterUserByPermission(userList, permission: string) {\n return userList\n .filter(v => v.jobResponsibility == permission || v.jobResponsibility == 'ADMIN')\n .map(v => ({ name: v.name, value: v.user.email }))\n }\n\n private async _saveProject() {\n // 첨부 파일 필드 제거 (첨부 파일은 {filename}Upload 로 전송)\n delete this.project.mainPhoto\n delete this.project.buildingComplex.drawing\n\n const response = await client.mutate({\n mutation: gql`\n mutation UpdateProject($project: ProjectPatch!) {\n updateProject(project: $project) {\n id\n }\n }\n `,\n variables: {\n project: this.project\n },\n context: {\n hasUpload: true\n }\n })\n\n if (!response.errors) {\n notify({ message: '저장에 성공하였습니다.' })\n }\n }\n\n // 동 적용 버튼을 누르면 입력한 수 만큼 해당 단지에 동 데이터 생성\n private _setBuilding() {\n const buildingCount: number = this.project?.buildingComplex?.buildingCount || 0\n const buildingInitData = { name: undefined, floorCount: undefined }\n\n // 빌딩 데이터가 없으면 빈 배열 넣어줌\n if (!this.project?.buildingComplex?.buildings?.length) {\n this.project.buildingComplex.buildings = []\n }\n\n if (this.project.buildingComplex.buildings.length >= buildingCount) {\n // 동 수가 더 작게 들어오면 기존 배열을 필요한 크기만큼 잘라내기\n this.project.buildingComplex.buildings = [...this.project.buildingComplex.buildings!.slice(0, buildingCount)]\n } else {\n // 동수가 더 크게 들어오면 기존 배열 + 빈 값을 채움\n const additionalCount = buildingCount - this.project.buildingComplex.buildings.length\n const additionalBuildings = Array.from({ length: additionalCount }, () => ({ ...buildingInitData }))\n this.project.buildingComplex.buildings = [...this.project.buildingComplex.buildings, ...additionalBuildings]\n }\n\n // 리렌더링\n this.project = { ...this.project }\n }\n\n // Input 요소의 값이 변경될 때 호출되는 콜백 함수\n private _onInputChange(event: InputEvent, idx: number) {\n const target = event.target as HTMLInputElement\n let inputVal: any = target.value\n\n // 숫자 타입은 다른 문자 입력 제거\n if (target.hasAttribute('numeric')) {\n inputVal = Number(inputVal.replace(/[^\\d.]/g, ''))\n }\n\n if (target.hasAttribute('project')) {\n this.project[target.name] = inputVal\n\n // documentNaming 필드가 변경되면 실시간으로 미리보기 업데이트\n if (target.name === 'documentNaming') {\n this.requestUpdate()\n }\n } else if (target.hasAttribute('building-complex')) {\n this.project.buildingComplex![target.name] = inputVal\n } else if (target.hasAttribute('building')) {\n this.project.buildingComplex.buildings![idx][target.name] = inputVal\n }\n }\n\n // 이미지 업로드\n async onCreateAttachment(e: CustomEvent) {\n const target = e.target as HTMLInputElement\n const file = (target.name === 'mainPhoto' ? e.detail : e.detail[0]) || null\n\n if (target.name === 'mainPhoto') {\n this.project.mainPhotoUpload = file\n } else {\n this.project.buildingComplex.drawingUpload = file\n }\n }\n\n private _handleSelectionChange(e) {\n const name = e.target.getAttribute('name')\n const selectedValues = e.detail.selectedValues\n\n this.project.buildingComplex[name] = selectedValues\n }\n\n private _toggleBasement(idx: number) {\n const building = this.project.buildingComplex.buildings![idx]\n building.hasBasement = !building.hasBasement\n\n // 층 수가 0이거나 체크 해제시 지하층수 초기화 (플레이스 홀더 나오게 하기 위함)\n if (building.basementFloorCount == 0 || !building.hasBasement) {\n building.basementFloorCount = undefined\n }\n\n this.project.buildingComplex.buildings![idx]['hasBasement'] = building.hasBasement\n this.requestUpdate()\n }\n}\n"]}
@@ -1 +1 @@
1
- export default function route(page: string): "project-list" | "project-detail" | "project-completed-list" | "project-schedule-list" | "project-schedule" | "project-setting-list" | "project-update" | "project-plan-management" | "worker-type-management" | "construction-type-management" | "inspection-drawing-type-management" | "resource-list" | "task-resource-list" | undefined;
1
+ export default function route(page: string): "project-list" | "project-detail" | "project-completed-list" | "project-task-list" | "project-task" | "project-setting-list" | "project-update" | "project-plan-management" | "worker-type-management" | "construction-type-management" | "inspection-drawing-type-management" | "resource-list" | "task-resource-list" | undefined;
@@ -9,11 +9,11 @@ export default function route(page) {
9
9
  case 'project-completed-list':
10
10
  import('./pages/project/project-completed-list');
11
11
  return page;
12
- case 'project-schedule-list':
13
- import('./pages/project/project-schedule-list');
12
+ case 'project-task-list':
13
+ import('./pages/project/project-task-list');
14
14
  return page;
15
- case 'project-schedule':
16
- import('./pages/project/project-schedule');
15
+ case 'project-task':
16
+ import('./pages/project/project-task');
17
17
  return page;
18
18
  case 'project-setting-list':
19
19
  import('./pages/project/project-setting-list');
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../client/route.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,IAAY;IACxC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,MAAM,CAAC,8BAA8B,CAAC,CAAA;YACtC,OAAO,IAAI,CAAA;QAEb,KAAK,gBAAgB;YACnB,MAAM,CAAC,gCAAgC,CAAC,CAAA;YACxC,OAAO,IAAI,CAAA;QAEb,KAAK,wBAAwB;YAC3B,MAAM,CAAC,wCAAwC,CAAC,CAAA;YAChD,OAAO,IAAI,CAAA;QAEb,KAAK,uBAAuB;YAC1B,MAAM,CAAC,uCAAuC,CAAC,CAAA;YAC/C,OAAO,IAAI,CAAA;QAEb,KAAK,kBAAkB;YACrB,MAAM,CAAC,kCAAkC,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;QAEb,KAAK,sBAAsB;YACzB,MAAM,CAAC,sCAAsC,CAAC,CAAA;YAC9C,OAAO,IAAI,CAAA;QAEb,KAAK,gBAAgB;YACnB,MAAM,CAAC,gCAAgC,CAAC,CAAA;YACxC,OAAO,IAAI,CAAA;QAEb,KAAK,yBAAyB;YAC5B,MAAM,CAAC,yCAAyC,CAAC,CAAA;YACjD,OAAO,IAAI,CAAA;QAEb,KAAK,wBAAwB;YAC3B,MAAM,CAAC,yCAAyC,CAAC,CAAA;YACjD,OAAO,IAAI,CAAA;QAEb,KAAK,8BAA8B;YACjC,MAAM,CAAC,+CAA+C,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;QAEb,KAAK,oCAAoC;YACvC,MAAM,CAAC,qDAAqD,CAAC,CAAA;YAC7D,OAAO,IAAI,CAAA;QAEb,KAAK,eAAe;YAClB,MAAM,CAAC,qCAAqC,CAAC,CAAA;YAC7C,OAAO,IAAI,CAAA;QAEb,KAAK,oBAAoB;YACvB,MAAM,CAAC,+CAA+C,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC","sourcesContent":["export default function route(page: string) {\n switch (page) {\n case 'project-list':\n import('./pages/project/project-list')\n return page\n\n case 'project-detail':\n import('./pages/project/project-detail')\n return page\n\n case 'project-completed-list':\n import('./pages/project/project-completed-list')\n return page\n\n case 'project-schedule-list':\n import('./pages/project/project-schedule-list')\n return page\n\n case 'project-schedule':\n import('./pages/project/project-schedule')\n return page\n\n case 'project-setting-list':\n import('./pages/project/project-setting-list')\n return page\n\n case 'project-update':\n import('./pages/project/project-update')\n return page\n\n case 'project-plan-management':\n import('./pages/project/project-plan-management')\n return page\n\n case 'worker-type-management':\n import('./pages/resource/worker-type-management')\n return page\n\n case 'construction-type-management':\n import('./pages/resource/construction-type-management')\n return page\n\n case 'inspection-drawing-type-management':\n import('./pages/resource/inspection-drawing-type-management')\n return page\n\n case 'resource-list':\n import('./pages/resource/resource-list-page')\n return page\n\n case 'task-resource-list':\n import('./pages/task-resource/task-resource-list-page')\n return page\n }\n}\n"]}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../client/route.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,IAAY;IACxC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,MAAM,CAAC,8BAA8B,CAAC,CAAA;YACtC,OAAO,IAAI,CAAA;QAEb,KAAK,gBAAgB;YACnB,MAAM,CAAC,gCAAgC,CAAC,CAAA;YACxC,OAAO,IAAI,CAAA;QAEb,KAAK,wBAAwB;YAC3B,MAAM,CAAC,wCAAwC,CAAC,CAAA;YAChD,OAAO,IAAI,CAAA;QAEb,KAAK,mBAAmB;YACtB,MAAM,CAAC,mCAAmC,CAAC,CAAA;YAC3C,OAAO,IAAI,CAAA;QAEb,KAAK,cAAc;YACjB,MAAM,CAAC,8BAA8B,CAAC,CAAA;YACtC,OAAO,IAAI,CAAA;QAEb,KAAK,sBAAsB;YACzB,MAAM,CAAC,sCAAsC,CAAC,CAAA;YAC9C,OAAO,IAAI,CAAA;QAEb,KAAK,gBAAgB;YACnB,MAAM,CAAC,gCAAgC,CAAC,CAAA;YACxC,OAAO,IAAI,CAAA;QAEb,KAAK,yBAAyB;YAC5B,MAAM,CAAC,yCAAyC,CAAC,CAAA;YACjD,OAAO,IAAI,CAAA;QAEb,KAAK,wBAAwB;YAC3B,MAAM,CAAC,yCAAyC,CAAC,CAAA;YACjD,OAAO,IAAI,CAAA;QAEb,KAAK,8BAA8B;YACjC,MAAM,CAAC,+CAA+C,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;QAEb,KAAK,oCAAoC;YACvC,MAAM,CAAC,qDAAqD,CAAC,CAAA;YAC7D,OAAO,IAAI,CAAA;QAEb,KAAK,eAAe;YAClB,MAAM,CAAC,qCAAqC,CAAC,CAAA;YAC7C,OAAO,IAAI,CAAA;QAEb,KAAK,oBAAoB;YACvB,MAAM,CAAC,+CAA+C,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC","sourcesContent":["export default function route(page: string) {\n switch (page) {\n case 'project-list':\n import('./pages/project/project-list')\n return page\n\n case 'project-detail':\n import('./pages/project/project-detail')\n return page\n\n case 'project-completed-list':\n import('./pages/project/project-completed-list')\n return page\n\n case 'project-task-list':\n import('./pages/project/project-task-list')\n return page\n\n case 'project-task':\n import('./pages/project/project-task')\n return page\n\n case 'project-setting-list':\n import('./pages/project/project-setting-list')\n return page\n\n case 'project-update':\n import('./pages/project/project-update')\n return page\n\n case 'project-plan-management':\n import('./pages/project/project-plan-management')\n return page\n\n case 'worker-type-management':\n import('./pages/resource/worker-type-management')\n return page\n\n case 'construction-type-management':\n import('./pages/resource/construction-type-management')\n return page\n\n case 'inspection-drawing-type-management':\n import('./pages/resource/inspection-drawing-type-management')\n return page\n\n case 'resource-list':\n import('./pages/resource/resource-list-page')\n return page\n\n case 'task-resource-list':\n import('./pages/task-resource/task-resource-list-page')\n return page\n }\n}\n"]}