

20230630 김성훈 노드등록페이지 추가, 라우터추가
@ae3a8b9b85c60ba08b31479ac4af61e1fb1172c4
--- client/views/component/OpenLayers.vue
+++ client/views/component/OpenLayers.vue
... | ... | @@ -236,9 +236,9 @@ |
236 | 236 |
setCenterPosition: function (lat, lon, source) { |
237 | 237 |
|
238 | 238 |
if (this.baseSource == source) { |
239 |
- this.map.getView().setCenter([lat, lon]); |
|
239 |
+ this.map.getView().setCenter([lon, lat]); |
|
240 | 240 |
} else { |
241 |
- this.map.getView().setCenter(transform([lat, lon], source, this.baseSource)); |
|
241 |
+ this.map.getView().setCenter(transform([lon, lat], source, this.baseSource)); |
|
242 | 242 |
} |
243 | 243 |
|
244 | 244 |
}, |
... | ... | @@ -285,11 +285,11 @@ |
285 | 285 |
|
286 | 286 |
if (this.baseSource !== source) { |
287 | 287 |
rome = new Feature({ |
288 |
- geometry: new Point(transform([lat, lon], source, this.baseSource)), |
|
288 |
+ geometry: new Point(transform([lon, lat], source, this.baseSource)), |
|
289 | 289 |
}); |
290 | 290 |
} else { |
291 | 291 |
rome = new Feature({ |
292 |
- geometry: new Point([lat, lon]), |
|
292 |
+ geometry: new Point([lon, lat]), |
|
293 | 293 |
}); |
294 | 294 |
} |
295 | 295 |
|
--- client/views/pages/AppRouter.ts
+++ client/views/pages/AppRouter.ts
... | ... | @@ -11,6 +11,7 @@ |
11 | 11 |
import UserManagement from '../pages/SystemManagement/UserManagement.vue'; |
12 | 12 |
import DongManagement from '../pages/SystemManagement/DongManagement.vue'; |
13 | 13 |
import NodeManagement from '../pages/SystemManagement/NodeManagement.vue'; |
14 |
+import NodeAddForm from '../pages/SystemManagement/NodeAddForm.vue'; |
|
14 | 15 |
import ChargeManagement from '../pages/SystemManagement/ChargeManagement.vue'; |
15 | 16 |
import DataRecord from '../pages/SystemManagement/DataRecord.vue'; |
16 | 17 |
import UserAddForm from '../pages/SystemManagement/UserAddForm.vue'; |
... | ... | @@ -40,6 +41,7 @@ |
40 | 41 |
{ path: '/ErrorSearch.page', name: 'ErrorSearch', component: ErrorSearch}, |
41 | 42 |
{ path: '/DongManagement.page', name: 'DongManagement', component: DongManagement}, |
42 | 43 |
{ path: '/NodeManagement.page', name: 'NodeManagement', component: NodeManagement}, |
44 |
+ { path: '/NodeAddForm.page', name: 'NodeAddForm', component: NodeAddForm}, |
|
43 | 45 |
{ path: '/ChargeManagement.page', name: 'ChargeManagement', component: ChargeManagement}, |
44 | 46 |
{ path: '/DataRecord.page', name: 'DataRecord', component: DataRecord}, |
45 | 47 |
{ path: '/UserAddForm.page', name: 'UserAddForm', component: UserAddForm}, |
--- client/views/pages/SystemManagement/ChargeManagement.vue
+++ client/views/pages/SystemManagement/ChargeManagement.vue
... | ... | @@ -12,7 +12,7 @@ |
12 | 12 |
<span> ~ </span> |
13 | 13 |
<input type="date" value-format="yyyyMMdd" v-model="managerListSearch.endDate"/> |
14 | 14 |
<select v-model="managerListSearch.searchType"> |
15 |
- <option value="null">검색조건</option> |
|
15 |
+ <option value="null" disabled>검색조건</option> |
|
16 | 16 |
<option value="mngr_nm">이름</option> |
17 | 17 |
<option value="mngr_ogdp_info">소속정보</option> |
18 | 18 |
</select> |
+++ client/views/pages/SystemManagement/NodeAddForm.vue
... | ... | @@ -0,0 +1,444 @@ |
1 | +<template> | |
2 | + <div class="wrap"> | |
3 | + <div> | |
4 | + <div class="sub-title-wrap"> | |
5 | + <h3 class="sub-title">표준노드 등록</h3> | |
6 | + </div> | |
7 | + <div> | |
8 | + <table> | |
9 | + <colgroup> | |
10 | + <col style="width: 10%;"> | |
11 | + <col style="width: 10%;"> | |
12 | + <col style="width: 30%;"> | |
13 | + <col style="width: 20%;"> | |
14 | + <col style="width: 30%;"> | |
15 | + </colgroup> | |
16 | + <tbody> | |
17 | + <tr> | |
18 | + <th colspan="2">ID</th> | |
19 | + <td><input type="text" v-model="node.node_id"></td> | |
20 | + </tr> | |
21 | + <tr> | |
22 | + <th colspan="2">노드명</th> | |
23 | + <td><input type="text" v-model="node.node_name"></td> | |
24 | + </tr> | |
25 | + <tr> | |
26 | + <th colspan="2">읍/면/동</th> | |
27 | + <!-- <td><input type="text" v-model="node.node_type"></td> --> | |
28 | + <td>{{ dong_nm }}</td> | |
29 | + </tr> | |
30 | + <tr> | |
31 | + <th rowspan="2">좌표 <button type="button" class="btn-2 gray-btn" @click="[map_open = true, openMap()]">좌표수정</button></th> | |
32 | + <th class="second">위도</th> | |
33 | + <td>{{ node.lat }}</td> | |
34 | + </tr> | |
35 | + <tr> | |
36 | + <th class="second">경도</th> | |
37 | + <td>{{ node.lon }}</td> | |
38 | + | |
39 | + </tr> | |
40 | + </tbody> | |
41 | + </table> | |
42 | + </div> | |
43 | + <div class="btn-wrap"> | |
44 | + <button type="button" class="btn-2 green-btn" @click="modal_insert = true">등록</button> | |
45 | + <button type="button" class="btn-2 gray-btn" @click="nodeSelectListPage">취소</button> | |
46 | + </div> | |
47 | + </div> | |
48 | + | |
49 | + </div> | |
50 | + <div class="modal-wrap" v-if="modal_insert == true"> | |
51 | + <div class="modal-bg"> | |
52 | + </div> | |
53 | + <div class="modal"> | |
54 | + <p>노드를 <span class="txt-point">등록</span>하시겠습니까?</p> | |
55 | + <div class="btn-wrap"> | |
56 | + <button type="button" class="green-btn" @click="nodeInsert">확인</button> | |
57 | + <button type="button" class="gray-btn" @click="modal_insert = false">취소</button> | |
58 | + </div> | |
59 | + </div> | |
60 | + </div> | |
61 | + | |
62 | + <div class="modal-wrap" v-if="map_open"> | |
63 | + <div class="modal-bg"> | |
64 | + </div> | |
65 | + <div class="modalMap"> | |
66 | + <div class="search"> | |
67 | + <h2>교차로 검색</h2> | |
68 | + <dongSelectList @setDongCd="setDongCd" :nodeHiddenCk="true" :azimuthHiddenCk="true"></dongSelectList> | |
69 | + </div> | |
70 | + <button type="button" class="green-btn" @click="searchDong">검색</button> | |
71 | + <OpenLayers ref="open_layers"/> | |
72 | + <label>위도 : </label> | |
73 | + <input style="width: 20rem" type="text" v-model="map_lat" disabled/> | |
74 | + <label>경도 : </label> | |
75 | + <input style="width: 20rem" type="text" v-model="map_lon" disabled/> | |
76 | + <div class="btn-wrap"> | |
77 | + <button type="button" class="green-btn" @click="selectCoordinate">선택</button> | |
78 | + <button type="button" class="gray-btn" @click="closeMap">취소</button> | |
79 | + </div> | |
80 | + </div> | |
81 | + </div> | |
82 | +</template> | |
83 | + | |
84 | +<script> | |
85 | +import axios from 'axios'; | |
86 | +import COMMON_UTIL from '../../../resources/js/commonUtil.ts'; | |
87 | +import OpenLayers from "../../component/OpenLayers.vue"; | |
88 | +import { | |
89 | + vworldBaseLayer, | |
90 | + vworldGrayLayer, | |
91 | + vworldMidnightLayer, | |
92 | + vworldHybridLayer, | |
93 | + vworldSatelliteLayer, | |
94 | +} from "../../component/OpenLayersMap.vue"; | |
95 | +import {baseStyles} from '../../component/OpenLayersStyle.vue'; | |
96 | +import dongSelectList from '../../component/dongSelectList.vue'; | |
97 | +import { transform } from 'ol/proj'; | |
98 | + | |
99 | +export default { | |
100 | + data:() => { | |
101 | + return { | |
102 | + node: { | |
103 | + node_id: null, | |
104 | + node_name: null, | |
105 | + node_type: null, | |
106 | + lat: null, | |
107 | + lon: null, | |
108 | + // updatedate: null, | |
109 | + dong_cd: '22030', | |
110 | + }, | |
111 | + dong_nm: null, | |
112 | + address: {}, | |
113 | + | |
114 | + //modal | |
115 | + modal_insert: false, | |
116 | + | |
117 | + //좌표 modal | |
118 | + map_open: false, | |
119 | + map_lat: null, | |
120 | + map_lon: null, | |
121 | + | |
122 | + }; | |
123 | + }, | |
124 | + methods: { | |
125 | + | |
126 | + //좌표수정 지도 열기 | |
127 | + async openMap() { | |
128 | + const vm = this; | |
129 | + | |
130 | + //OpenLayers 랜더링 후 접근 | |
131 | + await vm.$nextTick(); | |
132 | + //기본맵 세팅 | |
133 | + vm.$refs.open_layers.setBaseMap(vworldBaseLayer); | |
134 | + | |
135 | + //행정동 레이어 | |
136 | + //this.$refs.open_layers.addVectorLayerByUrl('/testDongGeoJson.json','testMap','EPSG:4326', baseStyles['labelStyle'],'label'); | |
137 | + vm.$refs.open_layers.addVectorLayerByUrl('/common/getDongGeoJson.json','testMap','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.node.dong_cd); | |
138 | + vm.$refs.open_layers.setCenterPosition(265352.91811139905,340098.7926937433,'EPSG:5181'); | |
139 | + vm.$refs.open_layers.zoomChange(14.5); | |
140 | + }, | |
141 | + | |
142 | + closeMap() { | |
143 | + const vm = this; | |
144 | + vm.$refs.open_layers.removeLayerAll(); | |
145 | + vm.dong_nm = null; | |
146 | + vm.map_open = false; | |
147 | + }, | |
148 | + | |
149 | + //지도 클릭 이벤트 | |
150 | + childClick(prop,coordinate){ | |
151 | + const vm = this; | |
152 | + console.log(prop); | |
153 | + console.log(coordinate); | |
154 | + | |
155 | + // 레이어 삭제 | |
156 | + vm.$refs.open_layers.removeLayer('point1'); | |
157 | + | |
158 | + // Icon 그리기 | |
159 | + vm.$refs.open_layers.createIcon(coordinate[1],coordinate[0],'/client/resources/images/icon/fin.png',0.3, 'point1','EPSG:5181'); | |
160 | + | |
161 | + //클릭위치로 이동 | |
162 | + // this.$refs.open_layers.setCenterPosition(coordinate[0],coordinate[1],'EPSG:5181'); | |
163 | + | |
164 | + //좌표계 변환 | |
165 | + var changeCoordinate = transform([coordinate[0],coordinate[1]],'EPSG:5181','EPSG:4326'); | |
166 | + console.log("lat 바꿈",changeCoordinate[1]); | |
167 | + console.log("lon 바꿈",changeCoordinate[0]); | |
168 | + vm.map_lat = changeCoordinate[1]; | |
169 | + vm.map_lon = changeCoordinate[0]; | |
170 | + }, | |
171 | + | |
172 | + //좌표 선택 완료 | |
173 | + selectCoordinate() { | |
174 | + const vm = this; | |
175 | + vm.node.lat = vm.map_lat; | |
176 | + vm.node.lon = vm.map_lon; | |
177 | + vm.map_open = false; | |
178 | + }, | |
179 | + | |
180 | + // 좌표수정에서 교차로 검색시 동레이어, 노드좌표 찍어주기 | |
181 | + searchDong() { | |
182 | + const vm = this; | |
183 | + //기존 레이어 삭제 | |
184 | + vm.$refs.open_layers.removeLayer('testMap'); | |
185 | + vm.$refs.open_layers.removeLayer('point1'); | |
186 | + //동 레이어 그리기 | |
187 | + vm.$refs.open_layers.addVectorLayerByUrl('/common/getDongGeoJson.json','testMap','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.address.dong_dong_cd); | |
188 | + axios({ | |
189 | + url: '/dong/dongCenter.json', | |
190 | + method: 'post', | |
191 | + headers: { | |
192 | + 'Content-Type': "application/json; charset=UTF-8" | |
193 | + }, | |
194 | + data: {'dong_cd' : vm.address.dong_cd} | |
195 | + }).then(function (response) { | |
196 | + console.log("searchNode response : ",response.data); | |
197 | + vm.$refs.open_layers.setCenterPosition(response.data.dong_lat,response.data.dong_lon,'EPSG:5181'); | |
198 | + vm.$refs.open_layers.zoomChange(15); | |
199 | + vm.dong_nm = response.data.dong_nm; | |
200 | + }).catch(function (error) { | |
201 | + console.log("serchNode error : ", error); | |
202 | + alert("검색에 실패 하였습니다. 관리자에게 문의하세요."); | |
203 | + }) | |
204 | + }, | |
205 | + | |
206 | + //노드 등록 | |
207 | + nodeInsert() { | |
208 | + const vm = this; | |
209 | + vm.node.dong_cd = vm.address.dong_cd; | |
210 | + | |
211 | + axios({ | |
212 | + url: '/node/nodeInsert.json', | |
213 | + method: 'post', | |
214 | + headers: { | |
215 | + 'Content-Type': "application/json; charset=UTF-8" | |
216 | + }, | |
217 | + data: vm.node | |
218 | + }).then(function (response) { | |
219 | + console.log("nodeInsert - response : ", response.data); | |
220 | + let result = response.data; | |
221 | + if ( result > 0) { | |
222 | + alert("노드 등록을 완료 하였습니다.") | |
223 | + vm.modal_insert = false; | |
224 | + vm.nodeSelectListPage(); | |
225 | + } else { | |
226 | + alert("등록 실패, 관리자에게 문의해주세요.") | |
227 | + vm.modal_insert = false; | |
228 | + } | |
229 | + }).catch(function (error) { | |
230 | + console.log("nodeInsert - error : ", error); | |
231 | + alert("노드등록 오류, 관리자에게 문의해주세요.") | |
232 | + vm.modal_insert = false; | |
233 | + }) | |
234 | + }, | |
235 | + | |
236 | + //dongSelectList 컴포넌트에서 선택된 dong_cd 셋팅 | |
237 | + setDongCd(value) { | |
238 | + console.log("value : ", value); | |
239 | + this.address = value; | |
240 | + }, | |
241 | + | |
242 | + //날짜에 '-' 넣기 | |
243 | + dateHyphen(date) { | |
244 | + return COMMON_UTIL.dateHyphen(date); | |
245 | + }, | |
246 | + | |
247 | + nodeSelectListPage() { | |
248 | + this.$router.push({ path: '/NodeManagement.page'}) | |
249 | + } | |
250 | + }, | |
251 | + watch: {}, | |
252 | + computed: {}, | |
253 | + components: { | |
254 | + OpenLayers: OpenLayers, | |
255 | + dongSelectList: dongSelectList | |
256 | + }, | |
257 | + mounted() { | |
258 | + console.log("Main4 mounted"); | |
259 | + }, | |
260 | +}; | |
261 | +</script> | |
262 | + | |
263 | +<style scoped> | |
264 | +.wrap { | |
265 | + width: 155rem; | |
266 | + margin: 100px auto; | |
267 | +} | |
268 | + | |
269 | +.search-wrap { | |
270 | + margin-bottom: 30px; | |
271 | +} | |
272 | + | |
273 | +.search-wrap input, | |
274 | +.search-wrap select { | |
275 | + height: 22.5px; | |
276 | + border-radius: 3px; | |
277 | + border: 1px solid #949292; | |
278 | +} | |
279 | + | |
280 | +.float-left { | |
281 | + float: left; | |
282 | +} | |
283 | + | |
284 | +.float-left .sub-title, | |
285 | +.sub-title-wrap .sub-title { | |
286 | + font-size: 20px; | |
287 | +} | |
288 | + | |
289 | +.float-right { | |
290 | + float: right; | |
291 | +} | |
292 | + | |
293 | +.sub-title-wrap>* { | |
294 | + display: inline-block; | |
295 | + vertical-align: middle; | |
296 | +} | |
297 | + | |
298 | +.sub-title-wrap>*:not(:last-child) { | |
299 | + margin-right: 2rem; | |
300 | +} | |
301 | + | |
302 | +.full { | |
303 | + width: 100%; | |
304 | +} | |
305 | + | |
306 | +.txt-left { | |
307 | + text-align: left; | |
308 | +} | |
309 | + | |
310 | +.txt-left .green-btn { | |
311 | + margin-right: 2rem; | |
312 | +} | |
313 | + | |
314 | +.btn-2 { | |
315 | + display: inline-block; | |
316 | + padding: 0.3rem 2rem; | |
317 | + font-size: 13.333px; | |
318 | +} | |
319 | + | |
320 | +label.btn-2 { | |
321 | + cursor: pointer; | |
322 | +} | |
323 | + | |
324 | +.clear-fix::after { | |
325 | + content: ""; | |
326 | + display: block; | |
327 | + clear: both; | |
328 | +} | |
329 | + | |
330 | +.search-wrap .float-right form>*:not(:last-child) { | |
331 | + margin-right: 1rem; | |
332 | +} | |
333 | + | |
334 | +table { | |
335 | + width: 100%; | |
336 | + text-align: center; | |
337 | + border-collapse: collapse; | |
338 | +} | |
339 | + | |
340 | +th, | |
341 | +td { | |
342 | + border-left: none; | |
343 | + border-right: none; | |
344 | +} | |
345 | +td input{width: -webkit-fill-available;} | |
346 | +table th { | |
347 | + padding: 15px; | |
348 | + color: #fff; | |
349 | + background-color: #13833b; | |
350 | + border-bottom: 1px solid #e5e5dd; | |
351 | +} | |
352 | + | |
353 | +table td { | |
354 | + padding: 10px; | |
355 | + border-bottom: 1px solid #e5e5dd; | |
356 | +} | |
357 | + | |
358 | +table tbody th.second { | |
359 | + background-color: #31a257; | |
360 | +} | |
361 | + | |
362 | +table tr:nth-child(odd) { | |
363 | + background-color: #f7f6f6; | |
364 | +} | |
365 | + | |
366 | +table tr:nth-child(even) { | |
367 | + background-color: #fdfdf2; | |
368 | +} | |
369 | + | |
370 | +.bottom-wrap { | |
371 | + position: relative; | |
372 | + padding: 1rem 0; | |
373 | +} | |
374 | + | |
375 | +.pg-wrap { | |
376 | + text-align: center; | |
377 | +} | |
378 | + | |
379 | +.pg-item { | |
380 | + display: inline-block; | |
381 | + padding: 10px; | |
382 | + color: #949292; | |
383 | +} | |
384 | + | |
385 | +.pg-item.prev, | |
386 | +.pg-item.next, | |
387 | +.pg-item.active { | |
388 | + color: #13833b; | |
389 | +} | |
390 | + | |
391 | +#fileBtn::file-selector-button { | |
392 | + display: none; | |
393 | +} | |
394 | + | |
395 | +.btn-wrap { | |
396 | + text-align: right; | |
397 | + margin-top: 15px; | |
398 | +} | |
399 | + | |
400 | +.btn-wrap>*:not(:last-child) { | |
401 | + margin-right: 15px; | |
402 | +} | |
403 | + | |
404 | + | |
405 | + | |
406 | +.modal-bg { | |
407 | + position: absolute; | |
408 | + width: 100%; | |
409 | + height: 100%; | |
410 | + background-color: rgba(0, 0, 0, .6); | |
411 | +} | |
412 | +.modal { | |
413 | + position: absolute; | |
414 | + top: 50%; | |
415 | + left: 50%; | |
416 | + transform: translate(-50%, -50%); | |
417 | + max-width: 350px; | |
418 | + padding: 5rem; | |
419 | + z-index: 2; | |
420 | + background-color: #fff; | |
421 | + border-radius: 1rem; | |
422 | + text-align: center; | |
423 | +} | |
424 | + | |
425 | +.modalMap { | |
426 | + position: absolute; | |
427 | + top: 50%; | |
428 | + left: 50%; | |
429 | + transform: translate(-50%, -50%); | |
430 | + width: 90%; | |
431 | + padding: 5rem; | |
432 | + z-index: 2; | |
433 | + background-color: #fff; | |
434 | + border-radius: 1rem; | |
435 | +} | |
436 | + | |
437 | +.modal .btn-wrap { | |
438 | + text-align: center; | |
439 | +} | |
440 | + | |
441 | +.txt-point { | |
442 | + color: #13833b; | |
443 | +} | |
444 | +</style>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/pages/SystemManagement/NodeManagement.vue
+++ client/views/pages/SystemManagement/NodeManagement.vue
... | ... | @@ -66,7 +66,7 @@ |
66 | 66 |
<div> |
67 | 67 |
<div class="sub-title-wrap"> |
68 | 68 |
<h3 class="sub-title">표준노드 정보관리</h3> |
69 |
- <span class="btn-2 green-btn" @click="modal_insert = true">신규등록</span> |
|
69 |
+ <span class="btn-2 green-btn" @click="nodeInsertPage">신규등록</span> |
|
70 | 70 |
</div> |
71 | 71 |
<div> |
72 | 72 |
<table> |
... | ... | @@ -80,9 +80,9 @@ |
80 | 80 |
<tbody> |
81 | 81 |
<tr> |
82 | 82 |
<th colspan="2">ID</th> |
83 |
- <td><input type="text" :disabled="id_disabled == true" v-model="node.node_id"></td> |
|
83 |
+ <td>{{ node.node_id }}</td> |
|
84 | 84 |
<th>등록일</th> |
85 |
- <td><input type="text" disabled v-model="node.updatedate"></td> |
|
85 |
+ <td>{{ node.updatedate }}</td> |
|
86 | 86 |
</tr> |
87 | 87 |
<tr> |
88 | 88 |
<th colspan="2">노드명</th> |
... | ... | @@ -100,21 +100,21 @@ |
100 | 100 |
<tr> |
101 | 101 |
<th rowspan="2">좌표 <button type="button" class="btn-2 gray-btn" @click="[map_open = true, openMap()]">좌표수정</button></th> |
102 | 102 |
<th class="second">위도</th> |
103 |
- <td><input type="text" v-model="node.lat"></td> |
|
103 |
+ <td>{{ node.lat }}</td> |
|
104 | 104 |
<th>수정자</th> |
105 | 105 |
<td></td> |
106 | 106 |
</tr> |
107 | 107 |
<tr> |
108 | 108 |
<th class="second">경도</th> |
109 |
- <td><input type="text" v-model="node.lon"></td> |
|
109 |
+ <td>{{ node.lon }}</td> |
|
110 | 110 |
|
111 | 111 |
</tr> |
112 | 112 |
</tbody> |
113 | 113 |
</table> |
114 | 114 |
</div> |
115 | 115 |
<div class="btn-wrap"> |
116 |
- <button type="button" class="btn-2 gray-btn" @click="modal_delete = true">삭제</button> |
|
117 | 116 |
<button type="button" class="btn-2 green-btn" @click="modal_update = true">수정</button> |
117 |
+ <button type="button" class="btn-2 gray-btn" @click="modal_delete = true">삭제</button> |
|
118 | 118 |
</div> |
119 | 119 |
</div> |
120 | 120 |
|
... | ... | @@ -290,7 +290,8 @@ |
290 | 290 |
vm.$refs.open_layers.setCenterPosition(vm.node.lat,vm.node.lon,'EPSG:4326'); |
291 | 291 |
vm.$refs.open_layers.createIcon(vm.node.lat,vm.node.lon,'/client/resources/images/icon/fin.png',0.3, 'point1','EPSG:4326'); |
292 | 292 |
} else { |
293 |
- vm.$refs.open_layers.setCenterPosition(340463.3583643114,265112.9114570773,'EPSG:5181'); |
|
293 |
+ vm.$refs.open_layers.setCenterPosition(265352.91811139905,340098.7926937433,'EPSG:5181'); |
|
294 |
+ vm.$refs.open_layers.zoomChange(14.5); |
|
294 | 295 |
}; |
295 | 296 |
}, |
296 | 297 |
|
... | ... | @@ -304,21 +305,23 @@ |
304 | 305 |
childClick(prop,coordinate){ |
305 | 306 |
const vm = this; |
306 | 307 |
console.log(prop); |
307 |
- console.log(coordinate); |
|
308 |
+ console.log("coordinate",coordinate); |
|
308 | 309 |
|
309 | 310 |
// 레이어 삭제 |
310 | 311 |
vm.$refs.open_layers.removeLayer('point1'); |
311 | 312 |
|
312 | 313 |
// Icon 그리기 |
313 |
- vm.$refs.open_layers.createIcon(coordinate[0],coordinate[1],'/client/resources/images/icon/fin.png',0.3, 'point1','EPSG:5181'); |
|
314 |
+ vm.$refs.open_layers.createIcon(coordinate[1],coordinate[0],'/client/resources/images/icon/fin.png',0.3, 'point1','EPSG:5181'); |
|
314 | 315 |
|
315 | 316 |
//클릭위치로 이동 |
316 | 317 |
// this.$refs.open_layers.setCenterPosition(coordinate[0],coordinate[1],'EPSG:5181'); |
317 | 318 |
|
318 | 319 |
//좌표계 변환 |
319 | 320 |
var changeCoordinate = transform([coordinate[0],coordinate[1]],'EPSG:5181','EPSG:4326'); |
320 |
- vm.map_lat = changeCoordinate[0]; |
|
321 |
- vm.map_lon = changeCoordinate[1]; |
|
321 |
+ console.log("lat 바꿈",changeCoordinate[1]); |
|
322 |
+ console.log("lon 바꿈",changeCoordinate[0]); |
|
323 |
+ vm.map_lat = changeCoordinate[1]; |
|
324 |
+ vm.map_lon = changeCoordinate[0]; |
|
322 | 325 |
}, |
323 | 326 |
|
324 | 327 |
//좌표 선택 완료 |
... | ... | @@ -408,42 +411,6 @@ |
408 | 411 |
console.log("nodeSelectList - error : ", error); |
409 | 412 |
alert("노드 목록 조회 오류, 관리자에게 문의해주세요."); |
410 | 413 |
}); |
411 |
- }, |
|
412 |
- |
|
413 |
- //노드 등록 |
|
414 |
- nodeInsert() { |
|
415 |
- const vm = this; |
|
416 |
- axios({ |
|
417 |
- url: '/node/nodeInsert.json', |
|
418 |
- method: 'post', |
|
419 |
- headers: { |
|
420 |
- 'Content-Type': "application/json; charset=UTF-8" |
|
421 |
- }, |
|
422 |
- data: vm.node |
|
423 |
- }).then(function (response) { |
|
424 |
- console.log("nodeInsert - response : ", response.data); |
|
425 |
- let result = response.data; |
|
426 |
- if ( result > 0) { |
|
427 |
- alert("노드 등록을 완료 하였습니다.") |
|
428 |
- vm.modal_insert = false; |
|
429 |
- vm.nodeSelectList(); |
|
430 |
- vm.node = { |
|
431 |
- node_id: null, |
|
432 |
- node_name: null, |
|
433 |
- node_type: null, |
|
434 |
- lat: null, |
|
435 |
- lon: null, |
|
436 |
- updatedate: null |
|
437 |
- }; |
|
438 |
- } else { |
|
439 |
- alert("등록 실패, 관리자에게 문의해주세요.") |
|
440 |
- vm.modal_insert = false; |
|
441 |
- } |
|
442 |
- }).catch(function (error) { |
|
443 |
- console.log("nodeInsert - error : ", error); |
|
444 |
- alert("노드등록 오류, 관리자에게 문의해주세요.") |
|
445 |
- vm.modal_insert = false; |
|
446 |
- }) |
|
447 | 414 |
}, |
448 | 415 |
|
449 | 416 |
//노드 수정 |
... | ... | @@ -549,6 +516,10 @@ |
549 | 516 |
dateHyphen(date) { |
550 | 517 |
return COMMON_UTIL.dateHyphen(date); |
551 | 518 |
}, |
519 |
+ |
|
520 |
+ nodeInsertPage() { |
|
521 |
+ this.$router.push({ path: '/NodeAddForm.page'}) |
|
522 |
+ } |
|
552 | 523 |
}, |
553 | 524 |
watch: {}, |
554 | 525 |
computed: {}, |
--- client/views/pages/SystemManagement/UserManagement.vue
+++ client/views/pages/SystemManagement/UserManagement.vue
... | ... | @@ -18,7 +18,7 @@ |
18 | 18 |
<div class="search-wrap clear-fix"> |
19 | 19 |
<div class="float-left"> |
20 | 20 |
<select v-model="userListSearch.authorFilter" @change="userSelectList"> |
21 |
- <option value="null">권한필터</option> |
|
21 |
+ <option value="null" disabled>권한필터</option> |
|
22 | 22 |
<option value="시청관리자">시청관리자</option> |
23 | 23 |
<option value="지자체관리자">지자체관리자</option> |
24 | 24 |
</select> |
... | ... | @@ -29,7 +29,7 @@ |
29 | 29 |
<span> ~ </span> |
30 | 30 |
<input type="date" value-format="yyyyMMdd" v-model="userListSearch.endDate"/> |
31 | 31 |
<select v-model="userListSearch.searchType"> |
32 |
- <option value="null">검색조건</option> |
|
32 |
+ <option value="null" disabled>검색조건</option> |
|
33 | 33 |
<option value="user_id">ID</option> |
34 | 34 |
<option value="user_nm">이름</option> |
35 | 35 |
<option value="dong_cd">관리구역</option> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?