diff --git a/src/main/java/kcc/com/cmm/util/StringUtil2.java b/src/main/java/kcc/com/cmm/util/StringUtil2.java index 6e0257fc..b5a0e1fb 100644 --- a/src/main/java/kcc/com/cmm/util/StringUtil2.java +++ b/src/main/java/kcc/com/cmm/util/StringUtil2.java @@ -577,5 +577,17 @@ public final class StringUtil2 { int fieldLength = 10; } + + public static String extractLogMethodNm( + String p_url + ) throws Exception{ + String[] s_arr = p_url.split("/"); + + if (s_arr.length>=3) { + return s_arr[s_arr.length-3]+"/"+s_arr[s_arr.length-2]+"/"+s_arr[s_arr.length-1]; + } + + return p_url; + } } diff --git a/src/main/java/kcc/kccadr/sendMgr/web/SendMgrSMSController.java b/src/main/java/kcc/kccadr/sendMgr/web/SendMgrSMSController.java index fab63278..b60a110f 100644 --- a/src/main/java/kcc/kccadr/sendMgr/web/SendMgrSMSController.java +++ b/src/main/java/kcc/kccadr/sendMgr/web/SendMgrSMSController.java @@ -85,4 +85,10 @@ public class SendMgrSMSController { return modelAndView; } + + @RequestMapping(value = "/kccadr/sendMgr/smsSendMgr_tabulator.do") + public String smsSendMgrPage_tabulator() { + + return "/kccadr/sendMgr/smsSendMgr_tabulator"; + } } diff --git a/src/main/java/kcc/kccadr/stts/service/SttsVO.java b/src/main/java/kcc/kccadr/stts/service/SttsVO.java index 98b09142..7ec2d802 100644 --- a/src/main/java/kcc/kccadr/stts/service/SttsVO.java +++ b/src/main/java/kcc/kccadr/stts/service/SttsVO.java @@ -33,7 +33,8 @@ public class SttsVO extends ComDefaultVO implements Serializable { private String rcptTotCnt = ""; // 접수 총계 private String succCnt = ""; // 성립 건수(기일성립+조정권고성립) private String jikSuccCnt = ""; // 직권결정 성립 건수 - private String failCnt = ""; // 불성립 건수(모든 불성립) + private String failCnt = ""; // 불성립 건수(불성립 건수(직권 불성립 제외한 불성립)) + private String failJikCnt = ""; // 불성립 건수(직권 불성립) private String cancleCnt = ""; // 취하 건수 private String succPer = ""; // 성립율 private String finalTotCnt = ""; // 종결총계 @@ -272,6 +273,14 @@ public class SttsVO extends ComDefaultVO implements Serializable { public void setReqOlCd(String reqOlCd) { this.reqOlCd = reqOlCd; } + public String getFailJikCnt() { + return failJikCnt; + } + public void setFailJikCnt(String failJikCnt) { + this.failJikCnt = failJikCnt; + } + + diff --git a/src/main/java/kcc/let/sym/log/clg/service/EgovLoginLogService.java b/src/main/java/kcc/let/sym/log/clg/service/EgovLoginLogService.java index 15ae0fea..913becfc 100644 --- a/src/main/java/kcc/let/sym/log/clg/service/EgovLoginLogService.java +++ b/src/main/java/kcc/let/sym/log/clg/service/EgovLoginLogService.java @@ -29,6 +29,8 @@ public interface EgovLoginLogService { * @param LoginLog */ public void logInsertLoginLog(LoginLog loinLog) throws Exception; + + public int logInsertLoginLogNewStep1(LoginLog loinLog) throws Exception; /** * 접속로그를 조회한다. @@ -55,6 +57,10 @@ public interface EgovLoginLogService { public void logInsertAdminLoginLog(LoginLog loginLog) throws Exception; public List selectAmdinLog(LoginLog loginLog) throws Exception; + + public List selectNAmdinLog(LoginLog loginLog) throws Exception; + + public List selectNWebLog(LoginLog loginLog) throws Exception; public int selectAmdinLogTotCnt(LoginLog loginLog) throws Exception; diff --git a/src/main/java/kcc/let/sym/log/clg/service/LoginLog.java b/src/main/java/kcc/let/sym/log/clg/service/LoginLog.java index 970a401a..75bd38cf 100644 --- a/src/main/java/kcc/let/sym/log/clg/service/LoginLog.java +++ b/src/main/java/kcc/let/sym/log/clg/service/LoginLog.java @@ -146,6 +146,12 @@ public class LoginLog extends ComDefaultVO implements Serializable { private String totalLogCnt; + private String useYn; //통계 사용여부 + + private String sortNum; //통계 순서 + + private String methodCd; //통계 순서 + private List logDataList = new ArrayList() ; @@ -480,4 +486,27 @@ public class LoginLog extends ComDefaultVO implements Serializable { this.totalLogCnt = totalLogCnt; } + public String getUseYn() { + return useYn; + } + + public void setUseYn(String useYn) { + this.useYn = useYn; + } + + public String getSortNum() { + return sortNum; + } + + public void setSortNum(String sortNum) { + this.sortNum = sortNum; + } + + public String getMethodCd() { + return methodCd; + } + + public void setMethodCd(String methodCd) { + this.methodCd = methodCd; + } } diff --git a/src/main/java/kcc/let/sym/log/clg/service/impl/EgovLoginLogServiceImpl.java b/src/main/java/kcc/let/sym/log/clg/service/impl/EgovLoginLogServiceImpl.java index e8f27080..4e63b417 100644 --- a/src/main/java/kcc/let/sym/log/clg/service/impl/EgovLoginLogServiceImpl.java +++ b/src/main/java/kcc/let/sym/log/clg/service/impl/EgovLoginLogServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import kcc.com.cmm.util.StringUtil2; import kcc.let.sym.log.clg.service.EgovLoginLogService; import kcc.let.sym.log.clg.service.LoginLog; @@ -66,6 +67,59 @@ public class EgovLoginLogServiceImpl extends EgovAbstractServiceImpl implements loginLogDAO.logInsertWebLoginLog(loinLog); //사용자 페이지의 로그만 남김(메뉴에 등록된 페이지만 남김) } + public int logInsertLoginLogNewStep1(LoginLog loinLog) throws Exception { + // TODO Auto-generated method stub + String logId = egovLoginLogIdGnrService.getNextStringId(); + loinLog.setLogId(logId); + + //method name 설정 + //LETTNLOGINLOG_BAK 테이블을 위해서 추가됨 + //String[] s_arr = loinLog.getUrl().split("/"); + + //loinLog.setMethodNm(s_arr[s_arr.length-3]+"/"+s_arr[s_arr.length-2]+"/"+s_arr[s_arr.length-1]); + + loinLog.setMethodNm(StringUtil2.extractLogMethodNm(loinLog.getUrl())); + + + System.out.println("loinLog.getMethodNm()"); + System.out.println(loinLog.getMethodNm()); + + + //loginLogDAO.logInsertLoginLog(loinLog); + int i=loginLogDAO.logInsertWebLoginLogNewStep1(loinLog); //사용자 페이지의 로그만 남김(메뉴에 등록된 페이지만 남김) + + +// System.out.println("=====i====="); +// System.out.println(i); +// System.out.println(i); + + try { + if (loinLog.getUrl().length()>400) { + loinLog.setUrl(loinLog.getUrl().substring(0,399)); + } + + if (i<=0) { + //LETTNADMINMETHOD 테이블에 추가하기 + loginLogDAO.logInsertWebLoginLogNewStep3(loinLog); + + //다시 남기기 + i=loginLogDAO.logInsertWebLoginLogNewStep1(loinLog); //사용자 페이지의 로그만 남김(메뉴에 등록된 페이지만 남김) + + //lettnloginlog 에 남기기 + i=loginLogDAO.logInsertWebLoginLogNewStep2(loinLog); //사용자 페이지의 로그만 남김(메뉴에 등록된 페이지만 남김) + } + + }catch(Exception ex) { + ex.printStackTrace(); + } + + System.out.println("=====i====="); + System.out.println(i); + System.out.println(i); + + return i; + } + /** * 접속로그를 조회한다. * @@ -122,6 +176,16 @@ public class EgovLoginLogServiceImpl extends EgovAbstractServiceImpl implements return loginLogDAO.selectAmdinLog(loginLog); } + @Override + public List selectNAmdinLog(LoginLog loginLog) throws Exception { + return loginLogDAO.selectNAmdinLog(loginLog); + } + + @Override + public List selectNWebLog(LoginLog loginLog) throws Exception { + return loginLogDAO.selectNWebLog(loginLog); + } + @Override public int selectAmdinLogTotCnt(LoginLog loginLog) throws Exception { return loginLogDAO.selectAmdinLogTotCnt(loginLog); diff --git a/src/main/java/kcc/let/sym/log/clg/service/impl/LoginLogDAO.java b/src/main/java/kcc/let/sym/log/clg/service/impl/LoginLogDAO.java index abaeb7ef..25376638 100644 --- a/src/main/java/kcc/let/sym/log/clg/service/impl/LoginLogDAO.java +++ b/src/main/java/kcc/let/sym/log/clg/service/impl/LoginLogDAO.java @@ -102,6 +102,14 @@ public class LoginLogDAO extends EgovAbstractDAO { return (List)list("LoginLogDAO.selectAmdinLog", loginLog); } + public List selectNAmdinLog(LoginLog loginLog) throws Exception{ + return (List)list("LoginLogDAO.selectNAmdinLog", loginLog); + } + + public List selectNWebLog(LoginLog loginLog) throws Exception{ + return (List)list("LoginLogDAO.selectNWebLog", loginLog); + } + public int selectAmdinLogTotCnt(LoginLog loginLog) throws Exception{ return (Integer)select("LoginLogDAO.selectAmdinLogTotCnt", loginLog); } @@ -135,6 +143,19 @@ public class LoginLogDAO extends EgovAbstractDAO { insert("LoginLogDAO.logInsertWebLoginLog", loinLog); } + public int logInsertWebLoginLogNewStep1(LoginLog loinLog) throws Exception{ + return update("LoginLogDAO.logInsertWebLoginLogNewStep1", loinLog); + //return update("LoginLogDAO.logInsertWebLoginLogNewStep1_bak", loinLog); + } + + public int logInsertWebLoginLogNewStep2(LoginLog loinLog) throws Exception{ + return update("LoginLogDAO.logInsertWebLoginLogNewStep2", loinLog); + } + + public int logInsertWebLoginLogNewStep3(LoginLog loinLog) throws Exception{ + return update("LoginLogDAO.logInsertWebLoginLogNewStep3_bak", loinLog); + } + @SuppressWarnings("unchecked") public List selectWebLogList(LoginLog loginLog) throws Exception{ return (List)list("LoginLogDAO.selectWebLogList", loginLog); diff --git a/src/main/java/kcc/let/sym/log/clg/web/EgovLoginLogController.java b/src/main/java/kcc/let/sym/log/clg/web/EgovLoginLogController.java index 941dc86c..ce57e898 100644 --- a/src/main/java/kcc/let/sym/log/clg/web/EgovLoginLogController.java +++ b/src/main/java/kcc/let/sym/log/clg/web/EgovLoginLogController.java @@ -122,6 +122,84 @@ public class EgovLoginLogController { return "sym/log/clg/EgovLoginLogList"; } + /** + * 로그인 로그 목록 조회(관리자) + * + * @param loginLog + * @return sym/log/clg/EgovLoginLogList + * @throws Exception + */ + @RequestMapping(value = "/sym/log/clg/NSelectLoginLogList.do") + public String NSelectLoginLogList(@ModelAttribute("searchVO") LoginLog loginLog, @RequestParam Map commandMap ,ModelMap model) throws Exception { + + if(loginLog.getPageUnit() != 10) { + loginLog.setPageUnit(loginLog.getPageUnit()); + } + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(loginLog.getPageIndex()); + paginationInfo.setRecordCountPerPage(loginLog.getPageUnit()); + paginationInfo.setPageSize(loginLog.getPageSize()); + + loginLog.setFirstIndex(paginationInfo.getFirstRecordIndex()); + loginLog.setLastIndex(paginationInfo.getLastRecordIndex()); + loginLog.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + if("".equals(loginLog.getSearchSortCnd())){ //최초조회시 최신것 조회List + loginLog.setSearchSortCnd("b.CREAT_DT"); + loginLog.setSearchSortOrd("desc"); + } + List adminLogList = loginLogService.selectNAmdinLog(loginLog); + int adminLogListCnt = 0; + + if (adminLogList.size()>0) { + adminLogListCnt = adminLogList.get(0).getTotCnt(); + } + + paginationInfo.setTotalRecordCount(adminLogListCnt); + model.addAttribute("paginationInfo", paginationInfo); + model.addAttribute("adminLogList", adminLogList); + return "sym/log/clg/NSelectLoginLogList"; + } + + /** + * 로그인 로그 목록 조회(관리자) + * + * @param loginLog + * @return sym/log/clg/EgovLoginLogList + * @throws Exception + */ + @RequestMapping(value = "/sym/log/clg/NSelectWebLogList.do") + public String NSelectWebLogList(@ModelAttribute("searchVO") LoginLog loginLog, @RequestParam Map commandMap ,ModelMap model) throws Exception { + + if(loginLog.getPageUnit() != 10) { + loginLog.setPageUnit(loginLog.getPageUnit()); + } + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(loginLog.getPageIndex()); + paginationInfo.setRecordCountPerPage(loginLog.getPageUnit()); + paginationInfo.setPageSize(loginLog.getPageSize()); + + loginLog.setFirstIndex(paginationInfo.getFirstRecordIndex()); + loginLog.setLastIndex(paginationInfo.getLastRecordIndex()); + loginLog.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + if("".equals(loginLog.getSearchSortCnd())){ //최초조회시 최신것 조회List + loginLog.setSearchSortCnd("b.CREAT_DT"); + loginLog.setSearchSortOrd("desc"); + } + List adminLogList = loginLogService.selectNWebLog(loginLog); + int adminLogListCnt = 0; + + if (adminLogList.size()>0) { + adminLogListCnt = adminLogList.get(0).getTotCnt(); + } + + paginationInfo.setTotalRecordCount(adminLogListCnt); + model.addAttribute("paginationInfo", paginationInfo); + model.addAttribute("adminLogList", adminLogList); + return "sym/log/clg/NSelectWebLogList"; + } + /** * 로그인 로그 상세 조회 * @@ -245,11 +323,16 @@ public class EgovLoginLogController { * @throws Exception */ @RequestMapping(value = "/sym/log/clg/SelectLogMethodList.do") - public String selectLogMethodList(@ModelAttribute("searchVO") LoginLog loginLog, @RequestParam Map commandMap ,ModelMap model) throws Exception { - + public String selectLogMethodList( + @ModelAttribute("searchVO") LoginLog loginLog, + @RequestParam Map commandMap , + ModelMap model + ) throws Exception { + /* if(loginLog.getPageUnit() != 10) { loginLog.setPageUnit(loginLog.getPageUnit()); } + */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(loginLog.getPageIndex()); paginationInfo.setRecordCountPerPage(loginLog.getPageUnit()); diff --git a/src/main/java/kcc/let/sym/log/lgm/service/EgovSysLogAspect.java b/src/main/java/kcc/let/sym/log/lgm/service/EgovSysLogAspect.java index 3e12b984..66c04df3 100644 --- a/src/main/java/kcc/let/sym/log/lgm/service/EgovSysLogAspect.java +++ b/src/main/java/kcc/let/sym/log/lgm/service/EgovSysLogAspect.java @@ -435,6 +435,7 @@ public class EgovSysLogAspect { * @throws Exception */ public void logAdminSelect(JoinPoint joinPoint) throws Throwable { + System.out.println("logAdminSelect"); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(isAuthenticated.booleanValue()) { SysLog sysLog = new SysLog(); diff --git a/src/main/java/kcc/let/sym/log/lgm/service/impl/EgovSysLogServiceImpl.java b/src/main/java/kcc/let/sym/log/lgm/service/impl/EgovSysLogServiceImpl.java index 2aa99b3e..3576c35b 100644 --- a/src/main/java/kcc/let/sym/log/lgm/service/impl/EgovSysLogServiceImpl.java +++ b/src/main/java/kcc/let/sym/log/lgm/service/impl/EgovSysLogServiceImpl.java @@ -3,17 +3,18 @@ package kcc.let.sym.log.lgm.service.impl; import java.util.HashMap; import java.util.Map; +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; import egovframework.rte.fdl.idgnr.EgovIdGnrService; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import kcc.com.cmm.LoginVO; +import kcc.com.cmm.util.StringUtil2; import kcc.let.sym.log.lgm.service.EgovSysLogService; import kcc.let.sym.log.lgm.service.SysLog; -import javax.annotation.Resource; - -import org.springframework.stereotype.Service; - /** * 로그관리(시스템)를 위한 서비스 구현 클래스 * @author 공통서비스개발팀 이삼섭 @@ -100,6 +101,9 @@ public class EgovSysLogServiceImpl extends EgovAbstractServiceImpl implements return _map; } + /* + * 관리자 로그 정보 이므로, method_cd='A' 이어야만 한다. + * */ @Override public void logInsertAdminSysLog(SysLog sysLog) throws Exception { String requstId = egovAdminLogIdGnrService.getNextStringId(); @@ -108,7 +112,59 @@ public class EgovSysLogServiceImpl extends EgovAbstractServiceImpl implements if(null != loginVO){ sysLog.setSiteId(loginVO.getSiteId()); } - sysLogDAO.logInsertAdminSysLog(sysLog); + + //하기 내용으로 대체 - 2023-09-21 + //sysLogDAO.logInsertAdminSysLog(sysLog); + + //고유값으로 만들기 + sysLog.setMethodNm(StringUtil2.extractLogMethodNm(sysLog.getUrl())); + + //sysLogDAO.logInsertAdminSysLog(sysLog); + int i = sysLogDAO.logInsertAdminSysLogNewStep1(sysLog); + +// System.out.println("=====i====="); +// System.out.println(i); +// System.out.println(i); + + String[] s_arr = sysLog.getSrvcNm().split("[.]"); + sysLog.setTrgetMenuNm(s_arr[s_arr.length-1]); + +// System.out.println("=====i====="+sysLog.getTrgetMenuNm()); +// System.out.println("=====i====="+sysLog.getSrvcNm()); +// System.out.println("=====i====="+sysLog.getUrl()); +// System.out.println("=====i====="+sysLog.getPageUnit()); +// System.out.println("=====i====="+sysLog.getRqsterNm()); +// +// System.out.println("=====i====="+sysLog.getMethodNm()); + + + try { + //저장이 안되었으면 LETTNADMINMETHOD 테이블에 추가하고 다시 저장해보기 + if (i<=0) { + //LETTNADMINMETHOD 테이블에 추가하기 + i = sysLogDAO.logInsertAdminSysLogNewStep3(sysLog); + + //다시 로그 남기기 + i = sysLogDAO.logInsertAdminSysLogNewStep1(sysLog); + } + +// System.out.println("====re=i====="); +// System.out.println(i); +// System.out.println(i); + + //그래도 저장이 안되었으면 길이잘라서 log만 저장하기 + if (i<=0) { + if (sysLog.getUrl().length()>1000) sysLog.setUrl(sysLog.getUrl().substring(0,1000)); + + i = sysLogDAO.logInsertAdminSysLogNewStep2(sysLog); + +// System.out.println("=====i====="); +// System.out.println(i); +// System.out.println(i); + } + }catch(Exception ex) { + System.out.println(ex.getMessage()); + } } } diff --git a/src/main/java/kcc/let/sym/log/lgm/service/impl/SysLogDAO.java b/src/main/java/kcc/let/sym/log/lgm/service/impl/SysLogDAO.java index 8ee0c1b1..a685b4fa 100644 --- a/src/main/java/kcc/let/sym/log/lgm/service/impl/SysLogDAO.java +++ b/src/main/java/kcc/let/sym/log/lgm/service/impl/SysLogDAO.java @@ -2,11 +2,11 @@ package kcc.let.sym.log.lgm.service.impl; import java.util.List; +import org.springframework.stereotype.Repository; + import egovframework.rte.psl.dataaccess.EgovAbstractDAO; import kcc.let.sym.log.lgm.service.SysLog; -import org.springframework.stereotype.Repository; - /** * 로그관리(시스템)를 위한 데이터 접근 클래스 * @author 공통서비스개발팀 이삼섭 @@ -96,4 +96,20 @@ public class SysLogDAO extends EgovAbstractDAO { } + + public int logInsertAdminSysLogNewStep1(SysLog sysLog) throws Exception{ + return update("SysLogDAO.logInsertAdminSysLogNewStep1", sysLog); + //return update("SysLogDAO.logInsertAdminSysLogNewStep1_bak", sysLog); + + } + + public int logInsertAdminSysLogNewStep2(SysLog sysLog) throws Exception{ + return update("SysLogDAO.logInsertAdminSysLogNewStep2", sysLog); + + } + + public int logInsertAdminSysLogNewStep3(SysLog sysLog) throws Exception{ + return update("SysLogDAO.logInsertAdminSysLogNewStep3", sysLog); + + } } diff --git a/src/main/java/kcc/web/MainController.java b/src/main/java/kcc/web/MainController.java index d2c91ae0..3eaeb94b 100644 --- a/src/main/java/kcc/web/MainController.java +++ b/src/main/java/kcc/web/MainController.java @@ -735,7 +735,9 @@ public class MainController { }else { loginLog.setUrl(request.getRequestURI()); } - loginLogService.logInsertLoginLog(loginLog); + //loginLogService.logInsertLoginLog(loginLog); + + loginLogService.logInsertLoginLogNewStep1(loginLog); } //오늘 접속 / 최종접속 diff --git a/src/main/resources/egovframework/sqlmap/kccadr/stts/Stts_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/kccadr/stts/Stts_SQL_Mysql.xml index 7be58863..fc2fe272 100644 --- a/src/main/resources/egovframework/sqlmap/kccadr/stts/Stts_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/kccadr/stts/Stts_SQL_Mysql.xml @@ -168,68 +168,114 @@ diff --git a/src/main/resources/egovframework/sqlmap/let/sym/log/clg/EgovLoginLog_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/sym/log/clg/EgovLoginLog_SQL_Mysql.xml index 21a70b7c..2db991ad 100644 --- a/src/main/resources/egovframework/sqlmap/let/sym/log/clg/EgovLoginLog_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/sym/log/clg/EgovLoginLog_SQL_Mysql.xml @@ -227,7 +227,119 @@ , now()) + + + + + + - /* 임시.*NOT_SQL_LOG.* */ + /* 임시.*NOT_SQL_LOG.* selectLogMethodList */ SELECT COUNT(A.ADMOT_ID) OVER() AS totCnt, A.ADMOT_ID AS admotId, @@ -302,7 +414,10 @@ A.APPRO_NM AS approNm, A.PARAM AS param, A.CREAT_DT AS tempSortNum, - A.PRIVACY AS privacy + A.PRIVACY AS privacy, + A.USE_YN AS useYn, + A.SORT_NUM AS sortNum, + A.method_cd as dateType FROM LETTNADMINMETHOD A WHERE 1=1 @@ -360,6 +475,8 @@ , MENU_NM = #menuNm# , APPRO_NM = #approNm# , PRIVACY = #privacy# + , USE_YN = #useYn# + , sort_num = #sortNum# WHERE ADMOT_ID = #admotId# @@ -432,6 +549,124 @@ AND B.URL = #url# + + + /* 임시.*NOT_SQL_LOG.* */ + /* 2023-06-20일 저장확인을 위해 update 추가함*/ + /* LoginLogDAO.logInsertWebLoginLogNewStep1 */ + INSERT INTO LETTNLOGINLOG + ( LOG_ID + , CONECT_ID + , CONECT_IP + , USER_AT + , DEVICE_TYPE /**인테넛,모바일 */ + , PROGRM_FILE_NM + , MENU_NM + , URL + , CREAT_DT ) + + SELECT + #logId# + , #loginId# + , #loginIp# + , #userAt# /**A:관리자, U:홈페이지 */ + , #deviceType# + , method_nm + , menu_nm + , #url# + , NOW() + FROM LETTNADMINMETHOD + WHERE METHOD_NM = #methodNm# + LIMIT 1 + + + + + /* 임시.*NOT_SQL_LOG.* */ + /* 2023-06-20일 저장확인을 위해 update 추가함*/ + /* LoginLogDAO.logInsertWebLoginLogNewStep2 */ + INSERT INTO LETTNLOGINLOG + ( LOG_ID + , CONECT_ID + , CONECT_IP + , USER_AT + , DEVICE_TYPE /**인테넛,모바일 */ + , PROGRM_FILE_NM + , MENU_NO + , MENU_NM + , URL + , CREAT_DT ) + SELECT + #logId# + , #loginId# + , #loginIp# + , #userAt# /**A:관리자, U:홈페이지 */ + , #deviceType# + , 'PROGRM_FILE_NM' + , '999999999' + , 'MENU_NM' + , #url# + , NOW() + FROM DUAL + + + + + + + /* 임시.*NOT_SQL_LOG.* */ + /* 2023-06-20일 저장확인을 위해 update 추가함*/ + /* LoginLogDAO.logInsertWebLoginLogNewStep2 */ + INSERT INTO LETTNLOGINLOG_BAK + ( LOG_ID + , CONECT_ID + , CONECT_IP + , USER_AT + , DEVICE_TYPE /**인테넛,모바일 */ + , PROGRM_FILE_NM + , MENU_NO + , MENU_NM + , URL + , CREAT_DT ) + SELECT + #logId# + , #loginId# + , #loginIp# + , #userAt# /**A:관리자, U:홈페이지 */ + , #deviceType# + , 'PROGRM_FILE_NM' + , '999999999' + , 'MENU_NM' + , #url# + , NOW() + + + + + /* LoginLogDAO.logInsertWebLoginLogNewStep3_bak */ + INSERT INTO lettnadminmethod ( + admot_id, + method_nm, + param, + creat_dt, + menu_nm, + appro_nm, + privacy, + method_cd /* A or U */ + ) + + SELECT + NVL(MAX(TO_NUMBER(REPLACE(admot_id, 'ADMOTID_', ''))) + 1, 1) + , #methodNm# + , 'N' + , NOW() + , #methodNm# + , #url# + , 'N' + , 'U' + FROM LETTNADMINMETHOD + +
-
+
diff --git a/src/main/webapp/WEB-INF/jsp/kccadr/sendMgr/smsSendMgr_tabulator.jsp b/src/main/webapp/WEB-INF/jsp/kccadr/sendMgr/smsSendMgr_tabulator.jsp new file mode 100644 index 00000000..92ddde94 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/kccadr/sendMgr/smsSendMgr_tabulator.jsp @@ -0,0 +1,212 @@ + +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<% + /** + * @Class Name : smsSendMgr.do + * @Description : SMS 발송 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2023.09.13 원영현 최초 생성 + * @author 원영현 + * @since 2023.09.13 + * @version 1.0 + * @see + * + */ +%> + + + + + + + + + + + + + + + +
+ + +
+
+ +
+

SMS 발송

+
    +
  • +
  • +

    발송 관리

    +
  • +
  • + SMS 발송 +
  • +
+
+ + +
+ +
+ + + + + + + + + + + + + + + +
발송내용 + +
수신번호 +
+ + +
+
+
+
+
+ + + +
+
+
+
+ +
+
+ +
+
+
+ +
diff --git a/src/main/webapp/WEB-INF/jsp/kccadr/stts/sttsYrlyPrcs.jsp b/src/main/webapp/WEB-INF/jsp/kccadr/stts/sttsYrlyPrcs.jsp index f9bc8613..8c922987 100644 --- a/src/main/webapp/WEB-INF/jsp/kccadr/stts/sttsYrlyPrcs.jsp +++ b/src/main/webapp/WEB-INF/jsp/kccadr/stts/sttsYrlyPrcs.jsp @@ -116,6 +116,8 @@ $(document).ready(function() { + + @@ -125,7 +127,7 @@ $(document).ready(function() { 연도 접수 - 종결 + 종결 진행 @@ -133,9 +135,10 @@ $(document).ready(function() { 신규 계 - 성립 - 직권성립 - 불성립 + 성립(합의) + 직권성립(직권) + 불성립(합의) + 불성립(직권) 취하 @@ -156,6 +159,7 @@ $(document).ready(function() {

+

diff --git a/src/main/webapp/WEB-INF/jsp/sym/log/clg/NSelectLoginLogList.jsp b/src/main/webapp/WEB-INF/jsp/sym/log/clg/NSelectLoginLogList.jsp new file mode 100644 index 00000000..14f0b288 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/sym/log/clg/NSelectLoginLogList.jsp @@ -0,0 +1,209 @@ +<%-- + Class Name : EgovLoginLogList.jsp + Description : 로그인 로그 정보목록 화면 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2009.03.11 이삼섭 최초 생성 + 2011.08.31 JJY 경량환경 버전 생성 + + author : 공통서비스 개발팀 이삼섭 + since : 2009.03.11 +--%> +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + + +로그인 로그 목록 + + + +
+ + + " /> + " /> + + +
+
+ + +
+

관리자로그 관리

+
    +
  • +
  • +

    로그관리

    +
  • +
  • 관리자로그 관리
  • +
+
+ + +
+ +
+
+ +
+
+ + + +
+ + + + + +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + +<%-- --%> + + + + + + + + + + + +
번호 메뉴명 접근구분 접속ID 접속IP 접속URL 접속일자
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
+
+ + + + +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/sym/log/clg/NSelectWebLogList.jsp b/src/main/webapp/WEB-INF/jsp/sym/log/clg/NSelectWebLogList.jsp new file mode 100644 index 00000000..4f19e7f5 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/sym/log/clg/NSelectWebLogList.jsp @@ -0,0 +1,208 @@ +<%-- + Class Name : EgovLoginLogList.jsp + Description : 로그인 로그 정보목록 화면 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2009.03.11 이삼섭 최초 생성 + 2011.08.31 JJY 경량환경 버전 생성 + + author : 공통서비스 개발팀 이삼섭 + since : 2009.03.11 +--%> +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + + +로그인 로그 목록 + + + +
+ + + " /> + " /> + +
+
+ + +
+

사용자로그 관리

+
    +
  • +
  • +

    로그관리

    +
  • +
  • 사용자로그 관리
  • +
+
+ + +
+ +
+
+ +
+
+ + + +
+ + + + +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + +<%-- --%> + + + + + + + + + + + + +
번호 메뉴명 메소드 접속ID 접속IP 접속URL 접속일자
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
+
+ + + + +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/sym/log/clg/SelectLogMethodList.jsp b/src/main/webapp/WEB-INF/jsp/sym/log/clg/SelectLogMethodList.jsp index ad346c62..f1649af6 100644 --- a/src/main/webapp/WEB-INF/jsp/sym/log/clg/SelectLogMethodList.jsp +++ b/src/main/webapp/WEB-INF/jsp/sym/log/clg/SelectLogMethodList.jsp @@ -1,5 +1,5 @@ <%-- - Class Name : EgovLoginLogList.jsp + Class Name : SelectLogMethodList.jsp Description : 로그인 로그 정보목록 화면 Modification Information @@ -124,7 +124,6 @@ function fnCheckAll(){ } -로그인 로그 목록 @@ -137,37 +136,67 @@ function fnCheckAll(){ -
-
-
-

관리자로그설정관리

-

관리자 로그 설정을 관리할 수 있습니다.

-
-
-
- - - -
-
-

건수 :

-
- - - +
+
+ +
+

관리자로그설정관리

+
    +
  • +
  • +

    운영관리

    +
  • +
  • 관리자로그설정관리
  • +
-
-
- - + + +
+ +
+
+ +
+
+ + + +
+

+ 총 건수 : + + + + 건 +

+
+ +
+
+ + + +
+
+ @@ -176,11 +205,12 @@ function fnCheckAll(){ - - - - - + + + + + + @@ -188,55 +218,65 @@ function fnCheckAll(){ - + + + + - - + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - -
번호 메뉴명 메소드명 파라미터 개인정보여부 등록일자 게시판관리사용자구분통계사용여부통계순서관리
- - - - - - - - - - -
+ + + + + + + + +
-
-
- - -
- - -
+ + + +
+ + + + +
    - -
-
-
- + + +
+ + +
+
diff --git a/src/main/webapp/WEB-INF/jsp/sym/log/clg/ViewLogMethod.jsp b/src/main/webapp/WEB-INF/jsp/sym/log/clg/ViewLogMethod.jsp index 137c8f02..90e9d7c1 100644 --- a/src/main/webapp/WEB-INF/jsp/sym/log/clg/ViewLogMethod.jsp +++ b/src/main/webapp/WEB-INF/jsp/sym/log/clg/ViewLogMethod.jsp @@ -1,42 +1,133 @@ <%-- - Class Name : FmsFileModify.jsp - Description : 첨부파일 수정 페이지 + Class Name : SelectLogMethodList.jsp + Description : 로그인 로그 정보목록 화면 Modification Information - + 수정일 수정자 수정내용 ------- -------- --------------------------- - 2009.09.16 장동한 최초 생성 - - author : 공통서비스 개발팀 장동한 - since : 2009.09.16 - - Copyright (C) 2009 by MOPAS All right reserved. + 2009.03.11 이삼섭 최초 생성 + 2011.08.31 JJY 경량환경 버전 생성 + + author : 공통서비스 개발팀 이삼섭 + since : 2009.03.11 --%> -<%@ page contentType="text/html; charset=utf-8"%> +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> -<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> - - - - + -팝업창관리 관리 - - - + - + -
-
-
-

관리자로그설정관리

-

관리자 로그 설정을 관리 합니다.

-
-
-
-

*는 필수입력 항목입니다.

-
- + + " /> + "/> + + +
+
+ +
+

관리자로그설정관리상세

+ +
    +
  • +
  • +

    운영관리

    +
  • +
  • 관리자로그설정관리
  • +
  • 상세화면
  • +
+
+ + +
+ + + + + +
+ + +
@@ -128,35 +238,65 @@ function fn_delete() { - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - @@ -173,8 +313,49 @@ function fn_delete() { - + + + + + + + + + + + + + + +
+
    + +
+
+
+ + + + + + + + + " /> + "/> + + + - + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp b/src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp index 20c582d0..2c989798 100644 --- a/src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp @@ -265,18 +265,18 @@ function fn_egov_inqire_notice(bbsId, nttId) {
  • - - 문의게시판 + + 1:1 문의
  • diff --git a/src/main/webapp/tabulator/dist/css/tabulator_simple.min.css b/src/main/webapp/tabulator/dist/css/tabulator_simple.min.css index e102cf43..2ac751f1 100644 --- a/src/main/webapp/tabulator/dist/css/tabulator_simple.min.css +++ b/src/main/webapp/tabulator/dist/css/tabulator_simple.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;border:1px solid #999;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #ddd;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px}.tabulator-row,.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fff}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{border:none;background-color:#fff}.tabulator .tabulator-header .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #999}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator-row{border-bottom:1px solid #ddd}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row.tabulator-group span{color:#666}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#666} +/* .tabulator{position:relative;border:1px solid #999;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #ddd;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px}.tabulator-row,.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fff}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{border:none;background-color:#fff}.tabulator .tabulator-header .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #999}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator-row{border-bottom:1px solid #ddd}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row.tabulator-group span{color:#666}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#666} */ /*# sourceMappingURL=tabulator_simple.min.css.map */ \ No newline at end of file
    메뉴명 - + +
    메소드명 - -
    파라미터 - -
    *기본값은 N 입니다. -
    *N이 아닌 값을 사용할 경우는 url에 'logParam=파라미터값' 형식을 추가해야 적용됩니다. +
    +
    기능명 - + + +
    파라미터 + +
    *기본값은 N 입니다.     *N이 아닌 값을 사용할 경우는 url에 'logParam=파라미터값' 형식을 추가해야 적용됩니다.
    privacy + +
    *기본값은 N 입니다.     N / Y *개인정보 포함 여부를 표시합니다. +
    사용자구분${loginLog.dateType}     -     U(사용자) / A(관리자) +
    통계노출여부 + +
    통계순서 + +
    등록일자 - + + ${loginLog.creatDt} +<%-- --%>