@dssp/project 1.0.0-alpha.5 → 1.0.0-alpha.51
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/lib/waether.d.ts +2 -1
- package/dist-client/pages/lib/waether.js +7 -3
- package/dist-client/pages/lib/waether.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 +309 -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 +357 -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 +621 -0
- package/dist-client/pages/project/popup/checklist/task-checklist-view.js.map +1 -0
- package/dist-client/pages/project/popup/popup-plan-export.d.ts +10 -0
- package/dist-client/pages/project/popup/popup-plan-export.js +242 -0
- package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -0
- package/dist-client/pages/project/popup/popup-plan-upload.d.ts +3 -0
- package/dist-client/pages/project/popup/popup-plan-upload.js +130 -4
- package/dist-client/pages/project/popup/popup-plan-upload.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 +2 -1
- package/dist-client/pages/project/project-detail.js +316 -97
- package/dist-client/pages/project/project-detail.js.map +1 -1
- package/dist-client/pages/project/project-list.d.ts +53 -0
- package/dist-client/pages/project/project-list.js +72 -3
- package/dist-client/pages/project/project-list.js.map +1 -1
- package/dist-client/pages/project/project-plan-management.js +29 -13
- package/dist-client/pages/project/project-plan-management.js.map +1 -1
- package/dist-client/pages/project/project-setting-list.d.ts +5 -0
- package/dist-client/pages/project/project-setting-list.js +32 -3
- package/dist-client/pages/project/project-setting-list.js.map +1 -1
- package/dist-client/pages/project/{project-schedule-list.d.ts → project-task-list.d.ts} +2 -2
- package/dist-client/pages/project/{project-schedule-list.js → project-task-list.js} +11 -11
- package/dist-client/pages/project/project-task-list.js.map +1 -0
- package/dist-client/pages/project/{project-schedule.d.ts → project-task.d.ts} +17 -4
- package/dist-client/pages/project/project-task.js +686 -0
- package/dist-client/pages/project/project-task.js.map +1 -0
- package/dist-client/pages/project/project-update.d.ts +1 -0
- package/dist-client/pages/project/project-update.js +346 -42
- package/dist-client/pages/project/project-update.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/route.js +4 -4
- package/dist-client/route.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/controllers/parse-excel.js.map +1 -1
- package/dist-server/service/index.d.ts +2 -2
- package/dist-server/service/index.js +5 -2
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/project/project-mutation.d.ts +1 -0
- package/dist-server/service/project/project-mutation.js +107 -4
- package/dist-server/service/project/project-mutation.js.map +1 -1
- package/dist-server/service/project/project-query.d.ts +3 -0
- package/dist-server/service/project/project-query.js +52 -0
- package/dist-server/service/project/project-query.js.map +1 -1
- package/dist-server/service/project/project-type.d.ts +6 -0
- package/dist-server/service/project/project-type.js +24 -2
- package/dist-server/service/project/project-type.js.map +1 -1
- package/dist-server/service/project/project.d.ts +14 -1
- package/dist-server/service/project/project.js +49 -2
- package/dist-server/service/project/project.js.map +1 -1
- package/dist-server/service/task/task-query.d.ts +2 -0
- package/dist-server/service/task/task-query.js +11 -0
- package/dist-server/service/task/task-query.js.map +1 -1
- package/dist-server/service/task/task.d.ts +2 -0
- package/dist-server/service/task/task.js +6 -0
- package/dist-server/service/task/task.js.map +1 -1
- package/dist-server/service/task-checklist-binding/index.d.ts +5 -0
- package/dist-server/service/task-checklist-binding/index.js +9 -0
- package/dist-server/service/task-checklist-binding/index.js.map +1 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.d.ts +5 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js +186 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js.map +1 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-query.d.ts +8 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js +61 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js.map +1 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-type.d.ts +15 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js +57 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js.map +1 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding.d.ts +22 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding.js +106 -0
- package/dist-server/service/task-checklist-binding/task-checklist-binding.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -12
- 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 } from './project-list';
|
|
13
|
+
import { BUILDING_INSPECTION_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) {
|
|
@@ -42,7 +42,8 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
42
42
|
rain: 0,
|
|
43
43
|
temperature: 0,
|
|
44
44
|
humidity: 0,
|
|
45
|
-
|
|
45
|
+
windDirection: '',
|
|
46
|
+
windSpeed: 0
|
|
46
47
|
};
|
|
47
48
|
}
|
|
48
49
|
get context() {
|
|
@@ -51,18 +52,29 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
51
52
|
};
|
|
52
53
|
}
|
|
53
54
|
render() {
|
|
54
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
55
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
|
|
56
|
+
let totalInspectionCount = this.inspectionSummary.pass + this.inspectionSummary.fail + this.inspectionSummary.request + this.inspectionSummary.wait;
|
|
55
57
|
return html `
|
|
56
58
|
<div header>
|
|
57
|
-
<h2
|
|
59
|
+
<h2>
|
|
60
|
+
<md-icon slot="icon" back @click=${() => history.back()}>arrow_back</md-icon>
|
|
61
|
+
${this.project.name}
|
|
62
|
+
</h2>
|
|
58
63
|
<div button-container>
|
|
64
|
+
<md-elevated-button
|
|
65
|
+
target="_blank"
|
|
66
|
+
href=${((_a = this.project.buildingComplex) === null || _a === void 0 ? void 0 : _a.virtualTourLink) || ''}
|
|
67
|
+
?disabled=${!((_b = this.project.buildingComplex) === null || _b === void 0 ? void 0 : _b.virtualTourLink)}
|
|
68
|
+
>
|
|
69
|
+
<md-icon slot="icon">smart_toy</md-icon>Virtual Tour
|
|
70
|
+
</md-elevated-button>
|
|
59
71
|
<md-elevated-button href=${`project-update/${this.project.id}`}>
|
|
60
72
|
<md-icon slot="icon">assignment</md-icon>프로젝트 정보 수정
|
|
61
73
|
</md-elevated-button>
|
|
62
74
|
<md-elevated-button href=${`project-plan-management/${this.project.id}`}>
|
|
63
75
|
<md-icon slot="icon">description</md-icon>도면 관리
|
|
64
76
|
</md-elevated-button>
|
|
65
|
-
<md-elevated-button href=${`project-
|
|
77
|
+
<md-elevated-button href=${`project-task/${this.project.id}`}>
|
|
66
78
|
<md-icon slot="icon">event_note</md-icon>공정표 관리
|
|
67
79
|
</md-elevated-button>
|
|
68
80
|
</div>
|
|
@@ -74,14 +86,14 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
74
86
|
<h3>기본 정보</h3>
|
|
75
87
|
<div content-1>
|
|
76
88
|
<img
|
|
77
|
-
?no-image=${!((
|
|
78
|
-
src=${((
|
|
89
|
+
?no-image=${!((_c = this.project.mainPhoto) === null || _c === void 0 ? void 0 : _c.fullpath)}
|
|
90
|
+
src=${((_d = this.project.mainPhoto) === null || _d === void 0 ? void 0 : _d.fullpath) || '/assets/images/no-image.png'}
|
|
79
91
|
/>
|
|
80
92
|
|
|
81
93
|
<div>
|
|
82
94
|
<div row>
|
|
83
95
|
<span>- 면적 : </span>
|
|
84
|
-
<span>${(
|
|
96
|
+
<span>${(_f = (_e = this.project.buildingComplex) === null || _e === void 0 ? void 0 : _e.area) === null || _f === void 0 ? void 0 : _f.toLocaleString()} ㎡</span>
|
|
85
97
|
</div>
|
|
86
98
|
<div row>
|
|
87
99
|
<span>- 착공~준공 : </span>
|
|
@@ -89,19 +101,19 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
89
101
|
</div>
|
|
90
102
|
<div row>
|
|
91
103
|
<span>- 발주처 : </span>
|
|
92
|
-
<span>${(
|
|
104
|
+
<span>${(_g = this.project.buildingComplex) === null || _g === void 0 ? void 0 : _g.clientCompany}</span>
|
|
93
105
|
</div>
|
|
94
106
|
<div row>
|
|
95
107
|
<span>- 건설사 : </span>
|
|
96
|
-
<span>${(
|
|
108
|
+
<span>${(_h = this.project.buildingComplex) === null || _h === void 0 ? void 0 : _h.constructionCompany}</span>
|
|
97
109
|
</div>
|
|
98
110
|
<div row>
|
|
99
111
|
<span>- 감리사 : </span>
|
|
100
|
-
<span>${(
|
|
112
|
+
<span>${(_j = this.project.buildingComplex) === null || _j === void 0 ? void 0 : _j.supervisoryCompany}</span>
|
|
101
113
|
</div>
|
|
102
114
|
<div row>
|
|
103
115
|
<span>- 설계사 : </span>
|
|
104
|
-
<span>${(
|
|
116
|
+
<span>${(_k = this.project.buildingComplex) === null || _k === void 0 ? void 0 : _k.designCompany}</span>
|
|
105
117
|
</div>
|
|
106
118
|
</div>
|
|
107
119
|
</div>
|
|
@@ -109,32 +121,32 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
109
121
|
<div content-2>
|
|
110
122
|
<div row>
|
|
111
123
|
<span>- 건설구분 : </span>
|
|
112
|
-
<span>${(
|
|
124
|
+
<span>${(_l = this.project.buildingComplex) === null || _l === void 0 ? void 0 : _l.constructionType}</span>
|
|
113
125
|
</div>
|
|
114
126
|
<div row>
|
|
115
127
|
<span>- 공사금액 : </span>
|
|
116
|
-
<span>${(
|
|
128
|
+
<span>${(_o = (_m = this.project.buildingComplex) === null || _m === void 0 ? void 0 : _m.constructionCost) === null || _o === void 0 ? void 0 : _o.toLocaleString()} 원</span>
|
|
117
129
|
</div>
|
|
118
130
|
<div row>
|
|
119
131
|
<span>- 세대수 : </span>
|
|
120
|
-
<span>${(
|
|
132
|
+
<span>${(_q = (_p = this.project.buildingComplex) === null || _p === void 0 ? void 0 : _p.householdCount) === null || _q === void 0 ? void 0 : _q.toLocaleString()}</span>
|
|
121
133
|
</div>
|
|
122
134
|
<div row>
|
|
123
135
|
<span>- 기타 : </span>
|
|
124
|
-
<span>${(
|
|
136
|
+
<span>${(_r = this.project.buildingComplex) === null || _r === void 0 ? void 0 : _r.etc}</span>
|
|
125
137
|
</div>
|
|
126
138
|
</div>
|
|
127
139
|
</div>
|
|
128
140
|
|
|
129
141
|
<div left-bottom>
|
|
130
142
|
<h3>조감도(BIM도면)</h3>
|
|
131
|
-
${((
|
|
143
|
+
${((_t = (_s = this.project.buildingComplex) === null || _s === void 0 ? void 0 : _s.drawing) === null || _t === void 0 ? void 0 : _t.fullpath)
|
|
132
144
|
? html `<div building-complex-img></div>`
|
|
133
145
|
: html `<img building-complex-img src="/assets/images/img-building-complex-default.jpg" />`}
|
|
134
146
|
<div>
|
|
135
147
|
<div subject bold>개별 단지 상세정보 바로가기</div>
|
|
136
148
|
<div building-container>
|
|
137
|
-
${(
|
|
149
|
+
${(_v = (_u = this.project.buildingComplex) === null || _u === void 0 ? void 0 : _u.buildings) === null || _v === void 0 ? void 0 : _v.map(building => {
|
|
138
150
|
return html `<md-outlined-button href=${`building-complex-detail/${this.project.id}?buildingId=${building.id}`}>
|
|
139
151
|
${building.name}
|
|
140
152
|
</md-outlined-button>`;
|
|
@@ -147,56 +159,135 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
147
159
|
<div>
|
|
148
160
|
<div right-top>
|
|
149
161
|
<h3>프로젝트 현황</h3>
|
|
162
|
+
|
|
163
|
+
<div kpi-header>
|
|
164
|
+
<span kpi-datetime
|
|
165
|
+
>${new Date().toLocaleDateString('ko-KR')}
|
|
166
|
+
${new Date().toLocaleTimeString('ko-KR', { hour: '2-digit', minute: '2-digit', hour12: false })}</span
|
|
167
|
+
>
|
|
168
|
+
</div>
|
|
150
169
|
<div state>
|
|
151
|
-
<
|
|
152
|
-
<
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
<ox-progress-circle
|
|
168
|
-
.value=${this.project.weeklyProgress}
|
|
169
|
-
titleText="주간"
|
|
170
|
-
suffix="%"
|
|
171
|
-
fontSize="27px"
|
|
172
|
-
fontColor="#4E5055"
|
|
173
|
-
borderStyle="none"
|
|
174
|
-
innerCircleSize="28%"
|
|
175
|
-
circleColor="#06B5AF"
|
|
176
|
-
shadow="#00000026 4px 4px 4px"
|
|
177
|
-
background="#eaf7f7"
|
|
178
|
-
></ox-progress-circle>
|
|
179
|
-
<div week>주간공정율(%)</div>
|
|
180
|
-
</span>
|
|
181
|
-
<span weather>
|
|
182
|
-
<div bold>현장현황</div>
|
|
183
|
-
<div>
|
|
184
|
-
<span><md-icon slot="icon">rainy</md-icon>강수확률</span>
|
|
185
|
-
<span bold>${this.weather.rain}%</span>
|
|
170
|
+
<div kpi-container>
|
|
171
|
+
<div kpi-info-item kpi>
|
|
172
|
+
<ox-progress-circle
|
|
173
|
+
.value=${this.project.kpi || 0}
|
|
174
|
+
fontColor="transparent"
|
|
175
|
+
borderStyle="none"
|
|
176
|
+
innerCircleSize="30%"
|
|
177
|
+
circleColor="#E15757"
|
|
178
|
+
background="#f6f6f6"
|
|
179
|
+
size="120px"
|
|
180
|
+
></ox-progress-circle>
|
|
181
|
+
|
|
182
|
+
<div kpi-info-label>
|
|
183
|
+
<span kpi-info-label>KPI 지수</span>
|
|
184
|
+
<span kpi-info-value bold>${this.project.kpi || 0}%</span>
|
|
185
|
+
</div>
|
|
186
186
|
</div>
|
|
187
|
-
<div>
|
|
188
|
-
<span
|
|
189
|
-
<span
|
|
187
|
+
<div kpi-info-item>
|
|
188
|
+
<span kpi-info-label>검측 통과율</span>
|
|
189
|
+
<span kpi-info-value>
|
|
190
|
+
<span bold>${((_w = this.inspectionSummary.pass) === null || _w === void 0 ? void 0 : _w.toLocaleString()) || 0}</span>
|
|
191
|
+
<span small> / ${(totalInspectionCount === null || totalInspectionCount === void 0 ? void 0 : totalInspectionCount.toLocaleString()) || 0}</span>
|
|
192
|
+
</span>
|
|
190
193
|
</div>
|
|
191
|
-
<div>
|
|
192
|
-
<span
|
|
193
|
-
<span
|
|
194
|
+
<div kpi-info-item>
|
|
195
|
+
<span kpi-info-label>작업 중 로봇</span>
|
|
196
|
+
<span kpi-info-value>
|
|
197
|
+
<span bold>${((_x = this.project.robotCount) === null || _x === void 0 ? void 0 : _x.toLocaleString()) || 0}</span>
|
|
198
|
+
<span small> 대</span>
|
|
199
|
+
</span>
|
|
194
200
|
</div>
|
|
195
|
-
<div>
|
|
196
|
-
<
|
|
197
|
-
|
|
201
|
+
<div kpi-info-item weather>
|
|
202
|
+
<div>
|
|
203
|
+
<span><md-icon slot="icon">rainy</md-icon>강수확률</span>
|
|
204
|
+
<span bold>${this.weather.rain}%</span>
|
|
205
|
+
</div>
|
|
206
|
+
<div>
|
|
207
|
+
<span><md-icon slot="icon">humidity_percentage</md-icon> 습도</span>
|
|
208
|
+
<span bold>${this.weather.humidity}%</span>
|
|
209
|
+
</div>
|
|
210
|
+
<div>
|
|
211
|
+
<span><md-icon slot="icon">thermostat</md-icon> 온도</span>
|
|
212
|
+
<span bold>${this.weather.temperature}°C</span>
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
<!--
|
|
216
|
+
<div>
|
|
217
|
+
<span><md-icon slot="icon">arrows_output</md-icon> 풍향</span>
|
|
218
|
+
<span bold>${this.weather.windDirection}</span>
|
|
219
|
+
</div>
|
|
220
|
+
<div>
|
|
221
|
+
<span><md-icon slot="icon">air</md-icon> 풍속</span>
|
|
222
|
+
<span bold>${this.weather.windSpeed} m/s</span>
|
|
223
|
+
</div>
|
|
224
|
+
-->
|
|
198
225
|
</div>
|
|
199
|
-
</
|
|
226
|
+
</div>
|
|
227
|
+
|
|
228
|
+
<div progress-container>
|
|
229
|
+
<span progress>
|
|
230
|
+
<ox-progress-circle
|
|
231
|
+
.value=${this.project.totalProgress}
|
|
232
|
+
titleText="전체"
|
|
233
|
+
suffix="%"
|
|
234
|
+
fontSize="27px"
|
|
235
|
+
fontColor="#4E5055"
|
|
236
|
+
borderStyle="none"
|
|
237
|
+
innerCircleSize="28%"
|
|
238
|
+
circleColor="#0595E5"
|
|
239
|
+
shadow="#00000026 4px 4px 4px"
|
|
240
|
+
background="#eaf5fd"
|
|
241
|
+
></ox-progress-circle>
|
|
242
|
+
<div>전체공정율(%)</div>
|
|
243
|
+
</span>
|
|
244
|
+
<span progress>
|
|
245
|
+
<ox-progress-circle
|
|
246
|
+
.value=${this.project.weeklyProgress}
|
|
247
|
+
titleText="주간"
|
|
248
|
+
suffix="%"
|
|
249
|
+
fontSize="27px"
|
|
250
|
+
fontColor="#4E5055"
|
|
251
|
+
borderStyle="none"
|
|
252
|
+
innerCircleSize="28%"
|
|
253
|
+
circleColor="#06B5AF"
|
|
254
|
+
shadow="#00000026 4px 4px 4px"
|
|
255
|
+
background="#eaf7f7"
|
|
256
|
+
></ox-progress-circle>
|
|
257
|
+
<div week>주간공정율(%)</div>
|
|
258
|
+
</span>
|
|
259
|
+
|
|
260
|
+
<span progress>
|
|
261
|
+
<ox-progress-circle
|
|
262
|
+
.value=${this.project.inspPassRate}
|
|
263
|
+
titleText="검측 통과"
|
|
264
|
+
suffix="%"
|
|
265
|
+
fontSize="27px"
|
|
266
|
+
fontColor="#4E5055"
|
|
267
|
+
borderStyle="none"
|
|
268
|
+
innerCircleSize="28%"
|
|
269
|
+
circleColor="#1BB401"
|
|
270
|
+
shadow="#00000026 4px 4px 4px"
|
|
271
|
+
background="#e8f7e5"
|
|
272
|
+
></ox-progress-circle>
|
|
273
|
+
<div insp-pass-rate>통과 비율(%)</div>
|
|
274
|
+
</span>
|
|
275
|
+
<span progress>
|
|
276
|
+
<ox-progress-circle
|
|
277
|
+
.value=${this.project.robotProgressRate}
|
|
278
|
+
titleText="로봇작업"
|
|
279
|
+
suffix="%"
|
|
280
|
+
fontSize="27px"
|
|
281
|
+
fontColor="#4E5055"
|
|
282
|
+
borderStyle="none"
|
|
283
|
+
innerCircleSize="28%"
|
|
284
|
+
circleColor="#8957D8"
|
|
285
|
+
shadow="#00000026 4px 4px 4px"
|
|
286
|
+
background="#f3eefb"
|
|
287
|
+
></ox-progress-circle>
|
|
288
|
+
<div robot-progress-rate>진행률(%)</div>
|
|
289
|
+
</span>
|
|
290
|
+
</div>
|
|
200
291
|
</div>
|
|
201
292
|
<div inspection>
|
|
202
293
|
<span name bold>
|
|
@@ -205,11 +296,11 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
205
296
|
</span>
|
|
206
297
|
<span>
|
|
207
298
|
<div>검측요청</div>
|
|
208
|
-
<div bold>${this.inspectionSummary.
|
|
299
|
+
<div bold>${this.inspectionSummary.request}</div>
|
|
209
300
|
</span>
|
|
210
301
|
<span>
|
|
211
302
|
<div>검측대기</div>
|
|
212
|
-
<div bold>${this.inspectionSummary.
|
|
303
|
+
<div bold>${this.inspectionSummary.wait}</div>
|
|
213
304
|
</span>
|
|
214
305
|
<span>
|
|
215
306
|
<div>합격</div>
|
|
@@ -244,13 +335,15 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
244
335
|
<tbody>
|
|
245
336
|
${this.buildingInspections.map((inspection, idx) => {
|
|
246
337
|
var _a, _b, _c, _d, _e, _f;
|
|
247
|
-
return html ` <tr @click=${() => this._onClickInspection(inspection
|
|
338
|
+
return html ` <tr @click=${() => this._onClickInspection(inspection)}>
|
|
248
339
|
<td>${idx + 1}</td>
|
|
249
|
-
<td>${(_b = (_a = inspection === null || inspection === void 0 ? void 0 : inspection.buildingLevel) === null || _a === void 0 ? void 0 : _a.building) === null || _b === void 0 ? void 0 : _b.name} ${(_c = inspection === null || inspection === void 0 ? void 0 : inspection.buildingLevel) === null || _c === void 0 ? void 0 : _c.
|
|
340
|
+
<td>${(_b = (_a = inspection === null || inspection === void 0 ? void 0 : inspection.buildingLevel) === null || _a === void 0 ? void 0 : _a.building) === null || _b === void 0 ? void 0 : _b.name} ${(_c = inspection === null || inspection === void 0 ? void 0 : inspection.buildingLevel) === null || _c === void 0 ? void 0 : _c.floorDisplayName}층</td>
|
|
250
341
|
<td bold>${(_d = inspection.checklist) === null || _d === void 0 ? void 0 : _d.constructionType}</td>
|
|
251
342
|
<td>${((_f = (_e = inspection.checklist) === null || _e === void 0 ? void 0 : _e.inspectionParts) === null || _f === void 0 ? void 0 : _f.join(', ')) || ''}</td>
|
|
252
343
|
<td>${this._formatDate(inspection.requestDate)}</td>
|
|
253
|
-
<td bold
|
|
344
|
+
<td bold status=${inspection.status || ''}>
|
|
345
|
+
${inspection.status && BUILDING_INSPECTION_STATUS[inspection.status]}
|
|
346
|
+
</td>
|
|
254
347
|
</tr>`;
|
|
255
348
|
})}
|
|
256
349
|
</tbody>
|
|
@@ -278,6 +371,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
278
371
|
name
|
|
279
372
|
startDate
|
|
280
373
|
endDate
|
|
374
|
+
projectType
|
|
281
375
|
mainPhoto {
|
|
282
376
|
fullpath
|
|
283
377
|
}
|
|
@@ -287,6 +381,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
287
381
|
inspPassRate
|
|
288
382
|
robotProgressRate
|
|
289
383
|
structuralSafetyRate
|
|
384
|
+
robotCount
|
|
290
385
|
buildingComplex {
|
|
291
386
|
id
|
|
292
387
|
address
|
|
@@ -308,6 +403,7 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
308
403
|
notice
|
|
309
404
|
householdCount
|
|
310
405
|
buildingCount
|
|
406
|
+
virtualTourLink
|
|
311
407
|
buildings {
|
|
312
408
|
id
|
|
313
409
|
name
|
|
@@ -329,8 +425,11 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
329
425
|
status
|
|
330
426
|
requestDate
|
|
331
427
|
buildingLevel {
|
|
428
|
+
id
|
|
332
429
|
floor
|
|
430
|
+
floorDisplayName
|
|
333
431
|
building {
|
|
432
|
+
id
|
|
334
433
|
name
|
|
335
434
|
}
|
|
336
435
|
}
|
|
@@ -364,8 +463,15 @@ let ProjectDetail = class ProjectDetail extends ScopedElementsMixin(PageView) {
|
|
|
364
463
|
this.weather = await _getWeather(latitude, longitude);
|
|
365
464
|
}
|
|
366
465
|
}
|
|
367
|
-
_onClickInspection(
|
|
368
|
-
|
|
466
|
+
_onClickInspection(buildingInspection) {
|
|
467
|
+
var _a, _b, _c;
|
|
468
|
+
console.log('buildingInspection :', buildingInspection);
|
|
469
|
+
if (this.project.projectType === ProjectType.DSSP) {
|
|
470
|
+
navigate(`building-inspection-grid-detail/${this.project.id}?buildingId=${(_b = (_a = buildingInspection === null || buildingInspection === void 0 ? void 0 : buildingInspection.buildingLevel) === null || _a === void 0 ? void 0 : _a.building) === null || _b === void 0 ? void 0 : _b.id}&levelId=${(_c = buildingInspection === null || buildingInspection === void 0 ? void 0 : buildingInspection.buildingLevel) === null || _c === void 0 ? void 0 : _c.id}`);
|
|
471
|
+
}
|
|
472
|
+
else if (this.project.projectType === ProjectType.DCSP) {
|
|
473
|
+
navigate(`building-inspection-detail-drawing/${buildingInspection.id}`);
|
|
474
|
+
}
|
|
369
475
|
}
|
|
370
476
|
_formatDate(date) {
|
|
371
477
|
return date
|
|
@@ -398,7 +504,7 @@ ProjectDetail.styles = [
|
|
|
398
504
|
--md-outlined-button-container-height: 30px;
|
|
399
505
|
--md-outlined-button-trailing-space: var(--spacing-medium, 8px);
|
|
400
506
|
--md-outlined-button-leading-space: var(--spacing-medium, 8px);
|
|
401
|
-
--md-sys-color-outline: rgba(51,51,51
|
|
507
|
+
--md-sys-color-outline: rgba(51, 51, 51, 0.2);
|
|
402
508
|
}
|
|
403
509
|
|
|
404
510
|
*[bold] {
|
|
@@ -410,9 +516,28 @@ ProjectDetail.styles = [
|
|
|
410
516
|
margin: 0px var(--spacing-large, 12px);
|
|
411
517
|
|
|
412
518
|
h2 {
|
|
519
|
+
display: flex;
|
|
520
|
+
gap: 7px;
|
|
413
521
|
flex: 0.5;
|
|
414
522
|
color: #3f71a0;
|
|
415
|
-
font-size:18px;
|
|
523
|
+
font-size: 18px;
|
|
524
|
+
|
|
525
|
+
md-icon[back] {
|
|
526
|
+
background: linear-gradient(135deg, #3f71a0 0%, #5a8cc7 100%);
|
|
527
|
+
color: white;
|
|
528
|
+
padding: 8px;
|
|
529
|
+
border-radius: 50%;
|
|
530
|
+
cursor: pointer;
|
|
531
|
+
box-shadow: 0 2px 8px rgba(63, 113, 160, 0.3);
|
|
532
|
+
width: 14px;
|
|
533
|
+
height: 14px;
|
|
534
|
+
--md-icon-size: 20px;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
md-icon[back]:hover {
|
|
538
|
+
background: linear-gradient(135deg, #2e5c89 0%, #4a7bb0 100%);
|
|
539
|
+
box-shadow: 0 4px 12px rgba(63, 113, 160, 0.4);
|
|
540
|
+
}
|
|
416
541
|
}
|
|
417
542
|
|
|
418
543
|
div[button-container] {
|
|
@@ -443,7 +568,7 @@ ProjectDetail.styles = [
|
|
|
443
568
|
div[body] {
|
|
444
569
|
display: flex;
|
|
445
570
|
margin: var(--spacing-large, 12px);
|
|
446
|
-
margin-top:0;
|
|
571
|
+
margin-top: 0;
|
|
447
572
|
gap: var(--spacing-medium, 8px);
|
|
448
573
|
|
|
449
574
|
h3 {
|
|
@@ -529,41 +654,55 @@ ProjectDetail.styles = [
|
|
|
529
654
|
--md-outlined-button-container-height: 30px;
|
|
530
655
|
--md-outlined-button-trailing-space: var(--spacing-medium, 8px);
|
|
531
656
|
--md-outlined-button-leading-space: var(--spacing-medium, 8px);
|
|
532
|
-
--md-sys-color-outline: rgba(51,51,51
|
|
657
|
+
--md-sys-color-outline: rgba(51, 51, 51, 0.2);
|
|
533
658
|
}
|
|
534
659
|
}
|
|
535
660
|
}
|
|
536
661
|
|
|
537
662
|
div[right-top] {
|
|
538
663
|
div[state] {
|
|
539
|
-
display:
|
|
540
|
-
|
|
664
|
+
display: flex;
|
|
665
|
+
flex-direction: column;
|
|
541
666
|
gap: var(--spacing-large, 12px);
|
|
542
667
|
|
|
543
|
-
|
|
544
|
-
max-width: 150px;
|
|
545
|
-
text-align: center;
|
|
668
|
+
div[progress-container] {
|
|
546
669
|
display: flex;
|
|
547
|
-
justify-
|
|
548
|
-
|
|
549
|
-
width: 100%;
|
|
670
|
+
justify-content: space-around;
|
|
671
|
+
gap: 8px;
|
|
550
672
|
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
673
|
+
span[progress] {
|
|
674
|
+
max-width: 165px;
|
|
675
|
+
text-align: center;
|
|
676
|
+
display: flex;
|
|
677
|
+
justify-self: center;
|
|
678
|
+
flex-direction: column;
|
|
679
|
+
width: 100%;
|
|
680
|
+
margin-inline: 12px;
|
|
681
|
+
|
|
682
|
+
& > div {
|
|
683
|
+
font-weight: bold;
|
|
684
|
+
color: #2e79be;
|
|
685
|
+
font-size: 16px;
|
|
686
|
+
margin-top: 9px;
|
|
687
|
+
}
|
|
688
|
+
& > div[week] {
|
|
689
|
+
color: #06b5af;
|
|
690
|
+
}
|
|
691
|
+
& > div[insp-pass-rate] {
|
|
692
|
+
color: #1bb401;
|
|
693
|
+
}
|
|
694
|
+
& > div[robot-progress-rate] {
|
|
695
|
+
color: #8957d8;
|
|
696
|
+
}
|
|
559
697
|
}
|
|
560
698
|
}
|
|
561
|
-
|
|
699
|
+
|
|
700
|
+
div[weather] {
|
|
562
701
|
display: flex;
|
|
563
702
|
flex-direction: column;
|
|
564
703
|
gap: var(--spacing-small, 4px);
|
|
565
704
|
margin-left: var(--spacing-medium, 8px);
|
|
566
|
-
font-size:14px;
|
|
705
|
+
font-size: 14px;
|
|
567
706
|
|
|
568
707
|
& > div {
|
|
569
708
|
display: flex;
|
|
@@ -573,8 +712,8 @@ ProjectDetail.styles = [
|
|
|
573
712
|
|
|
574
713
|
& > span {
|
|
575
714
|
display: flex;
|
|
576
|
-
align-
|
|
577
|
-
var(--spacing-tiny, 2px);
|
|
715
|
+
align-items: center;
|
|
716
|
+
gap: var(--spacing-tiny, 2px);
|
|
578
717
|
}
|
|
579
718
|
}
|
|
580
719
|
}
|
|
@@ -582,7 +721,7 @@ ProjectDetail.styles = [
|
|
|
582
721
|
div[inspection] {
|
|
583
722
|
display: grid;
|
|
584
723
|
grid-template-columns: 1.4fr 0.9fr 0.9fr 0.9fr 0.9fr;
|
|
585
|
-
margin-top:
|
|
724
|
+
margin-top: 10px;
|
|
586
725
|
background: #f6f6f6;
|
|
587
726
|
border-radius: 7px;
|
|
588
727
|
padding: var(--spacing-small, 4px) 0px;
|
|
@@ -610,7 +749,7 @@ ProjectDetail.styles = [
|
|
|
610
749
|
flex-direction: row;
|
|
611
750
|
text-align: right;
|
|
612
751
|
gap: var(--spacing-medium, 8px);
|
|
613
|
-
line-height:1.3;
|
|
752
|
+
line-height: 1.3;
|
|
614
753
|
|
|
615
754
|
md-icon {
|
|
616
755
|
width: 40px;
|
|
@@ -621,6 +760,82 @@ ProjectDetail.styles = [
|
|
|
621
760
|
}
|
|
622
761
|
}
|
|
623
762
|
}
|
|
763
|
+
div[kpi-container] {
|
|
764
|
+
display: flex;
|
|
765
|
+
gap: 8px;
|
|
766
|
+
margin-bottom: 8px;
|
|
767
|
+
align-items: center;
|
|
768
|
+
|
|
769
|
+
div[kpi-header] {
|
|
770
|
+
grid-column: 1 / -1;
|
|
771
|
+
display: flex;
|
|
772
|
+
justify-content: space-between;
|
|
773
|
+
align-items: center;
|
|
774
|
+
margin-bottom: var(--spacing-small, 4px);
|
|
775
|
+
|
|
776
|
+
span[kpi-title] {
|
|
777
|
+
font-weight: bold;
|
|
778
|
+
font-size: 16px;
|
|
779
|
+
color: #2e79be;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
span[kpi-datetime] {
|
|
783
|
+
font-size: 12px;
|
|
784
|
+
color: #666;
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
div[kpi-info-item] {
|
|
789
|
+
display: flex;
|
|
790
|
+
flex: 1;
|
|
791
|
+
flex-direction: column;
|
|
792
|
+
align-items: center;
|
|
793
|
+
padding: 5px;
|
|
794
|
+
background: #f6f6f6;
|
|
795
|
+
border-radius: 4px;
|
|
796
|
+
min-height: 50px;
|
|
797
|
+
justify-content: center;
|
|
798
|
+
margin-inline: 12px;
|
|
799
|
+
border-radius: 7px;
|
|
800
|
+
|
|
801
|
+
span[kpi-info-label] {
|
|
802
|
+
font-size: 16px;
|
|
803
|
+
color: #4e5055;
|
|
804
|
+
margin-bottom: 2px;
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
span[kpi-info-value] {
|
|
808
|
+
font-size: 18px;
|
|
809
|
+
|
|
810
|
+
& > span[small] {
|
|
811
|
+
font-size: 17px;
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
&[weather] {
|
|
816
|
+
background: none;
|
|
817
|
+
align-items: flex-start;
|
|
818
|
+
|
|
819
|
+
& > div {
|
|
820
|
+
width: 100%;
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
&[kpi] {
|
|
825
|
+
flex-direction: row;
|
|
826
|
+
justify-content: space-around;
|
|
827
|
+
|
|
828
|
+
div[kpi-info-label] {
|
|
829
|
+
display: flex;
|
|
830
|
+
flex-direction: column;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
ox-progress-circle {
|
|
834
|
+
width: 45px;
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
}
|
|
624
839
|
div[notice] {
|
|
625
840
|
margin-top: var(--spacing-medium, 8px);
|
|
626
841
|
|
|
@@ -679,7 +894,7 @@ ProjectDetail.styles = [
|
|
|
679
894
|
}
|
|
680
895
|
|
|
681
896
|
tbody td {
|
|
682
|
-
border-bottom: 1px solid rgba(51,51,51
|
|
897
|
+
border-bottom: 1px solid rgba(51, 51, 51, 0.2);
|
|
683
898
|
padding: var(--spacing-small, 4px);
|
|
684
899
|
text-align: center;
|
|
685
900
|
white-space: nowrap;
|
|
@@ -688,6 +903,10 @@ ProjectDetail.styles = [
|
|
|
688
903
|
font-size: 13px;
|
|
689
904
|
}
|
|
690
905
|
|
|
906
|
+
tbody td[status='FAIL'] {
|
|
907
|
+
color: #e15757;
|
|
908
|
+
}
|
|
909
|
+
|
|
691
910
|
md-elevated-button {
|
|
692
911
|
margin: 0 var(--spacing-small, 4px);
|
|
693
912
|
|