

20230704 김성훈 노드관리 지도수정, 사용자관리 셀렉트박스 수정
@6fe661466b4b3b35f62ccbc1a4f935e8266d401e
--- client/views/component/OpenLayers.vue
+++ client/views/component/OpenLayers.vue
... | ... | @@ -56,7 +56,7 @@ |
56 | 56 |
}, |
57 | 57 |
methods: { |
58 | 58 |
|
59 |
- zoomChange(zoomIdx) { |
|
59 |
+ setZoom(zoomIdx) { |
|
60 | 60 |
this.map.getView().setZoom(zoomIdx); |
61 | 61 |
}, |
62 | 62 |
|
... | ... | @@ -174,7 +174,7 @@ |
174 | 174 |
} |
175 | 175 |
}, |
176 | 176 |
}); |
177 |
- vm.map.getView().setCenter(transform([ tempfeatures[0].values_.geometry.flatCoordinates[0],tempfeatures[0].values_.geometry.flatCoordinates[1]], "EPSG:5181", vm.baseSource)); |
|
177 |
+ // vm.map.getView().setCenter(transform([ tempfeatures[0].values_.geometry.flatCoordinates[0],tempfeatures[0].values_.geometry.flatCoordinates[1]], "EPSG:5181", vm.baseSource)); |
|
178 | 178 |
|
179 | 179 |
vector.setZIndex(10); |
180 | 180 |
vm.map.addLayer(vector); |
... | ... | @@ -232,6 +232,7 @@ |
232 | 232 |
}); |
233 | 233 |
} |
234 | 234 |
}, |
235 |
+ |
|
235 | 236 |
// 좌표 센터 이동 |
236 | 237 |
setCenterPosition: function (lat, lon, source) { |
237 | 238 |
|
... | ... | @@ -240,8 +241,8 @@ |
240 | 241 |
} else { |
241 | 242 |
this.map.getView().setCenter(transform([lon, lat], source, this.baseSource)); |
242 | 243 |
} |
243 |
- |
|
244 | 244 |
}, |
245 |
+ |
|
245 | 246 |
// 기본맵 세팅 |
246 | 247 |
setBaseMap: function (map,zoom,dong_cd, node_id) { |
247 | 248 |
const vm = this; |
... | ... | @@ -263,6 +264,7 @@ |
263 | 264 |
const tempfeatures = new GeoJSON().readFeatures(response.data); |
264 | 265 |
// console.log("tempfeatures :", tempfeatures); |
265 | 266 |
// console.log("tempfeatures :", tempfeatures[0].values_.geometry.flatCoordinates); |
267 |
+ |
|
266 | 268 |
vm.map.getView().setCenter(transform([ tempfeatures[0].values_.geometry.flatCoordinates[0],tempfeatures[0].values_.geometry.flatCoordinates[1]], "EPSG:5181", vm.baseSource)); |
267 | 269 |
|
268 | 270 |
// this.map.getView().setCenter(transform([338492.222420045, 243951.915081981], "EPSG:5181", this.baseSource)); |
--- client/views/pages/RealtimeStatus/CrosswalkListSearch.vue
+++ client/views/pages/RealtimeStatus/CrosswalkListSearch.vue
... | ... | @@ -9,18 +9,8 @@ |
9 | 9 |
<span>~</span> |
10 | 10 |
<input type="date" name="" id="" /> |
11 | 11 |
</div> |
12 |
- <div class="flex gap"> |
|
13 |
- <label>지역: </label> |
|
14 |
- <select name="" id=""> |
|
15 |
- <option value="">대구광역시</option> |
|
16 |
- </select> |
|
17 |
- <select name="" id=""> |
|
18 |
- <option value="">서구</option> |
|
19 |
- </select> |
|
20 |
- <select name="" id=""> |
|
21 |
- <option value="">전체</option> |
|
22 |
- </select> |
|
23 |
- </div> |
|
12 |
+ <label>지역: </label> |
|
13 |
+ <dongSelectList @setDongCd="setDongCd" :nodeHiddenCk="true" :azimuthHiddenCk="true"></dongSelectList> |
|
24 | 14 |
</div> |
25 | 15 |
<div class="flex-between gap"> |
26 | 16 |
<div class="gap flex"> |
... | ... | @@ -219,6 +209,7 @@ |
219 | 209 |
|
220 | 210 |
<script> |
221 | 211 |
import Modal from "../../component/Modal.vue"; |
212 |
+import dongSelectList from '../../component/dongSelectList.vue'; |
|
222 | 213 |
|
223 | 214 |
export default { |
224 | 215 |
data() { |
... | ... | @@ -231,6 +222,9 @@ |
231 | 222 |
computed: { |
232 | 223 |
Modal: Modal, |
233 | 224 |
}, |
225 |
+ components: { |
|
226 |
+ dongSelectList: dongSelectList |
|
227 |
+ }, |
|
234 | 228 |
mounted() { |
235 | 229 |
console.log("Main4 mounted"); |
236 | 230 |
}, |
... | ... | @@ -238,6 +232,10 @@ |
238 | 232 |
</script> |
239 | 233 |
|
240 | 234 |
<style scoped> |
235 |
+ |
|
236 |
+::v-deep select { |
|
237 |
+ width: 15rem; |
|
238 |
+} |
|
241 | 239 |
.img { |
242 | 240 |
width: 20rem; |
243 | 241 |
height: 20rem; |
--- client/views/pages/SystemManagement/AccessRecord.vue
+++ client/views/pages/SystemManagement/AccessRecord.vue
... | ... | @@ -17,21 +17,17 @@ |
17 | 17 |
<hr class="margin"> |
18 | 18 |
<div class="search-wrap clear-fix"> |
19 | 19 |
<div class="float-right"> |
20 |
- <div class="flex gap m-b"> |
|
21 |
- <label>접속일자</label> |
|
22 |
- <input type="date" value-format="yyyymmdd" v-model="userAccessListSearch.startDate"/> |
|
23 |
- <span>~</span> |
|
24 |
- <input type="date" value-format="yyyymmdd" v-model="userAccessListSearch.endDate"/> |
|
25 |
- </div> |
|
26 |
- <div class="flex gap"> |
|
27 |
- <select v-model="userAccessListSearch.searchType"> |
|
28 |
- <option value="">검색조건</option> |
|
29 |
- <option value="user_id">ID</option> |
|
30 |
- <option value="user_nm">이름</option> |
|
31 |
- </select> |
|
32 |
- <input type="text" placeholder="검색어를 입력 해주세요." v-model="userAccessListSearch.searchText" @keyup.enter="userAccessList"/> |
|
33 |
- <button type="button" class="green-btn" @click="userAccessList">검색</button> |
|
34 |
- </div> |
|
20 |
+ <label>접속일자</label> |
|
21 |
+ <input type="date" value-format="yyyymmdd" v-model="userAccessListSearch.startDate"/> |
|
22 |
+ <span>~</span> |
|
23 |
+ <input type="date" value-format="yyyymmdd" v-model="userAccessListSearch.endDate"/> |
|
24 |
+ <select v-model="userAccessListSearch.searchType"> |
|
25 |
+ <option value="null">검색조건</option> |
|
26 |
+ <option value="user_id">ID</option> |
|
27 |
+ <option value="user_nm">이름</option> |
|
28 |
+ </select> |
|
29 |
+ <input type="text" placeholder="검색어를 입력 해주세요." v-model="userAccessListSearch.searchText" @keyup.enter="userAccessSelectList"/> |
|
30 |
+ <button type="button" class="green-btn" @click="userAccessSelectList">검색</button> |
|
35 | 31 |
</div> |
36 | 32 |
</div> |
37 | 33 |
<div> |
... | ... | @@ -59,7 +55,7 @@ |
59 | 55 |
<td data-title="NO">{{ idx + 1 }}</td> |
60 | 56 |
<td data-title="접속ID">{{ item.user_id }}</td> |
61 | 57 |
<td data-title="접속자이름">{{ item.user_nm }}</td> |
62 |
- <td data-title="접속일시">{{ item.cntn_dt }}</td> |
|
58 |
+ <td data-title="접속일시">{{ yyyymmdd(item.cntn_dt) }}</td> |
|
63 | 59 |
<td data-title="접속IP">{{ item.cntn_ip }}</td> |
64 | 60 |
<td data-title="접속타입">{{ item.cntn_ty }}</td> |
65 | 61 |
</tr> |
... | ... | @@ -82,6 +78,7 @@ |
82 | 78 |
<script> |
83 | 79 |
import axios from 'axios'; |
84 | 80 |
import PaginationButton from '../../component/pagination/PaginationButton.vue'; |
81 |
+import COMMON_UTIL from '../../../resources/js/commonUtil.ts'; |
|
85 | 82 |
|
86 | 83 |
export default { |
87 | 84 |
data: () => { |
... | ... | @@ -101,7 +98,7 @@ |
101 | 98 |
methods: { |
102 | 99 |
|
103 | 100 |
//접속기록 목록 조회 |
104 |
- userAccessList: function () { |
|
101 |
+ userAccessSelectList: function () { |
|
105 | 102 |
const vm = this; |
106 | 103 |
axios({ |
107 | 104 |
url: '/user/userAccessLog.json', |
... | ... | @@ -118,6 +115,11 @@ |
118 | 115 |
console.log("userAccessList - error : ", error); |
119 | 116 |
alert("접속기록 목록 조회 오류, 관리자에게 문의해주세요.") |
120 | 117 |
}) |
118 |
+ }, |
|
119 |
+ |
|
120 |
+ //날짜 시,분,초 자르기 |
|
121 |
+ yyyymmdd: function (date) { |
|
122 |
+ return COMMON_UTIL.yyyymmdd(date); |
|
121 | 123 |
}, |
122 | 124 |
|
123 | 125 |
//사용자 목록 페이지 이동 |
... | ... | @@ -137,12 +139,12 @@ |
137 | 139 |
}, |
138 | 140 |
mounted() { |
139 | 141 |
console.log("Main4 mounted"); |
142 |
+ this.userAccessSelectList(); |
|
140 | 143 |
}, |
141 | 144 |
}; |
142 | 145 |
</script> |
143 | 146 |
|
144 | 147 |
<style scoped> |
145 |
- |
|
146 | 148 |
.wrap { |
147 | 149 |
width: 155rem; |
148 | 150 |
margin: 100px auto; |
--- client/views/pages/SystemManagement/NodeAddForm.vue
+++ client/views/pages/SystemManagement/NodeAddForm.vue
... | ... | @@ -135,8 +135,6 @@ |
135 | 135 |
//행정동 레이어 |
136 | 136 |
//this.$refs.open_layers.addVectorLayerByUrl('/testDongGeoJson.json','testMap','EPSG:4326', baseStyles['labelStyle'],'label'); |
137 | 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 | 138 |
}, |
141 | 139 |
|
142 | 140 |
closeMap() { |
... | ... | @@ -156,15 +154,13 @@ |
156 | 154 |
vm.$refs.open_layers.removeLayer('point1'); |
157 | 155 |
|
158 | 156 |
// Icon 그리기 |
159 |
- vm.$refs.open_layers.createIcon(coordinate[1],coordinate[0],'/client/resources/images/icon/fin.png',0.3, 'point1','EPSG:5181'); |
|
157 |
+ vm.$refs.open_layers.createIcon(coordinate[1],coordinate[0],'/client/resources/images/icon/fin2.png',0.3, 'point1','EPSG:5181'); |
|
160 | 158 |
|
161 | 159 |
//클릭위치로 이동 |
162 | 160 |
// this.$refs.open_layers.setCenterPosition(coordinate[0],coordinate[1],'EPSG:5181'); |
163 | 161 |
|
164 | 162 |
//좌표계 변환 |
165 | 163 |
var changeCoordinate = transform([coordinate[0],coordinate[1]],'EPSG:5181','EPSG:4326'); |
166 |
- console.log("lat 바꿈",changeCoordinate[1]); |
|
167 |
- console.log("lon 바꿈",changeCoordinate[0]); |
|
168 | 164 |
vm.map_lat = changeCoordinate[1]; |
169 | 165 |
vm.map_lon = changeCoordinate[0]; |
170 | 166 |
}, |
... | ... | @@ -184,7 +180,7 @@ |
184 | 180 |
vm.$refs.open_layers.removeLayer('testMap'); |
185 | 181 |
vm.$refs.open_layers.removeLayer('point1'); |
186 | 182 |
//동 레이어 그리기 |
187 |
- vm.$refs.open_layers.addVectorLayerByUrl('/common/getDongGeoJson.json','testMap','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.address.dong_dong_cd); |
|
183 |
+ vm.$refs.open_layers.addVectorLayerByUrl('/common/getDongGeoJson.json','testMap','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.address.dong_cd); |
|
188 | 184 |
axios({ |
189 | 185 |
url: '/dong/dongCenter.json', |
190 | 186 |
method: 'post', |
... | ... | @@ -194,8 +190,14 @@ |
194 | 190 |
data: {'dong_cd' : vm.address.dong_cd} |
195 | 191 |
}).then(function (response) { |
196 | 192 |
console.log("searchNode response : ",response.data); |
193 |
+ if(vm.address.guGun_dong_cd === null) { |
|
194 |
+ vm.$refs.open_layers.setZoom(11); |
|
195 |
+ } else if(vm.address.dong_dong_cd === null) { |
|
196 |
+ vm.$refs.open_layers.setZoom(13.5); |
|
197 |
+ } else { |
|
198 |
+ vm.$refs.open_layers.setZoom(16); |
|
199 |
+ } |
|
197 | 200 |
vm.$refs.open_layers.setCenterPosition(response.data.dong_lat,response.data.dong_lon,'EPSG:5181'); |
198 |
- vm.$refs.open_layers.zoomChange(15); |
|
199 | 201 |
vm.dong_nm = response.data.dong_nm; |
200 | 202 |
}).catch(function (error) { |
201 | 203 |
console.log("serchNode error : ", error); |
... | ... | @@ -206,7 +208,7 @@ |
206 | 208 |
//노드 등록 |
207 | 209 |
nodeInsert() { |
208 | 210 |
const vm = this; |
209 |
- vm.node.dong_cd = vm.address.dong_cd; |
|
211 |
+ vm.node.dong_cd = vm.address.dong_dong_cd; |
|
210 | 212 |
|
211 | 213 |
axios({ |
212 | 214 |
url: '/node/nodeInsert.json', |
--- client/views/pages/SystemManagement/NodeManagement.vue
+++ client/views/pages/SystemManagement/NodeManagement.vue
... | ... | @@ -28,7 +28,7 @@ |
28 | 28 |
</colgroup> |
29 | 29 |
<thead> |
30 | 30 |
<tr> |
31 |
- <!-- <th rowspan="2">순번</th> --> |
|
31 |
+ <th rowspan="2">순번</th> |
|
32 | 32 |
<th rowspan="2">ID</th> |
33 | 33 |
<th rowspan="2">읍/면/동</th> |
34 | 34 |
<th rowspan="2">노드명</th> |
... | ... | @@ -43,7 +43,7 @@ |
43 | 43 |
</thead> |
44 | 44 |
<tbody> |
45 | 45 |
<tr v-for="(item, idx) in nodeList" :key="idx" @click="nodeSelectOne(item)"> |
46 |
- <!-- <td data-title="NO">{{ item.id }}</td> --> |
|
46 |
+ <td data-title="NO">{{ item.rownum }}</td> |
|
47 | 47 |
<td data-title="ID">{{ item.node_id }}</td> |
48 | 48 |
<td data-title="행정동명">{{ item.dong_nm }}</td> |
49 | 49 |
<td data-title="노드명">{{ item.node_name }}</td> |
... | ... | @@ -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="nodeInsertPage">신규등록</span> |
|
69 |
+ <button class="btn-2 green-btn" @click="nodeInsertPage">신규등록</button> |
|
70 | 70 |
</div> |
71 | 71 |
<div> |
72 | 72 |
<table> |
... | ... | @@ -93,12 +93,12 @@ |
93 | 93 |
<tr> |
94 | 94 |
<th colspan="2">읍/면/동</th> |
95 | 95 |
<!-- <td><input type="text" v-model="node.node_type"></td> --> |
96 |
- <td><input type="text" v-model="node.dong_nm"></td> |
|
96 |
+ <td>{{ node.dong_nm }}</td> |
|
97 | 97 |
<th>등록자</th> |
98 | 98 |
<td></td> |
99 | 99 |
</tr> |
100 | 100 |
<tr> |
101 |
- <th rowspan="2">좌표 <button type="button" class="btn-2 gray-btn" @click="[map_open = true, openMap()]">좌표수정</button></th> |
|
101 |
+ <th rowspan="2">좌표 <button type="button" class="btn-2 gray-btn" :disabled=" map_disabled === true" @click="[map_open = true, openMap()]">좌표수정</button></th> |
|
102 | 102 |
<th class="second">위도</th> |
103 | 103 |
<td>{{ node.lat }}</td> |
104 | 104 |
<th>수정자</th> |
... | ... | @@ -148,17 +148,6 @@ |
148 | 148 |
</div> |
149 | 149 |
</div> |
150 | 150 |
</div> |
151 |
- <div class="modal-wrap" v-if="modal_insert == true"> |
|
152 |
- <div class="modal-bg"> |
|
153 |
- </div> |
|
154 |
- <div class="modal"> |
|
155 |
- <p>노드를 <span class="txt-point">등록</span>하시겠습니까?</p> |
|
156 |
- <div class="btn-wrap"> |
|
157 |
- <button type="button" class="green-btn" @click="nodeInsert">확인</button> |
|
158 |
- <button type="button" class="gray-btn" @click="modal_insert = false">취소</button> |
|
159 |
- </div> |
|
160 |
- </div> |
|
161 |
- </div> |
|
162 | 151 |
|
163 | 152 |
<div class="modal-wrap" v-if="modal_update == true"> |
164 | 153 |
<div class="modal-bg"> |
... | ... | @@ -192,22 +181,16 @@ |
192 | 181 |
<div class="modal-bg"> |
193 | 182 |
</div> |
194 | 183 |
<div class="modalMap"> |
195 |
- <div class="search"> |
|
196 |
- <h2>교차로 검색</h2> |
|
197 |
- <dongSelectList @setDongCd="setDongCd"></dongSelectList> |
|
198 |
- </div> |
|
199 |
- <button type="button" class="green-btn" @click="searchNode">검색</button> |
|
200 |
- <OpenLayers ref="open_layers"/> |
|
201 |
- <label>위도 : </label> |
|
184 |
+ <h2>좌표 선택</h2> |
|
185 |
+ <label>위도 : </label> |
|
202 | 186 |
<input style="width: 20rem" type="text" v-model="map_lat" disabled/> |
203 | 187 |
<label>경도 : </label> |
204 | 188 |
<input style="width: 20rem" type="text" v-model="map_lon" disabled/> |
205 | 189 |
<label>교차로명 : </label> |
206 | 190 |
<input style="width: 20rem" type="text" v-model="node.node_name" disabled/> |
207 |
- <div class="btn-wrap"> |
|
208 |
- <button type="button" class="green-btn" @click="selectCoordinate">선택</button> |
|
191 |
+ <button type="button" class="green-btn" @click="selectCoordinate">선택</button> |
|
209 | 192 |
<button type="button" class="gray-btn" @click="closeMap">취소</button> |
210 |
- </div> |
|
193 |
+ <OpenLayers ref="open_layers"/> |
|
211 | 194 |
</div> |
212 | 195 |
</div> |
213 | 196 |
</template> |
... | ... | @@ -245,7 +228,7 @@ |
245 | 228 |
lat: null, |
246 | 229 |
lon: null, |
247 | 230 |
// updatedate: null, |
248 |
- dong_cd: '22030', |
|
231 |
+ dong_cd: null, |
|
249 | 232 |
dong_nm: null |
250 | 233 |
}, |
251 | 234 |
|
... | ... | @@ -254,13 +237,11 @@ |
254 | 237 |
nodeList: [], |
255 | 238 |
|
256 | 239 |
//modal |
257 |
- modal_insert: false, |
|
258 | 240 |
modal_update: false, |
259 | 241 |
modal_delete: false, |
260 | 242 |
|
261 |
- id_disabled: false, |
|
262 |
- |
|
263 |
- //좌표 modal |
|
243 |
+ //좌표 modal |
|
244 |
+ map_disabled: true, |
|
264 | 245 |
map_open: false, |
265 | 246 |
map_lat: null, |
266 | 247 |
map_lon: null, |
... | ... | @@ -283,17 +264,15 @@ |
283 | 264 |
|
284 | 265 |
//행정동 레이어 |
285 | 266 |
//this.$refs.open_layers.addVectorLayerByUrl('/testDongGeoJson.json','testMap','EPSG:4326', baseStyles['labelStyle'],'label'); |
286 |
- vm.$refs.open_layers.addVectorLayerByUrl('/common/getDongGeoJson.json','testMap','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.node.dong_cd); |
|
287 |
- if(vm.map_lat != null) { |
|
288 |
- //노드위치로 이동 |
|
289 |
- vm.$refs.open_layers.removeLayer('point1'); |
|
290 |
- vm.$refs.open_layers.setCenterPosition(vm.node.lat,vm.node.lon,'EPSG:4326'); |
|
291 |
- vm.$refs.open_layers.createIcon(vm.node.lat,vm.node.lon,'/client/resources/images/icon/fin.png',0.3, 'point1','EPSG:4326'); |
|
292 |
- } else { |
|
293 |
- vm.$refs.open_layers.setCenterPosition(265352.91811139905,340098.7926937433,'EPSG:5181'); |
|
294 |
- vm.$refs.open_layers.zoomChange(14.5); |
|
295 |
- }; |
|
267 |
+ vm.$refs.open_layers.addVectorLayerByUrl('/node/getNodeGeoJson.json','nodeMap','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.node.dong_cd); |
|
268 |
+ |
|
269 |
+ //노드위치로 이동 |
|
270 |
+ vm.$refs.open_layers.removeLayer('point1'); |
|
271 |
+ vm.$refs.open_layers.setCenterPosition(vm.node.lat,vm.node.lon,'EPSG:4326'); |
|
272 |
+ vm.$refs.open_layers.createIcon(vm.node.lat,vm.node.lon,'/client/resources/images/icon/fin.png',0.3, 'point1','EPSG:4326'); |
|
273 |
+ vm.$refs.open_layers.setZoom(19); |
|
296 | 274 |
}, |
275 |
+ |
|
297 | 276 |
|
298 | 277 |
closeMap() { |
299 | 278 |
const vm = this; |
... | ... | @@ -308,18 +287,16 @@ |
308 | 287 |
console.log("coordinate",coordinate); |
309 | 288 |
|
310 | 289 |
// 레이어 삭제 |
311 |
- vm.$refs.open_layers.removeLayer('point1'); |
|
290 |
+ vm.$refs.open_layers.removeLayer('nodePoint'); |
|
312 | 291 |
|
313 | 292 |
// Icon 그리기 |
314 |
- vm.$refs.open_layers.createIcon(coordinate[1],coordinate[0],'/client/resources/images/icon/fin.png',0.3, 'point1','EPSG:5181'); |
|
293 |
+ vm.$refs.open_layers.createIcon(coordinate[1],coordinate[0],'/client/resources/images/icon/fin2.png',0.3, 'nodePoint','EPSG:5181'); |
|
315 | 294 |
|
316 | 295 |
//클릭위치로 이동 |
317 | 296 |
// this.$refs.open_layers.setCenterPosition(coordinate[0],coordinate[1],'EPSG:5181'); |
318 | 297 |
|
319 | 298 |
//좌표계 변환 |
320 | 299 |
var changeCoordinate = transform([coordinate[0],coordinate[1]],'EPSG:5181','EPSG:4326'); |
321 |
- console.log("lat 바꿈",changeCoordinate[1]); |
|
322 |
- console.log("lon 바꿈",changeCoordinate[0]); |
|
323 | 300 |
vm.map_lat = changeCoordinate[1]; |
324 | 301 |
vm.map_lon = changeCoordinate[0]; |
325 | 302 |
}, |
... | ... | @@ -336,10 +313,10 @@ |
336 | 313 |
searchNode() { |
337 | 314 |
const vm = this; |
338 | 315 |
//기존 레이어 삭제 |
339 |
- vm.$refs.open_layers.removeLayer('testMap'); |
|
340 |
- vm.$refs.open_layers.removeLayer('point1'); |
|
316 |
+ vm.$refs.open_layers.removeLayer('nodeMap'); |
|
317 |
+ vm.$refs.open_layers.removeLayer('nodePoint'); |
|
341 | 318 |
//동 레이어 그리기 |
342 |
- vm.$refs.open_layers.addVectorLayerByUrl('/common/getDongGeoJson.json','testMap','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.address.dong_dong_cd); |
|
319 |
+ vm.$refs.open_layers.addVectorLayerByUrl('/common/getDongGeoJson.json','nodeMap','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.address.dong_dong_cd); |
|
343 | 320 |
axios({ |
344 | 321 |
url: '/node/nodeSelectOne.json', |
345 | 322 |
method: 'post', |
... | ... | @@ -349,7 +326,7 @@ |
349 | 326 |
data: {'node_id' : vm.address.node_id} |
350 | 327 |
}).then(function (response) { |
351 | 328 |
console.log("searchNode response : ",response.data); |
352 |
- vm.$refs.open_layers.createIcon(response.data.lat,response.data.lon,'/client/resources/images/icon/fin.png',0.3, 'point1','EPSG:4326'); |
|
329 |
+ vm.$refs.open_layers.createIcon(response.data.lat,response.data.lon,'/client/resources/images/icon/fin2.png',0.3, 'nodePoint','EPSG:4326'); |
|
353 | 330 |
vm.$refs.open_layers.setCenterPosition(response.data.lat,response.data.lon,'EPSG:4326'); |
354 | 331 |
vm.$refs.open_layers.zoomChange(19); |
355 | 332 |
|
... | ... | @@ -416,6 +393,9 @@ |
416 | 393 |
//노드 수정 |
417 | 394 |
nodeUpdate() { |
418 | 395 |
const vm = this; |
396 |
+ if(vm.address.dong_dong_cd != null) { |
|
397 |
+ vm.node.dong_cd = vm.address.dong_dong_cd |
|
398 |
+ }; |
|
419 | 399 |
axios({ |
420 | 400 |
url: '/node/nodeUpdate.json', |
421 | 401 |
method: 'post', |
... | ... | @@ -436,7 +416,9 @@ |
436 | 416 |
node_type: null, |
437 | 417 |
lat: null, |
438 | 418 |
lon: null, |
439 |
- updatedate: null |
|
419 |
+ // updatedate: null, |
|
420 |
+ dong_cd: null, |
|
421 |
+ dong_nm: null |
|
440 | 422 |
}; |
441 | 423 |
vm.id_disabled = false; |
442 | 424 |
} else { |
... | ... | @@ -473,9 +455,10 @@ |
473 | 455 |
node_type: null, |
474 | 456 |
lat: null, |
475 | 457 |
lon: null, |
476 |
- updatedate: null |
|
458 |
+ // updatedate: null, |
|
459 |
+ dong_cd: null, |
|
460 |
+ dong_nm: null |
|
477 | 461 |
}; |
478 |
- vm.id_disabled = false; |
|
479 | 462 |
} else { |
480 | 463 |
alert("삭제 실패, 관리자에게 문의해주세요."); |
481 | 464 |
vm.modal_delete = false; |
... | ... | @@ -500,7 +483,7 @@ |
500 | 483 |
}).then(function(response) { |
501 | 484 |
console.log("nodeSelectOne - response : ", response.data); |
502 | 485 |
vm.node = response.data; |
503 |
- this.id_disabled = true; |
|
486 |
+ vm.map_disabled = false; |
|
504 | 487 |
}).catch(function(error) { |
505 | 488 |
console.log("nodeSelectOne - error : ", error); |
506 | 489 |
}); |
... | ... | @@ -531,8 +514,6 @@ |
531 | 514 |
mounted() { |
532 | 515 |
console.log("Main4 mounted"); |
533 | 516 |
this.nodeSelectList(); |
534 |
- |
|
535 |
- |
|
536 | 517 |
}, |
537 | 518 |
}; |
538 | 519 |
</script> |
--- client/views/pages/SystemManagement/UserAddForm.vue
+++ client/views/pages/SystemManagement/UserAddForm.vue
... | ... | @@ -45,15 +45,7 @@ |
45 | 45 |
</div> |
46 | 46 |
<div class="flex m-b"> |
47 | 47 |
<span>관리구역 : </span> |
48 |
- <select v-model="searchCip_rvnCode"> |
|
49 |
- <option value="">시/도</option> |
|
50 |
- </select> |
|
51 |
- <select name="" id=""> |
|
52 |
- <option value="">시/군/구</option> |
|
53 |
- </select> |
|
54 |
- <select name="" id=""> |
|
55 |
- <option value="">읍/면/동</option> |
|
56 |
- </select> |
|
48 |
+ <dongSelectList @setDongCd="setDongCd" :nodeHiddenCk="true" :azimuthHiddenCk="true"></dongSelectList> |
|
57 | 49 |
</div> |
58 | 50 |
<div class="flex m-b"> |
59 | 51 |
<span>비고 : </span> |
... | ... | @@ -95,6 +87,7 @@ |
95 | 87 |
<script> |
96 | 88 |
import axios from 'axios'; |
97 | 89 |
import COMMON_UTIL from '../../../resources/js/commonUtil.ts'; |
90 |
+import dongSelectList from '../../component/dongSelectList.vue'; |
|
98 | 91 |
|
99 | 92 |
export default { |
100 | 93 |
data: () => { |
... | ... | @@ -106,6 +99,7 @@ |
106 | 99 |
user_telno: null, |
107 | 100 |
user_eml: null, |
108 | 101 |
user_author: null, |
102 |
+ dong_cd: null, |
|
109 | 103 |
rm: null |
110 | 104 |
}, |
111 | 105 |
passwordCheck: null, |
... | ... | @@ -114,8 +108,10 @@ |
114 | 108 |
email_boolean: true, |
115 | 109 |
idChcek_boolean: false, |
116 | 110 |
telno: null, |
117 |
- modal_insert: false |
|
111 |
+ modal_insert: false, |
|
118 | 112 |
|
113 |
+ //관리구역 행동코드 |
|
114 |
+ address: {} |
|
119 | 115 |
}; |
120 | 116 |
}, |
121 | 117 |
methods: { |
... | ... | @@ -215,10 +211,10 @@ |
215 | 211 |
return false; |
216 | 212 |
} |
217 | 213 |
|
218 |
- // if (COMMON_UTIL.isEmpty(this.user.) === false) { |
|
219 |
- // alert('관리구역을 선택해주세요.'); |
|
220 |
- // return false; |
|
221 |
- // } |
|
214 |
+ if (COMMON_UTIL.isEmpty(this.address.dong_dong_cd) === false) { |
|
215 |
+ alert('관리구역을 선택해주세요.'); |
|
216 |
+ return false; |
|
217 |
+ } |
|
222 | 218 |
|
223 | 219 |
if (COMMON_UTIL.isEmpty(this.user.user_author) === false) { |
224 | 220 |
alert('권한을 선택해주세요.'); |
... | ... | @@ -232,7 +228,8 @@ |
232 | 228 |
const vm = this; |
233 | 229 |
//서버 전송 값에는 '-' 를 제외하고 숫자만 저장 |
234 | 230 |
vm.user.user_telno = vm.user.user_telno.replace(/[^0-9]/g, ''); |
235 |
- |
|
231 |
+ vm.user.dong_cd = vm.address.dong_dong_cd; |
|
232 |
+ console.log("vm.user.dong_cd : ",vm.user.dong_cd) |
|
236 | 233 |
axios({ |
237 | 234 |
url: '/user/userInsert.json', |
238 | 235 |
method: 'post', |
... | ... | @@ -266,9 +263,16 @@ |
266 | 263 |
accessLogPage: function () { |
267 | 264 |
this.$router.push({ path: '/AccessRecord.page'}); |
268 | 265 |
}, |
266 |
+ |
|
267 |
+ setDongCd(value) { |
|
268 |
+ this.address = value; |
|
269 |
+ }, |
|
269 | 270 |
}, |
270 | 271 |
watch: {}, |
271 | 272 |
computed: {}, |
273 |
+ components: { |
|
274 |
+ dongSelectList: dongSelectList |
|
275 |
+ }, |
|
272 | 276 |
mounted() { |
273 | 277 |
console.log("Main4 mounted"); |
274 | 278 |
}, |
--- client/views/pages/SystemManagement/UserManagement.vue
+++ client/views/pages/SystemManagement/UserManagement.vue
... | ... | @@ -73,7 +73,7 @@ |
73 | 73 |
<td data-title="이름">{{ item.user_nm }}</td> |
74 | 74 |
<td data-title="권한">{{ item.user_author }}</td> |
75 | 75 |
<td data-title="전화번호">{{ HyphenMinus(item.user_telno) }}</td> |
76 |
- <td data-titel="관리구역">{{ item.dong_korn_nm }}</td> |
|
76 |
+ <td data-titel="관리구역">{{ item.dong_nm }}</td> |
|
77 | 77 |
<td data-titel="등록일자">{{ yyyymmdd(item.reg_dt) }}</td> |
78 | 78 |
<td data-totel="비고">{{ item.rm }}</td> |
79 | 79 |
</tr> |
... | ... | @@ -113,7 +113,7 @@ |
113 | 113 |
</tr> |
114 | 114 |
<tr> |
115 | 115 |
<th>관리구역</th> |
116 |
- <td data-titel="관리구역">{{ item.dong_korn_nm }}</td> |
|
116 |
+ <td data-titel="관리구역">{{ item.dong_nm }}</td> |
|
117 | 117 |
</tr> |
118 | 118 |
<tr> |
119 | 119 |
<th>등록일자</th> |
--- client/views/pages/SystemManagement/UserModifyForm.vue
+++ client/views/pages/SystemManagement/UserModifyForm.vue
... | ... | @@ -44,15 +44,7 @@ |
44 | 44 |
</div> |
45 | 45 |
<div class="flex m-b"> |
46 | 46 |
<span>관리구역 : </span> |
47 |
- <select name="" id=""> |
|
48 |
- <option value="">시/도</option> |
|
49 |
- </select> |
|
50 |
- <select name="" id=""> |
|
51 |
- <option value="">시/군/구</option> |
|
52 |
- </select> |
|
53 |
- <select name="" id=""> |
|
54 |
- <option value="">읍/면/동</option> |
|
55 |
- </select> |
|
47 |
+ <dongSelectList @setDongCd="setDongCd" :nodeHiddenCk="true" :azimuthHiddenCk="true"></dongSelectList> |
|
56 | 48 |
</div> |
57 | 49 |
<div class="flex m-b"> |
58 | 50 |
<span>비고 : </span> |
... | ... | @@ -112,6 +104,7 @@ |
112 | 104 |
import axios from 'axios'; |
113 | 105 |
import COMMON_UTIL from '../../../resources/js/commonUtil.ts'; |
114 | 106 |
import { useRoute } from 'vue-router'; |
107 |
+import dongSelectList from '../../component/dongSelectList.vue'; |
|
115 | 108 |
|
116 | 109 |
export default { |
117 | 110 |
data: () => { |
... | ... | @@ -297,6 +290,9 @@ |
297 | 290 |
}, |
298 | 291 |
watch: {}, |
299 | 292 |
computed: {}, |
293 |
+ components: { |
|
294 |
+ dongSelectList: dongSelectList |
|
295 |
+ }, |
|
300 | 296 |
mounted() { |
301 | 297 |
console.log("Main4 mounted"); |
302 | 298 |
this.userSelectOne(); |
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?