@dssp/project 1.0.0-alpha.8 → 1.0.0-alpha.81
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/task-checklist-attachment-list-popup.d.ts +1 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js +308 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js.map +1 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.d.ts +1 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js +356 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js.map +1 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.d.ts +1 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js +681 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js.map +1 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-view.d.ts +32 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-view.js +620 -0
- 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.d.ts +6 -0
- package/dist-client/pages/project/project-detail.js +225 -89
- package/dist-client/pages/project/project-detail.js.map +1 -1
- package/dist-client/pages/project/project-list.d.ts +57 -0
- package/dist-client/pages/project/project-list.js +80 -9
- package/dist-client/pages/project/project-list.js.map +1 -1
- package/dist-client/pages/project/project-plan-management.js +6 -1
- package/dist-client/pages/project/project-plan-management.js.map +1 -1
- package/dist-client/pages/project/project-setting-list.d.ts +7 -0
- package/dist-client/pages/project/project-setting-list.js +61 -7
- 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 -4
- package/dist-client/pages/project/project-task.js +691 -0
- package/dist-client/pages/project/project-task.js.map +1 -0
- package/dist-client/pages/project/project-update.d.ts +34 -0
- package/dist-client/pages/project/project-update.js +508 -35
- package/dist-client/pages/project/project-update.js.map +1 -1
- package/dist-client/pages/resource/construction-type-management.js +14 -0
- package/dist-client/pages/resource/construction-type-management.js.map +1 -1
- package/dist-client/pages/resource/resource-list-page.d.ts +1 -2
- package/dist-client/pages/resource/resource-list-page.js +1 -2
- package/dist-client/pages/resource/resource-list-page.js.map +1 -1
- package/dist-client/pages/task/task-list-page.d.ts +1 -2
- package/dist-client/pages/task/task-list-page.js +1 -2
- package/dist-client/pages/task/task-list-page.js.map +1 -1
- package/dist-client/pages/task-resource/task-resource-list-page.d.ts +1 -2
- package/dist-client/pages/task-resource/task-resource-list-page.js +1 -2
- package/dist-client/pages/task-resource/task-resource-list-page.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/shared/domain-context.d.ts +18 -0
- package/dist-client/shared/domain-context.js +28 -0
- package/dist-client/shared/domain-context.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/viewparts/domain-switch.d.ts +19 -0
- package/dist-client/viewparts/domain-switch.js +266 -0
- package/dist-client/viewparts/domain-switch.js.map +1 -0
- package/dist-server/controllers/parse-excel.js.map +1 -1
- package/dist-server/migrations/1723861466414-seed-codes.js +1 -1
- package/dist-server/migrations/1723861466414-seed-codes.js.map +1 -1
- package/dist-server/service/construction-type/construction-type-query.d.ts +2 -2
- package/dist-server/service/construction-type/construction-type-query.js +5 -10
- package/dist-server/service/construction-type/construction-type-query.js.map +1 -1
- package/dist-server/service/construction-type/construction-type-type.d.ts +1 -0
- package/dist-server/service/construction-type/construction-type-type.js +4 -0
- package/dist-server/service/construction-type/construction-type-type.js.map +1 -1
- package/dist-server/service/construction-type/construction-type.d.ts +1 -0
- package/dist-server/service/construction-type/construction-type.js +5 -0
- package/dist-server/service/construction-type/construction-type.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/inspection-drawing-type/inspection-drawing-type-query.d.ts +2 -2
- package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js +5 -10
- package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js.map +1 -1
- package/dist-server/service/manager/manager-query.d.ts +1 -1
- package/dist-server/service/manager/manager-query.js +2 -6
- package/dist-server/service/manager/manager-query.js.map +1 -1
- package/dist-server/service/project/issue-project-code.d.ts +7 -0
- package/dist-server/service/project/issue-project-code.js +27 -0
- package/dist-server/service/project/issue-project-code.js.map +1 -0
- package/dist-server/service/project/project-mutation.d.ts +2 -0
- package/dist-server/service/project/project-mutation.js +109 -11
- package/dist-server/service/project/project-mutation.js.map +1 -1
- package/dist-server/service/project/project-query.d.ts +13 -2
- package/dist-server/service/project/project-query.js +138 -13
- package/dist-server/service/project/project-query.js.map +1 -1
- package/dist-server/service/project/project-type.d.ts +10 -2
- package/dist-server/service/project/project-type.js +32 -2
- package/dist-server/service/project/project-type.js.map +1 -1
- package/dist-server/service/project/project.d.ts +22 -0
- package/dist-server/service/project/project.js +84 -2
- package/dist-server/service/project/project.js.map +1 -1
- package/dist-server/service/resource/resource-mutation.js +5 -6
- package/dist-server/service/resource/resource-mutation.js.map +1 -1
- package/dist-server/service/resource/resource-query.d.ts +2 -2
- package/dist-server/service/resource/resource-query.js +5 -10
- package/dist-server/service/resource/resource-query.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/service/task-resource/task-resource-query.d.ts +2 -2
- package/dist-server/service/task-resource/task-resource-query.js +4 -9
- package/dist-server/service/task-resource/task-resource-query.js.map +1 -1
- package/dist-server/service/worker-type/worker-type-query.d.ts +2 -2
- package/dist-server/service/worker-type/worker-type-query.js +5 -10
- package/dist-server/service/worker-type/worker-type-query.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -13
- 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/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 -407
- package/dist-client/pages/project/project-schedule.js.map +0 -1
|
@@ -10,9 +10,10 @@ import { ScopedElementsMixin } from '@open-wc/scoped-elements';
|
|
|
10
10
|
import { client } from '@operato/graphql';
|
|
11
11
|
import { ScrollbarStyles } from '@operato/styles';
|
|
12
12
|
import gql from 'graphql-tag';
|
|
13
|
-
import { BUILDING_INSPECTION_STATUS, ProjectType } from './project-list';
|
|
13
|
+
import { BUILDING_INSPECTION_STATUS, BUILDING_INSPECTION_RE_STATUS, ProjectType } from './project-list';
|
|
14
14
|
import _getWeather from '../lib/waether';
|
|
15
15
|
import '@operato/chart/ox-progress-circle.js';
|
|
16
|
+
import { isProjectTypeDomain } from '../../shared/domain-context';
|
|
16
17
|
let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
17
18
|
constructor() {
|
|
18
19
|
super(...arguments);
|
|
@@ -36,8 +37,11 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
36
37
|
wait: 0,
|
|
37
38
|
request: 0,
|
|
38
39
|
pass: 0,
|
|
39
|
-
fail: 0
|
|
40
|
+
fail: 0,
|
|
41
|
+
reWait: 0
|
|
40
42
|
};
|
|
43
|
+
this.statusFilter = '';
|
|
44
|
+
this.configProjectType = '';
|
|
41
45
|
this.weather = {
|
|
42
46
|
rain: 0,
|
|
43
47
|
temperature: 0,
|
|
@@ -47,43 +51,79 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
47
51
|
};
|
|
48
52
|
}
|
|
49
53
|
get context() {
|
|
54
|
+
var _a;
|
|
50
55
|
return {
|
|
51
|
-
title:
|
|
56
|
+
title: !isProjectTypeDomain() && ((_a = this.project) === null || _a === void 0 ? void 0 : _a.name)
|
|
57
|
+
? `진행 중 프로젝트 상세 정보 - ${this.project.name}`
|
|
58
|
+
: '진행 중 프로젝트 상세 정보'
|
|
52
59
|
};
|
|
53
60
|
}
|
|
54
61
|
render() {
|
|
55
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
62
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
|
|
56
63
|
let totalInspectionCount = this.inspectionSummary.pass + this.inspectionSummary.fail + this.inspectionSummary.request + this.inspectionSummary.wait;
|
|
57
64
|
return html `
|
|
58
65
|
<div header>
|
|
59
|
-
<h2
|
|
66
|
+
<h2>
|
|
67
|
+
<md-icon slot="icon" back @click=${() => history.back()}>arrow_back</md-icon>
|
|
68
|
+
${this.project.name}
|
|
69
|
+
</h2>
|
|
60
70
|
<div button-container>
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
${this.configProjectType === ProjectType.DCSP
|
|
72
|
+
? html `
|
|
73
|
+
<md-elevated-button href="employee-list"> <md-icon slot="icon">badge</md-icon>인력 관리 </md-elevated-button>
|
|
74
|
+
<md-elevated-button href=${`project-plan-management/${this.project.id}`}>
|
|
75
|
+
<md-icon slot="icon">description</md-icon>도면 관리
|
|
76
|
+
</md-elevated-button>
|
|
77
|
+
<md-elevated-button href=${`project-task/${this.project.id}`}>
|
|
78
|
+
<md-icon slot="icon">event_note</md-icon>공정표 관리
|
|
79
|
+
</md-elevated-button>
|
|
80
|
+
<md-elevated-button href=${`project-checklist-management/${this.project.id}`}>
|
|
81
|
+
<md-icon slot="icon">checklist</md-icon>체크리스트 관리
|
|
82
|
+
</md-elevated-button>
|
|
83
|
+
<md-elevated-button href=${`building-inspection-management/${this.project.id}`}>
|
|
84
|
+
<md-icon slot="icon">open_in_new</md-icon>업무 바로가기
|
|
85
|
+
</md-elevated-button>
|
|
86
|
+
`
|
|
87
|
+
: html `
|
|
88
|
+
<md-elevated-button
|
|
89
|
+
target="_blank"
|
|
90
|
+
href=${((_a = this.project.buildingComplex) === null || _a === void 0 ? void 0 : _a.virtualTourLink) || ''}
|
|
91
|
+
?disabled=${!((_b = this.project.buildingComplex) === null || _b === void 0 ? void 0 : _b.virtualTourLink)}
|
|
92
|
+
>
|
|
93
|
+
<md-icon slot="icon">smart_toy</md-icon>Virtual Tour
|
|
94
|
+
</md-elevated-button>
|
|
95
|
+
<md-elevated-button href=${`project-update/${this.project.id}`}>
|
|
96
|
+
<md-icon slot="icon">assignment</md-icon>프로젝트 정보 수정
|
|
97
|
+
</md-elevated-button>
|
|
98
|
+
<md-elevated-button href=${`project-plan-management/${this.project.id}`}>
|
|
99
|
+
<md-icon slot="icon">description</md-icon>도면 관리
|
|
100
|
+
</md-elevated-button>
|
|
101
|
+
<md-elevated-button href=${`project-task/${this.project.id}`}>
|
|
102
|
+
<md-icon slot="icon">event_note</md-icon>공정표 관리
|
|
103
|
+
</md-elevated-button>
|
|
104
|
+
`}
|
|
70
105
|
</div>
|
|
71
106
|
</div>
|
|
72
107
|
|
|
73
108
|
<div body>
|
|
74
109
|
<div>
|
|
75
110
|
<div left-top>
|
|
76
|
-
<h3
|
|
111
|
+
<h3>
|
|
112
|
+
기본 정보
|
|
113
|
+
<md-elevated-button href=${`project-update/${this.project.id}`}>
|
|
114
|
+
<md-icon slot="icon">assignment</md-icon>프로젝트 정보 수정
|
|
115
|
+
</md-elevated-button>
|
|
116
|
+
</h3>
|
|
77
117
|
<div content-1>
|
|
78
118
|
<img
|
|
79
|
-
?no-image=${!((
|
|
80
|
-
src=${((
|
|
119
|
+
?no-image=${!((_c = this.project.mainPhoto) === null || _c === void 0 ? void 0 : _c.fullpath)}
|
|
120
|
+
src=${((_d = this.project.mainPhoto) === null || _d === void 0 ? void 0 : _d.fullpath) || '/assets/images/no-image.png'}
|
|
81
121
|
/>
|
|
82
122
|
|
|
83
123
|
<div>
|
|
84
124
|
<div row>
|
|
85
125
|
<span>- 면적 : </span>
|
|
86
|
-
<span>${(
|
|
126
|
+
<span>${(_f = (_e = this.project.buildingComplex) === null || _e === void 0 ? void 0 : _e.area) === null || _f === void 0 ? void 0 : _f.toLocaleString()} ㎡</span>
|
|
87
127
|
</div>
|
|
88
128
|
<div row>
|
|
89
129
|
<span>- 착공~준공 : </span>
|
|
@@ -91,19 +131,19 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
91
131
|
</div>
|
|
92
132
|
<div row>
|
|
93
133
|
<span>- 발주처 : </span>
|
|
94
|
-
<span>${(
|
|
134
|
+
<span>${(_g = this.project.buildingComplex) === null || _g === void 0 ? void 0 : _g.clientCompany}</span>
|
|
95
135
|
</div>
|
|
96
136
|
<div row>
|
|
97
137
|
<span>- 건설사 : </span>
|
|
98
|
-
<span>${(
|
|
138
|
+
<span>${(_h = this.project.buildingComplex) === null || _h === void 0 ? void 0 : _h.constructionCompany}</span>
|
|
99
139
|
</div>
|
|
100
140
|
<div row>
|
|
101
141
|
<span>- 감리사 : </span>
|
|
102
|
-
<span>${(
|
|
142
|
+
<span>${(_j = this.project.buildingComplex) === null || _j === void 0 ? void 0 : _j.supervisoryCompany}</span>
|
|
103
143
|
</div>
|
|
104
144
|
<div row>
|
|
105
145
|
<span>- 설계사 : </span>
|
|
106
|
-
<span>${(
|
|
146
|
+
<span>${(_k = this.project.buildingComplex) === null || _k === void 0 ? void 0 : _k.designCompany}</span>
|
|
107
147
|
</div>
|
|
108
148
|
</div>
|
|
109
149
|
</div>
|
|
@@ -111,38 +151,37 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
111
151
|
<div content-2>
|
|
112
152
|
<div row>
|
|
113
153
|
<span>- 건설구분 : </span>
|
|
114
|
-
<span>${(
|
|
154
|
+
<span>${(_l = this.project.buildingComplex) === null || _l === void 0 ? void 0 : _l.constructionType}</span>
|
|
115
155
|
</div>
|
|
116
156
|
<div row>
|
|
117
157
|
<span>- 공사금액 : </span>
|
|
118
|
-
<span>${(
|
|
158
|
+
<span>${(_o = (_m = this.project.buildingComplex) === null || _m === void 0 ? void 0 : _m.constructionCost) === null || _o === void 0 ? void 0 : _o.toLocaleString()} 억원</span>
|
|
119
159
|
</div>
|
|
120
160
|
<div row>
|
|
121
161
|
<span>- 세대수 : </span>
|
|
122
|
-
<span>${(
|
|
162
|
+
<span>${(_q = (_p = this.project.buildingComplex) === null || _p === void 0 ? void 0 : _p.householdCount) === null || _q === void 0 ? void 0 : _q.toLocaleString()}</span>
|
|
123
163
|
</div>
|
|
124
164
|
<div row>
|
|
125
165
|
<span>- 기타 : </span>
|
|
126
|
-
<span>${(
|
|
166
|
+
<span>${(_r = this.project.buildingComplex) === null || _r === void 0 ? void 0 : _r.etc}</span>
|
|
127
167
|
</div>
|
|
128
168
|
</div>
|
|
129
169
|
</div>
|
|
130
170
|
|
|
131
171
|
<div left-bottom>
|
|
132
|
-
<h3
|
|
133
|
-
|
|
172
|
+
<h3>
|
|
173
|
+
조감도(BIM도면)
|
|
174
|
+
<md-elevated-button
|
|
175
|
+
target="_blank"
|
|
176
|
+
href=${((_s = this.project.buildingComplex) === null || _s === void 0 ? void 0 : _s.virtualTourLink) || ''}
|
|
177
|
+
?disabled=${!((_t = this.project.buildingComplex) === null || _t === void 0 ? void 0 : _t.virtualTourLink)}
|
|
178
|
+
>
|
|
179
|
+
<md-icon slot="icon">smart_toy</md-icon>Virtual Tour
|
|
180
|
+
</md-elevated-button>
|
|
181
|
+
</h3>
|
|
182
|
+
${((_v = (_u = this.project.buildingComplex) === null || _u === void 0 ? void 0 : _u.drawing) === null || _v === void 0 ? void 0 : _v.fullpath)
|
|
134
183
|
? html `<div building-complex-img></div>`
|
|
135
184
|
: html `<img building-complex-img src="/assets/images/img-building-complex-default.jpg" />`}
|
|
136
|
-
<div>
|
|
137
|
-
<div subject bold>개별 단지 상세정보 바로가기</div>
|
|
138
|
-
<div building-container>
|
|
139
|
-
${(_t = (_s = this.project.buildingComplex) === null || _s === void 0 ? void 0 : _s.buildings) === null || _t === void 0 ? void 0 : _t.map(building => {
|
|
140
|
-
return html `<md-outlined-button href=${`building-complex-detail/${this.project.id}?buildingId=${building.id}`}>
|
|
141
|
-
${building.name}
|
|
142
|
-
</md-outlined-button>`;
|
|
143
|
-
})}
|
|
144
|
-
</div>
|
|
145
|
-
</div>
|
|
146
185
|
</div>
|
|
147
186
|
</div>
|
|
148
187
|
|
|
@@ -177,14 +216,14 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
177
216
|
<div kpi-info-item>
|
|
178
217
|
<span kpi-info-label>검측 통과율</span>
|
|
179
218
|
<span kpi-info-value>
|
|
180
|
-
<span bold>${((
|
|
219
|
+
<span bold>${((_w = this.inspectionSummary.pass) === null || _w === void 0 ? void 0 : _w.toLocaleString()) || 0}</span>
|
|
181
220
|
<span small> / ${(totalInspectionCount === null || totalInspectionCount === void 0 ? void 0 : totalInspectionCount.toLocaleString()) || 0}</span>
|
|
182
221
|
</span>
|
|
183
222
|
</div>
|
|
184
223
|
<div kpi-info-item>
|
|
185
224
|
<span kpi-info-label>작업 중 로봇</span>
|
|
186
225
|
<span kpi-info-value>
|
|
187
|
-
<span bold>${((
|
|
226
|
+
<span bold>${((_x = this.project.robotCount) === null || _x === void 0 ? void 0 : _x.toLocaleString()) || 0}</span>
|
|
188
227
|
<span small> 대</span>
|
|
189
228
|
</span>
|
|
190
229
|
</div>
|
|
@@ -279,36 +318,41 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
279
318
|
</span>
|
|
280
319
|
</div>
|
|
281
320
|
</div>
|
|
321
|
+
<div notice>
|
|
322
|
+
<div name bold>공지사항</div>
|
|
323
|
+
<div content>${this.project.buildingComplex.notice}</div>
|
|
324
|
+
</div>
|
|
325
|
+
|
|
282
326
|
<div inspection>
|
|
283
327
|
<span name bold>
|
|
284
328
|
<md-icon slot="icon">list_alt_add</md-icon>
|
|
285
|
-
|
|
329
|
+
작업 현황
|
|
286
330
|
</span>
|
|
287
|
-
<span>
|
|
288
|
-
<div
|
|
289
|
-
<div bold>${this.inspectionSummary.wait}</div>
|
|
331
|
+
<span ?active=${this.statusFilter === 'WAIT'} @click=${() => this._onClickStatusFilter('WAIT')}>
|
|
332
|
+
<div>작업 완료</div>
|
|
333
|
+
<div bold wait>${(this.inspectionSummary.wait || 0) - (this.inspectionSummary.reWait || 0)}</div>
|
|
290
334
|
</span>
|
|
291
|
-
<span>
|
|
292
|
-
<div
|
|
293
|
-
<div bold>${this.inspectionSummary.request}</div>
|
|
335
|
+
<span ?active=${this.statusFilter === 'REQUEST'} @click=${() => this._onClickStatusFilter('REQUEST')}>
|
|
336
|
+
<div>감리 대기</div>
|
|
337
|
+
<div bold request>${this.inspectionSummary.request}</div>
|
|
294
338
|
</span>
|
|
295
|
-
<span>
|
|
296
|
-
<div
|
|
297
|
-
<div bold pass>${this.inspectionSummary.pass}</div>
|
|
298
|
-
</span>
|
|
299
|
-
<span>
|
|
300
|
-
<div>불합격</div>
|
|
339
|
+
<span ?active=${this.statusFilter === 'FAIL'} @click=${() => this._onClickStatusFilter('FAIL')}>
|
|
340
|
+
<div>조치 필요</div>
|
|
301
341
|
<div bold fail>${this.inspectionSummary.fail}</div>
|
|
302
342
|
</span>
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
343
|
+
<span ?active=${this.statusFilter === 'RE_WAIT'} @click=${() => this._onClickStatusFilter('RE_WAIT')}>
|
|
344
|
+
<div>재검측 대기</div>
|
|
345
|
+
<div bold re-wait>${this.inspectionSummary.reWait || 0}</div>
|
|
346
|
+
</span>
|
|
347
|
+
<span ?active=${this.statusFilter === 'PASS'} @click=${() => this._onClickStatusFilter('PASS')}>
|
|
348
|
+
<div>검측 완료</div>
|
|
349
|
+
<div bold pass>${this.inspectionSummary.pass}</div>
|
|
350
|
+
</span>
|
|
307
351
|
</div>
|
|
308
352
|
</div>
|
|
309
353
|
|
|
310
354
|
<div right-bottom>
|
|
311
|
-
<h3>검측
|
|
355
|
+
<h3>검측 현황${this.statusFilter ? ` (${this._getStatusFilterLabel()} 목록)` : ''}</h3>
|
|
312
356
|
<div table-container>
|
|
313
357
|
<hr />
|
|
314
358
|
<table>
|
|
@@ -319,7 +363,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
319
363
|
<th width="10%">공종</th>
|
|
320
364
|
<th width="22%">내용</th>
|
|
321
365
|
<th width="15%">검측 요청일</th>
|
|
322
|
-
<th width="10%"
|
|
366
|
+
<th width="10%">작업 상태</th>
|
|
323
367
|
</tr>
|
|
324
368
|
</thead>
|
|
325
369
|
<tbody>
|
|
@@ -332,7 +376,8 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
332
376
|
<td>${((_f = (_e = inspection.checklist) === null || _e === void 0 ? void 0 : _e.inspectionParts) === null || _f === void 0 ? void 0 : _f.join(', ')) || ''}</td>
|
|
333
377
|
<td>${this._formatDate(inspection.requestDate)}</td>
|
|
334
378
|
<td bold status=${inspection.status || ''}>
|
|
335
|
-
${inspection.status &&
|
|
379
|
+
${inspection.status &&
|
|
380
|
+
((inspection.failCount || 0) > 0 ? BUILDING_INSPECTION_RE_STATUS : BUILDING_INSPECTION_STATUS)[inspection.status]}
|
|
336
381
|
</td>
|
|
337
382
|
</tr>`;
|
|
338
383
|
})}
|
|
@@ -346,10 +391,39 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
346
391
|
}
|
|
347
392
|
async pageInitialized(lifecycle) { }
|
|
348
393
|
async pageUpdated(changes, lifecycle) {
|
|
394
|
+
var _a, _b;
|
|
349
395
|
if (this.active) {
|
|
350
396
|
this.projectId = lifecycle.resourceId || '';
|
|
351
|
-
|
|
397
|
+
// resourceId 없이 진입한 경우 (프로젝트 테넌트 → / 접속)
|
|
398
|
+
if (!this.projectId) {
|
|
399
|
+
const res = await client.query({
|
|
400
|
+
query: gql `
|
|
401
|
+
query {
|
|
402
|
+
currentProject {
|
|
403
|
+
id
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
`
|
|
407
|
+
});
|
|
408
|
+
const projectId = (_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.currentProject) === null || _b === void 0 ? void 0 : _b.id;
|
|
409
|
+
if (projectId) {
|
|
410
|
+
navigate(`project-detail/${projectId}`);
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
await Promise.all([this.initProject(lifecycle.resourceId), this._fetchProjectType()]);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
async _fetchProjectType() {
|
|
418
|
+
var _a;
|
|
419
|
+
const response = await client.query({
|
|
420
|
+
query: gql `
|
|
421
|
+
query {
|
|
422
|
+
currentProjectType
|
|
352
423
|
}
|
|
424
|
+
`
|
|
425
|
+
});
|
|
426
|
+
this.configProjectType = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.currentProjectType) || '';
|
|
353
427
|
}
|
|
354
428
|
async initProject(projectId = '') {
|
|
355
429
|
var _a, _b, _c, _d, _e;
|
|
@@ -393,6 +467,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
393
467
|
notice
|
|
394
468
|
householdCount
|
|
395
469
|
buildingCount
|
|
470
|
+
virtualTourLink
|
|
396
471
|
buildings {
|
|
397
472
|
id
|
|
398
473
|
name
|
|
@@ -406,12 +481,14 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
406
481
|
request
|
|
407
482
|
pass
|
|
408
483
|
fail
|
|
484
|
+
reWait
|
|
409
485
|
}
|
|
410
486
|
|
|
411
487
|
buildingInspectionsOfProject(params: $params) {
|
|
412
488
|
items {
|
|
413
489
|
id
|
|
414
490
|
status
|
|
491
|
+
failCount
|
|
415
492
|
requestDate
|
|
416
493
|
buildingLevel {
|
|
417
494
|
id
|
|
@@ -436,10 +513,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
436
513
|
variables: {
|
|
437
514
|
id: projectId,
|
|
438
515
|
projectId,
|
|
439
|
-
params: {
|
|
440
|
-
projectId,
|
|
441
|
-
limit: 10
|
|
442
|
-
}
|
|
516
|
+
params: Object.assign({ projectId, limit: 10 }, (this.statusFilter ? { statusFilter: this.statusFilter } : {}))
|
|
443
517
|
}
|
|
444
518
|
});
|
|
445
519
|
if (response.errors)
|
|
@@ -447,11 +521,27 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
447
521
|
this.project = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.project) || {};
|
|
448
522
|
this.inspectionSummary = ((_b = response.data) === null || _b === void 0 ? void 0 : _b.inspectionSummary) || {};
|
|
449
523
|
this.buildingInspections = ((_d = (_c = response.data) === null || _c === void 0 ? void 0 : _c.buildingInspectionsOfProject) === null || _d === void 0 ? void 0 : _d.items) || [];
|
|
524
|
+
this.updateContext();
|
|
450
525
|
const { latitude, longitude } = (_e = this.project) === null || _e === void 0 ? void 0 : _e.buildingComplex;
|
|
451
526
|
if (latitude && longitude) {
|
|
452
527
|
this.weather = await _getWeather(latitude, longitude);
|
|
453
528
|
}
|
|
454
529
|
}
|
|
530
|
+
async _onClickStatusFilter(filter) {
|
|
531
|
+
// 같은 필터 클릭 시 해제
|
|
532
|
+
this.statusFilter = this.statusFilter === filter ? '' : filter;
|
|
533
|
+
await this.initProject(this.projectId);
|
|
534
|
+
}
|
|
535
|
+
_getStatusFilterLabel() {
|
|
536
|
+
const labels = {
|
|
537
|
+
WAIT: '작업 완료',
|
|
538
|
+
REQUEST: '감리 대기',
|
|
539
|
+
FAIL: '조치 필요',
|
|
540
|
+
RE_WAIT: '재검측 대기',
|
|
541
|
+
PASS: '검측 완료'
|
|
542
|
+
};
|
|
543
|
+
return labels[this.statusFilter] || '';
|
|
544
|
+
}
|
|
455
545
|
_onClickInspection(buildingInspection) {
|
|
456
546
|
var _a, _b, _c;
|
|
457
547
|
console.log('buildingInspection :', buildingInspection);
|
|
@@ -463,14 +553,20 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
463
553
|
}
|
|
464
554
|
}
|
|
465
555
|
_formatDate(date) {
|
|
466
|
-
|
|
467
|
-
|
|
556
|
+
if (!date)
|
|
557
|
+
return '';
|
|
558
|
+
try {
|
|
559
|
+
const parsed = typeof date === 'string' && /^\d+$/.test(date) ? new Date(Number(date)) : new Date(date);
|
|
560
|
+
return new Intl.DateTimeFormat('en-CA', {
|
|
468
561
|
timeZone: 'Asia/Seoul',
|
|
469
562
|
year: 'numeric',
|
|
470
563
|
month: '2-digit',
|
|
471
564
|
day: '2-digit'
|
|
472
|
-
}).format(
|
|
473
|
-
|
|
565
|
+
}).format(parsed);
|
|
566
|
+
}
|
|
567
|
+
catch (_a) {
|
|
568
|
+
return String(date).split('T')[0] || '';
|
|
569
|
+
}
|
|
474
570
|
}
|
|
475
571
|
};
|
|
476
572
|
ProjectDetail.styles = [
|
|
@@ -505,9 +601,28 @@ ProjectDetail.styles = [
|
|
|
505
601
|
margin: 0px var(--spacing-large, 12px);
|
|
506
602
|
|
|
507
603
|
h2 {
|
|
604
|
+
display: flex;
|
|
605
|
+
gap: 7px;
|
|
508
606
|
flex: 0.5;
|
|
509
607
|
color: #3f71a0;
|
|
510
608
|
font-size: 18px;
|
|
609
|
+
|
|
610
|
+
md-icon[back] {
|
|
611
|
+
background: linear-gradient(135deg, #3f71a0 0%, #5a8cc7 100%);
|
|
612
|
+
color: white;
|
|
613
|
+
padding: 8px;
|
|
614
|
+
border-radius: 50%;
|
|
615
|
+
cursor: pointer;
|
|
616
|
+
box-shadow: 0 2px 8px rgba(63, 113, 160, 0.3);
|
|
617
|
+
width: 14px;
|
|
618
|
+
height: 14px;
|
|
619
|
+
--md-icon-size: 20px;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
md-icon[back]:hover {
|
|
623
|
+
background: linear-gradient(135deg, #2e5c89 0%, #4a7bb0 100%);
|
|
624
|
+
box-shadow: 0 4px 12px rgba(63, 113, 160, 0.4);
|
|
625
|
+
}
|
|
511
626
|
}
|
|
512
627
|
|
|
513
628
|
div[button-container] {
|
|
@@ -542,6 +657,9 @@ ProjectDetail.styles = [
|
|
|
542
657
|
gap: var(--spacing-medium, 8px);
|
|
543
658
|
|
|
544
659
|
h3 {
|
|
660
|
+
display: flex;
|
|
661
|
+
align-items: center;
|
|
662
|
+
justify-content: space-between;
|
|
545
663
|
color: #2e79be;
|
|
546
664
|
font-size: 16px;
|
|
547
665
|
margin: 0px;
|
|
@@ -550,6 +668,20 @@ ProjectDetail.styles = [
|
|
|
550
668
|
text-decoration: none;
|
|
551
669
|
color: #2e79be;
|
|
552
670
|
}
|
|
671
|
+
|
|
672
|
+
md-elevated-button {
|
|
673
|
+
--md-elevated-button-container-height: 28px;
|
|
674
|
+
--md-elevated-button-label-text-size: 13px;
|
|
675
|
+
--md-elevated-button-container-color: #0595e5;
|
|
676
|
+
--md-elevated-button-label-text-color: var(--md-sys-color-on-primary);
|
|
677
|
+
--md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);
|
|
678
|
+
--md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);
|
|
679
|
+
--md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);
|
|
680
|
+
--md-elevated-button-icon-color: var(--md-sys-color-on-primary);
|
|
681
|
+
--md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);
|
|
682
|
+
--md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);
|
|
683
|
+
--md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);
|
|
684
|
+
}
|
|
553
685
|
}
|
|
554
686
|
|
|
555
687
|
& > div {
|
|
@@ -608,25 +740,6 @@ ProjectDetail.styles = [
|
|
|
608
740
|
img {
|
|
609
741
|
opacity: 0.5;
|
|
610
742
|
}
|
|
611
|
-
|
|
612
|
-
div[subject] {
|
|
613
|
-
margin-bottom: var(--spacing-small, 4px);
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
div[building-container] {
|
|
617
|
-
display: block;
|
|
618
|
-
|
|
619
|
-
& > * {
|
|
620
|
-
margin-right: var(--spacing-medium, 8px);
|
|
621
|
-
margin-bottom: var(--spacing-medium, 8px);
|
|
622
|
-
}
|
|
623
|
-
md-outlined-button {
|
|
624
|
-
--md-outlined-button-container-height: 30px;
|
|
625
|
-
--md-outlined-button-trailing-space: var(--spacing-medium, 8px);
|
|
626
|
-
--md-outlined-button-leading-space: var(--spacing-medium, 8px);
|
|
627
|
-
--md-sys-color-outline: rgba(51, 51, 51, 0.2);
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
743
|
}
|
|
631
744
|
|
|
632
745
|
div[right-top] {
|
|
@@ -690,7 +803,7 @@ ProjectDetail.styles = [
|
|
|
690
803
|
}
|
|
691
804
|
div[inspection] {
|
|
692
805
|
display: grid;
|
|
693
|
-
grid-template-columns: 1.4fr 0.9fr 0.9fr 0.9fr 0.9fr;
|
|
806
|
+
grid-template-columns: 1.4fr 0.9fr 0.9fr 0.9fr 0.9fr 0.9fr;
|
|
694
807
|
margin-top: 10px;
|
|
695
808
|
background: #f6f6f6;
|
|
696
809
|
border-radius: 7px;
|
|
@@ -701,6 +814,18 @@ ProjectDetail.styles = [
|
|
|
701
814
|
flex-direction: column;
|
|
702
815
|
align-items: center;
|
|
703
816
|
justify-content: center;
|
|
817
|
+
border-radius: 5px;
|
|
818
|
+
padding: 4px 0;
|
|
819
|
+
|
|
820
|
+
&:not([name]) {
|
|
821
|
+
cursor: pointer;
|
|
822
|
+
}
|
|
823
|
+
&:not([name]):hover {
|
|
824
|
+
background: #e8e8e8;
|
|
825
|
+
}
|
|
826
|
+
&[active] {
|
|
827
|
+
background: #dceefb;
|
|
828
|
+
}
|
|
704
829
|
|
|
705
830
|
div[wait] {
|
|
706
831
|
color: #4e5055;
|
|
@@ -714,6 +839,9 @@ ProjectDetail.styles = [
|
|
|
714
839
|
div[fail] {
|
|
715
840
|
color: #ff4444;
|
|
716
841
|
}
|
|
842
|
+
div[re-wait] {
|
|
843
|
+
color: #e89c0e;
|
|
844
|
+
}
|
|
717
845
|
}
|
|
718
846
|
& > span[name] {
|
|
719
847
|
flex-direction: row;
|
|
@@ -918,6 +1046,14 @@ __decorate([
|
|
|
918
1046
|
state(),
|
|
919
1047
|
__metadata("design:type", Object)
|
|
920
1048
|
], ProjectDetail.prototype, "inspectionSummary", void 0);
|
|
1049
|
+
__decorate([
|
|
1050
|
+
state(),
|
|
1051
|
+
__metadata("design:type", String)
|
|
1052
|
+
], ProjectDetail.prototype, "statusFilter", void 0);
|
|
1053
|
+
__decorate([
|
|
1054
|
+
state(),
|
|
1055
|
+
__metadata("design:type", String)
|
|
1056
|
+
], ProjectDetail.prototype, "configProjectType", void 0);
|
|
921
1057
|
__decorate([
|
|
922
1058
|
state(),
|
|
923
1059
|
__metadata("design:type", Object)
|