|
|
|
|
@ -7,39 +7,31 @@
|
|
|
|
|
<div class="bgs-main">
|
|
|
|
|
<section id="section5">
|
|
|
|
|
<div class="sub_title"></div>
|
|
|
|
|
<button type="button" onclick="location.href='<c:url value='/template/noticeSample/register.do'/>'" class="newbtn bg1">등록</button>
|
|
|
|
|
</section>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
<div class="lef">
|
|
|
|
|
<ul class="lef">
|
|
|
|
|
<button type="button" id="view_btn" class="newbtnss bg1">민원내용 원본</button>
|
|
|
|
|
<button type="button" id="preview_btn" class="newbtnss bg1">답변내용 미리보기</button>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="contants_body">
|
|
|
|
|
<div class="gs_b_top">
|
|
|
|
|
<ul class="lef">
|
|
|
|
|
<li class="th">검색구분</li>
|
|
|
|
|
<li>
|
|
|
|
|
<select id="searchCondition" name="searchCondition" class="input">
|
|
|
|
|
<option value="">검색구분</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="writer" <c:if test="${paramVO.searchCondition eq 'writer'}">selected</c:if>>수정자명</option>
|
|
|
|
|
</select>
|
|
|
|
|
</li>
|
|
|
|
|
<li class="th">검색어</li>
|
|
|
|
|
<li><input type="text" id="searchKeyword" name="searchKeyword" class="input" value="${param.searchKeyword}"/></li>
|
|
|
|
|
<li class="th">담당자지정</li>
|
|
|
|
|
<li><input type="text" id="worker" name="worker" class="input" value=""/></li>
|
|
|
|
|
<li class="th">사용여부</li>
|
|
|
|
|
<li class="th">등록구분</li>
|
|
|
|
|
<li>
|
|
|
|
|
<select id="searchUseYn" name="searchUseYn" class="input">
|
|
|
|
|
<option value="">전체</option>
|
|
|
|
|
<option value="Y" <c:if test="${param.searchUseYn eq 'Y'}">selected</c:if>>사용</option>
|
|
|
|
|
<option value="N" <c:if test="${param.searchUseYn eq 'N'}">selected</c:if>>미사용</option>
|
|
|
|
|
<select id="searchKeyword" name="searchKeyword" class="input">
|
|
|
|
|
<option value="">등록구분</option>
|
|
|
|
|
<option value="0" <c:if test="${paramVO.searchKeyword eq '0'}">selected</c:if>>변환등록</option>
|
|
|
|
|
<option value="1" <c:if test="${paramVO.searchKeyword eq '1'}">selected</c:if>>수기등록</option>
|
|
|
|
|
<option value="2" <c:if test="${paramVO.searchKeyword eq '2'}">selected</c:if>>자동등록</option>
|
|
|
|
|
<option value="3" <c:if test="${paramVO.searchKeyword eq '3'}">selected</c:if>>재등록</option>
|
|
|
|
|
<option value="4" <c:if test="${paramVO.searchKeyword eq '4'}">selected</c:if>>복사등록</option>
|
|
|
|
|
<option value="5" <c:if test="${paramVO.searchKeyword eq '5'}">selected</c:if>>관외 이첩자료 등록</option>
|
|
|
|
|
<option value="6" <c:if test="${paramVO.searchKeyword eq '6'}">selected</c:if>>스마트폰단속</option>
|
|
|
|
|
</select>
|
|
|
|
|
</li>
|
|
|
|
|
<li class="th">접수일자 지정</li>
|
|
|
|
|
<li>
|
|
|
|
|
<input type="text" id="searchStartDt" name="searchStartDt" class="input calender datepicker bottom" value="${param.searchStartDt}" /> ~
|
|
|
|
|
<input type="text" id="searchEndDt" name="searchEndDt" class="input calender datepicker" value="${param.searchEndDt}" />
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<button type="button" id="search_btn" class="newbtnss bg1">검색</button>
|
|
|
|
|
</li>
|
|
|
|
|
@ -47,8 +39,8 @@
|
|
|
|
|
<ul class="rig2">
|
|
|
|
|
<li>
|
|
|
|
|
<select id="perPageSelect" class="input">
|
|
|
|
|
<option value="10" <c:if test="${param.perPage eq '10'}">selected</c:if>>페이지당 10</option>
|
|
|
|
|
<option value="30" <c:if test="${empty param.perPage or param.perPage eq '30'}">selected</c:if>>페이지당 30</option>
|
|
|
|
|
<option value="10" <c:if test="${param.perPage eq '10'}">selected</c:if>>페이지당 10</option>
|
|
|
|
|
<option value="30" <c:if test="${empty param.perPage or 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>
|
|
|
|
|
<span class="page_number"><span id="currentPage"></span><span class="bar">/</span><sapn id="totalPages"></sapn> Pages</span>
|
|
|
|
|
@ -68,76 +60,99 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="popupDiv" style="display:none;">
|
|
|
|
|
<ul style="background-color:rgb(173,216,115); border-style:solid; border-width:1px; width:100%; height:60px">
|
|
|
|
|
<table style="width:100%; height:60px;">
|
|
|
|
|
<tr>
|
|
|
|
|
<td style="width:80%; height:100%; text-align:center; font-weight: bold; font-size:20px">민원내용 보기</td>
|
|
|
|
|
<td style="width:20%; text-align:center;">
|
|
|
|
|
<button type="button" id="view_close_btn" class="newbtnss bg1">닫기</button>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
</ul>
|
|
|
|
|
<ul style="background-color:rgb(226,230,233); border-style:solid; border-width:1px; width:100%; height:60px;">
|
|
|
|
|
<table style="width:100%; height:100%;">
|
|
|
|
|
<tr style="width:100%; height:50%;">
|
|
|
|
|
<td style="width: 50px;"> </td>
|
|
|
|
|
<td style="width: 60px; font-size:12px; text-align:right;">목록번호 </td>
|
|
|
|
|
<td style="width:140px;">
|
|
|
|
|
<input type="text" name="m_BbsNo" id="m_BbsNo" style="width:140px; height:20px; font-size:13px; border-style:none;" readonly>
|
|
|
|
|
</td>
|
|
|
|
|
<td style="width: 60px; font-size:12px; text-align:right;">신청자 </td>
|
|
|
|
|
<td style="width:140px;">
|
|
|
|
|
<input type="text" name="m_Sgnm" id="m_Sgnm" style="width:140px; height:20px; font-size:13px; border-style:none;" readonly>
|
|
|
|
|
</td>
|
|
|
|
|
<td style="width: 60px; font-size:12px; text-align:right;">전화번호 </td>
|
|
|
|
|
<td style="width:140px;">
|
|
|
|
|
<input type="text" name="m_Tel" id="m_Tel" style="width:140px; height:20px; font-size:13px; border-style:none;" readonly>
|
|
|
|
|
</td>
|
|
|
|
|
<td style="width: 50px;"> </td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr style="height:50%;">
|
|
|
|
|
<td> </td>
|
|
|
|
|
<td style="font-size:12px; text-align:right;">접수일자 </td>
|
|
|
|
|
<td>
|
|
|
|
|
<input type="text" name="m_Jsdate" id="m_Jsdate" style="width:140px; height:20px; font-size:13px; border-style:none;" readonly>
|
|
|
|
|
</td>
|
|
|
|
|
<td style="font-size:12px; text-align:right;">처리기한 </td>
|
|
|
|
|
<td>
|
|
|
|
|
<input type="text" name="m_LimitDt" id="m_LimitDt" style="width:140px; height:20px; font-size:13px; border-style:none;" readonly>
|
|
|
|
|
</td>
|
|
|
|
|
<td style="font-size:12px; text-align:right;">접수번호 </td>
|
|
|
|
|
<td>
|
|
|
|
|
<input type="text" name="m_Jsno" id="m_Jsno" style="width:140px; height:20px; font-size:13px; border-style:none;" readonly>
|
|
|
|
|
</td>
|
|
|
|
|
<td> </td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
</ul>
|
|
|
|
|
<ul style="border-style:solid; border-width:1px; width:100%; height:400px;" >
|
|
|
|
|
<textarea id="minwon_view" name="minwon_view" style="font-size:12px; width:100%; height:100%; border-style:none;" readonly></textarea>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- /Main body -->
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
|
|
|
|
|
|
|
let GRID = null;
|
|
|
|
|
let TOTAL_INFO = null;
|
|
|
|
|
|
|
|
|
|
let SEARCH_COND = {};
|
|
|
|
|
|
|
|
|
|
let perPage = parseInt($('#perPageSelect').val() || 10, 10);
|
|
|
|
|
|
|
|
|
|
let selectRow_mmCode = null;
|
|
|
|
|
let selectRow_BbsNo = null;
|
|
|
|
|
let selectRow_Sgnm = null;
|
|
|
|
|
let selectRow_Tel = null;
|
|
|
|
|
let selectRow_Jsdate = null;
|
|
|
|
|
let selectRow_LimitDt = null;
|
|
|
|
|
let selectRow_Jsno = null;
|
|
|
|
|
let selectRow_mmText = null;
|
|
|
|
|
let selectRow_asText = null;
|
|
|
|
|
|
|
|
|
|
// 검색정보 셋팅
|
|
|
|
|
let setSearchCond = function() {
|
|
|
|
|
let searchCondition = $.trim(nvl($("#searchCondition").val(), ""));
|
|
|
|
|
let searchKeyword = $.trim(nvl($("#searchKeyword").val(), ""));
|
|
|
|
|
let searchUseYn = $.trim(nvl($("#searchUseYn").val(), ""));
|
|
|
|
|
let searchStartDt = $.trim(nvl($("#searchStartDt").val(), ""));
|
|
|
|
|
let 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;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const fnBiz = {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
init: () => {
|
|
|
|
|
initGrid();
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
eventListener: () => {
|
|
|
|
|
let self = this;
|
|
|
|
|
// 검색 버튼 클릭 이벤트
|
|
|
|
|
$('#search_btn').on('click', function() {
|
|
|
|
|
// 등록일 from~to 유효성 검사
|
|
|
|
|
let startDate = $("#searchStartDt").val();
|
|
|
|
|
let endDate = $("#searchEndDt").val();
|
|
|
|
|
|
|
|
|
|
// 시작일과 종료일 중 하나만 입력된 경우 체크
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 페이지를 1로 리셋
|
|
|
|
|
$("#page").val(1);
|
|
|
|
|
// 그리드 데이터 리로드
|
|
|
|
|
self.grid.instance.readData(1);
|
|
|
|
|
TuiGrid.instance.readData(1);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 검색어 입력 필드에서 엔터키 이벤트 처리
|
|
|
|
|
@ -149,102 +164,37 @@
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// perPage 변경 이벤트 추가
|
|
|
|
|
$('#perPageSelect').on('change', function() {
|
|
|
|
|
let perPage = parseInt($(this).val(), 10);
|
|
|
|
|
// Grid의 perPage 설정 변경 및 데이터 리로드
|
|
|
|
|
self.grid.instance.setPerPage(perPage);
|
|
|
|
|
$('#perPageSelect').on('change', () => {
|
|
|
|
|
const pagination = TuiGrid.instance.getPagination();
|
|
|
|
|
if (!pagination) return;
|
|
|
|
|
|
|
|
|
|
pagination.setItemsPerPage($('#perPageSelect').val());
|
|
|
|
|
pagination.reset(TuiGrid.instance.getRowCount());
|
|
|
|
|
pagination.movePageTo(1);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** tui-grid Set */
|
|
|
|
|
const initGrid = () => {
|
|
|
|
|
|
|
|
|
|
const gridColumns = [
|
|
|
|
|
{
|
|
|
|
|
header: '등록구분',
|
|
|
|
|
name: 'mmDlgb',
|
|
|
|
|
sortable: true,
|
|
|
|
|
width: 50,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '목록번호',
|
|
|
|
|
name: 'asBbsNo',
|
|
|
|
|
sortable: true,
|
|
|
|
|
width: 70,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '신고자',
|
|
|
|
|
name: 'mmSgnm',
|
|
|
|
|
sortable: true,
|
|
|
|
|
width: 100,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '담당자',
|
|
|
|
|
name: 'mmSgtel',
|
|
|
|
|
sortable: true,
|
|
|
|
|
width: 100,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '전화번호',
|
|
|
|
|
name: 'asTel',
|
|
|
|
|
width: 150,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '접수일자',
|
|
|
|
|
name: 'asJsdate',
|
|
|
|
|
sortable: true,
|
|
|
|
|
width: 70,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '처리기한',
|
|
|
|
|
name: 'asLimitDt',
|
|
|
|
|
sortable: true,
|
|
|
|
|
width: 70,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '위반일자',
|
|
|
|
|
name: 'mmDate',
|
|
|
|
|
sortable: true,
|
|
|
|
|
width: 150,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '첨부',
|
|
|
|
|
name: 'mmImagegb',
|
|
|
|
|
width: 150,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '사진갯수',
|
|
|
|
|
name: 'mmImagecnt',
|
|
|
|
|
width: 50,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '위반내용',
|
|
|
|
|
name: 'mmSgcont',
|
|
|
|
|
width: 250,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '접수번호',
|
|
|
|
|
name: 'asJsno',
|
|
|
|
|
sortable: true,
|
|
|
|
|
width: 150,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: '차량번호',
|
|
|
|
|
name: 'mmCarno',
|
|
|
|
|
sortable: true,
|
|
|
|
|
width: 150,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
header: 'mmCode',
|
|
|
|
|
name: 'mmCode',
|
|
|
|
|
sortable: true,
|
|
|
|
|
width: 150,
|
|
|
|
|
align: 'center',
|
|
|
|
|
hidden: true
|
|
|
|
|
}
|
|
|
|
|
{header: '등록구분', name: 'mmDlgb', sortable: true, width: 50,},
|
|
|
|
|
{header: '번호', name: 'asBbsNo', sortable: true, width: 50,},
|
|
|
|
|
{header: '신고자', name: 'mmSgnm', sortable: true, width: 80,},
|
|
|
|
|
{header: '전화번호', name: 'asTel', width: 100,},
|
|
|
|
|
{header: '접수일자', name: 'mmDate', sortable: true, width: 70,},
|
|
|
|
|
{header: '처리기한', name: 'asLimitDt', sortable: true, width: 70,},
|
|
|
|
|
{header: '위반일자', name: 'mmDate', sortable: true, width: 120,},
|
|
|
|
|
{header: '접수번호', name: 'asJsno', sortable: true, width: 150,},
|
|
|
|
|
{header: '차량번호', name: 'mmCarno', sortable: true, width: 100,},
|
|
|
|
|
{header: '미부과사유', name: 'ccCause', width: 150,},
|
|
|
|
|
{header: '메인코드', name: 'mmCode', sortable: true, width: 180, align: 'center', hidden: true},
|
|
|
|
|
{header: '민원내용', name: 'mmText', sortable: true, width: 1, hidden: true},
|
|
|
|
|
{header: '답변내용', name: 'asText', sortable: true, width: 1, hidden: true}
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const gridDatasource = {
|
|
|
|
|
api: {
|
|
|
|
|
readData: {
|
|
|
|
|
@ -267,7 +217,7 @@
|
|
|
|
|
el: 'grid',
|
|
|
|
|
rowHeaders: ['checkbox'],
|
|
|
|
|
columns: gridColumns,
|
|
|
|
|
noData: "처리 할 대기자료가 없습니다.",
|
|
|
|
|
noData: "조회된 대기자료가 없습니다.",
|
|
|
|
|
pageOptions: {
|
|
|
|
|
useClient: true, // 클라이언트 페이징 여부(false: 서버 페이징)
|
|
|
|
|
perPage: perPage,
|
|
|
|
|
@ -278,7 +228,7 @@
|
|
|
|
|
|
|
|
|
|
GRID.on("dblclick", (e) => {
|
|
|
|
|
var popUrl = '/total/info.do';
|
|
|
|
|
var popTitle = "TotalInfo";
|
|
|
|
|
var popTitle = "TotaInfo";
|
|
|
|
|
var popOption = "width=1400px, height=900px, resizable=yes, scrollbars=yes, location=no, top=100px, left=100px";
|
|
|
|
|
|
|
|
|
|
// 1) localStorage에 저장
|
|
|
|
|
@ -298,6 +248,18 @@
|
|
|
|
|
TOTAL_INFO.TOTAL_INFO_POPUP_API.search();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
GRID.on("click", (e) => {
|
|
|
|
|
selectRow_mmCode = e.instance.getValue(e.rowKey, 'mmCode');
|
|
|
|
|
selectRow_BbsNo = e.instance.getValue(e.rowKey, 'asBbsNo');
|
|
|
|
|
selectRow_Sgnm = e.instance.getValue(e.rowKey, 'mmSgnm');
|
|
|
|
|
selectRow_Tel = e.instance.getValue(e.rowKey, 'asTel');
|
|
|
|
|
selectRow_Jsdate = e.instance.getValue(e.rowKey, 'mmDate');
|
|
|
|
|
selectRow_LimitDt = e.instance.getValue(e.rowKey, 'asLimitDt');
|
|
|
|
|
selectRow_Jsno = e.instance.getValue(e.rowKey, 'asJsno');
|
|
|
|
|
selectRow_mmText = e.instance.getValue(e.rowKey, 'mmText');
|
|
|
|
|
selectRow_asText = e.instance.getValue(e.rowKey, 'asText');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
@ -310,4 +272,37 @@
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$('#view_btn').on('click', function() {
|
|
|
|
|
if (selectRow_mmCode != null && selectRow_mmCode != '') {
|
|
|
|
|
document.getElementById('m_BbsNo').value = selectRow_BbsNo;
|
|
|
|
|
document.getElementById('m_Sgnm').value = selectRow_Sgnm;
|
|
|
|
|
document.getElementById('m_Tel').value = selectRow_Tel;
|
|
|
|
|
document.getElementById('m_Jsdate').value = selectRow_Jsdate;
|
|
|
|
|
document.getElementById('m_LimitDt').value = selectRow_LimitDt;
|
|
|
|
|
document.getElementById('m_Jsno').value = selectRow_Jsno;
|
|
|
|
|
document.getElementById('minwon_view').value = selectRow_mmText;
|
|
|
|
|
|
|
|
|
|
var popupDiv = document.getElementById('popupDiv');
|
|
|
|
|
popupDiv.style = 'display:inline-block; position:absolute; top:200px; left:350px; z-index:999999; background-color:rgb(226,230,233); width:900px; height:400px;';
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$('#view_close_btn').on('click', function() {
|
|
|
|
|
var popupDiv = document.getElementById('popupDiv');
|
|
|
|
|
popupDiv.style = 'display:none;';
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$('#preview_btn').on('click', function() {
|
|
|
|
|
alert('답변내용 미리보기 클릭')
|
|
|
|
|
/*
|
|
|
|
|
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);
|
|
|
|
|
*/
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|