Merge branch 'dev' into krc/receipt_waiting

pull/22/head
고락춘 3 weeks ago
commit dbcdfae983

@ -72,6 +72,7 @@
<script type="text/javascript"> <script type="text/javascript">
let GRID = null;
let INIT_POPUP = null; let INIT_POPUP = null;
let SEARCH_COND = {}; let SEARCH_COND = {};
@ -104,7 +105,6 @@
eventListener: () => { eventListener: () => {
let self = this;
// 검색 버튼 클릭 이벤트 // 검색 버튼 클릭 이벤트
$('#search_btn').on('click', function() { $('#search_btn').on('click', function() {
// 등록일 from~to 유효성 검사 // 등록일 from~to 유효성 검사
@ -137,7 +137,7 @@
// 페이지를 1로 리셋 // 페이지를 1로 리셋
$("#page").val(1); $("#page").val(1);
// 그리드 데이터 리로드 // 그리드 데이터 리로드
self.grid.instance.readData(1); TuiGrid.instance.readData(1);
}); });
// 검색어 입력 필드에서 엔터키 이벤트 처리 // 검색어 입력 필드에서 엔터키 이벤트 처리
@ -149,10 +149,13 @@
}); });
// perPage 변경 이벤트 추가 // perPage 변경 이벤트 추가
$('#perPageSelect').on('change', function() { $('#perPageSelect').on('change', () => {
let perPage = parseInt($(this).val(), 10); const pagination = TuiGrid.instance.getPagination();
// Grid의 perPage 설정 변경 및 데이터 리로드 if (!pagination) return;
self.grid.instance.setPerPage(perPage);
pagination.setItemsPerPage($('#perPageSelect').val());
pagination.reset(TuiGrid.instance.getRowCount());
pagination.movePageTo(1);
}); });
} }
@ -162,88 +165,20 @@
/** tui-grid Set */ /** tui-grid Set */
const initGrid = () => { const initGrid = () => {
const gridColumns = [ const gridColumns = [
{ {header: '등록구분', name: 'mmDlgb', sortable: true, width: 50,},
header: '등록구분', {header: '목록번호', name: 'asBbsNo', sortable: true, width: 70,},
name: 'mmDlgb', {header: '신고자', name: 'mmSgnm', sortable: true, width: 100,},
sortable: true, {header: '담당자', name: 'mmSgtel', sortable: true, width: 100,},
width: 50, {header: '전화번호', name: 'asTel', width: 150,},
}, {header: '접수일자', name: 'asJsdate', sortable: true, width: 70,},
{ {header: '처리기한', name: 'asLimitDt', sortable: true, width: 70,},
header: '목록번호', {header: '위반일자', name: 'mmDate', sortable: true, width: 150,},
name: 'asBbsNo', {header: '첨부', name: 'mmImagegb', width: 150,},
sortable: true, {header: '사진갯수', name: 'mmImagecnt', width: 50,},
width: 70, {header: '위반내용', name: 'mmSgcont', width: 250,},
}, {header: '접수번호', name: 'asJsno', sortable: true, width: 150,},
{ {header: '차량번호', name: 'mmCarno', sortable: true, width: 150,},
header: '신고자', {header: 'mmCode', name: 'mmCode', sortable: true, width: 150, align: 'center', hidden: true}
name: 'mmSgnm',
sortable: true,
width: 100,
},
{
header: '담당자',
name: 'mmSgtel',
sortable: true,
width: 100,
},
{
header: '전화번호',
name: 'asTel',
width: 150,
},
{
header: '접수일자',
name: 'asJsdate',
sortable: true,
width: 70,
},
{
header: '처리기한',
name: 'asLimitDt',
sortable: true,
width: 70,
},
{
header: '위반일자',
name: 'mmDate',
sortable: true,
width: 150,
},
{
header: '첨부',
name: 'mmImagegb',
width: 150,
},
{
header: '사진갯수',
name: 'mmImagecnt',
width: 50,
},
{
header: '위반내용',
name: 'mmSgcont',
width: 250,
},
{
header: '접수번호',
name: 'asJsno',
sortable: true,
width: 150,
},
{
header: '차량번호',
name: 'mmCarno',
sortable: true,
width: 150,
},
{
header: 'mmCode',
name: 'mmCode',
sortable: true,
width: 150,
align: 'center',
hidden: true
}
]; ];
const gridDatasource = { const gridDatasource = {
api: { api: {

@ -11,93 +11,139 @@
<%-- 활성화된 메뉴 정보 저장할 변수 --%> <%-- 활성화된 메뉴 정보 저장할 변수 --%>
<c:set var="activeMenuId" value="" scope="request" /> <c:set var="activeMenuId" value="" scope="request" />
<c:set var="activeSubMenuId" value="" scope="request" /> <c:set var="activeSubMenuId" value="" scope="request" />
<c:set var="activeThirdMenuId" value="" scope="request" />
<%-- 콘솔 디버깅 용도 (개발 환경에서만 사용) --%>
<!-- Current URL: ${currentUrl} -->
<!-- Sidebar body --> <!-- Sidebar body -->
<div class="sidebar-body"> <div class="sidebar-body">
<ul class="nav treeview mb-4" data-accordion> <ul class="nav treeview mb-4" data-accordion>
<c:if test="${not empty sessionScope.sessionVO.menus}"> <c:if test="${not empty sessionScope.sessionVO.menus}">
<c:forEach var="menu" items="${sessionScope.sessionVO.menus}"> <c:forEach var="menu" items="${sessionScope.sessionVO.menus}">
<c:if test="${menu.useYn eq 'Y' and menu.viewYn eq 'Y'}"> <c:if test="${menu.useYn eq 'Y' and menu.viewYn eq 'Y'}">
<%-- 메뉴 상태 변수 초기화 (unescape 처리) --%> <%-- 메뉴 상태 변수 초기화 (unescape 처리) --%>
<c:set var="menuUrl" value="${not empty menu.menuUrl ? xssUtil.unescape(menu.menuUrl) : '#'}" /> <c:set var="menuUrl" value="${not empty menu.menuUrl ? xssUtil.unescape(menu.menuUrl) : '#'}" />
<c:set var="menuUrlPattern" value="${not empty menu.urlPattern ? xssUtil.unescape(menu.urlPattern) : ''}" /> <c:set var="menuUrlPattern" value="${not empty menu.urlPattern ? xssUtil.unescape(menu.urlPattern) : ''}" />
<c:set var="isMenuActive" value="false" /> <c:set var="isMenuActive" value="false" />
<c:set var="hasActiveChild" value="false" /> <c:set var="hasActiveChild" value="false" />
<%-- 메인 메뉴 활성화 상태 확인 (디버깅 정보 추가) --%>
<c:if test="${not empty menuUrlPattern && menuUrl != '#'}">
<c:set var="patterns" value="${fn:split(menuUrlPattern, ',')}" />
<!-- Menu ID: ${menu.menuId}, Patterns: ${menuUrlPattern} -->
<c:forEach var="pattern" items="${patterns}">
<c:set var="trimmedPattern" value="${fn:trim(pattern)}" />
<!-- Checking pattern: "${trimmedPattern}" against URL: "${currentUrl}" -->
<c:if test="${path:match(trimmedPattern, currentUrl)}">
<c:set var="isMenuActive" value="true" />
<c:set var="activeMenuId" value="${menu.menuId}" scope="request" />
<!-- Pattern matched! Menu ${menu.menuId} is active -->
</c:if>
</c:forEach>
</c:if>
<%-- 서브메뉴 처리 및 활성화 상태 확인 --%> <%-- 1뎁스 메뉴 활성화 상태 확인 --%>
<c:if test="${not empty menu.children}"> <c:if test="${not empty menuUrlPattern && menuUrl != '#'}">
<c:forEach var="subMenu" items="${menu.children}"> <c:set var="patterns" value="${fn:split(menuUrlPattern, ',')}" />
<c:if test="${subMenu.useYn eq 'Y' and subMenu.viewYn eq 'Y'}"> <c:forEach var="pattern" items="${patterns}">
<%-- 서브메뉴 URL unescape 처리 --%> <c:set var="trimmedPattern" value="${fn:trim(pattern)}" />
<c:set var="subMenuUrl" value="${not empty subMenu.menuUrl ? xssUtil.unescape(subMenu.menuUrl) : '#'}" /> <c:if test="${path:match(trimmedPattern, currentUrl)}">
<c:set var="subMenuUrlPattern" value="${not empty subMenu.urlPattern ? xssUtil.unescape(subMenu.urlPattern) : ''}" /> <c:set var="isMenuActive" value="true" />
<c:set var="isSubMenuActive" value="false" /> <c:set var="activeMenuId" value="${menu.menuId}" scope="request" />
<%-- 서브메뉴 활성화 상태 확인 (디버깅 정보 추가) --%>
<c:if test="${not empty subMenuUrlPattern && subMenuUrl != '#'}">
<c:set var="subPatterns" value="${fn:split(subMenuUrlPattern, ',')}" />
<!-- SubMenu ID: ${subMenu.menuId}, Patterns: ${subMenuUrlPattern} -->
<c:forEach var="subPattern" items="${subPatterns}">
<c:set var="trimmedSubPattern" value="${fn:trim(subPattern)}" />
<!-- Checking subpattern: "${trimmedSubPattern}" against URL: "${currentUrl}" -->
<c:if test="${path:match(trimmedSubPattern, currentUrl)}">
<c:set var="isSubMenuActive" value="true" />
<c:set var="activeSubMenuId" value="${subMenu.menuId}" scope="request" />
<c:set var="hasActiveChild" value="true" />
<!-- SubPattern matched! SubMenu ${subMenu.menuId} is active -->
</c:if>
</c:forEach>
</c:if> </c:if>
</c:if> </c:forEach>
</c:forEach> </c:if>
</c:if>
<%-- 메뉴 렌더링 --%>
<li class="nav-item" data-menu-id="${menu.menuId}" data-url-pattern="${menuUrlPattern}">
<a href="<c:url value="${empty menuUrl ? '#' : menuUrl}" />" class="nav-link has-icon ${not empty menu.children ? 'treeview-toggle' : ''} ${isMenuActive || hasActiveChild ? 'active show' : ''}">
<c:if test="${not empty menu.menuIcon}"><i data-feather="${menu.menuIcon}"></i></c:if>${menu.menuNm}
</a>
<%-- 서브메뉴 렌더링 --%> <%-- 2뎁스 & 3뎁스 활성화 상태 확인 --%>
<c:if test="${not empty menu.children}"> <c:if test="${not empty menu.children}">
<ul class="nav" style="${isMenuActive || hasActiveChild ? '' : ''}"> <c:forEach var="subMenu" items="${menu.children}">
<c:forEach var="subMenu" items="${menu.children}"> <c:if test="${subMenu.useYn eq 'Y' and subMenu.viewYn eq 'Y'}">
<c:if test="${subMenu.useYn eq 'Y' and subMenu.viewYn eq 'Y'}"> <%-- 2뎁스 URL --%>
<%-- 서브메뉴 URL unescape 처리 --%> <c:set var="subMenuUrl" value="${not empty subMenu.menuUrl ? xssUtil.unescape(subMenu.menuUrl) : '#'}" />
<c:set var="subMenuUrl" value="${not empty subMenu.menuUrl ? xssUtil.unescape(subMenu.menuUrl) : '#'}" /> <c:set var="subMenuUrlPattern" value="${not empty subMenu.urlPattern ? xssUtil.unescape(subMenu.urlPattern) : ''}" />
<c:set var="subMenuUrlPattern" value="${not empty subMenu.urlPattern ? xssUtil.unescape(subMenu.urlPattern) : ''}" /> <c:set var="isSubMenuActive" value="false" />
<c:set var="isSubMenuActive" value="${activeSubMenuId eq subMenu.menuId}" />
<%-- 2뎁스 활성화 확인 --%>
<c:if test="${not empty subMenuUrlPattern && subMenuUrl != '#'}">
<c:set var="subPatterns" value="${fn:split(subMenuUrlPattern, ',')}" />
<c:forEach var="subPattern" items="${subPatterns}">
<c:set var="trimmedSubPattern" value="${fn:trim(subPattern)}" />
<c:if test="${path:match(trimmedSubPattern, currentUrl)}">
<c:set var="isSubMenuActive" value="true" />
<c:set var="activeSubMenuId" value="${subMenu.menuId}" scope="request" />
<c:set var="hasActiveChild" value="true" />
</c:if>
</c:forEach>
</c:if>
<%-- 3뎁스(손자 메뉴) 활성화 확인 --%>
<c:if test="${not empty subMenu.children}">
<c:forEach var="thirdMenu" items="${subMenu.children}">
<c:if test="${thirdMenu.useYn eq 'Y' and thirdMenu.viewYn eq 'Y'}">
<c:set var="thirdMenuUrl" value="${not empty thirdMenu.menuUrl ? xssUtil.unescape(thirdMenu.menuUrl) : '#'}" />
<c:set var="thirdMenuUrlPattern" value="${not empty thirdMenu.urlPattern ? xssUtil.unescape(thirdMenu.urlPattern) : ''}" />
<li class="nav-item ${isSubMenuActive ? 'show' : ''}" data-menu-id="${subMenu.menuId}" data-url-pattern="${subMenuUrlPattern}"> <c:if test="${not empty thirdMenuUrlPattern && thirdMenuUrl != '#'}">
<a href="<c:url value='${subMenuUrl}' />" class="nav-link">${subMenu.menuNm}</a> <c:set var="thirdPatterns" value="${fn:split(thirdMenuUrlPattern, ',')}" />
</li> <c:forEach var="thirdPattern" items="${thirdPatterns}">
<c:set var="trimmedThirdPattern" value="${fn:trim(thirdPattern)}" />
<c:if test="${path:match(trimmedThirdPattern, currentUrl)}">
<%-- 3뎁스가 active면 부모(2뎁스, 1뎁스)도 전부 펼쳐줘야 함 --%>
<c:set var="hasActiveChild" value="true" />
<c:set var="activeSubMenuId" value="${subMenu.menuId}" scope="request" />
<c:set var="activeThirdMenuId" value="${thirdMenu.menuId}" scope="request" />
</c:if>
</c:forEach>
</c:if>
</c:if>
</c:forEach>
</c:if> </c:if>
</c:forEach> </c:if>
</ul> </c:forEach>
</c:if> </c:if>
</li>
</c:if>
</c:forEach>
</c:if>
</ul>
<%-- 1뎁스 메뉴 렌더링 --%>
<li class="nav-item" data-menu-id="${menu.menuId}" data-url-pattern="${menuUrlPattern}">
<a href="<c:url value='${empty menuUrl ? "#" : menuUrl}' />"
class="nav-link has-icon ${not empty menu.children ? 'treeview-toggle' : ''} ${isMenuActive || hasActiveChild ? 'active show' : ''}">
<c:if test="${not empty menu.menuIcon}">
<i data-feather="${menu.menuIcon}"></i>
</c:if>
${menu.menuNm}
</a>
<%-- 2뎁스 & 3뎁스 메뉴 렌더링 --%>
<c:if test="${not empty menu.children}">
<ul class="nav" style="${isMenuActive || hasActiveChild ? '' : ''}">
<c:forEach var="subMenu" items="${menu.children}">
<c:if test="${subMenu.useYn eq 'Y' and subMenu.viewYn eq 'Y'}">
<%-- 2뎁스 URL --%>
<c:set var="subMenuUrl" value="${not empty subMenu.menuUrl ? xssUtil.unescape(subMenu.menuUrl) : '#'}" />
<c:set var="subMenuUrlPattern" value="${not empty subMenu.urlPattern ? xssUtil.unescape(subMenu.urlPattern) : ''}" />
<c:set var="isSubMenuActive" value="${activeSubMenuId eq subMenu.menuId}" />
<li class="nav-item ${isSubMenuActive ? 'show' : ''}"
data-menu-id="${subMenu.menuId}"
data-url-pattern="${subMenuUrlPattern}">
<a href="<c:url value='${subMenuUrl}' />"
class="nav-link ${not empty subMenu.children ? 'treeview-toggle' : ''} ${isSubMenuActive ? 'active' : ''}">
${subMenu.menuNm}
</a>
<%-- 3뎁스 메뉴 렌더링 --%>
<c:if test="${not empty subMenu.children}">
<ul class="nav nav-3depth" style="${isSubMenuActive ? '' : ''}">
<c:forEach var="thirdMenu" items="${subMenu.children}">
<c:if test="${thirdMenu.useYn eq 'Y' and thirdMenu.viewYn eq 'Y'}">
<c:set var="thirdMenuUrl" value="${not empty thirdMenu.menuUrl ? xssUtil.unescape(thirdMenu.menuUrl) : '#'}" />
<c:set var="thirdMenuUrlPattern" value="${not empty thirdMenu.urlPattern ? xssUtil.unescape(thirdMenu.urlPattern) : ''}" />
<c:set var="isThirdMenuActive" value="${activeThirdMenuId eq thirdMenu.menuId}" />
<li class="nav-item ${isThirdMenuActive ? 'show active' : ''}"
data-menu-id="${thirdMenu.menuId}"
data-url-pattern="${thirdMenuUrlPattern}">
<a href="<c:url value='${thirdMenuUrl}' />" class="nav-link">
${thirdMenu.menuNm}
</a>
</li>
</c:if>
</c:forEach>
</ul>
</c:if>
<%-- /3뎁스 --%>
</li>
</c:if>
</c:forEach>
</ul>
</c:if>
</li>
</c:if>
</c:forEach>
</c:if>
</ul>
</div> </div>
<!-- /Sidebar body --> <!-- /Sidebar body -->

Loading…
Cancel
Save