
--- client/resources/css/common/common.css
+++ client/resources/css/common/common.css
... | ... | @@ -1,155 +1,276 @@ |
1 |
-*{ |
|
2 |
- padding: 0; margin: 0; color: #000; |
|
3 |
- font-family: "Pretendard-R"; box-sizing: border-box; |
|
1 |
+* { |
|
2 |
+ padding: 0; |
|
3 |
+ margin: 0; |
|
4 |
+ color: #000; |
|
5 |
+ font-family: "Pretendard-R"; |
|
6 |
+ box-sizing: border-box; |
|
4 | 7 |
} |
5 |
-html{font-size: 10px;} |
|
6 | 8 |
|
7 |
-a{text-decoration: none; display: block;} |
|
8 |
-li{list-style: none;} |
|
9 |
-button{border: 0; background: none; cursor: pointer;} |
|
10 |
-input{border: 0; flex-shrink: 0; outline: 0;} |
|
11 |
-input::placeholder{color: #999999;} |
|
12 |
-input[type="checkbox"]{ |
|
13 |
- width: 15px; |
|
14 |
- height: 15px; |
|
9 |
+html { |
|
10 |
+ font-size: 10px; |
|
11 |
+} |
|
12 |
+ |
|
13 |
+a { |
|
14 |
+ text-decoration: none; |
|
15 |
+ display: block; |
|
16 |
+} |
|
17 |
+ |
|
18 |
+li { |
|
19 |
+ list-style: none; |
|
20 |
+} |
|
21 |
+ |
|
22 |
+button { |
|
23 |
+ border: 0; |
|
24 |
+ background: none; |
|
25 |
+ cursor: pointer; |
|
26 |
+} |
|
27 |
+ |
|
28 |
+input { |
|
29 |
+ border: 0; |
|
30 |
+ flex-shrink: 0; |
|
31 |
+ outline: 0; |
|
32 |
+} |
|
33 |
+ |
|
34 |
+input::placeholder { |
|
35 |
+ color: #999999; |
|
36 |
+} |
|
37 |
+ |
|
38 |
+input[type="checkbox"] { |
|
39 |
+ width: 15px; |
|
40 |
+ height: 15px; |
|
15 | 41 |
} |
16 | 42 |
|
17 | 43 |
|
18 | 44 |
input[readonly] { |
19 |
- background-color: #f6f6f6 !important; |
|
20 |
- color: #999; |
|
45 |
+ background-color: #f6f6f6 !important; |
|
46 |
+ color: #999; |
|
21 | 47 |
} |
22 |
-select{background-color: transparent ;} |
|
23 |
-select:focus {border: 0; outline: 0;} |
|
24 |
-textarea{resize: none;} |
|
48 |
+ |
|
49 |
+select { |
|
50 |
+ background-color: transparent; |
|
51 |
+} |
|
52 |
+ |
|
53 |
+select:focus { |
|
54 |
+ border: 0; |
|
55 |
+ outline: 0; |
|
56 |
+} |
|
57 |
+ |
|
58 |
+textarea { |
|
59 |
+ resize: none; |
|
60 |
+} |
|
25 | 61 |
|
26 | 62 |
|
27 |
-.w130{width: 130px;} |
|
28 |
-.w1500{width: 1500px; margin: 0 auto;} |
|
29 |
-.wfull{width: -webkit-fill-available;} |
|
63 |
+.w130 { |
|
64 |
+ width: 130px; |
|
65 |
+} |
|
66 |
+ |
|
67 |
+.w1500 { |
|
68 |
+ width: 1500px; |
|
69 |
+ margin: 0 auto; |
|
70 |
+} |
|
71 |
+ |
|
72 |
+.wfull { |
|
73 |
+ width: -webkit-fill-available; |
|
74 |
+} |
|
30 | 75 |
|
31 | 76 |
|
32 | 77 |
@media screen and (max-width: 1500px) { |
33 |
- .w1500{width: auto; } |
|
78 |
+ .w1500 { |
|
79 |
+ width: auto; |
|
34 | 80 |
} |
35 |
-.flex{display: flex;} |
|
36 |
-.align-center{align-items: center;} |
|
37 |
-.flex-end{ |
|
38 |
- display: flex; |
|
39 |
- justify-content: end; |
|
40 |
-} |
|
41 |
-.flex-center{ |
|
42 |
- display: flex; |
|
43 |
- justify-content: center; |
|
44 |
-} |
|
45 |
-.flex-sp-bw{ |
|
46 |
- display: flex; |
|
47 |
- justify-content: space-between; |
|
48 | 81 |
} |
49 | 82 |
|
50 |
-.mt-5{margin-top: 5px;} |
|
51 |
-.mt-20{margin-top: 20px;} |
|
52 |
-.mt-40{margin-top: 40px;} |
|
53 |
- |
|
54 |
-.mb-5{margin-bottom: 5px;} |
|
55 |
-.mb-10{margin-bottom: 10px;} |
|
56 |
-.mb-15{margin-bottom: 15px;} |
|
57 |
-.mb-20{margin-bottom: 20px;} |
|
58 |
-.mb-25{margin-bottom: 25px;} |
|
59 |
-.mb-30{margin-bottom: 30px;} |
|
60 |
-.mb-40{margin-bottom: 40px;} |
|
61 |
-.mb-50{margin-bottom: 50px;} |
|
62 |
-.mb-60{margin-bottom: 60px;} |
|
63 |
-.mb-110{margin-bottom: 110px;} |
|
64 |
- |
|
65 |
- |
|
66 |
-.btn-group button{ |
|
67 |
- width: 130px; |
|
68 |
- padding: 15px 0px; |
|
69 |
- border-radius: 10px; |
|
70 |
- font-size: 20px; |
|
71 |
- |
|
83 |
+.flex { |
|
84 |
+ display: flex; |
|
72 | 85 |
} |
73 |
-.btn-group-small .button{ |
|
74 |
- padding: 10px 25px; |
|
75 |
- border-radius: 5px; |
|
86 |
+ |
|
87 |
+.align-center { |
|
88 |
+ align-items: center; |
|
89 |
+} |
|
90 |
+ |
|
91 |
+.flex-end { |
|
92 |
+ display: flex; |
|
93 |
+ justify-content: end; |
|
94 |
+} |
|
95 |
+ |
|
96 |
+.flex-center { |
|
97 |
+ display: flex; |
|
98 |
+ justify-content: center; |
|
99 |
+} |
|
100 |
+ |
|
101 |
+.flex-sp-bw { |
|
102 |
+ display: flex; |
|
103 |
+ justify-content: space-between; |
|
104 |
+} |
|
105 |
+ |
|
106 |
+.mt-5 { |
|
107 |
+ margin-top: 5px; |
|
108 |
+} |
|
109 |
+ |
|
110 |
+.mt-20 { |
|
111 |
+ margin-top: 20px; |
|
112 |
+} |
|
113 |
+ |
|
114 |
+.mt-40 { |
|
115 |
+ margin-top: 40px; |
|
116 |
+} |
|
117 |
+ |
|
118 |
+.mb-5 { |
|
119 |
+ margin-bottom: 5px; |
|
120 |
+} |
|
121 |
+ |
|
122 |
+.mb-10 { |
|
123 |
+ margin-bottom: 10px; |
|
124 |
+} |
|
125 |
+ |
|
126 |
+.mb-15 { |
|
127 |
+ margin-bottom: 15px; |
|
128 |
+} |
|
129 |
+ |
|
130 |
+.mb-20 { |
|
131 |
+ margin-bottom: 20px; |
|
132 |
+} |
|
133 |
+ |
|
134 |
+.mb-25 { |
|
135 |
+ margin-bottom: 25px; |
|
136 |
+} |
|
137 |
+ |
|
138 |
+.mb-30 { |
|
139 |
+ margin-bottom: 30px; |
|
140 |
+} |
|
141 |
+ |
|
142 |
+.mb-40 { |
|
143 |
+ margin-bottom: 40px; |
|
144 |
+} |
|
145 |
+ |
|
146 |
+.mb-50 { |
|
147 |
+ margin-bottom: 50px; |
|
148 |
+} |
|
149 |
+ |
|
150 |
+.mb-60 { |
|
151 |
+ margin-bottom: 60px; |
|
152 |
+} |
|
153 |
+ |
|
154 |
+.mb-110 { |
|
155 |
+ margin-bottom: 110px; |
|
156 |
+} |
|
157 |
+ |
|
158 |
+ |
|
159 |
+.btn-group button { |
|
160 |
+ width: 130px; |
|
161 |
+ padding: 15px 0px; |
|
162 |
+ border-radius: 10px; |
|
163 |
+ font-size: 20px; |
|
164 |
+ |
|
165 |
+} |
|
166 |
+ |
|
167 |
+.btn-group-small .button { |
|
168 |
+ padding: 10px 25px; |
|
169 |
+ border-radius: 5px; |
|
170 |
+ font-size: 16px; |
|
171 |
+ font-family: "Pretendard-M"; |
|
172 |
+ cursor: pointer; |
|
173 |
+ |
|
174 |
+ p { |
|
76 | 175 |
font-size: 16px; |
77 | 176 |
font-family: "Pretendard-M"; |
78 |
- cursor: pointer; |
|
79 |
- p{ |
|
80 |
- font-size: 16px; |
|
81 |
- font-family: "Pretendard-M"; |
|
82 |
- } |
|
177 |
+ } |
|
83 | 178 |
} |
84 | 179 |
|
85 |
-.button, button{ |
|
86 |
- &.red-line{ |
|
87 |
- border: 1px solid #ce3e48; |
|
88 |
- color: #ce3e48; |
|
180 |
+.button, |
|
181 |
+button { |
|
182 |
+ &.red-line { |
|
183 |
+ border: 1px solid #ce3e48; |
|
184 |
+ color: #ce3e48; |
|
185 |
+ } |
|
186 |
+ |
|
187 |
+ &.blue-line { |
|
188 |
+ border: 1px solid #275cbd; |
|
189 |
+ color: #275cbd; |
|
190 |
+ } |
|
191 |
+ |
|
192 |
+ &.blue-line-bg { |
|
193 |
+ border: 1px solid #007ac3; |
|
194 |
+ background-color: #eff5f9; |
|
195 |
+ color: #0271b3; |
|
196 |
+ |
|
197 |
+ p { |
|
198 |
+ color: #0271b3; |
|
89 | 199 |
} |
90 |
- &.blue-line{ |
|
91 |
- border: 1px solid #275cbd; |
|
92 |
- color: #275cbd; |
|
200 |
+ } |
|
201 |
+ |
|
202 |
+ &.green-line { |
|
203 |
+ border: 1px solid #32b31d; |
|
204 |
+ color: #2d9b1b; |
|
205 |
+ } |
|
206 |
+ |
|
207 |
+ &.gray-line { |
|
208 |
+ border: 1px solid #636364; |
|
209 |
+ color: #000; |
|
210 |
+ } |
|
211 |
+ |
|
212 |
+ &.gray-bg { |
|
213 |
+ background-color: #636364; |
|
214 |
+ color: #fff; |
|
215 |
+ } |
|
216 |
+ |
|
217 |
+ &.gray-line-bg { |
|
218 |
+ border: 1px solid #636364; |
|
219 |
+ background-color: #f9f9f9; |
|
220 |
+ color: #000; |
|
221 |
+ } |
|
222 |
+ |
|
223 |
+ &.pink-line-bg { |
|
224 |
+ border: 1px solid #a5067b; |
|
225 |
+ background-color: #f7ebf4; |
|
226 |
+ color: #a5067b; |
|
227 |
+ |
|
228 |
+ p { |
|
229 |
+ color: #a5067b; |
|
93 | 230 |
} |
94 |
- &.blue-line-bg{ |
|
95 |
- border: 1px solid #007ac3; |
|
96 |
- background-color: #eff5f9; |
|
97 |
- color: #0271b3; |
|
98 |
- p{ |
|
99 |
- color: #0271b3; |
|
100 |
- } |
|
231 |
+ } |
|
232 |
+ |
|
233 |
+ &.gradient { |
|
234 |
+ position: relative; |
|
235 |
+ background: linear-gradient(132deg, #3e355c, #763954); |
|
236 |
+ color: #fff; |
|
237 |
+ padding-right: 20px; |
|
238 |
+ |
|
239 |
+ &::after { |
|
240 |
+ content: ''; |
|
241 |
+ background-image: url(../../images/icon/down.png); |
|
242 |
+ width: 15px; |
|
243 |
+ height: 15px; |
|
244 |
+ display: block; |
|
245 |
+ position: absolute; |
|
246 |
+ right: 17px; |
|
247 |
+ top: 20px; |
|
101 | 248 |
} |
102 |
- &.green-line{ |
|
103 |
- border: 1px solid #32b31d; |
|
104 |
- color: #2d9b1b; |
|
105 |
- } |
|
106 |
- &.gray-line{ |
|
107 |
- border: 1px solid #636364; |
|
108 |
- color: #000; |
|
109 |
- } |
|
110 |
- &.gray-bg{ |
|
111 |
- background-color: #636364; |
|
112 |
- color: #fff; |
|
113 |
- } |
|
114 |
- &.gray-line-bg{ |
|
115 |
- border: 1px solid #636364; |
|
116 |
- background-color: #f9f9f9; |
|
117 |
- color: #000; |
|
118 |
- } |
|
119 |
- &.pink-line-bg{ |
|
120 |
- border: 1px solid #a5067b; |
|
121 |
- background-color: #f7ebf4; |
|
122 |
- color: #a5067b; |
|
123 |
- p{ |
|
124 |
- color: #a5067b; |
|
125 |
- } |
|
126 |
- } |
|
127 |
- &.gradient{ |
|
128 |
- position: relative; |
|
129 |
- background: linear-gradient(132deg, #3e355c, #763954); |
|
130 |
- color: #fff; |
|
131 |
- padding-right: 20px; |
|
132 |
- &::after{ |
|
133 |
- content: ''; |
|
134 |
- background-image: url(../../images/icon/down.png); |
|
135 |
- width: 15px; |
|
136 |
- height: 15px; |
|
137 |
- display: block; |
|
138 |
- position: absolute; |
|
139 |
- right: 17px; |
|
140 |
- top: 20px; |
|
141 |
- } |
|
142 |
- } |
|
249 |
+ } |
|
143 | 250 |
} |
144 | 251 |
|
145 |
- /* 닫기 버튼 스타일 */ |
|
252 |
+/* 닫기 버튼 스타일 */ |
|
146 | 253 |
|
147 |
- button.closebtn { |
|
148 |
- font-size: 20px; |
|
149 |
- width: 40px; |
|
150 |
- height: 40px; |
|
151 |
- background-color: #000; |
|
152 |
- color: white; |
|
153 |
- border: none; |
|
154 |
- border-radius: 50px; |
|
155 |
- } |
|
254 |
+button.closebtn { |
|
255 |
+ font-size: 20px; |
|
256 |
+ width: 40px; |
|
257 |
+ height: 40px; |
|
258 |
+ background-color: #000; |
|
259 |
+ color: white; |
|
260 |
+ border: none; |
|
261 |
+ border-radius: 50px; |
|
262 |
+} |
|
263 |
+ |
|
264 |
+ |
|
265 |
+/* 텍스트 정렬 */ |
|
266 |
+.txt-left { |
|
267 |
+ text-align: left; |
|
268 |
+} |
|
269 |
+ |
|
270 |
+.txt-center { |
|
271 |
+ text-align: center; |
|
272 |
+} |
|
273 |
+ |
|
274 |
+.txt-right { |
|
275 |
+ text-align: right; |
|
276 |
+}(파일 끝에 줄바꿈 문자 없음) |
--- client/resources/css/user/sub.css
+++ client/resources/css/user/sub.css
... | ... | @@ -1,730 +1,771 @@ |
1 | 1 |
.hr { |
2 |
- background-color: #eeeeee; |
|
3 |
- margin: 10px 0; |
|
4 |
- width: 100%; |
|
5 |
- height: 1px; |
|
2 |
+ background-color: #eeeeee; |
|
3 |
+ margin: 10px 0; |
|
4 |
+ width: 100%; |
|
5 |
+ height: 1px; |
|
6 | 6 |
} |
7 |
+ |
|
7 | 8 |
.hr.pink { |
8 |
- background-color: rgba(194, 61, 71, 0.1); |
|
9 |
- margin: 10px 0; |
|
10 |
- width: 100%; |
|
11 |
- height: 1px; |
|
9 |
+ background-color: rgba(194, 61, 71, 0.1); |
|
10 |
+ margin: 10px 0; |
|
11 |
+ width: 100%; |
|
12 |
+ height: 1px; |
|
12 | 13 |
} |
14 |
+ |
|
13 | 15 |
@media screen and (max-width: 1500px) { |
14 |
- .content{width: auto !important; } |
|
16 |
+ .content { |
|
17 |
+ width: auto !important; |
|
15 | 18 |
} |
19 |
+} |
|
20 |
+ |
|
16 | 21 |
.content { |
17 |
- width: 1500px; |
|
18 |
- margin: 0 auto; |
|
19 |
- padding-bottom: 27rem; |
|
20 |
- padding-top: 56px; |
|
22 |
+ width: 1500px; |
|
23 |
+ margin: 0 auto; |
|
24 |
+ padding-bottom: 27rem; |
|
25 |
+ padding-top: 56px; |
|
21 | 26 |
|
22 |
- h2 { |
|
23 |
- font-family: "HAPPINESS-SANS-title"; |
|
24 |
- font-size: 40px; |
|
27 |
+ h2 { |
|
28 |
+ font-family: "HAPPINESS-SANS-title"; |
|
29 |
+ font-size: 40px; |
|
30 |
+ } |
|
31 |
+ |
|
32 |
+ h3 { |
|
33 |
+ font-family: "Pretendard-B"; |
|
34 |
+ font-size: 25px; |
|
35 |
+ position: relative; |
|
36 |
+ padding-left: 20px; |
|
37 |
+ margin-bottom: 20px; |
|
38 |
+ |
|
39 |
+ &::before { |
|
40 |
+ content: ''; |
|
41 |
+ background: url(../../images/icon/subtitle.png); |
|
42 |
+ width: 7px; |
|
43 |
+ top: 6px; |
|
44 |
+ left: 0; |
|
45 |
+ height: 17px; |
|
46 |
+ display: block; |
|
47 |
+ position: absolute; |
|
48 |
+ } |
|
49 |
+ } |
|
50 |
+ |
|
51 |
+ .gopage { |
|
52 |
+ font-family: "Pretendard-L"; |
|
53 |
+ font-size: 17px; |
|
54 |
+ text-align: right; |
|
55 |
+ |
|
56 |
+ } |
|
57 |
+ |
|
58 |
+ .gopage::after { |
|
59 |
+ content: '\2192'; |
|
60 |
+ font-size: 18px; |
|
61 |
+ } |
|
62 |
+ |
|
63 |
+ /* pagination */ |
|
64 |
+ .pagination { |
|
65 |
+ button { |
|
66 |
+ width: 40px; |
|
67 |
+ height: 40px; |
|
68 |
+ margin: 0 4px; |
|
69 |
+ border: 1px solid #f0f1f4; |
|
70 |
+ background-color: #fff; |
|
71 |
+ border-radius: 50px; |
|
25 | 72 |
} |
26 | 73 |
|
27 |
- h3 { |
|
28 |
- font-family: "Pretendard-B"; |
|
29 |
- font-size: 25px; |
|
30 |
- position: relative; |
|
31 |
- padding-left: 20px; |
|
32 |
- margin-bottom: 20px; |
|
33 |
- |
|
34 |
- &::before { |
|
35 |
- content: ''; |
|
36 |
- background: url(../../images/icon/subtitle.png); |
|
37 |
- width: 7px; |
|
38 |
- top: 6px; |
|
39 |
- left: 0; |
|
40 |
- height: 17px; |
|
41 |
- display: block; |
|
42 |
- position: absolute; |
|
43 |
- } |
|
74 |
+ button.page-number { |
|
75 |
+ font-size: 20px; |
|
76 |
+ color: #555555; |
|
77 |
+ width: 40px; |
|
78 |
+ height: 40px; |
|
79 |
+ background-color: #f0f1f4; |
|
80 |
+ border-radius: 50px; |
|
44 | 81 |
} |
45 | 82 |
|
46 |
- .gopage { |
|
47 |
- font-family: "Pretendard-L"; |
|
83 |
+ button.page-number.clicked { |
|
84 |
+ background-color: #ce3e48; |
|
85 |
+ color: #fff; |
|
86 |
+ } |
|
87 |
+ |
|
88 |
+ .anticon { |
|
89 |
+ svg { |
|
48 | 90 |
font-size: 17px; |
49 |
- text-align: right; |
|
50 | 91 |
|
92 |
+ path { |
|
93 |
+ color: #636364; |
|
94 |
+ } |
|
95 |
+ } |
|
51 | 96 |
} |
52 |
- |
|
53 |
- .gopage::after { |
|
54 |
- content: '\2192'; |
|
55 |
- font-size: 18px; |
|
56 |
- } |
|
57 |
- |
|
58 |
- |
|
59 |
- /* pagination */ |
|
60 |
- .pagination { |
|
61 |
- button { |
|
62 |
- width: 40px; |
|
63 |
- height: 40px; |
|
64 |
- margin: 0 4px; |
|
65 |
- border: 1px solid #f0f1f4; |
|
66 |
- background-color: #fff; |
|
67 |
- border-radius: 50px; |
|
68 |
- } |
|
69 |
- |
|
70 |
- button.page-number { |
|
71 |
- font-size: 20px; |
|
72 |
- color: #555555; |
|
73 |
- width: 40px; |
|
74 |
- height: 40px; |
|
75 |
- background-color: #f0f1f4; |
|
76 |
- border-radius: 50px; |
|
77 |
- } |
|
78 |
- |
|
79 |
- button.page-number.clicked { |
|
80 |
- background-color: #ce3e48; |
|
81 |
- color: #fff; |
|
82 |
- } |
|
83 |
- |
|
84 |
- .anticon { |
|
85 |
- svg { |
|
86 |
- font-size: 17px; |
|
87 |
- |
|
88 |
- path { |
|
89 |
- color: #636364; |
|
90 |
- } |
|
91 |
- } |
|
92 |
- |
|
93 |
- |
|
94 |
- } |
|
95 |
- } |
|
96 |
- |
|
97 |
- |
|
98 |
- |
|
97 |
+ } |
|
99 | 98 |
} |
100 | 99 |
|
101 | 100 |
.sub-title-area { |
102 |
- display: flex; |
|
103 |
- justify-content: space-between; |
|
104 |
- align-items: flex-end; |
|
101 |
+ display: flex; |
|
102 |
+ justify-content: space-between; |
|
103 |
+ align-items: flex-end; |
|
105 | 104 |
} |
106 | 105 |
|
107 | 106 |
.breadcrumb-list { |
108 |
- ul { |
|
109 |
- display: flex; |
|
110 |
- align-items: center; |
|
111 |
- gap: 15px; |
|
107 |
+ ul { |
|
108 |
+ display: flex; |
|
109 |
+ align-items: center; |
|
110 |
+ gap: 15px; |
|
111 |
+ } |
|
112 |
+ |
|
113 |
+ li { |
|
114 |
+ font-size: 16px; |
|
115 |
+ |
|
116 |
+ p { |
|
117 |
+ font-size: 16px; |
|
118 |
+ color: #000; |
|
119 |
+ font-family: "Pretendard-L"; |
|
120 |
+ margin-left: 5px; |
|
112 | 121 |
} |
113 | 122 |
|
114 |
- li { |
|
115 |
- font-size: 16px; |
|
116 |
- |
|
117 |
- p { |
|
118 |
- font-size: 16px; |
|
119 |
- color: #000; |
|
120 |
- font-family: "Pretendard-L"; |
|
121 |
- margin-left: 5px; |
|
122 |
- } |
|
123 |
- |
|
124 |
- &:first-child { |
|
125 |
- display: flex; |
|
126 |
- align-items: center; |
|
127 |
- } |
|
128 |
- |
|
129 |
- &:last-child { |
|
130 |
- font-family: "Pretendard-SB"; |
|
131 |
- } |
|
123 |
+ &:first-child { |
|
124 |
+ display: flex; |
|
125 |
+ align-items: center; |
|
132 | 126 |
} |
127 |
+ |
|
128 |
+ &:last-child { |
|
129 |
+ font-family: "Pretendard-SB"; |
|
130 |
+ } |
|
131 |
+ } |
|
133 | 132 |
} |
134 | 133 |
|
135 | 134 |
|
136 | 135 |
.btn-group { |
137 |
- gap: 10px; |
|
136 |
+ gap: 10px; |
|
138 | 137 |
|
139 |
- button.cancel { |
|
140 |
- width: 130px; |
|
141 |
- background-color: #f9f9f9; |
|
142 |
- border: 1px solid #636364; |
|
138 |
+ button.cancel { |
|
139 |
+ width: 130px; |
|
140 |
+ background-color: #f9f9f9; |
|
141 |
+ border: 1px solid #636364; |
|
142 |
+ } |
|
143 |
+ |
|
144 |
+ button.register { |
|
145 |
+ width: 130px; |
|
146 |
+ background-color: #ce3e48; |
|
147 |
+ color: #fff; |
|
148 |
+ |
|
149 |
+ a, |
|
150 |
+ span { |
|
151 |
+ color: #fff; |
|
143 | 152 |
} |
144 |
- |
|
145 |
- button.register { |
|
146 |
- width: 130px; |
|
147 |
- background-color: #ce3e48; |
|
148 |
- color: #fff; |
|
149 |
- |
|
150 |
- a, span { |
|
151 |
- color: #fff; |
|
152 |
- } |
|
153 |
- } |
|
153 |
+ } |
|
154 | 154 |
} |
155 | 155 |
|
156 |
-form, .form { |
|
157 |
- margin: 0 auto; |
|
156 |
+form, |
|
157 |
+.form { |
|
158 |
+ margin: 0 auto; |
|
159 |
+ border: 1px solid #dddddd; |
|
160 |
+ border-radius: 20px; |
|
161 |
+ |
|
162 |
+ input { |
|
163 |
+ padding: 0 15px; |
|
164 |
+ height: 50px; |
|
158 | 165 |
border: 1px solid #dddddd; |
159 |
- border-radius: 20px; |
|
166 |
+ border-radius: 5px; |
|
167 |
+ font-size: 16px; |
|
168 |
+ width: inherit; |
|
169 |
+ } |
|
160 | 170 |
|
161 |
- input { |
|
162 |
- padding: 0 15px; |
|
163 |
- height: 50px; |
|
164 |
- border: 1px solid #dddddd; |
|
165 |
- border-radius: 5px; |
|
166 |
- font-size: 16px; |
|
167 |
- width: inherit; |
|
171 |
+ dd { |
|
172 |
+ display: flex; |
|
173 |
+ align-items: center; |
|
174 |
+ |
|
175 |
+ p { |
|
176 |
+ font-size: 20px; |
|
177 |
+ font-family: "Pretendard-L"; |
|
178 |
+ line-height: 30px; |
|
168 | 179 |
} |
169 | 180 |
|
170 |
- dd { |
|
171 |
- display: flex; |
|
172 |
- align-items: center; |
|
173 |
- |
|
174 |
- p { |
|
175 |
- font-size: 20px; |
|
176 |
- font-family: "Pretendard-L"; |
|
177 |
- line-height: 30px; |
|
178 |
- } |
|
179 |
- |
|
180 |
- span { |
|
181 |
- font-size: 20px; |
|
182 |
- font-family: "Pretendard-SB"; |
|
183 |
- } |
|
181 |
+ span { |
|
182 |
+ font-size: 20px; |
|
183 |
+ font-family: "Pretendard-SB"; |
|
184 | 184 |
} |
185 |
+ } |
|
185 | 186 |
|
186 |
- label { |
|
187 |
- position: relative; |
|
188 |
- width: 200px; |
|
189 |
- font-size: 18px; |
|
190 |
- flex-shrink: 0; |
|
187 |
+ label { |
|
188 |
+ position: relative; |
|
189 |
+ width: 200px; |
|
190 |
+ font-size: 18px; |
|
191 |
+ flex-shrink: 0; |
|
191 | 192 |
|
192 |
- &.require::after { |
|
193 |
- position: absolute; |
|
194 |
- top: 5px; |
|
195 |
- padding-left: 3px; |
|
196 |
- content: "*"; |
|
197 |
- color: #df2d2d; |
|
198 |
- } |
|
193 |
+ &.require::after { |
|
194 |
+ position: absolute; |
|
195 |
+ top: 5px; |
|
196 |
+ padding-left: 3px; |
|
197 |
+ content: "*"; |
|
198 |
+ color: #df2d2d; |
|
199 | 199 |
} |
200 |
- |
|
201 |
- |
|
200 |
+ } |
|
202 | 201 |
} |
203 | 202 |
|
204 | 203 |
/* 카테고리 */ |
205 | 204 |
.category { |
205 |
+ display: flex; |
|
206 |
+ gap: 5px; |
|
207 |
+ |
|
208 |
+ .category-item { |
|
206 | 209 |
display: flex; |
207 |
- gap: 5px; |
|
210 |
+ justify-content: space-between; |
|
211 |
+ margin-bottom: 10px; |
|
212 |
+ } |
|
208 | 213 |
|
209 |
- .category-item { |
|
210 |
- display: flex; |
|
211 |
- justify-content: space-between; |
|
212 |
- margin-bottom: 10px; |
|
214 |
+ li { |
|
215 |
+ width: fit-content; |
|
216 |
+ border-radius: 3px; |
|
217 |
+ padding: 5px 10px; |
|
218 |
+ font-family: "Pretendard-SB" !important; |
|
219 |
+ font-size: 14px; |
|
220 |
+ |
|
221 |
+ &:nth-child(odd) { |
|
222 |
+ color: #a5067b; |
|
223 |
+ border: 1px solid #a5067b; |
|
213 | 224 |
} |
214 | 225 |
|
215 |
- li { |
|
216 |
- width: fit-content; |
|
217 |
- border-radius: 3px; |
|
218 |
- padding: 5px 10px; |
|
219 |
- font-family: "Pretendard-SB" !important; |
|
220 |
- font-size: 14px; |
|
221 |
- |
|
222 |
- &:nth-child(odd) { |
|
223 |
- color: #a5067b; |
|
224 |
- border: 1px solid #a5067b; |
|
225 |
- } |
|
226 |
- |
|
227 |
- &:nth-child(even) { |
|
228 |
- color: #007ac3; |
|
229 |
- border: 1px solid #007ac3; |
|
230 |
- } |
|
231 |
- |
|
232 |
- button { |
|
233 |
- margin-left: 15px; |
|
234 |
- } |
|
226 |
+ &:nth-child(even) { |
|
227 |
+ color: #007ac3; |
|
228 |
+ border: 1px solid #007ac3; |
|
235 | 229 |
} |
230 |
+ |
|
231 |
+ button { |
|
232 |
+ margin-left: 15px; |
|
233 |
+ } |
|
234 |
+ } |
|
236 | 235 |
} |
237 | 236 |
|
238 | 237 |
/* 로그인 */ |
239 | 238 |
.login-form { |
240 |
- width: 600px; |
|
241 |
- padding: 50px 60px; |
|
242 |
- dd{display: block;} |
|
239 |
+ width: 600px; |
|
240 |
+ padding: 50px 60px; |
|
241 |
+ |
|
242 |
+ dd { |
|
243 |
+ display: block; |
|
244 |
+ } |
|
245 |
+ |
|
246 |
+ label { |
|
247 |
+ color: #666; |
|
248 |
+ font-size: 16px; |
|
249 |
+ display: block; |
|
250 |
+ margin-bottom: 6px; |
|
251 |
+ } |
|
252 |
+ |
|
253 |
+ button { |
|
254 |
+ font-size: 22px; |
|
255 |
+ font-family: "Pretendard-B"; |
|
256 |
+ background: linear-gradient(132deg, #3e355c, #763954); |
|
257 |
+ width: 100%; |
|
258 |
+ padding: 19px 0; |
|
259 |
+ border-radius: 15px; |
|
260 |
+ margin-top: 10px; |
|
261 |
+ |
|
262 |
+ img { |
|
263 |
+ margin: 0 12px 0 0; |
|
264 |
+ } |
|
265 |
+ |
|
266 |
+ span { |
|
267 |
+ color: #fff; |
|
268 |
+ } |
|
269 |
+ } |
|
270 |
+ |
|
271 |
+ input { |
|
272 |
+ width: -webkit-fill-available; |
|
273 |
+ } |
|
274 |
+ |
|
275 |
+ .check-area { |
|
276 |
+ display: flex; |
|
277 |
+ |
|
278 |
+ input { |
|
279 |
+ margin-right: 5px; |
|
280 |
+ } |
|
281 |
+ |
|
243 | 282 |
label { |
244 |
- color: #666; |
|
245 |
- font-size: 16px; |
|
246 |
- display: block; |
|
247 |
- margin-bottom: 6px; |
|
283 |
+ width: auto; |
|
248 | 284 |
} |
249 |
- |
|
250 |
- button { |
|
251 |
- font-size: 22px; |
|
252 |
- font-family: "Pretendard-B"; |
|
253 |
- background: linear-gradient(132deg, #3e355c, #763954); |
|
254 |
- width: 100%; |
|
255 |
- padding: 19px 0; |
|
256 |
- border-radius: 15px; |
|
257 |
- margin-top: 10px; |
|
258 |
- |
|
259 |
- img { |
|
260 |
- margin: 0 12px 0 0; |
|
261 |
- } |
|
262 |
- |
|
263 |
- span { |
|
264 |
- color: #fff; |
|
265 |
- } |
|
266 |
- } |
|
267 |
- input{width: -webkit-fill-available;} |
|
268 |
- .check-area { |
|
269 |
- display: flex; |
|
270 |
- input { |
|
271 |
- margin-right: 5px; |
|
272 |
- } |
|
273 |
- label{width: auto;} |
|
274 |
- } |
|
285 |
+ } |
|
275 | 286 |
} |
276 | 287 |
|
277 | 288 |
/* 내정보 */ |
278 | 289 |
.info-form, |
279 | 290 |
.pwchange-form { |
280 |
- |
|
281 |
- padding: 30px 50px; |
|
282 |
- |
|
291 |
+ padding: 30px 50px; |
|
283 | 292 |
} |
284 | 293 |
|
285 | 294 |
.pwchange-form { |
286 |
- input { |
|
287 |
- width: 40%; |
|
288 |
- } |
|
295 |
+ input { |
|
296 |
+ width: 40%; |
|
297 |
+ } |
|
289 | 298 |
} |
290 | 299 |
|
291 | 300 |
.invalid-feedback.border { |
292 |
- display: flex; |
|
293 |
- align-items: center; |
|
294 |
- gap: 4px; |
|
295 |
- background-color: #fbf1f2 !important; |
|
296 |
- border: 1px solid #ce3e48 !important; |
|
297 |
- border-radius: 20px; |
|
298 |
- padding: 8px 24px; |
|
299 |
- margin-left: 20px !important; |
|
301 |
+ display: flex; |
|
302 |
+ align-items: center; |
|
303 |
+ gap: 4px; |
|
304 |
+ background-color: #fbf1f2 !important; |
|
305 |
+ border: 1px solid #ce3e48 !important; |
|
306 |
+ border-radius: 20px; |
|
307 |
+ padding: 8px 24px; |
|
308 |
+ margin-left: 20px !important; |
|
300 | 309 |
|
301 |
- span { |
|
302 |
- font-size: 14px !important; |
|
303 |
- color: #e22d2d; |
|
304 |
- font-family: "Pretendard-EL" !important; |
|
305 |
- } |
|
310 |
+ span { |
|
311 |
+ font-size: 14px !important; |
|
312 |
+ color: #e22d2d; |
|
313 |
+ font-family: "Pretendard-EL" !important; |
|
314 |
+ } |
|
306 | 315 |
} |
307 | 316 |
|
308 | 317 |
.info-form { |
309 |
- dd { |
|
310 |
- img { |
|
311 |
- margin-right: 17px; |
|
312 |
- } |
|
313 |
- |
|
314 |
- span { |
|
315 |
- width: 118px; |
|
316 |
- } |
|
317 |
- .ck-content{font-size: 20px; font-family: "Pretendard-L";} |
|
318 |
+ dd { |
|
319 |
+ img { |
|
320 |
+ margin-right: 17px; |
|
318 | 321 |
} |
322 |
+ |
|
323 |
+ span { |
|
324 |
+ width: 118px; |
|
325 |
+ } |
|
326 |
+ |
|
327 |
+ .ck-content { |
|
328 |
+ font-size: 20px; |
|
329 |
+ font-family: "Pretendard-L"; |
|
330 |
+ } |
|
331 |
+ } |
|
319 | 332 |
} |
320 | 333 |
|
321 | 334 |
/* 통합검색 */ |
322 | 335 |
.search-form { |
323 |
- dl { |
|
324 |
- padding: 35px 75px; |
|
336 |
+ dl { |
|
337 |
+ padding: 35px 75px; |
|
325 | 338 |
|
326 |
- dd { |
|
327 |
- display: flex; |
|
328 |
- align-items: center; |
|
339 |
+ dd { |
|
340 |
+ display: flex; |
|
341 |
+ align-items: center; |
|
329 | 342 |
|
330 |
- p { |
|
331 |
- font-size: 18px; |
|
332 |
- font-family: "Pretendard-SB"; |
|
333 |
- width: 180px; |
|
334 |
- flex-shrink: 0; |
|
335 |
- } |
|
343 |
+ p { |
|
344 |
+ font-size: 18px; |
|
345 |
+ font-family: "Pretendard-SB"; |
|
346 |
+ width: 180px; |
|
347 |
+ flex-shrink: 0; |
|
348 |
+ } |
|
336 | 349 |
|
337 |
- input[type="text"] { |
|
338 |
- background-color: #f6f6f6; |
|
339 |
- border: 0; |
|
340 |
- } |
|
341 |
- } |
|
342 |
- dd.category-dd{ |
|
343 |
- ul{ |
|
344 |
- flex-wrap: wrap; |
|
345 |
- max-height: 80px; |
|
346 |
- width: 100%; |
|
347 |
- overflow-y: auto; |
|
348 |
- overflow-x: hidden; |
|
349 |
- } |
|
350 |
- |
|
351 |
- } |
|
352 |
- .mark { |
|
353 |
- width: fit-content; |
|
354 |
- margin: 0 11px; |
|
355 |
- } |
|
356 |
- |
|
350 |
+ input[type="text"] { |
|
351 |
+ background-color: #f6f6f6; |
|
352 |
+ border: 0; |
|
353 |
+ } |
|
357 | 354 |
} |
358 | 355 |
|
359 |
- background-image: linear-gradient(#fff, #fff), |
|
360 |
- linear-gradient(-45deg, #ca3e49, #3f355c); |
|
361 |
- background-origin: border-box; |
|
362 |
- background-clip: content-box, |
|
363 |
- border-box; |
|
364 |
- border: 3px solid transparent; |
|
365 |
- border-radius: 32px; |
|
356 |
+ dd.category-dd { |
|
357 |
+ ul { |
|
358 |
+ flex-wrap: wrap; |
|
359 |
+ max-height: 80px; |
|
360 |
+ width: 100%; |
|
361 |
+ overflow-y: auto; |
|
362 |
+ overflow-x: hidden; |
|
363 |
+ } |
|
364 |
+ } |
|
366 | 365 |
|
366 |
+ .mark { |
|
367 |
+ width: fit-content; |
|
368 |
+ margin: 0 11px; |
|
369 |
+ } |
|
370 |
+ } |
|
367 | 371 |
|
368 |
- .btn-group { |
|
369 |
- display: flex; |
|
370 |
- justify-content: center; |
|
372 |
+ background-image: linear-gradient(#fff, #fff), |
|
373 |
+ linear-gradient(-45deg, #ca3e49, #3f355c); |
|
374 |
+ background-origin: border-box; |
|
375 |
+ background-clip: content-box, |
|
376 |
+ border-box; |
|
377 |
+ border: 3px solid transparent; |
|
378 |
+ border-radius: 32px; |
|
371 | 379 |
|
372 |
- button { |
|
373 |
- display: flex; |
|
374 |
- align-items: center; |
|
375 |
- justify-content: center; |
|
376 |
- gap: 10px; |
|
377 |
- width: 140px; |
|
378 |
- font-family: "Pretendard-B"; |
|
379 |
- font-size: 16px; |
|
380 |
- border-radius: 30px; |
|
380 |
+ .btn-group { |
|
381 |
+ display: flex; |
|
382 |
+ justify-content: center; |
|
381 | 383 |
|
382 |
- &.reset { |
|
383 |
- border: 1px solid #ccc; |
|
384 |
- } |
|
384 |
+ button { |
|
385 |
+ display: flex; |
|
386 |
+ align-items: center; |
|
387 |
+ justify-content: center; |
|
388 |
+ gap: 10px; |
|
389 |
+ width: 140px; |
|
390 |
+ font-family: "Pretendard-B"; |
|
391 |
+ font-size: 16px; |
|
392 |
+ border-radius: 30px; |
|
385 | 393 |
|
386 |
- &.search { |
|
387 |
- background: linear-gradient(132deg, #3e355c, #763954); |
|
394 |
+ &.reset { |
|
395 |
+ border: 1px solid #ccc; |
|
396 |
+ } |
|
388 | 397 |
|
389 |
- p { |
|
390 |
- color: #fff; |
|
391 |
- } |
|
392 |
- } |
|
398 |
+ &.search { |
|
399 |
+ background: linear-gradient(132deg, #3e355c, #763954); |
|
400 |
+ |
|
401 |
+ p { |
|
402 |
+ color: #fff; |
|
393 | 403 |
} |
404 |
+ } |
|
394 | 405 |
} |
406 |
+ } |
|
395 | 407 |
|
396 |
- ul { |
|
397 |
- display: flex; |
|
398 |
- gap: 15px; |
|
408 |
+ ul { |
|
409 |
+ display: flex; |
|
410 |
+ gap: 15px; |
|
411 |
+ } |
|
412 |
+ |
|
413 |
+ li { |
|
414 |
+ display: flex; |
|
415 |
+ align-items: center; |
|
416 |
+ width: 175px; |
|
417 |
+ gap: 12px; |
|
418 |
+ |
|
419 |
+ label { |
|
420 |
+ cursor: pointer; |
|
399 | 421 |
} |
400 |
- |
|
401 |
- li { |
|
402 |
- display: flex; |
|
403 |
- align-items: center; |
|
404 |
- width: 175px; |
|
405 |
- gap: 12px; |
|
406 |
- label{cursor: pointer;} |
|
407 |
- } |
|
408 |
- |
|
409 |
- |
|
410 |
- |
|
411 |
- |
|
422 |
+ } |
|
412 | 423 |
} |
413 | 424 |
|
414 | 425 |
.select-box { |
415 |
- width: 106px; |
|
416 |
- height: 30px; |
|
417 |
- border: 1px solid #cccccc; |
|
418 |
- border-radius: 5px; |
|
419 |
- flex-shrink: 0; |
|
420 |
- line-height: 30px; |
|
421 |
- margin-left: 30px; |
|
426 |
+ width: 106px; |
|
427 |
+ height: 30px; |
|
428 |
+ border: 1px solid #cccccc; |
|
429 |
+ border-radius: 5px; |
|
430 |
+ flex-shrink: 0; |
|
431 |
+ line-height: 30px; |
|
432 |
+ margin-left: 30px; |
|
422 | 433 |
|
423 |
- select { |
|
424 |
- background: url(../../images/icon/select.png) calc(100% - 5px) center no-repeat; |
|
425 |
- width: 100%; |
|
426 |
- padding: 5px 30px 5px 10px; |
|
427 |
- border: 0; |
|
428 |
- font-size: 14px; |
|
429 |
- -o-appearance: none; |
|
430 |
- -webkit-appearance: none; |
|
431 |
- -moz-appearance: none; |
|
432 |
- appearance: none; |
|
433 |
- outline: 0 none; |
|
434 |
- } |
|
435 |
- select::-ms-expand { |
|
436 |
- display: none; |
|
437 |
- |
|
438 |
- } |
|
439 |
- select option { |
|
440 |
- padding: 3px 0; |
|
441 |
- } |
|
442 |
- |
|
434 |
+ select { |
|
435 |
+ background: url(../../images/icon/select.png) calc(100% - 5px) center no-repeat; |
|
436 |
+ width: 100%; |
|
437 |
+ padding: 5px 30px 5px 10px; |
|
438 |
+ border: 0; |
|
439 |
+ font-size: 14px; |
|
440 |
+ -o-appearance: none; |
|
441 |
+ -webkit-appearance: none; |
|
442 |
+ -moz-appearance: none; |
|
443 |
+ appearance: none; |
|
444 |
+ outline: 0 none; |
|
445 |
+ } |
|
446 |
+ |
|
447 |
+ select::-ms-expand { |
|
448 |
+ display: none; |
|
449 |
+ |
|
450 |
+ } |
|
451 |
+ |
|
452 |
+ select option { |
|
453 |
+ padding: 3px 0; |
|
454 |
+ } |
|
455 |
+ |
|
443 | 456 |
} |
444 | 457 |
|
445 | 458 |
.search-result { |
446 |
- margin-top: 40px; |
|
459 |
+ .float-div { |
|
460 |
+ position: absolute; |
|
461 |
+ top: 1rem; |
|
462 |
+ left: 1rem; |
|
463 |
+ z-index: 5; |
|
464 |
+ padding: 5px 10px; |
|
465 |
+ border-width: 1px; |
|
466 |
+ border-style: solid; |
|
467 |
+ border-radius: 3px; |
|
468 |
+ background-color: #FFFFFF; |
|
469 |
+ } |
|
447 | 470 |
|
471 |
+ .float-txt { |
|
472 |
+ color: inherit; |
|
473 |
+ font-size: 14px; |
|
474 |
+ font-family: "Pretendard-SB" !important; |
|
475 |
+ } |
|
448 | 476 |
|
477 |
+ .result-list-wrap:nth-child(odd) .float-div { |
|
478 |
+ color: #a5067b; |
|
479 |
+ border: 1px solid #a5067b; |
|
480 |
+ } |
|
449 | 481 |
|
450 |
- .resultext { |
|
451 |
- .main-img { |
|
452 |
- width: 320px; |
|
453 |
- height: 220px; |
|
454 |
- border-radius: 24px; |
|
455 |
- } |
|
456 |
- |
|
457 |
- display: flex; |
|
458 |
- align-items: center; |
|
459 |
- |
|
460 |
- p { |
|
461 |
- width: max-content; |
|
462 |
- font-family: "Pretendard-L"; |
|
463 |
- font-size: 17px; |
|
464 |
- |
|
465 |
- b { |
|
466 |
- color: #ce3e48; |
|
467 |
- } |
|
468 |
- } |
|
469 |
- |
|
470 |
- img { |
|
471 |
- object-fit: contain; |
|
472 |
- } |
|
473 |
- } |
|
474 |
- |
|
475 |
- .result-box { |
|
476 |
- display: flex; |
|
477 |
- justify-content: space-between; |
|
478 |
- border: 1px solid #ddd; |
|
479 |
- border-radius: 24px; |
|
480 |
- padding: 30px; |
|
481 |
- margin-bottom: 30px; |
|
482 |
- cursor: pointer; |
|
483 |
- .main-img{ |
|
484 |
- width: 320px; |
|
485 |
- height: 220px; |
|
486 |
- border-radius: 24px; |
|
487 |
- flex-shrink: 0; |
|
488 |
- img{ |
|
489 |
- width: 100%; |
|
490 |
- height: 100%; |
|
491 |
- border-radius: 24px; |
|
492 |
- object-fit: contain; |
|
493 |
- } |
|
494 |
- } |
|
495 |
- } |
|
496 |
- |
|
497 |
- .text-box { |
|
498 |
- cursor: pointer; |
|
499 |
- p, |
|
500 |
- li { |
|
501 |
- font-family: "Pretendard-L"; |
|
502 |
- |
|
503 |
- } |
|
504 |
- |
|
505 |
- .text { |
|
506 |
- width: 1048px; |
|
507 |
- font-size: 16px; |
|
508 |
- color: #555555; |
|
509 |
- overflow: hidden; |
|
510 |
- /* Hide any overflow */ |
|
511 |
- text-overflow: ellipsis; |
|
512 |
- /* Add an ellipsis at the end */ |
|
513 |
- display: -webkit-box; |
|
514 |
- -webkit-line-clamp: 2; |
|
515 |
- /* Limit to 2 lines */ |
|
516 |
- -webkit-box-orient: vertical; |
|
517 |
- margin-bottom: 20px; |
|
518 |
- } |
|
519 |
- |
|
520 |
- h5 { |
|
521 |
- font-family: "Pretendard-B"; |
|
522 |
- font-size: 25px; |
|
523 |
- margin-bottom: 20px; |
|
524 |
- |
|
525 |
- } |
|
526 |
- |
|
527 |
- .address { |
|
528 |
- font-size: 20px; |
|
529 |
- margin-bottom: 18px; |
|
530 |
- } |
|
531 |
- |
|
532 |
- .date { |
|
533 |
- ul { |
|
534 |
- display: flex; |
|
535 |
- gap: 20px; |
|
536 |
- } |
|
537 |
- |
|
538 |
- li { |
|
539 |
- font-size: 17px; |
|
540 |
- |
|
541 |
- b { |
|
542 |
- margin-left: 5px; |
|
543 |
- } |
|
544 |
- } |
|
545 |
- } |
|
546 |
- } |
|
547 |
- |
|
548 |
- .tabs { |
|
549 |
- .tab-box { |
|
550 |
- display: flex; |
|
551 |
- justify-content: end; |
|
552 |
- gap: 25px; |
|
553 |
- } |
|
554 |
- |
|
555 |
- .tab-title { |
|
556 |
- display: flex; |
|
557 |
- align-items: center; |
|
558 |
- gap: 13px; |
|
559 |
- |
|
560 |
- p { |
|
561 |
- cursor: pointer; |
|
562 |
- font-family: "HAPPINESS-SANS-REGULAR"; |
|
563 |
- color: #cccccc; |
|
564 |
- font-size: 17px; |
|
565 |
- |
|
566 |
- b { |
|
567 |
- color: #cccccc; |
|
568 |
- } |
|
569 |
- } |
|
570 |
- |
|
571 |
- } |
|
572 |
- |
|
573 |
- .tab-title.active p { |
|
574 |
- color: #000; |
|
575 |
- |
|
576 |
- b { |
|
577 |
- color: #ff4141; |
|
578 |
- |
|
579 |
- } |
|
580 |
- |
|
581 |
- } |
|
582 |
- |
|
583 |
- .tab-content { |
|
584 |
- .content-wrap { |
|
585 |
- margin-top: -23px; |
|
586 |
- } |
|
587 |
- |
|
588 |
- .box-wrap { |
|
589 |
- width: 454px; |
|
590 |
- height: 370px; |
|
591 |
- |
|
592 |
- .box { |
|
593 |
- background-image: linear-gradient(#fff, #fff), |
|
594 |
- linear-gradient(-45deg, #fff, #fff); |
|
595 |
- background-origin: border-box; |
|
596 |
- background-clip: content-box, border-box; |
|
597 |
- border: 3px solid transparent; |
|
598 |
- border-radius: 32px; |
|
599 |
- } |
|
600 |
- |
|
601 |
- .box:hover { |
|
602 |
- background-image: linear-gradient(#fff, #fff), |
|
603 |
- linear-gradient(-45deg, #ca3e49, #3d355d); |
|
604 |
- } |
|
605 |
- |
|
606 |
- .tab-image { |
|
607 |
- width: 100%; |
|
608 |
- height: 297px; |
|
609 |
- object-fit: cover; |
|
610 |
- border-radius: 30px; |
|
611 |
- } |
|
612 |
- |
|
613 |
- } |
|
614 |
- |
|
615 |
- } |
|
616 |
- |
|
617 |
- } |
|
618 |
- |
|
619 |
- .list-wrap { |
|
620 |
- border-top: 2px solid #000; |
|
621 |
- |
|
622 |
- &>li { |
|
623 |
- border-bottom: 2px solid #eeeeee; |
|
624 |
- padding: 30px 10px; |
|
625 |
- } |
|
626 |
- } |
|
627 |
- .no-results{ |
|
628 |
- text-align: center; |
|
629 |
- padding: 60px 0; |
|
630 |
- border-bottom: 1px solid #ddd; |
|
631 |
- border-top: 1px solid #ddd; |
|
632 |
- |
|
633 |
- } |
|
634 |
- .no-results p:first-of-type { |
|
635 |
- font-size: 32px; |
|
636 |
- font-family: "Pretendard-B"; |
|
637 |
- margin-top: 45px; |
|
638 |
- } |
|
639 |
- |
|
640 |
- .no-results p:last-of-type { |
|
641 |
- font-size: 18px; |
|
642 |
- line-height: 30px; |
|
643 |
- font-family: "Pretendard-L"; |
|
644 |
- margin-top: 30px; |
|
645 |
- } |
|
482 |
+ .result-list-wrap:nth-child(even) .float-div { |
|
483 |
+ color: #007ac3; |
|
484 |
+ border: 1px solid #007ac3; |
|
485 |
+ } |
|
646 | 486 |
} |
647 | 487 |
|
488 |
+.search-result { |
|
489 |
+ margin-top: 40px; |
|
648 | 490 |
|
491 |
+ .resultext { |
|
492 |
+ .main-img { |
|
493 |
+ width: 320px; |
|
494 |
+ height: 220px; |
|
495 |
+ border-radius: 24px; |
|
496 |
+ } |
|
497 |
+ |
|
498 |
+ display: flex; |
|
499 |
+ align-items: center; |
|
500 |
+ |
|
501 |
+ p { |
|
502 |
+ width: max-content; |
|
503 |
+ font-family: "Pretendard-L"; |
|
504 |
+ font-size: 17px; |
|
505 |
+ |
|
506 |
+ b { |
|
507 |
+ color: #ce3e48; |
|
508 |
+ } |
|
509 |
+ } |
|
510 |
+ |
|
511 |
+ img { |
|
512 |
+ object-fit: cover; |
|
513 |
+ } |
|
514 |
+ } |
|
515 |
+ |
|
516 |
+ .result-box { |
|
517 |
+ display: flex; |
|
518 |
+ justify-content: space-between; |
|
519 |
+ border: 1px solid #ddd; |
|
520 |
+ border-radius: 24px; |
|
521 |
+ padding: 30px; |
|
522 |
+ margin-bottom: 30px; |
|
523 |
+ cursor: pointer; |
|
524 |
+ |
|
525 |
+ .main-img { |
|
526 |
+ position: relative; |
|
527 |
+ width: 320px; |
|
528 |
+ height: 220px; |
|
529 |
+ border-radius: 24px; |
|
530 |
+ flex-shrink: 0; |
|
531 |
+ |
|
532 |
+ img { |
|
533 |
+ width: 100%; |
|
534 |
+ height: 100%; |
|
535 |
+ border-radius: 24px; |
|
536 |
+ object-fit: cover; |
|
537 |
+ } |
|
538 |
+ } |
|
539 |
+ } |
|
540 |
+ |
|
541 |
+ .text-box { |
|
542 |
+ cursor: pointer; |
|
543 |
+ |
|
544 |
+ p, |
|
545 |
+ li { |
|
546 |
+ font-family: "Pretendard-L"; |
|
547 |
+ |
|
548 |
+ } |
|
549 |
+ |
|
550 |
+ .text { |
|
551 |
+ width: 1048px; |
|
552 |
+ font-size: 16px; |
|
553 |
+ color: #555555; |
|
554 |
+ overflow: hidden; |
|
555 |
+ /* Hide any overflow */ |
|
556 |
+ text-overflow: ellipsis; |
|
557 |
+ /* Add an ellipsis at the end */ |
|
558 |
+ display: -webkit-box; |
|
559 |
+ -webkit-line-clamp: 2; |
|
560 |
+ /* Limit to 2 lines */ |
|
561 |
+ -webkit-box-orient: vertical; |
|
562 |
+ margin-bottom: 20px; |
|
563 |
+ } |
|
564 |
+ |
|
565 |
+ h5 { |
|
566 |
+ font-family: "Pretendard-B"; |
|
567 |
+ font-size: 25px; |
|
568 |
+ margin-bottom: 20px; |
|
569 |
+ |
|
570 |
+ } |
|
571 |
+ |
|
572 |
+ .address { |
|
573 |
+ font-size: 20px; |
|
574 |
+ margin-bottom: 18px; |
|
575 |
+ } |
|
576 |
+ |
|
577 |
+ .date { |
|
578 |
+ ul { |
|
579 |
+ display: flex; |
|
580 |
+ gap: 20px; |
|
581 |
+ } |
|
582 |
+ |
|
583 |
+ li { |
|
584 |
+ font-size: 17px; |
|
585 |
+ |
|
586 |
+ b { |
|
587 |
+ margin-left: 5px; |
|
588 |
+ } |
|
589 |
+ } |
|
590 |
+ } |
|
591 |
+ } |
|
592 |
+ |
|
593 |
+ .tabs { |
|
594 |
+ .tab-box { |
|
595 |
+ display: flex; |
|
596 |
+ justify-content: end; |
|
597 |
+ gap: 25px; |
|
598 |
+ } |
|
599 |
+ |
|
600 |
+ .tab-title { |
|
601 |
+ display: flex; |
|
602 |
+ align-items: center; |
|
603 |
+ gap: 13px; |
|
604 |
+ |
|
605 |
+ p { |
|
606 |
+ cursor: pointer; |
|
607 |
+ font-family: "HAPPINESS-SANS-REGULAR"; |
|
608 |
+ color: #cccccc; |
|
609 |
+ font-size: 17px; |
|
610 |
+ |
|
611 |
+ b { |
|
612 |
+ color: #cccccc; |
|
613 |
+ } |
|
614 |
+ } |
|
615 |
+ |
|
616 |
+ } |
|
617 |
+ |
|
618 |
+ .tab-title.active p { |
|
619 |
+ color: #000; |
|
620 |
+ |
|
621 |
+ b { |
|
622 |
+ color: #ff4141; |
|
623 |
+ } |
|
624 |
+ } |
|
625 |
+ |
|
626 |
+ .tab-content { |
|
627 |
+ .content-wrap { |
|
628 |
+ margin-top: -23px; |
|
629 |
+ } |
|
630 |
+ |
|
631 |
+ .box-wrap { |
|
632 |
+ width: 454px; |
|
633 |
+ height: 370px; |
|
634 |
+ |
|
635 |
+ .box { |
|
636 |
+ background-image: linear-gradient(#fff, #fff), |
|
637 |
+ linear-gradient(-45deg, #fff, #fff); |
|
638 |
+ background-origin: border-box; |
|
639 |
+ background-clip: content-box, border-box; |
|
640 |
+ border: 3px solid transparent; |
|
641 |
+ border-radius: 32px; |
|
642 |
+ } |
|
643 |
+ |
|
644 |
+ .box:hover { |
|
645 |
+ background-image: linear-gradient(#fff, #fff), |
|
646 |
+ linear-gradient(-45deg, #ca3e49, #3d355d); |
|
647 |
+ } |
|
648 |
+ |
|
649 |
+ .tab-image { |
|
650 |
+ width: 100%; |
|
651 |
+ height: 297px; |
|
652 |
+ object-fit: cover; |
|
653 |
+ border-radius: 30px; |
|
654 |
+ } |
|
655 |
+ } |
|
656 |
+ } |
|
657 |
+ } |
|
658 |
+ |
|
659 |
+ .list-wrap { |
|
660 |
+ border-top: 2px solid #000; |
|
661 |
+ |
|
662 |
+ &>li { |
|
663 |
+ border-bottom: 2px solid #eeeeee; |
|
664 |
+ padding: 30px 10px; |
|
665 |
+ } |
|
666 |
+ } |
|
667 |
+ |
|
668 |
+ .no-results { |
|
669 |
+ text-align: center; |
|
670 |
+ padding: 60px 0; |
|
671 |
+ border-bottom: 1px solid #ddd; |
|
672 |
+ border-top: 1px solid #ddd; |
|
673 |
+ |
|
674 |
+ } |
|
675 |
+ |
|
676 |
+ .no-results p:first-of-type { |
|
677 |
+ font-size: 32px; |
|
678 |
+ font-family: "Pretendard-B"; |
|
679 |
+ margin-top: 45px; |
|
680 |
+ } |
|
681 |
+ |
|
682 |
+ .no-results p:last-of-type { |
|
683 |
+ font-size: 18px; |
|
684 |
+ line-height: 30px; |
|
685 |
+ font-family: "Pretendard-L"; |
|
686 |
+ margin-top: 30px; |
|
687 |
+ } |
|
688 |
+} |
|
649 | 689 |
|
650 | 690 |
/*사진 기록물 등록페이지 */ |
651 | 691 |
.insert-form { |
652 |
- padding: 10px 0; |
|
653 |
- border-top: 2px solid #000; |
|
654 |
- border-left: 0; |
|
655 |
- border-right: 0; |
|
656 |
- border-bottom: 1px solid #eee; |
|
657 |
- border-radius: 0; |
|
692 |
+ padding: 10px 0; |
|
693 |
+ border-top: 2px solid #000; |
|
694 |
+ border-left: 0; |
|
695 |
+ border-right: 0; |
|
696 |
+ border-bottom: 1px solid #eee; |
|
697 |
+ border-radius: 0; |
|
658 | 698 |
|
659 |
- dl { |
|
660 |
- dd { |
|
661 |
- padding: 0 24px; |
|
699 |
+ dl { |
|
700 |
+ dd { |
|
701 |
+ padding: 0 24px; |
|
662 | 702 |
|
663 |
- li { |
|
664 |
- p { |
|
665 |
- font-family: "Pretendard-L"; |
|
666 |
- font-size: 16px; |
|
667 |
- } |
|
668 |
- } |
|
703 |
+ li { |
|
704 |
+ p { |
|
705 |
+ font-family: "Pretendard-L"; |
|
706 |
+ font-size: 16px; |
|
669 | 707 |
} |
670 |
- |
|
671 |
- textarea { |
|
672 |
- min-height: 425px; |
|
673 |
- width: 100%; |
|
674 |
- padding: 15px; |
|
675 |
- } |
|
676 |
- textarea:focus { |
|
677 |
- outline: none; |
|
678 |
- box-shadow: none; |
|
679 |
- } |
|
680 |
- .category-add { |
|
681 |
- width: 72px; |
|
682 |
- height: 29px; |
|
683 |
- color: #fff; |
|
684 |
- background-color: #000; |
|
685 |
- border-radius: 15px; |
|
686 |
- margin-left: 10px; |
|
687 |
- } |
|
708 |
+ } |
|
688 | 709 |
} |
689 | 710 |
|
690 |
- .invalid-feedback { |
|
691 |
- display: flex; |
|
692 |
- border: 0; |
|
693 |
- background-color: transparent; |
|
694 |
- margin-left: 10px; |
|
695 |
- span{ |
|
696 |
- color: #e22d2d; |
|
697 |
- font-size: 14px; |
|
698 |
- font-family: "Pretendard-EL"; |
|
699 |
- } |
|
700 |
- |
|
711 |
+ textarea { |
|
712 |
+ min-height: 425px; |
|
713 |
+ width: 100%; |
|
714 |
+ padding: 15px; |
|
701 | 715 |
} |
702 | 716 |
|
717 |
+ textarea:focus { |
|
718 |
+ outline: none; |
|
719 |
+ box-shadow: none; |
|
720 |
+ } |
|
721 |
+ |
|
722 |
+ .category-add { |
|
723 |
+ width: 72px; |
|
724 |
+ height: 29px; |
|
725 |
+ color: #fff; |
|
726 |
+ background-color: #000; |
|
727 |
+ border-radius: 15px; |
|
728 |
+ margin-left: 10px; |
|
729 |
+ } |
|
730 |
+ } |
|
731 |
+ |
|
732 |
+ .invalid-feedback { |
|
733 |
+ display: flex; |
|
734 |
+ border: 0; |
|
735 |
+ background-color: transparent; |
|
736 |
+ margin-left: 10px; |
|
737 |
+ |
|
738 |
+ span { |
|
739 |
+ color: #e22d2d; |
|
740 |
+ font-size: 14px; |
|
741 |
+ font-family: "Pretendard-EL"; |
|
742 |
+ } |
|
743 |
+ } |
|
703 | 744 |
} |
704 | 745 |
|
705 | 746 |
.file-input { |
706 |
- display: none; |
|
747 |
+ display: none; |
|
707 | 748 |
} |
708 | 749 |
|
709 | 750 |
/* Style the custom label (the clickable button) */ |
710 | 751 |
.file-label { |
711 |
- display: inline-block; |
|
712 |
- padding: 25px 0px; |
|
713 |
- width: 100% !important; |
|
714 |
- background-color: #f6f6f6; |
|
715 |
- border: 2px dashed #dadada; |
|
716 |
- color: white; |
|
717 |
- font-size: 16px; |
|
718 |
- border-radius: 10px; |
|
719 |
- cursor: pointer; |
|
720 |
- text-align: center; |
|
721 |
- transition: background-color 0.3s ease; |
|
752 |
+ display: inline-block; |
|
753 |
+ padding: 25px 0px; |
|
754 |
+ width: 100% !important; |
|
755 |
+ background-color: #f6f6f6; |
|
756 |
+ border: 2px dashed #dadada; |
|
757 |
+ color: white; |
|
758 |
+ font-size: 16px; |
|
759 |
+ border-radius: 10px; |
|
760 |
+ cursor: pointer; |
|
761 |
+ text-align: center; |
|
762 |
+ transition: background-color 0.3s ease; |
|
722 | 763 |
|
723 | 764 |
} |
724 | 765 |
|
725 | 766 |
.file-label>div p { |
726 |
- font-family: "Pretendard-B" !important; |
|
727 |
- font-size: 20px !important; |
|
767 |
+ font-family: "Pretendard-B" !important; |
|
768 |
+ font-size: 20px !important; |
|
728 | 769 |
} |
729 | 770 |
|
730 | 771 |
/* Style the label on hover */ |
... | ... | @@ -732,546 +773,561 @@ |
732 | 773 |
|
733 | 774 |
/* Style for the file names display */ |
734 | 775 |
.file-names { |
735 |
- display: block; |
|
736 |
- /* Make each file name appear on a new line */ |
|
737 |
- font-size: 16px; |
|
738 |
- color: #333; |
|
776 |
+ display: block; |
|
777 |
+ /* Make each file name appear on a new line */ |
|
778 |
+ font-size: 16px; |
|
779 |
+ color: #333; |
|
739 | 780 |
|
740 |
- &> div, span { |
|
741 |
- color: #dadada; |
|
781 |
+ &>div, |
|
782 |
+ span { |
|
783 |
+ color: #dadada; |
|
784 |
+ } |
|
785 |
+ |
|
786 |
+ .file-wrap { |
|
787 |
+ border: 1px solid #dadada; |
|
788 |
+ border-radius: 10px; |
|
789 |
+ padding: 12px; |
|
790 |
+ |
|
791 |
+ .file-name { |
|
792 |
+ display: flex; |
|
793 |
+ align-items: center; |
|
794 |
+ |
|
795 |
+ img { |
|
796 |
+ margin-right: 10px; |
|
797 |
+ } |
|
798 |
+ |
|
742 | 799 |
} |
743 |
- |
|
744 |
- .file-wrap { |
|
745 |
- border: 1px solid #dadada; |
|
746 |
- border-radius: 10px; |
|
747 |
- padding: 12px; |
|
748 |
- |
|
749 |
- .file-name { |
|
750 |
- display: flex; |
|
751 |
- align-items: center; |
|
752 |
- |
|
753 |
- img { |
|
754 |
- margin-right: 10px; |
|
755 |
- } |
|
756 |
- |
|
757 |
- } |
|
758 |
- } |
|
800 |
+ } |
|
759 | 801 |
} |
760 | 802 |
|
761 | 803 |
|
762 | 804 |
/* 모달 */ |
763 | 805 |
.modal-overlay { |
764 |
- position: fixed; |
|
765 |
- top: 0; |
|
766 |
- left: 0; |
|
767 |
- width: 100%; |
|
768 |
- height: 100%; |
|
769 |
- background-color: rgba(0, 0, 0, 0.5); |
|
770 |
- /* 배경 어두운 투명도 */ |
|
771 |
- display: flex; |
|
772 |
- justify-content: center; |
|
773 |
- align-items: center; |
|
774 |
- z-index: 9999; |
|
806 |
+ position: fixed; |
|
807 |
+ top: 0; |
|
808 |
+ left: 0; |
|
809 |
+ width: 100%; |
|
810 |
+ height: 100%; |
|
811 |
+ background-color: rgba(0, 0, 0, 0.5); |
|
812 |
+ /* 배경 어두운 투명도 */ |
|
813 |
+ display: flex; |
|
814 |
+ justify-content: center; |
|
815 |
+ align-items: center; |
|
816 |
+ z-index: 9999; |
|
775 | 817 |
} |
776 | 818 |
|
777 | 819 |
.modal-content { |
778 |
- background-color: #fff; |
|
779 |
- padding: 50px 35px; |
|
780 |
- border-radius: 8px; |
|
781 |
- max-width: 1000px; |
|
782 |
- width: 100%; |
|
783 |
- text-align: center; |
|
820 |
+ background-color: #fff; |
|
821 |
+ padding: 50px 35px; |
|
822 |
+ border-radius: 8px; |
|
823 |
+ max-width: 1000px; |
|
824 |
+ width: 100%; |
|
825 |
+ text-align: center; |
|
784 | 826 |
|
785 |
- h2 { |
|
786 |
- font-family: "Pretendard-B"; |
|
787 |
- font-size: 30px; |
|
827 |
+ h2 { |
|
828 |
+ font-family: "Pretendard-B"; |
|
829 |
+ font-size: 30px; |
|
830 |
+ } |
|
831 |
+ |
|
832 |
+ /* pagination */ |
|
833 |
+ .pagination { |
|
834 |
+ button { |
|
835 |
+ width: 40px; |
|
836 |
+ height: 40px; |
|
837 |
+ margin: 0 4px; |
|
838 |
+ border: 1px solid #f0f1f4; |
|
839 |
+ background-color: #fff; |
|
840 |
+ border-radius: 50px; |
|
788 | 841 |
} |
789 | 842 |
|
790 |
- /* pagination */ |
|
791 |
- .pagination { |
|
792 |
- button { |
|
793 |
- width: 40px; |
|
794 |
- height: 40px; |
|
795 |
- margin: 0 4px; |
|
796 |
- border: 1px solid #f0f1f4; |
|
797 |
- background-color: #fff; |
|
798 |
- border-radius: 50px; |
|
799 |
- } |
|
800 |
- |
|
801 |
- button.page-number { |
|
802 |
- font-size: 20px; |
|
803 |
- color: #555555; |
|
804 |
- width: 40px; |
|
805 |
- height: 40px; |
|
806 |
- background-color: #f0f1f4; |
|
807 |
- border-radius: 50px; |
|
808 |
- } |
|
809 |
- |
|
810 |
- button.page-number.clicked { |
|
811 |
- background-color: #ce3e48; |
|
812 |
- color: #fff; |
|
813 |
- } |
|
814 |
- |
|
815 |
- .anticon { |
|
816 |
- svg { |
|
817 |
- font-size: 17px; |
|
818 |
- |
|
819 |
- path { |
|
820 |
- color: #636364; |
|
821 |
- } |
|
822 |
- } |
|
823 |
- |
|
824 |
- |
|
825 |
- } |
|
843 |
+ button.page-number { |
|
844 |
+ font-size: 20px; |
|
845 |
+ color: #555555; |
|
846 |
+ width: 40px; |
|
847 |
+ height: 40px; |
|
848 |
+ background-color: #f0f1f4; |
|
849 |
+ border-radius: 50px; |
|
826 | 850 |
} |
827 | 851 |
|
828 |
- .modal-search { |
|
829 |
- padding: 13px; |
|
830 |
- background-color: rgba(0, 61, 97, 0.05); |
|
831 |
- border-radius: 10px; |
|
832 |
- |
|
833 |
- input { |
|
834 |
- padding: 0px 20px; |
|
835 |
- background-color: #fff; |
|
836 |
- border-radius: 5px; |
|
837 |
- width: 300px; |
|
838 |
- height: 45px; |
|
839 |
- font-size: 16px; |
|
840 |
- margin-right: 5px; |
|
841 |
- } |
|
842 |
- |
|
843 |
- .search-btn { |
|
844 |
- display: flex; |
|
845 |
- align-items: center; |
|
846 |
- justify-content: center; |
|
847 |
- width: 80px; |
|
848 |
- height: 45px; |
|
849 |
- gap: 5px; |
|
850 |
- border-radius: 5px; |
|
851 |
- background-color: #000; |
|
852 |
- p { |
|
853 |
- font-size: 16px; |
|
854 |
- color: #fff; |
|
855 |
- font-family: "Pretendard-SB"; |
|
856 |
- } |
|
857 |
- } |
|
852 |
+ button.page-number.clicked { |
|
853 |
+ background-color: #ce3e48; |
|
854 |
+ color: #fff; |
|
858 | 855 |
} |
859 | 856 |
|
857 |
+ .anticon { |
|
858 |
+ svg { |
|
859 |
+ font-size: 17px; |
|
860 | 860 |
|
861 |
+ path { |
|
862 |
+ color: #636364; |
|
863 |
+ } |
|
864 |
+ } |
|
865 |
+ } |
|
866 |
+ } |
|
861 | 867 |
|
862 |
- .register-b { |
|
863 |
- width: 110px; |
|
864 |
- height: 40px; |
|
865 |
- font-size: 18px; |
|
866 |
- background-color: #000; |
|
868 |
+ .modal-search { |
|
869 |
+ padding: 13px; |
|
870 |
+ background-color: rgba(0, 61, 97, 0.05); |
|
871 |
+ border-radius: 10px; |
|
872 |
+ |
|
873 |
+ input { |
|
874 |
+ padding: 0px 20px; |
|
875 |
+ background-color: #fff; |
|
876 |
+ border-radius: 5px; |
|
877 |
+ width: 300px; |
|
878 |
+ height: 45px; |
|
879 |
+ font-size: 16px; |
|
880 |
+ margin-right: 5px; |
|
881 |
+ } |
|
882 |
+ |
|
883 |
+ .search-btn { |
|
884 |
+ display: flex; |
|
885 |
+ align-items: center; |
|
886 |
+ justify-content: center; |
|
887 |
+ width: 80px; |
|
888 |
+ height: 45px; |
|
889 |
+ gap: 5px; |
|
890 |
+ border-radius: 5px; |
|
891 |
+ background-color: #000; |
|
892 |
+ |
|
893 |
+ p { |
|
894 |
+ font-size: 16px; |
|
867 | 895 |
color: #fff; |
868 |
- font-family: "Pretendard-M"; |
|
869 |
- border-radius: 50px; |
|
896 |
+ font-family: "Pretendard-SB"; |
|
897 |
+ } |
|
870 | 898 |
} |
899 |
+ } |
|
871 | 900 |
|
901 |
+ .register-b { |
|
902 |
+ width: 110px; |
|
903 |
+ height: 40px; |
|
904 |
+ font-size: 18px; |
|
905 |
+ background-color: #000; |
|
906 |
+ color: #fff; |
|
907 |
+ font-family: "Pretendard-M"; |
|
908 |
+ border-radius: 50px; |
|
909 |
+ } |
|
872 | 910 |
} |
873 |
- |
|
874 | 911 |
|
875 | 912 |
/* 사진기록물 상세페이지 */ |
876 | 913 |
.gallery-form { |
877 |
- border: 0; |
|
914 |
+ border: 0; |
|
878 | 915 |
|
879 |
- dl { |
|
880 |
- padding: 30px 0 0 0; |
|
881 |
- border-top: 2px solid #000; |
|
916 |
+ dl { |
|
917 |
+ padding: 30px 0 0 0; |
|
918 |
+ border-top: 2px solid #000; |
|
919 |
+ |
|
920 |
+ dd { |
|
921 |
+ position: relative; |
|
922 |
+ background: #f6f6f6; |
|
923 |
+ padding: 25px 0px; |
|
924 |
+ |
|
925 |
+ p { |
|
926 |
+ flex: 1; |
|
927 |
+ font-size: 35px; |
|
928 |
+ text-align: center; |
|
929 |
+ font-family: "Pretendard-B" |
|
930 |
+ } |
|
931 |
+ |
|
932 |
+ .date { |
|
933 |
+ position: absolute; |
|
934 |
+ right: 30px; |
|
935 |
+ |
|
936 |
+ span { |
|
937 |
+ font-family: "Pretendard-R"; |
|
938 |
+ font-size: 18px; |
|
939 |
+ } |
|
940 |
+ |
|
941 |
+ img { |
|
942 |
+ object-fit: contain; |
|
943 |
+ margin-right: 10px; |
|
944 |
+ } |
|
945 |
+ } |
|
946 |
+ } |
|
947 |
+ } |
|
948 |
+ |
|
949 |
+ .gallery { |
|
950 |
+ margin-bottom: 107px; |
|
951 |
+ position: relative; |
|
952 |
+ |
|
953 |
+ &.video { |
|
954 |
+ margin-bottom: 50px; |
|
955 |
+ |
|
956 |
+ img { |
|
957 |
+ height: 800px; |
|
958 |
+ border-radius: 20px; |
|
959 |
+ } |
|
960 |
+ |
|
961 |
+ .video-container { |
|
962 |
+ position: relative; |
|
963 |
+ width: 100%; |
|
964 |
+ padding-top: 56.25%; |
|
965 |
+ /* 16:9 비율 */ |
|
966 |
+ overflow: hidden; |
|
967 |
+ } |
|
968 |
+ |
|
969 |
+ .video-container iframe { |
|
970 |
+ position: absolute; |
|
971 |
+ top: 0; |
|
972 |
+ left: 0; |
|
973 |
+ width: 100%; |
|
974 |
+ height: 100%; |
|
975 |
+ } |
|
976 |
+ } |
|
977 |
+ |
|
978 |
+ .main-swiper { |
|
979 |
+ .swiper { |
|
980 |
+ width: 100%; |
|
981 |
+ |
|
982 |
+ .swiper-slide { |
|
983 |
+ img { |
|
984 |
+ width: 100%; |
|
985 |
+ aspect-ratio: 15 / 8; |
|
986 |
+ object-fit: contain; |
|
987 |
+ background-color: #ddd; |
|
988 |
+ display: block; |
|
989 |
+ } |
|
990 |
+ } |
|
991 |
+ |
|
992 |
+ } |
|
993 |
+ } |
|
994 |
+ |
|
995 |
+ .thumbnail { |
|
996 |
+ /* width: 1127px; */ |
|
997 |
+ padding: 30px 95px; |
|
998 |
+ background-color: #fff; |
|
999 |
+ border-radius: 90px; |
|
1000 |
+ position: absolute; |
|
1001 |
+ z-index: 1; |
|
1002 |
+ left: 50%; |
|
1003 |
+ transform: translateX(-50%); |
|
1004 |
+ bottom: -10%; |
|
1005 |
+ box-shadow: 1px 2px 19px 1px rgba(0, 0, 0, 0.04); |
|
1006 |
+ |
|
1007 |
+ .swiper { |
|
1008 |
+ width: 940px; |
|
1009 |
+ position: initial; |
|
1010 |
+ height: 120px; |
|
1011 |
+ margin: 0 auto; |
|
1012 |
+ |
|
1013 |
+ .swiper-slide { |
|
1014 |
+ background-image: linear-gradient(#fff, #fff), |
|
1015 |
+ linear-gradient(-45deg, #fff, #fff); |
|
1016 |
+ background-origin: border-box; |
|
1017 |
+ background-clip: content-box, border-box; |
|
1018 |
+ border: 3px solid transparent; |
|
1019 |
+ } |
|
1020 |
+ |
|
1021 |
+ .swiper-slide:hover, |
|
1022 |
+ .active-thumb { |
|
1023 |
+ background-image: linear-gradient(#fff, #fff), |
|
1024 |
+ linear-gradient(-45deg, #ca3e49, #3d355d); |
|
1025 |
+ } |
|
1026 |
+ |
|
1027 |
+ .swiper-wrapper { |
|
1028 |
+ margin: 0; |
|
1029 |
+ } |
|
1030 |
+ |
|
1031 |
+ .swiper-slide img { |
|
1032 |
+ width: -webkit-fill-available; |
|
1033 |
+ cursor: pointer; |
|
1034 |
+ object-fit: contain; |
|
1035 |
+ } |
|
1036 |
+ |
|
1037 |
+ input { |
|
1038 |
+ position: absolute; |
|
1039 |
+ right: 6px; |
|
1040 |
+ top: 6px; |
|
1041 |
+ z-index: 5; |
|
1042 |
+ } |
|
1043 |
+ } |
|
1044 |
+ } |
|
1045 |
+ |
|
1046 |
+ .swiper-button-prev, |
|
1047 |
+ .swiper-button-next { |
|
1048 |
+ box-shadow: none; |
|
1049 |
+ margin-top: -35px; |
|
1050 |
+ } |
|
1051 |
+ |
|
1052 |
+ .swiper-button-prev { |
|
1053 |
+ left: 20px; |
|
1054 |
+ } |
|
1055 |
+ |
|
1056 |
+ .swiper-button-next { |
|
1057 |
+ right: 20px; |
|
1058 |
+ } |
|
1059 |
+ } |
|
1060 |
+ |
|
1061 |
+ .img-box { |
|
1062 |
+ margin-right: 50px; |
|
1063 |
+ width: 600px; |
|
1064 |
+ height: 360px; |
|
1065 |
+ |
|
1066 |
+ img { |
|
1067 |
+ width: 100%; |
|
1068 |
+ height: 100%; |
|
1069 |
+ object-fit: contain; |
|
1070 |
+ } |
|
1071 |
+ } |
|
1072 |
+ |
|
1073 |
+ .info-form { |
|
1074 |
+ background-image: linear-gradient(#fff, #fff), linear-gradient(-45deg, #ca3e49, #3f355c); |
|
1075 |
+ background-origin: border-box; |
|
1076 |
+ background-clip: content-box, border-box; |
|
1077 |
+ border: 3px solid transparent; |
|
1078 |
+ border-radius: 32px; |
|
1079 |
+ padding: 0; |
|
1080 |
+ height: 360px; |
|
1081 |
+ |
|
1082 |
+ .info-box { |
|
1083 |
+ padding: 50px 40px; |
|
1084 |
+ |
|
1085 |
+ dl { |
|
1086 |
+ border: 0; |
|
1087 |
+ padding: 37px; |
|
1088 |
+ border-radius: 20px; |
|
1089 |
+ background-color: #f5f6f8; |
|
882 | 1090 |
|
883 | 1091 |
dd { |
884 |
- position: relative; |
|
885 |
- background: #f6f6f6; |
|
886 |
- padding: 25px 0px; |
|
1092 |
+ background-color: transparent; |
|
1093 |
+ padding: 0; |
|
887 | 1094 |
|
888 |
- p { |
|
889 |
- flex: 1; |
|
890 |
- font-size: 35px; |
|
891 |
- text-align: center; |
|
892 |
- font-family: "Pretendard-B" |
|
893 |
- } |
|
894 |
- |
|
895 |
- .date { |
|
896 |
- position: absolute; |
|
897 |
- right: 30px; |
|
898 |
- |
|
899 |
- span { |
|
900 |
- font-family: "Pretendard-R"; |
|
901 |
- font-size: 18px; |
|
902 |
- } |
|
903 |
- |
|
904 |
- img { |
|
905 |
- |
|
906 |
- object-fit: contain; |
|
907 |
- margin-right: 10px; |
|
908 |
- } |
|
909 |
- |
|
910 |
- } |
|
911 |
- |
|
912 |
- |
|
913 |
- } |
|
914 |
- |
|
915 |
- } |
|
916 |
- |
|
917 |
- .gallery { |
|
918 |
- margin-bottom: 107px; |
|
919 |
- position: relative; |
|
920 |
- |
|
921 |
- &.video { |
|
922 |
- margin-bottom: 50px; |
|
923 |
- |
|
924 |
- img { |
|
925 |
- height: 800px; |
|
926 |
- border-radius: 20px; |
|
927 |
- } |
|
928 |
- .video-container { |
|
929 |
- position: relative; |
|
930 |
- width: 100%; |
|
931 |
- padding-top: 56.25%; /* 16:9 비율 */ |
|
932 |
- overflow: hidden; |
|
933 |
- } |
|
934 |
- |
|
935 |
- .video-container iframe { |
|
936 |
- position: absolute; |
|
937 |
- top: 0; |
|
938 |
- left: 0; |
|
939 |
- width: 100%; |
|
940 |
- height: 100%; |
|
941 |
- } |
|
942 |
- } |
|
943 |
- |
|
944 |
- .main-swiper { |
|
945 |
- .swiper { |
|
946 |
- width: 100%; |
|
947 |
- |
|
948 |
- .swiper-slide { |
|
949 |
- img { |
|
950 |
- width: 100%; |
|
951 |
- aspect-ratio: 15 / 8; |
|
952 |
- object-fit: contain; |
|
953 |
- background-color: #ddd; |
|
954 |
- display: block; |
|
955 |
- } |
|
956 |
- } |
|
957 |
- |
|
958 |
- } |
|
959 |
- } |
|
960 |
- |
|
961 |
- .thumbnail { |
|
962 |
- /* width: 1127px; */ |
|
963 |
- padding: 30px 95px; |
|
964 |
- background-color: #fff; |
|
965 |
- border-radius: 90px; |
|
966 |
- position: absolute; |
|
967 |
- z-index: 1; |
|
968 |
- left: 50%; |
|
969 |
- transform: translateX(-50%); |
|
970 |
- bottom: -10%; |
|
971 |
- box-shadow: 1px 2px 19px 1px rgba(0, 0, 0, 0.04); |
|
972 |
- |
|
973 |
- .swiper { |
|
974 |
- width: 940px; |
|
975 |
- position: initial; |
|
976 |
- height: 120px; |
|
977 |
- margin: 0 auto; |
|
978 |
- .swiper-slide{ |
|
979 |
- background-image: linear-gradient(#fff, #fff), |
|
980 |
- linear-gradient(-45deg, #fff, #fff); |
|
981 |
- background-origin: border-box; |
|
982 |
- background-clip: content-box, border-box; |
|
983 |
- border: 3px solid transparent; |
|
984 |
- } |
|
985 |
- .swiper-slide:hover, |
|
986 |
- .active-thumb { |
|
987 |
- background-image: linear-gradient(#fff, #fff), |
|
988 |
- linear-gradient(-45deg, #ca3e49, #3d355d); |
|
989 |
- } |
|
990 |
- .swiper-wrapper { |
|
991 |
- margin: 0; |
|
992 |
- } |
|
993 |
- |
|
994 |
- .swiper-slide img { |
|
995 |
- width: -webkit-fill-available; |
|
996 |
- cursor: pointer; |
|
997 |
- object-fit: contain; |
|
998 |
- |
|
999 |
- } |
|
1000 |
- |
|
1001 |
- input{position: absolute; right: 6px; top: 6px; z-index: 5;} |
|
1002 |
- } |
|
1003 |
- } |
|
1004 |
- |
|
1005 |
- .swiper-button-prev, |
|
1006 |
- .swiper-button-next { |
|
1007 |
- box-shadow: none; |
|
1008 |
- margin-top: -35px; |
|
1009 |
- } |
|
1010 |
- |
|
1011 |
- .swiper-button-prev { |
|
1012 |
- left: 20px; |
|
1013 |
- } |
|
1014 |
- |
|
1015 |
- .swiper-button-next { |
|
1016 |
- right: 20px; |
|
1017 |
- } |
|
1018 |
- |
|
1019 |
- |
|
1020 |
- } |
|
1021 |
- |
|
1022 |
- .img-box { |
|
1023 |
- margin-right: 50px; |
|
1024 |
- width: 600px; |
|
1025 |
- height: 360px; |
|
1026 |
- img{ |
|
1027 |
- width: 100%; |
|
1028 |
- height: 100%; |
|
1029 |
- object-fit: contain; |
|
1030 |
- } |
|
1031 |
- } |
|
1032 |
- |
|
1033 |
- .info-form { |
|
1034 |
- background-image: linear-gradient(#fff, #fff), linear-gradient(-45deg, #ca3e49, #3f355c); |
|
1035 |
- background-origin: border-box; |
|
1036 |
- background-clip: content-box, border-box; |
|
1037 |
- border: 3px solid transparent; |
|
1038 |
- border-radius: 32px; |
|
1039 |
- padding: 0; |
|
1040 |
- height: 360px; |
|
1041 |
- |
|
1042 |
- .info-box { |
|
1043 |
- padding: 50px 40px; |
|
1044 |
- |
|
1045 |
- dl { |
|
1046 |
- border: 0; |
|
1047 |
- padding: 37px; |
|
1048 |
- border-radius: 20px; |
|
1049 |
- background-color: #f5f6f8; |
|
1050 |
- |
|
1051 |
- dd { |
|
1052 |
- background-color: transparent; |
|
1053 |
- padding: 0; |
|
1054 |
- |
|
1055 |
- p { |
|
1056 |
- font-size: 20px; |
|
1057 |
- text-align: left; |
|
1058 |
- font-family: "Pretendard-L"; |
|
1059 |
- } |
|
1060 |
- } |
|
1061 |
- } |
|
1062 |
- } |
|
1063 |
- |
|
1064 |
- } |
|
1065 |
- |
|
1066 |
- |
|
1067 |
- .btn-group { |
|
1068 |
- margin-top: 24px; |
|
1069 |
- text-align: center; |
|
1070 |
- |
|
1071 |
- button { |
|
1072 |
- width: 160px; |
|
1073 |
- height: 45px; |
|
1074 |
- font-family: "Pretendard-B"; |
|
1075 |
- font-size: 16px; |
|
1076 |
- padding: 13px 21px; |
|
1095 |
+ p { |
|
1096 |
+ font-size: 20px; |
|
1077 | 1097 |
text-align: left; |
1078 |
- margin: 0 5px; |
|
1098 |
+ font-family: "Pretendard-L"; |
|
1099 |
+ } |
|
1079 | 1100 |
} |
1101 |
+ } |
|
1102 |
+ } |
|
1103 |
+ } |
|
1080 | 1104 |
|
1081 |
- .select-down { |
|
1082 |
- background-image: url(../../images/downbtn_border.png); |
|
1083 |
- } |
|
1105 |
+ .btn-group { |
|
1106 |
+ margin-top: 24px; |
|
1107 |
+ text-align: center; |
|
1084 | 1108 |
|
1085 |
- .all-down { |
|
1086 |
- background-image: url(../../images/downbtn_bg.png); |
|
1087 |
- color: #fff; |
|
1088 |
- } |
|
1109 |
+ button { |
|
1110 |
+ width: 160px; |
|
1111 |
+ height: 45px; |
|
1112 |
+ font-family: "Pretendard-B"; |
|
1113 |
+ font-size: 16px; |
|
1114 |
+ padding: 13px 21px; |
|
1115 |
+ text-align: left; |
|
1116 |
+ margin: 0 5px; |
|
1089 | 1117 |
} |
1090 | 1118 |
|
1119 |
+ .select-down { |
|
1120 |
+ background-image: url(../../images/downbtn_border.png); |
|
1121 |
+ } |
|
1091 | 1122 |
|
1123 |
+ .all-down { |
|
1124 |
+ background-image: url(../../images/downbtn_bg.png); |
|
1125 |
+ color: #fff; |
|
1126 |
+ } |
|
1127 |
+ } |
|
1092 | 1128 |
} |
1129 |
+ |
|
1093 | 1130 |
.loading-overlay { |
1094 |
- position: fixed; |
|
1095 |
- top: 0; |
|
1096 |
- left: 0; |
|
1097 |
- right: 0; |
|
1098 |
- bottom: 0; |
|
1099 |
- background-color: rgba(0, 0, 0, 0.5); |
|
1100 |
- display: flex; |
|
1101 |
- flex-direction: column; |
|
1102 |
- justify-content: center; |
|
1103 |
- align-items: center; |
|
1104 |
- z-index: 9999; |
|
1105 |
- p{color: #fff;} |
|
1106 |
- p:first-of-type { |
|
1107 |
- font-size: 30px; |
|
1108 |
- font-family: "Pretendard-B"; |
|
1109 |
- margin-top: 28px; |
|
1110 |
- } |
|
1111 |
- p:last-of-type { |
|
1112 |
- font-size: 22px; |
|
1113 |
- font-family: "Pretendard-M"; |
|
1114 |
- margin-top: 18px; |
|
1115 |
- } |
|
1131 |
+ position: fixed; |
|
1132 |
+ top: 0; |
|
1133 |
+ left: 0; |
|
1134 |
+ right: 0; |
|
1135 |
+ bottom: 0; |
|
1136 |
+ background-color: rgba(0, 0, 0, 0.5); |
|
1137 |
+ display: flex; |
|
1138 |
+ flex-direction: column; |
|
1139 |
+ justify-content: center; |
|
1140 |
+ align-items: center; |
|
1141 |
+ z-index: 9999; |
|
1142 |
+ |
|
1143 |
+ p { |
|
1144 |
+ color: #fff; |
|
1116 | 1145 |
} |
1117 |
- .loading-spinner { |
|
1118 |
- background: url(../../images/loading.png); |
|
1119 |
- width: 178px; |
|
1120 |
- height: 178px; |
|
1146 |
+ |
|
1147 |
+ p:first-of-type { |
|
1148 |
+ font-size: 30px; |
|
1149 |
+ font-family: "Pretendard-B"; |
|
1150 |
+ margin-top: 28px; |
|
1121 | 1151 |
} |
1122 |
- @keyframes spin { |
|
1123 |
- 0% { |
|
1124 |
- transform: rotate(0deg); |
|
1125 |
- } |
|
1126 |
- 100% { |
|
1127 |
- transform: rotate(360deg); |
|
1128 |
- } |
|
1152 |
+ |
|
1153 |
+ p:last-of-type { |
|
1154 |
+ font-size: 22px; |
|
1155 |
+ font-family: "Pretendard-M"; |
|
1156 |
+ margin-top: 18px; |
|
1129 | 1157 |
} |
1158 |
+} |
|
1159 |
+ |
|
1160 |
+.loading-spinner { |
|
1161 |
+ background: url(../../images/loading.png); |
|
1162 |
+ width: 178px; |
|
1163 |
+ height: 178px; |
|
1164 |
+} |
|
1165 |
+ |
|
1166 |
+@keyframes spin { |
|
1167 |
+ 0% { |
|
1168 |
+ transform: rotate(0deg); |
|
1169 |
+ } |
|
1170 |
+ |
|
1171 |
+ 100% { |
|
1172 |
+ transform: rotate(360deg); |
|
1173 |
+ } |
|
1174 |
+} |
|
1130 | 1175 |
|
1131 | 1176 |
/* 회원관리, 카테고리 관리 */ |
1132 | 1177 |
.management { |
1133 |
- .left-con { |
|
1134 |
- width: 350px; |
|
1135 |
- margin-right: 55px; |
|
1136 |
- } |
|
1178 |
+ .left-con { |
|
1179 |
+ width: 350px; |
|
1180 |
+ margin-right: 55px; |
|
1181 |
+ } |
|
1137 | 1182 |
|
1138 |
- .search-area { |
|
1139 |
- gap: 5px; |
|
1140 |
- padding: 0; |
|
1141 |
- height: 40px; |
|
1142 |
- } |
|
1183 |
+ .search-area { |
|
1184 |
+ gap: 5px; |
|
1185 |
+ padding: 0; |
|
1186 |
+ height: 40px; |
|
1187 |
+ } |
|
1143 | 1188 |
|
1144 |
- .search-wrap { |
|
1189 |
+ .search-wrap { |
|
1145 | 1190 |
|
1146 |
- position: initial; |
|
1147 |
- transform: none; |
|
1191 |
+ position: initial; |
|
1192 |
+ transform: none; |
|
1148 | 1193 |
|
1149 |
- input { |
|
1150 |
- width: 100%; |
|
1151 |
- height: 100%; |
|
1152 |
- border: 1px solid #000; |
|
1153 |
- border-radius: 5px; |
|
1154 |
- } |
|
1155 |
- |
|
1156 |
- .select-box { |
|
1157 |
- border-color: #000; |
|
1158 |
- width: 100px; |
|
1159 |
- height: 100%; |
|
1160 |
- |
|
1161 |
- select { |
|
1162 |
- width: 100%; |
|
1163 |
- color: #000; |
|
1164 |
- } |
|
1165 |
- } |
|
1166 |
- |
|
1167 |
- .search-btn { |
|
1168 |
- position: relative; |
|
1169 |
- flex-shrink: 0; |
|
1170 |
- width: 40px; |
|
1171 |
- height: 40px; |
|
1172 |
- background-color: #000; |
|
1173 |
- border-radius: 5px; |
|
1174 |
- |
|
1175 |
- img { |
|
1176 |
- position: absolute; |
|
1177 |
- left: 50%; |
|
1178 |
- right: 50%; |
|
1179 |
- transform: translateX(-50%) translateY(-50%); |
|
1180 |
- } |
|
1181 |
- |
|
1182 |
- } |
|
1183 |
- } |
|
1184 |
- |
|
1185 |
- .btn-group-small { |
|
1186 |
- gap: 5px; |
|
1187 |
- |
|
1188 |
- .button { |
|
1189 |
- &.flex { |
|
1190 |
- img { |
|
1191 |
- text-align: left; |
|
1192 |
- margin-right: 10px; |
|
1193 |
- } |
|
1194 |
- |
|
1195 |
- p { |
|
1196 |
- text-align: center; |
|
1197 |
- } |
|
1198 |
- } |
|
1199 |
- } |
|
1194 |
+ input { |
|
1195 |
+ width: 100%; |
|
1196 |
+ height: 100%; |
|
1197 |
+ border: 1px solid #000; |
|
1198 |
+ border-radius: 5px; |
|
1200 | 1199 |
} |
1201 | 1200 |
|
1202 | 1201 |
.select-box { |
1203 |
- width: 230px; |
|
1204 |
- height: 50px; |
|
1205 |
- border: 1px solid #ddd; |
|
1206 |
- padding: 0 15px; |
|
1207 |
- margin: 0; |
|
1202 |
+ border-color: #000; |
|
1203 |
+ width: 100px; |
|
1204 |
+ height: 100%; |
|
1208 | 1205 |
|
1209 |
- select { |
|
1210 |
- width: 100%; |
|
1211 |
- height: 100%; |
|
1212 |
- font-size: 16px; |
|
1213 |
- /* color: #999999; */ |
|
1214 |
- } |
|
1206 |
+ select { |
|
1207 |
+ width: 100%; |
|
1208 |
+ color: #000; |
|
1209 |
+ } |
|
1215 | 1210 |
} |
1216 | 1211 |
|
1217 |
- .switch { |
|
1218 |
- label { |
|
1219 |
- margin-top: -12px; |
|
1220 |
- } |
|
1221 |
- } |
|
1212 |
+ .search-btn { |
|
1213 |
+ position: relative; |
|
1214 |
+ flex-shrink: 0; |
|
1215 |
+ width: 40px; |
|
1216 |
+ height: 40px; |
|
1217 |
+ background-color: #000; |
|
1218 |
+ border-radius: 5px; |
|
1222 | 1219 |
|
1223 |
- table { |
|
1224 |
- .selected { |
|
1225 |
- background-color: rgba(194, 61, 74, 0.2); |
|
1226 |
- } |
|
1227 |
- border-radius: 10px; |
|
1228 |
- overflow: hidden; |
|
1229 |
- |
|
1230 |
- thead { |
|
1231 |
- display: table; |
|
1232 |
- width: 100%; |
|
1233 |
- background-color: #636364; |
|
1234 |
- |
|
1235 |
- th { |
|
1236 |
- color: #fff; |
|
1237 |
- border: 1px solid #eee; |
|
1238 |
- } |
|
1239 |
- } |
|
1240 |
- |
|
1241 |
- td { |
|
1242 |
- /* border: 1px solid #eee; */ |
|
1243 |
- text-align: center; |
|
1244 |
- } |
|
1245 |
- tbody { |
|
1246 |
- border: 1px solid #eee; |
|
1247 |
- display: block; |
|
1248 |
- min-height: 53rem; |
|
1249 |
- max-height: 53rem; /* Adjust the height as per your requirement */ |
|
1250 |
- overflow-y: auto; |
|
1251 |
- overflow-x: hidden; /* Optional: Prevent horizontal scroll */ |
|
1252 |
- } |
|
1253 |
- tbody tr{ |
|
1254 |
- table-layout: fixed; display: table;width: 100%; |
|
1255 |
- td{cursor: pointer;} |
|
1256 |
- } |
|
1257 |
- tbody tr:hover td { |
|
1258 |
- background-color: rgba(194, 61, 74, 0.1); |
|
1259 |
- } |
|
1220 |
+ img { |
|
1221 |
+ position: absolute; |
|
1222 |
+ left: 50%; |
|
1223 |
+ right: 50%; |
|
1224 |
+ transform: translateX(-50%) translateY(-50%); |
|
1225 |
+ } |
|
1260 | 1226 |
|
1261 | 1227 |
} |
1228 |
+ } |
|
1262 | 1229 |
|
1263 |
- .delete-member { |
|
1264 |
- background-color: #f5f8f9; |
|
1230 |
+ .btn-group-small { |
|
1231 |
+ gap: 5px; |
|
1265 | 1232 |
|
1266 |
- td { |
|
1267 |
- color: #aaaaaa; |
|
1268 |
- |
|
1233 |
+ .button { |
|
1234 |
+ &.flex { |
|
1235 |
+ img { |
|
1236 |
+ text-align: left; |
|
1237 |
+ margin-right: 10px; |
|
1269 | 1238 |
} |
1239 |
+ |
|
1240 |
+ p { |
|
1241 |
+ text-align: center; |
|
1242 |
+ } |
|
1243 |
+ } |
|
1244 |
+ } |
|
1245 |
+ } |
|
1246 |
+ |
|
1247 |
+ .select-box { |
|
1248 |
+ width: 230px; |
|
1249 |
+ height: 50px; |
|
1250 |
+ border: 1px solid #ddd; |
|
1251 |
+ padding: 0 15px; |
|
1252 |
+ margin: 0; |
|
1253 |
+ |
|
1254 |
+ select { |
|
1255 |
+ width: 100%; |
|
1256 |
+ height: 100%; |
|
1257 |
+ font-size: 16px; |
|
1258 |
+ /* color: #999999; */ |
|
1259 |
+ } |
|
1260 |
+ } |
|
1261 |
+ |
|
1262 |
+ .switch { |
|
1263 |
+ label { |
|
1264 |
+ margin-top: -12px; |
|
1265 |
+ } |
|
1266 |
+ } |
|
1267 |
+ |
|
1268 |
+ table { |
|
1269 |
+ .selected { |
|
1270 |
+ background-color: rgba(194, 61, 74, 0.2); |
|
1270 | 1271 |
} |
1271 | 1272 |
|
1272 |
- textarea { |
|
1273 |
- border-color: #ddd; |
|
1273 |
+ border-radius: 10px; |
|
1274 |
+ overflow: hidden; |
|
1275 |
+ |
|
1276 |
+ thead { |
|
1277 |
+ display: table; |
|
1278 |
+ width: 100%; |
|
1279 |
+ background-color: #636364; |
|
1280 |
+ |
|
1281 |
+ th { |
|
1282 |
+ color: #fff; |
|
1283 |
+ border: 1px solid #eee; |
|
1284 |
+ } |
|
1274 | 1285 |
} |
1286 |
+ |
|
1287 |
+ td { |
|
1288 |
+ /* border: 1px solid #eee; */ |
|
1289 |
+ text-align: center; |
|
1290 |
+ } |
|
1291 |
+ |
|
1292 |
+ tbody { |
|
1293 |
+ border: 1px solid #eee; |
|
1294 |
+ display: block; |
|
1295 |
+ min-height: 53rem; |
|
1296 |
+ max-height: 53rem; |
|
1297 |
+ /* Adjust the height as per your requirement */ |
|
1298 |
+ overflow-y: auto; |
|
1299 |
+ overflow-x: hidden; |
|
1300 |
+ /* Optional: Prevent horizontal scroll */ |
|
1301 |
+ } |
|
1302 |
+ |
|
1303 |
+ tbody tr { |
|
1304 |
+ table-layout: fixed; |
|
1305 |
+ display: table; |
|
1306 |
+ width: 100%; |
|
1307 |
+ |
|
1308 |
+ td { |
|
1309 |
+ cursor: pointer; |
|
1310 |
+ } |
|
1311 |
+ } |
|
1312 |
+ |
|
1313 |
+ tbody tr:hover td { |
|
1314 |
+ background-color: rgba(194, 61, 74, 0.1); |
|
1315 |
+ } |
|
1316 |
+ |
|
1317 |
+ } |
|
1318 |
+ |
|
1319 |
+ .delete-member { |
|
1320 |
+ background-color: #f5f8f9; |
|
1321 |
+ |
|
1322 |
+ td { |
|
1323 |
+ color: #aaaaaa; |
|
1324 |
+ |
|
1325 |
+ } |
|
1326 |
+ } |
|
1327 |
+ |
|
1328 |
+ textarea { |
|
1329 |
+ border-color: #ddd; |
|
1330 |
+ } |
|
1275 | 1331 |
} |
1276 | 1332 |
|
1277 | 1333 |
|
... | ... | @@ -1280,157 +1336,157 @@ |
1280 | 1336 |
|
1281 | 1337 |
|
1282 | 1338 |
input[type="date"] { |
1283 |
- position: relative; |
|
1284 |
- width: 158px; |
|
1285 |
- border-radius: 8px; |
|
1286 |
- background: url(../../images/icon/calendar.png) no-repeat right 10px center / auto; |
|
1339 |
+ position: relative; |
|
1340 |
+ width: 158px; |
|
1341 |
+ border-radius: 8px; |
|
1342 |
+ background: url(../../images/icon/calendar.png) no-repeat right 10px center / auto; |
|
1287 | 1343 |
} |
1288 | 1344 |
|
1289 | 1345 |
input[type="date"]::placeholder { |
1290 |
- color: #fff; |
|
1291 |
- ; |
|
1346 |
+ color: #fff; |
|
1347 |
+ ; |
|
1292 | 1348 |
} |
1293 | 1349 |
|
1294 | 1350 |
input[type='date']::-webkit-calendar-picker-indicator { |
1295 |
- position: absolute; |
|
1296 |
- left: 0; |
|
1297 |
- top: 0; |
|
1298 |
- width: 100%; |
|
1299 |
- height: 100%; |
|
1300 |
- background: transparent; |
|
1301 |
- color: transparent; |
|
1302 |
- cursor: pointer; |
|
1351 |
+ position: absolute; |
|
1352 |
+ left: 0; |
|
1353 |
+ top: 0; |
|
1354 |
+ width: 100%; |
|
1355 |
+ height: 100%; |
|
1356 |
+ background: transparent; |
|
1357 |
+ color: transparent; |
|
1358 |
+ cursor: pointer; |
|
1303 | 1359 |
} |
1304 | 1360 |
|
1305 | 1361 |
input[type="checkbox"] { |
1306 |
- position: relative; |
|
1307 |
- width: 22px; |
|
1308 |
- height: 22px; |
|
1309 |
- padding: 0; |
|
1310 |
- accent-color: #544483; |
|
1311 |
- /* This will change the checkbox color when checked */ |
|
1312 |
- border: 1px solid #cccccc; |
|
1313 |
- /* This controls the border color */ |
|
1314 |
- border-radius: 4px; |
|
1315 |
- /* Optional: rounded corners */ |
|
1316 |
- background-color: #fff; |
|
1317 |
- /* Default background */ |
|
1318 |
- appearance: none; |
|
1319 |
- /* Remove the default checkbox appearance */ |
|
1320 |
- cursor: pointer; |
|
1362 |
+ position: relative; |
|
1363 |
+ width: 22px; |
|
1364 |
+ height: 22px; |
|
1365 |
+ padding: 0; |
|
1366 |
+ accent-color: #544483; |
|
1367 |
+ /* This will change the checkbox color when checked */ |
|
1368 |
+ border: 1px solid #cccccc; |
|
1369 |
+ /* This controls the border color */ |
|
1370 |
+ border-radius: 4px; |
|
1371 |
+ /* Optional: rounded corners */ |
|
1372 |
+ background-color: #fff; |
|
1373 |
+ /* Default background */ |
|
1374 |
+ appearance: none; |
|
1375 |
+ /* Remove the default checkbox appearance */ |
|
1376 |
+ cursor: pointer; |
|
1321 | 1377 |
} |
1322 | 1378 |
|
1323 | 1379 |
/* Checked state of the checkbox */ |
1324 | 1380 |
input[type="checkbox"]:checked { |
1325 |
- background-color: #544483; |
|
1326 |
- /* Custom background when checked */ |
|
1327 |
- border-color: #544483; |
|
1328 |
- /* Custom border color when checked */ |
|
1381 |
+ background-color: #544483; |
|
1382 |
+ /* Custom background when checked */ |
|
1383 |
+ border-color: #544483; |
|
1384 |
+ /* Custom border color when checked */ |
|
1329 | 1385 |
} |
1330 | 1386 |
|
1331 | 1387 |
input[type="checkbox"]:checked::before { |
1332 |
- content: ''; |
|
1333 |
- background-image: url(../../images/check.png); |
|
1334 |
- background-repeat: no-repeat; |
|
1335 |
- position: absolute; |
|
1336 |
- left: 2px; |
|
1337 |
- top: 5px; |
|
1338 |
- width: 15px; |
|
1339 |
- height: 11px; |
|
1388 |
+ content: ''; |
|
1389 |
+ background-image: url(../../images/check.png); |
|
1390 |
+ background-repeat: no-repeat; |
|
1391 |
+ position: absolute; |
|
1392 |
+ left: 2px; |
|
1393 |
+ top: 5px; |
|
1394 |
+ width: 15px; |
|
1395 |
+ height: 11px; |
|
1340 | 1396 |
} |
1341 | 1397 |
|
1342 | 1398 |
input[type="checkbox"]:checked+label { |
1343 |
- color: rgba(0, 0, 0, 0.12); |
|
1344 |
- /* Change the label color when checkbox is checked */ |
|
1399 |
+ color: rgba(0, 0, 0, 0.12); |
|
1400 |
+ /* Change the label color when checkbox is checked */ |
|
1345 | 1401 |
} |
1346 | 1402 |
|
1347 | 1403 |
input[type="checkbox"]+label, |
1348 | 1404 |
input[type='radio']+label { |
1349 |
- font-size: 17px; |
|
1350 |
- font-family: "Pretendard-L"; |
|
1351 |
- width: 140px; |
|
1352 |
- flex-shrink: 0; |
|
1405 |
+ font-size: 17px; |
|
1406 |
+ font-family: "Pretendard-L"; |
|
1407 |
+ width: 140px; |
|
1408 |
+ flex-shrink: 0; |
|
1353 | 1409 |
} |
1354 | 1410 |
|
1355 | 1411 |
/* 기본스타일 제거, 버튼 모양 재설정 */ |
1356 | 1412 |
input[type='radio'] { |
1357 |
- flex-shrink: 0; |
|
1358 |
- -webkit-appearance: none; |
|
1359 |
- /* 웹킷 브라우저에서 기본 스타일 제거*/ |
|
1360 |
- -moz-appearance: none; |
|
1361 |
- /* 모질라 브라우저에서 기본 스타일 제거*/ |
|
1362 |
- appearance: none; |
|
1363 |
- /*기본 브라우저에서 기본 스타일 제거*/ |
|
1364 |
- width: 22px; |
|
1365 |
- height: 22px; |
|
1366 |
- padding: 0; |
|
1367 |
- border: 1px solid #ccc; |
|
1368 |
- /*체크되지 않았을 때의 테두리 색상*/ |
|
1369 |
- border-radius: 50%; |
|
1370 |
- outline: none; |
|
1371 |
- /*focus 시에 나타나는 기본 스타일 제거*/ |
|
1372 |
- cursor: pointer; |
|
1413 |
+ flex-shrink: 0; |
|
1414 |
+ -webkit-appearance: none; |
|
1415 |
+ /* 웹킷 브라우저에서 기본 스타일 제거*/ |
|
1416 |
+ -moz-appearance: none; |
|
1417 |
+ /* 모질라 브라우저에서 기본 스타일 제거*/ |
|
1418 |
+ appearance: none; |
|
1419 |
+ /*기본 브라우저에서 기본 스타일 제거*/ |
|
1420 |
+ width: 22px; |
|
1421 |
+ height: 22px; |
|
1422 |
+ padding: 0; |
|
1423 |
+ border: 1px solid #ccc; |
|
1424 |
+ /*체크되지 않았을 때의 테두리 색상*/ |
|
1425 |
+ border-radius: 50%; |
|
1426 |
+ outline: none; |
|
1427 |
+ /*focus 시에 나타나는 기본 스타일 제거*/ |
|
1428 |
+ cursor: pointer; |
|
1373 | 1429 |
} |
1374 | 1430 |
|
1375 | 1431 |
/* 체크 시 버튼 모양 스타일*/ |
1376 | 1432 |
input[type='radio']:checked { |
1377 |
- background-color: #544483; |
|
1378 |
- /*체크 시 내부 원 색상*/ |
|
1379 |
- border: 4px solid #fff; |
|
1380 |
- /*라인이 아닌, 라인과 원 사이 색상*/ |
|
1381 |
- box-shadow: 0 0 0 1px #ccc; |
|
1382 |
- /*라인*/ |
|
1433 |
+ background-color: #544483; |
|
1434 |
+ /*체크 시 내부 원 색상*/ |
|
1435 |
+ border: 4px solid #fff; |
|
1436 |
+ /*라인이 아닌, 라인과 원 사이 색상*/ |
|
1437 |
+ box-shadow: 0 0 0 1px #ccc; |
|
1438 |
+ /*라인*/ |
|
1383 | 1439 |
} |
1384 | 1440 |
|
1385 | 1441 |
.switch { |
1386 |
- input[type="checkbox"] { |
|
1387 |
- height: 0; |
|
1388 |
- width: 0; |
|
1389 |
- visibility: hidden; |
|
1390 |
- } |
|
1442 |
+ input[type="checkbox"] { |
|
1443 |
+ height: 0; |
|
1444 |
+ width: 0; |
|
1445 |
+ visibility: hidden; |
|
1446 |
+ } |
|
1391 | 1447 |
|
1392 |
- label { |
|
1393 |
- cursor: pointer; |
|
1394 |
- text-indent: -9999px; |
|
1395 |
- width: 65px; |
|
1396 |
- height: 28px; |
|
1397 |
- background: #787878; |
|
1398 |
- display: block; |
|
1399 |
- border-radius: 100px; |
|
1400 |
- position: relative; |
|
1401 |
- transition: background-color 0.3s ease; |
|
1402 |
- /* Added smooth transition for background */ |
|
1403 |
- } |
|
1448 |
+ label { |
|
1449 |
+ cursor: pointer; |
|
1450 |
+ text-indent: -9999px; |
|
1451 |
+ width: 65px; |
|
1452 |
+ height: 28px; |
|
1453 |
+ background: #787878; |
|
1454 |
+ display: block; |
|
1455 |
+ border-radius: 100px; |
|
1456 |
+ position: relative; |
|
1457 |
+ transition: background-color 0.3s ease; |
|
1458 |
+ /* Added smooth transition for background */ |
|
1459 |
+ } |
|
1404 | 1460 |
|
1405 |
- label:after { |
|
1406 |
- content: ''; |
|
1407 |
- position: absolute; |
|
1408 |
- top: 4px; |
|
1409 |
- left: 5px; |
|
1410 |
- width: 20px; |
|
1411 |
- height: 20px; |
|
1412 |
- background: #fff; |
|
1413 |
- border-radius: 50%; |
|
1414 |
- } |
|
1461 |
+ label:after { |
|
1462 |
+ content: ''; |
|
1463 |
+ position: absolute; |
|
1464 |
+ top: 4px; |
|
1465 |
+ left: 5px; |
|
1466 |
+ width: 20px; |
|
1467 |
+ height: 20px; |
|
1468 |
+ background: #fff; |
|
1469 |
+ border-radius: 50%; |
|
1470 |
+ } |
|
1415 | 1471 |
|
1416 |
- /* When the input is checked */ |
|
1417 |
- input:checked+label { |
|
1418 |
- background: #544483; |
|
1419 |
- /* Color when active */ |
|
1420 |
- } |
|
1472 |
+ /* When the input is checked */ |
|
1473 |
+ input:checked+label { |
|
1474 |
+ background: #544483; |
|
1475 |
+ /* Color when active */ |
|
1476 |
+ } |
|
1421 | 1477 |
|
1422 |
- input:checked+label:after { |
|
1423 |
- left: calc(100% - 5px); |
|
1424 |
- transform: translateX(-100%); |
|
1425 |
- /* Keeps the ball moving smoothly */ |
|
1426 |
- } |
|
1478 |
+ input:checked+label:after { |
|
1479 |
+ left: calc(100% - 5px); |
|
1480 |
+ transform: translateX(-100%); |
|
1481 |
+ /* Keeps the ball moving smoothly */ |
|
1482 |
+ } |
|
1427 | 1483 |
|
1428 |
- /* Optional: Make the toggle ball slightly larger during the click for a better effect */ |
|
1429 |
- label:active:after { |
|
1430 |
- width: 20px; |
|
1431 |
- /* Slightly increase the ball size */ |
|
1432 |
- height: 20px; |
|
1433 |
- } |
|
1484 |
+ /* Optional: Make the toggle ball slightly larger during the click for a better effect */ |
|
1485 |
+ label:active:after { |
|
1486 |
+ width: 20px; |
|
1487 |
+ /* Slightly increase the ball size */ |
|
1488 |
+ height: 20px; |
|
1489 |
+ } |
|
1434 | 1490 |
} |
1435 | 1491 |
|
1436 | 1492 |
|
... | ... | @@ -1438,45 +1494,214 @@ |
1438 | 1494 |
|
1439 | 1495 |
/* table*/ |
1440 | 1496 |
table { |
1441 |
- width: 100%; |
|
1442 |
- border-collapse: collapse; |
|
1443 |
- border-top: 2px solid #000; |
|
1497 |
+ width: 100%; |
|
1498 |
+ border-collapse: collapse; |
|
1499 |
+ border-top: 2px solid #000; |
|
1444 | 1500 |
} |
1445 | 1501 |
|
1446 | 1502 |
thead { |
1447 |
- background-color: #f6f6f6; |
|
1503 |
+ background-color: #f6f6f6; |
|
1448 | 1504 |
} |
1449 | 1505 |
|
1450 | 1506 |
th { |
1451 |
- font-family: "Pretendard-SB"; |
|
1452 |
- font-size: 18px; |
|
1507 |
+ font-family: "Pretendard-SB"; |
|
1508 |
+ font-size: 18px; |
|
1453 | 1509 |
} |
1454 | 1510 |
|
1455 | 1511 |
tbody tr { |
1456 |
- border-bottom: 1px solid #eeeeee; |
|
1512 |
+ border-bottom: 1px solid #eeeeee; |
|
1457 | 1513 |
|
1458 |
- td { |
|
1459 |
- font-size: 16px; |
|
1460 |
- font-family: "Pretendard-L"; |
|
1461 |
- } |
|
1514 |
+ td { |
|
1515 |
+ font-size: 16px; |
|
1516 |
+ font-family: "Pretendard-L"; |
|
1517 |
+ } |
|
1462 | 1518 |
} |
1463 | 1519 |
|
1464 | 1520 |
td, |
1465 | 1521 |
th { |
1466 |
- padding: 10px 0; |
|
1522 |
+ padding: 10px 0; |
|
1467 | 1523 |
} |
1468 | 1524 |
|
1469 | 1525 |
/* 에디터 */ |
1470 |
-.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable){ |
|
1471 |
- border-color: #ddd !important; |
|
1472 |
- box-shadow: 0 0 0 0 !important; |
|
1526 |
+.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable) { |
|
1527 |
+ border-color: #ddd !important; |
|
1528 |
+ box-shadow: 0 0 0 0 !important; |
|
1473 | 1529 |
} |
1474 |
- .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content{ |
|
1475 |
- border-color: #ddd !important; |
|
1530 |
+ |
|
1531 |
+.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content { |
|
1532 |
+ border-color: #ddd !important; |
|
1533 |
+} |
|
1534 |
+ |
|
1535 |
+.ck.ck-editor__main>.ck-editor__editable:not(.ck-focused) { |
|
1536 |
+ border-color: #ddd !important; |
|
1537 |
+} |
|
1538 |
+ |
|
1539 |
+.ck.ck-balloon-panel.ck-balloon-panel_visible { |
|
1540 |
+ display: none !important; |
|
1541 |
+} |
|
1542 |
+ |
|
1543 |
+ |
|
1544 |
+/* 카드형 목록 보기 (사진 기록물 전용 / 갤러리형) */ |
|
1545 |
+.gallery-wrap { |
|
1546 |
+ width: 100%; |
|
1547 |
+ display: grid; |
|
1548 |
+ gap: 30px; |
|
1549 |
+ grid-template-columns: repeat(4, 1fr); |
|
1550 |
+ grid-auto-rows: auto; |
|
1551 |
+} |
|
1552 |
+ |
|
1553 |
+.gallery-item { |
|
1554 |
+ cursor: pointer; |
|
1555 |
+ |
|
1556 |
+ .item { |
|
1557 |
+ padding: 30px; |
|
1558 |
+ border: 1px solid #ddd; |
|
1559 |
+ border-radius: 24px; |
|
1560 |
+ height: 100%; |
|
1561 |
+ display: flex; |
|
1562 |
+ flex-direction: column; |
|
1476 | 1563 |
} |
1477 |
- .ck.ck-editor__main > .ck-editor__editable:not(.ck-focused){ |
|
1478 |
- border-color: #ddd !important; |
|
1564 |
+ |
|
1565 |
+ .img-wrap { |
|
1566 |
+ position: relative; |
|
1567 |
+ width: 100%; |
|
1568 |
+ aspect-ratio: 4 / 3; |
|
1569 |
+ border-radius: 24px; |
|
1570 |
+ overflow: hidden; |
|
1571 |
+ background-color: #f5f5f5; |
|
1572 |
+ |
|
1573 |
+ img { |
|
1574 |
+ width: 100%; |
|
1575 |
+ height: 100%; |
|
1576 |
+ object-fit: cover; |
|
1577 |
+ } |
|
1479 | 1578 |
} |
1480 |
- .ck.ck-balloon-panel.ck-balloon-panel_visible{ |
|
1481 |
- display: none !important; |
|
1482 |
- }(파일 끝에 줄바꿈 문자 없음) |
|
1579 |
+ |
|
1580 |
+ .text-box { |
|
1581 |
+ width: 100%; |
|
1582 |
+ margin-top: 20px; |
|
1583 |
+ font-family: "Pretendard-L"; |
|
1584 |
+ font-size: 16px; |
|
1585 |
+ } |
|
1586 |
+ |
|
1587 |
+ .category { |
|
1588 |
+ width: 100%; |
|
1589 |
+ flex-wrap: wrap; |
|
1590 |
+ } |
|
1591 |
+} |
|
1592 |
+ |
|
1593 |
+.img-view { |
|
1594 |
+ display: flex; |
|
1595 |
+ gap: 20px; |
|
1596 |
+ |
|
1597 |
+ .current-img-wrap { |
|
1598 |
+ width: 60%; |
|
1599 |
+ aspect-ratio: 6 / 4; |
|
1600 |
+ background-color: #ddd; |
|
1601 |
+ |
|
1602 |
+ img { |
|
1603 |
+ width: 100%; |
|
1604 |
+ height: 100%; |
|
1605 |
+ object-fit: contain; |
|
1606 |
+ } |
|
1607 |
+ } |
|
1608 |
+ |
|
1609 |
+ .thumb-view { |
|
1610 |
+ width: 40%; |
|
1611 |
+ aspect-ratio: 6 / 4; |
|
1612 |
+ } |
|
1613 |
+} |
|
1614 |
+ |
|
1615 |
+.thumbnails { |
|
1616 |
+ width: 100%; |
|
1617 |
+ height: calc(100% - 65px); |
|
1618 |
+ overflow-y: auto; |
|
1619 |
+ |
|
1620 |
+ >div { |
|
1621 |
+ display: grid; |
|
1622 |
+ grid-template-columns: repeat(3, 1fr); |
|
1623 |
+ gap: 20px; |
|
1624 |
+ } |
|
1625 |
+ |
|
1626 |
+ .thumbnail-wrap { |
|
1627 |
+ position: relative; |
|
1628 |
+ width: 100%; |
|
1629 |
+ } |
|
1630 |
+ |
|
1631 |
+ .thumbnail { |
|
1632 |
+ width: 100%; |
|
1633 |
+ aspect-ratio: 6 / 4; |
|
1634 |
+ cursor: pointer; |
|
1635 |
+ |
|
1636 |
+ img { |
|
1637 |
+ width: 100%; |
|
1638 |
+ height: 100%; |
|
1639 |
+ object-fit: cover; |
|
1640 |
+ } |
|
1641 |
+ } |
|
1642 |
+ |
|
1643 |
+ .float-div { |
|
1644 |
+ position: absolute; |
|
1645 |
+ right: .5rem; |
|
1646 |
+ bottom: .5rem; |
|
1647 |
+ z-index: 5; |
|
1648 |
+ } |
|
1649 |
+} |
|
1650 |
+ |
|
1651 |
+.download-btn { |
|
1652 |
+ .btn { |
|
1653 |
+ width: 160px; |
|
1654 |
+ height: 45px; |
|
1655 |
+ font-family: "Pretendard-B"; |
|
1656 |
+ font-size: 16px; |
|
1657 |
+ padding: 13px 21px; |
|
1658 |
+ text-align: left; |
|
1659 |
+ margin: 0 5px; |
|
1660 |
+ background-image: url(../../images/downbtn_bg.png); |
|
1661 |
+ color: #fff; |
|
1662 |
+ } |
|
1663 |
+ |
|
1664 |
+ .select-down { |
|
1665 |
+ background-image: url(../../images/downbtn_border.png); |
|
1666 |
+ } |
|
1667 |
+} |
|
1668 |
+ |
|
1669 |
+.btn-sm { |
|
1670 |
+ color: inherit; |
|
1671 |
+ font-size: 14px; |
|
1672 |
+ font-family: "Pretendard-SB" !important; |
|
1673 |
+ |
|
1674 |
+ padding: 5px 10px; |
|
1675 |
+ border-width: 1px; |
|
1676 |
+ border-style: solid; |
|
1677 |
+ border-radius: 3px; |
|
1678 |
+ background-color: #FFFFFF; |
|
1679 |
+ |
|
1680 |
+ &.red { |
|
1681 |
+ color: #a5067b; |
|
1682 |
+ border: 1px solid #a5067b; |
|
1683 |
+ } |
|
1684 |
+} |
|
1685 |
+ |
|
1686 |
+.category-dd { |
|
1687 |
+ ul { |
|
1688 |
+ display: flex; |
|
1689 |
+ gap: 15px; |
|
1690 |
+ flex-wrap: wrap; |
|
1691 |
+ max-height: 80px; |
|
1692 |
+ width: 100%; |
|
1693 |
+ overflow-y: auto; |
|
1694 |
+ overflow-x: hidden; |
|
1695 |
+ } |
|
1696 |
+ |
|
1697 |
+ li { |
|
1698 |
+ display: flex; |
|
1699 |
+ align-items: center; |
|
1700 |
+ width: 175px; |
|
1701 |
+ gap: 12px; |
|
1702 |
+ |
|
1703 |
+ label { |
|
1704 |
+ cursor: pointer; |
|
1705 |
+ } |
|
1706 |
+ } |
|
1707 |
+}(파일 끝에 줄바꿈 문자 없음) |
--- client/resources/js/cmmnPlugin.js
+++ client/resources/js/cmmnPlugin.js
... | ... | @@ -96,6 +96,36 @@ |
96 | 96 |
Vue.config.globalProperties.$processTitle = (title) => { |
97 | 97 |
if (!title) return ''; |
98 | 98 |
return title.trim().replace(/\s+/g, ' '); |
99 |
+ }; |
|
100 |
+ |
|
101 |
+ // 생산연도 포맷팅 함수 |
|
102 |
+ Vue.config.globalProperties.$formatPrdctnDate = (prdctnYear) => { |
|
103 |
+ if (!prdctnYear) return '-'; |
|
104 |
+ |
|
105 |
+ const prdctnYearStr = String(prdctnYear); |
|
106 |
+ |
|
107 |
+ // 길이에 따른 처리 |
|
108 |
+ if (prdctnYearStr.length === 4) { |
|
109 |
+ // YYYY 형식인 경우 - 년도만 있는 경우 |
|
110 |
+ return `${prdctnYearStr}`; |
|
111 |
+ } else if (prdctnYearStr.length === 8) { |
|
112 |
+ // YYYYMMDD 형식인 경우 |
|
113 |
+ const year = prdctnYearStr.substring(0, 4); |
|
114 |
+ const month = prdctnYearStr.substring(4, 6); |
|
115 |
+ const day = prdctnYearStr.substring(6, 8); |
|
116 |
+ |
|
117 |
+ // 월과 일이 00인 경우 처리 |
|
118 |
+ if (month === '00' && day === '00') { |
|
119 |
+ return `${year}`; |
|
120 |
+ } else if (day === '00') { |
|
121 |
+ return `${year}.${month}`; |
|
122 |
+ } else { |
|
123 |
+ return `${year}.${month}.${day}`; |
|
124 |
+ } |
|
125 |
+ } |
|
126 |
+ |
|
127 |
+ // 다른 형식은 그대로 반환 |
|
128 |
+ return prdctnYearStr; |
|
99 | 129 |
} |
100 | 130 |
}, |
101 | 131 |
}(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/listLayout/CardViewList.vue
+++ client/views/component/CardViewList.vue
... | ... | @@ -1,5 +1,5 @@ |
1 | 1 |
<template> |
2 |
- <div class="mb-30"> |
|
2 |
+ <div class="result-list-wrap mb-30"> |
|
3 | 3 |
<div class="flex-sp-bw mb-20"> |
4 | 4 |
<div class="resultext"> |
5 | 5 |
<img :src="resulticon" alt=""> |
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
<button type="button" class="gopage" @click="fnMoveTo">모두보기</button> |
9 | 9 |
</div> |
10 | 10 |
<div v-if="list.length > 0"> |
11 |
- <CardStyleComponent :name="name" :list="list" /> |
|
11 |
+ <CardStyleComponent :typeText="typeText" :name="name" :list="list" /> |
|
12 | 12 |
</div> |
13 | 13 |
<div v-else class="no-results"> |
14 | 14 |
<img :src="nosearch" alt=""> |
... | ... | @@ -55,6 +55,18 @@ |
55 | 55 |
}, |
56 | 56 |
|
57 | 57 |
computed: { |
58 |
+ typeText() { |
|
59 |
+ switch (this.name) { |
|
60 |
+ case 'P': |
|
61 |
+ return '사진'; |
|
62 |
+ case 'V': |
|
63 |
+ return '영상'; |
|
64 |
+ case 'M': |
|
65 |
+ return '미디어 영상'; |
|
66 |
+ case 'N': |
|
67 |
+ return '스크랩 자료'; |
|
68 |
+ } |
|
69 |
+ }, |
|
58 | 70 |
helpText() { |
59 | 71 |
switch (this.name) { |
60 | 72 |
case 'P': |
+++ client/views/component/CategoryListComponent.vue
... | ... | @@ -0,0 +1,85 @@ |
1 | +<template> | |
2 | + <ul> | |
3 | + <li v-for="(category, idx) of categoryList" :key="idx"> | |
4 | + <input type="checkbox" :id="'ctgry_' + idx" name="categorys" :value="category.ctgryId" :checked="isSelected(category)" @change="updateSelected(category)" /> | |
5 | + <label :for="'ctgry_' + idx">{{ category.ctgryNm }}</label> | |
6 | + </li> | |
7 | + </ul> | |
8 | +</template> | |
9 | +<script> | |
10 | +// API | |
11 | +import { findAllByNullProc } from "@/resources/api/category"; | |
12 | + | |
13 | +// 카테고리 목록 검색 | |
14 | +export default { | |
15 | + name: 'CategoryListComponent', | |
16 | + | |
17 | + props: { | |
18 | + modelValue: { | |
19 | + type: Array, | |
20 | + default: () => [], | |
21 | + } | |
22 | + }, | |
23 | + | |
24 | + emits: ['update:modelValue'], | |
25 | + | |
26 | + data() { | |
27 | + return { | |
28 | + categoryList: [], // 카테고리 목록 | |
29 | + }; | |
30 | + }, | |
31 | + | |
32 | + created() { | |
33 | + this.fnFindCategorys(); // 카테고리 목록 조회 | |
34 | + }, | |
35 | + | |
36 | + methods: { | |
37 | + // 카테고리 목록 조회 | |
38 | + async fnFindCategorys() { | |
39 | + try { | |
40 | + const response = await findAllByNullProc(); | |
41 | + if (response.data && response.data.data && response.data.data.ctgry) { | |
42 | + this.categoryList = response.data.data.ctgry; | |
43 | + } else { | |
44 | + this.categoryList = []; | |
45 | + } | |
46 | + } catch (error) { | |
47 | + this.categoryList = []; // 카테고리 목록 초기화 | |
48 | + if (error.response) { | |
49 | + alert(error.response.data.message); | |
50 | + } | |
51 | + console.error(error.message); | |
52 | + } | |
53 | + }, | |
54 | + | |
55 | + // 체크박스가 선택되었는지 확인 | |
56 | + isSelected(category) { | |
57 | + return this.modelValue.some(item => | |
58 | + item.ctgryId === category.ctgryId || item === category.ctgryId); | |
59 | + }, | |
60 | + | |
61 | + // 선택된 카테고리 업데이트 (부모 컴포넌트에 이벤트 발생) | |
62 | + updateSelected(category) { | |
63 | + // 현재 선택된 항목의 복사본 생성 | |
64 | + const updatedSelection = [...this.modelValue]; | |
65 | + | |
66 | + // 이미 선택된 항목인지 확인 | |
67 | + const index = updatedSelection.findIndex(item => | |
68 | + (typeof item === 'object' && item.ctgryId === category.ctgryId) || | |
69 | + item === category.ctgryId | |
70 | + ); | |
71 | + | |
72 | + if (index === -1) { | |
73 | + // 선택되지 않은 경우 추가 | |
74 | + updatedSelection.push(category); | |
75 | + } else { | |
76 | + // 이미 선택된 경우 제거 | |
77 | + updatedSelection.splice(index, 1); | |
78 | + } | |
79 | + | |
80 | + // 부모 컴포넌트에 업데이트된 목록 전달 | |
81 | + this.$emit('update:modelValue', updatedSelection); | |
82 | + } | |
83 | + } | |
84 | +}; | |
85 | +</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/listLayout/DefaultPagination.vue
+++ client/views/component/DefaultPagination.vue
No changes |
+++ client/views/component/PrdctnSelectComponent.vue
... | ... | @@ -0,0 +1,166 @@ |
1 | +<template> | |
2 | + <div class="date-input-group"> | |
3 | + <select id="prdctnYear" v-model="localDateForm.year" class="year-select" @change="emitChanges"> | |
4 | + <option v-for="year in yearOptions" :key="year" :value="year">{{ year }}년</option> | |
5 | + </select> | |
6 | + <input type="text" id="prdctnMonth" placeholder="월" v-model="localDateForm.month" maxlength="2" @input="onlyNumberInput('month')" class="month-input"> | |
7 | + <input type="text" id="prdctnDay" placeholder="일" v-model="localDateForm.day" maxlength="2" @input="onlyNumberInput('day')" class="day-input"> | |
8 | + </div> | |
9 | +</template> | |
10 | +<script> | |
11 | +export default { | |
12 | + name: "PrdctnSelectComponent", | |
13 | + | |
14 | + props: { | |
15 | + // 초기값 또는 부모에서 전달하는 날짜 객체 | |
16 | + modelValue: { | |
17 | + type: Object, | |
18 | + default: () => ({ | |
19 | + year: new Date().getFullYear(), | |
20 | + month: '', | |
21 | + day: '' | |
22 | + }) | |
23 | + }, | |
24 | + | |
25 | + // 포맷팅된 날짜 문자열 (YYYYMMDD) | |
26 | + value: { | |
27 | + type: String, | |
28 | + default: '' | |
29 | + } | |
30 | + }, | |
31 | + | |
32 | + emits: ['update:modelValue', 'formatted-date'], | |
33 | + | |
34 | + data() { | |
35 | + return { | |
36 | + // 내부적으로 사용할 로컬 데이터 | |
37 | + localDateForm: { | |
38 | + year: this.modelValue.year || new Date().getFullYear(), | |
39 | + month: this.modelValue.month || '', | |
40 | + day: this.modelValue.day || '' | |
41 | + } | |
42 | + }; | |
43 | + }, | |
44 | + | |
45 | + computed: { | |
46 | + // 년도 옵션 (현재부터 1970년까지) | |
47 | + yearOptions() { | |
48 | + const currentYear = new Date().getFullYear(); | |
49 | + const years = []; | |
50 | + for (let year = currentYear; year >= 1970; year--) { | |
51 | + years.push(year); | |
52 | + } | |
53 | + return years; | |
54 | + }, | |
55 | + | |
56 | + // 날짜 포맷팅 (YYYYMMDD 형식) | |
57 | + formattedDate() { | |
58 | + const year = this.localDateForm.year || ''; | |
59 | + const month = this.localDateForm.month || '00'; | |
60 | + const day = this.localDateForm.day || '00'; | |
61 | + | |
62 | + if (!year) return ''; | |
63 | + return `${year}${month.padStart(2, '0')}${day.padStart(2, '0')}`; | |
64 | + } | |
65 | + }, | |
66 | + | |
67 | + watch: { | |
68 | + // 부모로부터 변경된 값 감지 | |
69 | + modelValue: { | |
70 | + handler(newValue) { | |
71 | + // 참조 공유가 아닌 값 복사로 변경 | |
72 | + this.localDateForm = { | |
73 | + year: newValue.year || new Date().getFullYear(), | |
74 | + month: newValue.month || '', | |
75 | + day: newValue.day || '' | |
76 | + }; | |
77 | + }, | |
78 | + deep: true, | |
79 | + immediate: true | |
80 | + }, | |
81 | + | |
82 | + // 외부에서 전달된 포맷팅된 날짜값 감지 | |
83 | + value: { | |
84 | + handler(newValue) { | |
85 | + if (newValue && newValue !== this.formattedDate) { | |
86 | + this.parsePrdctnYear(newValue); | |
87 | + } | |
88 | + }, | |
89 | + immediate: true | |
90 | + } | |
91 | + }, | |
92 | + | |
93 | + created() { | |
94 | + // 컴포넌트 생성 시 값이 있으면 파싱 | |
95 | + if (this.value) { | |
96 | + this.parsePrdctnYear(this.value); | |
97 | + } | |
98 | + }, | |
99 | + | |
100 | + methods: { | |
101 | + // 값 변경 시 부모에게 전달 | |
102 | + emitChanges() { | |
103 | + this.$emit('update:modelValue', { ...this.localDateForm }); | |
104 | + this.$emit('formatted-date', this.formattedDate); | |
105 | + }, | |
106 | + | |
107 | + // 숫자만 입력 가능하도록 제한 | |
108 | + onlyNumberInput(field) { | |
109 | + this.localDateForm[field] = this.localDateForm[field].replace(/[^0-9]/g, ''); | |
110 | + | |
111 | + // 월 입력 범위 제한 (1-12) | |
112 | + if (field === 'month' && this.localDateForm.month) { | |
113 | + const month = parseInt(this.localDateForm.month); | |
114 | + if (month > 12) this.localDateForm.month = '12'; | |
115 | + if (month < 1) this.localDateForm.month = '01'; | |
116 | + } | |
117 | + | |
118 | + // 일 입력 범위 제한 (1-31) | |
119 | + if (field === 'day' && this.localDateForm.day) { | |
120 | + const day = parseInt(this.localDateForm.day); | |
121 | + if (day > 31) this.localDateForm.day = '31'; | |
122 | + if (day < 1) this.localDateForm.day = '01'; | |
123 | + } | |
124 | + | |
125 | + // 값 변경 알림 | |
126 | + this.emitChanges(); | |
127 | + }, | |
128 | + | |
129 | + // 날짜 문자열 파싱 메서드 | |
130 | + parsePrdctnYear(prdctnYear) { | |
131 | + if (!prdctnYear) { | |
132 | + this.localDateForm = { | |
133 | + year: new Date().getFullYear(), | |
134 | + month: '', | |
135 | + day: '' | |
136 | + }; | |
137 | + this.emitChanges(); | |
138 | + return; | |
139 | + } | |
140 | + | |
141 | + const prdctnYearStr = String(prdctnYear); | |
142 | + | |
143 | + if (prdctnYearStr.length === 4) { | |
144 | + // YYYY 형식인 경우 | |
145 | + this.localDateForm = { | |
146 | + year: prdctnYearStr, | |
147 | + month: '', | |
148 | + day: '' | |
149 | + }; | |
150 | + } else if (prdctnYearStr.length === 8) { | |
151 | + // YYYYMMDD 형식인 경우 | |
152 | + const year = prdctnYearStr.substring(0, 4); | |
153 | + let month = prdctnYearStr.substring(4, 6); | |
154 | + month = month === '00' ? '' : month; | |
155 | + let day = prdctnYearStr.substring(6, 8); | |
156 | + day = day === '00' ? '' : day; | |
157 | + | |
158 | + this.localDateForm = { year, month, day }; | |
159 | + } | |
160 | + | |
161 | + // 값 변경 알림 | |
162 | + this.emitChanges(); | |
163 | + } | |
164 | + } | |
165 | +}; | |
166 | +</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/listLayout/CardStyleComponent.vue
+++ client/views/component/listLayout/CardStyleComponent.vue
... | ... | @@ -3,6 +3,9 @@ |
3 | 3 |
<li v-for="(item, idx) in list" :key="idx" class="mb-30" @click="fnMoveTo(item)"> |
4 | 4 |
<div class="result-box"> |
5 | 5 |
<div class="main-img"> |
6 |
+ <div v-if="!$isEmpty(typeText)" class="float-div"> |
|
7 |
+ <p class="float-txt">{{ typeText }}</p> |
|
8 |
+ </div> |
|
6 | 9 |
<img v-if="name === 'M'" :src="getYouTubeThumbnail(item.link)" alt="영상 썸네일"> |
7 | 10 |
<img v-else-if="!$isEmpty(item.thumbnail)" :src="item.thumbnail.filePath" :alt="item.sj + ' 썸네일'"> |
8 | 11 |
<img v-else src="client/resources/images/img6.png" alt="Not found image"> |
... | ... | @@ -18,7 +21,7 @@ |
18 | 21 |
</div> |
19 | 22 |
<div class="date"> |
20 | 23 |
<ul> |
21 |
- <li>생산연도 <b>{{ item.prdctnYear ? item.prdctnYear : '-' }}</b></li> |
|
24 |
+ <li>생산연도 <b>{{ item.prdctnYear ? $formatPrdctnDate(item.prdctnYear) : '-' }}</b></li> |
|
22 | 25 |
<li>|</li> |
23 | 26 |
<li>등록 <b>{{ $dotFormatDate(item.rgsde) }}</b></li> |
24 | 27 |
</ul> |
... | ... | @@ -35,6 +38,10 @@ |
35 | 38 |
name: "CardStyleComponent", |
36 | 39 |
|
37 | 40 |
props: { |
41 |
+ typeText: { |
|
42 |
+ type: String, |
|
43 |
+ default: null |
|
44 |
+ }, |
|
38 | 45 |
name: { |
39 | 46 |
type: String, |
40 | 47 |
default: 'P' |
+++ client/views/component/listLayout/GalleryStyleComponent.vue
... | ... | @@ -0,0 +1,77 @@ |
1 | +<template> | |
2 | + <ul class="gallery-wrap"> | |
3 | + <li v-for="(item, idx) in list" :key="idx" class="gallery-item" @click="fnMoveTo(item)"> | |
4 | + <div class="item"> | |
5 | + <figure class="img-wrap"> | |
6 | + <img v-if="!$isEmpty(item.thumbnail)" :src="item.thumbnail.filePath" :alt="item.sj + ' 썸네일'"> | |
7 | + <img v-else src="client/resources/images/img6.png" alt="Not found image"> | |
8 | + </figure> | |
9 | + <div class="text-box"> | |
10 | + <h5 class="txt-center">{{ item.sj }}</h5> | |
11 | + <div class="txt-right mb-20"> | |
12 | + <p class="mb-5">생산연도 <b>{{ item.prdctnYear ? $formatPrdctnDate(item.prdctnYear) : '-' }}</b></p> | |
13 | + <p>등록 <b>{{ $dotFormatDate(item.rgsde) }}</b></p> | |
14 | + </div> | |
15 | + <ul class="category"> | |
16 | + <li v-for="(ctgry, ctgryIdx) of item.ctgrys" :key="ctgryIdx" class="category1">{{ ctgry.ctgryNm }}</li> | |
17 | + </ul> | |
18 | + </div> | |
19 | + </div> | |
20 | + </li> | |
21 | + </ul> | |
22 | +</template> | |
23 | +<script> | |
24 | +export default { | |
25 | + name: "GalleryStyleComponent", | |
26 | + | |
27 | + props: { | |
28 | + typeText: { | |
29 | + type: String, | |
30 | + default: null | |
31 | + }, | |
32 | + name: { | |
33 | + type: String, | |
34 | + default: 'P' | |
35 | + }, | |
36 | + list: { | |
37 | + type: Array, | |
38 | + default: () => [], | |
39 | + }, | |
40 | + }, | |
41 | + | |
42 | + computed: { | |
43 | + page() { | |
44 | + switch (this.name) { | |
45 | + case 'P': | |
46 | + return 'PicHistoryDetail'; | |
47 | + case 'V': | |
48 | + return 'VideoHistoryDetail'; | |
49 | + case 'M': | |
50 | + return 'MediaVideoDetail'; | |
51 | + case 'N': | |
52 | + return 'NewsReleaseDetail'; | |
53 | + } | |
54 | + }, | |
55 | + }, | |
56 | + | |
57 | + methods: { | |
58 | + // 페이지 이동 | |
59 | + fnMoveTo(item) { | |
60 | + let key = null; | |
61 | + switch (this.name) { | |
62 | + case 'P': | |
63 | + case 'V': | |
64 | + key = 'dcryId'; | |
65 | + break; | |
66 | + case 'M': | |
67 | + key = 'mediaVidoId'; | |
68 | + break; | |
69 | + case 'N': | |
70 | + key = 'nesDtaId'; | |
71 | + break; | |
72 | + } | |
73 | + this.$router.push({ name: this.page, query: { id: item[key] } }); | |
74 | + } | |
75 | + }, | |
76 | +}; | |
77 | +</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/listLayout/ListStyleComponent.vue
+++ client/views/component/listLayout/ListStyleComponent.vue
... | ... | @@ -12,7 +12,7 @@ |
12 | 12 |
</div> |
13 | 13 |
<div class="date "> |
14 | 14 |
<ul> |
15 |
- <li>생산연도 <b>{{ item.prdctnYear ? item.prdctnYear : '-' }}</b></li> |
|
15 |
+ <li>생산연도 <b>{{ item.prdctnYear ? $formatPrdctnDate(item.prdctnYear) : '-' }}</b></li> |
|
16 | 16 |
<li>|</li> |
17 | 17 |
<li>등록 <b>{{ $dotFormatDate(item.rgsde) }}</b></li> |
18 | 18 |
</ul> |
--- client/views/component/modal/CategorySelectModal.vue
... | ... | @@ -1,142 +0,0 @@ |
1 | -<template> | |
2 | - <div class="modal-overlay"> | |
3 | - <div class="modal-content" @click.stop> | |
4 | - <div class="flex-sp-bw mb-20"> | |
5 | - <h2>카테고리 조회</h2> | |
6 | - <button class="closebtn" @click="$emit('toggleModal')">✕</button> | |
7 | - </div> | |
8 | - <div class="modal-search flex-center mb-20"> | |
9 | - <input type="text" placeholder="카테고리명을 입력하세요." v-model="searchReqDTO.searchText" @keyup.enter="fnChnageReqDTO"> | |
10 | - <button type="button" class="search-btn" @click="fnChnageReqDTO"> | |
11 | - <img :src="searchicon" alt=""> | |
12 | - <p>검색</p> | |
13 | - </button> | |
14 | - </div> | |
15 | - <table class="mb-10"> | |
16 | - <thead> | |
17 | - <tr> | |
18 | - <th>카테고리 항목</th> | |
19 | - <th>선택</th> | |
20 | - </tr> | |
21 | - </thead> | |
22 | - <tbody> | |
23 | - <template v-if="list.length > 0"> | |
24 | - <tr v-for="(item, idx) of list" :key="idx" :class="{ 'selected': item.isSelected }"> | |
25 | - <td>{{ item.ctgryNm }}</td> | |
26 | - <td><input type="checkbox" :value="item" v-model="selectedList" /></td> | |
27 | - </tr> | |
28 | - </template> | |
29 | - <tr v-else> | |
30 | - <td colspan="2">조건에 맞는 카테고리가 존재하지 않습니다.</td> | |
31 | - </tr> | |
32 | - </tbody> | |
33 | - </table> | |
34 | - <div class="flex-end mb-30"><button class="register-b" @click="fnAddCtgries">등록</button></div> | |
35 | - <DefaultPagination :search="searchReqDTO" @onChange="fnChangeCurrentPage" /> | |
36 | - </div> | |
37 | - </div> | |
38 | -</template> | |
39 | -<script> | |
40 | -// COMPONENT | |
41 | -import DefaultPagination from '@/views/component/listLayout/DefaultPagination.vue'; | |
42 | -// API | |
43 | -import { findAllCategoryProc } from '@/resources/api/category'; | |
44 | - | |
45 | -export default { | |
46 | - name: 'CategorySelectModal', | |
47 | - | |
48 | - components: { | |
49 | - DefaultPagination | |
50 | - }, | |
51 | - | |
52 | - props: { | |
53 | - selectedCtgries: { | |
54 | - type: Array, | |
55 | - default: () => [], | |
56 | - } | |
57 | - }, | |
58 | - | |
59 | - data() { | |
60 | - return { | |
61 | - // ICON | |
62 | - searchicon: 'client/resources/images/icon/search.png', | |
63 | - | |
64 | - // 검색 객체 | |
65 | - searchReqDTO: { | |
66 | - searchType: 'nm', | |
67 | - searchText: null, | |
68 | - useAt: 'Y', | |
69 | - selectedCtgryIds: null, | |
70 | - // 페이지네이션 | |
71 | - currentPage: 1, // 현재 페이지 | |
72 | - recordSize: 10, // 한 페이지에 표시할 데이터 개수 | |
73 | - }, | |
74 | - | |
75 | - list: [], // 카테고리 목록 | |
76 | - selectedList: [] // 선택한 카테고리 목록 | |
77 | - }; | |
78 | - }, | |
79 | - | |
80 | - created() { | |
81 | - this.fnSearch(); // 목록 조회 | |
82 | - }, | |
83 | - | |
84 | - methods: { | |
85 | - // 검색 조건이 변경된 경우 | |
86 | - fnChnageReqDTO() { | |
87 | - this.searchReqDTO.currentPage = 1; | |
88 | - this.$nextTick(() => { | |
89 | - this.fnSearch(); | |
90 | - }); | |
91 | - }, | |
92 | - | |
93 | - // 목록 조회 | |
94 | - async fnSearch() { | |
95 | - try { | |
96 | - if (this.searchReqDTO.hasOwnProperty('ctgryIds')) { | |
97 | - delete this.searchReqDTO.ctgryIds; | |
98 | - } | |
99 | - if (this.selectedCtgries.length > 0) { | |
100 | - this.searchReqDTO.selectedCtgryIds = this.selectedCtgries.map(item => item.ctgryId).join(','); | |
101 | - } | |
102 | - | |
103 | - const response = await findAllCategoryProc(this.searchReqDTO); | |
104 | - let ctgries = response.data.data.ctgry; | |
105 | - for (let item of ctgries) { | |
106 | - item.isSelected = false; | |
107 | - for (let ctgry of this.selectedCtgries) { | |
108 | - if (item.ctgryId === ctgry.ctgryId) { | |
109 | - item.isSelected = true; | |
110 | - break; | |
111 | - } | |
112 | - } | |
113 | - } | |
114 | - | |
115 | - this.list = ctgries; | |
116 | - this.searchReqDTO = response.data.data.search; | |
117 | - } catch (error) { | |
118 | - alert('조회중 오류가 발생했습니다.'); | |
119 | - | |
120 | - if (error.response) { | |
121 | - alert(error.response.data.message); | |
122 | - } | |
123 | - console.error(error.message); | |
124 | - } | |
125 | - }, | |
126 | - | |
127 | - // 카테고리 추가 | |
128 | - fnAddCtgries() { | |
129 | - this.$emit('addCtgries', this.selectedList); | |
130 | - }, | |
131 | - | |
132 | - // 페이지 이동 | |
133 | - fnChangeCurrentPage(currentPage) { | |
134 | - this.searchReqDTO.currentPage = Number(currentPage); | |
135 | - | |
136 | - this.$nextTick(() => { | |
137 | - this.fnSearch(); | |
138 | - }); | |
139 | - }, | |
140 | - } | |
141 | -}; | |
142 | -</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/player/VideoComponent.vue
+++ client/views/component/player/VideoComponent.vue
... | ... | @@ -23,7 +23,6 @@ |
23 | 23 |
<style scoped> |
24 | 24 |
.video-player { |
25 | 25 |
width: 100%; |
26 |
- max-width: 800px; |
|
27 | 26 |
margin: 0 auto; |
28 | 27 |
} |
29 | 28 |
|
--- client/views/pages/AppRouter.js
+++ client/views/pages/AppRouter.js
... | ... | @@ -10,13 +10,13 @@ |
10 | 10 |
import MyInfo from "./user/MyInfo.vue"; |
11 | 11 |
import MemberManagement from "./member/MemberManagement.vue"; |
12 | 12 |
// 기록물 - 사진 |
13 |
-import PicHistorySearch from "./bbsDcry/photo/PicHistorySearch.vue"; |
|
14 |
-import PicHistoryInsert from "./bbsDcry/photo/PicHistoryInsert.vue"; |
|
15 |
-import PicHistoryDetail from "./bbsDcry/photo/PicHistoryDetail.vue"; |
|
13 |
+import PicHistorySearch from "./bbsDcryPhoto/PicHistorySearch.vue"; |
|
14 |
+import PicHistoryInsert from "./bbsDcryPhoto/PicHistoryInsert.vue"; |
|
15 |
+import PicHistoryDetail from "./bbsDcryPhoto/PicHistoryDetail.vue"; |
|
16 | 16 |
// 기록물 - 영상 |
17 |
-import VideoHistoryInsert from "./bbsDcry/video/VideoHistoryInsert.vue"; |
|
18 |
-import VideoHistoryDetail from "./bbsDcry/video/VideoHistoryDetail.vue"; |
|
19 |
-import VideoHistorySearch from "./bbsDcry/video/VideoHistorySearch.vue"; |
|
17 |
+import VideoHistoryInsert from "./bbsDcryVideo/VideoHistoryInsert.vue"; |
|
18 |
+import VideoHistoryDetail from "./bbsDcryVideo/VideoHistoryDetail.vue"; |
|
19 |
+import VideoHistorySearch from "./bbsDcryVideo/VideoHistorySearch.vue"; |
|
20 | 20 |
// 미디어 영상 |
21 | 21 |
import MediaVideoInsert from "./bbsMediaVido/MediaVideoInsert.vue"; |
22 | 22 |
import MediaVideoDetail from "./bbsMediaVido/MediaVideoDetail.vue"; |
--- client/views/pages/bbsDcry/photo/PicHistoryDetail.vue
+++ client/views/pages/bbsDcryPhoto/PicHistoryDetail.vue
... | ... | @@ -23,32 +23,24 @@ |
23 | 23 |
</div> |
24 | 24 |
</dd> |
25 | 25 |
</dl> |
26 |
- <div> |
|
27 |
- <div class="gallery"> |
|
28 |
- <div class="main-swiper"> |
|
29 |
- <swiper :style="{ '--swiper-navigation-color': '#fff', '--swiper-pagination-color': '#fff' }" :loop="true" :spaceBetween="10" :thumbs="{ swiper: thumbsSwiper }" :modules="modules" class="mySwiper2" @slideChange="handleMainSlideChange"> |
|
30 |
- <swiper-slide v-for="(item, idx) of findResult.files" :key="idx"> |
|
31 |
- <img :src="item.filePath" :alt="item.fileNm" /> |
|
32 |
- </swiper-slide> |
|
33 |
- </swiper> |
|
34 |
- </div> |
|
35 |
- <div class="thumbnail"> |
|
36 |
- <swiper @swiper="setThumbsSwiper" :spaceBetween="20" :slidesPerView="4" :freeMode="true" :watchSlidesProgress="true" :modules="modules" :navigation="true" class="mySwiper"> |
|
37 |
- <swiper-slide v-for="(item, idx) of findResult.files" :key="idx" :class="{ 'active-thumb': activeIndex === idx }"> |
|
38 |
- <input type="checkbox" :id="'photo_' + idx" :value="item" v-model="selectedFiles" @click.stop /> |
|
39 |
- <img :src="item.filePath" :alt="item.fileNm" /> |
|
40 |
- </swiper-slide> |
|
41 |
- </swiper> |
|
42 |
- </div> |
|
26 |
+ <div class="img-view"> |
|
27 |
+ <div class="current-img-wrap"> |
|
28 |
+ <img :src="currentImg.filePath" :alt="currentImg.fileNm" /> |
|
43 | 29 |
</div> |
44 |
- <div class="btn-group"> |
|
45 |
- <button class="select-down" @click="fnDownload('selected')">선택 다운로드</button> |
|
46 |
- <button class="all-down" @click="fnDownload('all')">전체 다운로드</button> |
|
47 |
- <div v-if="loading" class="loading-overlay"> |
|
48 |
- <div class="loading-spinner"></div> |
|
30 |
+ <div class="thumb-view"> |
|
31 |
+ <div class="download-btn txt-right mb-20"> |
|
32 |
+ <button class="btn all-down" @click="fnDownload('all')">전체 다운로드</button> |
|
33 |
+ </div> |
|
34 |
+ <div class="thumbnails"> |
|
49 | 35 |
<div> |
50 |
- <p>다운로드 중입니다</p> |
|
51 |
- <p>잠시만 기다려주세요</p> |
|
36 |
+ <div v-for="(item, idx) of findResult.files" :key="idx" class="thumbnail-wrap"> |
|
37 |
+ <figure class="thumbnail" @click="onchangeImg(item)"> |
|
38 |
+ <img :src="item.filePath" :alt="item.fileNm" /> |
|
39 |
+ </figure> |
|
40 |
+ <div class="float-div"> |
|
41 |
+ <button type="button" class="btn-sm red" @click="fnDownload('selected', item)">다운로드</button> |
|
42 |
+ </div> |
|
43 |
+ </div> |
|
52 | 44 |
</div> |
53 | 45 |
</div> |
54 | 46 |
</div> |
... | ... | @@ -90,6 +82,13 @@ |
90 | 82 |
<button class="gray-line-bg " type="button" @click="fnMoveTo('list')">목록</button> |
91 | 83 |
</div> |
92 | 84 |
</div> |
85 |
+ <div v-if="loading" class="loading-overlay"> |
|
86 |
+ <div class="loading-spinner"></div> |
|
87 |
+ <div> |
|
88 |
+ <p>다운로드 중입니다</p> |
|
89 |
+ <p>잠시만 기다려주세요</p> |
|
90 |
+ </div> |
|
91 |
+ </div> |
|
93 | 92 |
</template> |
94 | 93 |
<script> |
95 | 94 |
import { ref } from 'vue'; |
... | ... | @@ -104,7 +103,7 @@ |
104 | 103 |
// import required modules |
105 | 104 |
import { FreeMode, Navigation, Thumbs } from 'swiper/modules'; |
106 | 105 |
// COMPONENT |
107 |
-import ViewerComponent from '../../../component/editor/ViewerComponent.vue'; |
|
106 |
+import ViewerComponent from '@/views/component/editor/ViewerComponent.vue'; |
|
108 | 107 |
// API |
109 | 108 |
import { findDcryProc, deleteDcryProc } from '@/resources/api/dcry'; |
110 | 109 |
import { fileDownloadProc, multiFileDownloadProc } from '@/resources/api/file'; |
... | ... | @@ -150,6 +149,11 @@ |
150 | 149 |
|
151 | 150 |
activeIndex: 0, |
152 | 151 |
|
152 |
+ currentImg: { |
|
153 |
+ fileNm: "기본이미지", |
|
154 |
+ filePath: "client/resources/images/no_img.png", |
|
155 |
+ }, |
|
156 |
+ |
|
153 | 157 |
isRegister: false, |
154 | 158 |
}; |
155 | 159 |
}, |
... | ... | @@ -167,6 +171,10 @@ |
167 | 171 |
}, |
168 | 172 |
|
169 | 173 |
methods: { |
174 |
+ onchangeImg(img) { |
|
175 |
+ this.currentImg = img; |
|
176 |
+ }, |
|
177 |
+ |
|
170 | 178 |
handleMainSlideChange(swiper) { |
171 | 179 |
this.activeIndex = swiper.realIndex; |
172 | 180 |
}, |
... | ... | @@ -181,6 +189,9 @@ |
181 | 189 |
alert('올바른 접근이 아닙니다.'); |
182 | 190 |
this.fnMoveTo('list'); // 목록으로 이동 |
183 | 191 |
} |
192 |
+ |
|
193 |
+ this.currentImg = this.findResult.files[0]; |
|
194 |
+ |
|
184 | 195 |
this.isRegister = this.$registerChk(this.findResult.register); |
185 | 196 |
} catch (error) { |
186 | 197 |
alert('조회중 오류가 발생했습니다.'); |
... | ... | @@ -194,26 +205,16 @@ |
194 | 205 |
}, |
195 | 206 |
|
196 | 207 |
// 파일 다운로드 |
197 |
- async fnDownload(type) { |
|
198 |
- // Set loading to true when download starts |
|
208 |
+ async fnDownload(type, file) { |
|
199 | 209 |
this.loading = true; |
200 |
- |
|
201 |
- // 유효성 검사 |
|
202 |
- if (type === 'selected') { |
|
203 |
- if (this.selectedFiles.length === 0) { |
|
204 |
- alert("파일을 1개 이상 선택하거나 전체 다운로드를 클릭해주세요."); |
|
205 |
- this.loading = false; // Hide loading if validation fails |
|
206 |
- return; |
|
207 |
- } |
|
208 |
- } |
|
209 | 210 |
|
210 | 211 |
let url = null; |
211 | 212 |
let link = null; |
212 | 213 |
|
213 | 214 |
try { |
214 |
- let fileList; |
|
215 |
+ let fileList = []; |
|
215 | 216 |
if (type === 'selected') { |
216 |
- fileList = this.selectedFiles; |
|
217 |
+ fileList.push(file); |
|
217 | 218 |
} else if (type === 'all') { |
218 | 219 |
fileList = this.findResult.files; |
219 | 220 |
} |
--- client/views/pages/bbsDcry/photo/PicHistoryInsert.vue
+++ client/views/pages/bbsDcryPhoto/PicHistoryInsert.vue
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 |
<div class="hr"></div> |
23 | 23 |
<dd> |
24 | 24 |
<label for="prdctnYear">생산연도</label> |
25 |
- <input type="text" id="prdctnYear" placeholder="생산연도를 입력하세요" v-model="requestDTO.prdctnYear" pattern="[0-9]{4}" maxlength="4" @input="onlyNumberInput"> |
|
25 |
+ <prdctn-select-component v-model="dateForm" :value="requestDTO.prdctnYear" @formatted-date="requestDTO.prdctnYear = $event" /> |
|
26 | 26 |
</dd> |
27 | 27 |
<div class="hr"></div> |
28 | 28 |
<dd> |
... | ... | @@ -37,13 +37,9 @@ |
37 | 37 |
</div> |
38 | 38 |
</dd> |
39 | 39 |
<div class="hr"></div> |
40 |
- <dd> |
|
41 |
- <label for="category" class="flex align-center"> |
|
42 |
- <p>카테고리</p><button type="button" class="category-add" @click="fnToggleModal">추가하기</button> |
|
43 |
- </label> |
|
44 |
- <ul class="category"> |
|
45 |
- <li v-for="(item, idx) of selectedCtgries" :key="idx">{{ item.ctgryNm }} <button type="button" class="cancel" @click="fnDelCtgry(item.ctgryId)"><b>✕</b></button></li> |
|
46 |
- </ul> |
|
40 |
+ <dd class="category-dd"> |
|
41 |
+ <label for="category" class="flex align-center">카테고리</label> |
|
42 |
+ <category-list-component v-model="selectedCtgries" /> |
|
47 | 43 |
</dd> |
48 | 44 |
<div class="hr"></div> |
49 | 45 |
<dd> |
... | ... | @@ -112,7 +108,6 @@ |
112 | 108 |
</button> |
113 | 109 |
</div> |
114 | 110 |
</div> |
115 |
- <CategorySelectModal v-if="isModalOpen" :selectedCtgries="selectedCtgries" @toggleModal="fnToggleModal" @addCtgries="fnAddCtgries" /> |
|
116 | 111 |
<div v-if="loading" class="loading-overlay"> |
117 | 112 |
<div class="loading-spinner"></div> |
118 | 113 |
<div> |
... | ... | @@ -124,8 +119,9 @@ |
124 | 119 |
<script> |
125 | 120 |
import { DoubleLeftOutlined, LeftOutlined, RightOutlined, DoubleRightOutlined } from '@ant-design/icons-vue'; |
126 | 121 |
// COMPONENT |
127 |
-import EditorComponent from '../../../component/editor/EditorComponent.vue'; |
|
128 |
-import CategorySelectModal from '../../../component/modal/CategorySelectModal.vue'; |
|
122 |
+import PrdctnSelectComponent from '@/views/component/PrdctnSelectComponent.vue'; |
|
123 |
+import EditorComponent from '@/views/component/editor/EditorComponent.vue'; |
|
124 |
+import CategoryListComponent from '@/views/component/CategoryListComponent.vue'; |
|
129 | 125 |
// API |
130 | 126 |
import { findDcryProc, saveDcry, updateDcry } from '@/resources/api/dcry'; |
131 | 127 |
|
... | ... | @@ -135,8 +131,11 @@ |
135 | 131 |
LeftOutlined, |
136 | 132 |
RightOutlined, |
137 | 133 |
DoubleRightOutlined, |
134 |
+ PrdctnSelectComponent, |
|
135 |
+ // COMPONENT |
|
136 |
+ PrdctnSelectComponent, |
|
138 | 137 |
EditorComponent, |
139 |
- CategorySelectModal, |
|
138 |
+ CategoryListComponent, |
|
140 | 139 |
}, |
141 | 140 |
|
142 | 141 |
data() { |
... | ... | @@ -150,7 +149,6 @@ |
150 | 149 |
|
151 | 150 |
pageId: null, |
152 | 151 |
|
153 |
- isModalOpen: false, |
|
154 | 152 |
isDragging: false, |
155 | 153 |
|
156 | 154 |
fileNames: [], |
... | ... | @@ -167,6 +165,13 @@ |
167 | 165 |
fileId: null, |
168 | 166 |
files: [], |
169 | 167 |
ctgryIds: [], |
168 |
+ }, |
|
169 |
+ |
|
170 |
+ // 날짜 객체 (자식 컴포넌트와 동기화) |
|
171 |
+ dateForm: { |
|
172 |
+ year: new Date().getFullYear(), |
|
173 |
+ month: '', |
|
174 |
+ day: '' |
|
170 | 175 |
}, |
171 | 176 |
|
172 | 177 |
multipartFiles: [], |
... | ... | @@ -190,7 +195,6 @@ |
190 | 195 |
async fnFindDcry() { |
191 | 196 |
try { |
192 | 197 |
const response = await findDcryProc(this.pageId); |
193 |
- |
|
194 | 198 |
if (response.data.data.dcry.ty !== 'P') { |
195 | 199 |
alert('올바른 접근이 아닙니다.'); |
196 | 200 |
this.fnMoveTo('list'); // 목록으로 이동 |
... | ... | @@ -226,23 +230,6 @@ |
226 | 230 |
if (thumbFile) { |
227 | 231 |
this.selectedThumb = thumbFile.fileNm; |
228 | 232 |
} |
229 |
- }, |
|
230 |
- |
|
231 |
- // 카테고리 모달 열기/닫기 |
|
232 |
- fnToggleModal() { |
|
233 |
- this.isModalOpen = !this.isModalOpen; |
|
234 |
- }, |
|
235 |
- |
|
236 |
- // 카테고리 등록 |
|
237 |
- fnAddCtgries(selectedCtgries) { |
|
238 |
- this.selectedCtgries = [...this.selectedCtgries, ...selectedCtgries]; |
|
239 |
- |
|
240 |
- this.fnToggleModal(); // 카테고리 모달 닫기 |
|
241 |
- }, |
|
242 |
- |
|
243 |
- // 카테고리 삭제 |
|
244 |
- fnDelCtgry(id) { |
|
245 |
- this.selectedCtgries = this.selectedCtgries.filter(item => item.ctgryId !== id); |
|
246 | 233 |
}, |
247 | 234 |
|
248 | 235 |
// 드래그 앤 드롭 이벤트 핸들러 |
... | ... | @@ -371,16 +358,14 @@ |
371 | 358 |
alert("제목을 입력해 주세요."); |
372 | 359 |
return; |
373 | 360 |
} |
361 |
+ |
|
374 | 362 |
if (!this.$isEmpty(this.requestDTO.prdctnYear)) { |
375 | 363 |
if (!/^\d+$/.test(this.requestDTO.prdctnYear)) { |
376 | 364 |
alert("생산연도는 숫자만 입력 가능합니다."); |
377 | 365 |
return; |
378 | 366 |
} |
379 |
- if (this.requestDTO.prdctnYear.length !== 4) { |
|
380 |
- alert("생산연도는 4자리로 입력해주세요."); |
|
381 |
- return; |
|
382 |
- } |
|
383 | 367 |
} |
368 |
+ |
|
384 | 369 |
if (this.$isEmpty(this.selectedThumb)) { |
385 | 370 |
alert("썸네일로 사용할 이미지를 선택해주세요."); |
386 | 371 |
return; |
... | ... | @@ -396,6 +381,7 @@ |
396 | 381 |
} |
397 | 382 |
|
398 | 383 |
this.loading = true; // 로딩 시작 |
384 |
+ |
|
399 | 385 |
try { |
400 | 386 |
const formData = new FormData(); |
401 | 387 |
|
... | ... | @@ -491,11 +477,6 @@ |
491 | 477 |
this.$router.push(routes['list']); |
492 | 478 |
} |
493 | 479 |
}, |
494 |
- |
|
495 |
- // 생산연도 입력 제한 |
|
496 |
- onlyNumberInput() { |
|
497 |
- this.requestDTO.prdctnYear = this.requestDTO.prdctnYear.replace(/[^0-9]/g, ''); |
|
498 |
- } |
|
499 | 480 |
} |
500 | 481 |
}; |
501 | 482 |
</script> |
--- client/views/pages/bbsDcry/photo/PicHistorySearch.vue
+++ client/views/pages/bbsDcryPhoto/PicHistorySearch.vue
... | ... | @@ -40,7 +40,7 @@ |
40 | 40 |
</div> |
41 | 41 |
<div class="tab-content"> |
42 | 42 |
<div v-if="searchResult.length > 0"> |
43 |
- <CardStyleComponent v-if="selectedTabId === 'CARD'" :name="'P'" :list="searchResult" /> |
|
43 |
+ <gallery-style-component v-if="selectedTabId === 'CARD'" :name="'P'" :list="searchResult" /> |
|
44 | 44 |
<ListStyleComponent v-if="selectedTabId === 'LIST'" :name="'P'" :list="searchResult" /> |
45 | 45 |
</div> |
46 | 46 |
<div v-else class="no-results"> |
... | ... | @@ -65,9 +65,9 @@ |
65 | 65 |
<script> |
66 | 66 |
// COMPONENT |
67 | 67 |
import SearchFormComponent from '@/views/component/SearchFormComponent.vue'; |
68 |
-import CardStyleComponent from '@/views/component/listLayout/CardStyleComponent.vue'; |
|
68 |
+import GalleryStyleComponent from '@/views/component/listLayout/GalleryStyleComponent.vue'; |
|
69 | 69 |
import ListStyleComponent from '@/views/component/listLayout/ListStyleComponent.vue'; |
70 |
-import DefaultPagination from '@/views/component/listLayout/DefaultPagination.vue'; |
|
70 |
+import DefaultPagination from '@/views/component/DefaultPagination.vue'; |
|
71 | 71 |
// API |
72 | 72 |
import { findDcrysProc } from "@/resources/api/dcry"; |
73 | 73 |
|
... | ... | @@ -75,7 +75,7 @@ |
75 | 75 |
components: { |
76 | 76 |
SearchFormComponent, |
77 | 77 |
DefaultPagination, |
78 |
- CardStyleComponent, |
|
78 |
+ GalleryStyleComponent, |
|
79 | 79 |
ListStyleComponent, |
80 | 80 |
}, |
81 | 81 |
|
--- client/views/pages/bbsDcry/video/VideoHistoryDetail.vue
+++ client/views/pages/bbsDcryVideo/VideoHistoryDetail.vue
... | ... | @@ -71,8 +71,8 @@ |
71 | 71 |
</template> |
72 | 72 |
<script> |
73 | 73 |
// COMPONENT |
74 |
-import VideoComponent from '../../../component/player/VideoComponent.vue'; |
|
75 |
-import ViewerComponent from '../../../component/editor/ViewerComponent.vue'; |
|
74 |
+import VideoComponent from '@/views/component/player/VideoComponent.vue'; |
|
75 |
+import ViewerComponent from '@/views/component/editor/ViewerComponent.vue'; |
|
76 | 76 |
// API |
77 | 77 |
import { findDcryProc, deleteDcryProc } from '@/resources/api/dcry'; |
78 | 78 |
import { fileDownloadProc } from '@/resources/api/file'; |
--- client/views/pages/bbsDcry/video/VideoHistoryInsert.vue
+++ client/views/pages/bbsDcryVideo/VideoHistoryInsert.vue
... | ... | @@ -21,7 +21,7 @@ |
21 | 21 |
<div class="hr"></div> |
22 | 22 |
<dd> |
23 | 23 |
<label for="prdctnYear">생산연도</label> |
24 |
- <input type="text" id="prdctnYear" placeholder="생산연도를 입력하세요" v-model="requestDTO.prdctnYear" pattern="[0-9]{4}" maxlength="4" @input="onlyNumberInput"> |
|
24 |
+ <prdctn-select-component v-model="dateForm" :value="requestDTO.prdctnYear" @formatted-date="requestDTO.prdctnYear = $event" /> |
|
25 | 25 |
</dd> |
26 | 26 |
<div class="hr"></div> |
27 | 27 |
<dd> |
... | ... | @@ -36,13 +36,9 @@ |
36 | 36 |
</div> |
37 | 37 |
</dd> |
38 | 38 |
<div class="hr"></div> |
39 |
- <dd> |
|
40 |
- <label for="category" class="flex align-center"> |
|
41 |
- <p>카테고리</p><button type="button" class="category-add" @click="fnToggleModal">추가하기</button> |
|
42 |
- </label> |
|
43 |
- <ul class="category"> |
|
44 |
- <li v-for="(item, idx) of selectedCtgries" :key="idx">{{ item.ctgryNm }} <button type="button" class="cancel" @click="fnDelCtgry(item.ctgryId)"><b>✕</b></button></li> |
|
45 |
- </ul> |
|
39 |
+ <dd class="category-dd"> |
|
40 |
+ <label for="category" class="flex align-center">카테고리</label> |
|
41 |
+ <category-list-component v-model="selectedCtgries" /> |
|
46 | 42 |
</dd> |
47 | 43 |
<div class="hr"></div> |
48 | 44 |
<dd> |
... | ... | @@ -53,7 +49,7 @@ |
53 | 49 |
<div class="invalid-feedback"><img :src="erroricon" alt=""><span>첨부파일은 건당 최대 10GB를 초과할 수 없습니다.</span></div> |
54 | 50 |
</li> |
55 | 51 |
<li class="file-insert"> |
56 |
- <input type="file" id="fileInput" ref="fileInput" class="file-input" accept="video/mp4,video/quicktime,video/x-msvideo,video/x-ms-wmv,video/webm,video/x-matroska" @change="handleFileSelect"> |
|
52 |
+ <input type="file" id="fileInput" ref="fileInput" class="file-input" accept="video/mp4,video/quicktime,video/x-msvideo,video/x-ms-wmv,video/webm,video/x-matroska,application/mxf" @change="handleFileSelect"> |
|
57 | 53 |
<label for="fileInput" class="file-label mb-20" @dragover.prevent="handleDragOver" @dragleave.prevent="handleDragLeave" @drop.prevent="handleDrop" :class="{ 'drag-over': isDragging }"> |
58 | 54 |
<div class="flex-center align-center"> |
59 | 55 |
<img :src="fileicon" alt=""> |
... | ... | @@ -100,13 +96,13 @@ |
100 | 96 |
<p>잠시만 기다려주세요</p> |
101 | 97 |
</div> |
102 | 98 |
</div> |
103 |
- <CategorySelectModal v-if="isModalOpen" :selectedCtgries="selectedCtgries" @toggleModal="fnToggleModal" @addCtgries="fnAddCtgries" /> |
|
104 | 99 |
</template> |
105 | 100 |
<script> |
106 | 101 |
import { DoubleLeftOutlined, LeftOutlined, RightOutlined, DoubleRightOutlined } from '@ant-design/icons-vue'; |
107 | 102 |
// COMPONENT |
108 |
-import EditorComponent from '../../../component/editor/EditorComponent.vue'; |
|
109 |
-import CategorySelectModal from '../../../component/modal/CategorySelectModal.vue'; |
|
103 |
+import PrdctnSelectComponent from '@/views/component/PrdctnSelectComponent.vue'; |
|
104 |
+import EditorComponent from '@/views/component/editor/EditorComponent.vue'; |
|
105 |
+import CategoryListComponent from '@/views/component/CategoryListComponent.vue'; |
|
110 | 106 |
// API |
111 | 107 |
import { findDcryProc, saveDcry, updateDcry } from '@/resources/api/dcry'; |
112 | 108 |
|
... | ... | @@ -116,8 +112,10 @@ |
116 | 112 |
LeftOutlined, |
117 | 113 |
RightOutlined, |
118 | 114 |
DoubleRightOutlined, |
115 |
+ // COMPONENT |
|
116 |
+ PrdctnSelectComponent, |
|
119 | 117 |
EditorComponent, |
120 |
- CategorySelectModal, |
|
118 |
+ CategoryListComponent, |
|
121 | 119 |
}, |
122 | 120 |
|
123 | 121 |
data() { |
... | ... | @@ -131,7 +129,6 @@ |
131 | 129 |
|
132 | 130 |
pageId: null, |
133 | 131 |
|
134 |
- isModalOpen: false, |
|
135 | 132 |
isDragging: false, |
136 | 133 |
|
137 | 134 |
fileNames: [], |
... | ... | @@ -148,6 +145,13 @@ |
148 | 145 |
fileId: null, |
149 | 146 |
files: [], |
150 | 147 |
ctgryIds: [], |
148 |
+ }, |
|
149 |
+ |
|
150 |
+ // 날짜 객체 (자식 컴포넌트와 동기화) |
|
151 |
+ dateForm: { |
|
152 |
+ year: new Date().getFullYear(), |
|
153 |
+ month: '', |
|
154 |
+ day: '' |
|
151 | 155 |
}, |
152 | 156 |
|
153 | 157 |
multipartFiles: [], |
... | ... | @@ -201,23 +205,6 @@ |
201 | 205 |
this.selectedCtgries = dcry.ctgrys.length > 0 ? dcry.ctgrys : []; |
202 | 206 |
}, |
203 | 207 |
|
204 |
- // 카테고리 모달 열기/닫기 |
|
205 |
- fnToggleModal() { |
|
206 |
- this.isModalOpen = !this.isModalOpen; |
|
207 |
- }, |
|
208 |
- |
|
209 |
- // 카테고리 등록 |
|
210 |
- fnAddCtgries(selectedCtgries) { |
|
211 |
- this.selectedCtgries = [...this.selectedCtgries, ...selectedCtgries]; |
|
212 |
- |
|
213 |
- this.fnToggleModal(); // 카테고리 모달 닫기 |
|
214 |
- }, |
|
215 |
- |
|
216 |
- // 카테고리 삭제 |
|
217 |
- fnDelCtgry(id) { |
|
218 |
- this.selectedCtgries = this.selectedCtgries.filter(item => item.ctgryId !== id); |
|
219 |
- }, |
|
220 |
- |
|
221 | 208 |
// 드래그 앤 드롭 이벤트 핸들러 |
222 | 209 |
handleDragOver(event) { |
223 | 210 |
this.isDragging = true; |
... | ... | @@ -242,7 +229,7 @@ |
242 | 229 |
|
243 | 230 |
// 파일 업로드 처리 함수 |
244 | 231 |
processFiles(files) { |
245 |
- const allowedTypes = ['mp4', 'mov', 'avi', 'wmv', 'mkv', 'webm']; // 영상 파일만 허용 |
|
232 |
+ const allowedTypes = ['mp4', 'mov', 'avi', 'wmv', 'mkv', 'webm', 'mxf']; // 'mxf' 추가 |
|
246 | 233 |
const maxSize = 10 * 1024 * 1024 * 1024; // 10GB |
247 | 234 |
|
248 | 235 |
// 유효성 검사 |
... | ... | @@ -257,7 +244,7 @@ |
257 | 244 |
|
258 | 245 |
// 파일 타입 검증 |
259 | 246 |
if (!allowedTypes.includes(fileType)) { |
260 |
- alert(`${file.name} 파일은 허용되지 않는 형식입니다. 영상 파일(mp4, mov, avi, wmv, mkv, webm)만 업로드 가능합니다.`); |
|
247 |
+ alert(`${file.name} 파일은 허용되지 않는 형식입니다. 영상 파일(mp4, mov, avi, wmv, mkv, webm, mxf)만 업로드 가능합니다.`); |
|
261 | 248 |
this.resetFileInput(); // input 파일 목록 비움 |
262 | 249 |
return; |
263 | 250 |
} |
... | ... | @@ -299,18 +286,16 @@ |
299 | 286 |
// 공백제거 |
300 | 287 |
this.requestDTO.sj = this.$processTitle(this.requestDTO.sj); |
301 | 288 |
this.requestDTO.adres = this.$processTitle(this.requestDTO.adres); |
289 |
+ |
|
302 | 290 |
// 유효성 검사 |
303 | 291 |
if (this.$isEmpty(this.requestDTO.sj)) { |
304 | 292 |
alert("제목을 입력해 주세요."); |
305 | 293 |
return; |
306 | 294 |
} |
295 |
+ |
|
307 | 296 |
if (!this.$isEmpty(this.requestDTO.prdctnYear)) { |
308 | 297 |
if (!/^\d+$/.test(this.requestDTO.prdctnYear)) { |
309 | 298 |
alert("생산연도는 숫자만 입력 가능합니다."); |
310 |
- return; |
|
311 |
- } |
|
312 |
- if (this.requestDTO.prdctnYear.length !== 4) { |
|
313 |
- alert("생산연도는 4자리로 입력해주세요."); |
|
314 | 299 |
return; |
315 | 300 |
} |
316 | 301 |
} |
... | ... | @@ -325,6 +310,7 @@ |
325 | 310 |
} |
326 | 311 |
|
327 | 312 |
this.loading = true; // 로딩 시작 |
313 |
+ |
|
328 | 314 |
try { |
329 | 315 |
const formData = new FormData(); |
330 | 316 |
|
... | ... | @@ -415,11 +401,6 @@ |
415 | 401 |
this.$router.push(routes['list']); |
416 | 402 |
} |
417 | 403 |
}, |
418 |
- |
|
419 |
- // 생산연도 입력 제한 |
|
420 |
- onlyNumberInput() { |
|
421 |
- this.requestDTO.prdctnYear = this.requestDTO.prdctnYear.replace(/[^0-9]/g, ''); |
|
422 |
- } |
|
423 | 404 |
} |
424 | 405 |
}; |
425 | 406 |
</script> |
--- client/views/pages/bbsDcry/video/VideoHistorySearch.vue
+++ client/views/pages/bbsDcryVideo/VideoHistorySearch.vue
... | ... | @@ -67,7 +67,7 @@ |
67 | 67 |
import SearchFormComponent from '@/views/component/SearchFormComponent.vue'; |
68 | 68 |
import CardStyleComponent from '@/views/component/listLayout/CardStyleComponent.vue'; |
69 | 69 |
import ListStyleComponent from '@/views/component/listLayout/ListStyleComponent.vue'; |
70 |
-import DefaultPagination from '@/views/component/listLayout/DefaultPagination.vue'; |
|
70 |
+import DefaultPagination from '@/views/component/DefaultPagination.vue'; |
|
71 | 71 |
// API |
72 | 72 |
import { findDcrysProc } from "@/resources/api/dcry"; |
73 | 73 |
|
--- client/views/pages/bbsMediaVido/MediaVideoDetail.vue
+++ client/views/pages/bbsMediaVido/MediaVideoDetail.vue
... | ... | @@ -65,8 +65,8 @@ |
65 | 65 |
</template> |
66 | 66 |
<script> |
67 | 67 |
// COMPONENT |
68 |
-import YoutubeComponent from '../../component/player/YoutubeComponent.vue'; |
|
69 |
-import ViewerComponent from '../../component/editor/ViewerComponent.vue'; |
|
68 |
+import YoutubeComponent from '@/views/component/player/YoutubeComponent.vue'; |
|
69 |
+import ViewerComponent from '@/views/component/editor/ViewerComponent.vue'; |
|
70 | 70 |
// API |
71 | 71 |
import { findMediaVidoProc, deleteMediaVidoProc } from '@/resources/api/mediaVido'; |
72 | 72 |
import { fileDownloadProc } from '@/resources/api/file'; |
--- client/views/pages/bbsMediaVido/MediaVideoInsert.vue
+++ client/views/pages/bbsMediaVido/MediaVideoInsert.vue
... | ... | @@ -21,13 +21,13 @@ |
21 | 21 |
<div class="hr"></div> |
22 | 22 |
<dd> |
23 | 23 |
<label for="prdctnYear">생산연도</label> |
24 |
- <input type="text" id="prdctnYear" placeholder="생산연도를 입력하세요" v-model="requestDTO.prdctnYear" pattern="[0-9]{4}" maxlength="4" @input="onlyNumberInput"> |
|
24 |
+ <prdctn-select-component v-model="dateForm" :value="requestDTO.prdctnYear" @formatted-date="requestDTO.prdctnYear = $event" /> |
|
25 | 25 |
</dd> |
26 | 26 |
<div class="hr"></div> |
27 | 27 |
<dd> |
28 | 28 |
<label for="link">주소</label> |
29 | 29 |
<input type="text" id="link" class="invalid-url" placeholder="유튜브 URL 주소를 입력하세요" v-model="requestDTO.link"> |
30 |
- <div class="invalid-feedback border"> |
|
30 |
+ <div class="invalid-feedback border" v-if="!isValidYoutubeURL && requestDTO.link"> |
|
31 | 31 |
<img :src="erroricon" alt=""> |
32 | 32 |
<span>유튜브 URL만 입력 가능합니다.</span> |
33 | 33 |
</div> |
... | ... | @@ -40,13 +40,9 @@ |
40 | 40 |
</div> |
41 | 41 |
</dd> |
42 | 42 |
<div class="hr"></div> |
43 |
- <dd> |
|
44 |
- <label for="category" class="flex align-center"> |
|
45 |
- <p>카테고리</p><button type="button" class="category-add" @click="fnToggleModal">추가하기</button> |
|
46 |
- </label> |
|
47 |
- <ul class="category"> |
|
48 |
- <li v-for="(item, idx) of selectedCtgries" :key="idx">{{ item.ctgryNm }} <button type="button" class="cancel" @click="fnDelCtgry(item.ctgryId)"><b>✕</b></button></li> |
|
49 |
- </ul> |
|
43 |
+ <dd class="category-dd"> |
|
44 |
+ <label for="category" class="flex align-center">카테고리</label> |
|
45 |
+ <category-list-component v-model="selectedCtgries" /> |
|
50 | 46 |
</dd> |
51 | 47 |
</dl> |
52 | 48 |
</form> |
... | ... | @@ -58,13 +54,13 @@ |
58 | 54 |
</button> |
59 | 55 |
</div> |
60 | 56 |
</div> |
61 |
- <CategorySelectModal v-if="isModalOpen" :selectedCtgries="selectedCtgries" @toggleModal="fnToggleModal" @addCtgries="fnAddCtgries" /> |
|
62 | 57 |
</template> |
63 | 58 |
<script> |
64 | 59 |
import { DoubleLeftOutlined, LeftOutlined, RightOutlined, DoubleRightOutlined } from '@ant-design/icons-vue'; |
65 | 60 |
// COMPONENT |
66 |
-import EditorComponent from '../../component/editor/EditorComponent.vue'; |
|
67 |
-import CategorySelectModal from '../../component/modal/CategorySelectModal.vue'; |
|
61 |
+import PrdctnSelectComponent from '@/views/component/PrdctnSelectComponent.vue'; |
|
62 |
+import EditorComponent from '@/views/component/editor/EditorComponent.vue'; |
|
63 |
+import CategoryListComponent from '@/views/component/CategoryListComponent.vue'; |
|
68 | 64 |
// API |
69 | 65 |
import { findMediaVidoProc, saveMediaVidoProc, updateMediaVidoDcry } from '@/resources/api/mediaVido'; |
70 | 66 |
|
... | ... | @@ -74,8 +70,10 @@ |
74 | 70 |
LeftOutlined, |
75 | 71 |
RightOutlined, |
76 | 72 |
DoubleRightOutlined, |
73 |
+ // COMPONENT |
|
74 |
+ PrdctnSelectComponent, |
|
77 | 75 |
EditorComponent, |
78 |
- CategorySelectModal, |
|
76 |
+ CategoryListComponent, |
|
79 | 77 |
}, |
80 | 78 |
|
81 | 79 |
data() { |
... | ... | @@ -87,8 +85,6 @@ |
87 | 85 |
searchicon: 'client/resources/images/icon/search.png', |
88 | 86 |
|
89 | 87 |
pageId: null, |
90 |
- |
|
91 |
- isModalOpen: false, |
|
92 | 88 |
isDragging: false, |
93 | 89 |
|
94 | 90 |
// 등록/수정 요청 객체 |
... | ... | @@ -102,9 +98,25 @@ |
102 | 98 |
ctgryIds: [], // 카테고리 정보 |
103 | 99 |
}, |
104 | 100 |
|
101 |
+ // 날짜 객체 (자식 컴포넌트와 동기화) |
|
102 |
+ dateForm: { |
|
103 |
+ year: new Date().getFullYear(), |
|
104 |
+ month: '', |
|
105 |
+ day: '' |
|
106 |
+ }, |
|
107 |
+ |
|
105 | 108 |
isValidYoutubeURL: true, |
106 | 109 |
selectedCtgries: [], // 카테고리 목록 |
107 | 110 |
}; |
111 |
+ }, |
|
112 |
+ |
|
113 |
+ computed: { |
|
114 |
+ // URL 유효성 검사 |
|
115 |
+ isValidYoutubeURL() { |
|
116 |
+ if (!this.requestDTO.link) return true; |
|
117 |
+ const youtubeRegex = /^(https?:\/\/)?(www\.)?(youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/shorts\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]{11})(\S*)?$/; |
|
118 |
+ return youtubeRegex.test(this.requestDTO.link); |
|
119 |
+ } |
|
108 | 120 |
}, |
109 | 121 |
|
110 | 122 |
created() { |
... | ... | @@ -140,48 +152,27 @@ |
140 | 152 |
this.selectedCtgries = mediaVido.ctgrys.length > 0 ? mediaVido.ctgrys : []; |
141 | 153 |
}, |
142 | 154 |
|
143 |
- // 카테고리 모달 열기/닫기 |
|
144 |
- fnToggleModal() { |
|
145 |
- this.isModalOpen = !this.isModalOpen; |
|
146 |
- }, |
|
147 |
- |
|
148 |
- // 카테고리 등록 |
|
149 |
- fnAddCtgries(selectedCtgries) { |
|
150 |
- this.selectedCtgries = [...this.selectedCtgries, ...selectedCtgries]; |
|
151 |
- |
|
152 |
- this.fnToggleModal(); // 카테고리 모달 닫기 |
|
153 |
- }, |
|
154 |
- |
|
155 |
- // 카테고리 삭제 |
|
156 |
- fnDelCtgry(id) { |
|
157 |
- this.selectedCtgries = this.selectedCtgries.filter(item => item.ctgryId !== id); |
|
158 |
- }, |
|
159 |
- |
|
160 | 155 |
// 등록 |
161 | 156 |
async submitForm() { |
162 | 157 |
// 공백제거 |
163 | 158 |
this.requestDTO.sj = this.$processTitle(this.requestDTO.sj); |
159 |
+ |
|
164 | 160 |
// 유효성 검사 |
165 | 161 |
if (this.$isEmpty(this.requestDTO.sj)) { |
166 | 162 |
alert("제목을 입력해 주세요."); |
167 | 163 |
return; |
168 | 164 |
} |
165 |
+ |
|
169 | 166 |
if (!this.$isEmpty(this.requestDTO.prdctnYear)) { |
170 | 167 |
if (!/^\d+$/.test(this.requestDTO.prdctnYear)) { |
171 | 168 |
alert("생산연도는 숫자만 입력 가능합니다."); |
172 | 169 |
return; |
173 | 170 |
} |
174 |
- if (this.requestDTO.prdctnYear.length !== 4) { |
|
175 |
- alert("생산연도는 4자리로 입력해주세요."); |
|
176 |
- return; |
|
177 |
- } |
|
178 | 171 |
} |
179 |
- if (!this.$isEmpty(this.requestDTO.link)) { |
|
180 |
- const youtubeRegex = /^(https?:\/\/)?(www\.)?(youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/shorts\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]{11})(\S*)?$/; |
|
181 |
- if (!youtubeRegex.test(this.requestDTO.link)) { |
|
182 |
- alert("주소는 유튜브 URL만 입력 가능합니다."); |
|
183 |
- return; |
|
184 |
- } |
|
172 |
+ |
|
173 |
+ if (!this.$isEmpty(this.requestDTO.link) && !this.isValidYoutubeURL) { |
|
174 |
+ alert("주소는 유튜브 URL만 입력 가능합니다."); |
|
175 |
+ return; |
|
185 | 176 |
} |
186 | 177 |
|
187 | 178 |
try { |
... | ... | @@ -193,7 +184,10 @@ |
193 | 184 |
this.requestDTO.ctgryIds = this.selectedCtgries.map(ctgry => ctgry.ctgryId); |
194 | 185 |
|
195 | 186 |
// API 통신 |
196 |
- const response = this.$isEmpty(this.pageId) ? await saveMediaVidoProc(this.requestDTO) : await updateMediaVidoDcry(this.requestDTO); |
|
187 |
+ const response = this.$isEmpty(this.pageId) |
|
188 |
+ ? await saveMediaVidoProc(this.requestDTO) |
|
189 |
+ : await updateMediaVidoDcry(this.requestDTO); |
|
190 |
+ |
|
197 | 191 |
let id = response.data.data.mediaVidoId; |
198 | 192 |
alert(this.$isEmpty(this.pageId) ? "등록되었습니다." : "수정되었습니다."); |
199 | 193 |
|
... | ... | @@ -225,11 +219,6 @@ |
225 | 219 |
alert("올바르지 않은 경로를 요청하여 목록으로 이동합니다."); |
226 | 220 |
this.$router.push(routes['list']); |
227 | 221 |
} |
228 |
- }, |
|
229 |
- |
|
230 |
- // 생산연도 입력 제한 |
|
231 |
- onlyNumberInput() { |
|
232 |
- this.requestDTO.prdctnYear = this.requestDTO.prdctnYear.replace(/[^0-9]/g, ''); |
|
233 | 222 |
}, |
234 | 223 |
} |
235 | 224 |
}; |
--- client/views/pages/bbsMediaVido/MediaVideoSearch.vue
+++ client/views/pages/bbsMediaVido/MediaVideoSearch.vue
... | ... | @@ -66,7 +66,7 @@ |
66 | 66 |
import SearchFormComponent from '@/views/component/SearchFormComponent.vue'; |
67 | 67 |
import CardStyleComponent from '@/views/component/listLayout/CardStyleComponent.vue'; |
68 | 68 |
import ListStyleComponent from '@/views/component/listLayout/ListStyleComponent.vue'; |
69 |
-import DefaultPagination from '@/views/component/listLayout/DefaultPagination.vue'; |
|
69 |
+import DefaultPagination from '@/views/component/DefaultPagination.vue'; |
|
70 | 70 |
// API |
71 | 71 |
import { findAllMediaVidosProc } from "@/resources/api/mediaVido"; |
72 | 72 |
|
--- client/views/pages/bbsNesDta/NewsReleaseInsert.vue
+++ client/views/pages/bbsNesDta/NewsReleaseInsert.vue
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 |
<div class="hr"></div> |
23 | 23 |
<dd> |
24 | 24 |
<label for="prdctnYear">생산연도</label> |
25 |
- <input type="text" id="prdctnYear" placeholder="생산연도를 입력하세요" v-model="requestDTO.prdctnYear" pattern="[0-9]{4}" maxlength="4" @input="onlyNumberInput"> |
|
25 |
+ <prdctn-select-component v-model="dateForm" :value="requestDTO.prdctnYear" @formatted-date="requestDTO.prdctnYear = $event" /> |
|
26 | 26 |
</dd> |
27 | 27 |
<div class="hr"></div> |
28 | 28 |
<dd> |
... | ... | @@ -37,13 +37,9 @@ |
37 | 37 |
</div> |
38 | 38 |
</dd> |
39 | 39 |
<div class="hr"></div> |
40 |
- <dd> |
|
41 |
- <label for="category" class="flex align-center"> |
|
42 |
- <p>카테고리</p><button type="button" class="category-add" @click="fnToggleModal">추가하기</button> |
|
43 |
- </label> |
|
44 |
- <ul class="category"> |
|
45 |
- <li v-for="(item, idx) of selectedCtgries" :key="idx">{{ item.ctgryNm }} <button type="button" class="cancel" @click="fnDelCtgry(item.ctgryId)"><b>✕</b></button></li> |
|
46 |
- </ul> |
|
40 |
+ <dd class="category-dd"> |
|
41 |
+ <label for="category" class="flex align-center">카테고리</label> |
|
42 |
+ <category-list-component v-model="selectedCtgries" /> |
|
47 | 43 |
</dd> |
48 | 44 |
<div class="hr"></div> |
49 | 45 |
<dd> |
... | ... | @@ -95,13 +91,13 @@ |
95 | 91 |
</button> |
96 | 92 |
</div> |
97 | 93 |
</div> |
98 |
- <CategorySelectModal v-if="isModalOpen" :selectedCtgries="selectedCtgries" @toggleModal="fnToggleModal" @addCtgries="fnAddCtgries" /> |
|
99 | 94 |
</template> |
100 | 95 |
<script> |
101 | 96 |
import { DoubleLeftOutlined, LeftOutlined, RightOutlined, DoubleRightOutlined } from '@ant-design/icons-vue'; |
102 | 97 |
// COMPONENT |
98 |
+import PrdctnSelectComponent from '@/views/component/PrdctnSelectComponent.vue'; |
|
103 | 99 |
import EditorComponent from '@/views/component/editor/EditorComponent.vue'; |
104 |
-import CategorySelectModal from '@/views/component/modal/CategorySelectModal.vue'; |
|
100 |
+import CategoryListComponent from '@/views/component/CategoryListComponent.vue'; |
|
105 | 101 |
// API |
106 | 102 |
import { findNesDtaProc, saveNesDtaProc, updateNesDtaProc } from '@/resources/api/nesDta'; |
107 | 103 |
|
... | ... | @@ -111,8 +107,10 @@ |
111 | 107 |
LeftOutlined, |
112 | 108 |
RightOutlined, |
113 | 109 |
DoubleRightOutlined, |
110 |
+ // COMPONENT |
|
111 |
+ PrdctnSelectComponent, |
|
114 | 112 |
EditorComponent, |
115 |
- CategorySelectModal, |
|
113 |
+ CategoryListComponent, |
|
116 | 114 |
}, |
117 | 115 |
|
118 | 116 |
data() { |
... | ... | @@ -126,7 +124,6 @@ |
126 | 124 |
|
127 | 125 |
pageId: null, |
128 | 126 |
|
129 |
- isModalOpen: false, |
|
130 | 127 |
isDragging: false, |
131 | 128 |
|
132 | 129 |
fileNames: [], |
... | ... | @@ -142,6 +139,13 @@ |
142 | 139 |
fileId: null, |
143 | 140 |
files: [], |
144 | 141 |
ctgryIds: [], |
142 |
+ }, |
|
143 |
+ |
|
144 |
+ // 날짜 객체 (자식 컴포넌트와 동기화) |
|
145 |
+ dateForm: { |
|
146 |
+ year: new Date().getFullYear(), |
|
147 |
+ month: '', |
|
148 |
+ day: '' |
|
145 | 149 |
}, |
146 | 150 |
|
147 | 151 |
multipartFiles: [], |
... | ... | @@ -184,23 +188,6 @@ |
184 | 188 |
|
185 | 189 |
this.multipartFiles = []; |
186 | 190 |
this.selectedCtgries = nesDta.ctgrys.length > 0 ? nesDta.ctgrys : []; |
187 |
- }, |
|
188 |
- |
|
189 |
- // 카테고리 모달 열기/닫기 |
|
190 |
- fnToggleModal() { |
|
191 |
- this.isModalOpen = !this.isModalOpen; |
|
192 |
- }, |
|
193 |
- |
|
194 |
- // 카테고리 등록 |
|
195 |
- fnAddCtgries(selectedCtgries) { |
|
196 |
- this.selectedCtgries = [...this.selectedCtgries, ...selectedCtgries]; |
|
197 |
- |
|
198 |
- this.fnToggleModal(); // 카테고리 모달 닫기 |
|
199 |
- }, |
|
200 |
- |
|
201 |
- // 카테고리 삭제 |
|
202 |
- fnDelCtgry(id) { |
|
203 |
- this.selectedCtgries = this.selectedCtgries.filter(item => item.ctgryId !== id); |
|
204 | 191 |
}, |
205 | 192 |
|
206 | 193 |
// 드래그 앤 드롭 이벤트 핸들러 |
... | ... | @@ -283,21 +270,20 @@ |
283 | 270 |
async submitForm() { |
284 | 271 |
// 공백제거 |
285 | 272 |
this.requestDTO.sj = this.$processTitle(this.requestDTO.sj); |
273 |
+ |
|
286 | 274 |
// 유효성 검사 |
287 | 275 |
if (this.$isEmpty(this.requestDTO.sj)) { |
288 | 276 |
alert("제목을 입력해 주세요."); |
289 | 277 |
return; |
290 | 278 |
} |
279 |
+ |
|
291 | 280 |
if (!this.$isEmpty(this.requestDTO.prdctnYear)) { |
292 | 281 |
if (!/^\d+$/.test(this.requestDTO.prdctnYear)) { |
293 | 282 |
alert("생산연도는 숫자만 입력 가능합니다."); |
294 | 283 |
return; |
295 | 284 |
} |
296 |
- if (this.requestDTO.prdctnYear.length !== 4) { |
|
297 |
- alert("생산연도는 4자리로 입력해주세요."); |
|
298 |
- return; |
|
299 |
- } |
|
300 | 285 |
} |
286 |
+ |
|
301 | 287 |
if (!this.$isEmpty(this.requestDTO.link)) { |
302 | 288 |
const urlRegex = /^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/; |
303 | 289 |
if (!urlRegex.test(this.requestDTO.link)) { |
... | ... | @@ -394,11 +380,6 @@ |
394 | 380 |
this.$router.push(routes['list']); |
395 | 381 |
} |
396 | 382 |
}, |
397 |
- |
|
398 |
- // 생산연도 입력 제한 |
|
399 |
- onlyNumberInput() { |
|
400 |
- this.requestDTO.prdctnYear = this.requestDTO.prdctnYear.replace(/[^0-9]/g, ''); |
|
401 |
- } |
|
402 | 383 |
} |
403 | 384 |
}; |
404 | 385 |
</script> |
--- client/views/pages/bbsNesDta/NewsReleaseSearch.vue
+++ client/views/pages/bbsNesDta/NewsReleaseSearch.vue
... | ... | @@ -67,7 +67,7 @@ |
67 | 67 |
import SearchFormComponent from '@/views/component/SearchFormComponent.vue'; |
68 | 68 |
import CardStyleComponent from '@/views/component/listLayout/CardStyleComponent.vue'; |
69 | 69 |
import ListStyleComponent from '@/views/component/listLayout/ListStyleComponent.vue'; |
70 |
-import DefaultPagination from '@/views/component/listLayout/DefaultPagination.vue'; |
|
70 |
+import DefaultPagination from '@/views/component/DefaultPagination.vue'; |
|
71 | 71 |
// API |
72 | 72 |
import { findAllNesDtasProc } from "@/resources/api/nesDta"; |
73 | 73 |
|
--- client/views/pages/main/Main.vue
+++ client/views/pages/main/Main.vue
... | ... | @@ -10,35 +10,24 @@ |
10 | 10 |
<div class="swiper-button-prev"></div> |
11 | 11 |
<div class="pagination_container"> |
12 | 12 |
<div class="swiper-pagination"></div> |
13 |
- <div class="flex align-center" > |
|
13 |
+ <div class="flex align-center"> |
|
14 | 14 |
<div class="swiper-pagination2"></div> |
15 |
- <button class="swiper-play-pause-btn" @click="toggleAutoplay"><component :is="isAutoplay ? 'PauseOutlined' : 'CaretRightOutlined'" /></button> |
|
16 |
- </div> |
|
15 |
+ <button class="swiper-play-pause-btn" @click="toggleAutoplay"> |
|
16 |
+ <component :is="isAutoplay ? 'PauseOutlined' : 'CaretRightOutlined'" /> |
|
17 |
+ </button> |
|
18 |
+ </div> |
|
17 | 19 |
</div> |
18 | 20 |
</div> |
19 |
- <!-- <swiper ref="swiper" :loop="true" :spaceBetween="30" :centeredSlides="true" :autoplay="{ |
|
20 |
- delay: 2500, |
|
21 |
- disableOnInteraction: false, |
|
22 |
- }" :pagination="{ |
|
23 |
- type: ['fraction', 'progressbar'], progressbarOpposite: true, |
|
24 |
- }" :navigation="true" :modules="modules" class="mySwiper" :allowTouchMove="false"> |
|
25 |
- <swiper-slide v-for="(item, index) in slides" :key="index"> |
|
26 |
- <img :src="item.img" :alt="item.alt" /> |
|
27 |
- </swiper-slide> |
|
28 |
- </swiper> --> |
|
29 | 21 |
<div class="search-wrap"> |
30 | 22 |
<div class="search-area"> |
31 | 23 |
<div class="custom-select" @click="toggleDropdown"> |
32 |
- <div class="selected-option">{{ getSelectedText }}</div> |
|
33 |
- <ul v-if="isDropdownOpen" class="select-options"> |
|
34 |
- <li v-for="option in options" :key="option.value" @click.stop="selectOption(option)"> |
|
35 |
- {{ option.text }} |
|
36 |
- </li> |
|
37 |
- </ul> |
|
38 |
-</div> |
|
24 |
+ <div class="selected-option">{{ getSelectedText }}</div> |
|
25 |
+ <ul v-if="isDropdownOpen" class="select-options"> |
|
26 |
+ <li v-for="option in options" :key="option.value" @click.stop="selectOption(option)"> {{ option.text }} </li> |
|
27 |
+ </ul> |
|
28 |
+ </div> |
|
39 | 29 |
<div class="line"></div> |
40 |
- <div style="width: 60%;"><input type="text" placeholder="검색어를 입력하세요" v-model="searchText" |
|
41 |
- @keyup.enter="fnMoveTo('TotalSearch')"></div> |
|
30 |
+ <div style="width: 60%;"><input type="text" placeholder="검색어를 입력하세요" v-model="searchText" @keyup.enter="fnMoveTo('TotalSearch')"></div> |
|
42 | 31 |
<button type="button" class="search-btn" @click="fnMoveTo('TotalSearch')"><img :src="search" alt=""></button> |
43 | 32 |
</div> |
44 | 33 |
<div class="total-search"> |
... | ... | @@ -52,7 +41,6 @@ |
52 | 41 |
<div><span>기록물 현황</span></div> |
53 | 42 |
</div> |
54 | 43 |
<ul> |
55 |
- |
|
56 | 44 |
<template v-for="(item, idx) of icons" :key="idx"> |
57 | 45 |
<li @click="fnMoveTo(item.routeName)"> |
58 | 46 |
<div class="labeling"><img :src="item.url" :alt="item.name + '아이콘'"><span>{{ item.name }}</span></div> |
... | ... | @@ -61,46 +49,36 @@ |
61 | 49 |
<li class="line" v-if="idx < icons.length - 1"></li> |
62 | 50 |
</template> |
63 | 51 |
</ul> |
64 |
- |
|
65 | 52 |
</div> |
66 | 53 |
</div> |
67 |
- <div class="new-update w1500 mb-50"> |
|
68 |
- <div class="tabs"> |
|
69 |
- <ul class=""> |
|
70 |
- <li v-for="(tab, index) in tabs" :key="index" class="tab-title" :class="{ active: selectedTab === tab.id }" |
|
71 |
- @click="selectTab(tab.id)"> |
|
72 |
- <img :src="selectedTab === tab.id ? tab.activeImage : tab.inactiveImage" :alt="tab.title" class="tab-icon" /> |
|
73 |
- <p><b>{{ tab.title }}</b> 기록물</p> |
|
74 |
- </li> |
|
75 |
- </ul> |
|
54 |
+ <div class="new-update w1500"> |
|
55 |
+ <div v-for="(tab, index) in tabs" :key="index" class="tabs mb-50"> |
|
56 |
+ <div class="title mb-30"> |
|
57 |
+ <h4>{{ tab.title }}</h4> |
|
58 |
+ <button type="button" class="gopage" @click="fnMoveTo(tab.contents.search)">더보기</button> |
|
59 |
+ </div> |
|
76 | 60 |
<div class="tab-content"> |
77 |
- <template v-for="(tabContent, idx1) of tabContents" :key="idx1"> |
|
78 |
- <div v-show="tabContent.id === selectedTab" class="content-wrap"> |
|
79 |
- <div style="text-align: right;"> |
|
80 |
- <button type="button" class="gopage" @click="fnMoveTo(tabContent.search)">더보기</button> |
|
81 |
- </div> |
|
82 |
- <div class="new-pic"> |
|
83 |
- <div v-for="(item, idx2) in tabContent.list" :key="idx2" class="box-wrap"> |
|
84 |
- <div class="box" @click="fnMoveTo(tabContent.view, item.dcryId)"> |
|
85 |
- <div class="img-area"><img :src="item.thumbnail.filePath" :alt="item.sj" class="tab-image" /></div> |
|
86 |
- <div class="info"> |
|
87 |
- <p>{{ item.sj }}</p> |
|
88 |
- <span>{{ $dotFormatDate(item.rgsde) }}</span> |
|
89 |
- </div> |
|
90 |
- </div> |
|
61 |
+ <div class="new-pic"> |
|
62 |
+ <div v-for="(item, idx2) in tab.contents.list" :key="idx2" class="box-wrap"> |
|
63 |
+ <div class="box" @click="fnMoveTo(tab.contents.view, item.dcryId)"> |
|
64 |
+ <div class="img-area"> |
|
65 |
+ <img :src="item.thumbnail.filePath" :alt="item.sj" class="tab-image" /> |
|
91 | 66 |
</div> |
92 |
- <!-- 게시물이 없는 경우 --> |
|
93 |
- <div v-for="i in Math.max(0, 3 - tabContent.list.length)" :key="`empty-${i}`" class="box-wrap"> |
|
94 |
- <div class="box"> |
|
95 |
- <div class="img-area"><img :src="noimg" class="tab-image" /></div> |
|
96 |
- <div class="info"> |
|
97 |
- <p>등록된 게시물이 없습니다.</p> |
|
98 |
- </div> |
|
99 |
- </div> |
|
67 |
+ <div class="info"> |
|
68 |
+ <p>{{ item.sj }}</p> |
|
69 |
+ <span>{{ $dotFormatDate(item.rgsde) }}</span> |
|
100 | 70 |
</div> |
101 | 71 |
</div> |
102 | 72 |
</div> |
103 |
- </template> |
|
73 |
+ <div v-for="i in Math.max(0, 3 - tab.contents.list.length)" :key="`empty-${i}`" class="box-wrap"> |
|
74 |
+ <div class="box"> |
|
75 |
+ <div class="img-area"><img :src="noimg" class="tab-image" /></div> |
|
76 |
+ <div class="info"> |
|
77 |
+ <p>등록된 게시물이 없습니다.</p> |
|
78 |
+ </div> |
|
79 |
+ </div> |
|
80 |
+ </div> |
|
81 |
+ </div> |
|
104 | 82 |
</div> |
105 | 83 |
</div> |
106 | 84 |
</div> |
... | ... | @@ -157,11 +135,6 @@ |
157 | 135 |
import 'swiper/css'; |
158 | 136 |
import Swiper from 'swiper/bundle'; |
159 | 137 |
|
160 |
-// Import Swiper Vue components |
|
161 |
-// import { Swiper, SwiperSlide } from 'swiper/vue'; |
|
162 |
-// import 'swiper/css'; |
|
163 |
-// import 'swiper/css/pagination'; |
|
164 |
-// import 'swiper/css/navigation'; |
|
165 | 138 |
import { Autoplay, Pagination, Navigation } from 'swiper/modules'; |
166 | 139 |
import { CaretRightOutlined, PauseOutlined } from '@ant-design/icons-vue'; |
167 | 140 |
|
... | ... | @@ -179,13 +152,13 @@ |
179 | 152 |
setup() { |
180 | 153 |
const swiperContainer = ref(null); |
181 | 154 |
const slides = [ |
182 |
- { img: 'client/resources/images/visual.png', alt: 'Slide 1' }, |
|
183 |
- { img: 'client/resources/images/visual.png', alt: 'Slide 2' }, |
|
184 |
- { img: 'client/resources/images/visual.png', alt: 'Slide 3' }, |
|
185 |
- // Add more slides as needed |
|
186 |
- ]; |
|
187 |
- const isAutoplay = ref(true); // Tracks the autoplay state |
|
188 |
- let swiperInstance = null; |
|
155 |
+ { img: 'client/resources/images/visual.png', alt: 'Slide 1' }, |
|
156 |
+ { img: 'client/resources/images/visual.png', alt: 'Slide 2' }, |
|
157 |
+ { img: 'client/resources/images/visual.png', alt: 'Slide 3' }, |
|
158 |
+ // Add more slides as needed |
|
159 |
+ ]; |
|
160 |
+ const isAutoplay = ref(true); // Tracks the autoplay state |
|
161 |
+ let swiperInstance = null; |
|
189 | 162 |
|
190 | 163 |
onMounted(() => { |
191 | 164 |
// Main Swiper with Fraction Pagination |
... | ... | @@ -233,6 +206,7 @@ |
233 | 206 |
isAutoplay, |
234 | 207 |
}; |
235 | 208 |
}, |
209 |
+ |
|
236 | 210 |
data() { |
237 | 211 |
return { |
238 | 212 |
noimg: "client/resources/images/no_img.png", |
... | ... | @@ -244,29 +218,26 @@ |
244 | 218 |
tabs: [ |
245 | 219 |
{ |
246 | 220 |
id: "newPhoto", |
247 |
- title: "신규 사진", |
|
248 |
- activeImage: "client/resources/images/mCont_ico1_on.png", // Active tab image |
|
249 |
- inactiveImage: "client/resources/images/mCont_ico1_off.png", |
|
221 |
+ title: "신규 사진 기록물", |
|
222 |
+ contents: { list: [], search: 'PicHistorySearch', view: 'PicHistoryDetail' }, |
|
250 | 223 |
}, |
251 | 224 |
{ |
252 | 225 |
id: "newVideo", |
253 |
- title: "신규 영상", |
|
254 |
- activeImage: "client/resources/images/mCont_ico2_on.png", // Active tab image |
|
255 |
- inactiveImage: "client/resources/images/mCont_ico2_off.png", |
|
226 |
+ title: "신규 영상 기록물", |
|
227 |
+ contents: { list: [], search: 'VideoHistorySearch', view: 'VideoHistoryDetail' }, |
|
256 | 228 |
}, |
257 | 229 |
], |
258 |
- tabContents: [], // 신규 사진, 영상 기록물 |
|
259 | 230 |
mediaContents: [], // 신규 미디어 영상 |
260 | 231 |
bodoContents: [], // 신규 스크랩 자료 |
261 | 232 |
searchRecord: 'all', // 통합검색 Selectbox 내용 |
262 | 233 |
isDropdownOpen: false, |
263 |
- options: [ |
|
264 |
- { value: 'all', text: '전체' }, |
|
265 |
- { value: 'pic', text: '사진' }, |
|
266 |
- { value: 'video', text: '영상' }, |
|
267 |
- { value: 'media', text: '미디어 영상' }, |
|
268 |
- { value: 'bodo', text: '스크랩 자료' }, |
|
269 |
- ], |
|
234 |
+ options: [ |
|
235 |
+ { value: 'all', text: '전체' }, |
|
236 |
+ { value: 'pic', text: '사진' }, |
|
237 |
+ { value: 'video', text: '영상' }, |
|
238 |
+ { value: 'media', text: '미디어 영상' }, |
|
239 |
+ { value: 'bodo', text: '스크랩 자료' }, |
|
240 |
+ ], |
|
270 | 241 |
searchText: null, // 통합검색 Input 내용 |
271 | 242 |
icons: [ |
272 | 243 |
{ |
... | ... | @@ -307,25 +278,25 @@ |
307 | 278 |
navigation: true, // Enable navigation buttons (prev/next) |
308 | 279 |
}; |
309 | 280 |
}, |
281 |
+ |
|
282 |
+ computed: { |
|
283 |
+ getSelectedText() { |
|
284 |
+ const selected = this.options.find(opt => opt.value === this.searchRecord); |
|
285 |
+ return selected ? selected.text : ''; |
|
286 |
+ } |
|
287 |
+ }, |
|
288 |
+ |
|
310 | 289 |
created() { |
311 | 290 |
this.fnFindAllSttuses(); |
312 | 291 |
}, |
313 |
- computed: { |
|
314 |
- getSelectedText() { |
|
315 |
- const selected = this.options.find(opt => opt.value === this.searchRecord); |
|
316 |
- return selected ? selected.text : ''; |
|
317 |
- } |
|
318 |
-}, |
|
292 |
+ |
|
319 | 293 |
methods: { |
320 | 294 |
toggleDropdown() { |
321 |
- this.isDropdownOpen = !this.isDropdownOpen; |
|
322 |
- }, |
|
323 |
- selectOption(option) { |
|
324 |
- this.searchRecord = option.value; |
|
325 |
- this.isDropdownOpen = false; |
|
326 |
- }, |
|
327 |
- selectTab(index) { |
|
328 |
- this.selectedTab = index; // Update the selected tab index |
|
295 |
+ this.isDropdownOpen = !this.isDropdownOpen; |
|
296 |
+ }, |
|
297 |
+ selectOption(option) { |
|
298 |
+ this.searchRecord = option.value; |
|
299 |
+ this.isDropdownOpen = false; |
|
329 | 300 |
}, |
330 | 301 |
|
331 | 302 |
// 메인화면 정보 조회 |
... | ... | @@ -340,10 +311,10 @@ |
340 | 311 |
}); |
341 | 312 |
|
342 | 313 |
let photoDcrys = response.data.data.photoDcrys; |
343 |
- this.tabContents.push({ id: 'newPhoto', list: photoDcrys, search: 'PicHistorySearch', view: 'PicHistoryDetail' }); |
|
314 |
+ this.tabs[0].contents = { id: 'newPhoto', list: photoDcrys, search: 'PicHistorySearch', view: 'PicHistoryDetail' }; |
|
344 | 315 |
|
345 | 316 |
let vidoDcrys = response.data.data.vidoDcrys; |
346 |
- this.tabContents.push({ id: 'newVideo', list: vidoDcrys, search: 'VideoHistorySearch', view: 'VideoHistoryDetail' }); |
|
317 |
+ this.tabs[1].contents = { id: 'newVideo', list: vidoDcrys, search: 'VideoHistorySearch', view: 'VideoHistoryDetail' }; |
|
347 | 318 |
|
348 | 319 |
let mediaVidos = response.data.data.mediaVidos; |
349 | 320 |
this.mediaContents = this.onChangeList(mediaVidos); |
--- client/views/pages/main/TotalSearch.vue
+++ client/views/pages/main/TotalSearch.vue
... | ... | @@ -29,8 +29,8 @@ |
29 | 29 |
</template> |
30 | 30 |
<script> |
31 | 31 |
// COMPONENT |
32 |
-import SearchFormComponent from '../../component/SearchFormComponent.vue'; |
|
33 |
-import CardViewList from "../../component/listLayout/CardViewList.vue"; |
|
32 |
+import SearchFormComponent from '@/views/component/SearchFormComponent.vue'; |
|
33 |
+import CardViewList from "../../component/CardViewList.vue"; |
|
34 | 34 |
// API |
35 | 35 |
import { findAllDatas } from "../../../resources/api/main"; // 통합 검색 |
36 | 36 |
|
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?