You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

512 lines
19 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<c:set var="pageKorName" scope="request">단속팀 관리</c:set>
<div class="content-wrapper">
<div class="container-xxl flex-grow-1 px-0">
<div class="card wrapper-list">
<!-- 조회조건 -->
<div class="container-page-btn">
<button type="button" id="btnReset--${pageName}" class="btn btn-outline-dark w-px-120" title="초기화">
초기화
</button>
<span class="container-window-btn-right">
<button type="button" id="btnSearch--${pageName}" class="btn btn-search w-px-120" title="검색">
검색
</button>
</span>
</div>
<form id="frmSearch--${pageName}" name="frmSearch">
<div class="container-search">
<div class="row g-1">
<div class="col-6">
<span class="form-label fw-bold form-search-title w-px-120 text-end">업무구분</span>
<span class="form-search-linebox">
<c:forEach items="${FIM054List}" var="item">
<c:if test="${item.code == 'PVS' or item.code == 'BPV'}">
<label>
<input name="taskSeCd" type="radio" value="${item.code}"
class="form-check-input" alt="업무구분"
onchange="pageObject['${pageName}'].fnResetAndChangeBiz(this.value);">
${item.value}
</label>
</c:if>
</c:forEach>
</span>
</div>
</div>
</div>
</form>
<!-- 리스트 -->
<div>
<span class="container-page-btn">
<div class="d-flex flex-row justify-content-between">
<span id="useTeamPaging--${pageName}PagingInfo" class="dataTables_info"
role="status" aria-live="polite"></span>
<ul id="useTeamPaging--${pageName}" class="pagination pagination-primary">
</ul>
</div>
</span>
</div>
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer">
<div id="table-responsive_0--${pageName}" class="table-responsive ox-scroll oy-scroll h-px-300">
<table id="DataTables_Table_0--${pageName}"
class="table-layout-fixed datatables-ajax table table-bordered dataTable no-footer">
<thead class="sticky-thead">
<tr id="useTeamTheadTr--${pageName}">
<th style="width: 160px;">단속조</th>
<th style="width: 160px;">단속구분</th>
<th style="width: 160px;">단속원1</th>
<th style="width: 160px;">단속원2</th>
<th style="width: 160px;">단속원3</th>
<th style="width: 160px;">단속원4</th>
<th style="width: 400px;">특이사항</th>
<th style="width: 180px;">등록일시</th>
<th class="dummy-th"></th>
</tr>
</thead>
<tbody id="useTeamTbody--${pageName}"></tbody>
<template id="useTeamRow--${pageName}">
<tr data-key="{TEAM_ID}">
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{TEAM_NM}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{CRDN_SE_CD}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{TEAMER_1}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{TEAMER_2}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{TEAMER_3}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{TEAMER_4}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{ETC_CN}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-center">{REG_DT}</td>
<td class="dummy-td"></td>
</tr>
</template>
<template id="useTeamNotFound--${pageName}">
<tr>
<td valign="top" colspan="9" class="dataTables_empty text-center">
단속팀 정보를 찾지 못했습니다.
</td>
</tr>
</template>
</table>
</div>
</div>
</div>
<!-- 입력, 수정 -->
<div class="card">
<form id="frmEdit--${pageName}">
<div class="row g-1">
<div class="col-md-3">
<label for="teamNm--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end required">
단속조명
</label>
<input type="text" id="teamNm--${pageName}" name="teamNm" class="form-control"
data-maxlengthb="20" required />
</div>
<div class="col-md-9">
<label for="teamNm--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
단속구분
</label>
<select id="crdnSeCd--${pageName}" name="crdnSeCd" class="form-select">
<option value=""></option>
<c:forEach items="${FIM002List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<div class="col-md-3">
<label for="teamer1--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
단속원1
</label>
<input type="text" id="teamer1--${pageName}" name="teamer1" class="form-control"
data-maxlengthb="20" />
</div>
<div class="col-md-3">
<label for="teamer2--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
단속원2
</label>
<input type="text" id="teamer2--${pageName}" name="teamer2" class="form-control"
data-maxlengthb="20" />
</div>
<div class="col-md-3">
<label for="teamer3--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
단속원3
</label>
<input type="text" id="teamer3--${pageName}" name="teamer3" class="form-control"
data-maxlengthb="20" />
</div>
<div class="col-md-3">
<label for="teamer4--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
단속원4
</label>
<input type="text" id="teamer4--${pageName}" name="teamer4" class="form-control"
data-maxlengthb="20" />
</div>
<div class="col-md-12">
<label for="etcCn--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
특이사항
</label>
<input type="text" id="etcCn--${pageName}" name="etcCn"
class="form-control w-px-700" data-maxlengthb="1000" />
</div>
</div>
<div class="row mt-4 justify-content-end mb-3">
<div class="col-md-6">
<div class="row justify-content-end">
<div class="col-sm-3">
<button type="button" id="btnSave--${pageName}" class="btn btn-primary">저장</button>
<button type="button" id="btnRemove--${pageName}" class="btn btn-primary">삭제</button>
</div>
</div>
</div>
</div>
</form>
</div>
<!-- 비사용 리스트 -->
<div class="container-search">
<div class="row g-1">
<div class="col-6">
<label for="deletedTeamNm--${pageName}" class="form-label fw-bold form-search-title">
선택된 단속조
</label>
<span class="form-search-linebox">
<input type="text" id="deletedTeamNm--${pageName}" name="deletedTeamNm"
class="form-control" />
<button type="button" id="btnShowDeleted--${pageName}" class="btn btn-search">
비사용 단속조 조회
</button>
</span>
</div>
</div>
</div>
<div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5 no-footer">
<div id="table-responsive_1--${pageName}" class="table-responsive ox-scroll oy-scroll h-px-300">
<table id="DataTables_Table_1--${pageName}"
class="table-layout-fixed datatables-ajax table table-bordered dataTable no-footer">
<thead class="sticky-thead">
<tr id="delTeamTheadTr--${pageName}">
<th style="width: 200px;">단속조</th>
<th style="width: 200px;">단속구분</th>
<th style="width: 200px;">단속원1</th>
<th style="width: 200px;">단속원2</th>
<th style="width: 200px;">단속원3</th>
<th style="width: 200px;">단속원4</th>
<th style="width: 200px;">특이사항</th>
<th style="width: 200px;">등록일</th>
<th style="width: 200px;">해체일</th>
<th class="dummy-th"></th>
</tr>
</thead>
<tbody id="delTeamTbody--${pageName}"></tbody>
<template id="delTeamRow--${pageName}">
<tr data-key="{TEAM_ID}">
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{TEAM_NM}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{CRDN_SE_CD}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{TEAMER_1}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{TEAMER_2}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{TEAMER_3}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{TEAMER_4}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-start">{ETC_CN}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-center">{REG_DT}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}" class="text-center">{MDFCN_DT}</td>
<td class="dummy-td"></td>
</tr>
</template>
<template id="delTeamNotFound--${pageName}">
<tr>
<td valign="top" colspan="10" class="dataTables_empty text-center">
조회된 정보가 없습니다.
</td>
</tr>
</template>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="content-backdrop fade"></div>
</div>
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
pageObject["${pageName}"] = {};
var FIM071 = new CommonCodes(${FIM071});
var FIM002 = new CommonCodes(${FIM002});
$(document).ready(function(){
var $P = pageObject["${pageName}"];
/**************************************************************************
* DatasetControl
**************************************************************************/
$P.useTeamControl = new DatasetControl({
dataGetter : obj => obj["List"], appendData:false,
keymapper : info => info ? info.TEAM_ID : "",
urls : {
load : "",
remove : "",
save : ""
},
formats: {
OGDP_SE_CD : FIM071,
CRDN_SE_CD : FIM002,
REG_DT : datetimeFormat,
MDFCN_DT : datetimeFormat,
DEL_DT : datetimeFormat
}
});
$P.delTeamControl = new DatasetControl({
dataGetter : obj => obj["List"], appendData: false,
keymapper : info => info ? info.TEAM_ID : "",
urls : { },
formats: {
OGDP_SE_CD : FIM071,
CRDN_SE_CD : FIM002,
REG_DT : datetimeFormat,
MDFCN_DT : datetimeFormat,
DEL_DT : datetimeFormat
}
});
/**************************************************************************
* Dataset.on
**************************************************************************/
$P.useTeamControl.dataset.onDatasetChange = (obj, option) => {
var t = $P.getGridTemplate("useTeam");
var trs = Apply.fromDataset.getTbody($P.useTeamControl.dataset, t.found, t.notFound, t.replacer);
$P.renderUseTeamList(obj["Total"], $P.useTeamControl.dataset.length, trs);
Apply.fromDataset.paging($P.useTeamControl.dataset, obj, "useTeamPaging--${pageName}");
};
$P.delTeamControl.dataset.onDatasetChange = (obj, option) => {
var t = $P.getGridTemplate("delTeam");
var trs = Apply.fromDataset.getTbody($P.delTeamControl.dataset, t.found, t.notFound, t.replacer);
$P.renderDelTeamList(obj["Total"], $P.delTeamControl.dataset.length, trs);
};
$P.useTeamControl.dataset.onCurrentChange = (dataItem) => {
if(!dataItem){
$("#teamNm--${pageName}").val("");
$("#crdnSeCd--${pageName}").val("");
$("#teamer1--${pageName}").val("");
$("#teamer2--${pageName}").val("");
$("#teamer3--${pageName}").val("");
$("#teamer4--${pageName}").val("");
$("#etcCn--${pageName}").val("");
return;
}
Apply.fromDataset.currentRow($P.useTeamControl.dataset, dataItem, $("#useTeamTbody--${pageName}")[0]);
$("#teamNm--${pageName}").val(dataItem.data.TEAM_NM);
$("#crdnSeCd--${pageName}").val(dataItem.data.CRDN_SE_CD);
$("#teamer1--${pageName}").val(dataItem.data.TEAMER_1);
$("#teamer2--${pageName}").val(dataItem.data.TEAMER_2);
$("#teamer3--${pageName}").val(dataItem.data.TEAMER_3);
$("#teamer4--${pageName}").val(dataItem.data.TEAMER_4);
$("#etcCn--${pageName}").val(dataItem.data.ETC_CN);
$("#deletedTeamNm--${pageName}").val(dataItem.data.TEAM_NM);
}
/**************************************************************************
* pageObject.function
**************************************************************************/
$P.fnReset = () => {
var searchForm = $("#frmSearch--${pageName}");
searchForm.find("input[type='text']").val("");
searchForm.find("input[type='hidden']").val("");
$P.useTeamControl.dataset.setData([]);
var editForm = $("#frmEdit--${pageName}");
editForm.find("input[type='text']").val("");
editForm.find("input[type='hidden']").val("");
$P.delTeamControl.dataset.setData([]);
}
$P.fnResetAndChangeBiz = (taskSeCd) => {
$P.fnReset();
$P.useTeamControl.urls.load = wctx.url("/"+taskSeCd+"/crdn/crdn07/010/list.do");
$P.useTeamControl.urls.remove = wctx.url("/"+taskSeCd+"/crdn/crdn07/010/remove.do");
$P.useTeamControl.urls.save = wctx.url("/"+taskSeCd+"/crdn/crdn07/010/save.do");
}
$P.getParams = () => {
var formFields = new FimsFormFields("#frmSearch--${pageName}");
var data = formFields.get();
return data;
}
$P.searchUseTeamList = () => {
$P.useTeamControl.query = $P.getParams();
$P.useTeamControl.load(1);
}
$P.refreshUseTeamList = () => {
if($P.useTeamControl.query.pageNum == null){
$P.useTeamControl.query.pageNum = 1;
}
$P.useTeamControl.load(1);
}
$P.getGridTemplate = (gridType) => {
var found;
var notFound;
var replacer;
if(gridType == "useTeam"){
notFound = [document.getElementById("useTeamNotFound--${pageName}").innerHTML];
found = document.getElementById("useTeamRow--${pageName}").innerHTML;
replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "pageObject['${pageName}'].clickUseTeamList('" + dataItem.getValue("TEAM_ID") + "');")
.replace(/{ondblclick}/gi, "");
} else {
notFound = [document.getElementById("delTeamNotFound--${pageName}").innerHTML];
found = document.getElementById("delTeamRow--${pageName}").innerHTML;
replacer = (str, dataItem) => str
.replace(/{onclick}/gi, "")
.replace(/{ondblclick}/gi, "");
}
return {
found : found,
notFound : notFound,
replacer : replacer
};
}
$P.renderUseTeamList = (total, listLength, trs) => {
$("#useTeamTbody--${pageName}").html(trs);
}
$P.renderDelTeamList = (total, listLength, trs) => {
$("#delTeamTbody--${pageName}").html(trs);
}
$P.clickUseTeamList = (dataKey) => {
$P.useTeamControl.dataset.setCurrent(dataKey);
}
$P.fnSave = () => {
var formFields = new FimsFormFields("#frmEdit--${pageName}");
var data = formFields.get();
data.taskSeCd = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val();
ajax.get({
url : $P.useTeamControl.urls.save,
data : data,
success : (resp) => {
if(resp.saved){
$P.refreshUseTeamList();
}
}
});
}
$P.fnRemove = () => {
var dataKey = $P.useTeamControl.dataset.getCurrent()["TEAM_ID"];
ajax.get({
url : $P.useTeamControl.urls.remove,
data : {
"teamId" : dataKey
},
success : (resp) => {
if(resp.saved){
$P.refreshUseTeamList();
}
}
});
};
$P.fnShowDeleted = () => {
var teamNm = $("#deletedTeamNm--${pageName}").val();
var taskSeCd = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val();
ajax.get({
url : wctx.url("/" + taskSeCd + "/crdn/crdn07/010/removedTeamList.do"),
data: {
"teamNm" : teamNm,
"taskSeCd" : taskSeCd
},
success:(resp) => {
$P.delTeamControl.dataset.setData(resp);
}
});
}
/**************************************************************************
* element.on
**************************************************************************/
$('#btnReset--${pageName}').on('click', () => $P.fnReset());
$("#btnSearch--${pageName}").on("click", () => $P.searchUseTeamList());
$("#btnSave--${pageName}").on('click', () => { $P.fnSave(); });
$("#btnRemove--${pageName}").on('click', () => { $P.fnRemove(); });
$("#btnShowDeleted--${pageName}").on('click', () => { $P.fnShowDeleted(); });
fnMakeResizableTable($("#table-responsive_0--${pageName}")[0]);
fnMakeResizableTable($("#table-responsive_1--${pageName}")[0]);
/**************************************************************************
* 초기화
**************************************************************************/
var defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
if(defaultBizValue == "PVS" || defaultBizValue == "BPV"){
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked",true);
} else {
var taskForUser = MY_INFO.info.taskForUser;
var hasPVS = taskForUser.indexOf("PVS") != -1;
var hasBPV = taskForUser.indexOf("BPV") != -1;
if(hasPVS && !hasBPV){
$("#frmSearch--${pageName} input[name='taskSeCd'][value='PVS']").prop("checked",true);
} else if(!hasPVS && hasBPV){
$("#frmSearch--${pageName} input[name='taskSeCd'][value='BPV']").prop("checked",true);
} else {
$("#frmSearch--${pageName} input[name='taskSeCd']").eq(0).prop("checked",true);
}
}
$P.fnResetAndChangeBiz(defaultBizValue);
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true");
});
});
</script>