Merge branch 'main' of http://192.168.0.251:3000/localnet/localhost-front
This commit is contained in:
commit
f020d33fe2
143
index.html
143
index.html
@ -1,83 +1,88 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="" class="light-style layout-navbar-fixed layout-menu-fixed layout-compact" dir="ltr"
|
<html
|
||||||
data-theme="theme-default" data-assets-path="/" data-template="vertical-menu-template" data-style="light">
|
lang=""
|
||||||
|
class="light-style layout-navbar-fixed layout-menu-fixed layout-compact"
|
||||||
|
dir="ltr"
|
||||||
|
data-theme="theme-default"
|
||||||
|
data-assets-path="/"
|
||||||
|
data-template="vertical-menu-template"
|
||||||
|
data-style="light"
|
||||||
|
>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
<head>
|
<!-- favicon -->
|
||||||
<meta charset="UTF-8" />
|
<link rel="apple-touch-icon" sizes="180x180" href="/img/favicon/apple-touch-icon.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<link rel="icon" type="image/png" sizes="32x32" href="img/favicon/favicon-32x32.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon/favicon-16x16.png" />
|
||||||
|
<link rel="manifest" href="/img/favicon/site.webmanifest" />
|
||||||
|
|
||||||
<!-- favicon -->
|
<meta content="" name="description" />
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/img/favicon/apple-touch-icon.png" />
|
<meta content="" name="keywords" />
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="img/favicon/favicon-32x32.png" />
|
<title>LOCALNET</title>
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon/favicon-16x16.png" />
|
|
||||||
<link rel="manifest" href="/img/favicon/site.webmanifest" />
|
|
||||||
|
|
||||||
<meta content="" name="description" />
|
<!-- Fonts -->
|
||||||
<meta content="" name="keywords" />
|
<link rel="preconnect" href="https://fonts.googleapis.com/" />
|
||||||
<title>LOCALNET</title>
|
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin />
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
|
||||||
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- Fonts -->
|
<link rel="stylesheet" href="/css/font.css" />
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com/" />
|
<link rel="stylesheet" href="/css/custom.css" />
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin />
|
|
||||||
<link
|
|
||||||
href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
|
|
||||||
rel="stylesheet" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/css/font.css" />
|
<!-- Icons -->
|
||||||
<link rel="stylesheet" href="/css/custom.css" />
|
<link rel="stylesheet" href="/vendor/fonts/boxicons.css" />
|
||||||
|
<link rel="stylesheet" href="/vendor/fonts/fontawesome.css" />
|
||||||
|
<link rel="stylesheet" href="/vendor/fonts/flag-icons.css" />
|
||||||
|
|
||||||
<!-- Icons -->
|
<!-- Core CSS -->
|
||||||
<link rel="stylesheet" href="/vendor/fonts/boxicons.css" />
|
<link rel="stylesheet" href="/vendor/css/rtl/core.css" class="template-customizer-core-css" />
|
||||||
<link rel="stylesheet" href="/vendor/fonts/fontawesome.css" />
|
<link rel="stylesheet" href="/vendor/css/rtl/theme-default.css" class="template-customizer-theme-css" />
|
||||||
<link rel="stylesheet" href="/vendor/fonts/flag-icons.css" />
|
<link rel="stylesheet" href="/css/demo.css" />
|
||||||
|
|
||||||
<!-- Core CSS -->
|
<!-- Vendors CSS -->
|
||||||
<link rel="stylesheet" href="/vendor/css/rtl/core.css" class="template-customizer-core-css" />
|
<link rel="stylesheet" href="/vendor/libs/perfect-scrollbar/perfect-scrollbar.css" />
|
||||||
<link rel="stylesheet" href="/vendor/css/rtl/theme-default.css" class="template-customizer-theme-css" />
|
<link rel="stylesheet" href="/vendor/libs/typeahead-js/typeahead.css" />
|
||||||
<link rel="stylesheet" href="/css/demo.css" />
|
<link rel="stylesheet" href="/vendor/libs/apex-charts/apex-charts.css" />
|
||||||
|
|
||||||
<!-- Vendors CSS -->
|
<!-- Helpers -->
|
||||||
<link rel="stylesheet" href="/vendor/libs/perfect-scrollbar/perfect-scrollbar.css" />
|
<script src="/vendor/js/helpers.js"></script>
|
||||||
<link rel="stylesheet" href="/vendor/libs/typeahead-js/typeahead.css" />
|
<!--! Template customizer & Theme config files MUST be included after core stylesheets and helpers.js in the <head> section -->
|
||||||
<link rel="stylesheet" href="/vendor/libs/apex-charts/apex-charts.css" />
|
<!--? Template customizer: To hide customizer set displayCustomizer value false in config.js. -->
|
||||||
|
<!-- <script src="/vendor/js/template-customizer.js"></script> -->
|
||||||
|
<!--? Config: Mandatory theme config file contain global vars & default theme options, Set your preferred theme option in this file. -->
|
||||||
|
<script src="/js/config.js"></script>
|
||||||
|
|
||||||
<!-- Helpers -->
|
<!-- Include the highlight.js library -->
|
||||||
<script src="/vendor/js/helpers.js"></script>
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css" rel="stylesheet" />
|
||||||
<!--! Template customizer & Theme config files MUST be included after core stylesheets and helpers.js in the <head> section -->
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
||||||
<!--? Template customizer: To hide customizer set displayCustomizer value false in config.js. -->
|
</head>
|
||||||
<script src="/vendor/js/template-customizer.js"></script>
|
|
||||||
<!--? Config: Mandatory theme config file contain global vars & default theme options, Set your preferred theme option in this file. -->
|
|
||||||
<script src="/js/config.js"></script>
|
|
||||||
|
|
||||||
<!-- Include the highlight.js library -->
|
<body>
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css"
|
<div id="app"></div>
|
||||||
rel="stylesheet">
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
<!-- Core JS -->
|
||||||
<div id="app"></div>
|
<!-- build:js assets/vendor/js/core.js -->
|
||||||
|
<script src="/vendor/libs/jquery/jquery.js"></script>
|
||||||
|
<script src="/vendor/libs/popper/popper.js"></script>
|
||||||
|
<script src="/vendor/js/bootstrap.js"></script>
|
||||||
|
<script src="/vendor/libs/perfect-scrollbar/perfect-scrollbar.js"></script>
|
||||||
|
<script src="/vendor/libs/hammer/hammer.js"></script>
|
||||||
|
<script src="/vendor/libs/i18n/i18n.js"></script>
|
||||||
|
<script src="/vendor/libs/typeahead-js/typeahead.js"></script>
|
||||||
|
<!-- <script src="/vendor/js/menu.js"></script> -->
|
||||||
|
<!-- endbuild -->
|
||||||
|
|
||||||
<!-- Core JS -->
|
<!-- Vendors JS -->
|
||||||
<!-- build:js assets/vendor/js/core.js -->
|
<script src="/vendor/libs/apex-charts/apexcharts.js"></script>
|
||||||
<script src="/vendor/libs/jquery/jquery.js"></script>
|
<!-- Main JS -->
|
||||||
<script src="/vendor/libs/popper/popper.js"></script>
|
<!-- <script src="/js/main.js"></script> -->
|
||||||
<script src="/vendor/js/bootstrap.js"></script>
|
<!-- Page JS -->
|
||||||
<script src="/vendor/libs/perfect-scrollbar/perfect-scrollbar.js"></script>
|
<!-- <script src="/js/dashboards-analytics.js"></script> -->
|
||||||
<script src="/vendor/libs/hammer/hammer.js"></script>
|
|
||||||
<script src="/vendor/libs/i18n/i18n.js"></script>
|
|
||||||
<script src="/vendor/libs/typeahead-js/typeahead.js"></script>
|
|
||||||
<!-- <script src="/vendor/js/menu.js"></script> -->
|
|
||||||
<!-- endbuild -->
|
|
||||||
|
|
||||||
<!-- Vendors JS -->
|
<script type="module" src="/src/main.js"></script>
|
||||||
<script src="/vendor/libs/apex-charts/apexcharts.js"></script>
|
</body>
|
||||||
<!-- Main JS -->
|
</html>
|
||||||
<!-- <script src="/js/main.js"></script> -->
|
|
||||||
<!-- Page JS -->
|
|
||||||
<!-- <script src="/js/dashboards-analytics.js"></script> -->
|
|
||||||
|
|
||||||
<script type="module" src="/src/main.js"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
|
|||||||
@ -4,9 +4,10 @@
|
|||||||
"title": "타이틀1",
|
"title": "타이틀1",
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. ",
|
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. ",
|
||||||
"date": "2024.12.16 18:01",
|
"date": "2024.12.16 18:01",
|
||||||
"img": "https://picsum.photos/id/21/250/250",
|
"img": "https://picsum.photos/id/21/229/229",
|
||||||
"viewCount": 10,
|
"viewCount": 10,
|
||||||
"cmtCount": 2
|
"cmtCount": 2,
|
||||||
|
"type": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
@ -14,14 +15,16 @@
|
|||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
||||||
"date": "2024.12.16 18:02",
|
"date": "2024.12.16 18:02",
|
||||||
"viewCount": 10,
|
"viewCount": 10,
|
||||||
"cmtCount": 2
|
"cmtCount": 2,
|
||||||
|
"type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"title": "타이틀3",
|
"title": "타이틀3",
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
||||||
"date": "2024.12.16 18:03",
|
"date": "2024.12.16 18:03",
|
||||||
"img": "https://picsum.photos/id/23/250/250"
|
"img": "https://picsum.photos/id/23/250/250",
|
||||||
|
"type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 4,
|
"id": 4,
|
||||||
@ -30,42 +33,48 @@
|
|||||||
"date": "2024.12.16 18:04",
|
"date": "2024.12.16 18:04",
|
||||||
"img": "https://picsum.photos/id/24/250/250",
|
"img": "https://picsum.photos/id/24/250/250",
|
||||||
"viewCount": 100,
|
"viewCount": 100,
|
||||||
"cmtCount": 22
|
"cmtCount": 22,
|
||||||
|
"type": 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 5,
|
"id": 5,
|
||||||
"title": "타이틀5",
|
"title": "타이틀5",
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
||||||
"date": "2024.12.16 18:05",
|
"date": "2024.12.16 18:05",
|
||||||
"img": "https://picsum.photos/id/25/250/250"
|
"img": "https://picsum.photos/id/25/250/250",
|
||||||
|
"type": 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"title": "타이틀6",
|
"title": "타이틀6",
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
||||||
"date": "2024.12.16 18:06",
|
"date": "2024.12.16 18:06",
|
||||||
"img": "https://picsum.photos/id/26/250/250"
|
"img": "https://picsum.photos/id/26/250/250",
|
||||||
|
"type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"title": "타이틀7",
|
"title": "타이틀7",
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
||||||
"date": "2024.12.16 18:07",
|
"date": "2024.12.16 18:07",
|
||||||
"img": "https://picsum.photos/id/27/250/250"
|
"img": "https://picsum.photos/id/27/250/250",
|
||||||
|
"type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 8,
|
"id": 8,
|
||||||
"title": "타이틀8",
|
"title": "타이틀8",
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
||||||
"date": "2024.12.16 18:08",
|
"date": "2024.12.16 18:08",
|
||||||
"img": "https://picsum.photos/id/28/250/250"
|
"img": "https://picsum.photos/id/28/250/250",
|
||||||
|
"type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 9,
|
"id": 9,
|
||||||
"title": "타이틀9",
|
"title": "타이틀9",
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
||||||
"date": "2024.12.16 18:09",
|
"date": "2024.12.16 18:09",
|
||||||
"img": "https://picsum.photos/id/29/250/250"
|
"img": "https://picsum.photos/id/29/229/229",
|
||||||
|
"type": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10,
|
"id": 10,
|
||||||
@ -74,34 +83,7 @@
|
|||||||
"date": "2024.12.16 18:10",
|
"date": "2024.12.16 18:10",
|
||||||
"img": "https://picsum.photos/id/210/250/250",
|
"img": "https://picsum.photos/id/210/250/250",
|
||||||
"viewCount": 22,
|
"viewCount": 22,
|
||||||
"cmtCount": 33
|
"cmtCount": 33,
|
||||||
},
|
"type": 3
|
||||||
{
|
|
||||||
"id": 11,
|
|
||||||
"title": "타이틀11",
|
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
|
||||||
"date": "2024.12.16 18:11",
|
|
||||||
"img": "https://picsum.photos/id/211/250/250"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 12,
|
|
||||||
"title": "타이틀12",
|
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
|
||||||
"date": "2024.12.16 18:12",
|
|
||||||
"img": "https://picsum.photos/id/212/250/250"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 13,
|
|
||||||
"title": "타이틀13",
|
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
|
||||||
"date": "2024.12.16 18:13",
|
|
||||||
"img": "https://picsum.photos/id/213/250/250"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 14,
|
|
||||||
"title": "타이틀14",
|
|
||||||
"content": "헌법재판소가 윤석열 대통령 탄핵심판 사건의 첫 변론 준비 기일을 27일 오후 2시에 연다고 밝혔다. 헌재는 이번 사건의 주심 배당도 마쳤지만 비공개 원칙에 따라 공개하지 않기로 했다.이진 헌재 공보관은 16일 언론브리핑에서 “(윤 대통령 탄핵 사건을) 변론 준비 절차에 회부하고, 1차 변론 준비 기일을 27일 오후 2시로 지정했다”고 밝혔다. 이어 “변론 준비 기일에서 검찰과 경찰 등의 수사기록을 조기에 확보하기로 했다”고 덧붙였다. 헌법재판관들은 이날 오전 10시에 재판관 회의를 열고 이같은 내용을 결정했다.",
|
|
||||||
"date": "2024.12.16 18:14",
|
|
||||||
"img": "https://picsum.photos/id/214/250/250"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<ul class="list-unstyled">
|
<ul class="list-unstyled">
|
||||||
<li>
|
<li>
|
||||||
<BoardProfile profileName=곤데리 :showDetail="false" />
|
<BoardProfile profileName=곤데리 :showDetail="false" :author="true" />
|
||||||
<div class="mt-2">저도 궁금합니다.</div>
|
<div class="mt-2">저도 궁금합니다.</div>
|
||||||
<button type="button" class="btn btn-text-primary" @click="toggleComment">답변달기</button>
|
<button type="button" class="btn btn-text-primary" @click="toggleComment">답변달기</button>
|
||||||
<BoardComentArea v-if="comment" />
|
<BoardComentArea v-if="comment" />
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 좋아요 섹션 -->
|
<!-- 좋아요 섹션 -->
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<BoardRecommendBtn />
|
<BoardRecommendBtn :bigBtn="true" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center flex-wrap">
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div class="avatar me-2" v-if="unknown">
|
<div class="avatar me-2" v-if="unknown">
|
||||||
<img src="/img/avatars/2.png" alt="Avatar" class="rounded-circle" />
|
<img src="/img/avatars/2.png" alt="Avatar" class="rounded-circle" />
|
||||||
@ -22,7 +22,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ms-auto">
|
<div class="ms-auto btn-area">
|
||||||
<template v-if="showDetail">
|
<template v-if="showDetail">
|
||||||
<button class="btn btn-label-primary btn-icon">
|
<button class="btn btn-label-primary btn-icon">
|
||||||
<i class='bx bx-edit-alt'></i>
|
<i class='bx bx-edit-alt'></i>
|
||||||
@ -32,6 +32,14 @@
|
|||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
|
<template v-if="author">
|
||||||
|
<button class="btn author btn-label-primary btn-icon">
|
||||||
|
<i class='bx bx-edit-alt'></i>
|
||||||
|
</button>
|
||||||
|
<button class="btn author btn-label-primary btn-icon">
|
||||||
|
<i class='bx bx-trash' ></i>
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
<BoardRecommendBtn :likeClicked="true" :dislikeClicked="false"/>
|
<BoardRecommendBtn :likeClicked="true" :dislikeClicked="false"/>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
@ -53,6 +61,10 @@ defineProps({
|
|||||||
showDetail : {
|
showDetail : {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true,
|
default: true,
|
||||||
|
},
|
||||||
|
author : {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -66,5 +78,16 @@ defineProps({
|
|||||||
|
|
||||||
.ms-auto button + button {
|
.ms-auto button + button {
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn.author {
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width:450px) {
|
||||||
|
.btn-area {
|
||||||
|
margin-top: 10px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<button class="btn btn-label-primary btn-icon" :class="likeClicked ? 'clicked' : '' ">
|
<button class="btn btn-label-primary btn-icon" :class="likeClicked ? 'clicked' : '', bigBtn ? 'big' : '' ">
|
||||||
<i class="fa-regular fa-thumbs-up"></i> <span class="num">1</span>
|
<i class="fa-regular fa-thumbs-up"></i> <span class="num">1</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-label-danger btn-icon" :class="dislikeClicked ? 'clicked' : '' ">
|
<button class="btn btn-label-danger btn-icon" :class="dislikeClicked ? 'clicked' : '', bigBtn ? 'big' : '' ">
|
||||||
<i class="fa-regular fa-thumbs-down"></i> <span class="num">1</span>
|
<i class="fa-regular fa-thumbs-down"></i> <span class="num">1</span>
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
@ -16,6 +16,10 @@ defineProps({
|
|||||||
dislikeClicked : {
|
dislikeClicked : {
|
||||||
type : Boolean,
|
type : Boolean,
|
||||||
default : false,
|
default : false,
|
||||||
|
},
|
||||||
|
bigBtn : {
|
||||||
|
type :Boolean,
|
||||||
|
default : false,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@ -46,4 +50,23 @@ defineProps({
|
|||||||
.btn-label-primary.clicked span {
|
.btn-label-primary.clicked span {
|
||||||
color : #fff;
|
color : #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 55px;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn.big {
|
||||||
|
width: 70px;
|
||||||
|
height: 70px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width:450px) {
|
||||||
|
.btn {
|
||||||
|
width: 50px;
|
||||||
|
height: 20px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@ -1,18 +1,21 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="" role="button">
|
<div class="" role="button">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="d-flex">
|
<div class="d-sm-flex">
|
||||||
<div v-if="data.item.img" class="col-3">
|
<div v-if="img">
|
||||||
<img class="card-img card-img-left" :src="data.item.img" alt="" />
|
<img class="card-img card-img-left" :src="img" alt="" style="width: 200px; height: 200px; object-fit: cover" />
|
||||||
</div>
|
</div>
|
||||||
<div lass="col-9">
|
<div class="col">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">{{ data.item.title }}</h5>
|
<h5 class="card-title align-items-center">
|
||||||
<p class="card-text str_wrap">
|
<slot name="badgeType"></slot>
|
||||||
{{ data.item.content }}
|
{{ title }}
|
||||||
|
</h5>
|
||||||
|
<p class="card-text str_wrap pt-5">
|
||||||
|
{{ content }}
|
||||||
</p>
|
</p>
|
||||||
<p class="card-text">
|
<p class="card-text">
|
||||||
<small class="text-muted">{{ data.item.date }}</small>
|
<small class="text-muted">{{ date }}</small>
|
||||||
<slot name="optInfo"></slot>
|
<slot name="optInfo"></slot>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -23,8 +26,34 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
const data = defineProps(['item']);
|
// const data = defineProps(['item']);
|
||||||
|
const prop = defineProps({
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: '제목',
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
type: String,
|
||||||
|
default: '내용',
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
date: {
|
||||||
|
type: String,
|
||||||
|
default: 'date',
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
img: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const colSetting = () => {
|
||||||
|
img ? 'col-9' : '';
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.str_wrap {
|
.str_wrap {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
@ -7,13 +7,13 @@
|
|||||||
<!-- <li class="page-item prev">
|
<!-- <li class="page-item prev">
|
||||||
<a class="page-link" href="javascript:void(0);"><i class="tf-icon bx bx-chevron-left bx-sm"></i></a>
|
<a class="page-link" href="javascript:void(0);"><i class="tf-icon bx bx-chevron-left bx-sm"></i></a>
|
||||||
</li> -->
|
</li> -->
|
||||||
<li class="page-item">
|
<li class="page-item active">
|
||||||
<a class="page-link" href="javascript:void(0);">1</a>
|
<a class="page-link" href="javascript:void(0);">1</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
<a class="page-link" href="javascript:void(0);">2</a>
|
<a class="page-link" href="javascript:void(0);">2</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="page-item active">
|
<li class="page-item">
|
||||||
<a class="page-link" href="javascript:void(0);">3</a>
|
<a class="page-link" href="javascript:void(0);">3</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="page-item">
|
<li class="page-item">
|
||||||
|
|||||||
@ -1,12 +1,27 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="input-group mb-3">
|
<div class="input-group mb-3 d-flex">
|
||||||
<div class="input-group-text">
|
<input type="text" class="form-control bg-white" placeholder="Search" @change="search" />
|
||||||
<!-- <input class="form-check-input mt-0" type="checkbox" value="" aria-label="Checkbox for following text input" /> -->
|
<button type="button" class="btn btn-primary"><i class="bx bx-search bx-md"></i></button>
|
||||||
<i class="bx bx-search bx-md"></i>
|
|
||||||
</div>
|
|
||||||
<input type="text" class="form-control" placeholder="Search" />
|
|
||||||
<button type="button" class="btn btn-primary">검색</button>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup></script>
|
<script setup>
|
||||||
|
import { defineEmits } from 'vue';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
maxlength: {
|
||||||
|
type: Number,
|
||||||
|
default: 30,
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const emits = defineEmits(['update:data']);
|
||||||
|
const search = function (event) {
|
||||||
|
//Type Number 일때 maxlength 적용 안됨 방지
|
||||||
|
if (event.target.value.length > props.maxlength) {
|
||||||
|
event.target.value = event.target.value.slice(0, props.maxlength);
|
||||||
|
}
|
||||||
|
emits('update:data', event.target.value);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|||||||
@ -1,22 +1,29 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="container-xxl flex-grow-1 container-p-y">
|
<div class="container-xxl flex-grow-1 container-p-y">
|
||||||
<search-bar />
|
<search-bar @update:data="search" />
|
||||||
|
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="mt-8">
|
<div class="mt-8">
|
||||||
<router-link to="/board/write">
|
<router-link to="/board/write">
|
||||||
<button type="button" class="btn btn-primary float-end">글쓰기</button>
|
<button class="btn btn-label-primary btn-icon float-end">
|
||||||
|
<i class="bx bx-edit-alt"></i>
|
||||||
|
</button>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
<template v-for="(item, index) in list" :key="item.id">
|
<template v-for="(item, index) in list" :key="item.id">
|
||||||
<board-card :item="item" @click="goDetail(item.id)">
|
<board-card :title="item.title" :content="item.content" :img="item.img" :date="item.date" @click="goDetail(item.id)">
|
||||||
|
<template #badgeType>
|
||||||
|
<span v-if="item.type == 1" class="badge rounded-pill bg-label-danger">공지</span>
|
||||||
|
<span v-else-if="item.type == 2" class="badge rounded-pill bg-label-primary">자유</span>
|
||||||
|
<span v-else-if="item.type == 3" class="badge rounded-pill bg-label-success">익명</span>
|
||||||
|
</template>
|
||||||
<template #optInfo>
|
<template #optInfo>
|
||||||
<span v-show="item.viewCount" style="padding-left: 10px" class="text-muted"
|
<small v-show="item.viewCount" style="padding-left: 10px" class="text-muted"
|
||||||
><i class="fa-regular fa-eye"></i> {{ item.viewCount }}</span
|
><i class="fa-regular fa-eye"></i> {{ item.viewCount }}
|
||||||
>
|
</small>
|
||||||
<span v-show="item.cmtCount" style="padding-left: 10px" class="text-muted"
|
<small v-show="item.cmtCount" style="padding-left: 10px" class="text-muted"
|
||||||
><i class="fa-regular fa-comment-dots"></i> {{ item.cmtCount }}
|
><i class="fa-regular fa-comment-dots"></i> {{ item.cmtCount }}
|
||||||
</span>
|
</small>
|
||||||
</template>
|
</template>
|
||||||
</board-card>
|
</board-card>
|
||||||
</template>
|
</template>
|
||||||
@ -36,11 +43,16 @@
|
|||||||
import dummy from '@a/boardDummy.json';
|
import dummy from '@a/boardDummy.json';
|
||||||
|
|
||||||
const list = ref(dummy);
|
const list = ref(dummy);
|
||||||
|
const searchText = ref('');
|
||||||
|
|
||||||
/** 상세로 이동 */
|
/** 상세로 이동 */
|
||||||
const goDetail = idx => {
|
const goDetail = idx => {
|
||||||
router.push(`/board/get/${idx}`);
|
router.push(`/board/get/${idx}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const search = e => {
|
||||||
|
console.log('검색:', e);
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style></style>
|
<style></style>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user