Przeglądaj źródła

TB_FAQ.DISP_ORD 칼럼 추가에 따른 수정

gagamel 5 lat temu
rodzic
commit
70bdd7ba69

+ 30 - 29
style24.admin/src/main/java/com/style24/persistence/domain/Faq.java

@@ -1,29 +1,30 @@
-package com.style24.persistence.domain;
-
-import com.style24.persistence.TscBaseDomain;
-
-import lombok.Data;
-
-/**
- * FAQ Domain
- *
- * @author gagamel
- * @since 2020. 11. 3
- */
-@SuppressWarnings("serial")
-@Data
-public class Faq extends TscBaseDomain {
-
-	private Integer faqSq;		// FAQ일련번호
-	private String siteCd;		// 사이트코드
-	private String siteNm;		// 사이트명
-	private String faqType;		// FAQ유형
-	private String question;	// 질문
-	private String answer;		// 답변
-	private String useYn;		// 사용여부
-	private int readCnt;		// 조회수
-
-	// 검색조건
-	private String searchTxt;	//검색어
-
-}
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * FAQ Domain
+ *
+ * @author gagamel
+ * @since 2020. 11. 3
+ */
+@SuppressWarnings("serial")
+@Data
+public class Faq extends TscBaseDomain {
+
+	private Integer faqSq;		// FAQ일련번호
+	private String siteCd;		// 사이트코드
+	private String siteNm;		// 사이트명
+	private String faqType;		// FAQ유형
+	private String question;	// 질문
+	private String answer;		// 답변
+	private String useYn;		// 사용여부
+	private int readCnt;		// 조회수
+	private int dispOrd;		// 표시순서
+
+	// 검색조건
+	private String searchTxt;	//검색어
+
+}

+ 94 - 89
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaFaq.xml

@@ -1,90 +1,95 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.style24.admin.biz.dao.TsaFaqDao">
-
-	<!-- FAQ 목록 -->
-	<select id="getFaqList" parameterType="Faq" resultType="Faq">
-		/* TsaFaq.getFaqList */
-		SELECT FAQ_SQ                                       /*FAQ일련번호(SEQ_FAQ sequence)*/
-		     , SITE_CD                                      /*사이트코드(공통코드G000)*/
-		     , FAQ_TYPE                                     /*FAQ유형(공통코드G046)*/
-		     , QUESTION                                     /*질문*/
-		     , ANSWER                                       /*답변*/
-		     , USE_YN                                       /*사용여부(Y:사용)*/
-		     , READ_CNT                                     /*조회수*/
-		     , FN_GET_USER_NM(REG_NO)             AS REG_NM
-		     , DATE_FORMAT(REG_DT,'%Y%m%d%H%i%S') AS REG_DT
-		     , FN_GET_USER_NM(UPD_NO)             AS UPD_NM
-		     , DATE_FORMAT(UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
-		FROM   TB_FAQ
-		WHERE  SITE_CD = #{siteCd}
-		<if test='faqType != null and faqType !=""'>
-		AND    FAQ_TYPE = #{faqType}
-		</if>
-		<if test='useYn != null and useYn !=""'>
-		AND    USE_YN = #{useYn}
-		</if>
-		<if test="searchTxt != null and searchTxt !=''">
-		AND    (
-		        LOWER(QUESTION) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
-		        OR
-		        LOWER(ANSWER) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
-		       )
-		</if>
-	</select>
-
-	<!-- FAQ 등록/수정 -->
-	<insert id="saveFaq" parameterType="Faq">
-		/* TsaFaq.saveFaq */
-		INSERT INTO TB_FAQ (
-		       FAQ_SQ
-		     , SITE_CD
-		     , FAQ_TYPE
-		     , QUESTION
-		     , ANSWER
-		     , USE_YN
-		     , READ_CNT
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       #{faqSq}
-		     , #{siteCd}
-		     , #{faqType}
-		     , #{question}
-		     , #{answer}
-		     , #{useYn}
-		     , 0
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-		ON DUPLICATE KEY UPDATE
-		       SITE_CD = #{siteCd}
-		     , FAQ_TYPE = #{faqType}
-		     , QUESTION = #{question}
-		     , ANSWER = #{answer}
-		     , USE_YN = #{useYn}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-	</insert>
-
-	<!-- FAQ 상세 -->
-	<select id="getFaq" parameterType="Integer" resultType="Faq">
-		/* TsaFaq.getFaq */
-		SELECT FAQ_SQ                                    /*FAQ일련번호*/
-		     , SITE_CD                                   /*사이트코드*/
-		     , FN_GET_CODE_NM('G000',SITE_CD) AS SITE_NM /*사이트명*/
-		     , FAQ_TYPE                                  /*유형*/
-		     , QUESTION                                  /*질문*/
-		     , ANSWER                                    /*답변*/
-		     , USE_YN                                    /*사용여부*/
-		     , READ_CNT                                  /*조회수*/
-		FROM   TB_FAQ
-		WHERE  FAQ_SQ = #{faqSq}
-	</select>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.admin.biz.dao.TsaFaqDao">
+
+	<!-- FAQ 목록 -->
+	<select id="getFaqList" parameterType="Faq" resultType="Faq">
+		/* TsaFaq.getFaqList */
+		SELECT FAQ_SQ                                       /*FAQ일련번호(SEQ_FAQ sequence)*/
+		     , SITE_CD                                      /*사이트코드(공통코드G000)*/
+		     , FAQ_TYPE                                     /*FAQ유형(공통코드G046)*/
+		     , QUESTION                                     /*질문*/
+		     , ANSWER                                       /*답변*/
+		     , USE_YN                                       /*사용여부(Y:사용)*/
+		     , READ_CNT                                     /*조회수*/
+		     , DISP_ORD                                     /*표시순서*/
+		     , FN_GET_USER_NM(REG_NO)             AS REG_NM
+		     , DATE_FORMAT(REG_DT,'%Y%m%d%H%i%S') AS REG_DT
+		     , FN_GET_USER_NM(UPD_NO)             AS UPD_NM
+		     , DATE_FORMAT(UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
+		FROM   TB_FAQ
+		WHERE  SITE_CD = #{siteCd}
+		<if test='faqType != null and faqType !=""'>
+		AND    FAQ_TYPE = #{faqType}
+		</if>
+		<if test='useYn != null and useYn !=""'>
+		AND    USE_YN = #{useYn}
+		</if>
+		<if test="searchTxt != null and searchTxt !=''">
+		AND    (
+		        LOWER(QUESTION) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		        OR
+		        LOWER(ANSWER) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		       )
+		</if>
+	</select>
+
+	<!-- FAQ 등록/수정 -->
+	<insert id="saveFaq" parameterType="Faq">
+		/* TsaFaq.saveFaq */
+		INSERT INTO TB_FAQ (
+		       FAQ_SQ
+		     , SITE_CD
+		     , FAQ_TYPE
+		     , QUESTION
+		     , ANSWER
+		     , USE_YN
+		     , READ_CNT
+		     , DISP_ORD
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{faqSq}
+		     , #{siteCd}
+		     , #{faqType}
+		     , #{question}
+		     , #{answer}
+		     , #{useYn}
+		     , 0
+		     , #{dispOrd}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       SITE_CD = #{siteCd}
+		     , FAQ_TYPE = #{faqType}
+		     , QUESTION = #{question}
+		     , ANSWER = #{answer}
+		     , USE_YN = #{useYn}
+		     , DISP_ORD = #{dispOrd}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</insert>
+
+	<!-- FAQ 상세 -->
+	<select id="getFaq" parameterType="Integer" resultType="Faq">
+		/* TsaFaq.getFaq */
+		SELECT FAQ_SQ                                    /*FAQ일련번호*/
+		     , SITE_CD                                   /*사이트코드*/
+		     , FN_GET_CODE_NM('G000',SITE_CD) AS SITE_NM /*사이트명*/
+		     , FAQ_TYPE                                  /*유형*/
+		     , QUESTION                                  /*질문*/
+		     , ANSWER                                    /*답변*/
+		     , USE_YN                                    /*사용여부*/
+		     , READ_CNT                                  /*조회수*/
+		     , DISP_ORD                                  /*표시순서*/
+		FROM   TB_FAQ
+		WHERE  FAQ_SQ = #{faqSq}
+	</select>
+
 </mapper>

+ 197 - 187
style24.admin/src/main/webapp/WEB-INF/views/board/FaqDetailForm.html

@@ -1,187 +1,197 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : FaqDetailForm.html
- * @desc    : FAQ 상세 팝업 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.10.29   gagamel     최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="1200" id="popupFaq">
-	<div class="panelStyle">
-		<!-- TITLE -->
-		<div class="panelTitle">
-			<strong th:text="${'FAQ ' + (mode == 'N' ? '등록' : '상세')}">FAQ 상세</strong>
-			<button type="button" class="close" onclick="uifnPopupClose('popupFaq');"><em class="fa fa-times"></em></button>
-		</div>
-		<!-- //TITLE -->
-		
-		<!-- CONTENT -->
-		<div class="panelContent" th:if="${mode == 'N'}">
-			<form id="faqDetailForm" name="faqDetailForm" action="#" th:action="@{'/board/faq/save'}" th:method="post">
-				<input type="hidden" name="mode" th:value="${mode}"/>
-				
-				<table class="frmStyle" aria-describedby="등록폼">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>FAQ번호</th>
-							<td>
-								<input type="text" name="faqSq" maxlength="20" placeholder="자동생성" readonly="readonly"/>
-							</td>
-							<th>사이트<em class="required" title="필수"></em></th>
-							<td>
-								<select name="siteCd" required="required">
-									<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-								</select>
-							</td>
-							<th>FAQ유형<em class="required" title="필수"></em></th>
-							<td>
-								<select name="faqType" required="required">
-									<option th:if="${faqTypeList}" th:each="oneData, status : ${faqTypeList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-								</select>
-							</td>
-							<th>사용여부<em class="required" title="필수"></em></th>
-							<td>
-								<label class="rdoBtn"><input type="radio" name="useYn" value="Y" checked="checked"/>Yes</label>
-								<label class="rdoBtn"><input type="radio" name="useYn" value="N"/>No</label>
-							</td>
-						</tr>
-						<tr>
-							<th>질문<em class="required" title="필수"></em></th>
-							<td colspan="7">
-								<input type="text" name="question" maxlength="200" required="required" data-valid-name="질문"/>
-							</td>
-						</tr>
-						<tr>
-							<th>답변<em class="required" title="필수"></em></th>
-							<td colspan="7">
-								<textarea class="textareaR4" id="answer" name="answer" data-valid-name="답변"></textarea>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-			</form>
-		</div>
-		
-		<div class="panelContent" th:if="${mode == 'U'}">
-			<form id="faqDetailForm" name="faqDetailForm" action="#" th:action="@{'/board/faq/save'}" th:method="post" th:object="${faqInfo}">
-				<input type="hidden" name="mode" th:value="${mode}"/>
-				
-				<table class="frmStyle" aria-describedby="상세폼">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>FAQ번호</th>
-							<td>
-								<input type="text" name="faqSq" maxlength="20" placeholder="자동생성" readonly="readonly" th:field="*{faqSq}"/>
-							</td>
-							<th>사이트<em class="required" title="필수"></em></th>
-							<td>
-								<select name="siteCd" required="required" th:field="*{siteCd}">
-									<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|" th:selected="${siteCd == oneData.cd}"></option>
-								</select>
-							</td>
-							<th>FAQ유형<em class="required" title="필수"></em></th>
-							<td>
-								<select name="faqType" required="required" th:field="*{faqType}">
-									<option th:if="${faqTypeList}" th:each="oneData, status : ${faqTypeList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|" th:selected="${faqType == oneData.cd}"></option>
-								</select>
-							</td>
-							<th>사용여부<em class="required" title="필수"></em></th>
-							<td>
-								<label class="rdoBtn"><input type="radio" name="useYn" value="Y" th:field="*{useYn}"/>Yes</label>
-								<label class="rdoBtn"><input type="radio" name="useYn" value="N" th:field="*{useYn}"/>No</label>
-							</td>
-						</tr>
-						<tr>
-							<th>질문<em class="required" title="필수"></em></th>
-							<td colspan="5">
-								<input type="text" name="question" placeholder="" maxlength="200" required="required" data-valid-name="질문" th:field="*{question}"/>
-							</td>
-							<th>조회수</th>
-							<td><input type="text" name="readCnt" class="w50 aR" readonly="readonly" th:field="*{readCnt}"/></td>
-						</tr>
-						<tr>
-							<th>답변<em class="required" title="필수"></em></th>
-							<td colspan="7">
-								<textarea class="textareaR4" id="answer" name="answer" data-valid-name="답변" th:field="*{answer}"></textarea>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-			</form>
-		</div>
-		<!-- //CONTENT -->
-
-		<!-- 버튼 배치 영역 -->
-		<ul class="panelBar">
-			<li class="right">
-				<button type="button" class="btn btn-info btn-lg" id="btnSaveFaq">저장</button>
-			</li>
-		</ul>
-		<!-- //버튼 배치 영역 -->
-	</div>
-</div>
-
-<script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020102902"></script>
-<script type="text/javascript" src="/ux/plugins/gaga/gaga.summernote.js?v=20201030"></script>
-<script th:inline="javascript">
-/*<![CDATA[*/
-	// 저장
-	$('#btnSaveFaq').on('click', function() {
-		// 입력 값 체크
-		if (!gagajf.validation('#faqDetailForm'))
-			return false;
-		
-		if (gagajf.isNull($('#answer').val())) {
-			mcxDialog.alert('답변을 입력해 주세요.');
-			return false;
-		}
-		
-		mcxDialog.confirm("저장하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				gagajf.ajaxFormSubmit($('#faqDetailForm').prop('action'), '#faqDetailForm', function() {
-					uifnPopupClose('popupFaq');
-					$('#btnSearch').trigger('click');
-				});
-			}
-		});
-	});
-	
-	$(document).ready(function() {
-		// Create a summernote
-		let snOptions = gagaSn.getToolbarOptions();
-		gagaSn.createSummernote(snOptions, '#answer');
-	});
-/*]]>*/
-</script>
-
-</html>
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : FaqDetailForm.html
+ * @desc    : FAQ 상세 팝업 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.10.29   gagamel     최초 작성
+ *******************************************************************************
+ -->
+<div class="modalPopup" data-width="1200" id="popupFaq">
+	<div class="panelStyle">
+		<!-- TITLE -->
+		<div class="panelTitle">
+			<strong th:text="${'FAQ ' + (mode == 'N' ? '등록' : '상세')}">FAQ 상세</strong>
+			<button type="button" class="close" onclick="uifnPopupClose('popupFaq');"><em class="fa fa-times"></em></button>
+		</div>
+		<!-- //TITLE -->
+		
+		<!-- CONTENT -->
+		<div class="panelContent" th:if="${mode == 'N'}">
+			<form id="faqDetailForm" name="faqDetailForm" action="#" th:action="@{'/board/faq/save'}" th:method="post">
+				<input type="hidden" name="mode" th:value="${mode}"/>
+				
+				<table class="frmStyle" aria-describedby="등록폼">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col style="width:23%;"/>
+						<col style="width:10%;"/>
+						<col style="width:23%;"/>
+						<col style="width:10%;"/>
+						<col/>
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>FAQ번호</th>
+							<td>
+								<input type="text" name="faqSq" maxlength="20" placeholder="자동생성" readonly="readonly"/>
+							</td>
+							<th>사이트<em class="required" title="필수"></em></th>
+							<td>
+								<select name="siteCd" required="required">
+									<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+								</select>
+							</td>
+							<th>FAQ유형<em class="required" title="필수"></em></th>
+							<td>
+								<select name="faqType" required="required">
+									<option th:if="${faqTypeList}" th:each="oneData, status : ${faqTypeList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+								</select>
+							</td>
+						</tr>
+						<tr>
+							<th>표시순서<i class="required" title="필수" aria-hidden="true"></i></th>
+							<td>
+								<input type="text" class="w100 text-right" name="dispOrd" placeholder="" maxlength="5" required="required" data-valid-type="numeric" data-valid-name="표시순서" />
+							</td>
+							<th>사용여부<em class="required" title="필수"></em></th>
+							<td colspan="3">
+								<label class="rdoBtn"><input type="radio" name="useYn" value="Y" checked="checked"/>Yes</label>
+								<label class="rdoBtn"><input type="radio" name="useYn" value="N"/>No</label>
+							</td>
+						</tr>
+						<tr>
+							<th>질문<em class="required" title="필수"></em></th>
+							<td colspan="5">
+								<input type="text" name="question" maxlength="200" required="required" data-valid-name="질문"/>
+							</td>
+						</tr>
+						<tr>
+							<th>답변<em class="required" title="필수"></em></th>
+							<td colspan="5">
+								<textarea class="textareaR4" id="answer" name="answer" data-valid-name="답변"></textarea>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+			</form>
+		</div>
+		
+		<div class="panelContent" th:if="${mode == 'U'}">
+			<form id="faqDetailForm" name="faqDetailForm" action="#" th:action="@{'/board/faq/save'}" th:method="post" th:object="${faqInfo}">
+				<input type="hidden" name="mode" th:value="${mode}"/>
+				
+				<table class="frmStyle" aria-describedby="상세폼">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col style="width:23%;"/>
+						<col style="width:10%;"/>
+						<col style="width:23%;"/>
+						<col style="width:10%;"/>
+						<col/>
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>FAQ번호</th>
+							<td>
+								<input type="text" name="faqSq" maxlength="20" placeholder="자동생성" readonly="readonly" th:field="*{faqSq}"/>
+							</td>
+							<th>사이트<em class="required" title="필수"></em></th>
+							<td>
+								<select name="siteCd" required="required" th:field="*{siteCd}">
+									<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|" th:selected="${siteCd == oneData.cd}"></option>
+								</select>
+							</td>
+							<th>FAQ유형<em class="required" title="필수"></em></th>
+							<td>
+								<select name="faqType" required="required" th:field="*{faqType}">
+									<option th:if="${faqTypeList}" th:each="oneData, status : ${faqTypeList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|" th:selected="${faqType == oneData.cd}"></option>
+								</select>
+							</td>
+						</tr>
+						<tr>
+							<th>사용여부<em class="required" title="필수"></em></th>
+							<td>
+								<label class="rdoBtn"><input type="radio" name="useYn" value="Y" th:field="*{useYn}"/>Yes</label>
+								<label class="rdoBtn"><input type="radio" name="useYn" value="N" th:field="*{useYn}"/>No</label>
+							</td>
+							<th>표시순서<i class="required" title="필수" aria-hidden="true"></i></th>
+							<td>
+								<input type="text" class="w100 text-right" name="dispOrd" placeholder="" maxlength="5" required="required" data-valid-type="numeric" data-valid-name="표시순서" th:field="*{dispOrd}"/>
+							</td>
+							<th>조회수</th>
+							<td>
+								<input type="text" name="readCnt" class="w100 aR" readonly="readonly" th:field="*{readCnt}"/>
+							</td>
+						</tr>
+						<tr>
+							<th>질문<em class="required" title="필수"></em></th>
+							<td colspan="5">
+								<input type="text" name="question" placeholder="" maxlength="200" required="required" data-valid-name="질문" th:field="*{question}"/>
+							</td>
+						</tr>
+						<tr>
+							<th>답변<em class="required" title="필수"></em></th>
+							<td colspan="5">
+								<textarea class="textareaR4" id="answer" name="answer" data-valid-name="답변" th:field="*{answer}"></textarea>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+			</form>
+		</div>
+		<!-- //CONTENT -->
+
+		<!-- 버튼 배치 영역 -->
+		<ul class="panelBar">
+			<li class="right">
+				<button type="button" class="btn btn-info btn-lg" id="btnSaveFaq">저장</button>
+			</li>
+		</ul>
+		<!-- //버튼 배치 영역 -->
+	</div>
+</div>
+
+<script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020102902"></script>
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.summernote.js?v=20201030"></script>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	// 저장
+	$('#btnSaveFaq').on('click', function() {
+		// 입력 값 체크
+		if (!gagajf.validation('#faqDetailForm'))
+			return false;
+		
+		if (gagajf.isNull($('#answer').val())) {
+			mcxDialog.alert('답변을 입력해 주세요.');
+			return false;
+		}
+		
+		mcxDialog.confirm("저장하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				gagajf.ajaxFormSubmit($('#faqDetailForm').prop('action'), '#faqDetailForm', function() {
+					uifnPopupClose('popupFaq');
+					$('#btnSearch').trigger('click');
+				});
+			}
+		});
+	});
+	
+	$(document).ready(function() {
+		// Create a summernote
+		let snOptions = gagaSn.getToolbarOptions();
+		gagaSn.createSummernote(snOptions, '#answer');
+	});
+/*]]>*/
+</script>
+
+</html>

+ 4 - 0
style24.admin/src/main/webapp/WEB-INF/views/board/FaqForm.html

@@ -121,6 +121,10 @@
 			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
 		},
 		{headerName: "사용여부", field: "useYn", width: 80, cellClass: 'text-center'},
+		{
+			headerName: "표시순서", field: "dispOrd", width: 100, cellClass: 'text-center',
+			cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }
+		},
 		{headerName: "등록자", field: "regNm" , width: 100, cellClass: 'text-center'},
 		{
 			headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',