
--- client/resources/scss/admin/content.scss
+++ client/resources/scss/admin/content.scss
... | ... | @@ -606,6 +606,10 @@ |
606 | 606 |
flex-wrap: wrap; |
607 | 607 |
} |
608 | 608 |
|
609 |
+ &.end{ |
|
610 |
+ @include flex-layout(flex, center, flex-end); |
|
611 |
+ } |
|
612 |
+ |
|
609 | 613 |
} |
610 | 614 |
|
611 | 615 |
.border-top{ |
... | ... | @@ -650,6 +654,26 @@ |
650 | 654 |
background-color: var(--tk-gray-10); |
651 | 655 |
@include radius(20); |
652 | 656 |
margin-top: 3rem; |
657 |
+ |
|
658 |
+ .comment-item{ |
|
659 |
+ border-top: 1px solid var(--tk-gray-30); |
|
660 |
+ .comment-children{ |
|
661 |
+ padding-left: 2rem; |
|
662 |
+ // border-top: 1px solid var(--tk-gray-30); |
|
663 |
+ } |
|
664 |
+ .comment-text{ |
|
665 |
+ padding-left: 1rem; |
|
666 |
+ } |
|
667 |
+ |
|
668 |
+ .comment-date{ |
|
669 |
+ margin-left: 1rem; |
|
670 |
+ } |
|
671 |
+ |
|
672 |
+ .pb10{ |
|
673 |
+ padding-bottom: 1rem; |
|
674 |
+ } |
|
675 |
+ |
|
676 |
+ } |
|
653 | 677 |
|
654 | 678 |
.comment-head{ |
655 | 679 |
width: auto; |
... | ... | @@ -813,7 +837,10 @@ |
813 | 837 |
height: auto; |
814 | 838 |
aspect-ratio: 16 / 9; |
815 | 839 |
margin-right: 3rem; |
840 |
+ object-fit: cover; |
|
816 | 841 |
} |
842 |
+ |
|
843 |
+ |
|
817 | 844 |
|
818 | 845 |
.file-upload{ |
819 | 846 |
width: 100px; |
... | ... | @@ -822,6 +849,20 @@ |
822 | 849 |
border: 1px solid var(--tk-main-50); |
823 | 850 |
color: var(--tk-main-50); |
824 | 851 |
} |
852 |
+ |
|
853 |
+ |
|
854 |
+ .auth-list{ |
|
855 |
+ @include flex-layout(flex, center); |
|
856 |
+ .auth-itme{ |
|
857 |
+ width: fit-content; |
|
858 |
+ max-width: fit-content; |
|
859 |
+ border-bottom: none; |
|
860 |
+ padding: .2rem 1rem; |
|
861 |
+ border: 1px solid var(--tk-gray-10); |
|
862 |
+ border-radius: 1rem; |
|
863 |
+ } |
|
864 |
+ } |
|
865 |
+ |
|
825 | 866 |
} |
826 | 867 |
|
827 | 868 |
|
--- client/views/component/comment/CommentItem.vue
+++ client/views/component/comment/CommentItem.vue
... | ... | @@ -1,53 +1,48 @@ |
1 | 1 |
<template> |
2 | 2 |
<div class="comment-item" v-for="comment in comments" :key="comment.id"> |
3 |
- <div class="layout"> |
|
4 |
- <h4 class="comment-user">{{ comment.rgtrNm }}</h4> |
|
5 |
- <span class="comment-date ml5">{{ comment.regDt }}</span> |
|
6 |
- </div> |
|
7 |
- |
|
8 |
- <textarea v-if="'isUpdate' in comment && comment.isUpdate" class="comment-text mb10" v-model="comment.cmntCn" |
|
9 |
- style="width: 100%; min-height: 4rem"></textarea> |
|
10 |
- |
|
11 |
- <p v-else class="comment-text"> |
|
12 |
- {{ comment.useYn == "Y" ? comment.cmntCn : "[ 삭제된 댓글입니다. ]" }} |
|
13 |
- </p> |
|
14 |
- |
|
15 |
- <div v-if="showReplyInput[comment.cmntId]" class="layout"> |
|
16 |
- <textarea v-model="comment.replyText" style="width: 100%; min-height: 4rem"></textarea> |
|
17 |
- <button :class="{ |
|
18 |
- 'large-btn': true, |
|
19 |
- 'blue-btn': pageRole == 'adm', |
|
20 |
- 'green-btn': pageRole == 'portal', |
|
21 |
- }" @click="fnInsertCmnt(comment)"> |
|
22 |
- 등록 |
|
23 |
- </button> |
|
3 |
+ <div :class="{'comment-children': comment.cmntGrd > 0}" > |
|
4 |
+ <div class="layout"> |
|
5 |
+ <h4 class="comment-user">{{ comment.rgtrNm }}</h4> |
|
6 |
+ <span class="comment-date">{{ comment.regDt }}</span> |
|
24 | 7 |
</div> |
25 | 8 |
|
26 |
- <div class="flex justify-end align-center mb10"> |
|
27 |
- <button v-if="comment.isUpdate != true" :class="{ |
|
28 |
- 'ml5 comment-item-btn icon-btn radius pd5': true, |
|
29 |
- 'green': !showReplyInput[comment.cmntId], |
|
30 |
- 'gray': showReplyInput[comment.cmntId], |
|
31 |
- }" @click="toggleReplyInput(comment.cmntId)"> |
|
32 |
- {{ showReplyInput[comment.cmntId] ? "취소" : "답글 달기" }} |
|
33 |
- </button> |
|
9 |
+ <textarea v-if="'isUpdate' in comment && comment.isUpdate" class="comment-text mb10" v-model="comment.cmntCn" |
|
10 |
+ style="width: 100%; min-height: 3rem"></textarea> |
|
34 | 11 |
|
35 |
- <button v-if=" |
|
36 |
- (roles[0].authority == 'ROLE_ADMIN' || mbrId == comment.rgtr) && |
|
37 |
- !showReplyInput[comment.cmntId] |
|
38 |
- " :class="{ |
|
39 |
- 'ml5 comment-item-btn icon-btn radius pd5': true, |
|
40 |
- 'dark-gray': pageRole == 'adm', |
|
41 |
- 'dark-gray': |
|
42 |
- pageRole == 'portal', |
|
43 |
- }" @click="fnUpdate(comment)"> |
|
44 |
- 수정 |
|
45 |
- </button> |
|
12 |
+ <p v-else class="comment-text"> |
|
13 |
+ {{ comment.useYn == "Y" ? comment.cmntCn : "[ 삭제된 댓글입니다. ]" }} |
|
14 |
+ </p> |
|
46 | 15 |
|
47 |
- <button v-if="roles[0].authority == 'ROLE_ADMIN' || mbrId == comment.rgtr" @click="fnDeleteCmnt(comment.cmntId)" |
|
48 |
- class="ml5 icon-btn red radius pd5"> |
|
49 |
- 삭제 |
|
50 |
- </button> |
|
16 |
+ <div v-if="showReplyInput[comment.cmntId]" class="layout"> |
|
17 |
+ <textarea v-model="comment.replyText" style="width: 100%; min-height: 3rem" class="form-control"></textarea> |
|
18 |
+ <button class="btn md" @click="fnInsertCmnt(comment)">등록</button> |
|
19 |
+ </div> |
|
20 |
+ |
|
21 |
+ <div class="layout end btn-wrap pb10"> |
|
22 |
+ <button v-if="comment.isUpdate != true" :class="{ |
|
23 |
+ 'green': !showReplyInput[comment.cmntId], |
|
24 |
+ 'gray': showReplyInput[comment.cmntId], |
|
25 |
+ }" @click="toggleReplyInput(comment.cmntId)"> |
|
26 |
+ {{ showReplyInput[comment.cmntId] ? "취소" : "답글 달기" }} |
|
27 |
+ </button> |
|
28 |
+ |
|
29 |
+ <button v-if=" |
|
30 |
+ (roles[0].authority == 'ROLE_ADMIN' || mbrId == comment.rgtr) && |
|
31 |
+ !showReplyInput[comment.cmntId] |
|
32 |
+ " :class="{ |
|
33 |
+ 'ml5 comment-item-btn icon-btn radius pd5': true, |
|
34 |
+ 'dark-gray': pageRole == 'adm', |
|
35 |
+ 'dark-gray': |
|
36 |
+ pageRole == 'portal', |
|
37 |
+ }" @click="fnUpdate(comment)"> |
|
38 |
+ 수정 |
|
39 |
+ </button> |
|
40 |
+ |
|
41 |
+ <button v-if="roles[0].authority == 'ROLE_ADMIN' || mbrId == comment.rgtr" @click="fnDeleteCmnt(comment.cmntId)" |
|
42 |
+ class="ml5 icon-btn red radius pd5"> |
|
43 |
+ 삭제 |
|
44 |
+ </button> |
|
45 |
+ </div> |
|
51 | 46 |
</div> |
52 | 47 |
|
53 | 48 |
<CommentItem v-if="comment.children" :comments="comment.children" :pageId="pageId" @isReply="isReply" /> |
... | ... | @@ -78,6 +73,7 @@ |
78 | 73 |
type: String, |
79 | 74 |
required: true, |
80 | 75 |
}, |
76 |
+ |
|
81 | 77 |
}, |
82 | 78 |
data() { |
83 | 79 |
return { |
... | ... | @@ -175,6 +171,7 @@ |
175 | 171 |
}, |
176 | 172 |
watch: {}, |
177 | 173 |
computed: {}, |
178 |
- mounted() { }, |
|
174 |
+ mounted() { |
|
175 |
+ }, |
|
179 | 176 |
}; |
180 | 177 |
</script>(파일 끝에 줄바꿈 문자 없음) |
--- client/views/component/userInfo/UserAuthorList.vue
+++ client/views/component/userInfo/UserAuthorList.vue
... | ... | @@ -1,29 +1,34 @@ |
1 | 1 |
<template> |
2 | 2 |
|
3 |
- <label class="form-title"><span>*</span> 사용자 권한</label> |
|
4 |
- <div class="form-group"> |
|
5 |
- <button v-show="editMode != 'view'" class="btn sm ico-plus-w auth-btn" @click="fnAuthAddModalOpen">권한 추가</button> |
|
6 |
- <template v-if="mbrVO.authorList != null && mbrVO.authorList != []"> |
|
7 |
- <div v-for="(auth, index) of mbrVO.authorList" :key="index" |
|
8 |
- :class="{ |
|
9 |
- 'layout': true, |
|
10 |
- ml10: index != 0, |
|
11 |
- }" |
|
12 |
- > |
|
13 |
- <span>{{ auth.authrtNm }}</span> |
|
14 |
- <button |
|
15 |
- v-show="editMode != 'view'" |
|
16 |
- class="icon-btn" |
|
17 |
- @click="fnAuthDelete(index)" |
|
18 |
- > |
|
19 |
- <svg-icon type="mdi" :width="15" :height="15" :path="path"></svg-icon> |
|
20 |
- </button> |
|
21 |
- </div> |
|
22 |
- </template> |
|
23 |
- <template v-else> |
|
24 |
- <p class="data-none">등록된 정보가 존재하지 않습니다.</p> |
|
25 |
- </template> |
|
26 |
- </div> |
|
3 |
+ |
|
4 |
+ <label class="form-title"><span v-if="editMode != 'view'">*</span> 사용자 권한</label> |
|
5 |
+ <div :class="{'form-group':editMode != 'view'}"> |
|
6 |
+ <button v-show="editMode != 'view'" class="btn sm ico-plus-w auth-btn" @click="fnAuthAddModalOpen">권한 추가</button> |
|
7 |
+ <template v-if="mbrVO.authorList != null && mbrVO.authorList != []"> |
|
8 |
+ <div class="auth-list"> |
|
9 |
+ <div v-for="(auth, index) of mbrVO.authorList" :key="index" |
|
10 |
+ :class="{ |
|
11 |
+ 'auth-itme':true, |
|
12 |
+ 'layout': editMode != 'view', |
|
13 |
+ 'ml10': index != 0, |
|
14 |
+ }" |
|
15 |
+ > |
|
16 |
+ <p>{{ auth.authrtNm }}</p> |
|
17 |
+ <button |
|
18 |
+ v-show="editMode != 'view'" |
|
19 |
+ class="btn-ico sm ico-close" |
|
20 |
+ @click="fnAuthDelete(index)" |
|
21 |
+ > |
|
22 |
+ <!-- <svg-icon type="mdi" :width="15" :height="15" :path="path"></svg-icon> --> |
|
23 |
+ </button> |
|
24 |
+ </div> |
|
25 |
+ </div> |
|
26 |
+ </template> |
|
27 |
+ <template v-else> |
|
28 |
+ <p class="data-none">등록된 정보가 존재하지 않습니다.</p> |
|
29 |
+ </template> |
|
30 |
+ </div> |
|
31 |
+ |
|
27 | 32 |
|
28 | 33 |
<Modal :showModal="editMode != 'view' && isOpen"> |
29 | 34 |
<template v-slot:header> |
--- client/views/component/userInfo/UserInfoView.vue
+++ client/views/component/userInfo/UserInfoView.vue
... | ... | @@ -212,7 +212,7 @@ |
212 | 212 |
disabled |
213 | 213 |
/> --> |
214 | 214 |
</div> |
215 |
- <div class="layout"> |
|
215 |
+ <div class="layout border-bottom"> |
|
216 | 216 |
<p class="form-title">차단 사유</p> |
217 | 217 |
<p>{{ mbrVO.cntrlRsn }}</p> |
218 | 218 |
<!-- <input |
... | ... | @@ -223,9 +223,9 @@ |
223 | 223 |
/> --> |
224 | 224 |
</div> |
225 | 225 |
</template> |
226 |
- <template v-if="showOpt.isAuthor && pageRole == 'adm'"> |
|
226 |
+ <div v-if="showOpt.isAuthor && pageRole == 'adm'" class="layout grid-column"> |
|
227 | 227 |
<UserAuthorList :mbrVO="mbrVO" editMode="view" /> |
228 |
- </template> |
|
228 |
+ </div> |
|
229 | 229 |
</div> |
230 | 230 |
</div> |
231 | 231 |
</div> |
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert.vue
... | ... | @@ -146,8 +146,8 @@ |
146 | 146 |
</div> |
147 | 147 |
<div class="layout" ref="five" v-if="bbsMng.prvtPstUseYn === 'Y'"> |
148 | 148 |
<label for="" class="form-title">비밀글</label> |
149 |
- <div class="flex align-center no-gutters"> |
|
150 |
- <div class="gd-4"> |
|
149 |
+ <div class="check-area"> |
|
150 |
+ <div class="form-check"> |
|
151 | 151 |
<input |
152 | 152 |
type="radio" |
153 | 153 |
name="private" |
... | ... | @@ -158,7 +158,7 @@ |
158 | 158 |
/> |
159 | 159 |
<label for="private-y">사용</label> |
160 | 160 |
</div> |
161 |
- <div class="gd-4"> |
|
161 |
+ <div class="form-check"> |
|
162 | 162 |
<input |
163 | 163 |
type="radio" |
164 | 164 |
name="private" |
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
... | ... | @@ -36,7 +36,7 @@ |
36 | 36 |
<td>첨부파일</td> |
37 | 37 |
<td> |
38 | 38 |
<div v-if="fileList.length == 0"> |
39 |
- <label>첨부된 파일이 없습니다.</label> |
|
39 |
+ <p>첨부된 파일이 없습니다.</p> |
|
40 | 40 |
</div> |
41 | 41 |
<ul v-else> |
42 | 42 |
<li |
... | ... | @@ -204,7 +204,7 @@ |
204 | 204 |
/> |
205 | 205 |
</template> |
206 | 206 |
<template v-else> |
207 |
- <p class="comment-text text-ct data-none"> |
|
207 |
+ <p class="data-none"> |
|
208 | 208 |
등록된 댓글이 없습니다. |
209 | 209 |
</p> |
210 | 210 |
</template> |
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
... | ... | @@ -56,7 +56,7 @@ |
56 | 56 |
<div class="layout border-top border-bottom pb10" ref="two"> |
57 | 57 |
<p class="form-title">첨부파일</p> |
58 | 58 |
<div v-if="fileList.length == 0"> |
59 |
- <label>첨부된 파일이 없습니다.</label> |
|
59 |
+ <p>첨부된 파일이 없습니다.</p> |
|
60 | 60 |
</div> |
61 | 61 |
<ul v-else> |
62 | 62 |
<li |
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 |
<div class="content"> |
23 | 23 |
<div class="scroll"> |
24 | 24 |
<div class="tbl-wrap"> |
25 |
- <table class="tbl data"> |
|
25 |
+ <table class="tbl data cursor"> |
|
26 | 26 |
<colgroup> |
27 | 27 |
<!-- <col width="10%" /> --> |
28 | 28 |
<col width="60%" /> |
... | ... | @@ -39,7 +39,7 @@ |
39 | 39 |
</thead> |
40 | 40 |
<tbody> |
41 | 41 |
<template v-for="(item, idx) in list" :key="idx"> |
42 |
- <tr @click="fnView(idx)"> |
|
42 |
+ <tr @click="fnView(idx)" > |
|
43 | 43 |
<!-- <td> |
44 | 44 |
|
45 | 45 |
</td> --> |
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
... | ... | @@ -240,7 +240,7 @@ |
240 | 240 |
<div class="layout border-top border-bottom pb10" ref="two"> |
241 | 241 |
<p class="form-title">첨부파일</p> |
242 | 242 |
<div v-if="fileList.length == 0"> |
243 |
- <label>첨부된 파일이 없습니다.</label> |
|
243 |
+ <p>첨부된 파일이 없습니다.</p> |
|
244 | 244 |
</div> |
245 | 245 |
<ul v-else> |
246 | 246 |
<li |
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?