@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.
- package/dist-client/index.d.ts +1 -0
- package/dist-client/index.js +1 -1
- package/dist-client/index.js.map +1 -1
- package/dist-client/pages/lib/chatbot-widget.d.ts +53 -0
- package/dist-client/pages/lib/chatbot-widget.js +631 -0
- package/dist-client/pages/lib/chatbot-widget.js.map +1 -0
- package/dist-client/pages/lib/select2-component.d.ts +1 -1
- package/dist-client/pages/lib/select2-component.js +35 -35
- package/dist-client/pages/lib/select2-component.js.map +1 -1
- package/dist-client/pages/project/component/pagenation.d.ts +18 -0
- package/dist-client/pages/project/component/pagenation.js +142 -0
- package/dist-client/pages/project/component/pagenation.js.map +1 -0
- package/dist-client/pages/project/component/project-update-header.js +26 -3
- package/dist-client/pages/project/component/project-update-header.js.map +1 -1
- package/dist-client/pages/project/popup/checklist/{attachment-list-popup.js → task-checklist-attachment-list-popup.js} +15 -15
- package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js.map +1 -0
- package/dist-client/pages/project/popup/checklist/{comment-list-popup.js → task-checklist-comment-list-popup.js} +18 -18
- package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js.map +1 -0
- package/dist-client/pages/project/popup/checklist/{schedule-checklist-create-popup.d.ts → task-checklist-create-popup.d.ts} +0 -1
- package/dist-client/pages/project/popup/checklist/{schedule-checklist-create-popup.js → task-checklist-create-popup.js} +35 -38
- package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js.map +1 -0
- package/dist-client/pages/project/popup/checklist/{schedule-checklist-view.d.ts → task-checklist-view.d.ts} +2 -7
- package/dist-client/pages/project/popup/checklist/{schedule-checklist-view.js → task-checklist-view.js} +16 -22
- package/dist-client/pages/project/popup/checklist/task-checklist-view.js.map +1 -0
- package/dist-client/pages/project/popup/popup-plan-export.js +8 -2
- package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -1
- package/dist-client/pages/project/popup/{popup-schedule-upload.d.ts → popup-task-upload.d.ts} +1 -1
- package/dist-client/pages/project/popup/{popup-schedule-upload.js → popup-task-upload.js} +9 -9
- package/dist-client/pages/project/popup/popup-task-upload.js.map +1 -0
- package/dist-client/pages/project/project-completed-list.d.ts +5 -0
- package/dist-client/pages/project/project-completed-list.js +32 -3
- package/dist-client/pages/project/project-completed-list.js.map +1 -1
- package/dist-client/pages/project/project-detail.js +50 -20
- package/dist-client/pages/project/project-detail.js.map +1 -1
- package/dist-client/pages/project/project-list.d.ts +41 -0
- package/dist-client/pages/project/project-list.js +66 -3
- package/dist-client/pages/project/project-list.js.map +1 -1
- package/dist-client/pages/project/project-setting-list.d.ts +5 -0
- package/dist-client/pages/project/project-setting-list.js +32 -3
- package/dist-client/pages/project/project-setting-list.js.map +1 -1
- package/dist-client/pages/project/{project-schedule-list.d.ts → project-task-list.d.ts} +2 -2
- package/dist-client/pages/project/{project-schedule-list.js → project-task-list.js} +11 -11
- package/dist-client/pages/project/project-task-list.js.map +1 -0
- package/dist-client/pages/project/{project-schedule.d.ts → project-task.d.ts} +17 -6
- package/dist-client/pages/project/project-task.js +686 -0
- package/dist-client/pages/project/project-task.js.map +1 -0
- package/dist-client/pages/project/project-update.js +221 -28
- package/dist-client/pages/project/project-update.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/route.js +4 -4
- package/dist-client/route.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/controllers/parse-excel.js.map +1 -1
- package/dist-server/service/index.d.ts +2 -2
- package/dist-server/service/index.js +5 -2
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/project/project-mutation.js +5 -1
- package/dist-server/service/project/project-mutation.js.map +1 -1
- package/dist-server/service/project/project-query.d.ts +3 -0
- package/dist-server/service/project/project-query.js +48 -0
- package/dist-server/service/project/project-query.js.map +1 -1
- package/dist-server/service/project/project-type.d.ts +5 -0
- package/dist-server/service/project/project-type.js +19 -1
- package/dist-server/service/project/project-type.js.map +1 -1
- package/dist-server/service/project/project.d.ts +9 -0
- package/dist-server/service/project/project.js +31 -1
- package/dist-server/service/project/project.js.map +1 -1
- package/dist-server/service/task/task-query.d.ts +2 -0
- package/dist-server/service/task/task-query.js +11 -0
- package/dist-server/service/task/task-query.js.map +1 -1
- package/dist-server/service/task/task.d.ts +2 -0
- package/dist-server/service/task/task.js +6 -0
- package/dist-server/service/task/task.js.map +1 -1
- package/dist-server/service/task-checklist-binding/index.d.ts +5 -0
- package/dist-server/service/task-checklist-binding/index.js +9 -0
- package/dist-server/service/task-checklist-binding/index.js.map +1 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.d.ts +5 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js +186 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js.map +1 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-query.d.ts +8 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js +61 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js.map +1 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-type.d.ts +15 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js +57 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js.map +1 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding.d.ts +22 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding.js +106 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -3
- package/things-factory.config.js +3 -3
- package/translations/en.json +10 -9
- package/translations/ja.json +15 -1
- package/translations/ko.json +3 -0
- package/translations/ms.json +15 -1
- package/translations/zh.json +15 -1
- package/dist-client/pages/project/popup/checklist/attachment-list-popup.js.map +0 -1
- package/dist-client/pages/project/popup/checklist/comment-list-popup.js.map +0 -1
- package/dist-client/pages/project/popup/checklist/schedule-checklist-create-popup.js.map +0 -1
- package/dist-client/pages/project/popup/checklist/schedule-checklist-view.js.map +0 -1
- package/dist-client/pages/project/popup/popup-schedule-upload.js.map +0 -1
- package/dist-client/pages/project/project-schedule-list.js.map +0 -1
- package/dist-client/pages/project/project-schedule.js +0 -422
- package/dist-client/pages/project/project-schedule.js.map +0 -1
- /package/dist-client/pages/project/popup/checklist/{attachment-list-popup.d.ts → task-checklist-attachment-list-popup.d.ts} +0 -0
- /package/dist-client/pages/project/popup/checklist/{comment-list-popup.d.ts → task-checklist-comment-list-popup.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-task.js","sourceRoot":"","sources":["../../../client/pages/project/project-task.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'\nimport '@material/web/button/filled-button.js'\nimport '@material/web/button/outlined-button.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, query, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport gql from 'graphql-tag'\nimport { Project } from './project-list'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { verifyBiometric } from '@things-factory/auth-base/dist-client'\nimport { BuildingInspectionStatus, ChecklistMode } from './popup/checklist/task-checklist-view'\n\nimport '@operato/gantt/ox-gantt.js'\nimport './popup/popup-task-upload'\nimport './popup/checklist/task-checklist-create-popup'\nimport './popup/checklist/task-checklist-view'\n\nconst TaskFragment = gql`\n fragment TaskFragment on Task {\n type\n title: name\n id: code\n duration\n startDate\n endDate\n dependsOn\n progress\n style\n taskChecklistBinding {\n id\n status\n }\n resources {\n type\n allocated\n }\n }\n`\n\n@customElement('project-task')\nexport class ProjectTask extends ScopedElementsMixin(PageView) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\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 *[bold] {\n font-weight: bold;\n }\n\n div[header] {\n display: flex;\n margin: 0px var(--spacing-large, 12px);\n\n h2 {\n display: flex;\n gap: 7px;\n flex: 0.5;\n color: #3f71a0;\n font-size: 18px;\n\n md-icon[back] {\n background: linear-gradient(135deg, #3f71a0 0%, #5a8cc7 100%);\n color: white;\n padding: 8px;\n border-radius: 50%;\n cursor: pointer;\n box-shadow: 0 2px 8px rgba(63, 113, 160, 0.3);\n width: 14px;\n height: 14px;\n --md-icon-size: 20px;\n }\n\n md-icon[back]:hover {\n background: linear-gradient(135deg, #2e5c89 0%, #4a7bb0 100%);\n box-shadow: 0 4px 12px rgba(63, 113, 160, 0.4);\n }\n }\n\n div[button-container] {\n display: flex;\n align-items: center;\n justify-content: end;\n flex: 0.5;\n\n md-elevated-button {\n margin: 0px;\n margin-left: var(--spacing-small, 4px);\n\n --md-elevated-button-container-height: 32px;\n --md-elevated-button-label-text-size: 16px;\n --md-elevated-button-container-color: #0595e5;\n\n --md-elevated-button-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);\n }\n }\n }\n\n div[body] {\n flex: 1;\n\n display: flex;\n flex-direction: column;\n margin: var(--spacing-large, 12px);\n margin-top: 0;\n gap: var(--spacing-medium, 8px);\n overflow: hidden;\n\n h3 {\n color: #2e79be;\n font-size: 16px;\n margin: 0px;\n }\n\n & > div {\n display: flex;\n border-radius: 5px;\n }\n\n ox-gantt {\n flex: 1;\n box-sizing: border-box;\n overflow: hidden;\n\n background-color: var(--md-sys-color-primary-container);\n color: var(--md-sys-color-on-primary-container);\n }\n\n div[select-container] {\n gap: var(--spacing-medium, 8px);\n\n div[date] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: #2ea4df1a;\n border: 1px solid #2ea4df33;\n border-radius: 5px;\n gap: var(--spacing-medium, 8px);\n padding: 12px 36px 12px 15px;\n\n span[name] {\n font-size: 16px;\n font-weight: bold;\n }\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 }\n\n div[construction-list-container] {\n flex: 1;\n display: flex;\n border-radius: 5px;\n border: 1px solid #cccccc80;\n background-color: #fff;\n padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);\n gap: var(--spacing-medium, 8px);\n overflow-x: auto;\n\n md-outlined-button {\n --md-outlined-button-container-height: 30px;\n --md-outlined-button-trailing-space: var(--spacing-medium, 8px);\n --md-outlined-button-leading-space: var(--spacing-medium, 8px);\n --md-outlined-button-label-text-color: #586878;\n --md-sys-color-outline: rgba(51, 51, 51, 0.2);\n box-shadow: 1px 1px 1px #0000001a;\n padding: var(--spacing-medium, 8px) var(--spacing-large, 12px);\n font-weight: 700;\n\n &[selected] {\n --md-outlined-button-label-text-color: #0595e5 !important;\n --md-sys-color-outline: #0595e5 !important;\n background-color: #0595e51a !important;\n }\n\n &[pass] {\n --md-outlined-button-label-text-color: #4bbb4a;\n --md-sys-color-outline: #4bbb4a;\n background-color: #4bbb4a1a;\n }\n &[fail] {\n --md-outlined-button-label-text-color: #ff4444;\n --md-sys-color-outline: #ff4444;\n background-color: #ff44441a;\n }\n }\n\n div[icon-container] {\n display: flex;\n align-items: center;\n gap: 4px;\n\n md-icon[request],\n md-icon[pass],\n md-icon[fail] {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n border-radius: 3px;\n font-size: 14px;\n font-weight: 700;\n color: #fff;\n }\n md-icon[request] {\n background-color: #4e5055;\n }\n md-icon[pass] {\n background-color: #4bbb4a;\n }\n md-icon[fail] {\n background-color: #ff4444;\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() selectedBuildingIdx: number = 0\n @state() tasks\n @state() constructionTypeList = []\n @state() selectedChecklist: any = {}\n @state() selectedConstructionTypeId: string = ''\n\n @state() private fromDate = '2024-01-01'\n @state() private toDate = '2026-12-31'\n @state() private selectedFromDate = ''\n @state() private selectedToDate = ''\n\n @query('input[name=\"startDate\"]') inputStartDate!: HTMLInputElement\n @query('input[name=\"endDate\"]') inputEndDate!: HTMLInputElement\n\n private timeScale = 'week-day'\n private extendGridLines = false\n\n private columnConfigProvider = function () {\n return [\n { name: 'title', label: i18next.t('label.gantt-task-title') || 'title', visible: true, width: 150, order: 1 },\n {\n name: 'startDate',\n label: i18next.t('label.gantt-task-start-date') || 'start date',\n visible: true,\n width: 100,\n order: 2\n },\n {\n name: 'resources',\n label: i18next.t('label.gantt-task-resources') || 'resources',\n visible: true,\n width: 100,\n order: 3\n },\n {\n name: 'duration',\n label: i18next.t('label.gantt-task-duration') || 'duration',\n visible: true,\n width: 30,\n order: 4\n }\n ]\n }\n\n render() {\n return html`\n <div header>\n <h2>\n <md-icon slot=\"icon\" back @click=${() => history.back()}>arrow_back</md-icon>\n ${this.project.name}\n </h2>\n <div button-container>\n <md-elevated-button @click=${this._openUploadSchedulePopup}>\n <md-icon slot=\"icon\">event_note</md-icon>공정표 관리\n </md-elevated-button>\n </div>\n </div>\n\n <div body>\n <ox-gantt\n from-date=${new Date(this.fromDate).toISOString().split('T')[0]}\n to-date=${new Date(this.toDate).toISOString().split('T')[0]}\n .timeScale=${this.timeScale}\n .tasks=${this.tasks}\n @date-range-selected=${this.onRangeSelected}\n @task-clicked=${(e: CustomEvent) => {\n console.log('task-clicked', e.detail)\n }}\n ?extend-grid-lines=${this.extendGridLines}\n .columnConfigProvider=${this.columnConfigProvider}\n .colorProvider=${task => {\n return task.style || 'gray'\n }}\n >\n </ox-gantt>\n <div select-container>\n <div date>\n <span name>기간선택</span>\n <div @change=${() => this.onChangePeriodRange()}>\n <input type=\"date\" name=\"startDate\" project .value=${this.project.startDate || ''} max=\"9999-12-31\" />\n ~\n <input type=\"date\" name=\"endDate\" project .value=${this.project.endDate || ''} max=\"9999-12-31\" />\n </div>\n </div>\n <div construction-list-container>\n ${this.constructionTypeList?.map(\n (constructionType: any) =>\n html` <md-outlined-button\n id=${constructionType.id}\n ?selected=${this.selectedConstructionTypeId === constructionType.id}\n ?pass=${constructionType.taskChecklistBinding?.status === BuildingInspectionStatus.PASS}\n ?fail=${constructionType.taskChecklistBinding?.status === BuildingInspectionStatus.FAIL}\n @click=${() => this.onClickTaskChecklist(constructionType)}\n >\n <div icon-container>\n ${this._getIconHtmlByStatus(constructionType.taskChecklistBinding?.status)} ${constructionType.title}\n </div>\n </md-outlined-button>`\n )}\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!, $sortings: [Sorting!]) {\n project(id: $id) {\n id\n name\n startDate\n endDate\n rootTasks {\n ...TaskFragment\n children(sortings: $sortings) {\n ...TaskFragment\n children(sortings: $sortings) {\n ...TaskFragment\n }\n }\n }\n scheduleTable {\n id\n name\n }\n buildingComplex {\n id\n planXScale\n planYScale\n taskConstructorEmails\n overallConstructorEmails\n taskSupervisoryEmails\n overallSupervisoryEmails\n buildings {\n id\n name\n drawing {\n id\n name\n }\n buildingLevels {\n id\n floor\n mainDrawing {\n id\n name\n }\n }\n }\n }\n }\n }\n\n ${TaskFragment}\n `,\n variables: {\n id: projectId,\n sortings: [{ name: 'startDate' }]\n }\n })\n\n this.project = response.data?.project\n this.tasks = response.data?.project.rootTasks\n\n if (this.project) {\n this.fromDate = this.project.startDate || '2024-01-01' /* TODO default: start date of this year - 3 */\n this.toDate = this.project.endDate || '2026-12-31' /* TODO defaule: end date of this year + 3 */\n }\n }\n\n onChangePeriodRange() {\n this.fromDate = this.inputStartDate.value\n this.toDate = this.inputEndDate.value\n }\n\n onRangeSelected(event: CustomEvent | null) {\n if (event) {\n this.selectedFromDate = event.detail?.start\n this.selectedToDate = event.detail?.end\n }\n\n const selectedFromDate = new Date(this.selectedFromDate + 'T00:00:00.000Z')\n const selectedToDate = new Date(this.selectedToDate + 'T23:59:59.000Z')\n\n this.constructionTypeList = this.tasks.filter(constuction => {\n const constuctionStartDate = new Date(constuction.startDate)\n const constuctionEndDate = new Date(constuction.endDate)\n\n return constuctionStartDate <= selectedToDate && constuctionEndDate >= selectedFromDate\n })\n }\n\n private _openUploadSchedulePopup() {\n openPopup(\n html`<popup-task-upload\n .projectId=${this.projectId}\n .scheduleTable=${this.project?.scheduleTable}\n @uploaded=${() => this.initProject(this.projectId)}\n ></popup-task-upload>`,\n { backdrop: true, size: 'medium', title: '공정표 업로드' }\n )\n }\n\n private async onClickTaskChecklist(constructionType: any) {\n // 선택된 공종 설정\n this.selectedConstructionTypeId = constructionType.id\n\n // 체크리스트가 있으면 수정 모드, 없으면 생성 모드\n if (constructionType.taskChecklistBinding) {\n const taskChecklistBinding = await this._getTaskChecklistBindingById(constructionType.taskChecklistBinding.id)\n this.selectedChecklist = { ...taskChecklistBinding.checklist, status: taskChecklistBinding.status }\n\n this._openUpdateTaskChecklistPopup(constructionType)\n } else {\n this._openCreateChecklistPopup(constructionType)\n }\n }\n\n private _openCreateChecklistPopup(constructionType: any) {\n openPopup(\n html`<task-checklist-create-popup\n .projectId=${this.projectId}\n .taskCode=${constructionType.id}\n @requestRefresh=\"${async () => {\n await this.initProject(this.projectId)\n this.onRangeSelected(null)\n }}\"\n ></task-checklist-create-popup>`,\n {\n backdrop: true,\n size: 'large',\n title: `체크리스트 생성`\n }\n )\n }\n\n _openUpdateTaskChecklistPopup(constructionType: any) {\n openPopup(\n html`\n <div style=\"overflow-y: auto; height: 100%;\">\n <task-checklist-view\n .mode=${ChecklistMode.EDITOR}\n .status=${this.selectedChecklist.status}\n .checklist=${this.selectedChecklist || {}}\n .buildingComplex=${this.project?.buildingComplex || {}}\n ></task-checklist-view>\n\n <div style=\"text-align: right; margin-right: 20px; margin-bottom: 15px\">\n <md-elevated-button\n ?disabled=${this.selectedChecklist.status == BuildingInspectionStatus.PASS}\n @click=${this._onClickModifyChecklist.bind(this)}\n >\n <md-icon slot=\"icon\">assignment</md-icon>등록\n </md-elevated-button>\n </div>\n </div>\n `,\n { backdrop: true, size: 'large', title: constructionType.title }\n )\n }\n\n private _onClickModifyChecklist() {\n this.validateChecklist(this.selectedChecklist)\n }\n\n private async validateChecklist(checklist: any) {\n try {\n const result = await verifyBiometric()\n if (result.verified) {\n console.log('Verification successful. Proceeding with sensitive action.')\n } else {\n notify({ message: 'Verification failed:' + result.message })\n return\n }\n } catch (error) {\n notify({ message: 'Error during biometric verification:' + error })\n return\n }\n\n const response = await client.mutate({\n mutation: gql`\n mutation UpdateTaskChecklist($taskChecklist: UpdateTaskChecklistSubmitType!) {\n updateTaskChecklist(taskChecklist: $taskChecklist)\n }\n `,\n variables: {\n taskChecklist: {\n checklistId: checklist.id,\n checklist: {\n id: checklist.id,\n overallConstructorSignature: checklist.overallConstructorSignature,\n taskConstructorSignature: checklist.taskConstructorSignature,\n overallSupervisorySignature: checklist.overallSupervisorySignature,\n taskSupervisorySignature: checklist.taskSupervisorySignature\n },\n checklistItem: checklist.checklistItems.map(item => ({\n id: item.id,\n constructionConfirmStatus: item.constructionConfirmStatus,\n supervisoryConfirmStatus: item.supervisoryConfirmStatus\n }))\n }\n }\n })\n\n if (!response.errors) {\n notify({ message: '검측 요청서를 등록하였습니다.' })\n await this.initProject(this.projectId)\n this.onRangeSelected(null)\n history.back()\n } else {\n notify({ message: response.errors?.[0]?.message || '검측 요청서 등록에 실패하였습니다.', level: 'error' })\n }\n }\n\n private _getIconHtmlByStatus(status: string) {\n if (!status) return ''\n\n if (status == BuildingInspectionStatus.WAIT || status == BuildingInspectionStatus.OVERALL_WAIT) {\n return html`<md-icon request>frame_inspect</md-icon>`\n }\n\n if (status == BuildingInspectionStatus.REQUEST || status == BuildingInspectionStatus.OVERALL_REQUEST) {\n return html`<md-icon request>exclamation</md-icon>`\n }\n\n if (status == BuildingInspectionStatus.PASS) {\n return html`<md-icon pass>check</md-icon>`\n }\n\n return html`<md-icon fail>close</md-icon>`\n }\n\n private async _getTaskChecklistBindingById(id: string) {\n const response = await client.query({\n query: gql`\n query TaskChecklistBinding($id: String!) {\n taskChecklistBinding(id: $id) {\n id\n status\n\n checklist {\n id\n name\n constructionType\n constructionDetailType\n location\n inspectionParts\n documentNo\n constructionInspectionDate\n supervisorInspectionDate\n overallConstructorSignature\n taskConstructorSignature\n overallSupervisorySignature\n taskSupervisorySignature\n\n checklistItems {\n id\n name\n sequence\n mainType\n detailType\n inspctionCriteria\n constructionConfirmStatus\n supervisoryConfirmStatus\n checklistItemCommentCount\n checklistItemAttachmentCount\n }\n }\n\n manager {\n userId\n name\n }\n }\n }\n `,\n variables: { id }\n })\n\n if (response.errors) return\n\n return response.data?.taskChecklistBinding || {}\n }\n}\n"]}
|
|
@@ -9,6 +9,7 @@ import { ScopedElementsMixin } from '@open-wc/scoped-elements';
|
|
|
9
9
|
import { client } from '@operato/graphql';
|
|
10
10
|
import { notify } from '@operato/layout';
|
|
11
11
|
import gql from 'graphql-tag';
|
|
12
|
+
import { SITE_TYPE_DISPLAY } from './project-list';
|
|
12
13
|
import '../lib/select2-component';
|
|
13
14
|
import './component/project-update-header';
|
|
14
15
|
let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
@@ -16,6 +17,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
16
17
|
super(...arguments);
|
|
17
18
|
this.defaultProject = {
|
|
18
19
|
name: '',
|
|
20
|
+
documentNaming: '',
|
|
19
21
|
buildingComplex: {
|
|
20
22
|
address: '',
|
|
21
23
|
area: 0,
|
|
@@ -41,7 +43,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
41
43
|
};
|
|
42
44
|
}
|
|
43
45
|
render() {
|
|
44
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31;
|
|
46
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50;
|
|
45
47
|
return html `
|
|
46
48
|
<project-update-header .projectId=${this.project.id || ''} title="프로젝트 정보 관리" @custom-click=${this._saveProject}>
|
|
47
49
|
</project-update-header>
|
|
@@ -61,6 +63,25 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
61
63
|
></md-outlined-text-field>
|
|
62
64
|
</span>
|
|
63
65
|
</div>
|
|
66
|
+
<div row>
|
|
67
|
+
<span>프로젝트 문서 네이밍</span>
|
|
68
|
+
<span>
|
|
69
|
+
<md-outlined-text-field
|
|
70
|
+
type="text"
|
|
71
|
+
name="documentNaming"
|
|
72
|
+
project
|
|
73
|
+
.value=${this.project.documentNaming || ''}
|
|
74
|
+
@input=${this._onInputChange}
|
|
75
|
+
placeholder="프로젝트 문서 네이밍"
|
|
76
|
+
></md-outlined-text-field>
|
|
77
|
+
</span>
|
|
78
|
+
</div>
|
|
79
|
+
<div row>
|
|
80
|
+
<span></span>
|
|
81
|
+
<span>
|
|
82
|
+
<div document-preview>📄 문서 생성 예시: <br />${this.project.documentNaming} 검측 제01-00001호</div>
|
|
83
|
+
</span>
|
|
84
|
+
</div>
|
|
64
85
|
<div row>
|
|
65
86
|
<span>프로젝트 주소</span>
|
|
66
87
|
<span>
|
|
@@ -100,7 +121,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
100
121
|
</span>
|
|
101
122
|
</div>
|
|
102
123
|
<div row>
|
|
103
|
-
<span
|
|
124
|
+
<span>연 면적</span>
|
|
104
125
|
<span align-end
|
|
105
126
|
><md-outlined-text-field
|
|
106
127
|
type="text"
|
|
@@ -109,10 +130,56 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
109
130
|
building-complex
|
|
110
131
|
.value=${((_l = (_k = (_j = this.project) === null || _j === void 0 ? void 0 : _j.buildingComplex) === null || _k === void 0 ? void 0 : _k.area) === null || _l === void 0 ? void 0 : _l.toString()) || ''}
|
|
111
132
|
@input=${this._onInputChange}
|
|
133
|
+
suffix-text="㎡"
|
|
134
|
+
></md-outlined-text-field>
|
|
135
|
+
</span>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<div row>
|
|
139
|
+
<span>건폐율</span>
|
|
140
|
+
<span align-end>
|
|
141
|
+
<md-outlined-text-field
|
|
142
|
+
type="text"
|
|
143
|
+
name="coverageRatio"
|
|
144
|
+
numeric
|
|
145
|
+
building-complex
|
|
146
|
+
.value=${((_p = (_o = (_m = this.project) === null || _m === void 0 ? void 0 : _m.buildingComplex) === null || _o === void 0 ? void 0 : _o.coverageRatio) === null || _p === void 0 ? void 0 : _p.toString()) || ''}
|
|
147
|
+
@input=${this._onInputChange}
|
|
148
|
+
suffix-text="%"
|
|
112
149
|
></md-outlined-text-field>
|
|
113
|
-
|
|
114
|
-
>
|
|
150
|
+
</span>
|
|
115
151
|
</div>
|
|
152
|
+
<div row>
|
|
153
|
+
<span>용적률</span>
|
|
154
|
+
<span align-end>
|
|
155
|
+
<md-outlined-text-field
|
|
156
|
+
type="text"
|
|
157
|
+
name="floorAreaRatio"
|
|
158
|
+
numeric
|
|
159
|
+
building-complex
|
|
160
|
+
.value=${((_s = (_r = (_q = this.project) === null || _q === void 0 ? void 0 : _q.buildingComplex) === null || _r === void 0 ? void 0 : _r.floorAreaRatio) === null || _s === void 0 ? void 0 : _s.toString()) || ''}
|
|
161
|
+
@input=${this._onInputChange}
|
|
162
|
+
suffix-text="%"
|
|
163
|
+
></md-outlined-text-field>
|
|
164
|
+
</span>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<div row>
|
|
168
|
+
<span>현장유형</span>
|
|
169
|
+
<span
|
|
170
|
+
><md-filled-select name="siteType" building-complex @change=${this._onInputChange}>
|
|
171
|
+
${Object.entries(SITE_TYPE_DISPLAY).map(([key, display]) => {
|
|
172
|
+
var _a, _b;
|
|
173
|
+
return html `
|
|
174
|
+
<md-select-option ?selected=${((_b = (_a = this.project) === null || _a === void 0 ? void 0 : _a.buildingComplex) === null || _b === void 0 ? void 0 : _b.siteType) === key} .value=${key}>
|
|
175
|
+
<div slot="headline">${display}</div>
|
|
176
|
+
</md-select-option>
|
|
177
|
+
`;
|
|
178
|
+
})}
|
|
179
|
+
</md-filled-select>
|
|
180
|
+
</span>
|
|
181
|
+
</div>
|
|
182
|
+
|
|
116
183
|
<div row>
|
|
117
184
|
<span>착공일정 ~ 준공일정</span>
|
|
118
185
|
<span
|
|
@@ -142,7 +209,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
142
209
|
type="text"
|
|
143
210
|
name="clientCompany"
|
|
144
211
|
building-complex
|
|
145
|
-
.value=${((
|
|
212
|
+
.value=${((_u = (_t = this.project) === null || _t === void 0 ? void 0 : _t.buildingComplex) === null || _u === void 0 ? void 0 : _u.clientCompany) || ''}
|
|
146
213
|
@input=${this._onInputChange}
|
|
147
214
|
></md-outlined-text-field>
|
|
148
215
|
</span>
|
|
@@ -154,7 +221,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
154
221
|
type="text"
|
|
155
222
|
name="constructionCompany"
|
|
156
223
|
building-complex
|
|
157
|
-
.value=${((
|
|
224
|
+
.value=${((_w = (_v = this.project) === null || _v === void 0 ? void 0 : _v.buildingComplex) === null || _w === void 0 ? void 0 : _w.constructionCompany) || ''}
|
|
158
225
|
@input=${this._onInputChange}
|
|
159
226
|
></md-outlined-text-field>
|
|
160
227
|
</span>
|
|
@@ -166,7 +233,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
166
233
|
type="text"
|
|
167
234
|
name="designCompany"
|
|
168
235
|
building-complex
|
|
169
|
-
.value=${((
|
|
236
|
+
.value=${((_y = (_x = this.project) === null || _x === void 0 ? void 0 : _x.buildingComplex) === null || _y === void 0 ? void 0 : _y.designCompany) || ''}
|
|
170
237
|
@input=${this._onInputChange}
|
|
171
238
|
></md-outlined-text-field>
|
|
172
239
|
</span>
|
|
@@ -178,7 +245,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
178
245
|
type="text"
|
|
179
246
|
name="supervisoryCompany"
|
|
180
247
|
building-complex
|
|
181
|
-
.value=${((
|
|
248
|
+
.value=${((_0 = (_z = this.project) === null || _z === void 0 ? void 0 : _z.buildingComplex) === null || _0 === void 0 ? void 0 : _0.supervisoryCompany) || ''}
|
|
182
249
|
@input=${this._onInputChange}
|
|
183
250
|
></md-outlined-text-field>
|
|
184
251
|
</span>
|
|
@@ -190,17 +257,30 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
190
257
|
type="text"
|
|
191
258
|
name="constructionType"
|
|
192
259
|
building-complex
|
|
193
|
-
.value=${((
|
|
260
|
+
.value=${((_2 = (_1 = this.project) === null || _1 === void 0 ? void 0 : _1.buildingComplex) === null || _2 === void 0 ? void 0 : _2.constructionType) || ''}
|
|
194
261
|
@input=${this._onInputChange}
|
|
195
262
|
></md-outlined-text-field>
|
|
196
263
|
</span>
|
|
197
264
|
</div>
|
|
265
|
+
<div row>
|
|
266
|
+
<span>구조 유형</span>
|
|
267
|
+
<span
|
|
268
|
+
><md-outlined-text-field
|
|
269
|
+
type="text"
|
|
270
|
+
name="structureType"
|
|
271
|
+
building-complex
|
|
272
|
+
.value=${((_4 = (_3 = this.project) === null || _3 === void 0 ? void 0 : _3.buildingComplex) === null || _4 === void 0 ? void 0 : _4.structureType) || ''}
|
|
273
|
+
@input=${this._onInputChange}
|
|
274
|
+
></md-outlined-text-field>
|
|
275
|
+
</span>
|
|
276
|
+
</div>
|
|
277
|
+
|
|
198
278
|
<div row>
|
|
199
279
|
<span>대표사진 업로드</span>
|
|
200
280
|
<span>
|
|
201
281
|
<ox-input-image
|
|
202
282
|
name="mainPhoto"
|
|
203
|
-
value=${((
|
|
283
|
+
value=${((_6 = (_5 = this.project) === null || _5 === void 0 ? void 0 : _5.mainPhoto) === null || _6 === void 0 ? void 0 : _6.fullpath) || ''}
|
|
204
284
|
@change=${this.onCreateAttachment.bind(this)}
|
|
205
285
|
></ox-input-image>
|
|
206
286
|
</span>
|
|
@@ -212,7 +292,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
212
292
|
name="drawing"
|
|
213
293
|
label=" "
|
|
214
294
|
description="IFC 업로드"
|
|
215
|
-
.value=${((
|
|
295
|
+
.value=${((_8 = (_7 = this.project) === null || _7 === void 0 ? void 0 : _7.buildingComplex) === null || _8 === void 0 ? void 0 : _8.drawing) || ''}
|
|
216
296
|
@change=${this.onCreateAttachment.bind(this)}
|
|
217
297
|
></ox-input-file>
|
|
218
298
|
</span>
|
|
@@ -225,8 +305,23 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
225
305
|
name="constructionCost"
|
|
226
306
|
numeric
|
|
227
307
|
building-complex
|
|
228
|
-
.value=${((
|
|
308
|
+
.value=${((_11 = (_10 = (_9 = this.project) === null || _9 === void 0 ? void 0 : _9.buildingComplex) === null || _10 === void 0 ? void 0 : _10.constructionCost) === null || _11 === void 0 ? void 0 : _11.toString()) || ''}
|
|
229
309
|
@input=${this._onInputChange}
|
|
310
|
+
suffix-text="원"
|
|
311
|
+
></md-outlined-text-field>
|
|
312
|
+
</span>
|
|
313
|
+
</div>
|
|
314
|
+
<div row>
|
|
315
|
+
<span>투입 인력</span>
|
|
316
|
+
<span
|
|
317
|
+
><md-outlined-text-field
|
|
318
|
+
type="text"
|
|
319
|
+
name="workerCount"
|
|
320
|
+
numeric
|
|
321
|
+
building-complex
|
|
322
|
+
.value=${((_14 = (_13 = (_12 = this.project) === null || _12 === void 0 ? void 0 : _12.buildingComplex) === null || _13 === void 0 ? void 0 : _13.workerCount) === null || _14 === void 0 ? void 0 : _14.toString()) || ''}
|
|
323
|
+
@input=${this._onInputChange}
|
|
324
|
+
suffix-text="명"
|
|
230
325
|
></md-outlined-text-field>
|
|
231
326
|
</span>
|
|
232
327
|
</div>
|
|
@@ -237,7 +332,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
237
332
|
type="textarea"
|
|
238
333
|
name="etc"
|
|
239
334
|
building-complex
|
|
240
|
-
.value=${((
|
|
335
|
+
.value=${((_16 = (_15 = this.project) === null || _15 === void 0 ? void 0 : _15.buildingComplex) === null || _16 === void 0 ? void 0 : _16.etc) || ''}
|
|
241
336
|
@input=${this._onInputChange}
|
|
242
337
|
></md-outlined-text-field>
|
|
243
338
|
</span>
|
|
@@ -249,7 +344,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
249
344
|
placeholder="총괄 시공 관리자 리스트"
|
|
250
345
|
name="overallConstructorEmails"
|
|
251
346
|
.options=${this.overallConstructorList}
|
|
252
|
-
.selectedValues=${((
|
|
347
|
+
.selectedValues=${((_18 = (_17 = this.project) === null || _17 === void 0 ? void 0 : _17.buildingComplex) === null || _18 === void 0 ? void 0 : _18.overallConstructorEmails) || []}
|
|
253
348
|
@selection-changed=${this._handleSelectionChange}
|
|
254
349
|
></select2-component>
|
|
255
350
|
</span>
|
|
@@ -261,7 +356,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
261
356
|
placeholder="공종별 시공 관리자 리스트"
|
|
262
357
|
name="taskConstructorEmails"
|
|
263
358
|
.options=${this.taskConstructorList}
|
|
264
|
-
.selectedValues=${((
|
|
359
|
+
.selectedValues=${((_20 = (_19 = this.project) === null || _19 === void 0 ? void 0 : _19.buildingComplex) === null || _20 === void 0 ? void 0 : _20.taskConstructorEmails) || []}
|
|
265
360
|
@selection-changed=${this._handleSelectionChange}
|
|
266
361
|
></select2-component>
|
|
267
362
|
</span>
|
|
@@ -273,7 +368,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
273
368
|
placeholder="총괄 감리 책임자 리스트"
|
|
274
369
|
name="overallSupervisoryEmails"
|
|
275
370
|
.options=${this.overallSupervisoryList}
|
|
276
|
-
.selectedValues=${((
|
|
371
|
+
.selectedValues=${((_22 = (_21 = this.project) === null || _21 === void 0 ? void 0 : _21.buildingComplex) === null || _22 === void 0 ? void 0 : _22.overallSupervisoryEmails) || []}
|
|
277
372
|
@selection-changed=${this._handleSelectionChange}
|
|
278
373
|
></select2-component>
|
|
279
374
|
</span>
|
|
@@ -285,7 +380,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
285
380
|
placeholder="공종별 감리 책임자 리스트"
|
|
286
381
|
name="taskSupervisoryEmails"
|
|
287
382
|
.options=${this.taskSupervisoryList}
|
|
288
|
-
.selectedValues=${((
|
|
383
|
+
.selectedValues=${((_24 = (_23 = this.project) === null || _23 === void 0 ? void 0 : _23.buildingComplex) === null || _24 === void 0 ? void 0 : _24.taskSupervisoryEmails) || []}
|
|
289
384
|
@selection-changed=${this._handleSelectionChange}
|
|
290
385
|
></select2-component
|
|
291
386
|
></span>
|
|
@@ -303,7 +398,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
303
398
|
numeric
|
|
304
399
|
building-complex
|
|
305
400
|
name="householdCount"
|
|
306
|
-
.value=${((
|
|
401
|
+
.value=${((_27 = (_26 = (_25 = this.project) === null || _25 === void 0 ? void 0 : _25.buildingComplex) === null || _26 === void 0 ? void 0 : _26.householdCount) === null || _27 === void 0 ? void 0 : _27.toString()) || ''}
|
|
307
402
|
@input=${this._onInputChange}
|
|
308
403
|
></md-outlined-text-field>
|
|
309
404
|
</span>
|
|
@@ -316,7 +411,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
316
411
|
numeric
|
|
317
412
|
building-complex
|
|
318
413
|
name="buildingCount"
|
|
319
|
-
value=${((
|
|
414
|
+
value=${((_30 = (_29 = (_28 = this.project) === null || _28 === void 0 ? void 0 : _28.buildingComplex) === null || _29 === void 0 ? void 0 : _29.buildingCount) === null || _30 === void 0 ? void 0 : _30.toString()) || ''}
|
|
320
415
|
@input=${this._onInputChange}
|
|
321
416
|
></md-outlined-text-field>
|
|
322
417
|
<md-outlined-button @click=${this._setBuilding}>적용</md-outlined-button>
|
|
@@ -325,7 +420,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
325
420
|
<hr />
|
|
326
421
|
<div warn>* 동/층의 정보를 수정하면 기존의 동/층 정보는 모두 제거됩니다.</div>
|
|
327
422
|
<div separate-container>
|
|
328
|
-
${(
|
|
423
|
+
${(_33 = (_32 = (_31 = this.project) === null || _31 === void 0 ? void 0 : _31.buildingComplex) === null || _32 === void 0 ? void 0 : _32.buildings) === null || _33 === void 0 ? void 0 : _33.map((building, idx) => {
|
|
329
424
|
var _a, _b;
|
|
330
425
|
return html `
|
|
331
426
|
<div>
|
|
@@ -393,7 +488,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
393
488
|
numeric
|
|
394
489
|
project
|
|
395
490
|
name="totalProgress"
|
|
396
|
-
.value=${((
|
|
491
|
+
.value=${((_34 = this.project.totalProgress) === null || _34 === void 0 ? void 0 : _34.toString()) || ''}
|
|
397
492
|
@input=${this._onInputChange}
|
|
398
493
|
suffix-text="%"
|
|
399
494
|
></md-outlined-text-field>
|
|
@@ -407,7 +502,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
407
502
|
numeric
|
|
408
503
|
project
|
|
409
504
|
name="inspPassRate"
|
|
410
|
-
.value=${((
|
|
505
|
+
.value=${((_35 = this.project.inspPassRate) === null || _35 === void 0 ? void 0 : _35.toString()) || ''}
|
|
411
506
|
@input=${this._onInputChange}
|
|
412
507
|
suffix-text="%"
|
|
413
508
|
></md-outlined-text-field>
|
|
@@ -423,7 +518,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
423
518
|
numeric
|
|
424
519
|
project
|
|
425
520
|
name="weeklyProgress"
|
|
426
|
-
.value=${((
|
|
521
|
+
.value=${((_36 = this.project.weeklyProgress) === null || _36 === void 0 ? void 0 : _36.toString()) || ''}
|
|
427
522
|
@input=${this._onInputChange}
|
|
428
523
|
suffix-text="%"
|
|
429
524
|
></md-outlined-text-field>
|
|
@@ -437,7 +532,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
437
532
|
numeric
|
|
438
533
|
project
|
|
439
534
|
name="robotProgressRate"
|
|
440
|
-
.value=${((
|
|
535
|
+
.value=${((_37 = this.project.robotProgressRate) === null || _37 === void 0 ? void 0 : _37.toString()) || ''}
|
|
441
536
|
@input=${this._onInputChange}
|
|
442
537
|
suffix-text="%"
|
|
443
538
|
></md-outlined-text-field>
|
|
@@ -453,7 +548,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
453
548
|
numeric
|
|
454
549
|
project
|
|
455
550
|
name="kpi"
|
|
456
|
-
.value=${((
|
|
551
|
+
.value=${((_38 = this.project.kpi) === null || _38 === void 0 ? void 0 : _38.toString()) || ''}
|
|
457
552
|
@input=${this._onInputChange}
|
|
458
553
|
suffix-text="%"
|
|
459
554
|
></md-outlined-text-field>
|
|
@@ -467,7 +562,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
467
562
|
numeric
|
|
468
563
|
project
|
|
469
564
|
name="structuralSafetyRate"
|
|
470
|
-
.value=${((
|
|
565
|
+
.value=${((_39 = this.project.structuralSafetyRate) === null || _39 === void 0 ? void 0 : _39.toString()) || ''}
|
|
471
566
|
@input=${this._onInputChange}
|
|
472
567
|
suffix-text="%"
|
|
473
568
|
></md-outlined-text-field>
|
|
@@ -484,8 +579,57 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
484
579
|
numeric
|
|
485
580
|
project
|
|
486
581
|
name="robotCount"
|
|
487
|
-
.value=${((
|
|
582
|
+
.value=${((_40 = this.project.robotCount) === null || _40 === void 0 ? void 0 : _40.toString()) || ''}
|
|
583
|
+
@input=${this._onInputChange}
|
|
584
|
+
></md-outlined-text-field>
|
|
585
|
+
</span>
|
|
586
|
+
</div>
|
|
587
|
+
</div>
|
|
588
|
+
|
|
589
|
+
<hr />
|
|
590
|
+
|
|
591
|
+
<div row separate-container>
|
|
592
|
+
<div>
|
|
593
|
+
<span>설계 변경 횟수</span>
|
|
594
|
+
<span
|
|
595
|
+
><md-outlined-text-field
|
|
596
|
+
type="text"
|
|
597
|
+
numeric
|
|
598
|
+
building-complex
|
|
599
|
+
name="designChangeCount"
|
|
600
|
+
.value=${((_42 = (_41 = this.project.buildingComplex) === null || _41 === void 0 ? void 0 : _41.designChangeCount) === null || _42 === void 0 ? void 0 : _42.toString()) || ''}
|
|
601
|
+
@input=${this._onInputChange}
|
|
602
|
+
></md-outlined-text-field>
|
|
603
|
+
</span>
|
|
604
|
+
</div>
|
|
605
|
+
<div>
|
|
606
|
+
<span>계획 공정률</span>
|
|
607
|
+
<span
|
|
608
|
+
><md-outlined-text-field
|
|
609
|
+
type="text"
|
|
610
|
+
numeric
|
|
611
|
+
building-complex
|
|
612
|
+
name="plannedProgress"
|
|
613
|
+
.value=${((_44 = (_43 = this.project.buildingComplex) === null || _43 === void 0 ? void 0 : _43.plannedProgress) === null || _44 === void 0 ? void 0 : _44.toString()) || ''}
|
|
614
|
+
@input=${this._onInputChange}
|
|
615
|
+
suffix-text="%"
|
|
616
|
+
></md-outlined-text-field>
|
|
617
|
+
</span>
|
|
618
|
+
</div>
|
|
619
|
+
</div>
|
|
620
|
+
|
|
621
|
+
<div row separate-container>
|
|
622
|
+
<div>
|
|
623
|
+
<span>실제 공정률</span>
|
|
624
|
+
<span
|
|
625
|
+
><md-outlined-text-field
|
|
626
|
+
type="text"
|
|
627
|
+
numeric
|
|
628
|
+
building-complex
|
|
629
|
+
name="actualProgress"
|
|
630
|
+
.value=${((_46 = (_45 = this.project.buildingComplex) === null || _45 === void 0 ? void 0 : _45.actualProgress) === null || _46 === void 0 ? void 0 : _46.toString()) || ''}
|
|
488
631
|
@input=${this._onInputChange}
|
|
632
|
+
suffix-text="%"
|
|
489
633
|
></md-outlined-text-field>
|
|
490
634
|
</span>
|
|
491
635
|
</div>
|
|
@@ -501,7 +645,23 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
501
645
|
type="textarea"
|
|
502
646
|
name="notice"
|
|
503
647
|
building-complex
|
|
504
|
-
.value=${((
|
|
648
|
+
.value=${((_48 = (_47 = this.project) === null || _47 === void 0 ? void 0 : _47.buildingComplex) === null || _48 === void 0 ? void 0 : _48.notice) || ''}
|
|
649
|
+
@input=${this._onInputChange}
|
|
650
|
+
></md-outlined-text-field>
|
|
651
|
+
</span>
|
|
652
|
+
</div>
|
|
653
|
+
</div>
|
|
654
|
+
|
|
655
|
+
<div>
|
|
656
|
+
<h3>Virtual Tour Link</h3>
|
|
657
|
+
<div>
|
|
658
|
+
<span></span>
|
|
659
|
+
<span>
|
|
660
|
+
<md-outlined-text-field
|
|
661
|
+
type="text"
|
|
662
|
+
name="virtualTourLink"
|
|
663
|
+
building-complex
|
|
664
|
+
.value=${((_50 = (_49 = this.project) === null || _49 === void 0 ? void 0 : _49.buildingComplex) === null || _50 === void 0 ? void 0 : _50.virtualTourLink) || ''}
|
|
505
665
|
@input=${this._onInputChange}
|
|
506
666
|
></md-outlined-text-field>
|
|
507
667
|
</span>
|
|
@@ -526,6 +686,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
526
686
|
project(id: $id) {
|
|
527
687
|
id
|
|
528
688
|
name
|
|
689
|
+
documentNaming
|
|
529
690
|
startDate
|
|
530
691
|
endDate
|
|
531
692
|
mainPhoto {
|
|
@@ -541,9 +702,17 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
541
702
|
buildingComplex {
|
|
542
703
|
id
|
|
543
704
|
address
|
|
705
|
+
siteType
|
|
544
706
|
latitude
|
|
545
707
|
longitude
|
|
546
708
|
area
|
|
709
|
+
coverageRatio
|
|
710
|
+
floorAreaRatio
|
|
711
|
+
structureType
|
|
712
|
+
workerCount
|
|
713
|
+
designChangeCount
|
|
714
|
+
plannedProgress
|
|
715
|
+
actualProgress
|
|
547
716
|
clientCompany
|
|
548
717
|
constructionCompany
|
|
549
718
|
supervisoryCompany
|
|
@@ -562,6 +731,7 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
562
731
|
taskConstructorEmails
|
|
563
732
|
overallSupervisoryEmails
|
|
564
733
|
taskSupervisoryEmails
|
|
734
|
+
virtualTourLink
|
|
565
735
|
buildings {
|
|
566
736
|
id
|
|
567
737
|
name
|
|
@@ -670,6 +840,10 @@ let ProjectUpdate = class ProjectUpdate extends ScopedElementsMixin(PageView) {
|
|
|
670
840
|
}
|
|
671
841
|
if (target.hasAttribute('project')) {
|
|
672
842
|
this.project[target.name] = inputVal;
|
|
843
|
+
// documentNaming 필드가 변경되면 실시간으로 미리보기 업데이트
|
|
844
|
+
if (target.name === 'documentNaming') {
|
|
845
|
+
this.requestUpdate();
|
|
846
|
+
}
|
|
673
847
|
}
|
|
674
848
|
else if (target.hasAttribute('building-complex')) {
|
|
675
849
|
this.project.buildingComplex[target.name] = inputVal;
|
|
@@ -737,6 +911,13 @@ ProjectUpdate.styles = [
|
|
|
737
911
|
select2-component {
|
|
738
912
|
width: 100%;
|
|
739
913
|
}
|
|
914
|
+
md-filled-select {
|
|
915
|
+
width: 100%;
|
|
916
|
+
--md-filled-select-text-field-container-color: transparent;
|
|
917
|
+
--md-filled-select-text-field-active-indicator-color: #999;
|
|
918
|
+
--md-filled-select-text-field-input-text-size: 14px;
|
|
919
|
+
--md-filled-select-text-field-input-text-line-height: 6px;
|
|
920
|
+
}
|
|
740
921
|
input[type='date'] {
|
|
741
922
|
border: 1px solid rgba(51, 51, 51, 0.2);
|
|
742
923
|
padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);
|
|
@@ -808,6 +989,18 @@ ProjectUpdate.styles = [
|
|
|
808
989
|
flex: 0.55;
|
|
809
990
|
}
|
|
810
991
|
|
|
992
|
+
div[document-preview] {
|
|
993
|
+
width: 100%;
|
|
994
|
+
font-size: 12px;
|
|
995
|
+
color: #2e79be;
|
|
996
|
+
font-weight: 500;
|
|
997
|
+
background-color: #f8f9fa;
|
|
998
|
+
padding: 8px 12px;
|
|
999
|
+
border-radius: 4px;
|
|
1000
|
+
border-left: 3px solid #2e79be;
|
|
1001
|
+
margin-top: 4px;
|
|
1002
|
+
}
|
|
1003
|
+
|
|
811
1004
|
div[detail-info] {
|
|
812
1005
|
flex: 0.45;
|
|
813
1006
|
padding: 0px;
|