jichoi / calendar star
최정임 최정임 05-16
250516 최정임
@e578091fbfb5a31a16c274f7cc0a974663893a33
client/resources/scss/admin/content.scss
--- client/resources/scss/admin/content.scss
+++ client/resources/scss/admin/content.scss
@@ -529,7 +529,6 @@
 
     .top-content {
         display: flex;
-        justify-content: space-between;
         gap: 40px;
         margin-bottom: 15px;
     }
@@ -538,9 +537,10 @@
         // width: 550px;
 
         .blue-box {
+            width: 550px;
             background-color: #D7DCF1;
             border-radius: 10px;
-            padding: 30px;
+            padding: 32px;
 
             .box {
                 background-color: #fff;
client/views/pages/AppRouter.js
--- client/views/pages/AppRouter.js
+++ client/views/pages/AppRouter.js
@@ -20,6 +20,7 @@
 import approvalRequest from '../pages/Manager/approval/approvalRequest.vue';
 import ChuljangPumui from '../pages/Manager/approval/ChuljangPumui.vue';
 import ChuljangBokmyeong from '../pages/Manager/approval/ChuljangBokmyeong.vue';
+import Hyuga from '../pages/Manager/approval/Hyuga.vue';
 
 //근태관리
 import ChuljangPumuiDetail from '../pages/Manager/attendance/ChuljangPumuiDetail.vue';
@@ -30,11 +31,12 @@
 import buseoAttendance from '../pages/Manager/attendance/buseoAttendance.vue';
 import AttendanceDetail from '../pages/Manager/attendance/AttendanceDetail.vue';
 import hyugaStatue from '../pages/Manager/attendance/hyugaStatue.vue';
-import HyugaInsert from '../pages/Manager/approval/HyugaInsert.vue';
-import HyugaDetail from '../pages/Manager/approval/HyugaDetail.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 ChuljangStatue from '../pages/Manager/attendance/ChuljangStatue.vue';
 import ChuljangInsert from '../pages/Manager/attendance/ChuljangInsert.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';
@@ -43,6 +45,7 @@
 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';
@@ -50,17 +53,20 @@
 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 CarList from '../pages/Manager/asset/CarList.vue';
 import CardList from '../pages/Manager/asset/CardList.vue';
 import CarInfoManagement from '../pages/Manager/asset/CarInfoManagement.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';
@@ -80,10 +86,10 @@
     
     { path: '/HyugaOk.page', name: 'HyugaOk', component: HyugaOk },
     
-    { path: '/approval-management.page', name: 'approval', component: approval,
+    { path: '/approval-management.page', name: 'approval', component: approval, redirect: '/approval-management.page/approvalRequest.page',
         children: [
             {
-              path: '/approvalRequest.page', // => /approval-management.page/list
+              path: 'approvalRequest.page', // => /approval-management.page/list
               name: 'approvalRequest',
               component: approvalRequest,
               children: [
@@ -91,80 +97,83 @@
               ]
             },
             {
-              path: '/approvalList.page', // => /approval-management.page/detail/123
+              path: 'approvalList.page', // => /approval-management.page/detail/123
               name: 'approvalList',
-              component: approvalList
+              component: approvalList,
+              children: [
+              ]
             },
-            { path: '/ChuljangPumui.page', name: 'ChuljangPumui', component: ChuljangPumui },
-            { path: '/ChuljangBokmyeong.page', name: 'ChuljangBokmyeong', component: ChuljangBokmyeong },
+            { 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,
+    { path: '/attendance-management.page', name: 'attendance', component: attendance, redirect: '/attendance-management.page/myAttendance.page',
         children: [
-            { path: '/myAttendance.page', name: 'myAttendance', component: myAttendance },
-            { path: '/buseoAttendance.page', name: 'buseoAttendance', component: buseoAttendance },
-            { path: '/AttendanceDetail.page', name: 'AttendanceDetail', component: AttendanceDetail },
-            { path: '/hyugaStatue.page', name: 'hyugaStatue', component: hyugaStatue },
-            { path: '/HyugaDetail.page', name: 'HyugaDetail', component: HyugaDetail },
-            { path: '/HyugaInsert.page', name: 'HyugaInsert', component: HyugaInsert },
-            { path: '/ChuljangStatue.page', name: 'ChuljangStatue', component: ChuljangStatue },
-            { path: '/BokmyeongInsert.page', name: 'BokmyeongInsert', component: BokmyeongInsert },
-            { path: '/ChuljangInsert.page', name: 'ChuljangInsert', component: ChuljangInsert },
-            { path: '/ChuljangPumuiDetail.page', name: 'ChuljangPumuiDetail', component: ChuljangPumuiDetail },
-            { path: '/ChuljangBokmyeongDetail.page', name: 'ChuljangBokmyeongDetail', component: ChuljangBokmyeongDetail },
-            { path: '/ChuljangDetailAll.page', name: 'ChuljangDetailAll', component: ChuljangDetailAll },
+            { path: 'myAttendance.page', name: 'myAttendance', component: myAttendance },
+            { path: 'buseoAttendance.page', name: 'buseoAttendance', component: buseoAttendance },
+            { path: 'AttendanceDetail.page', name: 'AttendanceDetail', component: AttendanceDetail },
+            { path: 'hyugaStatue.page', name: 'hyugaStatue', component: hyugaStatue },
+            { path: 'HyugaDetail.page', name: 'HyugaDetail', component: HyugaDetail },
+            { path: 'hyugaInsert.page', name: 'hyugaInsert', component: HyugaInsert },
+            { path: 'ChuljangStatue.page', name: 'ChuljangStatue', component: ChuljangStatue },
+            { path: 'BokmyeongInsert.page', name: 'BokmyeongInsert', component: BokmyeongInsert },
+            { path: 'ChuljangInsert.page', name: 'ChuljangInsert', component: ChuljangInsert },
+            { path: 'ChuljangPumuiDetail.page', name: 'ChuljangPumuiDetail', component: ChuljangPumuiDetail },
+            { path: 'ChuljangBokmyeongDetail.page', name: 'ChuljangBokmyeongDetail', component: ChuljangBokmyeongDetail },
+            { path: 'ChuljangDetailAll.page', name: 'ChuljangDetailAll', component: ChuljangDetailAll },
 
         ]
     }, //근태관리
-    { path: '/task-management.page', name: 'task', component: task,
+    { path: '/task-management.page', name: 'task', component: task, redirect: '/task-management.page/projectStatue.page',
         children: [
-            { path: '/projectStatue.page', name: 'projectStatue', component: projectStatue },
-            { path: '/projectDetail.page', name: 'projectDetail', component: projectDetail },
-            { path: '/meetingInsert.page', name: 'meetingInsert', component: meetingInsert },
-            { path: '/meetingDetail.page', name: 'meetingDetail', component: meetingDetail },
-            { path: '/projectInsert.page', name: 'projectInsert', component: projectInsert },
-            { path: '/projectTuib.page', name: 'projectTuib', component: projectTuib },
-            { path: '/projectTuibDetail.page', name: 'projectTuibDetail', component: projectTuibDetail },
+            { path: 'projectStatue.page', name: 'projectStatue', component: projectStatue },
+            { path: 'projectDetail.page', name: 'projectDetail', component: projectDetail },
+            { path: 'meetingInsert.page', name: 'meetingInsert', component: meetingInsert },
+            { path: 'meetingDetail.page', name: 'meetingDetail', component: meetingDetail },
+            { path: 'projectInsert.page', name: 'projectInsert', component: projectInsert },
+            { path: 'projectTuib.page', name: 'projectTuib', component: projectTuib },
+            { path: 'projectTuibDetail.page', name: 'projectTuibDetail', component: projectTuibDetail },
         ]
      }, //업무관리
-    { path: '/financial-management.page', name: 'financial', component: financial,
+    { path: '/financial-management.page', name: 'financial', component: financial, redirect: '/financial-management.page/salaryList.page',
         children: [
-            { path: '/salaryList.page', name: 'salaryList', component: salaryList },
-            { path: '/employeeSalaryList.page', name: 'employeeSalaryList', component: employeeSalaryList },
-            { path: '/employeeSalaryDetail.page', name: 'employeeSalaryDetail', component: employeeSalaryDetail },
-            { path: '/employeeSalaryInsert.page', name: 'employeeSalaryInsert', component: employeeSalaryInsert },
-            { path: '/ChuljangCostList.page', name: 'ChuljangCostList', component: ChuljangCostList },
-            { path: '/MeetingCostList.page', name: 'MeetingCostList', component: MeetingCostList },
+            { path: 'salaryList.page', name: 'salaryList', component: salaryList },
+            { path: 'employeeSalaryList.page', name: 'employeeSalaryList', component: employeeSalaryList },
+            { path: 'employeeSalaryDetail.page', name: 'employeeSalaryDetail', component: employeeSalaryDetail },
+            { path: 'employeeSalaryInsert.page', name: 'employeeSalaryInsert', component: employeeSalaryInsert },
+            { path: 'ChuljangCostList.page', name: 'ChuljangCostList', component: ChuljangCostList },
+            { path: 'MeetingCostList.page', name: 'MeetingCostList', component: MeetingCostList },
         ]
      }, //재무관리
-    { path: '/asset-management.page', name: 'asset', component: asset,
+    { path: '/asset-management.page', name: 'asset', component: asset, redirect: '/asset-management.page/CarList.page',
       children: [
-        { path: '/CarList.page', name: 'CarList', component: CarList },
-        { path: '/CarInfoManagement.page', name: 'CarInfoManagement', component: CarInfoManagement },
-        { path: '/CardList.page', name: 'CardList', component: CardList },
-        { path: '/CardInfoManagement.page', name: 'CardInfoManagement', component: CardInfoManagement },
+        { path: 'CarList.page', name: 'CarList', component: CarList },
+        { path: 'CarInfoManagement.page', name: 'CarInfoManagement', component: CarInfoManagement },
+        { path: 'CardList.page', name: 'CardList', component: CardList },
+        { path: 'CardInfoManagement.page', name: 'CardInfoManagement', component: CardInfoManagement },
         
       ]
      }, //자산관리
-    { path: '/hr-management.page', name: 'hr', component: hr,
+    { path: '/hr-management.page', name: 'hr', component: hr, redirect: '/hr-management.page/hrSearch.page',
       children: [
-        { path: '/hrSearch.page', name: 'hrSearch', component: hrSearch },
-        { path: '/hrManagement.page', name: 'hrManagement', component: hrManagement },
-        { path: '/hrDetail.page', name: 'hrDetail', component: hrDetail },
-        { path: '/hrInsert.page', name: 'hrInsert', component: hrInsert },
-        
-        { path: '/buseoManagement.page', name: 'buseoManagement', component: buseoManagement },
+        { path: 'hrSearch.page', name: 'hrSearch', component: hrSearch },
+        { path: 'hrManagement.page', name: 'hrManagement', component: hrManagement },
+        { path: 'hrDetail.page', name: 'hrDetail', component: hrDetail },
+        { path: 'hrInsert.page', name: 'hrInsert', component: hrInsert },
+        { path: 'buseoManagement.page', name: 'buseoManagement', component: buseoManagement },
       ]
     }, //인사관리
-    { path: '/system-management.page', name: 'system', component: system,
+    { path: '/system-management.page', name: 'system', component: system,  redirect: { name: 'userManagement' },
       children:[
-        { path: '/userManagement.page', name: 'userManagement', component: userManagement },
-        { path: '/accessControlManagement.page', name: 'accessControlManagement', component: accessControlManagement },
-        { path: '/commonCodeManagement.page', name: 'commonCodeManagement', component: commonCodeManagement },
-        { path: '/commonCodeInsert.page', name: 'commonCodeInsert', component: commonCodeInsert },
-        { path: '/commonCodeDetail.page', name: 'commonCodeDetail', component: commonCodeDetail },
+        { path: 'userManagement.page', name: 'userManagement', component: userManagement },
+        { path: 'accessControlManagement.page', name: 'accessControlManagement', component: accessControlManagement },
+        { path: 'commonCodeManagement.page', name: 'commonCodeManagement', component: commonCodeManagement },
+        { path: 'commonCodeInsert.page', name: 'commonCodeInsert', component: commonCodeInsert },
+        { path: 'commonCodeDetail.page', name: 'commonCodeDetail', component: commonCodeDetail },
         
       ]
      },  //시스템관리
client/views/pages/Manager/approval/Hyuga.vue (Renamed from client/views/pages/Manager/approval/HyugaDetail.vue)
--- client/views/pages/Manager/approval/HyugaDetail.vue
+++ client/views/pages/Manager/approval/Hyuga.vue
@@ -67,9 +67,6 @@
             <div class="buttons">
               <button class="btn primary"  type="button">승인</button>
               <button class="btn  btn-red"  type="button" @click="showPopup = true">반려</button>
-              <button class="btn  btn-red"  type="button">신청취소</button>
-                <button class="btn secondary"  type="button">재신청</button>
-                <button class="btn secondary"  type="button">수정</button>
                 <button class="btn tertiary "  type="button">목록</button>
               </div>
               <ReturnPopup v-if="showPopup" @close="showPopup = false"/>
client/views/pages/Manager/approval/approval.vue
--- client/views/pages/Manager/approval/approval.vue
+++ client/views/pages/Manager/approval/approval.vue
@@ -15,17 +15,17 @@
       </div>
 
 
-      <details class="menu-box">
+      <details class="menu-box" open>
           <summary><p>결재</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/approvalRequest.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <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="/approvalList.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <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="">
client/views/pages/Manager/approval/approvalList.vue
--- client/views/pages/Manager/approval/approvalList.vue
+++ client/views/pages/Manager/approval/approvalList.vue
@@ -236,11 +236,11 @@
     goToPage(item) {
     const type = item.type;
     if (type === '연차' || type === '반차') {
-      this.$router.push('/hyugaDetail.page');
+      this.$router.push({name: 'Hyuga'});
     } else if (type === '출장-품의') {
-      this.$router.push('/ChuljangPumui.page');
+      this.$router.push({name: 'ChuljangPumui'});
     } else if (type === '출장-복명') {
-      this.$router.push('/ChuljangBokmyeong.page');
+      this.$router.push({name: 'ChuljangBokmyeong'});
     } else {
       alert('이동할 수 없는 항목입니다.');
     }
client/views/pages/Manager/approval/approvalRequest.vue
--- client/views/pages/Manager/approval/approvalRequest.vue
+++ client/views/pages/Manager/approval/approvalRequest.vue
@@ -184,9 +184,9 @@
     },
     goToPage(type) {
       if (type === '휴가') {
-        this.$router.push('/HyugaInsert.page');
+        this.$router.push({ name: 'HyugaInsert' });
       } else if (type === '출장') {
-        this.$router.push('/ChuljangDetail.page');
+        this.$router.push({ name: 'HyugaChuljangDetailDetail' });
       }
     },
     getStatusClass(status) {
client/views/pages/Manager/asset/asset.vue
--- client/views/pages/Manager/asset/asset.vue
+++ client/views/pages/Manager/asset/asset.vue
@@ -15,17 +15,17 @@
       </div>
 
 
-      <details class="menu-box">
+      <details class="menu-box" open>
           <summary><p>법인차량</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/CarList.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'CarList' }" 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="/CarInfoManagement.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: 'CarInfoManagement' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>차량정보 관리</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
@@ -39,13 +39,13 @@
       <details class="menu-box">
           <summary><p>법인카드</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/CardList.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'CardList' }" 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="/CardInfoManagement.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'CardInfoManagement' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>카드정보 관리</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
client/views/pages/Manager/attendance/ChuljangPumuiDetail.vue
--- client/views/pages/Manager/attendance/ChuljangPumuiDetail.vue
+++ client/views/pages/Manager/attendance/ChuljangPumuiDetail.vue
@@ -139,7 +139,7 @@
   },
   methods: {
     goToBokmyeongInsert() {
-    this.$router.push('/BokmyeongInsert.page');
+    this.$router.push({ name: 'BokmyeongInsert' });
   },
     hasAnyApprover() {
       return this.approvers.some(
client/views/pages/Manager/attendance/ChuljangStatue.vue
--- client/views/pages/Manager/attendance/ChuljangStatue.vue
+++ client/views/pages/Manager/attendance/ChuljangStatue.vue
@@ -221,15 +221,15 @@
   );
 
   if (item.bokmyeong === '등록') {
-    this.$router.push('/ChuljangDetailAll.page');
+    this.$router.push({ name: 'ChuljangDetailAll' });
   } else if (isCasePumui) {
-    this.$router.push('/ChuljangPumuiDetail.page');
+    this.$router.push({ name: 'ChuljangPumuiDetail' });
   } else {
     console.log('이동 조건이 아닙니다.');
   }
 },
   handleBokmyeongClick(item) {
-    this.$router.push('/ChuljangBokmyeongDetail.page');
+    this.$router.push({ name: 'ChuljangBokmyeongDetail' });
   },
   },
   created() {
client/views/pages/Manager/attendance/HyugaDetail.vue (copied from client/views/pages/Manager/approval/HyugaDetail.vue)
--- client/views/pages/Manager/approval/HyugaDetail.vue
+++ client/views/pages/Manager/attendance/HyugaDetail.vue
@@ -0,0 +1,153 @@
+<template>
+<div class="card ">
+      <div class="card-body">
+          <h2 class="card-title">휴가 현황</h2>
+       
+      <div class="form-card">
+        <h1>휴가신청서</h1>
+        <div class="approval-box tbl-wrap tbl2">
+         <table class="tbl data">
+          <tbody>
+            <tr class="thead">
+              <td rowspan="2" class="th">승인자</td>
+              <td>과장</td>
+              <td>소장</td>
+            </tr>
+            <tr>
+              <td><p class="name">홍길동</p><p class="date">2025/05/09</p></td>
+              <td><p class="name">홍길동</p><p class="date">2025/05/09</p></td>
+            </tr>
+          </tbody>
+
+         </table>
+        </div>
+          <form class="row g-3 needs-validation detail"  :class="{ 'was-validated': formSubmitted }" @submit.prevent="handleRegister" novalidate>
+                <div class="col-12 ">
+                  <div class="col-12 border-x">
+                    <label for="youremail" class="form-label ">유형<p class="require"><img :src="require" alt=""></p></label>
+                    <input  v-model="email" type="text" name="username" class="form-control"  readonly >
+                  </div>
+    
+                  <div class="col-12 border-x">
+                    <label for="yourPassword" class="form-label">신청자</label>
+                    <input  v-model="password" type="password" name="password" class="form-control"  readonly   placeholder="주식회사 테이큰 소프트"> 
+                  </div>
+               </div>
+               <div class="col-12">
+                  <div class="col-12 border-x">
+                    <label for="youremail" class="form-label">부서</label>
+                    <input  v-model="email" type="text" name="username" class="form-control"  readonly  placeholder="과장">
+                  </div>
+    
+                  <div class="col-12 border-x">
+                    <label for="yourPassword" class="form-label">직급</label>
+                    <input  v-model="password" type="password" name="password" class="form-control"  readonly  placeholder="팀장"> 
+                  </div>
+               </div>
+               <div class="col-12">
+                  <label for="yourName" class="form-label">기간</label>
+                  <input  v-model="name" type="text" name="name" class="form-control"  readonly>
+            </div>
+            <div class="col-12 hyuga">
+                  <label for="yourName" class="form-label">세부사항</label>
+                  <input v-model="name" type="text" name="name" class="form-control textarea"  readonly>
+            </div>
+            <div class="col-12 ">
+                  <label for="yourName" class="form-label">신청일</label>
+                  <input v-model="name" type="text" name="name" class="form-control "  readonly>
+            </div>
+            <div class="col-12 border-x return" >
+                  <label for="yourName" class="form-label ">반려사유</label>
+                  <input  v-model="name" type="text" name="name" class="form-control"  readonly   >
+            </div>
+           
+                
+              </form>
+      </div>
+            <div class="buttons">
+              <button class="btn  btn-red"  type="button">신청취소</button>
+                <button class="btn secondary"  type="button">재신청</button>
+                <button class="btn secondary"  type="button">수정</button>
+                <button class="btn tertiary "  type="button">목록</button>
+              </div>
+              <ReturnPopup v-if="showPopup" @close="showPopup = false"/>
+      </div>
+    </div>
+</template>
+
+<script>
+import ReturnPopup from '../../../component/Popup/ReturnPopup.vue';
+export default {
+  data() {
+    const today = new Date().toISOString().split('T')[0];
+    return {
+      showPopup: false,
+      startDate: today,
+      startTime: "09:00", // 기본 시작 시간 09:00
+      endDate: today,
+      endTime: "18:00", // 기본 종료 시간 18:00
+      category: "", 
+      dayCount: 1, 
+      reason: "", // 사유
+      listData: [
+  {
+    type: '연차',
+    approvalType: '결재',
+    applicant: '홍길동',
+    period: '2025-05-10 ~ 2025-15-03',
+    requestDate: '2025-04-25',
+    status: '대기'
+  },   {
+    type: '반차',
+    approvalType: '전결',
+    applicant: '홍길동',
+    period: '2025-05-01 ~ 2025-05-03',
+    requestDate: '2025-04-25',
+    status: '승인'
+  }],
+    };
+  },
+  components: {
+    ReturnPopup
+  },
+  computed: {
+  
+  },
+  methods: {
+   
+    calculateDayCount() {
+    const start = new Date(`${this.startDate}T${this.startTime}:00`);
+    const end = new Date(`${this.endDate}T${this.endTime}:00`);
+    
+    let totalHours = (end - start) / (1000 * 60 * 60);  // 밀리초를 시간 단위로 변환
+    
+    if (this.startDate !== this.endDate) {
+      // 시작일과 종료일이 다른경우
+      const startDateObj = new Date(this.startDate);
+      const endDateObj = new Date(this.endDate);
+      const daysDifference = (endDateObj - startDateObj) / (1000 * 60 * 60 * 24); // 두 날짜 사이의 차이를 일수로 계산
+      if (this.startTime !== "09:00" || this.endTime !== "18:00") {
+        this.dayCount = daysDifference + 0.5; // 시간 조건이 기준에서 벗어날 경우
+      } else {
+        this.dayCount = Math.ceil(daysDifference + 1); // 시간 조건이 기준에 맞을 경우
+      }
+    } else {
+      // 시작일과 종료일이 같은 경우
+      if (this.startTime !== "09:00" || this.endTime !== "18:00") {
+        this.dayCount = 0.5; // 시작 시간 또는 종료 시간이 기준과 다를 경우 0.5
+      } else {
+        this.dayCount = 1; // 기준 시간(09:00~18:00)이 맞으면 1일로 간주
+      }
+    }
+
+    this.validateForm(); // dayCount 변경 후 폼 재검증
+  },
+    
+    
+    
+  },
+  mounted() {
+  },
+  
+};
+</script>
client/views/pages/Manager/attendance/HyugaInsert.vue (Renamed from client/views/pages/Manager/approval/HyugaInsert.vue)
--- client/views/pages/Manager/approval/HyugaInsert.vue
+++ client/views/pages/Manager/attendance/HyugaInsert.vue
No changes
client/views/pages/Manager/attendance/attendance.vue
--- client/views/pages/Manager/attendance/attendance.vue
+++ client/views/pages/Manager/attendance/attendance.vue
@@ -13,17 +13,17 @@
                     </div>
                 </div>
             </div>
-            <details class="menu-box">
+            <details class="menu-box" open>
           <summary><p>근태현황</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/myAttendance.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'myAttendance' }" 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="/buseoAttendance.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: 'buseoAttendance' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>부서별 근태현황</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
@@ -35,33 +35,32 @@
             <details class="menu-box">
           <summary><p>휴가</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/hyugaStatue.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'hyugaStatue' }" 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="/hyugaInsert.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'hyugaInsert' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>휴가 신청</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
                 </div>
-              </router-link>
-            </li>
+              </router-link></li>
+           
           </ul>
       </details>
             <details class="menu-box">
           <summary><p>출장</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/ChuljangStatue.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'ChuljangStatue' }" 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="/ChuljangInsert.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: 'ChuljangInsert' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>출장 신청</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
client/views/pages/Manager/attendance/buseoAttendance.vue
--- client/views/pages/Manager/attendance/buseoAttendance.vue
+++ client/views/pages/Manager/attendance/buseoAttendance.vue
@@ -189,11 +189,11 @@
       }
     },
     goToPage(type) {
-  if (type === '휴가') {
-    this.$router.push('/HyugaDetail.page');
-  } else if (type === '출장') {
-    this.$router.push('/ChuljangDetail.page');
-  }
+      if (type === '휴가') {
+  this.$router.push({ name: 'HyugaDetail' });
+} else if (type === '출장') {
+  this.$router.push({ name: 'ChuljangDetail' });
+}
 },
     getStatusClass(status) {
       if (status === '승인') return 'status-approved';
client/views/pages/Manager/attendance/hyugaStatue.vue
--- client/views/pages/Manager/attendance/hyugaStatue.vue
+++ client/views/pages/Manager/attendance/hyugaStatue.vue
@@ -180,9 +180,11 @@
       }
     },
     goToDetailPage(item) {
-    // item.id 또는 다른 식별자를 사용하여 URL을 구성할 수 있습니다.
-    this.$router.push({ path: `/HyugaDetail.page`, query: { id: item.id } });
-  },
+  this.$router.push({
+    name: 'HyugaDetail',
+    query: { id: item.id }
+  });
+},
 
   // 상태에 따른 클래스 반환 메소드
   getStatusClass(status) {
client/views/pages/Manager/financial/ChuljangCostList.vue
--- client/views/pages/Manager/financial/ChuljangCostList.vue
+++ client/views/pages/Manager/financial/ChuljangCostList.vue
@@ -129,7 +129,10 @@
   methods: {
     goToDetailPage(item) {
     // item.id 또는 다른 식별자를 사용하여 URL을 구성할 수 있습니다.
-    this.$router.push({ path: `/employeeSalaryDetail.page`, query: { id: item.id } });
+    this.$router.push({ 
+      name: 'employeeSalaryDetail',
+       query: { id: item.id } 
+      });
   },
     formatCurrency(amount) {
       return new Intl.NumberFormat('ko-KR').format(amount) + ' 원';
@@ -157,9 +160,9 @@
     },
     goToPage(type) {
       if (type === '휴가') {
-        this.$router.push('/HyugaInsert.page');
+        this.$router.push({ name: 'HyugaInsert' });
       } else if (type === '출장') {
-        this.$router.push('/ChuljangDetail.page');
+        this.$router.push({ name: 'ChuljangDetail' });
       }
     },
     getStatusClass(status) {
client/views/pages/Manager/financial/MeetingCostList.vue
--- client/views/pages/Manager/financial/MeetingCostList.vue
+++ client/views/pages/Manager/financial/MeetingCostList.vue
@@ -102,7 +102,7 @@
   methods: {
     goToDetailPage(item) {
     // item.id 또는 다른 식별자를 사용하여 URL을 구성할 수 있습니다.
-    this.$router.push({ path: `/employeeSalaryDetail.page`, query: { id: item.id } });
+    this.$router.push({ name: 'employeeSalaryDetail', query: { id: item.id } });
   },
     formatCurrency(amount) {
       return new Intl.NumberFormat('ko-KR').format(amount) + ' 원';
@@ -130,9 +130,9 @@
     },
     goToPage(type) {
       if (type === '휴가') {
-        this.$router.push('/HyugaInsert.page');
+        this.$router.push({ name: 'HyugaInsert' });
       } else if (type === '출장') {
-        this.$router.push('/ChuljangDetail.page');
+        this.$router.push({ name: 'ChuljangDetail' });
       }
     },
     getStatusClass(status) {
client/views/pages/Manager/financial/employeeSalaryList.vue
--- client/views/pages/Manager/financial/employeeSalaryList.vue
+++ client/views/pages/Manager/financial/employeeSalaryList.vue
@@ -126,7 +126,7 @@
   methods: {
     goToDetailPage(item) {
     // item.id 또는 다른 식별자를 사용하여 URL을 구성할 수 있습니다.
-    this.$router.push({ path: `/employeeSalaryDetail.page`, query: { id: item.id } });
+    this.$router.push({ name: 'employeeSalaryDetail', query: { id: item.id } });
   },
     formatCurrency(amount) {
       return new Intl.NumberFormat('ko-KR').format(amount) + ' 원';
@@ -154,9 +154,9 @@
     },
     goToPage(type) {
       if (type === '휴가') {
-        this.$router.push('/HyugaInsert.page');
+        this.$router.push({ name: 'HyugaInsert' });
       } else if (type === '출장') {
-        this.$router.push('/ChuljangDetail.page');
+        this.$router.push({ name: 'ChuljangDetail' });
       }
     },
     getStatusClass(status) {
client/views/pages/Manager/financial/financial.vue
--- client/views/pages/Manager/financial/financial.vue
+++ client/views/pages/Manager/financial/financial.vue
@@ -15,17 +15,17 @@
       </div>
 
 
-      <details class="menu-box">
+      <details class="menu-box" open>
           <summary><p>급여관리</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/salaryList.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'salaryList' }" 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="/employeeSalaryList.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: 'employeeSalaryList' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>직원별 급여명세서</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
@@ -33,7 +33,7 @@
               </router-link>
             </li>
             <li>
-              <router-link to="/employeeSalaryInsert.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: 'employeeSalaryInsert' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>급여명세서 등록</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
@@ -46,14 +46,14 @@
       <details class="menu-box">
           <summary><p>지출관리</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/ChuljangCostList.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'ChuljangCostList' }" 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="/projectInsert.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: '' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>출장비 설정</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
@@ -61,7 +61,7 @@
               </router-link>
             </li>
             <li>
-              <router-link to="/MeetingCostList.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link  :to="{ name: 'MeetingCostList' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>회의비 지출현황</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
client/views/pages/Manager/financial/salaryList.vue
--- client/views/pages/Manager/financial/salaryList.vue
+++ client/views/pages/Manager/financial/salaryList.vue
@@ -143,9 +143,9 @@
     },
     goToPage(type) {
       if (type === '명세서') {
-        this.$router.push('/HyugaInsert.page');
+        this.$router.push({ name: 'HyugaInsert' });
       } else if (type === '출장') {
-        this.$router.push('/ChuljangDetail.page');
+        this.$router.push({ name: 'ChuljangDetail' });
       }
     },
     getStatusClass(status) {
client/views/pages/Manager/hr/buseoManagement.vue
--- client/views/pages/Manager/hr/buseoManagement.vue
+++ client/views/pages/Manager/hr/buseoManagement.vue
@@ -145,7 +145,7 @@
           submenus: [
             {
               label: '직원검색',
-              link: '/hrSearch.page',
+              link: { name: 'hrSearch' },
             },
           ],
         },
@@ -214,14 +214,14 @@
     addSubMenu(menuIndex) {
       this.menus[menuIndex].submenus.push({
         label: `신규메뉴${this.menus[menuIndex].submenus.length + 1}`,
-        link: '/new.page',
+        link: { name: 'hrSearch' },
       });
     },
     goToPage(type) {
       if (type === '회의록 등록') {
-        this.$router.push('/meetingInsert.page');
+        this.$router.push({ name: 'meetingInsert' });
       } else if (type === '출장') {
-        this.$router.push('/ChuljangDetail.page');
+        this.$router.push({ name: 'ChuljangDetail' });
       }
     },
     handleFileUpload(event) {
client/views/pages/Manager/hr/hr.vue
--- client/views/pages/Manager/hr/hr.vue
+++ client/views/pages/Manager/hr/hr.vue
@@ -15,17 +15,17 @@
       </div>
 
 
-      <details class="menu-box">
+      <details class="menu-box" open>
           <summary><p>직원</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/hrSearch.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'hrSearch' }" 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="/hrManagement.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: 'hrManagement' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>직원관리</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
@@ -39,7 +39,7 @@
       <details class="menu-box">
           <summary><p>부서</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/buseoManagement.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'buseoManagement' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>부서관리</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
client/views/pages/Manager/hr/hrManagement.vue
--- client/views/pages/Manager/hr/hrManagement.vue
+++ client/views/pages/Manager/hr/hrManagement.vue
@@ -121,7 +121,7 @@
   },
   goToDetailPage(item) {
     // item.id 또는 다른 식별자를 사용하여 URL을 구성할 수 있습니다.
-    this.$router.push({ path: `/hrDetail.page`, query: { id: item.id } });
+    this.$router.push({ name: 'hrDetail', query: { id: item.id } });
   },
     changePage(page) {
       if (page < 1 || page > this.totalPages) return;
@@ -141,7 +141,7 @@
     },
     goToPage(type) {
       if (type === '등록') {
-        this.$router.push('/hrInsert.page');
+        this.$router.push({ name: 'hrInsert' });
       }
     },
     getStatusClass(status) {
client/views/pages/Manager/system/commonCodeManagement.vue
--- client/views/pages/Manager/system/commonCodeManagement.vue
+++ client/views/pages/Manager/system/commonCodeManagement.vue
@@ -144,7 +144,7 @@
   methods: {
     goToDetailPage(item) {
     // item.id 또는 다른 식별자를 사용하여 URL을 구성할 수 있습니다.
-    this.$router.push({ path: `/commonCodeDetail.page`, query: { id: item.id } });
+    this.$router.push({ name: 'commonCodeDetail', query: { id: item.id } });
   },
     changePage(page) {
       if (page < 1 || page > this.totalPages) return;
@@ -164,7 +164,7 @@
     },
     goToPage(type) {
   if (type === '등록') {
-    this.$router.push('/commonCodeInsert.page');
+    this.$router.push({ name: 'commonCodeInsert' });
   } 
 },
 getStatusClass(used) {
client/views/pages/Manager/system/system.vue
--- client/views/pages/Manager/system/system.vue
+++ client/views/pages/Manager/system/system.vue
@@ -16,17 +16,17 @@
 
 
         <ul class="menu-box danil">
-             <router-link to="/userManagement.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+             <router-link :to="{ name: 'userManagement' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <li><p>사용자권한관리</p>
                 <div class="icon"><img :src="menuicon" alt=""></div></li>
               </router-link>
-              <router-link to="/accessControlManagement.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: 'accessControlManagement' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <li>
                 <p>접근제어관리</p>
                 <div class="icon"><img :src="menuicon" alt=""></div>
               </li>
               </router-link>
-              <router-link to="/commonCodeManagement.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: 'commonCodeManagement' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <li>
                 <p>공통코드관리</p>
                 <div class="icon"><img :src="menuicon" alt=""></div>
client/views/pages/Manager/task/projectDetail.vue
--- client/views/pages/Manager/task/projectDetail.vue
+++ client/views/pages/Manager/task/projectDetail.vue
@@ -192,9 +192,9 @@
   methods: {
     goToPage(type) {
   if (type === '회의록 등록') {
-    this.$router.push('/meetingInsert.page');
+    this.$router.push({ name: 'meetingInsert' });
   } else if (type === '회의록 상세') {
-    this.$router.push('/meetingDetail.page');
+    this.$router.push({ name: 'meetingDetail' });
   }
 },
     handleFileUpload(event) {
client/views/pages/Manager/task/projectStatue.vue
--- client/views/pages/Manager/task/projectStatue.vue
+++ client/views/pages/Manager/task/projectStatue.vue
@@ -211,7 +211,7 @@
     },
     goToDetailPage(item) {
     // item.id 또는 다른 식별자를 사용하여 URL을 구성할 수 있습니다.
-    this.$router.push({ path: `/projectDetail.page`, query: { id: item.id } });
+    this.$router.push({ name: 'projectDetail', query: { id: item.id } });
   },
 
   // 상태에 따른 클래스 반환 메소드
client/views/pages/Manager/task/projectTuib.vue
--- client/views/pages/Manager/task/projectTuib.vue
+++ client/views/pages/Manager/task/projectTuib.vue
@@ -164,9 +164,9 @@
     },
     goToPage(type) {
   if (type === '휴가') {
-    this.$router.push('/HyugaDetail.page');
+    this.$router.push({ name: 'HyugaDetail' });
   } else if (type === '출장') {
-    this.$router.push('/ChuljangDetail.page');
+    this.$router.push({ name: 'ChuljangDetail' });
   }
 },
     getStatusClass(status) {
client/views/pages/Manager/task/task.vue
--- client/views/pages/Manager/task/task.vue
+++ client/views/pages/Manager/task/task.vue
@@ -15,17 +15,17 @@
       </div>
 
 
-      <details class="menu-box">
+      <details class="menu-box" open>
           <summary><p>프로젝트</p><div class="icon"><img :src="topmenuicon" alt=""></div></summary>
           <ul>
-            <li> <router-link to="/projectStatue.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+            <li> <router-link :to="{ name: 'projectStatue' }" 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="/projectInsert.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: 'projectInsert' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>프로젝트 등록</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
@@ -33,7 +33,7 @@
               </router-link>
             </li>
             <li>
-              <router-link to="/projectTuib.page" exact-active-class="active-link" v-slot="{ isExactActive }">
+              <router-link :to="{ name: 'projectTuib' }" exact-active-class="active-link" v-slot="{ isExactActive }">
                 <p>투입현황</p>
                 <div class="icon" v-if="isExactActive">
                   <img :src="menuicon" alt="">
client/views/pages/User/MyPage.vue
--- client/views/pages/User/MyPage.vue
+++ client/views/pages/User/MyPage.vue
@@ -99,9 +99,8 @@
 
         </form>
         <div class="buttons">
-          <button class="btn primary" type="submit">반려</button>
-          <button class="btn btn-red " type="submit">반려</button>
-          <button class="btn tertiary " type="submit">목록</button>
+          <button class="btn btn-red " type="submit">회원탈퇴</button>
+          <button class="btn secondary " type="submit">수정</button>
         </div>
       </div>
     </div>
client/views/pages/main/Main.vue
--- client/views/pages/main/Main.vue
+++ client/views/pages/main/Main.vue
@@ -43,7 +43,7 @@
             <div class="bd-box">
                 <div>전체 <span>15</span></div>
                 <i class="fa-bars"></i>
-                <div>사용 <span>3.5</span></div>
+                <div>사용 <span style="color: #E92727;">3.5</span></div>
             </div>
         </div>
         <div class="boxs">
@@ -84,7 +84,7 @@
                 </div>
 
             </div>
-            <div class="boxs">
+            <div class="boxs" style="width: 100%;">
                 <div class="title">
                     <h2>오늘의 주요 </h2>
                     <div class="sub">더보기<img :src="moreicon" alt=""></div>
@@ -134,6 +134,8 @@
             requestList: [
                 { category: '용역', name: '프로젝트1', startdate: '2025-04-30', enddate: '2025-04-30', status: '진행중' },
                 { category: '내부', name: '프로젝트2', startdate: '2025-05-01', enddate: '2025-04-30', status: '진행전' },
+                { category: '내부', name: '프로젝트2', startdate: '2025-05-01', enddate: '2025-04-30', status: '진행전' },
+                { category: '내부', name: '프로젝트2', startdate: '2025-05-01', enddate: '2025-04-30', status: '진행전' },
                 { category: '국가과제', name: '프로젝트2', startdate: '2025-05-01', enddate: '2025-04-30', status: '완료' }
             ]
         }
@@ -179,4 +181,9 @@
         }, 1000);
     }
 }
-</script>
(파일 끝에 줄바꿈 문자 없음)
+</script>
+<style scoped>
+td{padding: 7px 10px !important; height: auto !important;}
+td p{display: flex; justify-self: center; justify-content: center; text-align: center !important;}
+    tr:last-child td{border-bottom: 0 !important;}
+</style>
(파일 끝에 줄바꿈 문자 없음)
Add a comment
List