jichoi / calendar star
류윤주 류윤주 07-31
250731 류윤주 수정
@04bbf364685a30e0ec666f9c473f3b8b02bbf176
client/views/component/GoogleCalendar.vue
--- client/views/component/GoogleCalendar.vue
+++ client/views/component/GoogleCalendar.vue
@@ -46,7 +46,8 @@
           day: '일'
         },
         showNonCurrentDates: false,
-        fixedWeekCount: false
+        fixedWeekCount: false,
+        height: '100%',
       }
     }
   },
 
client/views/component/modal/Modal.vue (added)
+++ client/views/component/modal/Modal.vue
@@ -0,0 +1,56 @@
+<template>
+    <div  :class="['modal-back', { in: showModal }]">
+        <div :class="['modal', { in: showModal, shown: showModal }]">
+            <div class="modal-dialog">
+                <div class="modal-content">
+                    <div class="modal-header">
+                        <div class="flex justify-between align-center">
+                            <slot name="header"></slot>
+                        </div>
+                    </div>
+                    <div class="modal-conts">
+                        <slot></slot>
+                    </div>
+                    <div class="modal-btn flex justify-end">
+                        <slot name="footer"></slot>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+
+export default {
+    name: 'job-container',
+    props: {
+        showModal: {
+            type: Boolean,
+            default: false
+        },
+        className: {
+            type: String,
+            default: ''
+        }
+    },
+    data() {
+        return {
+
+        }
+    },
+    methods: {
+    },
+    watch: {
+
+    },
+    computed: {
+
+    },
+    components: {
+
+    },
+    mounted() {
+    }
+}
+</script>
client/views/pages/Manager/sanctn/MyApprovalRequestList.vue
--- client/views/pages/Manager/sanctn/MyApprovalRequestList.vue
+++ client/views/pages/Manager/sanctn/MyApprovalRequestList.vue
@@ -1,68 +1,67 @@
 <template>
-  <div class="col-lg-12">
     <div class="card">
       <div class="card-body">
-        <h2 class="card-title">결재 요청</h2>
-        <div class="sch-form-wrap">
-          <div class="input-group">
-            <select name="yearPicker" id="yearPicker" class="form-select" v-model="searchParams.year" @change="handlePageChange(1)">
-              <option value="">연도 전체</option>
-              <option v-for="year in yearOptions" :key="year" :value="year">{{ year }}년</option>
-            </select>
-            <select name="monthPicker" id="monthPicker" class="form-select" v-model="searchParams.month" @change="handlePageChange(1)">
-              <option value="">월 전체</option>
-              <option v-for="month in monthOptions" :key="month" :value="month">{{ month }}월</option>
-            </select>
-            <select name="sanctnIemPicker" id="sanctnIemPicker" class="form-select" v-model="searchParams.sanctnIem" @change="handlePageChange(1)">
-              <option value="">전체</option>
-              <option v-for="(item, idx) of approvalTypeOptions" :key="idx" :value="item.code">{{ item.codeNm }}</option>
-            </select>
+        <div>
+          <h2 class="card-title">결재 요청</h2>
+          <div class="search-wrap mb20">
+              <select name="yearPicker" id="yearPicker" class="form-select sm" v-model="searchParams.year" @change="handlePageChange(1)">
+                <option value="">연도 전체</option>
+                <option v-for="year in yearOptions" :key="year" :value="year">{{ year }}년</option>
+              </select>
+              <select name="monthPicker" id="monthPicker" class="form-select sm" v-model="searchParams.month" @change="handlePageChange(1)">
+                <option value="">월 전체</option>
+                <option v-for="month in monthOptions" :key="month" :value="month">{{ month }}월</option>
+              </select>
+              <select name="sanctnIemPicker" id="sanctnIemPicker" class="form-select sm" v-model="searchParams.sanctnIem" @change="handlePageChange(1)">
+                <option value="">전체</option>
+                <option v-for="(item, idx) of approvalTypeOptions" :key="idx" :value="item.code">{{ item.codeNm }}</option>
+              </select>
           </div>
-        </div>
-        <div class="tbl-wrap">
-          <table class="tbl data">
-            <colgroup>
-              <col style="width: 13.33%;">
-              <col style="width: 13.33%;">
-              <col style="width: 13.33%;">
-              <col style="width: 30%;">
-              <col style="width: 16.66%;">
-              <col style="width: 13.33%;">
-            </colgroup>
-            <thead>
-              <tr>
-                <th>구분</th>
-                <th>결재구분</th>
-                <th>신청자</th>
-                <th>기간</th>
-                <th>신청일</th>
-                <th>상태</th>
-              </tr>
-            </thead>
-            <tbody>
-              <template v-if="approvalRequestList.length > 0">
-                <tr v-for="(item, idx) of approvalRequestList" :key="idx" @click="handleDetailNavigation(item.sanctnMbyId)">
-                  <td>{{ item.sanctnIemNm }}</td>
-                  <td>{{ item.sanctnSeNm }}</td>
-                  <td>{{ item.registerNm }}</td>
-                  <td>{{ $formattedDates(item) }}</td>
-                  <td>{{ item.rgsde }}</td>
-                  <td>{{ item.confmAtNm }}</td>
+          <div class="tbl-wrap">
+            <table class="tbl data common-radius">
+              <colgroup>
+                <col style="width: 13.33%;">
+                <col style="width: 13.33%;">
+                <col style="width: 13.33%;">
+                <col style="width: 30%;">
+                <col style="width: 16.66%;">
+                <col style="width: 13.33%;">
+              </colgroup>
+              <thead>
+                <tr>
+                  <th style="border-radius: 1rem 0 0 0;">구분</th>
+                  <th>결재구분</th>
+                  <th>신청자</th>
+                  <th>기간</th>
+                  <th>신청일</th>
+                  <th style="border-radius: 0 1rem 0 0;">상태</th>
                 </tr>
-              </template>
-              <tr v-else>
-                <td colspan="6">게시물이 존재하지 않습니다.</td>
-              </tr>
-            </tbody>
-          </table>
-        </div>
-        <Pagination :search="searchParams" @onChange="handlePageChange" />
-        <div class="buttons">
-          <button type="button" class="btn sm sm primary" @click="isOptionsModalVisible = true">등록</button>
+              </thead>
+              <tbody>
+                <template v-if="approvalRequestList.length > 0">
+                  <tr v-for="(item, idx) of approvalRequestList" :key="idx" @click="handleDetailNavigation(item.sanctnMbyId)">
+                    <td>{{ item.sanctnIemNm }}</td>
+                    <td>{{ item.sanctnSeNm }}</td>
+                    <td>{{ item.registerNm }}</td>
+                    <td>{{ $formattedDates(item) }}</td>
+                    <td>{{ item.rgsde }}</td>
+                    <td>{{ item.confmAtNm }}</td>
+                  </tr>
+                </template>
+                <tr v-else>
+                  <td colspan="6">게시물이 존재하지 않습니다.</td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
         </div>
       </div>
     </div>
-  </div>
+    <div class="d-flex justify-between align-center">
+      <div></div>
+      <Pagination :search="searchParams" @onChange="handlePageChange" />
+      <button class="btn sm primary" @click="isOptionsModalVisible = true">신청하기</button>
+    </div>
   <div v-if="isOptionsModalVisible" class="popup-overlay">
     <div class="popup-content">
       <div class="card">
client/views/pages/Manager/sanctn/PendingApprovalList.vue
--- client/views/pages/Manager/sanctn/PendingApprovalList.vue
+++ client/views/pages/Manager/sanctn/PendingApprovalList.vue
@@ -1,117 +1,118 @@
 <template>
-  <div class="col-lg-12">
-    <div class="card">
+
+    <div class="card" style="height: 100%;">
       <div class="card-body">
-        <h2 class="card-title">승인 대기 목록</h2>
-        <div class="sch-form-wrap title-wrap">
-          <h3><img :src="sectionIcon" alt="">승인 대기</h3>
-          <div class="input-group">
-            <select class="form-select" v-model="pendingSearchParams.year" @change="handlePageChange(1, 'pending')">
-              <option value="">연도 전체</option>
-              <option v-for="year in yearOptions" :key="year" :value="year">{{ year }}년</option>
-            </select>
-            <select class="form-select" v-model="pendingSearchParams.month" @change="handlePageChange(1, 'pending')">
-              <option value="">월 전체</option>
-              <option v-for="month in monthOptions" :key="month" :value="month">{{ month }}월</option>
-            </select>
-            <div class="sch-input">
-              <input type="text" class="form-control" v-model="pendingSearchParams.searchText" placeholder="검색어를 입력하세요." @keyup.enter="handleSearch('pending')">
-              <button button="button" class="ico-sch" @click="handleSearch('pending')">
-                <SearchOutlined />
-              </button>
+        <div>
+          <h2 class="card-title">승인 대기 목록</h2>
+          <div style="height: 50%;">
+              <div class="d-flex justify-between align-center">
+              <h3 class="sub-title">승인 대기</h3>
+              <div class="search-wrap mb10">
+                  <select class="form-select sm" v-model="pendingSearchParams.year" @change="handlePageChange(1, 'pending')">
+                    <option value="">연도 전체</option>
+                    <option v-for="year in yearOptions" :key="year" :value="year">{{ year }}년</option>
+                  </select>
+                  <select class="form-select sm" v-model="pendingSearchParams.month" @change="handlePageChange(1, 'pending')">
+                    <option value="">월 전체</option>
+                    <option v-for="month in monthOptions" :key="month" :value="month">{{ month }}월</option>
+                  </select>
+                  <input type="text" class="form-control sm" v-model="pendingSearchParams.searchText" placeholder="검색어를 입력하세요." @keyup.enter="handleSearch('pending')">
+                  <button button="button" class="ico-sch" @click="handleSearch('pending')">
+                    <SearchOutlined />
+                  </button>
+              </div>
             </div>
+            <div class="tbl-wrap">
+              <table id="myTable" class="tbl data common-radius">
+                <colgroup>
+                  <col style="width: 13.33%;">
+                  <col style="width: 13.33%;">
+                  <col style="width: 13.33%;">
+                  <col style="width: 30%;">
+                  <col style="width: 30%;">
+                </colgroup>
+                <thead>
+                  <tr>
+                    <th  style="border-radius: 1rem 0 0 0;">구분</th>
+                    <th>결재구분</th>
+                    <th>신청자</th>
+                    <th>기간</th>
+                    <th style="border-radius: 0 1rem 0 0;">신청일</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr v-for="(item, idx) in pendingApprovalList" :key="idx" @click="handleDetailNavigation(item.sanctnMbyId)">
+                    <td>{{ item.sanctnIemNm }}</td>
+                    <td>{{ item.sanctnSeNm }}</td>
+                    <td>{{ item.registerNm }}</td>
+                    <td>{{ $formattedDates(item) }}</td>
+                    <td>{{ item.rgsde }}</td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+            <Pagenation :search="pendingSearchParams" @onChange="(currentPage) => handlePageChange(currentPage, 'pending')" />
+          </div>
+          <div style="height: 50%;">
+            <div class="d-flex justify-between align-center">
+              <h3  class="sub-title">승인 이력</h3>
+              <div class="search-wrap mb10">
+                  <select class="form-select sm" v-model="historySearchParams.year" @change="handlePageChange(1, 'history')">
+                    <option value="">연도 전체</option>
+                    <option v-for="year in yearOptions" :key="year" :value="year">{{ year }}년</option>
+                  </select>
+                  <select class="form-select sm" v-model="historySearchParams.month" @change="handlePageChange(1, 'history')">
+                    <option value="">월 전체</option>
+                    <option v-for="month in monthOptions" :key="month" :value="month">{{ month }}월</option>
+                  </select>
+                  <select name="" id="" class="form-select sm">
+                    <option value="all">상태</option>
+                    <option value="">승인</option>
+                    <option value="">반려</option>
+                  </select>
+                    <input type="text" class="form-control sm" v-model="historySearchParams.searchText" placeholder="검색어를 입력하세요." @keyup.enter="handleSearch('history')">
+                    <button button="button" class="ico-sch" @click="handleSearch('history')">
+                      <SearchOutlined />
+                    </button>
+              </div>
+            </div>
+            <div class="tbl-wrap">
+              <table id="myTable" class="tbl data">
+                <colgroup>
+                  <col style="width: 13.33%;">
+                  <col style="width: 13.33%;">
+                  <col style="width: 13.33%;">
+                  <col style="width: 30%;">
+                  <col style="width: 16.66%;">
+                  <col style="width: 13.33%;">
+                </colgroup>
+                <thead>
+                  <tr>
+                    <th  style="border-radius: 1rem 0 0 0;">구분</th>
+                    <th>결재구분</th>
+                    <th>신청자</th>
+                    <th>기간</th>
+                    <th>신청일</th>
+                    <th  style="border-radius: 0 1rem 0 0;">상태</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr v-for="(item, index) in approvalHistoryList" :key="index" class="expired" @click="handleDetailNavigation(item.sanctnMbyId)">
+                    <td>{{ item.sanctnIemNm }}</td>
+                    <td>{{ item.sanctnSeNm }}</td>
+                    <td>{{ item.registerNm }}</td>
+                    <td>{{ $formattedDates(item) }}</td>
+                    <td>{{ item.rgsde }}</td>
+                    <td>{{ item.confmAtNm }}</td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+            <Pagenation :search="historySearchParams" @onChange="(currentPage) => handlePageChange(currentPage, 'history')" />
           </div>
         </div>
-        <div class="tbl-wrap">
-          <table id="myTable" class="tbl data">
-            <colgroup>
-              <col style="width: 13.33%;">
-              <col style="width: 13.33%;">
-              <col style="width: 13.33%;">
-              <col style="width: 30%;">
-              <col style="width: 30%;">
-            </colgroup>
-            <thead>
-              <tr>
-                <th>구분</th>
-                <th>결재구분</th>
-                <th>신청자</th>
-                <th>기간</th>
-                <th>신청일</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr v-for="(item, idx) in pendingApprovalList" :key="idx" @click="handleDetailNavigation(item.sanctnMbyId)">
-                <td>{{ item.sanctnIemNm }}</td>
-                <td>{{ item.sanctnSeNm }}</td>
-                <td>{{ item.registerNm }}</td>
-                <td>{{ $formattedDates(item) }}</td>
-                <td>{{ item.rgsde }}</td>
-              </tr>
-            </tbody>
-          </table>
-        </div>
-        <Pagenation :search="pendingSearchParams" @onChange="(currentPage) => handlePageChange(currentPage, 'pending')" />
-        <div class="sch-form-wrap title-wrap">
-          <h3><img :src="sectionIcon" alt="">승인 이력</h3>
-          <div class="input-group">
-            <select class="form-select" v-model="historySearchParams.year" @change="handlePageChange(1, 'history')">
-              <option value="">연도 전체</option>
-              <option v-for="year in yearOptions" :key="year" :value="year">{{ year }}년</option>
-            </select>
-            <select class="form-select" v-model="historySearchParams.month" @change="handlePageChange(1, 'history')">
-              <option value="">월 전체</option>
-              <option v-for="month in monthOptions" :key="month" :value="month">{{ month }}월</option>
-            </select>
-            <select name="" id="" class="form-select">
-              <option value="all">상태</option>
-              <option value="">승인</option>
-              <option value="">반려</option>
-            </select>
-            <div class="sch-input">
-              <input type="text" class="form-control" v-model="historySearchParams.searchText" placeholder="검색어를 입력하세요." @keyup.enter="handleSearch('history')">
-              <button button="button" class="ico-sch" @click="handleSearch('history')">
-                <SearchOutlined />
-              </button>
-            </div>
-          </div>
-        </div>
-        <div class="tbl-wrap">
-          <table id="myTable" class="tbl data">
-            <colgroup>
-              <col style="width: 13.33%;">
-              <col style="width: 13.33%;">
-              <col style="width: 13.33%;">
-              <col style="width: 30%;">
-              <col style="width: 16.66%;">
-              <col style="width: 13.33%;">
-            </colgroup>
-            <thead>
-              <tr>
-                <th>구분</th>
-                <th>결재구분</th>
-                <th>신청자</th>
-                <th>기간</th>
-                <th>신청일</th>
-                <th>상태</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr v-for="(item, index) in approvalHistoryList" :key="index" class="expired" @click="handleDetailNavigation(item.sanctnMbyId)">
-                <td>{{ item.sanctnIemNm }}</td>
-                <td>{{ item.sanctnSeNm }}</td>
-                <td>{{ item.registerNm }}</td>
-                <td>{{ $formattedDates(item) }}</td>
-                <td>{{ item.rgsde }}</td>
-                <td>{{ item.confmAtNm }}</td>
-              </tr>
-            </tbody>
-          </table>
-        </div>
-        <Pagenation :search="historySearchParams" @onChange="(currentPage) => handlePageChange(currentPage, 'history')" />
       </div>
     </div>
-  </div>
 </template>
 <script>
 import { SearchOutlined } from '@ant-design/icons-vue';
client/views/pages/main/Main.vue
--- client/views/pages/main/Main.vue
+++ client/views/pages/main/Main.vue
@@ -20,15 +20,15 @@
                 </li>
                 <li>
                     <p>5</p>
-                    <div class="name ">신청</div>
+                    <div class="name ">대기</div>
                 </li>
                 <li>
                     <p>5</p>
-                    <div class="name blue">신청</div>
+                    <div class="name blue">승인</div>
                 </li>
                 <li>
                     <p>5</p>
-                    <div class="name red">신청</div>
+                    <div class="name red">결제</div>
                 </li>
             </ul>
         </div>
@@ -64,67 +64,73 @@
             </div>
         </div>
     </div>
-    <div class="content">
-        <div class="top-content">
-            <div class="boxs">
-
-                <div class="title">
-                    <h2>근무체크 <span>출근전</span></h2>
-                    <div class="sub"><img :src="dateicon" alt="">{{ today }}</div>
+    <div class="card" style="height: 100%;">
+        <div class="card-body">
+            <div class="grid-wrap gap30" style="height: 100%; grid-template-columns: minmax(845px, auto) 550px; grid-template-rows: minmax(512px, auto) 243px;">
+                <div style="width: 100%;">
+                    <GoogleCalendar />
                 </div>
-                <div class="blue-box">
-                    <div class="box">
-                        <p class="time">{{ time }}</p>
+                <div class="schedule-zone">
+                    <div class="commute">
+                        <div class="title d-flex align-center justify-between mb10">
+                            <h2>근무체크 <span>출근전</span></h2>
+                            <div class="sub"><img :src="dateicon" alt="">{{ today }}</div>
+                        </div>
+                        <div class="blue-box">
+                            <div class="box mb10">
+                                <p class="time">{{ time }}</p>
+                            </div>
+                            <div class="d-flex justify-between align-center">
+                                <button><img :src="startbtn" alt=""></button>
+                                <i class="fa-bars"></i>
+                                <button><img :src="stopbtn" alt=""></button>
+                            </div>
+                        </div>
                     </div>
-                    <div class="buttons">
-                        <button><img :src="startbtn" alt=""></button>
-                        <i class="fa-bars"></i>
-                        <button><img :src="stopbtn" alt=""></button>
+                    <div class="boxs today-event">
+                        <div class="title">
+                            <h2>오늘 일정 요약</h2>
+                        </div>
+                        <ul>
+                            <li v-for="(event, index) in todayEvents" :key="index">
+                                <div class="grid-wrap gap10">
+                                    <p class="category">{{ event.category }}</p>
+                                    <p class="name">{{ event.name }} {{ event.position }}</p>
+                                    <p class="department">{{ event.department }}</p>
+                                </div>
+                            </li>
+                        </ul>
                     </div>
                 </div>
-
-            </div>
-            <div class="boxs" style="width: 100%;">
-                <div class="title">
-                    <h2>프로젝트 현황</h2>
-                    <div class="sub">더보기<img :src="moreicon" alt=""></div>
-                </div>
-                <div class="board tbl-wrap">
-                    <table class="tbl data">
-                        <tbody>
-                            <tr v-for="(item, index) in requestList" :key="index" >
-                                <td :class="getCategoryClass(item.category)">
-                                    <p>{{ item.category }}</p>
-                                </td>
-                                <td>{{ item.name }}</td>
-                                <td>{{ item.startdate }} ~ {{ item.enddate }}</td>
-                                <td class="status" :class="getStatusClass(item.status)">
-                                    <p>{{ item.status }}</p>
-                                </td>
-                            </tr>
-                        </tbody>
-                    </table>
+                <div class="boxs" style="grid-column: 1 / 3 ;">
+                    <div class="title d-flex justify-between align-center">
+                        <h2>프로젝트 현황</h2>
+                        <div class="sub">더보기<img :src="moreicon" alt=""></div>
+                    </div>
+                    <div class="board tbl-wrap">
+                        <table class="tbl data common-radius">
+                            <colgroup>
+                                <col style="width: 15%;">
+                                <col style="width: 38%;">
+                                <col style="width: 32%;">
+                                <col style="width: 15%;">   
+                            </colgroup>
+                            <tbody>
+                                <tr v-for="(item, index) in requestList" :key="index" >
+                                    <td :class="getCategoryClass(item.category)" >
+                                        <p>{{ item.category }}</p>
+                                    </td>
+                                    <td>{{ item.name }}</td>
+                                    <td>{{ item.startdate }} ~ {{ item.enddate }}</td>
+                                    <td class="status" :class="getStatusClass(item.status)">
+                                        <p>{{ item.status }}</p>
+                                    </td>
+                                </tr>
+                            </tbody>
+                        </table>
+                    </div>
                 </div>
             </div>
-        </div>
-        <div class="schedule-zone">
-            <div class="boxs">
-                <div class="title">
-                    <h2>오늘의 일정</h2>
-                    <!-- <div class="sub">더보기<img :src="moreicon" alt=""></div> -->
-                </div>
-                <ul>
-                    <li v-for="(event, index) in todayEvents" :key="index">
-                       <div>
-                           <p class="category">{{ event.category }}</p>
-                            <p class="name">{{ event.name }}</p>
-                            <p class="position">{{ event.position }}</p>
-                            <p class="department">{{ event.department }}</p>
-                       </div>
-                    </li>
-                </ul>
-            </div>
-            <GoogleCalendar />
         </div>
     </div>
 </template>
Add a comment
List