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
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>
|