parent
4178bb3da5
commit
bf1dd24f8d
@ -0,0 +1,438 @@
|
|||||||
|
<%@ 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="prefixName" scope="request">폐기관리 등록</c:set>
|
||||||
|
|
||||||
|
<!-- inner page html -->
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<!-- Content -->
|
||||||
|
<div class="container flex-grow-1 px-0">
|
||||||
|
<!-- Page Body -->
|
||||||
|
<div class="card">
|
||||||
|
<!-- 입력 영역 -->
|
||||||
|
<form id="bssh--${pageName}" name="bssh">
|
||||||
|
<!-- hidden -->
|
||||||
|
<label for="bssh--${pageName}" style="margin-top: 10px; padding-left: 20px;"><strong>취급업체 정보</strong></label>
|
||||||
|
<div class="row my-1 mx-4 g-1 border-card rounded-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="bsshNm--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">업체명</label>
|
||||||
|
<input type="text" class="form-control w-60" id="bsshNm--${pageName}" name="bsshNm" data-map="bsshNm" readonly>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="bsshCd--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">식별번호</label>
|
||||||
|
<input type="text" class="form-control w-60" id="bsshNm--${pageName}" name="bsshCd" data-map="bsshCd" readonly>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="btn btn-search w-px-120" id="btnBsshSearch--${pageName}" title="검색">검색</button>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="rprsntvNm--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">대표자명</label>
|
||||||
|
<input type="text" class="form-control w-60" id="rprsntvNm--${pageName}" name="rprsntvNm" data-map="rprsntvNm" readonly>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="prmisnNo--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">허가번호</label>
|
||||||
|
<input type="text" class="form-control w-60" id="prmisnNo--${pageName}" name="prmisnNo" data-map="prmisnNo" readonly>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="bizrNo--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">사업자등록번호</label>
|
||||||
|
<input type="text" class="form-control w-60" id="bizrno--${pageName}" name="bizrno" data-map="bizrno" readonly>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<label for="dsusePrvCd--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">폐기사유</label>
|
||||||
|
<select class="form-select" id="dsusePrvCd--${pageName}" name="dsusePrvCd">
|
||||||
|
<c:forEach items="${ADDS04}" var="item">
|
||||||
|
<option value="${item.code}">${item.value}</option>
|
||||||
|
</c:forEach>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row my-1 mx-1 g-1 border-card rounded"></div>
|
||||||
|
</form>
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
|
<span class="container-page-btn">
|
||||||
|
<span class="container-window-btn-right">
|
||||||
|
<!-- 업무 버튼 -->
|
||||||
|
<button type="button" class="btn btn-primary w-px-80" id="btnSave--${pageName}" title="저장">저장</button>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- / 업무 버튼 표시 -->
|
||||||
|
</div> <!-- / Content <div class="container flex-grow-1 px-0"> -->
|
||||||
|
</div> <!-- / inner page html <div class="content-wrapper"> -->
|
||||||
|
|
||||||
|
<script>
|
||||||
|
/**************************************************************************
|
||||||
|
* Global Variable
|
||||||
|
**************************************************************************/
|
||||||
|
pageObject["${pageName}"] = {};
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* script 진입
|
||||||
|
**************************************************************************/
|
||||||
|
$(document).ready(function() {
|
||||||
|
// pageObject
|
||||||
|
let $P = pageObject["${pageName}"];
|
||||||
|
|
||||||
|
// FormFields
|
||||||
|
$P.bsshFormFields = new AddsFormFields("#bssh--${pageName}");
|
||||||
|
$P.productFormFields = new AddsFormFields("#product--${pageName}");
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* DatasetControl
|
||||||
|
**************************************************************************/
|
||||||
|
$P.control = new DatasetControl({
|
||||||
|
prefix: "dsuseMgtReceiptBssh"
|
||||||
|
, prefixName: "마약류 취급업체 조회"
|
||||||
|
, keymapper: info => info ? info.bsshCd : ""
|
||||||
|
, dataGetter: obj => obj.${infoPrefix}Info
|
||||||
|
, infoSize: "xl"
|
||||||
|
});
|
||||||
|
|
||||||
|
$P.bsshList = new Dataset({
|
||||||
|
prefix: "dsuseMgtReceiptBsshList"
|
||||||
|
, prefixName: "마약류 취급업체 조회"
|
||||||
|
, keymapper: info => info ? info.bsshCd : ""
|
||||||
|
, dataGetter: obj => obj
|
||||||
|
, infoSize: "xl"
|
||||||
|
});
|
||||||
|
|
||||||
|
$P.productControl = new DatasetControl({
|
||||||
|
prefix: "dsuseMgtReceiptProduct"
|
||||||
|
, prefixName: "마약류 제품 조회"
|
||||||
|
, keymapper: info => info ? info.prductCd : ""
|
||||||
|
, dataGetter: obj => obj.${infoPrefix}Info
|
||||||
|
, infoSize: "xl"
|
||||||
|
});
|
||||||
|
|
||||||
|
$P.productList = new Dataset({
|
||||||
|
prefix: "dsuseMgtReceiptProductList"
|
||||||
|
, prefixName: "마약류 제품 조회"
|
||||||
|
, keymapper: info => info ? info.prductCd : ""
|
||||||
|
, dataGetter: obj => {
|
||||||
|
if (!obj.success){
|
||||||
|
dialog.alert(obj.message);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return obj.data;
|
||||||
|
}
|
||||||
|
, infoSize: "xl"
|
||||||
|
, formats: {
|
||||||
|
prdValidDe: dateFormat
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$P.detailControl = new DatasetControl({
|
||||||
|
urls : {
|
||||||
|
load : wctx.url("/adds/nims/dsuseMgtDetail-list.do")
|
||||||
|
}
|
||||||
|
, prefix : "dsuseMgtDetail"
|
||||||
|
, prefixName : "신청서접수상세"
|
||||||
|
, keymapper : info => info ? info.DSCDMNG_SN : ""
|
||||||
|
, dataGetter : obj => obj.dsuseMgtDetailList
|
||||||
|
, formats : {
|
||||||
|
PRD_VALID_DE: dateFormat
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$P.detailControl.query = { "schDscdmngId" : ${DSCDMNG_ID}};
|
||||||
|
$P.detailControl.load(1);
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* DatasetControl 이벤트
|
||||||
|
**************************************************************************/
|
||||||
|
// 현재 선택 자료 변경 이벤트
|
||||||
|
$P.control.onCurrentChange = item => {
|
||||||
|
if (!item) return;
|
||||||
|
|
||||||
|
$P.bsshFormFields.set($P.control, item);
|
||||||
|
// 업무구분에 따른 URL 변경
|
||||||
|
//$P.fnSetURL(item.data.bsshCd);
|
||||||
|
}
|
||||||
|
|
||||||
|
$P.productControl.onCurrentChange = item => {
|
||||||
|
if (!item) return;
|
||||||
|
|
||||||
|
// Dataset 셋팅
|
||||||
|
$P.productFormFields.set($P.productControl, item);
|
||||||
|
// 업무구분에 따른 URL 변경
|
||||||
|
//$P.fnSetURL(item.data.bsshCd);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 저장 callback
|
||||||
|
$P.control.onSave = (resp) => {
|
||||||
|
let dialogTitle = $("#" + $P.control.prefix + "Dialog--${openerPageName}").find("h5.modal-title").html();
|
||||||
|
let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, dialogTitle);
|
||||||
|
|
||||||
|
// 메시지 출력
|
||||||
|
dialog.alert({
|
||||||
|
content: showMessage
|
||||||
|
, init: () => { setDialogZindex(); }
|
||||||
|
, onOK: () => { }
|
||||||
|
});
|
||||||
|
|
||||||
|
if (resp.saved) {
|
||||||
|
dialog.close($P.control.prefix + "Dialog--${openerPageName}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$P.control.getBsshInfo = () => {
|
||||||
|
let dialogTitle = "마약류 취급업체 조회";
|
||||||
|
let params = {openPage : "bssh--${pageName}"};
|
||||||
|
|
||||||
|
ajax.get({
|
||||||
|
url : wctx.url("/adds/nims/bssh-popup.do")
|
||||||
|
, data : params
|
||||||
|
, success : resp => {
|
||||||
|
dialog.open({
|
||||||
|
id : "bsshPopupDialog"
|
||||||
|
, title : dialogTitle
|
||||||
|
, content : resp
|
||||||
|
, size : $P.control.infoSize
|
||||||
|
, onClose : () => { $P.control.setData(); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$P.productControl.getProductInfo = () => {
|
||||||
|
let dialogTitle = "마약류 제품 조회";
|
||||||
|
let params = {openPage : "product--${pageName}"};
|
||||||
|
|
||||||
|
ajax.get({
|
||||||
|
url : wctx.url("/adds/nims/product-popup.do")
|
||||||
|
, data : params
|
||||||
|
, success : resp => {
|
||||||
|
dialog.open({
|
||||||
|
id : "productMainDialog"
|
||||||
|
, title : dialogTitle
|
||||||
|
, content : resp
|
||||||
|
, size : $P.productControl.infoSize
|
||||||
|
, onClose : () => { $P.productControl.setData(); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 저장
|
||||||
|
$P.control.save = (jsonBssh, datasetListPrd, fileArr) => {
|
||||||
|
let saveBsshData = {
|
||||||
|
...jsonBssh,
|
||||||
|
rndDtlRptCnt: datasetListPrd.length,
|
||||||
|
userId: "${currentUser.account}"
|
||||||
|
}
|
||||||
|
|
||||||
|
let create = (jsonBssh.dscdmngId == "");
|
||||||
|
|
||||||
|
upload({
|
||||||
|
url: '<c:url value="${apiHost}/api/biz/nims/v1/saveDsuseMgtReceipt" />'
|
||||||
|
, data: {
|
||||||
|
dsuseMgtJsonStr: JSON.stringify(saveBsshData),
|
||||||
|
dsuseMgtDtlsJsonStr: JSON.stringify(datasetListPrd),
|
||||||
|
// 폐기상품이미지목록
|
||||||
|
dsusePrdImgFiles: fileArr
|
||||||
|
}
|
||||||
|
, success: resp => {
|
||||||
|
if(!resp.success){
|
||||||
|
dialog.alert({
|
||||||
|
content: resp.message
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//$P.control.onSave(resp)
|
||||||
|
dialog.alert("저장됐습니다.");
|
||||||
|
dialog.close("dsuseMgtReceiptDialog");
|
||||||
|
//this._load();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$P.productList.onDatasetChange = item => {
|
||||||
|
if (!item) return;
|
||||||
|
|
||||||
|
let empty = $P.productList.empty;
|
||||||
|
|
||||||
|
// 업무별 DataTables(그리드) tr, td
|
||||||
|
let foundContent = document.getElementById("productListRow--productList").content;
|
||||||
|
let foundTr = $(foundContent).find("tr")[0].cloneNode(false);
|
||||||
|
let foundTds = $(foundContent).find("td");
|
||||||
|
|
||||||
|
foundTds.each(function() {
|
||||||
|
foundTr.appendChild(this.cloneNode(true));
|
||||||
|
});
|
||||||
|
|
||||||
|
//
|
||||||
|
let replacer = (str, dataItem) => str
|
||||||
|
.replace(/{onclick}/gi, "pageObject['${pageName}'].productList.setCurrent('" + dataItem.getValue("prductCd") + "');");
|
||||||
|
|
||||||
|
let trs = empty ? [document.getElementById("$productListNotFound--productList").content.outerHTML]
|
||||||
|
: $P.productList.inStrings(foundTr.outerHTML, replacer);
|
||||||
|
|
||||||
|
$("#table-responsive--${pageName}")[0].changeContent(trs.join(), true, true);
|
||||||
|
|
||||||
|
fnMakeGridImageViewer($("#tbody--productList").find("td.prdDsuseImg").get(), "dsusePrdImgFiles");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* DataTables 이벤트
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 사용자 함수(function)
|
||||||
|
**************************************************************************/
|
||||||
|
// 검색 자료 재조회
|
||||||
|
$P.fnRefreshList = () => {
|
||||||
|
$P.control.untilPageNum = $P.control.query.pageNum;
|
||||||
|
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
|
||||||
|
$P.control.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 업무구분에 따른 URL 설정
|
||||||
|
$P.fnSetURL = (taskSeCd) => {
|
||||||
|
// $P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/040/create.do"); // 등록
|
||||||
|
// $P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/040/update.do"); // 수정
|
||||||
|
}
|
||||||
|
|
||||||
|
// 전자우편 안내문 등록 버튼 이벤트
|
||||||
|
$P.fnSearchBssh = (title) => {
|
||||||
|
$P.control.getBsshInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
$P.fnSearchProduct = (title) => {
|
||||||
|
$P.productControl.getProductInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 버튼 clickEvent
|
||||||
|
**************************************************************************/
|
||||||
|
// 저장
|
||||||
|
$P.fnSave = () => {
|
||||||
|
// validate 확인
|
||||||
|
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
|
||||||
|
|
||||||
|
let bsshData = $P.bsshFormFields.get();
|
||||||
|
if(bsshData.bsshCd == ""){
|
||||||
|
dialog.alert({
|
||||||
|
content: "마약류 취급업체 정보를 입력해주세요."
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let dsProd = $P.productList.getDataset();
|
||||||
|
if(dsProd.length == 0){
|
||||||
|
dialog.alert({
|
||||||
|
content: "폐기 제품 정보를 입력해주세요."
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let fileArr = [];
|
||||||
|
$("#tbody--productList").find("input[type='file'][name='dsusePrdImgFiles']").each(function() {
|
||||||
|
fileArr.push(this.files[0]);
|
||||||
|
});
|
||||||
|
|
||||||
|
if(dsProd.length != fileArr.length){
|
||||||
|
dialog.alert({
|
||||||
|
content: "입력되지 않은 폐기 제품 이미지가 있습니다."
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.alert({
|
||||||
|
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
|
||||||
|
, init: () => { setDialogZindex(); }
|
||||||
|
, onOK: () => {
|
||||||
|
$P.control.save(bsshData, dsProd, fileArr); // formFields
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//추가
|
||||||
|
$P.fnAdd = () => {
|
||||||
|
if(!$P.productFormFields.get().prductCd){
|
||||||
|
dialog.alert({
|
||||||
|
content: "제품 정보를 입력해주세요."
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(!$P.productFormFields.get().dsuseQy){
|
||||||
|
dialog.alert({
|
||||||
|
content: "폐기수량을 입력해 주세요"
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let isDup = $P.productList
|
||||||
|
.getDataset()
|
||||||
|
.filter(item => item.prductCd == $P.productFormFields.get().prductCd)
|
||||||
|
.length > 0;
|
||||||
|
|
||||||
|
if(isDup){
|
||||||
|
dialog.alert({
|
||||||
|
content: "등록한 상품[" + $P.productFormFields.get().prductCd + "]입니다"
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$P.productList.addData([$P.productFormFields.get()]);
|
||||||
|
// FIXME: 상품필드 초기화 코드 추가
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
$P.fnDel = () => {
|
||||||
|
// validate 확인
|
||||||
|
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
|
||||||
|
|
||||||
|
dialog.alert({
|
||||||
|
content: "현재 " + $P.control.prefixName + " 정보를 저장하시겠습니까?"
|
||||||
|
, init: () => { setDialogZindex(); }
|
||||||
|
, onOK: () => {
|
||||||
|
$P.control.save($P.bsshFormFields.get()); // formFields
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 초기 셋팅
|
||||||
|
**************************************************************************/
|
||||||
|
// 이벤트 설정
|
||||||
|
$P.setEvent = () => {
|
||||||
|
// 안내문 등록 버튼 이벤트
|
||||||
|
$("#btnBsshSearch--${pageName}").on("click", function() {
|
||||||
|
$P.fnSearchBssh($(this).attr("title"));
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#btnProductSearch--${pageName}").on("click", function() {
|
||||||
|
$P.fnSearchProduct($(this).attr("title"));
|
||||||
|
});
|
||||||
|
|
||||||
|
// 버튼 이벤트
|
||||||
|
$("#btnSave--${pageName}").on("click", () => $P.fnSave()); // 저장
|
||||||
|
|
||||||
|
$("#btnAdd--${pageName}").on("click", () => $P.fnAdd()); // 추가
|
||||||
|
|
||||||
|
$("#btnDel--${pageName}").on("click", () => $P.fnDel()); // 추가
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 초기 화면 설정
|
||||||
|
$P.initForm = () => {
|
||||||
|
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 최초 실행 함수
|
||||||
|
**************************************************************************/
|
||||||
|
// 1. 이벤트 설정
|
||||||
|
$P.setEvent();
|
||||||
|
|
||||||
|
// 2. 초기 화면 설정
|
||||||
|
$P.initForm();
|
||||||
|
|
||||||
|
// 3. Dataset 설정
|
||||||
|
$P.control.setData([${dsuseReceptInfo}]);
|
||||||
|
$P.productControl.setData([${opnnDlbrMbrInfo}]);
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
Loading…
Reference in New Issue