류윤주 류윤주 2024-01-25
240125 류윤주 템플릿 추가
@46e861554628bbd258d7bdc924a33d1cc46eb0e1
 
client/views/common/commonPlugin.js (added)
+++ client/views/common/commonPlugin.js
@@ -0,0 +1,36 @@
+/**
+ * 
+ * 공통 처리 플러그인
+ */
+export default{    
+    install(Vue){ 
+
+        let alertRef = {};
+
+        Vue.config.globalProperties.$setAlertRef = function(ref){
+            alertRef = ref;
+        }
+
+        //날짜 비교 함수
+        Vue.config.globalProperties.$getSum = function(prevDate, currentDate){
+           alert(prevDate)
+           alert(currentDate)
+        }
+
+        // 모달 호출
+        Vue.config.globalProperties.$showAlert = function(title, message){          
+            alertRef.setTitle(title);
+            alertRef.setMessage(message);
+            alertRef.showModal();
+         }
+
+         // confirm 창 호출 
+         Vue.config.globalProperties.$showConfirm = async function(title, message){          
+           
+            alertRef.setTitle(title);
+            alertRef.setMessage(message);
+            const resultData =  await alertRef.showConfirm();
+            return resultData;
+         }
+    }
+}
client/views/index.js
--- client/views/index.js
+++ client/views/index.js
@@ -7,7 +7,22 @@
 
 import AppRouter from "./pages/AppRouter.js";
 import App from "./pages/App.vue";
+import cmmnPlugin from './common/commonPlugin.js';
+import { quillEditor } from 'vue3-quill';
+
+// splitter component
+import PrimeVue from 'primevue/config';
+import Splitter from 'primevue/splitter';
+import SplitterPanel from 'primevue/splitterpanel';
+import "primevue/resources/themes/lara-light-green/theme.css";
+import "primevue/resources/primevue.min.css"; /* Deprecated */
 
 
+const app = createApp(App);
+app.use(cmmnPlugin)
+app.use(quillEditor)
+app.use(AppRouter)
+app.mount("#root");
 
-const vue = createApp(App).use(AppRouter).mount("#root");
+app.component('Splitter', Splitter);
+app.component('SplitterPanel', SplitterPanel);
client/views/pages/App.vue
--- client/views/pages/App.vue
+++ client/views/pages/App.vue
@@ -26,6 +26,7 @@
    methods: {
       // 로그인
       updateIsLogin: function (boolean) {
+         console.log(boolean);
          this.isLogin = boolean;
       },
    },
client/views/pages/login/Login.vue
--- client/views/pages/login/Login.vue
+++ client/views/pages/login/Login.vue
@@ -75,8 +75,8 @@
                 .then(function (response) {
                     console.log("login - response", response.data);
                     if (response.data > 0) {
-                        vm.$emit("updateIsLogin", true);
                         alert("로그인 성공하였습니다.");
+                        vm.$emit("updateIsLogin", true);
                         vm.$router.go();
                         vm.$router.push({ path: '/main.page', query: {} });
                     } else {
client/views/template/layoutTemplate/Horizontal.vue
--- client/views/template/layoutTemplate/Horizontal.vue
+++ client/views/template/layoutTemplate/Horizontal.vue
@@ -28,7 +28,7 @@
                     </div>
                 </div>
                 <div class="table-zone">
-                    <div class="flex justify-between align-center">
+                    <div class="list-info flex justify-between align-center">
                         <div class="count-zone">
                             <p>총 <span>40</span>건 중 <span>01</span>건 선택</p>
                         </div>
@@ -140,9 +140,9 @@
                             </tr>
                         </tbody>
                     </table>
-                    <div class="flex justify-end">
-                        <button class="red-border-btn small-btn">선택항목 삭제</button>
-                    </div>
+                </div>
+                <div class="flex justify-end">
+                    <button class="red-border-btn small-btn">선택항목 삭제</button>
                 </div>
                 <PaginationButton />
             </div>
@@ -161,9 +161,9 @@
                         <tbody>
                             <tr>
                                 <th>user ID</th>
-                                <td><input type="text" name="" id=""></td>
+                                <td><input type="text" name="" id="" class="full-input"></td>
                                 <th>이름</th>
-                                <td><input type="text" name="" id=""></td>
+                                <td><input type="text" name="" id="" class="full-input"></td>
                             </tr>
                             <tr>
                                 <th>생년월일</th>
@@ -176,7 +176,7 @@
                                 </td>
                                 <th>성별</th>
                                 <td>
-                                    <select name="" id=""></select>
+                                    <select name="" id="" class="full-select"></select>
                                 </td>
                             </tr>
                         </tbody>
client/views/template/layoutTemplate/Vertical.vue
--- client/views/template/layoutTemplate/Vertical.vue
+++ client/views/template/layoutTemplate/Vertical.vue
@@ -11,7 +11,7 @@
                         <div class="content-titleZone">
                             <p class="box-title">호스트 선택</p>
                         </div>
-                        <select name="" id="">
+                        <select name="" id="" class="full-select">
                             <option value="">172.0.0.1</option>
                         </select>
                     </div>
@@ -28,9 +28,11 @@
             <div class="right-content flex80">
                 <div class="searchbar-zone">
                     <div class="flex justify-end align-center">
-                        <input type="date" name="" id="" class="square-date">
+                        <input type="date" name="" id="search-date" class="square-date"
+                            :class="{ 'date-placeholder': startDate }" data-placeholder="날짜 선택" @change="handleDateChange">
                         <span class="coupler">~</span>
-                        <input type="date" name="" id="" class="square-date">
+                        <input type="date" name="" id="search-date" class="square-date"
+                            :class="{ 'date-placeholder': endDate }" data-placeholder="날짜 선택" @change="handleDateChange">
                         <select name="" id="" class="square-select">
                             <option value="all">전체</option>
                         </select>
@@ -44,6 +46,17 @@
                 </div>
                 <div class="flex-column">
                     <div class="table-zone">
+                        <div class="list-info flex justify-between align-center">
+                        <div class="count-zone">
+                            <p>총 <span>40</span>건 중 <span>01</span>건 선택</p>
+                        </div>
+                        <div class="cunt-selectZone">
+                            <select name="" id="">
+                                <option value="">10개 보기</option>
+                                <option value="">20개 보기</option>
+                            </select>
+                        </div>
+                    </div>
                         <table class="list-table">
                             <colgroup>
                                 <col style="width: ;">
@@ -144,17 +157,24 @@
 <script>
 import PageNavigation from '../../component/PageNavigation.vue';
 import PaginationButton from '../../component/PaginationButton.vue';
-import FileTree from '../../component/FileTree.vue';
 import SvgIcon from '@jamescoyle/vue-icon';
 import { mdiMagnify } from '@mdi/js';
 export default {
     data() {
         return {
-            searchPath: mdiMagnify
+            searchPath: mdiMagnify,
+            startDate:true,
+            endDate:true
         }
     },
     methods: {
-
+        handleDateChange:function() {
+           if(this.startDate){
+            this.startDate = false
+           }else if(this.endDate){
+            this.endDate = false
+           }
+        } 
     },
     watch: {
 
@@ -164,7 +184,6 @@
     },
     components: {
         'PageNavigation': PageNavigation,
-        'FileTree': FileTree,
         'SvgIcon': SvgIcon,
         'PaginationButton': PaginationButton
     },
client/views/template/templateElement/AlertModal.vue
--- client/views/template/templateElement/AlertModal.vue
+++ client/views/template/templateElement/AlertModal.vue
@@ -1,17 +1,16 @@
 <template>
     <div v-show="isModalOpen" class="modal-wrapper">
-        <div class="modal-container alert-modal">
+        <div class="modal-container small-modal">
             <div class="modal-title text-ct">
-                <h2>모달 제목</h2>
+                <h2>{{title}}</h2>
             </div>
             <div class="modal-content-monthly">
-                <p class="alert-write text-ct">경고 메세지를 입력해주세요. <br />
-                    삭제,수정,추가 등등
+                <p class="alert-write text-ct"  v-html="message">                   
                 </p>
             </div>
-            <div class="modal-end flex justify-between">
-                <button class="gray-btn large-btn flex50" @click="closeModal">취소</button>
-                <button class="blue-btn large-btn flex50" @click="closeModal">확인</button>
+            <div class="modal-end flex justify-center">
+                <button class="gray-btn large-btn flex50" id="confirmCancle" @click="closeModal" v-show="confirmAt">취소</button>
+                <button class="blue-btn large-btn flex50" id="confirmOk" @click="closeModal">확인</button>
             </div>
         </div>
     </div>
@@ -20,11 +19,24 @@
 <script>
 
 export default {
+    props: {
+        title : {
+            type : String,
+            default : '모달 제목'
+        },
+        message : {
+            type : String,
+            default : '경고 메세지를 입력해주세요. <br /> 삭제,수정,추가 등등'
+        },
+    },
     data() {
         return {
-            isModalOpen: true,
+            isModalOpen: false,
             activeTab: 'tab1',
-            modalType: 'tab-modal'
+            modalType: 'tab-modal',
+            title : this.title,
+            message : this.message,
+            confirmAt : false
         }
     },
     methods: {
@@ -33,9 +45,54 @@
             this.activeTab = tabName;
         },
 
+        // 닫기
         closeModal:function(){
-            this.isModalOpen=false;
-        }
+            this.isModalOpen = false;
+        },
+
+        // 모달 호출
+        showModal : function(){
+            
+            this.confirmAt = false;
+            this.isModalOpen = true;
+            document.getElementById("confirmOk").focus()
+        },
+
+        // confirm 호출
+        showConfirm : async function(){
+            this.confirmAt = true;
+            this.isModalOpen = true;   
+            document.getElementById("confirmOk").focus()
+            const promise = new Promise((resolve, reject) => {               
+                document.getElementById("confirmCancle").addEventListener("click", async () => {   
+                    resolve('cancle')
+                });
+    
+                document.getElementById("confirmOk").addEventListener("click", async () => {                   
+                    resolve('ok')                 
+                });
+            });
+
+            return promise.then(
+                (id) => {         
+                    if(id == 'cancle'){
+                        return false;  
+                    }else if(id =='ok'){
+                        return true;          
+                    }
+                 
+                }     
+            );
+        },
+
+        setTitle : function(Title){
+            this.title = Title;
+        },
+
+        setMessage : function(message){
+            this.message = message;
+        },
+
     },
     watch: {
 
@@ -44,6 +101,7 @@
 
     },
     components: {
+
     },
     mounted() {
         console.log('main mounted');
client/views/template/templateElement/BtnPosition.vue
--- client/views/template/templateElement/BtnPosition.vue
+++ client/views/template/templateElement/BtnPosition.vue
@@ -3,7 +3,7 @@
         <div class="box">
             <p style="font-size:2rem; font-weight:800; margin-bottom:10px">타이틀 옆 버튼 위치</p>
             <!-- 여기서부터 복사 -->
-            <div class="flex-between">
+            <div class="flex justify-between align-center">
                 <p class="box-title">폴더 리스트</p>
                 <button class="darkg-border-btn small-btn">폴더추가</button>
             </div>
@@ -11,7 +11,7 @@
         <div class="box">
             <p style="font-size:2rem; font-weight:800; margin-bottom:10px">다운로드버튼 및 crud 한페이지에서 이루어지는 page의 조회 및 삭제</p>
             <!-- 여기서부터 복사 -->
-            <div class="flex-end">
+            <div class="flex justify-end">
                 <button class="green-border-btn small-btn">파일 다운로드</button>
             </div>
             <table class="list-table">
@@ -51,20 +51,29 @@
         <div class="box">
             <p style="font-size:2rem; font-weight:800; margin-bottom:10px">조건 검색과 같이 들어가는 버튼</p>
             <!-- 여기서부터 복사 -->
-            <div class="flex-between">
-                <div>
+            <div class="flex justify-between align-center">
+                <div class="flex20">
                     <button class="darkg-border-btn small-btn">선택이동</button>
                     <button class="darkg-border-btn small-btn">선택복사</button>
                     <button class="darkg-border-btn small-btn">선택삭제</button>
                 </div>
-                <div class="flex-end">
-                    <div class="search-bar flex">
-                        <select name="" id="">
-                            <option value="all">전체</option>
-                        </select>
-                        <input type="text" name="" id="">
+                <div class="flex justify-end flex80">
+                    <div class="search-bar">
+                        <div class="flex justify-end align-center">
+                            <input type="date" name="" id="" class="square-date">
+                            <span class="coupler">~</span>
+                            <input type="date" name="" id="" class="square-date">
+                            <select name="" id="" class="square-select">
+                                <option value="all">전체</option>
+                            </select>
+                            <div class="search-square">
+                                <input type="text" class="square-input" placeholder="Search">
+                                <button class="square-button">
+                                    <svg-icon type="mdi" :path="searchPath" class="square-icon"></svg-icon>
+                                </button>
+                            </div>
+                        </div>
                     </div>
-                    <button class="blue-btn small-btn">검색</button>
                 </div>
             </div>
             <table class="list-table">
@@ -137,7 +146,7 @@
                 </tbody>
             </table>
             <!-- 여기서부터 복사 -->
-            <div class="flex-end">
+            <div class="flex justify-end">
                 <button class="darkg-btn small-btn">등록</button>
             </div>
         </div>
@@ -160,10 +169,10 @@
                     <tr>
                         <th>생년월일</th>
                         <td>
-                            <div class="flex">
-                                <select name="" id=""></select>
-                                <select name="" id=""></select>
-                                <select name="" id=""></select>
+                            <div class="flex justify-between">
+                                <select name="" id="" class="flex30"></select>
+                                <select name="" id="" class="flex30"></select>
+                                <select name="" id="" class="flex30"></select>
                             </div>
                         </td>
                         <th>성별</th>
@@ -174,7 +183,7 @@
                 </tbody>
             </table>
             <!-- 여기서부터 복사 -->
-            <div class="flex-end">
+            <div class="flex justify-end">
                 <button class="red-border-btn small-btn">삭제</button>
                 <button class="darkg-border-btn small-btn">목록</button>
                 <button class="green-border-btn small-btn">수정</button>
@@ -184,10 +193,12 @@
 </template>
 
 <script>
-
+import SvgIcon from '@jamescoyle/vue-icon';
+import { mdiMagnify } from '@mdi/js';
 export default {
     data() {
         return {
+            searchPath: mdiMagnify
         }
     },
     methods: {
@@ -200,6 +211,7 @@
 
     },
     components: {
+        'SvgIcon': SvgIcon
     },
     mounted() {
     }
client/views/template/templateElement/BtnTable.vue
--- client/views/template/templateElement/BtnTable.vue
+++ client/views/template/templateElement/BtnTable.vue
@@ -11,7 +11,8 @@
                 </select>
             </div>
         </div>
-        <table class="list-table">
+        <div class="table-zone">
+            <table class="list-table">
             <colgroup>
                 <col style="width: ;">
                 <col style="width: ;">
@@ -20,11 +21,11 @@
             </colgroup>
             <thead>
                 <tr>
-                    <th>No <button class="tp-btn"><svg-icon type="mdi" :path="settingPath" :color="'#213f99'"></svg-icon></button></th>
-                    <th>user ID <button class="tp-btn"><svg-icon type="mdi" :path="settingPath" :color="'#213f99'"></svg-icon></button></th>
-                    <th>이름 <button class="tp-btn"><svg-icon type="mdi" :path="settingPath" :color="'#213f99'"></svg-icon></button></th>
-                    <th>생년월일 <button class="tp-btn"><svg-icon type="mdi" :path="settingPath" :color="'#213f99'"></svg-icon></button></th>
-                    <th>성별 <button class="tp-btn"><svg-icon type="mdi" :path="settingPath" :color="'#213f99'"></svg-icon></button></th>
+                    <th>No <button class="tp-btn"><svg-icon type="mdi" :width="15" :height="15" :path="settingPath" :color="'#213f99'"></svg-icon></button></th>
+                    <th>user ID <button class="tp-btn"><svg-icon type="mdi" :width="15" :height="15" :path="settingPath" :color="'#213f99'"></svg-icon></button></th>
+                    <th>이름 <button class="tp-btn"><svg-icon type="mdi" :width="15" :height="15" :path="settingPath" :color="'#213f99'"></svg-icon></button></th>
+                    <th>생년월일 <button class="tp-btn"><svg-icon type="mdi" :width="15" :height="15" :path="settingPath" :color="'#213f99'"></svg-icon></button></th>
+                    <th>성별 <button class="tp-btn"><svg-icon type="mdi" :width="15" :height="15" :path="settingPath" :color="'#213f99'"></svg-icon></button></th>
                 </tr>
             </thead>
             <tbody>
@@ -44,6 +45,7 @@
                 </tr>
             </tbody>
         </table>
+        </div>
     </div>
 </template>
 
client/views/template/templateElement/DefaultSearchBar.vue
--- client/views/template/templateElement/DefaultSearchBar.vue
+++ client/views/template/templateElement/DefaultSearchBar.vue
@@ -1,9 +1,9 @@
 <template>
     <div class="search-bar">
         <div class="flex justify-end align-center">
-            <input type="date" name="" id="" class="square-date">
+            <input type="date" name="" id="search-date" class="square-date" :class="{ 'date-placeholder': startDate }" data-placeholder="날짜 선택" @change="handleDateChange">
             <span class="coupler">~</span>
-            <input type="date" name="" id="" class="square-date">
+            <input type="date" name="" id="search-date" class="square-date" :class="{ 'date-placeholder': endDate }" data-placeholder="날짜 선택" @change="handleDateChange">
             <select name="" id="" class="square-select">
                 <option value="all">전체</option>
             </select>
@@ -23,11 +23,19 @@
 export default {
     data() {
         return {
-            searchPath: mdiMagnify
+            searchPath: mdiMagnify,
+            startDate:true,
+            endDate:true
         }
     },
     methods: {
-
+        handleDateChange:function() {
+           if(this.startDate){
+            this.startDate = false
+           }else if(this.endDate){
+            this.endDate = false
+           }
+        } 
     },
     watch: {
 
 
client/views/template/templateElement/FileTree.vue (added)
+++ client/views/template/templateElement/FileTree.vue
@@ -0,0 +1,59 @@
+<template>
+    <div class="flex justfiy-center">
+        <Tree :value="nodes" :loadingMode="'icon'" class="flex20"></Tree>
+    </div>
+</template>
+
+<script>
+import Tree from 'primevue/tree';
+import SvgIcon from '@jamescoyle/vue-icon';
+import { mdiFolderOpenOutline, mdiFileOutline } from '@mdi/js';
+
+export default {
+    data() {
+        return {
+            nodes: [
+                {
+                    key: 0,
+                    label: "test1",
+                    nodeIcon:'<svg-icon type="mdi" :path="folderPath"></svg-icon>',
+                    children: [
+                        { key: 0 - 0, label: "test0.1", data: "https://www.google.com", type: 'url',nodeIcon:'  <svg-icon type="mdi" :path="filePath"></svg-icon>' },
+                        { key: 0 - 1, label: "test0.2", data: "https://www.google.com", type: 'url',nodeIcon:'  <svg-icon type="mdi" :path="filePath"></svg-icon>' },
+                        { key: 0 - 2, label: "test0.3", data: "https://www.google.com", type: 'url',nodeIcon:'  <svg-icon type="mdi" :path="filePath"></svg-icon>' },
+                        { key: 0 - 3, label: "test0.4", data: "https://www.google.com", type: 'url',nodeIcon:'  <svg-icon type="mdi" :path="filePath"></svg-icon>' }
+                    ]
+                },
+                {
+                    key: 1,
+                    label: "test2",
+                    nodeIcon:'<svg-icon type="mdi" :path="folderPath"></svg-icon>',
+                    children: [
+                        { key: 1 - 0, label: "test1.1", data: "https://www.google.com", type: 'url',nodeIcon:'  <svg-icon type="mdi" :path="filePath"></svg-icon>' },
+                        { key: 1 - 1, label: "test1.2", data: "https://www.google.com", type: 'url',nodeIcon:'  <svg-icon type="mdi" :path="filePath"></svg-icon>' },
+                        { key: 1 - 2, label: "test1.3", data: "https://www.google.com", type: 'url',nodeIcon:'  <svg-icon type="mdi" :path="filePath"></svg-icon>' },
+                        { key: 1 - 3, label: "test1.4", data: "https://www.google.com", type: 'url',nodeIcon:'  <svg-icon type="mdi" :path="filePath"></svg-icon>' }
+                    ]
+                },
+            ],
+            folderPath:mdiFolderOpenOutline,
+            filePath:mdiFolderOpenOutline,
+        }
+    },
+    methods: {
+    },
+    watch: {
+
+    },
+    computed: {
+
+    },
+    components: {
+        'Tree': Tree,
+        'SvgIcon':SvgIcon
+    },
+    mounted() {
+        console.log('main mounted');
+    }
+}
+</script>(No newline at end of file)
client/views/template/templateElement/FormModal.vue
--- client/views/template/templateElement/FormModal.vue
+++ client/views/template/templateElement/FormModal.vue
@@ -143,8 +143,8 @@
         return {
             isModalOpen: true,
             activeTab: 'tab1',
-            // modalType: 'form-modal'
-            modalType: 'tab-modal'
+            // modalType: 'form-modal',
+             modalType: 'tab-modal'
         }
     },
     methods: {
client/views/template/templateElement/FormTable.vue
--- client/views/template/templateElement/FormTable.vue
+++ client/views/template/templateElement/FormTable.vue
@@ -1,6 +1,7 @@
 <template>
     <div class="table-zone">
         <table class="form-table">
+            <!-- col 꼭 너비 기재해야함! 그래야 100%로 차지함 -->
             <colgroup>
                 <col style="width: ;">
                 <col style="width: ;">
client/views/template/templateElement/FormTable2.vue
--- client/views/template/templateElement/FormTable2.vue
+++ client/views/template/templateElement/FormTable2.vue
@@ -1,6 +1,7 @@
 <template>
     <div class="table-zone">
         <table class="form-table2">
+                        <!-- col 꼭 너비 기재해야함! 그래야 100%로 차지함 -->
             <colgroup>
                 <col style="width: ;">
                 <col style="width: ;">
 
client/views/template/templateElement/Icon.vue (added)
+++ client/views/template/templateElement/Icon.vue
@@ -0,0 +1,36 @@
+<template>
+    <div class="icon-zone">
+        <p class="flex justify-center align-center state green"><svg-icon type="mdi" :width="21" :height="21" :path="checkPath"></svg-icon> <span>성공</span></p>
+        <p class="flex justify-center align-center state red"><svg-icon type="mdi" :width="21" :height="21" :path="xPath"></svg-icon> <span>실패</span></p>
+        <p class="flex justify-center align-center state orange"><img src="../../../resources/img/loading_mini_icon.png" alt=""> <span>진행중</span></p>
+    </div>
+</template>
+
+<script>
+import SvgIcon from '@jamescoyle/vue-icon';
+import { mdiCheckCircle, mdiCloseCircle } from '@mdi/js';
+export default {
+    data() {
+        return {
+            checkPath: mdiCheckCircle,
+            xPath: mdiCloseCircle,
+
+        }
+    },
+    methods: {
+
+    },
+    watch: {
+
+    },
+    computed: {
+
+    },
+    components: {
+        'SvgIcon': SvgIcon
+    },
+    mounted() {
+        console.log('main mounted');
+    }
+}
+</script>
 
client/views/template/templateElement/ListModal.vue (added)
+++ client/views/template/templateElement/ListModal.vue
@@ -0,0 +1,116 @@
+<template>
+    <div v-show="isModalOpen" class="modal-wrapper">
+        <div class="modal-container">
+            <div class="modal-title">
+                <div class="flex justify-between align-center">
+                    <h2>센서 알람 설정</h2>
+                    <button class="close-btn" @click="closeModal">X</button>
+                </div>
+            </div>
+            <div class="modal-content-monthly">
+                <div class="table-zone">
+                    <table class="list-table">
+                        <!-- col 꼭 너비 기재해야함! 그래야 100%로 차지함 -->
+                        <colgroup>
+                            <col style="width: 22.5%;">
+                            <col style="width: 22.5%;">
+                            <col style="width: 22.5%;">
+                            <col style="width: 22.5%;">
+                            <col style="width: 10%;">
+                        </colgroup>
+                        <thead>
+                            <tr>
+                                <th>컬럼명</th>
+                                <th>한글명</th>
+                                <th>MIN</th>
+                                <th>MAX</th>
+                                <th>사용여부</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            <tr>
+                                <td>SENS1</td>
+                                <td><input type="text" name="" id="" class="full-input" value="벨브1"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="checkbox" name="" id=""></td>
+                            </tr>
+                            <tr>
+                                <td>SENS2</td>
+                                <td><input type="text" name="" id="" class="full-input" value="벨브2"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="checkbox" name="" id=""></td>
+                            </tr>
+                            <tr>
+                                <td>SENS3</td>
+                                <td><input type="text" name="" id="" class="full-input" value="벨브3"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="checkbox" name="" id=""></td>
+                            </tr>
+                            <tr>
+                                <td>SENS4</td>
+                                <td><input type="text" name="" id="" class="full-input" value="벨브4"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="checkbox" name="" id=""></td>
+                            </tr>
+                            <tr>
+                                <td>SENS5</td>
+                                <td><input type="text" name="" id="" class="full-input" value="벨브5"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="checkbox" name="" id=""></td>
+                            </tr>
+                            <tr>
+                                <td>SENS6</td>
+                                <td><input type="text" name="" id="" class="full-input" value="벨브6"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="text" name="" id="" class="full-input"/></td>
+                                <td><input type="checkbox" name="" id=""></td>
+                            </tr>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="modal-end flex justify-end">
+                <button v-show="modalType === 'form-modal'" class="orange-btn small-btn">접속</button>
+                <button v-show="modalType === 'tab-modal'" class="blue-btn small-btn">확인</button>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+
+export default {
+    data() {
+        return {
+            isModalOpen: true,
+            activeTab: 'tab1',
+            modalType: 'tab-modal'
+        }
+    },
+    methods: {
+        // 탭 변경
+        showTab: function (tabName) {
+            this.activeTab = tabName;
+        },
+        closeModal: function () {
+            this.isModalOpen = false;
+        }
+    },
+    watch: {
+
+    },
+    computed: {
+
+    },
+    components: {
+    },
+    mounted() {
+        console.log('main mounted');
+    }
+}
+</script>(No newline at end of file)
client/views/template/templateElement/ListTable.vue
--- client/views/template/templateElement/ListTable.vue
+++ client/views/template/templateElement/ListTable.vue
@@ -1,6 +1,6 @@
 <template>
     <div class="table-zone">
-        <div class="flex justify-between align-center">
+        <div class="list-info flex justify-between align-center">
             <div class="count-zone">
                 <p>총 <span>40</span>건 중 <span>01</span>건 선택</p>
             </div>
@@ -12,6 +12,7 @@
             </div>
         </div>
         <table class="list-table">
+            <!-- col 꼭 너비 기재해야함! 그래야 100%로 차지함 -->
             <colgroup>
                 <col style="width: ;">
                 <col style="width: ;">
@@ -42,6 +43,9 @@
                     <td>1999.01.01</td>
                     <td>여</td>
                 </tr>
+                <tr v-if="postList === 0">
+                    <td colspan="5" class="no-list">검색조건에 해당하는 데이터가 없습니다.</td>
+                </tr>
             </tbody>
         </table>
     </div>
Add a comment
List