박정하 박정하 03-31
250331 박정하 이슈 내역 수정
@0d2916ede60da23828e13d779136a87beafd5edd
client/views/layout/Header.vue
--- client/views/layout/Header.vue
+++ client/views/layout/Header.vue
@@ -8,19 +8,17 @@
       </div>
       <div class="user-info flex justify-end align-center">
         <div class="user flex align-center">
-          <span class="user-name">{{ store.state.loginUser.user_name }}님</span>
+          <span class="user-name">{{ $store.state.loginUser.user_name }}님</span>
         </div>
         <button class="logout-btn" @click="logout">로그아웃</button>
       </div>
     </div>
   </header>
 </template>
-
 <script>
 import SvgIcon from "@jamescoyle/vue-icon";
 import { mdiEmail, mdiAccountCircle } from "@mdi/js";
 import axios from "axios";
-import store from "../pages/AppStore";
 
 export default {
   props: {
@@ -30,7 +28,6 @@
     return {
       mdiEmail: mdiEmail,
       mdiAccountCircle: mdiAccountCircle,
-      store: store,
     };
   },
   methods: {
@@ -46,7 +43,7 @@
         .then(function (response) {
           vm.$showAlert("메세지", "로그아웃");
           if (response.data.checkMessage.status > 0) {
-            store.commit("setLoginUser", null);
+            this.$store.commit("setLoginUser", null);
             vm.$router.push({ path: "/login.page", query: {} });
           }
         })
client/views/pages/AppStore.js
--- client/views/pages/AppStore.js
+++ client/views/pages/AppStore.js
@@ -19,6 +19,6 @@
     },
     setKey: function (state, newValue) {
       state.key = newValue;
-    }
+    },
   }
 });
(파일 끝에 줄바꿈 문자 없음)
client/views/pages/data/FileManagement.vue
--- client/views/pages/data/FileManagement.vue
+++ client/views/pages/data/FileManagement.vue
@@ -1,13 +1,5 @@
 <template>
-  <div class="container" :style="isLoading ? { cursor: 'wait' } : {}">
-    <div v-if="isLoading" class="loading-overlay">
-      <div class="loading-div">
-        <span>LOADING&nbsp;</span>
-        <span class="anima">.</span>
-        <span class="anima">.</span>
-        <span class="anima">.</span>
-      </div>
-    </div>
+  <div class="container">
     <div class="page-titleZone flex justify-between align-center">
       <p class="main-title flex80">파일 관리</p>
       <PageNavigation />
@@ -23,8 +15,7 @@
 
 export default {
   data() {
-    return {
-    };
+    return {};
   },
   methods: {
   },
client/views/pages/data/filemanger/FileManagementMain.vue
--- client/views/pages/data/filemanger/FileManagementMain.vue
+++ client/views/pages/data/filemanger/FileManagementMain.vue
@@ -1,5 +1,13 @@
 <template>
-  <div class="content-box flex justify-between">
+  <div class="content-box flex justify-between" :style="isLoading ? { cursor: 'wait' } : {}">
+    <div v-if="isLoading" class="loading-overlay">
+      <div class="loading-div">
+        <span>LOADING&nbsp;</span>
+        <span class="anima">.</span>
+        <span class="anima">.</span>
+        <span class="anima">.</span>
+      </div>
+    </div>
     <div class="flex20 content-box">
       <div class="left-content flex100 content-box">
         <div class="content-box">
@@ -11,9 +19,7 @@
               <div>
                 <select class="only full-select" v-model="selectedHostCodeData">
                   <option :value="null" disabled>선택</option>
-                  <option v-for="(host, idx) in hostList" :key="idx" :value="idx">
-                    {{ host.host_nm + " - (" + host.host_ip + ")" }}
-                  </option>
+                  <option v-for="(host, idx) in hostList" :key="idx" :value="idx"> {{ host.host_nm + " - (" + host.host_ip + ")" }} </option>
                 </select>
               </div>
             </div>
@@ -24,16 +30,12 @@
               <div>
                 <select class="only full-select" v-model="selectedDirectory">
                   <option :value="null" disabled>선택</option>
-                  <option v-for="(host, idx) in hostList" :key="idx" :value="idx">
-                    {{ host.dept_drctry_nm }}
-                  </option>
+                  <option v-for="(host, idx) in hostList" :key="idx" :value="idx"> {{ host.dept_drctry_nm }} </option>
                 </select>
               </div>
             </div>
             <div class="mb10 flex25">
-              <button class="blue-btn large-btn" @click="uniquePaths()">
-                연결
-              </button>
+              <button class="blue-btn large-btn" @click="uniquePaths()">연결</button>
             </div>
           </div>
           <div class="file-tree-zone" :style="{
@@ -44,15 +46,11 @@
           }">
             <div class="content-titleZone flex justify-between align-center">
               <p class="box-title">폴더 리스트</p>
-              <button class="blue-border-btn small-btn" v-if="type != 'modal'" @click="openMkdirModal()">
-                폴더추가
-              </button>
+              <button class="blue-border-btn small-btn" v-if="type != 'modal'" @click="openMkdirModal()"> 폴더추가 </button>
             </div>
             <div class="file-zone overflow-y">
               <ul class="tree-wrap">
-                <TreeItem ref="treeItem" :connection="connection" :selectedNode="selectedNode"
-                  v-for="(item, idx) in nodes" :item="item" :idx="item.id" :selectItem="selectItem" :key="idx"
-                  @selectFolder="selectFolder" @isLoading="handleIsLoading" @selectItem="handleSelectItem" />
+                <TreeItem ref="treeItem" :connection="connection" :selectedNode="selectedNode" v-for="(item, idx) in nodes" :item="item" :idx="item.id" :selectItem="selectItem" :key="idx" @selectFolder="selectFolder" @isLoading="handleIsLoading" @selectItem="handleSelectItem" />
               </ul>
             </div>
           </div>
@@ -64,15 +62,9 @@
         <div class="flex-column justify-between">
           <div class="flex justify-between align-center no-gutter mb10">
             <div class="flex40">
-              <button class="blue-border-btn small-btn" v-if="type != 'modal'" @click="openTreeModal('copy')">
-                선택복사
-              </button>
-              <button class="blue-border-btn small-btn" v-if="type != 'modal'" @click="openTreeModal('move')">
-                선택이동
-              </button>
-              <button class="red-border-btn small-btn" v-if="type != 'modal'" @click="remove()">
-                선택삭제
-              </button>
+              <button class="blue-border-btn small-btn" v-if="type != 'modal'" @click="openTreeModal('copy')"> 선택복사 </button>
+              <button class="blue-border-btn small-btn" v-if="type != 'modal'" @click="openTreeModal('move')"> 선택이동 </button>
+              <button class="red-border-btn small-btn" v-if="type != 'modal'" @click="remove()"> 선택삭제 </button>
             </div>
             <div class="flex justify-end flex60">
               <div class="search-bar">
@@ -83,8 +75,7 @@
                   </select>
                   <div class="search-square">
                     <div class="flex justify-end align-center no-gutter">
-                      <input type="text" class="square-input flex90" placeholder="Search File" v-model="searchText"
-                        @keyup.enter="searchFiles()" />
+                      <input type="text" class="square-input flex90" placeholder="Search File" v-model="searchText" @keyup.enter="searchFiles()" />
                       <button class="square-button blue-btn flex10">
                         <svg-icon type="mdi" :path="searchPath" class="square-icon" @click="searchFiles()"></svg-icon>
                       </button>
@@ -95,13 +86,10 @@
             </div>
           </div>
           <div class="count-zone mb10">
-            <p>
-              총
-              <span v-if="search.totalRows != 0">{{ search.totalRows }}</span>
+            <p> 총 <span v-if="search.totalRows != 0">{{ search.totalRows }}</span>
               <span v-else>0</span>건 중 <span>{{ selectedFiles.length }}</span>건 선택
             </p>
-            <p>
-              현재경로 : <span>{{ connection.path }}</span>
+            <p> 현재경로 : <span>{{ connection.path }}</span>
             </p>
           </div>
           <div class="content-zone" style="overflow-y: auto">
@@ -122,7 +110,7 @@
                   <col style="width: 10%" />
                   <col style="width: 15%" />
                 </colgroup>
-                <thead style="position: relative; z-index: 100;">
+                <thead>
                   <tr>
                     <th v-if="type != 'modal'">
                       <input type="checkbox" v-if="type != 'modal'" @click="filesCheckAll" v-model="checkAll" />
@@ -137,13 +125,12 @@
                 <tbody>
                   <tr v-for="(file, index) in fileList" :key="index" @click="selectFileList(file)">
                     <td v-if="type != 'modal'">
-                      <input type="checkbox" v-if="file.text != '상위폴더로 이동'" @click.stop="" v-model="selectedFiles"
-                        :value="{
-                          folder: file.folder,
-                          path: file.path,
-                          fileName: file.text,
-                          extension: file.extension,
-                        }" name="files" />
+                      <input type="checkbox" v-if="file.text != '상위폴더로 이동'" @click.stop="" v-model="selectedFiles" :value="{
+                        folder: file.folder,
+                        path: file.path,
+                        fileName: file.text,
+                        extension: file.extension,
+                      }" name="files" />
                     </td>
                     <td>
                       <div class="text-lf">
@@ -186,9 +173,7 @@
                     </td>
                     <td>{{ file.extension }}</td>
                     <td>{{ file.lastUpdate }}</td>
-                    <td v-if="file.size != 0">
-                      {{ $filters.bytesToSize(file.size) }}
-                    </td>
+                    <td v-if="file.size != 0"> {{ $filters.bytesToSize(file.size) }} </td>
                     <td v-else></td>
                     <td v-if="type != 'modal'">
                       <div v-if="!file.folder">
@@ -216,18 +201,14 @@
             </div>
           </div>
           <div class="flex justify-end">
-            <button class="blue-btn small-btn" v-if="type != 'modal'" @click="setModal('typeSelected', 'small')">
-              업로드
-            </button>
+            <button class="blue-btn small-btn" v-if="type != 'modal'" @click="setModal('typeSelected', 'small')"> 업로드 </button>
           </div>
         </div>
       </div>
     </div>
   </div>
   <!-- 폴더 목록 모달 -->
-  <TreeModal :modalOpen="treeModalOpen" :modalConnection="modalConnection" :modalNodes="modalNodes"
-    :selectType="selectModalType" @modalSelectFolder="modalSelectFolder" @closeTreeModal="closeTreeModal"
-    @modalSubmit="fileConfirm" />
+  <TreeModal :modalOpen="treeModalOpen" :modalConnection="modalConnection" :modalNodes="modalNodes" :selectType="selectModalType" @modalSelectFolder="modalSelectFolder" @closeTreeModal="closeTreeModal" @modalSubmit="fileConfirm" />
   <!-- 데이터셋 미리보기 모달 -->
   <div v-show="previewModalOpen" class="modal-wrapper" :style="isLoading ? { cursor: 'wait' } : {}">
     <div v-if="isLoading" class="loading-overlay">
@@ -250,9 +231,7 @@
         </FileDataRead>
       </div>
       <div class="modal-end flex justify-end">
-        <button class="blue-btn small-btn" @click="previewModalClose()">
-          확인
-        </button>
+        <button class="blue-btn small-btn" @click="previewModalClose()"> 확인 </button>
       </div>
     </div>
   </div>
@@ -286,9 +265,7 @@
         </div>
       </div>
       <div class="modal-end flex justify-between" style="flex-wrap: nowrap">
-        <button class="gray-btn large-btn" @click="closeReNameModal()">
-          취소
-        </button>
+        <button class="gray-btn large-btn" @click="closeReNameModal()"> 취소 </button>
         <button class="blue-btn large-btn" @click="rename()">확인</button>
       </div>
     </div>
@@ -324,9 +301,7 @@
       </div>
       <div class="modal-end flex justify-between" style="flex-wrap: nowrap">
         <button class="blue-btn large-btn" @click="mkdir()">확인</button>
-        <button class="gray-btn large-btn" @click="closeMkdirModal()">
-          취소
-        </button>
+        <button class="gray-btn large-btn" @click="closeMkdirModal()"> 취소 </button>
       </div>
     </div>
   </div>
@@ -345,14 +320,10 @@
       <div class="modal-content-monthly">
         <div class="flex justify-center align-center mb10">
           <div class="flex50 pl0">
-            <button class="blue-border-btn large-btn" @click="selectEncoding('utf-8')">
-              UTF-8
-            </button>
+            <button class="blue-border-btn large-btn" @click="selectEncoding('utf-8')"> UTF-8 </button>
           </div>
           <div class="flex50 pr0">
-            <button class="blue-border-btn large-btn" @click="selectEncoding('euc-kr')">
-              EUC-KR
-            </button>
+            <button class="blue-border-btn large-btn" @click="selectEncoding('euc-kr')"> EUC-KR </button>
           </div>
         </div>
       </div>
@@ -377,26 +348,18 @@
       <div class="modal-content-monthly" v-show="modalType === 'typeSelected'">
         <div class="flex justify-center align-center mb10">
           <div class="flex50 pl0">
-            <button class="blue-border-btn large-btn" @click="setModal('file-modal', 'small')">
-              파일
-            </button>
+            <button class="blue-border-btn large-btn" @click="setModal('file-modal', 'small')"> 파일 </button>
           </div>
           <div class="flex50 pr0">
-            <button class="blue-border-btn large-btn" @click="setModal('db-modal', 'middle')">
-              DB
-            </button>
+            <button class="blue-border-btn large-btn" @click="setModal('db-modal', 'middle')"> DB </button>
           </div>
         </div>
         <div class="flex justify-center align-center">
           <div class="flex50 pl0">
-            <button class="blue-border-btn large-btn" @click="setModal('api-modal', 'middle')">
-              API
-            </button>
+            <button class="blue-border-btn large-btn" @click="setModal('api-modal', 'middle')"> API </button>
           </div>
           <div class="flex50 pr0">
-            <button class="blue-border-btn large-btn" @click="setModal('ehojo-modal', 'middle')">
-              차세대 API
-            </button>
+            <button class="blue-border-btn large-btn" @click="setModal('ehojo-modal', 'middle')"> 차세대 API </button>
           </div>
         </div>
       </div>
@@ -430,27 +393,18 @@
             </table>
             <div class="modal-end flex justify-between" style="flex-wrap: nowrap">
               <button class="blue-btn large-btn" @click="upload()">확인</button>
-              <button class="gray-btn large-btn" @click="closeModal()">
-                취소
-              </button>
+              <button class="gray-btn large-btn" @click="closeModal()"> 취소 </button>
             </div>
           </div>
         </div>
       </template>
       <NodeSetupModalDA v-if="isSetUpOpen" :jobItmType="isSetUpType" @onSave="fnUpdateSetup" @onClose="closeModal" />
       <!-- 차세대 API (ehojo-modal) -->
-      <EhojoConnection v-if="modalType == 'ehojo-modal'" openPopup="true" :jobItem="selectNode"
-        @fnCloseModal="closeModal" @fnSaveSetup="fnUpdateSetup" />
+      <EhojoConnection v-if="modalType == 'ehojo-modal'" openPopup="true" :jobItem="selectNode" @fnCloseModal="closeModal" @fnSaveSetup="fnUpdateSetup" />
       <div class="modal-end flex justify-end" v-show="modalType == 'test-modal'" style="flex-wrap: nowrap">
-        <button class="gray-border-btn small-btn" @click="closeModal">
-          이전
-        </button>
-        <button class="blue-border-btn small-btn" @click="closeModal">
-          확인
-        </button>
-        <button class="darkg-border-btn small-btn" @click="closeModal">
-          닫기
-        </button>
+        <button class="gray-border-btn small-btn" @click="closeModal"> 이전 </button>
+        <button class="blue-border-btn small-btn" @click="closeModal"> 확인 </button>
+        <button class="darkg-border-btn small-btn" @click="closeModal"> 닫기 </button>
       </div>
     </div>
   </div>
@@ -582,7 +536,9 @@
       isUpdating: false, // 무한 루프 방지를 위한 플래그
 
       isSetUpOpen: false,
-      isSetUpType: null
+      isSetUpType: null,
+
+      isLoading: true,
     };
   },
   methods: {
@@ -803,7 +759,6 @@
       }
     },
     uniquePaths() {
-      // this.selectedHost = null;
       this.selectedHost = this.selectedHostData;
       this.selectedHostCode = this.selectedHostData.host_code;
       this.connectionConfirm();
@@ -1519,11 +1474,11 @@
             type: "text/csv;charset=euc-kr",
           });
         } else {
-          
+
         }
 
         if (!blob) {
-          
+
         }
 
         // 파일 이름 설정
client/views/pages/user/myPage.vue
--- client/views/pages/user/myPage.vue
+++ client/views/pages/user/myPage.vue
@@ -59,15 +59,16 @@
       changePwConfirm: null,
     };
   },
+  mounted() {
+    this.getUserData();
+  },
   methods: {
     getUserData: function () {
       var vm = this;
       axios({
         url: "/mypage/" + vm.userId,
         method: "get",
-        headers: {
-          "Content-Type": "application/json; charset=UTF-8",
-        },
+        headers: { "Content-Type": "application/json; charset=UTF-8" },
       })
         .then(function (response) {
           vm.userEditData = response.data.resultData.selectUserData;
@@ -108,6 +109,17 @@
         .put("/mypage", vm.userEditData)
         .then(function (response) {
           vm.$showAlert("내정보 수정", "내정보가 수정되었습니다.");
+
+          console.log("before: ", vm.$store.state.loginUser);
+          let loginUser = vm.$store.state.loginUser;
+          loginUser.user_name = vm.userEditData.userNm;
+          loginUser.user_email = vm.userEditData.userEmail;
+
+          // 변경된 내용 스토어에 반영
+          vm.$store.commit("setLoginUser", loginUser);
+
+          console.log("after: ", vm.$store.state.loginUser);
+
           vm.getUserData();
         })
         .catch(function (error) {
@@ -117,28 +129,6 @@
           );
         });
     },
-    updateUserPassword: function () {
-      var vm = this;
-
-      vm.userEditData.userPassword = vm.changePw;
-      axios
-        .put("/mypage/password", vm.userEditData)
-        .then(function (response) {
-          vm.$showAlert("비밀번호 수정", "비밀번호가 수정되었습니다.");
-          vm.userEditData.userPassword = null;
-          vm.changePw = null;
-          vm.changePwConfirm = null;
-        })
-        .catch(function (error) {
-          this.$showAlert(
-            "에러 발생",
-            "에러가 발생했습니다. 관리자에게 문의해 주세요."
-          );
-        });
-    },
-  },
-  mounted() {
-    this.getUserData();
   },
 };
 </script>
client/views/pages/user/myPagePwd.vue
--- client/views/pages/user/myPagePwd.vue
+++ client/views/pages/user/myPagePwd.vue
@@ -94,13 +94,13 @@
         document.getElementById("changePassword").focus();
         return;
       }
-      if (vm.$isEmpty(vm.changePwConfirm)) {
-        vm.$showAlert("비밀번호 수정", "새 비밀번호 확인을 해주세요.");
+      if (!vm.$pwCheck(vm.changePw)) {
+        vm.$showAlert("비밀번호 수정", "새 비밀번호 형식이 올바르지 않습니다.<br/>영어 대문자와 특수 문자를 최소 1개 이상 사용한, 최소 8자 최대 16자 사이의 암호 사용해주세요.");
+        document.getElementById("changePassword").focus();
         return;
       }
-      if (!vm.$pwCheck(vm.changePw)) {
-        vm.$showAlert("비밀번호 수정", "새 비밀번호 형식이 올바르지 않습니다.");
-        document.getElementById("changePassword").focus();
+      if (vm.$isEmpty(vm.changePwConfirm)) {
+        vm.$showAlert("비밀번호 수정", "새 비밀번호 확인을 해주세요.");
         return;
       }
       if (vm.changePw !== vm.changePwConfirm) {
Add a comment
List