
Merge branch 'master' of http://210.180.118.83/jhpark/cms_frontend
@f97005a84d173470613ac6048ad546342fae34ba
+++ client/resources/js/defaultMenuSatisfactionParams.js
... | ... | @@ -0,0 +1,12 @@ |
1 | +// 관리자 정보 객체 | |
2 | +const defaultMenuDgstfnParams = { | |
3 | + menuId: '', | |
4 | + rspnsFive: 'N', | |
5 | + rspnsFour: 'N', | |
6 | + rspnsThree: 'N', | |
7 | + rspnsTwo: 'N', | |
8 | + rspnsOne: 'N', | |
9 | + opnn: '', | |
10 | +}; | |
11 | + | |
12 | +export { defaultMenuDgstfnParams };(No newline at end of file) |
--- client/resources/js/queryParams.js
+++ client/resources/js/queryParams.js
... | ... | @@ -40,9 +40,9 @@ |
40 | 40 |
/** 게시판 pageId 추출 **/ |
41 | 41 |
fnBbsIdExtraction() { |
42 | 42 |
if(this.$route.path != null && this.$route.path != undefined && this.$route.path != '') { |
43 |
- console.log("this.$route.path", this.$route.path) |
|
43 |
+ console.log("this.$route.path: ", this.$route.path); |
|
44 | 44 |
let url = this.$filters.logicalPath(this.$route.path); |
45 |
- console.log("url", url) |
|
45 |
+ console.log("url: ", url); |
|
46 | 46 |
const regex = /^\/[^\/]+\/([^\/]+)\//; // 두 번째 '/'와 세 번째 '/' 사이의 문자열 추출 |
47 | 47 |
const match = url.match(regex); // 라우터 경로와 정규식 매칭 |
48 | 48 |
if(match) { |
--- client/views/component/userInfo/UserAuthorList.vue
+++ client/views/component/userInfo/UserAuthorList.vue
... | ... | @@ -1,7 +1,5 @@ |
1 | 1 |
<template> |
2 |
- |
|
3 |
- |
|
4 |
- <label class="form-title"><span v-if="editMode != 'view'">*</span> 사용자 권한</label> |
|
2 |
+ <label class="form-title"><span v-if="editMode != 'view'">* </span>사용자 권한</label> |
|
5 | 3 |
<div :class="{'form-group':editMode != 'view'}"> |
6 | 4 |
<button v-show="editMode != 'view'" class="btn sm ico-plus-w auth-btn" @click="fnAuthAddModalOpen">권한 추가</button> |
7 | 5 |
<template v-if="mbrVO.authorList != null && mbrVO.authorList != []"> |
... | ... | @@ -128,7 +126,12 @@ |
128 | 126 |
const response = await findAllSystem(params); |
129 | 127 |
this.originalList = response.data.data; |
130 | 128 |
} catch (error) { |
131 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
129 |
+ const errorData = error.response.data; |
|
130 |
+ if (errorData.message != null && errorData.message != "") { |
|
131 |
+ alert(error.response.data.message); |
|
132 |
+ } else { |
|
133 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
134 |
+ } |
|
132 | 135 |
} |
133 | 136 |
}, |
134 | 137 |
// 사용자권한 선택 |
--- client/views/component/userInfo/UserInfoInsert.vue
+++ client/views/component/userInfo/UserInfoInsert.vue
... | ... | @@ -8,270 +8,156 @@ |
8 | 8 |
<p><span>*</span>필수입력</p> |
9 | 9 |
</div> |
10 | 10 |
<div class="form-content"> |
11 |
- <div class="layout"> |
|
12 |
- <label class="form-title"><span>*</span> 아이디</label> |
|
13 |
- <input |
|
14 |
- type="text" |
|
15 |
- class="form-control sm" |
|
16 |
- v-model="mbrVO.lgnId" |
|
17 |
- ref="mbrId" |
|
18 |
- minlength="5" |
|
19 |
- maxlength="50" |
|
20 |
- placeholder="아이디를 입력하세요." |
|
21 |
- :disabled="mbrVO.mbrId != null" |
|
22 |
- /> |
|
11 |
+ <div class="layout"> |
|
12 |
+ <label class="form-title"><span>*</span>아이디</label> |
|
13 |
+ <input type="text" class="form-control sm" v-model="mbrVO.lgnId" ref="mbrId" minlength="5" maxlength="50" |
|
14 |
+ placeholder="아이디를 입력하세요." :disabled="mbrVO.mbrId != null" /> |
|
15 |
+ </div> |
|
16 |
+ <div class="layout"> |
|
17 |
+ <label class="form-title"><span>*</span>이름</label> |
|
18 |
+ <input type="text" class="form-control sm" ref="mbrNm" v-model="mbrVO.mbrNm" minlength="2" maxlength="50" |
|
19 |
+ placeholder="이름을 입력하세요." /> |
|
20 |
+ </div> |
|
21 |
+ <div class="layout"> |
|
22 |
+ <label class="form-title"> |
|
23 |
+ <p v-if="pageId == null"><span>*</span>비밀번호</p> |
|
24 |
+ <p v-else>비밀번호변경</p> |
|
25 |
+ </label> |
|
26 |
+ <div class="form-group"> |
|
27 |
+ <input type="password" class="form-control sm" ref="newPswd" v-model="pswd.newPswd" minlength="9" |
|
28 |
+ placeholder="영문, 숫자, 특수문자 조합 9자 이상" /> |
|
29 |
+ <span :class="{ |
|
30 |
+ 'red-text': pswd.errorPwd, |
|
31 |
+ }"> |
|
32 |
+ 영문, 숫자, 특수문자를 조합하여 입력해주세요. (9자 이상) |
|
33 |
+ </span> |
|
23 | 34 |
</div> |
24 |
- <div class="layout"> |
|
25 |
- <label class="form-title"><span>*</span> 이름</label> |
|
26 |
- <input |
|
27 |
- type="text" |
|
28 |
- class="form-control sm" |
|
29 |
- ref="mbrNm" |
|
30 |
- v-model="mbrVO.mbrNm" |
|
31 |
- minlength="2" |
|
32 |
- maxlength="50" |
|
33 |
- placeholder="이름을 입력하세요." |
|
34 |
- /> |
|
35 |
+ </div> |
|
36 |
+ <div class="layout"> |
|
37 |
+ <label class="form-title"> |
|
38 |
+ <p v-if="pageId == null"><span>*</span>비밀번호확인</p> |
|
39 |
+ <p v-else>비밀번호변경 확인</p> |
|
40 |
+ </label> |
|
41 |
+ <input type="password" :class="{ 'form-control sm': true, 'error': pswd.pswdChk }" ref="newPswdChk" |
|
42 |
+ v-model="pswd.newPswdChk" minlength="9" :placeholder="pageId == null |
|
43 |
+ ? '비밀번호 확인을 입력하세요.' |
|
44 |
+ : '변경할 비밀번호 확인을 입력하세요' |
|
45 |
+ " /> |
|
46 |
+ </div> |
|
47 |
+ <!-- <template v-if="showOpt.isMblNo || showOpt.isTelNo"> --> |
|
48 |
+ <div v-if="showOpt.isMblNo" class="layout"> |
|
49 |
+ <label class="form-title"><span>*</span>휴대폰번호</label> |
|
50 |
+ <input type="text" class="form-control sm" ref="mblTelno" v-model="mbrVO.mblTelno" minlength="10" |
|
51 |
+ maxlength="11" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\.*)/g, '');" |
|
52 |
+ placeholder="휴대폰번호를 입력하세요." /> |
|
35 | 53 |
</div> |
36 |
- <div class="layout"> |
|
37 |
- <label class="form-title"> |
|
38 |
- <p v-if="pageId == null"><span>*</span> 비밀번호</p> |
|
39 |
- <p v-else>비밀번호변경</p> |
|
40 |
- </label> |
|
41 |
- <div class="form-group"> |
|
42 |
- <input |
|
43 |
- type="password" |
|
44 |
- class="form-control sm" |
|
45 |
- ref="newPswd" |
|
46 |
- v-model="pswd.newPswd" |
|
47 |
- minlength="9" |
|
48 |
- placeholder="영문, 숫자, 특수문자 조합 9자 이상" |
|
49 |
- /> |
|
50 |
- <span |
|
51 |
- :class="{ |
|
52 |
- 'red-text': pswd.errorPwd, |
|
53 |
- }" |
|
54 |
- > |
|
55 |
- 영문, 숫자, 특수문자를 조합하여 입력해주세요. (9자 이상) |
|
56 |
- </span> |
|
54 |
+ <!-- </template> --> |
|
55 |
+ <div v-if="showOpt.isTelNo" class="layout"> |
|
56 |
+ <label class="form-title">전화번호</label> |
|
57 |
+ <input type="text" class="form-control sm" ref="telno" v-model="mbrVO.telno" |
|
58 |
+ oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\.*)/g, '');" |
|
59 |
+ placeholder="전화번호를 입력해주세요." /> |
|
60 |
+ </div> |
|
61 |
+ <!-- <template v-if="showOpt.isEml || showOpt.isSmsAgree || showOpt.isEmlAgree"> --> |
|
62 |
+ <div v-if="showOpt.isEml" class="layout"> |
|
63 |
+ <label class="form-title"><span>*</span>이메일</label> |
|
64 |
+ <div class="check-area"> |
|
65 |
+ <input type="text" class="form-control sm" ref="emailId" v-model="email.id" oninput="this.value = |
|
66 |
+ this.value.replace(/[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/g, '');" placeholder="이메일을 입력하세요." /> |
|
67 |
+ <div>@</div> |
|
68 |
+ <template v-if="email.select == 'self'"> |
|
69 |
+ <input type="text" class="form-control sm" ref="emailAddress" v-model="email.address" /> |
|
70 |
+ </template> |
|
71 |
+ <select class="form-select sm" ref="emailSelect" v-model="email.select"> |
|
72 |
+ <option value="">선택하세요</option> |
|
73 |
+ <option value="self">직접입력</option> |
|
74 |
+ <option value="naver.com">naver.com</option> |
|
75 |
+ <option value="google.com">google.com</option> |
|
76 |
+ <option value="hanmail.net">hanmail.net</option> |
|
77 |
+ <option value="nate.com">nate.com</option> |
|
78 |
+ <option value="kakao.com">kakao.com</option> |
|
79 |
+ </select> |
|
57 | 80 |
</div> |
58 | 81 |
</div> |
59 |
- <div class="layout"> |
|
60 |
- <label class="form-title"> |
|
61 |
- <p v-if="pageId == null"><span>*</span> 비밀번호확인</p> |
|
62 |
- <p v-else>비밀번호변경 확인</p> |
|
63 |
- </label> |
|
64 |
- <input |
|
65 |
- type="password" |
|
66 |
- :class="{ 'form-control sm': true, 'error': pswd.pswdChk }" |
|
67 |
- ref="newPswdChk" |
|
68 |
- v-model="pswd.newPswdChk" |
|
69 |
- minlength="9" |
|
70 |
- :placeholder=" |
|
71 |
- pageId == null |
|
72 |
- ? '비밀번호 확인을 입력하세요.' |
|
73 |
- : '변경할 비밀번호 확인을 입력하세요' |
|
74 |
- " |
|
75 |
- /> |
|
76 |
- </div> |
|
77 |
- <template v-if="showOpt.isMblNo || showOpt.isTelNo"> |
|
78 |
- <div v-if="showOpt.isMblNo" class="layout"> |
|
79 |
- <label class="form-title"><span>*</span> 휴대폰번호</label> |
|
80 |
- <input |
|
81 |
- type="text" |
|
82 |
- class="form-control sm" |
|
83 |
- ref="mblTelno" |
|
84 |
- v-model="mbrVO.mblTelno" |
|
85 |
- minlength="10" |
|
86 |
- maxlength="11" |
|
87 |
- oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\.*)/g, '');" |
|
88 |
- placeholder="휴대폰번호를 입력하세요." |
|
89 |
- /> |
|
90 |
- </div> |
|
91 |
- </template> |
|
92 |
- <div v-if="showOpt.isTelNo" class="layout"> |
|
93 |
- <label class="form-title">전화번호</label> |
|
94 |
- <input |
|
95 |
- type="text" |
|
96 |
- class="form-control sm" |
|
97 |
- ref="telno" |
|
98 |
- v-model="mbrVO.telno" |
|
99 |
- oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\.*)/g, '');" |
|
100 |
- placeholder="전화번호를 입력하세요." |
|
101 |
- /> |
|
102 |
- </div> |
|
103 |
- <template v-if="showOpt.isEml || showOpt.isSmsAgree || showOpt.isEmlAgree"> |
|
104 |
- <div v-if="showOpt.isEml" class="layout"> |
|
105 |
- <label class="form-title"><span>*</span> 이메일</label> |
|
106 |
- <div class="check-area"> |
|
107 |
- <input |
|
108 |
- type="text" |
|
109 |
- class="form-control sm" |
|
110 |
- ref="emailId" |
|
111 |
- v-model="email.id" |
|
112 |
- oninput="this.value = |
|
113 |
- this.value.replace(/[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/g, '');" |
|
114 |
- placeholder="이메일을 입력하세요." |
|
115 |
- /> |
|
116 |
- <div>@</div> |
|
117 |
- <template v-if="email.select == 'self'"> |
|
118 |
- <input |
|
119 |
- type="text" |
|
120 |
- class="form-control sm" |
|
121 |
- ref="emailAddress" |
|
122 |
- v-model="email.address" |
|
123 |
- /> |
|
124 |
- </template> |
|
125 |
- <select |
|
126 |
- class="form-select sm" |
|
127 |
- ref="emailSelect" |
|
128 |
- v-model="email.select" |
|
129 |
- > |
|
130 |
- <option value="">선택하세요</option> |
|
131 |
- <option value="self">직접입력</option> |
|
132 |
- <option value="naver.com">naver.com</option> |
|
133 |
- <option value="google.com">google.com</option> |
|
134 |
- <option value="hanmail.net">hanmail.net</option> |
|
135 |
- <option value="nate.com">nate.com</option> |
|
136 |
- <option value="kakao.com">kakao.com</option> |
|
137 |
- </select> |
|
82 |
+ <div v-if="showOpt.isSmsAgree" class="layout"> |
|
83 |
+ <label class="form-title"><span>*</span>문자수신</label> |
|
84 |
+ <div class="check-area"> |
|
85 |
+ <div class="form-check"> |
|
86 |
+ <input type="radio" name="smsRcptnAgreYn" id="smsY" class="mr5" v-model="mbrVO.smsRcptnAgreYn" |
|
87 |
+ value="Y" /> |
|
88 |
+ <label for="smsY">수신</label> |
|
89 |
+ </div> |
|
90 |
+ <div class="form-check"> |
|
91 |
+ <input type="radio" name="smsRcptnAgreYn" id="smsN" class="mr5" v-model="mbrVO.smsRcptnAgreYn" |
|
92 |
+ value="N" /> |
|
93 |
+ <label for="smsN">미수신</label> |
|
138 | 94 |
</div> |
139 | 95 |
</div> |
140 |
- <div v-if="showOpt.isSmsAgree" class="layout"> |
|
141 |
- <label class="form-title"><span>*</span> |
|
142 |
- 문자수신 |
|
143 |
- </label> |
|
144 |
- <div class="check-area"> |
|
145 |
- <div class="form-check"> |
|
146 |
- <input |
|
147 |
- type="radio" |
|
148 |
- name="smsRcptnAgreYn" |
|
149 |
- id="smsY" |
|
150 |
- class="mr5" |
|
151 |
- v-model="mbrVO.smsRcptnAgreYn" |
|
152 |
- value="Y" |
|
153 |
- /> |
|
154 |
- <label for="smsY">수신</label> |
|
155 |
- </div> |
|
156 |
- <div class="form-check"> |
|
157 |
- <input |
|
158 |
- type="radio" |
|
159 |
- name="smsRcptnAgreYn" |
|
160 |
- id="smsN" |
|
161 |
- class="mr5" |
|
162 |
- v-model="mbrVO.smsRcptnAgreYn" |
|
163 |
- value="N" |
|
164 |
- /> |
|
165 |
- <label for="smsN">미수신</label> |
|
166 |
- </div> |
|
167 |
- </div> |
|
96 |
+ </div> |
|
97 |
+ <div v-if="showOpt.isEmlAgree" class="layout"> |
|
98 |
+ <label class="form-title"><span>*</span>이메일수신</label> |
|
99 |
+ <div class="check-area"> |
|
100 |
+ <div class="form-check"> |
|
101 |
+ <input type="radio" name="emlRcptnAgreYn" id="y" class="mr5" v-model="mbrVO.emlRcptnAgreYn" |
|
102 |
+ value="Y" /> |
|
103 |
+ <label for="y">수신</label> |
|
168 | 104 |
</div> |
169 |
- <div v-if="showOpt.isEmlAgree" class="layout"> |
|
170 |
- <label class="form-title"><span>*</span> |
|
171 |
- 이메일수신 |
|
172 |
- </label> |
|
173 |
- <div class="check-area"> |
|
174 |
- <div class="form-check"> |
|
175 |
- <input |
|
176 |
- type="radio" |
|
177 |
- name="emlRcptnAgreYn" |
|
178 |
- id="y" |
|
179 |
- class="mr5" |
|
180 |
- v-model="mbrVO.emlRcptnAgreYn" |
|
181 |
- value="Y" |
|
182 |
- /> |
|
183 |
- <label for="y">수신</label> |
|
184 |
- </div> |
|
185 |
- <div class="form-check"> |
|
186 |
- <input |
|
187 |
- type="radio" |
|
188 |
- name="emlRcptnAgreYn" |
|
189 |
- id="n" |
|
190 |
- class="mr5" |
|
191 |
- v-model="mbrVO.emlRcptnAgreYn" |
|
192 |
- value="N" |
|
193 |
- /> |
|
194 |
- <label for="n">미수신</label> |
|
195 |
- </div> |
|
196 |
- </div> |
|
105 |
+ <div class="form-check"> |
|
106 |
+ <input type="radio" name="emlRcptnAgreYn" id="n" class="mr5" v-model="mbrVO.emlRcptnAgreYn" |
|
107 |
+ value="N" /> |
|
108 |
+ <label for="n">미수신</label> |
|
197 | 109 |
</div> |
198 |
- </template> |
|
199 |
- <template v-if="showOpt.isAddr"> |
|
200 |
- <div class="layout"> |
|
201 |
- <label class="form-title"><span>*</span> 우편번호</label> |
|
202 |
- <input |
|
203 |
- type="text" |
|
204 |
- class="form-control sm" |
|
205 |
- v-model="mbrVO.zip" |
|
206 |
- readonly |
|
207 |
- /> |
|
110 |
+ </div> |
|
111 |
+ </div> |
|
112 |
+ <!-- </template> --> |
|
113 |
+ <template v-if="showOpt.isAddr"> |
|
114 |
+ <div class="layout"> |
|
115 |
+ <label class="form-title"><span>*</span>우편번호</label> |
|
116 |
+ <input type="text" class="form-control sm" v-model="mbrVO.zip" readonly /> |
|
208 | 117 |
|
209 |
- <button |
|
210 |
- :class="{ |
|
211 |
- 'large-btn': true, |
|
212 |
- 'blue-border-btn': pageRole == 'adm', |
|
213 |
- 'green-border-btn': pageRole == 'portal', |
|
214 |
- }" |
|
215 |
- @click="fnZipSearch" |
|
216 |
- > |
|
217 |
- 찾기 |
|
218 |
- </button> |
|
219 |
- </div> |
|
220 |
- <div class="layout"> |
|
221 |
- <label class="form-title"><span>*</span> 주소</label> |
|
222 |
- <input |
|
223 |
- type="text" |
|
224 |
- class="form-control sm" |
|
225 |
- v-model="mbrVO.addr" |
|
226 |
- readonly |
|
227 |
- /> |
|
228 |
- </div> |
|
229 |
- <div class="layout"> |
|
230 |
- <label class="form-title"> |
|
231 |
- 상세주소 |
|
232 |
- </label> |
|
233 |
- <input |
|
234 |
- type="text" |
|
235 |
- class="form-control sm" |
|
236 |
- ref="daddr" |
|
237 |
- v-model="mbrVO.daddr" |
|
238 |
- placeholder="상세주소를 입력하세요." |
|
239 |
- /> |
|
240 |
- </div> |
|
241 |
- </template> |
|
242 |
- <template v-if="showOpt.isStts && pageRole == 'adm'"> |
|
243 |
- <div class="layout"> |
|
244 |
- <label class="form-title"><span>*</span> 회원상태</label> |
|
245 |
- <select class="form-select sm" v-model="mbrVO.mbrStts"> |
|
246 |
- <option value="1">승인</option> |
|
247 |
- <option value="2">승인대기</option> |
|
248 |
- <option value="0">탈퇴</option> |
|
249 |
- <option value="3">차단</option> |
|
250 |
- </select> |
|
251 |
- </div> |
|
252 |
- <div class="layout" v-if="showOpt.isCntrlDt"> |
|
253 |
- <label class="form-title">차단일</label> |
|
254 |
- <input |
|
255 |
- type="date" |
|
256 |
- class="form-control sm" |
|
257 |
- ref="cntrlDt" |
|
258 |
- v-model="mbrVO.cntrlDt" |
|
259 |
- /> |
|
260 |
- </div> |
|
261 |
- </template> |
|
262 |
- <div class="layout border-bottom" v-if="showOpt.isCntrlRsn"> |
|
263 |
- <label class="form-title">차단 사유</label> |
|
264 |
- <input |
|
265 |
- type="text" |
|
266 |
- class="form-control sm" |
|
267 |
- ref="cntrlRsn" |
|
268 |
- v-model="mbrVO.cntrlRsn" |
|
269 |
- placeholder="차단 사유를 입력하세요." |
|
270 |
- /> |
|
118 |
+ <button :class="{ |
|
119 |
+ 'large-btn': true, |
|
120 |
+ 'blue-border-btn': pageRole == 'adm', |
|
121 |
+ 'green-border-btn': pageRole == 'portal', |
|
122 |
+ }" @click="fnZipSearch"> |
|
123 |
+ 찾기 |
|
124 |
+ </button> |
|
271 | 125 |
</div> |
272 |
- <div v-if="showOpt.isAuthor && pageRole == 'adm'" class="layout grid-column"> |
|
273 |
- <UserAuthorList :mbrVO="mbrVO" /> |
|
126 |
+ <div class="layout"> |
|
127 |
+ <label class="form-title"><span>*</span>주소</label> |
|
128 |
+ <input type="text" class="form-control sm" v-model="mbrVO.addr" readonly /> |
|
274 | 129 |
</div> |
130 |
+ <div class="layout"> |
|
131 |
+ <label class="form-title"> |
|
132 |
+ 상세주소 |
|
133 |
+ </label> |
|
134 |
+ <input type="text" class="form-control sm" ref="daddr" v-model="mbrVO.daddr" |
|
135 |
+ placeholder="상세주소를 입력해주세요." /> |
|
136 |
+ </div> |
|
137 |
+ </template> |
|
138 |
+ <div v-if="showOpt.isAuthor && pageRole == 'adm'" class="layout"> |
|
139 |
+ <UserAuthorList :mbrVO="mbrVO" /> |
|
140 |
+ </div> |
|
141 |
+ <!-- <template v-if="showOpt.isStts && pageRole == 'adm' && pageId != null"> --> |
|
142 |
+ <div class="layout" v-if="showOpt.isStts && pageRole == 'adm' && pageId != null"> |
|
143 |
+ <label class="form-title"><span>*</span>회원상태</label> |
|
144 |
+ <select class="form-select sm" v-model="mbrVO.mbrStts"> |
|
145 |
+ <option value="1">승인</option> |
|
146 |
+ <option value="2">승인대기</option> |
|
147 |
+ <option value="0">탈퇴</option> |
|
148 |
+ <option value="3">차단</option> |
|
149 |
+ </select> |
|
150 |
+ </div> |
|
151 |
+ <div class="layout border-bottom" v-if="showOpt.isCntrlDt && pageRole == 'adm' && pageId != null"> |
|
152 |
+ <label class="form-title">차단일</label> |
|
153 |
+ <input type="date" class="form-control sm" ref="cntrlDt" v-model="mbrVO.cntrlDt" /> |
|
154 |
+ </div> |
|
155 |
+ <!-- </template> --> |
|
156 |
+ <div class="layout" v-if="showOpt.isCntrlRsn && pageRole == 'adm' && pageId != null"> |
|
157 |
+ <label class="form-title">차단 사유</label> |
|
158 |
+ <input type="text" class="form-control sm" ref="cntrlRsn" v-model="mbrVO.cntrlRsn" |
|
159 |
+ placeholder="차단 사유를 입력해주세요." /> |
|
160 |
+ </div> |
|
275 | 161 |
</div> |
276 | 162 |
</div> |
277 | 163 |
</div> |
... | ... | @@ -280,17 +166,14 @@ |
280 | 166 |
|
281 | 167 |
|
282 | 168 |
<div class="btn-wrap"> |
283 |
- <button |
|
284 |
- :class="{ |
|
285 |
- 'btn sm main': true, |
|
286 |
- // 'blue-btn': pageRole == 'adm', |
|
287 |
- // 'green-btn': pageRole == 'portal', |
|
288 |
- }" |
|
289 |
- @click="fnUpsert" |
|
290 |
- > |
|
291 |
- {{ pageId == null ? "등록" : "수정" }} |
|
292 |
- </button> |
|
293 |
- <button class="btn sm tertiary" @click="fnCancel">취소</button> |
|
169 |
+ <button :class="{ |
|
170 |
+ 'btn sm main': true, |
|
171 |
+ // 'blue-btn': pageRole == 'adm', |
|
172 |
+ // 'green-btn': pageRole == 'portal', |
|
173 |
+ }" @click="fnUpsert"> |
|
174 |
+ {{ pageId == null ? "등록" : "수정" }} |
|
175 |
+ </button> |
|
176 |
+ <button class="btn sm tertiary" @click="fnCancel">취소</button> |
|
294 | 177 |
</div> |
295 | 178 |
</template> |
296 | 179 |
|
... | ... | @@ -400,7 +283,12 @@ |
400 | 283 |
} |
401 | 284 |
this.changeFormat(); // 휴대폰번호, 전화번호, 이메일 표기변경 |
402 | 285 |
} catch (error) { |
403 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
286 |
+ const errorData = error.response.data; |
|
287 |
+ if (errorData.message != null && errorData.message != "") { |
|
288 |
+ alert(error.response.data.message); |
|
289 |
+ } else { |
|
290 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
291 |
+ } |
|
404 | 292 |
} |
405 | 293 |
}, |
406 | 294 |
// 표기변경 |
--- client/views/component/userInfo/UserInfoView.vue
+++ client/views/component/userInfo/UserInfoView.vue
... | ... | @@ -29,9 +29,7 @@ |
29 | 29 |
</div> |
30 | 30 |
<template v-if="showOpt.isMblNo || showOpt.isTelNo"> |
31 | 31 |
<div v-if="showOpt.isMblNo" class="layout"> |
32 |
- <p class="form-title"> |
|
33 |
- 휴대폰번호 |
|
34 |
- </p> |
|
32 |
+ <p class="form-title">휴대폰번호</p> |
|
35 | 33 |
<p>{{ mbrVO.mblTelno }}</p> |
36 | 34 |
<!-- <input |
37 | 35 |
type="text" |
... | ... | @@ -84,9 +82,7 @@ |
84 | 82 |
</div> |
85 | 83 |
|
86 | 84 |
<div v-if="showOpt.isSmsAgree" class="layout"> |
87 |
- <p class="form-title"> |
|
88 |
- 문자수신 |
|
89 |
- </p> |
|
85 |
+ <p class="form-title">문자수신</p> |
|
90 | 86 |
<p>{{ mbrVO.smsRcptnAgreYn }}</p> |
91 | 87 |
<!-- <div class="check-area"> |
92 | 88 |
<div class="form-check"> |
... | ... | @@ -117,9 +113,7 @@ |
117 | 113 |
</div> |
118 | 114 |
|
119 | 115 |
<div v-if="showOpt.isEmlAgree" class="layout"> |
120 |
- <p class="form-title"> |
|
121 |
- 이메일수신 |
|
122 |
- </p> |
|
116 |
+ <p class="form-title">이메일수신</p> |
|
123 | 117 |
<p>{{ mbrVO.emlRcptnAgreYn }}</p> |
124 | 118 |
<!-- <div class="check-area"> |
125 | 119 |
<div class="form-check"> |
... | ... | @@ -152,9 +146,7 @@ |
152 | 146 |
<template v-if="showOpt.isAddr"> |
153 | 147 |
|
154 | 148 |
<div class="layout"> |
155 |
- <p class="form-title"> |
|
156 |
- 우편번호 |
|
157 |
- </p> |
|
149 |
+ <p class="form-title">우편번호</p> |
|
158 | 150 |
<p>{{ '(' + mbrVO.zip + ')'+ mbrVO.addr + mbrVO.daddr}}</p> |
159 | 151 |
<!-- <input |
160 | 152 |
type="text" |
... | ... | @@ -185,12 +177,12 @@ |
185 | 177 |
/> |
186 | 178 |
</div> --> |
187 | 179 |
</template> |
188 |
- <template v-if="showOpt.isStts && pageRole == 'adm'"> |
|
189 |
- |
|
190 |
- <div class="layout"> |
|
191 |
- <p class="form-title"> |
|
192 |
- 회원상태 |
|
193 |
- </p> |
|
180 |
+ <div v-if="showOpt.isAuthor && pageRole == 'adm'" class="layout"> |
|
181 |
+ <UserAuthorList :mbrVO="mbrVO" editMode="view" /> |
|
182 |
+ </div> |
|
183 |
+ <!-- <template v-if="showOpt.isStts && pageRole == 'adm'"> --> |
|
184 |
+ <div class="layout" v-if="showOpt.isStts && pageRole == 'adm'"> |
|
185 |
+ <p class="form-title">회원상태</p> |
|
194 | 186 |
<p v-if="mbrVO.mbrStts == 0">탈퇴</p> |
195 | 187 |
<p v-else-if="mbrVO.mbrStts == 1">승인</p> |
196 | 188 |
<p v-else-if="mbrVO.mbrStts == 2">승인대기</p> |
... | ... | @@ -202,7 +194,7 @@ |
202 | 194 |
<option value="3">차단</option> |
203 | 195 |
</select> --> |
204 | 196 |
</div> |
205 |
- <div class="layout"> |
|
197 |
+ <div class="layout border-bottom" v-if="showOpt.isCntrlDt && pageRole == 'adm'"> |
|
206 | 198 |
<p class="form-title">차단일</p> |
207 | 199 |
<p>{{ mbrVO.cntrlDt }}</p> |
208 | 200 |
<!-- <input |
... | ... | @@ -212,8 +204,8 @@ |
212 | 204 |
disabled |
213 | 205 |
/> --> |
214 | 206 |
</div> |
215 |
- <div class="layout border-bottom"> |
|
216 |
- <p class="form-title">차단 사유</p> |
|
207 |
+ <div class="layout" v-if="showOpt.isCntrlRsn && pageRole == 'adm'"> |
|
208 |
+ <p class="form-title">차단 사유</p> |
|
217 | 209 |
<p>{{ mbrVO.cntrlRsn }}</p> |
218 | 210 |
<!-- <input |
219 | 211 |
type="text" |
... | ... | @@ -222,10 +214,7 @@ |
222 | 214 |
disabled |
223 | 215 |
/> --> |
224 | 216 |
</div> |
225 |
- </template> |
|
226 |
- <div v-if="showOpt.isAuthor && pageRole == 'adm'" class="layout grid-column"> |
|
227 |
- <UserAuthorList :mbrVO="mbrVO" editMode="view" /> |
|
228 |
- </div> |
|
217 |
+ <!-- </template> --> |
|
229 | 218 |
</div> |
230 | 219 |
</div> |
231 | 220 |
</div> |
... | ... | @@ -328,7 +317,12 @@ |
328 | 317 |
this.mbrVO = response.data.data; |
329 | 318 |
this.changeFormat(); // 휴대폰번호, 전화번호, 이메일 표기변경 |
330 | 319 |
} catch (error) { |
331 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
320 |
+ const errorData = error.response.data; |
|
321 |
+ if (errorData.message != null && errorData.message != "") { |
|
322 |
+ alert(error.response.data.message); |
|
323 |
+ } else { |
|
324 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
325 |
+ } |
|
332 | 326 |
} |
333 | 327 |
}, |
334 | 328 |
|
... | ... | @@ -400,7 +394,12 @@ |
400 | 394 |
alert(response.data["message"]); |
401 | 395 |
this.fnList(); |
402 | 396 |
} catch (error) { |
403 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
397 |
+ const errorData = error.response.data; |
|
398 |
+ if (errorData.message != null && errorData.message != "") { |
|
399 |
+ alert(error.response.data.message); |
|
400 |
+ } else { |
|
401 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
402 |
+ } |
|
404 | 403 |
} |
405 | 404 |
}, |
406 | 405 |
}, |
--- client/views/layout/AdminHeader.vue
+++ client/views/layout/AdminHeader.vue
... | ... | @@ -34,7 +34,6 @@ |
34 | 34 |
data() { |
35 | 35 |
return { |
36 | 36 |
mbrNm: store.state.mbrNm, |
37 |
- pgNm: store.state.menu && store.state.menu.menuNm ? store.state.menu.menuNm : "홈", |
|
38 | 37 |
} |
39 | 38 |
}, |
40 | 39 |
created() { |
... | ... | @@ -63,20 +62,44 @@ |
63 | 62 |
|
64 | 63 |
}, |
65 | 64 |
watch: { |
66 |
- 'pgNm'(newValue,oldValue){ |
|
67 |
- console.log(oldValue) |
|
68 |
- }, |
|
69 | 65 |
'$store.state.menu'(newValue) { |
70 |
- this.pgNm = newValue.menuNm |
|
66 |
+ if(newValue) { |
|
67 |
+ this.pgNm = newValue.menuNm |
|
68 |
+ } |
|
69 |
+ }, |
|
70 |
+ 'this.$route.path'(newValue) { |
|
71 |
+ if(newValue) { |
|
72 |
+ } |
|
71 | 73 |
}, |
72 | 74 |
|
73 | 75 |
}, |
74 | 76 |
computed: { |
75 |
- |
|
76 | 77 |
pgNm() { |
77 |
- return store.state.menu && store.state.menu.menuNm ? store.state.menu.menuNm : "홈"; |
|
78 |
- } |
|
78 |
+ const route = this.$route; |
|
79 |
+ const storeMenu = store.state.menu; |
|
79 | 80 |
|
81 |
+ if (route?.meta?.korName) { |
|
82 |
+ if (route.path === '/adm/main.page') { |
|
83 |
+ return "홈"; |
|
84 |
+ } |
|
85 |
+ |
|
86 |
+ if (route.meta.typeId.includes("BBS_MNG")) { |
|
87 |
+ const matchedMenu = store.state.flatMenuList.find(menu => menu.menuTypeCtgry === route.meta.typeId); |
|
88 |
+ if (matchedMenu) { |
|
89 |
+ return matchedMenu.menuNm; |
|
90 |
+ } |
|
91 |
+ } |
|
92 |
+ |
|
93 |
+ if (storeMenu?.menuNm) { |
|
94 |
+ return storeMenu.menuNm; |
|
95 |
+ } else { |
|
96 |
+ return route.meta.korName; |
|
97 |
+ } |
|
98 |
+ } |
|
99 |
+ |
|
100 |
+ return "홈"; |
|
101 |
+ // return store.state.menu && store.state.menu.menuNm ? store.state.menu.menuNm : "홈"; |
|
102 |
+ } |
|
80 | 103 |
}, |
81 | 104 |
mounted() { |
82 | 105 |
|
--- client/views/layout/AdminMenu.vue
+++ client/views/layout/AdminMenu.vue
... | ... | @@ -130,7 +130,7 @@ |
130 | 130 |
if (menu.linkType === "0") { |
131 | 131 |
// 현재창 |
132 | 132 |
this.$router.push({ |
133 |
- path: menu.routerUrl, |
|
133 |
+ path: menu.routerUrl, |
|
134 | 134 |
}); |
135 | 135 |
} else if (menu.linkType === "1") { |
136 | 136 |
// 새창 |
... | ... | @@ -202,10 +202,21 @@ |
202 | 202 |
return formatted; |
203 | 203 |
}); |
204 | 204 |
}, |
205 |
+ |
|
206 |
+ // 모든 메뉴 닫기 |
|
207 |
+ closeAllMenus(menus) { |
|
208 |
+ for (const menu of menus) { |
|
209 |
+ menu.isOpen = false; |
|
210 |
+ |
|
211 |
+ if (Array.isArray(menu.childList) && menu.childList.length > 0) { |
|
212 |
+ this.closeAllMenus(menu.childList); // 재귀로 하위 메뉴까지 모두 닫기 |
|
213 |
+ } |
|
214 |
+ } |
|
215 |
+ } |
|
205 | 216 |
}, |
206 | 217 |
watch: { |
207 | 218 |
// 나중에 네비게이션 가드에서 form 받을 수 있으면 form adm/main으로 갈때 sotre.state값0로 바꿔주기 |
208 |
- $route(to) { |
|
219 |
+ $route(to, from) { |
|
209 | 220 |
this.currentPath = to.path; |
210 | 221 |
}, |
211 | 222 |
"$store.state.mbrNm"(newVal) { |
... | ... | @@ -218,7 +229,13 @@ |
218 | 229 |
this.menuCheck(); |
219 | 230 |
} |
220 | 231 |
} |
221 |
- } |
|
232 |
+ }, |
|
233 |
+ '$store.state.menu'(newValue) { |
|
234 |
+ if(!newValue) { |
|
235 |
+ this.closeAllMenus(this.menuList); |
|
236 |
+ this.activeMenus = []; |
|
237 |
+ } |
|
238 |
+ }, |
|
222 | 239 |
} |
223 | 240 |
}; |
224 | 241 |
</script> |
--- client/views/pages/App.vue
+++ client/views/pages/App.vue
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 |
</main> |
11 | 11 |
</div> |
12 | 12 |
<div v-else v-cloak class="user-wrap relative"> |
13 |
- <UserHeader v-if="path != this.$filters.ctxPath('/login.page')"/> |
|
13 |
+ <UserHeader v-if="path != this.$filters.ctxPath('/login.page') && !$route.path.includes('/popup.page')"/> |
|
14 | 14 |
<main class="main-wrap"> |
15 | 15 |
<Breadcrumb v-if="$route.path !== this.$filters.ctxPath('/adm/main.page') && $route.path !== this.$filters.ctxPath('/main.page')" /> |
16 | 16 |
<router-view /> |
... | ... | @@ -36,13 +36,16 @@ |
36 | 36 |
methods: { |
37 | 37 |
// 메뉴 만족도 조사 사용 여부 |
38 | 38 |
menuYnCheck(yn) { |
39 |
- console.log("menuYnCheck", yn); |
|
39 |
+ // console.log("menuYnCheck", yn); |
|
40 | 40 |
this.menuUse = yn; |
41 | 41 |
}, |
42 | 42 |
}, |
43 | 43 |
watch: { |
44 | 44 |
$route(to, from) { |
45 | 45 |
this.path = to.path; |
46 |
+ if(this.path.includes('/insert.page') || this.path.includes('/view.page')) { |
|
47 |
+ this.menuUse = "N"; |
|
48 |
+ } |
|
46 | 49 |
}, |
47 | 50 |
}, |
48 | 51 |
computed: { |
--- client/views/pages/AppRouter.js
+++ client/views/pages/AppRouter.js
... | ... | @@ -10,14 +10,14 @@ |
10 | 10 |
|
11 | 11 |
const beforeRoutes = [ |
12 | 12 |
/* 메인화면 */ |
13 |
- { path: "/", name: "main", component: Main }, |
|
13 |
+ { path: "/", name: "main", korName: "홈", component: Main }, |
|
14 | 14 |
|
15 | 15 |
// 관리자 |
16 | 16 |
{ |
17 | 17 |
path: "/adm", |
18 | 18 |
children: [ |
19 |
- { path: "commonSelectListOne.page", name: "CommonSelectListOne", component: CommonSelectListOne }, |
|
20 |
- { path: "commonSelectList.page", name: "CommonSelectList", component: CommonSelectList }, |
|
19 |
+ { path: "commonSelectListOne.page", name: "CommonSelectListOne", korName: "", component: CommonSelectListOne }, |
|
20 |
+ { path: "commonSelectList.page", name: "CommonSelectList", korName: "", component: CommonSelectList }, |
|
21 | 21 |
], |
22 | 22 |
}, |
23 | 23 |
]; |
... | ... | @@ -55,8 +55,9 @@ |
55 | 55 |
const newRoutes = res.data.data.map(route => ({ |
56 | 56 |
path: route.pageCrs, |
57 | 57 |
name: route.contsEngNm, |
58 |
+ korName: route.contsKornNm, |
|
58 | 59 |
component: () => import(`${route.compnCrs}`), |
59 |
- meta: { authrt: route.authrtList, typeId: route.contsId } |
|
60 |
+ meta: { authrt: route.authrtList, typeId: route.contsId, korName: route.contsKornNm } |
|
60 | 61 |
})); |
61 | 62 |
return newRoutes; |
62 | 63 |
}else { |
--- client/views/pages/AppStore.js
+++ client/views/pages/AppStore.js
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 |
|
5 | 5 |
export default createStore({ |
6 | 6 |
plugins: [createPersistedState({ |
7 |
- paths: ['loginMode', 'authorization', 'mbrId', 'mbrNm', 'roles', 'contextPath', 'pageAuth', 'menu'] |
|
7 |
+ paths: ['loginMode', 'authorization', 'mbrId', 'mbrNm', 'roles', 'contextPath', 'pageAuth'] |
|
8 | 8 |
})], |
9 | 9 |
state: { |
10 | 10 |
authorization: null, |
... | ... | @@ -65,6 +65,21 @@ |
65 | 65 |
}, |
66 | 66 |
setMenuList(state, menuList) { |
67 | 67 |
state.menuList = menuList; |
68 |
+ // 메뉴트리 펼치기 |
|
69 |
+ const flattenMenus = (menus) => { |
|
70 |
+ const result = []; |
|
71 |
+ |
|
72 |
+ for (const menu of menus) { |
|
73 |
+ result.push(menu); |
|
74 |
+ if (menu.childList?.length) { |
|
75 |
+ result.push(...flattenMenus(menu.childList)); |
|
76 |
+ } |
|
77 |
+ } |
|
78 |
+ |
|
79 |
+ return result; |
|
80 |
+ } |
|
81 |
+ const flattenedMenuList = flattenMenus(menuList); |
|
82 |
+ state.flatMenuList = flattenedMenuList; |
|
68 | 83 |
}, |
69 | 84 |
setContextPath(state, ctx) { |
70 | 85 |
state.contextPath = ctx; |
--- client/views/pages/adm/boardManagement/boardManagement/BoardManagementInsert.vue
+++ client/views/pages/adm/boardManagement/boardManagement/BoardManagementInsert.vue
... | ... | @@ -16,19 +16,19 @@ |
16 | 16 |
<div class="layout"> |
17 | 17 |
<label class="form-title">게시판 상단 정보</label> |
18 | 18 |
<input type="text" class="form-control sm" v-model="bbsMng.bbsUpInfo" |
19 |
- placeholder="게시판 상단에 표기될 정보를 입력하세요." /> |
|
19 |
+ placeholder="게시판 상단에 표기될 정보를 입력해주세요." /> |
|
20 | 20 |
</div> |
21 | 21 |
<div class="layout"> |
22 | 22 |
<label class="form-title">게시판 설명</label> |
23 | 23 |
<input type="text" class="form-control sm" v-model="bbsMng.bbsExpln" |
24 |
- placeholder="게시판 설명을 입력하세요." /> |
|
24 |
+ placeholder="게시판 설명을 입력해주세요." /> |
|
25 | 25 |
</div> |
26 | 26 |
<div class="layout"> |
27 | 27 |
<label class="form-title"><span>*</span>게시판 유형</label> |
28 | 28 |
<select name="" id="" class="form-select sm" @change="typeSelect" |
29 | 29 |
:disabled="bbsMng.bbsMngId != null"> |
30 | 30 |
<option :value="null" disabled :selected="bbsMng.bbsTypeId == null"> |
31 |
- 선택해주세요 |
|
31 |
+ 선택하세요 |
|
32 | 32 |
</option> |
33 | 33 |
<option v-for="(item, idx) in bbsTypeList" :value="item.bbsTypeId" :key="idx"> |
34 | 34 |
{{ item.bbsTypeKornNm }} |
... | ... | @@ -42,7 +42,7 @@ |
42 | 42 |
<div class="layout"> |
43 | 43 |
<label class="form-title"><span>*</span>페이지 유형</label> |
44 | 44 |
<select name="" id="" class="form-select sm" v-model="bbsMng.cd"> |
45 |
- <option :value="null" disabled>선택해주세요</option> |
|
45 |
+ <option :value="null" disabled>선택하세요</option> |
|
46 | 46 |
<option v-for="(item, idx) in pageTypeList" :value="item.cd" :key="idx"> |
47 | 47 |
{{ item.cdNm }} |
48 | 48 |
</option> |
... | ... | @@ -90,7 +90,7 @@ |
90 | 90 |
<label class="form-title"><span>*</span>첨부파일 확장자</label> |
91 | 91 |
<div class="form-group"> |
92 | 92 |
<div class="layout border-none"> |
93 |
- <input type="text" class="form-control sm" v-model="inputExtNm" placeholder="첨부파일 확장자를 입력하세요" |
|
93 |
+ <input type="text" class="form-control sm" v-model="inputExtNm" placeholder="첨부파일 확장자를 입력하세요." |
|
94 | 94 |
@keyup.enter="addinputExtNm" /> |
95 | 95 |
<button class="btn-ico xsm ico-plus" @click="addinputExtNm" title="추가"></button> |
96 | 96 |
</div> |
... | ... | @@ -115,7 +115,7 @@ |
115 | 115 |
<label class="form-title"><span>*</span>파일크기 제한</label> |
116 | 116 |
<div class="input-group"> |
117 | 117 |
<input type="number" class="form-control sm" v-model="bbsMng.fileSzLmt" |
118 |
- :placeholder="'첨부파일 파일 크기를 입력하세요(0 입력 시 최대' + maxFileSize + 'MB)'" /> |
|
118 |
+ :placeholder="'첨부파일 파일 크기를 입력하세요.(0 입력 시 최대' + maxFileSize + 'MB)'" /> |
|
119 | 119 |
<span>MByte</span> |
120 | 120 |
</div> |
121 | 121 |
</div> |
... | ... | @@ -215,7 +215,7 @@ |
215 | 215 |
}, */ |
216 | 216 |
// 목록으로 이동 |
217 | 217 |
fnCancel() { |
218 |
- if (!confirm("등록을 취소하시겠습니까?")) { |
|
218 |
+ if (!confirm("작성을 취소하시겠습니까?")) { |
|
219 | 219 |
return; |
220 | 220 |
} |
221 | 221 |
if (this.bbsMng.bbsMngId == null || this.bbsMng.bbsMngId == 0) { |
... | ... | @@ -256,7 +256,12 @@ |
256 | 256 |
this.maxFileSize = res.data.data.maxFileSize; // 시스템 최대 파일 크기 |
257 | 257 |
} |
258 | 258 |
} catch (error) { |
259 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
259 |
+ const errorData = error.response.data; |
|
260 |
+ if (errorData.message != null && errorData.message != "") { |
|
261 |
+ alert(error.response.data.message); |
|
262 |
+ } else { |
|
263 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
264 |
+ } |
|
260 | 265 |
} |
261 | 266 |
}, |
262 | 267 |
|
... | ... | @@ -285,7 +290,12 @@ |
285 | 290 |
}); |
286 | 291 |
} |
287 | 292 |
} catch (error) { |
288 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
293 |
+ const errorData = error.response.data; |
|
294 |
+ if (errorData.message != null && errorData.message != "") { |
|
295 |
+ alert(error.response.data.message); |
|
296 |
+ } else { |
|
297 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
298 |
+ } |
|
289 | 299 |
} |
290 | 300 |
}, |
291 | 301 |
// 수정 |
... | ... | @@ -310,17 +320,22 @@ |
310 | 320 |
}); |
311 | 321 |
} |
312 | 322 |
} catch (error) { |
313 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
323 |
+ const errorData = error.response.data; |
|
324 |
+ if (errorData.message != null && errorData.message != "") { |
|
325 |
+ alert(error.response.data.message); |
|
326 |
+ } else { |
|
327 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
328 |
+ } |
|
314 | 329 |
} |
315 | 330 |
}, |
316 | 331 |
// 유효성 검사 |
317 | 332 |
Validation() { |
318 | 333 |
if (this.bbsMng.bbsNm == null || this.bbsMng.bbsNm == "") { |
319 |
- alert("게시판 명을 입력해주세요."); |
|
334 |
+ alert("게시판 명을 입력하세요."); |
|
320 | 335 |
return false; |
321 | 336 |
} |
322 | 337 |
if (this.bbsMng.bbsTypeId == null || this.bbsMng.bbsTypeId == "") { |
323 |
- alert("게시판 유형을 선택해주세요."); |
|
338 |
+ alert("게시판 유형을 선택하세요."); |
|
324 | 339 |
return false; |
325 | 340 |
} |
326 | 341 |
if ( |
... | ... | @@ -328,31 +343,31 @@ |
328 | 343 |
this.bbsMng.artclCnt == "" || |
329 | 344 |
this.bbsMng.artclCnt < 1 |
330 | 345 |
) { |
331 |
- alert("목록 개수는 1 이상을 입력해주세요."); |
|
346 |
+ alert("목록 개수는 1 이상을 입력하세요."); |
|
332 | 347 |
return false; |
333 | 348 |
} |
334 | 349 |
if (this.bbsMng.cd == null || this.bbsMng.cd == "") { |
335 |
- alert("페이지 유형을 선택해주세요."); |
|
350 |
+ alert("페이지 유형을 선택하세요."); |
|
336 | 351 |
return false; |
337 | 352 |
} |
338 | 353 |
/* if (this.bbsMng.atchFileUseYn == null || this.bbsMng.atchFileUseYn == '') { |
339 |
- alert('첨부파일 기능을 선택해주세요.'); |
|
354 |
+ alert('첨부파일 기능을 선택하세요.'); |
|
340 | 355 |
return false; |
341 | 356 |
} |
342 | 357 |
if (this.bbsMng.ntcUseYn == null || this.bbsMng.ntcUseYn == '') { |
343 |
- alert('공지글 기능을 선택해주세요.'); |
|
358 |
+ alert('공지글 기능을 선택하세요.'); |
|
344 | 359 |
return false; |
345 | 360 |
} |
346 | 361 |
if (this.bbsMng.prvtPstUseYn == null || this.bbsMng.prvtPstUseYn == '') { |
347 |
- alert('비밀글 기능을 선택해주세요.'); |
|
362 |
+ alert('비밀글 기능을 선택하세요.'); |
|
348 | 363 |
return false; |
349 | 364 |
} |
350 | 365 |
if (this.bbsMng.bfrAftrPstUseYn == null || this.bbsMng.bfrAftrPstUseYn == '') { |
351 |
- alert('이전글/다음글 기능을 선택해주세요.'); |
|
366 |
+ alert('이전글/다음글 기능을 선택하세요.'); |
|
352 | 367 |
return false; |
353 | 368 |
} |
354 | 369 |
if (this.bbsMng.cmntUseYn == null || this.bbsMng.cmntUseYn == '') { |
355 |
- alert('댓글 기능을 선택해주세요.'); |
|
370 |
+ alert('댓글 기능을 선택하세요.'); |
|
356 | 371 |
return false; |
357 | 372 |
} */ |
358 | 373 |
if (this.bbsMng.fileSzLmt > this.maxFileSize) { |
... | ... | @@ -366,7 +381,7 @@ |
366 | 381 |
) { |
367 | 382 |
this.bbsMng.fileSzLmt = this.maxFileSize; // 시스템 최대 파일 크기 |
368 | 383 |
/* if (this.bbsMng.atchFileUseYn == 'Y') { |
369 |
- alert('파일 크기는 0 이상을 입력해주세요.'); |
|
384 |
+ alert('파일 크기는 0 이상을 입력하세요.'); |
|
370 | 385 |
return false; |
371 | 386 |
} else { |
372 | 387 |
this.bbsMng.fileSzLmt = 0; |
... | ... | @@ -378,7 +393,7 @@ |
378 | 393 |
addinputExtNm: function () { |
379 | 394 |
// 입력받은 확장자 앞에 .이 있는지 확인하고 .이 있으면 제거 |
380 | 395 |
if (this.inputExtNm == null || this.inputExtNm.trim() == "") { |
381 |
- alert("확장자를 입력해주세요."); |
|
396 |
+ alert("확장자를 추가하세요."); |
|
382 | 397 |
return; |
383 | 398 |
} |
384 | 399 |
if (this.inputExtNm.indexOf(".") === 0) { |
--- client/views/pages/adm/boardManagement/boardManagement/BoardManagementSelectList.vue
+++ client/views/pages/adm/boardManagement/boardManagement/BoardManagementSelectList.vue
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 |
<option value="">전체</option> |
7 | 7 |
<option v-for="(item, idx) in codeList" :key="idx" :value="item.cd">{{ item.cdNm }}</option> |
8 | 8 |
</select> --> |
9 |
- <input type="text" class="form-control sm border-none" v-model="search.searchText" placeholder="게시판 명을 입력해주세요" @keyup.enter="findAll"> |
|
9 |
+ <input type="text" class="form-control sm border-none" v-model="search.searchText" placeholder="게시판 명을 입력하세요." @keyup.enter="findAll"> |
|
10 | 10 |
|
11 | 11 |
<button class="btn-ico xsm ico-sch" @click="findAll"> |
12 | 12 |
<span class="sr-only">검색</span> |
... | ... | @@ -23,7 +23,7 @@ |
23 | 23 |
</colgroup> |
24 | 24 |
<thead> |
25 | 25 |
<tr> |
26 |
- <th rowspan="2">번호</th> |
|
26 |
+ <th rowspan="2">NO</th> |
|
27 | 27 |
<th rowspan="2">게시판명</th> |
28 | 28 |
<th rowspan="2">유형</th> |
29 | 29 |
<th colspan="5">세부기능</th> |
... | ... | @@ -65,7 +65,7 @@ |
65 | 65 |
:click="findAll" |
66 | 66 |
/> |
67 | 67 |
|
68 |
- <button class="btn sm" @click="fnAdd">등록</button> |
|
68 |
+ <button class="btn sm main" @click="fnAdd">등록</button> |
|
69 | 69 |
|
70 | 70 |
</div> |
71 | 71 |
</template> |
... | ... | @@ -110,7 +110,12 @@ |
110 | 110 |
// this.codeList = res.data.data.codeList; // 검색 조건 항목 |
111 | 111 |
this.makeTbody(); |
112 | 112 |
} catch (error) { |
113 |
- alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); |
|
113 |
+ const errorData = error.response.data; |
|
114 |
+ if (errorData.message != null && errorData.message != "") { |
|
115 |
+ alert(error.response.data.message); |
|
116 |
+ } else { |
|
117 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
118 |
+ } |
|
114 | 119 |
} |
115 | 120 |
}, |
116 | 121 |
// 상세 조회 |
--- client/views/pages/adm/boardManagement/boardManagement/BoardManagementSelectListOne.vue
+++ client/views/pages/adm/boardManagement/boardManagement/BoardManagementSelectListOne.vue
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 |
<div class="scroll"> |
5 | 5 |
<div class="form-box mb30"> |
6 | 6 |
<div class="form-box-title"> |
7 |
- <p >기본 설정</p> |
|
7 |
+ <p >기본설정</p> |
|
8 | 8 |
</div> |
9 | 9 |
<div class="form-content"> |
10 | 10 |
<div class="layout"> |
... | ... | @@ -73,7 +73,7 @@ |
73 | 73 |
</div> |
74 | 74 |
<div class="layout"> |
75 | 75 |
<p class="form-title">페이지 유형</p> |
76 |
- <p>{{ bbsMng.cd }}</p> |
|
76 |
+ <p>{{ pageTypeName }}</p> |
|
77 | 77 |
<!-- <select |
78 | 78 |
name="" |
79 | 79 |
id="" |
... | ... | @@ -328,7 +328,12 @@ |
328 | 328 |
this.pageTypeList = res.data.data.pageTypeList; |
329 | 329 |
} |
330 | 330 |
} catch (error) { |
331 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
331 |
+ const errorData = error.response.data; |
|
332 |
+ if (errorData.message != null && errorData.message != "") { |
|
333 |
+ alert(error.response.data.message); |
|
334 |
+ } else { |
|
335 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
336 |
+ } |
|
332 | 337 |
} |
333 | 338 |
}, |
334 | 339 |
// 목록으로 이동 |
... | ... | @@ -361,12 +366,22 @@ |
361 | 366 |
}); |
362 | 367 |
} |
363 | 368 |
} catch (error) { |
364 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
369 |
+ const errorData = error.response.data; |
|
370 |
+ if (errorData.message != null && errorData.message != "") { |
|
371 |
+ alert(error.response.data.message); |
|
372 |
+ } else { |
|
373 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
374 |
+ } |
|
365 | 375 |
} |
366 | 376 |
}, |
367 | 377 |
}, |
368 | 378 |
watch: {}, |
369 |
- computed: {}, |
|
379 |
+ computed: { |
|
380 |
+ pageTypeName() { |
|
381 |
+ const match = this.pageTypeList.find(item => item.cd === this.bbsMng.cd); |
|
382 |
+ return match ? match.cdNm : this.bbsMng.cd; |
|
383 |
+ } |
|
384 |
+ }, |
|
370 | 385 |
components: {}, |
371 | 386 |
mounted() {}, |
372 | 387 |
}; |
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert copy.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert copy.vue
... | ... | @@ -298,7 +298,7 @@ |
298 | 298 |
|
299 | 299 |
// 취소 버튼 동작 |
300 | 300 |
fnCancel() { |
301 |
- if (!confirm("등록을 취소하시겠습니까?")) { |
|
301 |
+ if (!confirm("작성을 취소하시겠습니까?")) { |
|
302 | 302 |
return; |
303 | 303 |
} |
304 | 304 |
if (this.bbsCn.bbsId == null || this.bbsCn.bbsId == 0) { |
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert.vue
... | ... | @@ -229,7 +229,7 @@ |
229 | 229 |
|
230 | 230 |
// 취소 버튼 동작 |
231 | 231 |
fnCancel() { |
232 |
- if (!confirm("등록을 취소하시겠습니까?")) { |
|
232 |
+ if (!confirm("작성을 취소하시겠습니까?")) { |
|
233 | 233 |
return; |
234 | 234 |
} |
235 | 235 |
if (this.bbsCn.bbsId == null || this.bbsCn.bbsId == 0) { |
... | ... | @@ -262,7 +262,12 @@ |
262 | 262 |
this.$refs.ckeditor5.createEditor(); |
263 | 263 |
} |
264 | 264 |
} catch (error) { |
265 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
265 |
+ const errorData = error.response.data; |
|
266 |
+ if (errorData.message != null && errorData.message != "") { |
|
267 |
+ alert(error.response.data.message); |
|
268 |
+ } else { |
|
269 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
270 |
+ } |
|
266 | 271 |
} |
267 | 272 |
}, |
268 | 273 |
// 첨부파일 등록 |
... | ... | @@ -346,8 +351,12 @@ |
346 | 351 |
}); |
347 | 352 |
}) |
348 | 353 |
.catch((error) => { |
349 |
- const message = error.response.data.message; |
|
350 |
- alert(message); |
|
354 |
+ const errorData = error.response.data; |
|
355 |
+ if (errorData.message != null && errorData.message != "") { |
|
356 |
+ alert(error.response.data.message); |
|
357 |
+ } else { |
|
358 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
359 |
+ } |
|
351 | 360 |
}); |
352 | 361 |
}, |
353 | 362 |
// 수정 |
... | ... | @@ -408,14 +417,18 @@ |
408 | 417 |
}); |
409 | 418 |
}) |
410 | 419 |
.catch((error) => { |
411 |
- const message = error.response.data.message; |
|
412 |
- alert(message); |
|
420 |
+ const errorData = error.response.data; |
|
421 |
+ if (errorData.message != null && errorData.message != "") { |
|
422 |
+ alert(error.response.data.message); |
|
423 |
+ } else { |
|
424 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
425 |
+ } |
|
413 | 426 |
}); |
414 | 427 |
}, |
415 | 428 |
// 유효성 검사 |
416 | 429 |
Validation() { |
417 | 430 |
if (!this.bbsCn.bbsNm || this.bbsCn.bbsNm.trim() === "") { |
418 |
- alert("게시판 제목을 입력해주세요."); |
|
431 |
+ alert("게시판 제목을 입력하세요."); |
|
419 | 432 |
return false; |
420 | 433 |
} |
421 | 434 |
|
... | ... | @@ -436,14 +449,14 @@ |
436 | 449 |
(this.isEmpty(this.bbsCn.bbsCn) || |
437 | 450 |
this.removeHtmlAndSpace(this.bbsCn.bbsCn) === "") |
438 | 451 |
) { |
439 |
- alert("게시판 내용을 입력해주세요."); |
|
452 |
+ alert("게시판 내용을 입력하세요."); |
|
440 | 453 |
return false; |
441 | 454 |
} |
442 | 455 |
if ( |
443 | 456 |
this.bbsCn.ntcPstYn === "Y" && |
444 | 457 |
(this.bbsCn.ntcBgngDt === null || this.bbsCn.ntcEndDt === null) |
445 | 458 |
) { |
446 |
- alert("공지기간을 올바르게 설정해주세요."); |
|
459 |
+ alert("공지기간을 올바르게 설정하세요."); |
|
447 | 460 |
return false; |
448 | 461 |
} |
449 | 462 |
|
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectList.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectList.vue
... | ... | @@ -150,7 +150,7 @@ |
150 | 150 |
data() { |
151 | 151 |
return { |
152 | 152 |
pageRole: this.$store.state.userType, |
153 |
- colgroup: ["5%", "45%", "20%", "25%", "5"], |
|
153 |
+ colgroup: ["5%", "45%", "20%", "25%", "5%"], |
|
154 | 154 |
thead: ["NO", "제목", "작성자", "작성일", "조회수"], |
155 | 155 |
tbody: [], |
156 | 156 |
search: { ...defaultSearchParams }, |
... | ... | @@ -174,9 +174,20 @@ |
174 | 174 |
}; |
175 | 175 |
}, |
176 | 176 |
created() { |
177 |
- this.fnBbsIdExtraction(); |
|
178 |
- this.resotreQueryParams("queryParams"); |
|
179 |
- this.findAll(); |
|
177 |
+ // this.fnBbsIdExtraction(); |
|
178 |
+ // this.resotreQueryParams("queryParams"); |
|
179 |
+ // this.findAll(); |
|
180 |
+ }, |
|
181 |
+ // 컴포넌트(페이지) 초기 진입 시 |
|
182 |
+ beforeRouteEnter(to, from, next) { |
|
183 |
+ next(vm => { |
|
184 |
+ vm.fnInit(); |
|
185 |
+ }); |
|
186 |
+ }, |
|
187 |
+ // 동일 컴포넌트로 재진입 시 |
|
188 |
+ beforeRouteUpdate(to, from, next) { |
|
189 |
+ this.fnInit(); |
|
190 |
+ next(); |
|
180 | 191 |
}, |
181 | 192 |
methods: { |
182 | 193 |
// 목록 조회 |
... | ... | @@ -196,7 +207,12 @@ |
196 | 207 |
this.ntcList = []; |
197 | 208 |
this.makeTbody(); |
198 | 209 |
} catch (error) { |
199 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
210 |
+ const errorData = error.response.data; |
|
211 |
+ if (errorData.message != null && errorData.message != "") { |
|
212 |
+ alert(error.response.data.message); |
|
213 |
+ } else { |
|
214 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
215 |
+ } |
|
200 | 216 |
} |
201 | 217 |
}, |
202 | 218 |
// 상세 조회 |
... | ... | @@ -245,7 +261,7 @@ |
245 | 261 |
if (bbsMng.prvtPstYn === "Y") { |
246 | 262 |
this.lockList.push(idx); |
247 | 263 |
|
248 |
- // 작성자와 로그인한 사용자가 같을 때, 관리자 일 경우 title 표시 |
|
264 |
+ // 작성자와 로그인한 사용자가 같거나, 로그인한 사용자가 관리자 일 경우 title 표시 |
|
249 | 265 |
if (bbsMng.rgtr != this.mbrId && this.roles != "ROLE_ADMIN") { |
250 | 266 |
return "비밀글입니다."; |
251 | 267 |
} |
... | ... | @@ -274,16 +290,23 @@ |
274 | 290 |
this.search = { ...defaultSearchParams }; |
275 | 291 |
this.findAll(); |
276 | 292 |
}, |
293 |
+ |
|
294 |
+ // 초기 조회 |
|
295 |
+ fnInit() { |
|
296 |
+ this.fnBbsIdExtraction(); |
|
297 |
+ this.resotreQueryParams("queryParams"); |
|
298 |
+ this.findAll(); |
|
299 |
+ } |
|
277 | 300 |
}, |
278 | 301 |
watch: { |
279 | 302 |
$route(to, from) { |
280 | 303 |
// path가 다를 때만 조회 |
281 |
- if (to.path !== from.path) { |
|
282 |
- this.fnBbsIdExtraction(); |
|
283 |
- this.resotreQueryParams("queryParams"); |
|
284 |
- this.findAll(); |
|
285 |
- this.path = this.$store.state.path; |
|
286 |
- } |
|
304 |
+ // if (to.path !== from.path) { |
|
305 |
+ // this.fnBbsIdExtraction(); |
|
306 |
+ // this.resotreQueryParams("queryParams"); |
|
307 |
+ // this.findAll(); |
|
308 |
+ // this.path = this.$store.state.path; |
|
309 |
+ // } |
|
287 | 310 |
}, |
288 | 311 |
}, |
289 | 312 |
computed: {}, |
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
... | ... | @@ -77,7 +77,7 @@ |
77 | 77 |
> |
78 | 78 |
{{ prevBbsCn.bbsNm }} |
79 | 79 |
</td> |
80 |
- <td v-else class="pd10">이전글이 없습니다</td> |
|
80 |
+ <td v-else class="pd10">이전글이 없습니다.</td> |
|
81 | 81 |
</tr> |
82 | 82 |
<tr> |
83 | 83 |
<td class="pd10 text-ct">다음글</td> |
... | ... | @@ -88,7 +88,7 @@ |
88 | 88 |
> |
89 | 89 |
{{ nextBbsCn.bbsNm }} |
90 | 90 |
</td> |
91 |
- <td v-else class="pd10">다음글이 없습니다</td> |
|
91 |
+ <td v-else class="pd10">다음글이 없습니다.</td> |
|
92 | 92 |
</tr> |
93 | 93 |
</tbody> |
94 | 94 |
</table> |
... | ... | @@ -229,7 +229,7 @@ |
229 | 229 |
> |
230 | 230 |
<a :href="`${path}/view.page?pageId=${prevBbsCn.bbsId}`">{{ prevBbsCn.bbsNm }}</a> |
231 | 231 |
</td> |
232 |
- <td v-else class="pd10">이전글이 없습니다</td> |
|
232 |
+ <td v-else class="pd10">이전글이 없습니다.</td> |
|
233 | 233 |
</tr> |
234 | 234 |
<tr> |
235 | 235 |
<td class="pd10 text-ct">다음글</td> |
... | ... | @@ -238,7 +238,7 @@ |
238 | 238 |
> |
239 | 239 |
<a :href="`${path}/view.page?pageId=${nextBbsCn.bbsId}`">{{ nextBbsCn.bbsNm }}</a> |
240 | 240 |
</td> |
241 |
- <td v-else class="pd10">다음글이 없습니다</td> |
|
241 |
+ <td v-else class="pd10">다음글이 없습니다.</td> |
|
242 | 242 |
</tr> |
243 | 243 |
</tbody> |
244 | 244 |
</table> |
... | ... | @@ -348,7 +348,12 @@ |
348 | 348 |
this.updateVwCnt(); |
349 | 349 |
} |
350 | 350 |
} catch (error) { |
351 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
351 |
+ const errorData = error.response.data; |
|
352 |
+ if (errorData.message != null && errorData.message != "") { |
|
353 |
+ alert(error.response.data.message); |
|
354 |
+ } else { |
|
355 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
356 |
+ } |
|
352 | 357 |
} |
353 | 358 |
}, |
354 | 359 |
// 댓글 조회 |
... | ... | @@ -362,7 +367,12 @@ |
362 | 367 |
this.cmntList = res.data.data.cmntList; |
363 | 368 |
} |
364 | 369 |
} catch (error) { |
365 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
370 |
+ const errorData = error.response.data; |
|
371 |
+ if (errorData.message != null && errorData.message != "") { |
|
372 |
+ alert(error.response.data.message); |
|
373 |
+ } else { |
|
374 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
375 |
+ } |
|
366 | 376 |
} |
367 | 377 |
}, |
368 | 378 |
// 첨부파일 다운로드 로직 |
... | ... | @@ -391,7 +401,12 @@ |
391 | 401 |
document.body.removeChild(link); |
392 | 402 |
window.URL.revokeObjectURL(url); |
393 | 403 |
} catch (error) { |
394 |
- alert("파일 다운로드 중 오류가 발생했습니다."); |
|
404 |
+ const errorData = error.response.data; |
|
405 |
+ if (errorData.message != null && errorData.message != "") { |
|
406 |
+ alert(error.response.data.message); |
|
407 |
+ } else { |
|
408 |
+ alert("파일 다운로드 중 오류가 발생했습니다."); |
|
409 |
+ } |
|
395 | 410 |
} |
396 | 411 |
}, |
397 | 412 |
// 목록으로 이동 |
... | ... | @@ -433,7 +448,12 @@ |
433 | 448 |
}); |
434 | 449 |
} |
435 | 450 |
} catch (error) { |
436 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
451 |
+ const errorData = error.response.data; |
|
452 |
+ if (errorData.message != null && errorData.message != "") { |
|
453 |
+ alert(error.response.data.message); |
|
454 |
+ } else { |
|
455 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
456 |
+ } |
|
437 | 457 |
} |
438 | 458 |
}, |
439 | 459 |
// 조회수 증가 |
... | ... | @@ -444,7 +464,12 @@ |
444 | 464 |
}; |
445 | 465 |
const res = await updateVwCnt(params); |
446 | 466 |
} catch (error) { |
447 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
467 |
+ const errorData = error.response.data; |
|
468 |
+ if (errorData.message != null && errorData.message != "") { |
|
469 |
+ alert(error.response.data.message); |
|
470 |
+ } else { |
|
471 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
472 |
+ } |
|
448 | 473 |
} |
449 | 474 |
}, |
450 | 475 |
|
... | ... | @@ -469,8 +494,12 @@ |
469 | 494 |
this.getCmntList(); |
470 | 495 |
} |
471 | 496 |
} catch (error) { |
472 |
- const message = error.response.data.message; |
|
473 |
- alert(message); |
|
497 |
+ const errorData = error.response.data; |
|
498 |
+ if (errorData.message != null && errorData.message != "") { |
|
499 |
+ alert(error.response.data.message); |
|
500 |
+ } else { |
|
501 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
502 |
+ } |
|
474 | 503 |
} |
475 | 504 |
}, |
476 | 505 |
// onDelete(commentId) { |
--- client/views/pages/adm/boardManagement/template/faqTemplate/FaqInsert.vue
+++ client/views/pages/adm/boardManagement/template/faqTemplate/FaqInsert.vue
... | ... | @@ -111,7 +111,7 @@ |
111 | 111 |
</div> |
112 | 112 |
</div> |
113 | 113 |
</div> |
114 |
- <div class="layout" ref="five" v-if="bbsMng.prvtPstUseYn === 'Y'" > |
|
114 |
+ <div class="layout" ref="five" v-if="bbsMng.prvtPstUseYn === 'Y' && ansPageId == null" > |
|
115 | 115 |
<label class="form-title">비밀글</label> |
116 | 116 |
<div class="check-area"> |
117 | 117 |
<div class="form-check"> |
... | ... | @@ -223,7 +223,12 @@ |
223 | 223 |
} |
224 | 224 |
} |
225 | 225 |
} catch (error) { |
226 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
226 |
+ const errorData = error.response.data; |
|
227 |
+ if (errorData.message != null && errorData.message != "") { |
|
228 |
+ alert(error.response.data.message); |
|
229 |
+ } else { |
|
230 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
231 |
+ } |
|
227 | 232 |
} |
228 | 233 |
}, |
229 | 234 |
/* |
... | ... | @@ -317,8 +322,12 @@ |
317 | 322 |
}); |
318 | 323 |
}) |
319 | 324 |
.catch((error) => { |
320 |
- const message = error.response.data.message; |
|
321 |
- alert(message); |
|
325 |
+ const errorData = error.response.data; |
|
326 |
+ if (errorData.message != null && errorData.message != "") { |
|
327 |
+ alert(error.response.data.message); |
|
328 |
+ } else { |
|
329 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
330 |
+ } |
|
322 | 331 |
}); |
323 | 332 |
}, |
324 | 333 |
// 수정 |
... | ... | @@ -376,9 +385,12 @@ |
376 | 385 |
}); |
377 | 386 |
}) |
378 | 387 |
.catch((error) => { |
379 |
- // console.log(error) |
|
380 |
- const message = error.response.data.message; |
|
381 |
- alert(message); |
|
388 |
+ const errorData = error.response.data; |
|
389 |
+ if (errorData.message != null && errorData.message != "") { |
|
390 |
+ alert(error.response.data.message); |
|
391 |
+ } else { |
|
392 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
393 |
+ } |
|
382 | 394 |
}); |
383 | 395 |
}, |
384 | 396 |
// 질의 답변 등록 |
... | ... | @@ -394,8 +406,12 @@ |
394 | 406 |
}); |
395 | 407 |
} |
396 | 408 |
} catch (error) { |
397 |
- const message = error.response.data.message; |
|
398 |
- alert(message); |
|
409 |
+ const errorData = error.response.data; |
|
410 |
+ if (errorData.message != null && errorData.message != "") { |
|
411 |
+ alert(error.response.data.message); |
|
412 |
+ } else { |
|
413 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
414 |
+ } |
|
399 | 415 |
} |
400 | 416 |
}, |
401 | 417 |
// 질의 답변 수정 |
... | ... | @@ -409,14 +425,18 @@ |
409 | 425 |
}); |
410 | 426 |
} |
411 | 427 |
} catch (error) { |
412 |
- const message = error.response.data.message; |
|
413 |
- alert(message); |
|
428 |
+ const errorData = error.response.data; |
|
429 |
+ if (errorData.message != null && errorData.message != "") { |
|
430 |
+ alert(error.response.data.message); |
|
431 |
+ } else { |
|
432 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
433 |
+ } |
|
414 | 434 |
} |
415 | 435 |
}, |
416 | 436 |
|
417 | 437 |
// 취소 버튼 동작 |
418 | 438 |
fnCancel() { |
419 |
- if (!confirm("등록을 취소하시겠습니까?")) { |
|
439 |
+ if (!confirm("작성을 취소하시겠습니까?")) { |
|
420 | 440 |
return; |
421 | 441 |
} |
422 | 442 |
|
--- client/views/pages/adm/boardManagement/template/faqTemplate/FaqSelectList.vue
+++ client/views/pages/adm/boardManagement/template/faqTemplate/FaqSelectList.vue
... | ... | @@ -81,6 +81,7 @@ |
81 | 81 |
<span>Q.</span> |
82 | 82 |
<div v-if="item.prvtPstYn == 'Y'"> |
83 | 83 |
<!-- {{ item.rgtr == mbrId || roles == 'ROLE_ADMIN' ? item.bbsCn : '[ 비밀글입니다 ]' }} --> |
84 |
+ <svg-icon type="mdi" :path="lockPath" :width="18" :height="18"></svg-icon> |
|
84 | 85 |
<p |
85 | 86 |
v-html=" |
86 | 87 |
item.rgtr == mbrId || roles == 'ROLE_ADMIN' |
... | ... | @@ -131,6 +132,7 @@ |
131 | 132 |
<div> |
132 | 133 |
<template v-if="item.prvtPstYn == 'Y'"> |
133 | 134 |
<!-- {{ item.rgtr == mbrId || roles == 'ROLE_ADMIN' ? item.ansCn : '[ 비밀 답글입니다 ]' }} --> |
135 |
+ <svg-icon type="mdi" :path="lockPath" :width="18" :height="18"></svg-icon> |
|
134 | 136 |
<p |
135 | 137 |
v-html=" |
136 | 138 |
item.rgtr == mbrId || roles == 'ROLE_ADMIN' |
... | ... | @@ -256,7 +258,8 @@ |
256 | 258 |
<td> |
257 | 259 |
<div class="layout"> |
258 | 260 |
<span class="state question">Q</span> |
259 |
- <div v-if="item.prvtPstYn == 'Y'"> |
|
261 |
+ <div v-if="item.prvtPstYn == 'Y'" class="layout"> |
|
262 |
+ <svg-icon type="mdi" :path="lockPath" :width="18" :height="18"></svg-icon> |
|
260 | 263 |
<p |
261 | 264 |
v-html=" |
262 | 265 |
item.rgtr == mbrId || roles == 'ROLE_ADMIN' |
... | ... | @@ -308,7 +311,8 @@ |
308 | 311 |
<td colspan="3"> |
309 | 312 |
<div class="layout"> |
310 | 313 |
<span class="state answer">A</span> |
311 |
- <div v-if="item.prvtPstYn == 'Y'"> |
|
314 |
+ <div v-if="item.prvtPstYn == 'Y'" class="layout"> |
|
315 |
+ <svg-icon type="mdi" :path="lockPath" :width="18" :height="18"></svg-icon> |
|
312 | 316 |
<p |
313 | 317 |
v-html=" |
314 | 318 |
item.rgtr == mbrId || roles == 'ROLE_ADMIN' |
... | ... | @@ -377,6 +381,7 @@ |
377 | 381 |
</template> |
378 | 382 |
|
379 | 383 |
<script> |
384 |
+import { mdiLock } from '@mdi/js'; |
|
380 | 385 |
import PaginationButton from "../../../../../component/pagination/PaginationButton.vue"; |
381 | 386 |
import { |
382 | 387 |
findAll, |
... | ... | @@ -392,6 +397,7 @@ |
392 | 397 |
mixins: [queryParams], |
393 | 398 |
data() { |
394 | 399 |
return { |
400 |
+ lockPath: mdiLock, |
|
395 | 401 |
pageRole: this.$store.state.userType, |
396 | 402 |
path: this.$store.state.path, |
397 | 403 |
pageAuth: this.$store.state.pageAuth, |
... | ... | @@ -414,9 +420,20 @@ |
414 | 420 |
}; |
415 | 421 |
}, |
416 | 422 |
created() { |
417 |
- this.fnBbsIdExtraction(); |
|
418 |
- this.resotreQueryParams("queryParams"); |
|
419 |
- this.findAll(); |
|
423 |
+ // this.fnBbsIdExtraction(); |
|
424 |
+ // this.resotreQueryParams("queryParams"); |
|
425 |
+ // this.findAll(); |
|
426 |
+ }, |
|
427 |
+ // 컴포넌트(페이지) 초기 진입 시 |
|
428 |
+ beforeRouteEnter(to, from, next) { |
|
429 |
+ next(vm => { |
|
430 |
+ vm.fnInit(); |
|
431 |
+ }); |
|
432 |
+ }, |
|
433 |
+ // 동일 컴포넌트로 재진입 시 |
|
434 |
+ beforeRouteUpdate(to, from, next) { |
|
435 |
+ this.fnInit(); |
|
436 |
+ next(); |
|
420 | 437 |
}, |
421 | 438 |
methods: { |
422 | 439 |
toggle(index) { |
... | ... | @@ -435,13 +452,17 @@ |
435 | 452 |
try { |
436 | 453 |
const res = await findAll(toRaw(this.search)); |
437 | 454 |
this.list = res.data.data.list; // 게시판 관리 목록 |
438 |
- console.log("검색갯수",this.list.length); |
|
439 | 455 |
this.listCnt = res.data.data.pagination.totalRecordCount; // 게시판 관리 목록 갯수 |
440 | 456 |
this.search = res.data.data.pagination; // 페이징처리 및 검색 내용 |
441 | 457 |
// this.codeList = res.data.data.codeList; // 검색 조건 항목 |
442 | 458 |
this.bbsMng = res.data.data.bbsMng; |
443 | 459 |
} catch (error) { |
444 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
460 |
+ const errorData = error.response.data; |
|
461 |
+ if (errorData.message != null && errorData.message != "") { |
|
462 |
+ alert(error.response.data.message); |
|
463 |
+ } else { |
|
464 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
465 |
+ } |
|
445 | 466 |
} |
446 | 467 |
}, |
447 | 468 |
// 등록페이지 이동 |
... | ... | @@ -482,7 +503,12 @@ |
482 | 503 |
this.findAll(); |
483 | 504 |
} |
484 | 505 |
} catch (error) { |
485 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
506 |
+ const errorData = error.response.data; |
|
507 |
+ if (errorData.message != null && errorData.message != "") { |
|
508 |
+ alert(error.response.data.message); |
|
509 |
+ } else { |
|
510 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
511 |
+ } |
|
486 | 512 |
} |
487 | 513 |
}, |
488 | 514 |
|
... | ... | @@ -498,7 +524,12 @@ |
498 | 524 |
this.findAll(); |
499 | 525 |
} |
500 | 526 |
} catch (error) { |
501 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
527 |
+ const errorData = error.response.data; |
|
528 |
+ if (errorData.message != null && errorData.message != "") { |
|
529 |
+ alert(error.response.data.message); |
|
530 |
+ } else { |
|
531 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
532 |
+ } |
|
502 | 533 |
} |
503 | 534 |
}, |
504 | 535 |
// 검색 조건 초기화 |
... | ... | @@ -506,17 +537,24 @@ |
506 | 537 |
this.search = { ...defaultSearchParams }; |
507 | 538 |
this.findAll(); |
508 | 539 |
}, |
540 |
+ |
|
541 |
+ // 초기 조회 |
|
542 |
+ fnInit() { |
|
543 |
+ this.fnBbsIdExtraction(); |
|
544 |
+ this.resotreQueryParams("queryParams"); |
|
545 |
+ this.findAll(); |
|
546 |
+ } |
|
509 | 547 |
}, |
510 | 548 |
watch: { |
511 | 549 |
$route(to, from) { |
512 | 550 |
// path가 다를 때만 조회 |
513 |
- if (to.path !== from.path) { |
|
514 |
- this.fnBbsIdExtraction(); |
|
515 |
- this.resotreQueryParams("queryParams"); |
|
516 |
- this.findAll(); |
|
517 |
- this.path = this.$store.state.path; |
|
518 |
- this.isOpen = null; |
|
519 |
- } |
|
551 |
+ // if (to.path !== from.path) { |
|
552 |
+ // this.fnBbsIdExtraction(); |
|
553 |
+ // this.resotreQueryParams("queryParams"); |
|
554 |
+ // this.findAll(); |
|
555 |
+ // this.path = this.$store.state.path; |
|
556 |
+ // this.isOpen = null; |
|
557 |
+ // } |
|
520 | 558 |
}, |
521 | 559 |
}, |
522 | 560 |
computed: {}, |
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GalleryInsert.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GalleryInsert.vue
... | ... | @@ -210,7 +210,7 @@ |
210 | 210 |
methods: { |
211 | 211 |
// 목록으로 이동 |
212 | 212 |
fnCancel() { |
213 |
- if (!confirm("등록을 취소하시겠습니까?")) { |
|
213 |
+ if (!confirm("작성을 취소하시겠습니까?")) { |
|
214 | 214 |
return; |
215 | 215 |
} |
216 | 216 |
if (this.bbsCn.bbsId == null || this.bbsCn.bbsId == 0) { |
... | ... | @@ -244,7 +244,12 @@ |
244 | 244 |
this.$refs.ckeditor5.createEditor(); |
245 | 245 |
} |
246 | 246 |
} catch (error) { |
247 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
247 |
+ const errorData = error.response.data; |
|
248 |
+ if (errorData.message != null && errorData.message != "") { |
|
249 |
+ alert(error.response.data.message); |
|
250 |
+ } else { |
|
251 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
252 |
+ } |
|
248 | 253 |
} |
249 | 254 |
}, |
250 | 255 |
// 이미지 파일 등록 |
... | ... | @@ -360,8 +365,12 @@ |
360 | 365 |
}); |
361 | 366 |
}) |
362 | 367 |
.catch((error) => { |
363 |
- const message = error.response.data.message; |
|
364 |
- alert(message); |
|
368 |
+ const errorData = error.response.data; |
|
369 |
+ if (errorData.message != null && errorData.message != "") { |
|
370 |
+ alert(error.response.data.message); |
|
371 |
+ } else { |
|
372 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
373 |
+ } |
|
365 | 374 |
}); |
366 | 375 |
}, |
367 | 376 |
// 수정 |
... | ... | @@ -421,14 +430,18 @@ |
421 | 430 |
}); |
422 | 431 |
}) |
423 | 432 |
.catch((error) => { |
424 |
- const message = error.response.data.message; |
|
425 |
- alert(message); |
|
433 |
+ const errorData = error.response.data; |
|
434 |
+ if (errorData.message != null && errorData.message != "") { |
|
435 |
+ alert(error.response.data.message); |
|
436 |
+ } else { |
|
437 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
438 |
+ } |
|
426 | 439 |
}); |
427 | 440 |
}, |
428 | 441 |
// 유효성 검사 |
429 | 442 |
Validation() { |
430 | 443 |
if (!this.bbsCn.bbsNm || this.bbsCn.bbsNm.trim() === "") { |
431 |
- alert("게시판 제목을 입력해주세요."); |
|
444 |
+ alert("게시판 제목을 입력하세요."); |
|
432 | 445 |
return false; |
433 | 446 |
} |
434 | 447 |
|
... | ... | @@ -448,13 +461,13 @@ |
448 | 461 |
(this.isEmpty(this.bbsCn.bbsCn) || |
449 | 462 |
this.removeHtmlAndSpace(this.bbsCn.bbsCn) === "") |
450 | 463 |
) { |
451 |
- alert("게시판 내용을 입력해주세요."); |
|
464 |
+ alert("게시판 내용을 입력하세요."); |
|
452 | 465 |
return false; |
453 | 466 |
} |
454 | 467 |
|
455 | 468 |
// 이미지 파일 null 검사 |
456 | 469 |
if (this.imgFileList.length < 1) { |
457 |
- alert("이미지 파일을 첨부해주세요."); |
|
470 |
+ alert("이미지 파일을 첨부하세요."); |
|
458 | 471 |
return false; |
459 | 472 |
} |
460 | 473 |
|
... | ... | @@ -462,7 +475,7 @@ |
462 | 475 |
this.bbsCn.ntcPstYn === "Y" && |
463 | 476 |
(this.bbsCn.ntcBgngDt === null || this.bbsCn.ntcEndDt === null) |
464 | 477 |
) { |
465 |
- alert("공지기간을 올바르게 설정해주세요."); |
|
478 |
+ alert("공지기간을 올바르게 설정하세요."); |
|
466 | 479 |
return false; |
467 | 480 |
} |
468 | 481 |
|
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectList.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectList.vue
... | ... | @@ -52,6 +52,7 @@ |
52 | 52 |
</div> --> |
53 | 53 |
</div> |
54 | 54 |
</template> |
55 |
+ <!-- 관리자 --> |
|
55 | 56 |
<template v-else> |
56 | 57 |
<div class="search-wrap"> |
57 | 58 |
<div></div> |
... | ... | @@ -77,25 +78,27 @@ |
77 | 78 |
<div class="tbl-wrap"> |
78 | 79 |
<table class="tbl data cursor"> |
79 | 80 |
<colgroup> |
80 |
- <!-- <col width="10%" /> --> |
|
81 |
- <col width="60%" /> |
|
81 |
+ <col width="5%" /> |
|
82 |
+ <col width="50%" /> |
|
82 | 83 |
<col width="15%" /> |
83 | 84 |
<col width="15%" /> |
85 |
+ <col width="5%" /> |
|
84 | 86 |
</colgroup> |
85 | 87 |
<thead> |
86 | 88 |
<tr> |
87 |
- <!-- <th>NO</th> --> |
|
89 |
+ <th>NO</th> |
|
88 | 90 |
<th>제목</th> |
89 | 91 |
<th>작성자</th> |
90 | 92 |
<th>작성일</th> |
93 |
+ <th>조회수</th> |
|
91 | 94 |
</tr> |
92 | 95 |
</thead> |
93 | 96 |
<tbody> |
94 | 97 |
<template v-if="list.length > 0"> |
95 | 98 |
<tr v-for="(item, idx) in list" :key="idx" @click="fnView(idx)"> |
96 |
- <!-- <td> |
|
97 |
- |
|
98 |
- </td> --> |
|
99 |
+ <td> |
|
100 |
+ {{ listCnt - idx - (search.currentPage - 1) * search.recordSize }} |
|
101 |
+ </td> |
|
99 | 102 |
<td> |
100 | 103 |
<div class="layout"> |
101 | 104 |
<img :src="item.absltPath" class="thumbnail" /> |
... | ... | @@ -114,6 +117,9 @@ |
114 | 117 |
</td> |
115 | 118 |
<td> |
116 | 119 |
{{ item.regDt }} |
120 |
+ </td> |
|
121 |
+ <td> |
|
122 |
+ {{ item.inqCnt }} |
|
117 | 123 |
</td> |
118 | 124 |
</tr> |
119 | 125 |
</template> |
... | ... | @@ -195,9 +201,20 @@ |
195 | 201 |
} |
196 | 202 |
}, |
197 | 203 |
created() { |
198 |
- this.fnBbsIdExtraction(); |
|
199 |
- this.resotreQueryParams('queryParams'); |
|
200 |
- this.findAll(); |
|
204 |
+ // this.fnBbsIdExtraction(); |
|
205 |
+ // this.resotreQueryParams('queryParams'); |
|
206 |
+ // this.findAll(); |
|
207 |
+ }, |
|
208 |
+ // 컴포넌트(페이지) 초기 진입 시 |
|
209 |
+ beforeRouteEnter(to, from, next) { |
|
210 |
+ next(vm => { |
|
211 |
+ vm.fnInit(); |
|
212 |
+ }); |
|
213 |
+ }, |
|
214 |
+ // 동일 컴포넌트로 재진입 시 |
|
215 |
+ beforeRouteUpdate(to, from, next) { |
|
216 |
+ this.fnInit(); |
|
217 |
+ next(); |
|
201 | 218 |
}, |
202 | 219 |
methods: { |
203 | 220 |
// 목록 조회 |
... | ... | @@ -212,7 +229,12 @@ |
212 | 229 |
this.bbsMng = res.data.data.bbsMng; |
213 | 230 |
|
214 | 231 |
} catch (error) { |
215 |
- alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); |
|
232 |
+ const errorData = error.response.data; |
|
233 |
+ if (errorData.message != null && errorData.message != "") { |
|
234 |
+ alert(error.response.data.message); |
|
235 |
+ } else { |
|
236 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
237 |
+ } |
|
216 | 238 |
} |
217 | 239 |
}, |
218 | 240 |
// 상세 조회 |
... | ... | @@ -236,18 +258,24 @@ |
236 | 258 |
fnSearchReset() { |
237 | 259 |
this.search = { ...defaultSearchParams }; |
238 | 260 |
this.findAll(); |
239 |
- } |
|
261 |
+ }, |
|
240 | 262 |
|
263 |
+ // 초기 조회 |
|
264 |
+ fnInit() { |
|
265 |
+ this.fnBbsIdExtraction(); |
|
266 |
+ this.resotreQueryParams("queryParams"); |
|
267 |
+ this.findAll(); |
|
268 |
+ } |
|
241 | 269 |
}, |
242 | 270 |
watch: { |
243 | 271 |
$route(to, from) { |
244 | 272 |
// path가 다를 때만 조회 |
245 |
- if (to.path !== from.path) { |
|
246 |
- this.fnBbsIdExtraction(); |
|
247 |
- this.resotreQueryParams('queryParams'); |
|
248 |
- this.findAll(); |
|
249 |
- this.path = this.$store.state.path; |
|
250 |
- } |
|
273 |
+ // if (to.path !== from.path) { |
|
274 |
+ // this.fnBbsIdExtraction(); |
|
275 |
+ // this.resotreQueryParams('queryParams'); |
|
276 |
+ // this.findAll(); |
|
277 |
+ // this.path = this.$store.state.path; |
|
278 |
+ // } |
|
251 | 279 |
} |
252 | 280 |
|
253 | 281 |
}, |
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
... | ... | @@ -113,7 +113,7 @@ |
113 | 113 |
> |
114 | 114 |
<a :href="`${path}/view.page?pageId=${prevBbsCn.bbsId}`">{{ prevBbsCn.bbsNm }}</a> |
115 | 115 |
</td> |
116 |
- <td v-else>이전글이 없습니다</td> |
|
116 |
+ <td v-else>이전글이 없습니다.</td> |
|
117 | 117 |
</tr> |
118 | 118 |
<tr> |
119 | 119 |
<td>다음글</td> |
... | ... | @@ -122,7 +122,7 @@ |
122 | 122 |
> |
123 | 123 |
<a :href="`${path}/view.page?pageId=${nextBbsCn.bbsId}`">{{ nextBbsCn.bbsNm }}</a> |
124 | 124 |
</td> |
125 |
- <td v-else>다음글이 없습니다</td> |
|
125 |
+ <td v-else>다음글이 없습니다.</td> |
|
126 | 126 |
</tr> |
127 | 127 |
</tbody> |
128 | 128 |
</table> |
... | ... | @@ -246,7 +246,12 @@ |
246 | 246 |
this.updateVwCnt(); |
247 | 247 |
} |
248 | 248 |
} catch (error) { |
249 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
249 |
+ const errorData = error.response.data; |
|
250 |
+ if (errorData.message != null && errorData.message != "") { |
|
251 |
+ alert(error.response.data.message); |
|
252 |
+ } else { |
|
253 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
254 |
+ } |
|
250 | 255 |
} |
251 | 256 |
}, |
252 | 257 |
// 댓글 조회 |
... | ... | @@ -260,7 +265,12 @@ |
260 | 265 |
this.cmntList = res.data.data.cmntList; |
261 | 266 |
} |
262 | 267 |
} catch (error) { |
263 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
268 |
+ const errorData = error.response.data; |
|
269 |
+ if (errorData.message != null && errorData.message != "") { |
|
270 |
+ alert(error.response.data.message); |
|
271 |
+ } else { |
|
272 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
273 |
+ } |
|
264 | 274 |
} |
265 | 275 |
}, |
266 | 276 |
// 첨부파일 다운로드 로직 |
... | ... | @@ -289,7 +299,12 @@ |
289 | 299 |
document.body.removeChild(link); |
290 | 300 |
window.URL.revokeObjectURL(url); |
291 | 301 |
} catch (error) { |
292 |
- alert("파일 다운로드 중 오류가 발생했습니다."); |
|
302 |
+ const errorData = error.response.data; |
|
303 |
+ if (errorData.message != null && errorData.message != "") { |
|
304 |
+ alert(error.response.data.message); |
|
305 |
+ } else { |
|
306 |
+ alert("파일 다운로드 중 오류가 발생했습니다."); |
|
307 |
+ } |
|
293 | 308 |
} |
294 | 309 |
}, |
295 | 310 |
// 목록으로 이동 |
... | ... | @@ -331,7 +346,12 @@ |
331 | 346 |
}); |
332 | 347 |
} |
333 | 348 |
} catch (error) { |
334 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
349 |
+ const errorData = error.response.data; |
|
350 |
+ if (errorData.message != null && errorData.message != "") { |
|
351 |
+ alert(error.response.data.message); |
|
352 |
+ } else { |
|
353 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
354 |
+ } |
|
335 | 355 |
} |
336 | 356 |
}, |
337 | 357 |
// 조회수 증가 |
... | ... | @@ -342,7 +362,12 @@ |
342 | 362 |
}; |
343 | 363 |
const res = await updateVwCnt(params); |
344 | 364 |
} catch (error) { |
345 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
365 |
+ const errorData = error.response.data; |
|
366 |
+ if (errorData.message != null && errorData.message != "") { |
|
367 |
+ alert(error.response.data.message); |
|
368 |
+ } else { |
|
369 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
370 |
+ } |
|
346 | 371 |
} |
347 | 372 |
}, |
348 | 373 |
// 댓글 등록 로직 |
... | ... | @@ -366,8 +391,12 @@ |
366 | 391 |
this.getCmntList(); |
367 | 392 |
} |
368 | 393 |
} catch (error) { |
369 |
- const message = error.response.data.message; |
|
370 |
- alert(message); |
|
394 |
+ const errorData = error.response.data; |
|
395 |
+ if (errorData.message != null && errorData.message != "") { |
|
396 |
+ alert(error.response.data.message); |
|
397 |
+ } else { |
|
398 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
399 |
+ } |
|
371 | 400 |
} |
372 | 401 |
}, |
373 | 402 |
isReply(isReply) { |
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoInsert.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoInsert.vue
... | ... | @@ -538,7 +538,7 @@ |
538 | 538 |
// 추가 수정 필요 |
539 | 539 |
// 목록으로 이동 |
540 | 540 |
fnCancel() { |
541 |
- if (!confirm("등록을 취소하시겠습니까?")) { |
|
541 |
+ if (!confirm("작성을 취소하시겠습니까?")) { |
|
542 | 542 |
return; |
543 | 543 |
} |
544 | 544 |
if (this.bbsCn.bbsId == null || this.bbsCn.bbsId == 0) { |
... | ... | @@ -572,7 +572,12 @@ |
572 | 572 |
this.$refs.ckeditor5.createEditor(); |
573 | 573 |
} |
574 | 574 |
} catch (error) { |
575 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
575 |
+ const errorData = error.response.data; |
|
576 |
+ if (errorData.message != null && errorData.message != "") { |
|
577 |
+ alert(error.response.data.message); |
|
578 |
+ } else { |
|
579 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
580 |
+ } |
|
576 | 581 |
} |
577 | 582 |
}, |
578 | 583 |
// 썸네일 등록 |
... | ... | @@ -688,8 +693,12 @@ |
688 | 693 |
}); |
689 | 694 |
}) |
690 | 695 |
.catch((error) => { |
691 |
- const message = error.response.data.message; |
|
692 |
- alert(message); |
|
696 |
+ const errorData = error.response.data; |
|
697 |
+ if (errorData.message != null && errorData.message != "") { |
|
698 |
+ alert(error.response.data.message); |
|
699 |
+ } else { |
|
700 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
701 |
+ } |
|
693 | 702 |
}); |
694 | 703 |
}, |
695 | 704 |
// 수정 |
... | ... | @@ -749,14 +758,18 @@ |
749 | 758 |
}); |
750 | 759 |
}) |
751 | 760 |
.catch((error) => { |
752 |
- const message = error.response.data.message; |
|
753 |
- alert(message); |
|
761 |
+ const errorData = error.response.data; |
|
762 |
+ if (errorData.message != null && errorData.message != "") { |
|
763 |
+ alert(error.response.data.message); |
|
764 |
+ } else { |
|
765 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
766 |
+ } |
|
754 | 767 |
}); |
755 | 768 |
}, |
756 | 769 |
// 유효성 검사 |
757 | 770 |
Validation() { |
758 | 771 |
if (!this.bbsCn.bbsNm || this.bbsCn.bbsNm.trim() === "") { |
759 |
- alert("게시판 제목을 입력해주세요."); |
|
772 |
+ alert("게시판 제목을 입력하세요."); |
|
760 | 773 |
return false; |
761 | 774 |
} |
762 | 775 |
|
... | ... | @@ -776,13 +789,13 @@ |
776 | 789 |
(this.isEmpty(this.bbsCn.bbsCn) || |
777 | 790 |
this.removeHtmlAndSpace(this.bbsCn.bbsCn) === "") |
778 | 791 |
) { |
779 |
- alert("게시판 내용을 입력해주세요."); |
|
792 |
+ alert("게시판 내용을 입력하세요."); |
|
780 | 793 |
return false; |
781 | 794 |
} |
782 | 795 |
|
783 | 796 |
// url null 검사 |
784 | 797 |
if (!this.bbsCn.vdoUrl || this.bbsCn.vdoUrl.trim() === "") { |
785 |
- alert("영상 URL을 입력해주세요."); |
|
798 |
+ alert("영상 URL을 입력하세요."); |
|
786 | 799 |
return false; |
787 | 800 |
} |
788 | 801 |
const pattern = /youtu\.be|youtube\.com/; |
... | ... | @@ -795,7 +808,7 @@ |
795 | 808 |
this.bbsCn.ntcPstYn === "Y" && |
796 | 809 |
(this.bbsCn.ntcBgngDt === null || this.bbsCn.ntcEndDt === null) |
797 | 810 |
) { |
798 |
- alert("공지기간을 올바르게 설정해주세요."); |
|
811 |
+ alert("공지기간을 올바르게 설정하세요."); |
|
799 | 812 |
return false; |
800 | 813 |
} |
801 | 814 |
|
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
... | ... | @@ -24,25 +24,27 @@ |
24 | 24 |
<div class="tbl-wrap"> |
25 | 25 |
<table class="tbl data cursor"> |
26 | 26 |
<colgroup> |
27 |
- <!-- <col width="10%" /> --> |
|
28 |
- <col width="60%" /> |
|
27 |
+ <col width="5%" /> |
|
28 |
+ <col width="50%" /> |
|
29 | 29 |
<col width="15%" /> |
30 | 30 |
<col width="15%" /> |
31 |
+ <col width="5%" /> |
|
31 | 32 |
</colgroup> |
32 | 33 |
<thead> |
33 | 34 |
<tr> |
34 |
- <!-- <th>NO</th> --> |
|
35 |
+ <th>NO</th> |
|
35 | 36 |
<th>제목</th> |
36 | 37 |
<th>작성자</th> |
37 | 38 |
<th>작성일</th> |
39 |
+ <th>조회수</th> |
|
38 | 40 |
</tr> |
39 | 41 |
</thead> |
40 | 42 |
<tbody> |
41 | 43 |
<template v-if="list.length > 0"> |
42 | 44 |
<tr v-for="(item, idx) in list" :key="idx" @click="fnView(idx)" > |
43 |
- <!-- <td> |
|
44 |
- |
|
45 |
- </td> --> |
|
45 |
+ <td> |
|
46 |
+ {{ listCnt - idx - (search.currentPage - 1) * search.recordSize }} |
|
47 |
+ </td> |
|
46 | 48 |
<td> |
47 | 49 |
<div class="layout"> |
48 | 50 |
<img v-if="item.absltPath" :src="item.absltPath" class="thumbnail"/> |
... | ... | @@ -62,6 +64,9 @@ |
62 | 64 |
</td> |
63 | 65 |
<td> |
64 | 66 |
{{ item.regDt }} |
67 |
+ </td> |
|
68 |
+ <td> |
|
69 |
+ {{ item.inqCnt }} |
|
65 | 70 |
</td> |
66 | 71 |
</tr> |
67 | 72 |
</template> |
... | ... | @@ -150,9 +155,20 @@ |
150 | 155 |
} |
151 | 156 |
}, |
152 | 157 |
created() { |
153 |
- this.fnBbsIdExtraction(); |
|
154 |
- this.resotreQueryParams('queryParams'); |
|
155 |
- this.findAll(); |
|
158 |
+ // this.fnBbsIdExtraction(); |
|
159 |
+ // this.resotreQueryParams('queryParams'); |
|
160 |
+ // this.findAll(); |
|
161 |
+ }, |
|
162 |
+ // 컴포넌트(페이지) 초기 진입 시 |
|
163 |
+ beforeRouteEnter(to, from, next) { |
|
164 |
+ next(vm => { |
|
165 |
+ vm.fnInit(); |
|
166 |
+ }); |
|
167 |
+ }, |
|
168 |
+ // 동일 컴포넌트로 재진입 시 |
|
169 |
+ beforeRouteUpdate(to, from, next) { |
|
170 |
+ this.fnInit(); |
|
171 |
+ next(); |
|
156 | 172 |
}, |
157 | 173 |
methods: { |
158 | 174 |
// 목록 조회 |
... | ... | @@ -167,7 +183,12 @@ |
167 | 183 |
this.bbsMng = res.data.data.bbsMng; |
168 | 184 |
|
169 | 185 |
} catch (error) { |
170 |
- alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); |
|
186 |
+ const errorData = error.response.data; |
|
187 |
+ if (errorData.message != null && errorData.message != "") { |
|
188 |
+ alert(error.response.data.message); |
|
189 |
+ } else { |
|
190 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
191 |
+ } |
|
171 | 192 |
} |
172 | 193 |
}, |
173 | 194 |
// 상세 조회 |
... | ... | @@ -197,17 +218,24 @@ |
197 | 218 |
fnSearchReset() { |
198 | 219 |
this.search = { ...defaultSearchParams }; |
199 | 220 |
this.findAll(); |
221 |
+ }, |
|
222 |
+ |
|
223 |
+ // 초기 조회 |
|
224 |
+ fnInit() { |
|
225 |
+ this.fnBbsIdExtraction(); |
|
226 |
+ this.resotreQueryParams("queryParams"); |
|
227 |
+ this.findAll(); |
|
200 | 228 |
} |
201 | 229 |
}, |
202 | 230 |
watch: { |
203 | 231 |
$route(to, from) { |
204 | 232 |
// path가 다를 때만 조회 |
205 |
- if (to.path !== from.path) { |
|
206 |
- this.fnBbsIdExtraction(); |
|
207 |
- this.resotreQueryParams('queryParams'); |
|
208 |
- this.findAll(); |
|
209 |
- this.path = this.$store.state.path; |
|
210 |
- } |
|
233 |
+ // if (to.path !== from.path) { |
|
234 |
+ // this.fnBbsIdExtraction(); |
|
235 |
+ // this.resotreQueryParams('queryParams'); |
|
236 |
+ // this.findAll(); |
|
237 |
+ // this.path = this.$store.state.path; |
|
238 |
+ // } |
|
211 | 239 |
} |
212 | 240 |
}, |
213 | 241 |
computed: { |
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
... | ... | @@ -140,7 +140,7 @@ |
140 | 140 |
> |
141 | 141 |
{{ prevBbsCn.bbsNm }} |
142 | 142 |
</td> |
143 |
- <td v-else class="pd10">이전글이 없습니다</td> |
|
143 |
+ <td v-else class="pd10">이전글이 없습니다.</td> |
|
144 | 144 |
</tr> |
145 | 145 |
<tr> |
146 | 146 |
<td class="pd10 text-ct">다음글</td> |
... | ... | @@ -151,7 +151,7 @@ |
151 | 151 |
> |
152 | 152 |
{{ nextBbsCn.bbsNm }} |
153 | 153 |
</td> |
154 |
- <td v-else class="pd10">다음글이 없습니다</td> |
|
154 |
+ <td v-else class="pd10">다음글이 없습니다.</td> |
|
155 | 155 |
</tr> |
156 | 156 |
</tbody> |
157 | 157 |
</table> |
... | ... | @@ -302,7 +302,7 @@ |
302 | 302 |
> |
303 | 303 |
<a :href="`${path}/view.page?pageId=${prevBbsCn.bbsId}`">{{ prevBbsCn.bbsNm }}</a> |
304 | 304 |
</td> |
305 |
- <td v-else>이전글이 없습니다</td> |
|
305 |
+ <td v-else>이전글이 없습니다.</td> |
|
306 | 306 |
</tr> |
307 | 307 |
<tr> |
308 | 308 |
<td>다음글</td> |
... | ... | @@ -311,7 +311,7 @@ |
311 | 311 |
> |
312 | 312 |
<a :href="`${path}/view.page?pageId=${nextBbsCn.bbsId}`">{{ nextBbsCn.bbsNm }}</a> |
313 | 313 |
</td> |
314 |
- <td v-else>다음글이 없습니다</td> |
|
314 |
+ <td v-else>다음글이 없습니다.</td> |
|
315 | 315 |
</tr> |
316 | 316 |
</tbody> |
317 | 317 |
</table> |
... | ... | @@ -419,7 +419,12 @@ |
419 | 419 |
this.updateVwCnt(); |
420 | 420 |
} |
421 | 421 |
} catch (error) { |
422 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
422 |
+ const errorData = error.response.data; |
|
423 |
+ if (errorData.message != null && errorData.message != "") { |
|
424 |
+ alert(error.response.data.message); |
|
425 |
+ } else { |
|
426 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
427 |
+ } |
|
423 | 428 |
} |
424 | 429 |
}, |
425 | 430 |
// 댓글 조회 |
... | ... | @@ -433,7 +438,12 @@ |
433 | 438 |
this.cmntList = res.data.data.cmntList; |
434 | 439 |
} |
435 | 440 |
} catch (error) { |
436 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
441 |
+ const errorData = error.response.data; |
|
442 |
+ if (errorData.message != null && errorData.message != "") { |
|
443 |
+ alert(error.response.data.message); |
|
444 |
+ } else { |
|
445 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
446 |
+ } |
|
437 | 447 |
} |
438 | 448 |
}, |
439 | 449 |
// 첨부파일 다운로드 로직 |
... | ... | @@ -462,7 +472,12 @@ |
462 | 472 |
document.body.removeChild(link); |
463 | 473 |
window.URL.revokeObjectURL(url); |
464 | 474 |
} catch (error) { |
465 |
- alert("파일 다운로드 중 오류가 발생했습니다."); |
|
475 |
+ const errorData = error.response.data; |
|
476 |
+ if (errorData.message != null && errorData.message != "") { |
|
477 |
+ alert(error.response.data.message); |
|
478 |
+ } else { |
|
479 |
+ alert("파일 다운로드 중 오류가 발생했습니다."); |
|
480 |
+ } |
|
466 | 481 |
} |
467 | 482 |
}, |
468 | 483 |
// 목록으로 이동 |
... | ... | @@ -504,7 +519,12 @@ |
504 | 519 |
}); |
505 | 520 |
} |
506 | 521 |
} catch (error) { |
507 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
522 |
+ const errorData = error.response.data; |
|
523 |
+ if (errorData.message != null && errorData.message != "") { |
|
524 |
+ alert(error.response.data.message); |
|
525 |
+ } else { |
|
526 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
527 |
+ } |
|
508 | 528 |
} |
509 | 529 |
}, |
510 | 530 |
// 조회수 증가 |
... | ... | @@ -515,7 +535,12 @@ |
515 | 535 |
}; |
516 | 536 |
const res = await updateVwCnt(params); |
517 | 537 |
} catch (error) { |
518 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
538 |
+ const errorData = error.response.data; |
|
539 |
+ if (errorData.message != null && errorData.message != "") { |
|
540 |
+ alert(error.response.data.message); |
|
541 |
+ } else { |
|
542 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
543 |
+ } |
|
519 | 544 |
} |
520 | 545 |
}, |
521 | 546 |
// 댓글 등록 로직 |
... | ... | @@ -539,8 +564,12 @@ |
539 | 564 |
this.getCmntList(); |
540 | 565 |
} |
541 | 566 |
} catch (error) { |
542 |
- const message = error.response.data.message; |
|
543 |
- alert(message); |
|
567 |
+ const errorData = error.response.data; |
|
568 |
+ if (errorData.message != null && errorData.message != "") { |
|
569 |
+ alert(error.response.data.message); |
|
570 |
+ } else { |
|
571 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
572 |
+ } |
|
544 | 573 |
} |
545 | 574 |
}, |
546 | 575 |
isReply(isReply) { |
--- client/views/pages/adm/boardManagement/wordsManagement/WordsManagementSelectList.vue
+++ client/views/pages/adm/boardManagement/wordsManagement/WordsManagementSelectList.vue
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 |
<option value="">전체</option> |
7 | 7 |
<option v-for="(item, idx) in codeList" :key="idx" :value="item.cd">{{ item.cdNm }}</option> |
8 | 8 |
</select> --> |
9 |
- <input type="text" class="form-control sm border-none" placeholder="금지어를 입력해주세요." |
|
9 |
+ <input type="text" class="form-control sm border-none" placeholder="금지어를 입력하세요." |
|
10 | 10 |
v-model="search.searchText" @keyup.enter="fnFindAllWord" /> |
11 | 11 |
<button class="btn-ico xsm ico-sch" @click="fnFindAllWord"> |
12 | 12 |
<span class="sr-only">검색</span> |
... | ... | @@ -46,7 +46,7 @@ |
46 | 46 |
<button class="btn-close" @click="modalClose"></button> |
47 | 47 |
</template> |
48 | 48 |
<div class="input-group"> |
49 |
- <input type="text" class="form-control sm" placeholder="추가할 금지어를 입력해주세요." v-model="inputWordNm" |
|
49 |
+ <input type="text" class="form-control sm" placeholder="추가할 금지어를 입력하세요." v-model="inputWordNm" |
|
50 | 50 |
@keyup.enter="addinputWord" style="width: calc(100% - 100px);"/> |
51 | 51 |
<button class="btn sm ico-before ico-plus-w main" @click="addinputWord">추가</button> |
52 | 52 |
</div> |
... | ... | @@ -122,7 +122,7 @@ |
122 | 122 |
// 금지어 추가 (리스트 생성) |
123 | 123 |
addinputWord: function () { |
124 | 124 |
if (this.inputWordNm.trim() == '') { |
125 |
- alert('금지어를 입력해주세요.') |
|
125 |
+ alert('금지어를 입력하세요.') |
|
126 | 126 |
return |
127 | 127 |
} |
128 | 128 |
this.wordsArr.push(this.inputWordNm) |
... | ... | @@ -141,14 +141,19 @@ |
141 | 141 |
this.makeTbody(); |
142 | 142 |
} |
143 | 143 |
} catch (error) { |
144 |
- alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); |
|
144 |
+ const errorData = error.response.data; |
|
145 |
+ if (errorData.message != null && errorData.message != "") { |
|
146 |
+ alert(error.response.data.message); |
|
147 |
+ } else { |
|
148 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
149 |
+ } |
|
145 | 150 |
} |
146 | 151 |
}, |
147 | 152 |
// 금지어 등록 |
148 | 153 |
async fnSave() { |
149 | 154 |
try { |
150 | 155 |
if (this.wordsArr.length == 0) { |
151 |
- alert('등록할 금지어를 추가해주세요.') |
|
156 |
+ alert('등록할 금지어를 추가하세요.') |
|
152 | 157 |
return |
153 | 158 |
} |
154 | 159 |
const param = { |
... | ... | @@ -162,7 +167,12 @@ |
162 | 167 |
this.fnFindAllWord(); |
163 | 168 |
} |
164 | 169 |
} catch (error) { |
165 |
- alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); |
|
170 |
+ const errorData = error.response.data; |
|
171 |
+ if (errorData.message != null && errorData.message != "") { |
|
172 |
+ alert(error.response.data.message); |
|
173 |
+ } else { |
|
174 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
175 |
+ } |
|
166 | 176 |
} |
167 | 177 |
}, |
168 | 178 |
// 삭제할 워드 선택 |
... | ... | @@ -177,7 +187,7 @@ |
177 | 187 |
// 삭제 버튼 로직 |
178 | 188 |
async fnDelete() { |
179 | 189 |
if (this.delWords.length === 0) { |
180 |
- alert('삭제할 금지어를 선택해주세요.'); |
|
190 |
+ alert('삭제할 금지어를 선택하세요.'); |
|
181 | 191 |
return; |
182 | 192 |
} |
183 | 193 |
if (!confirm('선택한 금지어를 삭제하시겠습니까?')) { |
... | ... | @@ -201,7 +211,12 @@ |
201 | 211 |
|
202 | 212 |
} |
203 | 213 |
} catch (error) { |
204 |
- alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); |
|
214 |
+ const errorData = error.response.data; |
|
215 |
+ if (errorData.message != null && errorData.message != "") { |
|
216 |
+ alert(error.response.data.message); |
|
217 |
+ } else { |
|
218 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
219 |
+ } |
|
205 | 220 |
} |
206 | 221 |
}, |
207 | 222 |
|
--- client/views/pages/adm/departmentManagement/DepartmentManagement.vue
+++ client/views/pages/adm/departmentManagement/DepartmentManagement.vue
... | ... | @@ -57,7 +57,7 @@ |
57 | 57 |
class="form-control sm" |
58 | 58 |
:disabled="isFormDisabled" |
59 | 59 |
v-model="viewDept.deptNm" |
60 |
- placeholder="부서명을 입력해주세요" |
|
60 |
+ placeholder="부서명을 입력하세요." |
|
61 | 61 |
/> |
62 | 62 |
</div> |
63 | 63 |
<div class="grid-column layout"> |
... | ... | @@ -84,7 +84,7 @@ |
84 | 84 |
style="min-height: 3rem" |
85 | 85 |
:disabled="isFormDisabled" |
86 | 86 |
v-model="viewDept.deptExpln" |
87 |
- placeholder="부서에 대한 설명을 입력해주세요" |
|
87 |
+ placeholder="부서에 대한 설명을 입력해주세요." |
|
88 | 88 |
></textarea> |
89 | 89 |
</div> |
90 | 90 |
</div> |
... | ... | @@ -98,12 +98,11 @@ |
98 | 98 |
<span v-if="submitStts"> 등록 </span> |
99 | 99 |
<span v-else>수정</span> |
100 | 100 |
</button> |
101 |
- |
|
102 |
- |
|
103 | 101 |
<button |
104 | 102 |
class="btn sm red" |
105 | 103 |
:disabled="isFormDisabled" |
106 | 104 |
@click="fnDel" |
105 |
+ v-if="pageAuth.delAuthrt == 'Y' && selectedDeptId != null" |
|
107 | 106 |
> |
108 | 107 |
삭제 |
109 | 108 |
</button> |
... | ... | @@ -235,6 +234,7 @@ |
235 | 234 |
newDept: {}, // 신규 부서 등록 |
236 | 235 |
viewDept: {}, // 사용자에게 보여질 부서정보 |
237 | 236 |
searchText: "", // 사용자 정보 검색 |
237 |
+ originDept: null, // 변경전 부서 정보 |
|
238 | 238 |
|
239 | 239 |
submitStts: true, |
240 | 240 |
topBoxHeight: 0, |
... | ... | @@ -258,7 +258,12 @@ |
258 | 258 |
this.newDept.useYn = "Y"; |
259 | 259 |
} |
260 | 260 |
} catch (error) { |
261 |
- alert(error.response.data.message); |
|
261 |
+ const errorData = error.response.data; |
|
262 |
+ if (errorData.message != null && errorData.message != "") { |
|
263 |
+ alert(error.response.data.message); |
|
264 |
+ } else { |
|
265 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
266 |
+ } |
|
262 | 267 |
} |
263 | 268 |
}, |
264 | 269 |
// 상세 조회 |
... | ... | @@ -280,7 +285,12 @@ |
280 | 285 |
this.submitStts = false; |
281 | 286 |
} |
282 | 287 |
} catch (error) { |
283 |
- alert(error.response.data.message); |
|
288 |
+ const errorData = error.response.data; |
|
289 |
+ if (errorData.message != null && errorData.message != "") { |
|
290 |
+ alert(error.response.data.message); |
|
291 |
+ } else { |
|
292 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
293 |
+ } |
|
284 | 294 |
} |
285 | 295 |
}, |
286 | 296 |
// 부서 선택 |
... | ... | @@ -304,18 +314,23 @@ |
304 | 314 |
// this.selectedDeptId = res.data.data.deptId; |
305 | 315 |
} |
306 | 316 |
} catch (error) { |
307 |
- alert(error.response.data.message); |
|
317 |
+ const errorData = error.response.data; |
|
318 |
+ if (errorData.message != null && errorData.message != "") { |
|
319 |
+ alert(error.response.data.message); |
|
320 |
+ } else { |
|
321 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
322 |
+ } |
|
308 | 323 |
} |
309 | 324 |
}, |
310 | 325 |
// 유효성 검사 |
311 | 326 |
validation() { |
312 | 327 |
if (!this.viewDept.deptNm || this.viewDept.deptNm.trim() === "") { |
313 |
- alert("부서명을 입력해주세요."); |
|
328 |
+ alert("부서명을 입력하세요."); |
|
314 | 329 |
return false; |
315 | 330 |
} |
316 | 331 |
// 부서권한 검사 |
317 | 332 |
if (!this.selectedAuthrt) { |
318 |
- alert("부서 권한을 지정해주세요."); |
|
333 |
+ alert("부서 권한을 지정하세요."); |
|
319 | 334 |
return false; |
320 | 335 |
} |
321 | 336 |
let authrtList = []; |
... | ... | @@ -327,7 +342,7 @@ |
327 | 342 |
// 삭제 |
328 | 343 |
async fnDel() { |
329 | 344 |
if (Object.keys(this.viewDept).length === 0) { |
330 |
- alert("삭제 대상을 지정해주세요."); |
|
345 |
+ alert("삭제 대상을 지정하세요."); |
|
331 | 346 |
return false; |
332 | 347 |
} |
333 | 348 |
if ( |
... | ... | @@ -345,7 +360,12 @@ |
345 | 360 |
this.findAll(); // 목록 재조회 |
346 | 361 |
} |
347 | 362 |
} catch (error) { |
348 |
- alert(error.response.data.message); |
|
363 |
+ const errorData = error.response.data; |
|
364 |
+ if (errorData.message != null && errorData.message != "") { |
|
365 |
+ alert(error.response.data.message); |
|
366 |
+ } else { |
|
367 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
368 |
+ } |
|
349 | 369 |
} |
350 | 370 |
}, |
351 | 371 |
// 최상위 신규 객체 생성 |
... | ... | @@ -364,7 +384,7 @@ |
364 | 384 |
// Object.keys(this.viewDept).length === 0 || |
365 | 385 |
this.selectedDeptId == null |
366 | 386 |
) { |
367 |
- alert("상위 부서를 지정해주세요."); |
|
387 |
+ alert("상위 부서를 지정하세요."); |
|
368 | 388 |
return; |
369 | 389 |
} else { |
370 | 390 |
if (!confirm("작성 중인 부서정보는 저장되지 않습니다.\n계속 하시겠습니까?")) { |
... | ... | @@ -385,6 +405,7 @@ |
385 | 405 |
this.selectedAuthrt = ""; |
386 | 406 |
this.mbrList = []; // 부서에 등록되지 않은 사용자 정보 초기화 |
387 | 407 |
this.deptMbr = []; // 부서에 등록된 사용자 정보 초기화 |
408 |
+ this.originDept = this.viewDept.deptId; // null |
|
388 | 409 |
this.makeTbody(); |
389 | 410 |
this.makeMbrTobdy(); |
390 | 411 |
}, |
... | ... | @@ -416,7 +437,12 @@ |
416 | 437 |
this.findByDept(); |
417 | 438 |
} |
418 | 439 |
} catch (error) { |
419 |
- alert(error.response.data.message); |
|
440 |
+ const errorData = error.response.data; |
|
441 |
+ if (errorData.message != null && errorData.message != "") { |
|
442 |
+ alert(error.response.data.message); |
|
443 |
+ } else { |
|
444 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
445 |
+ } |
|
420 | 446 |
} |
421 | 447 |
}, |
422 | 448 |
// 사용자 정보 검색 |
... | ... | @@ -437,7 +463,12 @@ |
437 | 463 |
this.makeMbrTobdy(); |
438 | 464 |
} |
439 | 465 |
} catch (error) { |
440 |
- alert(error.response.data.message); |
|
466 |
+ const errorData = error.response.data; |
|
467 |
+ if (errorData.message != null && errorData.message != "") { |
|
468 |
+ alert(error.response.data.message); |
|
469 |
+ } else { |
|
470 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
471 |
+ } |
|
441 | 472 |
} |
442 | 473 |
}, |
443 | 474 |
// 사용자 부서 등록 |
... | ... | @@ -453,7 +484,14 @@ |
453 | 484 |
if (res.status == 200) { |
454 | 485 |
this.fnFindByMbr(); |
455 | 486 |
} |
456 |
- } catch (error) {} |
|
487 |
+ } catch (error) { |
|
488 |
+ const errorData = error.response.data; |
|
489 |
+ if (errorData.message != null && errorData.message != "") { |
|
490 |
+ alert(error.response.data.message); |
|
491 |
+ } else { |
|
492 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
493 |
+ } |
|
494 |
+ } |
|
457 | 495 |
}, |
458 | 496 |
// tbody 생성 |
459 | 497 |
makeTbody() { |
... | ... | @@ -510,7 +548,12 @@ |
510 | 548 |
this.findByDept(); |
511 | 549 |
} |
512 | 550 |
} catch (error) { |
513 |
- alert(error.res.data.message); |
|
551 |
+ const errorData = error.response.data; |
|
552 |
+ if (errorData.message != null && errorData.message != "") { |
|
553 |
+ alert(error.response.data.message); |
|
554 |
+ } else { |
|
555 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
556 |
+ } |
|
514 | 557 |
} |
515 | 558 |
}, |
516 | 559 |
updateHeight() { |
--- client/views/pages/adm/log/LoginLog.vue
+++ client/views/pages/adm/log/LoginLog.vue
... | ... | @@ -167,7 +167,12 @@ |
167 | 167 |
this.codeList = response.data.data.codeList; |
168 | 168 |
this.makeTbody(); |
169 | 169 |
} catch (error) { |
170 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
170 |
+ const errorData = error.response.data; |
|
171 |
+ if (errorData.message != null && errorData.message != "") { |
|
172 |
+ alert(error.response.data.message); |
|
173 |
+ } else { |
|
174 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
175 |
+ } |
|
171 | 176 |
} |
172 | 177 |
}, |
173 | 178 |
//─────axios─────┘ |
--- client/views/pages/adm/log/PersonalDataLog.vue
+++ client/views/pages/adm/log/PersonalDataLog.vue
... | ... | @@ -198,7 +198,12 @@ |
198 | 198 |
this.codeList = response.data.data.codeList; |
199 | 199 |
this.makeTbody(); |
200 | 200 |
} catch (error) { |
201 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
201 |
+ const errorData = error.response.data; |
|
202 |
+ if (errorData.message != null && errorData.message != "") { |
|
203 |
+ alert(error.response.data.message); |
|
204 |
+ } else { |
|
205 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
206 |
+ } |
|
202 | 207 |
} |
203 | 208 |
}, |
204 | 209 |
// 상세 조회 |
... | ... | @@ -208,7 +213,12 @@ |
208 | 213 |
this.prvcInqHstry = response.data.data; |
209 | 214 |
this.fnModalOpen(); |
210 | 215 |
} catch (error) { |
211 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
216 |
+ const errorData = error.response.data; |
|
217 |
+ if (errorData.message != null && errorData.message != "") { |
|
218 |
+ alert(error.response.data.message); |
|
219 |
+ } else { |
|
220 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
221 |
+ } |
|
212 | 222 |
} |
213 | 223 |
}, |
214 | 224 |
//─────axios─────┘}, |
--- client/views/pages/adm/main/Main.vue
+++ client/views/pages/adm/main/Main.vue
... | ... | @@ -96,10 +96,9 @@ |
96 | 96 |
import cntnStatsSave from "../../../../resources/js/cntnStatsSave"; |
97 | 97 |
|
98 | 98 |
// API |
99 |
-import { |
|
100 |
- adminMainProc |
|
101 |
-} from "../../../../resources/api/main"; |
|
99 |
+import { adminMainProc } from "../../../../resources/api/main"; |
|
102 | 100 |
import { findBySysMenu } from "../../../../resources/api/menu"; |
101 |
+import { sysListByPageProc } from "../../../../resources/api/popup"; |
|
103 | 102 |
|
104 | 103 |
const App = { |
105 | 104 |
mixins: [queryParams, cntnStatsSave], |
... | ... | @@ -134,6 +133,16 @@ |
134 | 133 |
}; |
135 | 134 |
}, |
136 | 135 |
created() { |
136 |
+ // 쿠키 초기화 |
|
137 |
+ const today = new Date(); |
|
138 |
+ let tomorrow = new Date(today.setDate(today.getDate() + 1)); |
|
139 |
+ tomorrow.setHours(0, 0, 0, 0); |
|
140 |
+ tomorrow = new Date(tomorrow); |
|
141 |
+ if (this.$cookies.get("popup") == null) { |
|
142 |
+ this.$cookies.set("popup", [], tomorrow); |
|
143 |
+ } |
|
144 |
+ this.fnPopupList(); |
|
145 |
+ |
|
137 | 146 |
this.reSetMenu(); |
138 | 147 |
this.fnMenuList(); |
139 | 148 |
this.fnAdminMain(); |
... | ... | @@ -199,7 +208,12 @@ |
199 | 208 |
this.chartData = datas; |
200 | 209 |
|
201 | 210 |
} catch (error) { |
202 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
211 |
+ const errorData = error.response.data; |
|
212 |
+ if (errorData.message != null && errorData.message != "") { |
|
213 |
+ alert(error.response.data.message); |
|
214 |
+ } else { |
|
215 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
216 |
+ } |
|
203 | 217 |
} |
204 | 218 |
}, |
205 | 219 |
// 게시판 제목 출력 |
... | ... | @@ -221,7 +235,12 @@ |
221 | 235 |
this.menuList = response.data.data.menuList; |
222 | 236 |
} |
223 | 237 |
} catch (error) { |
224 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
238 |
+ const errorData = error.response.data; |
|
239 |
+ if (errorData.message != null && errorData.message != "") { |
|
240 |
+ alert(error.response.data.message); |
|
241 |
+ } else { |
|
242 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
243 |
+ } |
|
225 | 244 |
} |
226 | 245 |
}, |
227 | 246 |
|
... | ... | @@ -274,6 +293,49 @@ |
274 | 293 |
} |
275 | 294 |
}, |
276 | 295 |
|
296 |
+ // 팝업조회(상세) |
|
297 |
+ async fnPopupList() { |
|
298 |
+ let data = { |
|
299 |
+ pageType: this.$store.state.userType, |
|
300 |
+ }; |
|
301 |
+ try { |
|
302 |
+ const response = await sysListByPageProc(data); |
|
303 |
+ let popupList = response.data.data; |
|
304 |
+ if (popupList != null && popupList.length > 0) { |
|
305 |
+ this.fnShowPopup(popupList); |
|
306 |
+ } |
|
307 |
+ } catch (error) { |
|
308 |
+ const errorData = error.response.data; |
|
309 |
+ if (errorData.message != null && errorData.message != "") { |
|
310 |
+ alert(error.response.data.message); |
|
311 |
+ } else { |
|
312 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
313 |
+ } |
|
314 |
+ } |
|
315 |
+ }, |
|
316 |
+ // 팝업 표시 |
|
317 |
+ fnShowPopup(popupList) { |
|
318 |
+ for (let popup of popupList) { |
|
319 |
+ let count = false; |
|
320 |
+ const popupCookies = this.$cookies.get("popup"); |
|
321 |
+ if (popupCookies.length > 0) { |
|
322 |
+ for (let cookie of popupCookies) { |
|
323 |
+ if (popup.popupId == cookie) { |
|
324 |
+ count = true; |
|
325 |
+ } |
|
326 |
+ } |
|
327 |
+ } |
|
328 |
+ if (!count) { |
|
329 |
+ let size = "width=" + popup.wdthLen + ", height=" + popup.vrtcLen; |
|
330 |
+ window.open( |
|
331 |
+ "/cmmn/popup.page?popupId=" + popup.popupId, |
|
332 |
+ "_blank", |
|
333 |
+ size + ", scrollbars=no, resizable=no, toolbars=no, menubar=no" |
|
334 |
+ ); |
|
335 |
+ } |
|
336 |
+ } |
|
337 |
+ }, |
|
338 |
+ |
|
277 | 339 |
}, |
278 | 340 |
}; |
279 | 341 |
|
--- client/views/pages/adm/member/adminManagement/AdminManagementSelectList.vue
+++ client/views/pages/adm/member/adminManagement/AdminManagementSelectList.vue
... | ... | @@ -93,7 +93,7 @@ |
93 | 93 |
|
94 | 94 |
colgroup: ["5%", "19%", "19%", "15%", "10%", "8%"], |
95 | 95 |
thead: [ |
96 |
- "번호", |
|
96 |
+ "NO", |
|
97 | 97 |
"아이디", |
98 | 98 |
"이름", |
99 | 99 |
"휴대폰번호", |
... | ... | @@ -126,7 +126,12 @@ |
126 | 126 |
this.search = response.data["data"]["pagination"]; |
127 | 127 |
this.makeTbody(); |
128 | 128 |
} catch (error) { |
129 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
129 |
+ const errorData = error.response.data; |
|
130 |
+ if (errorData.message != null && errorData.message != "") { |
|
131 |
+ alert(error.response.data.message); |
|
132 |
+ } else { |
|
133 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
134 |
+ } |
|
130 | 135 |
} |
131 | 136 |
}, |
132 | 137 |
// 휴대폰번호 표기 변환 |
... | ... | @@ -180,7 +185,12 @@ |
180 | 185 |
alert(response.data.message); |
181 | 186 |
this.fnViewList(); |
182 | 187 |
} catch (error) { |
183 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
188 |
+ const errorData = error.response.data; |
|
189 |
+ if (errorData.message != null && errorData.message != "") { |
|
190 |
+ alert(error.response.data.message); |
|
191 |
+ } else { |
|
192 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
193 |
+ } |
|
184 | 194 |
} |
185 | 195 |
}, |
186 | 196 |
|
--- client/views/pages/adm/member/userManagement/UserManagementSelectList.vue
+++ client/views/pages/adm/member/userManagement/UserManagementSelectList.vue
... | ... | @@ -121,7 +121,7 @@ |
121 | 121 |
|
122 | 122 |
colgroup: ["5%", "15%", "10%", "13%", "15%", "10%", "8%"], |
123 | 123 |
thead: [ |
124 |
- "번호", |
|
124 |
+ "NO", |
|
125 | 125 |
"아이디", |
126 | 126 |
"이름", |
127 | 127 |
"이메일", |
... | ... | @@ -163,7 +163,12 @@ |
163 | 163 |
this.search = response.data.data.pagination; |
164 | 164 |
this.makeTbody(); |
165 | 165 |
} catch (error) { |
166 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
166 |
+ const errorData = error.response.data; |
|
167 |
+ if (errorData.message != null && errorData.message != "") { |
|
168 |
+ alert(error.response.data.message); |
|
169 |
+ } else { |
|
170 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
171 |
+ } |
|
167 | 172 |
} |
168 | 173 |
}, |
169 | 174 |
// 휴대폰번호 표기 변환 |
... | ... | @@ -232,7 +237,7 @@ |
232 | 237 |
this.prvcInqHstry["inqRsn"] == null || |
233 | 238 |
this.prvcInqHstry["inqRsn"] == "" |
234 | 239 |
) { |
235 |
- alert("사유를 입력해주세요."); |
|
240 |
+ alert("사유를 입력하세요."); |
|
236 | 241 |
this.$refs.inqRsn.focus(); |
237 | 242 |
return; |
238 | 243 |
} |
... | ... | @@ -271,7 +276,12 @@ |
271 | 276 |
alert(response.data.message); |
272 | 277 |
this.fnViewList(); |
273 | 278 |
} catch (error) { |
274 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
279 |
+ const errorData = error.response.data; |
|
280 |
+ if (errorData.message != null && errorData.message != "") { |
|
281 |
+ alert(error.response.data.message); |
|
282 |
+ } else { |
|
283 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
284 |
+ } |
|
275 | 285 |
} |
276 | 286 |
}, |
277 | 287 |
|
--- client/views/pages/adm/popup/PopupManagementInsert.vue
+++ client/views/pages/adm/popup/PopupManagementInsert.vue
... | ... | @@ -146,11 +146,11 @@ |
146 | 146 |
</div> |
147 | 147 |
|
148 | 148 |
<div class="layout"> |
149 |
- <label class="form-title"><span>*</span>링크 URL</label> |
|
149 |
+ <label class="form-title">링크 URL</label> |
|
150 | 150 |
<input |
151 | 151 |
type="text" |
152 | 152 |
class="form-control sm" |
153 |
- placeholder="이미지 주소를 입력하세요." |
|
153 |
+ placeholder="이미지 주소를 입력해주세요." |
|
154 | 154 |
v-model="popup['linkUrl']" |
155 | 155 |
:disabled="popup['popupType'] != 'image'" |
156 | 156 |
ref="linkUrl" |
... | ... | @@ -191,13 +191,38 @@ |
191 | 191 |
<div class="layout"> |
192 | 192 |
<label class="form-title"><span>*</span>순서</label> |
193 | 193 |
<select class="form-select sm " v-model="popup['sn']" ref="sn"> |
194 |
- <option value="0">순서를 선택하세요.</option> |
|
194 |
+ <option value="">순서를 선택하세요.</option> |
|
195 | 195 |
<option value="1">1</option> |
196 | 196 |
<option value="2">2</option> |
197 | 197 |
<option value="3">3</option> |
198 | 198 |
<option value="4">4</option> |
199 | 199 |
<option value="5">5</option> |
200 | 200 |
</select> |
201 |
+ </div> |
|
202 |
+ <div class="layout"> |
|
203 |
+ <label class="form-title"><span>*</span>사용 유무</label> |
|
204 |
+ <div class="check-area"> |
|
205 |
+ <div class="form-check"> |
|
206 |
+ <input |
|
207 |
+ type="radio" |
|
208 |
+ id="useY" |
|
209 |
+ class="mr5" |
|
210 |
+ v-model="popup['popupUseYn']" |
|
211 |
+ value="Y" |
|
212 |
+ /> |
|
213 |
+ <label for="useY">사용</label> |
|
214 |
+ </div> |
|
215 |
+ <div class="form-check"> |
|
216 |
+ <input |
|
217 |
+ type="radio" |
|
218 |
+ id="useN" |
|
219 |
+ class="mr5" |
|
220 |
+ v-model="popup['popupUseYn']" |
|
221 |
+ value="N" |
|
222 |
+ /> |
|
223 |
+ <label for="useN">미사용</label> |
|
224 |
+ </div> |
|
225 |
+ </div> |
|
201 | 226 |
</div> |
202 | 227 |
</div> |
203 | 228 |
</div> |
... | ... | @@ -341,73 +366,73 @@ |
341 | 366 |
// 유효성 검사 |
342 | 367 |
valiadtion() { |
343 | 368 |
if (!this.popup["popupTtl"] || this.popup["popupTtl"].trim() === "") { |
344 |
- alert("제목을 입력해주세요."); |
|
369 |
+ alert("제목을 입력하세요."); |
|
345 | 370 |
this.$refs.popupTtl.focus(); |
346 | 371 |
return false; |
347 | 372 |
} |
348 | 373 |
if (!this.popup["bgngDt"]) { |
349 |
- alert("시작일을 입력해주세요."); |
|
374 |
+ alert("시작일을 입력하세요."); |
|
350 | 375 |
this.$refs.bgngDt.focus(); |
351 | 376 |
return false; |
352 | 377 |
} |
353 | 378 |
if (!this.popup["endDt"]) { |
354 |
- alert("종료일을 입력해주세요."); |
|
379 |
+ alert("종료일을 입력하세요."); |
|
355 | 380 |
this.$refs.endDt.focus(); |
356 | 381 |
return false; |
357 | 382 |
} |
358 | 383 |
if (!this.popup["popupSizeType"]) { |
359 |
- alert("팝업 크기를 선택해주세요."); |
|
384 |
+ alert("팝업 크기 타입을 선택하세요."); |
|
360 | 385 |
return false; |
361 | 386 |
} |
362 | 387 |
if (this.popup["popupSizeType"] == "fixed") { |
363 | 388 |
if (!this.popup["popupSize"]) { |
364 |
- alert("팝업 크기를 선택해주세요."); |
|
389 |
+ alert("팝업 크기를 선택하세요."); |
|
365 | 390 |
return false; |
366 | 391 |
} |
367 | 392 |
} else if (this.popup["popupSizeType"] == "custom") { |
368 | 393 |
if (!this.popup["wdthLen"]) { |
369 |
- alert("팝업 가로 크기를 선택해주세요."); |
|
394 |
+ alert("팝업 가로 크기를 입력하세요."); |
|
370 | 395 |
return false; |
371 | 396 |
} |
372 | 397 |
if (!this.popup["vrtcLen"]) { |
373 |
- alert("팝업 세로 크기를 선택해주세요."); |
|
398 |
+ alert("팝업 세로 크기를 입력하세요."); |
|
374 | 399 |
return false; |
375 | 400 |
} |
376 | 401 |
} |
377 | 402 |
if (!this.popup["popupType"]) { |
378 |
- alert("업로드 형식을 선택해주세요."); |
|
403 |
+ alert("업로드 형식을 선택하세요."); |
|
379 | 404 |
return false; |
380 | 405 |
} |
381 | 406 |
if (this.popup["popupType"] == "image") { |
382 | 407 |
if (this.fileList.length < 1) { |
383 |
- alert("이미지 첨부파일을 선택해주세요."); |
|
408 |
+ alert("이미지 첨부파일을 추가하세요."); |
|
384 | 409 |
return false; |
385 | 410 |
} |
386 |
- if (!this.popup["linkUrl"]) { |
|
387 |
- alert("링크 URL을 선택해주세요."); |
|
388 |
- this.$refs.linkUrl.focus(); |
|
389 |
- return false; |
|
390 |
- } |
|
411 |
+ // if (this.popup["linkUrl"].trim() == '') { |
|
412 |
+ // alert("링크 URL을 입력하세요."); |
|
413 |
+ // this.$refs.linkUrl.focus(); |
|
414 |
+ // return false; |
|
415 |
+ // } |
|
391 | 416 |
} else if (this.popup["popupType"] == "video") { |
392 |
- if (!this.popup["vdoUrl"]) { |
|
393 |
- alert("동영상 URL을 선택해주세요."); |
|
417 |
+ if (this.popup["vdoUrl"].trim() == '') { |
|
418 |
+ alert("동영상 URL을 입력하세요."); |
|
394 | 419 |
this.$refs.vdoUrl.focus(); |
395 | 420 |
return false; |
396 | 421 |
} |
397 | 422 |
} |
398 | 423 |
if (!this.popup["sn"]) { |
399 |
- alert("순서를 선택해주세요."); |
|
424 |
+ alert("순서를 선택하세요."); |
|
400 | 425 |
this.$refs.sn.focus(); |
401 | 426 |
return false; |
402 | 427 |
} |
403 | 428 |
if (!this.popup["pageType"]) { |
404 |
- alert("팝업 노출 페이지를 선택해주세요."); |
|
429 |
+ alert("팝업 노출 페이지를 선택하세요."); |
|
405 | 430 |
return false; |
406 | 431 |
} |
407 |
- // if (!this.popup["popupUseYn"]) { |
|
408 |
- // alert("사용 유무를 선택해주세요."); |
|
409 |
- // return false; |
|
410 |
- // } |
|
432 |
+ if (!this.popup["popupUseYn"]) { |
|
433 |
+ alert("사용 유무를 선택해주세요."); |
|
434 |
+ return false; |
|
435 |
+ } |
|
411 | 436 |
}, |
412 | 437 |
|
413 | 438 |
//─────axios─────┐ |
--- client/views/pages/adm/popup/PopupManagementSelectList.vue
+++ client/views/pages/adm/popup/PopupManagementSelectList.vue
... | ... | @@ -74,7 +74,7 @@ |
74 | 74 |
pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, |
75 | 75 |
|
76 | 76 |
colgroup: ["5%", "40%", "10%", "15%", "15%", "15%"], |
77 |
- thead: ["no", "제목", "사용여부", "시작일", "종료일", "작성자"], |
|
77 |
+ thead: ["NO", "제목", "사용여부", "시작일", "종료일", "작성자"], |
|
78 | 78 |
tbody: [], |
79 | 79 |
search: { ...defaultSearchParams }, |
80 | 80 |
list: [], |
... | ... | @@ -135,7 +135,12 @@ |
135 | 135 |
this.search = response.data.data.pagination; |
136 | 136 |
this.makeTbody(); |
137 | 137 |
} catch (error) { |
138 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
138 |
+ const errorData = error.response.data; |
|
139 |
+ if (errorData.message != null && errorData.message != "") { |
|
140 |
+ alert(error.response.data.message); |
|
141 |
+ } else { |
|
142 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
143 |
+ } |
|
139 | 144 |
} |
140 | 145 |
}, |
141 | 146 |
//─────axios─────┘ |
--- client/views/pages/adm/popup/PopupManagementSelectListOne.vue
+++ client/views/pages/adm/popup/PopupManagementSelectListOne.vue
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 |
</div> |
21 | 21 |
<div class="layout"> |
22 | 22 |
<p class="form-title">게시일</p> |
23 |
- <p>{{ popup['bgngDt'] +"-"+ popup['endDt'] }}</p> |
|
23 |
+ <p>{{ popup['bgngDt'] +" ~ "+ popup['endDt'] }}</p> |
|
24 | 24 |
|
25 | 25 |
<!-- <input |
26 | 26 |
type="datetime" |
... | ... | @@ -107,8 +107,8 @@ |
107 | 107 |
</div> --> |
108 | 108 |
</div> |
109 | 109 |
<div class="layout"> |
110 |
- <p class="form-title">업로드 형식 </p> |
|
111 |
- <p>{{ popup['popupType'] }}</p> |
|
110 |
+ <p class="form-title">업로드 형식</p> |
|
111 |
+ <p>{{ popupTypeName }}</p> |
|
112 | 112 |
<!-- <div class="flex align-center no-gutters"> |
113 | 113 |
<div class="gd-5"> |
114 | 114 |
<input |
... | ... | @@ -193,8 +193,8 @@ |
193 | 193 |
</div> |
194 | 194 |
</template> |
195 | 195 |
<div class="layout"> |
196 |
- <p class="form-title point-font2 mb10"> 팝업 노출 페이지</p> |
|
197 |
- <p>{{ popup['pageType'] }}</p> |
|
196 |
+ <p class="form-title point-font2 mb10">팝업 노출 페이지</p> |
|
197 |
+ <p>{{ pageTypeName }}</p> |
|
198 | 198 |
<!-- <select |
199 | 199 |
class="full-input" |
200 | 200 |
v-model="popup['pageType']" |
... | ... | @@ -227,6 +227,10 @@ |
227 | 227 |
<option value="4">4</option> |
228 | 228 |
<option value="5">5</option> |
229 | 229 |
</select> --> |
230 |
+ </div> |
|
231 |
+ <div class="layout"> |
|
232 |
+ <p class="form-title">사용 유무</p> |
|
233 |
+ <p>{{ popup['popupUseYn'] }}</p> |
|
230 | 234 |
</div> |
231 | 235 |
</div> |
232 | 236 |
</div> |
... | ... | @@ -340,7 +344,12 @@ |
340 | 344 |
} |
341 | 345 |
} |
342 | 346 |
} catch (error) { |
343 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
347 |
+ const errorData = error.response.data; |
|
348 |
+ if (errorData.message != null && errorData.message != "") { |
|
349 |
+ alert(error.response.data.message); |
|
350 |
+ } else { |
|
351 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
352 |
+ } |
|
344 | 353 |
} |
345 | 354 |
}, |
346 | 355 |
// 삭제 |
... | ... | @@ -352,13 +361,33 @@ |
352 | 361 |
this.fnList(); |
353 | 362 |
} |
354 | 363 |
} catch (error) { |
355 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
364 |
+ const errorData = error.response.data; |
|
365 |
+ if (errorData.message != null && errorData.message != "") { |
|
366 |
+ alert(error.response.data.message); |
|
367 |
+ } else { |
|
368 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
369 |
+ } |
|
356 | 370 |
} |
357 | 371 |
}, |
358 | 372 |
//─────axios─────┘ |
359 | 373 |
}, |
360 | 374 |
watch: {}, |
361 |
- computed: {}, |
|
375 |
+ computed: { |
|
376 |
+ popupTypeName() { |
|
377 |
+ // 팝업 타입 |
|
378 |
+ const popupTypeList = [ |
|
379 |
+ { cd: "image", cdNm: "이미지" }, |
|
380 |
+ { cd: "video", cdNm: "영상" }, |
|
381 |
+ ]; |
|
382 |
+ const match = popupTypeList.find(item => item.cd === this.popup['popupType']); |
|
383 |
+ return match ? match.cdNm : this.popup['popupType']; |
|
384 |
+ }, |
|
385 |
+ |
|
386 |
+ pageTypeName() { |
|
387 |
+ const match = this.codeList.find(item => item.cd === this.popup['pageType']); |
|
388 |
+ return match ? match.cdNm : this.popup['pageType']; |
|
389 |
+ } |
|
390 |
+ }, |
|
362 | 391 |
components: {}, |
363 | 392 |
mounted() {}, |
364 | 393 |
}; |
--- client/views/pages/adm/preferences/commonCodeManagement/CommonCodeManagement.vue
+++ client/views/pages/adm/preferences/commonCodeManagement/CommonCodeManagement.vue
... | ... | @@ -44,15 +44,15 @@ |
44 | 44 |
<div class="layout"> |
45 | 45 |
<label for="" class="form-title"><span>*</span>코드</label> |
46 | 46 |
<input type="text" class="form-control sm" :disabled="isFormDisabled || !submitStts" |
47 |
- v-model="viewCode.cd" placeholder="코드를 입력해주세요"/> |
|
47 |
+ v-model="viewCode.cd" placeholder="코드를 입력하세요."/> |
|
48 | 48 |
</div> |
49 | 49 |
<div class="layout"> |
50 | 50 |
<label for="" class="form-title"><span>*</span>코드명</label> |
51 |
- <input type="text" class="form-control sm" :disabled="isFormDisabled" v-model="viewCode.cdNm" placeholder="코드명을 입력해주세요"/> |
|
51 |
+ <input type="text" class="form-control sm" :disabled="isFormDisabled" v-model="viewCode.cdNm" placeholder="코드명을 입력하세요."/> |
|
52 | 52 |
</div> |
53 | 53 |
<div class="layout"> |
54 | 54 |
<label for="" class="form-title">코드값</label> |
55 |
- <input type="text" class="form-control sm" :disabled="isFormDisabled" v-model="viewCode.cdVl" placeholder="코드값을 입력해주세요"/> |
|
55 |
+ <input type="text" class="form-control sm" :disabled="isFormDisabled" v-model="viewCode.cdVl" placeholder="코드값을 입력해주세요."/> |
|
56 | 56 |
</div> |
57 | 57 |
<div class="border-bottom layout"> |
58 | 58 |
<label for="" class="form-title"><span>*</span>사용여부</label> |
... | ... | @@ -71,7 +71,7 @@ |
71 | 71 |
</div> |
72 | 72 |
<div class="grid-column layout"> |
73 | 73 |
<label for="textarea" class="form-title" style="vertical-align: top;">코드설명</label> |
74 |
- <textarea class="form-control sm" id="textarea" :disabled="isFormDisabled" v-model="viewCode.cdExpln" style="height: 100%;" placeholder="코드설명을 입력해주세요"></textarea> |
|
74 |
+ <textarea class="form-control sm" id="textarea" :disabled="isFormDisabled" v-model="viewCode.cdExpln" style="height: 100%;" placeholder="코드설명을 입력해주세요."></textarea> |
|
75 | 75 |
</div> |
76 | 76 |
</div> |
77 | 77 |
</div> |
... | ... | @@ -144,7 +144,12 @@ |
144 | 144 |
this.newCode.useYn = "Y"; |
145 | 145 |
} |
146 | 146 |
} catch (error) { |
147 |
- alert(error.response.data.message); |
|
147 |
+ const errorData = error.response.data; |
|
148 |
+ if (errorData.message != null && errorData.message != "") { |
|
149 |
+ alert(error.response.data.message); |
|
150 |
+ } else { |
|
151 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
152 |
+ } |
|
148 | 153 |
} |
149 | 154 |
}, |
150 | 155 |
fnViewDetail(cd) { |
... | ... | @@ -163,7 +168,12 @@ |
163 | 168 |
this.submitStts = false; |
164 | 169 |
} |
165 | 170 |
} catch (error) { |
166 |
- alert(error.response.data.message); |
|
171 |
+ const errorData = error.response.data; |
|
172 |
+ if (errorData.message != null && errorData.message != "") { |
|
173 |
+ alert(error.response.data.message); |
|
174 |
+ } else { |
|
175 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
176 |
+ } |
|
167 | 177 |
} |
168 | 178 |
}, |
169 | 179 |
// 저장 |
... | ... | @@ -187,13 +197,18 @@ |
187 | 197 |
// this.selectedCd = res.data.data.cd; |
188 | 198 |
} |
189 | 199 |
} catch (error) { |
190 |
- alert(error.response.data.message); |
|
200 |
+ const errorData = error.response.data; |
|
201 |
+ if (errorData.message != null && errorData.message != "") { |
|
202 |
+ alert(error.response.data.message); |
|
203 |
+ } else { |
|
204 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
205 |
+ } |
|
191 | 206 |
} |
192 | 207 |
}, |
193 | 208 |
// 삭제 |
194 | 209 |
async fnDel() { |
195 | 210 |
if (Object.keys(this.viewCode).length === 0) { |
196 |
- alert("삭제 대상을 지정해주세요."); |
|
211 |
+ alert("삭제 대상을 지정하세요."); |
|
197 | 212 |
return false; |
198 | 213 |
} |
199 | 214 |
if (this.viewCode.sysPvsnYn == 0) { |
... | ... | @@ -214,7 +229,12 @@ |
214 | 229 |
this.findAll(); |
215 | 230 |
} |
216 | 231 |
} catch (error) { |
217 |
- alert(error.response.data.message); |
|
232 |
+ const errorData = error.response.data; |
|
233 |
+ if (errorData.message != null && errorData.message != "") { |
|
234 |
+ alert(error.response.data.message); |
|
235 |
+ } else { |
|
236 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
237 |
+ } |
|
218 | 238 |
} |
219 | 239 |
}, |
220 | 240 |
// 최상위 신규 객체 생성 |
... | ... | @@ -233,7 +253,7 @@ |
233 | 253 |
subAdd() { |
234 | 254 |
// if (Object.keys(this.viewCode).length === 0) { |
235 | 255 |
if (this.selectedCd == null) { |
236 |
- alert("상위 코드를 지정해주세요."); |
|
256 |
+ alert("상위 코드를 지정하세요."); |
|
237 | 257 |
return; |
238 | 258 |
} else { |
239 | 259 |
if (!confirm("작성 중인 공통코드정보는 저장되지 않습니다.\n계속 하시겠습니까?")) { |
... | ... | @@ -250,16 +270,16 @@ |
250 | 270 |
}, |
251 | 271 |
validation() { |
252 | 272 |
if (!this.viewCode.cd || this.viewCode.cd.trim() === "") { |
253 |
- alert("코드를 입력해주세요."); |
|
273 |
+ alert("코드를 입력하세요."); |
|
254 | 274 |
return false; |
255 | 275 |
} |
256 | 276 |
const alpha = /^[a-zA-Z_]*$/; |
257 | 277 |
if (!alpha.test(this.viewCode.cd)) { |
258 |
- alert("코드는 영문과 언더바(_)만 사용하여 작성해주세요."); |
|
278 |
+ alert("코드는 영문과 언더바(_)만 사용하여 작성하세요."); |
|
259 | 279 |
return false; |
260 | 280 |
} |
261 | 281 |
if (!this.viewCode.cdNm || this.viewCode.cdNm.trim() === "") { |
262 |
- alert("코드명을 입력해주세요."); |
|
282 |
+ alert("코드명을 입력하세요."); |
|
263 | 283 |
return false; |
264 | 284 |
} |
265 | 285 |
return true; |
... | ... | @@ -279,7 +299,12 @@ |
279 | 299 |
this.findByCd(); |
280 | 300 |
} |
281 | 301 |
} catch (error) { |
282 |
- alert(error.res.data.message); |
|
302 |
+ const errorData = error.response.data; |
|
303 |
+ if (errorData.message != null && errorData.message != "") { |
|
304 |
+ alert(error.response.data.message); |
|
305 |
+ } else { |
|
306 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
307 |
+ } |
|
283 | 308 |
} |
284 | 309 |
}, |
285 | 310 |
}, |
--- client/views/pages/adm/preferences/contentTypeManagement/ContentTypeManagementInsert.vue
+++ client/views/pages/adm/preferences/contentTypeManagement/ContentTypeManagementInsert.vue
... | ... | @@ -17,7 +17,7 @@ |
17 | 17 |
class="form-control sm" |
18 | 18 |
v-model="contsTypeVO.contsKornNm" |
19 | 19 |
ref="contsKornNm" |
20 |
- placeholder="콘텐츠 한글명을 입력해주세요" |
|
20 |
+ placeholder="콘텐츠 한글명을 입력하세요." |
|
21 | 21 |
/> |
22 | 22 |
</div> |
23 | 23 |
<div class="layout"> |
... | ... | @@ -29,7 +29,7 @@ |
29 | 29 |
class="form-control sm" |
30 | 30 |
v-model="contsTypeVO.contsEngNm" |
31 | 31 |
ref="contsEngNm" |
32 |
- placeholder="콘텐츠 영문명을 입력해주세요" |
|
32 |
+ placeholder="콘텐츠 영문명을 입력하세요." |
|
33 | 33 |
/> |
34 | 34 |
</div> |
35 | 35 |
<div class="layout"> |
... | ... | @@ -42,9 +42,9 @@ |
42 | 42 |
class="form-control sm" |
43 | 43 |
v-model="contsTypeVO.mngrPageCrs" |
44 | 44 |
ref="mngrPageCrs" |
45 |
- placeholder="관리자 path를 입력해주세요" |
|
45 |
+ placeholder="관리자 path를 입력하세요." |
|
46 | 46 |
/> |
47 |
- <span><strong>관리자 PATH</strong> 또는 <strong>사용자 PATH</strong> 중 하나는 필수입니다</span> |
|
47 |
+ <span><strong>관리자 PATH</strong> 또는 <strong>사용자 PATH</strong> 중 하나는 필수입니다.</span> |
|
48 | 48 |
</div> |
49 | 49 |
</div> |
50 | 50 |
<div class="layout"> |
... | ... | @@ -56,7 +56,7 @@ |
56 | 56 |
class="form-control sm" |
57 | 57 |
v-model="contsTypeVO.pageCrs" |
58 | 58 |
ref="pageCrs" |
59 |
- placeholder="사용자 path를 입력해주세요" |
|
59 |
+ placeholder="사용자 path를 입력하세요." |
|
60 | 60 |
/> |
61 | 61 |
</div> |
62 | 62 |
<div class="layout"> |
... | ... | @@ -68,7 +68,7 @@ |
68 | 68 |
class="form-control sm" |
69 | 69 |
v-model="contsTypeVO.compnCrs" |
70 | 70 |
ref="compnCrs" |
71 |
- placeholder="component url을 입력해주세요" |
|
71 |
+ placeholder="COMPONENT URL을 입력하세요." |
|
72 | 72 |
/> |
73 | 73 |
</div> |
74 | 74 |
<div class="layout"> |
... | ... | @@ -143,7 +143,12 @@ |
143 | 143 |
const response = await findByContsType(data); |
144 | 144 |
this.contsTypeVO = response.data.data; |
145 | 145 |
} catch (error) { |
146 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
146 |
+ const errorData = error.response.data; |
|
147 |
+ if (errorData.message != null && errorData.message != "") { |
|
148 |
+ alert(error.response.data.message); |
|
149 |
+ } else { |
|
150 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
151 |
+ } |
|
147 | 152 |
} |
148 | 153 |
}, |
149 | 154 |
|
... | ... | @@ -180,21 +185,26 @@ |
180 | 185 |
}); |
181 | 186 |
} |
182 | 187 |
} catch (error) { |
183 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
188 |
+ const errorData = error.response.data; |
|
189 |
+ if (errorData.message != null && errorData.message != "") { |
|
190 |
+ alert(error.response.data.message); |
|
191 |
+ } else { |
|
192 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
193 |
+ } |
|
184 | 194 |
} |
185 | 195 |
}, |
186 | 196 |
// 유효성 검사 |
187 | 197 |
validation() { |
188 | 198 |
// 콘텐츠 한글명 |
189 | 199 |
if (this.isEmpty(this.contsTypeVO.contsKornNm)) { |
190 |
- alert("콘텐츠 한글명을 입력해주세요."); |
|
200 |
+ alert("콘텐츠 한글명을 입력하세요."); |
|
191 | 201 |
this.$refs.contsKornNm.focus(); |
192 | 202 |
return false; |
193 | 203 |
} |
194 | 204 |
|
195 | 205 |
// 콘텐츠 영문명 |
196 | 206 |
if (this.isEmpty(this.contsTypeVO.contsEngNm)) { |
197 |
- alert("콘텐츠 영문명을 입력해주세요."); |
|
207 |
+ alert("콘텐츠 영문명을 입력하세요."); |
|
198 | 208 |
this.$refs.contsEngNm.focus(); |
199 | 209 |
return false; |
200 | 210 |
} |
... | ... | @@ -203,7 +213,7 @@ |
203 | 213 |
let mngrPageCrs = this.isEmpty(this.contsTypeVO.mngrPageCrs); |
204 | 214 |
let pageCrs = this.isEmpty(this.contsTypeVO.pageCrs); |
205 | 215 |
if (mngrPageCrs && pageCrs) { |
206 |
- alert("관리자 PATH 혹은 사용자 PATH를 입력해주세요."); |
|
216 |
+ alert("관리자 PATH 혹은 사용자 PATH를 입력하세요."); |
|
207 | 217 |
return false; |
208 | 218 |
} |
209 | 219 |
|
... | ... | @@ -225,14 +235,14 @@ |
225 | 235 |
|
226 | 236 |
// COMPONENT_URL |
227 | 237 |
if (this.isEmpty(this.contsTypeVO.compnCrs)) { |
228 |
- alert("COMPONENT_URL을 입력해주세요."); |
|
238 |
+ alert("COMPONENT_URL을 입력하세요."); |
|
229 | 239 |
this.$refs.compnCrs.focus(); |
230 | 240 |
return false; |
231 | 241 |
} |
232 | 242 |
|
233 | 243 |
// 메뉴노출 |
234 | 244 |
if (this.isEmpty(this.contsTypeVO.expsrYn)) { |
235 |
- alert("메뉴노출을 선택해주세요."); |
|
245 |
+ alert("메뉴노출을 선택하세요."); |
|
236 | 246 |
return false; |
237 | 247 |
} |
238 | 248 |
|
--- client/views/pages/adm/preferences/contentTypeManagement/ContentTypeManagementSelectList.vue
+++ client/views/pages/adm/preferences/contentTypeManagement/ContentTypeManagementSelectList.vue
... | ... | @@ -69,7 +69,7 @@ |
69 | 69 |
// pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, // 페이지 권한 |
70 | 70 |
|
71 | 71 |
colgroup: ["5%", "40%", "40%", "15%"], |
72 |
- thead: ["번호", "콘텐츠 한글명", "콘텐츠 영문명", "메뉴노출"], |
|
72 |
+ thead: ["NO", "콘텐츠 한글명", "콘텐츠 영문명", "메뉴노출"], |
|
73 | 73 |
tbody: [], |
74 | 74 |
search: { ...defaultSearchParams }, |
75 | 75 |
list: [], |
... | ... | @@ -90,7 +90,12 @@ |
90 | 90 |
this.search = response.data["data"]["pagination"]; |
91 | 91 |
this.makeTbody(); |
92 | 92 |
} catch (error) { |
93 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
93 |
+ const errorData = error.response.data; |
|
94 |
+ if (errorData.message != null && errorData.message != "") { |
|
95 |
+ alert(error.response.data.message); |
|
96 |
+ } else { |
|
97 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
98 |
+ } |
|
94 | 99 |
} |
95 | 100 |
}, |
96 | 101 |
// tbody 생성 |
--- client/views/pages/adm/statistics/BbsStatistics.vue
+++ client/views/pages/adm/statistics/BbsStatistics.vue
... | ... | @@ -171,7 +171,12 @@ |
171 | 171 |
this.bbsCnt = response.data.data.bbsCnt; |
172 | 172 |
} |
173 | 173 |
} catch (error) { |
174 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
174 |
+ const errorData = error.response.data; |
|
175 |
+ if (errorData.message != null && errorData.message != "") { |
|
176 |
+ alert(error.response.data.message); |
|
177 |
+ } else { |
|
178 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
179 |
+ } |
|
175 | 180 |
} |
176 | 181 |
}, |
177 | 182 |
|
... | ... | @@ -235,7 +240,12 @@ |
235 | 240 |
window.URL.revokeObjectURL(url); |
236 | 241 |
}) |
237 | 242 |
.catch((error) => { |
238 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
243 |
+ const errorData = error.response.data; |
|
244 |
+ if (errorData.message != null && errorData.message != "") { |
|
245 |
+ alert(error.response.data.message); |
|
246 |
+ } else { |
|
247 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
248 |
+ } |
|
239 | 249 |
}); |
240 | 250 |
}); |
241 | 251 |
}, |
--- client/views/pages/adm/statistics/MenuStatistics.vue
+++ client/views/pages/adm/statistics/MenuStatistics.vue
... | ... | @@ -171,7 +171,12 @@ |
171 | 171 |
}; |
172 | 172 |
this.menuCnt = response.data.data.menuCnt; |
173 | 173 |
} catch (error) { |
174 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
174 |
+ const errorData = error.response.data; |
|
175 |
+ if (errorData.message != null && errorData.message != "") { |
|
176 |
+ alert(error.response.data.message); |
|
177 |
+ } else { |
|
178 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
179 |
+ } |
|
175 | 180 |
} |
176 | 181 |
}, |
177 | 182 |
|
... | ... | @@ -235,7 +240,12 @@ |
235 | 240 |
window.URL.revokeObjectURL(url); |
236 | 241 |
}) |
237 | 242 |
.catch((error) => { |
238 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
243 |
+ const errorData = error.response.data; |
|
244 |
+ if (errorData.message != null && errorData.message != "") { |
|
245 |
+ alert(error.response.data.message); |
|
246 |
+ } else { |
|
247 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
248 |
+ } |
|
239 | 249 |
}); |
240 | 250 |
}); |
241 | 251 |
}, |
--- client/views/pages/adm/statistics/UserStatistics.vue
+++ client/views/pages/adm/statistics/UserStatistics.vue
... | ... | @@ -161,7 +161,12 @@ |
161 | 161 |
this.chartData = datas; |
162 | 162 |
this.totalCnt = response.data.data.totalCnt; |
163 | 163 |
} catch (error) { |
164 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
164 |
+ const errorData = error.response.data; |
|
165 |
+ if (errorData.message != null && errorData.message != "") { |
|
166 |
+ alert(error.response.data.message); |
|
167 |
+ } else { |
|
168 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
169 |
+ } |
|
165 | 170 |
} |
166 | 171 |
}, |
167 | 172 |
|
... | ... | @@ -225,7 +230,12 @@ |
225 | 230 |
window.URL.revokeObjectURL(url); |
226 | 231 |
}) |
227 | 232 |
.catch((error) => { |
228 |
- alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
233 |
+ const errorData = error.response.data; |
|
234 |
+ if (errorData.message != null && errorData.message != "") { |
|
235 |
+ alert(error.response.data.message); |
|
236 |
+ } else { |
|
237 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
238 |
+ } |
|
229 | 239 |
}); |
230 | 240 |
}); |
231 | 241 |
}, |
--- client/views/pages/adm/system/LoginPolicy/LoginPolicy.vue
+++ client/views/pages/adm/system/LoginPolicy/LoginPolicy.vue
... | ... | @@ -56,7 +56,7 @@ |
56 | 56 |
<button class="btn sm main" @click="fnSave">저장</button> |
57 | 57 |
</div> |
58 | 58 |
<span class="ml10 gray"> |
59 |
- <strong>/경로</strong> 형식으로 입력해주세요. |
|
59 |
+ <strong>/</strong> 또는 <strong>/경로</strong> 형식으로 입력하세요. |
|
60 | 60 |
</span> |
61 | 61 |
</div> |
62 | 62 |
</div> |
... | ... | @@ -160,7 +160,12 @@ |
160 | 160 |
this.defaultCntxtPth = res.data.data; |
161 | 161 |
} |
162 | 162 |
} catch (error) { |
163 |
- alert(error.response.data.message); |
|
163 |
+ const errorData = error.response.data; |
|
164 |
+ if (errorData.message != null && errorData.message != "") { |
|
165 |
+ alert(error.response.data.message); |
|
166 |
+ } else { |
|
167 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
168 |
+ } |
|
164 | 169 |
} |
165 | 170 |
}, |
166 | 171 |
|
... | ... | @@ -195,7 +200,12 @@ |
195 | 200 |
alert(res.data.message); |
196 | 201 |
} |
197 | 202 |
} catch (error) { |
198 |
- alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); |
|
203 |
+ const errorData = error.response.data; |
|
204 |
+ if (errorData.message != null && errorData.message != "") { |
|
205 |
+ alert(error.response.data.message); |
|
206 |
+ } else { |
|
207 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
208 |
+ } |
|
199 | 209 |
} |
200 | 210 |
} |
201 | 211 |
}, |
--- client/views/pages/adm/system/networkAccessControl/NetworkAccessControlInsert.vue
+++ client/views/pages/adm/system/networkAccessControl/NetworkAccessControlInsert.vue
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 |
<div class="layout border-bottom"> |
21 | 21 |
<label for="" class="form-title"><span>*</span>제어 IP</label> |
22 | 22 |
<div class="form-group"> |
23 |
- <input type="text" class="form-control sm" v-model="accesCtrl.cntrlIp" placeholder="1~255 범위의 숫자로 구성하여 형식에 맞게 작성해주세요." /> |
|
23 |
+ <input type="text" class="form-control sm" v-model="accesCtrl.cntrlIp" placeholder="1~255 범위의 숫자로 구성하여 형식에 맞게 작성하세요." /> |
|
24 | 24 |
<span>ex) 192.168.0.1 / 192.168.0.*</span> |
25 | 25 |
</div> |
26 | 26 |
</div> |
... | ... | @@ -59,7 +59,7 @@ |
59 | 59 |
methods: { |
60 | 60 |
// 목록으로 이동 |
61 | 61 |
fnCancel() { |
62 |
- if (!confirm('등록을 취소하시겠습니까?')) { |
|
62 |
+ if (!confirm('작성을 취소하시겠습니까?')) { |
|
63 | 63 |
return; |
64 | 64 |
} |
65 | 65 |
if (this.accesCtrl.acsCntrlId == null || this.accesCtrl.acsCntrlId == 0) { |
... | ... | @@ -88,7 +88,12 @@ |
88 | 88 |
} |
89 | 89 |
this.codeList = res.data.data.codeList; // 유형 |
90 | 90 |
} catch (error) { |
91 |
- alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); |
|
91 |
+ const errorData = error.response.data; |
|
92 |
+ if (errorData.message != null && errorData.message != "") { |
|
93 |
+ alert(error.response.data.message); |
|
94 |
+ } else { |
|
95 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
96 |
+ } |
|
92 | 97 |
} |
93 | 98 |
}, |
94 | 99 |
|
... | ... | @@ -117,7 +122,12 @@ |
117 | 122 |
}); |
118 | 123 |
} |
119 | 124 |
} catch (error) { |
120 |
- alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); |
|
125 |
+ const errorData = error.response.data; |
|
126 |
+ if (errorData.message != null && errorData.message != "") { |
|
127 |
+ alert(error.response.data.message); |
|
128 |
+ } else { |
|
129 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
130 |
+ } |
|
121 | 131 |
} |
122 | 132 |
}, |
123 | 133 |
// 수정 |
... | ... | @@ -137,7 +147,12 @@ |
137 | 147 |
}); |
138 | 148 |
} |
139 | 149 |
} catch (error) { |
140 |
- alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.'); |
|
150 |
+ const errorData = error.response.data; |
|
151 |
+ if (errorData.message != null && errorData.message != "") { |
|
152 |
+ alert(error.response.data.message); |
|
153 |
+ } else { |
|
154 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
155 |
+ } |
|
141 | 156 |
} |
142 | 157 |
}, |
143 | 158 |
// 유효성 검사 |
... | ... | @@ -145,18 +160,18 @@ |
145 | 160 |
// const ipFilter = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; |
146 | 161 |
const ipFilter = /^(\*|[1-9]?[0-9]|1\d\d|2[0-4]\d|25[0-5])(\.(\*|[1-9]?[0-9]|1\d\d|2[0-4]\d|25[0-5])){3}$/; |
147 | 162 |
if (this.accesCtrl.cntrlType == null || this.accesCtrl.cntrlType == '') { |
148 |
- alert('제어 유형을 지정해주세요.'); |
|
163 |
+ alert('제어 유형을 지정하세요.'); |
|
149 | 164 |
return false; |
150 | 165 |
} |
151 | 166 |
if (this.accesCtrl.cntrlIp == null || this.accesCtrl.cntrlIp == '') { |
152 |
- alert('제어 IP를 입력해주세요.'); |
|
167 |
+ alert('제어 IP를 입력하세요.'); |
|
153 | 168 |
return false; |
154 | 169 |
} else if (!ipFilter.test(this.accesCtrl.cntrlIp)) { |
155 |
- alert('ip 형식이 다릅니다.'); |
|
170 |
+ alert('IP 형식이 다릅니다.'); |
|
156 | 171 |
return false; |
157 | 172 |
} |
158 | 173 |
if (this.accesCtrl.cntrlCrs == null || this.accesCtrl.cntrlCrs == '') { |
159 |
- alert('제어 경로를 입력해주세요.'); |
|
174 |
+ alert('제어 경로를 입력하세요.'); |
|
160 | 175 |
return false; |
161 | 176 |
} |
162 | 177 |
return true; |
--- client/views/pages/adm/system/networkAccessControl/NetworkAccessControlSelectList.vue
+++ client/views/pages/adm/system/networkAccessControl/NetworkAccessControlSelectList.vue
... | ... | @@ -108,7 +108,12 @@ |
108 | 108 |
this.codeList = res.data.data.codeList; // 검색 조건 항목 |
109 | 109 |
this.makeTbody(); |
110 | 110 |
} catch (error) { |
111 |
- alert(error.response.data.message); |
|
111 |
+ const errorData = error.response.data; |
|
112 |
+ if (errorData.message != null && errorData.message != "") { |
|
113 |
+ alert(error.response.data.message); |
|
114 |
+ } else { |
|
115 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
116 |
+ } |
|
112 | 117 |
} |
113 | 118 |
}, |
114 | 119 |
// 상세 조회 |
--- client/views/pages/adm/system/networkAccessControl/NetworkAccessControlSelectListOne.vue
+++ client/views/pages/adm/system/networkAccessControl/NetworkAccessControlSelectListOne.vue
... | ... | @@ -78,7 +78,12 @@ |
78 | 78 |
this.accesCtrl = res.data.data.accesCtrl; |
79 | 79 |
} |
80 | 80 |
} catch (error) { |
81 |
- // console.log("fnSelectOne : ", error); |
|
81 |
+ const errorData = error.response.data; |
|
82 |
+ if (errorData.message != null && errorData.message != "") { |
|
83 |
+ alert(error.response.data.message); |
|
84 |
+ } else { |
|
85 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
86 |
+ } |
|
82 | 87 |
} |
83 | 88 |
}, |
84 | 89 |
// 목록으로 이동 |
... | ... | @@ -111,7 +116,12 @@ |
111 | 116 |
}); |
112 | 117 |
} |
113 | 118 |
} catch (error) { |
114 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
119 |
+ const errorData = error.response.data; |
|
120 |
+ if (errorData.message != null && errorData.message != "") { |
|
121 |
+ alert(error.response.data.message); |
|
122 |
+ } else { |
|
123 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
124 |
+ } |
|
115 | 125 |
} |
116 | 126 |
}, |
117 | 127 |
}, |
--- client/views/pages/popup/PopUp.vue
+++ client/views/pages/popup/PopUp.vue
... | ... | @@ -91,7 +91,12 @@ |
91 | 91 |
this.downloadFile(); |
92 | 92 |
} |
93 | 93 |
} catch (error) { |
94 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
94 |
+ const errorData = error.response.data; |
|
95 |
+ if (errorData.message != null && errorData.message != "") { |
|
96 |
+ alert(error.response.data.message); |
|
97 |
+ } else { |
|
98 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
99 |
+ } |
|
95 | 100 |
} |
96 | 101 |
}, |
97 | 102 |
// 팝업 닫기 |
... | ... | @@ -139,10 +144,18 @@ |
139 | 144 |
new Blob([response.data], { type: "image/" + file.extnNm }) |
140 | 145 |
); |
141 | 146 |
} catch (error) { |
142 |
- alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요."); |
|
147 |
+ const errorData = error.response.data; |
|
148 |
+ if (errorData.message != null && errorData.message != "") { |
|
149 |
+ alert(error.response.data.message); |
|
150 |
+ } else { |
|
151 |
+ alert("에러가 발생했습니다.\n관리자에게 문의해주세요."); |
|
152 |
+ } |
|
143 | 153 |
} |
144 | 154 |
}, |
145 | 155 |
fnMove() { |
156 |
+ if(this.popup.linkUrl.trim() == "") { |
|
157 |
+ return; |
|
158 |
+ } |
|
146 | 159 |
window.opener.location = this.popup.linkUrl; |
147 | 160 |
this.fnClose(); |
148 | 161 |
}, |
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?