jichoi / calendar star
박정하 박정하 07-22
250722 박정하 레이아웃 수정
@3da4041e8a814657ec0b2956ae2fe37fac70ad5d
client/views/layout/Header.vue
--- client/views/layout/Header.vue
+++ client/views/layout/Header.vue
@@ -31,7 +31,7 @@
             this.$store.commit('setStoreReset');
 
             localStorage.removeItem('isLoggedIn');
-            this.$router.push('/login.page'); 
+            this.$router.push('/login.page');
             } catch (error) {
                 console.error("로그아웃 중 오류 발생:", error);
                 alert("로그아웃에 실패했습니다. 다시 시도해주세요.");
 
client/views/layout/LeftNavBar.vue (added)
+++ client/views/layout/LeftNavBar.vue
@@ -0,0 +1,253 @@
+<template>
+  <div class="side-content sidemenu">
+    <div class="myinfo simple">
+      <!-- 사용자 정보 -->
+      <div class="name-box">
+        <div class="img-area">
+          <div>
+            <img src="/client/resources/img/photo_icon.png" alt="">
+            <p class="name">OOO과장</p>
+          </div>
+          <div class="info">
+            <p>솔루션 개발팀</p>
+            <i class="fa-bars"></i>
+            <p>팀장</p>
+          </div>
+        </div>
+      </div>
+      <template v-for="section in visibleMenuSections" :key="section.key">
+        <!-- 일반 드롭다운 메뉴 -->
+        <details v-for="menu in section.menus" :key="menu.name" class="menu-box" :open="isMenuOpen(menu.name)">
+          <summary @click.prevent="toggleMenu(menu.name)">
+            <p>{{ menu.title }}</p>
+            <div class="icon">
+              <img src="/client/resources/img/topmenuicon.png" alt="">
+            </div>
+          </summary>
+          <ul>
+            <li v-for="item in menu.items" :key="item.name">
+              <router-link :to="{ name: item.name }" exact-active-class="active-link" v-slot="{ isExactActive }">
+                <p>{{ item.title }}</p>
+                <div class="icon" v-if="isExactActive">
+                  <img src="/client/resources/img/menuicon.png" alt="">
+                </div>
+              </router-link>
+            </li>
+          </ul>
+        </details>
+        <!-- 시스템 관리 -->
+        <ul v-if="section.key === 'system'" class="menu-box danil">
+          <router-link v-for="item in section.items" :key="item.name" :to="{ name: item.name }" exact-active-class="active-link">
+            <li>
+              <p>{{ item.title }}</p>
+              <div class="icon">
+                <img src="/client/resources/img/menuicon.png" alt="">
+              </div>
+            </li>
+          </router-link>
+        </ul>
+      </template>
+    </div>
+  </div>
+</template>
+<script>
+// 메뉴 구성 데이터 (외부로 분리 가능)
+const MENU_CONFIG = {
+  approval: {
+    path: '/approval-management',
+    menus: [{
+      name: 'approval',
+      title: '결재',
+      items: [
+        { name: 'approvalRequest', title: '결재 요청' },
+        { name: 'approvalList', title: '승인 대기 목록' }
+      ]
+    }]
+  },
+  attendance: {
+    path: '/attendance-management',
+    menus: [
+      {
+        name: 'attendance',
+        title: '근태현황',
+        items: [
+          { name: 'myAttendance', title: '나의 근태현황' },
+          { name: 'buseoAttendance', title: '부서별 근태현황' }
+        ]
+      },
+      {
+        name: 'hyuga',
+        title: '휴가',
+        items: [
+          { name: 'hyugaStatue', title: '휴가 현황' },
+          { name: 'hyugaInsert', title: '휴가 신청' }
+        ]
+      },
+      {
+        name: 'chuljang',
+        title: '출장',
+        items: [
+          { name: 'ChuljangStatue', title: '출장 현황' },
+          { name: 'ChuljangInsert', title: '출장 신청' }
+        ]
+      }
+    ]
+  },
+  task: {
+    path: '/task-management',
+    menus: [{
+      name: 'project',
+      title: '프로젝트',
+      items: [
+        { name: 'projectStatue', title: '프로젝트 현황' },
+        { name: 'projectInsert', title: '프로젝트 등록' },
+        { name: 'projectTuib', title: '투입현황' }
+      ]
+    }]
+  },
+  financial: {
+    path: '/financial-management',
+    menus: [
+      {
+        name: 'salary',
+        title: '급여관리',
+        items: [
+          { name: 'salaryList', title: '급여명세서' },
+          { name: 'employeeSalaryList', title: '직원별 급여명세서' },
+          { name: 'employeeSalaryInsert', title: '급여명세서 등록' }
+        ]
+      },
+      {
+        name: 'expense',
+        title: '지출관리',
+        items: [
+          { name: 'ChuljangCostList', title: '출장비 현황' },
+          { name: '', title: '출장비 설정' },
+          { name: 'MeetingCostList', title: '회의비 지출현황' }
+        ]
+      }
+    ]
+  },
+  asset: {
+    path: '/asset-management',
+    menus: [
+      {
+        name: 'vhcle',
+        title: '법인차량',
+        items: [
+          { name: 'VhcleList', title: '사용현황' },
+          { name: 'VhcleInfoManagement', title: '차량정보 관리' }
+        ]
+      },
+      {
+        name: 'card',
+        title: '법인카드',
+        items: [
+          { name: 'CardList', title: '사용현황' },
+          { name: 'CardInfoManagement', title: '카드정보 관리' }
+        ]
+      }
+    ]
+  },
+  hr: {
+    path: '/hr-management',
+    menus: [
+      {
+        name: 'hr',
+        title: '직원',
+        items: [
+          { name: 'hrSearch', title: '직원검색' },
+          { name: 'hrManagement', title: '직원관리' }
+        ]
+      },
+      {
+        name: 'dept',
+        title: '부서',
+        items: [
+          { name: 'buseoManagement', title: '부서관리' }
+        ]
+      }
+    ]
+  },
+  system: {
+    path: '/system-management',
+    items: [
+      { name: 'userManagement', title: '사용자권한관리' },
+      { name: 'accessControlManagement', title: '접근제어관리' },
+      { name: 'commonCodeManagement', title: '공통코드관리' }
+    ]
+  }
+}
+
+export default {
+  name: 'SideMenu',
+
+  data: () => ({
+    openMenus: new Set()
+  }),
+
+  computed: {
+    currentPath() {
+      return this.$route.path.toLowerCase()
+    },
+
+    currentRouteName() {
+      return this.$route.name?.toLowerCase() || ''
+    },
+
+    // 현재 페이지에 맞는 메뉴 섹션만 반환
+    visibleMenuSections() {
+      return Object.entries(MENU_CONFIG)
+        .filter(([_, config]) => this.currentPath.includes(config.path))
+        .map(([key, config]) => ({ key, ...config }))
+    }
+  },
+
+  methods: {
+    isMenuOpen(menuName) {
+      return this.openMenus.has(menuName) || this.isCurrentMenuActive(menuName)
+    },
+
+    isCurrentMenuActive(menuName) {
+      const routeChecks = {
+        approval: () => this.currentRouteName.includes('approval'),
+        attendance: () => ['attendance', 'myattendance', 'buseoattendance'].some(name =>
+          this.currentRouteName.includes(name)),
+        hyuga: () => this.currentRouteName.includes('hyuga'),
+        chuljang: () => this.currentRouteName.includes('chuljang'),
+        project: () => this.currentRouteName.includes('project'),
+        salary: () => this.currentRouteName.includes('salary'),
+        expense: () => ['cost', 'meeting'].some(name => this.currentRouteName.includes(name)),
+        vhcle: () => this.currentRouteName.includes('vhcle'),
+        card: () => this.currentRouteName.includes('card'),
+        hr: () => this.currentRouteName.includes('hr'),
+        dept: () => this.currentRouteName.includes('buseo')
+      }
+
+      return routeChecks[menuName]?.() || false
+    },
+
+    toggleMenu(menuName) {
+      if (this.openMenus.has(menuName)) {
+        this.openMenus.delete(menuName)
+      } else {
+        this.openMenus.clear()
+        this.openMenus.add(menuName)
+      }
+    },
+
+    updateMenuState() {
+      this.openMenus.clear()
+      const activeMenus = Object.keys(MENU_CONFIG).filter(menuName => this.isCurrentMenuActive(menuName))
+      activeMenus.forEach(menu => this.openMenus.add(menu))
+    }
+  },
+
+  watch: {
+    $route: {
+      handler: 'updateMenuState',
+      immediate: true
+    }
+  }
+}
+</script>(파일 끝에 줄바꿈 문자 없음)
client/views/layout/Menu.vue
--- client/views/layout/Menu.vue
+++ client/views/layout/Menu.vue
@@ -1,78 +1,59 @@
 <template>
-    <ul class="menu">
-      <li class="nav-item">
-        <router-link to="/approval-management.page" class="nav-link " active-class="active">
-          <span>결재관리</span></router-link>
-      </li><!-- End Dashboard Nav -->
-      <i class="fa-solid fa-bars"></i>
-
-      <li class="nav-item">
-        <router-link to="/attendance-management.page" class="nav-link " active-class="active">
-          <span>근태관리</span></router-link>
-      </li>
-      <i class="fas fa-bars"></i>
-      <li class="nav-item">
-        <router-link to="/task-management.page" class="nav-link " active-class="active">
-          <span>업무관리</span></router-link>
-      </li>
-      <i class="fas fa-bars"></i>
-      <li class="nav-item">
-        <router-link to="/financial-management.page" class="nav-link " active-class="active">
-          <span>재무관리</span></router-link>
-      </li>
-      <i class="fas fa-bars"></i>
-      <li class="nav-item">
-        <router-link to="/asset-management.page" class="nav-link " active-class="active">
-          <span>자산관리</span></router-link>
-      </li><!-- End Register Page Nav -->
-      <i class="fas fa-bars"></i>
-      <li class="nav-item">
-        <router-link to="/hr-management.page" class="nav-link " active-class="active">
-          <span>인사관리</span></router-link>
-      </li><!-- End Login Page Nav -->
-      <i class="fas fa-bars"></i>
-      <li class="nav-item">
-        <router-link to="/system-management.page" class="nav-link " active-class="active">
-          <span>시스템관리</span></router-link>
-      </li>
-
-
-    </ul><!-- End Profile Dropdown Items -->
-
+  <ul class="menu">
+    <li class="nav-item">
+      <router-link to="/approval-management" class="nav-link " active-class="active"><span>결재관리</span></router-link>
+    </li>
+    <i class="fa-solid fa-bars"></i>
+    <li class="nav-item">
+      <router-link to="/attendance-management" class="nav-link " active-class="active"><span>근태관리</span></router-link>
+    </li>
+    <i class="fas fa-bars"></i>
+    <li class="nav-item">
+      <router-link to="/task-management" class="nav-link " active-class="active"><span>업무관리</span></router-link>
+    </li>
+    <i class="fas fa-bars"></i>
+    <li class="nav-item">
+      <router-link to="/financial-management" class="nav-link " active-class="active"><span>재무관리</span></router-link>
+    </li>
+    <i class="fas fa-bars"></i>
+    <li class="nav-item">
+      <router-link to="/asset-management" class="nav-link " active-class="active"><span>자산관리</span></router-link>
+    </li>
+    <i class="fas fa-bars"></i>
+    <li class="nav-item">
+      <router-link to="/hr-management" class="nav-link " active-class="active"><span>인사관리</span></router-link>
+    </li>
+    <i class="fas fa-bars"></i>
+    <li class="nav-item">
+      <router-link to="/system-management" class="nav-link " active-class="active"><span>시스템관리</span></router-link>
+    </li>
+  </ul>
 </template>
-
 <script>
 export default {
   name: "ProfileImage",
   data() {
     return {
+      logo: "/client/resources/img/logo.png",
       isLoggedIn: false,
       userName: '',
-      logo: "/client/resources/img/logo.png",
     };
   },
   methods: {
     handleLogout() {
-      // Clear login-related data from localStorage
       localStorage.removeItem('loggedInUser');
-      this.isLoggedIn = false; // Update login status
-      this.$router.push("/login"); // Redirect to login page after logout
+      this.isLoggedIn = false;
+      this.$router.push("/login");
     },
     toggleSidebar() {
-      // `toggle-sidebar` 클래스가 있으면 제거, 없으면 추가
       document.body.classList.toggle("toggle-sidebar");
     },
   },
   created() {
-    // Check if there is any login data in localStorage
     const loggedInUser = localStorage.getItem('loggedInUser');
     if (loggedInUser) {
       this.isLoggedIn = true;
     }
   },
-  components: {
-  },
 };
-</script>
-
-<style></style>
(파일 끝에 줄바꿈 문자 없음)
+</script>
(파일 끝에 줄바꿈 문자 없음)
 
client/views/pages/AboutView.vue (deleted)
--- client/views/pages/AboutView.vue
@@ -1,15 +0,0 @@
-<template>
-  <div class="about">
-    <h2>This is an about page</h2>
-  </div>
-</template>
-
-<style>
-@media (min-width: 1024px) {
-  .about {
-    min-height: 100vh;
-    display: flex;
-    align-items: center;
-  }
-}
-</style>
client/views/pages/App.vue
--- client/views/pages/App.vue
+++ client/views/pages/App.vue
@@ -1,42 +1,38 @@
 <template>
-     <div v-if="isLoginPage" class="login">
-     <!-- 로그인 페이지에는 헤더 없음 -->
-     <router-view />
-   </div>
-   <div v-else class="container">
-      <Header />
-      
-     <main class="main-wrap">
-       <router-view />
-     </main>
-   </div>
-   
+  <div v-if="isLoginPage" class="login">
+    <router-view />
+  </div>
+  <div v-else class="container">
+    <Header />
+    <main class="main-wrap">
+      <template v-if="!isMainPage">
+        <LeftNavBar />
+        <div class="content">
+          <router-view />
+        </div>
+      </template>
+      <template v-else>
+        <router-view />
+      </template>
+    </main>
+  </div>
 </template>
-
 <script>
 import Header from '../layout/Header.vue';
-
 import Footer from '../layout/Footer.vue';
+import LeftNavBar from '../layout/LeftNavBar.vue';
 
 const App = {
-   data: () => {
-      return {}
-   },
-   methods: {},
-   watch: {},
-   computed: {
-     isLoginPage() {
-       return this.$route.path === '/login.page';
-     },
-   },
-   components: {
-      'Header': Header,
-      
-      'Footer': Footer,
-   },
-   mounted: () => {}
+  components: { Header, Footer, LeftNavBar },
+  computed: {
+    isMainPage() {
+      return this.$route.path === '/';
+    },
+    isLoginPage() {
+      return this.$route.path === '/login.page';
+    },
+  },
 }
 
 export default App;
 </script>
-
client/views/pages/AppRouter.js
--- client/views/pages/AppRouter.js
+++ client/views/pages/AppRouter.js
@@ -5,12 +5,12 @@
 import Join from '../pages/User/Join.vue';
 import MyPage from '../pages/User/MyPage.vue';
 
-// 직원
+// 미확인 파일
 import ChuljangList from '../pages/Employee/ChuljangList.vue';
 import HyugaList from '../pages/Employee/HyugaList.vue';
 import HyugaOk from '../pages/Employee/HyugaOk.vue';
+
 // 결재관리
-import approval from '../pages/Manager/approval/approval.vue';
 import approvalList from '../pages/Manager/approval/approvalList.vue';
 import approvalRequest from '../pages/Manager/approval/approvalRequest.vue';
 import ChuljangPumui from '../pages/Manager/approval/ChuljangPumui.vue';
@@ -24,14 +24,13 @@
 import ChuljangInsert from '../pages/Manager/attendance/ChuljangInsert.vue';
 import myAttendance from '../pages/Manager/attendance/myAttendance.vue';
 import buseoAttendance from '../pages/Manager/attendance/buseoAttendance.vue';
-import attendance from '../pages/Manager/attendance/attendance.vue';
 import AttendanceDetail from '../pages/Manager/attendance/AttendanceDetail.vue';
 import hyugaStatue from '../pages/Manager/attendance/hyugaStatue.vue';
 import HyugaInsert from '../pages/Manager/attendance/HyugaInsert.vue';
 import HyugaDetail from '../pages/Manager/attendance/HyugaDetail.vue';
 import BokmyeongInsert from '../pages/Manager/attendance/BokmyeongInsert.vue';
+
 //업무관리
-import task from '../pages/Manager/task/task.vue';
 import projectStatue from '../pages/Manager/task/projectStatue.vue';
 import projectDetail from '../pages/Manager/task/projectDetail.vue';
 import meetingInsert from '../pages/Manager/task/meetingInsert.vue';
@@ -39,29 +38,29 @@
 import projectInsert from '../pages/Manager/task/projectInsert.vue';
 import projectTuib from '../pages/Manager/task/projectTuib.vue';
 import projectTuibDetail from '../pages/Manager/task/projectTuibDetail.vue';
+
 //재무관리
-import financial from '../pages/Manager/financial/financial.vue';
 import salaryList from '../pages/Manager/financial/salaryList.vue';
 import employeeSalaryList from '../pages/Manager/financial/employeeSalaryList.vue';
 import employeeSalaryDetail from '../pages/Manager/financial/employeeSalaryDetail.vue';
 import employeeSalaryInsert from '../pages/Manager/financial/employeeSalaryInsert.vue';
 import ChuljangCostList from '../pages/Manager/financial/ChuljangCostList.vue';
 import MeetingCostList from '../pages/Manager/financial/MeetingCostList.vue';
+
 //자산관리
-import asset from '../pages/Manager/asset/asset.vue';
 import VhcleList from '../pages/Manager/asset/VhcleList.vue';
 import CardList from '../pages/Manager/asset/CardList.vue';
 import VhcleInfoManagement from '../pages/Manager/asset/VhcleInfoManagement.vue';
 import CardInfoManagement from '../pages/Manager/asset/CardInfoManagement.vue';
+
 //인사관리
-import hr from '../pages/Manager/hr/hr.vue';
 import hrSearch from '../pages/Manager/hr/hrSearch.vue';
 import hrManagement from '../pages/Manager/hr/hrManagement.vue';
 import hrDetail from '../pages/Manager/hr/hrDetail.vue';
 import hrInsert from '../pages/Manager/hr/hrInsert.vue';
 import buseoManagement from '../pages/Manager/hr/buseoManagement.vue';
+
 //시스템관리
-import system from '../pages/Manager/system/system.vue';
 import userManagement from '../pages/Manager/system/userManagement.vue';
 import accessControlManagement from '../pages/Manager/system/accessControlManagement.vue';
 import commonCodeManagement from '../pages/Manager/system/commonCodeManagement.vue';
@@ -69,39 +68,24 @@
 import commonCodeDetail from '../pages/Manager/system/commonCodeDetail.vue';
 
 const routes = [
-  /* 메인화면 */
   { path: '/', name: '/', component: Main },
   { path: '/login.page', name: 'Login', component: Login },
   { path: '/join.page', name: 'Join', component: Join },
   { path: '/MyPage.page', name: 'MyPage', component: MyPage },
-  { path: '/ChuljangList.page', name: 'ChuljangList', component: ChuljangList },
-  { path: '/HyugaList.page', name: 'HyugaList', component: HyugaList },
-  { path: '/HyugaOk.page', name: 'HyugaOk', component: HyugaOk },
+  // 결재관리
   {
-    path: '/approval-management.page', name: 'approval', component: approval, redirect: '/approval-management.page/approvalRequest.page',
+    path: '/approval-management', name: 'approval', redirect: '/approval-management/approvalRequest.page',
     children: [
-      {
-        path: 'approvalRequest.page', // => /approval-management.page/list
-        name: 'approvalRequest',
-        component: approvalRequest,
-        children: [
-
-        ]
-      },
-      {
-        path: 'approvalList.page', // => /approval-management.page/detail/123
-        name: 'approvalList',
-        component: approvalList,
-        children: [
-        ]
-      },
+      { path: 'approvalRequest.page', name: 'approvalRequest', component: approvalRequest, },
+      { path: 'approvalList.page', name: 'approvalList', component: approvalList, },
       { path: 'ChuljangPumui.page', name: 'ChuljangPumui', component: ChuljangPumui },
       { path: 'ChuljangBokmyeong.page', name: 'ChuljangBokmyeong', component: ChuljangBokmyeong },
       { path: 'Hyuga.page', name: 'Hyuga', component: Hyuga },
     ]
-  }, //결재관리
+  },
+  // 근태관리
   {
-    path: '/attendance-management.page', name: 'attendance', component: attendance, redirect: '/attendance-management.page/myAttendance.page',
+    path: '/attendance-management', name: 'attendance', redirect: '/attendance-management/myAttendance.page',
     children: [
       { path: 'myAttendance.page', name: 'myAttendance', component: myAttendance },
       { path: 'buseoAttendance.page', name: 'buseoAttendance', component: buseoAttendance },
@@ -115,9 +99,10 @@
       { path: 'ChuljangBokmyeongDetail.page', name: 'ChuljangBokmyeongDetail', component: ChuljangBokmyeongDetail },
       { path: 'ChuljangDetailAll.page', name: 'ChuljangDetailAll', component: ChuljangDetailAll },
     ]
-  }, //근태관리
+  },
+  // 업무관리
   {
-    path: '/task-management.page', name: 'task', component: task, redirect: '/task-management.page/projectStatue.page',
+    path: '/task-management', name: 'task', redirect: '/task-management/projectStatue.page',
     children: [
       { path: 'projectStatue.page', name: 'projectStatue', component: projectStatue },
       { path: 'projectDetail.page', name: 'projectDetail', component: projectDetail },
@@ -127,9 +112,10 @@
       { path: 'projectTuib.page', name: 'projectTuib', component: projectTuib },
       { path: 'projectTuibDetail.page', name: 'projectTuibDetail', component: projectTuibDetail },
     ]
-  }, //업무관리
+  },
+  // 재무관리
   {
-    path: '/financial-management.page', name: 'financial', component: financial, redirect: '/financial-management.page/salaryList.page',
+    path: '/financial-management', name: 'financial', redirect: '/financial-management/salaryList.page',
     children: [
       { path: 'salaryList.page', name: 'salaryList', component: salaryList },
       { path: 'employeeSalaryList.page', name: 'employeeSalaryList', component: employeeSalaryList },
@@ -138,9 +124,10 @@
       { path: 'ChuljangCostList.page', name: 'ChuljangCostList', component: ChuljangCostList },
       { path: 'MeetingCostList.page', name: 'MeetingCostList', component: MeetingCostList },
     ]
-  }, //재무관리
+  },
+  // 자산관리
   {
-    path: '/asset-management.page', name: 'asset', component: asset, redirect: '/asset-management.page/VhcleList.page',
+    path: '/asset-management', name: 'asset', redirect: '/asset-management/VhcleList.page',
     children: [
       { path: 'VhcleList.page', name: 'VhcleList', component: VhcleList },
       { path: 'VhcleInfoManagement.page', name: 'VhcleInfoManagement', component: VhcleInfoManagement },
@@ -148,9 +135,10 @@
       { path: 'CardInfoManagement.page', name: 'CardInfoManagement', component: CardInfoManagement },
 
     ]
-  }, //자산관리
+  },
+  // 인사관리
   {
-    path: '/hr-management.page', name: 'hr', component: hr, redirect: '/hr-management.page/hrSearch.page',
+    path: '/hr-management', name: 'hr', redirect: '/hr-management.page/hrSearch.page',
     children: [
       { path: 'hrSearch.page', name: 'hrSearch', component: hrSearch },
       { path: 'hrManagement.page', name: 'hrManagement', component: hrManagement },
@@ -158,9 +146,10 @@
       { path: 'hrInsert.page', name: 'hrInsert', component: hrInsert },
       { path: 'buseoManagement.page', name: 'buseoManagement', component: buseoManagement },
     ]
-  }, //인사관리
+  },
+  // 시스템관리
   {
-    path: '/system-management.page', name: 'system', component: system, redirect: { name: 'userManagement' },
+    path: '/system-management', name: 'system', redirect: { name: 'userManagement' },
     children: [
       { path: 'userManagement.page', name: 'userManagement', component: userManagement },
       { path: 'accessControlManagement.page', name: 'accessControlManagement', component: accessControlManagement },
@@ -168,7 +157,7 @@
       { path: 'commonCodeInsert.page', name: 'commonCodeInsert', component: commonCodeInsert },
       { path: 'commonCodeDetail.page', name: 'commonCodeDetail', component: commonCodeDetail },
     ]
-  },  //시스템관리
+  },
 ];
 
 const AppRouter = createRouter({
@@ -176,21 +165,16 @@
   routes,
 });
 
-// Add navigation guard
 AppRouter.beforeEach((to, from, next) => {
-  // Check login status
   const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true';
-
-  // If not logged in and trying to access any page other than login, redirect to login page
   if (!isLoggedIn && to.path !== '/login.page') {
     next('/login.page');
   }
-  // If logged in and trying to access login page, redirect to main page
   else if (isLoggedIn && to.path === '/login.page') {
     next('/');
   }
   else {
-    next(); // Proceed to requested route
+    next();
   }
 });
 
 
client/views/pages/HomeView.vue (deleted)
--- client/views/pages/HomeView.vue
@@ -1,8 +0,0 @@
-<script setup>
-</script>
-
-<template>
-  <main>
-    홈
-  </main>
-</template>
client/views/pages/Manager/approval/approval.vue
--- client/views/pages/Manager/approval/approval.vue
+++ client/views/pages/Manager/approval/approval.vue
@@ -13,36 +13,35 @@
           </div>
         </div>
       </div>
-
-
       <details class="menu-box" open>
-          <summary><p>결재</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
-          <ul>
-            <li> <router-link :to="{ name: 'approvalRequest' }" exact-active-class="active-link" v-slot="{ isExactActive }">
-                <p>결재 요청</p>
-                <div class="icon" v-if="isExactActive">
-                  <img :src="menuicon" alt="">
-                </div>
-              </router-link></li>
-            <li>
-              <router-link :to="{ name: 'approvalList' }" exact-active-class="active-link" v-slot="{ isExactActive }">
-                <p>승인 대기 목록</p>
-                <div class="icon" v-if="isExactActive">
-                  <img :src="menuicon" alt="">
-                </div>
-              </router-link>
-            </li>
-          </ul>
+        <summary>
+          <p>결재</p>
+          <div class="icon"><img :src="topmenuicon" alt=""></div>
+        </summary>
+        <ul>
+          <li> <router-link :to="{ name: 'approvalRequest' }" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <p>결재 요청</p>
+              <div class="icon" v-if="isExactActive">
+                <img :src="menuicon" alt="">
+              </div>
+            </router-link></li>
+          <li>
+            <router-link :to="{ name: 'approvalList' }" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <p>승인 대기 목록</p>
+              <div class="icon" v-if="isExactActive">
+                <img :src="menuicon" alt="">
+              </div>
+            </router-link>
+          </li>
+        </ul>
       </details>
     </div>
   </div>
   <!-- End Page Title -->
   <div class="content">
     <router-view></router-view>
-
   </div>
 </template>
-
 <script>
 import { ref } from 'vue';
 
@@ -139,5 +138,4 @@
   },
 };
 </script>
-
 <style scoped></style>
Add a comment
List