Stormen123 2023-07-11
20230711 김성훈 노드등록 유효성검사 추가 , 사용자 수정 시 관리구역 표출 추가
@c7c81c4cc077b0eea1b3ca9132a8093f5c717a1c
client/views/component/dongSelectList.vue
--- client/views/component/dongSelectList.vue
+++ client/views/component/dongSelectList.vue
@@ -61,6 +61,9 @@
         dongHiddenCk:Boolean,
         nodeHiddenCk:Boolean,
         crslk_azHiddenCk:Boolean,
+        user_sido_cd: null,
+        user_sigungu_cd: null,
+        user_dong_cd: null
     },
     data() {
         return {
@@ -127,6 +130,27 @@
             this.address.zoomLevel=19;
             this.onEmit();
         },
+        'user_sido_cd': function(newValue, oldValue) {
+            console.log("user_sido_cd newValue : ", newValue);
+            console.log("user_sido_cd oldValue : ", oldValue);
+            this.address.siDo_dong_cd = newValue;
+        },
+        'user_sigungu_cd': function(newValue, oldValue) {
+            console.log("user_sigungu_cd newValue : ", newValue);
+            console.log("user_sigungu_cd oldValue : ", oldValue);
+            if(newValue != undefined) {
+                this.address.guGun_dong_cd = newValue;
+            } else {
+                this.address.guGun_dong_cd = null;
+            }
+        },
+        'user_dong_cd': function(newValue, oldValue) {
+            console.log("user_dong_cd newValue : ", newValue);
+            console.log("user_dong_cd oldValue : ", oldValue);
+            if(newValue != undefined) {
+                this.address.dong_dong_cd = newValue;
+            }
+        },
     },
     methods: {
         //시/도 받아오기
client/views/pages/SystemManagement/NodeAddForm.vue
--- client/views/pages/SystemManagement/NodeAddForm.vue
+++ client/views/pages/SystemManagement/NodeAddForm.vue
@@ -41,7 +41,7 @@
         </table>
       </div>
       <div class="btn-wrap">
-        <button type="button" class="btn-2 green-btn" @click="modal_insert = true">등록</button>
+        <button type="button" class="btn-2 green-btn" @click="nodeInsertCheck">등록</button>
         <button type="button" class="btn-2 gray-btn" @click="nodeSelectListPage">취소</button>
       </div>
     </div>
@@ -65,7 +65,8 @@
     <div class="modalMap">
       <div class="search">
         <h2>교차로 검색</h2>
-        <dongSelectList @setDongCd="setDongCd" :nodeHiddenCk="true" :azimuthHiddenCk="true"></dongSelectList>
+        <dongSelectList @setDongCd="setDongCd" ref="parent" :nodeHiddenCk="true" :crslk_azHiddenCk="true"
+            @siDoGunGuSelectF="siDoGunGuSelectF" @dongSelectF="dongSelectF" @nodeSelectF="nodeSelectF"></dongSelectList>
       </div>
       <button type="button" class="green-btn" @click="searchDong">검색</button>
       <OpenLayers  ref="open_layers"/>
@@ -134,8 +135,31 @@
       
       //행정동 레이어
       //this.$refs.open_layers.addVectorLayerByUrl('/testDongGeoJson.json','testMap','EPSG:4326', baseStyles['labelStyle'],'label');    
-      vm.$refs.open_layers.addVectorLayerByUrl('/common/getDongsGeoJson.json','nodeMap','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.node.dong_cd);
+      vm.$refs.open_layers.addVectorLayerByUrl('/common/getDongsGeoJson.json','multPolygonLayer','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.node.dong_cd);
       vm.$refs.open_layers.setZoom(11);
+    },
+
+    //시/도/군/구 Select 선택시 바로 위치 이동
+    siDoGunGuSelectF: function (event) {
+      //기존 layer 지우기
+      this.$refs.open_layers.removeLayerAll();
+      //기본 지도 layer 그리기 + 해당 위치로 이동
+      this.$refs.open_layers.setBaseMap(vworldBaseLayer,event.target.value);
+      this.$refs.open_layers.setZoom(this.address.zoomLevel);
+      //polygon 그리기
+      this.$refs.open_layers.addVectorLayerByUrl('/common/getDongsGeoJson.json', 'multPolygonLayer', 'EPSG:5181', baseStyles['MultiPolygon'], 'MultiPolygon', this.address.dong_cd);
+
+    },
+
+    //행정동 Select 선택시 바로 위치 이동
+    dongSelectF: function (event) {
+      //기존 layer 지우기
+      this.$refs.open_layers.removeLayerAll();
+      //기본 지도 layer 그리기 + 해당 위치로 이동
+      this.$refs.open_layers.setBaseMap(vworldBaseLayer,event.target.value);
+      this.$refs.open_layers.setZoom(this.address.zoomLevel);
+      //polygon 그리기
+      this.$refs.open_layers.addVectorLayerByUrl('/common/getDongGeoJson.json', 'multPolygonLayer', 'EPSG:5181', baseStyles['MultiPolygon'], 'MultiPolygon', this.address.dong_cd);
     },
 
     closeMap() {
@@ -200,6 +224,7 @@
         }
         vm.$refs.open_layers.setCenterPosition(response.data.dong_lat,response.data.dong_lon,'EPSG:5181');
         vm.dong_nm = response.data.dong_nm;
+        console.log("vm.dong_nm  :  ", vm.dong_nm);
       }).catch(function (error) {
         console.log("serchNode error : ", error);
         alert("검색에 실패 하였습니다. 관리자에게 문의하세요.");
@@ -236,6 +261,19 @@
       })
     },
 
+    //등록 유효성 검사
+    nodeInsertCheck: function() {
+      if (COMMON_UTIL.isEmpty(this.node.node_id) === false) {
+        alert('노드ID를 입력해주세요.');
+        return false;
+      }
+
+      if (COMMON_UTIL.isEmpty(this.node.node_name) === false) {
+        alert("노드명을 입력해주세요.")
+        return false;
+      }
+    },  
+
     //dongSelectList 컴포넌트에서 선택된 dong_cd 셋팅
     setDongCd(value) {
       this.address = value;
client/views/pages/SystemManagement/NodeManagement.vue
--- client/views/pages/SystemManagement/NodeManagement.vue
+++ client/views/pages/SystemManagement/NodeManagement.vue
@@ -44,7 +44,9 @@
             <tr v-for="(item, idx) in nodeList" :key="idx" @click="nodeSelectOne(item)">
               <td data-title="NO">{{ nodeIdx - idx }}</td>
               <td data-title="ID">{{ item.node_id }}</td>
-              <td data-title="노드위치">{{ item.sido_nm + " " + item.sigungu_nm + " " + item.dong_nm }}</td>
+              <td v-if="item.sigungu_nm === null " data-titel="노드위치">{{ item.sido_nm }}</td>
+              <td v-else-if="item.dong_nm === null " data-titel="노드위치">{{ item.sido_nm + ' ' + item.sigungu_nm }}</td>
+              <td v-else data-titel="노드위치">{{ item.sido_nm + ' ' + item.sigungu_nm + ' ' + item.dong_nm}}</td>
               <td data-title="노드명">{{ item.node_name }}</td>
               <td data-title="위도">{{ item.lat }}</td>
               <td data-title="경도">{{ item.lon }}</td>
@@ -262,10 +264,6 @@
       //기본맵 세팅
       vm.$refs.open_layers.setBaseMap(vworldBaseLayer);
       
-      //행정동 레이어
-      //this.$refs.open_layers.addVectorLayerByUrl('/testDongGeoJson.json','testMap','EPSG:4326', baseStyles['labelStyle'],'label');    
-      vm.$refs.open_layers.addVectorLayerByUrl('/node/getNodeGeoJson.json','nodeMap','EPSG:5181', baseStyles['MultiPolygon'],'MultiPolygon',vm.node.dong_cd);
-
       //노드위치로 이동
       vm.$refs.open_layers.removeLayer('nodePoint');
       vm.$refs.open_layers.setCenterPosition(vm.node.lat,vm.node.lon,'EPSG:4326');
client/views/pages/SystemManagement/UserAddForm.vue
--- client/views/pages/SystemManagement/UserAddForm.vue
+++ client/views/pages/SystemManagement/UserAddForm.vue
@@ -45,7 +45,7 @@
         </div>
         <div class="flex m-b">
           <span>관리구역 : </span>
-          <dongSelectList @setDongCd="setDongCd" :nodeHiddenCk="true" :azimuthHiddenCk="true"></dongSelectList>
+          <dongSelectList @setDongCd="setDongCd" :nodeHiddenCk="true" :crslk_azHiddenCk="true"></dongSelectList>
         </div>
         <div class="flex m-b">
           <span>비고 : </span>
client/views/pages/SystemManagement/UserManagement.vue
--- client/views/pages/SystemManagement/UserManagement.vue
+++ client/views/pages/SystemManagement/UserManagement.vue
@@ -73,7 +73,9 @@
               <td data-title="이름">{{ item.user_nm }}</td>
               <td data-title="권한">{{ item.user_author }}</td>
               <td data-title="전화번호">{{ HyphenMinus(item.user_telno) }}</td>
-              <td data-titel="관리구역">{{ item.sido_nm + " " + item.sigungu_nm + " " + item.dong_nm }}</td>
+              <td v-if="item.sigungu_nm === null " data-titel="관리구역">{{ item.sido_nm }}</td>
+              <td v-else-if="item.dong_nm === null " data-titel="관리구역">{{ item.sido_nm + ' ' + item.sigungu_nm }}</td>
+              <td v-else data-titel="관리구역">{{ item.sido_nm + ' ' + item.sigungu_nm + ' ' + item.dong_nm}}</td>
               <td data-titel="등록일자">{{ yyyymmdd(item.reg_dt) }}</td>
               <td data-totel="비고">{{ item.rm }}</td>
             </tr>
@@ -113,7 +115,9 @@
             </tr>
             <tr>
               <th>관리구역</th>
-              <td data-titel="관리구역">{{ item.sido_nm + " " + item.sigungu_nm + " " + item.dong_nm }}</td>
+              <td v-if="item.sigungu_nm === null " data-titel="관리구역">{{ item.sido_nm }}</td>
+              <td v-else-if="item.dong_nm === null " data-titel="관리구역">{{ item.sido_nm + ' ' + item.sigungu_nm }}</td>
+              <td v-else data-titel="관리구역">{{ item.sido_nm + ' ' + item.sigungu_nm + ' ' + item.dong_nm}}</td>
             </tr>
             <tr>
               <th>등록일자</th>
client/views/pages/SystemManagement/UserModifyForm.vue
--- client/views/pages/SystemManagement/UserModifyForm.vue
+++ client/views/pages/SystemManagement/UserModifyForm.vue
@@ -44,7 +44,8 @@
         </div>
         <div class="flex m-b">
           <span>관리구역 : </span>
-          <dongSelectList @setDongCd="setDongCd" :nodeHiddenCk="true" :azimuthHiddenCk="true"></dongSelectList>
+          <dongSelectList @setDongCd="setDongCd" :nodeHiddenCk="true" :crslk_azHiddenCk="true" 
+          :user_sido_cd="user.user_sido_cd" :user_sigungu_cd="user.user_sigungu_cd" :user_dong_cd="user.user_dong_cd"></dongSelectList>
         </div>
         <div class="flex m-b">
           <span>비고 : </span>
@@ -117,10 +118,12 @@
         user_eml: null,
         user_author: null,
         rm: null,
-        dong_cd: null
+        user_sido_cd: null,
+        user_sigungu_cd: null,
+        user_dong_cd: null
       },
       route: useRoute(),
-
+      
       passwordCheck: null,
       
       telno_boolean: true,
Add a comment
List