
--- client/resources/scss/admin/content.scss
+++ client/resources/scss/admin/content.scss
... | ... | @@ -781,11 +781,47 @@ |
781 | 781 |
color: var(--#{$prefix}gray-60); |
782 | 782 |
} |
783 | 783 |
} |
784 |
+ |
|
785 |
+ // &.main-line{ |
|
786 |
+ // background-color: var(--tk-main-10); |
|
787 |
+ // border: 1px solid var(--tk-main-50); |
|
788 |
+ // border-radius: 1rem; |
|
789 |
+ |
|
790 |
+ // } |
|
791 |
+ } |
|
792 |
+ |
|
793 |
+ .chart-info{ |
|
794 |
+ padding: .5rem 3rem; |
|
795 |
+ background-color: var(--tk-white); |
|
796 |
+ border-radius: 3rem; |
|
797 |
+ .detail-text{ |
|
798 |
+ span{ |
|
799 |
+ font-size: 2rem; |
|
800 |
+ font-weight: 700; |
|
801 |
+ color: var(--tk-main-50); |
|
802 |
+ } |
|
803 |
+ } |
|
784 | 804 |
} |
785 | 805 |
|
786 | 806 |
.auth-btn{ |
787 | 807 |
width: 120px; |
788 | 808 |
} |
809 |
+ |
|
810 |
+ .thumbnail{ |
|
811 |
+ max-width: 170px; |
|
812 |
+ width: 100%; |
|
813 |
+ height: auto; |
|
814 |
+ aspect-ratio: 16 / 9; |
|
815 |
+ margin-right: 3rem; |
|
816 |
+ } |
|
817 |
+ |
|
818 |
+ .file-upload{ |
|
819 |
+ width: 100px; |
|
820 |
+ padding: .5rem 1rem; |
|
821 |
+ background-color: var(--tk-main-10); |
|
822 |
+ border: 1px solid var(--tk-main-50); |
|
823 |
+ color: var(--tk-main-50); |
|
824 |
+ } |
|
789 | 825 |
} |
790 | 826 |
|
791 | 827 |
|
--- client/resources/scss/common/component/_tree.scss
+++ client/resources/scss/common/component/_tree.scss
... | ... | @@ -50,6 +50,15 @@ |
50 | 50 |
border-radius: 50%; |
51 | 51 |
margin-right: 1rem; |
52 | 52 |
} |
53 |
+ |
|
54 |
+ &.p-tree{ |
|
55 |
+ padding: .5rem 1rem; |
|
56 |
+ } |
|
57 |
+ |
|
58 |
+ &.selected{ |
|
59 |
+ border: 1px solid var(--tk-main-50); |
|
60 |
+ border-radius: var(--tk-rd-12); |
|
61 |
+ } |
|
53 | 62 |
} |
54 | 63 |
|
55 | 64 |
}(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/Breadcrumb/Breadcrumb.vue
+++ client/views/component/Breadcrumb/Breadcrumb.vue
... | ... | @@ -28,6 +28,8 @@ |
28 | 28 |
const menuState = this.$store.state; |
29 | 29 |
const currentPath = this.$route.path; |
30 | 30 |
|
31 |
+ console.log('menuState',menuState) |
|
32 |
+ |
|
31 | 33 |
// 관리자: childList 기반 |
32 | 34 |
const findFromTree = (menus, path, trail = []) => { |
33 | 35 |
for (const menu of menus) { |
... | ... | @@ -73,8 +75,11 @@ |
73 | 75 |
} |
74 | 76 |
|
75 | 77 |
this.breadcrumbList = breadcrumb; |
76 |
- } |
|
78 |
+ }, |
|
77 | 79 |
|
78 | 80 |
}, |
81 |
+ mounted(){ |
|
82 |
+ this.generateBreadcrumb(); |
|
83 |
+ } |
|
79 | 84 |
}; |
80 | 85 |
</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/table/ListTable.vue
+++ client/views/component/table/ListTable.vue
... | ... | @@ -25,11 +25,12 @@ |
25 | 25 |
<td |
26 | 26 |
v-for="(content, index) in row" |
27 | 27 |
:key="index" |
28 |
- :class="index === 'title' ? 'text-lf table-title' : 'text-ct'" |
|
29 | 28 |
> |
30 |
- <svg-icon type="mdi" :path="pinPath" :width="20" :height="20" v-if="index == 'bbsNm' && ntcList.includes(idx)"></svg-icon> |
|
31 |
- <svg-icon type="mdi" :path="lockPath" :width="20" :height="20" v-else-if="index == 'bbsNm' && lockList.includes(idx)"></svg-icon> |
|
32 |
- <p>{{ content }}</p> |
|
29 |
+ <div class="layout"> |
|
30 |
+ <svg-icon type="mdi" :path="pinPath" :width="18" :height="18" v-if="index == 'bbsNm' && ntcList.includes(idx)"></svg-icon> |
|
31 |
+ <svg-icon type="mdi" :path="lockPath" :width="18" :height="18" v-else-if="index == 'bbsNm' && lockList.includes(idx)"></svg-icon> |
|
32 |
+ <p>{{ content }}</p> |
|
33 |
+ </div> |
|
33 | 34 |
</td> |
34 | 35 |
<td v-if="$slots.button"> |
35 | 36 |
<slot name="button" :row="row" :idx="idx"></slot> |
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert.vue
... | ... | @@ -45,7 +45,7 @@ |
45 | 45 |
<p>기본정보</p> |
46 | 46 |
<p><span>*</span>필수입력</p> |
47 | 47 |
</div> |
48 |
- <div class="form-content grid-none"> |
|
48 |
+ <div class="form-content grid-none overflow-y"> |
|
49 | 49 |
<div class="layout"> |
50 | 50 |
<label for="" class="form-title">제목</label> |
51 | 51 |
<input type="text" class="form-control sm" v-model="bbsCn.bbsNm" placeholder="제목을 입력하세요." /> |
... | ... | @@ -59,22 +59,16 @@ |
59 | 59 |
<div class="layout" ref="two" v-if="bbsMng.atchFileUseYn === 'Y'"> |
60 | 60 |
<label for="" class="form-title">첨부파일</label> |
61 | 61 |
<div> |
62 |
- <label for="file" >파일찾기</label> |
|
63 |
- <input |
|
64 |
- type="file" |
|
65 |
- id="file" |
|
66 |
- ref="file" |
|
67 |
- @change="fnFileInsert" |
|
68 |
- multiple |
|
69 |
- /> |
|
62 |
+ <label for="file" class="file-upload">파일찾기</label> |
|
63 |
+ <input type="file" id="file" ref="file" @change="fnFileInsert" multiple class="sr-only"/> |
|
70 | 64 |
<div v-if="fileList.length > 0"> |
71 | 65 |
<ul> |
72 |
- <li v-for="(file, idx) in fileList" :key="idx"> |
|
73 |
- <div v-if="file['fileId'] != null" class="file-wrap"> |
|
66 |
+ <li v-for="(file, idx) in fileList" :key="idx" class="file-wrap"> |
|
67 |
+ <div v-if="file['fileId'] != null" class="layout"> |
|
74 | 68 |
<p>{{ file["fileNm"] }}.{{ file["extnNm"] }}</p> |
75 | 69 |
<button class="del-btn" @click="fnFileDelete(file, idx)">X</button> |
76 | 70 |
</div> |
77 |
- <div v-else class="file-wrap"> |
|
71 |
+ <div v-else class="layout"> |
|
78 | 72 |
<p>{{ file.name }}</p> |
79 | 73 |
<button class="del-btn" @click="fnFileDelete(file, idx)">X</button> |
80 | 74 |
</div> |
... | ... | @@ -110,10 +104,10 @@ |
110 | 104 |
</div> |
111 | 105 |
</div> |
112 | 106 |
</div> |
113 |
- <div class="layout" ref="four" v-if="bbsCn.ntcPstYn === 'Y'"> |
|
107 |
+ <div class="layout border-bottom" ref="four" v-if="bbsCn.ntcPstYn === 'Y'"> |
|
114 | 108 |
<label for="" class="form-title">공지글 게시기간</label> |
115 | 109 |
<div class="input-group"> |
116 |
- <div class="form-control sm cal"> |
|
110 |
+ <div class="form-control sm cal" style="max-width: 200px;"> |
|
117 | 111 |
<VueDatePicker |
118 | 112 |
InlineOptions |
119 | 113 |
placeholder="시작일" |
... | ... | @@ -131,7 +125,7 @@ |
131 | 125 |
/> --> |
132 | 126 |
</div> |
133 | 127 |
<div class="mark">-</div> |
134 |
- <div class="form-control sm cal"> |
|
128 |
+ <div class="form-control sm cal" style="max-width: 200px;"> |
|
135 | 129 |
<VueDatePicker |
136 | 130 |
InlineOptions |
137 | 131 |
placeholder="종료일" |
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
... | ... | @@ -38,16 +38,16 @@ |
38 | 38 |
<div v-if="fileList.length == 0"> |
39 | 39 |
<label>첨부된 파일이 없습니다.</label> |
40 | 40 |
</div> |
41 |
- |
|
42 | 41 |
<ul v-else> |
43 | 42 |
<li |
44 | 43 |
v-for="(item, idx) in fileList" |
45 | 44 |
:key="idx" |
46 | 45 |
@click="downloadFile(item)" |
47 |
- class="cursor pd5 border radius mb5 flex justify-between align-center" |
|
46 |
+ class="layout" |
|
48 | 47 |
> |
49 | 48 |
<p>{{ item.fileNm + "." + item.extnNm }}</p> |
50 |
- <svg-icon type="mdi" :path="downloadFilePath"></svg-icon> |
|
49 |
+ <button class="btn-ico sm ico-download"></button> |
|
50 |
+ <!-- <svg-icon type="mdi" :path="downloadFilePath"></svg-icon> --> |
|
51 | 51 |
</li> |
52 | 52 |
</ul> |
53 | 53 |
</td> |
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GalleryInsert.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GalleryInsert.vue
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 |
<p>기본정보</p> |
8 | 8 |
<p><span>*</span>필수입력</p> |
9 | 9 |
</div> |
10 |
- <div class="form-content grid-none"> |
|
10 |
+ <div class="form-content grid-none overflow-y"> |
|
11 | 11 |
<div class="layout"> |
12 | 12 |
<label for="" class="form-title">제목</label> |
13 | 13 |
<input |
... | ... | @@ -26,54 +26,17 @@ |
26 | 26 |
<div class="layout"> |
27 | 27 |
<label for="" class="form-title">이미지 파일</label> |
28 | 28 |
<div> |
29 |
- <label |
|
30 |
- for="imgFile" |
|
31 |
- :class="{ |
|
32 |
- 'large-btn text-ct': true, |
|
33 |
- 'blue-border-btn': pageRole == 'adm', |
|
34 |
- 'green-border-btn': |
|
35 |
- pageRole == 'portal', |
|
36 |
- }" |
|
37 |
- > |
|
38 |
- 파일찾기 |
|
39 |
- </label> |
|
40 |
- <input |
|
41 |
- type="file" |
|
42 |
- id="imgFile" |
|
43 |
- ref="imgFile" |
|
44 |
- @change="fnImgFileInsert" |
|
45 |
- multiple |
|
46 |
- accept="image/*" |
|
47 |
- /> |
|
29 |
+ <label for="imgFile" class="file-upload">파일찾기</label> |
|
30 |
+ <input type="file" id="imgFile" ref="imgFile" @change="fnImgFileInsert" multiple accept="image/*" class="sr-only"/> |
|
48 | 31 |
<ul v-if="imgFileList.length > 0"> |
49 |
- <li |
|
50 |
- v-for="(file, idx) in imgFileList" |
|
51 |
- :key="idx" |
|
52 |
- class="file-wrap" |
|
53 |
- > |
|
54 |
- <div |
|
55 |
- v-if="file['fileId'] != null" |
|
56 |
- class="layout" |
|
57 |
- > |
|
32 |
+ <li v-for="(file, idx) in imgFileList" :key="idx" class="file-wrap" > |
|
33 |
+ <div v-if="file['fileId'] != null" class="layout" > |
|
58 | 34 |
<p>{{ file["fileNm"] }}.{{ file["extnNm"] }}</p> |
59 |
- <button |
|
60 |
- class="del-btn" |
|
61 |
- @click="fnImgFileDelete(file, idx)" |
|
62 |
- > |
|
63 |
- X |
|
64 |
- </button> |
|
35 |
+ <button class="del-btn" @click="fnImgFileDelete(file, idx)" >X</button> |
|
65 | 36 |
</div> |
66 |
- <div |
|
67 |
- v-else |
|
68 |
- class="layout" |
|
69 |
- > |
|
37 |
+ <div v-else class="layout"> |
|
70 | 38 |
<p>{{ file.name }}</p> |
71 |
- <button |
|
72 |
- class="del-btn" |
|
73 |
- @click="fnImgFileDelete(file, idx)" |
|
74 |
- > |
|
75 |
- X |
|
76 |
- </button> |
|
39 |
+ <button class="del-btn" @click="fnImgFileDelete(file, idx)" >X</button> |
|
77 | 40 |
</div> |
78 | 41 |
</li> |
79 | 42 |
</ul> |
... | ... | @@ -82,47 +45,17 @@ |
82 | 45 |
<div class="layout" ref="two" v-if="bbsMng.atchFileUseYn === 'Y'" > |
83 | 46 |
<label for="" class="form-title">첨부파일</label> |
84 | 47 |
<div> |
85 |
- <label |
|
86 |
- for="file" |
|
87 |
- :class="{ |
|
88 |
- 'large-btn text-ct': true, |
|
89 |
- 'blue-border-btn': pageRole == 'adm', |
|
90 |
- 'green-border-btn': |
|
91 |
- pageRole == 'portal', |
|
92 |
- }" |
|
93 |
- > |
|
94 |
- 파일찾기 |
|
95 |
- </label> |
|
96 |
- <input |
|
97 |
- type="file" |
|
98 |
- id="file" |
|
99 |
- ref="file" |
|
100 |
- @change="fnFileInsert" |
|
101 |
- multiple |
|
102 |
- /> |
|
48 |
+ <label for="file" class="file-upload">파일찾기</label> |
|
49 |
+ <input type="file" id="file" ref="file" @change="fnFileInsert" multiple class="sr-only"/> |
|
103 | 50 |
<ul v-if="fileList.length > 0"> |
104 |
- <li |
|
105 |
- v-for="(file, idx) in fileList" |
|
106 |
- :key="idx" |
|
107 |
- class="pd10 mt10 border radius" |
|
108 |
- > |
|
109 |
- <div |
|
110 |
- v-if="file['fileId'] != null" |
|
111 |
- class="flex align-center justify-between file-wrap" |
|
112 |
- > |
|
51 |
+ <li v-for="(file, idx) in fileList" :key="idx" class="file-wrap"> |
|
52 |
+ <div v-if="file['fileId'] != null" class="layout"> |
|
113 | 53 |
<p>{{ file["fileNm"] }}.{{ file["extnNm"] }}</p> |
114 |
- <button class="del-btn" @click="fnFileDelete(file, idx)"> |
|
115 |
- X |
|
116 |
- </button> |
|
54 |
+ <button class="del-btn" @click="fnFileDelete(file, idx)">X</button> |
|
117 | 55 |
</div> |
118 |
- <div |
|
119 |
- v-else |
|
120 |
- class="flex align-center justify-between file-wrap" |
|
121 |
- > |
|
56 |
+ <div v-else class="layout"> |
|
122 | 57 |
<p>{{ file.name }}</p> |
123 |
- <button class="del-btn" @click="fnFileDelete(file, idx)"> |
|
124 |
- X |
|
125 |
- </button> |
|
58 |
+ <button class="del-btn" @click="fnFileDelete(file, idx)">X</button> |
|
126 | 59 |
</div> |
127 | 60 |
</li> |
128 | 61 |
</ul> |
... | ... | @@ -155,10 +88,10 @@ |
155 | 88 |
</div> |
156 | 89 |
</div> |
157 | 90 |
</div> |
158 |
- <div class="layout" ref="four" v-if="bbsCn.ntcPstYn === 'Y'"> |
|
91 |
+ <div class="layout border-bottom" ref="four" v-if="bbsCn.ntcPstYn === 'Y'"> |
|
159 | 92 |
<label for="" class="form-title" >공지글 게시기간</label> |
160 |
- <div class="flex align-center no-gutters"> |
|
161 |
- <div class="form-control sm cal"> |
|
93 |
+ <div class="input-group"> |
|
94 |
+ <div class="form-control sm cal" style="max-width: 200px;"> |
|
162 | 95 |
<VueDatePicker |
163 | 96 |
InlineOptions |
164 | 97 |
placeholder="시작일" |
... | ... | @@ -176,7 +109,7 @@ |
176 | 109 |
/> --> |
177 | 110 |
</div> |
178 | 111 |
<div class="mark">-</div> |
179 |
- <div class="form-control sm cal"> |
|
112 |
+ <div class="form-control sm cal" style="max-width: 200px;"> |
|
180 | 113 |
<VueDatePicker |
181 | 114 |
InlineOptions |
182 | 115 |
placeholder="종료일" |
... | ... | @@ -202,23 +135,23 @@ |
202 | 135 |
<input |
203 | 136 |
type="radio" |
204 | 137 |
name="secret" |
205 |
- id="y" |
|
138 |
+ id="secrety" |
|
206 | 139 |
class="mr5" |
207 | 140 |
value="Y" |
208 | 141 |
v-model="bbsCn.prvtPstYn" |
209 | 142 |
/> |
210 |
- <label for="y">사용</label> |
|
143 |
+ <label for="secrety">사용</label> |
|
211 | 144 |
</div> |
212 | 145 |
<div class="form-check"> |
213 | 146 |
<input |
214 | 147 |
type="radio" |
215 | 148 |
name="secret" |
216 |
- id="n" |
|
149 |
+ id="secretn" |
|
217 | 150 |
class="mr5" |
218 | 151 |
value="N" |
219 | 152 |
v-model="bbsCn.prvtPstYn" |
220 | 153 |
/> |
221 |
- <label for="n">미사용</label> |
|
154 |
+ <label for="secretn">미사용</label> |
|
222 | 155 |
</div> |
223 | 156 |
</div> |
224 | 157 |
</div> |
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectList.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectList.vue
... | ... | @@ -98,7 +98,7 @@ |
98 | 98 |
</td> --> |
99 | 99 |
<td> |
100 | 100 |
<div class="layout"> |
101 |
- <img :src="item.absltPath" /> |
|
101 |
+ <img :src="item.absltPath" class="thumbnail" /> |
|
102 | 102 |
<div> |
103 | 103 |
<template v-if="item.prvtPstYn == 'Y'"> |
104 | 104 |
<p>{{ item.rgtr == mbrId || roles == 'ROLE_ADMIN' ? item.bbsNm : '비밀글입니다' }}</p> |
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
... | ... | @@ -66,7 +66,8 @@ |
66 | 66 |
class="layout" |
67 | 67 |
> |
68 | 68 |
<p>{{ item.fileNm + "." + item.extnNm }}</p> |
69 |
- <svg-icon type="mdi" :path="downloadFilePath"></svg-icon> |
|
69 |
+ <button class="btn-ico sm ico-download"></button> |
|
70 |
+ <!-- <svg-icon type="mdi" :path="downloadFilePath"></svg-icon> --> |
|
70 | 71 |
</li> |
71 | 72 |
</ul> |
72 | 73 |
</div> |
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoInsert.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoInsert.vue
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 |
<p>기본정보</p> |
8 | 8 |
<p><span>*</span>필수입력</p> |
9 | 9 |
</div> |
10 |
- <div class="form-content grid-none"> |
|
10 |
+ <div class="form-content grid-none overflow-y"> |
|
11 | 11 |
<div class="layout"> |
12 | 12 |
<label for="" class="form-title">제목</label> |
13 | 13 |
<input |
... | ... | @@ -35,56 +35,18 @@ |
35 | 35 |
<div class="layout"> |
36 | 36 |
<label for="" class="form-title">썸네일</label> |
37 | 37 |
<div> |
38 |
- <div class="gd-2 pl0 pr0"> |
|
39 |
- <label |
|
40 |
- for="thumbnail" |
|
41 |
- :class="{ |
|
42 |
- 'large-btn text-ct': true, |
|
43 |
- 'blue-border-btn': pageRole == 'adm', |
|
44 |
- 'green-border-btn': |
|
45 |
- pageRole == 'portal', |
|
46 |
- }" |
|
47 |
- > |
|
48 |
- 파일찾기 |
|
49 |
- </label> |
|
50 |
- <input |
|
51 |
- type="file" |
|
52 |
- id="thumbnail" |
|
53 |
- ref="thumbnail" |
|
54 |
- @change="fnThumbnailInsert" |
|
55 |
- accept="image/*" |
|
56 |
- /> |
|
57 |
- </div> |
|
58 |
- <div class="gd-12 pl0" v-if="imgFileList.length > 0"> |
|
38 |
+ <label for="thumbnail" class="file-upload">파일찾기</label> |
|
39 |
+ <input type="file" id="thumbnail" ref="thumbnail" @change="fnThumbnailInsert" accept="image/*" class="sr-only" /> |
|
40 |
+ <div v-if="imgFileList.length > 0"> |
|
59 | 41 |
<ul> |
60 |
- <li |
|
61 |
- v-for="(file, index) in imgFileList" |
|
62 |
- :key="index" |
|
63 |
- class="pd10 mt10 border radius" |
|
64 |
- > |
|
65 |
- <div |
|
66 |
- v-if="file['fileId'] != null" |
|
67 |
- class="flex align-center justify-between file-wrap" |
|
68 |
- > |
|
42 |
+ <li v-for="(file, index) in imgFileList" :key="index" class="file-wrap" > |
|
43 |
+ <div v-if="file['fileId'] != null" class="layout" > |
|
69 | 44 |
<p>{{ file["fileNm"] }}.{{ file["extnNm"] }}</p> |
70 |
- <button |
|
71 |
- class="del-btn" |
|
72 |
- @click="fnImgFileDelete(file, index)" |
|
73 |
- > |
|
74 |
- X |
|
75 |
- </button> |
|
45 |
+ <button class="del-btn" @click="fnImgFileDelete(file, index)">X</button> |
|
76 | 46 |
</div> |
77 |
- <div |
|
78 |
- v-else |
|
79 |
- class="flex align-center justify-between file-wrap" |
|
80 |
- > |
|
47 |
+ <div v-else class="layout"> |
|
81 | 48 |
<p>{{ file.name }}</p> |
82 |
- <button |
|
83 |
- class="del-btn" |
|
84 |
- @click="fnImgFileDelete(file, index)" |
|
85 |
- > |
|
86 |
- X |
|
87 |
- </button> |
|
49 |
+ <button class="del-btn" @click="fnImgFileDelete(file, index)">X</button> |
|
88 | 50 |
</div> |
89 | 51 |
</li> |
90 | 52 |
</ul> |
... | ... | @@ -92,49 +54,19 @@ |
92 | 54 |
</div> |
93 | 55 |
</div> |
94 | 56 |
<div class="layout" ref="two" v-if="bbsMng.atchFileUseYn === 'Y'" > |
95 |
- <label for="" class="form-title">첨부파일</label> |
|
57 |
+ <label for="" class="form-title" >첨부파일</label> |
|
96 | 58 |
<div> |
97 |
- <label |
|
98 |
- for="file" |
|
99 |
- :class="{ |
|
100 |
- 'large-btn text-ct': true, |
|
101 |
- 'blue-border-btn': pageRole == 'adm', |
|
102 |
- 'green-border-btn': |
|
103 |
- pageRole == 'portal', |
|
104 |
- }" |
|
105 |
- > |
|
106 |
- 파일찾기 |
|
107 |
- </label> |
|
108 |
- <input |
|
109 |
- type="file" |
|
110 |
- id="file" |
|
111 |
- ref="file" |
|
112 |
- @change="fnFileInsert" |
|
113 |
- multiple |
|
114 |
- /> |
|
59 |
+ <label for="file" class="file-upload">파일찾기</label> |
|
60 |
+ <input type="file" id="file" ref="file" @change="fnFileInsert" multiple class="sr-only"/> |
|
115 | 61 |
<ul v-if="fileList.length > 0"> |
116 |
- <li |
|
117 |
- v-for="(file, idx) in fileList" |
|
118 |
- :key="idx" |
|
119 |
- class="pd10 mt10 border radius" |
|
120 |
- > |
|
121 |
- <div |
|
122 |
- v-if="file['fileId'] != null" |
|
123 |
- class="flex align-center justify-between file-wrap" |
|
124 |
- > |
|
62 |
+ <li v-for="(file, idx) in fileList" :key="idx" class="file-wrap"> |
|
63 |
+ <div v-if="file['fileId'] != null" class="layout"> |
|
125 | 64 |
<p>{{ file["fileNm"] }}.{{ file["extnNm"] }}</p> |
126 |
- <button class="del-btn" @click="fnFileDelete(file, idx)"> |
|
127 |
- X |
|
128 |
- </button> |
|
65 |
+ <button class="del-btn" @click="fnFileDelete(file, idx)">X</button> |
|
129 | 66 |
</div> |
130 |
- <div |
|
131 |
- v-else |
|
132 |
- class="flex align-center justify-between file-wrap" |
|
133 |
- > |
|
67 |
+ <div v-else class="layout"> |
|
134 | 68 |
<p>{{ file.name }}</p> |
135 |
- <button class="del-btn" @click="fnFileDelete(file, idx)"> |
|
136 |
- X |
|
137 |
- </button> |
|
69 |
+ <button class="del-btn" @click="fnFileDelete(file, idx)">X</button> |
|
138 | 70 |
</div> |
139 | 71 |
</li> |
140 | 72 |
</ul> |
... | ... | @@ -167,10 +99,10 @@ |
167 | 99 |
</div> |
168 | 100 |
</div> |
169 | 101 |
</div> |
170 |
- <div class="layout" ref="four" v-if="bbsCn.ntcPstYn === 'Y'"> |
|
102 |
+ <div class="layout border-bottom" ref="four" v-if="bbsCn.ntcPstYn === 'Y'"> |
|
171 | 103 |
<label for="" class="form-title" >공지글 게시기간</label> |
172 |
- <div class="flex align-center no-gutters"> |
|
173 |
- <div class="form-control sm cal"> |
|
104 |
+ <div class="input-group"> |
|
105 |
+ <div class="form-control sm cal" style="max-width: 200px;"> |
|
174 | 106 |
<VueDatePicker |
175 | 107 |
InlineOptions |
176 | 108 |
placeholder="시작일" |
... | ... | @@ -188,7 +120,7 @@ |
188 | 120 |
/> --> |
189 | 121 |
</div> |
190 | 122 |
<div class="mark">-</div> |
191 |
- <div class="form-control sm cal"> |
|
123 |
+ <div class="form-control sm cal" style="max-width: 200px;"> |
|
192 | 124 |
<VueDatePicker |
193 | 125 |
InlineOptions |
194 | 126 |
placeholder="종료일" |
... | ... | @@ -214,23 +146,23 @@ |
214 | 146 |
<input |
215 | 147 |
type="radio" |
216 | 148 |
name="secret" |
217 |
- id="y" |
|
149 |
+ id="secrety" |
|
218 | 150 |
class="mr5" |
219 | 151 |
value="Y" |
220 | 152 |
v-model="bbsCn.prvtPstYn" |
221 | 153 |
/> |
222 |
- <label for="y">사용</label> |
|
154 |
+ <label for="secrety">사용</label> |
|
223 | 155 |
</div> |
224 | 156 |
<div class="form-check"> |
225 | 157 |
<input |
226 | 158 |
type="radio" |
227 | 159 |
name="secret" |
228 |
- id="n" |
|
160 |
+ id="secretn" |
|
229 | 161 |
class="mr5" |
230 | 162 |
value="N" |
231 | 163 |
v-model="bbsCn.prvtPstYn" |
232 | 164 |
/> |
233 |
- <label for="n">미사용</label> |
|
165 |
+ <label for="secretn">미사용</label> |
|
234 | 166 |
</div> |
235 | 167 |
</div> |
236 | 168 |
</div> |
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
... | ... | @@ -45,8 +45,8 @@ |
45 | 45 |
</td> --> |
46 | 46 |
<td> |
47 | 47 |
<div class="layout"> |
48 |
- <img v-if="item.absltPath" :src="item.absltPath" /> |
|
49 |
- <img v-else :src="'https://img.youtube.com/vi/'+makeKey(item.vdoUrl)+'/mqdefault.jpg'"/> |
|
48 |
+ <img v-if="item.absltPath" :src="item.absltPath" class="thumbnail"/> |
|
49 |
+ <img v-else :src="'https://img.youtube.com/vi/'+makeKey(item.vdoUrl)+'/mqdefault.jpg'" class="thumbnail"/> |
|
50 | 50 |
<div class="ml10"> |
51 | 51 |
<template v-if="item.prvtPstYn == 'Y'"> |
52 | 52 |
<p>{{ item.rgtr == mbrId || roles == 'ROLE_ADMIN' ? item.bbsNm : '비밀글입니다' }}</p> |
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
... | ... | @@ -83,10 +83,11 @@ |
83 | 83 |
v-for="(item, idx) in fileList" |
84 | 84 |
:key="idx" |
85 | 85 |
@click="downloadFile(item)" |
86 |
- class="cursor pd5 border radius mb5 flex justify-between align-center" |
|
86 |
+ class="layout" |
|
87 | 87 |
> |
88 | 88 |
<p>{{ item.fileNm + "." + item.extnNm }}</p> |
89 |
- <svg-icon type="mdi" :path="downloadFilePath"></svg-icon> |
|
89 |
+ <button class="btn-ico sm ico-download"></button> |
|
90 |
+ <!-- <svg-icon type="mdi" :path="downloadFilePath"></svg-icon> --> |
|
90 | 91 |
</li> |
91 | 92 |
</ul> |
92 | 93 |
</td> |
--- client/views/pages/adm/departmentManagement/DepartmentManagement.vue
+++ client/views/pages/adm/departmentManagement/DepartmentManagement.vue
... | ... | @@ -169,16 +169,18 @@ |
169 | 169 |
<div class="modal-title"> |
170 | 170 |
<p>사용자 목록</p> |
171 | 171 |
</div> |
172 |
- <button class="btn-close" @click="modalClose">X</button> |
|
172 |
+ <button class="btn-close" @click="modalClose"></button> |
|
173 | 173 |
</template> |
174 |
- <ListTable |
|
175 |
- :className="'admin-list'" |
|
176 |
- :colgroup="mbrColgroup" |
|
177 |
- :thead="mbrThead" |
|
178 |
- :tbody="mbrTbody" |
|
179 |
- @listClick="selectMbr" |
|
180 |
- > |
|
181 |
- </ListTable> |
|
174 |
+ <div class="tbl-wrap"> |
|
175 |
+ <ListTable |
|
176 |
+ :className="'data cursor'" |
|
177 |
+ :colgroup="mbrColgroup" |
|
178 |
+ :thead="mbrThead" |
|
179 |
+ :tbody="mbrTbody" |
|
180 |
+ @listClick="selectMbr" |
|
181 |
+ > |
|
182 |
+ </ListTable> |
|
183 |
+ </div> |
|
182 | 184 |
</Modal> |
183 | 185 |
</template> |
184 | 186 |
|
--- client/views/pages/adm/popup/PopupManagementInsert.vue
+++ client/views/pages/adm/popup/PopupManagementInsert.vue
... | ... | @@ -27,7 +27,7 @@ |
27 | 27 |
time-picker-inline |
28 | 28 |
placeholder="시작일" |
29 | 29 |
locale="ko" |
30 |
- inputFormat="yyyy-mm-dd" |
|
30 |
+ :format="formatDate" |
|
31 | 31 |
/> |
32 | 32 |
</div> |
33 | 33 |
<div class="pd10">-</div> |
... | ... | @@ -38,7 +38,7 @@ |
38 | 38 |
time-picker-inline |
39 | 39 |
placeholder="종료일" |
40 | 40 |
locale="ko" |
41 |
- inputFormat="yyyy-mm-dd" |
|
41 |
+ :format="formatDate" |
|
42 | 42 |
/> |
43 | 43 |
</div> |
44 | 44 |
</div> |
... | ... | @@ -118,40 +118,28 @@ |
118 | 118 |
<div class="layout"> |
119 | 119 |
<label class="form-title">이미지 첨부파일</label> |
120 | 120 |
|
121 |
- <div |
|
122 |
- v-for="(file, index) of this.fileList" |
|
123 |
- :key="index" |
|
124 |
- class="input-group" |
|
125 |
- style="height: 100%" |
|
126 |
- > |
|
121 |
+ <div v-for="(file, index) of this.fileList" :key="index" class="input-group" style="height: 100%" > |
|
127 | 122 |
<p v-if="file['fileId'] != null"> |
128 | 123 |
{{ file["fileNm"] }}.{{ file["extnNm"] }} |
129 | 124 |
</p> |
130 | 125 |
<p v-else>{{ file.name }}</p> |
131 |
- <button |
|
132 |
- class="icon-btn pd0" |
|
133 |
- @click="fnFileDelete(file, index)" |
|
134 |
- > |
|
135 |
- <svg-icon |
|
126 |
+ <button class="icon-btn" @click="fnFileDelete(file, index)">X |
|
127 |
+ <!-- <svg-icon |
|
136 | 128 |
type="mdi" |
137 | 129 |
:width="15" |
138 | 130 |
:height="15" |
139 | 131 |
:path="path" |
140 |
- ></svg-icon> |
|
132 |
+ ></svg-icon> --> |
|
141 | 133 |
</button> |
142 | 134 |
</div> |
143 | 135 |
<div v-if="fileList.length < 1"> |
144 |
- <label |
|
145 |
- for="file" |
|
146 |
- class="large-btn blue-border-btn text-ct" |
|
147 |
- > |
|
148 |
- 파일찾기 |
|
149 |
- </label> |
|
136 |
+ <label for="file" class="file-upload" >파일찾기</label> |
|
150 | 137 |
<input |
151 | 138 |
type="file" |
152 | 139 |
id="file" |
153 | 140 |
ref="file" |
154 | 141 |
@change="fnFileInsert" |
142 |
+ class="sr-only" |
|
155 | 143 |
/> |
156 | 144 |
</div> |
157 | 145 |
</div> |
... | ... | @@ -173,7 +161,7 @@ |
173 | 161 |
<label class="form-title">동영상 URL</label> |
174 | 162 |
<input |
175 | 163 |
type="text" |
176 |
- class="form-control" |
|
164 |
+ class="form-control sm" |
|
177 | 165 |
placeholder="동영상 주소를 입력하세요." |
178 | 166 |
v-model="popup['vdoUrl']" |
179 | 167 |
:disabled="popup['popupType'] != 'video'" |
... | ... | @@ -473,6 +461,13 @@ |
473 | 461 |
}); |
474 | 462 |
}, |
475 | 463 |
//─────axios─────┘ |
464 |
+ // 날짜포맷 |
|
465 |
+ formatDate(date) { |
|
466 |
+ const year = date.getFullYear(); |
|
467 |
+ const month = ('00' + (date.getMonth() + 1)).slice(-2); |
|
468 |
+ const day = ('00' + date.getDate()).slice(-2); |
|
469 |
+ return `${year}-${month}-${day}`; |
|
470 |
+ }, |
|
476 | 471 |
}, |
477 | 472 |
watch: { |
478 | 473 |
// 팝업 크기 셀렉트 박스 초기화 |
--- client/views/pages/adm/statistics/BbsStatistics.vue
+++ client/views/pages/adm/statistics/BbsStatistics.vue
... | ... | @@ -46,12 +46,8 @@ |
46 | 46 |
<button class="btn sm main" @click="axiosSelectList"> |
47 | 47 |
조회 |
48 | 48 |
</button> |
49 |
- <button |
|
50 |
- class="large-btn green-border-btn" |
|
51 |
- v-if="pageAuth.fileDwnldAuthrt == 'Y' && bbsCnt > 0" |
|
52 |
- @click="fnDownload" |
|
53 |
- > |
|
54 |
- 다운로드 |
|
49 |
+ <button class="btn sm tertiary ico-before ico-download" v-if="pageAuth.fileDwnldAuthrt == 'Y' && bbsCnt > 0" @click="fnDownload" > |
|
50 |
+ 엑셀 다운로드 |
|
55 | 51 |
</button> |
56 | 52 |
</div> |
57 | 53 |
</div> |
--- client/views/pages/adm/statistics/MenuStatistics.vue
+++ client/views/pages/adm/statistics/MenuStatistics.vue
... | ... | @@ -46,12 +46,8 @@ |
46 | 46 |
<button class="btn sm main" @click="axiosSelectList"> |
47 | 47 |
조회 |
48 | 48 |
</button> |
49 |
- <button |
|
50 |
- class="large-btn green-border-btn" |
|
51 |
- v-if="pageAuth.fileDwnldAuthrt == 'Y'" |
|
52 |
- @click="fnDownload" |
|
53 |
- > |
|
54 |
- 다운로드 |
|
49 |
+ <button class="btn sm tertiary ico-before ico-download" v-if="pageAuth.fileDwnldAuthrt == 'Y'" @click="fnDownload"> |
|
50 |
+ 엑셀 다운로드 |
|
55 | 51 |
</button> |
56 | 52 |
</div> |
57 | 53 |
</div> |
--- client/views/pages/adm/statistics/UserStatistics.vue
+++ client/views/pages/adm/statistics/UserStatistics.vue
... | ... | @@ -50,12 +50,8 @@ |
50 | 50 |
조회 |
51 | 51 |
</button> |
52 | 52 |
|
53 |
- <button |
|
54 |
- class="large-btn green-border-btn" |
|
55 |
- v-if="pageAuth.fileDwnldAuthrt == 'Y'" |
|
56 |
- @click="fnDownload" |
|
57 |
- > |
|
58 |
- 다운로드 |
|
53 |
+ <button class="btn sm tertiary ico-before ico-download" v-if="pageAuth.fileDwnldAuthrt == 'Y'" @click="fnDownload"> |
|
54 |
+ 엑셀 다운로드 |
|
59 | 55 |
</button> |
60 | 56 |
|
61 | 57 |
</div> |
--- client/views/theme/tema_v1/css/component.css
+++ client/views/themes/tema_v1/css/component.css
No changes |
--- client/views/theme/tema_v1/css/main.css
+++ client/views/themes/tema_v1/css/main.css
No changes |
--- client/views/theme/tema_v1/css/style.css
+++ client/views/themes/tema_v1/css/style.css
No changes |
--- client/views/theme/tema_v1/img/A00.svg
+++ client/views/themes/tema_v1/img/A00.svg
No changes |
--- client/views/theme/tema_v1/img/next.svg
+++ client/views/themes/tema_v1/img/next.svg
No changes |
--- client/views/theme/tema_v1/img/play.svg
+++ client/views/themes/tema_v1/img/play.svg
No changes |
--- client/views/theme/tema_v1/img/prev.svg
+++ client/views/themes/tema_v1/img/prev.svg
No changes |
--- client/views/theme/tema_v1/img/stop.svg
+++ client/views/themes/tema_v1/img/stop.svg
No changes |
--- client/views/theme/tema_v2/css/component.css
+++ client/views/themes/tema_v2/css/component.css
No changes |
--- client/views/theme/tema_v2/css/main.css
+++ client/views/themes/tema_v2/css/main.css
No changes |
--- client/views/theme/tema_v2/css/style.css
+++ client/views/themes/tema_v2/css/style.css
No changes |
--- client/views/theme/tema_v2/img/A00.svg
+++ client/views/themes/tema_v2/img/A00.svg
No changes |
--- client/views/theme/tema_v2/img/btn_bullet_white.png
+++ client/views/themes/tema_v2/img/btn_bullet_white.png
Binary file is not shown |
--- client/views/theme/tema_v2/img/btn_list_bullet.png
+++ client/views/themes/tema_v2/img/btn_list_bullet.png
Binary file is not shown |
--- client/views/theme/tema_v2/img/circle_arrow.png
+++ client/views/themes/tema_v2/img/circle_arrow.png
Binary file is not shown |
--- client/views/theme/tema_v2/img/img1.png
+++ client/views/themes/tema_v2/img/img1.png
Binary file is not shown |
--- client/views/theme/tema_v2/img/img_service_05.png
+++ client/views/themes/tema_v2/img/img_service_05.png
Binary file is not shown |
--- client/views/theme/tema_v2/img/next.svg
+++ client/views/themes/tema_v2/img/next.svg
No changes |
--- client/views/theme/tema_v2/img/play.svg
+++ client/views/themes/tema_v2/img/play.svg
No changes |
--- client/views/theme/tema_v2/img/prev.svg
+++ client/views/themes/tema_v2/img/prev.svg
No changes |
--- client/views/theme/tema_v2/img/stop.svg
+++ client/views/themes/tema_v2/img/stop.svg
No changes |
--- webpack.config.js
+++ webpack.config.js
... | ... | @@ -12,7 +12,7 @@ |
12 | 12 |
devtool: 'source-map', |
13 | 13 |
|
14 | 14 |
entry: { |
15 |
- app: [`${BASE_DIR}/client/views/index.js`] |
|
15 |
+ app: [`${BASE_DIR}/client/views/index.js`], |
|
16 | 16 |
}, |
17 | 17 |
|
18 | 18 |
module: { |
... | ... | @@ -35,7 +35,7 @@ |
35 | 35 |
// fallback: require.resolve('file-loader') |
36 | 36 |
// } |
37 | 37 |
// }] |
38 |
- // } |
|
38 |
+ // }, |
|
39 | 39 |
{ |
40 | 40 |
test: /\.scss$/, |
41 | 41 |
use: [ |
... | ... | @@ -53,7 +53,7 @@ |
53 | 53 |
}, |
54 | 54 |
{ |
55 | 55 |
test: /\.(jpe?g|png|gif|svg|ttf|eot|woff|woff2)$/i, |
56 |
- type: 'asset/resource', |
|
56 |
+ type: 'asset/resource',//asset/resource : 무조건 파일 출력,asset/inline : 무조건 base64로 인라인,asset : 자동 판단 (기본 limit 8KB) |
|
57 | 57 |
}, |
58 | 58 |
], |
59 | 59 |
}, |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?