사용자로그 작업 완료.
parent
9696cac273
commit
94a7a9c305
|
|
@ -76,6 +76,7 @@ public class BaseController {
|
|||
session.setAttribute("menuList", menuMgtService.selectAccessMenuListWhereUserSeq(loginUser.getUserSeq()));
|
||||
Map<String, List<CodeMgt>> codeMap = codeMgtService.getCommonCode();
|
||||
session.setAttribute("commonCode", codeMap);
|
||||
session.setAttribute("userOrgan", loginUser.getOgCd());
|
||||
String belongValue = "";
|
||||
belongValue += searchCodeValue(loginUser.getOgCd(), codeMap.get("OG"));
|
||||
belongValue += searchCodeValue(loginUser.getOfcCd(), codeMap.get("OFC"));
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ public class FaispInterceptor implements HandlerInterceptor {
|
|||
log.setRequestMethod(request.getMethod());
|
||||
log.setSearchParams(request.getQueryString());
|
||||
log.setHandlerDescription(((HandlerMethod) handler).toString());
|
||||
log.setUserOrgan((String) request.getSession().getAttribute("userOrgan"));
|
||||
log.setUserBelong((String) request.getSession().getAttribute("belongValue"));
|
||||
userLogService.saveRequestLog(log);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import org.springframework.security.web.SecurityFilterChain;
|
|||
import org.springframework.security.web.access.AccessDeniedHandler;
|
||||
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
|
||||
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
||||
import org.springframework.security.web.authentication.logout.LogoutHandler;
|
||||
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
|
||||
import org.springframework.security.web.savedrequest.HttpSessionRequestCache;
|
||||
import org.springframework.security.web.savedrequest.SavedRequest;
|
||||
|
|
@ -72,6 +73,7 @@ public class SecurityConfig{
|
|||
inoutLog.setInoutType("IOT001");
|
||||
inoutLog.setContactIp(Utils.getClientIP(request));
|
||||
inoutLog.setSessionId(request.getSession().getId());
|
||||
inoutLog.setUserOrgan((String) request.getSession().getAttribute("userOrgan"));
|
||||
inoutLog.setUserBelong((String) request.getSession().getAttribute("belongValue"));
|
||||
userLogService.saveInoutLog(inoutLog);
|
||||
|
||||
|
|
@ -95,16 +97,15 @@ public class SecurityConfig{
|
|||
};
|
||||
}
|
||||
@Bean
|
||||
public LogoutSuccessHandler logoutSuccessHandler(){
|
||||
public LogoutHandler logoutHandler(){
|
||||
return (request, response, authentication) -> {
|
||||
UserInoutLog inoutLog = new UserInoutLog();
|
||||
inoutLog.setInoutType("IOT003");
|
||||
inoutLog.setContactIp(Utils.getClientIP(request));
|
||||
inoutLog.setSessionId(request.getSession().getId());
|
||||
inoutLog.setUserOrgan((String) request.getSession().getAttribute("userOrgan"));
|
||||
inoutLog.setUserBelong((String) request.getSession().getAttribute("belongValue"));
|
||||
userLogService.saveInoutLog(inoutLog);
|
||||
|
||||
new DefaultRedirectStrategy().sendRedirect(request, response, "/");
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -152,7 +153,8 @@ public class SecurityConfig{
|
|||
.successHandler(loginSuccessHandler()) // 로그인 성공시 동작 수행.
|
||||
.and() // 로그아웃 설정
|
||||
.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")) // 로그아웃 시 URL 재정의
|
||||
.logoutSuccessHandler(logoutSuccessHandler()) // 로그아웃 성공시 동작 수행.
|
||||
.addLogoutHandler(logoutHandler()) // 로그아웃 전 실행.
|
||||
.logoutSuccessUrl("/login")
|
||||
.invalidateHttpSession(true) // HTTP Session 초기화
|
||||
.deleteCookies("JSESSIONID") // 특정 쿠키 제거
|
||||
.and() // 403 예외처리 핸들링
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
|
|||
.addPathPatterns("/**")
|
||||
.excludePathPatterns(
|
||||
"/",
|
||||
"/login",
|
||||
"/favicon.ico",
|
||||
"/editorFileDisplay",
|
||||
"/fileDisplay",
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ public class CodeMgtService{
|
|||
}
|
||||
|
||||
public Map<String, List<CodeMgt>> getCommonCode() {
|
||||
//return codeMgtRepository.findByUseChkOrderByItemCdAsc("T");
|
||||
List<CodeCatg> categoryList = codeCatgRepository.findAll();
|
||||
List<CodeMgt> codeList = codeMgtRepository.findByOrderByItemCdAsc();
|
||||
Map<String, List<CodeMgt>> categoryMap = new HashMap<>();
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@ public class UserInoutLog extends BaseModel {
|
|||
private String contactIp;
|
||||
@Column(name = "session_id")
|
||||
private String sessionId;
|
||||
@Column(name = "user_organ")
|
||||
private String userOrgan;
|
||||
@Column(name = "user_belong")
|
||||
private String userBelong;
|
||||
@Column(name = "wrt_dt")
|
||||
|
|
|
|||
|
|
@ -31,20 +31,11 @@ public class UserRequestLog extends BaseModel {
|
|||
private String searchParams;
|
||||
@Column(name = "handler_description")
|
||||
private String handlerDescription;
|
||||
@Column(name = "user_organ")
|
||||
private String userOrgan;
|
||||
@Column(name = "user_belong")
|
||||
private String userBelong;
|
||||
@Column(name = "wrt_dt")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime wrtDt;
|
||||
|
||||
@Transient
|
||||
private String organValue;
|
||||
@Transient
|
||||
private String officeValue;
|
||||
@Transient
|
||||
private String titleValue;
|
||||
@Transient
|
||||
private String userNm;
|
||||
@Transient
|
||||
private String userId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -316,7 +316,28 @@
|
|||
</select>
|
||||
<sql id="selectRequestLogListWhere">
|
||||
<where>
|
||||
|
||||
user_organ in
|
||||
<foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")">
|
||||
#{organCd}
|
||||
</foreach>
|
||||
<if test='contactIp != null and contactIp != ""'>
|
||||
and contact_ip like '%'||#{contactIp}||'%'
|
||||
</if>
|
||||
<if test='requestUrl != null and requestUrl != ""'>
|
||||
and request_url like '%'||#{requestUrl}||'%'
|
||||
</if>
|
||||
<if test='requestMethod != null and requestMethod != ""'>
|
||||
and request_method = #{requestMethod}
|
||||
</if>
|
||||
<if test='userBelong != null and userBelong != ""'>
|
||||
and user_belong like '%'||#{userBelong}||'%'
|
||||
</if>
|
||||
<if test='startDate != null and startDate != ""'>
|
||||
and wrt_dt >= #{startDate}::date
|
||||
</if>
|
||||
<if test='endDate != null and endDate != ""'>
|
||||
and wrt_dt <= #{endDate}::date+1
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
<select id="selectRequestLogList" resultType="UserRequestLog" parameterType="UserRequestLog">
|
||||
|
|
@ -333,7 +354,25 @@
|
|||
</select>
|
||||
<sql id="selectInoutLogListWhere">
|
||||
<where>
|
||||
|
||||
user_organ in
|
||||
<foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")">
|
||||
#{organCd}
|
||||
</foreach>
|
||||
<if test='contactIp != null and contactIp != ""'>
|
||||
and contact_ip like '%'||#{contactIp}||'%'
|
||||
</if>
|
||||
<if test='inoutType != null and inoutType != ""'>
|
||||
and inout_type = #{inoutType}
|
||||
</if>
|
||||
<if test='userBelong != null and userBelong != ""'>
|
||||
and user_belong like '%'||#{userBelong}||'%'
|
||||
</if>
|
||||
<if test='startDate != null and startDate != ""'>
|
||||
and wrt_dt >= #{startDate}::date
|
||||
</if>
|
||||
<if test='endDate != null and endDate != ""'>
|
||||
and wrt_dt <= #{endDate}::date+1
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
<select id="selectInoutLogList" resultType="UserInoutLog" parameterType="UserInoutLog">
|
||||
|
|
|
|||
|
|
@ -1,4 +1,10 @@
|
|||
|
||||
$(function(){
|
||||
$("#dateSelectorDiv").datepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
language: "ko",
|
||||
autoclose: true
|
||||
});
|
||||
})
|
||||
$(document).on('click', '#requestTab', function (){
|
||||
location.href='/userMgt/userLog/requestLog';
|
||||
})
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<div class="tab-pane fade show active" id="accessTabPanel" role="tabpanel" aria-labelledby="accessTab" tabindex="0">
|
||||
<table class="table table-hover text-center" id="accessEditTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>대분류</th>
|
||||
<th>중분류</th>
|
||||
<th>소분류</th>
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
<div class="tab-pane fade" id="approvalTabPanel" role="tabpanel" aria-labelledby="approvalTab" tabindex="0">
|
||||
<table class="table table-hover text-center" id="approvalEditTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>대분류</th>
|
||||
<th>중분류</th>
|
||||
<th>소분류</th>
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>소속</th>
|
||||
<th>부서</th>
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-striped" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>분류코드</th>
|
||||
<th>분류명</th>
|
||||
|
|
@ -51,7 +51,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-striped" id="itemTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>하위코드</th>
|
||||
<th>값</th>
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th><input type="checkbox" class="allChk"></th>
|
||||
<th>대분류</th>
|
||||
<th>중분류</th>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
</th:block>
|
||||
<div layout:fragment="content">
|
||||
<main class="pt-3">
|
||||
<h4>외사경찰 관리</h4>
|
||||
<h4>사용자 로그</h4>
|
||||
<ul class="nav nav-tabs" id="boardTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="requestTab" data-bs-toggle="tab" type="button" role="tab">메뉴로그</button>
|
||||
|
|
@ -28,39 +28,37 @@
|
|||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="row justify-content-end">
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="ogCd">
|
||||
<option value="">관서 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
<div class="col-6">
|
||||
<div class="row">
|
||||
<div class="col-10">
|
||||
<div class="row justify-content-end pb-1">
|
||||
<div class="col-4">
|
||||
<select class="form-select form-select-sm" name="inoutType">
|
||||
<option value="">결과</option>
|
||||
<th:block th:each="code:${session.commonCode.get('IOT')}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${searchParams.inoutType eq code.itemCd}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<input type="text" class="form-control form-control-sm" name="contactIp" placeholder="아이피" th:value="${searchParams.contactIp}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<input type="text" class="form-control form-control-sm" name="userBelong" placeholder="사용자" th:value="${searchParams.userBelong}">
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
|
||||
<input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}">
|
||||
<input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="ofcCd">
|
||||
<option value="">부서 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('OFC')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
<div class="col-2 d-grid gap-2">
|
||||
<input type="submit" class="btn btn-sm btn-primary mx-2" id="searchBtn" value="검색">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="titleCd">
|
||||
<option value="">계급 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('JT')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm" name="userNm" placeholder="사용자명">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm" name="userId" placeholder="사용자 아이디">
|
||||
</div>
|
||||
<input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -72,7 +70,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>접속아이피</th>
|
||||
<th>결과</th>
|
||||
<th>사용자</th>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
</th:block>
|
||||
<div layout:fragment="content">
|
||||
<main class="pt-3">
|
||||
<h4>외사경찰 관리</h4>
|
||||
<h4>사용자 로그</h4>
|
||||
<ul class="nav nav-tabs" id="boardTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="requestTab" data-bs-toggle="tab" type="button" role="tab">메뉴로그</button>
|
||||
|
|
@ -28,39 +28,39 @@
|
|||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="col-6">
|
||||
<div class="row justify-content-end">
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="ogCd">
|
||||
<option value="">관서 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
<div class="col-10">
|
||||
<div class="row pb-1">
|
||||
<div class="col-4">
|
||||
<input type="text" class="form-control form-control-sm" name="contactIp" placeholder="아이피" th:value="${searchParams.contactIp}">
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<input type="text" class="form-control form-control-sm" name="requestUrl" placeholder="URL" th:value="${searchParams.requestUrl}">
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<select class="form-select form-select-sm" name="requestMethod">
|
||||
<option value="">접근방식</option>
|
||||
<option value="GET" th:selected="${searchParams.requestMethod eq 'GET'}">GET</option>
|
||||
<option value="POST" th:selected="${searchParams.requestMethod eq 'POST'}">POST</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<input type="text" class="form-control form-control-sm" name="userBelong" placeholder="사용자" th:value="${searchParams.userBelong}">
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<div class="input-group w-auto input-daterange" id="dateSelectorDiv">
|
||||
<input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" readonly th:value="${searchParams.startDate}">
|
||||
<input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" readonly th:value="${searchParams.endDate}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="ofcCd">
|
||||
<option value="">부서 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('OFC')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
<div class="col-2 d-grid gap-2">
|
||||
<input type="submit" class="btn btn-sm btn-primary mx-2" id="searchBtn" value="검색">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="titleCd">
|
||||
<option value="">계급 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('JT')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm" name="userNm" placeholder="사용자명">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm" name="userId" placeholder="사용자 아이디">
|
||||
</div>
|
||||
<input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>접속아이피</th>
|
||||
<th>요청 URL</th>
|
||||
<th>접근 방식</th>
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th> <input type="checkbox" class="allChk"></th>
|
||||
<th>소속</th>
|
||||
<th>부서</th>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<div class="col-12" style="overflow: hidden; overflow-x: scroll">
|
||||
<table class="table table-striped table-bordered" style="max-width: none; width: auto;" id="cdsTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th rowspan="4">연번</th>
|
||||
<th rowspan="4">사건번호</th>
|
||||
<th rowspan="4">나포일시</th>
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
<div class="col-12">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>대분류</th>
|
||||
<th>중분류</th>
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th><input type="checkbox" class="allChk"></th>
|
||||
<th>소속</th>
|
||||
<th>부서</th>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th> <input type="checkbox" id="chk-all" class="equInfoCheckBox"></th>
|
||||
<th>연번</th>
|
||||
<th>소속</th>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-striped" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>작성자</th>
|
||||
<th>등록일</th>
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th> <input type="checkbox" id="chk-all" class="equInfoCheckBox"></th>
|
||||
<th>소속</th>
|
||||
<th>세부소속</th>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>분류</th>
|
||||
<th>세부분류</th>
|
||||
<th>관서</th>
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th rowspan="2">분류</th>
|
||||
<th rowspan="2">세부분류</th>
|
||||
<th rowspan="2">총계</th>
|
||||
|
|
@ -49,7 +49,7 @@
|
|||
<th colspan="5">동해</th>
|
||||
<th colspan="3">제주</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>청</th>
|
||||
<th>인천서</th>
|
||||
<th>평택서</th>
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th> <input type="checkbox" id="chk-all" class="useCheckBox"></th>
|
||||
<th>연번</th>
|
||||
<th>경찰서</th>
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th> <input type="checkbox" id="chk-all" class="useCheckBox"></th>
|
||||
<th>연번</th>
|
||||
<th>경찰서</th>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-striped" id="categoryTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>작성자</th>
|
||||
<th>등록일</th>
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th th:if="${searchParams.status ne 'receive'}">상태</th>
|
||||
<th>분류</th>
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@
|
|||
<div class="row overflow-auto">
|
||||
<table class="table table-hover table-bordered ws-nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>나포일시</th>
|
||||
<th>나포해점</th>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>항로</th>
|
||||
<th>사업자<br>(한국대리점)</th>
|
||||
<th>선명</th>
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@
|
|||
<input type="hidden" id="selectedVerNo">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th rowspan="3">해경서</th>
|
||||
<th rowspan="3">육경서</th>
|
||||
<th rowspan="3">터미널명</th>
|
||||
|
|
@ -92,7 +92,7 @@
|
|||
<th rowspan="3">공공요금</th>
|
||||
<th rowspan="3">최종수정일</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th:block th:if="${not #strings.isEmpty(total)}">
|
||||
<th th:text="|상주 ${total.mp_sangju}개소 ${total.mp_sangju_total}명|"></th>
|
||||
<th th:text="|비상주 ${total.mp_bsangju}개소 ${total.mp_bsangju_total}명|"></th>
|
||||
|
|
@ -110,7 +110,7 @@
|
|||
<th>폐쇄 0개소 0명</th>
|
||||
</th:block>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>근무방법</th>
|
||||
<th>명</th>
|
||||
<th>비고</th>
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
<input type="hidden" id="selectedVerNo">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th rowspan="2">외사<br>터미널명</th>
|
||||
<th rowspan="2">작성자</th>
|
||||
<th rowspan="2">일시</th>
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
<th rowspan="2">첨부파일</th>
|
||||
<th rowspan="2">최근수정일</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>사건처리</th>
|
||||
<th>범죄첩보제공</th>
|
||||
<th>SRI</th>
|
||||
|
|
|
|||
|
|
@ -28,12 +28,12 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th rowspan="2">구분</th>
|
||||
<th rowspan="2">경찰서</th>
|
||||
<th colspan="3">취약등급</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>A급</th>
|
||||
<th>B급</th>
|
||||
<th>C급</th>
|
||||
|
|
|
|||
|
|
@ -117,9 +117,9 @@
|
|||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<table class="table table-hover">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>분야1</th>
|
||||
<th>분야2</th>
|
||||
|
|
@ -141,7 +141,7 @@
|
|||
</th:block>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tbody class="table-group-divider">
|
||||
<tr class="affairTr" th:each="affair:${affairList}">
|
||||
<input type="hidden" class="affairKey" th:value="${affair.affairKey}">
|
||||
<td><input type="checkbox" class="trChkBox"></td>
|
||||
|
|
|
|||
|
|
@ -83,9 +83,9 @@
|
|||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<table class="table table-hover">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>제목</th>
|
||||
<th>시행일자</th>
|
||||
|
|
@ -97,7 +97,7 @@
|
|||
<th>상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tbody class="table-group-divider">
|
||||
<tr class="planTr" th:each="plan:${planList}">
|
||||
<input type="hidden" class="planKey" th:value="${plan.planKey}">
|
||||
<td><input type="checkbox" class="trChkBox"></td>
|
||||
|
|
|
|||
|
|
@ -78,9 +78,9 @@
|
|||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<table class="table table-hover">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>제목</th>
|
||||
<th>사업기간</th>
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
<th>상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tbody class="table-group-divider">
|
||||
<tr class="resultTr" th:each="result:${resultList}">
|
||||
<input type="hidden" class="resultKey" th:value="${result.resultKey}">
|
||||
<td><input type="checkbox" class="trChkBox"></td>
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
<div class="col-12">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>순번</th>
|
||||
<th>계급</th>
|
||||
<th>성명</th>
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@
|
|||
<div class="col-12">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>순번</th>
|
||||
<th>계급</th>
|
||||
<th>성명</th>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
<div class="card-body">
|
||||
<table class="table table-hover table-bordered" id="psTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th rowspan="3">관서</th>
|
||||
<th>정원</th>
|
||||
<th>현원</th>
|
||||
|
|
@ -44,7 +44,7 @@
|
|||
</th:block>
|
||||
<th rowspan="3">수정일</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>계</th>
|
||||
<th>계</th>
|
||||
<th>계</th>
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
<th>현원</th>
|
||||
</th:block>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th th:text="${statusSummary.sumMax}"></th>
|
||||
<th th:text="${statusSummary.sumNow}"></th>
|
||||
<th th:text="${statusSummary.sumNow-statusSummary.sumMax}" th:classappend="${(statusSummary.sumNow-statusSummary.sumMax)>=0?'text-primary':'text-danger'}"></th>
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
<div class="col-12">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>순번</th>
|
||||
<th>계급</th>
|
||||
<th>성명</th>
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>제목</th>
|
||||
<th>관서</th>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>제목</th>
|
||||
<th>관서</th>
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>제목</th>
|
||||
<th>관서</th>
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th>제목</th>
|
||||
<th>관서</th>
|
||||
|
|
|
|||
|
|
@ -72,9 +72,9 @@
|
|||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<table class="table table-hover">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th></th>
|
||||
<th th:if="${searchParams.status ne 'receive'}">상태</th>
|
||||
<th>보고서<br>번호</th>
|
||||
|
|
@ -87,7 +87,7 @@
|
|||
<th>작성일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tbody class="table-group-divider">
|
||||
<tr class="faSriTr" th:each="sri:${SriList}">
|
||||
<th:block>
|
||||
<input type="hidden" class="faSriKey" th:value="${sri.faSriKey}">
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@
|
|||
<input type="hidden" id="selectedVerNo">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>연번</th>
|
||||
<th>관서명</th>
|
||||
<th>언어</th>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<div class="row">
|
||||
<table class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th colspan="2">어권별 구분</th>
|
||||
<th>총계</th>
|
||||
<th>중부청</th>
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
<th>동해청</th>
|
||||
<th>제주청</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th>연번</th>
|
||||
<th>계</th>
|
||||
<th:block th:if="${not #strings.isEmpty(total)}">
|
||||
|
|
|
|||
|
|
@ -191,9 +191,9 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-hover">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="table-secondary">
|
||||
<th><input type="checkbox" class="allChk"></th>
|
||||
<th>순번</th>
|
||||
<th>대분류</th>
|
||||
|
|
|
|||
Loading…
Reference in New Issue