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