하석형 하석형 04-28
250428 하석형 API 오류 발생 시 사유 확인 가능 문구로 변경, 기타 안내 문구 변경
@4800d9fbc6f6797fc566548a7fd47c00b14e3213
client/resources/js/queryParams.js
--- client/resources/js/queryParams.js
+++ client/resources/js/queryParams.js
@@ -40,9 +40,9 @@
         /** 게시판 pageId 추출 **/
         fnBbsIdExtraction() {
             if(this.$route.path != null && this.$route.path != undefined && this.$route.path != '') {
-                console.log("this.$route.path", this.$route.path)
+                console.log("this.$route.path: ", this.$route.path);
                 let url = this.$filters.logicalPath(this.$route.path);
-                console.log("url", url)
+                console.log("url: ", url);
                 const regex = /^\/[^\/]+\/([^\/]+)\//; // 두 번째 '/'와 세 번째 '/' 사이의 문자열 추출
                 const match = url.match(regex); // 라우터 경로와 정규식 매칭
                 if(match) {
client/views/component/userInfo/UserAuthorList.vue
--- client/views/component/userInfo/UserAuthorList.vue
+++ client/views/component/userInfo/UserAuthorList.vue
@@ -1,7 +1,5 @@
 <template>
-
-
-    <label class="form-title"><span v-if="editMode != 'view'">*</span> 사용자 권한</label>
+    <label class="form-title"><span v-if="editMode != 'view'">* </span>사용자 권한</label>
     <div :class="{'form-group':editMode != 'view'}">
       <button  v-show="editMode != 'view'" class="btn sm ico-plus-w auth-btn" @click="fnAuthAddModalOpen">권한 추가</button>
       <template v-if="mbrVO.authorList != null && mbrVO.authorList != []">
@@ -128,7 +126,12 @@
         const response = await findAllSystem(params);
         this.originalList = response.data.data;
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 사용자권한 선택
client/views/component/userInfo/UserInfoInsert.vue
--- client/views/component/userInfo/UserInfoInsert.vue
+++ client/views/component/userInfo/UserInfoInsert.vue
@@ -8,270 +8,160 @@
             <p><span>*</span>필수입력</p>
           </div>
           <div class="form-content">
-            <div  class="layout">
-                <label class="form-title"><span>*</span> 아이디</label>
-                <input
-                  type="text"
-                  class="form-control sm"
-                  v-model="mbrVO.lgnId"
-                  ref="mbrId"
-                  minlength="5"
-                  maxlength="50"
-                  placeholder="아이디를 입력하세요."
-                  :disabled="mbrVO.mbrId != null"
-                />
+            <div class="layout">
+              <label class="form-title"><span>*</span> 아이디</label>
+              <input type="text" class="form-control sm" v-model="mbrVO.lgnId" ref="mbrId" minlength="5" maxlength="50"
+                placeholder="아이디를 입력하세요." :disabled="mbrVO.mbrId != null" />
+            </div>
+            <div class="layout">
+              <label class="form-title"><span>*</span> 이름</label>
+              <input type="text" class="form-control sm" ref="mbrNm" v-model="mbrVO.mbrNm" minlength="2" maxlength="50"
+                placeholder="이름을 입력하세요." />
+            </div>
+            <div class="layout">
+              <label class="form-title">
+                <p v-if="pageId == null"><span>*</span> 비밀번호</p>
+                <p v-else>비밀번호변경</p>
+              </label>
+              <div class="form-group">
+                <input type="password" class="form-control sm" ref="newPswd" v-model="pswd.newPswd" minlength="9"
+                  placeholder="영문, 숫자, 특수문자 조합 9자 이상" />
+                <span :class="{
+                  'red-text': pswd.errorPwd,
+                }">
+                  영문, 숫자, 특수문자를 조합하여 입력해주세요. (9자 이상)
+                </span>
               </div>
-              <div  class="layout">
-                <label class="form-title"><span>*</span> 이름</label>
-                <input
-                  type="text"
-                  class="form-control sm"
-                  ref="mbrNm"
-                  v-model="mbrVO.mbrNm"
-                  minlength="2"
-                  maxlength="50"
-                  placeholder="이름을 입력하세요."
-                />
+            </div>
+            <div class="layout">
+              <label class="form-title">
+                <p v-if="pageId == null"><span>*</span> 비밀번호확인</p>
+                <p v-else>비밀번호변경 확인</p>
+              </label>
+              <input type="password" :class="{ 'form-control sm': true, 'error': pswd.pswdChk }" ref="newPswdChk"
+                v-model="pswd.newPswdChk" minlength="9" :placeholder="pageId == null
+                    ? '비밀번호 확인을 입력하세요.'
+                    : '변경할 비밀번호 확인을 입력하세요'
+                  " />
+            </div>
+            <!-- <template v-if="showOpt.isMblNo || showOpt.isTelNo"> -->
+              <div v-if="showOpt.isMblNo" class="layout">
+                <label class="form-title"><span>*</span> 휴대폰번호</label>
+                <input type="text" class="form-control sm" ref="mblTelno" v-model="mbrVO.mblTelno" minlength="10"
+                  maxlength="11" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\.*)/g, '');"
+                  placeholder="휴대폰번호를 입력하세요." />
               </div>
-              <div  class="layout">
-                <label class="form-title">
-                  <p v-if="pageId == null"><span>*</span> 비밀번호</p>
-                  <p v-else>비밀번호변경</p>
+            <!-- </template> -->
+            <div v-if="showOpt.isTelNo" class="layout">
+              <label class="form-title">전화번호</label>
+              <input type="text" class="form-control sm" ref="telno" v-model="mbrVO.telno"
+                oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\.*)/g, '');"
+                placeholder="전화번호를 입력해주세요." />
+            </div>
+            <!-- <template v-if="showOpt.isEml || showOpt.isSmsAgree || showOpt.isEmlAgree"> -->
+              <div v-if="showOpt.isEml" class="layout">
+                <label class="form-title"><span>*</span> 이메일</label>
+                <div class="check-area">
+                  <input type="text" class="form-control sm" ref="emailId" v-model="email.id" oninput="this.value =
+                        this.value.replace(/[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/g, '');" placeholder="이메일을 입력하세요." />
+                  <div>@</div>
+                  <template v-if="email.select == 'self'">
+                    <input type="text" class="form-control sm" ref="emailAddress" v-model="email.address" />
+                  </template>
+                  <select class="form-select sm" ref="emailSelect" v-model="email.select">
+                    <option value="">선택하세요</option>
+                    <option value="self">직접입력</option>
+                    <option value="naver.com">naver.com</option>
+                    <option value="google.com">google.com</option>
+                    <option value="hanmail.net">hanmail.net</option>
+                    <option value="nate.com">nate.com</option>
+                    <option value="kakao.com">kakao.com</option>
+                  </select>
+                </div>
+              </div>
+              <div v-if="showOpt.isSmsAgree" class="layout">
+                <label class="form-title"><span>*</span>
+                  문자수신
                 </label>
-                <div class="form-group">
-                  <input
-                    type="password"
-                    class="form-control sm"
-                    ref="newPswd"
-                    v-model="pswd.newPswd"
-                    minlength="9"
-                    placeholder="영문, 숫자, 특수문자 조합 9자 이상"
-                  />
-                  <span
-                    :class="{
-                      'red-text': pswd.errorPwd,
-                    }"
-                  >
-                    영문, 숫자, 특수문자를 조합하여 입력해주세요. (9자 이상)
-                  </span>
+                <div class="check-area">
+                  <div class="form-check">
+                    <input type="radio" name="smsRcptnAgreYn" id="smsY" class="mr5" v-model="mbrVO.smsRcptnAgreYn"
+                      value="Y" />
+                    <label for="smsY">수신</label>
+                  </div>
+                  <div class="form-check">
+                    <input type="radio" name="smsRcptnAgreYn" id="smsN" class="mr5" v-model="mbrVO.smsRcptnAgreYn"
+                      value="N" />
+                    <label for="smsN">미수신</label>
+                  </div>
                 </div>
               </div>
-              <div  class="layout">
-                <label class="form-title">
-                  <p v-if="pageId == null"><span>*</span> 비밀번호확인</p>
-                  <p v-else>비밀번호변경 확인</p>
+              <div v-if="showOpt.isEmlAgree" class="layout">
+                <label class="form-title"><span>*</span>
+                  이메일수신
                 </label>
-                <input
-                  type="password"
-                  :class="{ 'form-control sm': true, 'error': pswd.pswdChk }"
-                  ref="newPswdChk"
-                  v-model="pswd.newPswdChk"
-                  minlength="9"
-                  :placeholder="
-                    pageId == null
-                      ? '비밀번호 확인을 입력하세요.'
-                      : '변경할 비밀번호 확인을 입력하세요'
-                  "
-                />
-              </div>
-              <template v-if="showOpt.isMblNo || showOpt.isTelNo">
-                <div v-if="showOpt.isMblNo"  class="layout">
-                  <label  class="form-title"><span>*</span> 휴대폰번호</label>
-                  <input
-                    type="text"
-                    class="form-control sm"
-                    ref="mblTelno"
-                    v-model="mbrVO.mblTelno"
-                    minlength="10"
-                    maxlength="11"
-                    oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\.*)/g, '');"
-                    placeholder="휴대폰번호를 입력하세요."
-                  />
-                </div>
-              </template>
-              <div v-if="showOpt.isTelNo"  class="layout">
-                <label class="form-title">전화번호</label>
-                <input
-                  type="text"
-                  class="form-control sm"
-                  ref="telno"
-                  v-model="mbrVO.telno"
-                  oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\.*)/g, '');"
-                  placeholder="전화번호를 입력하세요."
-                />
-              </div>
-              <template v-if="showOpt.isEml || showOpt.isSmsAgree || showOpt.isEmlAgree">
-                <div v-if="showOpt.isEml"  class="layout">
-                  <label  class="form-title"><span>*</span> 이메일</label>
-                  <div class="check-area">
-                      <input
-                        type="text"
-                        class="form-control sm"
-                        ref="emailId"
-                        v-model="email.id"
-                        oninput="this.value =
-                        this.value.replace(/[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/g, '');"
-                        placeholder="이메일을 입력하세요."
-                      />
-                      <div>@</div>
-                      <template v-if="email.select == 'self'">
-                        <input
-                          type="text"
-                          class="form-control sm"
-                          ref="emailAddress"
-                          v-model="email.address"
-                        />
-                      </template>
-                      <select
-                        class="form-select sm"
-                        ref="emailSelect"
-                        v-model="email.select"
-                      >
-                        <option value="">선택하세요</option>
-                        <option value="self">직접입력</option>
-                        <option value="naver.com">naver.com</option>
-                        <option value="google.com">google.com</option>
-                        <option value="hanmail.net">hanmail.net</option>
-                        <option value="nate.com">nate.com</option>
-                        <option value="kakao.com">kakao.com</option>
-                      </select>
+                <div class="check-area">
+                  <div class="form-check">
+                    <input type="radio" name="emlRcptnAgreYn" id="y" class="mr5" v-model="mbrVO.emlRcptnAgreYn"
+                      value="Y" />
+                    <label for="y">수신</label>
+                  </div>
+                  <div class="form-check">
+                    <input type="radio" name="emlRcptnAgreYn" id="n" class="mr5" v-model="mbrVO.emlRcptnAgreYn"
+                      value="N" />
+                    <label for="n">미수신</label>
                   </div>
                 </div>
-                <div v-if="showOpt.isSmsAgree"  class="layout">
-                    <label class="form-title"><span>*</span> 
-                      문자수신
-                    </label>
-                    <div class="check-area">
-                      <div class="form-check">
-                        <input
-                          type="radio"
-                          name="smsRcptnAgreYn"
-                          id="smsY"
-                          class="mr5"
-                          v-model="mbrVO.smsRcptnAgreYn"
-                          value="Y"
-                        />
-                        <label for="smsY">수신</label>
-                      </div>
-                      <div class="form-check">
-                        <input
-                          type="radio"
-                          name="smsRcptnAgreYn"
-                          id="smsN"
-                          class="mr5"
-                          v-model="mbrVO.smsRcptnAgreYn"
-                          value="N"
-                        />
-                        <label for="smsN">미수신</label>
-                      </div>
-                    </div>
-                  </div>
-                  <div v-if="showOpt.isEmlAgree"  class="layout">
-                    <label class="form-title"><span>*</span> 
-                      이메일수신
-                    </label>
-                    <div class="check-area">
-                      <div class="form-check">
-                        <input
-                          type="radio"
-                          name="emlRcptnAgreYn"
-                          id="y"
-                          class="mr5"
-                          v-model="mbrVO.emlRcptnAgreYn"
-                          value="Y"
-                        />
-                        <label for="y">수신</label>
-                      </div>
-                      <div class="form-check">
-                        <input
-                          type="radio"
-                          name="emlRcptnAgreYn"
-                          id="n"
-                          class="mr5"
-                          v-model="mbrVO.emlRcptnAgreYn"
-                          value="N"
-                        />
-                        <label for="n">미수신</label>
-                      </div>
-                    </div>
-                  </div>
-              </template>
-              <template  v-if="showOpt.isAddr">
-                <div  class="layout">
-                  <label class="form-title"><span>*</span> 우편번호</label>
-                      <input
-                        type="text"
-                        class="form-control sm"
-                        v-model="mbrVO.zip"
-                        readonly
-                      />
+              </div>
+            <!-- </template> -->
+            <template v-if="showOpt.isAddr">
+              <div class="layout">
+                <label class="form-title"><span>*</span> 우편번호</label>
+                <input type="text" class="form-control sm" v-model="mbrVO.zip" readonly />
 
-                      <button
-                        :class="{
-                          'large-btn': true,
-                          'blue-border-btn': pageRole == 'adm',
-                          'green-border-btn': pageRole == 'portal',
-                        }"
-                        @click="fnZipSearch"
-                      >
-                        찾기
-                      </button>
-                </div>
-                <div  class="layout">
-                  <label class="form-title"><span>*</span> 주소</label>
-                  <input
-                    type="text"
-                    class="form-control sm"
-                    v-model="mbrVO.addr"
-                    readonly
-                  />
-                </div>
-                <div  class="layout">
-                  <label class="form-title">
-                    상세주소
-                  </label>
-                  <input
-                    type="text"
-                    class="form-control sm"
-                    ref="daddr"
-                    v-model="mbrVO.daddr"
-                    placeholder="상세주소를 입력하세요."
-                  />
-                </div>
-              </template>
-              <template  v-if="showOpt.isStts && pageRole == 'adm'">
-                <div  class="layout">
-                      <label class="form-title"><span>*</span> 회원상태</label>
-                      <select class="form-select sm" v-model="mbrVO.mbrStts">
-                        <option value="1">승인</option>
-                        <option value="2">승인대기</option>
-                        <option value="0">탈퇴</option>
-                        <option value="3">차단</option>
-                      </select>
-                  </div>
-                  <div class="layout" v-if="showOpt.isCntrlDt">
-                      <label class="form-title">차단일</label>
-                      <input
-                        type="date"
-                        class="form-control sm"
-                        ref="cntrlDt"
-                        v-model="mbrVO.cntrlDt"
-                      />
-                    </div>
-              </template>
-              <div  class="layout border-bottom" v-if="showOpt.isCntrlRsn">
-                <label class="form-title">차단 사유</label>
-                <input
-                  type="text"
-                  class="form-control sm"
-                  ref="cntrlRsn"
-                  v-model="mbrVO.cntrlRsn"
-                  placeholder="차단 사유를 입력하세요."
-                />
+                <button :class="{
+                  'large-btn': true,
+                  'blue-border-btn': pageRole == 'adm',
+                  'green-border-btn': pageRole == 'portal',
+                }" @click="fnZipSearch">
+                  찾기
+                </button>
               </div>
-              <div v-if="showOpt.isAuthor && pageRole == 'adm'"  class="layout grid-column">
-                  <UserAuthorList :mbrVO="mbrVO" />
+              <div class="layout">
+                <label class="form-title"><span>*</span> 주소</label>
+                <input type="text" class="form-control sm" v-model="mbrVO.addr" readonly />
               </div>
+              <div class="layout">
+                <label class="form-title">
+                  상세주소
+                </label>
+                <input type="text" class="form-control sm" ref="daddr" v-model="mbrVO.daddr"
+                  placeholder="상세주소를 입력해주세요." />
+              </div>
+            </template>
+            <div v-if="showOpt.isAuthor && pageRole == 'adm'" class="layout">
+              <UserAuthorList :mbrVO="mbrVO" />
+            </div>
+            <!-- <template v-if="showOpt.isStts && pageRole == 'adm' && pageId != null"> -->
+              <div class="layout" v-if="showOpt.isStts && pageRole == 'adm' && pageId != null">
+                <label class="form-title"><span>*</span> 회원상태</label>
+                <select class="form-select sm" v-model="mbrVO.mbrStts">
+                  <option value="1">승인</option>
+                  <option value="2">승인대기</option>
+                  <option value="0">탈퇴</option>
+                  <option value="3">차단</option>
+                </select>
+              </div>
+              <div class="layout border-bottom" v-if="showOpt.isCntrlDt && pageRole == 'adm' && pageId != null">
+                <label class="form-title">차단일</label>
+                <input type="date" class="form-control sm" ref="cntrlDt" v-model="mbrVO.cntrlDt" />
+              </div>
+            <!-- </template> -->
+            <div class="layout" v-if="showOpt.isCntrlRsn && pageRole == 'adm' && pageId != null">
+              <label class="form-title">차단 사유</label>
+              <input type="text" class="form-control sm" ref="cntrlRsn" v-model="mbrVO.cntrlRsn"
+                placeholder="차단 사유를 입력해주세요." />
+            </div>
           </div>
         </div>
       </div>
@@ -280,17 +170,14 @@
 
 
   <div class="btn-wrap">
-      <button
-        :class="{
-          'btn sm main': true,
-          // 'blue-btn': pageRole == 'adm',
-          // 'green-btn': pageRole == 'portal',
-        }"
-        @click="fnUpsert"
-      >
-        {{ pageId == null ? "등록" : "수정" }}
-      </button>
-      <button class="btn sm tertiary" @click="fnCancel">취소</button>
+    <button :class="{
+      'btn sm main': true,
+      // 'blue-btn': pageRole == 'adm',
+      // 'green-btn': pageRole == 'portal',
+    }" @click="fnUpsert">
+      {{ pageId == null ? "등록" : "수정" }}
+    </button>
+    <button class="btn sm tertiary" @click="fnCancel">취소</button>
   </div>
 </template>
 
@@ -400,7 +287,12 @@
         }
         this.changeFormat(); // 휴대폰번호, 전화번호, 이메일 표기변경
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 표기변경
client/views/component/userInfo/UserInfoView.vue
--- client/views/component/userInfo/UserInfoView.vue
+++ client/views/component/userInfo/UserInfoView.vue
@@ -29,9 +29,7 @@
                 </div>
                 <template v-if="showOpt.isMblNo || showOpt.isTelNo">
                   <div v-if="showOpt.isMblNo" class="layout">
-                    <p class="form-title">
-                      휴대폰번호
-                    </p>
+                    <p class="form-title">휴대폰번호</p>
                     <p>{{ mbrVO.mblTelno }}</p>
                     <!-- <input
                       type="text"
@@ -84,9 +82,7 @@
                       </div>
          
                       <div v-if="showOpt.isSmsAgree"  class="layout">
-                        <p class="form-title">
-                          문자수신
-                        </p>
+                        <p class="form-title">문자수신</p>
                         <p>{{ mbrVO.smsRcptnAgreYn }}</p>
                         <!-- <div class="check-area">
                           <div class="form-check">
@@ -117,9 +113,7 @@
                       </div>
 
                       <div v-if="showOpt.isEmlAgree"  class="layout">
-                        <p class="form-title">
-                          이메일수신
-                        </p>
+                        <p class="form-title">이메일수신</p>
                         <p>{{ mbrVO.emlRcptnAgreYn }}</p>
                         <!-- <div class="check-area">
                           <div class="form-check">
@@ -152,9 +146,7 @@
                   <template v-if="showOpt.isAddr">
         
                         <div  class="layout">
-                          <p class="form-title">
-                            우편번호
-                          </p>
+                          <p class="form-title">우편번호</p>
                           <p>{{ '(' + mbrVO.zip + ')'+ mbrVO.addr + mbrVO.daddr}}</p>
                           <!-- <input
                             type="text"
@@ -185,12 +177,12 @@
                           />
                         </div> -->
                   </template>
-                  <template v-if="showOpt.isStts && pageRole == 'adm'">
-            
-                      <div  class="layout">
-                          <p class="form-title">
-                            회원상태
-                          </p>
+                  <div v-if="showOpt.isAuthor && pageRole == 'adm'" class="layout">
+                      <UserAuthorList :mbrVO="mbrVO" editMode="view" />
+                  </div>
+                  <!-- <template v-if="showOpt.isStts && pageRole == 'adm'"> -->
+                      <div class="layout" v-if="showOpt.isStts && pageRole == 'adm'">
+                          <p class="form-title">회원상태</p>
                           <p v-if="mbrVO.mbrStts  == 0">탈퇴</p>
                           <p v-else-if="mbrVO.mbrStts  == 1">승인</p>
                           <p v-else-if="mbrVO.mbrStts  == 2">승인대기</p>
@@ -202,7 +194,7 @@
                             <option value="3">차단</option>
                           </select> -->
                       </div>
-                      <div class="layout">
+                      <div class="layout border-bottom" v-if="showOpt.isCntrlDt && pageRole == 'adm'">
                           <p class="form-title">차단일</p>
                           <p>{{ mbrVO.cntrlDt }}</p>
                           <!-- <input
@@ -212,8 +204,8 @@
                             disabled
                           /> -->
                         </div>
-                      <div  class="layout border-bottom">
-                        <p  class="form-title">차단 사유</p>
+                      <div class="layout" v-if="showOpt.isCntrlRsn && pageRole == 'adm'">
+                        <p class="form-title">차단 사유</p>
                         <p>{{ mbrVO.cntrlRsn }}</p>
                         <!-- <input
                           type="text"
@@ -222,10 +214,7 @@
                           disabled
                         /> -->
                       </div>
-                  </template>
-                  <div v-if="showOpt.isAuthor && pageRole == 'adm'" class="layout grid-column">
-                      <UserAuthorList :mbrVO="mbrVO" editMode="view" />
-                  </div>
+                  <!-- </template> -->
               </div>
             </div>
         </div>
@@ -328,7 +317,12 @@
         this.mbrVO = response.data.data;
         this.changeFormat(); // 휴대폰번호, 전화번호, 이메일 표기변경
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
@@ -400,7 +394,12 @@
         alert(response.data["message"]);
         this.fnList();
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
   },
client/views/layout/menuSatisfaction.vue
--- client/views/layout/menuSatisfaction.vue
+++ client/views/layout/menuSatisfaction.vue
@@ -31,7 +31,7 @@
                     </div>
                 </div>
                 <div class="layout write-zone">
-                    <input type="text" class="form-control sm" v-model="menuDgstfn.opnn" placeholder="의견을 남겨주세요" />
+                    <input type="text" class="form-control sm" v-model="menuDgstfn.opnn" placeholder="의견을 남겨주세요" maxlength="50"/>
                     <button class="btn sm" @click="save">제출</button>
                 </div>
             </div>
@@ -128,6 +128,13 @@
                 alert("응답을 선택해주세요.");
                 return false;
             }
+
+            if (this.menuDgstfn.opnn != null && this.menuDgstfn.opnn != '') {
+                if(this.menuDgstfn.opnn.length > 50) {
+                    alert("의견은 50자 이내로 입력해주세요.");
+                    return false;
+                }
+            }
             const rspnsVal = this.checkRspns;
             this.menuDgstfn.rspnsFive = rspnsVal === '5' ? 'Y' : 'N';
             this.menuDgstfn.rspnsFour = rspnsVal === '4' ? 'Y' : 'N';
client/views/pages/adm/authority/authority/AuthorityInsert.vue
--- client/views/pages/adm/authority/authority/AuthorityInsert.vue
+++ client/views/pages/adm/authority/authority/AuthorityInsert.vue
@@ -19,7 +19,7 @@
                   :disabled="!submitStts"
                 />
                 <span class="red-text">
-                  권한 코드는 ROLE_ + 영문(대문자) 형태로 입력해주세요.
+                  권한 코드는 ROLE_ + 영문(대문자) 형태로 입력하세요.
                 </span>
               </div>
             </div>
@@ -30,7 +30,7 @@
                 type="text"
                 class="form-control sm"
                 ref="authrtNm"
-                placeholder="권한명을 입력해주세요."
+                placeholder="권한명을 입력하세요."
                 v-model="authrt.authrtNm"
               />
             </div>
@@ -42,7 +42,7 @@
                 id="authrtExpln"
                 v-model="authrt.authrtExpln"
                 class="form-control sm area"
-                placeholder="권한에 대한 설명을 입력해주세요"
+                placeholder="권한에 대한 설명을 입력해주세요."
               ></textarea>
             </div>
           </div>
@@ -95,7 +95,12 @@
           }
         }
       } catch (error) {
-        // console.log("error : ", error);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 저장
@@ -116,7 +121,12 @@
             });
           }
         } catch (error) {
-          alert(error.response.data.message);
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+          } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         }
       } else {
         try {
@@ -136,13 +146,18 @@
             });
           }
         } catch (error) {
-          alert(error.response.data.message);
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+          } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         }
       }
     },
     // 취소
     fnCancel() {
-      if (!confirm("등록을 취소하시겠습니까?")) {
+      if (!confirm("작성을 취소하시겠습니까?")) {
         return;
       }
       if (this.pageId == null || this.pageId == undefined) {
@@ -160,7 +175,7 @@
     },
     validation() {
       if (!this.authrt.authrtCd || this.authrt.authrtCd.trim() === "") {
-        alert("권한코드를 입력해주세요.");
+        alert("권한코드를 입력하세요.");
         this.$refs.authrtCd.focus();
         return false;
       }
@@ -171,13 +186,13 @@
       }
       const alpha = /^[A-Z_]*$/;
       if (!alpha.test(this.authrt.authrtCd)) {
-        alert("권한코드는 영문(대문자)과 언더바(_)만 사용하여 작성해주세요.");
+        alert("권한코드는 영문(대문자)과 언더바(_)만 사용하여 작성하세요.");
         this.$refs.authrtCd.focus();
         return false;
       }
       this.authrt.authrtCd = this.authrt.authrtCd.trim(); // 완성된 권한코드 공백 제거
       if (!this.authrt.authrtNm || this.authrt.authrtNm.trim() === "") {
-        alert("권한명을 입력해주세요.");
+        alert("권한명을 입력하세요.");
         this.$refs.authrtNm.focus();
         return false;
       }
client/views/pages/adm/authority/authority/AuthoritySelectList.vue
--- client/views/pages/adm/authority/authority/AuthoritySelectList.vue
+++ client/views/pages/adm/authority/authority/AuthoritySelectList.vue
@@ -105,7 +105,12 @@
         this.makeTbody();
         console.log("this.list : ", this.list);
       } catch (error) {
-        // console.log("error : ", error);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 상세 조회
@@ -141,7 +146,12 @@
           this.findAll();
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // tbody 생성
client/views/pages/adm/authority/authority/AuthoritySelectListOne.vue
--- client/views/pages/adm/authority/authority/AuthoritySelectListOne.vue
+++ client/views/pages/adm/authority/authority/AuthoritySelectListOne.vue
@@ -89,7 +89,12 @@
           this.authrt = res.data.data.authrt;
         }
       } catch (error) {
-        // console.log("error : ", error);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 목록으로 이동
@@ -131,7 +136,12 @@
           });
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 사용
@@ -148,7 +158,12 @@
           window.location.reload(); // 새로고침
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
   },
client/views/pages/adm/boardManagement/boardManagement/BoardManagementInsert.vue
--- client/views/pages/adm/boardManagement/boardManagement/BoardManagementInsert.vue
+++ client/views/pages/adm/boardManagement/boardManagement/BoardManagementInsert.vue
@@ -16,19 +16,19 @@
                         <div class="layout">
                             <label class="form-title">게시판 상단 정보</label>
                             <input type="text" class="form-control sm" v-model="bbsMng.bbsUpInfo"
-                                placeholder="게시판 상단에 표기될 정보를 입력하세요." />
+                                placeholder="게시판 상단에 표기될 정보를 입력해주세요." />
                         </div>
                         <div class="layout">
                             <label class="form-title">게시판 설명</label>
                             <input type="text" class="form-control sm" v-model="bbsMng.bbsExpln"
-                                placeholder="게시판 설명을 입력하세요." />
+                                placeholder="게시판 설명을 입력해주세요." />
                         </div>
                         <div class="layout">
                             <label class="form-title"><span>*</span>게시판 유형</label>
                             <select name="" id="" class="form-select sm" @change="typeSelect"
                                 :disabled="bbsMng.bbsMngId != null">
                                 <option :value="null" disabled :selected="bbsMng.bbsTypeId == null">
-                                    선택해주세요
+                                    선택하세요
                                 </option>
                                 <option v-for="(item, idx) in bbsTypeList" :value="item.bbsTypeId" :key="idx">
                                     {{ item.bbsTypeKornNm }}
@@ -42,7 +42,7 @@
                         <div class="layout">
                             <label class="form-title"><span>*</span>페이지 유형</label>
                             <select name="" id="" class="form-select sm" v-model="bbsMng.cd">
-                                <option :value="null" disabled>선택해주세요</option>
+                                <option :value="null" disabled>선택하세요</option>
                                 <option v-for="(item, idx) in pageTypeList" :value="item.cd" :key="idx">
                                     {{ item.cdNm }}
                                 </option>
@@ -90,7 +90,7 @@
                             <label class="form-title"><span>*</span>첨부파일 확장자</label>
                             <div class="form-group">
                                 <div class="layout border-none">
-                                    <input type="text" class="form-control sm" v-model="inputExtNm" placeholder="첨부파일 확장자를 입력하세요"
+                                    <input type="text" class="form-control sm" v-model="inputExtNm" placeholder="첨부파일 확장자를 입력하세요."
                                         @keyup.enter="addinputExtNm" />
                                     <button class="btn-ico xsm ico-plus" @click="addinputExtNm" title="추가"></button>
                                 </div>
@@ -115,7 +115,7 @@
                             <label class="form-title"><span>*</span>파일크기 제한</label>
                             <div class="input-group">
                                 <input type="number" class="form-control sm" v-model="bbsMng.fileSzLmt"
-                                    :placeholder="'첨부파일 파일 크기를 입력하세요(0 입력 시 최대' + maxFileSize + 'MB)'" />
+                                    :placeholder="'첨부파일 파일 크기를 입력하세요.(0 입력 시 최대' + maxFileSize + 'MB)'" />
                                 <span>MByte</span>
                             </div>
                         </div>
@@ -215,7 +215,7 @@
             }, */
         // 목록으로 이동
         fnCancel() {
-            if (!confirm("등록을 취소하시겠습니까?")) {
+            if (!confirm("작성을 취소하시겠습니까?")) {
                 return;
             }
             if (this.bbsMng.bbsMngId == null || this.bbsMng.bbsMngId == 0) {
@@ -256,7 +256,12 @@
                     this.maxFileSize = res.data.data.maxFileSize; // 시스템 최대 파일 크기
                 }
             } catch (error) {
-                alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
 
@@ -285,7 +290,12 @@
                     });
                 }
             } catch (error) {
-                alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
         // 수정
@@ -310,17 +320,22 @@
                     });
                 }
             } catch (error) {
-                alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
         // 유효성 검사
         Validation() {
             if (this.bbsMng.bbsNm == null || this.bbsMng.bbsNm == "") {
-                alert("게시판 명을 입력해주세요.");
+                alert("게시판 명을 입력하세요.");
                 return false;
             }
             if (this.bbsMng.bbsTypeId == null || this.bbsMng.bbsTypeId == "") {
-                alert("게시판 유형을 선택해주세요.");
+                alert("게시판 유형을 선택하세요.");
                 return false;
             }
             if (
@@ -328,31 +343,31 @@
                 this.bbsMng.artclCnt == "" ||
                 this.bbsMng.artclCnt < 1
             ) {
-                alert("목록 개수는 1 이상을 입력해주세요.");
+                alert("목록 개수는 1 이상을 입력하세요.");
                 return false;
             }
             if (this.bbsMng.cd == null || this.bbsMng.cd == "") {
-                alert("페이지 유형을 선택해주세요.");
+                alert("페이지 유형을 선택하세요.");
                 return false;
             }
             /* if (this.bbsMng.atchFileUseYn == null || this.bbsMng.atchFileUseYn == '') {
-                      alert('첨부파일 기능을 선택해주세요.');
+                      alert('첨부파일 기능을 선택하세요.');
                       return false;
                   }
                   if (this.bbsMng.ntcUseYn == null || this.bbsMng.ntcUseYn == '') {
-                      alert('공지글 기능을 선택해주세요.');
+                      alert('공지글 기능을 선택하세요.');
                       return false;
                   }
                   if (this.bbsMng.prvtPstUseYn == null || this.bbsMng.prvtPstUseYn == '') {
-                      alert('비밀글 기능을 선택해주세요.');
+                      alert('비밀글 기능을 선택하세요.');
                       return false;
                   }
                   if (this.bbsMng.bfrAftrPstUseYn == null || this.bbsMng.bfrAftrPstUseYn == '') {
-                      alert('이전글/다음글 기능을 선택해주세요.');
+                      alert('이전글/다음글 기능을 선택하세요.');
                       return false;
                   }
                   if (this.bbsMng.cmntUseYn == null || this.bbsMng.cmntUseYn == '') {
-                      alert('댓글 기능을 선택해주세요.');
+                      alert('댓글 기능을 선택하세요.');
                       return false;
                   } */
             if (this.bbsMng.fileSzLmt > this.maxFileSize) {
@@ -366,7 +381,7 @@
             ) {
                 this.bbsMng.fileSzLmt = this.maxFileSize; // 시스템 최대 파일 크기
                 /* if (this.bbsMng.atchFileUseYn == 'Y') {
-                            alert('파일 크기는 0 이상을 입력해주세요.');
+                            alert('파일 크기는 0 이상을 입력하세요.');
                             return false;
                         } else {
                             this.bbsMng.fileSzLmt = 0;
@@ -378,7 +393,7 @@
         addinputExtNm: function () {
             // 입력받은 확장자 앞에 .이 있는지 확인하고 .이 있으면 제거
             if (this.inputExtNm == null || this.inputExtNm.trim() == "") {
-                alert("확장자를 입력해주세요.");
+                alert("확장자를 추가하세요.");
                 return;
             }
             if (this.inputExtNm.indexOf(".") === 0) {
client/views/pages/adm/boardManagement/boardManagement/BoardManagementSelectList.vue
--- client/views/pages/adm/boardManagement/boardManagement/BoardManagementSelectList.vue
+++ client/views/pages/adm/boardManagement/boardManagement/BoardManagementSelectList.vue
@@ -6,7 +6,7 @@
                 <option value="">전체</option>
                 <option v-for="(item, idx) in codeList" :key="idx" :value="item.cd">{{ item.cdNm }}</option>
             </select> -->
-            <input type="text" class="form-control sm border-none" v-model="search.searchText" placeholder="게시판 명을 입력해주세요" @keyup.enter="findAll">
+            <input type="text" class="form-control sm border-none" v-model="search.searchText" placeholder="게시판 명을 입력하세요." @keyup.enter="findAll">
 
             <button class="btn-ico xsm ico-sch" @click="findAll">
                 <span class="sr-only">검색</span>
@@ -23,7 +23,7 @@
                         </colgroup>
                         <thead>
                             <tr>
-                                <th rowspan="2">번호</th>
+                                <th rowspan="2">NO</th>
                                 <th rowspan="2">게시판명</th>
                                 <th rowspan="2">유형</th>
                                 <th colspan="5">세부기능</th>
@@ -65,7 +65,7 @@
             :click="findAll"
         />
 
-        <button class="btn sm" @click="fnAdd">등록</button>
+        <button class="btn sm main" @click="fnAdd">등록</button>
 
     </div>
 </template>
@@ -110,7 +110,12 @@
                 // this.codeList = res.data.data.codeList; // 검색 조건 항목
                 this.makeTbody();
             } catch (error) {
-                alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.');
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
         // 상세 조회
client/views/pages/adm/boardManagement/boardManagement/BoardManagementSelectListOne.vue
--- client/views/pages/adm/boardManagement/boardManagement/BoardManagementSelectListOne.vue
+++ client/views/pages/adm/boardManagement/boardManagement/BoardManagementSelectListOne.vue
@@ -4,7 +4,7 @@
       <div class="scroll">
         <div class="form-box mb30">
           <div class="form-box-title">
-            <p >기본 설정</p>
+            <p >기본설정</p>
           </div>
           <div class="form-content">
             <div class="layout">
@@ -328,7 +328,12 @@
           this.pageTypeList = res.data.data.pageTypeList;
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 목록으로 이동
@@ -361,7 +366,12 @@
           });
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
   },
client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert copy.vue
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert copy.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert copy.vue
@@ -298,7 +298,7 @@
 
     // 취소 버튼 동작
     fnCancel() {
-      if (!confirm("등록을 취소하시겠습니까?")) {
+      if (!confirm("작성을 취소하시겠습니까?")) {
         return;
       }
       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
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonInsert.vue
@@ -229,7 +229,7 @@
 
     // 취소 버튼 동작
     fnCancel() {
-      if (!confirm("등록을 취소하시겠습니까?")) {
+      if (!confirm("작성을 취소하시겠습니까?")) {
         return;
       }
       if (this.bbsCn.bbsId == null || this.bbsCn.bbsId == 0) {
@@ -262,7 +262,12 @@
           this.$refs.ckeditor5.createEditor();
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 첨부파일 등록
@@ -346,8 +351,12 @@
           });
         })
         .catch((error) => {
-          const message = error.response.data.message;
-          alert(message);
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+          } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         });
     },
     // 수정
@@ -408,14 +417,18 @@
           });
         })
         .catch((error) => {
-          const message = error.response.data.message;
-          alert(message);
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+          } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         });
     },
     // 유효성 검사
     Validation() {
       if (!this.bbsCn.bbsNm || this.bbsCn.bbsNm.trim() === "") {
-        alert("게시판 제목을 입력해주세요.");
+        alert("게시판 제목을 입력하세요.");
         return false;
       }
 
@@ -436,14 +449,14 @@
         (this.isEmpty(this.bbsCn.bbsCn) ||
           this.removeHtmlAndSpace(this.bbsCn.bbsCn) === "")
       ) {
-        alert("게시판 내용을 입력해주세요.");
+        alert("게시판 내용을 입력하세요.");
         return false;
       }
       if (
         this.bbsCn.ntcPstYn === "Y" &&
         (this.bbsCn.ntcBgngDt === null || this.bbsCn.ntcEndDt === null)
       ) {
-        alert("공지기간을 올바르게 설정해주세요.");
+        alert("공지기간을 올바르게 설정하세요.");
         return false;
       }
 
client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectList.vue
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectList.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectList.vue
@@ -196,7 +196,12 @@
         this.ntcList = [];
         this.makeTbody();
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 상세 조회
client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
@@ -77,7 +77,7 @@
               >
                 {{ prevBbsCn.bbsNm }}
               </td>
-              <td v-else class="pd10">이전글이 없습니다</td>
+              <td v-else class="pd10">이전글이 없습니다.</td>
             </tr>
             <tr>
               <td class="pd10 text-ct">다음글</td>
@@ -88,7 +88,7 @@
               >
                 {{ nextBbsCn.bbsNm }}
               </td>
-              <td v-else class="pd10">다음글이 없습니다</td>
+              <td v-else class="pd10">다음글이 없습니다.</td>
             </tr>
           </tbody>
         </table>
@@ -229,7 +229,7 @@
             >
               <a :href="`${path}/view.page?pageId=${prevBbsCn.bbsId}`">{{ prevBbsCn.bbsNm }}</a>
             </td>
-            <td v-else class="pd10">이전글이 없습니다</td>
+            <td v-else class="pd10">이전글이 없습니다.</td>
           </tr>
           <tr>
             <td class="pd10 text-ct">다음글</td>
@@ -238,7 +238,7 @@
             >
               <a :href="`${path}/view.page?pageId=${nextBbsCn.bbsId}`">{{ nextBbsCn.bbsNm }}</a>
             </td>
-            <td v-else class="pd10">다음글이 없습니다</td>
+            <td v-else class="pd10">다음글이 없습니다.</td>
           </tr>
         </tbody>
       </table>
@@ -348,7 +348,12 @@
           this.updateVwCnt();
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 댓글 조회
@@ -362,7 +367,12 @@
           this.cmntList = res.data.data.cmntList;
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 첨부파일 다운로드 로직
@@ -391,7 +401,12 @@
         document.body.removeChild(link);
         window.URL.revokeObjectURL(url);
       } catch (error) {
-        alert("파일 다운로드 중 오류가 발생했습니다.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("파일 다운로드 중 오류가 발생했습니다.");
+        }
       }
     },
     // 목록으로 이동
@@ -433,7 +448,12 @@
           });
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 조회수 증가
@@ -444,7 +464,12 @@
         };
         const res = await updateVwCnt(params);
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
@@ -469,8 +494,12 @@
           this.getCmntList();
         }
       } catch (error) {
-        const message = error.response.data.message;
-        alert(message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // onDelete(commentId) {
client/views/pages/adm/boardManagement/template/faqTemplate/FaqInsert.vue
--- client/views/pages/adm/boardManagement/template/faqTemplate/FaqInsert.vue
+++ client/views/pages/adm/boardManagement/template/faqTemplate/FaqInsert.vue
@@ -223,7 +223,12 @@
           }
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     /*
@@ -317,8 +322,12 @@
           });
         })
         .catch((error) => {
-          const message = error.response.data.message;
-          alert(message);
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+          } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         });
     },
     // 수정
@@ -376,9 +385,12 @@
           });
         })
         .catch((error) => {
-          // console.log(error)
-          const message = error.response.data.message;
-          alert(message);
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+          } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         });
     },
     // 질의 답변 등록
@@ -394,8 +406,12 @@
           });
         }
       } catch (error) {
-        const message = error.response.data.message;
-        alert(message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 질의 답변 수정
@@ -409,14 +425,18 @@
           });
         }
       } catch (error) {
-        const message = error.response.data.message;
-        alert(message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
     // 취소 버튼 동작
     fnCancel() {
-      if (!confirm("등록을 취소하시겠습니까?")) {
+      if (!confirm("작성을 취소하시겠습니까?")) {
         return;
       }
 
client/views/pages/adm/boardManagement/template/faqTemplate/FaqSelectList.vue
--- client/views/pages/adm/boardManagement/template/faqTemplate/FaqSelectList.vue
+++ client/views/pages/adm/boardManagement/template/faqTemplate/FaqSelectList.vue
@@ -435,13 +435,17 @@
       try {
         const res = await findAll(toRaw(this.search));
         this.list = res.data.data.list; // 게시판 관리 목록
-        console.log("검색갯수",this.list.length);
         this.listCnt = res.data.data.pagination.totalRecordCount; // 게시판 관리 목록 갯수
         this.search = res.data.data.pagination; // 페이징처리 및 검색 내용
         // this.codeList = res.data.data.codeList; // 검색 조건 항목
         this.bbsMng = res.data.data.bbsMng;
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 등록페이지 이동
@@ -482,7 +486,12 @@
           this.findAll();
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
@@ -498,7 +507,12 @@
           this.findAll();
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 검색 조건 초기화
client/views/pages/adm/boardManagement/template/galleryTemplate/GalleryInsert.vue
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GalleryInsert.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GalleryInsert.vue
@@ -210,7 +210,7 @@
   methods: {
     // 목록으로 이동
     fnCancel() {
-      if (!confirm("등록을 취소하시겠습니까?")) {
+      if (!confirm("작성을 취소하시겠습니까?")) {
         return;
       }
       if (this.bbsCn.bbsId == null || this.bbsCn.bbsId == 0) {
@@ -244,7 +244,12 @@
           this.$refs.ckeditor5.createEditor();
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 이미지 파일 등록
@@ -360,8 +365,12 @@
           });
         })
         .catch((error) => {
-          const message = error.response.data.message;
-          alert(message);
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+          } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         });
     },
     // 수정
@@ -421,14 +430,18 @@
           });
         })
         .catch((error) => {
-          const message = error.response.data.message;
-          alert(message);
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+          } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         });
     },
     // 유효성 검사
     Validation() {
       if (!this.bbsCn.bbsNm || this.bbsCn.bbsNm.trim() === "") {
-        alert("게시판 제목을 입력해주세요.");
+        alert("게시판 제목을 입력하세요.");
         return false;
       }
 
@@ -448,13 +461,13 @@
         (this.isEmpty(this.bbsCn.bbsCn) ||
           this.removeHtmlAndSpace(this.bbsCn.bbsCn) === "")
       ) {
-        alert("게시판 내용을 입력해주세요.");
+        alert("게시판 내용을 입력하세요.");
         return false;
       }
 
       //  이미지 파일 null 검사
       if (this.imgFileList.length < 1) {
-        alert("이미지 파일을 첨부해주세요.");
+        alert("이미지 파일을 첨부하세요.");
         return false;
       }
 
@@ -462,7 +475,7 @@
         this.bbsCn.ntcPstYn === "Y" &&
         (this.bbsCn.ntcBgngDt === null || this.bbsCn.ntcEndDt === null)
       ) {
-        alert("공지기간을 올바르게 설정해주세요.");
+        alert("공지기간을 올바르게 설정하세요.");
         return false;
       }
 
client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectList.vue
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectList.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectList.vue
@@ -212,7 +212,12 @@
                 this.bbsMng = res.data.data.bbsMng;
                 
             } catch (error) {
-                alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.');
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
         // 상세 조회
client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
@@ -113,7 +113,7 @@
               >
               <a :href="`${path}/view.page?pageId=${prevBbsCn.bbsId}`">{{ prevBbsCn.bbsNm }}</a>
               </td>
-              <td v-else>이전글이 없습니다</td>
+              <td v-else>이전글이 없습니다.</td>
             </tr>
             <tr>
               <td>다음글</td>
@@ -122,7 +122,7 @@
               >
               <a :href="`${path}/view.page?pageId=${nextBbsCn.bbsId}`">{{ nextBbsCn.bbsNm }}</a>
               </td>
-              <td v-else>다음글이 없습니다</td>
+              <td v-else>다음글이 없습니다.</td>
             </tr>
           </tbody>
         </table>
@@ -246,7 +246,12 @@
           this.updateVwCnt();
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 댓글 조회
@@ -260,7 +265,12 @@
           this.cmntList = res.data.data.cmntList;
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 첨부파일 다운로드 로직
@@ -289,7 +299,12 @@
         document.body.removeChild(link);
         window.URL.revokeObjectURL(url);
       } catch (error) {
-        alert("파일 다운로드 중 오류가 발생했습니다.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("파일 다운로드 중 오류가 발생했습니다.");
+        }
       }
     },
     // 목록으로 이동
@@ -331,7 +346,12 @@
           });
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 조회수 증가
@@ -342,7 +362,12 @@
         };
         const res = await updateVwCnt(params);
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 댓글 등록 로직
@@ -366,8 +391,12 @@
           this.getCmntList();
         }
       } catch (error) {
-        const message = error.response.data.message;
-        alert(message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     isReply(isReply) {
client/views/pages/adm/boardManagement/template/videoTemplate/VideoInsert.vue
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoInsert.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoInsert.vue
@@ -538,7 +538,7 @@
     // 추가 수정 필요
     // 목록으로 이동
     fnCancel() {
-      if (!confirm("등록을 취소하시겠습니까?")) {
+      if (!confirm("작성을 취소하시겠습니까?")) {
         return;
       }
       if (this.bbsCn.bbsId == null || this.bbsCn.bbsId == 0) {
@@ -572,7 +572,12 @@
           this.$refs.ckeditor5.createEditor();
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 썸네일 등록
@@ -688,8 +693,12 @@
           });
         })
         .catch((error) => {
-          const message = error.response.data.message;
-          alert(message);
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+          } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         });
     },
     // 수정
@@ -749,14 +758,18 @@
           });
         })
         .catch((error) => {
-          const message = error.response.data.message;
-          alert(message);
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+          } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         });
     },
     // 유효성 검사
     Validation() {
       if (!this.bbsCn.bbsNm || this.bbsCn.bbsNm.trim() === "") {
-        alert("게시판 제목을 입력해주세요.");
+        alert("게시판 제목을 입력하세요.");
         return false;
       }
 
@@ -776,13 +789,13 @@
         (this.isEmpty(this.bbsCn.bbsCn) ||
           this.removeHtmlAndSpace(this.bbsCn.bbsCn) === "")
       ) {
-        alert("게시판 내용을 입력해주세요.");
+        alert("게시판 내용을 입력하세요.");
         return false;
       }
 
       // url null 검사
       if (!this.bbsCn.vdoUrl || this.bbsCn.vdoUrl.trim() === "") {
-        alert("영상 URL을 입력해주세요.");
+        alert("영상 URL을 입력하세요.");
         return false;
       }
       const pattern = /youtu\.be|youtube\.com/;
@@ -795,7 +808,7 @@
         this.bbsCn.ntcPstYn === "Y" &&
         (this.bbsCn.ntcBgngDt === null || this.bbsCn.ntcEndDt === null)
       ) {
-        alert("공지기간을 올바르게 설정해주세요.");
+        alert("공지기간을 올바르게 설정하세요.");
         return false;
       }
 
client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
@@ -167,7 +167,12 @@
                 this.bbsMng = res.data.data.bbsMng;
                 
             } catch (error) {
-                alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.');
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
         // 상세 조회
client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
@@ -140,7 +140,7 @@
               >
                 {{ prevBbsCn.bbsNm }}
               </td>
-              <td v-else class="pd10">이전글이 없습니다</td>
+              <td v-else class="pd10">이전글이 없습니다.</td>
             </tr>
             <tr>
               <td class="pd10 text-ct">다음글</td>
@@ -151,7 +151,7 @@
               >
                 {{ nextBbsCn.bbsNm }}
               </td>
-              <td v-else class="pd10">다음글이 없습니다</td>
+              <td v-else class="pd10">다음글이 없습니다.</td>
             </tr>
           </tbody>
         </table>
@@ -302,7 +302,7 @@
                 >
                 <a :href="`${path}/view.page?pageId=${prevBbsCn.bbsId}`">{{ prevBbsCn.bbsNm }}</a>
                 </td>
-                <td v-else>이전글이 없습니다</td>
+                <td v-else>이전글이 없습니다.</td>
               </tr>
               <tr>
                 <td>다음글</td>
@@ -311,7 +311,7 @@
                 >
                 <a :href="`${path}/view.page?pageId=${nextBbsCn.bbsId}`">{{ nextBbsCn.bbsNm }}</a>
                 </td>
-                <td v-else>다음글이 없습니다</td>
+                <td v-else>다음글이 없습니다.</td>
               </tr>
             </tbody>
           </table>
@@ -419,7 +419,12 @@
           this.updateVwCnt();
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 댓글 조회
@@ -433,7 +438,12 @@
           this.cmntList = res.data.data.cmntList;
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 첨부파일 다운로드 로직
@@ -462,7 +472,12 @@
         document.body.removeChild(link);
         window.URL.revokeObjectURL(url);
       } catch (error) {
-        alert("파일 다운로드 중 오류가 발생했습니다.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("파일 다운로드 중 오류가 발생했습니다.");
+        }
       }
     },
     // 목록으로 이동
@@ -504,7 +519,12 @@
           });
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 조회수 증가
@@ -515,7 +535,12 @@
         };
         const res = await updateVwCnt(params);
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 댓글 등록 로직
@@ -539,8 +564,12 @@
           this.getCmntList();
         }
       } catch (error) {
-        const message = error.response.data.message;
-        alert(message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     isReply(isReply) {
client/views/pages/adm/boardManagement/wordsManagement/WordsManagementSelectList.vue
--- client/views/pages/adm/boardManagement/wordsManagement/WordsManagementSelectList.vue
+++ client/views/pages/adm/boardManagement/wordsManagement/WordsManagementSelectList.vue
@@ -6,7 +6,7 @@
                 <option value="">전체</option>
                 <option v-for="(item, idx) in codeList" :key="idx" :value="item.cd">{{ item.cdNm }}</option>
             </select> -->
-            <input type="text" class="form-control sm border-none"  placeholder="금지어를 입력해주세요."
+            <input type="text" class="form-control sm border-none"  placeholder="금지어를 입력하세요."
                 v-model="search.searchText" @keyup.enter="fnFindAllWord" />
             <button class="btn-ico xsm ico-sch" @click="fnFindAllWord">
                 <span class="sr-only">검색</span>
@@ -46,7 +46,7 @@
             <button class="btn-close" @click="modalClose"></button>
         </template>
         <div class="input-group">
-            <input type="text" class="form-control sm" placeholder="추가할 금지어를 입력해주세요." v-model="inputWordNm"
+            <input type="text" class="form-control sm" placeholder="추가할 금지어를 입력하세요." v-model="inputWordNm"
                 @keyup.enter="addinputWord" style="width: calc(100% - 100px);"/>
             <button class="btn sm ico-before ico-plus-w main" @click="addinputWord">추가</button>
         </div>
@@ -122,7 +122,7 @@
         // 금지어 추가 (리스트 생성)
         addinputWord: function () {
             if (this.inputWordNm.trim() == '') {
-                alert('금지어를 입력해주세요.')
+                alert('금지어를 입력하세요.')
                 return
             }
             this.wordsArr.push(this.inputWordNm)
@@ -141,14 +141,19 @@
                     this.makeTbody();
                 }
             } catch (error) {
-                alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.');
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
         // 금지어 등록
         async fnSave() {
             try {
                 if (this.wordsArr.length == 0) {
-                    alert('등록할 금지어를 추가해주세요.')
+                    alert('등록할 금지어를 추가하세요.')
                     return
                 }
                 const param = {
@@ -162,7 +167,12 @@
                     this.fnFindAllWord();
                 }
             } catch (error) {
-                alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.');
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
         // 삭제할 워드 선택
@@ -177,7 +187,7 @@
         // 삭제 버튼 로직
         async fnDelete() {
             if (this.delWords.length === 0) {
-                alert('삭제할 금지어를 선택해주세요.');
+                alert('삭제할 금지어를 선택하세요.');
                 return;
             }
             if (!confirm('선택한 금지어를 삭제하시겠습니까?')) {
@@ -201,7 +211,12 @@
                     
                 }
             } catch (error) {
-                alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.');
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
 
client/views/pages/adm/departmentManagement/DepartmentManagement.vue
--- client/views/pages/adm/departmentManagement/DepartmentManagement.vue
+++ client/views/pages/adm/departmentManagement/DepartmentManagement.vue
@@ -57,7 +57,7 @@
                     class="form-control sm"
                     :disabled="isFormDisabled"
                     v-model="viewDept.deptNm"
-                    placeholder="부서명을 입력해주세요"
+                    placeholder="부서명을 입력하세요."
                   />
                 </div>
                 <div  class="grid-column layout">
@@ -84,7 +84,7 @@
                     style="min-height: 3rem"
                     :disabled="isFormDisabled"
                     v-model="viewDept.deptExpln"
-                    placeholder="부서에 대한 설명을 입력해주세요"
+                    placeholder="부서에 대한 설명을 입력해주세요."
                   ></textarea>
                 </div>
               </div>
@@ -98,12 +98,11 @@
                   <span v-if="submitStts"> 등록 </span>
                   <span v-else>수정</span>
                 </button>
-
-    
                 <button
                   class="btn sm red"
                   :disabled="isFormDisabled"
                   @click="fnDel"
+                  v-if="pageAuth.delAuthrt == 'Y' && selectedDeptId != null"
                 >
                   삭제
                 </button>
@@ -235,6 +234,7 @@
       newDept: {}, // 신규 부서 등록
       viewDept: {}, // 사용자에게 보여질 부서정보
       searchText: "", // 사용자 정보 검색
+      originDept: null, // 변경전 부서 정보
 
       submitStts: true,
       topBoxHeight: 0, 
@@ -258,7 +258,12 @@
           this.newDept.useYn = "Y";
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 상세 조회
@@ -280,7 +285,12 @@
           this.submitStts = false;
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 부서 선택
@@ -304,18 +314,23 @@
           // this.selectedDeptId = res.data.data.deptId;
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 유효성 검사
     validation() {
       if (!this.viewDept.deptNm || this.viewDept.deptNm.trim() === "") {
-        alert("부서명을 입력해주세요.");
+        alert("부서명을 입력하세요.");
         return false;
       }
       // 부서권한 검사
       if (!this.selectedAuthrt) {
-        alert("부서 권한을 지정해주세요.");
+        alert("부서 권한을 지정하세요.");
         return false;
       }
       let authrtList = [];
@@ -327,7 +342,7 @@
     // 삭제
     async fnDel() {
       if (Object.keys(this.viewDept).length === 0) {
-        alert("삭제 대상을 지정해주세요.");
+        alert("삭제 대상을 지정하세요.");
         return false;
       }
       if (
@@ -345,7 +360,12 @@
           this.findAll(); // 목록 재조회
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 최상위 신규 객체 생성
@@ -364,7 +384,7 @@
         // Object.keys(this.viewDept).length === 0 ||
         this.selectedDeptId == null
       ) {
-        alert("상위 부서를 지정해주세요.");
+        alert("상위 부서를 지정하세요.");
         return;
       } else {
         if (!confirm("작성 중인 부서정보는 저장되지 않습니다.\n계속 하시겠습니까?")) {
@@ -385,6 +405,7 @@
       this.selectedAuthrt = "";
       this.mbrList = []; // 부서에 등록되지 않은 사용자 정보 초기화
       this.deptMbr = []; // 부서에 등록된 사용자 정보 초기화
+      this.originDept = this.viewDept.deptId; // null
       this.makeTbody();
       this.makeMbrTobdy();
     },
@@ -416,7 +437,12 @@
           this.findByDept();
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 사용자 정보 검색
@@ -437,7 +463,12 @@
           this.makeMbrTobdy();
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 사용자 부서 등록
@@ -453,7 +484,14 @@
         if (res.status == 200) {
           this.fnFindByMbr();
         }
-      } catch (error) {}
+      } catch (error) {
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
+      }
     },
     // tbody 생성
     makeTbody() {
@@ -510,7 +548,12 @@
           this.findByDept();
         }
       } catch (error) {
-        alert(error.res.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     updateHeight() {
client/views/pages/adm/log/LoginLog.vue
--- client/views/pages/adm/log/LoginLog.vue
+++ client/views/pages/adm/log/LoginLog.vue
@@ -167,7 +167,12 @@
         this.codeList = response.data.data.codeList;
         this.makeTbody();
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     //─────axios─────┘
client/views/pages/adm/log/PersonalDataLog.vue
--- client/views/pages/adm/log/PersonalDataLog.vue
+++ client/views/pages/adm/log/PersonalDataLog.vue
@@ -198,7 +198,12 @@
         this.codeList = response.data.data.codeList;
         this.makeTbody();
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 상세 조회
@@ -208,7 +213,12 @@
         this.prvcInqHstry = response.data.data;
         this.fnModalOpen();
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     //─────axios─────┘},
client/views/pages/adm/main/Main.vue
--- client/views/pages/adm/main/Main.vue
+++ client/views/pages/adm/main/Main.vue
@@ -199,7 +199,12 @@
         this.chartData = datas;
 
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 게시판 제목 출력
@@ -221,7 +226,12 @@
           this.menuList = response.data.data.menuList;
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
client/views/pages/adm/member/adminManagement/AdminManagementSelectList.vue
--- client/views/pages/adm/member/adminManagement/AdminManagementSelectList.vue
+++ client/views/pages/adm/member/adminManagement/AdminManagementSelectList.vue
@@ -93,7 +93,7 @@
 
       colgroup: ["5%", "19%", "19%", "15%", "10%", "8%"],
       thead: [
-        "번호",
+        "NO",
         "아이디",
         "이름",
         "휴대폰번호",
@@ -126,7 +126,12 @@
         this.search = response.data["data"]["pagination"];
         this.makeTbody();
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 휴대폰번호 표기 변환
@@ -180,7 +185,12 @@
         alert(response.data.message);
         this.fnViewList();
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
client/views/pages/adm/member/userManagement/UserManagementSelectList.vue
--- client/views/pages/adm/member/userManagement/UserManagementSelectList.vue
+++ client/views/pages/adm/member/userManagement/UserManagementSelectList.vue
@@ -121,7 +121,7 @@
 
       colgroup: ["5%", "15%", "10%", "13%", "15%", "10%", "8%"],
       thead: [
-        "번호",
+        "NO",
         "아이디",
         "이름",
         "이메일",
@@ -163,7 +163,12 @@
         this.search = response.data.data.pagination;
         this.makeTbody();
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 휴대폰번호 표기 변환
@@ -232,7 +237,7 @@
         this.prvcInqHstry["inqRsn"] == null ||
         this.prvcInqHstry["inqRsn"] == ""
       ) {
-        alert("사유를 입력해주세요.");
+        alert("사유를 입력하세요.");
         this.$refs.inqRsn.focus();
         return;
       }
@@ -271,7 +276,12 @@
         alert(response.data.message);
         this.fnViewList();
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
client/views/pages/adm/menuManagement/menuManagement/MenuManagement.vue
--- client/views/pages/adm/menuManagement/menuManagement/MenuManagement.vue
+++ client/views/pages/adm/menuManagement/menuManagement/MenuManagement.vue
@@ -38,7 +38,7 @@
                 <div  class="layout">
                   <label class="form-title"><span>*</span>메뉴명</label>
                   <input type="text" class="form-control sm" ref="menuNm" v-model="viewMenu.menuNm"
-                    :disabled="!editMode || viewMenu.sysPvsnYn == 0" placeholder="메뉴명을 입력해주세요"/>
+                    :disabled="!editMode || viewMenu.sysPvsnYn == 0" placeholder="메뉴명을 입력하세요."/>
                 </div>
                 <div class="grid-column layout">
                   <label class="form-title"><span>*</span>메뉴 타입</label>
@@ -63,7 +63,7 @@
                     </template>
                     <template v-if="viewMenu.menuType == 'link'">
                       <input type="text" class="form-control sm" ref="linkUrl" v-model="viewMenu.linkUrl"
-                        :disabled="!editMode || viewMenu.sysPvsnYn == 0"  :style="{ width: inputWidth + 'px' }" placeholder="링크를 입력해주세요"/>
+                        :disabled="!editMode || viewMenu.sysPvsnYn == 0"  :style="{ width: inputWidth + 'px' }" placeholder="링크를 입력하세요."/>
                     </template>
                   </div>
                 </div>
@@ -129,7 +129,7 @@
                 </div>
                 <div class="grid-column layout">
                   <label class="form-title">메뉴 설명</label>
-                  <textarea  v-model="viewMenu.menuExpln" :disabled="!editMode" class="form-control sm area" style="height: 100%;" placeholder="메뉴에 대한 설명을 입력해주세요"></textarea>
+                  <textarea  v-model="viewMenu.menuExpln" :disabled="!editMode" class="form-control sm area" style="height: 100%;" placeholder="메뉴에 대한 설명을 입력해주세요."></textarea>
                 </div>
                 <div  class="layout">
                   <label class="form-title">등록자</label>
@@ -265,7 +265,7 @@
     // 삭제
     fnDelete() {
       if (Object.keys(this.viewMenu).length === 0) {
-        alert("삭제 대상을 선택해주세요.");
+        alert("삭제 대상을 선택하세요.");
         return false;
       }
 
@@ -535,7 +535,12 @@
           this.axiosViewDetail(data);
         }
       } catch (error) {
-        alert(error.res.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
client/views/pages/adm/menuManagement/menuSatisfactionManagement/MenuSatisfactionSelectList.vue
--- client/views/pages/adm/menuManagement/menuSatisfactionManagement/MenuSatisfactionSelectList.vue
+++ client/views/pages/adm/menuManagement/menuSatisfactionManagement/MenuSatisfactionSelectList.vue
@@ -74,15 +74,16 @@
       // pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth,
       search: { ...defaultSearchParams },
       satisfaction: false,
-      colgroup: ["30%", "10%", "10%", "10%", "10%", "10%", "10%", "10%"],
+      colgroup: ["25%", "5%", "10%", "10%", "10%", "10%", "10%", "10%", "10%"],
       colgroup2: ["8%", "12%", "12%", "12%", "12%", "12%", "32%"],
       thead: [
         "메뉴명",
-        "매우 만족",
-        "만족",
-        "보통",
-        "불만족",
-        "매우 불만족",
+        "응답 수",
+        "매우 만족(5)",
+        "만족(4)",
+        "보통(3)",
+        "불만족(2)",
+        "매우 불만족(1)",
         "평균 점수",
         "상세보기",
       ],
@@ -147,6 +148,7 @@
       this.tbody = [];
       this.tbody = this.menuList.map((menu) => ({
         menuNm: menu.menuNm, // 메뉴명
+        rspnsTotCnt: menu.rspnsTotCnt, // 응답 총 개수
         rspnsFiveCnt: menu.rspnsFiveCnt, // 매우만족
         rspnsFourCnt: menu.rspnsFourCnt, // 만족
         rspnsThreeCnt: menu.rspnsThreeCnt, // 보통
@@ -159,8 +161,8 @@
     // 만족도 tbody 생성
     makeStfndgTbody() {
       this.stfndgTbody = [];
-      this.stfndgTbody = this.menuStfndgList.map((menuStfndg, index) => ({
-        no: index + 1, // 번호
+      this.stfndgTbody = this.menuStfndgList.map((menuStfndg, idx) => ({
+        no: idx + (this.menuStfndgList.length - (2 * idx)), // 번호
         // regIp: menuStfndg.regIp, // 등록IP
         rspnsFive: menuStfndg.rspnsFive, // 매우만족
         rspnsFour: menuStfndg.rspnsFour, // 만족
client/views/pages/adm/popup/PopupManagementInsert.vue
--- client/views/pages/adm/popup/PopupManagementInsert.vue
+++ client/views/pages/adm/popup/PopupManagementInsert.vue
@@ -341,67 +341,67 @@
     // 유효성 검사
     valiadtion() {
       if (!this.popup["popupTtl"] || this.popup["popupTtl"].trim() === "") {
-        alert("제목을 입력해주세요.");
+        alert("제목을 입력하세요.");
         this.$refs.popupTtl.focus();
         return false;
       }
       if (!this.popup["bgngDt"]) {
-        alert("시작일을 입력해주세요.");
+        alert("시작일을 입력하세요.");
         this.$refs.bgngDt.focus();
         return false;
       }
       if (!this.popup["endDt"]) {
-        alert("종료일을 입력해주세요.");
+        alert("종료일을 입력하세요.");
         this.$refs.endDt.focus();
         return false;
       }
       if (!this.popup["popupSizeType"]) {
-        alert("팝업 크기를 선택해주세요.");
+        alert("팝업 크기 타입을 선택하세요.");
         return false;
       }
       if (this.popup["popupSizeType"] == "fixed") {
         if (!this.popup["popupSize"]) {
-          alert("팝업 크기를 선택해주세요.");
+          alert("팝업 크기를 선택하세요.");
           return false;
         }
       } else if (this.popup["popupSizeType"] == "custom") {
         if (!this.popup["wdthLen"]) {
-          alert("팝업 가로 크기를 선택해주세요.");
+          alert("팝업 가로 크기를 입력하세요.");
           return false;
         }
         if (!this.popup["vrtcLen"]) {
-          alert("팝업 세로 크기를 선택해주세요.");
+          alert("팝업 세로 크기를 입력하세요.");
           return false;
         }
       }
       if (!this.popup["popupType"]) {
-        alert("업로드 형식을 선택해주세요.");
+        alert("업로드 형식을 선택하세요.");
         return false;
       }
       if (this.popup["popupType"] == "image") {
         if (this.fileList.length < 1) {
-          alert("이미지 첨부파일을 선택해주세요.");
+          alert("이미지 첨부파일을 추가하세요.");
           return false;
         }
         if (!this.popup["linkUrl"]) {
-          alert("링크 URL을 선택해주세요.");
+          alert("링크 URL을 입력하세요.");
           this.$refs.linkUrl.focus();
           return false;
         }
       } else if (this.popup["popupType"] == "video") {
         if (!this.popup["vdoUrl"]) {
-          alert("동영상 URL을 선택해주세요.");
+          alert("동영상 URL을 입력하세요.");
           this.$refs.vdoUrl.focus();
           return false;
         }
       }
       if (!this.popup["sn"]) {
-        alert("순서를 선택해주세요.");
+        alert("순서를 선택하세요.");
         this.$refs.sn.focus();
         return false;
       }
       if (!this.popup["pageType"]) {
-        alert("팝업 노출 페이지를 선택해주세요.");
+        alert("팝업 노출 페이지를 선택하세요.");
         return false;
       }
       // if (!this.popup["popupUseYn"]) {
client/views/pages/adm/popup/PopupManagementSelectList.vue
--- client/views/pages/adm/popup/PopupManagementSelectList.vue
+++ client/views/pages/adm/popup/PopupManagementSelectList.vue
@@ -74,7 +74,7 @@
       pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth,
 
       colgroup: ["5%", "40%", "10%", "15%", "15%", "15%"],
-      thead: ["no", "제목", "사용여부", "시작일", "종료일", "작성자"],
+      thead: ["NO", "제목", "사용여부", "시작일", "종료일", "작성자"],
       tbody: [],
       search: { ...defaultSearchParams },
       list: [],
@@ -135,7 +135,12 @@
         this.search = response.data.data.pagination;
         this.makeTbody();
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     //─────axios─────┘
client/views/pages/adm/popup/PopupManagementSelectListOne.vue
--- client/views/pages/adm/popup/PopupManagementSelectListOne.vue
+++ client/views/pages/adm/popup/PopupManagementSelectListOne.vue
@@ -340,7 +340,12 @@
           }
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 삭제
@@ -352,7 +357,12 @@
           this.fnList();
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     //─────axios─────┘
client/views/pages/adm/preferences/commonCodeManagement/CommonCodeManagement.vue
--- client/views/pages/adm/preferences/commonCodeManagement/CommonCodeManagement.vue
+++ client/views/pages/adm/preferences/commonCodeManagement/CommonCodeManagement.vue
@@ -44,15 +44,15 @@
                 <div class="layout">
                   <label for="" class="form-title"><span>*</span>코드</label>
                   <input type="text" class="form-control sm" :disabled="isFormDisabled || !submitStts"
-                    v-model="viewCode.cd" placeholder="코드를 입력해주세요"/>
+                    v-model="viewCode.cd" placeholder="코드를 입력하세요."/>
                 </div>
                 <div class="layout">
                   <label for="" class="form-title"><span>*</span>코드명</label>
-                  <input type="text" class="form-control sm" :disabled="isFormDisabled" v-model="viewCode.cdNm" placeholder="코드명을 입력해주세요"/>
+                  <input type="text" class="form-control sm" :disabled="isFormDisabled" v-model="viewCode.cdNm" placeholder="코드명을 입력하세요."/>
                 </div>
                 <div class="layout">
                   <label for="" class="form-title">코드값</label>
-                  <input type="text" class="form-control sm" :disabled="isFormDisabled" v-model="viewCode.cdVl" placeholder="코드값을 입력해주세요"/>
+                  <input type="text" class="form-control sm" :disabled="isFormDisabled" v-model="viewCode.cdVl" placeholder="코드값을 입력해주세요."/>
                 </div>
                 <div class="border-bottom layout">
                   <label for="" class="form-title"><span>*</span>사용여부</label>
@@ -71,7 +71,7 @@
                 </div>
                 <div class="grid-column layout">
                   <label for="textarea" class="form-title" style="vertical-align: top;">코드설명</label>
-                  <textarea class="form-control sm" id="textarea" :disabled="isFormDisabled" v-model="viewCode.cdExpln" style="height: 100%;" placeholder="코드설명을 입력해주세요"></textarea>
+                  <textarea class="form-control sm" id="textarea" :disabled="isFormDisabled" v-model="viewCode.cdExpln" style="height: 100%;" placeholder="코드설명을 입력해주세요."></textarea>
                 </div>
               </div>
             </div>
@@ -144,7 +144,12 @@
           this.newCode.useYn = "Y";
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     fnViewDetail(cd) {
@@ -163,7 +168,12 @@
           this.submitStts = false;
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 저장
@@ -187,13 +197,18 @@
           // this.selectedCd = res.data.data.cd;
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 삭제
     async fnDel() {
       if (Object.keys(this.viewCode).length === 0) {
-        alert("삭제 대상을 지정해주세요.");
+        alert("삭제 대상을 지정하세요.");
         return false;
       }
       if (this.viewCode.sysPvsnYn == 0) {
@@ -214,7 +229,12 @@
           this.findAll();
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 최상위 신규 객체 생성
@@ -233,7 +253,7 @@
     subAdd() {
       // if (Object.keys(this.viewCode).length === 0) {
       if (this.selectedCd == null) {
-        alert("상위 코드를 지정해주세요.");
+        alert("상위 코드를 지정하세요.");
         return;
       } else {
         if (!confirm("작성 중인 공통코드정보는 저장되지 않습니다.\n계속 하시겠습니까?")) {
@@ -250,16 +270,16 @@
     },
     validation() {
       if (!this.viewCode.cd || this.viewCode.cd.trim() === "") {
-        alert("코드를 입력해주세요.");
+        alert("코드를 입력하세요.");
         return false;
       }
       const alpha = /^[a-zA-Z_]*$/;
       if (!alpha.test(this.viewCode.cd)) {
-        alert("코드는 영문과 언더바(_)만 사용하여 작성해주세요.");
+        alert("코드는 영문과 언더바(_)만 사용하여 작성하세요.");
         return false;
       }
       if (!this.viewCode.cdNm || this.viewCode.cdNm.trim() === "") {
-        alert("코드명을 입력해주세요.");
+        alert("코드명을 입력하세요.");
         return false;
       }
       return true;
@@ -279,7 +299,12 @@
           this.findByCd();
         }
       } catch (error) {
-        alert(error.res.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
   },
client/views/pages/adm/preferences/contentTypeManagement/ContentTypeManagementInsert.vue
--- client/views/pages/adm/preferences/contentTypeManagement/ContentTypeManagementInsert.vue
+++ client/views/pages/adm/preferences/contentTypeManagement/ContentTypeManagementInsert.vue
@@ -17,7 +17,7 @@
                   class="form-control sm"
                   v-model="contsTypeVO.contsKornNm"
                   ref="contsKornNm"
-                  placeholder="콘텐츠 한글명을 입력해주세요"
+                  placeholder="콘텐츠 한글명을 입력하세요."
                 />
               </div>
               <div class="layout">
@@ -29,7 +29,7 @@
                   class="form-control sm"
                   v-model="contsTypeVO.contsEngNm"
                   ref="contsEngNm"
-                  placeholder="콘텐츠 영문명을 입력해주세요"
+                  placeholder="콘텐츠 영문명을 입력하세요."
                 />
               </div>
               <div class="layout">
@@ -42,9 +42,9 @@
                     class="form-control sm"
                     v-model="contsTypeVO.mngrPageCrs"
                     ref="mngrPageCrs"
-                    placeholder="관리자 path를 입력해주세요"
+                    placeholder="관리자 path를 입력하세요."
                   />
-                  <span><strong>관리자 PATH</strong> 또는 <strong>사용자 PATH</strong> 중 하나는 필수입니다</span>
+                  <span><strong>관리자 PATH</strong> 또는 <strong>사용자 PATH</strong> 중 하나는 필수입니다.</span>
                 </div>
               </div>
               <div class="layout">
@@ -56,7 +56,7 @@
                   class="form-control sm"
                   v-model="contsTypeVO.pageCrs"
                   ref="pageCrs"
-                  placeholder="사용자 path를 입력해주세요"
+                  placeholder="사용자 path를 입력하세요."
                 />
               </div>
               <div class="layout">
@@ -68,7 +68,7 @@
                   class="form-control sm"
                   v-model="contsTypeVO.compnCrs"
                   ref="compnCrs"
-                  placeholder="component url을 입력해주세요"
+                  placeholder="COMPONENT URL을 입력하세요."
                 />
               </div>
               <div class="layout">
@@ -143,7 +143,12 @@
         const response = await findByContsType(data);
         this.contsTypeVO = response.data.data;
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
@@ -180,21 +185,26 @@
           });
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 유효성 검사
     validation() {
       // 콘텐츠 한글명
       if (this.isEmpty(this.contsTypeVO.contsKornNm)) {
-        alert("콘텐츠 한글명을 입력해주세요.");
+        alert("콘텐츠 한글명을 입력하세요.");
         this.$refs.contsKornNm.focus();
         return false;
       }
 
       // 콘텐츠 영문명
       if (this.isEmpty(this.contsTypeVO.contsEngNm)) {
-        alert("콘텐츠 영문명을 입력해주세요.");
+        alert("콘텐츠 영문명을 입력하세요.");
         this.$refs.contsEngNm.focus();
         return false;
       }
@@ -203,7 +213,7 @@
       let mngrPageCrs = this.isEmpty(this.contsTypeVO.mngrPageCrs);
       let pageCrs = this.isEmpty(this.contsTypeVO.pageCrs);
       if (mngrPageCrs && pageCrs) {
-        alert("관리자 PATH 혹은 사용자 PATH를 입력해주세요.");
+        alert("관리자 PATH 혹은 사용자 PATH를 입력하세요.");
         return false;
       }
 
@@ -225,14 +235,14 @@
 
       // COMPONENT_URL
       if (this.isEmpty(this.contsTypeVO.compnCrs)) {
-        alert("COMPONENT_URL을 입력해주세요.");
+        alert("COMPONENT_URL을 입력하세요.");
         this.$refs.compnCrs.focus();
         return false;
       }
 
       // 메뉴노출
       if (this.isEmpty(this.contsTypeVO.expsrYn)) {
-        alert("메뉴노출을 선택해주세요.");
+        alert("메뉴노출을 선택하세요.");
         return false;
       }
 
client/views/pages/adm/preferences/contentTypeManagement/ContentTypeManagementSelectList.vue
--- client/views/pages/adm/preferences/contentTypeManagement/ContentTypeManagementSelectList.vue
+++ client/views/pages/adm/preferences/contentTypeManagement/ContentTypeManagementSelectList.vue
@@ -69,7 +69,7 @@
   //    pageAuth: JSON.parse(localStorage.getItem("vuex")).pageAuth, // 페이지 권한
 
       colgroup: ["5%", "40%", "40%", "15%"],
-      thead: ["번호", "콘텐츠 한글명", "콘텐츠 영문명", "메뉴노출"],
+      thead: ["NO", "콘텐츠 한글명", "콘텐츠 영문명", "메뉴노출"],
       tbody: [],
       search: { ...defaultSearchParams },
       list: [],
@@ -90,7 +90,12 @@
         this.search = response.data["data"]["pagination"];
         this.makeTbody();
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // tbody 생성
client/views/pages/adm/statistics/BbsStatistics.vue
--- client/views/pages/adm/statistics/BbsStatistics.vue
+++ client/views/pages/adm/statistics/BbsStatistics.vue
@@ -171,7 +171,12 @@
           this.bbsCnt = response.data.data.bbsCnt;
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
@@ -235,7 +240,12 @@
             window.URL.revokeObjectURL(url);
           })
           .catch((error) => {
-            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+            const errorData = error.response.data;
+            if (errorData.message != null && errorData.message != "") {
+              alert(error.response.data.message);
+            } else {
+              alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+            }
           });
       });
     },
client/views/pages/adm/statistics/MenuStatistics.vue
--- client/views/pages/adm/statistics/MenuStatistics.vue
+++ client/views/pages/adm/statistics/MenuStatistics.vue
@@ -171,7 +171,12 @@
         };
         this.menuCnt = response.data.data.menuCnt;
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
@@ -235,7 +240,12 @@
             window.URL.revokeObjectURL(url);
           })
           .catch((error) => {
-            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+            const errorData = error.response.data;
+            if (errorData.message != null && errorData.message != "") {
+              alert(error.response.data.message);
+            } else {
+              alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+            }
           });
       });
     },
client/views/pages/adm/statistics/UserStatistics.vue
--- client/views/pages/adm/statistics/UserStatistics.vue
+++ client/views/pages/adm/statistics/UserStatistics.vue
@@ -161,7 +161,12 @@
         this.chartData = datas;
         this.totalCnt = response.data.data.totalCnt;
       } catch (error) {
-        alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
@@ -225,7 +230,12 @@
             window.URL.revokeObjectURL(url);
           })
           .catch((error) => {
-            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+            const errorData = error.response.data;
+            if (errorData.message != null && errorData.message != "") {
+              alert(error.response.data.message);
+            } else {
+              alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+            }
           });
       });
     },
client/views/pages/adm/system/LoginPolicy/LoginPolicy.vue
--- client/views/pages/adm/system/LoginPolicy/LoginPolicy.vue
+++ client/views/pages/adm/system/LoginPolicy/LoginPolicy.vue
@@ -56,7 +56,7 @@
                   <button class="btn sm main" @click="fnSave">저장</button>
                 </div>
                 <span class="ml10 gray">
-                  <strong>/경로</strong> 형식으로 입력해주세요.
+                  <strong>/</strong> 또는 <strong>/경로</strong> 형식으로 입력하세요.
                 </span>
               </div>
             </div>
@@ -160,7 +160,12 @@
           this.defaultCntxtPth = res.data.data;
         }
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+            alert(error.response.data.message);
+        } else {
+            alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
 
@@ -195,7 +200,12 @@
             alert(res.data.message);
           }
         } catch (error) {
-          alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.');
+          const errorData = error.response.data;
+          if (errorData.message != null && errorData.message != "") {
+              alert(error.response.data.message);
+          } else {
+              alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+          }
         }
       }
     },
client/views/pages/adm/system/networkAccessControl/NetworkAccessControlInsert.vue
--- client/views/pages/adm/system/networkAccessControl/NetworkAccessControlInsert.vue
+++ client/views/pages/adm/system/networkAccessControl/NetworkAccessControlInsert.vue
@@ -20,7 +20,7 @@
                             <div class="layout border-bottom">
                                 <label for="" class="form-title"><span>*</span>제어 IP</label>
                                 <div class="form-group">
-                                    <input type="text" class="form-control sm" v-model="accesCtrl.cntrlIp"  placeholder="1~255 범위의 숫자로 구성하여 형식에 맞게 작성해주세요." />
+                                    <input type="text" class="form-control sm" v-model="accesCtrl.cntrlIp"  placeholder="1~255 범위의 숫자로 구성하여 형식에 맞게 작성하세요." />
                                     <span>ex) 192.168.0.1 / 192.168.0.*</span>
                                 </div>
                             </div>
@@ -59,7 +59,7 @@
     methods: {
         // 목록으로 이동
         fnCancel() {
-            if (!confirm('등록을 취소하시겠습니까?')) {
+            if (!confirm('작성을 취소하시겠습니까?')) {
                 return;
             }
             if (this.accesCtrl.acsCntrlId == null || this.accesCtrl.acsCntrlId == 0) {
@@ -88,7 +88,12 @@
                 }
                 this.codeList = res.data.data.codeList; // 유형
             } catch (error) {
-                alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.');
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
 
@@ -117,7 +122,12 @@
                     });
                 }
             } catch (error) {
-                alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.');
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
         // 수정
@@ -137,7 +147,12 @@
                     });
                 }
             } catch (error) {
-                alert('에러가 발생했습니다.\n시스템관리자에게 문의하세요.');
+                const errorData = error.response.data;
+                if (errorData.message != null && errorData.message != "") {
+                    alert(error.response.data.message);
+                } else {
+                    alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+                }
             }
         },
         // 유효성 검사
@@ -145,18 +160,18 @@
             // 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]?)$/;
             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}$/;
             if (this.accesCtrl.cntrlType == null || this.accesCtrl.cntrlType == '') {
-                alert('제어 유형을 지정해주세요.');
+                alert('제어 유형을 지정하세요.');
                 return false;
             }
             if (this.accesCtrl.cntrlIp == null || this.accesCtrl.cntrlIp == '') {
-                alert('제어 IP를 입력해주세요.');
+                alert('제어 IP를 입력하세요.');
                 return false;
             } else if (!ipFilter.test(this.accesCtrl.cntrlIp)) {
-                alert('ip 형식이 다릅니다.');
+                alert('IP 형식이 다릅니다.');
                 return false;
             }
             if (this.accesCtrl.cntrlCrs == null || this.accesCtrl.cntrlCrs == '') {
-                alert('제어 경로를 입력해주세요.');
+                alert('제어 경로를 입력하세요.');
                 return false;
             }
             return true;
client/views/pages/adm/system/networkAccessControl/NetworkAccessControlSelectList.vue
--- client/views/pages/adm/system/networkAccessControl/NetworkAccessControlSelectList.vue
+++ client/views/pages/adm/system/networkAccessControl/NetworkAccessControlSelectList.vue
@@ -108,7 +108,12 @@
         this.codeList = res.data.data.codeList; // 검색 조건 항목
         this.makeTbody();
       } catch (error) {
-        alert(error.response.data.message);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 상세 조회
client/views/pages/adm/system/networkAccessControl/NetworkAccessControlSelectListOne.vue
--- client/views/pages/adm/system/networkAccessControl/NetworkAccessControlSelectListOne.vue
+++ client/views/pages/adm/system/networkAccessControl/NetworkAccessControlSelectListOne.vue
@@ -78,7 +78,12 @@
           this.accesCtrl = res.data.data.accesCtrl;
         }
       } catch (error) {
-        // console.log("fnSelectOne : ", error);
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
     // 목록으로 이동
@@ -111,7 +116,12 @@
           });
         }
       } catch (error) {
-        alert("에러가 발생했습니다.\n시스템관리자에게 문의하세요.");
+        const errorData = error.response.data;
+        if (errorData.message != null && errorData.message != "") {
+          alert(error.response.data.message);
+        } else {
+          alert("에러가 발생했습니다.\n관리자에게 문의해주세요.");
+        }
       }
     },
   },
Add a comment
List