Merge branch 'dev' into krc/receipt_waiting

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

@ -72,6 +72,7 @@
<script type="text/javascript">
let GRID = null;
let INIT_POPUP = null;
let SEARCH_COND = {};
@ -104,7 +105,6 @@
eventListener: () => {
let self = this;
// 검색 버튼 클릭 이벤트
$('#search_btn').on('click', function() {
// 등록일 from~to 유효성 검사
@ -137,7 +137,7 @@
// 페이지를 1로 리셋
$("#page").val(1);
// 그리드 데이터 리로드
self.grid.instance.readData(1);
TuiGrid.instance.readData(1);
});
// 검색어 입력 필드에서 엔터키 이벤트 처리
@ -149,10 +149,13 @@
});
// perPage 변경 이벤트 추가
$('#perPageSelect').on('change', function() {
let perPage = parseInt($(this).val(), 10);
// Grid의 perPage 설정 변경 및 데이터 리로드
self.grid.instance.setPerPage(perPage);
$('#perPageSelect').on('change', () => {
const pagination = TuiGrid.instance.getPagination();
if (!pagination) return;
pagination.setItemsPerPage($('#perPageSelect').val());
pagination.reset(TuiGrid.instance.getRowCount());
pagination.movePageTo(1);
});
}
@ -162,88 +165,20 @@
/** tui-grid Set */
const initGrid = () => {
const gridColumns = [
{
header: '등록구분',
name: 'mmDlgb',
sortable: true,
width: 50,
},
{
header: '목록번호',
name: 'asBbsNo',
sortable: true,
width: 70,
},
{
header: '신고자',
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
}
{header: '등록구분', name: 'mmDlgb', sortable: true, width: 50,},
{header: '목록번호', name: 'asBbsNo', sortable: true, width: 70,},
{header: '신고자', 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 = {
api: {

@ -11,93 +11,139 @@
<%-- 활성화된 메뉴 정보 저장할 변수 --%>
<c:set var="activeMenuId" value="" scope="request" />
<c:set var="activeSubMenuId" value="" scope="request" />
<%-- 콘솔 디버깅 용도 (개발 환경에서만 사용) --%>
<!-- Current URL: ${currentUrl} -->
<c:set var="activeThirdMenuId" value="" scope="request" />
<!-- Sidebar body -->
<div class="sidebar-body">
<ul class="nav treeview mb-4" data-accordion>
<c:if test="${not empty sessionScope.sessionVO.menus}">
<c:forEach var="menu" items="${sessionScope.sessionVO.menus}">
<c:if test="${menu.useYn eq 'Y' and menu.viewYn eq 'Y'}">
<%-- 메뉴 상태 변수 초기화 (unescape 처리) --%>
<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="isMenuActive" 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>
<c:if test="${not empty sessionScope.sessionVO.menus}">
<c:forEach var="menu" items="${sessionScope.sessionVO.menus}">
<c:if test="${menu.useYn eq 'Y' and menu.viewYn eq 'Y'}">
<%-- 메뉴 상태 변수 초기화 (unescape 처리) --%>
<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="isMenuActive" value="false" />
<c:set var="hasActiveChild" value="false" />
<%-- 서브메뉴 처리 및 활성화 상태 확인 --%>
<c:if test="${not empty menu.children}">
<c:forEach var="subMenu" items="${menu.children}">
<c:if test="${subMenu.useYn eq 'Y' and subMenu.viewYn eq 'Y'}">
<%-- 서브메뉴 URL unescape 처리 --%>
<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="false" />
<%-- 서브메뉴 활성화 상태 확인 (디버깅 정보 추가) --%>
<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>
<%-- 1뎁스 메뉴 활성화 상태 확인 --%>
<c:if test="${not empty menuUrlPattern && menuUrl != '#'}">
<c:set var="patterns" value="${fn:split(menuUrlPattern, ',')}" />
<c:forEach var="pattern" items="${patterns}">
<c:set var="trimmedPattern" value="${fn:trim(pattern)}" />
<c:if test="${path:match(trimmedPattern, currentUrl)}">
<c:set var="isMenuActive" value="true" />
<c:set var="activeMenuId" value="${menu.menuId}" scope="request" />
</c:if>
</c:if>
</c:forEach>
</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>
</c:forEach>
</c:if>
<%-- 서브메뉴 렌더링 --%>
<%-- 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'}">
<%-- 서브메뉴 URL unescape 처리 --%>
<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}" />
<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="false" />
<%-- 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}">
<a href="<c:url value='${subMenuUrl}' />" class="nav-link">${subMenu.menuNm}</a>
</li>
<c:if test="${not empty thirdMenuUrlPattern && thirdMenuUrl != '#'}">
<c:set var="thirdPatterns" value="${fn:split(thirdMenuUrlPattern, ',')}" />
<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:forEach>
</ul>
</c:if>
</c:forEach>
</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>
<!-- /Sidebar body -->
Loading…
Cancel
Save