2024-08-30 코드관리 작업 중

This commit is contained in:
user 2024-08-30 15:30:20 +09:00
parent 021124da57
commit f2c0cc76d5
5 changed files with 1245 additions and 1 deletions

View File

@ -341,7 +341,7 @@ public class BaseController {
log.warn(">>>>>>>>params<<<<<<<<<"+params);
mav.addAllObjects(params);
mav.setViewName("/_extra/gtm/"+pageFolder+"/"+pageName);
mav.setViewName("/seed/_extra/gtm/"+pageFolder+"/"+pageName);
//return new ModelAndView("/_extra/gtm/"+pageFolder+"/"+pageName);
return mav;
}

View File

@ -0,0 +1,488 @@
<?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="code">
<!-- 상단 -->
<sql id="Header2">
SELECT * FROM
(
SELECT ROW_.*, ROWNUM AS RNUM FROM
(
</sql>
<!-- 하단 -->
<sql id="bottom2">
) ROW_
)
WHERE RNUM > #{pageStart} AND #{perPageNum} >= ROWNUM
</sql>
<select id="codelist" parameterType="egovMap" resultType="egovMap">
SELECT
<![CDATA[
CODE_IDX,
CODE_NAME,
MEMBER_ID,
MEMBER_NAME,
CODE_ORDER,
CODE_STATUS,
TO_CHAR(CODE_REGDATE, 'YYYY-MM-DD HH24:MI:SS') AS CODE_REGDATE,
CODE_DEPTH,
CODE_IDXS,
CODE_PARENT_IDX,
CASE WHEN T1.CODE_DEPTH = 1 THEN
(SELECT COUNT(*) FROM C_CODE T3 WHERE T3.CODE_DEPTH = T1.CODE_DEPTH AND T3.CODE_ORDER < T1.CODE_ORDER)
ELSE
(SELECT COUNT(*) FROM C_CODE T3 WHERE T3.CODE_DEPTH = T1.CODE_DEPTH AND T3.CODE_ORDER < T1.CODE_ORDER
AND T3.CODE_PARENT_IDX = T1.CODE_PARENT_IDX )
END AS CODE_UP,
CASE WHEN T1.CODE_DEPTH = 1 THEN
(SELECT COUNT(*) FROM C_CODE T3 WHERE T3.CODE_DEPTH = T1.CODE_DEPTH AND
T3.CODE_ORDER > T1.CODE_ORDER)
ELSE
(SELECT COUNT(*) FROM C_CODE T3 WHERE T3.CODE_DEPTH = T1.CODE_DEPTH AND
T3.CODE_ORDER > T1.CODE_ORDER
AND T3.CODE_PARENT_IDX = T1.CODE_PARENT_IDX)
END AS CODE_DOWN
]]>
FROM C_CODE T1 LEFT JOIN T_MEMBER T2
ON T1.MEMBER_IDX = T2.MEMBER_IDX
<if test='column neq null and column neq "" and search neq null and search neq ""'>
<choose>
<when test='column eq "CODE_NAME"'>
WHERE CODE_NAME LIKE '%'||#{search}||'%'
</when>
<when test='column eq "MEMBER_NAME"'>
WHERE MEMBER_NAME LIKE '%'||#{search}||'%'
</when>
<otherwise>
WHERE CODE_NAME LIKE '%'||#{search}||'%' OR MEMBER_NAME LIKE '%'||#{search}||'%'
</otherwise>
</choose>
</if>
ORDER BY CODE_ORDER ASC
</select>
<select id="selectListCnt" parameterType="egovMap" resultType="int">
SELECT
COUNT(*)
FROM C_CODE
</select>
<select id="codeInfo" parameterType="egovMap" resultType="egovMap">
SELECT
T1.CODE_IDX AS CODE_IDX,
T1.MEMBER_IDX AS MEMBER_IDX,
T1.CODE_NAME AS CODE_NAME,
T1.CODE_IDXS AS CODE_IDXS,
T1.CODE_IDX1 AS CODE_IDX1,
T1.CODE_IDX2 AS CODE_IDX2,
T1.CODE_IDX3 AS CODE_IDX3,
T1.CODE_IDX4 AS CODE_IDX4,
T1.CODE_IDX5 AS CODE_IDX5,
T1.CODE_PARENT_IDX AS CODE_PARENT_IDX,
T1.CODE_DEPTH AS CODE_DEPTH,
T1.CODE_ORDER AS CODE_ORDER,
TO_CHAR(T1.CODE_REGDATE) AS CODE_REGDATE,
T1.CODE_STATUS AS CODE_STATUS,
T2.MEMBER_NAME AS MEMBER_NAME
FROM C_CODE T1 LEFT JOIN T_MEMBER T2
ON T1.MEMBER_IDX = T2.MEMBER_IDX
WHERE T1.CODE_IDX = #{dataIdx}
</select>
<update id="codeUpdate" parameterType="egovMap">
UPDATE C_CODE
SET MEMBER_IDX = #{memberIdx},
CODE_NAME = #{codeName},
CODE_MODDATE = SYSDATE
WHERE CODE_IDX = #{dataIdx}
</update>
<select id="codeParentInfo" parameterType="egovMap" resultType="egovMap">
SELECT A.* FROM
(SELECT
CODE_IDX,
MEMBER_IDX,
CODE_NAME,
CODE_IDXS,
CODE_IDX1,
CODE_IDX2,
CODE_IDX3,
CODE_IDX4,
CODE_IDX5,
CODE_PARENT_IDX,
CODE_DEPTH,
CODE_ORDER,
TO_CHAR(CODE_REGDATE, 'YYYY-MM-DD HH24:MI:SS') AS CODE_REGDATE,
CODE_STATUS
FROM C_CODE
WHERE CODE_PARENT_IDX = #{codeParentIdx}
ORDER BY CODE_IDX1 DESC, CODE_IDX2 DESC, CODE_IDX3 DESC, CODE_IDX4 DESC, CODE_IDX5 DESC) A
WHERE ROWNUM = 1
</select>
<select id="codeIdxsInfo" parameterType="egovMap" resultType="egovMap">
SELECT
CODE_IDX,
MEMBER_IDX,
CODE_NAME,
CODE_IDXS,
CODE_IDX1,
CODE_IDX2,
CODE_IDX3,
CODE_IDX4,
CODE_IDX5,
CODE_PARENT_IDX,
CODE_DEPTH,
CODE_ORDER,
TO_CHAR(CODE_REGDATE, 'YYYY-MM-DD HH24:MI:SS') AS CODE_REGDATE,
CODE_STATUS
FROM C_CODE
WHERE CODE_IDXS = #{codeParentIdx}
</select>
<select id="codeOrderInfo" parameterType="egovMap" resultType="egovMap">
SELECT TO_CHAR(A.CODE_ORDER) AS CODE_ORDER FROM
(SELECT
CODE_ORDER
FROM C_CODE
<where>
<choose>
<when test='codeDepth eq "1"'>
AND CODE_IDX1 = SUBSTR(#{codeIdxs}, 1 , 2)
</when>
<when test='codeDepth eq "2"'>
AND CODE_IDX1 = SUBSTR(#{codeIdxs}, 1 , 2)
AND CODE_IDX2 = SUBSTR(#{codeIdxs}, 3 , 2)
</when>
<when test='codeDepth eq "3"'>
AND CODE_IDX1 = SUBSTR(#{codeIdxs}, 1 , 2)
AND CODE_IDX2 = SUBSTR(#{codeIdxs}, 3 , 2)
AND CODE_IDX3 = SUBSTR(#{codeIdxs}, 5 , 2)
</when>
<when test='codeDepth eq "4"'>
AND CODE_IDX1 = SUBSTR(#{codeIdxs}, 1 , 2)
AND CODE_IDX2 = SUBSTR(#{codeIdxs}, 3 , 2)
AND CODE_IDX3 = SUBSTR(#{codeIdxs}, 5 , 2)
AND CODE_IDX4 = SUBSTR(#{codeIdxs}, 7 , 2)
</when>
<when test='codeDepth eq "5"'>
AND CODE_IDX1 = SUBSTR(#{codeIdxs}, 1 , 2)
AND CODE_IDX2 = SUBSTR(#{codeIdxs}, 3 , 2)
AND CODE_IDX3 = SUBSTR(#{codeIdxs}, 5 , 2)
AND CODE_IDX4 = SUBSTR(#{codeIdxs}, 7 , 2)
AND CODE_IDX5 = SUBSTR(#{codeIdxs}, 9 , 2)
</when>
<when test='codeDepth eq "0"'>
AND CODE_IDX1 = SUBSTR(#{codeIdxs}, 1 , 2)
AND CODE_IDX2 = SUBSTR(#{codeIdxs}, 3 , 2)
</when>
</choose>
<if test='codeIdxs'>
</if>
ORDER BY CODE_ORDER DESC
</where>
) A
WHERE ROWNUM = 1
</select>
<select id="codeCodeOrderSelList" parameterType="egovMap" resultType="egovMap">
SELECT
CODE_IDX
FROM C_CODE
WHERE CODE_ORDER >= #{codeOrder}
ORDER BY CODE_ORDER ASC
</select>
<update id="codeCodeOrderUpdate" parameterType="egovMap">
UPDATE C_CODE
<set>
<if test='orderType eq "plus"'>
CODE_ORDER = CODE_ORDER+1
</if>
<if test='orderType eq "minus"'>
CODE_ORDER = CODE_ORDER-1
</if>
<if test='orderType eq "minuss"'>
CODE_ORDER = CODE_ORDER+#{codeListCnt}
</if>
</set>
<where>
CODE_IDX IN
<foreach collection="arrList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</where>
</update>
<update id="codeUpDown" parameterType="egovMap">
MERGE
INTO C_CODE A
USING (SELECT CODE_IDX, CODE_ORDER FROM
(SELECT
CODE_IDX,
<if test='orderType eq "down"'>
CODE_ORDER+(SELECT
COUNT(*)
FROM C_CODE
WHERE CODE_IDXS LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2)
FROM C_CODE
WHERE CODE_IDX = (SELECT CODE_IDX FROM (SELECT * FROM C_CODE
WHERE CODE_ORDER <![CDATA[ > ]]> (SELECT CODE_ORDER FROM C_CODE WHERE CODE_IDX = #{codeIdx})
AND CODE_IDX NOT IN (SELECT CODE_IDX
FROM C_CODE
WHERE CODE_IDXS
LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2)
FROM C_CODE
WHERE CODE_IDX = #{codeIdx})||'%')
ORDER BY CODE_ORDER ASC)
WHERE ROWNUM = 1))||'%')
AS CODE_ORDER
</if>
<if test='orderType eq "up"'>
CODE_ORDER-(SELECT
COUNT(*)
FROM C_CODE
WHERE CODE_IDXS LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2)
FROM C_CODE
WHERE CODE_IDX = (SELECT CODE_IDX FROM (SELECT * FROM C_CODE
WHERE CODE_ORDER <![CDATA[ < ]]> (SELECT CODE_ORDER FROM C_CODE WHERE CODE_IDX = #{codeIdx})
AND CODE_IDX NOT IN (SELECT CODE_IDX
FROM C_CODE
WHERE CODE_IDXS
LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2)
FROM C_CODE
WHERE CODE_IDX = #{codeIdx})||'%')
AND CODE_DEPTH = (SELECT CODE_DEPTH FROM C_CODE WHERE CODE_IDX = #{codeIdx})
ORDER BY CODE_ORDER DESC)
WHERE ROWNUM = 1))||'%')
AS CODE_ORDER
</if>
FROM (SELECT * FROM C_CODE WHERE CODE_IDXS LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2) FROM C_CODE WHERE CODE_IDX = #{codeIdx})||'%'))
UNION ALL
(SELECT
CODE_IDX,
<if test='orderType eq "down"'>
CODE_ORDER-(SELECT
COUNT(*)
FROM (SELECT * FROM C_CODE WHERE CODE_IDXS LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2) FROM C_CODE WHERE CODE_IDX = #{codeIdx})||'%'))
AS CODE_ORDER
FROM C_CODE
WHERE CODE_IDXS LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2)
FROM C_CODE
WHERE CODE_IDX = (SELECT CODE_IDX FROM (SELECT * FROM C_CODE
WHERE CODE_ORDER <![CDATA[ > ]]> (SELECT CODE_ORDER FROM C_CODE WHERE CODE_IDX = #{codeIdx})
AND CODE_IDX NOT IN (SELECT CODE_IDX
FROM C_CODE
WHERE CODE_IDXS
LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2)
FROM C_CODE
WHERE CODE_IDX = #{codeIdx})||'%')
ORDER BY CODE_ORDER ASC)
WHERE ROWNUM = 1))||'%')
</if>
<if test='orderType eq "up"'>
CODE_ORDER+(SELECT
COUNT(*)
FROM (SELECT * FROM C_CODE WHERE CODE_IDXS LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2) FROM C_CODE WHERE CODE_IDX = #{codeIdx})||'%'))
AS CODE_ORDER
FROM C_CODE
WHERE CODE_IDXS LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2)
FROM C_CODE
WHERE CODE_IDX = (SELECT CODE_IDX FROM (SELECT * FROM C_CODE
WHERE CODE_ORDER <![CDATA[ < ]]> (SELECT CODE_ORDER FROM C_CODE WHERE CODE_IDX = #{codeIdx})
AND CODE_IDX NOT IN (SELECT CODE_IDX
FROM C_CODE
WHERE CODE_IDXS
LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2)
FROM C_CODE
WHERE CODE_IDX = #{codeIdx})||'%')
AND CODE_DEPTH = (SELECT CODE_DEPTH FROM C_CODE WHERE CODE_IDX = #{codeIdx})
ORDER BY CODE_ORDER DESC)
WHERE ROWNUM = 1))||'%')
</if>
) B
ON (A.CODE_IDX = B.CODE_IDX)
WHEN MATCHED THEN
UPDATE SET A.CODE_ORDER = B.CODE_ORDER
</update>
<update id="codeUpList" parameterType="egovMap">
UPDATE C_CODE SET CODE_ORDER = CODE_ORDER-(SELECT COUNT(*)
FROM C_CODE
WHERE CODE_IDXS
LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2)
FROM C_CODE
WHERE CODE_IDX = #{codeIdx})||'%')
WHERE CODE_ORDER <![CDATA[ > ]]> (SELECT CODE_ORDER FROM C_CODE WHERE CODE_IDX = #{codeIdx})
</update>
<delete id="codeDelte" parameterType="egovMap">
DELETE FROM C_CODE WHERE CODE_IDX IN (SELECT CODE_IDX
FROM C_CODE
WHERE CODE_IDXS
LIKE (SELECT SUBSTR(CODE_IDXS, 0, CODE_DEPTH * 2)
FROM C_CODE
WHERE CODE_IDX = #{codeIdx})||'%')
</delete>
<insert id="codeInsertCode" parameterType="egovMap">
<selectKey keyProperty="codeIdx" resultType="int" order="BEFORE">
SELECT C_CODE_SEQ.NEXTVAL FROM DUAL
</selectKey>
INSERT INTO C_CODE
(CODE_IDX,
MEMBER_IDX,
CODE_NAME,
CODE_IDXS,
CODE_IDX1,
CODE_IDX2,
CODE_IDX3,
CODE_IDX4,
CODE_IDX5,
CODE_PARENT_IDX,
CODE_DEPTH,
CODE_ORDER,
CODE_REGDATE,
CODE_MODDATE,
CODE_STATUS)
VALUES
(#{codeIdx},
#{memberIdx},
#{codeName},
#{codeIdxs},
#{codeIdx1},
#{codeIdx2},
#{codeIdx3},
#{codeIdx4},
#{codeIdx5},
#{codeParentIdx},
#{codeDepth},
#{codeOrder},
SYSDATE,
SYSDATE,
#{codeStatus})
</insert>
<update id="codeStatus" parameterType="egovMap">
UPDATE C_CODE
SET
MEMBER_IDX = #{memberIdx}, CODE_STATUS = #{codeStatus},
CODE_MODDATE = SYSDATE
WHERE CODE_IDX = #{codeIdx}
</update>
<insert id="codeCodeHistory" parameterType="egovMap">
<selectKey keyProperty="codeHistoryIdx" resultType="int" order="BEFORE">
SELECT C_CODE_HISTORY_SEQ.NEXTVAL FROM DUAL
</selectKey>
INSERT INTO C_CODE_HISTORY
(CODE_HISTORY_IDX,
CODE_NAME_BEFORE,
MEMBER_IDX,
CODE_HISTORY_TYPE,
CODE_NAME_AFTER,
CODE_IDXS,
CODE_HISTORY_REGDATE,
CODE_PARENT_NAME)
VALUES
(#{codeHistoryIdx},
#{codeNameBefore},
#{memberIdx},
#{codeHistoryType},
#{codeNameAfter},
(SELECT CODE_IDXS FROM C_CODE WHERE CODE_IDX = #{dataIdx}),
SYSDATE,
(SELECT
DECODE(CODE_DEPTH, '1', 'ROOT',
<if test='codeDepth eq 1'>
''
</if>
<if test='codeDepth > 1'>
A.CODE_NAME
</if>
<if test='codeDepth > 2'>
||' > '||B.CODE_NAME
</if>
<if test='codeDepth > 3'>
||' > '||C.CODE_NAME
</if>
<if test='codeDepth > 4'>
||' > '||D.CODE_NAME
</if>
) AS CODE_NAME
FROM
C_CODE
<if test='codeDepth > 1'>
,(SELECT CODE_NAME FROM C_CODE WHERE CODE_IDXS = SUBSTR((SELECT CODE_IDXS FROM C_CODE WHERE CODE_IDX = #{dataIdx}), 1 , 2)||'00000000') A
<if test='codeDepth > 2'>
,(SELECT CODE_NAME FROM C_CODE WHERE CODE_IDXS = SUBSTR((SELECT CODE_IDXS FROM C_CODE WHERE CODE_IDX = #{dataIdx}), 1 , 4)||'000000') B
<if test='codeDepth > 3'>
,(SELECT CODE_NAME FROM C_CODE WHERE CODE_IDXS = SUBSTR((SELECT CODE_IDXS FROM C_CODE WHERE CODE_IDX = #{dataIdx}), 1 , 6)||'0000') C
<if test='codeDepth > 4'>
,(SELECT CODE_NAME FROM C_CODE WHERE CODE_IDXS = SUBSTR((SELECT CODE_IDXS FROM C_CODE WHERE CODE_IDX = #{dataIdx}), 1 , 8)||'00') D
</if>
</if>
</if>
</if>
WHERE CODE_IDX = #{dataIdx}))
</insert>
<select id="codehistoryPagingList" parameterType="egovMap" resultType="egovMap">
<include refid="Header2"/>
SELECT
CODE_PARENT_NAME,
CODE_NAME_BEFORE,
CODE_NAME_AFTER,
DECODE(CODE_HISTORY_TYPE, 'I', '저장', 'U', '수정', 'D', '삭제') AS CODE_HISTORY_TYPE,
(SELECT MEMBER_NAME FROM T_MEMBER WHERE MEMBER_IDX = A.MEMBER_IDX) AS MEMBER_NAME,
TO_CHAR(CODE_HISTORY_REGDATE, 'YYYY-MM-DD HH24:MI:SS') AS CODE_HISTORY_REGDATE
FROM C_CODE_HISTORY A
<include refid="bottom2"/>
</select>
<select id="codehistoryPagingListTot" parameterType="egovMap" resultType="int">
SELECT
COUNT(*) AS TOTCNT
FROM C_CODE_HISTORY A
</select>
</mapper>

View File

@ -0,0 +1,162 @@
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<script type="text/javascript">
$(document).ready(function(){
});
function searchCode(page){
$("#page").val(page);
alert(page);
var f = $("#frm");
f.action = "/gtm/case/code/historyList/historylist.do";
f.submit();
}
function loadPaging() {
var page = $("#page").val();
var url = "";
$("#type").val("S");
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/historylistTot.do";
XHR(url, param, function(r){
var iPage = page;
var iTotCnt = r.data.totcnt;
//$("#totcnt").text(iTotCnt);
var pageSize = 5;
var pageBlock = 5;
$('.wrap-paging').jqueryPager({pageSize: pageSize,
pageBlock: pageBlock,
currentPage: iPage,
pageTotal: iTotCnt,
clickEvent: 'searchCode'});
});
}
</script>
<form:form name="frm" id="frm" action="/gtm/case/code/historyList/historylist.do" method="post">
<input type="hidden" id="type" name="type" value=""/>
<input type="hidden" name="page" id="page" value="${pageMaker.cri.page}">
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title">자주하는 질문(${menuName})</h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p>자주하는 질문(${menuName})에 대한 목록 화면 입니다.</p>
</div>
</div>
</div>
<div class="sch-content-wrap clear">
<form name="searchFrm" id="searchFrm" action="" method="get">
<input type="hidden" name="setIdx" value="${param.setIdx}">
<input type="hidden" name="faqSeq" id="faqSeq" value="">
<input type="hidden" name="page" id="page" value="${pageMaker.cri.page}">
<fieldset>
<select name="searchType" id="searchType" class="sch-select" title="자료유형 선택">
<option value="title" <c:if test="${param.searchType == 'title'}">selected="selected"</c:if>>제목</option>
<option value="content" <c:if test="${param.searchType == 'content'}">selected="selected"</c:if>>내용</option>
</select>
<input type="text" name="searchTilte" value="${param.searchTilte}" class="sch-text" title="제목검색">
<button type="button" class="btn-page-sch" title="검색 완료 버튼" onclick="goPage('search', '')">검색</button>
</fieldset>
</form>
</div>
</div>
<div class="form-wrap">
<div class="table-layout br-none">
<table>
<caption>자주하는질문 테이블입니다.</caption>
<colgroup>
<col class="item-mobile-hidden" style="width:5%">
<col class="title">
<col class="item-mobile-hidden" style="width:10%">
</colgroup>
<thead>
<tr>
<th scope="col" class="item-mobile-hidden">번호</th>
<th scope="col">제목</th>
<th scope="col" class="item-mobile-hidden">조회수</th>
</tr>
</thead>
<tbody>
<c:forEach items="${data}" var="params" varStatus="status">
<tr>
<td class="item-mobile-hidden"></td>
<td><a href="javascript:goPage('view', '');"><c:out value="${params.codeParentName}"/></a></td>
<td class="item-mobile-hidden"></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="change-state-area" style="overflow: hidden;">
<div align="right">
<button type="button" onclick="goPage('write', '')" class="btn-change-state" style="background-color: #5e66ab;">글쓰기</button>
</div>
</div>
</div>
<!-- 페이징 -->
<div class="pagination-container">
<div class="pagination-inner clear">
<div class='pagination-control prev clear'>
<a class='first-btn' href="javascript:goPage('paging', '1')" title="첫페이지"></a>
<c:choose>
<c:when test="${pageMaker.prev}">
<a class='prev-btn' href="javascript:goPage('paging', '${pageMaker.cri.page - 1}')" title="이전페이지"><img src="/img/common/list_navi2.gif" alt="이전 목록으로 이동" /></a>
</c:when>
<c:otherwise>
<a class='prev-btn' href="javascript:goPage('paging', '${pageMaker.cri.page}')" title="이전페이지"><img src="/img/common/list_navi2.gif" alt="이전 목록으로 이동" /></a>
</c:otherwise>
</c:choose>
</div>
<ul class='pagination clear'>
<c:forEach begin="${pageMaker.startPage}" end="${pageMaker.endPage }" var="idx">
<c:choose>
<c:when test="${idx == pageMaker.cri.page }">
<li><a class='on' href="javascript:goPage('paging', '${idx}')" title="현재페이지">${idx}</a></li>
</c:when>
<c:otherwise>
<li><a href="javascript:goPage('paging', '${idx}')" title="${idx}페이지">${idx}</a></li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
<div class='pagination-control next clear'>
<c:choose>
<c:when test="${pageMaker.next}">
<a class='next-btn' href="javascript:goPage('paging', '${pageMaker.cri.page + 1}')" title="다음페이지"><img src="/img/common/list_navi3.gif" alt="다음 목록으로 이동" /></a>
</c:when>
<c:otherwise>
<a class='next-btn' href="javascript:goPage('paging', '${pageMaker.cri.page}')" title="다음페이지"><img src="/img/common/list_navi3.gif" alt="다음 목록으로 이동" /></a>
</c:otherwise>
</c:choose>
<a class='last-btn' href="javascript:goPage('paging', '${pageMaker.endPage}')" title="마지막페이지"><img src="/img/common/list_navi4.gif" alt="마지막 목록으로 이동" /></a>
</div>
</div>
</div>
<!-- 페이징 END -->
<script type="text/javascript">
function goPage(type, param){
if(type == 'search'){
$("#page").val("1");
$("#searchFrm").attr("action","/gtm/case/faqBbs/list.do");
$("#searchFrm").submit();
}else if(type == 'paging'){
$("#page").val(param);
$("#searchFrm").attr("action","/gtm/case/faqBbs/list.do");
$("#searchFrm").submit();
}
}
</script>
</form:form>

View File

@ -0,0 +1,223 @@
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<script>
$(document).ready(function(){
$("#codeDelLi").hide();
$("#codeForm").click(function(){
var url = $(this).attr("href");
window.open(url,"popCodeChk","width=420, height=180, resizable=no, location=no, toolbar=no, menubar=no, status=no, scrollbars=no");
return false;
});
$("#codeDel").click(function(){
if(confirm("해당 코드를 삭제하시겠습니까?")){
//return false;
$("#dataIdx").val($("#codeIdx").val());
$("#codeHistoryType").val("D");
var url = "";
$("#type").val("I");
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/CodeHistory.do";
XHR(url, param, function(r){
var url = "";
$("#type").val("U");
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/UpList.do";
XHR(url, param, function(r){
var url = "";
$("#type").val("D");
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/Delte.do";
XHR(url, param, function(r1){
location.reload();
});
});
});
}
});
$(window).scroll(function(){
$(".code").stop();
$(".code").animate( { "top": $(document).scrollTop() + "px" }, 1000 );
});
});
function jf_codeClick(object, codeIdxs, codeIdx, codeDepth, codeName){
$(".trEffect").attr("style", "background-color: #F7F7F7");
$(object).attr("style", "background-color: #C0E0EF");
if(codeIdxs == "0" || codeDepth == 1){
$("#codeDelLi").hide();
}else{
$("#codeDelLi").show();
}
// if(codeIdxs == "0"){
// $("#codeDelLi").hide();
// }else{
// $("#codeDelLi").show();
// }
if(codeDepth == "5"){
$("#codeForm").hide();
}else{
$("#codeForm").show();
}
$("#codeDepth").val(codeDepth);
$("#codeIdx").val(codeIdx);
$("#codeNameBefore").val(codeName);
$("#codeForm").attr("href", "/pop/code/write/popup.do?codeParentIdx="+codeIdxs+"&command=write");
//$("#codeDel").attr("href", "/ecmc/code/process/jsp/LayOutPage.do?dataIdx="+codeIdx+"&command=delete&column='${column}'&search='${search}'");
}
function jf_codeEdit(codeIdx, codeDepth){
var url = "/pop/code/write/popup.do?dataIdx="+codeIdx+"&command=update"+"&codeDepth="+codeDepth;
window.open(url,"popCodeChk","width=420, height=180, resizable=no, location=no, toolbar=no, menubar=no, status=no, scrollbars=no");
return false;
}
function jf_codeOrder(codeIdx, orderType){
if(confirm("해당 코드의 순서를 변경하시겠습니까?")){
var url = "";
$("#type").val("U");
$("#codeIdx").val(codeIdx);
$("#orderType").val(orderType);
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/UpDown.do";
XHR(url, param, function(r){
location.reload();
});
}
}
function updateStatus(codeIdx, status){
if(confirm("해당 코드상태를 변경하시겠습니까?")){
var url = "";
$("#type").val("U");
$("#codeIdx").val(codeIdx);
$("#codeStatus").val(status);
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/Status.do";
XHR(url, param, function(r){
location.reload();
});
}
}
function searchCode(){
var f = $("#frm");
f.action = "/gtm/case/code/list/list.do";
f.submit();
}
</script>
<div class="iconmWrap code">
<div class="icon_menu">
<ul>
<li class="margin30"><a href="/pop/code/write/popup.do?codeParentIdx=0&column=${column }&search=${search}&command=write" id="codeForm"><img src="/img/code/sub_icon_code_add.png" alt="코드추가"></a></li>
<li id="codeDelLi"><a href="javascript:void(0);" id="codeDel"><img src="/img/code/sub_icon_code_del.png" alt="코드삭제"></a></li>
</ul>
</div>
</div>
<form:form name="frm" id="frm" action="/gtm/case/code/list/list.do" method="post">
<input type="hidden" id="type" name="type" value="" />
<input type="hidden" id="codeDepth" name="codeDepth" value="" />
<input type="hidden" id="codeIdx" name="codeIdx" value="" />
<input type="hidden" id="dataIdx" name="dataIdx" value="" />
<input type="hidden" id="codeStatus" name="codeStatus" value="" />
<input type="hidden" id="orderType" name="orderType" value="" />
<input type="hidden" id="codeHistoryType" name="codeHistoryType" value="" />
<input type="hidden" id="codeNameAfter" name="codeNameAfter" value="" />
<input type="hidden" id="codeNameBefore" name="codeNameBefore" value="" />
<article class="menu_on">
<div class="titleWrap">
<h1>코드관리 </h1>
<div class="board_search">
<div class="selstyle type1" style="width:150px;">
<div>
<select name="column" id="column" title="선택하세요." style="width:174px;">
<option value="A" >전체</option>
<option value="CODE_NAME" <c:if test="${column eq 'CODE_NAME'}">selected</c:if>>그룹명</option>
<option value="MEMBER_NAME" <c:if test="${column eq 'MEMBER_NAME'}">selected</c:if>>관리자(ID)</option>
</select>
</div>
</div>
<input type="text" class="inpstyle type1" name="search" id="search" title="검색어를 입력하세요." style="width:200px;" value="${search}" />
<span class="button small"><input type="submit" value="검색" /></span>
</div>
</div>
<table class="listTable ac">
<caption>그룹 목록의 그룹 ID, 그룹명, 관리자(ID), 등록일, 순서가 포함되어있습니다.</caption>
<colgroup>
<col style="width: auto;" />
<col style="width: 8%;" />
<col style="width: 10%;" />
<col style="width: 8%;" />
<col style="width: 8%;" />
</colgroup>
<thead>
<tr>
<th scope="col">그룹명</th>
<th scope="col">관리자(ID)</th>
<th scope="col">등록일</th>
<th scope="col">순서</th>
<th scope="col">상태</th>
</tr>
</thead>
<tbody>
<c:if test="${not empty data}">
<c:forEach items="${data}" var="params" varStatus="idx">
<tr class="trEffect" onclick="javascript:jf_codeClick(this, '${params.codeIdxs}', '${params.codeIdx}', '${params.codeDepth}', '${params.codeName}');" >
<td class="subj">
<span class="menuedit sub${params.codeDepth}">
<a href="javascript:jf_codeEdit('${params.codeIdx}', '${params.codeDepth}'); void(0);" id="${params.codeIdx}">${params.codeName}</a>
</span>
</td>
<td>${params.memberName}(${params.memberId})</td>
<td>${params.codeRegdate}</td>
<td>
<c:if test="${params.codeDepth > 1}">
<c:if test="${params.codeUp > 0}">
<a href="javascript:void(0);" onclick="jf_codeOrder('${params.codeIdx }', 'up');"><img src="/img/common/list_up_bt.gif" alt="위로 순서변경"></a>
</c:if>
<c:if test="${params.codeDown > 0}">
&nbsp;
<a href="javascript:void(0);" onclick="jf_codeOrder('${params.codeIdx }', 'down');"><img src="/img/common/list_down_bt.gif" alt="아래로 순서변경"></a>
</c:if>
</c:if>
</td>
<td>
<c:if test="${params.codeStatus eq 'U'}">
<span class="button mini_green"><a href="javascript:void(0);" onclick="updateStatus('${params.codeIdx }', 'S');">ON</a></span>
</c:if>
<c:if test="${params.codeStatus ne 'U'}">
<span class="button mini_red"><a href="javascript:void(0);" onclick="updateStatus('${params.codeIdx }', 'U');">OFF</a></span>
</c:if>
</td>
</tr>
</c:forEach>
</c:if>
<c:if test="${empty data}">
<tr><td colspan="5">등록된 코드가 없습니다.</td></tr>
</c:if>
</tbody>
</table>
</article>
</form:form>

View File

@ -0,0 +1,371 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ page import="seed.utils.*" %>
<!doctype html>
<!--[if lt IE 7 ]><html class="ie ie6" lang="ko"><![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="ko"><![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="ko"><![endif]-->
<!--[if (gtm IE 9)|!(IE)]><!--><html lang="ko"><!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex">
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
<title>사이트관리자 게시판 기능 카테고리관리 생성 페이지</title>
<link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon">
<link rel="icon" href="/img/favicon.ico" type="image/x-icon">
<!-- css -->
<link href="/css/total.css" rel="stylesheet" type="text/css"/>
<link href="/css/jquery-ui.css" rel="stylesheet" type="text/css"/>
<link href="/css/animate.css" rel="stylesheet" type="text/css"/>
<!-- css -->
<!-- js -->
<!--[if lte IE 9]>
<script src="/js/html5.js"></script>
<![endif]-->
<!-- js -->
<script src="/js/jquery-1.9.1.min.js"></script>
<!--<script src="/js/jquery-1.7.min.js"></script>-->
<script src="/js/jquery-ui.min.js"></script>
<script src="/js/jquery.number.min.js"></script>
<script src="/js/jquery.cookie.js"></script>
<script src="/js/slick.min.js"></script>
<script src="/js/base64.js"></script>
<script src="/js/common.js"></script>
<script src="/js/lib/jquery.blockUI.js"></script>
<script src="/js/jquery.form.js"></script>
<script src="/js/date.format.js"></script>
<script src="/js/browser.js"></script>
<script src="/js/jquery.paging.js"></script>
<script src="/js/jquery.slides.min.js"></script>
<script src="/js/owl.carousel.min.js"></script>
<script src="/js/jquery.mousewheel.min.js"></script>
<script src="/js/common_XHR.js"></script>
<!-- js -->
<script type="text/javascript">
$(document).ready(function(){
if('${command}' == 'update'){
var url = "";
$("#type").val("S");
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/Info.do";
XHR(url, param, function(r){
$("#codeName").val(r.data.codeName);
$("#codeNameBefore").val(r.data.codeName);
});
}
$("#save").click(function(){
if('${command}' == 'write'){
var codeParentIdx = $("#codeParentIdx").val();
var codeDepth = "0";
var codeOrder = "0";
var codeIdx1 = "";
var codeIdx2 = "";
var codeIdx3 = "";
var codeIdx4 = "";
var codeIdx5 = "";
var codeStatus = "";
var codeIdxs = "";
if(jQuery.trim($("#codeName").val()) == ""){
alert("코드명을 입력해 주세요");
$("#codeName").focus();
return false;
}
var url = "";
$("#type").val("S");
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/ParentInfo.do";
XHR(url, param, function(r){
if(r.data == null){
if(codeParentIdx != 0){
url = "/gtm/case/code/ajax/IdxsInfo.do";
$("#type").val("S");
var param = jQuery('#frm').serialize();
XHR(url, param, function(r1){
codeDepth = r1.data.codeDepth+1;
codeOrder = r1.data.codeOrder+1;
codeIdx1 = r1.data.codeIdx1;
codeIdx2 = r1.data.codeIdx2;
codeIdx3 = r1.data.codeIdx3;
codeIdx4 = r1.data.codeIdx4;
codeIdx5 = r1.data.codeIdx5;
codeStatus = r1.data.codeStatus;
switch (codeDepth) {
case 1:
if(10 > (codeIdx1 *= 1)){
codeIdx1 = "0"+((codeIdx1 *= 1)+1);
}else{
codeIdx1 = ((codeIdx1 *= 1)+1);
}
break;
case 2:
if(10 > (codeIdx2 *= 1)){
codeIdx2 = "0"+((codeIdx2 *= 1)+1);
}else{
codeIdx2 = ((codeIdx2 *= 1)+1);
}
break;
case 3:
if(10 > (codeIdx3 *= 1)){
codeIdx3 = "0"+((codeIdx3 *= 1)+1);
}else{
codeIdx3 = ((codeIdx3 *= 1)+1);
}
break;
case 4:
if(10 > (codeIdx4 *= 1)){
codeIdx4 = "0"+((codeIdx4 *= 1)+1);
}else{
codeIdx4 = ((codeIdx4 *= 1)+1);
}
break;
case 5:
if(10 > (codeIdx5 *= 1)){
codeIdx5 = "0"+((codeIdx5 *= 1)+1);
}else{
codeIdx5 = ((codeIdx5 *= 1)+1);
}
break;
}
codeIdxs = codeIdx1+codeIdx2+codeIdx3+codeIdx4+codeIdx5;
insert(codeParentIdx, codeDepth, codeOrder, codeIdx1, codeIdx2, codeIdx3,
codeIdx4, codeIdx5, codeStatus, codeIdxs);
});
}else{
codeDepth = "1";
codeOrder = "1";
codeIdx1 = "01";
codeIdx2 = "00";
codeIdx3 = "00";
codeIdx4 = "00";
codeIdx5 = "00";
codeStatus = "U";
codeIdxs = codeIdx1+codeIdx2+codeIdx3+codeIdx4+codeIdx5;
insert(codeParentIdx, codeDepth, codeOrder, codeIdx1, codeIdx2, codeIdx3,
codeIdx4, codeIdx5, codeStatus, codeIdxs);
}
}else{
if(codeParentIdx == 0){
codeDepth = 1;
}else{
codeDepth = r.data.codeDepth;
}
codeIdx1 = r.data.codeIdx1;
codeIdx2 = r.data.codeIdx2;
codeIdx3 = r.data.codeIdx3;
codeIdx4 = r.data.codeIdx4;
codeIdx5 = r.data.codeIdx5;
codeStatus = r.data.codeStatus;
switch (codeDepth) {
case 1:
if(10 > (codeIdx1 *= 1)){
codeIdx1 = "0"+((codeIdx1 *= 1)+1);
}else{
codeIdx1 = ((codeIdx1 *= 1)+1);
}
break;
case 2:
if(10 > (codeIdx2 *= 1)){
codeIdx2 = "0"+((codeIdx2 *= 1)+1);
}else{
codeIdx2 = ((codeIdx2 *= 1)+1);
}
break;
case 3:
if(10 > (codeIdx3 *= 1)){
codeIdx3 = "0"+((codeIdx3 *= 1)+1);
}else{
codeIdx3 = ((codeIdx3 *= 1)+1);
}
break;
case 4:
if(10 > (codeIdx4 *= 1)){
codeIdx4 = "0"+((codeIdx4 *= 1)+1);
}else{
codeIdx4 = ((codeIdx4 *= 1)+1);
}
break;
case 5:
if(10 > (codeIdx5 *= 1)){
codeIdx5 = "0"+((codeIdx5 *= 1)+1);
}else{
codeIdx5 = ((codeIdx5 *= 1)+1);
}
break;
}
url = "/gtm/case/code/ajax/OrderInfo.do";
$("#type").val("S");
$("#codeIdxs").val(r.data.codeIdxs);
$("#codeDepth").val(codeDepth-1);
var param = jQuery('#frm').serialize();
XHR(url, param, function(r2){
codeOrder = (r2.data.codeOrder *= 1)+1;
codeIdxs = codeIdx1+codeIdx2+codeIdx3+codeIdx4+codeIdx5;
insert(codeParentIdx, codeDepth, codeOrder, codeIdx1, codeIdx2, codeIdx3,
codeIdx4, codeIdx5, codeStatus, codeIdxs);
});
}
});
}else if('${command}' == 'update'){
var url = "";
$("#type").val("U");
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/Update.do";
XHR(url, param, function(r){
$("#codeNameAfter").val($("#codeName").val());
$("#codeHistoryType").val("U");
var url = "";
$("#type").val("I");
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/CodeHistory.do";
XHR(url, param, function(r){
window.opener.location.reload();
self.close();
});
});
}
});
});
function insert(codeParentIdx, codeDepth, codeOrder, codeIdx1, codeIdx2, codeIdx3,
codeIdx4, codeIdx5, codeStatus, codeIdxs){
$("#codeParentIdx").val(codeParentIdx);
$("#codeDepth").val(codeDepth);
$("#codeOrder").val(codeOrder);
$("#codeIdx1").val(codeIdx1);
$("#codeIdx2").val(codeIdx2);
$("#codeIdx3").val(codeIdx3);
$("#codeIdx4").val(codeIdx4);
$("#codeIdx5").val(codeIdx5);
$("#codeStatus").val(codeStatus);
$("#codeIdxs").val(codeIdxs);
$("#type").val("L");
url = "/gtm/case/code/ajax/CodeOrderSelList.do";
var param = jQuery('#frm').serialize();
XHR(url, param, function(r3){
var list = new Array();
$.each(r3.data, function(k,v) {
list.push(v.codeIdx);
});
$("#arrList").val(list);
url = "/gtm/case/code/ajax/CodeOrderUpdate.do";
$("#orderType").val("plus");
$("#codeListCnt").val("0");
$("#type").val("U");
var param = jQuery('#frm').serialize();
XHR(url, param, function(r3){
url = "/gtm/case/code/ajax/InsertCode.do";
$("#type").val("I");
var param = jQuery('#frm').serialize();
XHR(url, param, function(r4){
$("#dataIdx").val(r4.codeIdx);
$("#codeNameAfter").val($("#codeName").val());
$("#codeHistoryType").val("I");
var url = "";
$("#type").val("I");
var param = jQuery('#frm').serialize();
url = "/gtm/case/code/ajax/CodeHistory.do";
XHR(url, param, function(r){
window.opener.location.reload();
self.close();
});
});
});
});
}
function JSONtoString(object) {
var results = [];
for (var property in object) {
var value = object[property];
if (value)
results.push(property.toString() + ': ' + value);
}
return '{' + results.join(', ') + '}';
}
</script>
</head>
<body class="seedPop">
<article class="menu_none">
<div class="titleWrap">
<h1>코드관리 상세정보</h1>
</div>
<div id="content">
<form name="frm" id="frm" method="post">
<input type="hidden" id="codeNameBefore" name="codeNameBefore" value="" />
<input type="hidden" id="codeNameAfter" name="codeNameAfter" value="" />
<input type="hidden" id="codeHistoryType" name="codeHistoryType" value="" />
<input type="hidden" id="column" name="column" value="${column}" />
<input type="hidden" id="search" name="search" value="${search}" />
<input type="hidden" id="dataIdx" name="dataIdx" value="${dataIdx}" />
<input type="hidden" id="command" name="command" value="${command}" />
<input type="hidden" id="type" name="type" value="" />
<!--
-->
<input type="hidden" id="codeParentIdx" name="codeParentIdx" value="${codeParentIdx}" />
<!--
<input type="hidden" id="codeParentIdx" name="codeParentIdx" value="0100000000" />
-->
<input type="hidden" id="codeDepth" name="codeDepth" value="${codeDepth }" />
<input type="hidden" id="codeOrder" name="codeOrder" value="" />
<input type="hidden" id="codeIdx1" name="codeIdx1" value="" />
<input type="hidden" id="codeIdx2" name="codeIdx2" value="" />
<input type="hidden" id="codeIdx3" name="codeIdx3" value="" />
<input type="hidden" id="codeIdx4" name="codeIdx4" value="" />
<input type="hidden" id="codeIdx5" name="codeIdx5" value="" />
<input type="hidden" id="codeStatus" name="codeStatus" value="" />
<input type="hidden" id="codeIdxs" name="codeIdxs" value="" />
<input type="hidden" id="orderType" name="orderType" value="" />
<input type="hidden" id="codeListCnt" name="codeListCnt" value="" />
<input type="hidden" id="arrList" name="arrList" value="" />
<table class="readTable">
<caption>코드추가 및 수정화면입니다.</caption>
<colgroup>
<col style="width: 20%;" />
<col style="width: auto;" />
</colgroup>
<tbody>
<tr>
<th scope="row"><label for="codeName">코드명 </label></th>
<td><input type="text" class="bg_essential inpstyle type2" maxlength="100" name="codeName" id="codeName" title="코드명" value="${viewName}" required style="width:200px;" /></td>
</tr>
</tbody>
</table>
<div class="btArea bt_r">
<!-- <span class="button big_green"><input type="submit" value="저장하기" /></span> -->
<span class="button big_green"><a href="javascript:void(0);" id="save">저장하기</a></span>
<span class="button big_gray"><a href="javascript:self.close();">닫기</a></span>
</div>
</form>
</div>
</article>
</body>
</html>