@dssp/supervision 1.0.0-alpha.31 → 1.0.0-alpha.35

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 (19) hide show
  1. package/dist-client/pages/building-inspection/building-inspection-list.js +34 -6
  2. package/dist-client/pages/building-inspection/building-inspection-list.js.map +1 -1
  3. package/dist-client/pages/building-inspection/component/daily-worklog-popup.d.ts +5 -0
  4. package/dist-client/pages/building-inspection/component/daily-worklog-popup.js +149 -38
  5. package/dist-client/pages/building-inspection/component/daily-worklog-popup.js.map +1 -1
  6. package/dist-client/tsconfig.tsbuildinfo +1 -1
  7. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js +1 -1
  8. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js.map +1 -1
  9. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.d.ts +2 -0
  10. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.js +39 -3
  11. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.js.map +1 -1
  12. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.d.ts +4 -0
  13. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.js +16 -0
  14. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.js.map +1 -1
  15. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.d.ts +6 -0
  16. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.js +28 -0
  17. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.js.map +1 -1
  18. package/dist-server/tsconfig.tsbuildinfo +1 -1
  19. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"daily-worklog-popup.js","sourceRoot":"","sources":["../../../../client/pages/building-inspection/component/daily-worklog-popup.ts"],"names":[],"mappings":";AAAA,OAAO,yCAAyC,CAAA;AAChD,OAAO,4BAA4B,CAAA;AAEnC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAS,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,qCAAiB,CAAA;AACnB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAGM,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,UAAU;IAA1C;;QAqNuB,iBAAY,GAAQ,EAAE,CAAA;QACtB,SAAI,GAAsB,gBAAgB,CAAC,MAAM,CAAA;QA6HrE,YAAO,GAAG,GAAG,EAAE;YACrB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;YAC3F,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC,CAAA;YACvG,IAAI,CAAC,YAAY,mCAAQ,IAAI,CAAC,YAAY,KAAE,QAAQ,EAAE,WAAW,GAAE,CAAA;QACrE,CAAC,CAAA;IA6DH,CAAC;IA5LC,MAAM;;QACJ,OAAO,IAAI,CAAA;;;;;;;;kCAQmB,CAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,UAAU,KAAI,EAAE;;;;;;;;;;;oDAWjB,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,KAAI,EAAE;+CAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE;;;;;;;;;;;;;;;;;oBAiB/E,MAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,0CAAE,GAAG,CAC/B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA;;;;;qCAKG,CAAC,CAAC,gBAAgB;qCAClB,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;qCAMvE,CAAC,CAAC,gBAAgB;qCAClB,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;qCAMvE,CAAC,CAAC,iBAAiB;qCACnB,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;;;8DAI/C,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;;qBAG9D,CACF;;;mDAGgC,IAAI,CAAC,OAAO;;;;;;;;;;;;yBAYtC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE;yBAC5B,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;yBASrD,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,EAAE;yBACrC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;YAO3E,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM;YACrC,CAAC,CAAC,IAAI,CAAA,mCAAmC,IAAI,CAAC,OAAO,6DAA6D;YAClH,CAAC,CAAC,IAAI,CAAA,oCAAoC,IAAI,CAAC,OAAO,6DAA6D;;;KAG1H,CAAA;IACH,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;IAC3B,CAAC;IAEO,mBAAmB;QACzB,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IACpF,CAAC;IAEO,eAAe,CAAC,KAAa,EAAE,KAAa,EAAE,KAAa;QACjE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;QAC3F,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;QAChC,WAAW,CAAC,KAAK,CAAC,mCAAQ,WAAW,CAAC,KAAK,CAAC,KAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAE,CAAA;QAC9D,IAAI,CAAC,YAAY,mCAAQ,IAAI,CAAC,YAAY,KAAE,QAAQ,EAAE,WAAW,GAAE,CAAA;IACrE,CAAC;IAQO,OAAO,CAAC,KAAa;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;QAC3F,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;QAChC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC5B,IAAI,CAAC,YAAY,mCAAQ,IAAI,CAAC,YAAY,KAAE,QAAQ,EAAE,WAAW,GAAE,CAAA;IACrE,CAAC;IAEO,KAAK,CAAC,OAAO;;QACnB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;OAMZ;YACD,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;oBAC5B,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;oBAC9C,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ;oBACpC,SAAS,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,EAAE;oBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5E;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;YAC3F,MAAM,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YACvD,OAAO,CAAC,IAAI,EAAE,CAAA;QAChB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;OAMZ;YACD,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;oBACxB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ;oBACpC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;oBAC5B,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;iBAC/C;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YACvD,OAAO,CAAC,IAAI,EAAE,CAAA;QAChB,CAAC;IACH,CAAC;;AAlZM,wBAAM,GAAG;IACd,eAAe;IACf,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6MF;CACF,AAhNY,CAgNZ;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;+CAAc;AACb;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;kDAAc;AACb;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;uDAAuB;AACtB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;+CAAkD;AAtNlE,iBAAiB;IAD7B,aAAa,CAAC,qBAAqB,CAAC;GACxB,iBAAiB,CAoZ7B","sourcesContent":["import '@material/web/button/elevated-button.js'\nimport '@material/web/icon/icon.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, state, property } from 'lit/decorators.js'\nimport { ScrollbarStyles } from '@operato/styles'\nimport gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\nimport moment from 'moment-timezone'\nimport { notify } from '@operato/layout'\n\nexport enum DailyWorklogMode {\n EDIT = 'edit',\n CREATE = 'create'\n}\n\n@customElement('daily-worklog-popup')\nexport class DailyWorklogPopup extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: block;\n background: #fff;\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n\n .container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 20px;\n height: 100%;\n box-sizing: border-box;\n }\n\n .sheet {\n flex: 1;\n overflow: auto;\n background: #fff;\n border: 2px solid #333;\n }\n\n .title {\n text-align: center;\n padding: 16px 12px;\n border-bottom: 1px solid #333;\n font-weight: 800;\n font-size: 18px;\n letter-spacing: 1px;\n }\n\n .body {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n }\n\n .header-table,\n .work-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .header-table th,\n .header-table td {\n border: 1px solid #333;\n padding: 8px;\n font-size: 14px;\n text-align: left;\n }\n\n .header-table th {\n width: 140px;\n background-color: #f5f5f5;\n white-space: nowrap;\n }\n\n .inline {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n }\n\n .inline > * {\n width: 100%;\n }\n\n .inline.readonly {\n align-items: center;\n grid-template-columns: auto;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .field label {\n font-size: 12px;\n font-weight: 600;\n color: #333;\n }\n\n .work-table th,\n .work-table td {\n border: 1px solid #333;\n padding: 8px;\n vertical-align: middle;\n }\n\n .work-table thead th {\n background-color: #f5f5f5;\n text-align: center;\n }\n\n .work-table .col-job {\n width: 140px;\n }\n\n .work-table .col-action {\n width: 60px;\n text-align: center;\n }\n\n .work-table td.action {\n text-align: center;\n }\n\n .work-section {\n display: grid;\n grid-template-columns: 40px 1fr;\n gap: 0;\n align-items: stretch;\n }\n\n .left-title {\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid #333;\n border-right: none;\n background-color: #f5f5f5;\n writing-mode: vertical-rl;\n text-orientation: upright;\n font-weight: 600;\n letter-spacing: 2px;\n }\n\n .construction-name {\n width: 50% !important;\n }\n\n .date-display {\n font-size: 14px;\n font-weight: 700;\n margin-left: 15px;\n }\n\n input[type='text'],\n input[type='date'],\n textarea {\n width: 100%;\n box-sizing: border-box;\n border: 1px solid #ddd;\n padding: 8px;\n font-size: 14px;\n border-radius: 4px;\n background: #fff;\n }\n\n textarea.small {\n min-height: 80px;\n resize: vertical;\n }\n\n .section-title {\n font-weight: bold;\n margin-top: 4px;\n margin-bottom: 4px;\n }\n\n .footer {\n display: flex;\n justify-content: center;\n padding: 12px 0;\n border-top: 1px solid #ddd;\n }\n\n .add-row {\n text-align: center;\n background: #fafafa;\n }\n\n .clickable {\n cursor: pointer;\n }\n\n md-elevated-button[blue] {\n --md-elevated-button-container-color: #0595e5;\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 md-elevated-button[green] {\n --md-elevated-button-container-color: #008000;\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 @property({ type: String }) date?: string\n @property({ type: Object }) project?: any\n @property({ type: Object }) dailyWorklog: any = {}\n @property({ type: String }) mode?: DailyWorklogMode = DailyWorklogMode.CREATE\n\n render() {\n return html`\n <div class=\"container\">\n <div class=\"sheet\">\n <div class=\"title\">공사감리일지</div>\n <div class=\"body\">\n <table class=\"header-table\">\n <tr>\n <th>문서번호</th>\n <td colspan=\"3\">${this.dailyWorklog?.documentNo || ''}</td>\n </tr>\n <tr>\n <th>공종별 감리 책임자</th>\n <td></td>\n <th>총괄 감리 책임자</th>\n <td></td>\n </tr>\n <tr>\n <th>공사명</th>\n <td colspan=\"3\">\n <span class=\"construction-name\">${this.project?.name || ''}</span>\n <span class=\"date-display\">${this.dailyWorklog.date || this._formatSelectedDate()}</span>\n </td>\n </tr>\n </table>\n\n <div class=\"work-section\">\n <div class=\"left-title\">작업사항</div>\n <table class=\"work-table\">\n <thead>\n <tr>\n <th class=\"col-job\">공종</th>\n <th>감리확인사항</th>\n <th>감리내용</th>\n <th class=\"col-action\">삭제</th>\n </tr>\n </thead>\n <tbody>\n ${this.dailyWorklog.worklogs?.map(\n (r, i) => html`\n <tr>\n <td>\n <input\n type=\"text\"\n .value=${r.constructionType}\n @input=${(e: any) => this._updateWorklogs(i, 'constructionType', e.target.value)}\n />\n </td>\n <td>\n <input\n type=\"text\"\n .value=${r.supervisoryTitle}\n @input=${(e: any) => this._updateWorklogs(i, 'supervisoryTitle', e.target.value)}\n />\n </td>\n <td>\n <input\n type=\"text\"\n .value=${r.supervisorContent}\n @input=${(e: any) => this._updateWorklogs(i, 'supervisorContent', e.target.value)}\n />\n </td>\n <td class=\"action\">\n <md-icon class=\"clickable\" @click=${() => this._remove(i)}>delete</md-icon>\n </td>\n </tr>\n `\n )}\n <tr>\n <td colspan=\"4\" class=\"add-row\">\n <md-elevated-button @click=${this._addRow}><md-icon slot=\"icon\">add</md-icon>행 추가</md-elevated-button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div>\n <div class=\"section-title\">특기사항</div>\n <textarea\n class=\"small\"\n placeholder=\"특기사항을 입력하세요.\"\n .value=${this.dailyWorklog.memo || ''}\n @input=${(e: any) => (this.dailyWorklog.memo = e.target.value)}\n ></textarea>\n </div>\n\n <div>\n <div class=\"section-title\">지적사항 및 처리결과</div>\n <textarea\n class=\"small\"\n placeholder=\"지적사항 및 처리결과를 입력하세요.\"\n .value=${this.dailyWorklog.directiveMemo || ''}\n @input=${(e: any) => (this.dailyWorklog.directiveMemo = e.target.value)}\n ></textarea>\n </div>\n </div>\n </div>\n\n <div class=\"footer\">\n ${this.mode === DailyWorklogMode.CREATE\n ? html`<md-elevated-button blue @click=${this._create}><md-icon slot=\"icon\">save</md-icon>저장</md-elevated-button>`\n : html`<md-elevated-button green @click=${this._update}><md-icon slot=\"icon\">save</md-icon>수정</md-elevated-button>`}\n </div>\n </div>\n `\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n }\n\n private _formatSelectedDate(): string {\n return moment.tz(this.date, 'Asia/Seoul').locale('ko').format('YYYY-MM-DD (dddd)')\n }\n\n private _updateWorklogs(index: number, field: string, value: string) {\n const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : []\n const newWorklogs = [...current]\n newWorklogs[index] = { ...newWorklogs[index], [field]: value }\n this.dailyWorklog = { ...this.dailyWorklog, worklogs: newWorklogs }\n }\n\n private _addRow = () => {\n const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : []\n const newWorklogs = [...current, { constructionType: '', supervisoryTitle: '', supervisorContent: '' }]\n this.dailyWorklog = { ...this.dailyWorklog, worklogs: newWorklogs }\n }\n\n private _remove(index: number) {\n const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : []\n const newWorklogs = [...current]\n newWorklogs.splice(index, 1)\n this.dailyWorklog = { ...this.dailyWorklog, worklogs: newWorklogs }\n }\n\n private async _create() {\n const response = await client.mutate({\n mutation: gql`\n mutation CreateBuildingInspectionDailyWorklog($patch: BuildingInspectionDailyWorklogNew!) {\n createBuildingInspectionDailyWorklog(patch: $patch) {\n id\n }\n }\n `,\n variables: {\n patch: {\n memo: this.dailyWorklog.memo,\n directiveMemo: this.dailyWorklog.directiveMemo,\n worklogs: this.dailyWorklog.worklogs,\n projectId: this.project?.id,\n date: this.date,\n buildingInspectionIds: this.dailyWorklog.buildingInspections.map(v => v.id)\n }\n }\n })\n\n if (!response.errors) {\n this.dispatchEvent(new CustomEvent('createdDailyWorklog', { detail: { date: this.date } }))\n notify({ message: '일일 업무일지가 생성되었습니다.', level: 'info' })\n history.back()\n }\n }\n\n private async _update() {\n const response = await client.mutate({\n mutation: gql`\n mutation UpdateBuildingInspectionDailyWorklog($patch: BuildingInspectionDailyWorklogPatch!) {\n updateBuildingInspectionDailyWorklog(patch: $patch) {\n id\n }\n }\n `,\n variables: {\n patch: {\n id: this.dailyWorklog.id,\n worklogs: this.dailyWorklog.worklogs,\n memo: this.dailyWorklog.memo,\n directiveMemo: this.dailyWorklog.directiveMemo\n }\n }\n })\n\n if (!response.errors) {\n notify({ message: '일일 업무일지가 수정되었습니다.', level: 'info' })\n history.back()\n }\n }\n}\n"]}
1
+ {"version":3,"file":"daily-worklog-popup.js","sourceRoot":"","sources":["../../../../client/pages/building-inspection/component/daily-worklog-popup.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/elevated-button.js'\nimport '@material/web/icon/icon.js'\nimport '@material/web/radio/radio.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, state, property } from 'lit/decorators.js'\nimport { ScrollbarStyles } from '@operato/styles'\nimport gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\nimport moment from 'moment-timezone'\nimport { notify } from '@operato/layout'\n\nexport enum DailyWorklogMode {\n EDIT = 'edit',\n CREATE = 'create'\n}\n\n@customElement('daily-worklog-popup')\nexport class DailyWorklogPopup extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: block;\n background: #fff;\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n\n .container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 20px;\n height: 100%;\n box-sizing: border-box;\n }\n\n .sheet {\n flex: 1;\n overflow: auto;\n background: #fff;\n border: 2px solid #333;\n }\n\n .title {\n text-align: center;\n padding: 16px 12px;\n border-bottom: 1px solid #333;\n font-weight: 800;\n font-size: 18px;\n letter-spacing: 1px;\n }\n\n .body {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n }\n\n .header-table,\n .work-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .header-table th,\n .header-table td {\n border: 1px solid #333;\n padding: 8px;\n font-size: 14px;\n text-align: left;\n }\n\n .header-table th {\n width: 140px;\n background-color: #f5f5f5;\n white-space: nowrap;\n }\n\n .inline {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n }\n\n .inline > * {\n width: 100%;\n }\n\n .inline.readonly {\n align-items: center;\n grid-template-columns: auto;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .field label {\n font-size: 12px;\n font-weight: 600;\n color: #333;\n }\n\n .work-table th,\n .work-table td {\n border: 1px solid #333;\n padding: 8px;\n vertical-align: middle;\n }\n\n .work-table thead th {\n background-color: #f5f5f5;\n text-align: center;\n }\n\n .work-table .col-select {\n width: 50px;\n text-align: center;\n }\n\n .work-table .col-job {\n width: 140px;\n }\n\n .work-table .col-action {\n width: 60px;\n text-align: center;\n }\n\n .work-table td.action {\n text-align: center;\n }\n\n .work-section {\n display: grid;\n grid-template-columns: 40px 1fr;\n gap: 0;\n align-items: stretch;\n }\n\n .left-title {\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid #333;\n border-right: none;\n background-color: #f5f5f5;\n writing-mode: vertical-rl;\n text-orientation: upright;\n font-weight: 600;\n letter-spacing: 2px;\n }\n\n .construction-name {\n width: 50% !important;\n }\n\n .date-display {\n font-size: 14px;\n font-weight: 700;\n margin-left: 15px;\n }\n\n input[type='text'],\n input[type='date'],\n textarea {\n width: 100%;\n box-sizing: border-box;\n border: 1px solid #ddd;\n padding: 8px;\n font-size: 14px;\n border-radius: 4px;\n background: #fff;\n }\n\n textarea.small {\n min-height: 80px;\n resize: vertical;\n }\n\n .section-title {\n font-weight: bold;\n margin-top: 4px;\n margin-bottom: 4px;\n }\n\n .footer {\n display: flex;\n justify-content: center;\n padding: 12px 0;\n border-top: 1px solid #ddd;\n }\n\n .add-row {\n text-align: center;\n background: #fafafa;\n }\n\n .clickable {\n cursor: pointer;\n }\n\n .work-table tbody tr.selected {\n background-color: #eaf4ff;\n }\n\n .signature-box {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n }\n\n .signature-name {\n font-size: 14px;\n color: #333;\n font-weight: 600;\n }\n\n .signature-container {\n position: relative;\n min-width: 80px;\n min-height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .signature-image {\n max-width: 120px;\n max-height: 40px;\n width: auto;\n height: auto;\n }\n\n md-elevated-button[blue] {\n --md-elevated-button-container-color: #0595e5;\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 md-elevated-button[green] {\n --md-elevated-button-container-color: #008000;\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 @property({ type: String }) date?: string\n @property({ type: Object }) project?: any\n @property({ type: Object }) dailyWorklog: any = {}\n @property({ type: String }) mode?: DailyWorklogMode = DailyWorklogMode.CREATE\n @state() private selectedRowIndex: number = -1\n @state() private selectedBuildingInspection: any = {}\n\n render() {\n const taskSupervisorySignature =\n this.mode === DailyWorklogMode.CREATE\n ? this.selectedBuildingInspection.checklist?.taskSupervisorySignature || ''\n : this.dailyWorklog?.taskSupervisorySignature\n\n const overallSupervisorySignature =\n this.mode === DailyWorklogMode.CREATE\n ? this.selectedBuildingInspection.checklist?.overallSupervisorySignature || ''\n : this.dailyWorklog?.overallSupervisorySignature\n\n const taskSupervisoryName =\n this.mode === DailyWorklogMode.CREATE\n ? this.selectedBuildingInspection.checklist?.taskSupervisory?.name || ''\n : this.dailyWorklog?.taskSupervisory?.name\n\n const overallSupervisoryName =\n this.mode === DailyWorklogMode.CREATE\n ? this.selectedBuildingInspection.checklist?.overallSupervisory?.name || ''\n : this.dailyWorklog?.overallSupervisory?.name\n\n return html`\n <div class=\"container\">\n <div class=\"sheet\">\n <div class=\"title\">공사감리일지</div>\n <div class=\"body\">\n <table class=\"header-table\">\n <tr>\n <th>문서번호</th>\n <td colspan=\"3\">${this.dailyWorklog?.documentNo || ''}</td>\n </tr>\n <tr>\n <th>공종별 감리 책임자</th>\n <td>\n <div class=\"signature-box\">\n <div class=\"signature-name\">${taskSupervisoryName}</div>\n <div class=\"signature-container\">\n ${taskSupervisorySignature\n ? html`<img class=\"signature-image\" src=\"${taskSupervisorySignature}\" alt=\"서명\" />`\n : ''}\n </div>\n </div>\n </td>\n <th>총괄 감리 책임자</th>\n <td>\n <div class=\"signature-box\">\n <div class=\"signature-name\">${overallSupervisoryName}</div>\n <div class=\"signature-container\">\n ${overallSupervisorySignature\n ? html`<img class=\"signature-image\" src=\"${overallSupervisorySignature}\" alt=\"서명\" />`\n : ''}\n </div>\n </div>\n </td>\n </tr>\n <tr>\n <th>공사명</th>\n <td colspan=\"3\">\n <span class=\"construction-name\">${this.project?.name || ''}</span>\n <span class=\"date-display\">${this.dailyWorklog.date || this._formatSelectedDate()}</span>\n </td>\n </tr>\n </table>\n\n <div class=\"work-section\">\n <div class=\"left-title\">작업사항</div>\n <table class=\"work-table\">\n <thead>\n <tr>\n ${this.mode === DailyWorklogMode.CREATE ? html`<th class=\"col-select\">선택</th>` : html``}\n <th class=\"col-job\">공종</th>\n <th>감리확인사항</th>\n <th>감리내용</th>\n <th class=\"col-action\">삭제</th>\n </tr>\n </thead>\n <tbody>\n ${this.dailyWorklog.worklogs?.map((worklog, i) => {\n const hasBuildingInspectionId = !!this.dailyWorklog?.buildingInspections?.[i]?.id\n return html` <tr class=${this.selectedRowIndex === i ? 'selected' : ''}>\n ${this.mode === DailyWorklogMode.CREATE\n ? html`<td class=\"col-select\">\n <md-radio\n name=\"worklog-select\"\n ?checked=${this.selectedRowIndex === i}\n ?disabled=${!hasBuildingInspectionId}\n @change=${() => this._selectRow(i)}\n ></md-radio>\n </td>`\n : html``}\n <td>\n <input\n type=\"text\"\n .value=${worklog.constructionType}\n ?disabled=${this.mode === DailyWorklogMode.EDIT}\n @input=${(e: any) => this._onConstructionTypeInput(i, e.target.value)}\n />\n </td>\n <td>\n <input\n type=\"text\"\n .value=${worklog.supervisoryTitle}\n @input=${(e: any) => this._updateWorklogs(i, 'supervisoryTitle', e.target.value)}\n />\n </td>\n <td>\n <input\n type=\"text\"\n .value=${worklog.supervisorContent}\n @input=${(e: any) => this._updateWorklogs(i, 'supervisorContent', e.target.value)}\n />\n </td>\n <td class=\"action\">\n <md-icon class=\"clickable\" @click=${() => this._remove(i)}>delete</md-icon>\n </td>\n </tr>`\n })}\n <tr>\n <td colspan=\"${this.mode === DailyWorklogMode.CREATE ? 5 : 4}\" class=\"add-row\">\n <md-elevated-button @click=${this._addRow}><md-icon slot=\"icon\">add</md-icon>행 추가</md-elevated-button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div>\n <div class=\"section-title\">특기사항</div>\n <textarea\n class=\"small\"\n placeholder=\"특기사항을 입력하세요.\"\n .value=${this.dailyWorklog.memo || ''}\n @input=${(e: any) => (this.dailyWorklog.memo = e.target.value)}\n ></textarea>\n </div>\n\n <div>\n <div class=\"section-title\">지적사항 및 처리결과</div>\n <textarea\n class=\"small\"\n placeholder=\"지적사항 및 처리결과를 입력하세요.\"\n .value=${this.dailyWorklog.directiveMemo || ''}\n @input=${(e: any) => (this.dailyWorklog.directiveMemo = e.target.value)}\n ></textarea>\n </div>\n </div>\n </div>\n\n <div class=\"footer\">\n ${this.mode === DailyWorklogMode.CREATE\n ? html`<md-elevated-button blue @click=${this._create}><md-icon slot=\"icon\">save</md-icon>저장</md-elevated-button>`\n : html`<md-elevated-button green @click=${this._update}><md-icon slot=\"icon\">save</md-icon>수정</md-elevated-button>`}\n </div>\n </div>\n `\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n }\n\n private _formatSelectedDate(): string {\n return moment.tz(this.date, 'Asia/Seoul').locale('ko').format('YYYY-MM-DD (dddd)')\n }\n\n private _updateWorklogs(index: number, field: string, value: string) {\n const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : []\n const newWorklogs = [...current]\n newWorklogs[index] = { ...newWorklogs[index], [field]: value }\n this.dailyWorklog = { ...this.dailyWorklog, worklogs: newWorklogs }\n }\n\n private _onConstructionTypeInput(index: number, value: string) {\n this._updateWorklogs(index, 'constructionType', value)\n }\n\n private _addRow = () => {\n const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : []\n const newWorklogs = [...current, { constructionType: '', supervisoryTitle: '', supervisorContent: '' }]\n this.dailyWorklog = { ...this.dailyWorklog, worklogs: newWorklogs }\n }\n\n private _remove(index: number) {\n const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : []\n const newWorklogs = [...current]\n newWorklogs.splice(index, 1)\n this.dailyWorklog = { ...this.dailyWorklog, worklogs: newWorklogs }\n }\n\n private _selectRow(index: number) {\n this.selectedRowIndex = index\n this.selectedBuildingInspection = this.dailyWorklog.buildingInspections[index]\n }\n\n private async _create() {\n if (this.selectedRowIndex === -1) {\n notify({ message: '서명을 할 공종을 선택해주세요.', level: 'error' })\n return\n }\n\n const selectedChecklist = this.selectedBuildingInspection.checklist\n\n const response = await client.mutate({\n mutation: gql`\n mutation CreateBuildingInspectionDailyWorklog($patch: BuildingInspectionDailyWorklogNew!) {\n createBuildingInspectionDailyWorklog(patch: $patch) {\n id\n }\n }\n `,\n variables: {\n patch: {\n memo: this.dailyWorklog.memo,\n directiveMemo: this.dailyWorklog.directiveMemo,\n worklogs: this.dailyWorklog.worklogs,\n projectId: this.project?.id,\n date: this.date,\n buildingInspectionIds: this.dailyWorklog.buildingInspections.map(v => v.id),\n overallSupervisoryId: selectedChecklist?.overallSupervisory?.id,\n taskSupervisoryId: selectedChecklist?.taskSupervisory?.id,\n overallSupervisorySignature: selectedChecklist?.overallSupervisorySignature,\n taskSupervisorySignature: selectedChecklist?.taskSupervisorySignature\n }\n }\n })\n\n if (!response.errors) {\n const newDailyWorklog = response.data.createBuildingInspectionDailyWorklog\n this.dispatchEvent(new CustomEvent('createdDailyWorklog', { detail: { dailyWorklog: newDailyWorklog } }))\n notify({ message: '일일 업무일지가 생성되었습니다.', level: 'info' })\n history.back()\n }\n }\n\n private async _update() {\n const response = await client.mutate({\n mutation: gql`\n mutation UpdateBuildingInspectionDailyWorklog($patch: BuildingInspectionDailyWorklogPatch!) {\n updateBuildingInspectionDailyWorklog(patch: $patch) {\n id\n }\n }\n `,\n variables: {\n patch: {\n id: this.dailyWorklog.id,\n worklogs: this.dailyWorklog.worklogs,\n memo: this.dailyWorklog.memo,\n directiveMemo: this.dailyWorklog.directiveMemo\n }\n }\n })\n\n if (!response.errors) {\n notify({ message: '일일 업무일지가 수정되었습니다.', level: 'info' })\n this.dispatchEvent(new CustomEvent('updatedDailyWorklog', { detail: { dailyWorklog: this.dailyWorklog } }))\n history.back()\n }\n }\n}\n"]}