|
|
|
@ -11,7 +11,6 @@
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<input type="text" id="bbs_no">
|
|
|
|
|
|
|
|
<div class="contants_body">
|
|
|
|
<div class="contants_body">
|
|
|
|
<div class="gs_b_top">
|
|
|
|
<div class="gs_b_top">
|
|
|
|
<ul class="lef">
|
|
|
|
<ul class="lef">
|
|
|
|
@ -22,6 +21,7 @@
|
|
|
|
<option value="title" <c:if test="${paramVO.searchCondition eq 'title'}">selected</c:if>>접수번호</option>
|
|
|
|
<option value="title" <c:if test="${paramVO.searchCondition eq 'title'}">selected</c:if>>접수번호</option>
|
|
|
|
<option value="contents" <c:if test="${paramVO.searchCondition eq 'contents'}">selected</c:if>>처리자명</option>
|
|
|
|
<option value="contents" <c:if test="${paramVO.searchCondition eq 'contents'}">selected</c:if>>처리자명</option>
|
|
|
|
<option value="writer" <c:if test="${paramVO.searchCondition eq 'writer'}">selected</c:if>>전화번호</option>
|
|
|
|
<option value="writer" <c:if test="${paramVO.searchCondition eq 'writer'}">selected</c:if>>전화번호</option>
|
|
|
|
|
|
|
|
<input type="hidden" id="tabState" name="tabState" value=""/>
|
|
|
|
</select>
|
|
|
|
</select>
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
<li class="th">검색어</li>
|
|
|
|
<li class="th">검색어</li>
|
|
|
|
@ -33,7 +33,6 @@
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<li>
|
|
|
|
<button type="button" id="search_btn" class="newbtnss bg1">검색</button>
|
|
|
|
<button type="button" id="search_btn" class="newbtnss bg1">검색</button>
|
|
|
|
<button type="button" id="btnAdd" class="newbtnss bg1">자료등록</button>
|
|
|
|
|
|
|
|
<button type="button" id="btnExcel" class="newbtnss bg1">엑셀다운로드</button>
|
|
|
|
<button type="button" id="btnExcel" class="newbtnss bg1">엑셀다운로드</button>
|
|
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
@ -42,13 +41,78 @@
|
|
|
|
<li>
|
|
|
|
<li>
|
|
|
|
<select id="perPageSelect" class="input">
|
|
|
|
<select id="perPageSelect" class="input">
|
|
|
|
<option value="10" <c:if test="${param.perPage eq '10'}">selected</c:if>>페이지당 10</option>
|
|
|
|
<option value="10" <c:if test="${param.perPage eq '10'}">selected</c:if>>페이지당 10</option>
|
|
|
|
<option value="20" <c:if test="${param.perPage eq '20'}">selected</c:if>>페이지당 20</option>
|
|
|
|
<option value="30" <c:if test="${empty param.perPage or param.perPage eq '30'}">selected</c:if>>페이지당 30</option>
|
|
|
|
<option value="30" <c:if test="${param.perPage eq '30'}">selected</c:if>>페이지당 30</option>
|
|
|
|
<option value="100" <c:if test="${param.perPage eq '100'}">selected</c:if>>페이지당 100</option>
|
|
|
|
</select>
|
|
|
|
</select>
|
|
|
|
<span class="page_number"><span id="currentPage"></span><span class="bar">/</span><sapn id="totalPages"></sapn> Pages</span>
|
|
|
|
<span class="page_number"><span id="currentPage"></span><span class="bar">/</span><sapn id="totalPages"></sapn> Pages</span>
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="state-tab-wrap">
|
|
|
|
|
|
|
|
<ul class="state-tabs">
|
|
|
|
|
|
|
|
<li class="on" data-state="">전체</li>
|
|
|
|
|
|
|
|
<li data-state="FIN_BU" value="6">답변완료(부과)</li>
|
|
|
|
|
|
|
|
<li data-state="FIN_GE" value="7">답변완료(계도)</li>
|
|
|
|
|
|
|
|
<li data-state="FIN_ME" value="8">답변완료(미부과)</li>
|
|
|
|
|
|
|
|
<li data-state="FIN_ADD" value="9">답변완료(수기)</li>
|
|
|
|
|
|
|
|
<li data-state="FAIL" value="5">답변실패</li>
|
|
|
|
|
|
|
|
<li data-state="INCOMP" value="fail">답변미대상</li>
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
|
|
|
.state-tab-wrap {
|
|
|
|
|
|
|
|
margin: 10px 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.state-tabs {
|
|
|
|
|
|
|
|
list-style: none;
|
|
|
|
|
|
|
|
padding: 0;
|
|
|
|
|
|
|
|
margin: 0;
|
|
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.state-tabs li {
|
|
|
|
|
|
|
|
padding: 6px 14px;
|
|
|
|
|
|
|
|
border: 1px solid #ccc;
|
|
|
|
|
|
|
|
border-bottom: none;
|
|
|
|
|
|
|
|
background: #f5f5f5;
|
|
|
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
|
|
margin-right: 4px;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.state-tabs li.on {
|
|
|
|
|
|
|
|
background: #ffffff;
|
|
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
|
|
border-bottom: 1px solid #ffffff;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.state-area {
|
|
|
|
|
|
|
|
margin-top: 10px;
|
|
|
|
|
|
|
|
padding: 10px 0;
|
|
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
gap: 10px;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.state-label {
|
|
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
|
|
margin-right: 5px;
|
|
|
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.state-input {
|
|
|
|
|
|
|
|
width: 120px;
|
|
|
|
|
|
|
|
height: 28px;
|
|
|
|
|
|
|
|
padding: 4px;
|
|
|
|
|
|
|
|
border: 1px solid #ccc;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.state-area button {
|
|
|
|
|
|
|
|
height: 32px;
|
|
|
|
|
|
|
|
padding: 0 12px;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
</style>
|
|
|
|
<div class="gs_booking">
|
|
|
|
<div class="gs_booking">
|
|
|
|
<div class="row">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-sm-12">
|
|
|
|
<div class="col-sm-12">
|
|
|
|
@ -60,429 +124,324 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="gs_booking">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="state-area">
|
|
|
|
|
|
|
|
<label class="state-label">새처리상태값</label>
|
|
|
|
|
|
|
|
<input type="text" id="newStateValue" class="state-input">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<button type="button" id="btnAllChange" class="newbtnss bg1">전체 답변상태변경</button>
|
|
|
|
|
|
|
|
<button type="button" id="btnOneChange" class="newbtnss bg1">1개 답변상태변경</button>
|
|
|
|
|
|
|
|
<button type="button" id="btncdmake" class="newbtnss bg1">표지정보조회 CD 만들기</button>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="status-right">
|
|
|
|
|
|
|
|
<span id="statusSummary">
|
|
|
|
|
|
|
|
초기 0, 대기 1, 대상(부과) 2, 대상(계도) 3, 대상(서손) 4, 실패 5,
|
|
|
|
|
|
|
|
완료(부과) 6, 완료(계도) 7, 완료(서손) 8, 완료(수기) 9, 미대상 A, 미대상(서손) B
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- /Main body -->
|
|
|
|
<!-- /Main body -->
|
|
|
|
<script type="text/javascript">
|
|
|
|
<script type="text/javascript">
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 게시판 목록 관리 모듈
|
|
|
|
|
|
|
|
* 게시판 목록을 조회하고 관리하는 기능을 제공합니다.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function(window, $) {
|
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var SEARCH_COND = {};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 검색정보 셋팅
|
|
|
|
|
|
|
|
var setSearchCond = function() {
|
|
|
|
|
|
|
|
var searchCondition = $.trim(nvl($("#searchCondition").val(), ""));
|
|
|
|
|
|
|
|
var searchKeyword = $.trim(nvl($("#searchKeyword").val(), ""));
|
|
|
|
|
|
|
|
var searchUseYn = $.trim(nvl($("#searchUseYn").val(), ""));
|
|
|
|
|
|
|
|
var searchStartDt = $.trim(nvl($("#searchStartDt").val(), ""));
|
|
|
|
|
|
|
|
var searchEndDt = $.trim(nvl($("#searchEndDt").val(), ""));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SEARCH_COND.searchCondition = searchCondition;
|
|
|
|
|
|
|
|
SEARCH_COND.searchKeyword = searchKeyword;
|
|
|
|
|
|
|
|
SEARCH_COND.searchUseYn = searchUseYn;
|
|
|
|
|
|
|
|
SEARCH_COND.searchStartDt = searchStartDt;
|
|
|
|
|
|
|
|
SEARCH_COND.searchEndDt = searchEndDt;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
let INIT_POPUP = null;
|
|
|
|
* 게시판 목록 관리 네임스페이스
|
|
|
|
let SEARCH_COND = {};
|
|
|
|
*/
|
|
|
|
let GRID = null;
|
|
|
|
var NoticeList = {
|
|
|
|
|
|
|
|
/**
|
|
|
|
// 검색조건 세팅
|
|
|
|
* 그리드 관련 객체
|
|
|
|
let setSearchCond = function () {
|
|
|
|
*/
|
|
|
|
let searchCondition = $.trim(nvl($("#searchCondition").val(), ""));
|
|
|
|
grid: {
|
|
|
|
let searchKeyword = $.trim(nvl($("#searchKeyword").val(), ""));
|
|
|
|
/**
|
|
|
|
let searchUseYn = $.trim(nvl($("#searchUseYn").val(), ""));
|
|
|
|
* 그리드 인스턴스
|
|
|
|
let searchStartDt = $.trim(nvl($("#searchStartDt").val(), ""));
|
|
|
|
*/
|
|
|
|
let searchEndDt = $.trim(nvl($("#searchEndDt").val(), ""));
|
|
|
|
instance: null,
|
|
|
|
let tabState = $.trim(nvl($("#tabState").val(), ""));
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
SEARCH_COND.searchCondition = searchCondition;
|
|
|
|
* 그리드 설정 초기화
|
|
|
|
SEARCH_COND.searchKeyword = searchKeyword;
|
|
|
|
* @returns {Object} 그리드 설정 객체
|
|
|
|
SEARCH_COND.searchUseYn = searchUseYn;
|
|
|
|
*/
|
|
|
|
SEARCH_COND.searchStartDt = searchStartDt;
|
|
|
|
|
|
|
|
SEARCH_COND.searchEndDt = searchEndDt;
|
|
|
|
initConfig: function() {
|
|
|
|
SEARCH_COND.tabState = tabState;
|
|
|
|
// 데이터 소스 설정
|
|
|
|
};
|
|
|
|
var dataSource = this.createDataSource();
|
|
|
|
|
|
|
|
|
|
|
|
const fnBiz = {
|
|
|
|
// 현재 선택된 perPage 값 가져오기
|
|
|
|
|
|
|
|
var perPage = parseInt($('#perPageSelect').val() || 10, 10);
|
|
|
|
init: () => {
|
|
|
|
|
|
|
|
initGrid();
|
|
|
|
// 그리드 설정 객체 생성
|
|
|
|
},
|
|
|
|
var gridConfig = new XitTuiGridConfig();
|
|
|
|
|
|
|
|
|
|
|
|
eventListener: () => {
|
|
|
|
// 기본 설정
|
|
|
|
|
|
|
|
gridConfig.setOptDataSource(dataSource); // 데이터소스 연결
|
|
|
|
// 엑셀 다운로드
|
|
|
|
gridConfig.setOptGridId('grid'); // 그리드를 출력할 Element ID
|
|
|
|
$('#btnExcel').on('click', function () {
|
|
|
|
gridConfig.setOptGridHeight(390); // 그리드 높이(단위: px)
|
|
|
|
const params = $.param({
|
|
|
|
gridConfig.setOptRowHeight(30); // 그리드 행 높이(단위: px)
|
|
|
|
searchCondition: $('#searchCondition').val(),
|
|
|
|
gridConfig.setOptRowHeaderType('checkbox'); // 행 첫번째 셀 타입(rowNum: 순번, checkbox: 체크박스, '': 출력 안함)
|
|
|
|
searchKeyword: $('#searchKeyword').val(),
|
|
|
|
|
|
|
|
searchStartDt: $('#searchStartDt').val(),
|
|
|
|
// 페이징 옵션 설정
|
|
|
|
searchEndDt: $('#searchEndDt').val()
|
|
|
|
gridConfig.setOptPageOptions({
|
|
|
|
});
|
|
|
|
useClient: false, // 클라이언트 페이징 여부(false: 서버 페이징)
|
|
|
|
|
|
|
|
perPage: perPage // 페이지당 표시 건수
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
gridConfig.setOptUseClientSort(false); // 서버사이드 정렬 false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 컬럼 정보 설정
|
|
|
|
|
|
|
|
gridConfig.setOptColumns([
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asMmcode',
|
|
|
|
|
|
|
|
name: 'asMmcode',
|
|
|
|
|
|
|
|
width: 50,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asSggcode',
|
|
|
|
|
|
|
|
name: 'asSggcode',
|
|
|
|
|
|
|
|
width: 70,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asIngb',
|
|
|
|
|
|
|
|
name: 'asIngb',
|
|
|
|
|
|
|
|
width: 100,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asJsdate',
|
|
|
|
|
|
|
|
name: 'asJsdate',
|
|
|
|
|
|
|
|
width: 100,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asJsno',
|
|
|
|
|
|
|
|
name: 'asJsno',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asJsnoM',
|
|
|
|
|
|
|
|
name: 'asJsnoM',
|
|
|
|
|
|
|
|
width: 70,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asBbsNo',
|
|
|
|
|
|
|
|
name: 'asBbsNo',
|
|
|
|
|
|
|
|
width: 70,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asLimitDt',
|
|
|
|
|
|
|
|
name: 'asLimitDt',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asUser',
|
|
|
|
|
|
|
|
name: 'asUser',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asTel',
|
|
|
|
|
|
|
|
name: 'asTel',
|
|
|
|
|
|
|
|
width: 50,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asCell',
|
|
|
|
|
|
|
|
name: 'asCell',
|
|
|
|
|
|
|
|
width: 250,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asEmail',
|
|
|
|
|
|
|
|
name: 'asEmail',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asState',
|
|
|
|
|
|
|
|
name: 'asState',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asPostCd',
|
|
|
|
|
|
|
|
name: 'asPostCd',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asPostDt',
|
|
|
|
|
|
|
|
name: 'asPostDt',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asStateDt',
|
|
|
|
|
|
|
|
name: 'asStateDt',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asText',
|
|
|
|
|
|
|
|
name: 'asText',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asReuser',
|
|
|
|
|
|
|
|
name: 'asReuser',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asInline',
|
|
|
|
|
|
|
|
name: 'asInline',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asSysGubunC',
|
|
|
|
|
|
|
|
name: 'asSysGubunC',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asPetiAncCodeV',
|
|
|
|
|
|
|
|
name: 'asPetiAncCodeV',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
header: 'asPetiNoC',
|
|
|
|
|
|
|
|
name: 'asPetiNoC',
|
|
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
|
|
align: 'center'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return gridConfig;
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 데이터 소스 생성
|
|
|
|
|
|
|
|
* @returns {Object} 데이터 소스 객체
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
createDataSource: function() {
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
|
|
|
api: {
|
|
|
|
|
|
|
|
readData: {
|
|
|
|
|
|
|
|
url: '<c:url value="/minwon/dayanswer/dayanswer-select.ajax"/>',
|
|
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
|
|
contentType: 'application/x-www-form-urlencoded',
|
|
|
|
|
|
|
|
processData: true
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
initialRequest: false,
|
|
|
|
|
|
|
|
serializer: function (params) {
|
|
|
|
|
|
|
|
setSearchCond();
|
|
|
|
|
|
|
|
SEARCH_COND.perPage = params.perPage;
|
|
|
|
|
|
|
|
SEARCH_COND.page = params.page;
|
|
|
|
|
|
|
|
return $.param(SEARCH_COND);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 그리드 인스턴스 생성
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
create: function() {
|
|
|
|
|
|
|
|
var gridConfig = this.initConfig();
|
|
|
|
|
|
|
|
var Grid = tui.Grid;
|
|
|
|
|
|
|
|
this.instance = gridConfig.instance(Grid);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 그리드 테마 설정
|
|
|
|
|
|
|
|
Grid.applyTheme('striped');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 그리드 이벤트 설정
|
|
|
|
|
|
|
|
this.gridBindEvents();
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 그리드 이벤트 바인딩
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
gridBindEvents: function() {
|
|
|
|
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 요청 성공 시 총 건수 표시
|
|
|
|
|
|
|
|
this.instance.on('successResponse', function(ev) {
|
|
|
|
|
|
|
|
var responseObj = JSON.parse(ev.xhr.response);
|
|
|
|
|
|
|
|
//$('.totCnt').text(responseObj.data.pagination.totalCount);
|
|
|
|
|
|
|
|
$("#currentPage").text(responseObj.data.pagination.page);
|
|
|
|
|
|
|
|
$("#totalPages").text(responseObj.data.pagination.totalPages);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.instance.on('dblclick', function (ev) {
|
|
|
|
|
|
|
|
if (ev.rowKey === undefined) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var rowData = self.instance.getRow(ev.rowKey);
|
|
|
|
|
|
|
|
if (!rowData) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var asMmcode = rowData.asMmcode;
|
|
|
|
|
|
|
|
console.log("더블클릭 asMmcode =", asMmcode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!asMmcode) {
|
|
|
|
|
|
|
|
alert("선택한 행에 asMmcode 값이 없습니다.");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var popUrl = '<c:url value="/minwon/dayanswer/dayanswertotalPop.do"/>'
|
|
|
|
|
|
|
|
+ '?asMmcode=' + encodeURIComponent(asMmcode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
console.log("팝업 URL =", popUrl);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var popTitle = "상세정보";
|
|
|
|
|
|
|
|
var popOption = "width=1100,height=700,resizable=yes,scrollbars=yes,location=no,top=100,left=100";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
window.open(popUrl, popTitle, popOption);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
$('#btnAdd').on('click', function() {
|
|
|
|
|
|
|
|
const popUrl = '${pageContext.request.contextPath}/minwon/dayanswer/dayanswerregister.do';
|
|
|
|
|
|
|
|
const popTitle = '자료 등록';
|
|
|
|
|
|
|
|
const popOption = 'width=700,height=600,resizable=yes,scrollbars=yes';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
window.open(popUrl, popTitle, popOption);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const url = '${pageContext.request.contextPath}/minwon/dayanswer/dayanswer-excel.do?' + params;
|
|
|
|
|
|
|
|
window.location.href = url;
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 전체 상태 변경
|
|
|
|
|
|
|
|
$('#btnAllChange').on('click', function () {
|
|
|
|
|
|
|
|
const newState = $.trim($('#newStateValue').val());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!GRID) {
|
|
|
|
|
|
|
|
alert('그리드가 아직 초기화되지 않았습니다.');
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
const checkedRowKeys = GRID.getCheckedRowKeys();
|
|
|
|
* 이벤트 핸들러 설정
|
|
|
|
if (checkedRowKeys.length > 0) {
|
|
|
|
*/
|
|
|
|
alert('체크된 행이 있습니다.\n전체 답변상태변경은 체크를 모두 해제한 상태에서만 가능합니다.\n' +
|
|
|
|
eventBindEvents: function(e) {
|
|
|
|
'한 개만 수정하려면 [1개 답변상태변경] 버튼을 사용해주세요.');
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!newState) {
|
|
|
|
|
|
|
|
alert('새 처리상태값을 입력하세요.');
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var self = this;
|
|
|
|
if (!confirm('현재 조회된 모든 건의 처리상태를 [' + newState + '] 로 변경하시겠습니까?')) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$('#btnExcel').on('click', function() {
|
|
|
|
$.ajax({
|
|
|
|
// 지금 화면의 검색조건 그대로 가져오기
|
|
|
|
url: '<c:url value="/minwon/dayanswer/update-all-state.ajax"/>',
|
|
|
|
const params = $.param({
|
|
|
|
type: 'POST',
|
|
|
|
|
|
|
|
data: {
|
|
|
|
|
|
|
|
newState: newState,
|
|
|
|
searchCondition: $('#searchCondition').val(),
|
|
|
|
searchCondition: $('#searchCondition').val(),
|
|
|
|
searchKeyword: $('#searchKeyword').val(),
|
|
|
|
searchKeyword: $('#searchKeyword').val(),
|
|
|
|
searchStartDt: $('#searchStartDt').val(),
|
|
|
|
searchStartDt: $('#searchStartDt').val(),
|
|
|
|
searchEndDt: $('#searchEndDt').val()
|
|
|
|
searchEndDt: $('#searchEndDt').val()
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
success: function () {
|
|
|
|
|
|
|
|
alert('전체 답변상태가 변경되었습니다.');
|
|
|
|
|
|
|
|
const currentPage = GRID.getPagination()._currentPage || 1;
|
|
|
|
|
|
|
|
GRID.readData(currentPage);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
error: function () {
|
|
|
|
|
|
|
|
alert('상태 변경 중 오류가 발생했습니다.');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
const url = '${pageContext.request.contextPath}/minwon/dayanswer/dayanswer-excel.do?' + params;
|
|
|
|
// 한 건 상태 변경
|
|
|
|
console.log("엑셀 다운로드 URL:", url);
|
|
|
|
$('#btnOneChange').on('click', function () {
|
|
|
|
|
|
|
|
const newState = $.trim($('#newStateValue').val());
|
|
|
|
|
|
|
|
|
|
|
|
window.location.href = url;
|
|
|
|
if (!newState) {
|
|
|
|
});
|
|
|
|
alert('새 처리상태값을 입력하세요.');
|
|
|
|
// 검색 버튼 클릭 이벤트
|
|
|
|
return;
|
|
|
|
$('#search_btn').on('click', function() {
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!GRID) {
|
|
|
|
|
|
|
|
alert('그리드가 아직 초기화되지 않았습니다.');
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SEARCH_COND = {};
|
|
|
|
const checkedRowKeys = GRID.getCheckedRowKeys();
|
|
|
|
// 등록일 from~to 유효성 검사
|
|
|
|
|
|
|
|
var startDate = $("#searchStartDt").val().trim();
|
|
|
|
|
|
|
|
var endDate = $("#searchEndDt").val().trim();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 시작일과 종료일 중 하나만 입력된 경우 체크
|
|
|
|
if (checkedRowKeys.length === 0) {
|
|
|
|
if ((startDate && !endDate) || (!startDate && endDate)) {
|
|
|
|
alert('상태를 변경할 행을 1개 선택하세요.');
|
|
|
|
alert("등록일 검색 시 시작일과 종료일을 모두 입력해주세요.");
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (checkedRowKeys.length > 1) {
|
|
|
|
|
|
|
|
alert('1개 답변상태변경은 한 행만 선택할 수 있습니다.');
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const rowData = GRID.getRow(checkedRowKeys[0]);
|
|
|
|
|
|
|
|
if (!rowData) {
|
|
|
|
|
|
|
|
alert('선택된 행 정보를 가져올 수 없습니다.');
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const asMmcode = rowData.asMmcode;
|
|
|
|
|
|
|
|
|
|
|
|
// 시작일과 종료일이 모두 입력된 경우 유효성 검사
|
|
|
|
if (!confirm('선택한 건의 상태를 [' + newState + '] 로 변경하시겠습니까?')) {
|
|
|
|
if (startDate && endDate) {
|
|
|
|
return;
|
|
|
|
if (!isDate(startDate) || !isDate(endDate)) {
|
|
|
|
}
|
|
|
|
alert("유효한 날짜 형식이 아닙니다. (YYYY-MM-DD)");
|
|
|
|
|
|
|
|
return;
|
|
|
|
$.ajax({
|
|
|
|
}
|
|
|
|
url: '<c:url value="/minwon/dayanswer/update-one-state.ajax"/>',
|
|
|
|
|
|
|
|
type: 'POST',
|
|
|
|
// 시작일이 종료일보다 늦은 경우 체크
|
|
|
|
data: {
|
|
|
|
var startDateObj = new Date(startDate);
|
|
|
|
asMmcode: asMmcode,
|
|
|
|
var endDateObj = new Date(endDate);
|
|
|
|
newState: newState
|
|
|
|
|
|
|
|
},
|
|
|
|
if (startDateObj > endDateObj) {
|
|
|
|
success: function () {
|
|
|
|
alert("시작일은 종료일보다 이후일 수 없습니다.");
|
|
|
|
alert('선택한 답변 상태가 변경되었습니다.');
|
|
|
|
return;
|
|
|
|
const currentPage = GRID.getPagination()._currentPage || 1;
|
|
|
|
}
|
|
|
|
GRID.readData(currentPage);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
error: function () {
|
|
|
|
|
|
|
|
alert('상태 변경 중 오류가 발생했습니다.');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 페이지를 1로 리셋
|
|
|
|
|
|
|
|
$("#page").val(1);
|
|
|
|
|
|
|
|
// 그리드 데이터 리로드
|
|
|
|
|
|
|
|
self.grid.instance.readData(1);
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 검색어 입력 필드에서 엔터키 이벤트 처리
|
|
|
|
// 검색 버튼
|
|
|
|
$('#searchKeyword').on('keypress', function(e) {
|
|
|
|
$('#search_btn').on('click', function () {
|
|
|
|
if (e.which === 13) { // 엔터키 코드는 13
|
|
|
|
let startDate = $("#searchStartDt").val();
|
|
|
|
e.preventDefault(); // 기본 이벤트 방지
|
|
|
|
let endDate = $("#searchEndDt").val();
|
|
|
|
$('#search_btn').trigger('click'); // 검색 버튼 클릭 이벤트 트리거
|
|
|
|
|
|
|
|
|
|
|
|
if ((startDate && !endDate) || (!startDate && endDate)) {
|
|
|
|
|
|
|
|
alert("등록일 검색 시 시작일과 종료일을 모두 입력해주세요.");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (startDate && endDate) {
|
|
|
|
|
|
|
|
if (!isDate(startDate) || !isDate(endDate)) {
|
|
|
|
|
|
|
|
alert("유효한 날짜 형식이 아닙니다. (YYYY-MM-DD)");
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
let startDateObj = new Date(startDate);
|
|
|
|
|
|
|
|
let endDateObj = new Date(endDate);
|
|
|
|
|
|
|
|
if (startDateObj > endDateObj) {
|
|
|
|
|
|
|
|
alert("시작일은 종료일보다 이후일 수 없습니다.");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// perPage 변경 이벤트 추가
|
|
|
|
$("#page").val(1);
|
|
|
|
$('#perPageSelect').on('change', function() {
|
|
|
|
GRID.readData(1);
|
|
|
|
var perPage = parseInt($(this).val(), 10);
|
|
|
|
});
|
|
|
|
// Grid의 perPage 설정 변경 및 데이터 리로드
|
|
|
|
|
|
|
|
self.grid.instance.setPerPage(perPage);
|
|
|
|
// 검색어 엔터
|
|
|
|
});
|
|
|
|
$('#searchKeyword').on('keypress', function (e) {
|
|
|
|
|
|
|
|
if (e.which === 13) {
|
|
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
$('#search_btn').trigger('click');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// perPage 변경 이벤트 추가
|
|
|
|
|
|
|
|
$('#perPageSelect').on('change', () => {
|
|
|
|
|
|
|
|
const pagination = TuiGrid.instance.getPagination();
|
|
|
|
|
|
|
|
if (!pagination) return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pagination.setItemsPerPage($('#perPageSelect').val());
|
|
|
|
|
|
|
|
pagination.reset(TuiGrid.instance.getRowCount());
|
|
|
|
|
|
|
|
pagination.movePageTo(1);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 상태 탭 클릭
|
|
|
|
|
|
|
|
$('.state-tabs li').on('click', function (e) {
|
|
|
|
|
|
|
|
$('.state-tabs li').removeClass('on');
|
|
|
|
|
|
|
|
$(this).addClass('on');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const state = $(this).data('state') || '';
|
|
|
|
|
|
|
|
$('#tabState').val(state);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SEARCH_COND = {};
|
|
|
|
|
|
|
|
GRID.readData(1);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** tui-grid Set */
|
|
|
|
|
|
|
|
const initGrid = () => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const gridColumns = [
|
|
|
|
|
|
|
|
{ header: '답변일시', name: 'asPostDt', width: 150, align: 'center' },
|
|
|
|
|
|
|
|
{ header: '번호', name: 'asBbsNo', width: 150, align: 'center' },
|
|
|
|
|
|
|
|
{ header: '신청자', name: 'asUser', width: 150, align: 'center' },
|
|
|
|
|
|
|
|
{ header: '접수일자', name: 'asJsdate', width: 150, align: 'center' },
|
|
|
|
|
|
|
|
{ header: '처리기한', name: 'asLimitDt',width: 150, align: 'center' },
|
|
|
|
|
|
|
|
{ header: '위반일자', name: 'mmDate', width: 150, align: 'center' },
|
|
|
|
|
|
|
|
{ header: '접수번호', name: 'asJsno', width: 150, align: 'center' },
|
|
|
|
|
|
|
|
{ header: '차량번호', name: 'mmCarno', width: 150, align: 'center' },
|
|
|
|
|
|
|
|
{ header: '미부과사유',name: 'ccCause', width: 150, align: 'center' },
|
|
|
|
|
|
|
|
{ header: '처리상태', name: 'asState', width: 150, align: 'center' },
|
|
|
|
|
|
|
|
{ header: 'mmCode', name: 'mmCode', sortable: true, width: 150, align: 'center', hidden: true}
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const gridDatasource = {
|
|
|
|
|
|
|
|
api: {
|
|
|
|
|
|
|
|
readData: {
|
|
|
|
|
|
|
|
url: '<c:url value="/minwon/dayanswer/dayanswer-select.ajax"/>',
|
|
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
|
|
contentType: 'application/x-www-form-urlencoded',
|
|
|
|
|
|
|
|
processData: true
|
|
|
|
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
initialRequest: false, // 직접 readData(1) 호출할 거라 false
|
|
|
|
* 모듈 초기화
|
|
|
|
serializer: function (params) {
|
|
|
|
*/
|
|
|
|
setSearchCond();
|
|
|
|
init: function() {
|
|
|
|
SEARCH_COND.perPage = params.perPage;
|
|
|
|
|
|
|
|
SEARCH_COND.page = params.page;
|
|
|
|
|
|
|
|
|
|
|
|
// 그리드 생성
|
|
|
|
return $.param(SEARCH_COND);
|
|
|
|
this.grid.create();
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 이벤트 핸들러 설정
|
|
|
|
const perPage = parseInt($('#perPageSelect').val() || 10, 10);
|
|
|
|
this.eventBindEvents();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.grid.instance.readData(${param.page eq null or param.page eq 0 ? 1 : param.page});
|
|
|
|
const gridOptions = {
|
|
|
|
|
|
|
|
el: 'grid',
|
|
|
|
|
|
|
|
rowHeaders: ['checkbox'],
|
|
|
|
|
|
|
|
columns: gridColumns,
|
|
|
|
|
|
|
|
noData: "처리 할 초기자료가 없습니다.",
|
|
|
|
|
|
|
|
pageOptions: {
|
|
|
|
|
|
|
|
useClient: true,
|
|
|
|
|
|
|
|
perPage: perPage
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 페이지 로드 시 초기화
|
|
|
|
// 실제 GRID 생성
|
|
|
|
$(function() {
|
|
|
|
GRID = TuiGrid.of(gridOptions, gridDatasource, (res) => {
|
|
|
|
NoticeList.init();
|
|
|
|
// 서버 응답 후 페이지 정보 세팅
|
|
|
|
|
|
|
|
const data = res.data || {};
|
|
|
|
// $.ajax({
|
|
|
|
if (data.pagination) {
|
|
|
|
// url: "http://localhost:8080/postman/test",
|
|
|
|
$("#currentPage").text(data.pagination.page || '');
|
|
|
|
// type: 'POST',
|
|
|
|
$("#totalPages").text(data.pagination.totalPages || '');
|
|
|
|
// contentType: 'application/json',
|
|
|
|
}
|
|
|
|
// data: JSON.stringify({
|
|
|
|
|
|
|
|
// aaa: "111",
|
|
|
|
// 더블 클릭 이벤트
|
|
|
|
// bbb: "222",
|
|
|
|
GRID.on("dblclick", (e) => {
|
|
|
|
// ccc: "333"
|
|
|
|
var popUrl = '/minwon/init/init_popup.do';
|
|
|
|
// }), // 비어 있어도 {}
|
|
|
|
var popTitle = "initPopup";
|
|
|
|
// success: function(response) {
|
|
|
|
var popOption = "width=1400px, height=900px, resizable=yes, scrollbars=yes, location=no, top=100px, left=100px";
|
|
|
|
// console.log(response);
|
|
|
|
|
|
|
|
// $("#bbs_no").val(response.asBbsNo);
|
|
|
|
// 1) localStorage에 저장
|
|
|
|
// console.log($("#bbs_no").val());
|
|
|
|
console.log(e)
|
|
|
|
//
|
|
|
|
|
|
|
|
//
|
|
|
|
let cursor = e.instance.getValue(e.rowKey, 'mmCode');
|
|
|
|
// },
|
|
|
|
let mmCodes = e.instance.getData().map(row => row.mmCode);
|
|
|
|
// error: function(xhr, status, error) {
|
|
|
|
|
|
|
|
// // 에러 처리는 xit-common.js의 ajaxError에서 처리됨
|
|
|
|
console.log(cursor);
|
|
|
|
// }
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const state = { cursor, mmCodes, savedAt: Date.now() };
|
|
|
|
|
|
|
|
localStorage.setItem('TOTAL_INFO_STATE', JSON.stringify(state));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 2) 팝업이 없거나 닫혀 있으면 새로 열기
|
|
|
|
|
|
|
|
if (!INIT_POPUP || INIT_POPUP.closed) {
|
|
|
|
|
|
|
|
INIT_POPUP = window.open(popUrl, popTitle, popOption);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 이미 떠 있으면 새로 안 만들고, 그 창에 포커스만 줌
|
|
|
|
|
|
|
|
INIT_POPUP.focus();
|
|
|
|
|
|
|
|
INIT_POPUP.INIT_POP_API.search();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 전역 네임스페이스에 모듈 노출
|
|
|
|
// 최초 1페이지 조회
|
|
|
|
window.NoticeList = NoticeList;
|
|
|
|
GRID.readData(1);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 레디펑션
|
|
|
|
|
|
|
|
$(function () {
|
|
|
|
|
|
|
|
fnBiz.init();
|
|
|
|
|
|
|
|
fnBiz.eventListener();
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
})(window, jQuery);
|
|
|
|
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|
|